Hi, bin noch Anfänger im Gebiet der Servo-Steuerung und hab mir deshalb ein Testprogramm aus dem Web gesucht und bin auch auf eines gestoßen. Nun hab ich das Problem das obwohl der Atmega8 die Mittelstelle ansteuern sollte, er den Servo in eine Seite dreht bis er ansteht und weiter... Weiß vlt. jemand wo der Fehler im Code liegen könnte, wäre sehr dankbar. grüße (Datei im Anhang)
Richtig, der Controller muss mit 8Mhz laufen. Also im Makefile die 8Mhz angeben, die Fuses richtig setzen, den richtigen Quarz verwenden. Ich weiß jetzt gerade nicht, ob der Mega8 sowas hat, der 2313 hats aber z.B.: Das Fuse CKDIV8 musst du deaktivieren... LG, Björn
> Das Fuse CKDIV8 musst du deaktivieren... Hat er nicht. Und die AVRs, die's haben, lassen sich auch per Software auf jeden erlaubten Systemtaktvorteiler einstellen. Das Verändern der CKDIV8-Fuse ist daher unnötig.
CKDIV8 hat er nicht. Und ja natürlich, der Atmega8 läuft mit 3686400Hz... Werde mal versuchen das anzupassen. Weiters verwende ich den "Int. RC Osc. 8 MHz; Start-up time: 6 CK + 64 ms" Sollte ich da einen anderen verwenden bzw. ist da eine externer Quarz notwendig ? thx
Was ich noch fragen wollte, wie gut - schlecht funktioniert das auf Software Ebene ? Sprich:
1 | _delay_ms(20); |
2 | |
3 | PORTB |= (1 << 0); |
4 | |
5 | _delay_ms(2); |
6 | |
7 | PORTB &= ~(1 << 0); |
8 | |
9 | _delay_ms(20); |
usw.
Schlecht bis gar nicht. Auch mit Interrupts darfst du dich ueber ein Zittern nicht wundern, wenn du den internen Oszillator verwendest.
>Auch mit Interrupts darfst du dich ueber ein Zittern nicht wundern, wenn >du den internen Oszillator verwendest. Das ist wohl eher eine theoretische als praktische Erkenntnis. Der interne Oszillator läuft ziemlich stabil, da zittert nix.
So... Habe jetzt nochmal einen anderen Code getestet, welcher mich etwas mehr angesprochen hat... Jedoch, gleiches Problem. Kann das vlt. irgendwie mit dem Board mit dem ich arbeite zusammen hängen? (Verwende das STK500) Und wie leicht kann ein Servo kaputt gehen ? grüße
Peter Stegemann wrote: > Schlecht bis gar nicht. > > Auch mit Interrupts darfst du dich ueber ein Zittern nicht wundern, wenn > du den internen Oszillator verwendest. Das wage ich zu bezweifeln! Dies hier: http://www.hanneslux.de/avr/mobau/7ksend/7ksend02.html läuft mit dem internen RC-Oszillator des Mega48 und da zittert kein Servo. Ist allerdings nicht mit Warteschleifen und auch nicht in einer Hochsprache programmiert. ...
Wenn ich das richtig verstehe reicht es wenn man diese Zeile "#define F_CPU 8000000UL" angibt um den Takt einzustellen, man also nichts in der Makefile ändern muss. Und warum kann ich im AVR Studio eigentlich nur 3.6MHz einstellen, der Atmega8 läuft ja immerhin mit 8-16... Hab jetzt versucht das Programm mit 4Mhz oder mit 8Mhz laufen zu lassen, hab eigentlich alles so angepasst das der Timer funktionieren sollte, aber er dreht noch immer in nur eine Richtung. Habe auch immer den passenden Int. Oszi eingestellt. Hab es jetzt auch auf Softwareebene (C) getestet, mit dem selbern Ergebnis.
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.