moelski
15.08.2006, 08:21
Moin !
Da es nicht mehr so ganz in den alten Fred passt, fange ich mal einen neuen an. Ich hoffe das ist so ok. Wenn nicht ... Öhm ... Sorry.
Also ... Es geht immer noch um die Sache mit den Servoimpulsen. Ich möchte folgendes erreichen:
- einen Servoimpuls messen
- 1-2 Servoimpulse ausgeben
- das Ganze möglichst genau
- µC ist bei mir ein Mega88 an 8 MHz
Was ich bis dato rausgefunden habe ...
- der PulseIn Befehl ist zwar verwendbar, liefert aber nur eine unzureichende Genauigkeit. Bei mir waren es ~90 Schritte für ein Servosignal von 1,1-1,9ms. Ausserdem liefert der Befehl sofort andere Ergebnisse, wenn man die Servo Routinen von Bascom nutzt.
- der Servo Befehl ... Zwar nutzbar, aber auch nicht wirklich gut. Er beeinflusst z.B. (wegen der Interrupts ?) den Pulsein Befehl und verringert dessen Auflösung nochmals ... Ausserdem ist die Auflösung der Servoschritte nicht wirklich gut. Ein normales Servo hat nunmal 256 Schritte. Ob das alle umsetzen sei dahingestellt. Jedefalls kriegt man das mit dem Servo Befehl nur unzureichend hin.
Wie könnte man die Sache lösen ...
- Die Messung des Servoimpulses könnte man z.B. mit dem Timer 1 erledigen. Dazu könnte man die Capture Input Unit nutzen. Nachteil ... Der Timer1 wird mehr oder minder verschwendet.
- Die Ausgabe der Servosignale könnte Timer 0 bzw. Timer 1 übernehmen mittels PWM.
- Ideal wäre wenn beide Funktionen mit dem Timer 1 abgedeckt werden könnten. Also erst Impuls messen und dann die PWM erzeugen.
Meine Fragen ... :-s
Ich lese mir nun schon eine ganze Weil die Sachen mit den Timern durch, aber irgendwie kriege ich den Dreh nicht raus (weiss meist nicht wie ich die Infos aus dem Datenblatt in Bascom umsetzen kann). Ich würde mich also freuen wenn mir jemand mit etwas Code helfen könnte.
1) Wie kann ich die Länge des Servoimpuls mit der Capture Input Unit des Timer 1 messen?
2) Wie kann ich mit Timer 0 die PWM Servo Signale erzeugen? Mit welcher Genauigkeit / Auflösung wäre das überhaupt möglich? Ist Timer 0 dafür überhaupt sinnvoll?
3) Ist es möglich (und wenn ja wie) das ich Timer 1 zum messen und Erzeugen der PWM nutze? Weil Zeit genug wäre ja prinzipiell nach dem Messen des Impulses.
Vielleicht gibt es auch noch andere Möglichkeiten Servoimpulse auszugeben und ein Servoimpuls zu messen!?
Würde mich jedenfalls freuen, wenn mir jemand mit etwas Code helfen könnte. :roll: Und Sorry wenn ich mit dem Thema im moment etwas nerve ... :oops:
Da es nicht mehr so ganz in den alten Fred passt, fange ich mal einen neuen an. Ich hoffe das ist so ok. Wenn nicht ... Öhm ... Sorry.
Also ... Es geht immer noch um die Sache mit den Servoimpulsen. Ich möchte folgendes erreichen:
- einen Servoimpuls messen
- 1-2 Servoimpulse ausgeben
- das Ganze möglichst genau
- µC ist bei mir ein Mega88 an 8 MHz
Was ich bis dato rausgefunden habe ...
- der PulseIn Befehl ist zwar verwendbar, liefert aber nur eine unzureichende Genauigkeit. Bei mir waren es ~90 Schritte für ein Servosignal von 1,1-1,9ms. Ausserdem liefert der Befehl sofort andere Ergebnisse, wenn man die Servo Routinen von Bascom nutzt.
- der Servo Befehl ... Zwar nutzbar, aber auch nicht wirklich gut. Er beeinflusst z.B. (wegen der Interrupts ?) den Pulsein Befehl und verringert dessen Auflösung nochmals ... Ausserdem ist die Auflösung der Servoschritte nicht wirklich gut. Ein normales Servo hat nunmal 256 Schritte. Ob das alle umsetzen sei dahingestellt. Jedefalls kriegt man das mit dem Servo Befehl nur unzureichend hin.
Wie könnte man die Sache lösen ...
- Die Messung des Servoimpulses könnte man z.B. mit dem Timer 1 erledigen. Dazu könnte man die Capture Input Unit nutzen. Nachteil ... Der Timer1 wird mehr oder minder verschwendet.
- Die Ausgabe der Servosignale könnte Timer 0 bzw. Timer 1 übernehmen mittels PWM.
- Ideal wäre wenn beide Funktionen mit dem Timer 1 abgedeckt werden könnten. Also erst Impuls messen und dann die PWM erzeugen.
Meine Fragen ... :-s
Ich lese mir nun schon eine ganze Weil die Sachen mit den Timern durch, aber irgendwie kriege ich den Dreh nicht raus (weiss meist nicht wie ich die Infos aus dem Datenblatt in Bascom umsetzen kann). Ich würde mich also freuen wenn mir jemand mit etwas Code helfen könnte.
1) Wie kann ich die Länge des Servoimpuls mit der Capture Input Unit des Timer 1 messen?
2) Wie kann ich mit Timer 0 die PWM Servo Signale erzeugen? Mit welcher Genauigkeit / Auflösung wäre das überhaupt möglich? Ist Timer 0 dafür überhaupt sinnvoll?
3) Ist es möglich (und wenn ja wie) das ich Timer 1 zum messen und Erzeugen der PWM nutze? Weil Zeit genug wäre ja prinzipiell nach dem Messen des Impulses.
Vielleicht gibt es auch noch andere Möglichkeiten Servoimpulse auszugeben und ein Servoimpuls zu messen!?
Würde mich jedenfalls freuen, wenn mir jemand mit etwas Code helfen könnte. :roll: Und Sorry wenn ich mit dem Thema im moment etwas nerve ... :oops: