Timer verhält sich eigenartig

OP #6071327
Lesenswert?

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) ?
Angehängte Dateien:
OP #6071350
Lesenswert?

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;
}

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