W prawdziwym systemie na ogół potrzebujemy coś robić (np. sprawdzać stan guzików, czujników, wyliczać sterowania dla urządzeń) z częstotliwością dużo większą niż częstotliwość migania diod sygnalizacyjnych. W takiej sytuacji mnożenie przerwań od timerów może powodować zwiększenie czasu reakcji lub rozrzutu czasu reakcji na przerwania, co często jest...
dlaczego od wartości Load odejmujemy 1 ? Bo liczniki używają też wartości 0, więc jeśli chcesz mieć przykładowo 5 cykli, to wpisujesz do licznika wartość "5 - 1". Licznik w efekcie odliczy 4-3-2-1-0 - razem pięć (;
Witam, zaprojektowałem soft-start 3-fazowy sterowany mikrokontrolerem stm32. Steruje poprzez odliczanie po przejściu przez zero sinusoidy na trzech fazach. Gdy mam połączone żarówki w trójkącie to wszystko działa ok. Tzn. płynnie steruje jasnością. Natomiast gdy podłączę silnik indukcyjny to przy pewnej wartości czasu wpada w wibracje, taki jakby rezonans...
Jakaś dokumentacja jest w katalogu firmware procka. Są tam też jakieś przykłady. Jest taka fajna pozycja o STM32 z wykorzystaniem CubeMX: https://www.carminenoviello.com/masterin...
(at)rafz i czym się różni czekanie na zmianę stanu na pinie RW od czekania aż licznik skończy odliczać? Oprócz faktu że w tym drugim nie używamy pinu RW. Przede wszystkim tym, że jak sobie to rozpisze z opóźnieniami to będzie widział jak to czasowo wygląda i gdzie ten czas będzie mógł zaoszczędzić o ile potrzebuje ;) A init, który jest wykonywany zazwyczaj...
Najprościej - odliczasz impulsy w przerwaniu timera. I tak przy każdym kroku masz zmieniać okres timera, więc każdy krok musisz programwo obsłużyć.
A co to jest ? [syntax=c] SysTick_Config(SysTick_FREQ/1); [/syntax] SysTick to 24 bitowy licznik, SysTick_Config służy do zaprogramowania wartości od której odlicza on w dół, po przejściu zero generowane jest przerwanie i SysTick odlicza znowu od wartości wcześniej zaprogramowanej u ciebie jest to (SysTick_FREQ/1).
No tak widzę, bo jest jeden wspolny rejestr ARR. Czyli muszę zapuścić 6 timerów. Dam radę:) Dzieki za pomoc i nastepny stopień "rozjaśnienia";) To jeszcze jedno pytanie - linijka "TIM4->CR1 |= TIM_CR1_DIR;" jest zbędna, to znaczy że w tym trybie kierunek odliczania jest ustalony zawsze w dół? Albo nie ma znaczenia?
System Workbench for STM32 mam zainstalowany, zależy mi na programie startowym kolegi Freddie Chopin bo w SWFstm32 ma własną inicjalizację zegarów i odliczanie czasu systic nie zgadza się z tym co jest w programie a chcę uruchomić hd44780 gdzie potrzebuję dokładnych czasów. Chyba że koledze chodzi o coś innego? Pozdrawiam
W takim razie napisz port STM32 samemu. W katalogu /demo/BARE znajdują się 2 pliki portserial oraz porttimer, musisz uzupełnić implementacje funkcji w nich zawartych (w komentarzach jest opisane co dana funkcja ma robić). Nie jest to trdune bo są to funkcje konfigurujące usart i timery, zatrzymujące i startujące transmisje/odliczanie, więc napisanie...
Najlepiej zrobić to w obsłudze przerwania od timera. Tak jak pisze kolega Alagner - licznik ustawić na np. 100Hz, a w obsłudze przerwania muszą być liczniki programowe realizujące odliczanie czasu - pierwszy liczy do 100, co daje na jego wyjściu 1s, a następny może już odliczać sekundy, następny minuty, godziny, itd... Jednocześnie w tym przerwaniu...
Chciałbym w jakiś sposób przechodzić w tryb uśpienia, ale potrzebuję też odmierzania czasu z dokładnością do 1ms, i inaczej niż pobieranie SysTick z taką częstotliwością nie potrafię tego rozwiązać, tym bardziej, że chciałbym, żeby drugi stm32 podłączony do tego poprzez moduł RF (na SPI) też tak samo odliczał czas, próbowałem na RTC, ale tam jest dokładność...
Jeżeli nie potrzebujesz dokładnych opóźnień a takich Π•oko, to IMHO delay na pętlach w zupełności wystarczy. Timerów w stm32 niby wiele...ale prawie zawsze, w większych aplikacjach znajdzie się szczytniejsze dla nich zastosowanie. Z drugiej strony stosowanie pętli opóźniających na ARM-ach trąci profanacją :) Jeżeli nie interesuje Cie korzystanie...
Ustawienia kanałów CC nie mają bezpośredniego wpływu na pracę timera. Jeśli timer ma odliczać do jakiejś wartości, używa się do tego rejestru ARR (PSC dla dzielnika). Zasadniczy tryb pracy timera określa CMS oraz DIR z rejestru CR1, od przepełnienia timera można ustawić przerwanie UI. Jeśli kanał CC jest ustawiony jako compare (praca jako wyjście),...
oba przerwania wykonują się z taką samą częstotliwością, niezależnie od tego co wpiszę w Pulse Nic dziwnego :) Przecież oba mają tę samą podstawę czasu, czyli rejestr TIM1->CNT. Jedyna różnica jaką mógłbyś zobaczyć, to moment przełączenia wyjścia lub pojawienia się flagi przerwania. Ale nie zobaczysz, ponieważ niezbyt szczęśliwie dobrałeś czasy 0 i...
Do poczytania https://stm32.eu/2018/04/25/7-stm32cube-... Azymut (kąt kierunku w jakim porusza się obiekt w stopniach) można wyłuskać z ramki GPRMC, Odbiornik sypie danymi przez UART po włączeniu zasilania. Wystarczy ze strumienia ramek wydobyć interesujące nas dane. W praktyce czekamy na odpowiedni znak i jeśli się pojawi odliczamy...
Zapytam tu o inną jeszcze sprawę, bo nie chcę dla tego drobiazgu zakładać nowego tematu. Muszę ustawić timeout ramki, jezeli po odpowiednim czasie odbiornik nie odpowie, to transmisja zostaje przerwana z flagą błędu. Chcę do tego użyć timera, np.TIM4. Uruchomiony bedzie w najprostszej konfiguracji zwykłego licznika, ładowanego przed rozpoczeciem transmisji....
Witaj Kolego Szczywronek ! Oczywiście, mam nadzieję, że wiele razy już czytałeś jak piękną robotę odwaliłeś pisząc swój poradnik. Myślę, iż słowo poradnik jest nieadekwatne do tej książki, którą wydałeś w domenie PUBLIC DOMAIN. Wielki szacunek i wielkie podziękowania, za włożony trud! Nie mniej jednak w rozdziale 1.4 (uwagi końcowe) dałeś przyzwolenie...
A może coś takiego (w załączniku)? I przykładowy programik mrugania dwiema diodami... [syntax=c] #include "stm32f10x_io.h" #define LED GPIOA__ODR void TIM1_UP_IRQHandler(void) { if (TIM__UIF(TIM1)) // przerwanie 'update'? { TIM__UIF(TIM1) = 0; // zerowanie flagi LED[0] = LED[1]; // zmiana stanu LED0 LED[1] = ~LED[1]; // zmiana stanu LED1 na przeciwny...
Po ponad tygodniowej przerwie STM32 znowu zagościł na moim biurku. Aktualnie walczę z Timerem, na szybko skonfigurowałem go tak aby odliczał do góry, teraz chciałbym aby było z niego wyzwalane przerwanie. Z tego co wyczytałem w przeróżnych manualach udsotępnianych przez STM trzeba to zrobić w rejestrze ISERx, pytanie tylko co podstawić za x i pod którym...
Witam, pomysł z SysTick wydaje się dobry a ja go rozwinę tak jak ja to widzę. Systick generuje przerwanie co określony czas. Definiuję sobię 8 zmiennych "volatile int": P1,D1,P2,D2,P3,D3,P4,D4 i ustawiam wartości początkowe (P1 - "przekaźnik 1", D1 - "przekaźnik 1 działa") Zmienne Px odpowiadają za odliczanie czasu pomiędzy aktywacją przekaźnika, zmienne...
Jeżeli używasz HAL, to musisz też uruchomić LSE albo ręcznie przerobić kod na używanie LSI. HAL używa LSE do odliczania czasu przy korzystaniu z FatFs. Gdybyś pokazał jak skonfigurowałeś interfejsy, zakładka Configuration, to wtedy można powiedzieć coś więcej. Możesz też próbować okrężną drogą i poszukać w sieci materiałów z ubiegłorocznych warsztatów...
Nie należy odliczać na timerze sprzętowo 5 sekund, bo i tak musisz odliczać na timerze czasy krótsze do innych celów - 5 s odliczysz programowo w przerwaniu timera zgłaszanym np. z częstotliwością 100 lub 1000 Hz. Preskaler wygodnie jest ustawić tak, żeby okres zegara wejściowego timera wynosił np. 1 us lub 10 us - wtedy łatwo liczy się i programuje...
Jeśli chodzi o F4 to: W ADC kalibracja jest już automatyczna (albo jej w ogóle nie ma bo nie znalazłem o tym informacji w manualu), doszło parę nowych rejestrów, ogólnie minimalnie się różni szczegóły w RM. Ustawienie SPI działa skopiowane z F1. Timery w trybie trójfazowego PWM, enkodera, i zwykłego odliczania działają po skopiowaniu kodu z F1. W F4...
Częściowy sukces. Metodą prób znalazłem gdzie tkwi problem. Okazuje się, że nie działa prawidłowo funkcja Delay_ms(). Procek zamiast odliczać krótkie opóźnienia zapętla się w nieskończoność. Na chwilę obecną rozwiązałem ten problem wklejając kod tego dema do innego programu w którym prawidłowo działa podobna funkcja opóźnienia i program w końcu ruszył....
Pytanie jak zrobić, aby przycisk resetował licznik do zera i odliczał od nowa. Wystarczy w funkcji "pod przyciskiem" przeładować rejestry: Pytanie czy jeżeli brama zostanie otwarta z innego źródła niż przycisk a licznik się przepełni to jak uniknąć jej samoczynnego zamknięcia? Najprościej chyba uruchomić TIM1 w funkcji "pod przyciskiem" i zatrzymać...
Rozumiem że Microchip został użyty jako przykład, w dodatku poradnik przetłumaczony. Nie mam nic przeciwko, bardzo dobra robota, nie dziwi mnie brak komentarzy bo co tu komentować? Świetnie opisane, nic tylko używać... Ale popatrzyłem na to i zapytałem siebie czy mnie jara, coś by trzeba skomentować i jedyne co uwiera podczas lektury to Microchip i...
Z pomocą angielskiej strony udało mi się stworzyć sinusoidę za pomocą PWM. Zrobione to zostało w ten sposób, że jeden timer co jakiś czas odlicza czas w którym DMA wysyła wartości wypełnienia do drugiego timera. Tablicę również znalazłem gotową, zawierała ona 128 wartości, czyli próbek. Po przefiltrowaniu przebiegu PWM przez filtr RC dostałem sinusa....
Co do samego programu to co racja to racja. Można było wykorzystać licznik, który dałby większą dokładność, ale to nie było istotą problemu. Koledze chodziło o skorzystanie z timera w celu zmniejszenia poboru prądu przez to twoje urządzenie. Mikrokontroler powinien cały czas spać, bo nic nie robi, do tego powinien chodzić na jakimś niskim zegarze....
SysTick jest chyba najprostszy, jedna linijka kodu aby 'zapuścić'. Obsługa przerwania SysTick nie wymaga niczego - żadnego kasowania flag itp. dlatego w prostych projektach jest najczęściej używany jako timer delaya. Nie wymaga także skomplikowanych obliczeń - tylko zegar, podział przez 8 lub brak podziału, podział przez wartość odliczania - i koniec....
Podsumowujac wszystko to powinno to wygladac mniej wiecej tak - staralem sie juz dobrac odpowiednie wartosci z plikow naglowkowych: /***************************************... /* */ /* SystemTick */ /* */ /***************************************... /***************** Bit definition...
Tylko tak jak na stronie Arduino pisze Jest napisane. , funkcja pulseIn() "Works on pulses from 10 microseconds" co daje 100Hz bez dzielnika a z dzielnikiem tylko 400Hz. Więc jak to rozwiązać? Już napisałem, sygnał mierzony dajesz na wejście licznika. Tak można mierzyć częstotliwości do częstotliwość_taktująca_mikrokontroler / 2. W nocie katalogowej...
Witam, Napisałem program, w którym do odliczania czasu używam SysTick'a i przerwania od niego. Gdy skompiluję i zapiszę program do pamięci Flash, program ten działa jak należy i możliwe jest jego debugowanie. Jeśli skompiluję i wpiszę program do pamięci RAM, to program nie działa poprawnie, a debugować go można jedynie do momentu wystąpienia przerwania...
Witam, Na wstępie zaznaczam, iż nie miałem do tej pory dużo wspólnego z układami ARM, stąd też taki mogłoby się wydawać banalny dylemat. Do rzeczy: -Na 6 wyprowadzeniach (PB10 - PB15) mikrokontrolera STM32L152RBT6 uzyskać chcę przebieg jak poniżej: http://obrazki.elektroda.pl/6696132300_1... - t1 jest czasem pomiędzy zewnętrznym zdarzeniem...
Witam, Od razu pisze że nie jestem mistrzem w pisaniu programów, a z stm zaczynam swoją przygodę. Chce wyłączyć przerwanie od EXTI na przykład po obsłudze tego przerwania: Do wyłączenie/wyłączenia przerwania np. od Timera jest TIM_ITConfig(TIM3, TIM_IT_Update, ENABLE); //TIM IT enable Generalnie chodzi mi o to że muszę zrobić detekcje sekwencji...
Witam, już dobrych kilka godzin zastanawiam się, dlaczego timer 1 nie działa tak jak chcę. A chcę, poprzez poniżej przedstawione funkcje włączać żarówkę po odliczeniu przez timer na czas też odliczany przez timer. Konfiguracja timera 1: void Tim1_config(void) { RCC->APB2ENR |= RCC_APB2ENR_TIM1EN; TIM1->CR1 |= TIM_CR1_ARPE; TIM1->CR1...
Witam, Chciałbym zapytać jaka jest zależność RTC i Systicka. O ile tak owa jest? - Kwarc 12Mhz (HSE_VALUE=12000000 , #define SYSCLK_FREQ_HSE HSE_VALUE) - Kody źródłowe poniżej - Keil - RTC zasilam z HSE (LSE nie trybi z przyczyn fizycznych) - STM32F103RBT6 - STMF4_Discovery jako debugger po SWD Problem: 1) A więc problem jest taki iż po wgraniu programu...
Tu też nie trzeba nic robić w przerwaniach - wystarczy zaprogramować timer. Jeśli trzeby wygenerować określoną liczbę impulsów - trzeba odliczyć je w przerwaniu timera i po kolejnym przerwaniu wyłączyć timer albo ustawić wypełnienie na 0.
W jakim celu pisać ręcznie po rejestrach, jeżeli wystarczy wywołać jedną krótką funkcję z core_cm4.h?? Jeżeli już to konfiguracja chyba powinna wyglądać tak: [syntax=C] SysTick->LOAD=(100*72) - 1; //100us (at)clk=72MHz NVIC_SetPriority (SysTick_IRQn, (1<<__NVIC_PRIO_BITS) - 1); // set Priority for Cortex-Mx System Interrupts SysTick->VAL...
Jakiego typu jest absolutnie absurdalny i perwersyjnie wypaczony pomysł, aby mając OSa robić takie delay'e w wątkach ??? Również o podobną perwersję zakrawa wykonywanie przerwania timera co mikrosekundę tylko po to, zeby zmniejszać tam jakąś zmienną. Wez timer, skonfiguruj go jako one-shot, skonfiguruj mu takt na 1us, do ARR wpisz chciany czas w us,...
https://obrazki.elektroda.pl/7335795800_... Przedstawię tutaj płytkę ESP32-2432S028R oferującą przede wszystkim duży kolorowy wyświetlacz LCD TFT 2.8" oparty o sterowniki ILI9341 (wyświetlacz) i XPT2046 (rezystancyjny panel dotykowy, wraz z rysikiem), a to wszystko za raptem około 50 zł. Pokażę tu jak można przykładowo obsłużyć ten...
http://obrazki.elektroda.pl/3796073600_1... I Opis ogólny urządzenia: Chciałbym przedstawić mój projekt bazujący na mikrokontrolerze STM32 dokładnie na modelu STM32F11RET6 http://www.st.com/content/st_com/en/prod... Jest to sterownik dla urządzenia...
http://obrazki.elektroda.pl/8875559300_1... Chciałbym przedstawić mój projekt na konkurs świąteczny bazujący na płytce Nucleo 64 z mikrokontrolerem STM32 na modelu STM32F411RET6 WiFi komunikujący się z telefonem z systemem Android do coraz bardziej popularnych diod WSRGB2811 zamontowanych na świątecznej choince. Dokładnie to łańcuch...
cytat z twojego przykładu: [syntax=c]__IO uint16_t CCR1_Val = 40961; __IO uint16_t CCR2_Val = 27309; __IO uint16_t CCR3_Val = 13654; __IO uint16_t CCR4_Val = 6826; uint16_t PrescalerValue = 0; [/syntax] PS. odliczyć sekundy już trudniej widzę nie można.
Jeśli oba mają preemption 0 (a domyślnie wszystkie przerwania tak mają, chyba, że w STM32 jest inaczej niż wszędzie), to nikt nikogo nie może wywłaszczyć. Serdeczne dzięki za wytłumaczenie jak działa mechanizm priorytetów NVIC. Z tego rozumiem, że można zdefiniować maksymalnie 16 przerwań , które mogą się wzajemnie wywłaszczać (grupa 4) ? Subpriorytet...
Odstęp nie będzie miał ściśle określonego czasu, a ani jednego bitu więcej w ramkę nie upchniesz, nawet gdyby miał określony czas, bo nie zmienisz wartości bitu startu ani stopu UARTa. Te 30% "wolnego" czasu procesora zajmie kodowanie danych do transmisji. Ciekawe, czy się wyrobi... - niekoniecznie moim zdaniem, zwłaszcza, że występują tu i dane 12-bitowe...
dea jest taka, że należy skonfigurować Timer1 na FastPWM z rejestrem ICR1 jako Top (czyli licznik będzie liczył do wartości tego rejestru). Należy tak dobrać preskaler i wartość ICR1 by licznik przekręcał się co 20ms a więc np. preskaler 1024 i ICR1 15625 (a raczej 15624 bo licznik liczy od zera). Przy tych ustawieniach otrzymujemy granulację 1,3 µs/tick,...
Prosty timer z nastawą czasu. 0. Elementy: * wyświetlanie na 3 cyfrowym 7 seg. wyświetlaczu * krańcówka * triak * eeprom * buzzer * 2 przyciski 1. Zasada działania Nastawa zapisana w pamięci eeprom, przy włączeniu zasilana wczytana z powrotem. Przy rozwartej krańcówce: *rozłączony obwód triaka *nastawa czasu 1-999 sekund za pomocą + oraz -. Przy zwartej...
https://obrazki.elektroda.pl/7656017200_... O komputerach jednopłytkowych czy stare komputery były lepsze od współczesnych platform rozwojowych i SBC? Nie lubię Arduino I to jest jak najbardziej prawda. Arduino to platforma, która miała dać łatwy dostęp do programowania elektroniki ludziom, którzy nie znają się ani na elektronice,...
Witam, Przymierzam się do napisania sterownika na popularny termometr DS18b20 i chcę stworzyć funkcję generującą opóźnienia opartą na timerze. Wszystko pięknie, ale mam problem z flagą: Dodano po 16 Okey, problem rozwiązany- niepotrzebny był nawias w warunku w pętli while. Przepraszam za zaśmiecanie- temat do kosza albo do zamknięcia :) Dodano po 26...
Witam, Oto wszystko poniżej wg dokumentacji , ale nie działa. W symulacji nie następuje zmiana stanu kanału 4 mimo, że licznik odlicza. Taktowania oraz GPIO oczywiście ok . W czym może tkwić problem? TIM1->CR1=0xA0; //ARPE, CMS=01 TIM1->CCMR2=13<<11; //OC4M=110(PWM MODE 1) OC4PE=1 TIM1->CCER=1<<12; //CC4E =1 TIM1->PSC=0;...
zmywarka odliczać odliczać impuls odliczać minuta
pilot silikon wirnik pralki lokalizacja pulpitu
taraban wzmocnienie taraban wzmocnienie
Szlifierka Bosch/Makita – brak iskrzenia na komutatorze, co 2-3 sekundy silne wyładowanie Błąd L5 na bieżni YORK - diagnostyka i naprawa