Repo

kjana00@gmail.com

older <-

2012-01-20 01:37:21

今朝はくもり。朝ごはんはパンとサラダとソーセージ。何となく冷え込みは緩い気がするけど、日が差してないとあったまらなくて結局寒い。まったく、冬なんだから……とか言ってもどうしようもないわけで。

さて問題の原因を探しましょう、と。ここでトラップが起こってるんだよねというのを再確認して考えようとしたところに、どういうことなのと説明を求められて答えてたらこういうのも見てみてよとか口を挟まれたりしつつ。まあ、結局調べなきゃならなくなるかもしれないしね、ととりあえず。あんまり新しい知見は得られなかったけど、予測が観測事実になったっていうことで良しとしようか。

で、事実になった予測に沿って考えるに、ここでアドレスエラーなんて起こりっこないのだよね。少なくとも、書いた C コードのレベルでは。レースコンディションを疑うぐらいだけど、さすがに 16bits 整数の読み書きぐらいは atomic になるようだし。そう思いつつマニュアルとコードを眺めてて、ふとアセンブラで書かれたライブラリ関数内で普通いじらないレジスタをいじってるんだよなっていうのを思い出す。DSP 命令のモード設定したり、コード領域に割り当てられた定数データのアクセス用の設定をしたりっていうレジスタ。ライブラリ関数では固定小数点演算モードにして後で戻すっていうのだけやってる。これ、タイマ割り込みでやってる状態遷移で構造体を初期化する関数と、それより優先度が上の A/D 割り込み中で PID 制御計算をやってるところで書き換えられてるわけだけど、初期化中に A/D 割り込みかかるとまずくないか?

何か良くない気がしてきたけど、でもあんまりメモリアクセス自体には関係無い気もしてきた、コード領域に定数割り当てた覚えもないしと思いつつ、この初期化部分を割り込み禁止にしても危ないことにはならないよねっていうのを確認してから割り込み禁止にしてみた。……何か、落ちなくなったな。何故か。謎。定数データのアクセス周りでやっぱり何かあるのかな。前に書き換えてないはずの配列を const にしておくと落ちるからしょうがないんで const 外した、なんてこともあったところだし。

とりあえずこれはこれで良さそうなんで、一時停止時に入力が跳ね上がることに対する思い付きの対処案を実装してみたら、これもこれでいいみたい。単に入力側に変なもの出ないように、ソフトスタート終わるまで下流側の MOSFET オフにしときましょうっていうだけなんだけど。これでいいのか。ふぅん。

途中、妙に不安定な状態に陥るも、ちょっと調べたら落ちる時にはリセット端子が LO になってるのを発見。これはひょっとして USB 接続のプログラマがウィルス対策のスキャンが始まったところで変な信号出してるだけなのではという結論に達したんで、ちょっと前に実装してみたけど変に不安定だったコードをマージしてみたり。その不安定の原因がさっき見たそれだったら、スタンドアローンで動かす分には問題無いはずなわけだし。そうでなくてもスキャンが終わった後は落ち着いたものだったんで、とりあえずこれで様子を見ようかという気分。

……と、そんな感じで色々落着した気分でいたら、最後に表の小屋で実験してる基板のプログラムを書き換えたところで悩まされたり。ちゃんと起ち上がらない。上では同じコードで動いてるんだけどなと、同じ起動の仕方で何度か試してもだめ。ちょっとだけ安定してもすぐまた怪しくなるし……挙動としてはソフトスタートが終わらないっていう格好なんだなって思ってて、そこで入力に対して最大デューティを適用した時出力はどうなるんだろうというのが気になり出して。それでちょっと計算してみたら、ソフトスタートの目標出力にぎりぎり届くか届かないかぐらいの値になるのがわかって。それじゃあと最大デューティを引き上げてみたら無事、安定して動き出した風。今は最大で 90% 相当の値にしてるけど、ちゃんと確かめてもっと上げておいた方がいいし、それでどれぐらいの入力だと目標出力値をどれぐらいに出来るかっていう早見表ぐらい作っておいた方がいいねという結論。ああ、びっくりした。

安心したところでとりあえず今日は帰る。雨が鬱陶しくも冷たいもんだから晩ごはんは胡麻豆腐と鴨汁のそば。具沢山な鴨汁であったまる。具沢山っていうか、具ばっかりっていうか。煮物じゃないんだからと言われそうな。まあ、いつも通りって言えばいつも通り。

後は WWW 見たりゲームしたり。逆転行けるかとリダブルしたらゾロ目出された上で更にリダブルかけられて、いいよもうと受けて素直に負けてみたりとかする。いいよもうじゃないって……それから適当に各地の 42 階をうろついてみたりで終わり。シャドウジャックに全然敵わないのが残念。あれはアーティファクトのクローク持ってるはずだからねぇ……

older <-

goto

hint can be:

Tags

old

2007-05 -- 2006-12

ゲーム関係の古い記録

before 2005-12