72 Budowa i działanie mikrokontrolerów
Tab. 5.5. Wartość zliczania licznika TC1 w trybie PWM (TOP) i częstotliwość generowanego przebieg
Rozdzielczość PWM |
Wartość zliczania (TOP) | Częstotliwość generowanego sygnału PWM ^ | |
8 bitów |
SOOFF (255) |
Itci/510 |
9 bitów |
$01FF (511) |
W1022 |
10 bitów |
$03FF (1023) | fjfl/2046 |
Tab. 5.5. Znaczenie bitów C0M1A1 i COM1AO rejestru TCCR1A w trybie PWM(V
C0M1A1 |
C0M1A0 |
Akcja podejmowana na wyjściu 0C1 " |
0 |
0 |
Nie występuje |
0 |
1 |
Nie występuje |
1 |
0 |
Wyjście 0C1 jest zerowane („0") po osiągnięciu warunku równości podczas zliczania w górę"' i ustawiane (.1 ”) po osiągnięciu warunku równości podczas zliczania w dół (normalny tryb PWM) |
1 |
1 |
Wyjście 0C1 jest zerowane („0”) po osiągnięciu warunku równości podczas zliczania w dół ' i ustawiane („1”) po osiągnięciu warunku równości podczas zliczania w górę (odwrócony tryb PWM) |
Uwaga:
1. Stan początkowy wyjścia 0C1 jest nieokreślony.
współczynnika wypełnienia przebiegają bez zakłócenia fazy generowanego sygnału.
W trybie PWM Timer/Licznikl pracuje jako licznik rewersyjny zliczający od $0000 do wartości maksymalnej (TOP - patrz tablica 5.5), po czym kierunek zliczania zostaje zmieniony i licznik odlicza z powrotem do zera. W tym momencie następuje ponowna zmiana kierunku liczenia i cykl powtarza się. Gdy licznik osiągnie stan, w którym 8, 9 lub 10 najmniej znaczących bitów będzie miało taką samą wartość jak odpowiadające im bity w rejestrze OCR1A, wyprowadzenie OC1/PB3 jest ustawiane lub zerowane, zgodnie z ustawieniami bitów COM1A1 i COM1A0 znajdujących się w rejestrze TCCR1A. Szczegóły podano w tablicy 5.6.
Zapis wartości porównywania do rejestru OCR1A w trybie PWM przebiega pośrednio - poprzez rejestr TEMP. Operacja ta jest wykonywana na 10 najmłodszych bitach rejestru OCR1A, które są zatrzaskiwane, kiedy Timer/Licznikl osiągnie stan TOP. Zapobiega to powstawaniu szkodliwych impulsów (glitches) w przypadku niesynchronicznego zapisu rejestru OCR1A. Sytuację tę zilustrowano na rysunku 5.5.
W przedziale czasu pomiędzy zapisem i zatrzaśnięciem danej, odczyt z rejestru OCR1A powoduje pobieranie zawartości rejestru TEMP. W ten sposób dane zapisywane ostatnio do rejestru OCR1A są zawsze czytane spoza niego.
Jeśli OCR1A zawiera wartość $0000 lub TOP, to wyjście OC1 jest aktualizowane do stanu niskiego lub wysokiego (w zależności od ustawień bitów