This is the mail archive of the
ecos-devel@sourceware.org
mailing list for the eCos project.
Re: Question to 16x5x driver users
- From: Guennadi Liakhovetski <gl at dsa-ac dot de>
- To: Alexander Aganichev <aaganichev at gmail dot com>
- Cc: ecos-devel at ecos dot sourceware dot org
- Date: Tue, 19 Jun 2007 09:01:39 +0200 (CEST)
- Subject: Re: Question to 16x5x driver users
- References: <c25335bc0706180611l36818bfbn77e052427f313a92@mail.gmail.com>
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