Forum: Mikrocontroller und Digitale Elektronik Atmega 8 , UART Problem


von Dietrich Arndt (Gast)


Lesenswert?

Hallo Freunde,

habe ein Problem und kann es nicht lösen, vielleicht kann jemand
helfen...
Und zwar Habe ich zwei Atmega 8, die über UART miteinander
kommunizieren. Ist Nur ab und zu eine Ascizeichen von "0" bis "9"
von einer Richtung in eine andere und umgekehrt übertraggen. Beide uC
empfangen per Interrupt. Also in der der UART_ISR einfach UDR-Register
auslesen und und in eien Variable reinschreiben. Funktioniert auch
alles ohne Probleme, von jeder Richtung zu senden und zu empfangen..
Nur in dem Fall wenn ich einmal von B nach A gesendet habe,
funktioniert es in die andere Richtung nicht..

Also:

start
A -->  B     klappt
A -->  B     klappt
B -->  A     klappt
A -->  B     klappt nicht!
B -->  A     klappt
A -->  B     klappt nicht!

reset


Woran kann sowas liegen?
Muss ich den UDR-Register irgendwie löschen , oder oder oder?

Danke voraus!

von Fabian (Gast)


Lesenswert?

hast du schonmal A --> B alleine probiert, ohne vorher B --> A zu
machen?

von Dietrich Arndt (Gast)


Lesenswert?

ja , es funzt ohne probleme! Siehe hier:


start
A -->  B     klappt
A -->  B     klappt
B -->  A     klappt
A -->  B     klappt nicht!
B -->  A     klappt
A -->  B     klappt nicht!

reset

von Stefan (Gast)


Lesenswert?

Sendet A nicht oder empfängt B nicht? Läuft auf beiden µC das gleiche
Programm oder musst du zwei Programme debuggen?

Das UDR Register wird beim Auslesen (Empfänger) automatisch gelöscht.
Das ist wichtig zu wissen, damit man nicht versucht zuerst
reinzuspitzen ob was da ist und dann nochmal um den Wert zu holen. Das
Reinspitzen macht man über ein Bit in einem anderen Register.

Beim Sender musst du vor dem Beschreiben solange warten bis es frei
ist. Also auch vorher an einem best. Bit nachsehen, ob alle Bits vom
vorherigen Sendebyte schon auf die Reise gegangen sind.

Die Beispiele im Handbuch (ATmega128, beim kleinen Bruder wird es
ähnlich sein) sind rel. gut vertändlich.

Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.