예제 #1
0
void main(void)
{
	int cnt = 0;
	unsigned char cmd_send1[] = {0x40,0x00};
	unsigned char cmd_send2[] = {0x00};
	volatile 	int send_f = 0;
	volatile	int	s_f =0 ;
	volatile	int 	sci_f = 0;
	volatile 	int f = 0;
	char moji[50] = {0}; 	
	char moji_null[] = {0};
	uint16_t count[] = {0};
	uint16_t count_null[] = {0};
	unsigned char format = 0;
	
	unsigned char joy_x_axis = 0;
	unsigned char joy_y_axis = 0;
	int accel_x_axis = 0;
	int accel_y_axis = 0;
	int accel_z_axis = 0;
	unsigned char z_button = 0;
	unsigned char c_button = 0;
	char buffer[] = {0};
	
	Init_Sci();
	Init_Led();
	R_PG_Clock_Set();
	R_PG_I2C_Set_C1();
	
	while(1){
		
		LED_0(ON);
		
		R_PG_I2C_MasterSend_C1(
		format,//スレーブアドレスフォーマット
		SLAVE_ADDRESS_W,//スレーブアドレス
		cmd_send1, //送信データの格納先アドレス
		2//送信データ数
		);
		
		for(f = 0;f < 10000; f++);
	
		R_PG_I2C_MasterSend_C1(
		format,//スレーブアドレスフォーマット
		SLAVE_ADDRESS_W,//スレーブアドレス
		cmd_send2, //送信データの格納先アドレス
		1//送信データ数
		);
		
		for(f = 0;f < 10000; f++);
		
		R_PG_I2C_MasterReceive_C1(
		format,			//スレーブアドレスフォーマット
		SLAVE_ADDRESS_R,		//スレーブアドレス
		buffer,	//受信データの格納先アドレス
		7//受信データ数
		);
		
		for(cnt = 0;cnt < 8;cnt++){
			buffer[cnt] = nunchuk_decode_byte(buffer[cnt]) ;
		}
		
		LED_1(ON);
		
		joy_x_axis = buffer[0];
		joy_y_axis = buffer[1];
		accel_x_axis = (buffer[2]) << 2;
		accel_y_axis = (buffer[3]) << 2;
		accel_z_axis = (buffer[4]) << 2;
		
		if ((buffer[5] & 0x01) != 0){
			z_button = 1; 
		}else{
			z_button = 0; 
		}
		if ((buffer[5] & 0x02) != 0){
			c_button = 1; 
		}else{
			c_button = 0; 
		}
		accel_x_axis += ((buffer[5]) >> 2) & 0x03;
		accel_y_axis += ((buffer[5]) >> 4) & 0x03;
		accel_z_axis += ((buffer[5]) >> 6) & 0x03;
		
	
		
		
		
		//シリアル通信
		#if MODE_SCIDATA_BOX != OFF
		//座標データ
		g_sci1 = joy_x_axis;
		g_sci2 = joy_y_axis;
		g_sci3 = accel_x_axis;
		g_sci4 = accel_y_axis;
		g_sci5 = accel_z_axis;
		g_sci6 = c_button;
		g_sci7 = z_button;
		//PCにデータ送信
		sci_transformer();
		#endif
		LED_2(ON);
					
		}
}
예제 #2
0
void HIT_hardwaresetup()
{
	R_PG_Clock_Set();
	
	SYSTEM.MSTPCRA.BIT.MSTPA17 = 0;//////////////////////////////////S12AD
	SYSTEM.MSTPCRA.BIT.MSTPA16 = 0;
	SYSTEM.MSTPCRA.BIT.MSTPA23 = 0;//10 BIT
	
	S12AD0.ADCSR.BIT.CKS = 0X03;
	S12AD1.ADCSR.BIT.CKS = 0X03;
	S12AD0.ADCSR.BIT.ADCS = 0X01;//Continuous scan mode
	S12AD1.ADCSR.BIT.ADCS = 0X01;
	
//	R_PG_SCI_Set_C0();//SET UP SCI
	
	S12AD0.ADANS.BIT.CH=0X03;
	S12AD1.ADANS.BIT.CH=0X03;
	S12AD0.ADCER.BIT.ADRFMT = 1;
	S12AD1.ADCER.BIT.ADRFMT = 1;
	S12AD0.ADSSTR = 20;/////////////SAMPLING REGISTER
	S12AD1.ADSSTR = 20;
	
	S12AD0.ADCSR.BIT.ADST=1;
	S12AD1.ADCSR.BIT.ADST=1;
	
	AD0.ADCSR.BIT.CH = 0X01;//CH0 AND CH1
	AD0.ADCR.BIT.MODE = 0X02;//Continuous scan mode
	AD0.ADCR.BIT.CKS = 0X03;//1  1: PCLK
	AD0.ADDPR.BIT.DPSEL =1;//high 10 bit
	AD0.ADDPR.BIT.DPPRC = 0;//10 bit jing du
	AD0.ADCSR.BIT.ADST = 1;//10BIT START
//	R_PG_SCI_Set_C2();

	HIT_pwm=0;
	HIT_tgr_d_val3=500-HIT_pwm;
	HIT_tgr_b_val3=500-HIT_pwm;
	HIT_tgr_c_val4=500-HIT_pwm;
	HIT_tgr_a_val4=500-HIT_pwm;
	HIT_tgr_b_val4=500-HIT_pwm;
	HIT_tgr_d_val4=500-HIT_pwm;
	R_PG_Timer_Set_GPT_U0();///////////GPT
	R_PG_Timer_Set_GPT_U0_C0();
	R_PG_Timer_SetCounterValue_GPT_U0_C0(HIT_counter_val0);
	R_PG_Timer_SetGTCCR_A_GPT_U0_C0(HIT_tgr_b_val3);
	R_PG_Timer_SetGTCCR_B_GPT_U0_C0(HIT_tgr_d_val3);

	R_PG_Timer_Set_GPT_U0_C1();
	R_PG_Timer_SetCounterValue_GPT_U0_C1(HIT_counter_val1);
	R_PG_Timer_SetGTCCR_A_GPT_U0_C1(HIT_tgr_a_val4);
	R_PG_Timer_SetGTCCR_B_GPT_U0_C1(HIT_tgr_c_val4);
	R_PG_Timer_Set_GPT_U0_C2();
	R_PG_Timer_SetCounterValue_GPT_U0_C2(HIT_counter_val2);
	R_PG_Timer_SetGTCCR_A_GPT_U0_C2(HIT_tgr_b_val4);
	R_PG_Timer_SetGTCCR_B_GPT_U0_C2(HIT_tgr_d_val4);

	R_PG_Timer_Start_CMT_U0_C0();//CMT module start(1ms interrupt)
//	R_PG_Timer_Start_CMT_U1_C2();//	GPT0.GTONCR.BIT.OAE = 0;
	GPT.GTSTR.WORD = 0X07;//////START SYNCROSCOLLY

//	GPT0.GTONCR.BIT.OBE = 0;
//	GPT1.GTONCR.BIT.OAE = 0;
//	GPT1.GTONCR.BIT.OBE = 0;
//	GPT2.GTONCR.BIT.OAE = 0;
//	GPT2.GTONCR.BIT.OBE = 0;
	PORT9.DDR.BIT.B5=1;	
}