3 toggling the pin, 4 switching between input and output, 5 reading the pin value – Rainbow Electronics ATmega128RFA1 User Manual
Page 188: Atmega128rfa1

188
8266A-MCU Wireless-12/09
ATmega128RFA1
14.2.3 Toggling the Pin
Writing a logic one to PINxn toggles the value of PORTxn, independent on the value of
DDRxn. Note that the SBI instruction can be used to toggle one single bit in a port.
14.2.4 Switching Between Input and Output
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 MCUCR 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.
The following table summarizes the control signals for the pin value.
Table 14-1. Port Pin Configurations
D
D
x
n
P
O
R
T
x
n
P
U
D
(i
n
M
C
U
C
R
)
I/O
Pull-up
Comment
0
0
X
Input
No
Tri-state (Hi-Z)
0
1
0
Input
Yes
Pxn will source current if ext. pulled low.
0
1
1
Input
No
Tri-state (Hi-Z)
1
0
X
Output
No
Output Low (Sink)
1
1
X
Output
No
Output High (Source)
14.2.5 Reading the Pin Value
Independent of the setting of Data Direction bit DDxn, the port pin can be read through
the PINxn Register bit. As shown in
, the PINxn Register bit
and the preceding latch constitute a synchronizer. This is needed to avoid meta-stability
if the physical pin changes value near the edge of the internal clock, but it also
introduces a delay.
synchronization when reading an externally applied pin value. The maximum and
minimum propagation delays are denoted t
PD,MAX
and t
PD,MIN
respectively.