«   2025/03   »
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:59

// source 11

// 스위치 수정 과정, 스태틱함수 추가, 인터럽트 라이브러리 추가

//불완전한 코드= 채터링 문제가여전히 존재

// 딜레이 함수를 이용하여 채터링 문제 해결하려했으나  


#include <avr/io.h>

#include <util/delay.h>

#include <avr/interrupt.h>

#define DEBOUNCING_DELAY 20

void msec_delay(int n);

static unsigned char pattern[3]={0xFE, 0xFD, 0xFB};


ISR(INT0_vect)

{


static int i=0;

if(++i==3) i=0;

PORTA=pattern[i];

msec_delay(DEBOUNCING_DELAY);

while(~PIND&0x01);

msec_delay(DEBOUNCING_DELAY);

//채터링 문제 완전 해결된 거 아님  

}


int main()

{

DDRA=0xFF;

DDRD=0x00;

SFIOR &=~(1<<PUD);

PORTD |=(0x01);

PORTA=pattern[0];

EICRA = (2<<ISC00);

EIMSK = (1<<INT0);

sei();

while(1);

return 0;

}


void msec_delay(int n)

{

for(; n>0; n--)

_delay_ms(1);

}