Repo

kjana00@gmail.com

older <-

2011-11-29 01:26:44

今朝はくもり。朝ごはんはパンとサラダとソーセージ。週末毎に天気が悪いのも感じ悪いけど、月曜日に天気が悪いのもとても嫌な気分になれたりはするものです。ぐぅ。

展示会向けのあれこれっていうのが先週終わって、今週はその展示会で相談相手が説明員に引っ張られたりしてる。ということで、のんびりと何をしようかなと考える展開。とりあえず次の基板ではそれ以外のルートは無くなるっていうから、デバッグ用シリアル入出力をマルチプレクサで多重化した UART に載せる努力をしてみる。こいつは入力も出力も固定バイト数っていうわけじゃないし、RS485 の半二重通信で外部機器と話してる UART を共有するもんだからあんまり変な制御は出来ない、ということでちょっと考えてみる。

まあ、結局、バイト単位でキューイングするしかないかなということでそのように。1byte の転送毎に割り込み発生出来るからとりあえずそれを使う。本当はハードウェアもキュー持ってるけどとりあえず簡単な方向へ。だって、それで余裕なはずだから……外部機器との通信の方は半二重制御のために 1ms 毎にカウンタ見ながら今何する、とかいうのをやってて、500ms でリクエスト-レスポンスのサイクルを回しつつ残り 500ms で受け取ったデータの処理を片付けるということをしてる。んで、1s の後半 500ms でデバッグ用シリアル入出力は動かしましょう、でも 2,000bytes ぐらい転送出来る計算。余裕。

割り込み中では実際の I/O をやって、割り込み外ではキューに詰めたりキューから取り出したりだけをやる。読み出しポインタと書き込みポインタが重なった時は空っていうことにして、詰める時には重ねない。重なりそうなら無言でデータを捨てる。……ということで実装。割り込み無しで作ってた UART の下回りがこれでいらなくなっちゃうなと思いつつ書いて、やっぱり割り込み使っておいた方がこの辺りは簡単に書けたよなというのを実感したり。で、動かしてみると、動かない、というのは端末エミュレータがスクロール途中の状態だと画面更新を止めてくれる親切仕様だったからでした、という感じで動く、動く。出力の方は概ね大丈夫かな。何かちょっと化けてるところがあるけど。

化けてるのは UART を使用可にしてからトランスミッタ起動するまでちょっと間を開けなきゃいけないからだよねと間が入るようにしたりしつつ様子見。何か入力の方が取りこぼしが多いっぽいっていうのは、1s の半分しか実際には取り込んでないからなわけだからしょうがないか。幸い外部機器との通信の方が 100ms ぐらいまでタイムスライス縮めても兵器だったんで、デバッグ用シリアル入出力に 900ms 割り当ててやることにしたら大幅に改善。まあ、あたりまえ?

しばらく実験してると出力がずれてくるような現象が見える。何か二秒に一回ぐらいに出力になって、変なところで切れるようになるのね。これは何だろうなと悩んでる辺りで今日はおしまい。出力バッファが小さいのとか、出力バッファ空の時の処理どうしたっけかなとか、そういう辺りがちょっと怪しいかも。うーん。

それで帰ってのんびり。残業出来るだけ付けないでという条件下で、先週みたいに突発的な仕事が入ったりしてると調整が面倒。で、適当なところで晩ごはんに豚汁うどん。なかなかいい感じに出来たけどたけのこを忘れたよ……片付かんね。

で、後は WWW 見たりゲームしたり。割と快勝して気分良くなってみるとか、昨日のうちに盗賊ぐらい片付けておいた魔道具術師でワーグを殲滅してみたり。地道に、地道に、と。すぐ死にそうになれるからねぇ。

older <-

goto

hint can be:

Tags

old

2007-05 -- 2006-12

ゲーム関係の古い記録

before 2005-12