Mehrere servos an ATMega8

Gast #95576
Also die Überschrift sagt schon alles aus... Ich möchte mehrere Servos
(so viele wie möglich) an einen Mega8 hängen und alle individuell
ansteuern.
hat jemand ein fertiges C - Programm (oder ausschnitte) dafür?
Ich habe Probleme, Zeitkritische Vorgänge (1, 1.5, 2 ms HIGH - Signal)
in C zu programmieren.
Danke!
Gast #95577
Wieviel Servos sind es denn?
Der Mega8 hat "nur" zwei PWM-Kanäle bzw. 3 Timer. Wo genau liegt dein
Problem, verstehst du nicht, wie eine PWM zu implementieren bzw. ein
Timer zu initialisieren ist?
Wie programmierst du? avrgcc, assembler, ...

Gruss, Alex
Gast #95578
Ich verwende GCC
Ich benötige mehr als 2 Ausgänge. In der 1. Ausbaustufe 8 Servos
(später 16) Also müsste ich alles mit Software schicken, ohne die PWM -
Ports zu verwenden.
Das Problem ist, das dafür auch niht genügend Timer vorhanden sind!
Gast #95579
Welche Auflösung brauchst du bei den Servos?
100 Schritte dürften reichen, oder?
Dazu nehme man einen Timer, der alle 10 µS einen Interrupt auslöst.
In der dazughörenden Interrupt Service Routine zählt man der Menge der
Servos entsprechend viele Variablen und eine von 2000 (20.000 µS)
herunter. Sobald diese Variable auf 0 heruntergezählt wurde, werden die
Servo-Variablen mit neuen Werten initialisiert, und sämtliche Ausgänge
eingeschaltet. Der zur Servo-Variable korrespondierende Ausgang wird
dann ausgeschaltet, sobald die Variable auf 0 heruntergezählt worden
ist.

Den ganzen Spaß muss man noch irgendwie initialisieren, aber so müsste
das funktionieren.
In der Hauptschleife werden dann die Initialwerte für die
Servo-Variablen bereitgestellt.

Aufwand:
1 Timer
2*n Byte-Variablen für die Servos
1 Int-Variable für die Periodendauer.

Gruß Rahul
Gast #95580
Ich hatte hier schonmal irgendwann ein Beispiel gepostet, das eine
N-Kanal Software-PWM implementiert.  Damals ging's allerdings um
LEDs,
da war das Timing und die Abstufung noch weniger kritisch.

Antwort schreiben

Eine eigene Frage? Dieser Thread ist über 22 Jahre alt. Stell sie in einem eigenen Thread – dort lesen mehr Leute mit, und sie wird öfter und schneller beantwortet.

Neuen Thread starten

Eine Lösung, Ergänzung oder Rückmeldung zu diesem Thread? Dann antworte hier.

Formatierung
  • [c]C-Code[/c]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] – Link zu einem Artikel
  • Verweis auf einen anderen Beitrag: Rechtsklick auf dessen Beitrags-ID (#8078628), „Adresse kopieren“, in den Text einfügen

Mehr zur Formatierung

Längeren Sourcecode als Anhang, nicht in den Text. JPG nur für Fotos und Scans; Zeichnungen und Screenshots als PNG oder GIF. Siehe Bildformate.

Schon registriert? Anmelden

Wird nicht angezeigt. Wir schicken dir einen Link; sobald du damit bestätigst, erscheint dein Beitrag.

Mit dem Abschicken legst du einen kostenlosen Account an und erkennst die Nutzungsbedingungen und die Datenschutzerklärung an.