Embedded System/AVR

[AVR] GPIO (General Purpose Input Output)

goatlab 2022. 5. 24. 13:38
728x90
반응형
SMALL

GPIO (General Purpose Input Output)

 

- 범용으로 사용되는 입출력 포트로 설계자가 입력과 출력을 마음대로 선택할 수 있다.

- 출력으로 사용시, 0과 1의 출력 신호를 임의로 만들어줄 수 있는 구조를 가진다.

- 입력으로 사용할 때는 외부 인터럽트를 처리할 수 있도록 하는 기능이 있는 경우가 있다.

- 관련 레지스터는 크게 입출력 방향 전환 레지스터, 출력용 레지스터, 입력용 데이터 레지스터의 3가지가 필요하다.

- 내부적으로 pull-up 저항을 가지고 있는 경우가 많다.

- 마이크로컨트롤러에서는 대부분의 핀들을 GPIO로 설정하는 경우가 많고, 보통 다른 신호와 중복 (multiplexing)하여 사용한다.

 

ATmega128 입출력 포트

 

- 6개의 8비트 I/O포트 (PA, PB, PC, PD, PE, PF)와 1개의 5비트 I/O포트 (PG)로 구성된다 (총 53개 포트).

- 모든 포트 핀은 개별적으로 내부 풀업 저항을 사용할 수 있다.

- 모든 I/O핀은 VCC와 GND사이에 각각 다이오드를 접속하여 포트를 보호한다.

- Read-Modify-Write 기능으로 비트 단위의 포트 설정 가능하다.

 

1. DDRx (Data Direction Register)

 

- 각 포트에 대한 데이터 입출력 방향 지정용 레지스터이다.

- DDRA~DDRG 레지스터의 해당 비트에 ‘1을 쓰면 출력(default), ‘0’을 쓰면 입력으로 설정한다.

 

2. PORTx (Port Output Register)

 

- 데이터 출력 레지스터이다.

- 출력을 원하는 데이터값을 PORTx 레지스터에 쓰면 된다.

 

3. PINx (Port Input Register)

 

- 데이터 입력 레지스터이다.

- PINx 레지스터의 값을 읽으면 그것이 입력된 값이다.

 

4. SFIOR (Special Function IO Register) 

 

SFIOR의 비트2 (PUD: Pull-Up Disable)를 ‘1’로 세트하면 풀업 저항이 비활성화되고(기본 상태) ‘0’으로 하면 활성화된다.

728x90
반응형
LIST