PIC専用のスレ Part37

このエントリーをはてなブックマークに追加
586774ワット発電中さん
>584
余計な御世話かもしれないけど、割込み中にTMR1を固定値に書き換えるのはあまりよろしくない
アセンブラ的な話になるが、割込みのタイミングは割込み発生時に実行中の命令が終わってから発生する
PIC18Fは命令によって1サイクルと2サイクル命令があり、2サイクル命令の前半で割込みが発生すると
割込みに入るタイミングが通常より1サイクル遅くなる。
1サイクル遅くなっているのに次の割込みまでの時間を通常と同じように設定すると、その1サイクルは蓄積
されるズレとなってしまう。2サイクル命令以外にも割込み禁止でも同様というかもっとひどいズレが発生する

上記を防ぐため通常は、CCPの機能で"Compare mode, trigger special event"を使う
TMRが設定値になったら自動で0になり割込みも発生する(TMRの割込みではなくCCPの割込み)。
割込みに入るタイミングが何サイクル遅れても(1周期分65536超えたら無理だけど)TMRもそのプラスされて
いるのでズレが発生しない。