AtMega - Pullup aktivieren

OP #1679845
Lesenswert?

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
#1679852
Lesenswert?

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.
OP #1679863
Lesenswert?

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
#1679865
Lesenswert?

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.
OP #1679889
Lesenswert?

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
OP #1679900
Lesenswert?

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
OP #1680022
Lesenswert?

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
OP #1680041
Lesenswert?

> 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

Antwort schreiben

Bitte melde dich an, um einen Beitrag zu schreiben.

oder

Mit Google-Account einloggen

Die Registrierung ist kostenlos und dauert nur eine Minute.

Jetzt registrieren