
Zitat von
demmy
...gibt es eine Möglich das PWM-Signal zu stoppen und wieder aufzunehmen? Das heißt, der Ausgangspin soll dann dauerhaft auf Low bleiben ...Der einzige Weg der mir momentan einfällt wäre den Pwm_compare auf 0 zu setzen, aber wäre das eine saubere Lösung?
Ja, ist im Datenblatt auch so beschrieben oder ...
Code:
Config Timer2 = Pwm , Pwm = On , Compare Pwm = Clear Up , Prescale = 256
Ich habe mal im Bascom Simulator geschaut, was das Konfigurationskommando macht.
Im TCCR2 Register werden gesetzt die Bits: WGM20, COM21, CS22 und CS21
Bedeutet Phase Correct PWM, OC2 wird low bei Comparematch wenn TCNT hochzählt und high beim Runterzählen ( = non-inverted PWM). Prescaler auf 256.
Außerdem wird das DDRB Register schon richtig gesetzt. "Config Pwm_pin = Output" ist also nicht nötig.
Im Datenblatt steht:

Zitat von
ATMega8, doc2486
The extreme values for the OCR2 Register represent special cases when generating a PWM
waveform output in the phase correct PWM mode. If the OCR2 is set equal to BOTTOM, the output
will be continuously low and if set equal to MAX the output will be continuously high for noninverted
PWM mode.
Danach sollte OC2 auf low bleiben, wenn Du OCR2 auf 0 setzt (BOTTOM). Kommt mir etwas komisch vor, da er beim Runterzählen und Comparematch den Pin ja setzt und bei OCR2 = 0 dann plötlich low bleiben soll.
Wenn es nicht hinhaut, sollte es dann aber mit OCR2 bzw PWM2 = 255 (MAX) klappen.
Gruß
Searcher
Lesezeichen