On Mon, 18 Jun 2007, Alexander Aganichev wrote: > I found that driver not transmit anything in interrupt driving mode > unless I made the following patch: > > Index: packages/devs/serial/generic/16x5x/current/src/ser_16x5x.c > =================================================================== > RCS file: > /cvs/ecos/ecos/packages/devs/serial/generic/16x5x/current/src/ser_16x5x.c,v > retrieving revision 1.14 > diff -u -r1.14 ser_16x5x.c > --- packages/devs/serial/generic/16x5x/current/src/ser_16x5x.c 27 Nov > 2006 13:59:50 -0000 1.14 > +++ packages/devs/serial/generic/16x5x/current/src/ser_16x5x.c 18 Jun > 2007 12:21:30 -0000 > @@ -516,6 +516,7 @@ > HAL_READ_UINT8(base+REG_ier, _ier); > _ier |= IER_XMT; // Enable xmit interrupt > HAL_WRITE_UINT8(base+REG_ier, _ier); > + (chan->callbacks->xmt_char)(chan); // <<<<<< > } > > // Disable the transmitter on the device > > Am I right to make this change or I just missed another process that > should call xmt_char? I'm using LPC2294 based board and use this > driver for the UART1.
It looks like eCos uses the usual UART sending procedure - enable tx-empty (IER_XMT) interrupt and return, then the interrupt should trigger as soon as tx is empty / tx fifo can take more data, and you write more data in your interrupt handler to the port. The fact it doesn't work for you means most probably that you're not getting tx-empty interrupts, and, perhaps, no UART interrupts at all. Thanks Guennadi --------------------------------- Guennadi Liakhovetski, Ph.D. DSA Daten- und Systemtechnik GmbH Pascalstr. 28 D-52076 Aachen Germany