タイマRCでPWM出力
タイマRCを使ってPWMの出力がうまくいったのでメモ
- PWMは最大3本
- 使えるのはTRCIOB,TRCIOC,TRCIODの3つの端子
- TRCGRAにPWMの周期を書き込む
- TRCGRB,TRCGRC.TRCGRDにPWM出力の変化点を書き込む
- TRCIOC,TRCIODを使用するときはPINSR3に0x3Fを書き込んでおく
PINSR3に0x3Fを書き込むことに気がつかずなかなか動いてくれなかった...
タイマRCをPWMモードのするにはこの設定でOK
tstart_trcmr = 0; //TRC停止 pinsr3 = 0x3F; //P3_4をTRCIOCにP3_5をTRCIODに pwmc_trcmr = 1; //TRCIOCをPWMモードに設定 pwmd_trcmr = 1; //TRCIODをPWMモードに設定 pwm2_trcmr = 1; //タイマモードかPWMモードに設定 toc_trccr1 = 1; //TRCIOCをコンペアマッチでLowにする設定 tod_trccr1 = 1; //TRCIODをコンペアマッチでLowにする設定 tck0_trccr1 = 0; //カウントソースの設定 tck1_trccr1 = 0; // tck2_trccr1 = 0; //f1を設定 cclr_trccr1 = 1; //TRCGRAのコンペア一致でTCRをクリアにする設定 imiec_trcier = 0; //TRCGRCのコンペア一致割り込み禁止 imied_trcier = 0; //TRCGRCのコンペア一致割り込み禁止 ec_trcoer = 0; //TRCIOC出力許可 ed_trcoer = 0; //TRCIOD出力許可 trc = 0; //TRCクリア trcgra = 5000; //周期の設定 trcgrc = 2500; //デューティ50%になるはず trcgrd = 1250; //こっちは25% trcier = 0; //TRCの割り込み禁止 tstart_trcmr = 1; //タイマRCカウントスタート!
あとは勝手にPWMが出力されます。