Programowanie mikrokontrolerów 2.0

Podobne dokumenty
Programowanie mikrokontrolerów 2.0

Programowanie mikrokontrolerów 2.0

Timery w mikrokontrolerach STM32F3

Programowanie mikrokontrolerów 2.0

Układy czasowo-licznikowe w systemach mikroprocesorowych

Programowanie mikrokontrolerów 2.0

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

Instytut Teleinformatyki

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

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

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

Programowanie mikrokontrolerów 2.0

Programowanie mikrokontrolerów 2.0

Programowanie mikrokontrolerów. 8 listopada 2007

Metody obsługi zdarzeń

Programowanie mikrokontrolerów 2.0

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

Programowanie mikrokontrolerów 2.0

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

1. Wprowadzenie Programowanie mikrokontrolerów Sprzęt i oprogramowanie... 33

Edukacyjny sterownik silnika krokowego z mikrokontrolerem AT90S1200 na płycie E100. Zestaw do samodzielnego montażu.

ĆWICZENIE 7. Wprowadzenie do funkcji specjalnych sterownika LOGO!

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

Układy czasowo-licznikowe w systemach mikroprocesorowych

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

Licznik rewersyjny MD100 rev. 2.48

Technika Mikroprocesorowa Laboratorium 5 Obsługa klawiatury

uniwersalnych 1. Klasyfikacja liczników w układach STM32F10x 2. Konfiguracja liczników do realizacji wybranych zadań 2.

Laboratorium 2 Sterowanie urządzeniami z wykorzystaniem systemu plików Intel Galileo

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

Wstęp Architektura... 13

Modulatory PWM CELE ĆWICZEŃ PODSTAWY TEORETYCZNE

Przerwania, polling, timery - wykład 9

2.1 Porównanie procesorów

Porty GPIO w mikrokontrolerach STM32F3

Programowanie mikrokontrolerów. 3 stycznia 2008

LOW ENERGY TIMER, BURTC

Zastosowania mikrokontrolerów w przemyśle

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

PROGRAMOWANIE PWM. Porty, które mogą być zamienione na PWM w każdym module RaT16 to port 3,4,5,6

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

Mikroprocesory i Mikrosterowniki Analog-Digital Converter Konwerter Analogowo-Cyfrowy

Proste układy wykonawcze

1.2. Architektura rdzenia ARM Cortex-M3...16

mikrokontrolerów PIC (2) Sterowanie za pomocą PWM

LICZNIK IMPULSÓW Z WYŚWIETLACZEM LED NA SZYNĘ DIN LIMP-1 ZASILANY 230VAC

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

Wykład 12. Przetwornik ADC

TECHNIKA MIKROPROCESOROWA II

32 bity jak najprościej (3)

Architektura Systemów Komputerowych. Bezpośredni dostęp do pamięci Realizacja zależności czasowych

PRZETWORNIK ADC w mikrokontrolerach Atmega16-32

DOKUMENTACJA TECHNICZNO-RUCHOWA. Sterownik mikroklimatu FAG25-III

Licznik prędkości LP100 rev. 2.48

Programowanie mikrokontrolerów. 5 grudnia 2007

LABORATORIUM. TIMERY w mikrokontrolerach Atmega16-32

Przetworniki analogowo-cyfrowe (A/C)

Konfiguracja i programowanie Gamepad'a PlayStation2 na mikrokontrolerze STM32

LABORATORIUM. TIMERY w mikrokontrolerach Atmega16-32

Moduł przekaźnika czasowego FRM01 Instrukcja obsługi

Szkoła programisty PLC : sterowniki przemysłowe / Gilewski Tomasz. Gliwice, cop Spis treści

Pulse width modulation control of three-phase three-level inverter Sterowanie modulacji szerokości impulsów trójpoziomowego trójfazowego falownika.

2. Architektura mikrokontrolerów PIC16F8x... 13

Instytut Teleinformatyki

Konfigurator Modbus. Instrukcja obsługi programu Konfigurator Modbus. wyprodukowano dla

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.

INSTRUKCJA OBSŁUGI Generatora impulsów PWM

Podstawy Elektroniki dla Informatyki. Pętla fazowa

Sprawozdanie z projektu MARM. Część druga Specyfikacja końcowa. Prowadzący: dr. Mariusz Suchenek. Autor: Dawid Kołcz. Data: r.

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

Moduł przekaźnika czasowego FRM01. Instrukcja obsługi

Firma DAGON Leszno ul. Jackowskiego 24 tel Produkt serii DAGON Lighting

Automatyka SPZ. 1. ZASADA DZIAŁANIA SCHEMAT FUNKCJONALNY PARAMETRY SPZ WYKRESY CZASOWE DZIAŁANIA AUTOMATYKI SPZ...

Sterownik nagrzewnic elektrycznych HE module

Research & Development Ultrasonic Technology / Fingerprint recognition

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

Falowniki Wektorowe Rexroth Fv Parametryzacja

Programowany układ czasowy

WEJŚCIE W TRYB PROGRAMOWANIA

Elastyczne systemy wytwarzania

INSTRUKCJA OBSŁUGI. Przekaźnik czasowy ETM ELEKTROTECH Dzierżoniów. 1. Zastosowanie

Enkodery czujniki cyfrowe

1 Badanie aplikacji timera 555

Programowanie w językach asemblera i C

Układy czasowe / liczniki (timers/counters)

Programowany układ czasowy APSC

Uwaga: dioda na wyjściu 13 świeci gdy na wyjście podamy 0.

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

ODBIORNIK ZDALNEGO STEROWANIA REMC0 DO MARKIZ I ROLET TDS GOLD MODEL INSTRUKCJA

Aby w pełni przetestować układ o trzech wejściach IN_0, IN_1 i IN_2 chcemy wygenerować wszystkie możliwe kombinacje sygnałów wejściowych.

LICZNIKI Liczniki scalone serii 749x

Rodzina SIMATIC S7-1500

PUNKTOWE STEROWNIKI VERSAMAX MICRO

Ćwiczenie 23. Cyfrowe pomiary czasu i częstotliwości.

Politechnika Białostocka

MARM. Laboratorium 1 system zegarów, porty wejścia/wyjścia. M. Suchenek

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:

SigmaDSP - zestaw uruchomieniowy dla procesora ADAU1701. SigmaDSP - zestaw uruchomieniowy dla procesora ADAU1701.

Obsługa przetwornika ADC na mikrokontrolerze ATmega8 CEZARY KLIMASZ OBSŁUGA PRZETWORNIKA ADC NA MIKROKONTROLERZE ATMEGA8

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

Transkrypt:

6.1 Programowanie mikrokontrolerów 2.0 Liczniki Marcin Engel Marcin Peczarski Instytut Informatyki Uniwersytetu Warszawskiego 31 października 2017

Liczniki Układy sprzętowe wyposażone w wewnętrzny rejestr modyfikowany o 1 przy odpowiedniej zmianie stanu wejścia taktującego Na wejście taktujące licznika można podać (podzielony przez preskaler): sygnał zegarowy sygnały zewnętrzne z pewnych wyprowadzeń mikrokontrolera sygnały wewnętrzne (np. zdarzenia generowane przez inne liczniki) Licznik może służyć do: cyklicznego zgłaszania przerwania generowania różnego rodzaju przebiegów na pewnych wyprowadzeniach mikrokontrolera zliczania zdarzeń zewnętrznych odmierzania czasu między pewnymi zdarzeniami zewnętrznymi...

6.3 Liczniki w STM32F411 STM32F411 jest wyposażony w następujące liczniki: rozbudowany 16-bitowy licznik TIM1 podłączony do szyny APB2 liczniki podłączone do szyny APB1: 16-bitowe TIM3, TIM4 32-bitowe TIM2, TIM5 16-bitowe liczniki podłączone do szyny APB2: TIM9, TIM10, TIM11 Poszczególne liczniki oferują różną funkcjonalność w zakresie: trybu zliczania (w górę, w dół, w obie strony) liczby kanałów wejściowych i wyjściowych rodzajów generowanych zdarzeń i przerwań dodatkowych możliwości (liczniki powtórzeń, wyjścia komplementarne z opóźnieniami, synchronizacja z innymi układami)

6.4 Rejestry sprzętowe liczników TIMx->CNT counter 16-bitowy lub 32-bitowy rejestr, zawiera aktualną wartość licznika x może być odczytywany i zapisywany nawet podczas pracy licznika TIMx->PSC prescaler 16-bitowy rejestr umożliwiający podzielenie częstotliwości taktowania licznika przez wartość od 1 do 65536 buforowany TIMx->ARR auto-reload register 16-bitowy lub 32-bitowy rejestr określający wartość, do której zlicza licznik może być buforowany TIMx->CR1, TIMx->CR2 control register TIMx->DIER DMA and interrupt enable register TIMx->SR status register...

Sygnał zegarowy Licznik może być taktowany sygnałem z zewnętrznych wyprowadzeń o tym opowiadać nie będziemy sygnałami generowanymi przez inne liczniki o tym opowiemy nieco później zegarem wewnętrznym W STM32F411 po uruchomieniu mikrokontrolera licznik TIMx jest taktowany zegarem o częstotliwości f CK TIMx = 16 MHz jak zmienić tę częstotliwość opowiemy później

6.6 Preskaler Umożliwia zmniejszenie częstotliwości zmian wartości licznika Jest wyposażony we własny licznik wewnętrzny Konfiguruje się go za pomocą rejestru TIMx->PSC Umożliwia zmniejszenie częstotliwości zmian wartości licznika f CK CNTx = f CK TIMx TIMx->PSC + 1 Zmiany wartości rejestru TIMx->PSC są propagowane do preskalera w ściśle określonych momentach

Tryby pracy liczników Zliczanie w górę licznik zlicza od 0 do TIMx->ARR zgłasza zdarzenie nadmiaru i powtarza cykl Zliczanie w dół licznik zlicza od TIMx->ARR do 0 zgłasza zdarzenie niedomiaru i powtarza cykl Zliczanie w górę i w dół licznik zlicza od 0 do TIMx->ARR 1 zgłasza zdarzenie nadmiaru następnie zlicza od TIMx->ARR do 1 zgłasza zdarzenie niedomiaru i powtarza cykl

6.8 Zdarzenia uaktualnienia Zdarzenie uaktualnienia to zdarzenie nadmiaru lub niedomiaru Powoduje zapisanie wartości rejestrów buforowanych (TIMx->PSC, ew. TIMx->ARR) do rzeczywistych rejestrów Jego wystąpienie powoduje ustawienie flagi TIM SR UIF Może też spowodować przerwanie

6.9 Trochę rysunków aktualizacja rejestru TIMx->PSC Źródło: RM0383 Reference manual, STM32F411xC/E advanced ARM-based 32-bit MCUs

Trochę rysunków zliczanie w górę Źródło: RM0383 Reference manual, STM32F411xC/E advanced ARM-based 32-bit MCUs

6.11 Trochę rysunków zmiana wartości TIMx->ARR Źródło: RM0383 Reference manual, STM32F411xC/E advanced ARM-based 32-bit MCUs

6.12 Trochę rysunków zmiana buforowanej wartości TIMx->ARR Źródło: RM0383 Reference manual, STM32F411xC/E advanced ARM-based 32-bit MCUs

Trochę rysunków zliczanie w dół Źródło: RM0383 Reference manual, STM32F411xC/E advanced ARM-based 32-bit MCUs

6.14 Trochę rysunków zliczanie w górę i w dół Źródło: RM0383 Reference manual, STM32F411xC/E advanced ARM-based 32-bit MCUs

Inicjowanie licznika Włączenie taktowania układu licznika RCC->APB1ENR = RCC_APB1ENR_TIM3EN; Skonfigurowanie trybu zliczania licznika w górę TIM3->CR1 = 0; w dół TIM3->CR1 = TIM_CR1_DIR; w obie strony (bit TIM CR1 DIR jest wtedy tylko do odczytu i jest ustawiany sprzętowo) TIM3->CR1 = TIM_CR1_CMS_0 TIM_CR1_CMS_1; Skonfigurowanie preskalera i zakresu zliczania TIM3->PSC =...; TIM3->ARR =...; Wartość preskalera jest buforowana, a wartość maksymalna licznika może być buforowana Aby już pierwszy cykl zliczania odbywał się z nowymi wartościami, trzeba wymusić zdarzenie uaktualnienia

6.16 Wymuszanie zdarzenia uaktualnienia Ustawiamy TIM3->EGR = TIM_EGR_UG; Ustawienie bitu TIM EGR UG powoduje: zainicjowanie rejestru TIMx->PSC i ew. TIMx->ARR zainicjowanie rejestru TIMx->CNT na TIMx->ARR, jeśli jest ustawiony bit TIM CR1 DIR 0, w przeciwnym razie wyzerowanie wewnętrznego rejestru preskalera wygenerowanie zdarzenia uaktualnienia, o ile nie jest ustawiony bit TIM CR1 UDIS ustawienie znacznika TIM SR UIF (i ewentualne wygenerowanie przerwania), o ile nie jest ustawiony bit TIM CR1 URS Bit TIM EGR UG jest automatycznie zerowany sprzętowo

Inicjowanie licznika, dokończenie Opcjonalne nadanie wartości początkowej TIM3->CNT =...; Ewentualne włączenie przerwań o tym za chwilę Uruchomienie licznika TIM3->CR1 = TIM_CR1_CEN;

Buforowanie Bywa wygodne, bo umożliwia uzyskanie regularnych przebiegów bez konieczności ręcznej synchronizacji zmian rejestrów z aktualną wartością licznika Możemy w dowolnej chwili zmienić zakres zliczania TIM3->PSC =...; TIM3->ARR =...; Czy aby na pewno dobrze? Trzeba zablokować możliwość wystąpienie zdarzenia uaktualnienia pomiędzy przypisaniami Jak? Wyłączyć przerwania? To nie zadziała

Blokowanie zdarzeń uaktualnienia Ustawienie znacznika TIM CR1 UDIS powoduje, że: zdarzenia uaktualnienia nie są generowane znacznik TIM SR UIF nie jest ustawiany nie dochodzi do przerwań z powodu tego zdarzenia Przykładowa sekwencja TIM3->CR1 = TIM_CR1_UDIS; TIM3->PSC =...; TIM3->ARR =...; TIM3->CR1 &= ~TIM_CR1_UDIS;

6.20 Rejestry sprzętowe liczników, cd. TIMx->CCR1, TIMx->CCR2,... przechowują wartości, z którymi może być porównywana wartość licznika lub wartości przechwycone przez licznik mogą być buforowane ich liczba zależy od liczby kanałów konkretnego licznika (do czterech) TIMx->CCMR1, TIMx->CCMR2 konfigurują kanały wejściowe i wyjściowe ich liczba zależy od konkretnego licznika (po dwa kanały w rejestrze) TIMx->CCER decyduje, czy kanał wyjściowy licznika jest wyprowadzany na zewnątrz

Zdarzenie zgodności Gdy wartość licznika jest równa wartości rejestru TIMx->CCRy, jest ustawiany znacznik TIM SR CCyIF i może być wygenerowane przerwanie W trybie zliczania w górę i w dół można określić, czy zdarzenie zgodności jest generowane podczas zliczania tylko w górę, tylko w dół, czy w obie strony Gdy licznik zlicza w górę lub w górę i w dół, a TIMx->CCRy jest większe niż TIMx->ARR, to bit jest ustawiany przy nadmiarze Gdy licznik zlicza w dół, a TIMx->CCRy jest większe niż TIMx->ARR, to bit jest ustawiany przy niedomiarze Bity są zerowane przez ustawienie ich na 0

Przerwania Dla liczników TIM2 do TIM5 NVIC dostarcza przerwania o numerach TIMx IRQn, gdzie x = 2, 3, 4, 5 Licznik TIM1 ma kilka różnych przerwań, niektóre są współdzielone z przerwaniami liczników TIM9 do TIM11 Przerwanie może nastąpić na skutek m.in. zdarzenia zgodności lub uaktualnienia

Obsługa przerwań Trzeba pamiętać o włączeniu przerwań na poziomie licznika, przykładowo TIM3->SR = ~(TIM_SR_UIF TIM_SR_CC1IF); TIM3->DIER = TIM_DIER_UIE TIM_DIER_CC1IE; na poziomie NVIC, przykładowo NVIC_EnableIRQ(TIM3_IRQn); Schemat funkcji obsługi przerwań void TIM3_IRQHandler(void) { uint32_t it_status = TIM3->SR & TIM3->DIER; if (it_status & TIM_SR_UIF) { TIM3->SR = ~TIM_SR_UIF;... } if (it_status & TIM_SR_CC1IF) { TIM3->SR = ~TIM_SR_CC1IF;... } } 6.23

6.24 Generowanie przebiegów na wyjściu licznika Każdy kanał jest wyposażony w linię wyjściową OCy REF Stan linii wyjściowej zależy od wartości rejestru TIMx->CCRy i konfiguracji w rejestrach TIMx->CCMR1 i TIMx->CCMR2 Kanały 1 i 2 są konfigurowane w rejestrze TIMx->CCMR1, a kanały 3 i 4 w rejestrze TIMx->CCMR2 OCyM stan linii OCyREF 000 stan nie zmienia się 001 aktywny po zdarzeniu zgodności 010 nieaktywny po zdarzeniu zgodności 011 zmiana stanu przy zdarzeniu zgodności 100 nieaktywny natychmiast 101 aktywny natychmiast 110 PWM 1 111 PWM 2

6.25 Przykładowe przebiegi zmiana stanu przy zgodności, liczenie w górę zmiana stanu przy zgodności, tryb w górę i w dół

Pulse Width Modulation Pulse Width Modulation Modulacja czasu trwania impulsów Ważna technika sterowania mocą odbiorników Zastosowania: regulacja prędkości obrotowej silnika regulacja jasności źródła światła ustawianie kąta wychylenia serwomechanizmu 1-bitowy przetwornik cyfrowo-analogowy wzmacniacz akustyczny klasy D...

6.27 Czas trwania impulsu Sygnał o współczynniku wypełnienia 50% Czas trwania fazy wysokiej = czas trwania fazy niskiej sygnału: 0 1 2 3 4 5 6 7 8 9 10 Można też inaczej, np. współczynnik wypełnienia 70% oznacza, że poziom sygnału przez 70% czasu jest wysoki: 0 1 2 3 4 5 6 7 8 9 10

Sterowanie jasnością diody Podajemy na diodę impulsy o częstotliwości od kilkudziesięciu do kilkuset Hz Jasność diody zależy (nieliniowo) od współczynnika wypełnienia Można próbować uzyskać liniowość jasności, zmieniając nieliniowo współczynnik wypełnienia

Przykłady innych zastosowań Sterowanie kątem wychylenia serwa modelarskiego: kąty między 90 stopni a 90 stopni kąt 0 stopni przy długości impulsu 1,5 ms dopuszczalny zakres długości impulsu od 0,3 ms do 2,7 ms częstotliwość 50 Hz Sterowanie prędkością obrotową silnika: konieczny układ pośredniczący gwarancja właściwego zabezpieczenia możliwość regulacji prędkości obrotowej i kierunku obrotów Konwersja cyfrowo-analogowa: sygnał PWM podany na filtr dolnoprzepustowy napięcie wyjściowe proporcjonalne do współczynnika wypełnienia filtr dolnoprzepustowy jest niepotrzebny, jeśli membrana głośnika ma odpowiednio dużą bezwładność wychylenie membrany jest proporcjonalne do współczynnika wypełnienia

6.30 Tryby PWM Rejestr TIMx->CCRy musi być buforowany włączony bit TIM CCMR1 OCyPE (lub TIM CCMR2 OCyPE) Rejestr TIMx->CNT jest porównywany z rejestrem TIMx->CCRy PWM 1 gdy licznik liczy w górę, linia jest aktywna wtw., gdy TIMx->CNT < TIMx->CCRy gdy licznik liczy w dół, linia jest aktywna wtw., gdy TIMx->CNT > TIMx->CCRy PWM 2 gdy licznik liczy w górę, linia jest nieaktywna wtw., gdy TIMx->CNT < TIMx->CCRy gdy licznik liczy w dół, linia jest nieaktywna wtw., gdy TIMx->CNT > TIMx->CCRy

6.31 Przykładowe przebiegi PWM 1, tryb liczenia w górę PWM 2, tryb w górę i w dół

Parametry generowanych przebiegów PWM W trybie zliczania w górę lub w dół: częstotliwość f CK CNTx TIMx->ARR + 1 współczynnik wypełnienia TIMx->CCRy TIMx->ARR + 1 W trybie zliczania w górę i w dół: częstotliwość f CK CNTx 2 TIMx->ARR współczynnik wypełnienia TIMx->CCRy TIMx->ARR

Podłączanie wyjścia licznika do wyprowadzenia Linia wyjściowa OCy REF licznika TIMx może zostać podłączona do wyprowadzenia TIMx CHy mikrokontrolera Na przykład TIM3 CH1 to wyprowadzenie PA6 skonfigurowane jako funkcja alternatywna (dioda czerwona w ekspanderze) TIM3 CH2 to wyprowadzenie PA7 skonfigurowane jako funkcja alternatywna (dioda zielona w ekspanderze) TIM3 CH3 to wyprowadzenie PB0 skonfigurowane jako funkcja alternatywna numer (dioda niebieska w ekspanderze) Żeby podłączyć linię wyjściową do odpowiedniego wyprowadzenia, należy: skonfigurować wyprowadzenie włączyć bit TIM CCER CCyE ustawić bit TIM CCER CCyP, jeśli stan aktywny linii wyjściowej ma odpowiadać stanowi niskiemu wyprowadzenia

6.34 Przykład Włączamy taktowanie RCC->AHB1ENR = RCC_AHB1ENR_GPIOAEN; RCC->APB1ENR = RCC_APB1ENR_TIM3EN; Konfigurujemy wyprowadzenia GPIOafConfigure(GPIOA, 6, GPIO_OType_PP, GPIO_Low_Speed, GPIO_PuPd_NOPULL, GPIO_AF_TIM3); GPIOafConfigure(GPIOA, 7, GPIO_OType_PP, GPIO_Low_Speed, GPIO_PuPd_NOPULL, GPIO_AF_TIM3); Ustawiamy parametry licznika TIM3->PSC = 63999; TIM3->ARR = 749; TIM3->EGR = TIM_EGR_UG; TIM3->CCR1 = 249; TIM3->CCR2 = 499;

Przykład, cd. Licznik będzie zliczał w górę; konfigurujemy linię wyjściową OC1REF w trybie PWM 1, a linię OC2REF w trybie PWM 2; rejestry TIM3->CCR1 i TIM3->CCR2 są buforowane TIM3->CCMR1 = TIM_CCMR1_OC1M_2 TIM_CCMR1_OC1M_1 TIM_CCMR1_OC1PE TIM_CCMR1_OC2M_2 TIM_CCMR1_OC2M_1 TIM_CCMR1_OC2M_0 TIM_CCMR1_OC2PE; Podłączamy linie wyjściowe do wyprowadzeń, stan aktywny to stan niski, bo diodę włączamy stanem niskim TIM3->CCER = TIM_CCER_CC1E TIM_CCER_CC1P TIM_CCER_CC2E TIM_CCER_CC2P; Włączamy licznik w trybie zliczania w górę z buforowaniem rejestru TIM3->ARR TIM3->CR1 = TIM_CR1_ARPE TIM_CR1_CEN; Ćwiczenie: korzystając z przerwań zgodności, włączaj niebieską diodę w przerwie między czerwoną a zieloną