Repo
kjana00@gmail.com
2012-02-28 00:01:29
今朝はくもり。朝ごはんはパンとサラダとソーセージ。天気が悪くてなぁと思ってたら雪がちつき出す始末でどうしてくれようかという感じ。まあ、大したことなかったし、向こうでは止んでたけど。でも、気温は上がらないわね。
先週末悩んでた辺り、遊んでたり寝てたりした間に原因を思い付いてたんで検証。ソース無しだとそんな感じだった気がする、までしか出来ないから……うん、やっぱり。構造体分けた時に、今まで受信したメッセージ本文のキャッシュだけクリアしてたところで、可変部分だけ括り出したからこれでいいやんなって受信成功のフラグも一緒にクリアするようにしたんだけど、これが明らかにタイミング悪いという話。DMA 割り込みハンドラの中で立てて、状態遷移部分でタイムアウトが出てるの見てキャッシュクリアのついでに消されて、そうすると後でフラグ見て受信出来てたら返事をパーズしつつあれこれするというところで受信出来なかったように見えるっていう。
直し方は色々。結局、関数呼び出しの順序にあんまり依存しないようにしたいなっていうのと、受信失敗の場合との対称性を失いたくないなっていう気分とで、前と同じようにメッセージ本文のキャッシュだけクリアするようにした。memset() 一つで済むものにループが必要になるけどまあ、しょうがない。どうせ 1ms に一回呼ばれるかどうかぐらいだから大した負荷でもなし。
それで直ったのを確認しがてらしばらく動作を眺めておいた後、また修理基板の動作確認。何かデバッガとマイコンの通信が出来ないよっていう基板はコネクタ周りをいじったことで無事、動作するようになった模様。MOSFET ドライバ交換してみましたっていう基板は最初ソフトスタートが進まなくてまた何もしない内に壊れたかと思ったけど、良く見たら回路図不良対策で電源飛ばしてるリード線が付いてないからスイッチング起こらなくて当然だったというだけだったりした。こっちも動いて、これでちゃんと動く基板がまた増えたぞ、と。……修理した基板って、壊れ易いんじゃないかっていう疑惑が無くもないんだけどね……
外部機器にぶら下がってるモジュールが吐く情報について仕様書が来たから確認してみるとか、外部機器との通信を模擬する PC 上のエミュレータが来てたんで、接続治具無いけどとりあえず動かしてみるとか。このエミュレータ、ぶら下がってるモジュール単体のエミュレータで、コントローラの方じゃないのか。ふぅん。
そんな感じで今日はおしまい。妙に冷え込むと思ったら 3℃ とか。また、急な。それで晩ごはんは豚汁うどん。さすがにこの気温に冷奴はない。食べてもあんまりあったまり切らない気分。爪先が冷たい。
後は WWW 見たりゲームしたりと。ようやく鉄獄まで出てみました、だけとか。このゲームで 30:1 とはまた新記録なとか。コンピュータ何考えてあそこでリダブルしたんだろ……?