Forum: Mikrocontroller und Digitale Elektronik Servoansteuerungschip-Selbstbau


von Valentin B. (nitnelav) Benutzerseite


Lesenswert?

Hallo
ich habe ja gesehen, dass es viele Threads zu Servos im Forum gibt, doch 
leider passte nicht ein einziger auf meine Bedürfnisse.
Nun zur Situation: Ich möchte einen Servo (C577) mit einem ATTiny13 
ansteuern. Ich hätte es gerne so, dass der Chip die eigene Taktungs 
verwendet und einfach drei Eingaänge und einen Ausgang hat. Auf die 
Eingänge kommen drei Tasten für Links, Mitte und Rechts. Der Ausgang 
gibt das Servo-Ansteuerungssignal aus.
ich habe mich also drangesetzt, doch weiß ich nicht, wie ich die 
Schleife gestalten soll. einmal einen Wert auf einem Port ausgeben und 
dass zählen?
Hält der Port den Wert dann oder wie?
Und wie die 1.5ms Impuls für die Mittelstellung realisieren?
Ich habe versucht es in AVR-GNU-Asm zu realisieren, vielleicht kann mir 
jemand mit Tipps oder Quellcode (bitte im txt-Format) weiterhelfen. 
Fertige Programme zum Download mag ich zwar auch, doch dann solltet ihr 
bitte eine Anleitung beilegen.

Wie immer hoffe ich auf euch...
Nitnelav.

von Hannes Lux (Gast)


Lesenswert?

> doch leider passte nicht ein einziger auf meine Bedürfnisse.

Dann heißt es Selbermachen oder Dienstleistung kaufen. ;-)

Schau mal hier:
Beitrag "Re: Servo C577 mit Attiny13 ansteuern (Assembler)"
Das lässt Dir schonmal ein Servo nach Zeit hin- und herfahren.

Schmeiß die Zeitsteuerung raus und füge eine ordentliche Tastenabfrage 
mit Entprellung und Tasten-Repeat ein (z.B. den Dannegger-Algorithmus, 
siehe hier:).
Beitrag "Re: Hilfe zur Tastenentprellung von P.Dannegger"

Nun kannst Du mittels Tasten die Servoposition zwischen 75 und 150 
variieren, wobei die Tasten per Autorepeat auch Dauerdruck zulassen.

...

von Valentin B. (nitnelav) Benutzerseite


Lesenswert?

@ Hannes Lux
Wonit hast du dein Programm bitte geschrieben?
Mein gutes "altes" Sisy-AVR hat beim Linken schon über zwanzig Feher 
gefunden:
Kompiliere die Datei Servo_Ansteuerung.s.
Assembler Meldungen:
Servo_Ansteuerung.s:26  Fehler: expected comma after "clk_ss"
Servo_Ansteuerung.s:27  Fehler: expected comma after "clk_val"
Servo_Ansteuerung.s:28  Fehler: expected comma after "tvt0"
Servo_Ansteuerung.s:31  Fehler: unknown pseudo-op: `.def'
Servo_Ansteuerung.s:32  Fehler: unknown pseudo-op: `.def'
Servo_Ansteuerung.s:35  Fehler: unknown pseudo-op: `.def'
Servo_Ansteuerung.s:36  Fehler: unknown pseudo-op: `.def'
Servo_Ansteuerung.s:37  Fehler: unknown pseudo-op: `.def'
Servo_Ansteuerung.s:39  Fehler: unknown pseudo-op: `.def'
Servo_Ansteuerung.s:40  Fehler: unknown pseudo-op: `.def'
Servo_Ansteuerung.s:44  Fehler: unknown pseudo-op: `.cseg'
Servo_Ansteuerung.s:63  Fehler: ein konstanter Wert wird erwartet:
Kontrollieren Sie bitte die Schreibweise dieser Zeile.
 Erwarte Register ab: 15
Servo_Ansteuerung.s:64  Fehler: ein konstanter Wert wird erwartet:
Kontrollieren Sie bitte die Schreibweise dieser Zeile.
 Erwarte Register ab: 15
Servo_Ansteuerung.s:65  Fehler: ein konstanter Wert wird erwartet:
Kontrollieren Sie bitte die Schreibweise dieser Zeile.
 Fehler: ein konstanter Wert wird erwartet:
Kontrollieren Sie bitte die Schreibweise dieser Zeile.
Servo_Ansteuerung.s:66  Fehler: ein konstanter Wert wird erwartet:
Kontrollieren Sie bitte die Schreibweise dieser Zeile.
 Fehler: ein konstanter Wert wird erwartet:
Kontrollieren Sie bitte die Schreibweise dieser Zeile.
Servo_Ansteuerung.s:69  Fehler: ein konstanter Wert wird erwartet:
Kontrollieren Sie bitte die Schreibweise dieser Zeile.
 Erwarte Register ab: 15
Servo_Ansteuerung.s:70  Fehler: ein konstanter Wert wird erwartet:
Kontrollieren Sie bitte die Schreibweise dieser Zeile.
 Fehler: ein konstanter Wert wird erwartet:
Kontrollieren Sie bitte die Schreibweise dieser Zeile.
Servo_Ansteuerung.s:71  Fehler: ein konstanter Wert wird erwartet:
Kontrollieren Sie bitte die Schreibweise dieser Zeile.
Servo_Ansteuerung.s:72  Fehler: ein konstanter Wert wird erwartet:
Kontrollieren Sie bitte die Schreibweise dieser Zeile.
 Fehler: ein konstanter Wert wird erwartet:
Kontrollieren Sie bitte die Schreibweise dieser Zeile.
Servo_Ansteuerung.s:73  Fehler: ein konstanter Wert wird erwartet:
Kontrollieren Sie bitte die Schreibweise dieser Zeile.
 Erwarte Register ab: 15
Servo_Ansteuerung.s:75  Fehler: ein konstanter Wert wird erwartet:
Kontrollieren Sie bitte die Schreibweise dieser Zeile.
 Erwarte Register ab: 15
Servo_Ansteuerung.s:76  Fehler: ein konstanter Wert wird erwartet:
Kontrollieren Sie bitte die Schreibweise dieser Zeile.
 Fehler: ein konstanter Wert wird erwartet:
Kontrollieren Sie bitte die Schreibweise dieser Zeile.
Servo_Ansteuerung.s:78  Fehler: ein konstanter Wert wird erwartet:
Kontrollieren Sie bitte die Schreibweise dieser Zeile.
 Erwarte Register ab: 15
Servo_Ansteuerung.s:79  Fehler: ein konstanter Wert wird erwartet:
Kontrollieren Sie bitte die Schreibweise dieser Zeile.
 Fehler: ein konstanter Wert wird erwartet:
Kontrollieren Sie bitte die Schreibweise dieser Zeile.
Servo_Ansteuerung.s:80  Fehler: ein konstanter Wert wird erwartet:
Kontrollieren Sie bitte die Schreibweise dieser Zeile.
 Erwarte Register ab: 15
Servo_Ansteuerung.s:81  Fehler: ein konstanter Wert wird erwartet:
Kontrollieren Sie bitte die Schreibweise dieser Zeile.
 Fehler: ein konstanter Wert wird erwartet:
Kontrollieren Sie bitte die Schreibweise dieser Zeile.
Servo_Ansteuerung.s:82  Fehler: ein konstanter Wert wird erwartet:
Kontrollieren Sie bitte die Schreibweise dieser Zeile.
 Erwarte Register ab: 15
Servo_Ansteuerung.s:83  Fehler: ein konstanter Wert wird erwartet:
Kontrollieren Sie bitte die Schreibweise dieser Zeile.
 Fehler: ein konstanter Wert wird erwartet:
Kontrollieren Sie bitte die Schreibweise dieser Zeile.
Servo_Ansteuerung.s:84  Fehler: ein konstanter Wert wird erwartet:
Kontrollieren Sie bitte die Schreibweise dieser Zeile.
 Erwarte Register ab: 15
Servo_Ansteuerung.s:85  Fehler: ein konstanter Wert wird erwartet:
Kontrollieren Sie bitte die Schreibweise dieser Zeile.
 Fehler: ein konstanter Wert wird erwartet:
Kontrollieren Sie bitte die Schreibweise dieser Zeile.
Servo_Ansteuerung.s:89  Fehler: ein konstanter Wert wird erwartet:
Kontrollieren Sie bitte die Schreibweise dieser Zeile.
Servo_Ansteuerung.s:91  Fehler: ein konstanter Wert wird erwartet:
Kontrollieren Sie bitte die Schreibweise dieser Zeile.
 Erwarte Register ab: 15
Servo_Ansteuerung.s:92  Fehler: ein konstanter Wert wird erwartet:
Kontrollieren Sie bitte die Schreibweise dieser Zeile.
 Fehler: ein konstanter Wert wird erwartet:
Kontrollieren Sie bitte die Schreibweise dieser Zeile.
Servo_Ansteuerung.s:93  Fehler: ein konstanter Wert wird erwartet:
Kontrollieren Sie bitte die Schreibweise dieser Zeile.
Servo_Ansteuerung.s:95  Fehler: ein konstanter Wert wird erwartet:
Kontrollieren Sie bitte die Schreibweise dieser Zeile.
 Erwarte Register ab: 15
Servo_Ansteuerung.s:96  Fehler: ein konstanter Wert wird erwartet:
Kontrollieren Sie bitte die Schreibweise dieser Zeile.
 Erwarte Register ab: 15
Servo_Ansteuerung.s:99  Fehler: ein konstanter Wert wird erwartet:
Kontrollieren Sie bitte die Schreibweise dieser Zeile.
 Erwarte Register ab: 15
Servo_Ansteuerung.s:101  Fehler: ein konstanter Wert wird erwartet:
Kontrollieren Sie bitte die Schreibweise dieser Zeile.
 Erwarte Register ab: 15
Servo_Ansteuerung.s:110  Fehler: ein konstanter Wert wird erwartet:
Kontrollieren Sie bitte die Schreibweise dieser Zeile.
 Fehler: ein konstanter Wert wird erwartet:
Kontrollieren Sie bitte die Schreibweise dieser Zeile.
Servo_Ansteuerung.s:111  Fehler: ein konstanter Wert wird erwartet:
Kontrollieren Sie bitte die Schreibweise dieser Zeile.
Servo_Ansteuerung.s:113  Fehler: ein konstanter Wert wird erwartet:
Kontrollieren Sie bitte die Schreibweise dieser Zeile.
 Erwarte Register ab: 15
Servo_Ansteuerung.s:114  Fehler: ein konstanter Wert wird erwartet:
Kontrollieren Sie bitte die Schreibweise dieser Zeile.
 Fehler: ein konstanter Wert wird erwartet:
Kontrollieren Sie bitte die Schreibweise dieser Zeile.
Servo_Ansteuerung.s:115  Fehler: ein konstanter Wert wird erwartet:
Kontrollieren Sie bitte die Schreibweise dieser Zeile.
 Fehler: ein konstanter Wert wird erwartet:
Kontrollieren Sie bitte die Schreibweise dieser Zeile.
Servo_Ansteuerung.s:117  Fehler: ein konstanter Wert wird erwartet:
Kontrollieren Sie bitte die Schreibweise dieser Zeile.
 Fehler: ein konstanter Wert wird erwartet:
Kontrollieren Sie bitte die Schreibweise dieser Zeile.
Servo_Ansteuerung.s:122  Fehler: ein konstanter Wert wird erwartet:
Kontrollieren Sie bitte die Schreibweise dieser Zeile.
 Fehler: ein konstanter Wert wird erwartet:
Kontrollieren Sie bitte die Schreibweise dieser Zeile.
Servo_Ansteuerung.s:127  Fehler: ein konstanter Wert wird erwartet:
Kontrollieren Sie bitte die Schreibweise dieser Zeile.
 Fehler: ein konstanter Wert wird erwartet:
Kontrollieren Sie bitte die Schreibweise dieser Zeile.
Servo_Ansteuerung.s:128  Fehler: ein konstanter Wert wird erwartet:
Kontrollieren Sie bitte die Schreibweise dieser Zeile.
 Fehler: ein konstanter Wert wird erwartet:
Kontrollieren Sie bitte die Schreibweise dieser Zeile.
Servo_Ansteuerung.s:129  Fehler: ein konstanter Wert wird erwartet:
Kontrollieren Sie bitte die Schreibweise dieser Zeile.
 Erwarte Register ab: 15
Servo_Ansteuerung.s:130  Fehler: ein konstanter Wert wird erwartet:
Kontrollieren Sie bitte die Schreibweise dieser Zeile.
 Fehler: ein konstanter Wert wird erwartet:
Kontrollieren Sie bitte die Schreibweise dieser Zeile.
Servo_Ansteuerung.s:132  Fehler: ein konstanter Wert wird erwartet:
Kontrollieren Sie bitte die Schreibweise dieser Zeile.
Servo_Ansteuerung.s:133  Fehler: ein konstanter Wert wird erwartet:
Kontrollieren Sie bitte die Schreibweise dieser Zeile.
 Fehler: ein konstanter Wert wird erwartet:
Kontrollieren Sie bitte die Schreibweise dieser Zeile.
Ende.

Wie könnte man DAS berichtigen.
Trotzdem...
das ganze hat mir schon SHER weitergeholfen und einen sehr guten 
DEnkansatz gegeben! Vielen Dank!
Doch kurz mal eine andere Frage: Haben die Ausgänge des ATTiny einen 
Buffer, der die Ausgänge solange konstant hält, wie kein neuer Wert 
eingegeben wird?

von Karl H. (kbuchegg)


Lesenswert?

Valentin Buck schrieb:

> Wie könnte man DAS berichtigen.

Entweder die Assembler Syntax auf Sysi anpassen.
Oder Sysi wegschmeissen und den Assembler nehmen, den geschätze 90% 
aller Assembler-Programmierer auch nehmen: Den von Hersteller des Chips

> Doch kurz mal eine andere Frage: Haben die Ausgänge des ATTiny einen
> Buffer, der die Ausgänge solange konstant hält, wie kein neuer Wert
> eingegeben wird?

Was anderes wär ja wohl ziemlich witzlos.
Aber warum probierst du das nicht einfach aus?

von Hannes Lux (Gast)


Lesenswert?

> @ Hannes Lux
> Wonit hast du dein Programm bitte geschrieben?

Mit AVR-Studio4. Deine Frage beweist übrigens, dass Du den verlinkten 
Thread nicht gelesen, sondern nur den Quelltext heruntergeladen hast. 
Denn in dem Thread gab es auch Probleme mit der Assemblierung, die auf 
Fehlbedienung des AVR-Studios beruhten.

> Mein gutes "altes" Sisy-AVR hat beim Linken schon über zwanzig Feher
> gefunden:

Ich möchte wissen, was daran "gut" sein soll. Die Fehler liegen nicht an 
meinem Quelltext, sondern an der Inkompatiblität von Sisy-AVR. Nimm 
ordentliches Werkzeug, dann lässt sich auch ordentlich arbeiten.

...

von sam (Gast)


Lesenswert?

> Doch kurz mal eine andere Frage: Haben die Ausgänge des ATTiny einen
> Buffer, der die Ausgänge solange konstant hält, wie kein neuer Wert
> eingegeben wird?


hat jemand diese frage verstanden?

ausgänge des ATTinys sind high oder low, jenachdem was im programm des 
µC steht.
solange ausgänge nicht neu gesetzt werden, bleiben sie in dem zustand 
den sie hatten.

ein schalter schaltet doch auch nicht wenn keiner draufdrückt

von STK500-Besitzer (Gast)


Lesenswert?

>hat jemand diese frage verstanden?

ja, ich.
Die Antwort ist: ja. Die Ausgänge sind gepuffert, da die CPU sonst ja 
die ganze Zeit damit beschäftigt wäre, diese auf dem aktuellen Stand zu 
halten.

von Hannes Lux (Gast)


Lesenswert?

> hat jemand diese frage verstanden?

Ja, habe ich. Aber da Karl-Heinz sie bereits erschöpfend beantwortet 
hat, bin ich nicht weiter darauf eingegangen.

Betreffs Sisy-Software... Es tut natürlich weh, einen Haufen Geld für 
ein Lernpaket bezahlt zu haben und dann festzustellen, dass es (da 
inkompatibel) wertlos ist. Nun ist nicht nur das Geld futsch, sondern 
auch das bereits Gelernte... ;-(

...

von Valentin B. (nitnelav) Benutzerseite


Lesenswert?

Nun gut,
das mit dem Buffer habe ich verstanden.
Aber welches Programm soll ich jetzt nehmen. Hat mal einer einen Link?

von Hannes Lux (Gast)


Lesenswert?

> Aber welches Programm soll ich jetzt nehmen.

AVR-Studio 4, siehe Beitrag "Re: Servoansteuerungschip-Selbstbau"

> Hat mal einer einen Link?

http://www.atmel.com/dyn/resources/prod_documents/AVRStudio4.16SP1.exe

...

von Valentin B. (nitnelav) Benutzerseite


Lesenswert?

@ Hannes Lux
Das Programm ist aber nicht das, was man auch installieren soll, sondern 
nur das  Update mit dem SP1. Die Versionen darunter, da muss man sich 
registrieren, bevor man da was downloaden kann. Sind die 
kostenpflichtig?
Nitnelav

von Christoph S. (mixer) Benutzerseite


Lesenswert?

Nein, du musst dich nur registrieren - kostet aber keinen cent!

von Hannes Lux (Gast)


Lesenswert?

Tja, ich habe lange keine neue Version mehr geholt, die vorhandene tut 
es noch. Registrieren musste man sich damals noch nicht.

...

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.