1.4 KiB
1.4 KiB
Digital INPUT OUTPUT
There are three registers which initialize Digital INPUT and DIGITAL OUTPUT port:
- DDRB
- DDRC
- DDRD
Each pin is 1 bit of DDRx.
Here P means Port
Example: PC → Port C
Microcontroller pins are grouped as:
- PORTB → PB0–PB7
- PORTC → PC0–PC6
- PORTD → PD0–PD7
Important
-
In Arduino Uno, PC7 does not exist
→ PORTC is only PC0–PC6 -
PB6 and PB7 are used by 16MHz crystal
→ DO NOT USE -
PC6 is RESET pin
→ DO NOT USE as GPIO
→ can reset system → can be used but condition is if reset is disabled. -
PD0 and PD1 are Serial pins (RX TX)
→ used for USB upload and debugging
→ DO NOT USE during development
SPI (just remember)
- PB3 → MOSI
- PB4 → MISO
- PB5 → SCK
→ used for SPI and programming
→ can be used as GPIO but avoid if SPI used
→ PB5 has onboard LED
I2C (just remember)
- PC4 → SDA
- PC5 → SCL
→ used for I2C communication
Safe pins for Digital I/O
- PORTD → PD2–PD7
- PORTB → PB0–PB2 (PB3–PB5 usable but SPI)
- PORTC → PC0–PC5 (PC4 PC5 shared with I2C)
Use with care
- PB3 PB4 PB5 → SPI pins
- PC4 PC5 → I2C pins
Final
Best pins to use:
PD2–PD7
PB0–PB2
PC0–PC5
Avoid:
PB6 PB7 → crystal
PC6 → reset
PD0 PD1 → serial