Danke dir, sowas hatte ich gesucht kannst du mir nur erklären wie es bei nem 8MHz Atmega aussähe bzw. was es mit den Prescaler und der Zyklusberechnung ICR1 auf sich hat?
Was müsste ich wie manipulieren um den einen oder anderen Servo anzusteuern?
Danke dir, sowas hatte ich gesucht kannst du mir nur erklären wie es bei nem 8MHz Atmega aussähe bzw. was es mit den Prescaler und der Zyklusberechnung ICR1 auf sich hat?
Was müsste ich wie manipulieren um den einen oder anderen Servo anzusteuern?
Facebook Gruppe für Robotik, Elektronik und Modellbau Enthusiasten. https://www.facebook.com/groups/1396674970640627
Hallo
Mit dem Prescaler erzeugt man den heruntergeteilten Takt für den Timer aus dem Takt des Kontrollers. Der Takt des Timers ist um der Faktor des Vorteilers geringer als der Kontrollertakt. Ein 8MHz-Mega8 zählt mit Prescaler /8 in 20ms bis 8000000/8*0,020=20000. In einer Millisekunde zählt er bis 1000.
Weil es so einfach ist, wählt man den Mode 14 "Fast-PWM mit ICR1 als TOP" und begrenzt den Zählbereich mit dem IRC1-Register auf 20000. Das Zählregister TCNT1 zählt dann von 0 (Bottom) nach 20000 (Top) und wird beim Erreichen von Top wieder auf Bottom gesetzt. Ein Zyklus dauert nun 20ms.
Das Vergleichsregister OCR1A (A für Kanal A) wird mit 1000 geladen und der Ausgang OC1A wird so eingestellt, dass der Ausgang (beim Mega8 ist OC1A der Pin PB1) bei TCNT1==Bottom auf High und bei TCNT1==OCR1A wieder auf Low gesetzt wird. Wenn dann noch das Datenrichtungsregister auf Ausgang konfiguriert ist, wird am Pin PB1 ein Impuls ausgegeben,der 1ms dauert. Wenn man nun den Wert in OC1A ändert, ändert sich auch die Impulsdauer.
In den Registern TCCR1A und TCCR1B (hier bezeichen A und B die zwei Register und nicht die zwei Kanäle!) werden der Prescaler (CS), der Modus (WGM) und die Ansteuerung des Ausgang (COM1A0 und COM1A1, A ist hier wieder der Kanal) durch setzen der entsprechenden Bits ausgewählt.
Ich habe die Datenblätter nur überflogen, aber ich denke, die Register vom Mega8 und vom Mega256 stimmen in etwa überein. Bis auf das Setup des Pins kannst du deshalb die Konfiguration von oben übernehmen.
Mit OCR1A beeinflußt man die Impulsdauer an OC1A (PB1). Mit OCR1B funktioniert das dann auch mit OC1B an PB2, wenn du COM1B0 und COM1B1 und das DDR für Pin PB2 auch konfiguriert hast. Der Prescaler, der Mode, das Zählregister und die Einstellung für Top gilt für beide Kanäle.Was müsste ich wie manipulieren um den einen oder anderen Servo anzusteuern?
Übrigends läuft das alles automatisch im Hintergrund ohne dein Programm zu beeinflussen oder gar zu bremsen.
Gruß
mic
Geändert von radbruch (21.02.2015 um 19:29 Uhr) Grund: Kanal B hinzugefügt
Bild hier
Atmel’s products are not intended, authorized, or warranted for use
as components in applications intended to support or sustain life!
Vielen Dank für die ausführliche Erklärung, damit kann ich mal was Anfangen. Hier wäre wohl ein Oszi nicht schlecht ... leider sind die ja so teuer =/
Hab mal einen gesehen, der es über einen PC laufen ließ, gibts da Oszi Hardware für PC? Was haltet ihr davon?
Facebook Gruppe für Robotik, Elektronik und Modellbau Enthusiasten. https://www.facebook.com/groups/1396674970640627
Und was taugen diese Logic Analyzer im vergleich zu normalen Digital Oszis?
Facebook Gruppe für Robotik, Elektronik und Modellbau Enthusiasten. https://www.facebook.com/groups/1396674970640627
Das Oszi ist dein Servo. Letztlich ist es doch egal, wie lange der Impuls ist. Wichtig ist nur, dass das Servo in erkennt.Hier wäre wohl ein Oszi nicht schlecht
Bild hier
Atmel’s products are not intended, authorized, or warranted for use
as components in applications intended to support or sustain life!
Schon, es geht mir eher um das Verständnis des Ganzen. Das Oszi würde mir Zeigen, wie das Signal sich verändert und würd sicherlich mehr aushalten als mein Servo im Falle eines Fehlers.
Je tiefer ich in die elektronik Themen eintauche, desto bewusster wird mir, dass das absolut kein billiges Hobby ist =/
Facebook Gruppe für Robotik, Elektronik und Modellbau Enthusiasten. https://www.facebook.com/groups/1396674970640627
Lesezeichen