Przerwania timera i przerwania zewnętrzne

Slides:



Advertisements
Podobne prezentacje
Watchdog Paweł Trojanowski
Advertisements

Zerowanie mikroprocesorów Cel: wprowadzenie mikroprocesora w określony stan początkowy Zwykle realizowany poprzez: inicjalizację licznika rozkazów (PC)
Mechanizmy pracy równoległej
Wykonał : Marcin Sparniuk
Odpytywanie - Polling Program czeka na nadejście danych z urządzenia i nie może wykonywać innych zadań. Urządzenie zewnętrzne dostarcza dane w trudnym.
Semafory Autorzy : Michał Winciorek Łukasz Jackowicz.
PROGRAMOWANIE STRUKTURALNE
PRZERZUTNIKI W aktualnie produkowanych przerzutnikach scalonych TTL wyróżnia się dwa podstawowe rodzaje wejść informacyjnych: - wejścia asynchroniczne,
Wykład 5 Przerwania w systemie SAB80C537 dr inż. Andrzej Przybył
Wykład 4 Przetwornik Analogowo-Cyfrowy
Podstawowe składniki funkcjonalne procesora i ich rola.
Jakub Jurkiewicz Mirosław Ochodek Sponsorzy: Debug Jak szukać błędów w Eclipsie?
by Ernest Jamro Katedra Elektroniki, AGH Kraków
Systemy operacyjne Wykład nr 5: Wątki Piotr Bilski.
Wykład nr 2: Struktura systemu komputerowego a system operacyjny
Temat nr 10: System przerwań
Komunikacja z arkuszem. Iteracje. Funkcje.
Java – programowanie obiektowe
ogólne pojęcia struktury
Podstawy programowania
Programowalny układ we-wy szeregowego 8251
Programowalny układ we/wy równoległego.. Wyprowadzenia układu.
MCS51 - wykład 6.
POLITECHNIKA POZNAŃSKA
Opracowanie: Maria W ą sik. Pierwsze komputery budowano w celu rozwi ą zywania konkretnych problemów. Gdy pojawiało si ę nowe zadanie, nale ż ało przebudowa.
Mikrokontrolery PIC.
POLITECHNIKA POZNAŃSKA
Mikroprocesory.
Mikroprocesory mgr inż. Sylwia Glińska.
Style i szablony w Wordzie
Przerwanie ang. interrupt.
Koncepcja procesu Zadanie i proces. Definicja procesu Process – to program w trakcie wykonywania; wykonanie procesu musi przebiegać w sposób sekwencyjny.
Elżbieta Fiedziukiewicz
Etapy uruchamiania systemu Pliki konfiguracyjne
Wykład 7 Synchronizacja procesów i wątków
Projektowanie stron WWW
Bariery synchronizacyjne Bariery są obiektami synchronizacyjnymi pakietu pthread służącymi do wyrównywania czasów pracy wątków wykonujących wspólne zadanie.
Wprowadzenie cyfrowego wyświetlacza. Panel wyświetlacza Czas i Temp. Obszar wyświetlania 1) Wyświetlacz czasu 2) Zadana temperatury (po lewej stronie)
Algorytmika Iteracje autor: Tadeusz Lachawiec.
Procesor – charakterystyka elementów systemu. Parametry procesora.
Zintegrowany sterownik przycisków. Informacje podstawowe Każdy przycisk jest podłączony do sterownika za pośrednictwem dwóch przewodów, oraz dwóch linii.
Przerzutniki Przerzutniki.
Przerzutniki bistabilne
Procesor, pamięć, przerwania, WE/WY, …
Pamięć DRAM.
Procesy, wątki Program a proces Proces: Przestrzeń adresowa, kod, dane, stos (część pamięci do przechowania zmiennych lokalnych i niektórych adresów) Otwarte.
ATXMEGA128A4U 128 kB pamięci Flash Zasilanie 1.6V-3.6V Maksymalne taktowanie 32 MHz 34 Programowalne WE-WY System zdarzeń (Event System) 4 kanały DMA.
Układy i systemy mikroprocesorowe
STM32F429I Discovery WARSZTATY DLA STUDENCKIEGO KOŁA NAUKOWEGO CHIP.
Pakiety numeryczne Graphical User Interface Łukasz Sztangret Katedra Informatyki Stosowanej i Modelowania.
obsługa wyświetlacza graficznego
Portal edukacyjny J A V A S C R I P T JĘZYK PROGRAMOWANIA STRON HTML Opracowała: Anna Śmigielska.
Stworzenie projektu w cubemx i kontunuacja w sw4stm32
PWM, obsługa wyświetlacza graficznego
POLITECHNIKA POZNAŃSKA
POLITECHNIKA POZNAŃSKA WBMiZ Zakład Urządzeń Mechatronicznych STEROWNIKI URZĄDZEŃ MECHATRONICZNYCH
POLITECHNIKA POZNAŃSKA WBMiZ Zakład Urządzeń Mechatronicznych STEROWNIKI URZĄDZEŃ MECHATRONICZNYCH
Akademia ETI 2016 PREZENTACJA - MIKROKONTROLERY. Czym jest mikrokontroler Mikrokontroler to wyspecjalizowany układ scalony, zawierający jednostkę centralną.
SunFollower Projekt zespołowy Prowadzący: Dr inż. Marek Woda Wykonał: Bartosz Przybyłek Data prezentacji:
Akademia ETI 2016 LABORATORIUM 2 – OBSŁUGA WYŚWIETLACZA GRAFICZNEGO.
Optymalizacja programów Open-Source
TEMAT: Zapoznanie się z funkcja LICZNIKA w sterowniku Twido
POLITECHNIKA POZNAŃSKA
Mikrokontrolery z rdzeniem ARM Cortex-M0+ Energooszczędność
Zygmunt Kubiak Instytut Informatyki Politechnika Poznańska
Mikrokontrolery System przerwań
Mikrokontrolery STMicroelectronics
Zygmunt Kubiak Instytut Informatyki Politechnika Poznańska
TEMAT: Zapoznanie się z funkcja LICZNIKA w sterowniku Twido
Excel Informacje różne.
Zapis prezentacji:

Przerwania timera i przerwania zewnętrzne STM32F429I Discovery Przerwania timera i przerwania zewnętrzne

Czym są przerwania Przerwanie jest sygnałem powodującym wstrzymanie aktualnie czynnego wątku i przejście do innej sekcji kodu, pod warunkiem że owe przerwanie ma większy priorytet od wątku który ma zostać przerwany. W STM32 domyślnie najwyższy priorytet ma przerwanie zerowania systemu – przycisk Reset, a wszystkie przerwania mają wyższy priorytet od wątku głównego. Przerwania mogą pochodzić z różnych źródeł – przepełnienie licznika timera, odebranie ramki danych przez UART, zmiana stanu na wejściu GPIO i wiele innych. Obsługą przerwań zajmuje się NVIC (Nested Vectored Interrupt Controller) – wbudowany w rdzeń Cortex kontroler przerwań. Przy wystąpieniu akcji skonfigurowanej w kontrolerze tworzy się żądanie przerwania, które wstrzymuje aktywny wątek i wywołuje inną funkcję, tak zwane wywołanie zwrotne – callback. Po zakończeniu wykonywania callbacka wznawiany jest wcześniej przerwany wątek. Każdy rodzaj przerwania ma swój własny callback, jednak tego samego typu przerwanie może pochodzić z różnych źródeł (na przykład dwóch niezależnych timerów lub GPIO) więc w każdym callbacku trzeba sprawdzać z którego źródła przychodzi żądanie przerwania.

Przerwania timera Timer jest peryferium służącym do precyzyjnego odmierzania czasu. Na jego bazie można tworzyć operacje wykonujące się cyklicznie w określonych odstępach czasowych, dokonywać pomiaru częstotliwości sygnałów, generować PWM. Timer powiązany jest z licznikiem, który z każdym taktem zegara zwiększa swój stan o 1 (lub zmniejsza, zależnie od ustawienia). Po osiągnięciu danej wartości zeruje się, tak zwane przepełnienie, overflow lub update, i zaczyna wzrastanie od zera. Większość timerów w STM32F4 mają 16- bitowe liczniki, za wyjątkiem TIM2 i TIM5 które mają liczniki 32-bitowe. Timery w STM32F429 mogą pełnić funkcję podstawy czasu, pomiaru częstotliwości sygnału, generowania PWM, obsługi enkoderów i czujników Halla. Więcej informacji na temat timerów znajduje się na stronie 34 noty katalogowej STM32F429xx.

Konfiguracja timera jako podstawa czasu

Przerwanie z timera – update (przepełnienie licznika)

Konfiguracja c.d. Do podstawowych zastosowań nie ma znaczenia który timer wybierzemy. Okno konfiguracji pojawia się po przejściu na zakładkę „Configuration” i kliknięciu na „TIM1” w kolumnie Control. Najważniejsze parametry timera: Prescaler – dzielnik częstotliwości. Częstotliwość zegara (zwiększania wartości licznika o 1) będzie wynosiła FTIM = FCPU / (prescaler+1), na przykład przy taktowaniu 180MHz i prescalerze 17999 częstotliwość TIM1 wynosi 10kHz. Counter mode – kierunek zmiany licznika. Up – w górę od 0 do Counter Period, Down – w dół od Counter Period do 0. Counter Period – wartość licznika przy której ma się zerować. Częstotliwość przepełnień będzie wynosiła FTIM / (CounterPeriod+1), w naszym przypadku będzie to 1Hz. Internal Clock Division – kolejny dzielnik częstotliwości, może dzielić częstotliwość dodatkowo przez 2 lub 4.

Kod programu Informacje dotyczące szczegółów obsługi timerów znajdują się na stronie 832 instrukcji bibliotek HAL. Uruchomienie TIM1 w trybie przerwań (dla TIM1 w nawiasie jest &htim1, dla TIM2 byłoby &htim2 itd.): /* USER CODE BEGIN 2 */ HAL_TIM_Base_Start_IT(&htim1); /* USER CODE END 2 */ Callback wykonywany przy każdym przepełnieniu licznika (w przykładzie 1Hz – co 1 sekundę): /* USER CODE BEGIN 4 */ void HAL_TIM_PeriodElapsedCallback(TIM_HandleTypeDef *htim) { if(htim->Instance == htim1.Instance) // sprawdzanie czy przerwanie pochodzi z TIM1 { HAL_GPIO_TogglePin(GPIOG, GPIO_PIN_13); } } /* USER CODE END 4 */

Kod programu c.d. Przerwanie to wykonuje się dokładnie co sekundę, przełączając diodę z zapalonej na zgaszoną lub na odwrót. Dzieje się to niezależnie od głównej pętli while(1), więc cokolwiek nie będzie w niej wykonywane, dioda i tak będzie się przełączać co sekundę, gdyż po każdym przepełnieniu licznika w TIM1 następuje przerwanie – wstrzymywany jest główny wątek i wykonuje się przypisany do przerwania callback. Należy jednak pamiętać żeby włączyć przerwanie „TIM1 update interrupt” w NVIC, w przeciwnym razie program może się nie skompilować, i instrukcje wykonywane podczas przerwania muszą zajmować mniej czasu niż okres przerwań, aczkolwiek przy niskich częstotliwościach przerwań względem częstotliwości rdzenia nie ma to aż tak dużego znaczenia.

Przerwania zewnętrzne Poza przerwaniami wewnętrznymi i programowymi wystepują też przerwania zewnętrzne. W STM32F429 każde GPIO może służyć za wejście z przerwaniem zewnętrznym z wykrywaniem zbocza narastającego, opadającego i zmiany stanu. W przypadku reakcji na zbocze opadające przerwanie wykona się w momencie zmiany stanu GPIO z niskiego na wysoki, w przypadku zbocza opadającego z wysokiego na niski, a w ostatnim przypadku przy jakiejkolwiek zmianie stanu. Przy ustawianiu GPIO z trzeba zwrócić uwagę do której linii kontrolera przerwań zewnętrzych jest ono podłączone. Wyprowadzenia z numerem 0: PA0, PB0 … PH0 podłączone są do linii EXTI0, z numerem 1: PA1, PB1 … PH1 do EXTI1 i tak dalej aż do EXTI15. Jednocześnie można używać tylko jednego wyprowadzenia z danej linii, co oznacza że jeśli użyjemy PA0 jako wejścia z przerwaniem zewnętrznym, nie możemy już w tym samym celu użyć żadnego innego wyprowadzenia z numerem 0. Informacje dotyczące EXTI znajdują się na stronie 83 instrukcji bibliotek HAL. Plik zawierający konfigurację przerwań to stm32f4xx_it.c, znajduje się w tym samym folderze co main.c – Application -> User. Niebieski przycisk na płytce STM32F429I-Discovery jest zwarty do masy (pull-down, przy wciśnięciu powstaje zbocze narastające), podłączony jest do GPIO PA0, GPIO_PIN_0 w kontrolerze EXTI0.

Konfiguracja PA0 jako wejścia z przerwaniem

Przerwanie z linii EXTI0

Kod programu Callback przełączający diodę, wykonywany w momencie wciśnięcia przycisku PA0, niezależnie od tego co wykonuje się w programie głównym: /* USER CODE BEGIN 4 */ void HAL_GPIO_EXTI_Callback(uint16_t GPIO_Pin) { if(GPIO_Pin == GPIO_PIN_0) // GPIO_PIN_0 bo wyprowadzenie układu PA0 – linia EXTI0 { HAL_GPIO_TogglePin(GPIOG, GPIO_PIN_13); } } /* USER CODE END 4 */ GPIO_PIN_0 zostało odczytane z pliku stmf429xx_it.c – wejście z przerwaniem podłączone do linii EXTI0 w funkcji EXTI0_IRQHandler. W przypadku użycia przerwania na innym GPIO, na przykład PB3, byłoby to GPIO_PIN_3 i funkcja EXTI3_IRQHandler. Dla linii EXTI od 5 – 9 oraz 10 – 15 funkcje obsługi żądania przerwań są wspólne: EXTI9_5_IRQHandler i EXTI15_10_IRQHandler. Callback do przerwań zewnętrzych jest tylko jeden wspólny, więc trzeba w nim sprawdzać z którego GPIO pochodzi przerwanie.

Zawartość pliku stm32f429xx_it.c – definicja przerwań