임베디드/avr study

ddrx, pinx, portx (2020/10/04)

박재완 2020. 10. 4. 17:47
728x90
반응형

오늘 설명할 것은 ddrx , pinx, portx 이 3가지의 레지스터 이다.

 

 

atmega 데이터 시트를 보면 다양한 핀을 가지고 있고 이들을 주로 gpio라고 부른다. 기본적으로 io의 기능을 가지고 있기 때문에 해당 핀들을 디지털 입력 또는 디지털 출력으로 사용이 가능하다. 즉 led를 켜고 끄거나 스위치의 입력을 감지하는 핀으로 사용이 가능하다. 이러한 기능이 동작할 수 있도록 프로그램이 짜여 있다. 오늘은 그 레지스터에 대해서 적어 볼까 한다.

DDR PORT PIN이 매우 기초적인 레지스터인지라 해당 사용법을 안다면 타이머 세팅이라던지 다른 레지스터 선언에서 세팅에 도움이 된다.

레지스트리의 설정 방법은 아래와 같다.

* 기본 셋팅 방법!

 -> (레지스터명) = 0b00000000;

 -> 먼저 원하는 기능의 레지스터를 적은다음 뒤에 레지스터 셋팅을 해주면 된다.

 -> 각 포트단위 셋팅은 0b(7번핀)....(0번핀) 셋팅이다. =>0xFF = 0b11111111 / 0xC6 = 0b11000110

DDRX

DDR 은 간단하게 설명하자면 해당 선언 포트의 입출력 방향을 설정할수 있다. 기본적으로 해당 포트를 출력으로 사용할지 입력으로 사용할지를 결정하는 것이다.

여기서 0은 입력 1은 출력으로 사용한다는 의미를 가지고 있다.

예시 DDRA =0xC6 or 0b11000110 즉 portA의 0 ~ 7번 핀들을 각각 하나나 설정이 가능하다.

 

PORTX

PORT는 DDR에서 선언된 출력 핀들에서 출력을 결정하는 레지스터이다.

여기서 0은 LOW 0V 1은 HIGH 5V 출력으로 사용한다는 의미를 가지고 있다.

예시 PORTA =0xC6 or 0b11000110 즉 ●●○○○●●○ 로 LED를 이런식으로 출력 시킨다는 의미를 가지고 있다.

 

PINX

PIN은 DDR에서 입력으로 선언된 핀들에게 입력을 부여하는 레지스터이다.

여기서 0은 NOT INPUT 1은 INPUT MODE  로 생각하면 편하다.

예시 PINA =0xC6 or 0b11000110 즉 ●●○○○●●○ 로 검게 칠해진 부분에서 전압의 입력을 감지고 판별 할수 있다.

 

728x90
반응형