PWM, obsługa wyświetlacza graficznego

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)
Funkcje w PHP ABK.
Generatory i Przerzutniki
Ćwiczenie (1) Dostosuj poniższy program do potrzeb zdefiniowanych w treści programu zaliczeniowego: #include void dodaj(){}; void edytuj(){}; void usun(){};
Programowanie obiektowe
Algorytmy – zapis struktur programowania
Serwer WWW na AT89C52 Adrian Witlib Maciej Przeor ID06SK1
Przetworniki C / A budowa Marek Portalski.
OPTOELEKTRONIKA Temat:
PROGRAMOWANIE STRUKTURALNE
Liczniki.
Impulsowy przekształtnik energii z tranzystorem szeregowym
Autor: Dawid Kwiatkowski
Turbo pascal – instrukcje warunkowe, iteracyjne,…
BUDOWA WEWNĘTRZNA KOMPUTERA
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.
Wprowadzenie do SystemC
Temat nr 10: System przerwań
Systemy Wbudowane Bascom
Zasilacze.
Dr Anna Kwiatkowska Instytut Informatyki
PASCAL (2) dr Anna Kwiatkowska.
Wątki.
Miernik parametrów elektrycznych, seria PM800 Moduły We/Wy
Szybkie uruchomienie systemu kontroli dostępu ATS MASTER
Podstawy programowania
Programowalny układ we/wy równoległego.. Wyprowadzenia układu.
MCS51 - wykład 6.
Podstawy programowania
BR SIMULATION Marcin Pędziwiatr
Andrzej Jędryczkowski Nie da się napisać większego programu bez podziału go na części zwane podprogramami. Podprogram to wyróżniona część programu.
© A. Jędryczkowski – 2006 r. © A. Jędryczkowski – 2006 r.
Algorytmy i struktury danych
Instrukcja USOS Rejestracja na zajęcia obieralne wersja by Marek Opacki.
Regulacja impulsowa z modulacją szerokości impulsu sterującego
PHP: warunki, pętle, switch, break, continue
PEŁNA KONTROLA NAD POBOREM MOCY
Instrukcje iteracyjne
Koncepcja procesu Zadanie i proces. Definicja procesu Process – to program w trakcie wykonywania; wykonanie procesu musi przebiegać w sposób sekwencyjny.
Informatyka MZT1 Wykład 6 Iteracje while i repeat Tablice Rekordy
Instrukcja USOS Raporty tekstowe wersja by Marek Opacki.
12. Input Capture – Wejście przechwytywania
Etapy uruchamiania systemu Pliki konfiguracyjne
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.
Klawiatura i mysz.
Przerzutniki Przerzutniki.
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
Pętle – instrukcje powtórzeń
STM32F429I Discovery WARSZTATY DLA STUDENCKIEGO KOŁA NAUKOWEGO CHIP.
Przerwania timera i przerwania zewnętrzne
obsługa wyświetlacza graficznego
Stworzenie projektu w cubemx i kontunuacja w sw4stm32
Automatyczna linia galwanizerska Zarządzanie procesem galwanizerskim w linii automatycznej – sterowanie i wizualizacja.
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
Wyższa Szkoła Informatyki i Zarządzania
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.
C++ mgr inż. Tomasz Turba Politechnika Opolska 2016.
POLITECHNIKA POZNAŃSKA
Podstawy Teorii Sygnałów (PTS) Matematyczny opis systemów i sygnałów
Układy asynchroniczne
Zygmunt Kubiak Instytut Informatyki Politechnika Poznańska
Mikrokontrolery System przerwań
Zapis prezentacji:

PWM, obsługa wyświetlacza graficznego STM32F429I Discovery PWM, obsługa wyświetlacza graficznego

PWM na STM32F429I Timery TIM1 – TIM6 oraz TIM9 – TIM14 mają możliwość generacji PWM – przebiegu prostokątnego o zadanej częstotliwości i wypełnieniu. Częstotliwość generowanego sygnału zależy od taktowania rdzenia, prescalera timera i maksymalnej wartości licznika (wartość Counter Period, po której licznik się zeruje i zlicza od nowa). Wypełnienie to stosunek długości impulsu do długości jednego okresu przebiegu. PWM generuje przebieg prostokątny o amplitudzie 3.3V – równej napięciu zasilania mikrokontrolera. Dla wysokich częstotliwości można dokonać uproszczenia – napięcie na wyprowadzeniu PWM nie wynosi naprzemiennie 0V i 3.3V, tylko: 𝑉 𝑜𝑢𝑡 =3.3𝑉 ∗ 𝑡 𝑝𝑢𝑙𝑠𝑒 𝑇 Gdzie tpulse to czas impulsu, T to okres przebiegu, Vout to napięcie generowane przez PWM. PWM jest prostym przetwornikiem cyfrowo-anologowym.

Zależność napięcia od wypełnienia PWM

PWM na STM32 Generacja PWM opiera się na timerze i jego liczniku. Po ustawieniu prescalera i okresu należy ustawić długość pulsu, nie może być ona większa od okresu timera. Przy domyślnych pozostałych ustawieniach licznik wzrasta z każdym taktem timera aż do osiągnięcia wartości Counter Period. W chwili zerowania licznika (update/overflow) wyprowadzenie PWM osiąga stan wysoki – 3.3V, a w chwili przekroczenia ustawionej wartości Pulse przełącza na stan niski – 0V. Ponieważ timer działa w trybie ciągłym, całość jest powtarzana i w ten sposób powstaje prostokątny przebieg okresowy. W trakcie działania programu można zmieniać wypełnienie, wpływając w ten sposób na napięcie na wyjściu PWM. Przykłady zastosowania PWM – sterowanie silnikami i układami sterowanymi napięciowo, serwomotorami, generacja sygnałów anologowych.

Ustawienie timera z generacją PWM

PWM na STM32 Po wygenerowaniu kodu trzeba jeszcze uruchomić timer w grybie generacji PWM z obsługą przerwań – instrukcja HAL_TIM_PWM_START_IT. Dokładniej jest to opisane na stronie 838 i 839 instrukcji obsługi bibliotek HAL. Do zmiany wartości wypełnienia służy makro __HAL_TIM_SET_COMPARE (strona 870). Niestety żadne z wyprowadzeń których funkcją alternatywną jest PWM nie jest podłączone do diody na płytce. Można to jednak ominąć, włączając generowanie PWM na dowolnym możliwym wyprowadzeniu, a następnie używając przerwań które ustawią stan wysoki na diodzie na początku okresu (po przepełnieniu licznika) a następnie stan niski w momencie zakończenia impulsu. Włączymy więc PWM na obojętnie którym timerze i kanale, ustawiając je na tryb pracy z przerwaniami i włączając dwa rodzaje przerwania – od przepełnienia licznika i od zakończenia impulsu.

Przerwania z timera

Kod programu Włączenie timera w trybie podstawy czasu i PWM w trybie przerwań. Pierwszy tryb jest nam potrzebny do przerwania z przepełnienia licznika, drugi do przerwania z zakończenia impulsu PWM. Zmienna compare będzie wartością licznika przy której ma się kończyć impuls PWM. W naszym przykładzie okres przebiegu trwa 1000 taktów (999+1). /* USER CODE BEGIN 2 */ HAL_TIM_Base_Start_IT(&htim1); HAL_TIM_PWM_Start_IT(&htim1, TIM_CHANNEL_1); int compare = 0; /* USER CODE END 2 */

Przerwania Opis wywołania zwrotnego HAL_TIM_PeriodElapsedCallback znajduje się na stronie 826, a HAL_TIM_PulseFinishedCallback na stronie 863 instrukcji bibliotek HAL. /* USER CODE BEGIN 4 */ void HAL_TIM_PeriodElapsedCallback(TIM_HandleTypeDef *htim) { if(htim->Instance==htim1.Instance) { HAL_GPIO_WritePin(GPIOG, GPIO_PIN_13, 1); } } void HAL_TIM_PWM_PulseFinishedCallback(TIM_HandleTypeDef *htim) { if(htim->Instance==htim1.Instance) { HAL_GPIO_WritePin(GPIOG, GPIO_PIN_13, 0); } } /* USER CODE END 4 */

Pętla główna Zmiana wypełnienia PWM co 200 milisekund: /* USER CODE BEGIN WHILE */ while (1) { /* USER CODE END WHILE */ /* USER CODE BEGIN 3 */ for(compare = 99; compare < 1000; compare += 100) { __HAL_TIM_SET_COMPARE(&htim1, TIM_CHANNEL_1, compare); HAL_Delay(200); } } /* USER CODE END 3 */