« 【PICマイコン】SPI接続LCDグラフィックディスプレイ | トップページ | 【PICマイコン】PIC12F1572で16bitPWM(サンプルコード) »

2018/05/20

【PICマイコン】PIC12F1572で16bitPWM

最近、秋月で取り扱い始めたPIC12F1572@¥80の16bitPWM機能を使おうとしたところ、初期設定にまごついたので、備忘録としてメモしておきます。


(参考)
PIC12F1572 - Microcontrollers and Processors - Microcontrollers and Processors
【PICマイコン】PIC12F1572で16bitPWM(サンプルコード)

大雑把に言えば、PIC12F1822と同じエンハンスト ミッドレンジ 8ビットCPUで基本は同じですが、PWM機能は大きく異なります。



先ずはエルチカで、コンフィギュレーションワードとクロックの設定に問題ないことを確認します。

次に、16bitPWM機能でRCサーボモーターを制御してみました。



回路図です。2つのボリュームでそれぞれRCサーボモーターの回転を制御します。

PWM_clockは、HFINTOSC(16MHz)をPrescalerで1/16して、1uSとしています。
20mS周期とするために、PRレジスタ = 20000 - 1 = 19999
1〜2mSのパルスのために、DCレジスタ = 1000 〜 2000
PHレジスタにも初期値0を書き込まないと、PWMとして機能しません。

一番分かりずらかったのはPWMのタイミング設定で、Duty Cycle/Piriod/Phaseレジスタの値を変更しただけではPWMの動作に反映されず、Reloadすると次の周期で反映されます!(22.4 Reload Operation)

一度使って見れば簡単なことなのかもしれませんが、なかなか難儀なことです。


続く。。

« 【PICマイコン】SPI接続LCDグラフィックディスプレイ | トップページ | 【PICマイコン】PIC12F1572で16bitPWM(サンプルコード) »