Witam, Próbuję skonfigurować dwa przerwania output comare no output na dwóch kanałach timera 1. Korzystam z płytki nucleo stm32f103rb. Procesor taktuję zegarem 8MHz. Korzystam z CubeMx i biblioteki HAL. Preskaler i ARR ustawiam dla całego timera, a dodatkowo Pulse dla poszczególnych kanałów, tak aby uzyskać jedno przerwanie z częstotliwością 1Hz, a...
Przeczytaj manual - interesuje Cię przerwanie od przepełnienia (update), a nie porównania (compare). Pozatym przerwania trzeba też włączyć w NVIC. 4\/3!!
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...
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.
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!!
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.
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...
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.
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...
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...
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...
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...
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,...
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...
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ś...
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...
Po pierwsze: jak często jest ono zgłaszane? Przerwanie jest zgłaszane z częstotliwością 1 kHz. DCMI odbiera dane non stop. Po trzecie: co robi AKTUALIZUJ_PWM (pwm_lookup_table aktualizuje rejestr PWM poprzez wywołanie funkcji [syntax=c]TM_PWM_SetChannelPercent(&... TM_PWM_Channel_1, 100-x);[/syntax] która wywołuje [syntax=c]TM_PWM_Result_t...
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ć...
Witam od 2 dni próbuje zsynchronizować TMI1 (podczas generowania przebiegu PWM) i ADC2 w taki sposób aby przetwornik ADC2 próbkował w czasie gdy gdy nastąpi przepełnienie w liczniku jak poniżej na rysunku: https://obrazki.elektroda.pl/6382692400_... Dodam, że Timer pracuje w trybie "Center-aligned mode 2" a przetwornik ADC2 używa kanału...
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...
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;...
Nie przemawia to do mnie, w stm32f0xx.h mamy coś takiego: #define TIM_SR_CC1IF ((uint16_t)0x0002) /*!<Capture/Compare 1 interrupt Flag */ jak na mój gust zapis: TIM1->SR = ~TIM_SR_CC1IF; spowoduje najpierw zanegowanie TIM_SR_CC1IF a potem przypisanie do rejestru SR, czyli de facto wrzucimy tam wartość 0xFFFD. Zapis: TIM1->SR...
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?...
Znalazłem przykładowy program do migania diodą, która zawarta jest na module STM32F103*: Open On-Chip Debugger 0.10.0-dev-00019-g5352c55 (2019-02-14-15:31) Licensed under GNU GPL v2 For bug reports, read http://openocd.org/doc/doxygen/bugs.... Warn : Could not determine executable path, using configured BINDIR. none separate Info...
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...
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...
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 -...
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...
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/...
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...
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...
[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 /*...
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 ****************************************...
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...
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...
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, 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 "...
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 )
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;
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....
Hej, dzięki. Teraz mam kolejny problem - kiedy w debugerze przechodzę program krok po kroku, wszystko działa cacy, ale jak uruchomię program normalnie, to się wywala (przechodzi do inifinite loop w pliku startup_stm32f4) oto mój kod: [syntax=c] volatile uint32_t uhADC1ConvertedValue; uint32_t getADCVal(){ return uhADC1ConvertedValue; } void adc_init(void)...
Rzeczywiście w AC6 jest inna wersja OpenOCD - 0.9.0-dev-00416-gc6629a9-dirty i jest krok do przodu. OpenOCD łączy się z tylko gdy trzymam wciśnięty reset bo inaczej: [syntax=OpenOCD] Open On-Chip Debugger 0.9.0-dev-00416-gc6629a9-dirty (2015-08-03-16:31) Licensed under GNU GPL v2 For bug reports, read http://openocd.org/doc/doxygen/bugs.html Info :...
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, projekt był realizowany już jakiś czas temu, ale w zasadzie od tamtej pory go nie modyfikowałem. A czy na pewno musisz też obsłużyć LDAC sprzętowo? Z tego co kojarze,to jest to dodatkowy feature DACow i można podpiąć LDAC do zasilania, a LDAC wyzwalać softwarowo. LDAC służy do jednoczesnego uaktualniania wyjścia analogowego na wszystkich kanach...
Dzięki za radę, pomyślę nad jakimś zabezpieczeniem :) Niestety, nie pomogę Ci tym razem w Twoim bezpośrednim problemie, już nie mam głowy do tego - właśnie się pakuję na narty Udanego wyjazdu :D Wracając do mojego Timera! Coś ruszyło, za namową BlueDraco skonfigurowałem Compare 1 korzystając z jednego z tematów na tym forum. Konfiguracja Timera do wyzwalania...
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)...
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...
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...
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...
Tablice wektorów mam z przykładów ze strony [url=http://www.freddiechopin.info/]http... Nic w niej nie zmieniałem i wersja 6.1.1 działa dobrze a 7.1.0 wiadomo Tak wygląda tablica wektorów: [syntax=cpp]void (* const vectors[])(void) __attribute__ ((section(".vectors"))) = { (void (*)(void))&__main_stack_end,// Main stack end address...
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...
Witam, mam problem z odczytem więcej niż jednego kanału ADC. Dla jednego kanału miałem następujący (działający) kod (z wyzwalaniem przez TIM3). [syntax=c]void adc_init(void) { RCC->APB2ENR |= RCC_APB2ENR_IOPAEN | RCC_APB2ENR_IOPCEN | RCC_APB2ENR_AFIOEN | RCC_APB2ENR_ADC1EN; RCC->APB1ENR |= RCC_APB1ENR_TIM3EN; GPIO_CONF(GPIOA, 0,GPIO_MODE_INPUT, GPIO_CNF_INPUT_ANALOG);...
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);...
OK. Zdaje się, że bez kodu trudno będzie to wyjaśnić. Inicjalizacja TIM1: [syntax=c] void timc_startup(void){ // timer clock and interrupt __HAL_RCC_TIM1_CLK_ENABLE(); // Set Interrupt Group Priority //HAL_NVIC_SetPriority(TIMc_IRQn, TIMc_IRQ_PRIORITY, 0); //HAL_NVIC_EnableIRQ(TIMc_IRQn); hTIMc.Instance = TIMc; hTIMc.Init.Period = TIMc_PERIOD-1; trace_printf("timHandle.Init.Period:...
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ść...
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...
Z detektora zera sieci dostaje sygnał jak na obrazku niżej. http://obrazki.elektroda.pl/1251410700_1... Kwarc 8MHz, po PLL 24MHz. No i mam między innymi [syntax=c]NVIC_SetPriorityGrouping(3); NVIC_SetPriority(ADC1_2_IRQn, NVIC_EncodePriority(3, 2, 0)); NVIC_SetPriority(EXTI9_5_IRQn, NVIC_EncodePriority(3, 3, 0)); NVIC_SetPriority(TIM4_IRQn,...
Dlaczego wyskakuje mi błąd "Undefined symbol Init_GLCDPORT?" [syntax=c] /* Includes ----------------------------------------... #include "main.h" #include "stm32f4xx_gpio.h" /* Private typedef ----------------------------------------... /* Private define ----------------------------------------...
Korzystam z przykładowych projektów dostarczonych przez ST w programie IAR. Po lewej stronie okna programu znajduje się okienko z drzewem folderów i pośród nich znajdują się dwa pliki ze 'startup' w nazwie: startup_stm32f10x_md.o i startup_stm32f10x_md.s (zawartość plików znajduje się poniżej). To o te pliki chodziło? Zawartość dość znacznie się różni....
Funkcja SystemInit jest wywoływana w obu przypadkach na początku main. Podałem ją w kodzie. Może tutaj faktycznie jest problem. Pliki startup.s Keila i Cube się różnią. Zauważyłem, że funkcja SystemInit jest wywołana w pliku dla Cube. Niestety te pliki to dla mnie czarna magia. Czytałem o nim artykuł waszego kolegi z elektrody. https://www.elektroda.pl/rtvforum/topic3...
Tak, też mi sie to wydawało logiczne, ale CC2E:Capture/Compare2 output enable refer to CC1E description Bit0 CC1E:Capture/Compare1 output enable CC1 channel configured as output: 0: Off - OC1 is not active. 1: On - OC1 signal is output on the corresponding output pin. jakieś pomysły?
Timer ma 4 kanały i każdy z nich ma swój własny niezależny blok Compare/Capture a więc w ogólnym przypadku można sprzętowo mierzyć 4 sygnały jednym timerem: 1 sygnał = 1 kanał = 1 pin wejściowy. Nieco problematyczne może być wyzwolenie i synchronizacja całości. Poszczególne sygnały PWM są wobec siebie zgodne w fazie lub w jakiś inny sposób "połączone"...
Masz dla porównania. Pewnie będziesz musiał pozmieniać flagi kompilatora. [syntax=Bash] 42% 41) [0.277s] external/STM32F4xx_HAL_Driver/Src: arm-none-eabi-gcc -mcpu=cortex-m4 -mthumb -O2 -ffunction-sections -fdata-sections -Wall -Wstrict-prototypes -Wextra -Wshadow -std=gnu99 -g -ggdb3 -D STM32F401xE -I ../../../external/STM32F4xx_HAL_Driver/I... -I ../../../external/CMSIS...
https://obrazki.elektroda.pl/8952633700_... Projekt miał na celu stworzenie sterowania dla topologii half-bridge z możliwością ustawiania częstotliwości za pomocą programu na komputerze. Dodatkowo układ posiada synchroniczne próbkowanie przebiegu prądu w celu dokładnego pomiaru fazy oraz amplitudy i wykreślenia wykresu wartości tych...
Sprytnie używając timera można napisać całkowicie nieblokującą obsługę OneWire z rozsądnym wspomaganiem sprzętowym - jeden kanał timera w trybie compare ze sterowaniem wyjściem w trybie OD, sąsiedni kanał w trybie capture z chwytaniem zboczy narastających. żadnych delay, żadnych problemów z przerwaniami. Można też obniżyć priorytety wszystkich innych...
Witam, Bazuje na projekcie ze strony Freddie Chopin dla stma F4 z dodanymi bibliotekami STM32F4xx_StdPeriph_Driver. Zdefiniowałem sobie konfigurację timer'a w następujący sposób: [syntax=c]void Timers_Config(void){ RCC_APB2PeriphClockCmd(RCC_APB2Periph_TI... ENABLE); NVIC_InitTypeDef NVIC_InitStruct; NVIC_InitStruct.NVIC_IRQChannel = TIM1_CC_IRQn; NVIC_InitStruct.NVIC_IRQChannelPreemptio...
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:...
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...
Witam! Posiadam moduł wyświetlacza LCD 3.2", prawdopodobnie na sterowniku SSD1289 (sprzedawca twierdził, że na HX8347-A, jednak dopiero metoda inicjalizacji do SSD1289 zadziałała). Próbuję nim sterować przy pomocy mikrokontrolera STM32F103RBT6. Wszystko zdaje się działać dobrze, do czasu gdy chcę wyświetlić jasny kolor, np. RGB(240,240,240). Wtedy sterownik...
Przydatne MACRA do zarządzania wieloma bitami naraz: [syntax=c]//https://stackoverflow.com/qu... #include <stdint.h> typedef __uint32_t uint; //======================================... #define STRINGIZE(arg) #arg #define...
Witam, Zdobyłem ST-Link v2 i mam problem z nim w Eclipse przy łączeniu z STM32. Podczas łączenia Konsola pokazuje: Open On-Chip Debugger 0.10.0 Licensed under GNU GPL v2 For bug reports, read http://openocd.org/doc/doxygen/bugs.html Info : auto-selecting first available session transport "hla_swd". To override use 'transport select <transport>'....
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...
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ść, Może ktoś podpowie, bo chwilowo nie mam pomysłów. Potrzebuję użyć DMA do przesyłania danych, używam kilku strumieni. DMA potrzebuję wyzwalać z określoną częstotliwością przez timmer. Jeśli użyję DMA2, to wszystko działa, Problem jest w tym, że DMA2 mogę wyzwalać tylko Timmerem 1 i 8. O ile timmer 8 mogę na to poświęcić, timmer 1 potrzebny mi...
St-link v2 na płytce Discovery, próbuję nim zaprogramować zewnętrzny układ. STM32F401 ma podłączone wszystkie zasilania, na każdej parze 100n, kondensator na Vcap. Próbowałem w czasie łączenia ściągać NRST do masy, BOOT0 do Vcc, nic to nie zmienia. Na Vcap jest ok. 1,2V, więc regulator pracuje. OpenOCD pokazuje: [syntax=bash]openocd -f interface/stlink-v2.cfg...
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.
Dodano po 31 Kiedy debuguje program, krokowo, zaraz po a = 124; z linii b = log10(a); wskakuje do nieskończonej pętli - void HardFault_Handler(void). Tak jakby sam adres procedury wywoływał błąd sprzętowy.
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, programowałem sobie na spokojnie (próbuję nauczyć się odpalać timery od zewnętrznych sygnałów zegarowych wchodzących na dany pin). W pewnym momencie chciałem wgrać program i otrzymałem taki komunikat: Open On-Chip Debugger 0.9.0-dev-00415-g2d4ae3f-dirty (2015-06-12-17:54) Licensed under GNU GPL v2 For bug reports, read http://openocd.org/doc/doxygen/bugs.html...
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, //...
Nie zerowałem konkretnych flag przerwania od CCRx. Dziękuję za pomoc. Działający kod dla stm32f05: [syntax=c]timer2_init(void) RCC->APB1ENR |= RCC_APB1ENR_TIM2EN; TIM2->PSC = 4799; // Set prescaler TIM2->ARR = 100; // Auto reload value TIM2->CCR1= 20; TIM2->CCR2= 40; TIM2->CCR3= 75; TIM2->CCR4= 99; TIM2->CR1|=TIM_CR1_ARPE ; //AUTO...
Witam Po przymusowej reinstalacji systemu na której wszystko działało bez problemów byłem zmuszony na nowo instalować Eclipse wraz z OpenOCD dla mojego STM32F4. Podobnie jak wcześniej do programowania używam polecenia w : "openocd.exe -f board/stm32f4discovery.cfg -c init -c halt -c "flash write_image erase ${project_name}.elf"...
Witam wszystkich :) Postanowiłem rozpocząć przygodę z ARM. Kupiłem płytkę STM32F103C8T6 i zaprogramowałem ją za pomocą Arduino IDE korzystając z przejściówki USB-RS232. Działało fajnie, ale nie chcę programować za pośrednictwem Arduino IDE i portu szeregowego, więc zakupiłem ST-Link (taki o: www.waveshare.com/wiki/ST-LINK). Pierwsze pytanie: 1) Czy...
Witam Zastanawia mnie pewna rzecz związana z projektem na stm32f103rct6. Wykorzystuje mikrokontroler z jednoczesnym użyciem usb i tim1. Usb(dp) i tim1(ch4) współdzielą pin. Ja z tim1 chce używać tylko kanałów 1 i 2. Po przeczytaniu dokumentacji da sie wprowadzić wyjścia compare match w stan idle (co bym zrobił w przypadku kanału 4). I w tym miejscu...
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/...
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,...
Czyli jednak ;) (at)Piotr Piechota: nie lepiej to zrobić na przerwaniach od compare timera (o ile się da ;))?
Włączamy przerwanie funkcją na przykład: Tyle, że nie chce używać licznika siódmego tylko pierwszego. W Twoim przypadku będzie to numer przerwania od przepełnienia. Są one zdefiniowane w pliku stm32f334xx.h w postaci czytelnej dla człowieka. Dziękuję. Tylko jeśli chcę aby przerwanie wywoływało się kiedy licznik się przepełni, którą opcję mam wybrać...
Witam Chciałbym wyzwalać ADC1 poprzez TIM1 TRGO. edit: nie można od TIM1 TRGO Coś robię nie tak. [syntax=c] RCC->APB2ENR = RCC_APB2ENR_ADC1EN |RCC_APB2ENR_IOPAEN | RCC_APB2ENR_IOPBEN |RCC_APB2ENR_IOPCEN |RCC_APB2ENR_AFIOEN | RCC_APB2ENR_USART1EN | RCC_APB2ENR_SPI1EN | RCC_APB2ENR_TIM1EN; ADC1->SQR3 = 1; // channel #1 ADC1->SMPR2 = ADC_SMPR2_SMP1_1;...
Witam, Próbuję wymusić na STMie aby konwersja w jego zintegrowanym przetworniku ADC wyzwalana była przez CC2 od timera 2. Inicjalizacja odpowiednich peryferiów jak poniżej nie powoduje zadziałania całości. void ADC1_Init(void){ /*APB2 buses clock for ADC enable with prescaler 8*/ RCC->APB2ENR|=RCC_APB2ENR_ADC1EN; RCC->CFGR|=RCC_CFGR_ADCPRE_DIV8;...
Witam, Piszę program sterujący pracą zgrzewarki oporowej. Za pomocą PWM załączam tranzystory dużej mocy na określony czas z określonym wypełnieniem. Istotą mojego problemu jest pojawianie się napięcia na pinach, na których mam PWM (PE9, PE11, PC8, PC9) podczas resetu mikrokontrolera oraz podczas włączania/wyłączania mikrokontrolera. Nie mogę oczywiście...
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...
Zworki były, musiałem pokombinować z tym resetem (zwolnić w odpowiednim momencie), ale chyba się udało: Open On-Chip Debugger 0.9.0-dev-00415-g2d4ae3f-dirty (2015-06-12-17:54) Licensed under GNU GPL v2 For bug reports, read http://openocd.org/doc/doxygen/bugs.html Info : The selected transport took over low-level target control. The results might differ...
Dzień dobry, Sprawa wygląda tak, że chciałem zrobić zadanie 8.4 z poradnika na temat stm32. Wymodziłem sobie takie coś: Open On-Chip Debugger 0.9.0-dev-00186-g30203b3 (2014-11-09-22:49) Licensed under GNU GPL v2 For bug reports, read http://openocd.sourceforge.net/doc/doxyg... Info : The selected transport took over low-level target control....
Mam taki prosty programik: [syntax=c]void TIM1_BRK_UP_TRG_COM_IRQHandler(void) { TIM1->SR &= ~TIM_SR_UIF; GPIOA->ODR ^= GPIO_ODR_2; //led PA2 if(TIM1->CR1 & TIM_CR1_DIR) TIM1->CNT = 0; //blokuję licznik przed przeładowaniem else TIM1->CNT = 20; } void TIM1_CC_IRQHandler(void) { TIM1->SR &= ~TIM_SR_CC1IF; GPIOA->ODR ^=...
Może od razu też powiem, że częstotliwość timera zamierzam ustawić na 10 kHz. Chciałem się jeszcze dopytać o jedną rzecz, której może nie do końca zrozumiałem. Czyli do rejestru (w moim wypadku jest to CCR1 - capture/compare register 1) wpisuje zmienną, która realizuje taką funkcje: U(a)=M×[cos(δ)] gdzie: M - współczynnik głębokości modulacji δ=2Π×f×Δt...
Po kilku miesiącach przerwy chciałem wrócić do programowania mojej płytki Discovery z układem STM32F407. Mam napisanych kilka wersji programu do zwykłego migania diodą, programy się kompilują i wgrywam jej przy pomocy AC6 System Workbench oraz STM32 ST-Link Utility. Programator mam widoczny w menadżerze urządzeń jako STMicroelectronics STLink Virtual...
Dodano po 3 I aby w razie czego nie płakał że nie ma: Możesz to zrobić w C też oczywiście: [syntax=armasm] .weak NMI_Handler .thumb_set NMI_Handler,Default_Handler .weak HardFault_Handler .thumb_set HardFault_Handler,Default_Handler .weak MemManage_Handler .thumb_set MemManage_Handler,Default_Handler .weak BusFault_Handler .thumb_set BusFault_Handler,Default_Handler...
Witam, Uruchomiłem watchodoga w ten sposób: [syntax=c]RCC_APB1ENR.B11 = 1; // Enable clock gating for Watchdog Timer 0 module WWDG_CFR = 1; // Write window value to be compared to the downcounter WWDG_CR = 0b10000000; // Enable the watchdog while (1) // Endless loop, WatchDog_Timer will reset ARM[/syntax] Procesor pieknie sie resetuje, co widzę po tym,...
stm32 output compare compare timer0 capture compare
siłownik gazowy limit polaczen kaseta adapter transmiter
philips az1830 polerka samochodowa
Wyświetlacz LCD Renault Modus nieczytelny po nagrzaniu Lokalizacja czujnika uderzeniowego w Citroën Xsara Picasso 1.6 16V