
Jag håller på att göra ett program till en varvräknare,
med en ATmega8, och har ett problem. Jag använder
en timer och när den har räknat tills den är "full"
så vill jag kalla på en funktion. Jag använder timerns
interrupt vektor för att kalla på funktionen.
Problemet är att programmet hoppar till main efter interrupten,
istället för att kalla på funktionen. Har ni några ideér?
Jag har inte någon tidigare erfarenhet av mikroprocessorer.
Har kollat i manualen men säkert missat en del.
Så här ser en del av koden ut:
Kod: Markera allt
void setup_interrupts(){
sei(); //set global interrupt enable
GICR = 0x00; //External interrupt0 and interrupt1 enable bits.
//TIMER1 16 bit counter = ATmega8 timer/counter 1
TCNT1H = 0x00; //set the counter1 Hregister 0
TCNT1L = 0x00; //set the counter1 Lregister 0
ICR1H = 0x00; //empty the counting registers counter1
ICR1L = 0x00; //empty the counting registers counter1
TCCR1A = 0x00; //operation mode normal
TCCR1B = 0x41; //internal clock source
//counting direction incrementing
//Input Capture Edge Select
//TIMER2 8 bit timer mode
TCNT2 = 0x00; //set the timer2 0 timer2
OCR2 = 0xFF; //output compare register timer2
TCCR2 = 0x09; //internal clock source timer2
//Clear Timer on Compare Match (CTC) Mode
TIMSK = 0xC0; //Interrupt enable
}
void clk(int SIG_OVERFLOW2 ) //timer2 interrupt
{
funktionen........
}
Edit: code taggar