イマイチでも(なんとか)使う [PICkit3]
(2012.01.27)
先日、”Stimulusが使えるようになってシミュレータを利用するメリットを感じた”と書いたのですが、やっぱり”イマイチ”な部分が出てきて悩まされています。
実機では入る割り込み(TMR2、IOC、NCO)がMPLAB SIMでは入りません(要求フラグが立っても割り込みハンドラが呼び出されない)。”StimulusでPIRbits.TMR2IFをセットすると割り込みハンドラが呼び出される”と思ったのも勘違いでした。
シミュレーション開始から100μSインターバルでPIRbits.TMR2IFをセットするようにStimulusを設定したところ、TMR2の割り込みハンドラが呼び出されました。
『しめしめ、これなら行ける!』と思ったのですが・・・
色々試していて、StimulusのPIRbits.TMR2IF設定とTMR2割り込みハンドラの呼び出しが一致しないことに気付きました。
結局、割り込みハンドラを呼び出していたのは、インターバル(=1ms)が正しくシミュレートできていないTMR0割り込みでした。(シミュレーション開始から600μS以内にTMR0割り込みが3回入っていた)
Stimulusについて判ったことは以下の通りです。
(1)リセットするとStimulusのシミュレーション時刻は0クリアされる。
(2)”Run==>Break”を繰り返す間も、シミュレーション時刻は経過し、Stimulusの設定に応じた割り込み要求信号等が設定される。
(3)以下のように設定すると、(ほぼ)所定の時刻にTMR2割り込みハンドラを呼び出すことが出来る。
ただし、TMR0割り込みハンドラも呼び出される。
(4)IOCAFを設定するとIOCIFが設定される(2012.01.31 誤りでした)入力信号を変えてもIOCIFは設定されない。以下のように設定すると、(ほぼ)所定の時刻にIOC割り込みハンドラを呼び出すことが出来る。
ただし、TMR0割り込みハンドラも呼び出される。
(5)StimulusでADIFを設定すると(ADON=0でも)AD割り込みハンドラを呼び出すことができる。AD割り込みハンドラ内にブレー・ポイントを設定しておくと、(ほぼ)所定の時刻にシミュレーションを停止できる。(その後、シミュレーションを再開することもできる)
これで、なんとかシリアル通信の制御ロジックをデバッグするつもりです。
先日、”Stimulusが使えるようになってシミュレータを利用するメリットを感じた”と書いたのですが、やっぱり”イマイチ”な部分が出てきて悩まされています。
実機では入る割り込み(TMR2、IOC、NCO)がMPLAB SIMでは入りません(要求フラグが立っても割り込みハンドラが呼び出されない)。”StimulusでPIRbits.TMR2IFをセットすると割り込みハンドラが呼び出される”と思ったのも勘違いでした。
シミュレーション開始から100μSインターバルでPIRbits.TMR2IFをセットするようにStimulusを設定したところ、TMR2の割り込みハンドラが呼び出されました。
『しめしめ、これなら行ける!』と思ったのですが・・・
色々試していて、StimulusのPIRbits.TMR2IF設定とTMR2割り込みハンドラの呼び出しが一致しないことに気付きました。
結局、割り込みハンドラを呼び出していたのは、インターバル(=1ms)が正しくシミュレートできていないTMR0割り込みでした。(シミュレーション開始から600μS以内にTMR0割り込みが3回入っていた)
Stimulusについて判ったことは以下の通りです。
(1)リセットするとStimulusのシミュレーション時刻は0クリアされる。
(2)”Run==>Break”を繰り返す間も、シミュレーション時刻は経過し、Stimulusの設定に応じた割り込み要求信号等が設定される。
(3)以下のように設定すると、(ほぼ)所定の時刻にTMR2割り込みハンドラを呼び出すことが出来る。
時刻 TMR2IF TMR0 TMR2 150μS 1 FF 00 250μS 1 FF 00 350μS 1 FF 00
ただし、TMR0割り込みハンドラも呼び出される。
(4)
時刻 RA2 IOCAF2 IOCIF TMR0 0μS 1 FF 1100μS 0 1 1 FF 1150μS 1 1 0 <== IOCIE = 0なのでIOCIFも0のまま 1250μS 0 1 1 FF 1350μS 1 1 1 FF
ただし、TMR0割り込みハンドラも呼び出される。
(5)StimulusでADIFを設定すると(ADON=0でも)AD割り込みハンドラを呼び出すことができる。AD割り込みハンドラ内にブレー・ポイントを設定しておくと、(ほぼ)所定の時刻にシミュレーションを停止できる。(その後、シミュレーションを再開することもできる)
これで、なんとかシリアル通信の制御ロジックをデバッグするつもりです。
|
|
|
コメント 0