[En-Nut-Discussion] Bug in half duplex mode
    Henrik Maier 
    hmlists at focus-sw.com
       
    Mon Aug 28 02:25:19 CEST 2006
    
    
  
Thank you for publishing your findings. I have a few questions though.
Andrej Taran wrote:
> static void AvrUsartTxStart(void)
> {
> //#ifdef UART_HDX_BIT
> //    if (hdx_control) {
> //        /* Enable half duplex transmitter. */
> //      UART_HDX_TX(UART_HDX_PORT, UART_HDX_BIT);
> //    }
> //#endif
>     /* Enable transmit interrupts. */
>     sbi(UCSRnB, UDRIE);
I would expect this could stay as it is. Can't see anything wrong with 
this. If there is a reason to move the half-duplex control to 
AvrUsartTxEmpty, can you please explain?
> 2. And add control of UART_HDX_BIT in AvrUsartTxEmpty:
> 
> ...
> #ifdef UART_HDX_BIT
>         if (hdx_control) {
>           /* Enable half duplex transmitter. */
>           UART_HDX_TX(UART_HDX_PORT, UART_HDX_BIT);
>           sbi(UCSRnA, TXC);  /* clear TXC bit, it is very important */
>         }
> #endif
>         /*
>          * Start transmission of the next character.
>          */
>         outb(UDRn, *cp);
> 
> ...
In  normal situations TXC is cleared by it's interrupt handler. Why do 
does it need to be cleared here as well?
Henrik
http://www.proconx.com
    
    
More information about the En-Nut-Discussion
mailing list