Forum: Mikrocontroller und Digitale Elektronik Problem mit PWM beim Atmega8


von Rdlpfrmpft (Gast)


Angehängte Dateien:

Lesenswert?

Ich will über die zwei voneinander unabhängigen PWMs des Timer1 zwei
Servos ansteuern und blicke da irgendwie nicht so ganz durch.

Ich denke, am geschicktesten ist die "Phase and Frequency correct
PWM"

Da bei beiden PWMs die Zykluszeit gleich ist kann ich ja als Top- Wert
das ICR1 Register nehmen,oder?

Woher weiß er dann, wann er das OC1 bzw OC2 setten (beim raufzählen)
bzw resetten (beim runterzählen) soll?
Geschieht das über die Marken OCR1A bzw OCR1B?
Beim Anhang habe ich das so ausprobiert, jedoch hat der Timer dann
nicht rauf- und runtergezählt, sondern ist übers ICR1 hinaus bis $FFFF
und hat dann bei $0000 wieder angefangen.
Außerdem hat das OC1A bzw OC1B nicht umgeschaltet.

Ist das ein Fehler des AVR Studio oder habe ich irgendetwas falsch
gemacht???

Hoffentlich kann mir jemand helfen, da ich schon eine Weile
herumprobiere.

Danke,mfg Rdlpfrmpft

von Aleksej (Gast)


Lesenswert?

Am geschicktesten soll doch Fast-PWM sein ;) ich verwende am meistens
die 14. Funktion von dem Timer. Das Problem könnte auch daran liegen,
dass du deine TCNTs nicht initialisiert hast, vermute ich. Und wenn es
nicht hilft, dann versuche noch mal so was:

...
ldi temp,$2e
out OCR1AL,temp
out OCR1AH,temp2
ldi temp,$59
out OCR1BL,temp
out OCR1BH,temp2
ldi temp,0b11110000
out TCCR1A,temp
ldi temp,0b00010011
out TCCR1B,temp
;!!!!!!!!!
ldi temp,$2e
out OCR1AL,temp
out OCR1AH,temp2
ldi temp,$59
out OCR1BL,temp
out OCR1BH,temp2
;!!!!!!!!!

Ich hab schon ähnliche Probleme bei dem 90s2313 mit soclhem Trick
gelöst...

von Aleksej (Gast)


Lesenswert?

Und noch eine Bemerkung - zuerst stellt man die OCR1AH und OCR1BH ein,
dann kommen die low bytes

von Rdlpfrmpft (Gast)


Lesenswert?

Danke

nachdem ich es heute nochmal mit demselben programm probiert habe,
klappte auf einmal das umschalten der OC1A bzw OC1B bei einem compare
match von TCNT1 mit OCR1A bzw OCR1B,jedoch überging er den wert von
ICR1,wo er eigentlich bei einem compare match mit ICR1 nach unten
tählen sollte....

Brauch ich da spezielle einstellungen in den timer interrupt
registern??

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
Noch kein Account? Hier anmelden.