If you need more reliable communications then you normally add a higher level protocol. That higher level protocol usually adds a header, which may have a sync byte, the total number of bytes in the packet and adding a CRC to each packet is also common.
And when you already have a CRC, which is much more reliable then parity is not much more then a waste of 10% of bandwidth.
Yep, Now since I've managed to send UART frames at given baud rates I was interested in (~115200 250000 500000 and probbaly I can even go 1000000 @ 16MHz AVr MPU) , by using custom AVR C (asm) library, now I'm going to make this asynchronous UART serial communication more reliable and bidirectional one wire
![Tweak :-/O](https://www.eevblog.com/forum/Smileys/default/smiliey_cal.gif.pagespeed.ce.yYMcAvxBJk.gif)
Idea is as simple as it is:
Add 10k pull up resistors on sender/receiver one wire sides, than change UART software that it will send at the begining of the transmission byte 0x55 (01010101 -> UART frame data in LSB order: 10101010 ) which can be used on receiver side for clock synchronization etc, than each bytes sequence can be finished with one or more MD5 check sum bytes depending on how many bytes were send.
Additionally sender when finishes transmision can release line by changing MPU output pin in high impenance and simply wait a few STOP bit eg. fo confirmation byte send back by receiver by using the same transmission line. eg. it can reply with 0xFF when everything is OK or do not reply at all, but send back eg. 0x00 when there were some errors in transmission to let sender know and can also send back message what was wrong - depending on defined protocol.
Pull up resistors on both sides will keep transmission line at high level in a similar way to I2C, but with a difference, that during transmission those pims will be changed again by sender in output mode to drive transmission line not only by connecting O/I pin to ground, but also to logic high, because of 10k rpull up esistors are too big for fast (eg. I2C) communication.
Btw, I mean one wire custom asynchronous UART serial communication between AVR MPUs which will share the same code, because of this of course will NOT work with classic UART frames implementations, but we should be able send/read UART frames to devices which support classic UART async serial communication at given baud rate
![Roll Eyes ::)](https://www.eevblog.com/forum/Smileys/default/rolleyes.gif.pagespeed.ce.XcUK202Yqt.gif)
![](https://www.eevblog.com/forum/projects/uart-asynchronous-communication-115200-spacing-121us-between-bytes-8n1/?action=dlattach;attach=1862008)