Si utilizo el UART de manera normal, parpadeo el LED
Si la tasa de datos no es un problema y solo estás tratando de lidiar con el parpadeo visible, podrías considerar enviar dos bytes en lugar de uno.
Es decir, en lugar de
transmitbyte(x)
Hacer
transmitbyte(lo(x));
transmitbyte(hi(x));
Donde lo(x) intercala los 4 bits inferiores con sus inversos, como Manchester. Así que los bits hgfedcba = > DdCcBbAa , donde A es inverso del bit a ; hi(x) toma hgfedcba = > %código%. Así obtendrá una transición cada poco tiempo. Si el receptor lo desea, puede verificar la consistencia de cada byte.
Si no tiene otra forma de permanecer sincronizado, envíe HhGgFfEe y lo(x)&0x7f .
Verá que si transmite de forma consecutiva en 8N1, teniendo en cuenta los bits de inicio y parada, tendrá el mismo número de 1s y 0s en la salida, uno de los principales beneficios de Manchester codificacion Además, tiene una transición garantizada dentro de dos bits.
0DdCcBbAa10HhGgFfEe1
O si usa el bit alto para decir qué mordisco es, entonces todavía tiene 1s y 0s iguales, y una transición garantizada dentro de tres bits.
00dCcBbAa101hGgFfEe1