gudion
14.01.2011, 19:56
Hallo,
ich habe mich bei meiner Servo Ansteuerung für die Timer Methode entschieden (http://www.rn-wissen.de/index.php/Servoansteuerung)
Bei dem ganzen hat sich der Servo hin und wieder kurz gedreht, zuletzt gar nicht mehr
Nach dem drehen hat er immer eine weile gebrummt und danach das board neu gestartet, als hätte er die stromzufuhr kurz gekappt (versorgung über 9V batterie)
So sieht die Ansteuerung aus:
Timerinitialisierung
Config Timer0 = Timer , Prescale = 1024 'timer für servos
Timer0 = 230 '224 bis 239
Config Porta.0 = Output
Porta.0 = 0
On Timer0 Isr_servo
Meine Rechnung dazu:
16 mhz / 1024 / 1000 ergibt 15,...
daraus ergibt sich der bereich für den timer
timer1 ist schon anderweidig vergeben, daher kann ich den nicht nehmen
(der Timer wird per Tastendruck aktiviert)
Die Isr
Isr_servo:
If Aktiv = 2 Then
Print "Ende"
Else
If Aktiv = 0 Then
Porta.0 = 1 'und port anschalten
Aktiv = 1
Print "An"
Else
Porta.0 = 0 'dann port wieder ausschalten
Disable Timer0
Aktiv = 2
Print "aus"
Waitms 20
End If
End If
Return
das ganze mit oder ohne die 20ms wartezeit
das board meldet ordentlich "An", "aus" und "Ende" nacheinander, danach der oben beschriebene effekt
abgesehen davon das Disable bei Timern offenbar nicht funktioniert (sonst gäbs kein "Ende") weiß einer woran es liegt?
ich habe mich bei meiner Servo Ansteuerung für die Timer Methode entschieden (http://www.rn-wissen.de/index.php/Servoansteuerung)
Bei dem ganzen hat sich der Servo hin und wieder kurz gedreht, zuletzt gar nicht mehr
Nach dem drehen hat er immer eine weile gebrummt und danach das board neu gestartet, als hätte er die stromzufuhr kurz gekappt (versorgung über 9V batterie)
So sieht die Ansteuerung aus:
Timerinitialisierung
Config Timer0 = Timer , Prescale = 1024 'timer für servos
Timer0 = 230 '224 bis 239
Config Porta.0 = Output
Porta.0 = 0
On Timer0 Isr_servo
Meine Rechnung dazu:
16 mhz / 1024 / 1000 ergibt 15,...
daraus ergibt sich der bereich für den timer
timer1 ist schon anderweidig vergeben, daher kann ich den nicht nehmen
(der Timer wird per Tastendruck aktiviert)
Die Isr
Isr_servo:
If Aktiv = 2 Then
Print "Ende"
Else
If Aktiv = 0 Then
Porta.0 = 1 'und port anschalten
Aktiv = 1
Print "An"
Else
Porta.0 = 0 'dann port wieder ausschalten
Disable Timer0
Aktiv = 2
Print "aus"
Waitms 20
End If
End If
Return
das ganze mit oder ohne die 20ms wartezeit
das board meldet ordentlich "An", "aus" und "Ende" nacheinander, danach der oben beschriebene effekt
abgesehen davon das Disable bei Timern offenbar nicht funktioniert (sonst gäbs kein "Ende") weiß einer woran es liegt?