いつもお世話になっております。
RL78/G14のRDタイマを使用したPWM出力において、PWM周期が設定の2倍の周期となり、困っております。
C-First基板(RL78/G14搭載)を用いて、PWMを4本出力してみようと思い、RDタイマを使用することにしました。
RDタイマのコード生成の機能画面において、PWMを最大6本使用を選択し(タイマRD0とタイマRD1同期)、
PWM周期を1ms、TRDGRC0、TRDGRD0、TRDGRB1、TRDGRD1、の4本、50%Duty(動作確認用)の出力設定を行いました。
クロックは、32MHz(fCLK)に設定しております(⇒fHOCO=64)。
コード生成の内容も確認したところ、PWMの周期は
TRDGRA0 = _F9FF_TMRD_TRDGRA0_VALUE;
となっており、63999カウントとなっており、1msのカウント値となっております。
Dutyも50%なので、31999カウントとなっております。
しかし、この状態でデバッグしたところ、
PWMの周期が2ms(Low期間1ms)となりました。
試しに、Dutyを20%でデバッグしたところ、
PWMの周期は2msのままで、Low期間が400usとなりました。
PWMの周期を0.5msに設定すると、周期が1msとなります。
何か設定に不備があるのでしょうか?
ご教示いただきたく、宜しくお願いいたします。
コード生成
void R_TMR_RD0_Create(void){ TRD0EN = 1U; /* enable input clock supply */ TRDSTR |= _04_TMRD_TRD0_COUNT_CONTINUES | _08_TMRD_TRD1_COUNT_CONTINUES; TRDSTR &= (uint8_t)~_03_TRD_COUNT_STATR_INITIAL_VALUE; /* disable TMRD operation */ TRDMK0 = 1U; /* disable TMRD0 interrupt */ TRDIF0 = 0U; /* clear TMRD0 interrupt flag */ TRDMK1 = 1U; /* disable TMRD1 interrupt */ TRDIF1 = 0U; /* clear TMRD1 interrupt flag */ TRDMR = _00_TMRD_TRDGRC0_GENERAL | _00_TMRD_TRDGRD0_GENERAL | _00_TMRD_TRDGRC1_GENERAL | _00_TMRD_TRDGRD1_GENERAL; TRDPMR = _02_TMRD_TRDIOC0_PWM_MODE | _04_TMRD_TRDIOD0_PWM_MODE | _10_TMRD_TRDIOB1_PWM_MODE | _40_TMRD_TRDIOD1_PWM_MODE; TRDDF0 = _00_TMRD_TRDIOD_FORCEDCUTOFF_DISABLE | _00_TMRD_TRDIOC_FORCEDCUTOFF_DISABLE | _00_TMRD_TRDIOB_FORCEDCUTOFF_DISABLE; TRDDF1 = _00_TMRD_TRDIOD_FORCEDCUTOFF_DISABLE | _00_TMRD_TRDIOC_FORCEDCUTOFF_DISABLE | _00_TMRD_TRDIOB_FORCEDCUTOFF_DISABLE; TRDOER1 = _01_TMRD_TRDIOA0_OUTPUT_DISABLE | _02_TMRD_TRDIOB0_OUTPUT_DISABLE | _00_TMRD_TRDIOC0_OUTPUT_ENABLE | _00_TMRD_TRDIOD0_OUTPUT_ENABLE | _10_TMRD_TRDIOA1_OUTPUT_DISABLE | _00_TMRD_TRDIOB1_OUTPUT_ENABLE | _40_TMRD_TRDIOC1_OUTPUT_DISABLE | _00_TMRD_TRDIOD1_OUTPUT_ENABLE; TRDOCR = _04_TMRD_TRDIOC0_INITIAL_OUTPUT_H | _08_TMRD_TRDIOD0_INITIAL_OUTPUT_H | _20_TMRD_TRDIOB1_INITIAL_OUTPUT_H | _80_TMRD_TRDIOD1_INITIAL_OUTPUT_H; TRDCR0 = _00_TMRD_INETNAL_CLOCK_F1_FIH | _20_TMRD_COUNTER_CLEAR_TRDGRA; TRDCR1 = _00_TMRD_INETNAL_CLOCK_F1_FIH | _20_TMRD_COUNTER_CLEAR_TRDGRA; TRDIER0 = _00_TMRD_IMIA_DISABLE | _00_TMRD_IMIB_DISABLE | _00_TMRD_IMIC_DISABLE | _00_TMRD_IMID_DISABLE | _00_TMRD_OVIE_DISABLE; TRDIER1 = _00_TMRD_IMIA_DISABLE | _00_TMRD_IMIB_DISABLE | _00_TMRD_IMIC_DISABLE | _00_TMRD_IMID_DISABLE | _00_TMRD_OVIE_DISABLE; TRDPOCR0 = _00_TMRD_TRDIOC_OUTPUT_ACTIVE_L | _00_TMRD_TRDIOD_OUTPUT_ACTIVE_L; TRDPOCR1 = _00_TMRD_TRDIOB_OUTPUT_ACTIVE_L | _00_TMRD_TRDIOD_OUTPUT_ACTIVE_L; TRDGRA0 = _F9FF_TMRD_TRDGRA0_VALUE; TRDGRC0 = _7CFF_TMRD_TRDGRC0_VALUE; TRDGRD0 = _7CFF_TMRD_TRDGRD0_VALUE; TRDGRA1 = _F9FF_TMRD_TRDGRA1_VALUE; TRDGRB1 = _7CFF_TMRD_TRDGRB1_VALUE; TRDGRD1 = _7CFF_TMRD_TRDGRD1_VALUE; /* Set TRDIOC0 pin */ P1 &= 0xBFU; PM1 &= 0xBFU; /* Set TRDIOD0 pin */ POM1 &= 0xEFU; P1 &= 0xEFU; PM1 &= 0xEFU; /* Set TRDIOB1 pin */ P1 &= 0xFBU; PM1 &= 0xFBU; /* Set TRDIOD1 pin */ POM1 &= 0xFEU; P1 &= 0xFEU; PM1 &= 0xFEU;}