Pomóżcie, bo nie mogę doczytać, jak się kasuje flagę przerwania od output compare match w ISR? (...) W dokumentacji stm32 zapomnieli napisać czy 0 czy 1 Npalisali :) kasuje się na pewno poprzez zapisanie bitu zerem. Przy opisie rejestru masz zawsze odpowiedni "komentarz" przy każdym bicie. W tym przypadku rc_w0. read/clear (rc_w0) Software can read...
No a zdradź mi tajemnice dlaczego to mają być przerwania a nie callback-i. Nigdy nie pisałem funkcji z callback-iem, nie miałem jeszcze takiej potrzeby. Tak ogólnie chodzi o to by stworzyć licznik 50Hz, zmienną, którą będę inkrementował, i stworzyć event, który co 50 przerwań (tj 1Hz) wywoła mi callback? Jeżeli chcesz funkcje A wolac co każde przerwanie...
Nie mam za wiele czasu na grzebanie, na pewno używasz w kodzie czegoś takiego: HAL_HRTIM_WaveformOutputStart(&hhrtim1, HRTIM_OUTPUT_TA1 + HRTIM_OUTPUT_TA2 + HRTIM_OUTPUT_TD1 + HRTIM_OUTPUT_TD2); Jeśli używasz hala. Na pewno jest coś analogicnzego do odłączenia outputu. Jeśli chcesz by nie triggerował eventu to po prostu wyłącz compare unit.
Sygnał w żaden sposób nie jest niestandardowy. Toż to zwykły PWM, który jak najbardziej można wygenerować sprzętowo wykorzystując jeden kanał timera oraz wyjścia zwykłe oraz zanegowane. Jeśli między zboczami obu kanałów ma być odstęp czasowy to jest możliwość (dla advanced timers) skonfigurowania tzw. dead-time. Jak to skonfigurować? W Arduino nie mam...
Heh, faktycznie niepotrzebnie straszę, jeśli zakładamy, że konstruktor ma CAN tu, gdzie jest default ;] Znam te "kilka stron" z erraty na temat gryzienia się remapniętych AF. I oprócz CANa nigdy szopek nie miałem, a już zdążyłem remapować i używać dosyć udziwnionych konfiguracji SPI,UARTów,timerów compare i timerów capture, mimo tej erraty ;] BTW, STM32...
Witam, od paru dni ogarniam nową dla mnie architekturę ARM na bazie STM32103C8T6. Bawię się aktualnie licznikami, udało mi się jakoś skonfigurować pwm, ale mały problem pojawia się przy próbie skonfigurowania timera w tryb odpowiadający CTC z AVRek. Chodzi o zerowanie licznika po zrównaniu (Compare) tak, żebym mógł sterować częstotliwością. Ale coś...
Proponuję kol (at)R-MIK zapoznać się wpierw z tą "krótką lista prostych rozkazów" Cortex-ów a nie fantazjować. Jak bedę musiał to sie zapoznam. Jak pisałem wcześniej, kiedyś do startup dla LPC potrzebowałem, teraz nie muszę, ale lista nie jest obszerna, przynajmniej w THUMB: nstruction Type Instructions Move MOV Load/Store LDR, LDRB, LDRH, LDRSH, LDRSB,...
Witam mam problem z miganiem dwoma diodami, ale czysto sprzętowo, za pomocą timera 3 w trybie outpu compare. Pisząc program wzorowałem się na kodzie ze strony http://en.radzio.dxp.pl/stm32vldiscovery... . Mój kod różni się tylko tym, że nie wykonuje tutaj remmapu, ponieważ w moim uC (stm32f103vct6) TIM3_CH3 i TIM3_CH4...
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;...
Witam, Udało mi się uruchomić STM32 z OpenOCD przez Wigglera. Problem mi jedynie sprawia debugowanie programu w Eclipse. Program ładuję przez Makefile , wszystko wygląda ok: D:\Projekty\ARM\project>cs-make program "Programming with OPENOCD" openocd -d0 -f interface/parport.cfg -f target/stm32.cfg -c init -c "fast enable "...
Sam main.c raczej nic nie da ale proszę. /** ****************************************... * File Name : main.c * Description : Main program body ****************************************... * This notice applies to any and all portions of this file * that are not between comment...
No wiec tak, te dwie rzeczy są takie same w obu twoich przykładach i ich nie zmieniałem: __main_stack_size = 0; __process_stack_size = 1024; Przedstawiam poniżej to co teraz mam w moim projekcie: STM32F103RC_rom.ld [syntax=c]/*****************************... * author: Freddie Chopin, http://www.freddiechopin.info/...
GPIOA->BSRR |= GPIO_BSRR_BS5; To nie źródło problemu ale tak się tego rejestru nie używa. To jest write only rejestr czyli tylko samo przypisanie Zgadza się, dzięki :) Co do głównego problemu, punkt 1. Użyj debugera okazał się bardzo pomocny :) Założyłem, że skopałem coś w Makefile (np. brakuje jakiejś flagi) i podczas debugowania nic ciekawego...
Cześć, Projekt zaraz będę konfigurował od początku. Fakt, podałem za mało danych, wybaczcie, skrajna nerwica mnie na to wzięła. Od początku: Używam SW4STM32, ale chciałbym od tego odejść mocno, bo za dużo automatów i za mało szczegółów, może dlatego, że nie potrafię tego wszystkiego ogarnąć. Kompilatora używałem poprzez naciśnięcie "build". W ustawieniach...
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, 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, już dobrych kilka godzin zastanawiam się, dlaczego timer 1 nie działa tak jak chcę. A chcę, poprzez poniżej przedstawione funkcje włączać żarówkę po odliczeniu przez timer na czas też odliczany przez timer. Konfiguracja timera 1: void Tim1_config(void) { RCC->APB2ENR |= RCC_APB2ENR_TIM1EN; TIM1->CR1 |= TIM_CR1_ARPE; TIM1->CR1...
Walczę drugi dzień z obsługą ENC28J60 w przerwaniu i poległem. Niech ktoś rzuci okiem i powie co jest nie tak. Objawy mam takie: - pingi latają bez problemu - UDP działa bez problemu - TCP chodzi kulawo. Pierwsze połączenie przez przeglądarkę jest ok,wyświetla się strona, natomiast po wyświetleniu strony wszystko zdycha. Wygląda to tak jak by ENC28J60...
Przeczytaj manual - interesuje Cię przerwanie od przepełnienia (update), a nie porównania (compare). Pozatym przerwania trzeba też włączyć w NVIC. 4\/3!!
Zaprogramuj inny kanał timera jako compare, oprogramuj przerwanie od teo kanału i sprawdź, czy timer działa. A co to niby ma być? TIM1->CCMR1 |= 1<<TIM_CCMR1_CC1S_0;
Tak, jest wszystko włączone, pytanie czy wszystko w rejestrach timera jest jak trzeba. Chciałbym wykorzystać funkcje API dostarczone przez STMa, sprawdziły się dla innych peryferii (SPI, USART, GPIO, DMA...) jednak nie ma nigdzie przykładu konfiguracji timera w trybie compare.
Witam. Dopiero zaczynam przygodę z STM, więc proszę o wyrozumiałość. Używam linuxa ubuntu 18.04. Zainstalowałem System Workbench i ustawiłem reguły dotyczące programatora ST-Link/V2 oraz wykonałem update firmware. Programator znajduje się na płytce "STM32 NUCLEO-F446RE". Po utworzeniu przykładowego projektu dla tej płytki jestem w stanie wgrać wsad...
Staram sie uruchomić PWM na TIM4. Chodzi mi o prosty PWM generujący na PB6 częstotliwość w zakresie 1 - 5000Hz, ze wsp.wyp. 50% (na poczatek), ale chyba nie rozumiem działania timera w tym trybie (troche bardziej skomplikowane niż w AVR. Oczywiście wszystko bez bibliotek ;) ale nie działa. Poniżej kod - może jest tam za dużo, bo już włączam co się da,...
Witam, Niedawno przesiadłem się na programowanie STM32, z arduino, i już na samym początku spotkałem problemy. Aby nie było niedociągnięć że robię coś źle, opisze wszystko jak mam ustawione. Posiadam moduł STM32F103C8T6 ARM STM32 Cortex-M3 oraz programator ST-LINK STLINK V2. Piny podłączone następująco: ST-Link - Moduł 3.3V - 3V3 SWCLK - SWCLK GND -...
Rysunek chyba jakiś mały wymowny, tam znajdziesz odpowiedź (; A jak nie, to ustawienia rejestrów do wglądu, bo tak to się nie dogadamy. Znajdziesz to w TIMx w rejestrze CCMRx, bit OCxCE. Fragment opisu: OC1CE: Output Compare 1 Clear Enable 0: OC1Ref is not affected by the ETRF input 1: OC1Ref is cleared as soon as a High level is detected...
Providera? Nie rozumiem. Zawsze używałem Zylin, odkąd przeczytałem o tym w tutorialu Freddiego. ;) Program na pewno wgrywa się prawidłowo. Sprawdziłem ST-LINK Utility na Windows. Chyba masz rację z tymi symbolami debugowania. Ale to jest dziwne bo mam -g przy kompilacji: /home/(...)/arm/gcc-arm-none-eab... -mcpu=cortex-m3...
Do pasma EKG układ w zupełności wystarczy. W kwestii punktu 4, chodziło mi o taką konfigurację licznika: - licznik zlicza w jednym kierunku, np. w górę. - Czas pełnego okresu (PSC i ARR) to trochę więcej niż czas transmisji + impuls LDAC (=210ns). - Do jednego z rejestrów porównujących ładujesz wartość, która odpowiada impulsowi LDAC, a wyjście konfigurujesz...
Problem rozwiązany, wystarczyło świeże spojrzenie na kod z rana... Problem leżał w wyborze streamu DMA. Timer 2 ma osobne streamy dla zdarzenia UPDATE i dla Compare, wystarczyło zmienić stream z 5 na 1 i poszło.
Witam. Ubuntu + eclipse + openocd + arm-none-eabi-gdb Płytka jak tu: http://www.microcontroller-project.com/g... Programator jak tu: http://propix.com.pl/pl/p/ST-LINK-V2-SWD... Wersja działająca: Uruchamiam openocd tak: [syntax=bash]openocd -f /usr/local/share/openocd/scripts/interfa... -f /usr/local/share/openocd/scripts/target/...
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...
Mam dość dziwny problem. W procesorze STM32F100RB mam uruchomione 6 timerów. Mają one sterować silnikami krokowymi. Silniki już mają sterowniki, posyła im sie tylko czestotliwość proporcjonalną do prędkości obrotowej i bit kierunku obrotów. Są to dość duże silniki, a całe urządzenie wymaga miękkiego startu i stopu silnikow. Kod który napisałem działa...
Co do ustawiania w tryb capture to chyba nie ustawiam. Funkcja TIM_SetCompare1 ustawia po prostu rejestr CCR1 a wg manuala "CCR1[15:0]: Capture/Compare 1 value If channel CC1 is configured as output: CCR1 is the value to be loaded in the actual capture/compare 1 register (preload value). It is loaded permanently if the preload feature is not selected...
To RM w łapę i czytać o timerach i ADC. Jak czegoś nie zrozumiesz pytać. Ciekawe jak generujesz to PWM jak nie wiesz jak to działa. ... Wyczuwam ... Czuję ... Jakiegoś gotowca. Piotr - na Ciebie zawsze można liczyć... :) Na drugie powinieneś mieć REFERENCE :) OK, doczytam sobie na temat przerwań od bloku porównującego COMPARE - bo chyba to sugerujesz?...
[syntax=armasm]g_pfnVectors: .word _estack .word Reset_Handler .word NMI_Handler .word HardFault_Handler .word MemManage_Handler .word BusFault_Handler .word UsageFault_Handler .word 0 .word 0 .word 0 .word 0 .word SVC_Handler .word DebugMon_Handler .word 0 .word PendSV_Handler .word SysTick_Handler /* External Interrupts */ .word WWDG_IRQHandler /*...
Nie wklejałem konfiguracji DMA'a bo ona działała dobrze w przypadku wyzwalania ADC przez SWSTART [syntax=c]RCC-> AHBENR |= RCC_AHBENR_DMA1EN; DMA1_Channel1 -> CPAR = (unsigned int) &(ADC1->DR);//peripheral adress DMA1_Channel1 -> CMAR = ( unsigned int ) &adc_buf ; //memory adress DMA1_Channel1 -> CNDTR = ( unsigned int ) DMA_BUF_LEN ; DMA1_Channel1...
Oczywiscie tak. Dodam ze uzywam programu System Workbench [syntax=c] /** ****************************************... * (at)file startup_stm32.s dedicated to STM32F103C8Tx device * (at)author Ac6 * (at)version V1.0.0 * (at)date 2018-04-06 ****************************************...
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....
Postanowiłem bardziej dokładnie przeanalizować dokumentację rdzenia Cortex-M3 (na którym jest wykorzystywany przeze mnie uP STM32F107) – dokument „DDI0337G_cortex_m3_r2p0_trm.pdf... ze strony http://infocenter.arm.com/help/index.jsp Cortex-M3 TechnicalReference Manual. W dziale System Debug -> 11.5 DWT page 11-13 opisane są dokładnie...
Witam! Chcę wygenerować trzy przebiegi, zsynchronizowane czasowo, składające się z dwóch paczek po 10 impulsów . Planuję zrobić to na trzech kanałach jednego timera, akurat nr2. Wyjścia oc toggle. Potrzebuję do tego DMA. Mam taką wątpliwość: Jak przekazać kontrolerowi dma, gdzie akurat ma daną wartość wpisać, tzn. do którego TIM2->CCR? Żądania zgłaszać...
To także mam zrobione (dużo wcześniej w samym mainie na początku odpalam wszystkie porty i afio). Ogółem z testów wynika jakby wogóle nie były podpięte piny kanałów 2 i 4. Już sprawdziłem milion możliwości ustawień, żadne nie prowadziło do jakiejkolwiek reakcji na impulsy na tych pinach.. Cytując manuala: Bits 9:8 CC2S[1:0]: Capture/Compare 2 selection...
Witam, Wpadła mi w ręce płytka prototypowa z STM32f103 na pokładzie wiec pomyślałem że spróbuję swoich sił z tym mikrokontrolerem. Jak dotąd programowałem hobbystycznie głównie 8bitowe AVR-y i z nimi mniej lub bardziej sobie radzę. Ale do rzeczy wymyśliłem sobie że w projekcie zaprzęgnę do pracy Timer2, którego zadaniem będzie po wywołaniu funkcji Beep();...
3 Konfigurujesz Timer w tryb input capture taki sposób aby wyzwalał transfer DMA na którymś tam sobie kanale. Nie prościej właśnie output compare i mieć transfer co ileś tam taktów? 4\/3!!
Najlepiej jest iść po kłębku: TIM_OCMode wpływa na tmpccmrx, który trafia do CCMR1/CCMR2. TIM_OCMode_x obejmuje bity 6:4, tak więc odpowiada za pole OCxM kanałów. Według RM0008, wartość reprezentowana przez TIM_OCMode_Timing przekłada się na 000: Frozen - The comparison between the output compare register TIMx_CCR1 and the counter TIMx_CNT has no effect...
Myrek1: DMA wyzwalasz timerem, nie zmianą stanu portu. W dotychczasowych STM32 jedynym sposobem na wyzwolenie DMA przez port jest użycie na tej linii trybu capture timera - i wtedy oczywiście DMA wykona się w kilka cykli zegarowych po zmianie stanu linii. Na 80 MHz STM32L4 jest to czas ok. 140 ns. W przypadku wyzwolenia DMA przez timer w trybie compare/PWM...
Co do TIM3->SR &=~TIM_SR_UIF; przyznam, że dalej nie rozumiem jaka jest różnica w obydwu przypadkach kasuje tylko JEDEN bit nie CAŁY rejestr. W jednym przypadku zeruje jeden bit, w drugim przypadku zmieniam jego stan na przeciwny. Operacja logiczna na którą się tak uparłeś i zamierzasz bronić do ostatniej kropli krwi generalnie ma same wady i zero...
Ale to nie sprzętowy pwm on podaje napięcie po zrównaniu z określona wartością , poza tym timer 1 ma w datasheecie pin PA9 tak jak go skonfigurowałem ( dokładnie to alternate function AF6 i timer 1 kanał2 )
W jakich układach natrafiliście, lub zastosowaliście tyrystory lub triaki? Można kupić moduły SSR. SSR są zwykle bazowane na jakiejś formie triaka (chyba optotriak). Ja tak przerobiłem kolorofon na sterowanie przez artnet. Niestety tylko włącz/wyłącz (trzeba by detekcję fazy zrobić aby działało jako dimmer, niestety timery w ESP32 nie mają po kilka...
Dzięki Panowie za szybką odpowiedź :) bonczi7 LinkDriver użyłem niestety nic nie dało :( Marek_Skalski - nigdzie nie znalazłem nic na temat uruchamiania LSE do SD, a myślę że o SD przejrzałem cały User Manual od HAL jednak dla pewności uruchomiłem LSE jednak problem pozostał :( załączam zdjęcia po uruchomieniu LSE, Dla pewności użyłem programu od HAL-a...
Tak sprawdzałem również czy sam PWM jest ok. Wszystko gra. Zmieniam wypełnienie makrem, które tylko modyfikuje wartość rejestru porównawczego dla tego kanału i tylko wtedy gdy jest różnica w nowej ramce. uint8_t prev_RPM_PWM = 0; if (prev_RPM_PWM != Nrf24_Message[2]) { prev_RPM_PWM = Nrf24_Message[2]; __HAL_TIM_SET_COMPARE(&htim2, TIM_CHANNEL_1, percent_to_oc_1_2(Nrf24_Message[2]));...
Mógłby ktoś napisać obsługę tego timera ? Widzę przykłady w internecie ale bez zrozumienia. [syntax=c]//niezbędne pliki nagłówkowe #include <stddef.h> #include "stm32f10x.h" //DEFINICJE PREPROCESORA //CCMRx #define OC3M_0 (1<<4) #define OC3M_1 (1<<5) #define OC3M_2 (1<<6) #define OC4M_0 (1<<12) #define OC4M_1 (1<<13)...
stm32 output compare compare timer0 capture compare
cisnienie piecu technisat dekoder samsung lodówka wentylator
Kompresor Airpress – iskrzenie przy podłączeniu przez przedłużacz, możliwe uszkodzenie silnika Łuk elektryczny w kuchence mikrofalowej – przyczyny, diagnostyka, Panasonic, Whirlpool, osłona falowodu