Skocz do zawartości

Przerwania same się odpalają.


piwniczne

Pomocna odpowiedź

Hej,

piszę w elektronice chociaż nie jestem pewien, czy nie jest to kwestia oprogramowania.

Mam problem - piszę prosty program który ma obsłużyć przerwania:

wcześniej tylko sprzęt:

Programator USBasp. zasilanie z programatora 5V.

Płytka stykowa, ATmega 32.

#include <util/delay.h>
#include <avr/io.h>
#include <avr/interrupt.h>

int main(){
DDRC = 0xff; // port jako wyjscie.
DDRD &= ~(1<<PORTD2); // drugi pin portu D jako wejscie.
DDRD &= ~(1<<PORTD3); // drugi pin portu D jako wejscie.
PORTD|=(1<<PORTD3);  // rezystor podciagajacy
PORTD|=(1<<PORTD3);	 // czyli normalnie jest stan wysoki.


MCUCR|=(1<<ISC01)|(1<<ISC11);
GICR|=(1<<INT0)|(1<<INT1);
sei();

PORTC=0xff;
_delay_ms(300);
PORTC=0x00;

while(1){

}
}

ISR(INT0_vect){

PORTC=0xff;

}

ISR(INT1_vect){

PORTC=0x00;

}

Z tego co rozumiem, oba INT0/1 powinny reagować na zbocze opadające.

Myślę- spoko. Piny są podciągnięte więc będą w stanie wysokim a jak je zewrę do masy to wejdą w stan niski. Więc domyślnie diody się nie świecą, jak zaczne się bawić raz jednym przerwaniem raz drugim to będą migać zależnie od tego co podłączać do masy.

Problem polega na tym, że program mi wariuje. Nawet jak nic nie zmienię- do pinów na przerwanie nie jest nic podpięte - to dioda i tak się sama zapala po jakiejś sekundzie.

Jeżeli gaszę ją przerwaniem- po krótszej chwili (<1s) znów się zapal i świeci.

Nie mam pomysłu o co chodzi dlatego piszę temat.

Wcześniej widziałem dziwne zależności pokroju dioda gaśnie gdy dotykam okolic portu USB 😃

dla przykladu jak zrobię obsługę przerwań w postaci:

ISR(INT0_vect){

//PORTC=0xff;

}

ISR(INT1_vect){
PORTC=0xff;
_delay_ms(500);
PORTC=0x00;

}

to jest ok.

Link do komentarza
Share on other sites

Rezystor podłączyłeś tylko do PORTD3(dałeś dwa razy PORTD|=(1<, więc PORTD2 gdy nie jest do niczego podpięty ma stan nieokreślony i mogą tam się dziać różne rzeczy. Podepnij rezystor i powinno działać OK. I nie powinno dawać się opóźnień w przerwaniu.

  • Pomogłeś! 1
Link do komentarza
Share on other sites

Dołącz do dyskusji, napisz odpowiedź!

Jeśli masz już konto to zaloguj się teraz, aby opublikować wiadomość jako Ty. Możesz też napisać teraz i zarejestrować się później.
Uwaga: wgrywanie zdjęć i załączników dostępne jest po zalogowaniu!

Anonim
Dołącz do dyskusji! Kliknij i zacznij pisać...

×   Wklejony jako tekst z formatowaniem.   Przywróć formatowanie

  Dozwolonych jest tylko 75 emoji.

×   Twój link będzie automatycznie osadzony.   Wyświetlać jako link

×   Twoja poprzednia zawartość została przywrócona.   Wyczyść edytor

×   Nie możesz wkleić zdjęć bezpośrednio. Prześlij lub wstaw obrazy z adresu URL.

×
×
  • Utwórz nowe...

Ważne informacje

Ta strona używa ciasteczek (cookies), dzięki którym może działać lepiej. Więcej na ten temat znajdziesz w Polityce Prywatności.