Servo verhält sich an verschiedenen µCs unterschiedlich

    Diese Seite verwendet Cookies. Durch die Nutzung unserer Seite erklären Sie sich damit einverstanden, dass wir Cookies setzen. Weitere Informationen

    Aufgrund technischer Veränderungen ist der Mailverkehr innerhalb des Forums (Private Nachrichten) nur noch eingeschränkt möglich. Die Einschränkung ist notwendig, um zusätzliche Betriebskosten für das Forum zu vermeiden. Näheres zu den Hintergründen im Thread "Aktuelles zum Forum".Wir bitten um Verständnis.

    Hinweis kann nach Kenntnisnahme deaktiviert werden!

    • Servo verhält sich an verschiedenen µCs unterschiedlich

      Hallo,

      ich betrieb bisher einen Servo an einem Attiny85 mit 8MHz.

      Die Endanschläge lagen bei 35 und 140.

      Jetzt ist das Programm gewachsen und ich habe es auf einen Mega8 auch mit 8MHz portiert.
      Die Frequenz von 8MHz des jeweiligen µCs wurde mit einem Blinkprogramm bestätigt.

      Beim Mega8 liegt aber der eine Endanschlag bei 80 (vorher 35) und der zweite jenseits von 255 (vorher 140).

      Wie kann das sein?

      Deklariert ist der Servo jeweils mit (natürlich unterschiedlichen Ports, als Ausgang konfiguriert)

      Config Servos = 1 , Mode = Servo , Servo1 = Portd.6

      Ich kann mit unterschiedlichen Werten eigentlich leben, aber der Grund würde mich schon interessieren.
      Da Servo() nur Bytes aufnehmen kann, komme ich momentan nicht an den 2. Anschlag.

      Mein Testprogramm:

      Quellcode

      1. $regfile = "m8def.dat"
      2. $framesize = 42
      3. $swstack = 32
      4. $hwstack = 32
      5. $crystal = 8000000
      6. Config Servos = 1 , Mode = Servo , Servo1 = Portd.6
      7. Config Portd.6 = Output
      8. Servo(1) = 80
      9. Do
      10. Loop
      Alles anzeigen
      Den Wert setzte ich beim Test manuell.


      MfG
      Tido

      Dieser Beitrag wurde bereits 2 mal editiert, zuletzt von Tido ()

    • Tido schrieb:

      Testprogramm siehe 1. Post
      Das würde nichts tun. Die Servos brauchen ein "Enable Interrupts"
      Möglicherweise ist da noch irgendwas anders? (z,B, m8Adef)
      Ein Tccr0=4 nach dem Config Servo könnte den Bereich vierteln?
      Vorsicht, ich haB hier einen so in den Anschlag gedonnert, daß er nur noch mit Zangengewalt wieder beweglich wurde.
      Einen weiteren Mega8 da? Vielleicht stimmt seine Calibrierung nicht. Das Blinken wurde nicht mit einem Zeitmesser kontrolliert?
    • Pluto25 schrieb:

      Tido schrieb:

      Testprogramm siehe 1. Post
      Das würde nichts tun. Die Servos brauchen ein "Enable Interrupts"Möglicherweise ist da noch irgendwas anders? (z,B, m8Adef)
      Ein Tccr0=4 nach dem Config Servo könnte den Bereich vierteln?
      Vorsicht, ich haB hier einen so in den Anschlag gedonnert, daß er nur noch mit Zangengewalt wieder beweglich wurde.
      Einen weiteren Mega8 da? Vielleicht stimmt seine Calibrierung nicht. Das Blinken wurde nicht mit einem Zeitmesser kontrolliert?
      ups, das ist beim Entfernen von

      Config Timer2 = Timer , Prescale = 1024
      On Timer2 Isr_time
      Enable Timer2
      Enable Interrupts

      verloren gegangen, ist aber im Programm enthalten.

      Ich habe es gerade mit einem 2. M8 und einem 328p geprüft, alle zeigen dasselbe Verhalten wie der ursprüngliche M8.
      Ich muss ja aber irgendwie bis zum 2. Endanschlag kommen, das ist das Ziel. Momentan erfüllt das nur der Tiny (def. mit 8MHz), der aber für das Projekt zu wenige Pins hat.
    • Das ist erstaunlich. Ich hab gerade etwas in den Histories gestöbert. Die 40/140 blieben gleich ob M8 8Mhz oder 4Mhz oder tiny44 8Mhz. Das ist ein "seltsamer" Servo :D .
      Eine Möglichkeit wäre ihn auf einen Pwm Ausgang des Timer1 zu hängen. (Das entlastet den Avr ungemein)
      Das Tccr0=4 könnte auch gehen (nie versucht)
      Einen anderen Servo zur Hand?

      Das Reload hatte ich auskommentiert. ging trotzdem. Gehts noch mit einem höheren Reload?
    • Positiv für den Servo spricht die Tatsache, dass er am 8MHz Tiny die 40/140 zeigt.
      Außerdem, sobald ich Reload = 10 einfüge.

      Aber da es ohne Reload = 10 am Tiny läuft, sollte es das auch am M8 oder 328p tun.

      Ich komme damit aktuell nicht weiter. Laut Bascom-Hilfe benötigt Mode = Servo auch kein Reload.
    • Tido schrieb:

      Laut Bascom-Hilfe
      ist Reload = 10 Default ?( Es sollte keinen Unterschied machen.
      Vielleicht liegt er in den Bascom Versionen. Hier die Demo und 2.0.8.1
      Oder in den dat. Mal m8adef versucht?
      Jetzt bin ich total ?( Egal ob und welches Reload ich einsetze. Es kommt immer die exakt selbe bin dabei raus.

      Dieser Beitrag wurde bereits 1 mal editiert, zuletzt von Pluto25 ()