Repo

kjana00@gmail.com

older <-

2011-05-28 01:38:23

今朝はくもり。朝ごはんはパンとサラダとソーセージ。今にも雨が降り出しそうっていうか実のところ傘はまだいらないけどとっくに降ってるという中、仕事場へ。朝からこれだと気分が乗らないわ……

一歩ずつ確認しようかということで、タイマ使った周期タスクの実装から PWM、A/D コンバータと見てみる。PWM だけならほぼ思った通りに動いてるのに A/D コンバータ動かそうとすると腐るのは何でかと思ったら、中で呼んでる関数が落ちてるっていうことだったり。何か怪しいからで他のところの関係関数は呼ばないようにしてたけど、A/D 割り込みハンドラの中に残ってたから怪しい PWM 出力になってたという。

その辺り落ち着いたんで怪しいモジュールの方を見てみることに。何かアセンブラで書かれた関数の中で落ちちゃうんだよね。構造体の初期化部分だからそんなにどうこう言う程のことじゃないはずなんだけど……で、何となくちょっと気になって係数の元になる配列の宣言から const を外したら問題無く初期化出来るようになった。書き換えてるわけでもないはずなんだけど、何でこれで問題になるんだか。まあ、直ったからいいか。

だいぶまともになったところで動かしてみると、ようやく割り込み禁止のまま死んだらしいとか、いうこともなく怪しい挙動を示すようになった。……怪しいのには変わりないんだけど。何で PWM の出力が安定するまでこんなに時間かかるんだろうとか、安定の仕方が変とか。ソフトスタートでゆっくり目標値を動かしてるのに、いつまでも動かない思ったらがたっといきなり上がるんだ。

前のコードだといくら何でもそこまで変じゃない、ということでとっかえ引っかえしつつ動かしていてふと気付く事実。PID 制御のための関数ってば、自前で観測データ採取してないけどどうなってるんだっけ? ……前のコードだと引数に渡す構造体に今回の観測データというのをセットするようになってる。今のコードでは関数自体はほぼ同じっていうか、前のコードではサンプルから引っ張ってきてるのが実はライブラリに入ってるのがわかったんでそれを使うようにしただけ。で、呼び出す時に、観測データを渡してない。……そりゃ、駄目だろう。ということで直したら、直った。やっと実験的に実装とか言いつつ適当なコードを突っ込む前の機能を再現出来たわ。

ということで、実験実装で突っ込んだコードを整理して突っ込み直す作業を開始。A/D 割り込みの中で数を数えてたのをタイマ割り込みのタスクスケジューリングに乗せて、とかそんな。実験の時と同じ実装だけど、まだ中身についてあんまり突っ込みたい状況じゃないん。月曜日に事前検討メモの説明して突っ込んでもらおうかっていう状況だことだし。大まかにはこんな作りでいいはずんだけどなと思いつつ。

コンパイラが定数の計算をターゲットの精度でやってる、もしくは最適化かかってなくて実行時に計算してるかも、とかで怪しい挙動を出したりしつつも大雑把に一通りの機能は実装出来た。ハードウェアだの通信相手だのがこれから変わる予定あり、っていう辺りは作ってないけど。で、台風接近中というアナウンスの中帰る。幸い、丁度雨がほとんど止んでる時に動けた。電車は急病人介護のためとかで遅れてたけど。

それで帰って晩ごはんにとり汁のそばと枝豆。若竹風と言いつつ春菊がいっぱいとか。ちょっと多過ぎたかな。久しぶりの茹で過ぎてない枝豆は良かった。やっぱり、豆がさやからいくつも飛び出す程茹でるのは良くない。

後は WWW 見たりゲームしたりまんが読んだり。アーティファクト拾ってもそれが今一つ使えないとなると大変に残念です……

older <-

goto

hint can be:

Tags

old

2007-05 -- 2006-12

ゲーム関係の古い記録

before 2005-12