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,...
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...
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;...
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...
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 "...
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/...
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...
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...
Przeczytaj manual - interesuje Cię przerwanie od przepełnienia (update), a nie porównania (compare). Pozatym przerwania trzeba też włączyć w NVIC. 4\/3!!
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.
No i kurczę już nie wiem czym to się różni: Tutaj jak się kompiluje za pomocą freediego: (...)(at)(...)-jacek:... make Assembling file: startup.S /home/(...)/arm/gcc-arm-none-eab... -x assembler-with-cpp -c -mcpu=cortex-m3 -mthumb -g -ggdb3 -Wa,-amhls=out/startup.lst...
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...
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...
[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 /*...
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...
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.
Kupa błędów, trudno, żeby działało. Nie wiem, czy wszystkie wyliczę: 1. W komentarzach jest TIM1 ch1, TIM1 ch2, TIM1 ch3, ale kody pod tymi komentarzami są identyczne (tylko rejestr CCRx jest zmieniony) - niby czym się różni inicjowanie dla poszczególnych kanałów? 1a. Rejestry PSC i ARR są określone dla timera (wspólne dla wszystkich kanałów), więc...
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();...
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...
Zmieniłem : 2. change The initial stack pointer in the vector table: (void *)&pulStack[STACK_SIZE-1]... to (void (*)(void))((... long)pulStack + sizeof(pulStack)), w startup_stm32f10x_md_vl.c Dalej to samo. [syntax=c]/** ****************************************...
Witam. Testuję właśnie środowisko System Workbench for STM32 i mam problem z debuggerem dla procka STM32F030F4P6. Wgrywanie do pamięci FLASH działa. Programator ST link z płytki stm32VL, połączenie przez SWD. Konsola odpowiada: Open On-Chip Debugger 0.9.0-dev-00415-g2d4ae3f-dirty (2015-06-12-17:54) Licensed under GNU GPL v2 For bug reports,...
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.
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...
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_...
Witajcie. Postanowiłem wypróbować nowe środowisko SW4STM32. Projekt stworzony przy pomocy STM32CubeMX, następnie zaimportowany do SW4STM32. Program się kompiluje, i wgrany za pomocą STM32 ST-LINK Utility działa. Niestety z poziomu samego środowiska nie można ani wgrać softu, ani uruchomić trybu debugowania. Wykorzystuję programator ST-LINK V2. O to...
Próbuje skonfigurować timer TIM1 jako generator pwm. W celach edukacyjnych puściłem go w zwolnionym tempie aby zobaczyć jak działa. Nie rozumiem dlaczego po ustawieniu opcji [Center-aligned mode] timer zaczyna pracę od zliczania w dół zamiast rozpocząć od 0 w górę. Przeglądam dokumentację i nic nie przychodzi mi do głowy, może ktoś zna odpowiedź bo...
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...
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! 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ć...
Gdzie tablca jest zdefiniowana zależy od toolchaina. Możesz mieć np coś takiego w pliku vectors..... [syntax=c]__attribute__ ((section(".isr_vector"),used)) pHandler __isr_vectors[] = { // Cortex-M Core Handlers (pHandler) &_estack, // The initial stack pointer Reset_Handler, // The reset handler NMI_Handler, // The NMI handler HardFault_Handler, //...
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...
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...
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]));...
OpenOCD zaktualizowanie tak jak kompilator wcześniej. Przerabiam przykład od początku teraz na bazie tego o którym mówiłeś LPC Będe wklejał tutaj co dokładnie przerabiam. Jeśli coś robię źle to mam nadzieje że mnie poprawicie. Jeśli dobrze to mam nadzieje że komuś się przyda. 1.Import projektu lpc1114_blink_led i rename na stm32f0_blink_led 2. Zmiany...
Chciałem uruchomić debugger i pokazało mi taki błąd: http://obrazki.elektroda.pl/3372069600_1... Podczas wgrywania oprogramowania w konsoli pokazuje mi takie rzeczy: http://obrazki.elektroda.pl/9063610900_1... Wrzucam też w formie tekstowej to co wyżej: Open On-Chip Debugger 0.9.0-dev-00415-g2d4ae3f-dirty (2015-06-12-17:54)...
Już poprawiłem program. Rzeczywiście namieszałem. Mam ustawiony timer 4 jako pwm i chciałbym móc go zainicializować w trybie "GATED Mode" pinem PB6. Zgodnie z datasheet tryb OPM może działać jako PWM lub Output Compare (str. 611). Wystarczy uruchomić w rejestrze CR1 bit OPM.
stm32 output compare compare timer0 capture compare
radio samochodowe przeróbka nadajnik odbiornik 27mhz schemat tny264 napięcie
Jak zmienić godzinę na dekoderze Cyfrowego Polsatu? Manometr nie działa w kotle Vitodens 050 - przyczyny i rozwiązania