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,...
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...
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....
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...
że timery w niektórych STM32 wymagają ustawienia bitu OPM przed CEN Nie zauważyłem takiej właściwości, ale nadmienię że ustawienie OPM kasuje CEN przy najbliższym Update. Dlatego zapytałem co kol. chce tym OPM osiągnąć, bo z postu jest to bardzo mętne
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...
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...
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 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...
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...
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...
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;...
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...
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 ?...
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...
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...
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...
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...
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...
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...
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...
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...
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....
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...
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...
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...
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);...
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...
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...
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...
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ń....
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
Witam, Po okiełznaniu GPIO i DAC na STM32, przyszła kolej na timery i PWM. Używajac procka STM32F429 napisałem taki oto program: [syntax=c] #include "stm32f4xx.h" #include "stm32f4xx_rcc.h" #include "stm32f4xx_gpio.h" #include "stm32f4xx_tim.h" void SwitchRCC_HSI(void) { // ustaw bit HSION -> włącz wewnĹ•trzny oscylator RCC->CR...
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,...
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.
timer pulse timer funkcja pulse stm32 timer
bezpieczniki znajdują zabezpieczenie wyjście wzmacniacz spadek napiąć długość
egzamin zawodowy sharp parowanie pilota
Jak wymontować wyświetlacz kilometrów w Renault Megane II 1.6 2006 Ford Fiesta 2006 1.3 - Wysokie obroty podczas odpalania