Alexander G. schrieb:
> Hallo, ich hab hier leichte Probleme mit einen kleinen ATiny25. Ich habe
> FastPwm auf Timer 0 laufen was auch funktioniert. Nun wollte ich mit
> Timer 1 einen Interrupt machen aber irgendwie beißt sich da was.
>
> //TCCR1 = 0x02;
>
> Wenn dies ausgeklammert ist funktioniert alles. Sobalt ich den Timer
> starte ist vorbei. Als wenn der Timer permanent einen Interrupt auslöst.
Sicher bin ich mir nicht, aber eine mögliche Erklärung wäre das fehlende
1 | #include <avr/interrupt.h>
|
Wenn du den Timer startest und der Overflow Interrupt eintritt springt
der Program Counter zu der ISR Einsprungadresse. Da der Compiler deine
ISR aber nicht kennt, gibt es keinen Rücksprung zum eigentlichen
Programm. Wenn du den Timer nicht startest wird auch kein Interrupt
ausgelöst und das Programm läuft normal durch.
> Was auch komisch ist, wenn ich "TCCR1A" oder "TCCR1B" Tippe meint er das
> es diese Register nicht gibt. Laut Datenblatt hab ich die aber ?!
Also in dem Datenblatt das ich grad vor mir hab gibt es die Register
nicht. Beim Timer 0 gibt es die Unterscheidung zwischen TCCR0A und
TCCR0B, aber Timer 1 besitzt nur TCCR1
Außerdem ist mir aufgefallen, dass du immer wieder ne 6 in das
TCNT1-Register schreibst. Schau dir mal den CTC-Mode an. Damit sollte
sich dies erübrigen.
Gruß
Michael