// 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(); }
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 */ }
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); } }
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; }
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; } }