Forum: Mikrocontroller und Digitale Elektronik Grundsätzliches zur Ansteuerung von Servos mit AVR und ASM


von Mario Keppler (Gast)


Lesenswert?

Hallo,

wie muß man dabei grundsätzlich vorgehen ?

Pulslänge 1-2ms Wiederholung alle 20ms, soweit klar.

Einen Timer mit Interupt verwende ich für die 1-2ms oder für die 20ms
?

Oder für beides einen Timer mit Interupt ? Oder für eines mit normaler
Loop schleifen ?

Wenn ich nun die Stellung vom Servo verändern will müssen ja beide
Timer angepasst werden damit die 20ms nicht überschritten oder
unterschritten werdenm also wie bei PWM, aber jetzt hab ich gelesen das
PWM dafür nicht so gut ist. Ich möchte die Ansteuerung korrekt machen
auch wenn die Servos die Signale nicht so genau brauchen.

Grüß
Mario

von Hannes L. (hannes)


Lesenswert?

Hier ist ein Beispiel mit einem AT90S4433 in ASM:

http://www.hanneslux.de/avr/7ksend/7ksend01.html

Heute würde ich das eleganter lösen, doch es tut zuverlässig seine
Arbeit und ein gut funktionierendes System soll man ja bekanntlich
nicht unnötig modifizieren...


Weitere Beispiele gibt es übrigens ganz in der Nähe dieser Seite...

...

von Mario Keppler (Gast)


Lesenswert?

Hallo,

danke für die Hilfe, leider geht der link zu dem asm File nicht.

Gruß
Mario

von Hannes L. (hannes)


Lesenswert?

Danke für den Hinweis...

Der Link funktioniert nun.

Es war der typische Fehler beim Umzug der Seite auf einen Linux-Server:
Groß-Kleinschreibung der Dateinamen. Ist bisher unter WIN nicht
aufgefallen... ;-(

WIN erzieht nunmal zur Schlampigkeit...

...

von Gino (Gast)


Angehängte Dateien:

Lesenswert?

Ich hab hier ein Programm für einen 90S8535 mit 4Mhz Quarz für meinen
Sechsbeiner Quo vadis. Damit steuere ich 13 Servos an. Die Ansteuerung
läuft einwandfrei, nur der Bewegungsablauf ist in dieser Version noch
Mist. Hab ich inzwischen verbessert, aber das Programm ist damit kaum
noch lesbar. Auf diese Weise kann man noch wesentlich mehr Servos
ansteuern. Man kann die sache auch noch eleaganter machen, wenn man
nach dem Port high setzen den Timer auf 1ms einstellt und sofort wieder
zurückspringt.
Wenn man dann wieder in den Interupt wechselt und prüft, welcher Port
als nächstes dran ist und dem entsprechend den Timer einstellt, kann
man noch sehr viel Zeit sparen.
Hab ich so aber noch nicht gemacht, weil zu faul.
Falls es interessiert: www.ginotronik.de

Gino

Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.