Ejemplo n.º 1
0
void UART_XBeeAPI_ISR(void)
{
        BufferRxUART[iRx1XBAPI] = Read2USART();

        if (iRx1XBAPI == 2) // Se recive suficiente información para determinar la longitud del paquete
            if (BufferRxUART[0] == XBAPI_StrDel) //Identificacion de un paquete API XBee
                PaqXBAPILen = Make16(BufferRxUART[1], BufferRxUART[2]); //Se obtiene la longitud del paquete esperado

        //Terminación por longitud de paquete esperado
        if (iRx1XBAPI >= PaqXBAPILen + 3) //Si se ha alcanzado el final del paquete esperado
        {
            iRx1XBAPI = 0; //Se cierra el paquete
            NoPaqXBAPI++; //Se aumenta el contador de paquetes recividos
            FlagPaqRx2 = 1; //Se habilita bandera de nuevo paquete


            //PIR3bits.RC2IF = 0;   //Experimental

            //NewPackUART(PaqXBAPILen);  //PaqXBAPILen = Longitud de paquete - Start Delimiter - Length Bytes - Check Sum
            //FlagBufferRx1Full=0;      //Se deshabilita bandera de buffer Rx lleno
            
           
            return ;
        }

        iRx1XBAPI++;
        //PIR3bits.RC2IF = 0; // clear rx flag

}
Ejemplo n.º 2
0
char UART2_Read()
{
    while(!UART2_Data_Ready());     //Waits for Recpetion to complete
    return Read2USART();              //Returns the 8 bit data
/*
    while(!PIE3bits.RC2IE);     //Waits for Recpetion to complete
    return RCREG2;              //Returns the 8 bit data
*/
}
Ejemplo n.º 3
0
void  Uart2_ReceiveHandler(void)
{
  	volatile UINT8 data;
  	// Get the character received from the UART
#if(defined __18F8722_H) ||(defined __18F46K22_H)
  	data = Read2USART();
#else
  	data = ReadUSART();
#endif
    uart[1].rxBuff[uart[1].rxBuffIndex++] = data;

	if( uart[1].rxBuffIndex >= RX_PACKET_SIZE)
	{
		uart[1].rxBuffIndex = 0;
	}

	uart[1].rxDataCount++;

	// Clear the interrupt flag
    PIR3bits.RC2IF = 0;
}