PIC、TMR2とPWMについて。(再投稿)
カテ違いなのか説明が悪いのか回答が付かなかったので
再投稿しました。
PWMでTMR2の10ビットの理屈がわかりません。
まず現状の理解ですが以下のとおりです。
・分解能10ビットでPWMを使うにはPRxを255に設定する。
PRxに設定した値がTMR2のカウント最大値になる。
PRxを255に設定したのでTMR2も255までカウントされる。
(PRxに設定した値がPWMの周期として動作する最大値)
・パルスの幅はCCPRxL(上位8ビット)および、DCxB1,DCxB0(下位2ビット)の10ビットで設定する。
実際のPWMの動作は以下のとおり
CCPRxL,DCxB1,DCxB0 の10ビット
↓コピー
CCPRxH(10ビット)
↓比較 一致でPWMの出力が反転
TMR2(上位8ビット + 謎の下位2ビット)
↑比較 一致でTMR2 + 謎の下位2ビットがクリア
PRx(8ビット)
わからないぶぶんなんですが
1、TMR2の下位2ビットって具体的にどのレジスタなんでしょうか。
2、プリスケーラを設定しない場合(等倍)はPSという2ビットが付加されTMR2は10ビットカウンタとして
動作するとなっていましたが、0,1,2,...1023までカウントされるんでしょうか。
3、TxCKPS1,TxCKPS0 に値をセットしてプリスケーラを4,8,64等にした場合
TMR2の8ビットと下位2ビットはどういう関係になるんでしょうか。
単純に1024階調(0-1023) * 4tocs * プリスケール値 で0から1023までカウントされると考えていいんでしょうか。
4、PRxは8ビットしかないのにTMR2 + 2ビットの10ビットとどうやって比較されてるんでしょうか。
たとえばDCxB1,DCxB0(下位2ビット) のみ設定してCCPRxL(上位8ビット)を0にした場合、何と比較されるんでしょうか。
5、TMR2をスタートする前にカウンタをリセットしますが10ビット分リセットするにはTMR2のクリアと下位2ビットはどのレジスタをクリアすればいいんでしょうか。
PICは16F1936を使ってます。
MPLAB X + XC8で開発してます。
説明がわかりずらいかもしれませんが上記の部分がいまいち理解できません。
この辺の事に詳しい方、教えていただけると助かります。
お礼
それでよいみたいです。 でも、2で割るなら、RRFだと思ってこちらを採用しました。 ありがとうございました。