Hallo,
das Problem ist wohl eher, dass hier nicht wirklich synchronisiert wird.
Die beiden Mikrocontroller starten sicher nicht gleichzeitig in die int main und schon kann es passieren, dass der Empfänger z.B. ein Byte hinterher "hinkt".
Auch bei dieser Konstruktion
hab ich so meine Bedenken. Ja, die globale Variable usart_empfang wird in der ISR gesetzt.Code:uint8_t HByte = usart_empfang; uint8_t LByte = usart_empfang;
Aber wie wird sichergestellt, dass genau in dem passenden Moment auch das nächste Byte vom Sender kommt?
Es kann hier passieren, dass zweimal das gleiche Byte abgespeichert wird, weil einfach das Timing nicht hinhaut.
Überlege gerade, ob man usart_empfang nicht sogar als volatile deklarieren sollte...
Probiere es mal mit Byte pollen an dieser Stelle.
Und überlege dir was zur Synchronisation.
Wenn der Empfänger "irgendwann" einliest, kann er am Datenstrom nicht erkennen, wo die most und least significant bytes sind.
Aber keine Panik, das bekommst du sicher hin. So wild ist das nicht
Grüße,
Bernhard
Lesezeichen