www.mikrocontroller.net

Forum: Mikrocontroller und Digitale Elektronik UART Kommunikation zwischen 2 ATMega32


Autor: derheld (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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 
;)

Autor: Hc Zimmerer (mizch) (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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.

Autor: derheld (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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?

Autor: Hc Zimmerer (mizch)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Ja.

Autor: derheld (Gast)
Datum:

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

Autor: derheld (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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?

Autor: Hc Zimmerer (mizch)
Datum:

Bewertung
0 lesenswert
nicht 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.

Autor: derheld (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Ok, alles klar. Vielen Dank!

Antwort schreiben

Die Angabe einer E-Mail-Adresse ist freiwillig. Wenn Sie automatisch per E-Mail über Antworten auf Ihren Beitrag informiert werden möchten, melden Sie sich bitte an.

Wichtige Regeln - erst lesen, dann posten!

  • Groß- und Kleinschreibung verwenden
  • Längeren Sourcecode nicht im Text einfügen, sondern als Dateianhang

Formatierung (mehr Informationen...)

  • [c]C-Code[/c]
  • [avrasm]AVR-Assembler-Code[/avrasm]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] - Link zu Artikel
  • Verweis auf anderen Beitrag einfügen: Rechtsklick auf Beitragstitel,
    "Adresse kopieren", und in den Text einfügen




Bild automatisch verkleinern, falls nötig
Bitte das JPG-Format nur für Fotos und Scans verwenden!
Zeichnungen und Screenshots im PNG- oder
GIF-Format hochladen. Siehe Bildformate.
Hinweis: der ursprüngliche Beitrag ist mehr als 6 Monate alt.
Bitte hier nur auf die ursprüngliche Frage antworten,
für neue Fragen einen neuen Beitrag erstellen.

Mit dem Abschicken bestätigst du, die Nutzungsbedingungen anzuerkennen.