仙台電波高専の熊谷です. 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