How can I increase the interrupt priority of UART1 of the LPC2364? Due to heavy load on timer interrupts, I'm missing receiving characters every 5 - 10 seconds.
The initialization of UART1 is as follow:
void enableUART1(void) { VICVectAddr7 = (unsigned long) UART1_IRQHandler; // Set Interrupt Vector VICVectCntl7 = 17; //15; // use it for UART1 Interrupt VICIntEnable |= (1<<7); // Enable UART1 Interrupt }
// Enable RS485 P2.7 Initialisiert auf Out high PINSEL4 = PINSEL4|P2_00TXD1|P2_01RXD1; U1LCR = bits|parity|stops|_DLABON; U1DLL = (U8)baud; U1DLM = (U8)(baud>>8); U1LCR = bits|parity|stops|_DLABOFF; uart[_UART1].openChar1 =uart[_UART1].openChar2 =uart[_UART1].openChar3 =uart[_UART1].openChar4 =0; uart[_UART1].closeChar1=uart[_UART1].closeChar2=uart[_UART1].closeChar3=uart[_UART1].closeChar4=0; uart[_UART1].closeTimeout=timeout; flushBufferUART1( ); U1IER =(1<<0); // Enable Rx Interrupt uart[_UART1].initialized=1;
Many thanks for any input. Peter
But what happens if I receive a string of only 11 characters?<p>
If you want to receive every single character, set the UART to raise an interrupt as soon as there is one character in the FIFO. The beauty about the FIFO is that even if the UART has received additional characters by the time the uC starts the ISR, these additional character are not "lost", but stored in the FIFO, and you can read them from there.