Chcę, aby TIM2 i TIM3 pracowały w połączeniu kaskadowym. Ta konfiguracja działa, ale mam pewną wątpliwość dotyczącą pracy TIM2 (TIM2 taktuje TIM3). Z racji braku domowego oscyloskopu staram sobie pomóc diodą LED. Inicjalizacja diody realizowana jest przez inicjalizacją timerów. W inicjalizacji dioda jest zapalana. W procedurze obsługi przerwania od...
Witajcie, Czy jest jakaś specjalne polecenie do wyłączenia/włączenia na przerwań w STM32F7? W kodzie robię zapis do pamięci SRAM i chciałbym w tym czasie wyłączyć przerwania. IINCHIP_ISR_DISABLE(); // Interrupt Service Routine Disable *((uint8_t * )(0x60000000 + addr)) = data; IINCHIP_ISR_ENABLE(); // Interrupt...
Wygeneruj sobie projekt w cube i podejrzyj. Jest to najszybsze i najprostsze. Dodano po 11 [syntax=c]void HAL_UART_MspInit(UART_HandleTypeDef* huart) { GPIO_InitTypeDef GPIO_InitStruct; if(huart->Instance==USART1) { /* USER CODE BEGIN USART1_MspInit 0 */ /* USER CODE END USART1_MspInit 0 */ /* Peripheral clock enable */ __USART1_CLK_ENABLE(); /**USART1...
Cześć, Od kilku dni próbuję uruchomić obsługę pewnego modułu samochodowego, sterowanego poprzez magistralę CAN. Obsługa tego modułu wymaga wysłania pewnego zapytania, a następnie odebrania 4 ramek CAN odpowiedzi modułu - łącznie trzeba odebrać 32 bity danych. Udało mi się uruchomić nadawanie zapytania oraz odbieranie odpowiedzi, jednakże trzecia ramka...
Cześć, mam pytanie jak najlepiej podejść do tematu :) Jak na razie, udało się podłączyć dwa potencjometry na dwóch kanałach ADC przez DMA i na bieżąco odczytywać dane z potencjometrów w programie STMStudio, wykorzystując bibliotekę HAL. przetwarzanie ADC jest ustawione na Scan Conversion Mode, Continous Conversion Mode a DMA ustawione na Circular Mode....
USART3_GPIO->AFR No to dalej niezbyt, bo ustawiłeś AF1 i AF0, a miało być 2x AF7. W podglądzie rejestrów zauważyłem, że dostaję FIFO Interrupt Error Flag Mało istotne. Zignoruj Dodano po 46 Odczytuję LISR - DMA low interrupt status register (DMA_LISR), a flagi kasuje w LIFCR - DMA low interrupt flag clear register (DMA_LIFCR), czyli chyba dobrze,...
Witam, Korzystam z mikrokontrolera STM32F7 i oprogramowania CubeMX. CubeMX wygenerował biblioteki, które korzystają z HALa. Tak się składa, że HAL ma sporo błędów i takowym jest odbiór danych z portu UART. Sporo w internecie uwag dotyczących tego problemu, jednak żadnej sensownej odpowiedzi i wskazówki, która zadziałałaby u mnie. Próbowałem odczytu...
Dzień dobry, Od dłuższego czasu staram się zrobić działające pass-through dla audio - pobranie dźwięku z wejściowego mini-jacka i przeniesienie go na wyjście mini-jack. Na płytce jest kodek WM8994, którego wyjścią są przyłączone do SAI- serial audio interface, mini-jacki z kolei są podłączone pod kodek. Korzystałem z biblioteki dołączonej do płytki...
Kod wygląda tak jak sugerujesz, najpierw właczam wszystko w SPI, potem strumienie. Obsługę przerwań pomijam, tam nic się nie zmieniło, tylko czyszczę flagi i macham pinami testowymi. [syntax=c]//////////////////////////////... // odczytuje pamięć przez DMA // Parametry: nic // Zwraca: kod błędu ////////////////////////////////////////...
Nie używam Twojego startupa. Wszystkie pliki biorę z tego, co wygeneruje CubeMX. Generalnie korzystam z poradnika Szczywronka, stąd takie rozwiązanie. Do tej pory w projekcie miałem tylko pliki nagłówkowe, Startup, skrypt linkera...no i main.c ...Od takiej bazy zaczynam. Tworząc projekt dopisuję pliki c i h. Do tej pory nie potrzebowałem tego, co dzieje...
U mnie funkcja disk_timerproc jest w pliku diskio.c wygląda tak: [syntax=c]/*----------------------------... /* Device Timer Interrupt Procedure (Platform dependent) */ /*--------------------------------------... /* This function must be called in period of 10ms */ void disk_timerproc...
main [syntax=c] #include "stm32f7xx_hal.h" #include "lwip.h" #include "main.h" #include <string.h> #include "tcp_echoserver.h" /* USER CODE BEGIN Includes */ /* USER CODE END Includes */ /* Private variables ----------------------------------------... /* USER CODE BEGIN PV */ /* Private variables ----------------------------------------...
Analizując sygnały na analizatorze problem jest taki że moduł NRF24L01 po wysłaniu komendy //clear pending interrupts coś długo czeka z kolejnym przerwaniem na nóżce IRQ. To problem nie jest w uC tylko w NRF24L01.
Wydawało mi się, że poprawnie skonfigurowałem FreeRTOS, ale ten znowu mnie zaskoczył :) Nie wiem czym Cię zaskoczył bo dokumentacja mówi o tym wyraźnie. Starts the FreeRTOS scheduler running. Typically, before the scheduler has been started, main() (or a function called by main()) will be executing. After the scheduler has been started, only tasks...
Witam W trybie FS możesz mieć mały problem z freeRTOS i USB jeśli chodzi o wysłanie danych z Stm32 do PC. W nim nie masz DMA i żeby wysłać dane musisz albo sprawdzać sam czy pierwsze 64 bajty zostały wysłane i potem wysłać następne (np co 1ms) lub zostawić jak masz zrobione w bibliotece od Stm, czyli oni włączają przerwanie Tx FIFO Empty Interrupt,...
NVIC_ClearPendingIRQ(USB_IRQn) nic nie da w tym przypadku. Należy wykasować flagi w rejestrze USB interrupt status register (USB_ISTR) , ale jeśli to zrobisz samodzielnie funkcja HAL_PCD_IRQHandler(&hpcd_USB_FS) może już nie działać właściwie ponieważ w zależności od stanu tych flag są podejmowane odpowiednie działania. Jak wskazuje sama nazwa tej...
[syntax=c]//============================... // TIM3 Interrupt Handler //======================================... void TIM3_IRQHandler(void){ if(TIM3->SR & TIM_SR_UIF) // if UIF flag is set { TIM3->SR &= ~TIM_SR_UIF; // clear UIF flag } }[/syntax] AND zbyteczny az prosi...
A czy da się to w ogóle zrobić? Za ref. manualem do F3: EXTI3 Nie napisali nic o kilku źródłach jednego przerwania. Pzdr.
Masz działający kod na F0: [syntax=c]#define PWM_FREQ400// Hz #define PWM_STEPS80 #definePWM_CLK SYSCLK_FREQ #definePWM_PRE (PWM_CLK / PWM_FREQ / PWM_STEPS) RCC->AHBENR |= RCC_AHBENR_GPIOCEN | RCC_AHBENR_GPIOAEN; LED_PORT->MODER = GPIO_MODER_AF << (GREEN_LED_BIT << 1) | GPIO_MODER_AF << (BLUE_LED_BIT << 1);// set LED pins...
To jest sekwencja adresów rejestrów i ich zawartości dla STM32F0DISCOVERY, timer3. Nie jest to całkiem to samo, co u Ciebie, ale może Cię zainspiruje. W Każdym razie to działa. [syntax=c]// port setup {&RCC->AHBENR, RCC_AHBENR_GPIOCEN},// GPIOC, GPIOA {&GPIOC->MODER, GPIO_MODER_AF << (GREEN_LED_BIT << 1) | GPIO_MODER_AF <<...
łaa ;] Ofkoz Freddie ma racje, ale zawsze tez mozna tak: Nie ORuje sie rejestrów NVICa typu ISER, ICER, ICPR, ...!! Po to są oddzielne rejestry do set i clear, zeby nie wykonywac na nich RMW!! ISER - Interrupt Set Enable Register ICER - Interrupt Clear Enable Register "Writing 0 has no effect"...
Masz całkowicie źle napisaną obsługę przerwania. Po pierwsze nie kasujesz bitu zgłoszenia przerwania Po drugie nie sprawdzasz od czego dostałeś przerwanie np. STM32F4 ma takie flagi: * (at)arg USART_IT_CTS: CTS change interrupt (not available for UART4 and UART5) * (at)arg USART_IT_LBD: LIN Break detection interrupt * (at)arg USART_IT_TXE: Transmit...
Zmienne globalne zajmują...... Pewnie ram dla led jest rezerwowany w chwili uruchomienia biblioteki przez memalloc. Gdybyś sam pisał obsługę led to użyłbyś tablicy o określonym rozmiarze dzięki czemu wiedziałbyś ile ram zajmuje program. Poszukaj jak wyświetlić ilość wolnej pamięci ram w czasie działania programu. Jakiś freemem jest. Trochę oszuka ale...
To działa: [syntax=c] #define Port_USART3 USART3 #define Port_USART3_CLK RCC_APB1Periph_USART3 #define Port_USART3_TX_PIN GPIO_Pin_10 #define Port_USART3_TX_GPIO_PORT GPIOB #define Port_USART3_TX_GPIO_CLK RCC_AHB1Periph_GPIOB #define Port_USART3_TX_SOURCE GPIO_PinSource10 #define Port_USART3_TX_AF GPIO_AF_USART3 #define Port_USART3_RX_PIN GPIO_Pin_11...
1. Przepraszam, zapomniałem przesłać fragmentu kodu : SysTick_Config(SystemCoreClock / 800); 2. Czy wystarczy ta jedna funkcja? 3. Nie za bardzo wiem o co Ci chodzi, ale otrzymuję taki komunikat: Program received signal SIGINT, Interrupt. UsageFault_Handler () at ../startup/startup_stm32.s:96 96../startup/startup_stm32.s: No such file or directory.
Wszystko ładnie się kompiluje bez żadnych błędów ale nie dostaje pliku wykonywalnego .elf. Co się ładnie kompiluje? Skoro masz Interrupt/Exception caught -... to znaczy, że się nie kompiluje "ładnie".
Z serią STM32F2xx nie miałem jeszcze przyjemności. W prockach STM32F1xx należy w "Interrupt Status Register" (ISTR) skasować bit EP_CTR_TX - Może to w czymś pomoże. Poza tym biblioteki od ST są delikatnie mówiąc... mało wydajne.
Kiedyś miałem identyczny problem z kasowaniem przerwania i rzeczywiście przeniesienie tego na początek handlera pomogło. Z tego co gdzieś udało mi się w necie wyczytać wynika to z pipeliningu Cortexa: http://blog.frankvh.com/2011/11/21/stm32... There is a well-known reason for this. The Cortex-M3 / M4 is a pipelined processor....
Witam, w pliku konfiguracyjnym od systemu mam taką stała: [syntax=c]#define configLIBRARY_MAX_SYSCALL_INTERRUPT_PRIO... Jeżeli wywołam w przerwaniu o priorytecie ustawionym z przedziału 0-4 funkcję xQueueReceiveFromISR, program zawiesza się. Wychodzi na to, że mogę ustawiać priorytety jedynie od 5-15. I może zgadzało by się z komentarzem...
Witam wiem że stary temat ale poradziłeś sobie z nim, ja ma ten sam problem na stm32F2. (Program grzęźnie w funkcji vListInsert ) Problem jest jak używam Can Jak jestem w przerwaniu i robię tak to działa: [syntax=c]xQueueSend( xRxCanData, &m, 0 ); // send data /* Release FIFO0 */ CAN1->RF0R |= CAN_RF0R_RFOM0;[/syntax] Jak dam tak: [syntax=c]portBASE_TYPE...
Czyli co wystarczy że włącze przerwanie i wstawię w mainię funkcje Akurat _w_ main() to raczej średnio Ci się uda (; Funkcje deklarowałem bo gdzieś znalazłem na forum taki komplet deklaracja plus funkcja i myślałem że to jest potrzebne Chodzi o to, że __attribute__ lepiej wygląda jak jest osobna deklaracja [; Ja to robię zwykle tak: [syntax=C]void...
Witaj tadzik85 , może to wynika z tego, że przechodzę z AVR tam włączało się globalnie przerwania i tyle w temacie. Zresztą tak mi się wydaje, jest idea przerwań by działały niezależnie od głównego programu. Jeśli chodzi o Twój kod, nie mam takiego bitu IER dla USARTa mam 14.3.5 Software interrupt event register (EXTI_SWIER1) a w nim bity SWIER1-31...
W CubeMX ustawiam płytkę STM32F0 Discovery. Piny ustawiam jako przerwania. W CubeMx oprócz ustawienia pinu na pinoucie jako GPIO_EXTI... , trzeba wejść w zakładkę Configuration i pod klawiszem GPIO ustawić tryb przerwania tego pinu ("External Interrupt Mode...") oraz zbocze, czy pullup itp. i koniecznie wejść tam w zakładkę NVIC, i postawić tam ptaszka...
no jeżeli ta 6 przy Handler External Interrupt oznacza numer przerwania, to wychodzi, że jest to EXTI0, czyli to o które mi chodziło.. Dodano po 3 W skrypcie linkera jedynie co w sumie zmieniłem, to te rozmiary ram, rom i main_stack_size i wyrzuciłem te sekcje aux_ram i bkp_ram, bo nie znalazłem nic odnośnie tego w datasheecie, chyba że to coś istotnego..
Dobra, Zabrałem się do roboty od początku, pobrałem przykład do STM32F407 ze strony Freeddie'go, w Eclipse wrzuciłem Import -> Existing Projects into Workspace. Eclipse znalazł tam projekt stm32f4_blink_led, super. Zainstalowałem według zaleceń GNU Coreutils. Dwie rzeczy teraz do rozwiązania: 1. Nie widzi stdint.h -> jak mu powiedzieć, gdzie to siedzi?...
Sprawdź, czy w module startup masz w ogóle w tablicy wyjątków nazwę procedury obsługi tego przerwania. Kiedy ostatni raz bawiłem się AC6, generował puste tablice wyjątków. Nie ma tam nic :( tylko to: g_pfnVectors: .word_estack .wordReset_Handler .wordNMI_Handler .wordHardFault_Handler .wordMemManage_Handler .wordBusFault_Handler .wordUsageFault_Handler...
Dzięki freedi miałeś racje. Patrzyłem na kolejność przerwań w tabeli f0 ale nie na adresy. Aby zapełnić luki i poprzesuwać adresy dodałem brakujące reserved handler Dodano po 11 Teraz tylko muszę rozwiązać skąd mi przerwań multum nadchodzi i w nierównych odstępach od timera. Bo pwm wyprowadzone jest na jedną diodę a przerwanie zmienia stan innej diody....
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....
Niedawno stoczyliśmy z Freddiem potyczkę, w wyniku której wyszło, że w niektórych Cortexach STM nie jest włączone domyślnie wyrównanie stosu przy wyjątkach, i z tego powodu procedury obsługi przerwań powinny być na nich deklarowane z atrybutem interrupt. Nie wiem, czy dotyczy to również M4F. Co prawda w takim przypadku problem byłby przy wywołaniu innej...
Ja zwykle w kwestii przerwań robię tak, że funkcja przerwania jest ustawiona jako friend klasy, a dzięki temu może ona odwoływać się do funkcji prywatnych. Pozostaje problem, że gdzieś trzeba tworzyć trzymać odnośnik do obiektu (można to zrobić w konstruktorze lub w jakiejś funkcji typu initialize() czy open() - trzeba sobie gdzieś na potrzeby tego...
Niestety te przerwanie nie chce mi zadziałać, PWM jakoś działa ale chciałbym poznać na 100% jego częstotliwość. Kod wygląda tak: [syntax=c] // PWM constants #define PWM_FREQ1000// Hz #define PWM_STEPS400 #definePWM_CLK 168000000 #definePWM_PRE (PWM_CLK / PWM_FREQ / PWM_STEPS) #define TIM_CCMR1_OC1M_PWM1 (TIM_CCMR1_OC1M_1 | TIM_CCMR1_OC1M_2)// OC1M[2:0]...
Dziękuję. Faktycznie nie wiem czemu to przeoczyłem, że można po prostu zobaczyć co w którym rejestrze się ustawia. Jednak dalej nie potrafię odmierzyć 1 sekundy. Dioda mruga za szybko. Kod do ustawienia PLL jest z Twojego przykładu. Nie napisałem, że jest to płytka STM32F4 Discovery Board. Z tej funkcji także odczytałem dzielniki dla APB1, APB2 i AHB....
Jeśli chodzi o żonglowanie pinem, to jak rozumiem problemem okazała się pamięć programu - spowalnia całość. Jeśli chodzi o filtr, to zapraszam do oryginału - tam jest szerzej opisany ten "pomiar" wraz z komentarzem - ja tutaj tylko powierzchownie opisałem temat Nie oczekuję od Ciebie odpowiedzi, wiem że to jest tylko tłumaczenie. Testy na przykładzie...
A to co? LPC_SYSCON->PDRUNCFG &= ~80; Poprawiłem na 0x80, faktycznie w kursie jest [syntax=c] #define PDRUNCFG_SYSPLL_PD 0x00000080 LPC_SYSCON->PDRUNCFG &= ~PDRUNCFG_SYSPLL_PD; [/syntax] (at)BlueDraco: Ponawiam pytanie: Czy w tym numerze Elektronika Praktyczna 2014/4 "32 bity jak najprościej. STM32F0 - nieblokująca obsługa wyświetlacza...
Udało się, po przeniesieniu inicjalizacji bufora do funkcji zadziałało. Niestety po zmianie idei bufora, nie chce mi całkiem działać wyświetlanie obrazu na LCD. Całkiem znaczy, że pojawiły się czerwone pionowe paski o grubości około piksela na całym obrazie. Obraz przesyłam przez DMA z tego bufora do LCD(SSD1289). LCD podpięty także przez FMC. Czy jest...
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 //--------------------------------------...
FEIFx: Stream x FIFO error interrupt flag (x=3..0) This bit is set by hardware. It is cleared by software writing 1 to the corresponding bit in the DMA_LIFCR register. 0: No FIFO Error event on stream x 1: A FIFO Error event occurred on stream x
Efekt jak najbardziej spodziewany ;) Jeśli ustawiasz RDP na level 1 lub 2, to debuger przestaje działać. Level 1: read protection: In debug mode (with SWD) or when code is running from boot RAM or boot loader, the main Flash memory and the backup registers (RTC_BKPxR in the RTC) are totally inaccessible. In these modes, even a simple read access generates...
Witam, przejrzałem na forum podobne tematy, ale mimo wszystko nie umiem sobie poradzić z uruchomieniem zadania mającego na celu miganie diodą. FreeRTOSConfig.h - zapożyczony z przykładu z archiwum z FreeRTOS [syntax=c]#ifdef __ICCARM__ #include <stdint.h> extern uint32_t SystemCoreClock; #endif #define configUSE_PREEMPTION 1 #define configUSE_IDLE_HOOK...
idzie w krzaki przy sprawdzeniu tego warunku [syntax=c]if (LCD_GetSwapXY()) { LCD_SetSizeEx (0, YSIZE_PHYS, XSIZE_PHYS); LCD_SetVSizeEx(0, YSIZE_PHYS * NUM_VSCREENS, XSIZE_PHYS); } else { LCD_SetSizeEx (0, XSIZE_PHYS, YSIZE_PHYS); LCD_SetVSizeEx(0, XSIZE_PHYS, YSIZE_PHYS * NUM_VSCREENS); }[/syntax] w debug natomiast mam cos takiego GDB Hardware Debugger...
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...
Witam, chciałbym przesyłać dane przez USART za pomocą DMA (STM32F4). DMA jest aktywowane w przerwaniu od TIM2 w odstępach co 100 ms. Program wykonuje się, natomiast dane nie są przesyłane. Wiem, że na pewno przerwanie od TIM2 działa poprawnie. Jeśli ktoś wie gdzie może być błąd/braki w konfiguracji proszę o odpowiedź. Z góry dzięki. Poniżej kod: [syntax=c]...
Mam problem z inicjalizacją UARTA. Otóż kod działa na portach PA9,PA10 lub PC4,PC5. Jednak gdy zmieniam na PB6, PB7 komp nie otrzymuje danych wysyłanych przez płytkę. Może źle to robię, ale według specyfikacji to na te porty można wyprowadzić USART1, więc nie wiem o co chodzi, a jeszcze raczkuje w temacie STM32. [syntax=c]#ifndef _USART_C_ #define _USART_C_...
Witam ponownie :) Co prawda nie udało mi się uruchomić komunikacji przez SPI z rejestrem przesuwnym, ale rozwiązałem to programowo :) Mam jednak jeszcze jedno pytanie. Chciałbym zrobić "beep generator". Chodzi mi o to, aby na wyjściu słuchawkowym pojawił się wygenerowany dźwięk. Korzystam z gotowego kodeka dla STM32F4 Discovery. Konfiguracja kodeka...
To działa na STM32F0DISCOVERY - struktura zawiera adresy rejestrów i ich wartości Dopisz tylko obsługę przerwania timera... [syntax=c]// defs for STM32F05x chips #define GPIO_MODER_OUT1 #define GPIO_MODER_AF2 #define TIM_CCMR2_OC3M_PWM10x0060// OC3M[2:0] - PWM mode 1 #define TIM_CCMR2_OC4M_PWM10x6000// OC4M[2:0] - PWM mode 1 //======================================...
Nie chcę rozpoczynać niekończącej się dyskusji o wyższości rejestrów nad wysokopoziomowymi bibliotekami. Jeśli chcesz użyć LL i nie możesz znaleźć rozwiązania problemu to moim zdaniem albo powinieneś wrócić do rejestrów albo użyć HALa który trudną pracę robi za Ciebie. A dodatkowo studiując zawartość jego funkcji można się nauczyć jak to zrobić na niższym...
Można to gdzieś kupić jako kit? Byłbym bardzo zainteresowany. ;-) Nie chodzi o same definicje a o użycie. Użycie jest o tyle jasne, że wygląda jak wpisywanie wartości do zmiennej. Twoje użycie jest na tyle dziwne, że wygląda jakbyśmy wpisywali wartość do wywołania funkcji, co jest trochę nienaturalne. Jeśli chcesz żeby użytkownik za każdym wywołaniem...
Witam, mam problem z DMA w STM32F217 w którym przerwanie niestety nie chce ruszyć. Taktowanie DMA sprawdzone, flagi błędów przerwania od DMA są ok(żadna błędna się nie ustawia, jedynie ustawiają się flagi końca transmisji danych). Otóż zmienne VarA i VarB się przepisują czyli DMA działa dobrze, ale przerwanie nie chce wskoczyć do obsługi przerwania....
No są takie wyjątki dostępne w rejestrze FPSCR Floating-point exceptions The FP extension records the following floating-point exceptions in the FPSCR cumulative bits, see Floating-point Status and Control Register, FPSCR on page A2-56: IOC Invalid Operation. The bit is set to 1 if the result of an operation has no mathematical value or cannot be represented....
Używam przerwań. Funkcja read_ms() z nich korzysta. Oto kod wykorzystujący przerwania: scaledy na scaledx i od tego momentu zaczęły się te problemy. Nawet po powrocie do scaledy program ląduje w DH.
Witam Piszę program, który będzie musiał się synchronizować z siecią 230V. konfiguracja Timera: [syntax=c] TIM8->PSC = 168-1; TIM8->CR1 |= TIM_CR1_ARPE; TIM8->ARR = rotor_period; //20000-1+5000; TIM8->DIER |= TIM_DIER_UIE | TIM_DIER_CC1IE; TIM8->EGR |= TIM_EGR_UG; // update generate TIM8->CCMR1 = 1; TIM8->CCER = TIM_CCER_CC1E; TIM8->CR1...
Witam, Próbuje skomunikować ze sobą STM32F4 z Arduino UNO po UARTcie. Skonfigurowałem UART1 i płytka komunikowała się bez problemu z Arduino. Lecz do mojego projektu potrzebna jest komunikacja przez UART2 (piny PA2-TX i PA3-RX), po skonfigurowaniu UART2 i podłączeniu do do Arduino nie mogę odczytać żadnych danych. Jeżeli podłącze UART1 z UART2 na płytce...
Cześć, Próbuję się skomunikować pomiędzy RPi i stm32f4. Na RPi korzystam z biblioteki bcm2835 a na stm32f4 z HAL. Być może nie do końca rozumiem zasadę działania SPI i sta te problemy. RPi jest masterem i co 1000ms wysyła dane w postaci tablicy o rozmiarze równym 4 elementy. Te dane są w poprawny sposób odbierane na stm32f4. Na stm32f4 korzystam z DMA,...
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...
Witam, Posiadam płytkę DISCOVERY z STM32F4 i próbuję uruchomić USB w trybie device. Napisałem prosty program w C# do wysyłania danych i wygląda to tak, że mogę wysłać jedynie 72 paczki danych. Steruję zapalaniem diod na płytce za pomocą strzałek na klawiaturze po 72 kliknięciu transmisja się zawiesza. Ma ktoś pomysł na co powiniennem zwrócić uwagę?...
Z drugiej strony najprzyjemniejszy OS byłby taki, ktorego uzywa się równie łatwo co QThread'ów QThread to przecież lekka abstrakcja nad POSIX, zapewne bardzo podobna do std::thread. Do zalet trzymania się standardu łatwo się przekonać - wystarczy np zauważyć, że mając na mikrokontrolerze pthread i runtime POSIXowy można na nim z powodzeniem uruchomić...
Tak, tylko ta linia nie wnosi nic do problemu. Wróciłem do starej posklejanej wersji: Dodano po 5 Nerwy mnie już biorą... powyższy kod... po kolejnych próbach grzmoci się totalnie - inaczej tego ując nie moge (przepraszam). Zawiesza się od razu po załączeniu diody LED, USB wysiada przy BR = 9600 przy okazji sypiąc mi totalnie terminal...
Witam Posiadam procesor STM32F070F6, po wprowadzeniu go w stan Standby pobiera 3-4uA jest ok po za tym, że potrzebuję go wybudzać i zbierać dane do pamięci ram więc ten tryb nie odpowiada mi bo RAM jest po każdym wybudzeniu kasowana. Przeglądając dokumentację znalazłem tryb który nijako trochę mi pasuję STOP mode, procesor w tym stanie może być wybudzony...
Co może być przyczyną tego, że zamiast wysyłanego "hello" odbieram w termianlu "hhhhheeeeeellllllllllllllllllllloooooo"... Dodam, że przy wyłączonym DMA nic takiego nie ma miejsca. http://obrazki.elektroda.pl/2733352900_1...
Witam Jak w temacie próbuję uruchomić zegar LSE dla zegara RTC na moim procku STM32F3 discovery, ale nie udaje mi się ta czynność. W Reference manualu znalazłem taką adnotację: LSE clock The LSE crystal is a 32.768 kHz Low Speed External crystal or ceramic resonator. It has the advantage of providing a low-power but highly accurate clock source to the...
Witam, mam problem z debugowaniem w Eclipse (Helios). Męczę się już kilka dni. Zainstalowałem również Atollic Studio i tam korzystając z przykładów ST wszystko przebiega dobrze. Jednakże chcę pracować ze środowiskiem open source, poza tym nie umiem uruchomić przykładu Freddiego w innym środowisku, a chcę zacząć poznawać ten procesor bez użycia bibliotek...
Witam, chciał bym zrobić prosty filtr cyfrowy oparty na stm32F4 Discovery, częstotliwość próbkowania ustalana była by za pomocą jednego z timerów w tym przypadku TIM1 (oczywiście może być inny). Niestety mam problem z ustawieniem wyzwalania przetwornika ADC1 przy pomocy timera TIM1. Poniżej przesyłam kod programu: [syntax=c] void NVIC_initt(void); void...
SPL - Standard Peripherial Library od ST, producenta uC z serii STM32Fxxx to zestaw funkcji, które w założeniu miały ułatwić pisanie programów. Założenia były bardzo dobre, ale wykonanie, a chyba jeszcze bardziej sposób korzystania z funkcji dostępnych w pakiecie sprawia, że kod jest nieefektywny, nie daje pełnej kontroli nad układami i wcale nie jest...
Hmm moglibyście spojrzeć. Napisałem coś takiego, jednak na LCD są tylko jakiej pasy. Obrazu brak. Stworzyłem bufor 2kB, i dwa wskaźniki na niego (na jego początek i środek). DMA ustawione na circular i zapisuje ciągle ten bufor. Dodatkowo zgłasza przerwania po przesłaniu połowy bufora i całego. I na podstawie tych przerwań próbuję w pętli głównej na...
Chyba zlokalizowałem źródło problemu. Niestety nie wiem jak je usunąć. Chodzi o funkcje zwracające czas w mikrosekundach i milisekundach - read_ms() oraz read_us(). Po wysłaniu poprzez USART do PC wartość którą wpisuję jako argument do funkcji kalman_calculate tj. (read_ms()-timer) pokazały mi się na przemian 9882us, 1003us i -455us. Powinno być coś...
niemniej jednak cały taki proces zajmuje kilkadziesiąt-kilkaset cykli zegara. A dokładniej, to jest to ok. 1000 cykli, czyli 10x więcej (15us(at)72MHz) http://stackoverflow.com/a/24906003/4676... Ale żeś się uparł... Normalnie zaraz oscyloskop chyba wyciągnę i Ci zmierzę ile trwa zmiana kontekstu w moim systemie (; Tak czy siak FreeRTOS jest ciekawym...
Witam, trochę odkopuję temat, ale mam problem z I2C, a też nie chcę korzystać z bibliotek STMa. Próbuję uruchomić komunikację między czujnikiem, ale niestety rejestr SR2 po I2C_init ma wartość 0x02, czyli flaga BUSY jest ustawiona. Jak debuguje to widziałem, że ustawia się on od razu, po komendzie: [syntax=c]// enable peripheral clock for I2C1 RCC->APB1ENR...
Próbuje ostatnio samemu zainicjalizować USB. Problem w tym, że niby ustawienia rejestrów są zgodne z dokumentacją, PCet wysyła paczkę SETUP (wnioskuję to na podstawie rejestru OTG_FS_GRXSTS) i w tym momencie mam problem, albo nie potrafię odczytać tego co dostaję, albo dostaję jakieś śmieci. [syntax=c]RCC_AHB1ENR_GPIOAEN_BB = SET; GPIO_Port_Cfg(GPIOA,...
Witam,m am nadzieję, że znajdę jakieś rozwiązanie mojego problemu. Mianowicie stosuję biblioteki HAL, cubeMX i STM Studio (próbowałem ogarniać rejestry, ale chciałbym sobie to zostawić na przyszłość). Dokonuję pomiaru na dwóch kanałach ADC i przez DMA zapisuję w dwóch tablicach 256 elementów. Gdy zapisuję dane do tabeli z pojedynczego kanału wszystko...
BlueDraco Mam wersję Keila 4.5 i tutaj nie ma jeszcze tych podpowiedzi kontekstowych (gdy się naciśnie CTRL + SPACJA). Mam na płycie z EP wersję 4.72a. Aby dobrze działał to odinstalować wersje 4.5 i instalować nową, czy odrazu. Jak jest lepiej, żeby poźniej nie było problemów z działaniem? http://obrazki.elektroda.pl/4851810600_1...
oto kod programu [syntax=c]/* Includes */ #include <stddef.h> #include "stm32f0xx_rcc.h" #include "stm32f0xx_gpio.h" #include "lcd_hd44780_lib.h" /* Private typedef */ /* Private define */ /* STM32F0_DISCOVERY board definitions */ #define LED_PORT GPIOC #define LED1 GPIO_Pin_9 #define LED2 GPIO_Pin_8 #define KEY_PORT GPIOA #define KEY GPIO_Pin_0...
Hej, Chciałem uaktualnić swój stary projekt, w którym używałem Atmegi162. Układ ma łączyć się z zewnętrznym urządzeniem za pomocą magistrali UART, o parametrach 8b danych, 1b stopu, parzystość "even". Obecnie próbuję zrobić te same operacje wykorzystując płytkę z mikrokontrolerem ARM - STM32F407Z (na płytce CORE407). Po paru minutach udało mi się skonfigurować...
Witam, zastanawiam się czy bibliotekę do obsługi peryferii można oprzeć na bitbandingu. Osobiście nie widzę sposobu, żeby ujednolicić pisanie takich funkcji, ale może ktoś wie jak można to wykorzystać lub czy jest to rzeczywiście mało sensowne. Przykładowo do obsługi EXTI wykorzystałem bitbanding w następujący sposób: [syntax=c] typedef struct { __IO...
Witam, skonfigurowałem ADC które wyzwalane jest timerem 2(to działa dobrze). DMA wypełnia bufor 70 próbkami jednak: - większość probek jest ok, ale np gdy na wejście podam sinusa...to np co 15(w praktyce jest to losowa próbka) jest bitową reprezentacja jedynek obok siebie example: ..2345, 2345, 3f, 2344, 2421... Wydaje mi się że wina stoi po stronie...
(at)Freddie no fakt, trzeba by często w to trafiać. Sprawdzę to jeszcze u siebie jak wrócę z roboty, teraz nie mam STMa pod ręką. A mimo wszystko nalegam, aby Autor pokazał kod asemblerowy programu. Dodano po 2 Data race o którym piszesz faktycznie tam jest - wczytałem się wreszcie porządnie if((zapalona) && (TIM9->CNT > 5000) ) pomaga...
Witam, mam problem z uruchomieniem przykładu USB MSC device od ST. Przerobiłem go, aby zamiast karty SD wykorzystać dysk twardy na ATA. Funkcje obsługi dysku są na 100% dobre. Problem jest raczej w USB. Po prostu komputer wykrywa nieznane lub uszkodzone urządzenie. Za bardzo nawet nie wiem, jak się zabrać za szukanie błędów. Przykład USB Host mi działa....
Ok, doszukałem się, jest to TIMx Update Interrupt. Tyle, że Update Event nie jest generowany przy każdej zmianie CNT w trybie Encoder. Czyli jeśli dobrze rozumiem, np. Channel 5, Stream 4 może być wyzwolony poprzez TIM3_CH1 lub/oraz (?) TIM3_TRIG. TIM3_CH1 oznacza, że np. Output Compare zostanie wyzwolony DMA. Może mógłbym skonfigurować np. aby zbocze...
Dodam, że kod jest wyciągnięty z projektu który działał dobrze więc dlatego z niego korzystam a sam lepszego nie potrafię napisać. Zaktualizowałem trochę kod żeby debugować: [syntax=c]#include "main.h" #define TIM_Period_init 40959 #define TRIGGER1_ON GPIO_SetBits(GPIOC,GPIO_Pin_0); #define TRIGGER1_OFF GPIO_ResetBits(GPIOC,GPIO_Pin_0); RCC_ClocksTypeDef...
Hej. Pacjent to STM32F401VCT6 taktowany domyślnym zegarem wewnętrznym 16MHz. Uruchomiłem sensor HC-SR04 wykorzystując TIM2 do zliczania długości impulsu ECHO wykorzystując tryb capture oraz DMA. Do rejestru TIM2->PSC ładuje 15, ponieważ chcę aby wartość CNT inkrementowała się co 1us. Kod źródłowy poniżej: [syntax=c] #include "stm32f4xx.h" static...
Witam. Rozpocząłem przygodę z programowaniem układów STM32F4. Nabyłem płytkę XNUCLEO-F401RE (kompatybilną z NUCLEO-F401RE) oraz skorzystałem z kursu który znajduje się pod tym linkiem [url=http://forbot.pl/blog/artykuly/prog...
Witam, Próbuje zaimplementować hosta na stm32f407, który będzie obsługiwał klawiatury. Bazuje na przykładzie ze strony: [url=http://stm32f4-discovery.com/2014/0... Przykład jest oparty na: STM32_USB-Host-Device_Lib_V2.1 Mam dwa problemy: 1. Nie działa wysyłanie raportów z hosta do klawiatury...
Witam. Na początku muszę zaznaczyć, że jestem raczej początkującym w temacie mikrokontrolerów i ogólnie elektroniki. Kupiłem sobie stm32f0 discovery oraz termometr ds18b20, podłączyłem wszystko jak trzeba - pin 1-wire do pc7, oraz piny zasilania odpowiednio do 3v i GND na płytce. Korzystam z IAR Embedded Workbench EWARM. Termometr działa, bo procedura...
Witam, mam pewien problem z komunikacją pomiędzy STM32F4 a modułem nRF24L01. Kłopot polega na tym, że dane przez SPI przesyłane są "niedokładnie", tzn. pomijany jest ostatni bit w każdym transmitowanym bajcie (najmniej znaczący). Sprawdzałem to poprzez odczytywanie rejestrów z nRF24L01 i przesyłanie ich poprzez UART na terminal w komputerze. Zawsze,...
inicjalizacja /*--------------------------------------... * L3GD20 SPI *---------------------------------------... #define L3GD20 GPIO_BSRR_BS_1 #define L3GD20_SS_ENABLEGPIOA-> BSRRH |= (L3GD20) //Reset #define L3GD20_SS_DISABLEGPIOA-> BSRRL |= (L3GD20) //Set...
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...
Witam, Mam żyroskop L3GD20 podłączony pod SPI5 w STM32F429. Problem jaki napotkałem to przesunięcie odpowiedzi o jeden rozkaz. Pierwszy raz z czymś takim się spotykam, polega to na tym, że jeśli odczytuję rejestr np. 0x20, potem 0x21 i 0x22 to w miejscu 0x21 dostaje wartość z 0x20, w miejscu 0x22 dostaje 0x21 zaś jeśli jeszcze raz odczytam 0x22 to już...
Edit: DMA nie działało bowłączałem DMA2 a nie DMA1. Napiszę jak dalej pójdzie :] Cześć, mam pewne problemy z I2C, bazowałem na zmodyfikowanym kodzie od ST (jak mnie pamięć nie myli) najpierw używałem samych przerwań na najwyższym priorytecie jak ST przykazało, niestety od czasu do czasu zdarzało się że RTOS wyłączał wszystkie przerwania i przy odbiorze...
Mam pytanie odnośnie przykładu z STM32_USB-Host-Device_Lib_V2.1.0. Otóż program ładnie działa (pętla główna, w której jest między innymi miganie diodą co 1s dla testu) do czasu podłączenia płytki do portu USB komputera. Wtedy wykrywane jest poprawnie urządzenie ttyACM0, ale zatrzymuje się pętla główna (diody przestają migać) - czyli zakładam, że urządzenie...
Witam Używam płytki STM32F4 Discovery. Muszę odczytać sporą ilość danych, więc UART wydaje się jedynym rozsądnym rozwiązaniem. Poniżej kod, którego używam (sugerowałem się kodami z różnych stron). [syntax=c]#include "stm32f4xx.h" #include "stm32f4_discovery.h" #include "misc.h" // I recommend you have a look at these in the ST firmware folder #include...
Witam, otóż mam problem, a mianowicie chciałbym obsłużyć przerwanie z pinu ALRT z przetwornika ADS1115 w celu wyeliminowania opóźnienia które teraz stosuje przy odczycie każdego z kanału (delay(20)) dokumentacja: https://cdn-shop.adafruit.com/datasheets... z góry dziękuję za pomoc mój dotychczasowy kod: [syntax=c] /* Includes ----------------------------------------...
stm32f7 usart stm32f7 programować stm32f7 programowanie
lodówka wyłącza skoda roomster bezpieczniki studnia chłonna
bojler elektryczny zwroty palety
Wózek widłowy nie czyta karty dostępu - przyczyny i rozwiązania Jak tłumić szumy w radiowym paśmie UKF?