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