Hallo, ich möchte gerne einen definierten Pegel für meine USART Schnittstelle festlegen. Ich benutze einen Pegelwandler zur Übertragung der Daten zum PC. Wenn Tx,Rx vom Wandler getrennt sind, werden wahllos Interrupt ausgelöst. Ist es möglich dieses Verhalten durch das Schalten des internen Pullups als Eingang zu unterbinden. Im Datenblatt zum Atmega162 steht, dass wenn bei der USART der Receiver aktiviert wird, auch der dazugehörige Rx-Pin automatisch als Eingang konfiguriert wird. Heißt das ich muss nur noch PORTDx (beim atmega162 PORTD2) setzen um den Pullup zu aktivieren? Leider funktioniert das nicht. Oder was verstehe ich da falsch? Gruß, guitero
Du erwähnst einen Pegelwandler. Dann wird dessen Ausgang mit dem Rx-Pin verbunden sein. Diesem Ausgang wird es egal sein, ob da noch ein paar 10k gegen Vcc dran hängen oder nicht. Ergebnis: Dein PullUp ist wirkungslos. Wenn Du Maßnahmen ergreifst, dann am sind sie nur am Eingang des Pegelwandlers sinnvoll.
> Du erwähnst einen Pegelwandler. Und auch: >> Wenn Tx,Rx vom Wandler getrennt sind...
Hallo, > Du erwähnst einen Pegelwandler. Dann wird dessen Ausgang mit dem Rx-Pin > verbunden sein. Mein Post bezieht sich auf den Fall, wenn ich TxD und RxD vom Pegelwandler abziehe und kein definierter Zustand herrscht. An diesem Punkt möchte ich ansetzen, um ungewollte Interrupts zu vermeiden. Gruß, sharth
Rainer B. schrieb: > Hallo, > >> Du erwähnst einen Pegelwandler. Dann wird dessen Ausgang mit dem Rx-Pin >> verbunden sein. > > Mein Post bezieht sich auf den Fall, wenn ich TxD und RxD vom > Pegelwandler abziehe und kein definierter Zustand herrscht. An diesem > Punkt möchte ich ansetzen, um ungewollte Interrupts zu vermeiden. Die Frage ist, ob die USART Hardware im Mega, da überhaupt noch einen Pullup zuschalten lässt. Im Zweifeslfall würde ich es mal mit einem externen Pullup probieren.
Hallo, > Die Frage ist, ob die USART Hardware im Mega, da überhaupt noch einen > Pullup zuschalten lässt. Ich zitiere mal aus dem Handbuch. Leider verstehe ich nicht ganz genau was mir das sagen soll: RXD0 – Port D, Bit 0 RXD0, Receive Data (Data input pin for USART0). When the USART0 Receiver is enabled this pin is configured as an input regardless of the value of DDD0. When USART0 forces this pin to be an input, the pull-up can still be controlled by the PORTD0 bit. Gruß, guitero
Rainer B. schrieb: > Hallo, > >> Die Frage ist, ob die USART Hardware im Mega, da überhaupt noch einen >> Pullup zuschalten lässt. > > Ich zitiere mal aus dem Handbuch. Meine Hochachtung. Endlich mal wer, der im Handbuch nachliest. > Leider verstehe ich nicht ganz genau > was mir das sagen soll: Genau das. Verwendung des Pullup ist möglich
Hallo Rainer,
> Genau das. Verwendung des Pullup ist möglich
das war mir schon klar. Nur nicht wie das ganze funktionieren soll.
PORTD0 soll für den Pullup zuständig sein. Also hab ich den auf 1
gesetzt.
Und das ganze als Eingang:
1 | sbi PORTD, 0 |
2 | sbi DDRD, 0 |
Wo ist mein Fehler dabei? Bzw. was fehlt noch? Der Interrupt wird auf diese Weise immer noch wahllos ausgelöst. Gruß, guitero
Rainer B. schrieb:
Machst du das bevor oder nachdem du den UART aktiviert hast? Ich würde
mal schätzen, dass die UART Hardware den Pullup per Default abschaltet
und du den Pullup danach noch einmal aktivieren musst.
Hallo, Rainer B. schrieb: > sbi DDRD, 0 das schaltet PortD0 aber auf Ausgang... Gruß aus Berlin Michael
Michael U. schrieb: > Hallo, > > Rainer B. schrieb: > >> sbi DDRD, 0 > > das schaltet PortD0 aber auf Ausgang... Er hat Glück, dass sich die UART Hardware das sowieso zurecht biegt, wie sies braucht :-)
Lothar Miller schrieb: >> Du erwähnst einen Pegelwandler. > Und auch: >>> Wenn Tx,Rx vom Wandler getrennt sind... Es ist durchaus nicht eindeutig, auf welcher Seite des Wandlers Rx und Tx getrennt sind. Ich nahm die Seite an, auf der es zum PC weitergeht. Das nur der Vollständigkeit halber.
Hallo, > Machst du das bevor oder nachdem du den UART aktiviert hast? Ich stelle den Pullup ein,nachdem ich die UART aktiviert habe. >das schaltet PortD0 aber auf Ausgang... Ja, das stimmt. Hatte beides ausprobiert und leider funktioniert beides nicht. Dann sollte folgender Befehl ja eigentlich schon ausreichen: sbi PORTD, 0 Wahrscheinlich mache ich irgendetwas grundlegendes falsch. Aber danke für eure Hilfe! Gruß, guitero
Rainer B. schrieb: > Wahrscheinlich mache ich irgendetwas grundlegendes falsch. Das Grundlegendste, was du auf jeden Fall falsch machst: Du lässt uns im Nebel stochern indem du nicht genug Code postest.
> Ich stelle den Pullup ein,nachdem ich die UART aktiviert habe.
Wenn ich den PORTD0 für den Pullup zuerst setze und dann die UART
initialisiere funktioniert es. Hätte allerdings gedacht, dass es
umgekehrt sein müsste. Werde das nochmal weiter testen! Vielleicht war
es nur Zufall. Falls jemand eine dafür Erklärung hat, immer her damit!
Vielen Dank für eure Hilfe!
Gruß,
guitero
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.