PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : Hilfe zum ATMEGA. Pulse generieren für 8 Servos ...



drnicolas
02.10.2006, 12:16
Hi zusammen.
Mein Problem: Ich möchte 8 Servos ansteuern und muss dazu die entsprechenden Impulse mit korrekter Länge generieren.

Aktuelle Lösung: Am ATMEGA ist per I2C ein I/O-Expander PCF8574 angeschlossen, an diesen wiederum sind die 8 Impulsleitungen angeschlossen.

Per Timer wird nun ein der Impuls generiert und zwar so:

- Pulslänge berechnen und Timer aktivieren
- entsprechenden Pin per I2C einschalten
- beim Timer-interrupt wird per I2C der Pin abgeschaltet
- dasselbe nochmal für den nächsten Pin/Servoimpuls

Die Methode funktioniert, ist aber aufgrund der zeitkritischen Impulse nicht ganz befriedigend und kostet ganz schön Rechenzeit. Gelegentlich zucken die Servos.

Ich suche nun eine Alternative und bin auf die PWM-Mögichkeiten des ATMEGA gestossen.
Ich berechne die Pulsänge und programmiere den ATMEGA entsprechend.
Der ATMEGA schaltet AUTOMATISCH (ohne Interruptund Programmcode) den Impuls ab und würde nach 20ms erneut einen Impuls beginnen

Das wäre die Technik für 1 Servo.

Für 8 Servos müsste ich einen 3-to-8-Decoder zwischenschalten, der einen Eingang auf einen von 8 Ausgängen durchschaltet.

Ich bräuchte aber folgendes:
- Ich starte den Impuls, der ATMEGA löscht ihn nach Ablauf der Impulszeit wieder.
- Nach etwa 2.5ms bekomme ich einen Interrupt und starte den Vorgang für den nächsten Servo mit angepasster Impulszeit.

Ist das so realistisch und wie muss ich den ATMEGA programmieren ?

Gruss Nico