Ausgang high => Eingang mit Pullup?

Gast #181827
Lesenswert?
• ▲
▼
Hallo,
wenn man an einem Port einen Pin als Augang konfiguriert und ihn high
setzt, dannach aber den Pin als Eingang konfiguriert, ist dann der
interne Pullupwiderstand gesetzt?
Also als kurzer Code:
DDRB |= _BV(1);
PORTB |= _BV(1);
DDRB &= ~_BV(1);

Ginge das ganze auch umgekehrt? Also ein Eingang mit internem Pullup
ergibt einen Ausgang der gleich nach dem setzen als Ausgang high ist.

Wenn das so stimmt wäre ein sehr komisches Problem an dem ich zZ hänge
geklärt.

Gruß Jemand
Gast #181829
Lesenswert?
• ▲
▼
Hi, "Jemand",

was Du beschreibst, das erinnert mich an den PCF8574.

Die AVR's sind da aufwendiger aufgebaut:
1. Das PORTBit (wie PORTB) bestimmt den Wert des auszugebenden Bits,
2. Das DataDirectionBit (wie DDRB) bestimmt: "H": Ausgang pusht and
pullt, also kräftig, also Kurzschlußgefahr in beiden Richtungen, "L":
Ausgang wie Open Collector.
3. Das DataInBit (wie PINB) liest den Zustand des Pins, egal, ob der
Pin als Ein- oder Ausgang geschaltet ist. Mit PORTB = 0xff, DDRB = 0x00
und x = PINB hast Du in X abgespeichert, was an den
Open-Collector-Ausgängen wirklich anliegt.

Ciao
Wolfgang
Gast #181830
Lesenswert?
• ▲
▼
Ich weiss nicht welchen Kontroller du verwendest, aber RTFM. Bei einem
Mega8 siehe Datenblatt Seite 51.
Switching between input with pull-up and output low generates the same
problem. The user must use either the tri-state ({DDxn, PORTxn} = 0b00)
or the output high state
({DDxn, PORTxn} = 0b11) as an intermediate step.

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