Repo

kjana00@gmail.com

older <-

2012-01-24 00:54:22

今朝はくもり。朝ごはんはパンとサラダとソーセージ。週の始めからこう陰鬱だと嫌になるんですけど。布団でぬくぬく寝ていたい……

まあそうも言ってはいられないんで仕事をしましょう、と。新しい基板で動作試す前に古いので確認出来るところはしちゃおうかという気分で、まずは新しい方でも同じように吊ってあるはずの DIP スイッチの様子見から。吊ってあるから、何も繋がってなければ HI 入力のはず。でも見えてるのは LO。これは何かはっきりさせておかないとまずいよね、と。

それでブートローダの手前で GPIO 読んだ結果を吐いてみてもやっぱり LO に見えて、入出力設定はちゃんと入力になってて、と見てて何となく気になってきたからラッチレジスタを読んでたところをポートレジスタを読むようにしてみる。ちゃんと HI になってるじゃない。それでマニュアルを読み直してみたら、ラッチレジスタはあくまで output DATA latch の内容を読み出すためのものだという風に明記してある。……つまるところ、間違ってたわけね。出力のために書く、その時ビット操作が read-modify-write になるんで直接ポートレジスタをアクセスすると外で信号が起ち上がる前に読んで 0 に書き戻しちゃう場合があるからラッチレジスタ使うっていうのを素直に読んだら、どこにも入力がラッチレジスタに反映されるとは書いてないってわかりそうなもの。はぁ。

それで、これで負論理なはずのスイッチに対する条件を負論理のまま書けるねってブートローダをちょっと動かしてみようとしたら別にはまったりして。何かリセットかかってる。何がどうなんだと様子を調べてるとどうもスタックエラーでトラップかかって reset っていうコース。何でそんなことにと調べてみても結局良くわからない……ディスアセンブルリスト読んだ限りだと特定の場所で特定の関数呼び出しが入った場合だけ、スタックポインタを変な風に操作してるように見える。でも、何でそんなことになるのかわからない……そもそもリストを読み間違えてるかもしれないし。確かに、そこの関数呼び出しだけコメントアウトするとスタックエラーは出なくなるんだけど。で、締め切りの関係上、ブートローダは今回使いませんっていうことになってるんでとりあえずは放置ということに。

そろそろ新しい基板かなというところで、外部機器との通信によるエラーへの対処って、受信したエラーを上書きしてやったら確認出来るよなって思い付いちゃったんでそっちへ。今の基板でないと、サブマイコン向けのエラーレポートが送信出来てるかどうかとかは単体じゃ確認出来ないし。通信してるところで回数数えて、何回目から何回目までっていうので上書きしてやって、エラーの検出と解除とそれに対する反応を調べるっていうのを延々。基本的な仕組みがちゃんと動くのは最初のいくつかでわかるんだけど、エラーハンドラ間違えてたとか状態遷移の結果のスイッチ状態が間違えてて危険だったとかは残ってたりするんで結局とりあえず全部見てみた。何か、疲れた……

一通り見て、ついでに頼まれたんで表の小屋の基板に最新のプログラムを焼いてきて今日はおしまい。何かやたらと寒いんですけどと思いつつ帰る。恵方巻ロールにちょっと噴いたりしつつ買い物をして帰って、晩ごはんは刻み蓮根天をあぶったのと豚汁うどん。たけのこがまだ余ってたのを思い出したんで放り込みつつ。しゃきしゃきする天ぷらがおいしい。豚汁、あったまるし。

後は WWW 見たりゲームしたり。何か異様にやる気が無かったところで何となく騎兵とかやり出して、ワーグを殲滅してもうちょっと、ぐらいまで。馬がばたばた敵を倒していくんで経験も食料も微妙に辛かったりする。吸血鬼は、血を吸わないといけないから。

older <-

goto

hint can be:

Tags

old

2007-05 -- 2006-12

ゲーム関係の古い記録

before 2005-12