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.
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
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.
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?
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.
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?
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
Der Vergleich passt irgendwie garnicht. Da Pic keine Sprache sondern ein
Hardwarekomponent ist, welcher in der Sprache Assembler beschrieben
werden kann.
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
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
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.
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
> 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.
Juergen schrieb:> Solche Vergleiche haben eigentlich keinen großen Nutzen
Das stimmt wohl...aber "Karl Heinz Buchegger" glaubt ja scheinbar alles
besser zu wissen.
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).
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.
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.
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.
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 ;)
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.
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.
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
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
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.
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
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 ;)
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.