Witam, Po inicjalizacji timera i przed jego włączeniem przeładuj timer (zapisz bit UG do rejestru EGR),a następnie wyczyść flagę w Status Register (TIM4->SR &=~TIM_IT_Update). Dopiero po tych czynnościach włącz timer - przerwanie powinno przyjść dopiero po odmierzonym czasie.
Jest gdzieś skrótowa dokumentacja do ustawień CubeMX, aby zaczynający programista się nie zniechęcił? Nawet jeśli korzystasz z CubeMX to zacznij najpierw od jakiejś literatury. "Poradnik Szczywronka" takie rzeczy dość łopatologicznie tłumaczy tzn. podstawy działania timerów (i nie tylko). Na pierwszym zrzucie mamy włączony OPM na drugim wyłączony....
Przyznam się bez bicia, że ideę tego kodu zaczerpnąłem z jakiejś strony. (at)tadzik85: PSC 1uS, trochę bez sensu. I tak, zbyt powierzchownie wczytałem się w manuala i zapomniałem o update, błąd nowicjusza. (at)atom1477: Tak, masz rację widzę, to teraz, że jest to bez sensu. Najlepszym rozwiązaniem w takim razie byłoby użycie timera w trybie one pulse...
Pulse powinno robić robotę. Jednakże widzę dwie rzeczy które wydają się śliskie. Pierwsza to brak ptaka przy "internal clock" - jak więc timer jest taktowany? Druga: Fast Mode Enabled - coś mi się niejasno kojarzy (dawno o tym czytałem i pobieżnie), że ten tryb jakoś wpływa (ale nie pamiętam jak :-D) na sposób wyzwalania więc warto by o tym poczytać w...
Na zapas dodam, że timery w niektórych STM32 wymagają ustawienia bitu OPM przed CEN (a nie równocześnie, jak by na to wskazywał zdrowy rozsądek). Próby radziłbym zacząć od konfiguracji bez slave mode. Po uruchomieniu OPM, bierz się dopiero za slave.
Witajcie, Mam problem ze zmianą polaryzacji wyjścia timer w locie. Sprawa wygląda tak. Mam dwa timer jeden (TIM1 na CH1) generuje PWM o dużej częst. a drugi (TIM7) zlicza czas w dół i następnie w przerwaniu zmienia polaryzację wyjścia PWM TIM1. Niestety pojawia się wtedy flaga UIF w rejestrze SR, co powoduje przeładowanie TIM1 i wtedy na krótki czas...
Tzn. mam już sporą część projektu zrobioną w HALu i na razie chcę skonfigurować właśnie z pomocą tej biblioteki. (at)Marek_Skalski jeśli dobrze interpretuję Twoje wskazówki, to rozumiem, że nie da się na jednym timerze odpalić dwóch przerwań o różnych częstotliwościach. Muszę wykorzystać 2 timery (chociaż cały czas wydaje mi się to mało prawdopodobne)....
Dzięki pomocy jednego z forumowiczy ( dziękuję mrh :) ), udało się ustalić, że przyczyną problemów komunikacyjnych z ds18b20 są źle skonfigurowane opóźnienia. Opóźnienia chciałem zrealizować na jednym z timerów 2-5 w trybie one pulse mode. Niestety nie udało mi się do tej pory znaleźć błędu, więc proszę o pomoc w walce z opóźnieniami. Zamieszczam kod...
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...
Wydaje mi się, że nie dobrze zrozumiałeś co to jest One Pulse Mode, dlatego masz problem z konfiguracją W tym trybie nie ma konieczności wyłączenia timera poprzez: TIM2->CR1 &= ~TIM_CR1_CEN; bo on sam się wyłącza (przestaje liczyć) zgodnie z ustawieniami. Ja do tego zadania użyłbym trybu PWM i zrobił to jak w kodzie: https://obrazki.elektroda.pl/6412232700_...
Witam. Używam TIM1 (master) i TIM3 (slave). Konfiguruję je tak jak na listingu poniżej. TIM1 generuje przebieg prostokątny o określonej częstotliwości na wyjściu kanału OC1, jednocześnie sygnał porównania przekazywany jest jako źródło taktowania TIM3 który ma zliczać te "porównania". Na pierwszy rzut oka wszystko jest ok, ale podczas pierwszego uruchomienia...
Witam zainteresowanych tematem. Czy ktoś może mi wytłumaczyć tak troszkę łopatologicznie, krok po kroku, jak działają te dwa liczniki? // TIM3 jest masterem dla TIM4 TIM3->CR1 = 0; //CNT_EN jako TRGO TIM3->CR2 = TIM_CR2_MMS_0; //Trigger mode, wyzwalanie przez T1FP1 TIM3->SMCR = TIM_SMCR_TS_0 | TIM_SMCR_TS_2 | TIM_SMCR_SMS_2 | TIM_SMCR_SMS_1; //Włączenie...
Cześć piszę aplikację pod silnik krokowy wysyłam paczkę Period, Repetition Counter, 50 % Pulse. Bez konfiguracji USARTA program działa bez zarzutu inkremntowana jest wartość bufora DMA i przesyłana do timera. Jak mam konfigurację USARTA to nagle przestaje działać i silnik kręci się o stałych obrotach. Czy mógłby mi ktoś powiedzieć co robię nie tak ?...
Napisałem delay oparty o timer konfiguracja TIM1: void TimerConfig() { RCC_APB2PeriphClockCmd(RCC_APB2Perip... ENABLE); TIM_TimeBaseInitTypeDef TIM_TimeBaseStructure; TIM_TimeBaseStructure.TIM_ClockDivision=... TIM_TimeBaseStructure.TIM_CounterMode=TI... TIM_TimeBaseStructure.TIM_Period=72; TIM_TimeBaseStructure.TIM_Prescaler=1;.....
Znalazłem przykładowy kod, tylko że był on pisany dla Netduino. Ale widzę że ktoś właśnie wykorzystał InterruptPort i Data.Time.Now . Troszeczkę to pozmieniałem, ale nie ruszałem samego obliczania czasu itd. Chciałbym teraz wynik wyrzucić na wyświetlacz żeby sprawdzić czy cokolwiek się pojawi ale wyskakują mi błędy przy samym build solution (piszę to...
https://obrazki.elektroda.pl/8760486500_... Po przygodach z matrycami zbudowanymi na max7219, przyszła pora na coś bardziej zaawansowanego. Miałem w planach zrobienie własnej matrycy z 1500 jednokolorowych ledów 0603, 3 rejestrów przesuwnych i paru elementów dyskretnych, ale jak już ją zaprojektowałem, to przypadkiem trafiłem na matryce...
Ja proponuje by kolega podpiął analizator widma i sprawdził jaka częstotliwość będzie na wyjściu PWM Zobaczył bym przede wszystkim 8kHz. Nie 2048kHz (2048kHz też by tam było ale nie było by "przede wszystkim"). No to raz jeszcze - PWM 50% - jaka częstotliwość pojawi się na wyjściu przy częstotliwości fali prostokątnej dla zegara 2.048MHz? A jak kolega...
(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...
LPTIM ma przecież: External clock source over LPTIM input (working with no LP oscillator running, used by Pulse Counter application) Wydaje się to dużo lepszą opcją niż budzenie co przerwanie. Impulsy taktują timer, cały układ jest wyłączony, co godzinę budzisz układ przez RTC, odczytujesz licznik timera, odejmujesz od poprzednio odczytanej wartości,...
To akurat jest dla mnie w miarę oczywiste, bo podobny program robiłem już na AVR. Natomiast z STM32 nie chciałem się zagłębiać właśnie w konfiguracje zegarów - stąd pytanie o jakiś gotowy projekt, który można by tylko dostroić do potrzeb. Wygląda na to, że jednak będzie trzeba napisać samemu od zera. Przeglądałem opis procesora z F4 i doszedłem do wniosku,...
Timery mają taki fajny tryb jak OPM one pulse mode.... Buforowanie ARR można wyłączyć, więc update nie będzie konieczny.... Podoba mi się ten mix SPL i nie SPL :D
Inne niezupełnie optymalne rozwiązanie: tryb PWM, włączyć preload rejestrów CCRx, zapisać do nich 0, wywołać update i dopiero wpisać żądane wartości. Przy następnym zdarzeniu update licznik zacznie generować impuls; od tej chwili aż do zrównania CNT z ARR mamy czas na ponowne wpisanie zer do rejestrów CCRx (w przerwaniu lub przez DMA). Zalety to możliwość...
Witam. Temat dziwny bo i problem dziwny. Otóż, jeśli w przerwaniu Timera 1 ustawię wypełnienie PWM timera 3 to cały pomiar na timerze 2gim zwraca jakieś pierdoły. Mam następującą konfigurację Timerów: [syntax=c] #include "inc/timers.h" #include "inc/stm32f10x_gpio.h" void InitTimers(void) { TIM_TimeBaseInitTypeDef TIM_TimeBaseStructure; TIM_TimeBaseInitTypeDef...
Podczas kolejnego dnia walki orżnąłem kod praktycznie ze wszystkiego. Doprowadziłem do sytuacji odwrotnej - by działał 2 kanał PWM dla TIM1 należy zainicjalizować TIM3! W dodatku, zmiana wartości delay() w main również powoduje zaprzestanie działania PWM (podobnie jak wyłączenie TIM3). Kompletnie nie wiem, co robię źle. Wymieniłem już nawet uC na egzemplarz...
Witam, Chcę dokonać bardzo dokładnego pomiaru czasu trwania impulsu, podawanego na PA11. Wykorzystuję stm32f103vbt6. Chcę aby zostało wygenerowane przerwanie (TRIGGER) po pojawieniu się impulsu na pinie PA11, po którym to timer TIM1 na kanale CH4 rozpoczyna zliczanie od zera. Po zaniku sygnału na PA11 muszę odczytać wartość do której zdążył doliczyć...
Na przykład w ten sposób: https://obrazki.elektroda.pl/3961263100_... Musisz wybrać TIM, który posiada rejestr TIMx_RCR, do którego wpisujesz ilość impulsów do powtórzenia. Zaznaczyć też trzeba opcję One Pulse Mode i wtedy po odliczeniu odpowiedniej liczby cykli, timer się zatrzyma. W STM32G030xx właściwe są TIM1, TIM15, TIM16, TIM17....
Ależ kombinujecie... [syntax=c] void delay_init(void) { RCC->APB1ENR |= RCC_APB1ENR_TIM6EN;//timer 6 clock on TIM6->PSC = 47; TIM6->ARR = 999; TIM6->CR1 |= TIM_CR1_OPM; //config in one pulse mode } [/syntax] [syntax=c] #define TIM_D TIM6 #define TIM_D_BIT0 #define D_BIT (1<<TIM_D_BIT) #define D_BIT_REGTIM_D->CR1 #define TIM_D_EN_bbbitband_t...
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...
zdania doprowadzają do jedynej IMO słusznej konkluzji w tym wypadku: Arduino. Arduino to ślepa uliczka. W mojej ocenie, Arduino traktuje uC jak Z-8 (CPU + GPIO) czy 8051 gdzie ze sprzętu to głównie proste timery i UART. ZERO wykorzystania sprzętu! Bo co wspierają biblioteki Arduino? UART z malutkim buforem w RAM, I2C to samo. SPI bez bufora, bez przerwań....
Mówisz o One-pulse mode? a to nie jest tylko dla output? Pokombinuje jutro, to i tak koniec końców będę musiał sprawdzić długość BREAK oraz MARK_AFTER_BREAK. Więc czy użyje Timera w taki modzie czy w takim ma to jakieś znaczenie? To na razie pierwsza próba podejścia do tematu, dzięki za sugestie.
Dlatego najlepiej napisać obsługę wyświetlacza w przerwaniu, a nie czekać aż się zmieni stan na jakimś pinie. Obsługa wyświetlacza na HD44780 w przerwaniu to jakaś masakra a nie rada dla początkującego. W przerwaniu (i to częściowo) można robić VGA albo composite ;) Inicjalizacja powinna być tam gdzie wszystkie inity w programie typu system_init, main_setup...
PM0056 Programming manual strona 151 The RELOAD value is calculated according to its use: ● To generate a multi-shot timer with a period of N processor clock cycles, use a RELOAD value of N-1. For example, if the SysTick interrupt is required every 100 clock pulses, set RELOAD to 99. ● To deliver a single SysTick interrupt after a delay...
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...
Hmmm... Zależy jak jest ustawione przerwanie (w przedstawionym fragmencie tego chyba nie ma), bo można ustawić przerwanie na moment porównania (czyli doliczenia do TIM_Pulse), można też ustawić na moment doliczenia do końca (okres timera), można wykorzystać obydwie te opcje... 4\/3!!
Witam, mam problem z generacją PWM z tablicy z wykorzystaniem DMA. Wcześniej ten sam projekt działał na STM32F103 ale po przejściu na Cortex M4 coś nie działa. Konfiguracja peryferiów wykonana w Cube, wszystko analogicznie do tego co działało mi na F103. W debuggerze cały czas wartości rejestrów CCR mają 0, czyli jakby DMA nie chciało przesłać z tablicy...
(...) by uzyskać częstotliwości 32Hz (okres 0,03125s) oraz 64Hz (okres 0,015625s). Czy możesz ustalić kombinację okresów z tych dwóch dzielników tak aby w ciągu sekundy otrzymać 60? Możesz też zaproponować kod w Arduino generatora taktującego dla TMS3450. Interesuje mnie jak najmniejszy błąd odmierzania czasu. Wprowadzenie Dziękuję za szczegółowe przedstawienie...
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)....
Algorytm V/f nie zapewnia stałego momentu w całym zakresie prędkości z założenia. Ten algorytm zapewnia znikomy moment przy rozruchu. Konieczna jest stabilizacja strumienia głównego oraz kontrola poślizgu aby uzyskać duży moment przy zerowej prędkości obrotowej. Dlatego fabryczne falowniki posiadają procesory DSP w celu kontroli tych parametrów, sprzężenie...
https://obrazki.elektroda.pl/4768835200_... Introduction to the course In order to understand what kind of device we will be designing today, let's first briefly recall what soldering stations generally are, and how they differ from each other. The entire lower price segment of such equipment, as you might guess, is captured by Chinese...
Do sprzedania mam moduł rozwojowy oparty o 32 bitowy procesor Cortex-M3 STM32F103VCT6: http://obrazki.elektroda.pl/1742074400_1... Procesor ten jest reprezentantem serii "Performance Line" (STM32F103) – mikrokontrolery o bogatszym wyposażeniu niż wersje F101 i F102, przystosowane do taktowania sygnałem o częstotliwości do 72 MHz,...
Do sprzedania mam moduł oparty o 32 bitowy procesor Cortex-M3 STM32F103C8T6: http://obrazki.elektroda.pl/6552814600_1... Procesor ten jest reprezentantem serii "Performance Line" (STM32F103) – mikrokontrolery o bogatszym wyposażeniu niż wersje F101 i F102, przystosowane do taktowania sygnałem o częstotliwości do 72 MHz, mają wbudowane...
http://obrazki.elektroda.net/29_12846569... Do zaoferowania mam fabrycznie nowe procesory STM32 Cortex-M3 STM32f103RBT6 http://obrazki.elektroda.net/93_12846569... Procesor ten jest reprezentantem serii "Performance Line" (STM32F103) – mikrokontrolery o bogatszym wyposażeniu niż wersje F101 i F102, przystosowane do taktowania sygnałem o...
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...
Do sprzedania mam moduł oparty o 32 bitowy procesor STM32F103VET6 Cortex-M3. http://obrazki.elektroda.pl/8406402000_1... Procesor ten jest reprezentantem serii "Performance Line" (STM32F103) – mikrokontrolery o bogatszym wyposażeniu niż wersje F101 i F102, przystosowane do taktowania sygnałem o częstotliwości do 72 MHz, mają wbudowane...
Do sprzedania mam moduł oparty o 32 bitowy procesor STM32F103RBT6 Cortex-M3. http://obrazki.elektroda.net/41_12748231... Procesor ten jest reprezentantem serii "Performance Line" (STM32F103) – mikrokontrolery o bogatszym wyposażeniu niż wersje F101 i F102, przystosowane do taktowania sygnałem o częstotliwości do 72 MHz, mają wbudowane m.in....
http://obrazki.elektroda.net/5_128508213... Do sprzedania mam moduł oparty o 32 bitowy procesor STM32F103VET6 Cortex-M3. http://obrazki.elektroda.net/83_12850821... Procesor ten jest reprezentantem serii "Performance Line" (STM32F103) – mikrokontrolery o bogatszym wyposażeniu niż wersje F101 i F102, przystosowane do taktowania sygnałem o...
timer funkcja pulse stm32 timer timer stm32
kolory kabli audio astra kolektor zastany silnik
Tablet Lark 70.65 - Czarny ekran po logo Androida Smart 450 nie reaguje na gaz po wymianie alternatora