Kurs STM32 #6 konfiguracja zegarów i obsługa timerów

  Рет қаралды 20,377

Piotr Duba

Piotr Duba

Күн бұрын

Пікірлер: 33
@avery7283
@avery7283 5 жыл бұрын
Skoro opcja auto-reload preload powinna restartować timer to w przypadku jej wyłączenia timer powinien doliczyć do ustawionego counter period i przestać wysyłać przerwania. Jednak w programie gdy timer doliczył do ustawionego na 19 counter period dioda dalej migała. Wiesz może dlaczego?
@PiotrDuba
@PiotrDuba 5 жыл бұрын
Tak, przepraszam, tu rzeczywiście pomyłka z mojej strony. Opcja auto-reload preload służy do przeładowania liczby, do której zliczamy dopiero w momencie nastąpienia zdarzenia UPDATE. Mamy dzięki temu pewność, że obojętnie kiedy nie zmienilibyśmy rejestru ARR, to timer doliczy zawsze poprawnie do poprzednio ustawionej wartości. Tu przykład: strona 675 www.st.com/content/ccc/resource/technical/document/reference_manual/4a/19/6e/18/9d/92/43/32/DM00043574.pdf/files/DM00043574.pdf/jcr:content/translations/en.DM00043574.pdf Na wykresie 253. auto-reload preload (ARPE) jest wyłączony. Zliczamy do wartości 0xFF, ale w trakcie zliczania wpisujemy do ARR wartość 0x36. Przez to doliczamy tylko do wartości 0x36 (mamy źle zliczony ten cykl). Wykres 254. pokazuje zachowanie z włączonym ARPE. Liczymy teraz do 0xF5. Dzięki ARPE, mimo tego, że wpiszemy w trakcie zliczania wartość 0x36, to najpierw timer doliczy do poprzednio ustawionej wartości (0xF5) i dopiero w momencie zdarzenia UPDATE zostanie zaktualizowana nowa wartość, do której ma zliczać (0x36).
@PiotrDuba
@PiotrDuba 5 жыл бұрын
Natomiast co do Twojego pytania o jednorazowe zliczanie, to włączamy to opcją "One Pulse Mode" w konfiguracji timera (w tym samym oknie, gdzie aktywujemy timer). Wtedy każdorazowe wywołanie HAL_TIM_Base_Start_IT(&htimXX), gdzie XX to nr timera, spowoduje jednokrotne zliczenie i wygenerowanie przerwania. Tu tylko mała uwaga - może być tak, że przy pierwszym wywołaniu nastąpi podwójne przerwanie - żeby tego uniknąć, wystarczy po zainicjowaniu timera (za MX_TIMxx_Init() w pliku main.c - w granicach 90-tej linii kodu) wyczyścić flagę zdarzenia UDPATE - htimXX.Instance->SR = 0; gdzie znowu XX - to nr timera. Wtedy powinno działać tak, jak chcesz.
@avery7283
@avery7283 5 жыл бұрын
@@PiotrDuba Dzięki za pomoc. Teraz wszystko działa. Dla tych co wolą używać funkcji które daje HAL zamiast rejestrów jest jeszcze macro które czyści wybraną flagę - __HAL_TIM_CLEAR_FLAG(&htimXX, __FLAG__), w tym przypadku __FLAG___ = TIM_FLAG_UPDATE
@michaczajka3854
@michaczajka3854 2 ай бұрын
Od czasu do czasu wracam do tych świetnych materiałów powtarzając sobie, ponieważ świetnie to wszystko przedstawiasz :D
@gruchenstein9163
@gruchenstein9163 5 жыл бұрын
Po to szedlem na studia, zeby sie uczyc takich rzeczy. Pisze teraz prace inzynierska i sie ucze z YT, rzeczy mi do niej potrzebnych, szkoda gadac... Wielkie dzieki za materialy!
@PiotrDuba
@PiotrDuba 4 жыл бұрын
Po części to zależy od konkretnego kierunku, ale w ogólnie nauka programowania wymaga poświęcenia dużo czasu samodzielnie
@mateuszurbanek737
@mateuszurbanek737 4 жыл бұрын
W 20 minut nauczylem sie tyle, co na 2 godzinach wykladu, dzieki ^^
@bubel40
@bubel40 4 жыл бұрын
Ale kozak, prowadzący mnie nie uwali za używanie delaya
@bert3373
@bert3373 2 жыл бұрын
mega dziękuję, pomogłeś fest :)
@piotrolczyk2679
@piotrolczyk2679 5 жыл бұрын
11:05 Omawiasz konfigurację źródła sygnału zegarowego HSC. Opcja BYPASS służy do włączenia zewnętrznego kwarcu który znajduje się na płytce w części programatora. Przydatne w przypadku bloków peryferyjnych wymagających stabilnego źródła sygnałowego np. USB
@PiotrDuba
@PiotrDuba 5 жыл бұрын
Nie do końca - opcja BYPASS umożliwia podanie zewnętrznego źródła zegarowego. Strony 16-17 z noty ST www.st.com/content/ccc/resource/technical/document/application_note/31/14/f4/9d/d3/8f/48/2b/DM00070391.pdf/files/DM00070391.pdf/jcr:content/translations/en.DM00070391.pdf Może nie doprecyzowałem do końca mojej wypowiedzi w filmie. Omawiając konfigurację, mówię zawsze o ogólnych przypadkach, a nie tym co jest tylko na płytce Nucleo. Akurat tutaj sygnał ten pochodzi z mikrokontrolera, który jest programatorem - ale z pinu, który jest wyjściem zegarowym (opcja Master Clock Output), a nie bezpośrednio z kwarcu. W przypadku płytki, z której korzystam w celu użycia bezpośrednio kwarcu jako źródła HSE trzeba wylutować rezystor SB50 na spodzie płytki i dolutować kwarc X2, kondensatory C33 i C34 oraz rezystory 0 ohm R35 i R37 - schemat strona 64 www.st.com/content/ccc/resource/technical/document/user_manual/98/2e/fa/4b/e0/82/43/b7/DM00105823.pdf/files/DM00105823.pdf/jcr:content/translations/en.DM00105823.pdf
@piotrolczyk2679
@piotrolczyk2679 5 жыл бұрын
@@PiotrDuba Generalnie. Twój kurs to bardzo dobra inicjatywa przybliżająca tematykę programowania mikrokontrolerów STM32. Takich kursów w języku polskim praktycznie nie ma. Moim zdaniem to co robisz było, jest i będzie potrzebne. Mierzysz się z tematem interdyscyplinarny obejmującym zaawansowana wiedze z dziedziny elektroniki, informatyki. Po obejrzeniu dotychczasowych odcinków wnioskuję że posiadasz stosunkowo dużą wiedzę w w/w dziedzinach. Jednak w Twoim kursie widać wiele spontanicznych wypowiedzi które czasem sprawiają wrażenie wypowiedzi mało przemyślanych, bez solidnego planu ( bez urazy ). Jeżeli miałbym coś podpowiedzieć to rozważ czy nie warto zrobić sobie dość szczegółowy plan jakie informacje muszą się znaleźć w danym odcinku. Warto również na początku kursu przekazać dość dokładnie do kogo ten kurs jest kierowany i jaką trzeba posiadać wiedzę i umiejętności aby kurs zrozumieć. Wiem to nie jest łatwe. To co robisz to ciężka praca która być może da owoce w przyszłości. Powodzenia!
@PiotrDuba
@PiotrDuba 5 жыл бұрын
Dzięki! Miło mi słyszeć rzeczowe komentarze. Dokładnie - wytłumaczenie nie jest proste, bo wymaga poruszenia kilku dziedzin. Też nie jestem zwolennikiem kursów - kopiuj-wklej. Jest to spontaniczne, bo robię to w wolnych chwilach z pasji jedynie
@Daniel24Danko
@Daniel24Danko 4 жыл бұрын
Na przyszłość mogłeś jeszcze sprawdzić jakimś analizatorem stanów logicznych czy faktycznie dioda zmienia stan się co oczekiwany czas. A tak to jest git. Czekam na kolejne nagrania😉
@smiechu47
@smiechu47 2 жыл бұрын
Korzystam z płytki STM32L476RG Nucleo-64. W momencie, gdy włączam jakiś Timer to nie pojawia się on w Clock Configuration. Dlaczego/
@pianowithsebastian
@pianowithsebastian 5 жыл бұрын
Czy będzie jakiś odcinek z czujnikami? Na przykład pomiary odległości z hc-sr04. Chętnie bym obejrzał :)
@PiotrDuba
@PiotrDuba 4 жыл бұрын
Z czujnikiem ciśnienia np. kzbin.info/www/bejne/hWHbhWWAj6ymh68
@roxo2137
@roxo2137 2 жыл бұрын
Czy TIM_CLK to jest ta wartość z pola APB1 timer clocks (nie licząc zer) z zakładki "Clock Configuration"?
@rafakita1217
@rafakita1217 5 жыл бұрын
Bardzo ciekawy prowadzisz kanał! A będziesz się zagłębiał w free RTOS i jakieś moduły do stm32, na przykład GPRS lub GPS? Gdyż zamierzam zbudować urządzenie które będzie się komunikowało z moją aplikacją na czasie rzeczywistym. :)
@PiotrDuba
@PiotrDuba 5 жыл бұрын
Dzięki :D Może kiedyś tak. Aktualnie omówienie krok po kroku podstaw zajmuje mi większość czasu, który poświęcam na prowadzenie kanału ;)
@incxxxx
@incxxxx 9 ай бұрын
Jak mozna zliczac impulsy timera tak jak to sie robi w avr? Tzn klade TCNT1=0 i gdy nastapi interesujace mnie zdarzenie odczytuje licznik TCNT1. Czyli mam liczbe zliczen a wiec i czas jaki uplynal od mometu, kiedy wzerowalem licznik TCNT1.
@roxo2137
@roxo2137 2 жыл бұрын
Mam pytanie, jak zrobić żeby użytkownik za pomocą tego timera w realterm podał sam wartość, która definiuje co ile sekund bądź milisekund ma się zapalać ta dioda?. Przykładowo w realterm wpiszę 5, to dioda będzie się zapalać co 5 sekund.
@mariuszpilecki7682
@mariuszpilecki7682 3 жыл бұрын
W STM32L031 TIMER 2 generuje jedno przerwanie -> wspólne dla UP oraz dla CC ( dokładnie wszystkie cztery CC ). Funkcja zwrotna przerwania jest jedna: void HAL_TIM_PeriodElapsedCallback(TIM_HandleTypeDef *htim) ( dla STM32G031... są dwa oddzielne przerwania i dwie oddzielnie wywoływane funkcje ) Jak za pomocą HAL_TIM_GetActiveChannel(htim) mogę otrzymac tylko z którego kanału jest przerwanie od CC Czy przyjąc że gdy w odpowiedzi mam HAL_TIM_ACTIVE_CHANNEL_CLEARED to znaczy że przerwanie jest od przepełnienia ?
@ozipl3239
@ozipl3239 4 жыл бұрын
Hej, a pokazesz sterowanie PWM? :) np jasnosc diody?
@PiotrDuba
@PiotrDuba 4 жыл бұрын
Tak, pokażę też inne zastosowania timerów - PWM, obsługę enkoderów
@ЛюбомирБезган
@ЛюбомирБезган 2 жыл бұрын
26:18 xDDD
@dominikkupaj4339
@dominikkupaj4339 5 жыл бұрын
czy ty czasem nie pracujesz w tech?
@PiotrDuba
@PiotrDuba 4 жыл бұрын
Jeśli polibudę można uznać za tech, to tak ;)
@dominikkupaj4339
@dominikkupaj4339 4 жыл бұрын
@@PiotrDuba która polibuda?
@PiotrDuba
@PiotrDuba 4 жыл бұрын
Gdańska
@incxxxx
@incxxxx 9 ай бұрын
xxxc
@jacekwis512
@jacekwis512 11 ай бұрын
HAL_TIM_Base_Start_IT(&htim16); Dla czego u mnie występuje błąd jak wpisuje Jaka jest przyczyna coś źle robię Czy t en kod nie pasuje Wpisuje tak samo ale błędy są czemu co robię nie tak
Kurs STM32 #7 Interfejs I2C
36:50
Piotr Duba
Рет қаралды 17 М.
STM32 Guide #3: PWM + Timers
20:24
Mitch Davis
Рет қаралды 156 М.
СИНИЙ ИНЕЙ УЖЕ ВЫШЕЛ!❄️
01:01
DO$HIK
Рет қаралды 3,3 МЛН
VIP ACCESS
00:47
Natan por Aí
Рет қаралды 30 МЛН
Support each other🤝
00:31
ISSEI / いっせい
Рет қаралды 81 МЛН
Kurs STM32 #5 komunikujemy się z komputerem - interfejs UART
18:46
Kurs STM32 #1 wprowadzenie i konfiguracja środowiska
21:59
Piotr Duba
Рет қаралды 69 М.
Przerwanie zewnętrzne EXTI STM32 | STM32 na Rejestrach #8
36:57
msalamon - Mateusz Salamon
Рет қаралды 1,6 М.
Kurs STM32 #4 przerwania i debugger
17:13
Piotr Duba
Рет қаралды 23 М.
How I built my antenna tower with Hexbeam on top (A to Z)
37:25
Jak wygląda praca programisty embedded
25:02
Inżynier Domu
Рет қаралды 14 М.
Jak utworzyć projekt na STM32 pod pisanie na rejestrach? | STM32 na Rejestrach #1
32:31
СИНИЙ ИНЕЙ УЖЕ ВЫШЕЛ!❄️
01:01
DO$HIK
Рет қаралды 3,3 МЛН