Problem beim OCR0 Wert ändern

Gast #2377099
Lesenswert?

Moin Leute.

Irgendwie habe ich gerade große Probleme bei einer simplen Aufgabe. Ich 
möchte einen Servo ansteuern,was auch wunderbar funktioniert. Ich kann 
beim Initalisieren des Timers auch den Servo in alle möglichen 
Stellungen fahren lassen. Nun möchte ich, dass der Servo beim 
Tastendruck in eine bestimmte Stellung fährt, und genau dort harpert es. 
Ich springe in die Interrupt-Routine hinein, denn ich sehe es an der 
LED, die ich am Toggelnden Pin angeschlossen habe. Aber der Wert wird 
nicht ins OCR0 Register übernommen.
Ich habe schon versucht, die Interrupt zu sperren mit cli(). Dann den 
Timer stoppen und auch den Interrupt bei Timer zu deaktivieren. Bringt 
alles nix. Der Servo bleibt stehen!

Vllt habe ich auch gerade einfach einen Denkfehler. Hoffe ihr könnt mir 
einen Tipp geben.


Anmerkung:
Sowas funktioniert:
while(1)
    {
       OCR0 = 25;
    }
Angehängte Dateien:
#2377104
Lesenswert?

>   TIMSK = (1<<TOIE0); // Timer0 Overflow Interrupt

wi3eso gibst du einen Overflow Interrupt frei, für den du gar keinen 
Handler hast?

Ein freigegebener Interrupt, für den kein Handler existiert, wird beim 
Auftreten des Interrupts mit einem Prozessorreset bestraft. Sprich: Dein 
Programm fängt immer wieder von vorne an.

Und dein Timer produziert Overflows!

Antwort schreiben

Bitte melde dich an, um einen Beitrag zu schreiben.

oder

Mit Google-Account einloggen

Die Registrierung ist kostenlos und dauert nur eine Minute.

Jetzt registrieren