Przerwania Atmega8

Jesli jesteś początkującym elektronikiem, to tu z pewnością znajdziesz pomoc. Miejsce dobre do dyskusji nad podstawami elektroniki w zakresie teorii i praktyki.
ODPOWIEDZ
mariuszz
-
Posty: 13
Rejestracja: 28 lis 2012, 14:21
Lokalizacja: Zewszad

Przerwania Atmega8

Post autor: mariuszz » 30 lis 2012, 20:18

Mam dziwny problem, ktorego nijak nie potrafie rozwiazac... Nie chce zadzialac mi przerwanie.
A w zasadzie dziala, ale ciagle. Dioda sie zapala, czeka ta sekunde, gasnie i od razu znowu sie zapala.
Kod:

volatile char flaga;

//przerwanie
ISR(INT0_vect) {
flaga=1;
GIFR &= ~(1<<7);
}

//main
int main(void)
{
flaga=0;
DDRC = 0xFF;
DDRD &= ~(1<<DDD3);
PORTD &= ~(1<<PORTD3);
MCUCR |= 1<<ISC01;
GICR |= (1<<INT0);
sei();


while(1)
{
if(flaga==1)
{
flaga=0;
ledC_on(4);
_delay_ms(1000);
ledC_off(4);
}
}
}

schemat:
Obrazek

Awatar użytkownika
Amugilap
Użytkownik
Posty: 480
Rejestracja: 19 cze 2011, 9:28
Lokalizacja: UK

Post autor: Amugilap » 01 gru 2012, 13:36

Ja bym podlaczyl inaczej ten przycisk, tzn wejscie pociagnal bym 10k rezystorem do +5,a przyciskiem zwieral do masy
Nie znam sie na C ale chyba widze w kodzie zezwolenie obslugi
i obsluge przerwania 0, a przeciez nózka PD3 jest obslugiwana przez przerwanie 1

ustawienia
MCUCR |= 1<<ISC01
tez odnosza sie do sygnalu int0

ustawil bym tez wymuszanie przerwania stanem 0 na wejsciu czyli isc11 = 0 i isc10=0

ODPOWIEDZ