Skocz do zawartości

Przerwanie wewnętrzne w zewnętrznym - jak wpisać


bluzman

Pomocna odpowiedź

Witam. Chciałbym w programie z przerwaniem uzyskać następujący efekt żeby nie używać delaya:
1. Wywołuję przerwanie przyciskiem
2. W przerwaniu jest odmierzany czas przez Timer w Atmega8 i po np. 1 sekundzie przerwanie się kończy i przechodzi do programu głównego.

Rozumiem że należy umieścić przerwanie wewnętrzne w zewnętrznym. Jak napiszę 2 przerwania pod sobą, pod programem głównym to po odpaleniu qC to co 1 s. będzie się włączało i wyłączało?
Jak to ogarnąć już w kodzie takim jak poniżej bo gdzieś trzeba ten timer przerwania (np. TIMER1_OVF_vect) umieścić. Dziękuję z góry:)

#include <stdio.h>
#include <avr/interrupt.h>

#define SWITCH (1<<PD3)

int main(void) {
	//inicjalizacja przerwania - przycisk
	MCUCR	 |= (1<<ISC10);
	GICR 	 |= (1<<INT1);

	//Timer1
	TCCR1B |= (1 << WGM12);
	TCCR1B |= (1 << CS12);
	OCR1A = 31250;
	TIMSK |= (1 << OCIE1A); 

    DDRD &= ~(SWITCH);
    PORTD |= (SWITCH);

    sei();
    while (1) { }
    	//kod programu
}

ISR(INT1_vect) {
	while(1) {
		//kod programu w przerwaniu
	}

}

 

Link do komentarza
Share on other sites

12 minut temu, bluzman napisał:

Wywołuję przerwanie przyciskiem

To zły pomysł.

13 minut temu, bluzman napisał:

W przerwaniu jest odmierzany czas przez Timer w Atmega8 i po np. 1 sekundzie..

A to najgorsze co mogłeś wymyślić.

Takie rzeczy robi sie zupełnie inaczej, koniecznie poczytaj o tym jak w Arduino zrobić wiele rzeczy na raz. A przerwania sprzętowe zostaw na ważniejsze i szybsze rzeczy niż jakiś przycisk. 

Link do komentarza
Share on other sites

Bądź aktywny - zaloguj się lub utwórz konto!

Tylko zarejestrowani użytkownicy mogą komentować zawartość tej strony

Utwórz konto w ~20 sekund!

Zarejestruj nowe konto, to proste!

Zarejestruj się »

Zaloguj się

Posiadasz własne konto? Użyj go!

Zaloguj się »
×
×
  • 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.