No tak ma być, przy prawidłowej inicjalizacji systemu nie powrotu z tej funkcji. vTaskStartScheduler() will only return if there is insufficient RTOS heap available to create the idle or timer daemon tasks.
Całkiem źle programujesz timer. Kolejność: PSC, ARR, SMCR CCMRx CCER DIER CR1 Główny błąd - to zaczynanie od CR1 - włączasz timer przed zaprogramowaniem go. Jeszcze taki drobiazg: TIM1->SR = (uint16_t) ~TIM_SR_UIF; - wyrzuć (uint16_t)
Bardziej chodzi o to, ze timer może zostać ustawiony jako trigger transferów dma (nie chodzi tu o przerwania.). Samo GPIO nie potrafi "poprosic" DMA o transfer.
https://obrazki.elektroda.pl/9462291700_... Chciałbym zaprezentować rozwinięcie eksperymentalnego odbiornika SDR, jaki opisałem ostatnio: https://obrazki.elektroda.pl/6947080100_... https://obrazki.elektroda.pl/7046555300_... Najbardziej w tym momencie interesującym fragmentem płyty jest głowica: https://obrazki.elektroda.pl/9911930900_...
Ewentualnie odpal timer z przerwaniem od przepełnienia i tam w przerwaniu wsadź zmienną która będzie zerowana w momencie naciśnięcia "start pomiar" i zwiększana co powiedzmy 1ms przez przerwanie (nie wiem jaką chcesz dokładność, możesz dać np. 0,1ms i masz większą precyzje). Potem jak naciśniesz "stop pomiar" to timer przestanie zwiększać tą zmienną...
Przeca tu jeden timer styknie. Licznik 32 bity, wywoływany np. co 100ms, od razu sprawdzacie w nim klawisz i robicie debouncing, a jak doliczy to odp. wartości to zapala diodkę, włącza syrenkę czy co tam innego.
Witam, na wstępie zaznaczam, że jestem świeży w temacie ARM. Studiuję właśnie DS i tak się przymierzam do opanowania timerów. W związku z tym ma takie pytanie. Dajmy na to T1 i T3, T1 podłączony jest to APB2 które ma maks 84MHz a T3 do APB1 - maks 42MHz. Teraz jeśli ustawię APB1_Presc na 2 a APB2_Presc na 4 to i tak obydwa timery będą taktowane z f=84MHz...
GPIOC skonfigurowane i sprawdzone, timer również generuje pwm.
Na początek: // TIM1 -> GPIOD14/D11, do obliczen brac 168MHz, 500Hz, 2ms mam 427Hz, 2.34ms ! TIM1 -> PSC |= 5; TIM1 -> ARR |= 55999; Co tu robi suma logiczna? Czyżbyś chciał ustawić niektóre bity rejestru preskalera i okresu, nie ruszając pozostałych? Co taki zapis ma na celu? Dalej to samo przy zapisach rejestrów sterujących. Po co? Ustaw bit ARPE...
Powiem szczerze metoda sprawdzania niesamowita. Czytać rejestr w kólko nawet jak tam się nic zrobiło. Ustaw przerwanie ADC i tam breakpoint - to będziesz wiedział czy jakaś konwersja przeszła Do tego wiele dziwnych rzeczy i błedów. proponuję zegar ustawić przy odpalaniu HAL-em unikniesz głupich błedów. Później możesz sobie zrobić na rejestrach wiedząc,...
Skoro upierasz się na przerwanie od przycisku, to w obsłudze przerwaniu musisz zablokować to przerwanie i uruchomić timer, od którego przerwanie odblokuje przerwanie przycisku - i trzeba to zrobić dla każdego przycisku oddzielnie. Moim zdaniem zawsze łatwiej wrzucić do obsługi przerwania timera dwie linijki kodu, które załatwią obsługę przycisku, niż...
Witam Powiem szerze że o ile zasadę sterownia jestem w stanie zrozumieć i nawet rozumiem:) o tyle problem stanowi dla mnie przeniesienie to na praktykę. Generalnie chodzi o to jak zmusić te sześć kanałów PWM by działały w taki sposób jak mają. Jak zsynchronizować ich działanie. Można by połączyć kaskadowo dwa timery ale to chyba nie o to chodzi, poza...
No i tak działa - sam RTOS Dodano po 35 następnie dodałem w mainie wywołanie: ETH_BSP_Config(); System działa - wykonuje się zadanie Task_Main, potem dodaje wywołanie: LwIP_Init(); i powtórka zadanie Task_Main nie wykonuje się. Z programem ląduję w : void HardFault_Handler(void) { /* Go to infinite loop when Hard Fault exception occurs */ while (1)...
(at)sulfur Dopiero teraz znalazłem czas żeby dalej zająć się CANem. Ustawiłem tak jak mówiłeś i dalej nic. Nie mam pomysłu co sprawdzić . Tak jak wcześniej wspomniałem mam przejściówkę USB/CAN za pomocą której próbuję przetestować CANa. Program do obsługi tej przejściówki w ustawieniach transmisji wygląda następująco : http://obrazki.elektroda.pl/8802608800_1...
Hej, chciałem was poprosić o pomoc w postawieniu FreeRTOS na STM32F407 VG discovery Board. Przeczytałem kilkakrotnie tutorial na stronie http://imagizer.imageshack.us/v2/320x240... Następnie dodaje pliki RTOS'a zgodnie z instrukcją http://imagizer.imageshack.us/v2/320x240... W kolejnym kroku dodaje FreeRTOSConfig.h do katalogu...
W swoich programach na stm32f407 po zapisaniu preskalera w timerze wpisuję 1 do EGR, żeby wywołać Update generation. PSC contains the value to be loaded in the active prescaler register at each update event.
sprawdź w dokumentacji czy aby po zresetowaniu flagi przerwania timera nie trzeba odczekać kilka instrukcji (2-3 NOP'y). Jeżeli tak jest, to w przeciwnym wypadku zaraz po wyjściu przerwanie otworzy się drugi raz i w tej sposób dioda mrugnie tak że tego nie zauważysz. Możesz to sprawdzić tak że diodę ustawisz na zapłoną (a nie stan przeciwny), to po...
Trochę dziwna podziałka 400. Tak z ciekawości do czego. Chciałem przetestować tryb encoder mode w timerze mikrokontrolera STM32F407 :D Jakby kogoś interesowała płytka z STM32F407VET oczywiście bez programatora. https://www.aliexpress.com/store/product...
Twoje problemy rozwiązałby jakiś TMS320 z serii C2000. Ale to tylko moje dywagacje. Jeśli chodzi o STM32F4 to musisz przemyśleć czy rzeczywiście 4 MHz jest niezbędne dla ADC. Kiedyś bawiłem się timerami w Keil'u więc kod wstępny na pewno Ci się przyda (kanały timera3 działają na GPIO->C6-C9): odznacz NVIC_EnableIRQ !!! ): [syntax=c]void TIM3_IRQHandler(void)...
Jak się bawisz Keilem, to prześledź sobie działanie programu w symulatorze jak nie masz debuggera. Zobacz też czy masz zdefiniowane przerwanie od systick i co ono robi, jak nie grzebałeś nic w pliku konfiguracyjnym, to z automatu on jest włączany na wartości domyślne.
Zewnętrzne przerwania nadają się - przykładowo - do obsługi pinów sygnalizacyjnych z innych układów scalonych, a nie do zabaw z przyciskami. To po prostu nigdy nie zadziała... Zrób sobie przysługę i odczytuj po prostu wszystkie piny w okresowym przerwaniu od timera (co 20-50ms, albo i rzadziej) i będzie wtedy działało perfekcyjnie.
Nie ma najmniejszego problemu, żebyś nie ruszała niczego w ogólnej strukturze projektu, tylko po prostu w main() zmieniła inicjalizację i obsługę tego właśnie timera na własny kod. Jak masz debugger to zobacz co dokładnie jest we wszystkich rejestrach tego timera.
Tak przy okazji . Gdybym miał projekt gdzie uC maiłby bardzo dużo do liczenia, i miałby do obsługi sporo przycisków to z punktu widzenia wykorzystania zasobów która metoda jest lepsza: przerwanie tak jak w tym przypadku czy za pomocą timera? Oczywiście że timer.
(at)Freddie Chopin podał mi bibliotekę stm32f407xx.h, ale u mnie w projekcie wszystkie są opisane w taki sposób: stm32f4xx.h. (brak 07). Nagłówek stm32f4xx.h "pod maską" tak naprawdę dołącza odpowiedni dla danego układu nagłówek - np. stm32f407xx.h, zależnie od tego co jest zdefiniowane globalnie w projekcie: #if defined(STM32F405xx) #include...
Cześć, Mam urządzenie na STM32F407VGT6, zewnętrzny kwarc. Ostatnio wpadły mi w ręce uc z Chin, z Aliexpress (tylko tam były). Wyglądały na normalne. Po wlutowaniu kliku okazało się, że są one zablokowane, trzeba było wykasować żeby móc zaprogramować. Programowanie ok, odczyt sygnatur również. Co się okazało - niektóre urządzenia zrywało CANa, ale nie...
Zdefiniowane w krzemie. To jest watchdog nie timer. Robi dokładnie to do czego jest przeznaczony. Jedyne co możesz zrobić to zweryfikować źródło resetu.
No więc jeśli popatrzysz na specyfikację to ja z PWM generuje: CL1 - synchronizacja linii w poziomie CL2 - data shift M - zmienia sygnał sterownika lcd na ac Pozostałe sygnały inaczaj. Np. do FLM używam timera i interruptu. W ten sposób wszystkie sygnały są odopwiedniej częstotliwości jak sprawdziłem na oscyloskopie. Niestety jedyne co widzę na wyświetlaczu...
Po pierwsze wstaw kod tak jak jest napisane w istrukcji do forum. po drugie - tam nie ma (albo ja nie znalazłem) : 1. Właczenia zegara UARTa ani timera 2. Ustawienia AF pinów ( o ile te piny są do użycią przez UART. Jezeli nie to brak wogóle ich ustaiwnia).
https://obrazki.elektroda.pl/8115074100_... W związku z urlopem postanowiłem opisać wykonaną w ostatnim czasie konstrukcję. W zawodzie nauczyciela akademickiego jest to 36 dni roboczych plus w moim przypadku 26 dni zaległych z zeszłego roku. Jest to więc trochę czasu - za dużo. Wszystko zaczęło się od znalezienia tunera DVB-T Opticam...
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...
Kodu więcej - ale co się bardziej opłaca ;] Zmarnować kilkadziesiąt cykli co kilkadziesiąt ms, czy kilkanaście cykli co 100us (dla 115200)? Kazde wejscie w ISRa to 12 cykli. Jesli 2 UARTy ładują znak co 100us, to srednio co 50us masz przerwanie. W kazdej sekundzie na samo wejscie do ISRów idzie 240k cykli... + (szacuję) 10 cykli kodu /co znak/ *20k...
Witam, Trochę potentegowałem w głowie i schematy okazały się banalnie proste. Interfejs do OSD z 8-ma kolorami + transparent z możliwością załączania własnej synchronizacji zaprojektowany (PCB też). Temat uważam za zamknięty. Z ostatniej chwili ! OSD prawie działa ! Będzie jeszcze kilka drobnych poprawek w interfejsie oraz dostosowanie bibliotek graficznych...
Jednym z układów jest mikrokontroler STM32F407VGT6, który pełni rolę centralnego kontrolera lotu (Flight Control Unit – FCU). Podstawowe dane techniczne Rdzeń i wydajność CPU: ARM Cortex-M4F (z FPU – jednostką zmiennoprzecinkową) Częstotliwość: do 168 MHz DMIPS: ok. 210 DMIPS DSP: tak, rozbudowane instrukcje DSP Pamięć Flash: 1 MB SRAM: 192 KB (112...
Wracając do tematu, czyli STM32F4DISCOVERY rozpoczęcie programowania. Chciałem sprawdzić działanie FPU wykonując proste dodawanie, mnożenie itd. float'ów w przerwaniu od timera. Ku mojemu zdziwieniu przy każdym wykonaniu instrukcji na float'ach wywala mi HardFault. Gdy wyłączyłem w opcjach korzystanie z FPU wszystko hula. Używam Keil'a w wersji dla...
Nie rozumiem o czym piszesz. Coś całkowicie mieszasz i nie rozumiesz i próbujesz na chybił trafił coś sklecić (tak jak to w Arduino jest przyjęte). Dlatego nie lubię arduino a nie ze względu na sprzęt czy IDE. To pomógłbyś coś skleić do testów? Discovery mam od 2dni. Wgrany program z linku powyżej powoduje to że wyświetlane są te pełne prostokaty w...
Witam, zastanawia mnie taka sprawa, która postaram się przedstawić w formie przykładu. Otóż korzystam, z płytki STM32F4DISCOVERY, na której zaczynam testować rożne peryferia, które przydadzą mi się do budowy falownika. Pierwsze testy zacząłem przeprowadzać na TIM1. Właściwie całą konfigurację skopiowałem z podobnego projektu na STM32F103RB. Jako wyjścia...
Tak, biblioteka jest mojego autorstwa. Parametry: Obsługa DPV0 Obsługa DPV1 Prędkość transmisji 9600-1,5M Zasoby procesora: 1 timer, 1 uart Sposób wywołania: funkcja inicjująca (inicjacja pamięci, inicjacja protokołu) -> zwraca - adresy obszaru pamięci do wymiany danych z PLC. 1. Wejścia 2. Wyjścia 3. Diagnostyka Cała obsługa protokołu jest niedostępna...
Witam, Na STM32F407VG Discovery zaimplementowałem sobie system freeRTOS. Do projektu systemu dołączyłem pliki z ARM_CM4F... Mam nadzieje że dobrze .... Stworzyłem jakiś proste zadania i teraz chce dojść co i jak z tymi czasami i częstotliwościami. Skoro mój STM może mieć max 168MHz to poprostu w pliku freeRTOSConfig.h wpisać tak: [syntax=c] extern uint32_t...
Witam wszystkich po raz kolejny. Potrzebuję rady doświadczonych kolegów na temat wydajności kodu. Otóż pracuję nad kodem w którym będą istnieć nawzajem różne procesy - adc, uart itd. Aktualnie piszę kod do obsługi SPI, w celu komunikacji z urządzeniem. Potrzebuję wysłać przynajmniej 7 bajtów do urządzenia a potem odczytać odpowiedź. Wszystko gra i komunikacja...
Poczytaj o PWM i DMA burst mode w advanced timers. Wtedy mozesz sobie poszaleć -przynamniej tak mi się wydaje
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, 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...
Dzień dobry! Poniżej kawałek kodu, trochę nie ociosany, co prawda, ale może rzuci jakieś światło na problem. [syntax=c] #include <stdio.h> #include <string.h> #include "stm32f4xx.h" #include "FreeRTOS.h" #include "task.h" #include "timers.h" #include "semphr.h" #include "misc.h" /* moje */ #include "sine.h" #include "timer.h" #include "leds.h"...
Witam, Próbuje uruchomić wyświetlacz oparty o ILI9341 z wykorzystaniem SPI. Wyświetlacz sprawdzałem pod Arduino i działa, jest sprawny. Próbuję podpiąć go do STM32F407ZET6. SPI działa, widać że są przesyłane dane na oscyloskopie. Zaczerpnąłem procedurę inicjalizacji wyświetlacza z Adafruit dla Arduino ale wyświetlacz jak był biały tak jest po wgraniu...
Nie wiem jak z ta zakrecona biblioteka od ST :) moj dzialajacy kod na STM32F407 z jednego projektu (z tym ze wyzwalanie ADC jest z Timera). Przerwanie DMA wyzwalane po zebraniu 8 probek... Twojego kodu nie analizuje bo ta biblioteka dziala czasami jak chce, z tego co pamietam na F4 chyba tez z nia mialem problem przy ADC i DMA... [syntax=cpp] volatile...
Chciałbym podzielić się swoim tworem DS18B20 + STM32F4 Discovery po niecałych 2 miesiącach obcowania z poradnikiem. Zaczynając od zera jeśli chodzi o znajomość mikrokontrolerów z podstawową znajomością C. [syntax=c]#include "stm32f407xx.h" void delay(uint16_t time) { TIM2->CNT = 1; while (TIM2->CNT<= time); } static void reset (void) { GPIOB->MODER...
Witam, próbuje zaprogramować obsługę karty sd niestety program coocox "wisi" na funkcji wait_ready, a głebiej na rcvr_spi, gdzie szukać problemu w podłaczeniu ? [syntax=c] /*--------------------------------------... /* Wait for card ready */ /*--------------------------------------... static...
Spróbuj mojego kodu do konfiguracji rcc na 72 MHz (u mnie działa na stm32f107 bez żadnych problemów), w przypadku wykorzystania kwarca 25 MHz [syntax=c] void rcc_conf(void) { RCC->CR |= RCC_CR_HSEON; while ((RCC->CR & RCC_CR_HSERDY) == 0); FLASH->ACR |= FLASH_ACR_PRFTBE; FLASH->ACR |= FLASH_ACR_LATENCY_2; RCC->CFGR2 = RCC_CFGR2_PREDIV1_DIV5 | RCC_CFGR2_PREDIV2_DIV5...
Witam. Przykładowo próbuje uzyskać częstotliwość PWM 42kHz, kod: [syntax=c] #include "stm32f4xx.h" int main(void) { RCC->AHB1ENR |= RCC_AHB1ENR_GPIOBEN; RCC->APB1ENR |= RCC_APB1ENR_TIM2EN; //podpiecie zegara dla Timer2 //PIN10 CH3 GPIOB->MODER |= 1<<21; GPIOB->AFR[1] |= 1<<8; TIM2->PSC= 101; //prescaler TIM2->ARR= 101;...
3 us to 63 cykle - niby to wcale nie mało dla rdzenia Cortex. Wygeneruj impuls startu konwersji na timerze, w przerwaniu timera na koniec impulsu odpal transmisję, po zakończeniu transmisji z ADC wyzwól ponownie timer. Nie jestem pewny czy zwalnianie uC do 21 MHz to dobry pomysł. Sama transmisja też zajmie trochę czasu, potem obróbka odebranych danych...
stm32f407 coocox stm32f407 stlink stm32f407 usart
blokowanie opcji elektromagnes słaby trzymać mj2955 zasilacz
Jak zdjąć przednią obudowę pralki Siemens Siwamat? Brak komunikacji z przepustnicą Suzuki Grand Vitara 1.9 DDiS