Sehe ich das richtig das du den Timer wert für das Servo überschreibst???
Code:
Servoirq: 'Interrupt wird ausgelöst soweit OK
If Portd.6 = 0 Then 'Port ist Low OK
Timer1 = Servopwm 'Timervorwahl laden OK
Portd.6 = 1 'Port High Setzen auch OK
In der Ersten Interrupt Runde wird nix weiter gemacht, Alles was folgt wird übersprungen weil die Bedingungen noch nicht verfüllt sind.
Timerinterrupt läuft das erste mal über und hier gehts dann weiter.
Else 'Else bedingung wird erfüllt
Portd.6 = 0 'Servo Port wird auf Low gezogen
Incr Servo_nr_by 'Zähler Variable wird hochgezählt (ist jetzt 1)
End If
End If
If Servo_nr_by = 1 Then 'Zähler Variable ist jetzt 1 und der Zweite Servoport wird auf High-Pegel gezogen.
If Portb.2 = 0 Then
Timer1 = Servo_roll_pwm ' Timer1 wird mit der Vorwahl für Portb.2 geladen.
Portb.2 = 1
'Timer läuft wieder über, Interrupt wird ausgelöst.
Servoirq:
If Portd.6 = 0 Then 'Port ist wieder 0 also
Timer1 = Servopwm 'Timer laden
Portd.6 = 1 'port auf 1 Setzen
Else 'Else wird nicht erfüllt also überspringen
Portd.6 = 0
Incr Servo_nr_by
End If
End If 'Wofür ist eigendlich das zweite Endif??
If Servo_nr_by = 1 Then 'hier gehts dann weiter
If Portb.2 = 0 Then 'Port ist noch 1 also überspringen bis Else
Timer1 = Servo_roll_pwm
Portb.2 = 1
Else
Portb.2 = 0 'Port wird auf 0 gesetzt
Incr Servo_nr_by 'Servozähler hochsetzen ist jetzt 2
End If
End If
If Servo_nr_by = 2 Then 'Servozähler passt also weiter machen
If Portb.3 = 0 Then ' Port ist 0 also weiter
Timer1 = Servo_nick_pwm 'Da ist der Bock! Timer 1 wird überschrieben!! Wurde vorher mit Timerwert für Steuerservo gefüllt.
Portb.3 = 1
Else
Portb.3 = 0
Incr Servo_nr_by
End If
End If
Kann mich da ein Bascom Profi bestätigen??
Mfg
Matthias
Lesezeichen