Forum: Mikrocontroller und Digitale Elektronik Servo Programm


von Bionade (Gast)


Lesenswert?

Hallo,
wie kann ich ganz simpel einen Servo über einen Pic ansteuern?
Kann mir jemand ein "Assembler Standardprogramm" geben, bei dem sich 
z.B. durch Taster Betätigung der Servo 90° dreht?
Danke im voraus.

: Gesperrt durch User
von Steffen R. (stevven)


Lesenswert?


von Bionade (Gast)


Lesenswert?

Dann bedank ich mich mal für die schnelle Antwort :)

von Bionade (Gast)


Lesenswert?

Im Programm des 2. Links steht oben das der Servo an einem beliebigen 
Pin an Port B angeschlossen wird. Im Programm selbst steht aber bei 
"servoPuls": out PortD, r16
Müsste dann nicht out PortB stehen?
und steht r16 für Pin 16?
Danke im Voraus

von Robo (Gast)


Lesenswert?

Hat dazu niemand eine Antwort?

von Karl H. (kbuchegg)


Lesenswert?

Bionade schrieb:
> Im Programm des 2. Links steht oben das der Servo an einem beliebigen
> Pin an Port B angeschlossen wird. Im Programm selbst steht aber bei
> "servoPuls": out PortD, r16
> Müsste dann nicht out PortB stehen?

Richtig.
Tatsächlich ist es aber ein Tippfehler im beschreibenden Text. Um das 
Programm von Port D auf Port B umzustellen, müssen auch noch andere 
Dinge angepasst werden (zb die DDRx Register-Bezeichnung)

> und steht r16 für Pin 16?

Nein. Das steht für Register r16. Zurück an den Anfang und das Assembler 
Tutorial von vorne durchmachen.

von Bionade (Gast)


Lesenswert?

ok, also da ich nur einen PIC 16F84 hab und mir nur PortA bzw. PortB zur 
Vervügung stehen, muss ich eigentlich nur statt PortD, PortB schreiben 
bzw. DDRB. Ansonsten bleibt alles gleich, richtig?

von Karl H. (kbuchegg)


Lesenswert?

Bionade schrieb:
> ok, also da ich nur einen PIC 16F84 hab und mir nur PortA bzw. PortB zur
> Vervügung stehen, muss ich eigentlich nur statt PortD, PortB schreiben
> bzw. DDRB. Ansonsten bleibt alles gleich, richtig?


Falsch,
Ein PIC ist ein völlig anderer Prozessor. Der funktioniert anders, hat 
andere Befehle, andere On-Board Hardware mit anderen 
Konfigurationsregistern und die Bits in den Konfigurationsregistern 
heißen auch anders und bedeuten etwas völlig anderes.

Kurz und gut: Mit dem Programm kannst du so erst mal nur eines anfangen: 
Du kannst dir ansehen, wei das in AVR Assembler in diesem Beispiel 
gemacht wurde (und ich muss zugeben, dass dieses Beispiel nicht wirklich 
das gelbe vom Ei ist, wird Zeit dass ich die restlichen noch 
ausstehenden Fälle ergänze) und dann das Programm mühsam nach PIC 
übertragen. Ist aber nicht sehr sinnvoll. Denn was das Ziel ist, kannst 
du auch hier nachlesen
Modellbauservo Ansteuerung
und eine Warteschleife, die eine bestimmte definierte Zeitdauer 
abwartet, solltest du in Assembler schon alleine hinkriegen. Selbst wenn 
das im Endeffekt nicht die Methode ist, die man beim Roboterbau benutzen 
wird.

von Bionade (Gast)


Lesenswert?

Tut mir leid aber was soll bitte der Unterschied von AVR Assembler und 
PIC sein?...das eine ist doch das Programm für das andere oder vertreh 
ich jetzt was?
Denn irgendwie muss ich doch den Servo mittels PIC steuern können und 
nicht nur durch einen Empfänger?

von Karl H. (kbuchegg)


Lesenswert?

Tut mir leid, aber was soll jetzt der Unterschied ziwschen Englisch und 
Kisuaheli sein. Beides sind doch Sprachen mit denen sich Menschen 
verständigen können. Warum versteh mich der Buschmann nicht, wenn ich 
Englisch mit ihm spreche?

Weil  Kisuaheli eben nicht gleich Englisch ist!

Weil PIC eben nicht gleich AVR ist!
Wenn du einen PIC programmieren willst, dann musst du schon in seiner 
Sprache mit ihm sprechen.

http://www.sprut.de/electronic/pic/index.htm

von Bionade (Gast)


Lesenswert?

Der Vergleich passt irgendwie garnicht. Da Pic keine Sprache sondern ein 
Hardwarekomponent ist, welcher in der Sprache Assembler beschrieben 
werden kann.

von Juergen (Gast)


Lesenswert?

Der Vergleich passt schon, wenn man weiß wovon man spricht.
Assambler für PIC != Assambler für AVR
Die beiden haben unterschiedliche Befehlssätze, andere Register usw.

Gruß
Jürgen

von Bionade (Gast)


Lesenswert?

Schon klar aber dann sind es immer noch die selben Sprachen.
Man könnte es höchstens mit Dialekten Vergleichen.
Wenn man weiß wovon man spricht!

von spess53 (Gast)


Lesenswert?

Hi

>Schon klar aber dann sind es immer noch die selben Sprachen.
>Man könnte es höchstens mit Dialekten Vergleichen.
>Wenn man weiß wovon man spricht!

Aber nur, wenn man es weiß. Welche Prozessoren/Controller hast du schon 
in Assembler programmiert, das du das beurteilen kannst?

MfG Spess

von Karl H. (kbuchegg)


Lesenswert?

Bionade schrieb:
> Schon klar aber dann sind es immer noch die selben Sprachen.

Der Vergleich geht ja auch eher so

PIC          <==>   Amerikaner, der Englisch spricht
AVR          <==>   Buschmann, der Kisuaheli spricht


> Man könnte es höchstens mit Dialekten Vergleichen.

Nö, kann man nicht.

Beide Sprachen, Englisch und Kisuaheli werden durch Laute gebildet. Da 
ist also die Gemeinsamkeit. Genauso wie beide "Assembler-Dialekte" als 
einzige Gemeinsamkeit die Verwendung von Buchstaben aus dem lateinischen 
Alphabet haben.
Wenn dir das genügt um von Dialekten zu sprechen, meinetwegen

Aber du wirst es schwer haben, mir Englisch und Kisuaheli als 2 Dialekte 
derselben Sprache zu verkaufen.

> Wenn man weiß wovon man spricht!

Du sagst es: Wenn man weiß wovon man spricht.

von Bionade (Gast)


Lesenswert?

Aso bestimmt un mit was willst du dann C und Assembler vergleichen?
Mit Welten?...anscheinend hat hier keiner von euch richtig Ahnung!

von Juergen (Gast)


Lesenswert?

Solche Vergleiche haben eigentlich keinen großen Nutzen, aber da wir ja 
alle zusammen so schön darauf herumreiten  probier ich's mal ;-)
C wäre dann so eine Art globale Sprache, die vom jeweiligen Assambler in 
den Assembler-Code für den entsprechenden Controller übersetzt werden 
kann.
Die Namen/Adressen der Register, Ports usw. im jeweiligen Controller 
muss man trotzdem wissen, hierfür legt man sich dann in C einprägsame 
Namen an, so Ähnlich wie Städtenamen, damit man nicht immer in 
Koordinaten beschreiben muss wohin man in Urlaub fährt ;-)

Gruß
Jürgen

von Wegstaben V. (wegstabenverbuchsler)


Lesenswert?

> Man könnte es höchstens mit Dialekten Vergleichen.


Dialekte in Zusammenhang mit Assembler könntest du mit Vorsicht anwenden 
bei gleichartigen Prozessor-Familien. So gibt es (sowohl in der PIC als 
auch in der AVR-"Welt") verschieden gut und umfangreich ausgestattete 
Controller, z.B. welche mit mehr oder weniger Speicher, mehr oder 
weniger Schnitttsellenvarianten etc.

von Bionade (Gast)


Lesenswert?

Juergen schrieb:
> Solche Vergleiche haben eigentlich keinen großen Nutzen

Das stimmt wohl...aber "Karl Heinz Buchegger" glaubt ja scheinbar alles 
besser zu wissen.

von uwe (Gast)


Lesenswert?

Da man bei PWM aber hauptsächlich die Hardware benutzt die in den µC 
eingebaut ist (und diese komplett anders ist) macht es wenig bis 
überhaupt keinen sinn soetwas zu tun (eine konvertierung). Einen 
Algorythmus von einer architektur zur anderen zu portieren macht mehr 
Sinn und zwar am meißten wenn man eine Hochsprache wie C,Pascal usw. 
verwendet und standartlibrarys verwendet bzw. units. Auch schon die 
unterschiedliche Prozessorarchitektur kann große probleme bereiten (z.B. 
bedingte Ausführung von Befehlen im eigentlichen Opcode, unterschieliche 
adressierungsarten und Datenpfade wie Harvard und von Neuman 
Architektur. (Bring mal sich zur Laufzeit verändernden Code auf ner 
Harvard Maschine zum laufen !). Das soll aber nicht heißen das es nicht 
geht, der resultierende Code ist halt suboptimal ( oder auch Sch..e 
genannt) Jedesmal wenn der Code sich ändert den entsprechenden Block im 
Flash Erasen und neu Flashen. Oder die Adressierungsart als 
Unterprogramm implementieren. Wenn dann auch noch Architektur 
spezifische Hardware wie FFT Beschleuniger oder ein Programmierbarer 
Interuptcontroller benutzt werden ist es einfacher die Architektur zu 
wechseln. Oder hast du ne Idee wie man die Interuptpriorität verändert 
wenn sie festgelegt ist und man eine andere Reihenfolge braucht um die 
Korreckte Funktion zu erhalten.
Kurz und knapp Mikrocontroller ist auch nicht gleich CPU. Eine CPU zu 
wechseln wenn der Code in einer Hochsprache geschrieben ist kann gut 
klappen. Das ganze System mit perepherie zu wechseln heißt das man 
trotzdem den Code umschreiben muß (und zwar erheblich).

von Bionade (Gast)


Lesenswert?

uwe schrieb:
> Das ganze System mit perepherie zu wechseln heißt das man
> trotzdem den Code umschreiben muß

hat ja niemand was dagegen gesagt.

von Karl H. (kbuchegg)


Lesenswert?

Bionade schrieb:
> Juergen schrieb:
>> Solche Vergleiche haben eigentlich keinen großen Nutzen
>
> Das stimmt wohl...aber "Karl Heinz Buchegger" glaubt ja scheinbar alles
> besser zu wissen.

Na ja.
Um dich zu übertrumpfen reicht es alle mal.

Der Vergleich war eigentlich dazu gedacht, dir klar zu machen, dass 
Assembler eben nicht gleich Assembler ist. So wie es verschiedene 
gesprochene Sprachen gibt, die unterschiedlich funktionieren, so gibt es 
auch unterschiedliche Assembler Sprachen. Nämlich für jede 
Prozessorfamilie eine eigene. Die ist nicht genormt oder sonst irgendwie 
festgelegt, sondern der Hersteller des µC denkt sich da aus was ihm 
gefällt und was sich durch die Architektur des µC aufdrängt.

von Bionade (Gast)


Lesenswert?

Karl Heinz Buchegger schrieb:
> Um dich zu übertrumpfen reicht es alle mal.
1. Das kann gut sein, da du wahrscheinlich um einiges älter als ich 
bist.
2. wirklich weiterhelfen konntest oder wolltest du mir trotzdem nicht.
3. In diesem Beispiel hast du dir eher ein Eigentor geschossen.

von Karl H. (kbuchegg)


Lesenswert?

Bionade schrieb:
> Karl Heinz Buchegger schrieb:
>> Um dich zu übertrumpfen reicht es alle mal.
> 1. Das kann gut sein, da du wahrscheinlich um einiges älter als ich
> bist.

Da kannst du einen drauf lassen

> 2. wirklich weiterhelfen konntest oder wolltest du mir trotzdem nicht.

In dem Punkt hast du recht.
Und ich sag dir auch warum: Weil ich von PIC nichts verstehe. Ich kann 
dir in 3 Minuten auf einem AVR eine Servoansteuerung bauen, aber von PIC 
habe ich keine Ahnung.

Mein 'Schieben', dass du doch bitte aufhören sollst AVR und PIC als 
dasselbe anzusehen und dich im PIC Lager erkundigen und nach Beispielen 
suchen musst, hast du als persönlichen Angriff aufgefasst. Du wolltest 
ganz einfach nicht wahrhaben, dass das verschiedene Prozessoren sind, 
und du ausser der Idee einer Servoansteuerung aus den AVR Beispielen 
nichts mitnehmen kannst.

Aber so sehr du auch mit dem Fuss aufstampfst und "ich will" schreist, 
das lässt deinen µC unbeeindruckt.

Siehe zb das 8. Posting von oben (ich kann von hier aus leider keinen 
Link setzen)

> 3. In diesem Beispiel hast du dir eher ein Eigentor geschossen.

Danke für den Lacher.

von steffen (Gast)


Lesenswert?

TROLLololllooo lololooo lolloloooo TROLL
ich frage mich warum noch irgendjemand dem & Robo schreibt??!!

von Bionade (Gast)


Lesenswert?

Karl Heinz Buchegger schrieb:
> Weil ich von PIC nichts verstehe

Ok es kam eben für mich so rüber als ob du davon Ahnung hättest und mir 
nicht weiterhelfen wolltest.

Karl Heinz Buchegger schrieb:
> Du wolltest
> ganz einfach nicht wahrhaben, dass das verschiedene Prozessoren sind

Doch du hast dich nur etwas undeutlich ausgedrückt, sodass es bei mir zu 
Verwirrung kam.

steffen schrieb:
> TROLLololllooo lololooo lolloloooo TROLL

ich will nicht "rum trollen", ich wollt nur eine nützliche Antwort, 
welche ich mitlerweile nach 10000 unnützlichen Komentare hier, in einem 
anderem Beitrag bekommen hab, da die meisten hier scheinbar nur auf 
Diskussionen aus sind

Karl Heinz Buchegger schrieb:
> Danke für den Lacher.

Ich hab nicht so einen lächerlichen Kuhmist wie du hier mit den 
Vergleichen geschrieben ;)

von gaast (Gast)


Lesenswert?

Bionade schrieb:
> ich will nicht "rum trollen", ich wollt nur eine nützliche Antwort,
> welche ich mitlerweile nach 10000 unnützlichen Komentare hier, in einem
> anderem Beitrag bekommen hab, da die meisten hier scheinbar nur auf
> Diskussionen aus sind

Ja ne klar:

Bionade schrieb:
> Der Vergleich passt irgendwie garnicht. Da Pic keine Sprache sondern ein
> Hardwarekomponent ist, welcher in der Sprache Assembler beschrieben
> werden kann.

Bionade schrieb:
> Schon klar aber dann sind es immer noch die selben Sprachen.
> Man könnte es höchstens mit Dialekten Vergleichen.
> Wenn man weiß wovon man spricht!



Große Worte für jemanden, der es angeblich nicht mal schafft, einen 
Servo zum laufen zu bekommen, geschweige denn weiß, dass Assembler 
verschiedener so unterschiedlicher Plattformen doch tatsächlich nicht 
kompatibel ist, meinst du nicht auch?
Troll.

von Bionade (Gast)


Lesenswert?

gaast schrieb:
> geschweige denn weiß, dass Assembler
> verschiedener so unterschiedlicher Plattformen doch tatsächlich nicht
> kompatibel ist, meinst du nicht auch?

was labersch du

gaast schrieb:
> Troll.

Du trollst doch gerade.
Troll.

von spess53 (Gast)


Lesenswert?

Hi

>Ich hab nicht so einen lächerlichen Kuhmist wie du hier mit den
>Vergleichen geschrieben ;)

Nur zur Erinnerung: Das Ganze fing doch erst an, als du diesen Müll 
geschrieben hast:

>ok, also da ich nur einen PIC 16F84 hab und mir nur PortA bzw. PortB zur
>Vervügung stehen, muss ich eigentlich nur statt PortD, PortB schreiben
>bzw. DDRB. Ansonsten bleibt alles gleich, richtig?

MfG Spess

von Bionade (Gast)


Lesenswert?

spess53 schrieb:
> Nur zur Erinnerung: Das Ganze fing doch erst an, als du diesen Müll
> geschrieben hast

mit dem mist meinte ich auch die Vergleiche. Lese erst alles richtig 
durch bevor du irgendwas behauptest

von gaast (Gast)


Lesenswert?

spess53 schrieb:
> Nur zur Erinnerung: Das Ganze fing doch erst an, als du diesen Müll
> geschrieben hast:

Meine Güte, fütter ihn doch einfach nicht, dass  es ihm von Anfang an 
nicht etwa um hilfesuche sondern ums trollen ging, sollte ja 
mittlerweile klar sein.

von Bionade (Gast)


Lesenswert?

gaast schrieb:
> Meine Güte, fütter ihn doch einfach nicht, dass  es ihm von Anfang an
> nicht etwa um hilfesuche sondern ums trollen ging, sollte ja
> mittlerweile klar sein.

Sagte der Obertroll

von spess53 (Gast)


Lesenswert?

Hi

>Lese erst alles richtig durch bevor du irgendwas behauptest

Dann kannst du mir Unwissenden die Stelle Zeigen, wo das steht.

MfG Spess

von Bionade (Gast)


Lesenswert?

Karl Heinz Buchegger schrieb:
> Tut mir leid, aber was soll jetzt der Unterschied ziwschen Englisch und
> Kisuaheli sein. Beides sind doch Sprachen mit denen sich Menschen
> verständigen können. Warum versteh mich der Buschmann nicht, wenn ich
> Englisch mit ihm spreche?
>
> Weil  Kisuaheli eben nicht gleich Englisch ist!

Da fing es mit den Vergleichen an ;)

von Karl H. (kbuchegg)


Lesenswert?

Jungs lasst es gut sein.
Was von Bionade zu halten ist, hat er selber eindrucksvoll demonstriert 
und ändern wird er sich nicht.
Manche sind eben in ihrer Borniertheit lernresistent. Ich werd darüber 
hinwegkommen :-)
Kümmern wir uns lieber um Leute, die Hilfe auch annehmen.

Dieser Beitrag ist gesperrt und kann nicht beantwortet werden.