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

TODAY1,120 TOTAL2,933,406
사이트 이용안내
Login▼/회원가입
최신글보기 질문게시판 기술자료 동영상강좌

아두이노 센서 ATMEGA128 PWM LED 초음파 AVR 블루투스 LCD UART 모터 적외선


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

페이지 정보

작성자 키트 작성일2017-08-25 17:11 조회3,137회 댓글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

조회수 3,137

등록된 댓글이 없습니다.

AVRHOME > AVR > 전체 목록

게시물 검색

2022년 1월 2월 3월 4월 5월 6월 7월 8월 9월 10월 11월 12월
2021년 1월 2월 3월 4월 5월 6월 7월 8월 9월 10월 11월 12월
2020년 1월 2월 3월 4월 5월 6월 7월 8월 9월 10월 11월 12월
2019년 1월 2월 3월 4월 5월 6월 7월 8월 9월 10월 11월 12월
2018년 1월 2월 3월 4월 5월 6월 7월 8월 9월 10월 11월 12월
Privacy Policy
MCU BASIC ⓒ 2020
모바일버전으로보기