Może da się nieco "na około", czyli komparatorem wyzwalać transfer DMA, który uruchamiałby timer?
Co to niby ma być? USART1->BRR = (24+(0.9216/2))/0.9216; Zmieniłem na: Popatrz, jak zaprogramowałeś DMA - po 8 transferów, miały być 4 po 16 bitów z ADC do pamięci i 8 po 8 bitów z pamięci do USART. Poprawione, usunąłem również priorytety: Założę się na ślepo (a STM32F1 nie znam), że to nie jest potrzebne: ADC1->CR2 |= ADC_CR2_EXTTRIG; No więc sprawa...
TIM_Pulse to jest zwykły współczynnik wypełnienia sygnału. TIM_ClockDivision jest to podziałka zegara -> timer masz taktowany określonym zegarem, który jeszcze możesz odpowiednio podzielić. TIM_OC1PreloadConfig() robi to co jest w opisie funkcji, nie wiem co więcej dodać. Ponadto: CCR1: "It is loaded permanently if the preload feature is not selected...
Zobacz sobie : Timerów masz kilka w zależności od Twojego STM32 TIM1, TIM2-5 etc, ja korzystam z F4 więc nie chce ci za bardzo motać, ale generalnie zasada jest taka sama, na samy początku rozdziału o jakim koliwek Timerze masz napisane że Timery składają się z 16 bitowego licznika The TIM9/10/11 general-purpose timers consist of a 16-bit auto-reload...
W czwartym poście w tym wątku napisałem, że tak działa timer w STM32 - na początku okresu ustawiane są znaczniki porównanie dla kanałów, których reejstry porównania mają wartość większą niż ARR.
Sygnał w żaden sposób nie jest niestandardowy. Toż to zwykły PWM, który jak najbardziej można wygenerować sprzętowo wykorzystując jeden kanał timera oraz wyjścia zwykłe oraz zanegowane. Jeśli między zboczami obu kanałów ma być odstęp czasowy to jest możliwość (dla advanced timers) skonfigurowania tzw. dead-time. Jak to skonfigurować? W Arduino nie mam...
Korzystałem z googla i czytałem dokumentacje. Chcę, żeby ktoś mi wytłumaczył co to dokładnie jest np Prescaler i jak mam go rozumieć w kontekście mojego projektu (tak, dokumentacja nie wyjaśniła mi tego dokładnie). Nie wiem jaką dokumentację czytałeś, le niewątpliwie nie tę, którą trzeba. Aby zrozumieć jak działa to wszystko trzeba przeczytać Reference...
Jeśli zajrzysz do definicji funkcji NVIC_SetPriority((), zobaczysz, że dla SysTick nie rusza ona wcale NVIC. Racja, wpisuje do innych rejestrów. Ale Manual pisze że SysTick też wchodzi o NVIC. Jeszcze kolejna sprawa. Skoro Aby mogło wystąpić przerwanie należy zarówno ustawić i to co generuje przerwanie np Timer jak i NVIC. Ale co np ze znacznikiem...
Chcę użyć StopMode. Proc musi podtrzymywać stan zmiennych. Proc ma wejść w STOP MODE na czas około 200ms następnie wybudzić się na około 30ms do max 50ms i tak cyklicznie. w dokumentacji podano jak poniżej https://obrazki.elektroda.pl/1932104600_... Ale wydaje mi się że mogą też być inne źródła wyjścia z uśpienia STOP MODE, coś już...
Rozumiem, że mają tą samą podstawę czasu (preskaler i ARR), dlatego interpretowałem to w taki sposób, że rozróżnieniem dla poszczególnych kanałów jest właśnie wartość Pulse. W dokumentacji biblioteki HAL (podrozdział 65.1.2 str 868) w konfiguracji Output Compare nie widzę nic odnośnie połączenia kaskadowego dla timera. Natomiast w dokumentacji procka...
opcja z PWM chyba nie wystawi sygnału jednorazowo PWM + ONE SHOT daje radę. Musisz jeszcze określić jaki ma być wyzwalacz (drugi timer, sygnał zewnętrzny na pinie, jakiś inny event, programowo).
Wymyśliłem sobie, że użyję ADC1 do wyzwolenia DMA. ADC nie będzie nic mierzyć, jednak wyzwoli DMA2, natomiast ADC mogę wyzwalać innym timmerem. Przesiedziałem z tym cały dzień i coś pomijam bo nie działa wyzwalanie ADC z timmera. Jeśli uruchomię ADC z własnym zegarem, transfer DMA działa po każdej konwersji. Jeśli uruchomię ADC wyzwalane z timmera,...
Dzięki za odpowiedź. Może źle się wyraziłem, ale Timer z czterema PWM już u mnie pracuje i wygodnie kontroluje się poszczególne kanały PWM. Nie wiem natomiast jak można wyłączać poszczególne lub wszystkie wyjścia kanałów na piny, bez wyłączania działania Timera. Czyli nawet gdy na piny obsługujące kanały Timera nie są wystawione żadne PWM to kanały...
Stwierdziłem że najpierw skonfiguruję sobie I2S3 żeby generowało mi MCLK, wydaje mi się, że ustawiłem wszystko a na PC7 nic nie ma. Czy ktoś kto już to uruchamiał mógłby rzucić okiem i podpowiedzieć co robię źle lub o czym zapomniałem? Poniżej kod programu: (miga diodką i ma generować MCLK na I2S3) [syntax=c]void TIM2_IRQHandler(void) { // flash on...
Z detektora zera sieci dostaje sygnał jak na obrazku niżej. http://obrazki.elektroda.pl/1251410700_1... Kwarc 8MHz, po PLL 24MHz. No i mam między innymi [syntax=c]NVIC_SetPriorityGrouping(3); NVIC_SetPriority(ADC1_2_IRQn, NVIC_EncodePriority(3, 2, 0)); NVIC_SetPriority(EXTI9_5_IRQn, NVIC_EncodePriority(3, 3, 0)); NVIC_SetPriority(TIM4_IRQn,...
Witam, Próbuję wymusić na STMie aby konwersja w jego zintegrowanym przetworniku ADC wyzwalana była przez CC2 od timera 2. Inicjalizacja odpowiednich peryferiów jak poniżej nie powoduje zadziałania całości. void ADC1_Init(void){ /*APB2 buses clock for ADC enable with prescaler 8*/ RCC->APB2ENR|=RCC_APB2ENR_ADC1EN; RCC->CFGR|=RCC_CFGR_ADCPRE_DIV8;...
Funkcja inicjalizująca wywołuje kilka innych, więc żeby po trochu nie wstawiać kodu, oto cały plik RC5_IR_Emul_Receiver.c : [syntax=c]/** ****************************************... * (at)file STM32F10x_RC5_Receiver_Lib/src/RC5_IR_Em... * (at)author MCD Application Team * (at)version V1.0.0 * (at)date 03/16/2010...
Przejrzałem pobieżnie notę STMa "RM0008 Reference manual" i nie zauważyłem możliwości ustawienia aby timer zerował się po porównaniu. Na następny raz nie przeglądaj manuali tak pobieżnie, bo: 13.3.2 Counter modes upcounting mode In upcounting mode, the counter counts from 0 to the auto-reload value (content of the TIMx_ARR register), then restarts...
(at)grko Owszem, koncepcję działania SPI przekażesz, ale do tego nie potrzeba Arduino. Ale już np. koncepcję obsługi blokującej, czy event driven nie przekażesz, bo natrafisz na limit biblioteki. A więc nie pokażesz najmocniejszej strony MCU. A ciąghle piszemy tylko o banalnie prostym interfejsie. A np. timery? Jak pokażesz ich mocne strony w Arduino?...
Strzelam (nie używam HALa). Jeśli timer już sobie pracuje, to gdy przestawisz mu wartości ARR czy wartości dla PWMów, to zwykle są one "buforowane" (hasło do poszukiwań w reference manual "preloaded"), na takiej zasadzie, że ich wartość jest uwzględniana dopiero po tzw. "update event" (to jest drugie hasło którego powinieneś szukać w reference manual)....
Niestety nie ma poszczególnych flag dla poszczególnych zdarzeń timerów. A co z flagami z rejestrów TIMx_SR? Koniecznie muszę wystartować oba przebiegi w tym samym czasie. To czemu nie korzystasz z mechanizmu synchronizacji liczników? (patrz opis Starting 2 timers synchronously in response to an external trigger w RM) Pamiętaj, że rejestr preskalera...
Potrzebuję wygenerować trzy sygnały do sterowania rejestrem: 1MHz, impulsy co 64. okres z 1MHz i podobnie 128. Mniej więcej wyglada to tak: __ __ __ __ __ __ __ __ __ | |__| |__| |__| |__| |__| |__| |__| |__| |__ 1MHz __ __ | |__<-- przez 64 okresy poziom niski -->| |__ __ __ | |__<-- przez 128 okresy poziom niski -->| |__ Wykorzystałem...
Za RM0316 17.3.9 As the preload registers are transferred to the shadow registers only when an update event occurs, before starting the counter, you have to initialize all the registers by setting the UG bit in the TIMx_EGR register. Czyżby zadziałało?
Przeanalizowałem co się dzieje podczas przepełnienia, czyli przekroczenia wartości rejestru ARR w górę lub w dół we WSZYSTKICH rejestrach Timera 3. Ostatecznie po przedarciu się przez dokumentację doszedłem do wniosku, że należy dezaktywować Update Event, który może wykonywać właśnie podczas przepełnienia. Robi się to ustawiając jedynkę w rejestrze:...
Dzień dobry Koledzy. Piszę kod w C#.NETMF dla STM32F429I-DISC1. Próbuję zrealizować takie działanie w którym wykorzystuję metody klasy UIElement. Jedna z metod obsługuje zdarzenie dotknięcia panelu dotykowego. Druga z metod ("Invalidate();") pozwala aktualizować treść wyświetlacza. Do tego mam timer który co sekundę generuje przerwanie inkrementujące...
1. Echo ustaw jako InterruptPort , a nie jako InputPort 2. Ustawiając stan wysoki na Trig sprawdź i zapisz gdzieś aktualny czas systemowy Timer , który będzie liczył czas do pojawienia się sygnału na Echo. 3. Po pojawieniu się sygnału, w obsłudze eventu z InterruptPort porównaj aktualny czas, z tym zapisanym przy realizacji punktu 2. Pozdrawiam Wojtek
AT90PWMx - Produkt w fazie zakończenia produkcji. Nie ma sensu w to inwestować. ATTiny26 - zupełnie bez sensu jeśli idzie o falowniki. Praktycznie żadnego zysku względem mega88. ATXMEGAxx - od biedy może być do nauki. Ale pamiętaj o upierdliwości ADC w trybie single ended (offset), braku synchronizacji pracy liczników z jedną podstawą czasu, pomiar...
Faktycznie, rozwiązanie kwestii działania SPI było dosyć proste i po sprawdzeniu - SPI działa. Odczytuję zapisany wcześniej rejestr poprawnie. Teraz mam inny problem. Poniżej zamieszczam program z pliku main.c, w którym są dodane miejsca wysyłania kolejnych numerów przez UART i program zatrzymuje mi się po wysłaniu numeru 88. Nic więcej się nie dzieje,...
Oto cały kod C# [syntax=csharp]using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.Threading.Tasks; using System.Windows; using System.Windows.Controls; using System.Data; using System.Windows.Data; using System.Windows.Documents; using System.Windows.Input; using System.Windows.Media; using System.Windows.Media.Imaging;...
Piotr proszę coś więcej nie chcę żebyś przepisywał dokumentację ale napisał coś o tych peryferiach o narzędziach , zestawie uruchomieniowym, programatorze . Nie chcę cię pobić AVR-ami ,chcę po prostu zrozumieć twój wybór . Zrób dobry marketing ;) Masz bootloader więc od biedy zaprogramować możesz przez ch340g, ft232, cp2102 i podobne. Niemniej jak...
Witam, Bawię się STM32 już od jakiegoś czasu ale właściwie nigdy nie potrzebowałem jakiś super prędkości. Teraz chciałem napisać prostą funkcję do sterowania WS2812b i natknąłem się na dziwny, moim zdaniem, problem. Pomimo, że Timery działają szybko to zwykłe przełączanie pinu (funkcja HAL_GPIO_WritePin) działa niemiłosiernie długo. Najprostszy program:...
wydaje mi się że robię tak - tutaj ostatnia linia Dodano po 11 Tu masz jakis kod z mojego dzialajacego programu (dodatkowo DMA) procesor co prawda F446 ale nie sadze aby róznice byly powalajace. Jednak są różnice, Ty wyzwalasz od 0110: Timer 2 TRGO event a w STM32F103 nie mogę wyzwolić z TRGO event dla TIM1 i chcę wyzwalać od 000: Timer 1 CC1 event
Powiem szczerze metoda sprawdzania niesamowita. Czytać rejestr w kólko nawet jak tam się nic zrobiło. Ustaw przerwanie ADC i tam breakpoint - to będziesz wiedział czy jakaś konwersja przeszła Do tego wiele dziwnych rzeczy i błedów. proponuję zegar ustawić przy odpalaniu HAL-em unikniesz głupich błedów. Później możesz sobie zrobić na rejestrach wiedząc,...
Witam, Bazuje na projekcie ze strony Freddie Chopin dla stma F4 z dodanymi bibliotekami STM32F4xx_StdPeriph_Driver. Zdefiniowałem sobie konfigurację timer'a w następujący sposób: [syntax=c]void Timers_Config(void){ RCC_APB2PeriphClockCmd(RCC_APB2Periph_TI... ENABLE); NVIC_InitTypeDef NVIC_InitStruct; NVIC_InitStruct.NVIC_IRQChannel = TIM1_CC_IRQn; NVIC_InitStruct.NVIC_IRQChannelPreemptio...
Musiałem na pewien czas odłożyć problem, jednak teraz powrócił. Dziękuję za wszystkie odpowiedzi. W dalszym ciągu nie udało mi się rozwiązać do końca problemu. Jaką wartość mam wpisać do rejestrów TIM1->CCR4 i TIM8->CCR2 aby pomiar ADC wykonywać dokładnie w wierzchołku trójkąta tzn. połowie zliczania timera (0-ARR ARR-0). Chodzi mi dokładnie o to, że...
A dodałeś potwierdzenie wykonania przerwania? Tak w ogóle to jaki mają sens te podwójne zapisy (najpierw &=~, potem |=) do rejestrów - nie prościej po prostu wpisać tam docelową wartość - szczególnie dotyczy to timera, bo RCC czy GPIO może i faktycznie lepiej tak zmieniać w niektórych sytuacjach... BTW - wg mnie timer liczy do góry, więc w Twoim przypadku...
A może to jest tylko i wyłącznie kwestia tego, że rejestry CCR i ARR są buforowane i ich przeładowanie następuje dopiero przy nastąpieniu jakiegoś eventa? Innymi słowy, jak ARR ustawione jest na 1000, aktualnie jest 200, a ty wpiszesz do tego rejestru 300, to faktyczne uwzględnienie tej wartości 300 nastąpi dopiero jak timer doliczy do tego 1000......
Witam, proszę, poniżej konsola: "16:39:42 **** Incremental Build of configuration Default for project stm32_blink_led **** make all Assembling file: startup.S arm-none-eabi-gcc -x assembler-with-cpp -c -mcpu=cortex-m3 -mthumb -g -ggdb3 -Wa,-amhls=out/startup.lst -MD -MP -MF out/startup.d -I. -Igpio -IRTOS/include startup.S -o out/startup.o Compiling...
Cześć Próbuję stworzyć komunikację z diodami WS2812 za pomocą licznika i DMA. Licznik ma mi generować PWM o wypełnieniu pobieranym z tablicy. Wypełnienie to ma być przesyłane przez DMA w momencie osiągnięcia wartości maksymalnej licznika. Sam licznik działa prawidłowo i generuje PWM wpisany na sztywno lecz transfer danych nie jest inicjowany przy osiągnięciu...
Wydaje mi się że mnie plik wygląda okay [syntax=c] /** ****************************************... * (at)file startup_stm32f030xc.s * (at)author MCD Application Team * (at)version V2.3.0 * (at)date 27-May-2016 * (at)brief STM32F030xc/STM32F030xb devices vector table for Atollic TrueSTUDIO toolchain. * This module performs:...
Witam, Wpadła mi w ręce płytka prototypowa z STM32f103 na pokładzie wiec pomyślałem że spróbuję swoich sił z tym mikrokontrolerem. Jak dotąd programowałem hobbystycznie głównie 8bitowe AVR-y i z nimi mniej lub bardziej sobie radzę. Ale do rzeczy wymyśliłem sobie że w projekcie zaprzęgnę do pracy Timer2, którego zadaniem będzie po wywołaniu funkcji Beep();...
Witam, Próbuje zrobić odczyt z ADC1 i ADC2 w trybie DUAL - 7 kanałów wyzwalanych timerem 3 oraz z ADC3 - 6 kanałów wyzwalanych timerem 5. Problem polega na tym, że nie dostaje żadnych wyników, w przypadku ADC1 i 2 dostaję overRun Error, ale do przerwania już nie wchodzi. uC to STM32F439ZI ADC1 i ADC2: [syntax=c]void adcMotorsInit(void) { RCC->APB2ENR...
(at)tmf - dziękuję za miłe słowa :) Właśnie takie było założenie co do grupy "docelowej". Myślę, że jeszcze długo ATmegi i ATtiny będą punktem startowym dla hobbystów ze względu na nawał informacji w Internecie i mocno zakorzeniony pogląd jakoby wszystko inne było drogie/trudne itd. W sumie chciałem, żeby w poradniku było trochę więcej nawiązań do...
Witam, przepraszam że nie odpisywałem ,ale musiałem zająć się chwilowo innym projektem. Ale wracając już do tego. Otóz właśnie nie do końca , trochu kolega źle zrozumiał mój poprzedni post ale to tylko dla tego że moja zdolność wypowiedzi w języku polskim jest tragiczna. Otóż już postaram się wytłumaczyć o co mi chodziło. Jeśli robię coś takiego( czyli...
Czyli nie odbywał się w momencie zapisu ale dopiero po wyzerowaniu Timera. Proste pytanie - prosta odpowiedź: Reference manual 7.3.11 str.:510 The auto-reload register is preloaded. Writing to or reading from the auto-reload register accesses the preload register. The content of the preload register are transferred into the shadow register permanently...
Witam! Mam problem przy generowaniu sygnału komplementarnego na timerze 1 w mikrokontrolerze STM32F427ZIT6 (płytka STM32F429I-DISCO) przy pomocy bibliotek HAL. Udało mi się wygenerować sygnał komplementarny ale nie udaje mi się skonfigurować deadtime-ów. [syntax=c] /** ****************************************... *...
Potencjalnym miejscem do popełnienia błędu w projekcie jest jednorazowe inicjowanie LCD, który potrafi się niekiedy sam "odinicjować" np. z powodu wahnięcia zasilania. Z tego powodu warto go czasem inicjować przy okazji większych zmian stanu wyświetlacza, a to się bardzo łatwo i wygodnie robi w obsłudze przerwania. W obsłudze jakiego przerwania ? -...
osctest1, nierozumie po co to napisałeś. Przecież jeśli to uruchomiłem, to przecież musiałem wyzwalać przez eventy. Jeszcze raz zapytam, jak przekierować/przełączyć event od jednego Timera na drugi, aby zacząć wyzwalać ADC z drugiego Timera?
Raczej "katastrofalnie rozbudowany timer" ;) Kwestia zrozumienia filozofii działania i obsługi tego timera. Potem wystarczy wzrokiem ogarnąć wszystkie rejestry i od razu wiadomo co gdzie ustawić. Początkującemu nie rekomendowałbym programowania SCT nawet do prostego generowania PWM... ;) Konfiguracja PWM 16b 366Hz, tutaj akurat dla LPC1519. Naprawdę...
No wiec tak, te dwie rzeczy są takie same w obu twoich przykładach i ich nie zmieniałem: __main_stack_size = 0; __process_stack_size = 1024; Przedstawiam poniżej to co teraz mam w moim projekcie: STM32F103RC_rom.ld [syntax=c]/*****************************... * author: Freddie Chopin, http://www.freddiechopin.info/...
Witaj tadzik85 , może to wynika z tego, że przechodzę z AVR tam włączało się globalnie przerwania i tyle w temacie. Zresztą tak mi się wydaje, jest idea przerwań by działały niezależnie od głównego programu. Jeśli chodzi o Twój kod, nie mam takiego bitu IER dla USARTa mam 14.3.5 Software interrupt event register (EXTI_SWIER1) a w nim bity SWIER1-31...
Cześć Problem polega na tym że ADC1 współgra z DMA2 w trybie Injection, czy to jest związane z tym że nie nie ma sensu czegoś takiego robić, ze względu na to że w tym trybie wszystkie dane trafiają do różnych rejestrów JDRx, i nie ma "zagrożenia" overrunem? Konfiguracja wygląda następująco ADC1 w trybie Injection, wyzwalany zewnętrznie przez sygnał...
zmieniłem i nic nie dałao. Jak podglądam pakiety przy pomocy wireshark to widzę tlko 2 pakiety DISCOVER i OFFER i nic więcej. Zastanawiam się czy problem nie może być gdzieś w: static PT_THREAD(handle_dhcp(void)&... { PT_BEGIN(&s.pt); /* try_again:*/ s.state = STATE_SENDING; s.ticks = CLOCK_SECOND; do { send_discover();...
Z problemem poradziłem sobie w 90% stosując sztuczki z wpisami hook w pliku ".gdbinit" oraz dodatkowym wpisem do pliku konfiguracyjnego openocd dla eventu "old-pre_resume". Chodzi o użycie "cortex_m3 maskisr on/off". Dopiero najnowsza poprawka do OpenOCD 0.5.0 z 28 czerwca dodała automatyczne włączanie/wyłączanie bitu C_MASKINTS w Debug Halting Control...
Witam, Do STM32F4 mam podłączony enkoder inkrementalny o rozdzielczości 1024 imp/obr. Chciałbym wykorzystać pełne możliwości sprzętowego modułu obsługi takich enkoderów przez F4, czyli zmieniać wartość licznika na opadających oraz narastających zboczach sygnału. W tym celu skonfigurowałem Timer 3 w następujący sposób: TIM3->CR1 |= TIM_CR1_UDIS; Bez...
Witam, Mam pewien problem, a mianowicie mam taki fragment kodu: [syntax=c]void Timer2_Config(void) { TIM2->PSC = 65535; TIM2->ARR = 366; TIM2->CCR1 = 366; TIM2->CR1 = TIM_CR1_ARPE | TIM_CR1_CEN; TIM2->DIER |= TIM_DIER_CC1IE; }[/syntax] TIM2 ma za zadanie generować przerwanie co sekunde (zegar 24MHz) i kod powyzej spełnia to zadanie dlaczego wiec nie...
Tablice wektorów mam z przykładów ze strony [url=http://www.freddiechopin.info/]http... Nic w niej nie zmieniałem i wersja 6.1.1 działa dobrze a 7.1.0 wiadomo Tak wygląda tablica wektorów: [syntax=cpp]void (* const vectors[])(void) __attribute__ ((section(".vectors"))) = { (void (*)(void))&__main_stack_end,// Main stack end address...
https://obrazki.elektroda.pl/5694434400_... Moduły zasilaczy warsztatowych, takie jak DPS5005, dostępne są od dłuższego czasum.in. na AliExpress. Doczekały się wielu recenzji, w większości pozytywnych. Jednakże często wskazywanym problemem z tymi modułami jest kiepskiej jakości oprogramowanie – interfejs użytkownika pozostawia...
Nie wiem o co chodzi, support STM mi powiedział, żebym wgrał kod do ramu oraz wektor przerwań. Cały problem od początku: Zadanie programu jest następujące: ze sterownika sczytuję wartości enkoderów i zapisuję je do pamięci flash. (powinno to być wykonywane timerem co 10ms). Następnie odczytuję te wartości z flasha w celu odtworzenia ruchu i odpowiednie...
A dlaczego timer nie mógłby wyzwolić konwersji w dowolnym momencie zaprogramowanym przez Ciebie? Problem w tym, że nie wiem jak to zrobić. Umiem wyzwalać ADC za pomocą timera, ale nie wiem jak to połączyć razem z generacją PWM. Nawet jak na jednym timerze wygeneruję PWM, a na drugim będę wyzwalał ADC, to jak je zsynchronizować? Jedyne co mi przychodzi...
Nie widzę nic niewłaściwego w krótkiej obsłudze przerwania z częstotliwością 80 kHz. Miewam przerwania do 400 kHz Nie twierdzę, że się nie da. Jednak mam powody, aby oszczędzać takty: strumienie danych docelowo są dwa, układ jest zasilany bateryjnie i wolniejszy zegar jest wskazany, będzie RTOS mający sekcje krytyczne, etc. HAL i tak nie używam. Nie...
Co konkretnie nie działa? HAL ma tę wredną cechę że bardzo ciężko jest dojść o co chodzi. Zresztą Twój opis jest też stasznie zagmatwany. Jeżeli chcesz automatycznie aktualizować CCR4 w TIM4 danymi w buforze to lepiej jest ustawić burst mode timera. Wtedy timer sam dba o to aby wtedy kiedy wystąpi event (np przepełni się licznik) przesłać dane do rejestru...
W swoich programach na stm32f407 po zapisaniu preskalera w timerze wpisuję 1 do EGR, żeby wywołać Update generation. PSC contains the value to be loaded in the active prescaler register at each update event.
Witam wszystkich. Uzywam Eclipse + OpenOCD (0.9.0) + GCC. Do tej pory używałem STM32F103 (Cortex-M3), a teraz przesiadłem się na STM32F373 (Cortex-M4). Wziąłem ze starego programu skrypt linkera, startup, vectors.c i posklejałem do kupy odpowiednio je modyfikując. Program generalnie odpala się, mogę sterować GPIO. Następnie spróbowałem uruchomić SysTicka....
W main.c czarów nie ma , bo stworzyłem nowy projekt golasa na potrzebę uproszczenia szukania problemu. Nie jestem programistą ani elektronikiem ,a do sprawy podchodzę hobbistycznie jako początkujący. Korzystam z System Workbenach for stm32 + Stm32CubeMX z bibliotekami HAL. Cube szykuje wszystko po czym ja tylko dodaję funkcję HAL_SYSTICK_Callback. plik...
https://obrazki.elektroda.pl/4950580000_... Witajcie moi drodzy W tym temacie poznamy podstawy przerwań i timerów w PIC18F2550 . Na początek będzie krótki wstęp teoretyczny, a potem wszystko przerobimy dokładnie na praktycznych przykładach. Do lektury tematu przyda się ogólna wiedza na temat przerwań i programowania w C, choćby taka...
Jeżeli przez DMA, które działa w sposób niedeterministyczny z powodu konkurencji z innymi peryferiami i CPU o dostęp do pamięci i magistral ładujesz coś gdziekolwiek to będziesz miał taki jitter, że głowa boli. Od tego masz zbuforowane rejestry, np. w przypadku timera i XMEGA PERBUF, potem tylko wyzwalasz eventem uaktualnienie timera lub czekasz na...
Przy tej samej prędkosci zegara PIC-e maję wolniejszy FLASH - przy 48MHZ PIC-e 2WS a F0 1WS. Tak że będą czytać stałe z FLASH wolniej. oba procki chodzą na 24MHz, ze względu na pobór prądu Na prośbę moderatora: PIC32MX150, STM32F030K6T6 Tu prosta maszyna stanów - funkcja, która wykonuje się wolniej o jakieś 30...40% niż na PIC. Uprzedzam, sprawdziłem,...
Staram się ustawić częstotliwość próbkowania ADC1 i ADC2 w trybie Regular simultaneous dual. ADC1 taktuję Timerem 2: [syntax=c]void timer2_init() // this timer is triger of ADC1 and ADC2 conversion { RCC->APB1ENR |= RCC_APB1ENR_TIM2EN; // APB2 clocked TIM1 by 45MHz TIM2->PSC = 0; // F TIM = 45MHz TIM2->ARR =45e6/Fp; // Fp= Ftim/val //TIM2->DIER...
Witam Pracuje obecnie nad projektem odbiornika sygnały DMX512. Sprawa wygląda następująco: -Sygnał danych czytany jest z urządzenia zwane Kwamatik USB2DMX, obsługiwane przez program Q Light Controller. „Po drodze” do uC trafia jeszcze na driver RS485 a potem na PIN RX UART1 oraz PIN PB9 skonfigurowanego jako wejścia dla Timera 11 pracującego...
Dziękuję za sugestię :) Śmieszne... Trzymając przycisk RESET, odpaliłem OpenOCD i nic... Pomyślałem... Wcisnę desperacko do tego przycisk USER-> Podpięty do GPIOA PIN_0 Dioda sygnalizująca komunikację pomiędzy komputerem a płytką zaczęła migać... Odpalił się nawet mój stary program... SysTick Timer zaczął działać... Dioda zaczęła migać co sekundę......
To może wgraj oryginalną zawartość z Nucleo F411 jaka jest w nówkach na dzień dobry, by przynajmniej sprawdzić Nucleo plus ST-link. On tam miga i reaguje na przycisk może pamiętasz: No jest jakiś postęp chociaż nie wiem czy można to nazwać postępem. Wgrałem ten program, wyrzucił mi jakiś błąd elf loadera ale ostatecznie znalazł się w pamięci: Dodano...
A ktoś z was próbował przesyłać Z GPIO do RAM? Już coś ruszyło, ale ciągle nie do końca. Ruszyło z DMA2 w trybie peripherial-to-memory. Inicjalizacja DMA: [syntax=c] void DMA_init(void) { //Włącza zegar RCC->AHB1ENR |= DMA_STREAM_CLOCK; //Reset/wyłączenie strumienia DMA (kasuje bit EN) DMA_STREAM->CR &=~ DMA_SxCR_EN; while(DMA_STREAM->CR & DMA_SxCR_EN);//czeka...
Mały przykładzik z ustawieniami NVIC, priorytety przerwań i gdzie znaleźć opis w dokumentacji(PM0056): static void NVIC_conf(void){ //--------------------------------------... SCB->AIRCR |= (3<<8); //[Optional] Define interrupt fielding group, PRIGROUP[1:0]=11. see: PM0056 Programming...
Witam mam taki problem, otóż mój STM32F4 bardzo dziwnie się zachowuje. Mój program ma odczytywać z 3 różnych czujników przez I2C dane i przeliczać je. I2C zrealizowane jest na przerwaniach (z najwyższym priorytetem), dodatkowo używam timera 2, by odmierzał czas. Oto kod: [syntax=c]#include "stm32f4xx.h" #include "stm32f4xx_conf.h" #include <stdio.h>...
Witam, Miałem krótką przygodę z AVR (asm/C) lata temu, przewinęły się różne ATtiny i ATmegi. Jakoś nie za bardzo mi ten rdzeń przypadł do gustu jak i jego otoczka. Samą firmę Atmel też nie za bardzo trafię za podejście do branży ASIC oraz IP (sprawa z Infineon, export do Chin). No cóż, dla mnie to jakoś słabo wyglądające uC, które jakoś się przebiły...
Ja potrzebuję przełączanie funkcji Master i Slave co ileś taktów - żeby raz pierwsze tranzystory były wiodącymi, a raz drugie. Myślę, że możesz uruchomić 4 lub 6 modułów i w dowolnej chwili, np. w reakcji na sygnał z komparatora lub przerwanie dołączać dowolną parę generatorów do wyjść sterujących tranzystorami, zachowując przy tym reżim czasowy względem...
Cześć, Ponieważ pojawiła się prośba o możliwość udostępnienia uproszczonej wersji na inny uC to przedstawię krótką instrukcję jak dostosować projekt do potrzeb. Generalnie w obecnej wersji obsługiwane są dwie rodziny procesorów czyli STM32F4xx i STM32H7xx - prawdopodobnie nie powinno być większych problemów z innymi podobnymi układami STM natomiast...
Droga, którą obrałem to wpierw HAL, ze względu na bardzo przyjazną graficzną możliwość konfiguracji, a potem wraz z przeglądaniem dokumentacji powolne przechodzenie na rejestry. Po prostu po kolei np. obsługę portów (wejścia/ wyjścia) stosuję już bezpośrednio na rejestrach. I tak krok po korku ;) Co do wcześniej opisanego problemu, to moduł BT sterowany...
Zmieniłem trochę w projekcie. Zastosowałem najnowszą wersję FatFS. Plik z konfiguracją funkcji zadeklarowanych diskio.h pobrałem ze [url=http://www.siwawi.arubi.uni-kl.de/a... strony i przerobiłem go by pasował do STM32L. Po testach objawy wyglądają tak: Karty 512MB i 16GB: porgram mniej...
Proponuję użyć dowolnego uC z dwoma licznikami, ale niekoniecznie atmega8 ;) Pierwszy pracuje w trybie pomiaru częstotliwości lub pomiaru czasu (Input Capture). Drugi pracuje jako generator przebiegu wyjściowego, pędzony np. z zegara systemowego. Wartość zmierzona przez pierwszy licznik jest argumentem funkcji modyfikującej częstotliwość i/lub wypełnienie...
chodzi o wywołanie? [syntax=bash] arm-none-eabi-gcc -c -mcpu=cortex-m0 -Os -gdwarf-2 -trigraphs -mthumb -g -gg db3 -fpack-struct -Wextra -Wshadow -ffunction-sections -fdata-sections -fno-exc eptions -fomit-frame-pointer -Wall -Wstrict-prototypes -fverbose-asm -Wa,-ahlm s=src/io/io/io_pin.lst -DUSE_STDPERIPH_DRIVER -DSTM32F072RBT6 -DARCHITECTURE_C ORTEX_M0...
Dzień dobry. Od kilku dni bawię się z STM32L152RE, mam problem z generacją PWM z timera 4. Wszystko robię zgodnie z opisem w RM i już nie wiem w czym tkwi problem. Opis programu: TIM4 skonfigurowany do genercji PWM na swoim wyjściu (TIM4_CH1), dla pinu 6 portu B włączona funkcja alternatywna (jako TIM4_CH1). Na wyjściu timera kompletna cisza, ponadto...
To mój pierwszy post na tym forum, więc witam wszystkich użytkowników. Od jakiegoś tygodnia bawię się ARMami, używam płytki ZL31ARM z prockiem STM32F103RBT6. Po kilku próbach zdałem sobie sprawę, że standardowa biblioteka ST to jakieś nieporozumienie i zacząłem pisać programy po prostu operując na rejestrach. Zatrzymałem się na pewnym problemie częstotliwością...
Korzystam z przykładowych projektów dostarczonych przez ST w programie IAR. Po lewej stronie okna programu znajduje się okienko z drzewem folderów i pośród nich znajdują się dwa pliki ze 'startup' w nazwie: startup_stm32f10x_md.o i startup_stm32f10x_md.s (zawartość plików znajduje się poniżej). To o te pliki chodziło? Zawartość dość znacznie się różni....
Taki HAL od ST, może i wśród ludzi bardzo nielubiany (bo faktycznie ma swoje chore rozwiązania), ale u mnie spełnił swoje zadanie, gdy przesiadałem się z stm32F334 na nową STM32G4 to dzięki ich HAL miałem bardzo uproszczoną pracę, a różnicę między peryferiami niestety były znaczące, ale opis jaki dostarcza sam HAL po prostu robotę ułatwił. To co mogę...
A jeżeli przy okazji same układy są tańsze, to po co przepłacać? No właśnie niekoniecznie. Jak kol. Albertb zauważył, jako argument na taniość ARM pokazuje się ARMy CM0, które głowy nie urywają. A już wspomniany powyżej STM kosztuje netto 33 zł, czyli jeśli ktoś naprawdę nie ma potrzeby go użyć, to taniej wyjdzie coś innego, chociażby CM0. Z kolei...
https://obrazki.elektroda.pl/3227491500_... https://filmy.elektroda.pl/98_1514068986... Właściwie mamy już Święta i świąteczny konkurs w DIY. A w nim sporo konstrukcji opartych na programowalnych diodach WS2812B. Stąd też, aby ułatwić innym realizację świątecznych projektów oświetleniowych, postanowiłem podzielić się rozwiązaniem...
Oto moje odpowiedzi. Odnoszę się tylko do układów z rodziny STM32F4xx, ponieważ nie wiem nic o LPC, Kinetis czy układach od Renesas. Powiedzmy, że wyjście TxD UART chcę zmodulować przebiegiem z timera? Nie robiłem nic takiego, bo nie widzę w tym większego sensu, ale do wyboru jest SIR encoder (kompatybilny z IrDA) albo zewnętrzne bramkowanie timera...
No i znowu. Zamiast suchej listy elementów można by przejść do listy zagadnień - atmega vs xmega i dwa zdania opisujące najbardziej fundamentalne różnice. Najbardziej fundamentalne dla typowego użytkownika to 3.3V zamiast 5, możliwość debugowania przez PDI bez zajmowania pinów na JTAG (więc jeśli dysponujemy programatorem z PDI można sobie JTAG odpuścić),...
Witam, Próbuję wykorzystać funkcjonalność DMA burst aby pobierać wartości rejestrów ARR, RCR i CCR1 przy każdym update event timera 1 z tablicy bez zajmowania procesora. Program działa prawidłowo po wystąpieniu pierwszego przerwania UEV od TIM1, lecz kolejny transfer danych wprowadza inne dane do tych rejestrów niż zamierzone (znajdujące się w tablicy)....
Witam Kolegów, Od kilku dni męczę się z pewnym problemem. Na postawie filmu z youtube https://www.youtube.com/watch?v=GYhsHJi6... próbuje wykonać sieć CAN na STM32F3 + TJA1040. Cały problem polega na tym że nie mogę odebrać danych ani w przerwaniu, ani w programie głównym. Układ bez problemu wysyła dane do innego urządzania (drugi STM32F3 + MCP2551)....
Cześć! Mam ostatnio mały problem. Próbuje uruchomić Timer 8 tak, aby zliczał z jak najmniejszym opóźnieniem za Tim1. Robię to według RefManuala (RM0090, p. 622): "Using one timer to start another timer", niestety oba Timery są kompletnie rozjechane. Przypuszczam, że problem leży w tym, że oba timery działają w trybie center-aligned - chociaż skonfigurowałem...
Before setting EN bit to '1' to start a new transfer, the event flags corresponding to the stream in DMA_LISR or DMA_HISR register must be cleared. Wystarczyło dodać w reinicjalizacji czyszczenie rejestru LISR dla danego strumienia DMA: [syntax=c]DMA2->LIFCR |= DMA_LIFCR_CTCIF0 | DMA_LIFCR_CHTIF0 | DMA_LIFCR_CTEIF0 | DMA_LIFCR_CDMEIF0 | DMA_LIFCR_CFEIF0;[/syntax]
Witam, czy przy inicjacji Timera 1 który ma pracować w trybie PWM Center-aligned, powinienem "ręcznie" dokonać zdarzenia Update Generation poprzez ustawienie bitu Dodano po 2 Spróbuję trochę bardziej sprecyzować o co mi chodzi. Na stronie 314 RM www.st.com/internet/com/TECHNICAL_RESOUR... napisano:...
stm32 event stm32 timer timer stm32
zwolnienie abonament głośnik hannsen zabezpieczenie driver żarówka
akceptor banknotów blaupunkt car300 schemat
Jak podłączyć sterownik bramy Blow? Schematy i wskazówki Fiat Panda II 1.1 FIRE – luz boczny korbowodu, dopuszczalne wartości, panewki