AVR > AVR 포트 입출력 설정 및 사용 방법

인기검색어 > 아두이노 센서 ATMEGA128

최신글 질문게시판 동영상강좌 가입하기

▼ BASIC4MCU 후원업체 신제품 정보 ▼

▲ BASIC4MCU 후원업체 신제품 정보 ▲

BASIC4MCU > AVR

포트 | AVR 포트 입출력 설정 및 사용 방법

페이지 정보

작성자 키트 작성일17-08-25 17:11 조회2,520회 댓글0건

본문

간단한 내용이지만 한번 더 적어봅니다.

 

AVR 포트의 레지스터

 

입력 레지스터 PINx

출력 레지스터 PORTx

방향설정 레지스터  DDRx

 

입력

char a;

a=PINx;

 

출력

char a;

PORTx=a;

 

입력으로 설정 후 출력?

DDRx을 0으로 해서 입력으로 설정 한 후에

PORTx=1을 출력하면 내부 풀업저항(30~50K)이 연결 됩니다.

 

출력으로 설정 후 입력?

DDRx을 1로 해서 출력으로 설정 한 후에

PORTx를 입력하면 이 전에 출력한 출력 레지스터 내용이 읽혀집니다.

 

리셋 후 초기조건

DDRx=0 입력

PORTx=0 풀업저항 사용 안함

 

 

128 경우 포트A~E까지는 비트 조작이 가능 합니다.

포트F는 입력은 되고 출력은 안됩니다.

포트G는 입출력 모두 안됩니다.

 

2560에서는 포트G까지 모두 지원 되고

포트 H, I등 몇개의 포트가 추가로 비트조작이 지원됩니다만

뒤쪽 몇개의 포트는 비트조작이 지원되지 않습니다.

 

이런 식으로 MCU가 새로운 버전이 나올 때마다 되고 안되는 것들이 섞여 있습니다.

타이머1과 타이머3이 16비트 레지스터로 읽고 쓰기가 지원 되기도 하고 안되기도 하는 것입니다.

128 경우는 타이머1은 16비트 읽고 쓰기가 지원 되고, 타이머3은 안됩니다,

타이머3은 8비트로 나눠서 처리 해줘야 합니다.

     OCR3AH=0; OCR3AL=0x10;
    OCR3BH=0; OCR3BL=0x0A;

8비트로 나누어서 쓰기를 할 때에는

상위바이트 부터 쓰고 하위 바이트를 나중에 씁니다.

 

16비트 레지스터를 8비트로 나누어서 읽을 때에는 그 반대입니다.

하위바이트를 읽고나서 상위바이트를 읽습니다. ( ADC 예제에서 많이 봤을 겁니다. )

 

128애서 ADC를 16비트로 한번에 읽을 수도 있습니다.

int adc_result;

adc_result=ADCW;

ADCW 는 ADCH와 ADCL이 합쳐진 16비트 레지스터입니다.

이것 또한 mcu에 따라서 될 수도 있고 에러가 날 수도 있습니다.

 

AVRStudio와 코드비젼은 ADCW지만 일부 컴파일러는 ADC로 표기 합니다.

댓글 : 0

조회수 : 2,520

등록된 댓글이 없습니다.

게시물 검색

AVR 목록

게시물 검색


Privacy Policy
MCU BASIC ⓒ 2017
PC버전