Schön wäre es, wenn du mal die Empfangsfunktion hier zeigen könntest. Ich nehme an, da liegt der Hase im Pfeffer.

Beim Empfang weiß deine Funktion sicher nicht, wann das erste oder zweite Byte kommt. Du brauchst also eine Synchronisation. Ansonsten empfängt dein Empfänger vielleicht zuerst ein zweites Byte und dann das erste vom nächsten Wert usw..

Zu deiner 2. Variante kann ich nur soviel sagen, dass deine WriteUSART() Funktion vermutlich nur jeweils ein Byte sendet und deshalb ein cast von 16bit auf 8bit gemacht wird.

sast