IO Port의 이해
Atmega128 내부에는 계산기의 두뇌와 같은 CPU(Central Processing Unit)이 존재하는데 이는 프로그래머가 작성한 프로그램을 수행하는 역할을 한다. Atmega128은 IO Port로 외부와 소통을 한다. 64개의 핀 중 11핀은 CPU가 동작할 수 있도록 전원, 클록, 리셋등에 연결하고 나머지 53개의 핀으로 외부와 소통한다. 이것이 IO 신호용 핀이다.
1. IO Port 개요
- 6개의 8비트 양방향 병렬 I/O 포트(PORTA~F)
- 1개의 5비트 양방향 병렬 I/O 포트(PORTG)
- 각 PORT별 3개 I/O 레지스터 영역
- DDR(Data Direct Register) : 해당 Pin(Port)을 입력 Rg의 입력으로 사용 할지, 출력 Port의 출력 Pin으로 사용 할지를 결정
- PORT(Data Register) : 데이터 출력 PORT
- PIN(Port Input Pins Register) : 입력 핀에 연결된 Input Port Rg
- DDR, PORT : 읽기/쓰기 가능, PIN : 읽기만 가능
2. IO Port 레지스터
DDRx 레지스터(Data Direction Register)
- 입출력의 방향설정을 하기 위한 레지스터
- DDRA~DDRG레지스터의 해당 비트에 ‘1을 쓰면 출력, ‘0’을 쓰면입력으로 설정
DDRA = 0x0f;
PORTx 레지스터(Data Register-PORTx)
- 데이터를 출력하기 위한 레지스터
- 출력을 원하는 데이터값을 PORTx 레지스터에 입력함
PORTA = 0xff;
- 데이터 입력용 레지스터
- PINx 레지스터에 해당하는 값을 읽으면 해당 핀의 값이 읽어짐