«   2024/12   »
1 2 3 4 5 6 7
8 9 10 11 12 13 14
15 16 17 18 19 20 21
22 23 24 25 26 27 28
29 30 31
Tags
more
Archives
Today
Total
관리 메뉴

ITGenerations

[avr]스위치 누름뗌 부정확한거 수정과정 본문

Univ/AVR atmega128

[avr]스위치 누름뗌 부정확한거 수정과정

ITGenerations 2017. 12. 8. 22:14

// 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



-----------------------------------------------------------

*/