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; }
> 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!
oh man. danke. es klappt. daran hab ich gar nicht gedacht. Der Fehler wird mir so schnell nicht nochmal passieren.
Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.