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!
hast du schonmal A --> B alleine probiert, ohne vorher B --> A zu machen?
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
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
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.