[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
Re: [avr-chat] UART half-duplex link, ignoring echo : how best to imple
Re: [avr-chat] UART half-duplex link, ignoring echo : how best to implement it ?
Tue, 10 Feb 2009 07:40:41 -0800
> I am having to communicate with a serial device on a half-duplex link.
> I am in the middle of implemeting the protocol to chat with said device,
> and have reached the point where I have to choose the best
> way to ignore the echo that gets back to me every time I send something
> trough the UART. My answer is: I don't know !
> I do have a few ideas of course, listed below, but I don't know which
> one actually would work best, would the most reliable, in the real
> world, so I am asking the pros who know this (I feel, very classical)
> problem inside out, to share their experience ! :-) Maybe there is a
> fourth option I have not even thought of ?
> The options I thought of:
> #1 Disabling the RXD interrupt just before sending data, and re-enable
> it as soon as the last byte has been fully sent out.
> Might have to flush the receive buffer too, since it will contain the
> last byte sent, which I want to ignore.
> #2 Same as above but disable the UART Receiver altogether. Shouldn't
> require to flush the RX buffer since it was not active while sending.
> But when the Receiver will be re-enabled, will it do so "cleanly", or
> is there a chance the next byte I receive might be mis-read, this makes
> me feel uncomfortable so I prefer option #1
I've done this before with the bioloid bus, which transmits at 1
MegaBuad and has the external Rx hardwired to Tx. You can see my code
<http://websvn.hylands.org/> Click on Projects, common, avr, bioloid-uart.c
If the CFG_BLD_UART0_RCV_TX option is set to 0, then the Receiver is
disabled, as well as the interrupt.
It seems to work well and has been tested on ATMeag8, 168, and 128.
Shuswap, BC, Canada