/***********************************************************************/
/*                                                                     */
/*  FILE        :100423timer.c                                         */
/*  DATE        :Fri, Apr 23, 2010                                     */
/*  DESCRIPTION :main program file.                                    */
/*  CPU GROUP   :2D                                                    */
/*                                                                     */
/*  This file is generated by Renesas Project Generator (Ver.4.12).    */
/*                                                                     */
/***********************************************************************/

#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("LDIPL #3");	//	IPLを3に設定
	asm("FSET I");		//	割り込み処理許可	

//-----------------------------------------------------------------------
//	LED Port を設定する
//-----------------------------------------------------------------------

	pd2 = 0xff;		//	ポートP2 出力モードに設定


//-----------------------------------------------------------------------
//	Initialize SFR of Timer RC
//-----------------------------------------------------------------------

	timer_rc_init();


//-----------------------------------------------------------------------
//	Main
//-----------------------------------------------------------------------

	while(1){
			p2_6 = 1;
			p2_7 = 1;
	}
}


//-----------------------------------------------------------------------
//	Timer RC 割り込み処理
//-----------------------------------------------------------------------
#pragma interrupt _timer_rc(vect=7)
void _timer_rc(void);
void _timer_rc(void){
		if ( imfa_trcsr == 1 ) {			/* IMFA flag on? */
			imfa_trcsr = 0;					/* IMFA flag clear */
			p2 = 0x00;
			}
		if ( imfb_trcsr == 1 ) {			/* IMFB flag on? */
			imfb_trcsr = 0;					/* IMFB flag clear */
			p2_0 = 1;
			p2_1 = 1;
		}
		if ( imfc_trcsr == 1 ) {			/* IMFC flag on? */
			imfc_trcsr = 0;					/* IMFC flag clear */
			p2_2 = 1;
			p2_3 = 1;
		}
		if ( imfd_trcsr == 1 ) {			/* IMFD flag on? */
			imfd_trcsr = 0;					/* IMFD flag clear */
			p2_4 = 1;
			p2_5 = 1;
		}
}


//-----------------------------------------------------------------------
//	Timer RC 初期化
//-----------------------------------------------------------------------

void timer_rc_init(void){
	
	// timer RC enable
	msttrc = 1;
	
	// timer on/off
	tstart_trcmr = 0;						// Stop TRC Count
	
	// 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;						// 50ns * 4000 = 200us
	trcgrb = 100  - 1;						// 50ns * 100  =   5us
	trcgrc = 1000 - 1;						// 50ns * 1000 =  50us
	trcgrd = 2000 - 1;						// 50ns * 2000 = 100us

	// interrupt settings
	trcic = 0x04;							// Interrupt LEVEL4 enabled
	trcier = 0x0f;							// imied/imiec/imieb/imiea enable interrupts
	tstart_trcmr = 1;						// Start TRC Count
}

