仙台電波高専の熊谷です.
Minoru Kurebayashi さんは書きました:
>とりあえず全部アセンブラで作成し、下記の様なプログラムにしてみました。
>これなら処理時間が短いだろうと考えました。(割り込み以外の所は省きました。)
>
>ITU_IMIA0:
> push.w r0
> mov.b @NDRA,r0l
> xor.b #h'0f,r0l
> mov.b r0l,@NDRA
> pop.w r0
> rte
マニュアルを見ると,「IMIAはIMFAが1にセットされたときに割り込みがかかる」
となっています.
ところが,IMFAは以下の場合しかリセットされません.
1.IMFA=1の状態でリードし,IMFA=0をライトする
2.IMIAによりDMACが起動されたとき
上記のプログラムではIMFAをリセットしていないようですので,まずはIMFAの
リセットを試してみてはいかがでしょうか.
>でも何故このプログラムでGRAを100にしても50にしても12uSなんでしょうか?
>12E-6÷62.5E-9=192ですよね?何で192も掛かるんでしょうか?
>先ほどの命令の取り込みを含めたって100はかかならいと思うのですが。
確かに,処理が間に合わないときの典型的な症状ですね.
でも,IMFAをリセットし忘れた場合も,割込周期が遅くなるようです.
(最悪,2回目の割り込みがかからない?)
- SNCT Sendai National College of Technology ----------
熊谷 和志 KUMAGAI Kazushi
仙台電波工業高等専門学校 電子制御工学科
ckuma@xxxxxxxxxxxxxxxxxx http://www.sendai-ct.ac.jp/~ckuma/
Tel&Fax:022-391-6143(Dial-in), Fax:022-391-6144