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
Hallo nochmal, habe nun die Schaltung nochmal durchgemessen und herausgefunden, dass meine Analogschaltung zum "Auffrischen" des Datensignals die Flanken verschiebt. Daran wird sich höchstwahrscheinlich das UART-Modul verschlucken. Viele Grüße Chris
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.