Hallo, folgendes Problem: Ich will 2 ATMega32 unidirektional miteinander über UART kommunizieren lassen (8N1 @ 4800Baud mit 16MHz Quarz). Das Senden des einen µC funktioniert bestens. Das Empfangen habe ich zu Testzwecken sowohl mit pollen als auch mit Interrupts gelöst, bei beiden Versionen tritt das identische Fehlerbild auf. Ich lege die Versorgungspannung an beide µCs gleichzeitig an, daraufhin werden aber nur Schrottdaten empfangen. Kappe ich nun die Datenverbindung zwischen den µCs und stelle sie wieder her, werden korrekte Daten empfangen (stabil und dauerhaft). Es passiert auch manchmal dass ich die Datenleitung mehrmals kappen muss, um eine stabile Datenübertragung zu erreichen. Hat jemand eine Idee was schiefläuft ? Kondensatoren an den Versorgungsspannungspins sind ausreichend vorhanden ;)
Sendet der eine µC dauerhaft (ohne Pause)? Falls ja: dann ist nicht garantiert, dass er an der richtigen Stelle aufsetzt. Je nach Inhalt kann er dauerhaft das falsche Bit als Startbit erkennen. Abhilfe: Irgendwo im Strom eine Pause von mindestens einer Zeichenlänge einfügen. Manchmal hilft es auch schon, mit 2 Stopbits zu senden.
Ja, der sendet bisher dauerhaft, ich habe gerade damit begonnen den Sender so umzuschreiben, dass er nur noch sendet wenn die zu übertragenden Daten sich geändert haben. Aber wenn beim Start sich die Daten mehrfach ändern (und das tun sie) kommt wieder ein langer pausenloser Datenstrom am Emfänger an, bis die erste Pause auftritt. Habe ich dann immer noch das Problem am Anfang, nur dass er sich dann irgendwann fängt?
Gibt es eine einfache Möglichkeit die Nutzdaten so zu kodieren, dass ein sicheres Erkennen des Startbits möglich ist?
Wenn ich anfangs eine dummy Übertragung starte, dann kurz warte, und dann erst mit meinen Nutzdaten anfange, sollte es klappen, oder hab ich da noch n Denkfehler drin?
Besser als eine Dummy-Übertragung ist gar keine Übertragung. Es reicht, wenn die Datenleitung für mindestens 1 Zeichenlänge idle ist. Dann wird das nächste Bit zuverlässig und richtig als Startbit erkannt.
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.