Forum: Mikrocontroller und Digitale Elektronik UART Kommunikation zwischen 2 ATMega32


von derheld (Gast)


Lesenswert?

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 
;)

von Hc Zimmerer (mizch) (Gast)


Lesenswert?

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.

von derheld (Gast)


Lesenswert?

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?

von Hc Z. (mizch)


Lesenswert?

Ja.

von derheld (Gast)


Lesenswert?

Gibt es eine einfache Möglichkeit die Nutzdaten so zu kodieren, dass ein 
sicheres Erkennen des Startbits möglich ist?

von derheld (Gast)


Lesenswert?

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?

von Hc Z. (mizch)


Lesenswert?

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.

von derheld (Gast)


Lesenswert?

Ok, alles klar. Vielen Dank!

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.