Die 1000Hz sind ja der zweite Divisor bei 16 000 000[Hz] / 128 / 1000 [Hz] = 125.
Die 125 sind der Wert für OCR2 um auf 1ms zukommen. 16 000 000[Hz] / 128 / 125 = 1000 [Hz].
Die 1000Hz sind ja der zweite Divisor bei 16 000 000[Hz] / 128 / 1000 [Hz] = 125.
Die 125 sind der Wert für OCR2 um auf 1ms zukommen. 16 000 000[Hz] / 128 / 125 = 1000 [Hz].
Hast Recht, siad - ich muss mir das aber noch genauer durchsehen. Pingelig: ich denke dass die theoretische Mitte bei OCR2 124 ist (das sind dann 125 Schritte ab 0). Ich muss mir das Ganze mal in Ruhe durcharbeiten, denn nu kann doch OCR2 nicht mehr kleiner als 125 werden in OCR2 = MILLISEC_BASE + ServoValue[ServoId]; wegen uint16_t ServoValue[NR_SERVOS]. Also mehr bis später.... Die 125 sind der Wert für OCR2 um auf 1ms zukommen ...
Ciao sagt der JoeamBerg
Hallo,
wurde auch die JTAGen-Fuse deaktiviert? Sonst gehen am PORTC beim ATmega32 einige Pins nicht richtig (PC2 bis 5).
Grüße, Bernhard
"Im Leben geht es nicht darum, gute Karten zu haben, sondern auch mit einem schlechten Blatt gut zu spielen." R.L. Stevenson
Hallo,
Ist es so gewollt dass die Servoperiode sich ständig ändert? Denn die Servoperiode ist in dieser Implementierung die Summe aller Servowerte (ServoValue, min: 8*0, max:8*1ms). Nach meinen wissen sollte die schon fix auf ~25ms stehen. Dein PWM Signal wandert von 0ms bis 1ms. Bei Servo-Motoren sollte aber die Signaldauer bei 1ms-2ms liegen.
So wie ich das sehe geht die Periodendauer von 8-16ms. (1-2ms pro Servo).
Fix muss sie nicht sein sollte aber um die 20ms herum liegen. Ich steuere bei mir momentan 4 Servos nach dem gleichen Prinzip an. Danach kommt noch ein Intervall mit fixer Periode damit ich ungefähr auf die 20ms komme. Funktioniert ohne Probleme.
ich hab das "MILLISEC_BASE +" übersehen.
Danke für den Hinweis mit der JTAGen-Fuse, diese war in der Tat nicht deaktiviert, jedoch, hat sich bisher nichts geändert.
Die Periodendauer ist wirklich im schlechtesten Fall nur 8 ms lang...und wie Siad ja schon geschrieben hat, sollte diese mindestens 20 ms lang sein.
Ich werde nachher ausprobieren, was passiert, wenn ich die Periodendauer länger mache... ich bin gespannt :-D
__________________________________________________ _____________
http://pe-products.jimdo.com/
Nöö. Sollte, vielleicht - aber der Standardwert kann mitunter weit über-/unterschritten werden.... wie ich das sehe geht die Periodendauer von 8-16ms ... sollte aber um die 20ms ...
Im RNWiki hatte ich ja ein paar Beispiele zur Ansteuerung vorgelegt, dass diese 20ms-Richtschnur zumindest für einige (analoge) Servos nicht wirklich gilt. Bis runter zu 8 ms Periodendauer habe ich noch nicht gehört, aber für etwa 10 bis 11 gibts Erfahrungswerte, leider ohne Nennung des Servotyps.
Seltsam kommt mir vor, dass Du nicht von markanten Änderungen nach Löschen des JTAG-Fuses schreibst. Sehr seltsam.
Ciao sagt der JoeamBerg
Ich melde mich auch wieder zurück...es wurde ruhig um das Projekt, da ich gerade in der Klausurphase bin, aber gut...
Bis jetzt habe ich den Quellcode noch nicht zum Laufen bekommen, und ich weiß um ehrlich zu sein auch nicht, was ich noch ausprobieren kann.
Jedoch habe ich auf eine ganz simple Art und Weise mit einem anderen Programm versucht nur einen Servo zu bewegen, was auch funktioniert hat.
Von daher liegt es anscheinend nicht an der Hardware.
Kann mir vlt jemand den Quellcode testen, ob er bei jemandem von euch funktioniert?
Grüße High Light
__________________________________________________ _____________
http://pe-products.jimdo.com/
Lesezeichen