Hallo,
ich mache gerade meine ersten Versuche mit dem ATMEGA32. Ich habe vorher
schon mit ATMEGA 162 sowie ATTINY's gearbeitet. Ich wollte einen
periodischen Timer Interrupt erzeugen auf die folgenden Art:
1 | #define TICKER_FREQ 50
|
2 | void init_timeslice()
|
3 | {
|
4 | TCNT1 = 0;
|
5 | OCR1A = F_CPU/(64*TICKER_FREQ)-1; // set divider for clock ticker
|
6 | TCCR1A = 0; //no output, CTC mode
|
7 | TCCR1B = 0b00001011; //CTC mode, prescaler 64
|
8 | TIMSK = 0b00010000; // allow Timer 1 output compare A interrupt
|
9 | sei();
|
10 | }
|
Die Interrupt-Service Routine sieht so aus:
1 | ISR(TIMER1_COMPA_vect)
|
2 | {
|
3 | ...
|
4 |
|
5 | sei();
|
6 | }
|
Leider funktioniert es weder in der Hardware noch im
AVR-Studio-Simulator.
Die Interruptroutine wird nie angesprungen, statt dessen macht der
Controller einen Reset. Die Werte in den Timer-Registern sehen jedoch
vernünftig aus. Woran könnte das liegen?
Gruss
Mike