Dimmen der PWM bei timer0 ATmega 32

Gast #6166917
Lesenswert?

moin
vieleicht hat jemand einen hinweis,

folgendes szenario:
Atmega 162

5 PWM Kanäle :

alle über die hardware PWM :
init :

TCCR1A |= ((1<<WGM10)| (1<<COM1B1 )  |(1<<COM1A1));
TCCR1B |= ((1<<CS11)|(1<<CS10) );

TCCR3A |=  ((1<<WGM30)|(1<<COM3A1)| (1<<COM3B1 ));
TCCR3B |= ((1<<CS31) | (1<<CS30) ); //

TCCR0  |=  ((1<<WGM00) | (1<<CS01)  | (1<<COM01) | (1<<CS00));

bei 8 Mhz sind das 250Hz.

soweit funktioniert es.

Einstellung der Dimmfrequenz funktioniert sauber,
nur bei TCCR0 habe ich das problem, das während des Dimmen in OCR0 auf 
dem Kanal (und nur da)das Licht flackert. als würde er abschalten.
Ich habe ca.100 ms zwischen den Dimmsteps bei 50 Steps.

Interrupts kommen zum Zeitpunkt des Dimmens nicht.

Irgendjemand eine Idee ? Habe ich in 300 Seiten doch noch was übersehen?
Gast #6168033
Lesenswert?

kurze Rückmeldung. das war es!

ich habe trotzdem noch eine Frage. Jemand hat es in Bascom gemacht, dort 
funktionierte es auch ohne fast pwm. Ich habe kein Bascom und bin damit 
auch nicht vertraut.

Ich könnte mir nur erklären, das beim setzen von ORC0 der Bascom 
Compiler
automatisch ein „warte bis compare „ macht und das setzt.

wäre mal interessant, was da so im Hintergrund gemacht wird.

Vieleicht hat da ja jemand ein Assembler Listing zum setzen von ORC0.

so long
Gast #6168048
Lesenswert?

>> Keine Doppelpufferung des Timer0 Compareregisters ...?
> das wirds wohl sein. danke für den hinweis.ich versuchs mal
> mit phase pwm danke !

> kurze Rückmeldung. das war es!

Das wundert mich jetzt (allerdings ohne es genauer angeschaut zu haben): 
im Datenblatt des ATmega162 steht: The OCR0 Register is double buffered 
when using any of the Pulse Width Modulation (PWM) modes.
Gast #6168075
Lesenswert?

S. Landolt schrieb:
>>> Keine Doppelpufferung des Timer0 Compareregisters ...?
>> das wirds wohl sein. danke für den hinweis.ich versuchs mal
>> mit phase pwm danke !
>
>> kurze Rückmeldung. das war es!
>
> Das wundert mich jetzt (allerdings ohne es genauer angeschaut zu haben):
> im Datenblatt des ATmega162 steht: The OCR0 Register is double buffered
> when using any of the Pulse Width Modulation (PWM) modes.

Dachte ich auch...
aber :

.."except the double buffer feature of the output
compare unit is enabled in the fast PWM mode."

das steht in den anderen Modes nicht.
Gast #6168084
Lesenswert?

Der Satz lautet vollständig:
.... This feature is similar to the OC0 toggle in CTC mode, except the 
double buffer feature of the output compare unit is enabled in the fast 
PWM mode.

Und das interpretiere ich so, dass im fast-PWM-Modus eben doppelt 
gepuffert wird, im Gegensatz zum CTC-Modus.
Gast #6168163
Lesenswert?

S. Landolt schrieb:
> Der Satz lautet vollständig:
> .... This feature is similar to the OC0 toggle in CTC mode, except the
> double buffer feature of the output compare unit is enabled in the fast
> PWM mode.
>
> Und das interpretiere ich so, dass im fast-PWM-Modus eben doppelt
> gepuffert wird, im Gegensatz zum CTC-Modus.

ja. eben im „fast-PWM-Modus“
Gast #6168556
Lesenswert?

> ja. eben im „fast-PWM-Modus“

Ich denke, das steht da, weil dieser am ehesten mit dem CTC-Modus 
vergleichbar ist.
  Eigentlich sollten sich die Verhältnisse bei phase-correct-PWM mit 
einem simplen 20-Zeiler klären lassen.

Antwort schreiben

Bitte melde dich an, um einen Beitrag zu schreiben.

oder

Mit Google-Account einloggen

Die Registrierung ist kostenlos und dauert nur eine Minute.

Jetzt registrieren