AVR OC1A Pin auf Low bringen

OP #5540156
Lesenswert?

Hi,

Ich generiere auf einem ATMega328p ein PWM signal und möchte bei Duty 
Cycle 0 auch wirklich keinen Ausgang mehr generieren (bleibt etwa 7us 
auf High). Ich schalte also den Timer ab bei Duty Cycle 0, jedoch bleibt 
dann der Ausgang auf HIGH, auch wenn ich den Pin mit "PORTB &= 
~(1<<PB1);" resete. Wie kann ich den Pin am besten auf LOW setzten?
Gast #5540174
Lesenswert?

Bert S. schrieb:
> Ich generiere auf einem ATMega328p ein PWM signal und möchte bei Duty
> Cycle 0 auch wirklich keinen Ausgang mehr generieren (bleibt etwa 7us
> auf High)

Hier mal einen Auszug aus dem Datenblatt:
The extreme values for the OCR1x Register represents special cases when 
generating a PWM waveform
output in the fast PWM mode. If the OCR1x is set equal to BOTTOM 
(0x0000) the output will be a narrow spike
for each TOP+1 timer clock cycle. Setting the OCR1x equal to TOP will 
result in a constant high or low output
(depending on the polarity of the output set by the COM1x1:0 bits.)

D.h. beim 0% Duty Cycle ist es besser die PWM Generierung abzuschalten, 
um keinen Spike zu bekommen.
#5540200
Lesenswert?

Thomas E. schrieb:
> Bert S. schrieb:
>> Wie kann ich den Pin am besten auf LOW setzten?
>
> Indem du die PWM im Phase Correct Mode betreibst. Dann ist 0 wirklich 0.
>
> Oder du nimmst bei 0 dem Ausgang einfach das DDR-Bit weg, also schaltest
> auf Eingang.

Ich hatte das gleiche Problem im Phase correct mode. Habe dann DDR auf 
Input gesetzt. Damit hats dann funktioniert.

mfg
Gast #5540493
Lesenswert?

Um einen Stellbereich von 0% bis 100% zu erhalten, kann man auch Fast 
PWM (invertierend) mit TOP=ICR1 verwenden und dann ICR1 mit 65534 laden. 
Dann bekommt man mit OCR1A im Bereich von 65535 bis 0 eine PWM-Tastung 
von exakt 0% bis 100%, ohne Spikes an beiden Enden. Geht natuerlich nur, 
wenn man Input Capture nicht gleichzeitig auch braucht.

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