目次

#contents();

*メニュー [#wf322d66]
//個人ページの下にページを作ることもできます。
-[[ファイル置き場>./upload]]
-[[コメントページ>./comments]]
-[[Rio Unite 130 分解>分解レポート#n13340d3]]
-過去の日誌
--[[./2008]]
--[[./2009]]

*komaへのコメント [#o41c145a]
#pcomment(./comments,reply);

*2010-04-28-A/D Converter [#m5974c0a]
アナログ入力は、P0[0]-P0[7]、P1[0]-P1[3]、P7[0]-P7[7]で、20ピンが使用できるようだ。
分解能は最大10bitで、ソフトウェアかタイマでトリガーできる。
サンプリング周波数は、分解能8bit、クロック10MHz使用時で350kspsくらい出るらしい。
かなり正確な数字が出てるので使いやすそうだ。

8bitの''A/D Control Register''が3つあり、これで初期設定を行う。
ソフトウェアでサンプリングトリガを与えるときは、''A/D conversion start bit(adst)''を"1"にするだけで良い。
 adst = 1;
変換終了すると''adst=0''に変化する。




*2010-04-25-UART通信 [#c07e8aea]
ありがたいことに、[[R8C/2Dマイコン開発セット:http://akizukidenshi.com/catalog/g/gK-03018/]]にはあらかじめシリアル通信用のインターフェースIC[[ADM3202ARN:http://akizukidenshi.com/catalog/g/gI-01279/]]が用意されていて、D-SUBコネクタとマイコンの間にかませてあるので、ユーザーは、特に気にせずにマイコンからデータを送受信できるようだ。至れり尽くせりだな。。

まずはサンプルソースを使用してUART通信成功!


*2010-04-24-タイマ割り込みでLED点灯 [#g5723342]
前回のタイマを使用したPWM波形は、TimerRC専用の出力ピンを使用しているため、それを別のピンに割り当てることはできない。
なので、今度はタイマ割り込みを発生させてLEDに接続されているピンPWM波形を発生させたい。
TimerRCの割り込み制御レジスタはなぜか3つもあるorz
,レジスタ名,機能
,TRCSR0,タイマRC割り込みのインプットキャプチャ/アウトプットコンペアの機能切り替え
,TRCIER,タイマRC割り込みを許可するかどうかを決めるレジスタ
,TRCIC,タイマRC割り込みのレベルを決定するレジスタ

R8Cには割り込みレベル(Processor Interrupt Priority Level: IPL)という値がある。
タイマを含めた、あらゆる割り込み処理に対してレベルを決めるレジスタが用意されていて、
 割り込みのレベル>IPL
を満たさないものは割り込み処理が実行されない。
IPLは、例えば以下の処理を実行すると変更できる。
 //IPLを3に変更
 asm("LDIPL #3") ;

割り込み時に実行される関数定義については、''#pragma interrupt'' によって定義する。関数名は任意。
(vect=○○)というのは、 ''割り込みベクタ番号'' を与えている。すべての割り込み処理に対して一意の値があり、これによって何の割り込み処理のための関数であるかを認識させるっぽい。
ちなみに、TimerRCのSoftware Interrupt Numberは ''7'' 。

 #pragma interrupt _timer_rc(vect=7)
 void _timer_rc(void);


▼ソース 
#ref(./upload/100423timer_rc.c)


*2010-04-23-サンプルコード [#ke6b18f5]
とりあえずリンク
[[R8C/2Dシリーズのサンプルコード集:http://japan.renesas.com/products/mpumcu/r8c/r8c2x/r8c2d/Application_Notes.jsp?event=resetFunctions&logo=0&productName=R8C%2F2D+%C3%A3%C2%82%C2%B0%C3%A3%C2%83%C2%AB%C3%A3%C2%83%C2%BC%C3%A3%C2%83%C2%97&region=jp&hiddenFunctionsKey=41&hiddenProductsId=2125&sort=&pageNo=1&redirectEvent=resetFunctions&documentUrl=http%3A%2F%2Fjapan.renesas.com%2Fproducts%2Fmpumcu%2Fr8c%2Fr8c2x%2Fr8c2d%2FApplication_Notes.jsp&x=18&y=11]]

*2010-04-23-感想とか [#a65ffe58]
とりあえず、R8Cのマニュアルはとっても分かりにくいと言うことが分かった!
網羅的に記述してあるけど、とりあえず動かすにはどうすればいいのかっていうのが全然理解できない。
このままではLEDをチカチカさせることもままならない!!

*2010-04-22-タイマを使用する_02 [#w297d5da]
PWM波形が出た!!っと言ってもほとんどサンプル通りですが。。
''msttrc''というレジスタがあることを完全に見落としていたため、
かなり足止めを食らいました。

以下ソースです。
▼ソース 
#ref(./upload/100421timer_rc.c)

 #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波形 
#ref(./upload/2010-04-23-pwmwave.jpg,,,50%)

*2010-04-22-タイマを使用する_01 [#w297d5da]
R8Cでタイマをセットアップするまで、面倒な設定が多すぎるorz
タイマのカウント用CLKやPWMモードやら、柔軟な設計ができるのはいいけど、
いちいち設定すべきレジスタが代わるのがめんどくさい。
レジスタの名前も覚えにくい。。


*2010-04-21-HEW新規ワークスペース生成 [#e87e6851]
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

このヘッダファイルの一番上の行に、なぜか日付が書いてあり、これがあるとコンパイルできないので消す。


*2010-04-21-R8C/2Dマイコン開発セット [#z683d27e]
[[kanou]]さんに相談して、これを買ってみました。
http://akizukidenshi.com/catalog/g/gK-03018/

早速LCDモジュールの半田付けをミスりましたorz


トップ   新規 一覧 検索 最終更新   ヘルプ   最終更新のRSS