Forum: Compiler & IDEs UART- weitere Fehlerquelle bei falschen Zeichen.


von John S. (student)


Lesenswert?

Hallo zusammen,

es gibt ja reichlich Fehlerquellern bei der UART Progammierung - aber 
eine besonders schön dähmliche habe ich mir geleistet:

Habe auf meinem gekauften Board DIISPLAY3000 nicht erkannt, dass der 
UART1 gar nicht am MAX232 angeschlossen ist (sondern der UART0).
Gibt einen wunderschönen Fehler:

Bei allen Baudraten ergeben sich reproduzierbar die falschen Zeichen 
d.h. die Kommunikation läuft schon (zumindestens vom Hyperterminal zum 
AVR, umgekehrt nicht, d.h. das Terminal zeigt nichts an).

Das liegt natürlich daran, dass der MAX232 nicht nur die Spannung von 
TTL auf +12V/-12V erhöht, sondern auch noch die Manchestercodierung auf 
das Signal aufbringt ...!

Schön, dass der AVR Eingang die 12 V verkraftet hat ...!

Dabei ein ganz besonders Lob an Peter Fleury: Seine Interrupt gesteuerte 
UART Lib mit Ringpuffer Verwaltung ist allerfeinste Sahne. Hat auf 
Anhieb gefunzt. Dabei habe ich das DISPLAY3000 als Scroll-Terminal für 
die übertragenen Datensequenzen / Telegramme benutzt - Super Tool zur 
Fehlerdiagnose.

Da lässt sich nun wirkllich schnell der Fehler eingrenzen.

Es liegt also nicht immer an den Fuses und Frequenzen.

Aber das ist ja schon ausreichend alles behandelt worden.

Weiterhin viel Erfolg bei der Fehlersuche.

Grüsse

von Peter D. (peda)


Lesenswert?

Ich vermute mal, Dein Kauderwelsch kann kein einziger verstehen.


Wenn Du die UARTs vertauschst, dann passiert garnichts, die liegen 
nämlich auf völlig verschiedenen Pins.

Oder hast Du sie mit den berühmten WLAN-Kabeln verbunden?

Daß ein MAX232 Manchester codieren kann, ist totaler Quatsch. Dazu müßte 
er ja den doppelten Baudratentakt zugeführt bekommen.

Wenn Du +/-10V auf den AVR bekommst, dann hast Du einfach nur Eingang 
mit Ausgang vertauscht.
Mach Dir nichts draus, ist mir auch schon mal passiert.
Kaputt gehen kann dabei kaum was, die Ladungspumpen sind ja nicht als 
Schweißtrafo ausgelegt.


Peter

von John S. (student)


Lesenswert?

Hallo,

Uuuppps, sorry, Peter hat natürlich Recht.
Ich habe mich früher beruflich mit der Digitalen Funkübertragung 
beschäftigt, wo zur Vermeidung von von Gleichanteilen in den Bitfolgen 
Manchestercodierung zum zwecke der Taktrückgewinnung auf der 
Luftschnittstelle zum Einsatz kommt.

Ohne über Baudraten nachzudenken habe ich gedacht, das würde auch bei 
der seriellen leitungsgebunden Kommunikation eingesetzt. Wie gewinnt man 
eigentlich hier die Taktung bei einer Folge von geichen Bits zurück ?

Der Rest simmt aber: Vergisst man auf AVR Seite den MAX232 an den 
Portausgang zu hängen, dann sind die gesendeten Bitfolgen für den 
Empfänger immer 1:1 invertiert. Dann kommt es zu der Fehlersymtpmatik, 
dass alle Zeichen reproduzierbar GLEICH falsch sind - unabhängig von der 
eingestellten Baudrate.

Dies ist ein guter Fehlerhinweis, dass Fuses und Frquenze stimmen, aber 
eben der MAX232 nicht zwischengeschaltet ist (wenn man vorher gepennnt 
hat).

Nix mehr und nix weniger wollte ich sagen. nachts sollte man besser 
schlafen!!!

Grüsse

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.