Beispiel #1
0
// UART2 RX ISR
void __attribute__ ((interrupt,no_auto_psv)) _U2RXInterrupt(void)
{
    char c;

    // Clear the interrupt status of UART2 RX
    U2RX_Clear_Intr_Status_Bit;

    // Wait for data to become available
    //while(!DataRdyUART2());

    // Read a character
    //c = ReadUART2();

    // Read a character
    c = read();

    // Valid Chracter returned
    if (c) {

        // Write character out to USB when ready
        while(BusyUART3());
        WriteUART3((unsigned int)c);

        // Clear out any garbage characters
        while(DataRdyUART2())
            ReadUART2();

    }

    // Print out GPS info
//    displayGPSInfo();
    
}
Beispiel #2
0
unsigned int getsUART2(unsigned int length,unsigned int *buffer,
                       unsigned int uart_data_wait)
{
    unsigned int wait = 0;
    char *temp_ptr = (char *) buffer;

    while(length)                         /* read till length is 0 */
    {
        while(!DataRdyUART2())
        {
            if(wait < uart_data_wait)
                wait++ ;                  /*wait for more data */
            else
                return(length);           /*Time out- Return words/bytes to be read */
        }
        wait=0;
        if(U2MODEbits.PDSEL == 3)         /* check if TX/RX is 8bits or 9bits */
            *buffer++ = U2RXREG;          /* data word from HW buffer to SW buffer */
        else
            *temp_ptr++ = U2RXREG & 0xFF; /* data byte from HW buffer to SW buffer */

        length--;
    }

    return(length);                       /* number of data yet to be received i.e.,0 */
}
Beispiel #3
0
void __attribute__((interrupt, no_auto_psv)) _U2RXInterrupt(void)
{
	static uint8_t c = 0;
	U2RX_Clear_Intr_Status_Bit;
	while (!DataRdyUART2());
	c = ReadUART2();
	enqueue(&rx_queue, &c);
	if (rx_handler) {
		uckernel_submit_isr_task(rx_handler, NULL, NULL);
	}
}
Beispiel #4
0
int command_received(void){
	while(DataRdyUART2()){
		*Serial.receiveddata = ReadUART2();
		Serial.receiveddata++;	
	}
	if(Serial.receiveddata != Serial.rbuf){
		if(*(Serial.receiveddata-1) == '\r'){
			*(Serial.receiveddata-1) = '\0';
			Serial.receiveddata = Serial.rbuf;
			return 1;		
		}
	}
	return 0;
}
Beispiel #5
0
void __attribute__((__interrupt__,auto_psv)) _U2RXInterrupt(void){
	IFS1bits.U2RXIF = 0;
	while(DataRdyUART2())
	{
		*Serial.receiveddata = ReadUART2();
		Serial.receiveddata++;
	}	
	if((Serial.rbuf[0] == 's') && 
	   (Serial.rbuf[1] == 't') && 
	   (Serial.rbuf[2] == 'p') && 
	   (Serial.rbuf[3] == '\r')) 
	{
		stop = 1;
	}
	if((Serial.rbuf[0] == 'r') && 
	   (Serial.rbuf[1] == 's') && 
	   (Serial.rbuf[2] == 't') && 
	   (Serial.rbuf[3] == '\r'))
	{
		reset = 1;
	}
}