hallo leute, seid ungefähr zwei wochen versuche ich ein servo anzusteuern, aber leider vergebens. Ich benutzte Atmel Studio 6 und den uC ATMEGA128L (siehe http://www.robonova.de/store/product.php?productid=16147&cat=5&page=1). Den Code habe ich von da entnommen (http://www.mikrocontroller.net/articles/Modellbauservo_Ansteuerung "Signalerzeugung für 1 Servo (C)"). dass einzige was er macht, der Servo ruckelt ganz kurz (egal an welchen pin er angeklemmt wird) das war's dann auch. Für hilfe bin ich sehr dankbar. Wie sieht es eigentlich aus mit dem ATMEGA128L, er ist nicht in der Liste von Atmel Studio aufgeführt. Kann ich trotzdem den ATMEGA128 aus der Liste nehmen? Gruß JB
Das Servo muss an Port B 1 angeschlossen werden. Das BEispiel geht von 1Mhz Takt aus, hast du das auch? Gibt der Compiler irgendwelche Warnungen aus? Andere frage: Copy&Paste ist immer schlecht. Hast du dir Gedanken gemacht, wie die Sache funktioniert? Hast du ein Oszilloskop, mit dem du nachschauen könntest, wie das Signal aussieht, was der µC erzeugt bzw. ob überhaupt eins da ist? LG, Björn
Danke für die schnelle antwort. Björn R. schrieb: > Das Servo muss an Port B 1 angeschlossen werden. Wie kommst du auf Port B1? > Das BEispiel geht von 1Mhz Takt aus, hast du das auch? Gibt der Compiler >irgendwelche Warnungen aus? Ich denke nicht. Er gibt mir "Build succeeded" aus. Das mit dem F_CPU habe ich eh nicht so wirklich verstanden. > Andere frage: Copy&Paste ist immer schlecht. Hast du dir Gedanken > gemacht, wie die Sache funktioniert? meinst du den Code? >Hast du ein Oszilloskop, mit dem du nachschauen könntest, wie das Signal >aussieht, was der µC erzeugt bzw. ob überhaupt eins da ist? Nein habe ich nicht, da ich kein Oszilloskop besitze. ich weiß nicht wie das funktioniert, sorry. gruß jb
Da du keine Erfahrung hast probiere erst mal aus eine LED zum blinken zu bekommen. F_CPU ist deswegen wichtig, weil du ein feste Frequenz brauchst für den uC und ein einstellbares Duty Cycle. Wenn du das beherrscht bitte weiter machen. Bedenke auch, dass die Fuse BITS richtig gesetzt werden müssen, damit du den externen Quarz benutzen kannst.
wie erhalte ich denn die F_CPU? >Da du keine Erfahrung hast probiere erst mal aus eine LED zum blinken zu >bekommen. Würde ich gerne machen, aber die Zeit habe ich nicht.Sorry. ich stehe unter zeitdruck. >Bedenke auch, dass die Fuse BITS richtig gesetzt werden müssen, damit du >den externen Quarz benutzen kannst Was meinst du mit externen Quarz? das ist ja kompliziert als ich gedacht habe :( auf was muss ich denn alles achten, damit ich einen servo ansteuern kann? es ist sehr wichtig für mich. danke
jb schrieb: > wie erhalte ich denn die F_CPU? Das ist die Taktfrequenz, die DU am µC eingestellt hast. IM AUslieferungszustand ist das 1Mhz Wenn du einen Quarz angeschlossen hast UND dieser Quarz dann auch mit den Fusebits aktiviert wurde, dann ist F_CPU eben gleich der Quarzfrequenz. WEnn dein µC das kann, dann kann man den auch per Fuse und ganz ohne Quarz schneller laufen lassen. Aber wie auch immer: F_CPU ist die Angabe für den Compiler, wie schnell der µC läuft. Egal ob das jetzt mit einem Quarz, einem Oszillator oder dem internen RC-Oszi8llator gemacht wird AVR-Tutorial
> das ist ja kompliziert als ich gedacht habe :( Von nichts kommt nix. > auf was muss ich denn alles achten, damit ich einen > servo ansteuern kann? Das du deine Grundlagen gelernt hast > es ist sehr wichtig für mich. danke Das ist kein Argument. Selbst wenn es noch so wichtig ist, muss ein Chirurg auch erst mal seine Ausbildung absolvieren, ehe er das erste mal schneiden kann.
Was haltet ihr von den buch "AVR Hardware und C-Programmierung in der Praxis" von Florian Schäffer. :) Wie sieht es eigentlich aus mit dem ATMEGA128L, er ist nicht in der Liste von Atmel Studio aufgeführt. ich habe ATMEGA128 statt ATMEGA128L genommen.ist da ok? Ist es möglich das mir jemand ein Code für einen servo für meinen uC schreibt :D
@ jb (Gast) >>Da du keine Erfahrung hast probiere erst mal aus eine LED zum blinken zu >>bekommen. >Würde ich gerne machen, aber die Zeit habe ich nicht.Sorry. ich stehe >unter zeitdruck. Wenn du es eilig hast, gehe langsam. >>Bedenke auch, dass die Fuse BITS richtig gesetzt werden müssen, damit du >>den externen Quarz benutzen kannst >Was meinst du mit externen Quarz? Deinen Taktgeber, siehe AVR Fuses >das ist ja kompliziert als ich gedacht habe :( Jain. >auf was muss ich denn alles achten, damit ich einen servo ansteuern >kann? Vieles.
mh...da kann ich Karl Heinz nur Recht geben. Ich habe nur einen kleinen Tiny13 vor mir und kämpfe tagelang damit, um das Register TCCR0A zu verstehen. Ein sehr komplexes Thema "PWM"! Das ist nicht eben mal so aus der Hand zu schütteln. Grüße Rolf
Du musst ja mehr oder weniger genau eine Takt Frequenz von 1/20ms hin bekommen, wenn du einen Servo ansteuern willst . LED blinken lassen dauert 10 min., solange du das nicht kannst, brauchst du auch kein Servo. Wie sieht dein Makefile aus hast du das richtig erstellt? Lade XXX.c und dein Makefile mal hoch. Anbei ein Testfile dort musst du jeweils das Makfile und die C Datei ändern von MEGA 8 auf was auch immer und den CPU Takt und natürlich die Ports. makfile habe ich mit MFILE erstellt. Fuse bits mit AVR Burn-O-Mat und zum programmieren Programmers Notepad
> Würde ich gerne machen, aber die Zeit habe ich nicht.Sorry. ich stehe > unter zeitdruck. Anders dauert es noch länger. Es geht zumeist schneller selber den Code zu schreiben als fertigen Code zu benutzen. Zumindest wenn man keine Ahnung hat. Denn um den Code eines ANDEREN zu verstehen braucht man mehr erfahrung als eigenen Code zu schreiben.
jb schrieb: > Ist es möglich das mir jemand ein Code für einen servo für meinen uC > schreibt :D Sicher, hier im Markt kannst du dein Projekt vergeben: http://www.mikrocontroller.net/forum/markt
und du mußt den Code verstehen falls nicht Alles genau vorgegeben ist und dir bis ins i-Tüpfelchen erklärt wird. Falls jemand gewillt ist dies FÜR DICH zu machen. Jedoch hört sich die die Aussage "Ich stehe unter Zeitdruck" so an als gehe es um Hausaufgaben. Und die MACHT dir hier keiner, aber wir geben gerne Hilfestellug bei Problemen und Fragen. Wir bringen jedoch keinen copy&paste Code für dich zum laufen.
also, ich habe keine makefiles erstellt und kein fuse gesetzt oder wie auch immer. das einzige was ich gemacht habe, ist den code kopiert und in atmega studio eingefügt. aber wie ich sehe, braucht man mehr als nur kopieren und einfügen :( uwe schrieb: >Jedoch hört sich die die Aussage "Ich stehe unter Zeitdruck" so an als gehe es um Hausaufgaben die richtung stimmt fast :) statt eines LEDs kann man auch ein multimeter einsetzten? gruß
Rolf Hegewald schrieb: > mh...da kann ich Karl Heinz nur Recht geben. > Ich habe nur einen kleinen Tiny13 vor mir und kämpfe tagelang > damit, um das Register TCCR0A zu verstehen. > Ein sehr komplexes Thema "PWM"! Aber nur am Anfang, wenn man noch nichts darüber weiß. Hat man das Ganze erst mal verstanden, ist es geradezu trivial. (Wie fast alles im Leben) Und genau darum geht es: Ehe man sich an ein Projekt wagt, ist es vernünftig erst mal abseits vom Projekt eine bestimmte Funktionaliät zu 'erforschen'. Ist man dann im Zustand, das man sich mit der Hand an die Stirn klopft und ausruft "Hey, das ist doch eigentlich ganz simpel", dann ist das Ganze im Projekt im Handumdrehen implementiert. Und das Beste daran: Wenns nicht auf Anhieb klappt (weil man einen dummen Fehler gemacht hat), dann ist man sogar selbst in der Lage, in ein paar Minuten das Problem zu identifizieren und zu beheben.
alles klar, habe es verstanden. danke für die antworten. eine frage habe ich aber noch, wie sieht es denn aus mit avr studio 6 und ATMEGA128L sind die beide kompatibel? der atmega128l ist nicht in der liste aufgeführt. kann ich statt atmega128l den atmega128 nehmen? gruß jb
Da beide im selben Datenblatt abgehandelt werden, sind sie wohl softwaremässig soweit kompatibel. Die wenigen Stellen, an denen im Datenblatt der Mega128L explizit erwähnt wird, sind für die Programmierung alle irrelevant und beziehen sich nur auf elektrische EIgenschaften. (Mega128? Nicht vergessen die M-103 Fuse abschalten. Sonst geht eine Menge anderes Zeug schief)
>(Mega128? Nicht vergessen die M-103 Fuse abschalten. Sonst geht eine >Menge anderes Zeug schief) das wäre meine nächste frage...wo wird es denn abgeschaltet
hallo ich bin noch mal :) ist das nicht im roten kästchen die taktratea, also die F_CPU? :D
Könnte hinkommen. Es ist ein Quarz mit 7.3728 MHz. Da es diese Quarzfrequenz tatsächlich gibt und es sich dabei auch um einen sog. Baudratenquarz handelt ist das also gut möglich, dass dieser Quarz den µC taktet. Jetzt ist nur noch die Frage: Ist der Quarz auch aktiv? Das lässt sich mit einem Testprogramm, welches mittels _delay_ms(1000) alle 1 Sekunde einen Ausgansgpin toggelt (an dem zb eine LED sitzt) leicht ermitteln. Edit: Wo hast du das Board her? Ist das neu, oder ist da schon mal was drauf gelaufen? Wenn da schon mal was drauf gelaufen ist, dann würde ich die Wahrscheinlichkeit als hoch einschätzen, dass er Quarz aktiv ist, bzw. M103 abgeschaltet wurde. Nachmessen würde ich die Taktfrequenz in Form eines Delay-Blinktests aber trotzdem. Sicher ist sicher.
>Das lässt sich mit einem Testprogramm, welches mittels _delay_ms(1000) >alle 1 Sekunde einen Ausgansgpin toggelt (an dem zb eine LED sitzt) >leicht ermitteln. kann man anstatt eines LEDs einen multimeter verwenden, da ich jetzt keine LED zur Hand habe. Falls ja, wie ist der multimeter anzuklemmen? An GND und Signal?
jb schrieb: >>Das lässt sich mit einem Testprogramm, welches mittels _delay_ms(1000) >>alle 1 Sekunde einen Ausgansgpin toggelt (an dem zb eine LED sitzt) >>leicht ermitteln. > kann man anstatt eines LEDs einen multimeter verwenden, da ich jetzt > keine LED zur Hand habe. Falls ja, wie ist der multimeter anzuklemmen? > An GND und Signal? Du kannst verwenden was immer du willst. Hauptsache du kriegst mit ob der Pin im steten Wechsel 1 Sekunde auf High und 1 Sekunde auf Low ist. Ob das eine LED ist, ein Summer, eine per Föhn angetriebene Vuvuzela, ob du dir damit im Sekundentakt Elektroschocks verabreichst (nicht ernst gemeint) oder dem Goldfisch das Licht ein/ausschaltest .... die 1 Sekunde sind wichtig, nicht was du damit machst. Ja klar. Masse musst du sowieso immer verbinden. Also schwarzes Kabel vom Voltmeter an GND, rotes Kabel an den Pin. Am Voltmeter den entsprechenden Messbereich einschalten. Wobei: Bei einem Voltmeter würd ich die Zeit auf 5 Sekunden erhöhen, denn so digitale Voltmeter haben die Eigenschaft, dass der Zahlenwert ein bischen braucht bis er dann auf 5V ist. Ob bei deinen Messungen rauskommt, dass die Zeit anstelle von zb 5 Sekunden doch 4.8 Sekunden sind, ist nicht so wichtig. Da hast du dich dann vermessen (was bei einem Voltmeter nicht ungewöhnlich ist, seine Anzeige hängt ein wenig nach). Die UNterschiede um die es hier geht, sind 7.3Mhz zu 1Mhz. Also ein Faktor 7. Und den Unterschied zwischen 5 Sekunden und 35 Sekunden kann man dann mit freiem Auge gut sehen :-) Und besorg dir ein paar LED samt Vorwiderständen. Die braucht man immer wieder mal. Und sei es nur als Indikator, damit sich das Programm bemerkbar machen kann. Als Anfänger dahinprogrammieren, ohne eine Möglichkeit zu haben, wenigstens die allereinfachsten 'Statusmeldungen' ausgeben zu können, ist 'Stochern im Nebel'. Für einen Anfänger ist es mit das Wichtigste, eine wie auch immer geartete Möglichkeit zur Ausgabe zu haben. LED sind gut, UART ist besser, LCD ist auch besser. Nichts derartiges zu haben, ist wie der Versuch beim Auto einen Motorschaden zu diagnostizieren ohne die Motorhaube aufzumachen.
Karl Heinz Buchegger schrieb: >Edit: Wo hast du das Board her? Ist das neu, oder ist da schon mal was >drauf gelaufen? Wenn da schon mal was drauf gelaufen ist, dann würde ich >die Wahrscheinlichkeit als hoch einschätzen, dass er Quarz aktiv ist, >bzw. M103 abgeschaltet wurde. Nachmessen würde ich die Taktfrequenz in >Form eines Delay-Blinktests aber trotzdem. Sicher ist sicher. vom Prof :D das board ist neu p.s. ich habe ein bild hochgeladen wo der M103 (falls er das ist, siehe vorherigen beitrag) ausgeschaltet ist.
jb schrieb: > vom Prof :D das board ist neu Heißt das, du bist Student, und machst ein Projekt ohne Ahnung von den Grundlagen zu haben und ohne Zeit dir diese Grundlagen anzueignen und willst sogar noch dass andere deinen Code schreiben? Wie geht denn sowas? gruß cyblord
jb schrieb: > p.s. ich habe ein bild hochgeladen wo der M103 (falls er das ist, siehe > vorherigen beitrag) ausgeschaltet ist. Jau. Sieht wohl so aus als ob sie das wäre.
>Heißt das, du bist Student, und machst ein Projekt ohne Ahnung von den >Grundlagen zu haben und ohne Zeit dir diese Grundlagen anzueignen und >willst sogar noch dass andere deinen Code schreiben? Wie geht denn >sowas? grundlagen habe ich schon. bin erst im 2. semster und mit atmel habe ich noch nichts gemacht.
hallo bin jetzt bisschen mit allem verwirrt. Benötige ich einen burner, um den Code auf den uC zu übertragen oder bringt studio 6 alles mit. gruß
cyblord ---- schrieb: >Wie geht denn sowas? Du siehst doch, wie sowas geht. Man postet im Mikrocontroller Forum so lange, bis die ueblichen Leute, deren Leben von ihrem Helferkomplex bestimmt wird, anbeissen.
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
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.