Instytut Teleinformatyki Wydział Fizyki, Matematyki i Informatyki Politechnika Krakowska Mikrokontrolery i Mikroprocesory Timery i przerwania laboratorium: 03 autor: mgr inż. Katarzyna Smelcerz Kraków, 2016
03.Mikrokontrolery i Mikroprocesory Timery i przerwania 2 Spis treści Spis treści... 2 1. Wiadomości wstępne... 3 1.1. Niezbędne wiadomości... 3 1.2. Timery... 3 1.3. NVIC (Nested Vector Interrupt Controller)... 4 1.4. Konfiguracja Timerów w środowisku Cube... 4 2. Przebieg laboratorium... 7 2.1. Zadanie 1. Na ocenę 3.0 (dst)... 7 2.2. Zadanie 2. Na ocenę 4.0 (db)... 7 2.3. Zadanie 3. Na ocenę 5.0 (bdb)... 7
03.Mikrokontrolery i Mikroprocesory Timery i przerwania 3 1. Wiadomości wstępne Pierwsza część niniejszej instrukcji zawiera podstawowe wiadomości teoretyczne dotyczące omawianego tematu. Poznanie tych wiadomości umożliwi prawidłowe zrealizowanie praktycznej części laboratorium. 1.1. Niezbędne wiadomości Opis zestawu starter-kit, schemat: http://www.st.com/st-webui/static/active/en/resource/technical/document/user_manual/dm00027954.pdf Kompilator dla rdzenia ARM: https://www.iar.com/iar-embeddedworkbench/arm/ Opis rdzenia ARM STM32L152 RB http://www.st.com/st-webui/static/active/en/resource/technical/document/datasheet/cd00277537.pdf Dokumentacja do środowiska STM32CubeMX: http://www.st.com/st-webui/static/active/en/resource/technical/document/data_brief/dm00103564.pdf 1.2. Timery Rdzeń ARM STM32L152 RB jest wyposażony w 10 timerów. Sześć 16-bitowych, do 4 kanałów IC/OC/PWM oraz dwa 16-bitowe podstawowe timery i 2 do obsługi watchdoga. Poniżej znajduje się proste zestawienie wszystkich Timerów wraz z ich najważniejszymi funkcjami. Timer x-bitowy Typ licznika Prescaler Obsługa DMA Capture/compare Ilość kanałów TIM2, 16-bit Up, down, Int 1-65536 Tak 4 TIM3, TIM4 up/down TIM9 16-bit Up int Nie 2 TIM10, TIM11 TIM6, TIM7 1-65536 16-bit Up int 1-65536 16-bit Up int 1-65536 Nie 1 Tak 0
03.Mikrokontrolery i Mikroprocesory Timery i przerwania 4 TIM2, TIM3, TIM4 są oparte o 16-bitowy licznik, który może liczyć do góry, od góry w dół lub w mieszanym trybie. Są wyposażone w 4 niezależne kanały dla wejść, a na wyjściu mogą generować PWM lub jeden impuls. Timery te mogą pracować razem lub z TIM10, TIM11 i TIM9. TIM10, TIM11 i TIM9 mają podobne właściwości jak wyżej omówione TIM2, TIM3 oraz TIM4 z drobnymi różnicami (patrz table). Poza tym mogą być użyte jako podstawowy zegar, niezależny od CPU, sterowny przez LSE. TIM6, TIM7 są głównie używane do wyzwolenia przebiegu DAC. 1.3. NVIC (Nested Vector Interrupt Controller) Rdzenie ARM wyposażone są w NVIC (Nested Vector Interrupt Controller). Jest to rozwiązanie sprzętowe pozwalające na obsługę przerwania o wyższym priorytecie, nawet jeśli w danej chwili jest wykonywane inne przerwanie, bez interwencji CPU. Więcej szczegółów znajduje się w dokumentacji, patrz rozdział 1.1. 1.4. Konfiguracja Timerów w środowisku Cube Poniższe print screeny przedstawiają konfigurację Timera 3 Zrzut 1.1 Ustawienie TIM3 z zegarem wewnętrznym w odpowiednim trybie na kanale 1 (sygnał nie jest wyprowadzony na pin, ale może być wykorzystany, np. do przerwania)
03.Mikrokontrolery i Mikroprocesory Timery i przerwania 5 Zrzut 1.2 Ustawienie odpowiednich parametrów TIM3 Zrzut 1.3 Włączenie przerwania od TIM3
03.Mikrokontrolery i Mikroprocesory Timery i przerwania 6 Aby uruchomić Timer 3 oraz PWM należy dopisać funkcje, w wygenerowanym kodzie w języku C, w kompilatorze IAR przedstawione na Listingu 1 oraz Listingu 2: Listing 1 Uruchomienie Timera 3 HAL_TIM_Base_Start_IT(&htim3); //Start TIM3 Listing 2 Uruchomienie PWM od TIM4, na kanale 2 HAL_TIM_PWM_Start_IT(&htim4, TIM_CHANNEL_2); //Start PWM, kanał2
03.Mikrokontrolery i Mikroprocesory Timery i przerwania 7 2. Przebieg laboratorium Druga część instrukcji zawiera zadania do praktycznej realizacji, które demonstrują zastosowanie technik z omawianego zagadnienia. 2.1. Zadanie 1. Na ocenę 3.0 (dst) Proszę skonfigurować Timer 3 do wygenerowania przerwania o dowolnym okresie. Proszę nagrać program na płytkę i w podglądzie zmiennych w IAR dla rejestrów (Register) sprawdzić działanie Timera. Proszę wskazać rejestr będący licznikiem. 2.2. Zadanie 2. Na ocenę 4.0 (db) Proszę skonfigurować Timer 3 do wygenerowania przerwania o okresie 3000 cykli zegarowych. Proszę w przerwaniu inkrementować dowolną zmienną czas typu short. Proszę nagrać program na płytkę i w podglądzie zmiennych w IAR dla rejestrów (Register) sprawdzić działanie Timera poprzez sprawdzenie, czy jego licznik jest inkrementowany. Następnie proszę sprawdzić, czy program wchodzi w przerwanie, albo przez ustawienie breakpointa, albo przez podgląd zmiennej czas, w podglądzie zmiennych. 2.3. Zadanie 3. Na ocenę 5.0 (bdb) W programie STM32CubeMX proszę skonfigurować PWM, czyli wypełnienie. Proszę je zaimplementować na jednej z diod (patrz schemat płytki Discovery rozdz. 1.1.). Należy sprawdzić do którego pinu jest podpięta dioda, oraz jaki Timer może go obsługiwać. Należy go odpowiednio skonfigurować, podając wypełnienie dla PWM, oraz Prescaler. Wartości dowolne, ale proszę tak wykonać ćwiczenie, aby łatwo dało się zauważyć, że dioda nie świeci pełną mocą. Wygenerowany kod należy przez Cube, należy otworzyć w środowisku IAR, przekompilować i nagrać na płytkę.