hmm .. Ich hatte dort zeitweise das Problem, das ich den Bustreiber zu früh (noch während des sendens) in den Empfangsmodus versetzt hatte.
Gelöst hab ich das mittels diverser Messungen & nem saubererem Code in Bezug auf TX.
Druckbare Version
hmm .. Ich hatte dort zeitweise das Problem, das ich den Bustreiber zu früh (noch während des sendens) in den Empfangsmodus versetzt hatte.
Gelöst hab ich das mittels diverser Messungen & nem saubererem Code in Bezug auf TX.
Hanni hast du nicht den URXC benutzt um einen Interrupt zu starten und dann die entsprechenden Daten auszulesen ? Mittels einer Zählervariablen die immer wenn der Interrupt ausgelöst wird hochgezählt wird und dazu benutzt wird ein Array zu füllen. Diese Zählervariable steht auf Null und zählt bis 41.
Danach wird sie zurückgesetzt und das Spiel beginnt erneut. Vielleicht stimmt die Zählervariable nicht mit den Empfangsdaten überein, wenn ich mitten im Sendedatenfluss meinen Emfänger einschalte. Ich überprüfe das noch !
Melde mich wieder !!!
es gibt Flags in den AVRs, eines davon zeigt ob der
Senderpuffer leer, also ale Zeichen raus sind.
do
loop until Ucsra.txc=1 (prüfen auf leeren Sendepuffer)
Hallo Leute es Klaaaaaapt !!!!!!
Es lag an der Synchronisation. Ich übertrage 41 Bytes hintereinander.
Damit Byte 1 im Sender auch mit Byte 1 im Empfänager übereinstimmt habe ich im Empfänger einen Zähler, der mir jedes empfangene Byte in der richtigen Variable ablegt. Diesen Zähler habe ich immer von Null bis 41 zählen lassen und dann wieder zurückgestellt. Das klappt aber nur, wenn ich beide Atmegas gleichzeitig einschalte. Würde Atmega Nr 1 im Sendevorgang sein und ich dann Atmega Nr2 einschalte, dann kommt er durcheinander.
Also habe ich den Carridge Return ( Zezimal 10 ) der vom Sender immer dann gesendet wird, wenn die 41 Bytes gesendet wurden, verwendet.
Den nehme ich zur Synchronisation meines Zählers und dann kann ich einschalten wann ich will es funktioniert immer !!!!
=D> =D> =D>
Vielen Dank an alle dir mir dabei geholfen haben! Manchmal braucht man nur einen Denkanstoss.
Bis zum nächsten Mal Tschüß O:)