www.mikrocontroller.net

Forum: Mikrocontroller und Digitale Elektronik Servos ansteurn mit Atmega8


Autor: Maquis (Gast)
Datum:
Angehängte Dateien:

Bewertung
0 lesenswert
nicht lesenswert
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)

Autor: Micha (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Bist du sicher das der Controller mit 8 Mhz läuft ?

Autor: Björn R. (sushi)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
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

Autor: Sinusgeek (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
> 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.

Autor: Maquis (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
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

Autor: Maquis (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Was ich noch fragen wollte, wie gut - schlecht funktioniert das auf 
Software Ebene ?

Sprich:
  _delay_ms(20); 

  PORTB |= (1 << 0);    

  _delay_ms(2); 

  PORTB &= ~(1 << 0);   

  _delay_ms(20);
usw.

Autor: P. S. (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Schlecht bis gar nicht.

Auch mit Interrupts darfst du dich ueber ein Zittern nicht wundern, wenn 
du den internen Oszillator verwendest.

Autor: ajax (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
>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.

Autor: Maquis (Gast)
Datum:
Angehängte Dateien:

Bewertung
0 lesenswert
nicht lesenswert
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

Autor: Hannes Lux (hannes)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
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.

...

Autor: Maquis (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
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.

Antwort schreiben

Die Angabe einer E-Mail-Adresse ist freiwillig. Wenn Sie automatisch per E-Mail über Antworten auf Ihren Beitrag informiert werden möchten, melden Sie sich bitte an.

Wichtige Regeln - erst lesen, dann posten!

  • Groß- und Kleinschreibung verwenden
  • Längeren Sourcecode nicht im Text einfügen, sondern als Dateianhang

Formatierung (mehr Informationen...)

  • [c]C-Code[/c]
  • [avrasm]AVR-Assembler-Code[/avrasm]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] - Link zu Artikel
  • Verweis auf anderen Beitrag einfügen: Rechtsklick auf Beitragstitel,
    "Adresse kopieren", und in den Text einfügen




Bild automatisch verkleinern, falls nötig
Bitte das JPG-Format nur für Fotos und Scans verwenden!
Zeichnungen und Screenshots im PNG- oder
GIF-Format hochladen. Siehe Bildformate.
Hinweis: der ursprüngliche Beitrag ist mehr als 6 Monate alt.
Bitte hier nur auf die ursprüngliche Frage antworten,
für neue Fragen einen neuen Beitrag erstellen.

Mit dem Abschicken bestätigst du, die Nutzungsbedingungen anzuerkennen.