目次
最新の10件を表示しています。 コメントページを参照
とりあえずリンク
R8C/2Dシリーズのサンプルコード集
とりあえず、R8Cのマニュアルはとっても分かりにくいと言うことが分かった!
網羅的に記述してあるけど、とりあえず動かすにはどうすればいいのかっていうのが全然理解できない。
このままではLEDをチカチカさせることもままならない!!
PWM波形が出た!!っと言ってもほとんどサンプル通りですが。。
msttrcというレジスタがあることを完全に見落としていたため、
かなり足止めを食らいました。
以下ソースです。
#include "sfr_r82D.h" void timer_rc_init(void); //Initial setting of Timer RC SFR void main(void) { //----------------------------------------------------------------------- // 外部水晶発振子20MHz 使用 //----------------------------------------------------------------------- asm("FCLR I"); // 割り込み処理禁止 prc0 = 1; // cm0,cm1,ocd,har0,har1,har2 書き込み許可 cm13 = 1; // cm1_addr(0007h) bit3 P4-6,7 X'tal cm05 = 0; // cm0_addr(0006h) bit5 X'tal 発振 cm06 = 0; // cm0_addr(0006h) bit6 cm16,cm17 有効 asm("NOP"); // 発振が安定するまで待つ asm("NOP"); // 発振が安定するまで待つ asm("NOP"); // 発振が安定するまで待つ asm("NOP"); // 発振が安定するまで待つ ocd2 = 0; // ocd_addr(000Ch) bit3 メインクロック選択 prc0 = 0; // cm0,cm1,ocd,har0,har1,har2 書き込み禁止 //asm("FSET I"); // 割り込み処理許可 //----------------------------------------------------------------------- // LED Port を設定する //----------------------------------------------------------------------- pd2 = 0xff; // ポートP2 出力モードに設定 //----------------------------------------------------------------------- // Timer Port を設定する //----------------------------------------------------------------------- //pd5 = 0xff; //----------------------------------------------------------------------- // Initialize SFR of Timer RC //----------------------------------------------------------------------- timer_rc_init(); //----------------------------------------------------------------------- // Main //----------------------------------------------------------------------- while(1){ } } /************************************************************************************/ /* Name: timer_rc_init /* Parameters: None /* Returns: None /* Description: Initial setting of Timer RC SFR /************************************************************************************/ void timer_rc_init(void){ // timer RC enable msttrc = 1; // timer on/off tstart_trcmr = 0; // Stop TRC Count trcic = 0x00; // Interrupt disabled // pwm mode setup pwmb_trcmr = 1; // TRCIOB PWM mode selection bit:PWM mode pwmc_trcmr = 1; // TRCIOC PWM mode selection bit:PWM mode pwmd_trcmr = 1; // TRCIOD PWM mode selection bit:PWM mode pwm2_trcmr = 1; // PWM2 mode selection bit:PWM mode bfc_trcmr = 0; // TRCGRC:General register bfd_trcmr = 0; // TRCGRD:General register // active lebel setup tob_trccr1 = 0; // TRDIOB output level:"H" active toc_trccr1 = 0; // TRDIOC output level:"H" active tod_trccr1 = 0; // TRDIOD output level:"H" active // pin output enable eb_trcoer = 0; // TRCIOB Pin Output enable ec_trcoer = 0; // TRCIOC Pin Output enable ed_trcoer = 0; // TRCIOD Pin Output enable pto_trcoer = 0; // INT0 of Pulse output forced cutoff input disabled // count source clk setup tck0_trccr1 = 0; // Count Source Selection Bit:f1("000") tck1_trccr1 = 0; // f1 20MHz tck2_trccr1 = 0; cclr_trccr1 = 1; // The TRC register clear at the compare match with TRCGRA // count value setup trc = 0; // The Count value of TRC is initialized to "0" trcgra = 4000 - 1; // 25ns * 4000 = 100us trcgrb = 1000 - 1; // 25ns * 1000 = 25us trcgrc = 2000 - 1; // 25ns * 2000 = 50us trcgrd = 3000 - 1; // 25ns * 3000 = 75us trcier = 0x00; // Disable interrupts ,ovie/imied/imiec/imieb/imiea tstart_trcmr = 1; // Start TRC Count }
▼PWM波形
R8Cでタイマをセットアップするまで、面倒な設定が多すぎるorz
タイマのカウント用CLKやPWMモードやら、柔軟な設計ができるのはいいけど、
いちいち設定すべきレジスタが代わるのがめんどくさい。
レジスタの名前も覚えにくい。。
HEW,High-performance Embedded Workshopは開発環境の名前。
プロジェクト生成後、マイコンのSFR(Special Function Resistor)を制御しやすくするため、ヘッダファイルを別途ディレクトリにコピーする必要がある。以下の中にある sfr_r82d.h というファイル。
C:\Program Files\Renesas\Hew\System\Pg\Renesas\M16C\V5_42_0\Generate\sfr\R8C\R8C2C_2D
このヘッダファイルの一番上の行に、なぜか日付が書いてあり、これがあるとコンパイルできないので消す。
kanouさんに相談して、これを買ってみました。
http://akizukidenshi.com/catalog/g/gK-03018/
早速LCDモジュールの半田付けをミスりましたorz