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
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
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.
Damit wäre mir das erkennen der Ursache des Fehlers bestätigt. Dankeschön.
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.