[syntax=c]//============================... // TIM3 Interrupt Handler //======================================... void TIM3_IRQHandler(void){ if(TIM3->SR & TIM_SR_UIF) // if UIF flag is set { TIM3->SR &= ~TIM_SR_UIF; // clear UIF flag } }[/syntax] AND zbyteczny az prosi...
/* Setup SysTick Timer for 1 µsec interrupts */ Następny... Czy naprawdę uważasz, że przerwanie co jedną MIKROsekundę to jest dobry pomysł? Twój program się "zatrzymuje", bo po prostu w kółko wchodzi i wychodzi do przerwania (które zresztą nie jest nikomu do niczego potrzebne, ale...). Jeśli do tego próbujesz pracy krokowej, to już w ogóle Twój...
Korzystam z dev board STM3210B. Timer 2 konfiguruje następująco: [syntax=c] RCC_APB1ENR_TIM2EN_bb = 1; TIM2->PSC = 36000; TIM2 -> CNT = 0; TIM2 -> ARR = 0xFFFF; TIM2_CR1_CEN_bb = 1;[/syntax] po wykonaniu pewnej funkcji licznik zatrzymuje bitem CEN. i pobieram wartość CNT; Działa wyśmienicie. Teraz gdy zmienię licznik na TIM3 to: 1. otrzymuje inny czas...
Pomysł ze zgłaszaniem przerwań sto tysięcy razy na sekundę jest zpełnie chybiony, to po pierwsze. Mierz czas timerem. Po drugie, sprawdź w manualu, jaka jest minimalna wartość rejestru ARR umożliwiający poprawną pracę timera. U Ciebie wartość ta wynosi prawopodobnie 0. Po trzecie, jest w języku C takie słowo kluczowe na literę 'v', o którym co chwila...
Może da się nieco "na około", czyli komparatorem wyzwalać transfer DMA, który uruchamiałby timer?
Witam. Mam taki problem, że próbuje skonfigurować Timer1 tak żeby na kanale 1 był generowany sygnał PWM, który będzie wyprowadzony na pin PA8. Skonfigurowałem Timer 1 oraz Timer 3 takimi samymi wartościami, piny PC8 oraz PA8 skonfigurowane jako funkcje alternatywne i sygnały z pinów podane są na LED. W efekcie dioda, która jest sterowana sygnałem z...
Witam, Próbuje skonfigurować timer w mikrokontrolerze STM32F3 Discovery: [syntax=c] RCC_APB1PeriphClockCmd(RCC_APB1Periph_TI... ENABLE); TIM_TimeBaseInitTypeDef TIM_TimeBaseStructure; TIM_TimeBaseStructure.TIM_Prescaler = 8000 - 1; TIM_TimeBaseStructure.TIM_Period = 20000; TIM_TimeBaseStructure.TIM_ClockDivision = TIM_CKD_DIV1; TIM_TimeBaseStructure.TIM_RepetitionCoun...
Wykorzystaj więc TIMER w trybie PWM, bo widzę - że wypełnienie robisz "ręcznie".
Witam, steruję silnikiem sj01 z enkoderem 1920 imp/obr za pomocą sterownika stm32f3 taktowanego 64MHz. Silnik oraz enkoder jest podłączony i skonfigurowany pod sprzętowy timer jednakże licznik timera zliczający impulsy nie zmienia się przy wyższych prędkościach. Układ pracuje poprawnie przy połowie maksymalnej prędkości. Wrzucam konfigurację timera...
Witam mam taki problem z OPM w stm32f3: otóż potrzebuję generować impulsy prostokątne wyzwalające 4 różne urządzenia i każde urządzenie ma swój charakterystyczny czas impulsu wyzwalający w konkretnej chwili. Chcę również, że od razu kiedy uruchomię TIMER to przez 4 kanały wysyłane są naraz wszystkie impulsy o różnych długościach bez opóźnień. Niestety...
Np. zaprogramuj SysTick lub dowolny inny timer na zgłaszanie przerwań z częstotliwością 100 Hz. Co 25 przerwań zmieniaj stan jednej diody, a co 100 - drugiej. Wszystko razem zmieści się w max. 20 liniach. Jeśli chcesz "zobaczyć" działanie timera z rejestrami compare - użyj dwóch rejestrów CC. W przerwaniu końca okresu zaświeć dwie diody, w przerwaniu...
Śmieszny jesteś. Nie jeden już tu poległ bo mu wszyscy wciskali wersje "naj" Jest to bzdura - po prostu nie ogarniali tematu i było bez znaczenia jaki procesor mają. Wskaż jakies istotne róznice pod względem trudności programowania na poziomie elementarnym: GPIO, I2C, SPI, DMA, Timery, ADC, DAC, CAN itp. Są znikome. Większość poległa pewnie na poziomie...
Witam, Mam taką funkcję: [syntax=c]int init_pwm(int pwm_freq) { int clk = 72e6; // 72MHz -> system core clock. This is default on the stm32f3 discovery int tim_freq = 2e6; // in Hz (2MHz) Base frequency of the pwm timer int prescaler = ((clk / tim_freq) - 1); int pwm_period = tim_freq/pwm_freq; // 2MHz / 200Hz = 10000 int ms_pulses = (float)pwm_period...
Witam, Korzystam z tego kodu: [syntax=c]#include "main.h" #include "stm32f3_discovery.h" /** * (at)brief Initializes the putput pins for the Timer one channels. Currently * hard coded to drive the LED3 (channel 1), LED7 (channel 2), and * LED10 (channel 3) on the STM32F3 Discovery board. * (at)param pwm_freq: Frequency of the PWM in Hz * (at)retval...
Można to zrealizować tak, że timer wywołuje interrupt. Jego procedura zmienia za każdym razem inne wyjście.
W STM32F nie można równocześnie przyjmować przerwań z wejść różnych portów o tych samych numerach. Do wejść przerwań nie podłącza się przycisków, bo przerwanie od przycisku jest dużo trudniejsze w oprogramowaniu, niż testowanie przycisku w przerwaniu timera.
Numer przerwania, które chcesz włączyc. W Twoim przypadku będzie to numer przerwania od przepełnienia. Są one zdefiniowane w pliku stm32f334xx.h w postaci czytelnej dla człowieka.
Hmhm, wydaje się, że jednak nie zrozumiałem jaki masz problem... Natomiast sugestia, żebyś nie korzystał z magic numbers pozostaje. Tego po prostu nie da się czytać, więc ciężko pomóc. Jeśli przerobisz to porządnie to pewnie sam znajdziesz błąd.
1. Ja się uczyłem z tej książki: https://helion.pl/ksiazki/jezyk-c-szkola... Dobrze opisane podstawy języka. 2 i 3. Cóż chyba najlepiej zacząć od podstaw, które arduino bezczelnie omija. Musisz zapoznać się z wszystkim co było "pod spodem" funkcji na arduino. Czyli co to są rejestry, jak je obsługiwać...
Popatrz na enable cycle time - 1200 ns, czyli wieczność. Obsługę tego wyświetlacza na szybkim MCU należy oprzeć np. o przerwania. Czyli w przerwaniach timera, wywoywanych co odpowiedni czas - max co 1200ns dokonujesz zapisu, jeśli masz coś do zapisania i kończysz przerwanie. Dzięki temu procesor ma szansę w międzyczasie zrobić cos sensownnego, a nie...
Nie znaczy to, że Microchip nie ma swoich problemów - ma i to niektóre bardzo poważne (stosując te procesory należy koniecznie czytać erratę), ale przynajmniej PWM wygląda na działający poprawnie. ZNam ten ból. :) Możesz w takim razie zobaczyć czy High Resolution Timer w STM32F334xx, STM32G474xx lub STM32H7xxxx spełni Twoje wymagania (rozdzielczość...
Super teraz działa. 3 dni się z tym męczyłem, tak samo z encoder mod na timerze1 ale teraz to już będę wiedział jak to ustawić bo robiłem podobnie ja tu przy USART. Czyli w AFR przesuwamy np. tak jak tu 7 bo USART jest AF7 na pozycje pinu. Wielkie dzięki teraz dużo więcej mi się rozjaśniło, przede wszystkim noty katalogowe :).
Cześć, czy ktokolwiek na tej planecie próbował użyć opcji remapowania enkodera z TIM15 na TIM2/TIM3/TIM4 w STM32? W datasheet opisane jest to tak (rejestr SYSCFG->CFGR1) https://obrazki.elektroda.pl/4378207500_... TIM15 nie ma bloku enkoderowego, ale według mojego rozumienia ustawiając odpowiednio bity ENCODER_MODE w tym rejestrze mogę...
Nie XOR - jedno wejście timera można wprowadzić na dwa kanały, np. wejście 1 albo 2 na kanały 1 i 2. BKIN jest oczywiście właściwszym rozwiązaniem.
1. Zegar dla I/O? Jest włączony. Pisałem, że DAC na tym wyjściu w trybie wyzwalania SW mi działa. 2. Wyrzuć TIM_DIER_UDE - to nie TIM generuje żądania DMA, tylko DAC. Tu racja. Niestety to nie pomogło. Masz debugger? Podejrzyj w rejestrach czy: - licznik działa - CNDTR w DMA maleje - może jakieś flagi typ error/overrrun się ustawiają kiedyś w tym projekcie...
Zdajesz sobie sprawe z tego, że twoje wypociny nic nie wnoszą ?:/ Pisalem - raz działa,raz nie. "puszczam debbuger" - serio ? to można krokowo ? nie wiedziałem.... Problem w programie powiadasz to wyjaśnij mi jakim cudem ten sam program wgrany za drugim razem juz nie działał ? (tak, wcześniej działał gdybyś niedoczytal). Tak wiem, nie cuda - pewnie...
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...
Najbardziej martwi mnie dostępność bibliotek różnego rodzaju. Do Arduino było tego masa. Ponoć, że biblioteki tworzone dla AVR mogą być używane z STM, ale nie mam pojęcia jak to wygląda w praktyce, dopiero czekam na devboard do STM32F3. Aczkolwiek nie ukrywam, że możliwości STM-ów i ich cena oraz dostępność kuszą i to bardzo, zwłaszcza teraz kiedy mam...
skorzystam z STM32G0, który pracuje na 64 MHz i ma ciekawe peryferia i opcje takie jak np . DMA. To co dla Ciebie będzie ważniejsze, to ADC wykonujący pomiary, DAC zadający parametry i timer generujący PWM. Dedykowane dla takich zastosowań są STM32G4 i poprzednik - STM32F3, ale do tak prostego układu to STM32G0 wystarczy w zupełności. Tym bardziej,...
Nie neguję dokumentacji. Nawet więcej, nigdy nie odpalam bez niej. Nawet gotowca konfrontuję z datasheetem. Po prostu mi chodzi że z przykładem jest prościej i szybciej. Nie ma co popadać w skrajności. Czyli też w uruchamianie wyłącznie na podstawie datasheeta. Bo czas też kosztuje. I szkoda na nowo odkrywać koło. Niektórych rzeczy wręcz bym nie odpalił...
STM32F303 Timer PWM enkoder
Witam ponownie, Wracam tutaj z potrzebą skonsultowania pewnego problemu. Mianowicie po uruchomieniu USB postanowiłem dokładać kolejne bloki urządzenia i tak też pojawiła się obsługa DMA, ADC wyzwalanego timerem 2. No niestety projekt po kompilacji i wgraniu w ogóle nie działa :/ - Na terminalu otrzymuje 20 bajtów o wartości zero. Po zakomentowaniu prawie,...
Hej, Od dłuższego czasu grzebie sobie przy STM32F334, który jest dedykowany do przetwornic wszelakich (timer HRTIM jest bardzo bogatym peryferium). Moim głównym zainteresowaniem są przetwornice rezonansowe, które osiągają bardzo duże sprawności oraz nie sieją w eter zakłóceniami. Największym problemem takich przetwornic jest zmienna częstotliwość rezonansowa...
Witam. Od jakiegoś czasu walczę z płytką STM32F334 DISCO + wyświetlacz 16x2. Napisałem kod z pomocą StdPeriph - zadziałał, chciałem trochę poprawić kod i napisałem go rejestrami - nie działa. Przebiegi są dokładnie takie same. Przechodząc do rzeczy, zacznę może od kodu który działa : Sam kod wygląda tak : https://obrazki.elektroda.pl/7092947700_...
Witam, Założyłem tutaj konto ponieważ jest to prawdopodobnie największe forum elektroniczne w Polsce, a co za tym idzie zakładam, że znajduje się tutaj sporo specjalistów którzy mam nadzieje pomogą mi w pewnym problemie. Zaczynam dopiero swoją przygodę z układami STM32. Już mniej więcej wiem jak działają GPIO, timery jednak chciałbym już iść dalej....
A dokładniej aby nie została przerwana w momencie da niej krytycznym - między przepisywaniem zmiennej data do bufora i inkrementacją zmiennej ut1_end. W czym przeszkadza, ze przerwanie od np timera, który nie ma nic wspólnego z UART, wykona się pomiędzy krytycznymi operacjami? Jeśli natomiast chodzi o przerwanie, które może wywołać odbiór czy tam nadawanie...
Witam. Chcę za pomocą płytki STM32F334 DISCO sterować wyświetlaczem 16x2 przez interface 4-bitowy. Połączenie wygląda tak : VSS - GND VDD - 5V VO - NC RS - PB13 RW - GND E - PB15 D4 ... D7 - PA12 ... PA15 A - przez rezystor 220 ohm do 5V K - GND Kod napisany w "System Workbench for STM32" zgodnie z datasheet'em sterownika wyświetlacza. https://obrazki.elektroda.pl/3189253300_...
Jedno i drugie - działa za każdym razem. Nowe wersje OpenOCD wprowadziły maskowanie przerwań podczas "single step" - może po prostu o to Ci chodzi? Opcja ta (można ją wyłaczyć działa tak, że podczas klikania "step" w debuggerze w zasadzie nigdy nie zostanie wykonane żadne przerwanie. Ma to pewne wady jak i pewne zalety (np. bez tej opcji debuggowanie...
To się raczej nie uda przy braku transmisji zegara przez źródło danych. Ja bym popędził SPI na częstotliwości nieco powyżej 3 MHz, zrobił odbiór na DMA i programowo analizował odebrany strumień bitów. Wtedy nie trzeba generować zegar przez timer, co grozi błędną synchronizacją. Ew. można pomyśleć o włączaniu timera generującego zegar dla SPI przez bit...
Tak, wiem o tej żywotności. Ogólnie mi też się pomysł z tym flashem nie podobał, ale dostałem takie zadanie z góry. Ogólnie zapis nie będzie wykonywany w stanie ciągłym, tylko załóżmy raz na tydzień wszystkie komórki zostaną zapisane. Głównym celem jest odtwarzanie ruchu, a przy odczycie rejestrów flash się nie zużywa. Już rozwiązałem problem niedziałających...
Widać, że nie wiesz o czym piszesz. J OK, cieszę się, że Ty wiesz. Ale chyba nie do końca drogi Kolego. Pomiar IC jest tylko jedną z metod pomiaru częstotliwości (w tym przypadku akurat mocno średnio dobrą). Dużo lepiej jest podać taki sygnał na wejście zegarowe timera. W takim układzie pracuje jedno z moich urządzeń (na STM32F3) gdzie pracuje na raz...
A na czym polega różnica pomiędzy pisaniem kodu np. na STM32F4 i STM32F3, wynikająca z tego, że mamy w tych rodzinach różne rdzenie? Zrobiłem parę projektów przenośnych pomiędzy kilkoma seriami STM32 i jedyne różnice pomiędzy modułami specyficznymi dla serii polegały na szczegółach konfiguracji peryferiali - DMA i SPI. W F1 chora jest koncepcja "remap",...
Nie ma większej różnicy jeśli chodzi o początki programowania. Biblioteki są troszke inne , ale zasada ich uzywania bardzo intuicyjna. Sam procek oczywiscie się różni zasobami , iląścią pamięci flash ram ale nie ma to większego znaczenia. Podstawowe peryferia jak timery przetworniki itp są w obydwu. Programuje się to programatorem najlepiej ST-LINK...
Witam wszystkich, Przez pewien okres czasu zdarzyło mi się programować przy dużym wsparciu bibliotek ST. Jak jednak powszechnie wiadomo, korzystanie z owego rozwiązania nie jest optymalnym podejściem. Postanowiłem zatem przejść do operacji na rejestrach mikrokontrolera. GPIO, Timery, DMA - wszystko poszło w miarę gładko, zdziwiłem się dopiero przy ADC....
Mogę rzucać. W EP udostępniłem pokaźną liczbę kodów źródłowych i to niebanalnych konstrukcji. Ale jednak w EP to tez dostawałeś wynagrodzenie za robotę, jeśli się nie mylę, więc to takie słabe porównanie jak dla mnie :) Zresztą to co pisałem to były uwagi ogólne do "ogółu", nawet nie miałem intencji, żeby ktokolwiek się tłumaczył. To jak pisał SylwekK...
Witam, programuję od 2 miesięcy mikrokontrolery STM32. Środowisko jakiego używam do tego to CubeMX do generowania konfiguracji oraz System Workbench for stm32 (eclipse z nakładką). Co ważne używam tego na Windowsie (a nie ma linuksie). Tydzień temu odinstalowałem eclipse i zainstalowałem ponownie (czemu, nie powiem :), zrobiłem to) i od tego momentu...
Witam, skonfigurowałem ADC które wyzwalane jest timerem 2(to działa dobrze). DMA wypełnia bufor 70 próbkami jednak: - większość probek jest ok, ale np gdy na wejście podam sinusa...to np co 15(w praktyce jest to losowa próbka) jest bitową reprezentacja jedynek obok siebie example: ..2345, 2345, 3f, 2344, 2421... Wydaje mi się że wina stoi po stronie...
RM0090 Rev 5, str. 615/616
Czy: Kod C - Tak, chyba że wymusisz update "ręcznie". 4\/3!!
http://www.elektroda.pl/rtvforum/topic23... ;)
Ja mam to tak skonfigurowane: [syntax=c] // gpio enkoder - PB4, PB5 RCC->AHB1ENR |= RCC_AHB1ENR_GPIOBEN; GPIOB->MODER |= GPIO_MODER_MODER4_1 | GPIO_MODER_MODER5_1; GPIOB->OSPEEDR |= GPIO_OSPEEDER_OSPEEDR4 | GPIO_OSPEEDER_OSPEEDR5; GPIOB->PUPDR |= GPIO_PUPDR_PUPDR4_0 | GPIO_PUPDR_PUPDR5_0; GPIOB->AFR[0] = 0x00220000; //init enkoder RCC->APB1ENR |= RCC_APB1ENR_TIM3EN;...
stm32f3 usart stm32f3 discovery stm32f3 paczki
straszny wirus skoda octavia schemat bezpieczników 17mb211s firmware
naprawa udaru makita elektrolity rigol
Kody błędów P0130 i P0171 w Toyota Scion xB 2006 Szarpanie silnika na ciepło w Passat B5 1.9 TDI