dポイントプレゼントキャンペーン実施中!

PIC16F1933のタイマー2で1秒を数えたいのですが
PR2とT2CONの値はどうすればいいでしょうか。
コンパイラXC8
このサイトにたどり着きましたが
T2CON=00000011
PR2=192
で大丈夫でしょうか。
この場合何回タイマー2の割り込みが発生すれば1秒でしょうか
できれば計算上は極力1秒に近づけたいです。
http://jh7ubc.web.fc2.com/pic/PIC16F883_Frequenc …
TMR2の初期値は、256-(200000-(256*781))=192
12.8MHzの高精度クロック入力です。

A 回答 (2件)

PR2を192にするというのはどこから出た値でしょうか。


そのサイトではPR2は0のまま、TMR2の初期値で誤差を調整しているようですが。
PR2を設定するなら250などの10進で切りの良い値にすれば誤差を出さずに1秒の整数分の1の割り込み周期にできると思います。
プリスケーラー1:64、ポストスケーラー1:10、PR2が250とかでよいのではないでしょうか。
12.8M/4/64/250/10=20
から、20回の割り込みで正しく1秒になると思います。
    • good
    • 0

整数の割り算ではどうやってもぴったりにできない場合は、閏年のようなことで調整するしかないんじゃないですか?



そのサイトにあるTMR2関係のくだりのところに、200000/256=781.25回ですとの記述がありますよね。ってことは毎秒0.25回の端数があるので、4秒ごとに割り込みが1回余分にかかる(1/781秒進む)わけです。であれば、3秒間は普通に割り込みを781回数えたら1秒とするが、次の1秒だけは782回で1秒とすれば、端数が打ち消せることになります。

4秒ごとに一瞬だけ周期がズレますけど、端数が累積して気付いたときにはとんでもなくズレてた…なんてことは防げます。
    • good
    • 0

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!