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.
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...
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...
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;.....
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,...
Kod składniowo jest dobry. Chodziło mi że nie rozumiem idei jego działania. Np. po co sprawdzać czy TIM4->CNT <= 9? To by oznaczało że za każdym razem TIM4->CNT zmienia się o 1 (i każda taka zmiana to potem programowe sprawdzenie). A to bez sensu: w takim przypadku Timer pracuje jak zwykła zmienna, czyli po co Timer skoro można po prostu dać...
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...
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...
Dziękuję za pomoc. Tak chodziło mi o TIM_Pulse. Zdanie z książki "Oznacza to, że urządzenie peryferyjne TIM1 będzie generowało zdarzenie, a w konsekwencji - przerwanie w momencie, gdy timer doliczy do wartości równej zawartości pola TIM_Pulse struktury inicjującej" w części dotyczącej TIM_Pulse można uznać za brednie?
Jeżeli sterujesz silnikiem, inwerterem albo innym urządzeniem Tez tak myślałem że może taka przyczyna ale 50ms i 1000ms jakoś do tego nie pasuje A tak trochę teoretyzując moje pierwotne wyobrażenie było takie, że po przepełnieniu licznika( w moim przypadku co 50Hz) inkrementowane są wartości dla poszczegolnych kanałów i jeśli one osiągną wartość Pulse...
Witam! Mam w swoim programie chciałbym wykorzystać timer w trybie one pulse do odmierzania czasu, ale w taki sposób, żeby można było wyłączyć timer w przerwaniu od wartości CCR. Do tego celu wykorzystuje TIM2 (general purpose). Niestety timer nieprawidłowo odmierza czas kiedy chcę go wyłączyć bitem CEN(np wpisuję ze ma się wyłączyć po 100us a wyłącza...
Można eliminować drganie styków w bardzo prosty sposób wyzwalając w przerwaniu EXTI jakiś bardzo prosty timer w trybie one_pulse_mode, jednocześnie wyłączając przerwania. Jak timer skończy liczyć jeden impuls i wejdzie w swoje przerwanie to załącza przerwania z EXTI. absolutna konieczność
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...
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...
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 ?...
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...
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...
Witam, W celu zrealizowania komunikacji z DS18S20 skorzystałem z następujących kodów dostępnych na forum: Kod od freddiego do konfiguracji GPIO: [syntax=c] #define GPIO_CRx_MODE_CNF_mask 0xf //4 bity - 2 bity na mode i 2 bity na configurację /*-----------------MODE-----------------... #define GPIO_CRx_MODE_IN_value 0x0 #define GPIO_CRx_MODE_OUT_10M_value...
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...
Hej, Generalnie w przykładzie jest identycznie, jedynie włączenie timera było w innej sekwencji, ale to nic nie zmieniło ;( /* Time base configuration */ TIM_TimeBaseStructure.TIM_Period = 65535; TIM_TimeBaseStructure.TIM_Prescaler = PrescalerValue; TIM_TimeBaseStructure.TIM_ClockDivision = 0; TIM_TimeBaseStructure.TIM_CounterMode = TIM_CounterMode_Up;...
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....
No niestetety nie jest prenumeratorem a sciaganie z ftp za pomocą kodów sms-owych zawsze skutkowalo pomniejszeniem mojego salda i nic nie znaczącymi kodami dostepu. Takie pytanie odnośnie przerwań od liczników. Czy elementy struktury inicjującej timery t.j. TIM_Period,TIM_Prescaler mam traktować jako kolejne dzielniki czestotliwosci wzorcowej timera,...
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...
(...) 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...
Bez taktowania nic nie będzie działać. Funkcja zapisuje dane pod adresy które są wyłączone, więc możesz tam wpisywać co chcesz.! No to już wszystko jasne, dzięki za pomoc. Co do uruchomienia TIMERA to tez mi się udało, jednak mam jeszcze jeden problem z nim... mianowicie chciałbym uruchomić go w trybie porównywania, gdy chce zmienić opóźnienie wystąpienia...
(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...
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...
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...
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ść...
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...
No dobra ale co to ma wspólnego z timerem 2? Timer 1 współgra z timerem 3 który pracuje jako PWM. A Timer 2 to zupełnie coś innego, tam tylko sobie czas leci. Czyli co powinienem wg ciebie spróbować? Na takie rzeczy voodoo może pomoże więc jestem otwarty na wszystkie sugestie :D Dodano po 1 Coś jest skopane z timerem 3cim. W momencie jak nie włącze...
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ć...
Próbowałem już w opisany przez Ciebie sposób, zero reakcji, żeby program wyszedł z pętli while pomagało tylko zwarcie rezystorem 1k do GND, czyli ręcznie wymuszony pull low. Datasheet DS18x20 znam już na pamięć :( funkcja opóźniająca: [syntax=c] volatile int delayFlag; void delayTimerConfig(){ RCC_APB2PeriphClockCmd(RCC_APB2Periph_TI... ENABLE); TIM_TimeBaseInitTypeDef...
Mój problem jest taki, że PWM na TIM1 nie reaguje na zmianę CCRx w trakcie działania programu. Wszystko pozostałe działa poprawnie (nawet zmiana CCRx w trakcie działania dla TIM3 i TIM4). Kod od inicjalizacji: void timer_pwm_setup() { //struktury konfiguracyjne TIM_TimeBaseInitTypeDef TIM_TimeBaseStructure; TIM_OCInitTypeDef TIM_OCInitStructure;...
Witam, Jestem w trakcie realizacji projektu, w którym mam konieczność sterowania trzech silników krokowych. W tym celu stworzyłem sterowniki w oparciu o dostępne układy scalone. Prędkość silników jest sterowana za pomocą sygnału prostokątnego. Do sterowania układem wykorzystuję mikrokontroler stm32 w postaci płytki startowej Discovery. Program został...
Witam wszystkich! Nie udało mi się wygenerować PWM na wyjściu PA10 mimo tego, że poniższy kod: [syntax=c]void TIM1_Init (void) { TIM_TimeBaseInitTypeDef TIM_TimeBaseStruct; TIM_OCInitTypeDef TIM_OCInitStruct; NVIC_InitTypeDef NVIC_InitStructure; GPIO_InitTypeDef IO_InitStruct; u16 PrescalerValue; /* TIM1 clock enable */ RCC_APB2PeriphClockCmd(RCC_APB2Periph_GP...
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
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....
Więc, doszedłem do tego, że mam źle skonfigurowany Timer. Jak wrzuciłem kod z użyciem bibliotek to ruszyło, zaczął przesyłać w nieskończoność jakieś losowe wartości. Po pierwsze w NVICu muszę odblokować przerwanie od Timera: Tak na początek - rejestr danych USART ma 8 bitów, nie 16. Zaprogramuj transfer DMA 8 bajtów, a nie czterech słów. Liczby transmitowanych...
Witam piszę aplikację obsługującą silnik krokowy. Wykorzystuje do tego PWM ( Nie pytać dlaczego, tak chciał prowadzący). Na początku robiłem to na przerwaniach, ale się nie spodobało. Miałem wykorzystać do tego DMA + PWM i ładować z DMA wartości do periodu, tak aby okres ten był zmienny. Napisałem aplikację, ale niestety nie zmienia się period jest...
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...
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...
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...
Witam, mam problem z komunikacją z czujnikiem ciśnienia HP02S. Szukałem swojego problemu na forum, ale nie znalazłem. Udało mi się bez problemu odczytać dane z EEPROMu. Udało mi się też skomunikować z czujnikiem, ale do czasu. Sekwencja odczytu ciśnienia wygląda następująco (pseudokod): [syntax=c] i2c_start(); i2c_write(0xEE); i2c_write(0xFF); i2c_write(0xF0);...
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...
Dzień dobry. Chcę przerobić program służący do pomiaru odległości z czujnika HC-SR04 z std na hal.Problem polega na tym że jeśli mam timer TYLKO z skonfigurowanym kanałem pwm służącym do aktywacji czujnika, czujnik normalnie się aktywuję i zwraca sygnał echo (im większa odległość tym dłuższy stan wysoki, sprawdzałem diodą), po dodaniu (analogicznie...
Witam, nie chce zakładać nowego tematu, a problem mam z kategorii dlaczego nie działa :) Timer mi smiga, bo zmienia się wartość, diodka też się świeci, bo mam podłączoną pod PA11, z tym że jasność świecenia diodki się w ogóle nie zmienia jak zmieniam wartość rejestru TIM1 -> OCCR4 w czym problem ? Proszę o pomoc i pozdrawiam, a poniżej zamieszczam...
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ń....
timer pulse timer funkcja pulse stm32 timer
włącznik odkurzacza philips instrukcja obsługi bauknecht kocioł jednofunkcyjny termet
instrukcja serwisowa viessmann saeco hd8769
Piec Saunier Duval Thematek nie grzeje wody - diagnostyka Wartość 2 do potęgi 8 w elektronice i informatyce