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