ATmega128, Timer1-overflow Problem

12/03/2012 - 09:31 von Stefan | Report spam
Hallo,

ich hab hier gerade ein kleines Problem.

Timer1 eines ATmega128 soll mit dem Prozessortakt getaktet werden. Bei
overflow soll ein weiterer 16 Bit-Zàhler incrementiert werden.

Initialisierung sieht folgendermaßen aus:

...
TCCR1B = (0<<CS12)+(0<<CS11)+ 1<<CS10);
TCNT1 = 0;
TIMSK = (1<<TOIE1);
...


Dazu die INT-Routine:


Signal (SIG_OVERFLOW1)
{
timer1_high++;
}


In Main() frage ich timer1_hight ab und gebe den Wert aus.
Wenn ich TIMSK = (1<<TOIE1) ausklammere làuft mein Programm, natürlich
ohne Timer1_high zu incrementieren. Wenn ich die Zeile drin lasse,
knallt es.

Hat jemand eine Idee, woran das liegen könnte?

Gruß

Stefan
 

Lesen sie die antworten

#1 Heiko Lechner
12/03/2012 - 10:01 | Warnen spam
Am 12.03.2012 09:31, schrieb Stefan:

TCCR1B = (0<<CS12)+(0<<CS11)+ 1<<CS10);



Hier sollte es schon eine Fehlermeldung geben (Klammer fehlt).

Warum nicht einfach: TCCR1B = (1 << CS10);?

Signal (SIG_OVERFLOW1)



Signal wird nicht mehr benutzt:
http://www.nongnu.org/avr-libc/user...rupts.html

Wenn ich TIMSK = (1<<TOIE1) ausklammere làuft mein Programm, natürlich
ohne Timer1_high zu incrementieren. Wenn ich die Zeile drin lasse,
knallt es.



Was knallt?

#include <avr/io.h> vergessen?

Ähnliche fragen