Jeśli timer jest 16-bitowy to musisz dorzucić coś więcej - 16-bitów to zbyt mało. Licznik z którego korzystają run-time stats musi być 32-bitowy... Ja na STM32 mam to zrobione tak... 1. W FreeRTOSConfig.h mam: [syntax=C]... /*--------------------------------------... | Runtime...
Idea generalnie jest prosta - jeśli po wystąpieniu przerwania będziesz chciał zrobić coś co trwa "długo", to nie robisz tego w przerwaniu, bo blokujesz tym cały program - wtedy stosujesz polling flagi programowej lub sprzętowej. Jeśli chcesz zrobić coś co trwa "krótko" lub jeśli chcesz zrobić coś co musi być zrobione "natychmiast" po wystąpieniu przerwania...
KEELOQ + rolling code można wykorzystać w swoim projekcie DIY bez przeszkód? Oczywiście. Dodano po 33 Mogę zainteresowanym podać kod KEELOQ dla pilota i odbioru , oczywiście z innymi danymi pilota ;). PILOT: Dodano po 10 Bardzo ciekawy i użyteczny projekt, właściwie to prototyp, który może przekształcić się w produkt. A czego mu brakuje żeby już nie...
Próbuje mierzyć częstotliwość sygnału wykorzystując przerwanie i Timer2 Napisałem taki oto kod przy pomocy CubeMX: 249992 Hz i niby ok. Jednak znalazłem kurs STM32 na FORBOT ( 249986 Hz. I teraz nie wiem czy prawidłowo należy skonfigurować timer do tego zadania tak jak zrobiłem czy tak jak w kursie?
W pliku vectors.c znalazlem taka definicje: main() { ... Konfiguracja NVIC (); Konfiguracja Timera (); ... void TIM1_BRK_IRQHandler(void) { ... obsluga LCD ... } } Czy to co napisalem jest prawidlowe? Jesli tak to skad mam wiedziec ktora funkcje z vectors.c najlepiej wybrac do moich potrzeb - czy jest...
Mógłby ktoś rzucić okien na mój kod funkcji delay. Siedzę nad tym od paru godzin i nie mogę znaleźć błędu. Timer jest 2 razy szybszy nić powinien być. Używam TIM6, skonfigurowanego do ustawiania flagi przerwania przy overflow, ale nie obsługuję tego w przerwaniu tylko w funkcji delay sprawdzam, kiedy flaga zostanie ustawiona. Do prescalera wstawiam...
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...
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...
Witam Wysyłam przykładowe ramki z terminala do STM32 przez driver MAX3485 i cały czas sypie mi błędami w odpowiedziach. Nie mam też pewności czy to co wysyłam z terminala do STM32 dociera bez błędów. Poniżej fragment kodu oraz zrzut ekranu. Powinienem otrzymać to co wysyłam. Czarny kolor to odebrane ramki. Proszę o pomoc http://obrazki.elektroda.pl/7456669500_1...
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/...
Zrobiłem teraz oczekiwanie na timerze 6 tą przerwę (1 sek) ale nic nie pomaga: Dodano po 38 Porównałem rejestry CR przed wywołaniem kalibracji w moim i przykładowym programie. Różnica polega na tym, że u mnie włączony jest bit ADstart a w przykładzie jest wyłączony. Skąd się bierze ta różnica?
Stwierdziłem że najpierw skonfiguruję sobie I2S3 żeby generowało mi MCLK, wydaje mi się, że ustawiłem wszystko a na PC7 nic nie ma. Czy ktoś kto już to uruchamiał mógłby rzucić okiem i podpowiedzieć co robię źle lub o czym zapomniałem? Poniżej kod programu: (miga diodką i ma generować MCLK na I2S3) [syntax=c]void TIM2_IRQHandler(void) { // flash on...
Miło mi poinformować, że po wpisaniu komendy o zerowaniu flagi przerwania całość działa pięknie. Dziękuje a ponizej zamieszczam listningi poprawne: Konfiguracje [syntax=c] void NVIC_conf(void) { NVIC_SetPriority(TIM7_IRQn,1); NVIC_EnableIRQ(TIM7_IRQn ); } void TIM7_conf(void) { TIM7->CR1 |= TIM_CR1_ARPE | TIM_CR1_URS; //włącz buforowanie rejestrów...
Cześć. Dalej nie udaje mi się uruchomić tego modułu (RFM22B). Po tym jak staram się wysłać dane odczytuję rejestr przerwać i okazuje się, że mam błąd FIFO overflow/underflow. Nie wiem też jak sterować GPIO_0 i GPIO_1 dla tx i rx states. Czy ktoś kto już przeszedł przez podobne sprawy mógłby coś mi podpowiedzieć. Rejestry ustawiałem zgodnie z excelem...
Hej Freddie, tym razem to już mam poważny problem i proszę Cię o pomoc. Problem mam cały czas z przerwaniami. Nigdy mi w sumie tak naprawde nie zadziałaly na tym projekcie od stm. Przerobiłem Twoją tablice wektorów przerwań: /** \file vectors.c * \brief STM32 (STM32F101 - STM32F103) vector table and __Default_Handler() * \details STM32...
Mam coś takiego: [syntax=c] 08000000 <__text_start>: 8000000:20000000 .word0x20000000 8000004:08000151 .word0x08000151 8000008:08000661 .word0x08000661 800000c:08000661 .word0x08000661 8000010:08000661 .word0x08000661 8000014:08000661 .word0x08000661 8000018:08000661 .word0x08000661 800001c:08000661 .word0x08000661 8000020:08000661 .word0x08000661...
Nie napisałem iż powyższy kod był wczorajszym dziełem na szybko. Popracowałem trochę nad nim i wyszło mi coś takiego: [syntax=cpp] #include "stm32f10x.h" #include "sample_dat.h" #define LED_GPIO GPIOB //port B #define LED_GPIO_RCC RCC_APB2Periph_GPIOB //port B #define LED_Pin1 GPIO_Pin_0 //pin 0 #define LED_Pin2 GPIO_Pin_1 //pin 1 #define BackLight_Pin...
Wiesz co ja dopiero zaczynam z programowaniem stm ale jedna sprawa rzuciła mnie się w oczy. twoja funkcja jest prawie funkcją z biblioteki której definicja i rozwinięcie znajduje się w pliku core_cm4.h [syntax=c] __STATIC_INLINE uint32_t SysTick_Config(uint32_t ticks) { if ((ticks - 1) > SysTick_LOAD_RELOAD_Msk) return (1); /* Reload value impossible...
Zmieniłem trochę w projekcie. Zastosowałem najnowszą wersję FatFS. Plik z konfiguracją funkcji zadeklarowanych diskio.h pobrałem ze [url=http://www.siwawi.arubi.uni-kl.de/a... strony i przerobiłem go by pasował do STM32L. Po testach objawy wyglądają tak: Karty 512MB i 16GB: porgram mniej...
Witam Od niedawna bawię się uC STM32 i krok po kroku próbuję nauczyć się ich obsługi. Słowem wstępu: Mam płytkę ZL31ARM, pewne doświadczenie z programowaniem w C/C++ i zupełny brak doświadczenia z mikrokontrolerami. Mam już za sobą mruganie diodami i proste pętle opóźniające; obecnie chcę nauczyć się obsługi przerwać przy wykorzystaniu EXTI i IO. Korzystam...
Mam STM32L152 z DAC, który odtwarza plik wave. Korzystam z DMA i Timera do wyzwalania. Wszystko działa, ale chciałbym uzyskać możliwość softwarowej zmiany głośności. Czy DAC w STM32 ma możliwość dodania offsetu do sygnału wejściowego? Przeczytałem dokumentację, ale się w tym gubię. Jest możliwość włączenia bufora wyjściowego, po czym zwiększa się głośność,...
Wykonywanie jekichkolwiek zmian w pliku integer.h dostarczanego wraz z biblioteką fatfs - to raczej średnio dobry pomysł, zwłaszcza, że są tam tylko definicje niezależne od platformy. Jedyne co trzeba zmienić / napisać to kilka funkcji w diskio.c (lub jak w twoim przypadku sd_spi_stm32.c. Poniżej zawartość pliku diskio.c z innego projektu, ale nie wiem...
Super, jakoś udało mi się Eclipsa uruchomić fakt że w innej wersji Version: Mars Release (4.5.0) ale bez problemu spiąłem to. Przerzuciłem kod i co się okazało. Ruszył. Ale do szczęścia trochę brakuje, okazuje się, że nie rozpoznaje USB. Tzn ten sam dokładnie kod śmiga na Keilu, a na eclipse już nie. definicje: DEBUG USE_FULL_ASSERT TRACE OS_USE_TRACE_SEMIHOSTING_DEBUG...
Witam! Mam problem z fatfs 0.09b (najnowsza; wersja 0.07 też nie działa) pod stm32f103vet6. Komunikacja SPI. Maksymalny prescaler SPI do debug'u. (Na każdej prędkości to samo). Disk timer proc na SysTick'u (działa). Karta formatowana na różne jednostki alokacji, FAT, FAT32 zawsze to samo. Nie korzystam z LFN. Strona kodowa 852, 125x, 1 (ANSI) bez znaczenia....
Co do rady abym zaczął od małych kroczków , to akurat robię łącząc jeden odczyt z adc i zapis do karty (Póki co Rs'a - bedzie to następny etap).Wyświetlacz mam ale on pracuje na drugim spi i na wszelki wypadek nie używam , z diodami to pomyśle, natomiast debuger jest mi obcy ( mam programator zl30prg i niepełnego keila ) Co do kolejności rozbudowywania...
Można to zrealizować tak, że timer wywołuje interrupt. Jego procedura zmienia za każdym razem inne wyjście.
TIM1 jest tu specjalny, bo ma kilka wektorów przerwań (TIM1_BRK_IRQHandler, TIM1_UP_IRQHandler, TIM1_TRG_COM_IRQHandler, TIM1_CC_IRQHandler). Reszta timerów ma jeden. TIMx_IRQHandler, przeglądnij sobie -> 10.1.2 Interrupt and exception vectors
Mnie tam brakuje ustawienia przerwania: [syntax=c]TIM1->DIER = 0x00000001;// enable update interrupt[/syntax] Ogólnie takie coś powinno działać: [syntax=c]TIM1->CR1 = 0x00000000;// default TIM1->PSC = 0x000000FF;// set max prescaler TIM1->ARR = 0x00000FFF;// set max reload count TIM1->CCMR1= 0x00000068;// set PWM mode 1 TIM1->CCR1= 0x000000FF;// set...
Witam wszystkich serdecznie! Potrzebuję pomocy z pewnym zadaniem z systemów wbudowanych, 4 rok studiów. Programuję w języku C środowisku CooCox CoIDE procesor STM32F103ZET6 użyty w module HY-RedBull_V3 posiadający 3,5-calowy ekran dotykowy TFT LCD HY35A (kontroler LCD SSD1963, kontroler ekranu dotykowego ADS7843 lub XPT2046), który ma wykonać poniższe...
W main.c czarów nie ma , bo stworzyłem nowy projekt golasa na potrzebę uproszczenia szukania problemu. Nie jestem programistą ani elektronikiem ,a do sprawy podchodzę hobbistycznie jako początkujący. Korzystam z System Workbenach for stm32 + Stm32CubeMX z bibliotekami HAL. Cube szykuje wszystko po czym ja tylko dodaję funkcję HAL_SYSTICK_Callback. plik...
Czy dobrze rozumiem że ustawiając Update DMA i Update interrupt to po każdym przekręceniu się licznika zostanie wywołane przerwanie i DMA? W przypadku Trigger określam co bedzie powodowało start Timer'a?
Funkcja inicjalizująca wywołuje kilka innych, więc żeby po trochu nie wstawiać kodu, oto cały plik RC5_IR_Emul_Receiver.c : [syntax=c]/** ****************************************... * (at)file STM32F10x_RC5_Receiver_Lib/src/RC5_IR_Em... * (at)author MCD Application Team * (at)version V1.0.0 * (at)date 03/16/2010...
Witam, Próbuje uruchomić obsługę karty SD pod STM32f103ZET6. Wykorzystuje do tego bibliotekę, używaną wcześniej pod STM32f407. Zmodyfikowałem tylko inicjalizacje SPI i dorzuciłem testową funkcję zapisu do karty. Mimo to karta nie chce ruszyć. Przy próbie otwarcia jakiegokolwiek pliku dostaje: FR_NOT_READY. Próbowałem już na dwóch kartach SD, formatowałem...
Zgadza się flagi poszczególnych zdarzeń są, chciałem powiedzieć że nie ma osobnych przerwań dla poszczególnych flag tak jak to jest w przypadku Timera1, i nie wiem co powoduje że pierwsze 3 przerwania w przypadki Timera3 i 2 przerwania w przypadku Timera2 nie generują przebiegu na wyjściu. Poniżej konfiguracja Timera2 http://obrazki.elektroda.pl/9351651600_1...
Witajcie. Zacząłem jakieś 2 miesiące temu przygodę z ARMami na przykładzie STM32. Moim celem jest przygotowanie samochodowego odtwarzacza mp3 zastępującego zmieniarkę CD. Początek zabawy przeszedł dość gładko i po paru dniach już odtwarzałem muzykę z pendrive'a. Jednak odbywało się to w pętli, więc równoczesna aktualizacja wyświetlacza czy inne czynności...
W procedurze obsługi przerwania, na samym jej początku należy wyzerować bit UIF (Update interrupt flag) w rejestrze statusowym. TIM4->SR &= ~(TIM_SR_UIF); I powinno działać…
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;...
Filozoficznie ująłbym to tak: jeśli cała funkcjonalność programu nie da się zawrzeć w przerwaniach, to znaczy, że powinniśmy użyć RTOSa. Z samego faktu obecności "pętli głównej" wynikają wyłącznie problemy. Od dawna piszę wszystkie nieduże projekty w taki sposób, że procesor po zainicjowaniu peryferiali idzie spać i tylko obsługuje przerwania. Na 8-bitowych...
Witam Dlaczego podczas obsługi przerwania TIM2 dwukrotnie jest ustawiana flaga "tim_up" ? Pierwszy raz natychmiast (błędnie) oraz drugi raz po ustawionym w preferencjach czasie (prawidłowo) [syntax=c]volatile uint8_t tim_up = 0; int main(void) { myinit (); TIM_Cmd(TIM2, ENABLE); while (1) { /* * You can do whatever you want in here */ if( tim_up ==...
Bardzo dziękuję za informacje. Posiedziałem trochę wczoraj w nocy i: moduły DMA pamiętają adresy i pozostałe ustawienia. Po zakończeniu transferu wszystko jest przywracane w rejestrach. Jeżeli coś jest stałe, to nie trzeba tego za każdym razem ładować do rejestrów (jak w programach 2 i 3); wystarczy tylko ustawić bit DMA_CCR1_EN. Podpucha :) Rejestr...
Hehe, chyba ślepnę powoli :P Masz dobrą tablicę wektorów? Tablicę wektorów oczywiście napisałem sam, na podstawie twoich projektów dla µC LPC11xx i STM32. No i faktycznie, w tablicy wektorów zapisane miałem: Nie powinieneś działać na rejestrze 0? Tak, dokładnie, jedynka była wynikiem moich poszukiwań niepowodzenia, wcześniej widniało tam zero....
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...
Dzień dobry! Używam mikrokontrolera STM32F100 Discovery. Próbuję uruchomić program, który wcześniej bez problemu działał na timerze 2 oraz 3. Jednak pojawiła się konieczność wyprowadzenia dodatkowych dwóch wyjść zanegowanych, więc postanowiłem użyć timera1, który według dokumentacji posiada takie wyjścia. Pojawia się tutaj problem z funkcją IRQHandler,...
Witam wszystkich. Uzywam Eclipse + OpenOCD (0.9.0) + GCC. Do tej pory używałem STM32F103 (Cortex-M3), a teraz przesiadłem się na STM32F373 (Cortex-M4). Wziąłem ze starego programu skrypt linkera, startup, vectors.c i posklejałem do kupy odpowiednio je modyfikując. Program generalnie odpala się, mogę sterować GPIO. Następnie spróbowałem uruchomić SysTicka....
Mikrokontroler STM32 F030CC Konfigurując timer za pomocą HAL'a wszystko działa, kod poniżej w środowisku AC6 działa natomiast w TrueStudio wchodzi w pętlę nieskończoną mi w pliku startup_stm32f030xc.s Dodałem znaczniki syntax. Proszę ich używać, ponieważ kolorowanie składni ułatwia czytanie i analizę kodu.
Witam, staram sie wykorzystac karte SD do przechowywania danych uzywanych przez wyswietlacz (bitmapy etc). Korzystam z biblioteki FATfs i komunikacja SPI. Aby moc tego dokonac modul FATfs korzysta z sygnalu zegarowego, ktory co 10ms bedzie wywolywal funkcje [syntax=c]disk_timerproc()[/syntax] Do cyklicznego wywolania tej powyzszej funkcji staram sie...
Witam, Chcę skonfigurować timer tak aby po określonym czasie zostało wygenerowane przerwanie(jednokrotnie), fragment kodu: [syntax=c]TIM4->PSC = 7200; TIM4->ARR = 10000; TIM4->DIER = TIM_DIER_UIE; TIM4->CR1 |= TIM_CR1_URS | TIM_CR1_OPM | TIM_CR1_CEN; NVIC_EnableIRQ(30);[/syntax] obsługa przerwania: [syntax=c]__attribute__ ((interrupt)) void TIM4_IRQHandler(void)...
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,...
To kod, który u mnie na STMF107 działa - może znajdziesz jakieś róznice... W przerwaniu mam obsługę klawiatury 4x4 + kilka liczników, ale to tutaj nieistotne, więc nie zamieszczam. [syntax=c] //--------------------------------------... // Inicjalizacja TIM2 //--------------------------------------...
W jednym projekcie jeszcze mam dorzucone na początku main() coś takiego: NVIC_SetPriorityGrouping(0); 4\/3!! Ja patrzę teraz na przykład z F4 FreeRTOSV7.4.0\FreeRTOS\Demo\CORTEX_M4F_... i w main.c jest [syntax=c]/* Ensure all priority bits are assigned as preemption priority bits. */ NVIC_PriorityGroupConfig( NVIC_PriorityGroup_4 );[/syntax]...
timer interrupt stm32 interrupt timer atmega interrupt
oporność głośnik fabia napięcie attiny2313 segmentowy
harley benton radio internetowe esp32
Wózek inwalidzki z baterią 29.2V a działanie przy 24V Schemat adaptera przepustnicy 4-pin Daily/Boxer