Forum: Mikrocontroller und Digitale Elektronik Dimmen der PWM bei timer0 ATmega 32


von robotics (Gast)


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?

von MWS (Gast)


Lesenswert?

Keine Doppelpufferung des Timer0 Compareregisters im entsprechenden 
Mode?

von spess53 (Gast)


Lesenswert?

Hi

>Dimmen der PWM bei timer0 ATmega 32

>folgendes szenario:
>Atmega 162

Was stimmt von diesen Aussagen?

MfG Spess

von MWS (Gast)


Lesenswert?

Ausserdem, um Register sicher zu konfigurieren keine Veroderung 
verwenden, denn wenn schon ein Bit gesetzt ist, dann gibt's Unsinn:

> TCCR0  |=

Einfach eine normale Zuweisung und gut ist's.

von robotics (Gast)


Lesenswert?

MWS schrieb:
> Keine Doppelpufferung des Timer0 Compareregisters im
> entsprechenden
> Mode?

das wirds wohl sein. danke für den hinweis.ich versuchs mal mit phase 
pwm danke !

von robotics (Gast)


Lesenswert?

meinte natürlich fast pwm

von robotics (Gast)


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

von S. Landolt (Gast)


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.

von robotics (Gast)


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.

von S. Landolt (Gast)


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.

von robotics (Gast)


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“

von S. Landolt (Gast)


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.

von S. Landolt (Gast)


Angehängte Dateien:

Lesenswert?

Eben getestet, und ich kann nur das Datenblatt bestätigen: in beiden 
PWM-Modi ist OCR0 doppelt gepuffert.

von Oliver S. (oliverso)


Lesenswert?

S. Landolt schrieb:
> Eben getestet, und ich kann nur das Datenblatt bestätigen: in beiden
> PWM-Modi ist OCR0 doppelt gepuffert.

Ist immer wieder überraschend, daß das, was Datenblatt steht, auch in 
der Realität tatsächlich so ist.

Oliver

von S. Landolt (Gast)


Lesenswert?

Zumindest bei älteren AVR-Datenblättern; bei solchen jüngeren Datums 
sind hin&wieder erhebliche Zweifel angebracht.

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.