Hallo Micha,
über das DDR Register kannst du jeden Pin beliebig hin und herschalten.
Aufpassen musst du dabei höchstens auf den Zustand des Ports beim Umschalten. Wenn du von Eingang auf Ausgang umschaltest, wird ein evtl. eingeschalteter PullUp ausgeschaltet.
Mega8, Seite 52:
When switching between tri-state ({DDxn, PORTxn} = 0b00) and output high ({DDxn, PORTxn} = 0b11), an intermediate state with either pull-up enabled ({DDxn, PORTxn} = 0b01) or output low ({DDxn, PORTxn} = 0b10) must occur. Normally, the pull-up enabled state is fully acceptable, as a high-impedant environment will not notice the difference between a strong high driver and a pull-up. If this is not the case, the PUD bit in the SFIOR Register can be set to disable all pull-ups in all ports.
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.
Lesezeichen