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:...
https://obrazki.elektroda.pl/5926592700_... Aloha! Świąteczny konkurs, który nie mógł się oczywiście obyć bez projektów z migającymi diodami w tym roku przyniósł także dwa całkiem nowe i ciekawe sposoby sterowania diodami WS2812. Mam tu na myśli rozwiązania panów tmf ( https://obrazki.elektroda.pl/9596522100_... No...
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, Próbując się posiłkować reference manualem (RM0008) oraz książką "Mikrokontrolery stm32 w praktyce" próbowałem odpalić okresowe wykonywanie przerwania na TIM2 i niestety nic z tego nie wyszło. Proszę o rade gdzie szukać błedu. Wygląda to tak: Konfiguracja NVIC // Wlacz przerwanie od Timera 2 NVIC_InitStructure.NVIC_IRQChannel = TIM2_IRQn; NVIC_InitStructure.NVIC_IRQChannelPreemp...
Może zacznę od opisu konfiguracji. Mam czujnik TSOP1736 podłączony do zasilania 5V, zaś jego wyjście do wejścia P0.16 mikrokontrolera LPC2148. Pozostałe połączenia (zasilanie, JTAG itp.) są OK, gdyż jest to zestaw ewaluacyjny Propoxu - EVBlpc213x\4x. Napisałem sobie bibliotekę do odbioru kodu RC5. Posiłkowałem się tą #include "lpc214x.h" #include...
[syntax=c] #include "stm32f10x_conf.h" #include "stm32f10x_gpio.h" #include "stm32f10x.h" #include "stm32f10x_rcc.h" #include "stm32f10x_flash.h" #include "misc.h" #include "stm32f10x_exti.h" #include "stm32f10x_flash.h" #include "integer.h" //#include "rtc.h" #include "diskio.h" #include "ff.h" #include "ffconf.h" #include "stdio.h" //------- Pin Defs...
Wykorzystując timer 16-bitowy oraz preskaler 65535 chciałbym wywołać przerwanie co 1 minute(59,6 sekundy) i w efekcie naprzemiennie zapalać i gasić diodę: [syntax=cpp] void Clock_init(void); void GPIO_init(void); void Tim1_init(void); int main(void) { Clock_init() ; GPIO_init(); Tim1_init(); while(1){;} } void Tim1_init(void) { TIM_TimeBaseInitTypeDef...
Nie napisałeś nic o środowisku programowania. Jeśli to jakaś samoróbka Eclipse, stawiam na błędną konfigurację stosu/stosów. żeby poprawnie obsłużyć przycisk w przerwaniu portu, musisz i tak mieć przerwanie timera i wyłączać przerwanie przycisku po jego przyjściu, a potem włączać je w przerwaniu timera - bez sensu - dużo łatwiej i krócej zrobić to w...
W jakimś przerwaniu timera migasz diodą. w trakciemigania sprawdza jakąs flagę czy ma migać a jak nie to wylacza diodę. W pętli jak klawisz sie nacisnie (zakładamy tylko jeden stan - wyłaczenie - a właczenie migania następuje poprzez inny magiczny przycisk = reset) ustawiasz flagę na niemiganie. Jezeni wyłaczenie ma nastapić natychmiast (a nie przy...
Ustawiłem TIM3. Pracuje poprawnie. Ma generować impulsy co 1 s. Mam jednak problem bo już na starcie wystawia impuls, który jest zliczany. Jak zrobić aby pierwszy impuls pojawiała się po 1 s?
Niestety, program działa tak jak zakładam dopiero, kiedy preskaler jeszcze pomnożę x8 (56) a dzielnik szyny APB1 ustawię na 8 tak jak poniżej: Nie wgryzałem się dokładnie w Twój opis, ale obstawiam standardowy problem przy pierwszym podejściu do timerów, którego rozwiązanie znajduje się pod obrazkiem "Figure 8. Clock tree", w rozdziale "7. Low-, medium-,...
Witam wszystkich serdecznie! Potrzebuję pomocy z pewnym zadaniem z systemów wbudowanych, 4 rok studiów. Programuję w języku C środowisku CooCox CoIDE procesor STM32F103ZET6 użyty w module HY-RedBull_V3 posiadający 3,5-calowy ekran dotykowy TFT LCD HY35A (kontroler LCD SSD1963, kontroler ekranu dotykowego ADS7843 lub XPT2046), który ma wykonać poniższe...
Witam! Chciałem sobie zrobić prosty Counter zliczający ilość wciśnięć przycisku podpiętego do wejścia PA0. Skorzystałem z przykładu który zamieszczam poniżej. Niestety mój prosty Counter nie zlicza naciśnięć i zmienna cnt cały czas wynosi 0. Mam takie podejrzenie że przycisk nie jest programowo połączony z TIM2 tzn w funkcja TIM_TIxExternalClockConfig(TIM2,...
Zgadza się flagi poszczególnych zdarzeń są, chciałem powiedzieć że nie ma osobnych przerwań dla poszczególnych flag tak jak to jest w przypadku Timera1, i nie wiem co powoduje że pierwsze 3 przerwania w przypadki Timera3 i 2 przerwania w przypadku Timera2 nie generują przebiegu na wyjściu. Poniżej konfiguracja Timera2 http://obrazki.elektroda.pl/9351651600_1...
Witam staram sie uruchomić sprzętową obsługe encodera w stm32F4. Generalnie całość już działa problemem okazuje się sam timer. Działa inkrementacja i dekrementacja timera jednakże licznik nie chce się przepełnić zarówno przy zliczaniu w górę i w dół timer dolicza do maksymalnej wartości zapisanej w rejestrze CNT. przy zliczaniu w góre (obrocie koła)...
Czy ja dobrze czytam, że w przerwaniu od timera robisz set/reset pinów i to Twój PWM? To jest źle zrealizowane i nie da się wycisnąć prawdopodobnie więcej w ten sposób. Tutaj temat do poczytania https://www.elektroda.pl/rtvforum/viewto... Bez podawania ryby - to co powinieneś zrobić, to skonfigurować PWM sprzętowy i PIDem obliczać tylko...
Jeśli coś mniejszego od Raspberry/Orange Pi, to proponuję zacząć od poszukania oprogramowania niezbędnego do działania z Arduino i z modułem STM32, oraz sprawdzenia, jakie możliwości daje który moduł. Z tego, co pamiętam, STM32 jest dużo szybszy, najtańsze moduły do obu są w cenie kilkunastu zł - moduł STM32C8T6 od około 14zł, Arduino Pro Mini od 12.60zł...
A nie masz tam czasem włączonego jakiegoś Watchdoga czy czegoś takiego co Ci resetuje procka? :)
Twoje problemy rozwiązałby jakiś TMS320 z serii C2000. Ale to tylko moje dywagacje. Jeśli chodzi o STM32F4 to musisz przemyśleć czy rzeczywiście 4 MHz jest niezbędne dla ADC. Kiedyś bawiłem się timerami w Keil'u więc kod wstępny na pewno Ci się przyda (kanały timera3 działają na GPIO->C6-C9): odznacz NVIC_EnableIRQ !!! ): [syntax=c]void TIM3_IRQHandler(void)...
Tego jeszcze nie grali ;) Wstawiłem tą funkcję do przerwania od Timera TIM3_IRQHandler i procek stawał. Potem wstawiłem tą funkcję do funkcji main i było OK. Wstawiłem tą funkcję z powrotem do przerwania i odpiąłem JTAGa i cyka. Hmm ciekawe. Więc w sumie procek się resetuje ale jest to rozwiązanie trochę pośrednie do tego, które chciałem wykorzystać....
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....
Poczytałem manuala do JTAga i spróbowałem wgrać kod przez OCD. Wywołuje go z parametrami: -f scripts/interface/ftdi/jtag-lock-pick_ti... -f target/stm32f1x.cfg -c "adapter_khz 1000; reset_config trst_and_srst; init; reset init; flash write_image erase C:/ARM/project_eclipse/stm32_timer/out/s... reset run; shutdown;" Otrzymuje błędy:...
Pojawił się u mnie ostatnio problem po dodaniu w programie przerwania od Timera. Dotychczas działało wszystko super, debagowanie trybie krokowym działało bez problemu itd. Po dodaniu przerwania program również działa ale niestety w trybie krokowym...nie do końca. Gdy zatrzymam rdzeń w jakimś miejscu programu i wykonam następną instrukcję pojawia się...
Tak oczywiście: Podobnie zresztą jak w kodzie, który wyżej dałem. [syntax=c]void EXTI15_10_IRQHandler(void) { if(EXTI_GetITStatus(EXTI_Line13) != RESET) { // Czyszczenie flagi przerwania EXTI_ClearITPendingBit(EXTI_Line13); //TIM_SetCompare1(TIM2, 200); // okolo 60ms //TIM_SetCounter(TIM2, 0); // zeruj licznik // Wlaczenie timera //TIM_Cmd(TIM2, ENABLE);...
Korzystam z przykładu od Freddiego stm32cl_blink_led-1.2.1-120107 i tam w vectors.c jest właśnie funkcja Default_Handler która kręci się w kółko... Poza tym zadeklarowanych jest dużo funkcji w tym: [syntax=c]// System tick timer void SysTick_Handler(void) __attribute__ ((interrupt, weak, alias("__Default_Handler")));[/syntax] oraz: [syntax=c] void Reset_Handler(void);...
Witam! To znowu ja. Uczyli w szkole o generale, co się kulom nie kłaniał, a ja mam rejestry, co się resetu nie słuchają, ani sprzętowego z pinu, ani z jtag-a. Jak to rozumieć? Timer i dma też nic sobie z resetu nie robią. Teoretycznie po resecie powinienem mieć w rejestrach reset value, ale przynajmniej w wymienionych tak nie mam. Pomaga dopiero wyłączenie...
poszukaj sobie w timerze 1 takiego bitu o nazwie MOE P.S. Skoro używasz przykładu, to czemu nie skorzystać z funkcji konfigurującej wyprowadzenia, tak aby nikt nie musiał się zastanawiać co robisz i czy na pewno wszystko? P.S.2. Zerowanie wszystkich rejestrów timera jest całkowicie zbędne. Jeśli czujesz przemożną chęć resetowania timera, to w RCC masz...
Zamieszczam podsumowanie problemu, gdyby ktoś w przyszłości szukał ... Niestety mieliście racje, wyzwalanie timera nawet dla ARMa, a w zasadzie obsługa timera zajmuje bardzo dużoooooo czasu. Zamieszczę podsumowanie dla SYSCLK równego 180MHz: Dla poniższej obsługi przerwania, tylko na rejestrach uzyskana częstotliwość przełączania osiągnęła 6,349mhz...
Witam, Problem polega prawdobodobnie na braku wywłaszczania przerwania TIM1 przez przerwanie Systick-a o wyższym priorytecie. Otóż w trakcie wywołania przerwania od timera wywołuję sobie funkcję delay-a: void TIM1_CC_IRQHandler(void) { if (TIM_GetITStatus(TIM1, TIM_IT_CC1) != RESET) { TIM_ClearITPendingBit(TIM1,...
Nie sądzę, by jakikolwiek projekt dał się sensownie zrobić bez przerwania timera, więc testowanie obecności pastylki można zrobić w tym przerwaniu. Z drugiej strony kod obsługi OneWire z delay() nie nadaje się do użycia w projekcie, w którym są przerwania, więC proponuję zrobić od nowa obsługę OW. Przykład na F0 masz w niedawnej EP.
STM32 robi za wszystko poza procesorem - pamięć ROM i RAM, reset, zegar, port konsoli, timer i port LED, a dodatkowo za sprzętowy monitor z pracą krokową, deasemblacją, edycją pamięci, ładowaniem plików .hex i wieloma innymi funkcjami. Ogólnie FPGA nadaje się lepiej do takich zabaw, ale ciut trudniej się programuje i rzeźbi w nim złożone urządzenia...
Można. Potem z 8251 wchodzimy na przejściówkę USB i w ten sposób łatwo osiągamy 1/10 funkcjonalności tego, co ja mam w jednym STM32. ;) Myślałem sobie kiedyś, żeby z chińskiego modułku STM32F103 zrobić tylko generator zegara i RESET dla procesora oraz widziany przez uP jak układ peryferyjny niby UART z USB po drugiej stronie, ale rozwiązanie z całym...
Witam, odwróciłem 115200 ale to wychodzi na jedne bit a nie bajt czyli raz 10 czyli około 86us, to nie jest ważne... Teraz uruchamiam timer co 1ms i sprawdzam czy "były dane" chciałem użyć timer w trybie Slave mode: Reset mode, czyli ja podam mu zewnętrzny sygnał to zbocze narastające lub opadające od transmisji go wyzeruje, a jak nie ma transmisji...
jesteś tego pewny to jak to się ma 24 MHz na moim do 74Mhz na 103 ruszy np taki program jak ten code #include "stm32f10x.h" #include "lcd4bit.h" #include <stdio.h> TIM_TimeBaseInitTypeDef TIM_TimeBaseStructure; TIM_ICInitTypeDef TIM_ICInitStructure; void RCC_Conf(void); void NVIC_Conf(void); void GPIO_Conf(void); uint16_t cnt; char I Proszę kod...
Witam, Zacząłem niedawno zabawę z STM32 i mam problem z przerwaniami oraz timerami. Chciałem uruchomić przerwanie zewnętrzne, a dalej przerwanie od timera co np 1sek. Jednak nie działa ani jedno ani drugie, czy ktoś mógłby nakierować mnie na dobrą drogę i powiedzieć co robię źle? Przeglądałem przykładowe aplikacje jednak dalej nie potrafię tego uruchomić....
Witam. Na wstępie przepraszam za może głupie pytanie i problem, ale jestem początkujący. Chciałbym móc sterować jasnością świecenia diody LED za pomocą PWM. W późniejszych próbach różne jasności ustawić pod różne przyciski itp, a na końcu sterować programowo. Program nie jest całkowicie mój, wzorowałem się na wielu kodach znalezionych w internecie......
Witam, mam problem z obsługą timera w STM32f103ZET6 na płycie ewaluacyjnej HY RedBul v3.0. Problem polega na opóźnionym zapłonie jednej z funkcji. Realizuje to na przykładzie samozamykającej się bramy po 15 sekundach, tak aby nie zatrzymać całego programu. Generalnie udało mi się skonfigurować przerwania od TIM1, ale timer liczy cały czas, czyli jeżeli...
Przyłącze się do tematu- nie łatwiej wykorzystać przerwanie od przepełnienia timera? Ponizej przyklad realizacji 32 bitowego licznika dla enkodera: // Inicjalizacja timera void TimEncInit(void) { TIM_ITConfig(TIM2, TIM_IT_Update, DISABLE); TIM_EncoderInterfaceConfig(TIM2, TIM_EncoderMode_TI12,TIM_ICPolarity_Fall...
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...
No i dodatkowo sądzę, że na uprzejmą prośbę konstruktorzy znający cortexy chętnie opublikują przeróżne inity, takie jak timer, timer z pwm, SPI, CAN (ale to już chyba gdzieś wala się na forum), USB czy nawet ethernet, bez używania "tej lipy" ;] Może jest jakiś sposób w jaki mógł bym się z tobą porozumiewać nie zaśmiecając forum głupimi podstawowymi...
Hej, Zrobiłem podejście z timerem, polegające na tym, że w przerwaniu DMA TC, uruchamiałem timer, który po chwili miał zrobić latcha. [syntax=c] // DMA1 channel 3 transfer completed void DMA1_Channel3_IRQHandler(void) { //* Clear the DMA tranfser complete interrupt bit DMA_IT_TC3*/ DMA1->IFCR = DMA1_IT_TC3; // start timer to generate delayed latch TIM_SetCompare1(TIM1,...
Timer wyzwala taki pomiar, jaki zaprogramowałeś w ADC. Jeśli zaprogramowałeś kolejny pomiar czterech kanałów bez discontinuous mode, to ADC zmierzy 4 kanały. Właśnie nie mogę zrozumieć różnic pomiędzy trybami discontinous i scan. Rozumiem, że SCAN skanuje dowolną ilość kanałów, dodatkowo można skanować z innym czasem próbkowania, ale czym się różni...
Trochę się zakręciłeś <: w końcu zegar taktowania APB i wyjście z APB to to samo. Jeśli preskaler APB wynosi 1, to f_tim = f_apb, w przeciwnym wypadku f_tim = 2 * f_apb Dla precyzji pamiętaj też o tym, że jeśli chcesz zliczyć N impulsów, to do rejestru timera wpisujesz wartość N - 1, tak samo z preskalerem - podział przez N uzyskasz wpisując do rejestru...
Niby można się domyśleć że TIM2 Jest 32bitowy, ale nie chodzi o to aby się domyślać. I słusznie, bo timery w STM32 nie są 32 bitowe. Nawet w pierwszym zdaniu opisu jest to napisane "wprost" (wręcz "jak krowie na rowie"): 15 General-purpose timers (TIM2 to TIM5) ... 15.1 TIM2 to TIM5 introduction The general-purpose timers consist of a 16-bit auto-reload...
Heh, u mnie ESP8266 potrafi rozłączyć się z siecią WiFi, ale... on dalej myśli, że jest podłączony do WiFi (sprawdzanie odpowiednią funkcją) i nie reaguje na polecenia rozłączenia. Jedyna opcja to pingowanie bramy domyślnej co ustalony interwał i w przypadku braku odpowiedzi na ping - reset całego ESP. (at)AIIoT biorąc pod uwagę, że jest to na dziwnym...
Reasumując: 1. Włączasz zasilanie = nie działa 2. Wykonujesz reset STM'a = działa ? Mógłbyś jeszcze "main'a" pokazać, albo najlepiej odchudź kod do obsługi tylko SPI i wrzuć cały projekt. dokładnie... Wydaje mi sie że SPI po uruchomieniu mikrokontrolera nic nie wysyła, dopiero po resecie. Nie mam oscyloskopu aby to potwierdzić. int main(void)...
Hej, Wróciłem po dość długim czasie do STM i chcę stworzyć na początek kilka prostych programów. Natrafiłem jednak na problem, z którym nie mogę sobie od paru godzin poradzić, a wydaje mi się dość trywialny - może będzie ktoś w stanie wskazać co robię źle. Program ma być prosty: po naciśnięciu przycisku chcę, by dioda kilkukrotnie zamrugała. Chcę do...
Witam, prosiłbym bym o pomoc, żeby ktoś wytłumaczył, albo podał przykład jak skonfigurować przerwania zewnętrzne w tym mikrokontrolerze bo walczę z tym i nic mi nie wychodzi i zaczynam podejrzewać, że to procek jest zepsuty, albo tej sztuki jeszcze nie opanowałem :D na początku pisałem własne kody, ale po nieudanych próbach w końcu wkleiłem gotowca,...
Rozwiązałem część problemu (źle rozumiałem adresowanie w Packet Memory ale dzięki zerowaniu tego obszaru pamięci podczas resetu USB i podglądu w debugerze + podglądnięciu jednego z przykładów zrozumiałem jak to działa) i otrzymuję teraz prawidłowe żądanie GET_DESCRIPTOR. W trakcie pisania tego postu też w końcu doszedłem do tego co robię źle... błąd...
Mam problem z poniższym programem. Program pisałem samodzielnie w oparciu o książki wydawnictwa BTC. Timer TIM1 jest skonfigurowany tak, aby dokonywał pomiaru parametrów PWM (częstotliwość i wypełnienie) generowanego za pomocą timera TIM4. Wszystko działa prócz samego TIM1 (pomiaru), który wg. debuggera śpi jak niemowlę (wszystkie wartości w rejestrach...
Cześć! Mam za zadanie wykonać generator sygnału sinosoidalnego o regulowanej amplitudzie i częstotliwości rzędu 50-100kHz. Potrafię wykonać wszystkie operacje związane z tym zadaniem, ale nie mogę uruchomić przykładowego programu na DACa, aby opanować jego sterowanie. Skorzystałem z dwóch przykładów dostępnych wraz ze standardową biblioteką: "DAC dual...
reset timera stm32 przerwania timera stm32 przerwanie timera
arduino kompilator ferguson ustawi satelita fujitsu siemens esprimo mobil dźwięk
problemy diagbox diagbox peugeot
Uszkodzony silnik koła w kosiarce Husqvarna - diagnoza i naprawa Skuteczne fungicydy na pleśń agrestu: Switch, Topsin, Signum