Hallo, ich programmieren zur Zeit einen XMEGA256A3BU und möchte über eine USART. Senden geht auch wunderbar und auf dem Oszi sehe ich die TX-line auch klar zwischen LOW und HIGH wandern. Nur das Empfangen klappt gar nicht. Auf dem Oszi ist auch zu sehen, dass der Pegel nicht auf LOW geht sondern nur 0,2V unter HIGH bleibt. Verbunden sind die PINS direkt mit einem zweiten IC. Pull-Up oder Down bringen keine Veränderung. Gibt es Ideen was eventuell falsch läuft?
Rx ist ja ein beim µC der Eingang. Also frage dich, wo soll das SIgnal herkommen und funktioniert dieser Teil der Schaltung? Für alles Weitere solltest du wenigestens den Schaltplan zeigen, besser noch zusätzlich ein klares Foto vom Aufbau.
Peter schrieb: > Verbunden sind die PINS direkt mit einem zweiten IC. ich komm nicht dahinter, was damit gemeint ist.
Es sind zwei MCU's mit TX->RX und RX->TX verbunden und beide Leitungen haben Durchgang. Senden von MCU1 zu MCU2 klappt super aber von MCU2 zu MCU1 nicht. Das Signal auf dieser Datenleitung geht auch nicht komplett auf LOW-Pegel wenn Daten gesendet werden. So besser?
Peter schrieb: > Es sind zwei MCU's mit TX->RX und RX->TX verbunden und beide Leitungen > haben Durchgang. GND solltest du auch verbinden.
So ein ähnliches Problem hatte ich bei gleichen Controller. So weit ich noch weiß, war da was faul mir den Interrupt. Hast du Interrupt Level frei geschälten?(alle drei) Und senden /empfangen Interrupt freigrschalte? Ich glaube ich hatte damals nach den Senden, den Empfangsinterrupt freigeschaltet und nach den Empfang anderes Rum.
ich fasse zusammen: Peter schrieb: > einen XMEGA256A3BU > ... > Es sind zwei MCU's > ... > RX-TX TX-RX verbunden > ... > GND ist verbunden Peter schrieb: > So besser? was denkst du? Ich weiß, es ist ein wenig Aufwand, aber wenn du ernsthaft hier Hilfe erwartest, dann wirst du um folgendes nicht rumkommen: Stefan U. schrieb: > Für alles Weitere solltest du wenigestens den Schaltplan zeigen, besser > noch zusätzlich ein klares Foto vom Aufbau.
Interrupt verwende ich noch gar nicht. Ich habe das Programm soweit abgespeckt, dass ich einfach warte, bis RXCIF gesetzt wird und dann frage ich die Daten ab. Nur das passiert nie.
Wenn ich mich noch recht erinnere, könnte ich auch nichts empfangen weil der Sendeinterrupt freigeschalten war. Habe ich das entsprechende Register überschrieben, mit Empfangsinterrupt dann gibt empfangen. Ist aber schon eine Weile her.
Hast du ein logicanalyser oder ein oszi? Häng das doch mal an die Leitung und schau ob sich da überhaupt was bewegt. Wenn nicht überprüfe die Senderoutine. Gruß J
oh schrieb: > Hast du ein logicanalyser oder ein oszi? Oszi hat er (hat er schon geschrieben) und er hat auch schon das Signal beschrieben (bleibt auf High und bewegt sich nur minimal). Also bleiben nur 3 Möglichkeiten: 1. der sendende Controller sendet nicht richtig, 2. der empfangende Controller klemmt die Rx-Leitung auf high, 3. irgendwo in der Verbindung dazwischen ist eine Unterbrechung oder ein Kurzschluss. Da der TO zwar über Werkzeug (= Messmittel Oszi) verfügt, ganz offensichtlich aber zur systematischen Fehlersuche nicht soweit damit umgehen kann, um den Fehler wenigstens eindeutig auf Sender oder Empfängerhardware zu lokalisieren, und von seinem Aufbau auch keine Details preisgibt, wird das wohl so nix...
:
Bearbeitet durch User
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.