Uproszczony schemat blokowy zespołu 8-bitowego timera przedstawiono na rys.1

Podobne dokumenty
Wbudowane układy peryferyjne cz. 2 Wykład 8

Mikroprocesory i Mikrosterowniki Liczniki Timer Counter T/C0, T/C1, T/C2

Podstawy Techniki Mikroprocesorowej Laboratorium

Układy czasowe / liczniki (timers/counters)

LABORATORIUM. TIMERY w mikrokontrolerach Atmega16-32

LABORATORIUM. TIMERY w mikrokontrolerach Atmega16-32

SYSTEM PRZERWAŃ ATmega 32

Przerwanie. Źródła przerwań

Politechnika Poznańska Wydział Budowy Maszyn i Zarządzania. Sterowniki Urządzeń Mechatronicznych laboratorium. Ćw. 3: Timer v1.0

AGH Akademia Górniczo- Hutnicza w Krakowie Katedra Elektroniki WIET

Programowanie mikrokontrolerów. 5 grudnia 2007

Omówimy przykłady 8-mio bitowego licznika z wyposażenia ADuC812 (CISC 51) oraz mikrokontrolera ATMega128 należącego do rodziny AVR.

Dokumentacja mikrokontrolera Atmega16 firmy Atmel

Mikrokontroler ATmega32. System przerwań Porty wejścia-wyjścia Układy czasowo-licznikowe

Układy czasowo-licznikowe w systemach mikroprocesorowych

był w momencie wystąpienia zewnętrznego zdarzenia. Jest bardzo przydatna przy pomiarach częstotliwości. Pracę timera Timer1 kontrolują następujące

Układy czasowo-licznikowe w systemach mikroprocesorowych

3.2. Zegar/kalendarz z pamięcią statyczną RAM 256 x 8

Uproszczony schemat blokowy konwertera analogowo-cyfrowego przedstawiony został na rys.1.

równoległe (w wersji 4-, 8- i 16-bitowej). Same wyświetlacze ze względu na budowę i możliwości możemy podzielić na dwie grupy:

Podstawowe urządzenia peryferyjne mikrokontrolera ATmega8 Spis treści

Politechnika Białostocka

Podstawowe urządzenia peryferyjne mikrokontrolera ATmega8 Spis treści

Metody obsługi zdarzeń

Programowany układ czasowy APSC

Stanowisko laboratoryjne dla mikrokontrolera Atmega16 firmy Atmel

Systemy wbudowane. Uniwersytet Łódzki Wydział Fizyki i Informatyki Stosowanej. Witold Kozłowski

Hardware mikrokontrolera X51

Programowanie mikrokontrolerów. 3 stycznia 2008

PRZETWORNIK ADC w mikrokontrolerach Atmega16-32

Przerwania, polling, timery - wykład 9

Obsługa wyjść PWM w mikrokontrolerach Atmega16-32

Programowany układ czasowy

długo. W tym celu w czasie przeczesywania if (key) {

Temat: Projektowanie i badanie liczników synchronicznych i asynchronicznych. Wstęp:

Licznik rewersyjny MD100 rev. 2.48

1.2 Schemat blokowy oraz opis sygnałów wejściowych i wyjściowych

Wbudowane układy komunikacyjne cz. 1 Wykład 10

interfejs szeregowy wyświetlaczy do systemów PLC

Mikrokontroler w roli generatora PWM. Wpisany przez Administrator piątek, 06 lipca :51 -

Wbudowane układy peryferyjne cz. 1 Wykład 7

Komunikacja w mikrokontrolerach Laboratorium

Część I - Sterownik przerwań 8259A i zegar/licznik 8253

MIKROPROCESORY architektura i programowanie

Ćw. 7: Układy sekwencyjne

2. Architektura mikrokontrolerów PIC16F8x... 13

Wstęp Architektura... 13

Zygmunt Kubiak Instytut Informatyki Politechnika Poznańska

Elektronika samochodowa (Kod: ES1C )

Enkoder magnetyczny AS5040.

Instytut Teleinformatyki

1. Poznanie właściwości i zasady działania rejestrów przesuwnych. 2. Poznanie właściwości i zasady działania liczników pierścieniowych.

Układy sekwencyjne. Podstawowe informacje o układach cyfrowych i przerzutnikach (rodzaje, sposoby wyzwalania).

Mikrokontrolery AVR ATmega

Mikrokontrolery AVR ATmega

UKŁADY SEKWENCYJNE Opracował: Andrzej Nowak

2. PORTY WEJŚCIA/WYJŚCIA (I/O)

Komunikacja w mikrokontrolerach Laboratorium

Podstawowe elementy układów cyfrowych układy sekwencyjne Rafał Walkowiak Wersja

Zygmunt Kubiak Instytut Informatyki Politechnika Poznańska

Timery w mikrokontrolerach STM32F3

MIKROPROCESORY architektura i programowanie

1. Porty wejścia wyjścia (I/O)

Organizacja typowego mikroprocesora

Technika Mikroprocesorowa Laboratorium 5 Obsługa klawiatury

Poradnik programowania procesorów AVR na przykładzie ATMEGA8

ad a) Konfiguracja licznika T1 Niech nasz program składa się z dwóch fragmentów kodu: inicjacja licznika T1 pętla główna

Urządzenia peryferyjne procesora ColdFire

f we DZIELNIKI I PODZIELNIKI CZĘSTOTLIWOŚCI Dzielnik częstotliwości: układ dający impuls na wyjściu co P impulsów na wejściu

PC 3 PC^ TIMER IN RESET PC5 TIMER OUT. c 3. L 5 c.* Cl* 10/H CE RO WR ALE ADO AD1 AD2 AD3 AD4 A05 A06 LTJ CO H 17 AD7 U C-"

ZASOBY ZMIENNYCH W STEROWNIKACH SAIA-BURGESS

W przypadku spostrzeżenia błędu proszę o przesłanie informacji na adres

LICZNIKI PODZIAŁ I PARAMETRY

Mikrokontroler AVR ATmega32 - wykład 9

MSW8-LPM. wersja 0.1 (wersja robocza) Dokumentacja użytkownika

Instytut Teleinformatyki

Wbudowane układy peryferyjne cz. 3 Wykład 9

Zewnętrzne układy peryferyjne cz. 1 Wykład 12

Adresowanie obiektów. Adresowanie bitów. Adresowanie bajtów i słów. Adresowanie bajtów i słów. Adresowanie timerów i liczników. Adresowanie timerów

Proste układy sekwencyjne

BADANIE PRZERZUTNIKÓW ASTABILNEGO, MONOSTABILNEGO I BISTABILNEGO

LABORATORIUM PROCESORY SYGNAŁOWE W AUTOMATYCE PRZEMYSŁOWEJ. Przetwornik ADC procesora sygnałowego F/C240 i DAC C240 EVM

Enkodery czujniki cyfrowe

Wprowadzenie do podstaw programowania AVR (na przykładzie mikrokontrolera ATmega 16 / 32)

ĆWICZENIE 7. Wprowadzenie do funkcji specjalnych sterownika LOGO!

1. Cel ćwiczenia. 2. Podłączenia urządzeń zewnętrznych w sterowniku VersaMax Micro

Architektura komputerów

Kurs Elektroniki. Część 5 - Mikrokontrolery. 1/26

Licznik prędkości LP100 rev. 2.48

Systemy wbudowane. Wprowadzenie. Wprowadzenie. Mikrokontroler 8051 Budowa

Expandery wejść MCP23S17 oraz MCP23017

Przerwania w architekturze mikrokontrolera X51

Programowanie mikrokontrolerów 2.0

Programowanie mikrokontrolerów 2.0

Wyświetlacz alfanumeryczny LCD zbudowany na sterowniku HD44780

Programowanie mikrokontrolerów 2.0

Przerzutnik ma pewną liczbę wejść i z reguły dwa wyjścia.

PROTOKÓŁ MQTT (uzupełnienie do instrukcji obsługi miernika ND30)

ARCHITEKTURA PROCESORA,

Mikroprocesory i Mikrosterowniki Laboratorium

Transkrypt:

Dodatek C 1. Timer 8-bitowy (Timer0) 1.1. Opis układu Uproszczony schemat blokowy zespołu 8-bitowego timera przedstawiono na rys.1 Rys. 1. Schemat blokowy timera Źródłem sygnału taktującego może być zegar systemowy (clk I/O praca synchroniczna) lub zegar zewnętrzny (kwarc między TOSC1 i TOSC2 praca asynchroniczna). Sygnał ten, za pośrednictwem 10-bitowego preskalera podawany jest na wejście dwukierunkowego licznika 8-bitowego, którego stan jest kontrolowany za pomocą rejestru TCNT0 (0x32). Stan rejestru TCNT0 może być na bieżąco porównywany ze stanem rejestru OCR0 (0x31). Komparator może generować przerwanie i ustawiać flagę OCF0 oraz sterować pracą układu wytwarzania sygnału wyjściowego na nóżce OC0 (PB4) procesora. Flagi przerwań generowanych przez układ: OCF0 i TOV0 umieszczone są w rejestrze TIFR (0x36), natomiast maski przerwań: OCIE0 i TOIE0 występują w rejestrze TIMSK (0x37). Tryby pracy timera sterowane są za pomocą bitów w rejestrze TCCR0 (0x33) i ewentualnie ASSR (0x30).

1.2. Tryby pracy układu 1.2.1. Tryb podstawowy (Normal Mode) W tym trybie pracy zawartość licznika TCNT0 jest z każdym taktem zwiększana o 1 (do wartości 0xFF), po przepełnieniu ustawiana jest flaga TOV0 i licznik zlicza dalej od zera. Flaga TOV0 zachowuje się więc jak dziewiąty bit licznika (z tą różnicą, że nie jest kasowana sprzętowo). W procedurze obsługi przerwania (adres 0x20) flaga TOV0 jest kasowana automatycznie i jest możliwość wprowadzenia bieżących zmian w ustawieniach timera. Układ komparatora wyjściowego może być wykorzystany do generowania przerwań w wybranych momentach (generowanie przebiegu na wyjściu w trybie normalnym nie jest zalecane). 1.2.2. Tryb CTC (Clear Timer on Compare CTC Mode) W tym trybie pracy rejestr OCR0 ustala wartość maksymalną zliczania. Stan licznika jest zwiększany o jeden w każdym takcie, a po osiągnięciu wartości równej OCR0 licznik jest zerowany. Przykładowy przebieg czasowy pracy w trybie CTC przedstawiono na rys. 2. Rys. 2. Przebiegi w trybie CTC. W każdym cyklu stan rejestru OCR0 może być zmieniony, co daje możliwość generowania impulsów o różnej długości. Po zaprogramowaniu generatora przebiegu wyjściowego na zmianę stanu wyjścia OC0 przy każdym zrównaniu, uzyskamy przebieg o częstotliwości: fclk_i/o f = OC0 2 N (1 + OCR0) Zmienna N we wzorze oznacza współczynnik preskalera (1, 8, 32, 64, 128, 256 lub 1024). Po zrównaniu licznika z rejestrem OCR0 ustawiana jest flaga OCF0 i może być generowane przerwanie, którego obsługa umożliwi np. modyfikację zawartości rejestru OCR0. Tak jak w trybie podstawowym, flaga TOV0 jest ustawiana po ewentualnym osiągnięciu przez licznik stanu 0xFF. Zdarzenie wymuszenia zmiany stanu na wyjściu OC0 można wywołać w dowolnym momencie, bez przerwania, wysyłając sygnał stanu wysokiego na bit FOC0 w rejestrze TCCR0.

1.2.3. Tryb modulacji szerokości impulsów (Fast PWM Mode) Praca licznika jest jednokierunkowa. W tym trybie licznik zlicza od wartości minimalnej (0x00) w górę, do wartości maksymalnej (0xFF), po czym znów rozpoczyna zliczanie od wartości minimalnej. Przykładowy przebieg czasowy przedstawiono na rys. 3. Rys. 3. Przebiegi w trybie Fast PWM Zaprogramowanie generatora przebiegu wyjściowego w tryb nieodwracający powoduje wysyłanie na wyjście stanu niskiego po wykryciu zrównania z rejestrem OCR0, a stanu wysokiego po osiągnięciu wartości minimalnej. Częstotliwość przebiegu wyjściowego może być określona na podstawie zależności: fclk_i/o foc0 = N 256 gdzie N oznacza współczynnik preskalera. Ustawienie w OCR0 wartości minimalnej spowoduje generowanie na wyjściu wąskich szpilek w momentach osiągnięcia stanu maksymalnego, natomiast w przypadku ustawienia wartości maksymalnej, na wyjściu utrzymywany będzie cały czas stan wysoki (bądź niski w trybie odwracającym). Flaga TOV0 jest ustawiana każdorazowo, po osiągnięciu przez licznik wartości maksymalnej.

1.2.4. Tryb PWM z korekcją fazy (Phase Correct PWM Mode) Praca licznika jest dwukierunkowa. W tym trybie licznik zlicza od wartości minimalnej (0x00) w górę, do wartości maksymalnej (0xFF), po czym przełączany jest kierunek i następuje zliczanie w dół, do wartości minimalnej. Proces ten powtarza się okresowo. Przykładowy przebieg czasowy przedstawiono na rys. 4. Rys. 4. Przebiegi w trybie Phase Correct PWM Flaga TOV0 jest ustawiana każdorazowo, po osiągnięciu przez licznik wartości minimalnej, natomiast flaga OCF0 po zrównaniu z rejestrem OCR0. Poziome kreski zaznaczone na przebiegu wartości TCNT0 oznaczają momenty, w których stan licznika zrównał się z zawartością rejestru OCR0. Przy zaprogramowaniu generatora przebiegu wyjściowego w tryb nieodwracający, po wykryciu zrównania z rejestrem OCR0 podczas zliczania w górę na wyjście OC0 wysyłany jest stan niski, a podczas zliczania w dół - stan wysoki. Częstotliwość generowanego przebiegu PWM określona jest wzorem fclk_i/o foc0 = N 510 gdzie N oznacza współczynnik preskalera.

1.3. Rejestry związane z pracą Timera0 1.3.1. Rejestr TCCR0 Ustawianie trybu pracy timera Tryb pracy timera WGM01 WGM00 Normal 0 0 PWM, Phase Correct 0 1 CTC 1 0 Fast PWM 1 1 Programowanie wyjścia w trybie Normal lub CTC Tryb wyjścia COM01 COM00 Wyłączone 0 0 Przełączanie przy zrównaniu 0 1 Zerowanie przy zrównaniu 1 0 Ustawianie przy zrównaniu 1 1 Programowanie wyjścia w trybie Fast PWM Tryb wyjścia COM01 COM00 Wyłączone 0 0-0 1 Zerowanie przy zrównaniu, ustawianie przy maksimum 1 0 Ustawianie przy zrównaniu, zerowanie przy maksimum 1 1 Programowanie wyjścia w trybie Phase Correct PWM Tryb wyjścia COM01 COM00 Wyłączone 0 0-0 1 Zerowanie przy zrównaniu podczas zliczania w górę, ustawianie przy zrównaniu podczas zliczania w dół 1 0 Ustawianie przy zrównaniu podczas zliczania w górę, zerowanie przy zrównaniu podczas zliczania w dół 1 1 Wybór dzielnika sygnału zegarowego Tryb wyjścia CS02 CS01 CS00 Timer zatrzymany 0 0 0 Bez preskalera (N=1) 0 0 1 N=8 0 1 0 N=32 0 1 1 N=64 1 0 0 N=128 1 0 1 N=256 1 1 0 N=1024 1 1 1

1.3.2. Rejestr TCNT0 Rejestr licznika timera. 1.3.3. Rejestr OCR0 Rejestr komparatora. 1.3.4. Rejestr ASSR Rejestr trybu asynchronicznego. Gdy bit AS0 ma wartość 0, do sterowania timerem wykorzystywany jest sygnał zegara systemowego. W przeciwnym przypadku wykorzystywany jest sygnał z generatora kwarcowego, którego rezonator włączony jest między nóżkami TOSC1 (PG4) i TOSC2 (PG3) procesora. 1.3.5. Rejestr TIMSK Rejestr masek przerwań. Maska OCIE0 związana jest z przerwaniem komparatora (adres 0x001E), natomiast maska TOIE0 służy do sterowania przerwaniem przepełnienia licznika (adres 0x0020).

1.3.6. Rejestr TIFR Rejestr flag przerwań. TOV0 jest flagą przepełnienia licznika, natomiast OCF0 jest flagą przerwania komparatora. Flagi ustawiane są sprzętowo. Kasowanie flagi odbywa się w procedurze obsługi przerwania, lub przez wysłanie stanu wysokiego na odpowiedni bit rejestru.

2. Timer 16-bitowy (Timer1) 2.1. Opis układu Uproszczony schemat blokowy zespołu 16-bitowego timera przedstawiono na rys. 5. Rys. 5. Schemat blokowy timera Źródło sygnału taktującego może być wewnętrzne (zegar systemowy clk I/O za pośrednictwem 10-bitowego preskalera) lub zewnętrzne (zmiana stanu na końcówce T1 (PD6)). Sygnał ten, podawany jest na wejście dwukierunkowego licznika 16-bitowego, którego stan jest kontrolowany za pomocą pary rejestrów TCNT1H (0x2D) i TCNT1L (0x2C). Stan rejestru TCNT1 może być na bieżąco porównywany ze stanem par rejestrów: OCR1A (H-0x2B, L-0x2A), OCR1B (H-0x29, L-0x28), oraz OCR1C (H-0x79, L-0x78). Komparator może generować przerwania i ustawiać flagi OCF1A, OCF1B i OCF1C oraz sterować pracą układów wytwarzania sygnału wyjściowego na nóżkach OC1A (PB5), OC1B (PB6) i OC1C (PB7), procesora.

Stan rejestru TCNT1 może być przepisany do rejestru ICR1 (H-0x27, L-0x26) na żądanie podane na nóżkę ICP1 (PD4), z jednoczesnym ustawieniem flagi ICF1. Flagi przerwań generowanych przez układ: ICF1, OCF1A, OCF1B i TOV1 umieszczone są w rejestrze TIFR (0x36), natomiast flaga OCF1C w rejestrze ETIFR (0x7C). Maski przerwań: TICIE1, OCIE1A, OCIE1B i TOIE1 występują w rejestrze TIMSK (0x37), natomiast maska przerwania OCIE1C w rejestrze ETIMSK (0x7D). Tryby pracy timera sterowane są za pomocą bitów w rejestrach: TCCR1A (0x2F), TCCR1B (0x2E) i TCCR1C (0x7A). Rejestry TCNT1, OCR1A, OCR1B, OCR1C i ICR1 są rejestrami 16-bitowymi, do których dostęp realizowany jest za pomocą magistrali 8-bitowej, z wykorzystaniem 8-bitowego rejestru pomocniczego. Z tego powodu przy zapisie najpierw musi być obsłużony starszy bajt, a przy odczycie najpierw młodszy. 2.2. Tryby pracy układu 2.2.1. Tryb podstawowy (Normal Mode) W tym trybie pracy zawartość licznika TCNT1 jest z każdym taktem zwiększana o 1 (do wartości 0xFFFF), po przepełnieniu ustawiana jest flaga TOV1 i licznik zlicza dalej od zera. Flaga TOV1 zachowuje się więc jak siedemnasty bit licznika (z tą różnicą, że nie jest kasowana sprzętowo). W procedurze obsługi przerwania (adres 0x1C) flaga TOV1 jest kasowana automatycznie i jest możliwość wprowadzenia bieżących zmian w ustawieniach timera. Układy komparatorów wyjściowych mogą być wykorzystane do generowania przerwań w wybranych momentach (generowanie przebiegów na wyjściach w trybie normalnym nie jest zalecane). Przechwytywanie stanu licznika do rejestru ICR1 umożliwia określanie odstępów między dwoma zdarzeniami zewnętrznymi (pod warunkiem, że wystąpią one w ramach jednego okresu zliczania).

2.2.2. Tryb CTC (Clear Timer on Compare CTC Mode) W tym trybie pracy wartość maksymalną zliczania ustala rejestr OCR1A lub, w zależności od ustawień - ICR1. Stan licznika jest zwiększany o jeden w każdym takcie, a po osiągnięciu wartości równej OCR1A (lub ICR1) licznik jest zerowany. Przykładowy przebieg czasowy pracy w trybie CTC przedstawiono na rys. 6. Rys. 6. Przebiegi w trybie CTC. W każdym cyklu stan rejestru OCR1A (ICR1) może być zmieniony, co daje możliwość generowania impulsów o różnej długości. Po osiągnięciu zrównania może być generowane przerwanie i ustawiana jest flaga OCF1A lub ICF1, w zależności od tego, który z rejestrów został wykorzystany do określenia wartości maksymalnej. Po zaprogramowaniu generatora przebiegu wyjściowego na zmianę stanu wyjścia OC1A przy każdym zerowaniu, uzyskamy przebieg o częstotliwości: fclk_i/o foc1 = 2 N (1 + OCR1A) lub fclk_i/o foc1 = 2 N (1 + ICR1) Zmienna N we wzorze oznacza współczynnik preskalera (1, 8, 64, 256 lub 1024). Tak jak w trybie podstawowym, flaga TOV1 jest ustawiana po ewentualnym osiągnięciu przez licznik stanu 0xFFFF i przejściu do stanu 0x0000.

2.2.3. Tryb modulacji szerokości impulsów (Fast PWM Mode) Praca licznika jest jednokierunkowa. W tym trybie licznik zlicza od wartości minimalnej (0x0000) w górę, do wartości maksymalnej (TOP), która może wynosić: 0x00FF (rozdzielczość 8-bitowa), 0x01FF (rozdzielczość 9-bitowa), 0x03FF (rozdzielczość 10-bitowa), stan rejestru ICR1 lub stan rejestru OCR1A. Następnie rozpoczyna się ponowne zliczanie od wartości minimalnej. Przykładowy przebieg czasowy przedstawiono na rys. 7. Rys. 7. Przebiegi w trybie Fast PWM Zaprogramowanie generatora przebiegu wyjściowego w tryb nieodwracający powoduje wysyłanie na wyjście (OC1A, OC1B lub OC1C) stanu niskiego po wykryciu zrównania z rejestrem (OCR1A, OCR1B lub OCR1C), a stanu wysokiego po osiągnięciu wartości minimalnej. Częstotliwość przebiegu wyjściowego może być określona na podstawie zależności: fclk_i/o foc0 = N TOP gdzie N oznacza współczynnik preskalera, a TOP jest wartością maksymalną zliczania. Flaga TOV1 jest ustawiana każdorazowo, po osiągnięciu przez licznik wartości maksymalnej.

2.2.4. Tryb PWM z korekcją fazy (Phase Correct PWM Mode) Praca licznika jest dwukierunkowa. W tym trybie licznik zlicza od wartości minimalnej (0x0000) w górę, do wartości maksymalnej (TOP jak dla Fast PWM), po czym przełączany jest kierunek i następuje zliczanie w dół, do wartości minimalnej. Proces ten powtarza się okresowo. Przykładowy przebieg czasowy przedstawiono na rys. 8. Rys. 8. Przebiegi w trybie Phase Correct PWM Flaga TOV1 jest ustawiana każdorazowo, po osiągnięciu przez licznik wartości minimalnej, natomiast flaga OCF1A lub ICF1 po zrównaniu z rejestrem porównania (OCR1A lub ICR1). Poziome kreski zaznaczone na przebiegu wartości TCNT1 oznaczają momenty, w których stan licznika zrównał się z zawartością rejestru porównania. Zmiana wartości maksymalnej zliczania może wystąpić przy osiągnięciu stanu minimalnego licznika. Może to spowodować pojawienie się niesymetrycznych fragmentów przebiegu (np. okres 3 na rys. 8). Przy zaprogramowaniu generatora przebiegu wyjściowego w tryb nieodwracający, po wykryciu zrównania z rejestrem (OCR1A, OCR1B lub OCR1C) podczas zliczania w górę na odpowiednim wyjściu (OC1A, OC1B lub OC1C) ustawiany jest stan niski, a podczas zliczania w dół - stan wysoki. Częstotliwość generowanego przebiegu PWM określona jest wzorem fclk_i/o foc0 = 2 N TOP gdzie N oznacza współczynnik preskalera, a TOP jest wartością maksymalną zliczania: 0x00FF (rozdzielczość 8-bitowa), 0x01FF (rozdzielczość 9-bitowa), 0x03FF (rozdzielczość 10-bitowa), stan rejestru ICR1 lub stan rejestru OCR1A.

2.2.5. Tryb PWM z korekcją fazy i częstotliwości (Phase and Frequency Correct PWM Mode) Praca licznika jest dwukierunkowa. W tym trybie, podobnie jak w przypadku trybu PWM z korecją fazy, licznik zlicza od wartości minimalnej (0x0000) w górę, do wartości maksymalnej (TOP jak dla Fast PWM), po czym przełączany jest kierunek i następuje zliczanie w dół, do wartości minimalnej. Proces ten powtarza się okresowo. Przykładowy przebieg czasowy przedstawiono na rys. 9. Rys. 9. Przebiegi w trybie Phase and Frequency Correct PWM Flaga TOV1 jest ustawiana każdorazowo, po osiągnięciu przez licznik wartości minimalnej, natomiast flaga OCF1A lub ICF1 po zrównaniu z rejestrem porównania (OCR1A lub ICR1). Przy zaprogramowaniu generatora przebiegu wyjściowego w tryb nieodwracający, po wykryciu zrównania z rejestrem (OCR1A, OCR1B lub OCR1C) podczas zliczania w górę na odpowiednim wyjściu (OC1A, OC1B lub OC1C) ustawiany jest stan niski, a podczas zliczania w dół - stan wysoki. Częstotliwość generowanego przebiegu PWM określona jest wzorem fclk_i/o foc0 = 2 N TOP gdzie N oznacza współczynnik preskalera. Wartość TOP może wynosić: 0x00FF (rozdzielczość 8-bitowa), 0x01FF (rozdzielczość 9-bitowa), 0x03FF (rozdzielczość 10-bitowa), stan rejestru ICR1 lub stan rejestru OCR1A.

2.3. Rejestry związane z pracą Timera1 2.3.1. Rejestry TCCR1A, TCCR1B i TCCR1C Nr bitu TCCR1A Wartość początkowa 7 6 5 4 3 2 1 0 COM1A1 COM1A0 COM1B1 COM1B0 COM1C1 COM1C0 WGM11 WGM10 R/W R/W R/W R/W R/W R/W R/W R/W 0 0 0 0 0 0 0 0 Nr bitu TCCR1B Wartość początkowa Nr bitu TCCR1C 7 6 5 4 3 2 1 0 ICNC1 ICES1 - WGM13 WGM12 CS12 CS11 CS10 R/W R/W R R/W R/W R/W R/W R/W 0 0 0 0 0 0 0 0 7 6 5 4 3 2 1 0 FOC1A FOC1B FOC1C - - - - - Wartość początkowa R/W R/W R/W R R R R R 0 0 0 0 0 0 0 0 Ustawianie trybu pracy timera Tryb pracy timera TOP WGM13 WGM12 WGM11 WGM10 Normal 0xFFFF 0 0 0 0 PWM, Phase Correct, 8 bit 0x00FF 0 0 0 1 PWM, Phase Correct, 9 bit 0x01FF 0 0 1 0 PWM, Phase Correct, 10 bit 0x03FF 0 0 1 1 CTC OCR1A 0 1 0 0 Fast PWM, 8 bit 0x00FF 0 1 0 1 Fast PWM, 9 bit 0x01FF 0 1 1 0 Fast PWM, 10 bit 0x03FF 0 1 1 1 PWM, Phase and Frequency Correct ICR1 1 0 0 0 PWM, Phase and Frequency Correct OCR1A 1 0 0 1 PWM, Phase Correct ICR1 1 0 1 0 PWM, Phase Correct OCR1A 1 0 1 1 CTC ICR1 1 1 0 0-1 1 0 1 Fast PWM ICR1 1 1 1 0 Fast PWM OCR1A 1 1 1 1 Programowanie wyjścia OC1A w trybie Normal lub CTC (analogicznie OC1B i OC1C) Tryb wyjścia COM1A1 COM1A0 OC1A, OC1B i OC1C wyłączone 0 0 Przełączanie OC1A przy zrównaniu 0 1 Zerowanie OC1A przy zrównaniu 1 0 Ustawianie OC1A przy zrównaniu 1 1

Programowanie wyjść w trybie Fast PWM Tryb wyjścia COM1A1 COM1A0 OC1A, OC1B i OC1C wyłączone 0 0 Dla trybu 15: OC1B i OC1C odłączone, OC1A przełączane przy zrównaniu. 0 1 Pozostałe tryby: OC1A, OC1B i OC1C wyłączone. Zerowanie OC1A przy zrównaniu, ustawianie przy TOP 1 0 Ustawianie OC1A przy zrównaniu, zerowanie przy TOP 1 1 Programowanie wyjść w trybie Phase Correct PWM i Phase and Frequency Correct PWM Tryb wyjścia COM1A1 COM1A0 OC1A, OC1B i OC1C wyłączone 0 0 Dla trybu 9 lub 14: OC1B i OC1C odłączone, OC1A przełączane przy zrównaniu. 0 1 Pozostałe tryby: OC1A, OC1B i OC1C wyłączone. Zerowanie przy zrównaniu podczas zliczania w górę, ustawianie przy zrównaniu podczas zliczania w dół 1 0 Ustawianie przy zrównaniu podczas zliczania w górę, zerowanie przy zrównaniu podczas zliczania w dół 1 1 Wybór dzielnika sygnału zegarowego Tryb wyjścia CS12 CS11 CS10 Timer zatrzymany 0 0 0 Bez preskalera (N=1) 0 0 1 N=8 0 1 0 N=64 0 1 1 N=256 1 0 0 N=1024 1 0 1 Zewnętrzne źródło (T1), zbocze opadające 1 1 0 Zewnętrzne źródło (T1), zbocze narastające 1 1 1 2.3.2. Rejestr TCNT1 Nr bitu TCNT1H TCNT1L 7 6 5 4 3 2 1 0 TCNT1(15:8) TCNT1(7:0) Wartość początkowa R/W R/W R/W R/W R/W R/W R/W R/W 0 0 0 0 0 0 0 0 16-bitowy rejestr licznika timera, dostęp 8-bitowy z wykorzystaniem rejestru pomocniczego, przechowującego zawartość starszego bajtu. Wymusza to kolejność operacji: przy zapisie do rejestru najpierw starszy bajt (TCNT1H) a następnie młodszy (TCNT1L), a przy odczycie odwrotnie. Operacja zapisu do tego rejestru blokuje najbliższe zdarzenie zrównania we wszystkich komparatorach.

2.3.3. Rejestry OCR1A, OCR1B, OCR1C oraz ICR1. Rejestr komparatora, 16-bitowy. Analogicznie rejestry OCR1B, OCR1C i ICR1. Dostęp 8- bitowy, podobnie jak w przypadku rejestru TCNT1. Rejestr ICR1 przechwytuje stan rejestru TCNT1 przy zmianie stanu na wejściu ICP1. Stan ten może być wykorzystywany jako wartość TOP w wybranych trybach pracy. 2.3.4. Rejestry TIMSK i ETIMSK Rejestry masek przerwań. Maski OCIE1A, OCIE1B i OCIE1C oraz TICIE1 związane są z przerwaniami komparatorów (adresy odpowiednio:0x18, 0x1A, 0x38 oraz 0x16), natomiast maska TOIE1 służy do sterowania przerwaniem przepełnienia licznika (adres 0x1C). 2.3.5. Rejestry TIFR i ETIFR Nr bitu TIFR Wartość początkowa 7 6 5 4 3 2 1 0 OCF2 TOV2 ICF1 OCF1A OCF1B TOV1 OCF0 TOV0 R/W R/W R/W R/W R/W R/W R/W R/W 0 0 0 0 0 0 0 0 Nr bitu ETIFR 7 6 5 4 3 2 1 0 - - ICF3 OCF3A OCF3B TOV3 OCF3C OCF1C Wartość początkowa R R R/W R/W R/W R/W R/W R/W 0 0 0 0 0 0 0 0 Rejestry flag przerwań. TOV1 jest flagą przepełnienia licznika, natomiast OCF1A, OCF1B, OCF1C oraz ICF1 są flagami przerwań komparatorów. Flagi ustawiane są sprzętowo. Kasowanie flagi odbywa się w procedurze obsługi przerwania, lub przez wysłanie stanu wysokiego na odpowiedni bit rejestru.