오늘 설명할 것은 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 즉 ●●○○○●●○ 로 검게 칠해진 부분에서 전압의 입력을 감지고 판별 할수 있다.
'임베디드 > avr study' 카테고리의 다른 글
pullup, pulldown (0) | 2020.10.08 |
---|---|
avr_study(2020/09/28)_폰노이만, 하버드 구조 비교 (0) | 2020.09.28 |
AVR-STUDY 2일차 (LED ON/OFF ) (0) | 2019.12.08 |
avr-study 1일차 (atmel studio 7 설치 및 실행 테스트) (0) | 2019.12.08 |