Repo

kjana00@gmail.com

older <-

2012-07-27 01:34:13

今朝は晴れ。朝ごはんはパンとサラダとソーセージ。昨日よりちょっと涼しい気がするんだけど、多分、朝だからっていうだけだろうな……

スタンドアローン動作はほぼ出来たはず、と自動制御にオプション変えてビルドし直して焼いて動かして動いた、動いた、というところから。何か 7SEG LED にごみが出てるけど、とりあえずそれは置いておいて、実験用のログ取りスクリプトいじりに移行。どうせいるはずだし、今現在、本当に外部機器と通信出来ててちゃんと値を拾ってこれてるっていうのを確認する手段が欲しいということもあり。ついでに、もうちょっと robust にしようかなと。

非同期に基板側から何か送ってくるっていうことは無くなったんで、要求を送ろうとするたびにシリアルポートを開き直して、タイムアウト付きで応答を受け取ったら閉じるっていう手を使う余地がある。これをやると何がいいかって、何かでずれたとか落ちたとか増えたとかした時でもそのままずれっ放しで通信し続けるんじゃなくて、要求-応答のバウンダリで被害が食い止められること。ついでにログファイルがハッシュ中になかったら書こうとしないっていうごく当然のガードも入れて今よりは安定して動くようにする。今のスクリプト、何かで応答がずれると存在しないログを見つけようとして、何もガードしてないから nil.write で NoMethodError という間抜けなことになってるからずっとましになるはず。そもそも前のログ取りスクリプト、こんなに真面目に使うことになると思って作らなかったからねぇ……

CSV への変換の方は、基板と外部機器の組み合わせで二つ作っておく。使うのが何も知らない人だったりするんで、ファイル切り分けて require とかオプションで対応基板と対応外部機器を切り替えるとかが不安なんで。1.9 なら require_relative するから切り分けは出来るけど、Cygwin の Ruby は 1.8.7 だし。こっちは前のスクリプトとあんまり変わらないけどね、と思いつつがりがり。前の基板、前の外部機器の組み合わせになってるセットで動作を確認。新基板、新外部機器の組み合わせでの動作も確認。これで良し、ということで commit して次。

7SEG LED のごみが気になるんで調査開始。何か、一番上のセグメントが点けてないはずなのに微妙に光ってる。ペリフェラルの設定間違いとか、ポートの割り当て間違いで前の基板での出力が微妙に出てるというのが疑われるところ。それで調べてみると、前の基板でも 7SEG LED の別のセグメントが繋ってたポートだし、新しくペリフェラルの設定を加えたわけでもないっていうことで謎なことに。

しばらく悩んでて、ある時ふと外部機器との通信が出来てる場合だけ点いてるっていうのに気付く。外部機器を切ったら消える。直接通信してるのはメインマイコンの方で、7SEG LED いじってるのはサブマイコンの方なんだけど……メインマイコンとの通信を、外部機器情報のやり取りだけ止めてやると点かなくなる。通信したままで、通信内容を制御で使うために解釈するところを止めても同様。解釈した情報を使ってるのって、表示系とファン制御だけなんだけど?

表示系の方で見てるところではおかしくなる要素が無い。っていうか、メインスイッチ入れたら点くようになってるのにスイッチ入ってなくても点いてるからこっちじゃないのは最初から明白。それじゃあとファン制御で使ってる値だけをファンが回らない値で上書きしてやったら見事に止まった。これか。

新しい基板ではサーミスタ同様、ファンもサブマイコン側には繋がらないことになってる。で、旧基板用のコードと共用出来る部分が増えるようにっていうことで、割り当ての無いポートにはダミー変数を割り当てて、そっちを読み書きするようにしたつもりになってた。んで、そうなってるよなというのを確認。ダミーは設定してる。でも、サブマイコンのプログラムでは GPIO の入出力ってポートを直接読み書きしてないね。関数経由だ……つまり、ダミー変数の値をポート番号としてアクセスしていたということ。そりゃ、変なことにもなるわ。enum の最後にポートの全数を扱うために定義されてる名前が入ってるんで、これをダミーポートとして使うことにした。GPIO アクセス関数が書く方は何もしないでエラーを返す、読む方はエラーを返してて、呼び出し側では HI か LO との比較をしてるからエラーは制御に影響しないという風になってたんで。

そんなこんなでまともになったところで今日はおしまい。ちらっと文書書きをしたりもしたけど。それで帰って晩ごはんにカレー。適当にゴーヤーとか放り込んでもカレーはカレー。前に入れす過ぎて苦くなったことがあった気もするけど、今回は大丈夫。それからお風呂上がりにベルサイユとか食べたり。アーモンドが香ばしく、ふわふわのスポンジがクリームとあまあまで果物が引き締めると。おいしい。室温で置いといた時間が長過ぎたか、ちょっと苺の重みで潰れてるのも御愛嬌。

後は WWW 見たりゲームしたりちょっと寝たり。3 点差で負けると悔しいわ。その直後のゲームみたいに 20 点差ぐらいで負けるのが普通っていう状態だと……オークの洞窟でも 20 階まで降りてみてから、迷宮のミノタウルスを倒してみるぐらいまで。対混乱は付いたけど、対盲目と対恐怖が無いと色々鬱陶しい。それにそろそろ耐火が無いとアーチ=ヴァイルにばったり出会ったりするから恐い。こっちは、指輪で一応持ってはいるけどね……

ベルサイユ

older <-

goto

hint can be:

Tags

old

2007-05 -- 2006-12

ゲーム関係の古い記録

before 2005-12