読者です 読者をやめる 読者になる 読者になる

タイマRCでPWM出力

R8C

タイマ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が出力されます。