タイマーRD機能を使用してPWM出力を行っていますすが、
L期間の出力を設定でmデューティーを0%を出力設定する場合は
スレーブ >=(マスター+1)を設定するればよいのでしょうか。
例えば
マスターがTRDGRA0 = 0x063F;の場合
スレーブはTRDGRB0 は 0x0640を設定すればよいのでしょうか。
チョコです。
RL78/G14(QB-R5F104LE-TB)で実際のTMRD0によるPWM出力を確認してみました。
大きな流れを確認するために,PWM出力をCSIのマスタ受信のSI00に接続してサンプリングしながら,デューティを変化(TRDGRB0の値を大きくする)し,
周期(TRDGRA0)より大きな値になるようにしました。TRDGRB0の値(実際にはバッファレジスタのTRDGRD0の値)を書き換えるごとにブレークしてサンプリングして確認しました。
確認で使用したプロジェクトと結果のPDFをzipに圧縮して添付しておきます。
RL78G14_TRD_PWM.zip
プロジェクトの内容を少し変更しました。
・CSIの転送を割り込みからDTCに変更しました。
・TMRD0のデューティの初期値を+1して,周期+1になるように変更しました。
割り込みより応答が速いので,サンプリングしたデータがよりきれいな間隔になりました。
RL78G14_TRD_PWM 2.zip
悪のりついでに,CSI00をスレーブ受信に設定し,TM00から方形波を出力させてSCK00に入力するようにしました。
今度は,SCK00入力が定周期になるので,より正確なPWM出力のサンプリングが可能になります。
(オシロスコープをもっていないので,何とかポートを使ってサンプリングしていますが,対象の信号が1つだけなら,CSIを使ってサンプリングすることで,必要なRAMの容量を少なくしています。サンプリング(受信)したMSBファーストのデータをビット表示表示すると分かり易いくなります。)
5148.RL78G14_TRD_PWM.zip