Peter Homann wrote: > Hi, > > I am migrating a serial communications interface (Modbus) to a LPC2138 > processor. The Modbus spec defines that an end of message has occurred > when a period equal to 3.5 characters has passed since the last > character has been received. > > The LPC uart can generate an interrupt if the receive buffer has > characters in it and no character has been received for a period of 3.5 > - 4.5 characters. > > I would like to use this feature for detecting the end of a received > message. The problem I have is that if I service an interrupt due the > the buffer being filled, and it also happens that that last character in > the buffer was the last character for the received message, the receive > time-out interrupt will not occur, resulting in the end of message not > being detected. > > Is there a solution, other than using a buffer length of 1 and using a > timer to measure the inter message gap? > > Cheers, > > Peter. > Hello Peter, this interrupt was not designed for your needs. It should prevent a communication from being stalled if some characters are trapped in queue which is not full. Just an idea: every time you receive a character reset a timer. If a timer interrupt occure prior a line idle interrupt, you have not received any characters for a certain time. It's ugly but should solve your problem. Sten -- /************************************************ Do you need a tiny and efficient real time operating system (RTOS) with a preemtive multitasking for LPC2000 or AT91SAM7? http://nanortos.net-attack.de/ Or some open-source tools and code for LPC2000? http://www.net-attack.de/ ************************************************/
Message
Re: [lpc2000] Uart receive timeout Interrupt?
2005-11-09 by Sten
Attachments
- No local attachments were found for this message.