title

ボリューム調整により0~100%が出せます。

周期変更

固定周期で使用する場合は自動生成時の設定変更だけで可能です。自動生成時に 周期とデューティを選択しました。 周期はboxに入力し、デューティは50%になっています。このままですと50%デューティのパルスしか出せません。 可変するにはr_cg_tur_user.c内でTDR01HとTDR01Lの値を変更することでデューティを変化させます。
        R_ADC_Get_Result(&ADC_buffer);	速度ボリュームの値を読んで(10bit)
        ADC_buffer = ADC_buffer*20;     ここで20倍して周期レジスタの値に合うよう調整
        if(ADC_buffer>20000) ADC_buffer=20000;  MAXの値を決めて(20000)
        if(ADC_buffer<0) ADC_buffer=0;
        EI();
        TDR01H = ADC_buffer>>8;		ここと
        TDR01L = ADC_buffer & 0x0F;	ここを変化させる
        DI();
    

倍数とMAX値の数値3個を変更します。今ここの値は1m秒周期です。20m秒の場合 50,51000,51000 に変更すると0~100%に変化します。 20m秒設定時に生成される r_cg_tau.c 内の関数 void R_TAU0_Create(void) に TDR00H = _C3_TAU_TDR00H_VALUE; TDR00L = _4F_TAU_TDR00L_VALUE;と TDR01H = _61_TAU_TDR01H_VALUE; TDR01L = _A8_TAU_TDR01L_VALUE;という記述が見られますが、これが1msecで生成した周期とデューティです。TDR00HのhiがC3でloが4Fですので 16進C34F、10進では49999これが周期に相当します。TDR01H:61 TDR01L:A8 61A8ー>25000(デューティ50%)となります。プログラム中で このTDR01HとLをボリューム読み取り値に応じて変化させています。したがってMAXで50000、MINでは0にします。(MCUクロックが20MHz :周期0.05μ秒ですからtauもこの周期だとすると25m秒周期になりそうですが・・・。疑問は残ります。誰か教えていただくと有り難いです。) TDR00HとLを変化させれば周期も可変です。

ついでにラジコンサーボの0.5~2.4msecを出すには周期20m秒に設定して
	R_ADC_Get_Result(&ADC_buffer);
	ADC_buffer = ADC_buffer*5 + 1250;       //最小パルス幅
	if(ADC_buffer>6000) ADC_buffer=6000;    //最大パルス幅
	if(ADC_buffer<0) ADC_buffer=0;

にしますと0.5~2.4が出ています