Moin!
Ich hab ein Problem bei dem ich überhaupt nicht mehr weiter weiß.
Ich habe einen Servo mit Takteingang an den OC1A Pin meines ATMega32 angeschlossen. Mein µC wird mit 16MHz getaktet. Ich habe einen Prescaler von 256 gewählt und ein 9-Bit-PWM (Invert).
Hatte mir das folgendermaßen gedacht:
Die Zeit bis Top ist 8,192ms. Das folgt aus 1/(16.000.000/256/512).
Also is die ganze Periode 16,384ms, weil der Zähler ja einmal rauf und einmal runterzählt.
Wenn ich jetzt einen impuls von 1ms haben will (linksanschlag) müsste ich doch rechnen: 8,129ms/512=0,016ms (also ist ein Increment des Zählers 0,016ms lang. Dann 0,5ms/0,016ms=31,25 also ungefähr 32 Incremente. Dann 512-32=480. Also muss ich denn OCR1A auf 480 einstellen, weil 2*0,5ms 1ms ist. Bei Invert-PWM steht ja im Datenblatt "Set OC1A
on compare match when upcouning Clear OC1A on Compare match when downcounting"
Mein servo läuft aber nicht bin 0° sondern nur bis 45°.
Hoffe mir kann da jemand einen Tipp geben. Wäre euch unendlich dankbar!!! Ich kann mir das nämlich überhaupt nicht erklähren.
MfG Jan