This is the mail archive of the mailing list for the eCos project.

Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]
Other format: [Raw text]

Re: Question to 16x5x driver users

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.

Guennadi Liakhovetski, Ph.D.
DSA Daten- und Systemtechnik GmbH
Pascalstr. 28
D-52076 Aachen

Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]