89 lines
1.4 KiB
Markdown
89 lines
1.4 KiB
Markdown
# Digital INPUT OUTPUT
|
||
|
||
There are three registers which initialize Digital INPUT and DIGITAL OUTPUT port:
|
||
|
||
1. DDRB
|
||
2. DDRC
|
||
3. DDRD
|
||
|
||
Each pin is 1 bit of DDRx.
|
||
|
||
Here P means Port
|
||
Example: PC → Port C
|
||
|
||
Microcontroller pins are grouped as:
|
||
|
||
1. PORTB → PB0–PB7
|
||
2. PORTC → PC0–PC6
|
||
3. 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 |