Witam,
Mam podłączoną diodę do PB3 i ustawiam sprzętowy PWM dla TIMER0.
Skrócony schemat podłączenia LED wygląda tak:
VCC--[rezystor 120]---[LED katodą do PB3]
chcąc mieć proste powiązanie pomiędzy wypełnieniem PWM i wartością OCR0 powinienem ustawić "inverting mode" (wtedy wartość OCR0 będzie odzwierciedlać poziom jasności LED) . Problem polega na tym, że przy "inverting mode" i ustawieniu OCR0=0 dioda nie gaśnie (świeci się minimalnie).
dla przypomnienia tabelka trybów z datasheet:
kody:
w poniższym przypadku, gdy ustawiam OCR0=0 - LED minimalnie się świeci, 255 - świeci na maxa
natomiast w trybie "non-inverting": OCR0=255 - gaśnie; OCR0=0 - świeci na maxa:
jedyne co mi przychodzi do głowy to jakaś "szpilka" w momencie konfliktu, gdy OCR0=0 i PB3 powinien być w stanie wysokim, ale jest ustawiany na LOW w momencie osiągnięcia przez timer wartości Bottom (czyli też "0"):
może mi ktoś wyjaśnić, czy dobrze to rozumiem i nie mogę korzystać z "inveting mode" ?
Mam podłączoną diodę do PB3 i ustawiam sprzętowy PWM dla TIMER0.
Skrócony schemat podłączenia LED wygląda tak:
VCC--[rezystor 120]---[LED katodą do PB3]
chcąc mieć proste powiązanie pomiędzy wypełnieniem PWM i wartością OCR0 powinienem ustawić "inverting mode" (wtedy wartość OCR0 będzie odzwierciedlać poziom jasności LED) . Problem polega na tym, że przy "inverting mode" i ustawieniu OCR0=0 dioda nie gaśnie (świeci się minimalnie).
dla przypomnienia tabelka trybów z datasheet:
Cytat:
Table 14-4. Compare Output Mode, Fast PWM Mode(1)
COM01 COM00 Description
0 0 Normal port operation, OC0 disconnected.
0 1 Reserved
1 0 Clear OC0 on compare match, set OC0 at BOTTOM, (non-inverting mode)
1 1 Set OC0 on compare match, clear OC0 at BOTTOM,(inverting mode)
kody:
w poniższym przypadku, gdy ustawiam OCR0=0 - LED minimalnie się świeci, 255 - świeci na maxa
Kod: C / C++
natomiast w trybie "non-inverting": OCR0=255 - gaśnie; OCR0=0 - świeci na maxa:
Kod: C / C++
jedyne co mi przychodzi do głowy to jakaś "szpilka" w momencie konfliktu, gdy OCR0=0 i PB3 powinien być w stanie wysokim, ale jest ustawiany na LOW w momencie osiągnięcia przez timer wartości Bottom (czyli też "0"):
Cytat:
Set OC0 on compare match, clear OC0 at BOTTOM, (inverting mode) ]
może mi ktoś wyjaśnić, czy dobrze to rozumiem i nie mogę korzystać z "inveting mode" ?