Hallo, ich habe Timer1 für die Ansteuerung eines Servos verwendet: Fast PWM TOP = 20.000 (20ms) OC1A zwischen 1.000 und 2.000 für Servo links/rechts Das ganze funktioniert auch einwandfrei Jetzt möchte ich den Timer0 für Zeitabhängige Eingriffe in Timer1 verwenden. Normal Mode Prescaler = 1024 Wenn ich zum Test bei Überlauf von Timer0 einen Ausgang Toggle, funktiert sowohl die Servoansteuerung als auch der blinkende Ausgang einwandfrei. Sobald ich jedoch (zum Test) "X=1500" in die ISR einbaue, wackelt der Servo zwischen 1500 und 2000 hin und her. Weiterhin blinkt die getoggelte LED nicht mehr 100% gleichmäßig. Fragen: 1: X scheint zwischenzeitlich wieder auf 2000 gesetzt zu werden, warum ? 2: Warum hat X=1500 auswirkungen auf den Timer0 selbst (Ausgang blinkt nicht mehr gleichmäßig) ?
Um welchen Controller handelt es sich? Wo ist die ISR für den Timer1-Overflow?
Es ist ein Tiny24
Es gibt keine ISR für Timer1, der läuft einfach vor sich hin und ändert
hardwaremäßig den OC1A Ausgang.
Wenn ich in der ISR für Timer 0 nur ein char (Y) auf 1 setzte und X dann
in der main ändere, blinkt der Testausgang wieder einwandfrei.
Jedoch wackelt der servo weiterhin hin und her.
Irgendwo speichert er den alten Wert...
if (Y == 1)
{
X = 1500;
Y = 0;
}
> Es gibt keine ISR für Timer1 Weshalb wird der Interrupt dann freigegeben? > TIMSK1 = (1 <<TOIE1);
PS: Timer1 läuft im Fast-PWM-Modus, bei Erreichen von ICR1 wird der Interrupt ausgelöst und das Programm springt ... wohin?
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.