示例#1
0
/* Start user code for adding. Do not edit comment generated here */
void packet_process(void)
{
	int pwm;	/* duty cycle for duty assignment mode */
	int mode;	/* assigned mode from master packet */
	
	/* if ignore bit set, do nothing */
	if (masterPacket[0] & 2)
		return;
	mode = masterPacket[0] & 12;
	/* servo off mode */
	if (mode == 0)
	{
		set_motor_output(0);
		TRG = 0;
		count = 0;
	}
	/* duty assignment mode */
	if (mode == 4)
	{
		pwm = (double)((int8_t)masterPacket[3]) / 100 * 3100;
		set_motor_output(pwm);
	
	}
	/* position control mode */
	if (mode == 8)
	{
		pid_control();
	}
	/* else reservation mode, don't need to do anything */
		
	/* if this is the time we are processing this packet, and if required send reply */
	if (firstCall == 1 && masterPacket[1] & 1 == 1)
	{
		firstCall = 0;
		bufferOut[0] = masterPacket[0];
		bufferOut[2] = count >> 8;
		bufferOut[3] = count;
		bufferOut[4] = crc((((long)bufferIn[0]) << 24) +
			(((long)bufferIn[1]) << 16) +
			(((long)bufferIn[2]) << 8) +
			((long) bufferIn[3]));*/
		
		P1.5 = 1;
		R_UART2_Send(bufferOut , 5);
		/* when send finishes, it will toggle DE for receive */
	}
/***********************************************************************************************************************
* Function Name: main
* Description  : This function implements main function.
* Arguments    : None
* Return Value : None
***********************************************************************************************************************/
void main(void)
{
    R_MAIN_UserInit();
    /* Start user code. Do not edit comment generated here */

    int transmit_count = 0;
	R_UART2_Create();
	R_UART2_Start();
	uart2Status = R_UART2_Receive(&uart2RxBuf[0],1);	// Prime UART2 Rx

	R_TAU0_Create();
	R_TAU0_Channel0_Start();

	R_PORT_Create();

	R_ADC_Create();

	while (1U)
	{
		if(oneSec)
		{
			if(transmit)
				uart2Status = R_UART2_Send(uart2TxBuf, 1);

			counter++;
			oneSec = !oneSec;
		}

		if(uart2RxFlag)
		{
			uart2RxFlag = 0U;

			if(uart2RxBuf[0] == 'b')
			{
				uart2TxBuf[0] = counter;
				transmit_count = convertToNum(uart2TxBuf); //convert the ASCII symbols to integers instead.
				uart2Status = R_UART2_Send(uart2TxBuf, transmit_count);
			}
			else
			if(uart2RxBuf[0] == 'l')
				P7_bit.no7 = !P7_bit.no7;
			else
			if(uart2RxBuf[0] == 'a')
			{
				uint8_t adcvalue = 0;
				R_ADC_Start();
				while(!adc_done_flag); //wait for interrupt
				adc_done_flag = 0;
				R_ADC_Get_Result_8bit(&adcvalue);
				uart2TxBuf[0] = adcvalue;
				transmit_count = convertToNum(uart2TxBuf); //convert the ASCII symbols to integers instead.
				R_ADC_Stop();
				uart2Status = R_UART2_Send(uart2TxBuf, transmit_count);
			}
			else
			if(uart2RxBuf[0] == 't')
				transmit = !transmit;
			else
				uart2TxBuf[0] = uart2RxBuf[0];

			// Prime UART2 Rx
			uart2Status = R_UART2_Receive(uart2RxBuf, 1);
		}

		//If a character has been transmitted
		if (uart2TxFlag)
		{
			// End of UART2 transmit
			uart2TxFlag = 0U;   // clear tx flag
		}
	}

	R_UART2_Stop();
	R_TAU0_Channel0_Stop();
	//R_ADC_Stop();
	/* End user code. Do not edit comment generated here */
}