ITGenerations
[avr]스위치 누름뗌 부정확한거 수정과정 본문
// source 8
// 스위치 누름뗌 부정확한거 수정과정
// 부정확함!!!
// 내부 풀업 설정
#include <avr/io.h>
#include <util/delay.h>
#define PUD 2
// 내부풀업설정
void msec_delay(int n);
unsigned char pattern[3]={0xFE, 0xFD, 0xFB};
int main()
{
int i=0;
DDRA=0xFF;
DDRD=0x00;
SFIOR &= ~(1<<PUD);
PORTD |= (0x01);
// 위 세줄이 내부 풀업 사용하겠다는 명령어
// PUD 기본값은 0이고
// 1<<pud는 pud 1이라는 의미고
// ~ &는 pud 1이 아니라는 의미 즉, 내부풀업 사용의미
// bit를 확실히 0으로 만들고
// | 는 or의 의미
// portd=0x01; 이라는 의미, 즉, 내부 풀업 활성화한다는 의미
while(1)
{
PORTA=pattern[i];
while(!(~PIND&0x01));
msec_delay(20);
if(++i==3) i=0;
PORTA=pattern[i];
while(~PIND&0x01);
msec_delay(20);
}
}
void msec_delay(int n)
{
for(; n>0; n--)
_delay_ms(1);
}
/*
------------------------설명 ------------------------------
Atmega128의 입출력 핀에는 내부풀업 저항이 있음
->PORTxn, PUD 비트를 설정하여 사용유무 결정
p.73~74
특수 IO 레지스터(Special Function IO Register): SFIOR
bit 2 - PUD:풀업 불능 (pull up Disable)
-> bit=0 이면 풀업 가능
-> bit=1 이면 풀업 불능
풀업저항/풀다운저항 각각 말 그대로 위로 아래로 당겨주는 저항.
위는 vcc
아래는 gnd
링크 참조 http://blog.naver.com/nkkh159/220509863314
-----------------------------------------------------------
*/
'Univ > AVR atmega128' 카테고리의 다른 글
[avr] 스위치 수정 과정, 스태틱함수 추가, 인터럽트 라이브러리 추가, 채터링 문제 (0) | 2017.12.08 |
---|---|
[avr]스위치 수정 과정, 스태틱함수 추가, 인터럽트 라이브러리 추가 (0) | 2017.12.08 |
[avr]switch를 이용해 패턴 변경 (0) | 2017.12.08 |
[avr] 도트매트릭스 A,B 각 줄에 순차적으로 실행 (0) | 2017.12.08 |
[avr] 도트매트릭스 순차적으로 깜빡이기 (0) | 2017.12.08 |