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?
Keine Doppelpufferung des Timer0 Compareregisters im entsprechenden Mode?
Hi >Dimmen der PWM bei timer0 ATmega 32 >folgendes szenario: >Atmega 162 Was stimmt von diesen Aussagen? MfG Spess
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.
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 !
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
>> 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.
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.
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.
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“
> 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.
Eben getestet, und ich kann nur das Datenblatt bestätigen: in beiden PWM-Modi ist OCR0 doppelt gepuffert.
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
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
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.