Hallo,
ich versuche mich gerade bei den Xmega-CPUs von Atmel einzuarbeiten und
habe mir nun ein kleines Board gemacht, bei dem die vielen UARTs zum
Einsatz kommen sollen. Grundsätzlich werden die Zeichen empfangen,
allerdings kommt es in Sendeabschnitten sehr schnell zu Glitches bzw.
Synchronisationsverlusten.
Verwendet wird ein AtXmega64A3 mit dem angehängten Quellcode. Die CPU
läuft mit dem internen 32MHz-Oszillator. Da ich am Anfang die Baudrate
im Verdacht hatte, habe ich mir auf einem der UARTs 0xAA senden lassen,
die Bitzeiten gemessen und die Registerwerte für BSEL (sowohl für 115200
als auch 9600 Baud) angepasst.
Der Quellcode ansich lauscht auf USARTC1 mit 9600 Baud und gibt jedes
empfangene Zeichen auf USARTD1 (115200 Baud) wieder aus.
die PNG ist ein Auszug vom Logic Analyzer. Unten ist das Eingangssignal,
oben das Ausgangssignal. Nach dem dritten noch korrekt empfangenen Byte
"rastet" der UART reproduzierbar aus und empfängt Mist.
Die Quelle des Eingangssignals ist eine Solaranlage, die ich in der
konkreten Anwendung auslesen möchte. Deshalb kann ich am Timing
(speziell den Pausen zwischen den Bytes) leider nichts ändern.
Mit dem Oszi habe ich bereits nachgemessen. Sowohl Pegel als auch
Flanken sind sind sehr sauber - an der Signalintegrität sollte es also
nicht liegen...
Hat jemand von euch eine Idee oder einen Tipp, woher der Glitch kommen
kann und/oder wie man ihn beseitigen kann?
Viele Grüße & vielen Dank
Chris