1.Tworzysz Mutexa żeby tylko jeden task miał dostęp do interfejsu SPI I2C ... 2. Tworzysz semafor na dany interfejs. 3. Tworzysz driver do obsługi interfejsu, najlepiej z obsługa przerwań od tego interfejsu. 1. Blokujesz dostęp do interfejsu mutexem 2. Zlecasz driverowi co gdzie ma wysłać lub skąd odebrać. Driver w tym czasie blokuje semafor aż do wykonania...
Definicja tcp_timer_needed() jest w pliku tcp_impl.h, żródła w timers.c. Plik tcp_impl.h zaincludowany w tcp.c z resztą tu nic nie zmieniałem. Po dopisaniu #include "lwip/timers.c" program się kompiluje owszem i wszystko działa ale mam potem problem z kompilacją gdy chce dodać liczniki softowe pod freertos a to za sprawą includeowania pliku timers.h....
Ściągnij z mojej strony przykład dla STM32 (którykolwiek), to zobaczysz jak to jest zrobione i jak powinno być zrobione... http://www.freddiechopin.info/pl/downloa... 4\/3!!
To chyba nie wina stosów. Jest różnica nazewnictwa funkcji obsługi przerwań pomiędzy FreeRTOS a biblioteką CMSIS. U mnie w identycznej sytuacji pomogło dodanie do pliku port.h (z katalogu SOURCE/portable/gcc/ARM_CM3) tych linijek: // To be complaint to CMSIS and ST standard peripherals library name convention. #define vPortSVCHandler SVC_Handler #define...
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,...
Cześć, czy ktoś z Forumowiczów trudził się z usypianiem mikrokontrolera w zadaniu Idle? Mój problem wygląda następująco: podmieniłem przerwanie dla ticku systemowego z timera SysTick na przerwanie od alarmu RTC. W Idle Hook chcę wprowadzić uC w tryb uśpienia Stop. Na moje oko uC powinien się sam wybudzić po wystąpieniu przerwania od alarmu, a nie robi...
Jeśli ma być tak jak ty to opisujesz to wywołanie powinno tak wyglądać static void VtaskINT1( void *pvParameters ) { xSemaphoreTake(xBinarySemaphore,0... while(1) { xSemaphoreTake(xBinarySemaphore,port... // Tutaj twój kod do wykonania } } lub static void VtaskINT1( void *pvParameters )...
Witam! Piszę aplikacje pod FreeRTOS / STM32 i napotkałem się na taki problem. W systemie uruchomione mam przerwania które to ustawiają semafory a te zezwalają na pracę tasków uruchomionych pod FreeRTOS. No i wszystko jest fajnie pięknie puki ustawienie semafora nastąpi już po uruchomieniu systemu czyli vTaskStartScheduler() Pomijam już fakt, że z chwilą...
Poczytaj w dokumentacji, sprawa jest tam poruszona. SysTick i PendSV mają być na najniższym, a inne przerwania - które używają funkcji RTOSa - nie mogą mieć wyższego priorytetu (niższego numerka) niż configLIBRARY_MAX_SYSCALL_INTERRUPT_PRIO... lub configMAX_SYSCALL_INTERRUPT_PRIORITY. Obstawiam, że jedna z tych wartości nie jest używana i w ogóle jest...
http://obrazki.elektroda.pl/7258579400_1... Witam. Chciałem dzisiaj przedstawić kolejny projekt z cyklu "inni mają - mam i ja" ;) Tym razem jest to miniaturowy sterownik ethernetowy - " uWebServer ". Układ zbudowany został w oparciu o mikrokontroler Cortex-M3 - STM32F103C8T6, do tego kontroler ethernetu "znany i lubiany" - ENC28J60. Całość...
Witam :) Pojawił mi się taki dość specyficzny problem w Eclipsie po podpięciu plików od FreeRTOS. Otóż przy pliku task.c pojawiają się błędy: DescriptionResourcePathLocationType Field 'listCURRENT_LIST_LENGTH( &( pxReadyTasksLists[ tskIDLE_PRIORITY ] ) )' could not be resolvedtasks.c/yanosik_2/FreeRTOSline 2127Semantic Error...
To fajne macie te studia :D
Mi zadziałało coś takiego: http://obrazki.elektroda.pl/1811887400_1... [syntax=text]symbol-file Release-v1.2/aboard.elf monitor arm semihosting enable monitor reset halt[/syntax] a openocd uruchamiam tak: [syntax=text]bin\openocd-0.7.0 -f interface/stlink-v2.cfg -f target/stm32f1x_stlink.cfg -c "$_TARGETNAME configure -rtos FreeRTOS"[/syntax]...
skonfiguruj PRIGROUP na 4:4 Może to głupie pytanie, ale jak może być 4:4 skoro STM32 ma tylko 4 bity na priorytety? Jedyne sensowne ustawienia powinny w sumie dawać 4, a więc 0:4, 1:3, 2:2, 3:1 i 4:0 4\/3!!
Z tego co widzę NVIC_SetPriorityGrouping() z core_cm3.h działa na odwrót tzn jak napisze tak : NVIC_SetPriorityGrouping(3); to oznacza włącz grup4. grup0 =7 grup1 =6 grup2 =5 grup3 =4 grup4 =3 grup5 =2 grup6 =1 grup7 =0 W FreeRtos jak ktoś ma: [syntax=c]#define configKERNEL_INTERRUPT_PRIORITY 255 #define configMAX_SYSCALL_INTERRUPT_PRIORITY 191[/syntax]...
SysTimer jest wykorzystywany w FreeRTOS jako zegar systemowy. Ale jeżeli potrzebujesz timera(dla zliczania czasu będącego wielokrotnością zegara systemowego) dla jakiejs innej biblioteki możesz wykorzystać vApplicationTickHook(), gdy tylko masz symbol configUSE_TICK_HOOK zdefiniowany na 1 (plik FreeRTOSConfig.h). Funkcja ta jest wywoływana w przerwaniu...
Rozwiązałem w końcu problem. Dodaje działający projekt FreeRTOS Eclipse dla STM32F107, który miga dwiema diodami w dwóch niezależnych zadaniach. Wszystkim, którzy mieli podobny problem załączam gotowy projekt który należy tylko skompilować. Może nie jest on kunsztem programistycznym ale działa. Pozdrawiam.
Witam Dlaczego przy włączeniu zasilania lub po resecie STM32 zawsze spełniony jest warunek mimo, że nigdzie nie jest wywoływana funkcja osSemaphoreRelease() ? [syntax=c]static void SemaphoreTest(void const * argument) { osSemaphoreId semaphore = (osSemaphoreId) argument; for(;;) { if (semaphore != NULL) { if (osSemaphoreWait(semaphore , 0) == osOK)...
Drogi Kolego FreeRTOS to system operacyjny na mikrokontrolery, taki odpowiednik Windows na PC. Stanowczo to odradzam, jeśli nie umiesz ogarnąć Adruino albo SeggerStudio. Polecam kurs STM32 Piotra Duby i STM32CubeIDE. Przerób wszystkie ćwiczenia - migające diody, ADC, i2c. Poza tym prosiłem o schemat. Na jego podstawie mogę stworzyć szkielet projektu...
A uwzględniłeś czas w przerwaniach? Spróbuj wykonać każdy z testów z wyłączonymi przerwaniami, powiedzmy kilkaset razy i dopiero wtedy wylicz czas poszczególnego testu. Jeżeli różnice będą występować to jedyne wytłumaczenie, które przychodzi mi do głowy to takie, że być może część danych jest w innym segmencie pamięci. Wtedy przypadkowo możliwe że operacje...
Jesli ostatni próbuje się wykonać memcpy, to na 99% jest to zapisz danych pod zero lub inna pamięc RO. Dowiedz się ile wynosi parametr pxQueue->pcWriteTo. Jeśli ta liczba to nie jest adres RAMu (0x20000000+ wskaznikiem , z ktorego korzysta RTOS. Skoro ten wskaznik u ciebie ==0, no to krzaki gotowe...
Cześć, dotychczas podczas programowania wykorzystywałem jakieś IDE i automatycznie generowane projekty. Postanowiłem iść krok dalej i napisać własnego Makefile'a. Na razie wykorzystuję jeszcze skrypt linkera i plik startowy z IDE. Struktura projektu wygląda następująco: ├── Ac6LinkerScript.ld ├── Ac6Startup_stm32.s...
http://obrazki.elektroda.pl/4876103500_1... Witam wszystkich Tym razem lekki projekt, który w moim zamyśle ma być wstępem do zapoznania się z FreeRTOS-em oraz późniejszego, poważniejszego zajęcia się nim. Projekt ten, to demo chodzące pod kontrolą systemu operacyjnego FreeRTOS v7.3.0 dostosowanego do mikrokontrolera STM32L152, które...
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...
Nic. Wszystkie wartości PRIGROUP od 0 do 3 mają takie same znaczenie czyli 16 grup i 0 sub. No właśnie w teorii też myślę że tak jest ale praktyka jest dla mnie trochę inna jeśli chodzi o FreeRtos. Na stronie http://www.freertos.org/RTOS-Cortex-M3-M... piszą wyraźnie: If you are using an STM32 with the STM32 driver library then ensure all the priority...
Dodanie podstawowego wsparcia dla innych układów jest porównywalne z postawieniem projektu na FreeRTOSie - ot po prostu musisz mieć tablicę wektorów i skonfigurowane rozmiary/adresy pamięci i dokładny typ układu. We FreeRTOSie przecież wsparcie dla STM32 czy dla LPC tak samo nie istnieje - tablicę wektorów, skrypt linkera, startup, Makefile (czy konfigurację...
Spróbuj zmniejszyć przydział Ram dla sterty w pliku FreeRTOSConfig.h #define configTOTAL_HEAP_SIZE
(at)kuczy Może nie będzie to to co chcesz usłyszeć i może wiele osób się z tym nie będzie zgadzać... Ale po jakiś tam różnych doświadczeniach i projektach powiedziałem jedno koniec z LwIP... Mi abym stwierdził to samo wystarczyło przeczytanie książki: "Mikrokontrolery STM32 w sieci Ethernet w przykładach" i analiza przykładowych kodów źródłowych. :)
Próbuję bawić się systemem FreeRTOS. Mam problem, gdy uruchomię tylko jedno zadanie led lub tx to wówczas one działają. Gdy próbuję uruchomić 2 zadania, nie działa nic. Próbowałem zmieniać rozmiar stosu, priorytety zadań i nic. [syntax=c]#include <stm32f4xx_usart.h> #include <misc.h> #include "stm32f401_discovery.h" #include "usart.h" #include...
STM32 + FreeRTOS 7.1.0 + IRQ Siedze już dłuższą chwilą nad takim czymś. Mam zdefiniowaną kolejkę i zadanie: xQueueReceive definiuje po ilu taktach (czyli ms) zadanie ma przechodzić w stan ZABLOKOWANE. Co bym tam nie wpisał zadanie się nie blokuje i działa. Ilość znaków w kolejce się zgadza - po wyświetleniu ostatniego znaku z kolejki zwraca 0. Próbowałem...
Lepiej poczytać dokumentację FreeRTOSa. Jakiego konkretnie masz ARMa (Atmel, NXP itp.) ? FreeRTOS na pewno odpalałem na STM32, bodajże też coś z tym robiłem na LPC2148 i AT91SAM7Sxxx, tyle, że nie pamiętam czy to na 100% działało na dwóch ostatnich. Potem temat nieco zaniedbałem z uwagi na brak czasu. W każdym razie na STM32 działało mi to.
Widzę jednak, że freeRTOS działa na AVRach: https://www.freertos.org/RTOS_ports.html W pierwszej wypowiedzi nie pisałeś, że chodzi o AVR. Odpuść sobie RTOS na AVR. Ma on spore ograniczenie no i RTOS wymaga "trochę" RAM, tak jak i wszelkie bufory (np dla UART) aby RTOS mógł "rozwinąć skrzydła" a AVR mają mało RAM poza Mega1284. Tak z ciekawości - próbowałeś...
W yagarto się kompiluje pewnie przez to, że ma on "wbudowane" sbrk() (inna konfiguracja newlib), a do CodeSourcery musisz dodać je samodzielnie. Rozmiar jest na 99% spowodowany funkcjami do obsługi wyjątków - niestety jednak się dodały. Tak czy siak nie jest źle - dla STM32 obsługa wyjątków to około 50-60kB. 4\/3!!
Pierwsza sprawa: void ToggleLedTask(void *pvParameters) { while(1) { xSemaphoreTake(xSemafor, portMAX_DELAY); vParTestToggleLED( 0 ); } } Powinno raczej wyglądać: void ToggleLedTask(void *pvParameters) { while(1) { if(xSemaphoreTake(xSemafor, portMAX_DELAY) ==...
No właśnie tak myślałem, że im bardziej rozbudowany program (ma więcej co robić), to trzeba zwiększać częstotliwość przełączania kontekstu, więc i narzut rośnie. No ale dlaczego? Częstotliwość zmian kontekstu wpływa tylko na "responsywność" programu... W NuttX chyba jest 100Hz, a domyślnie 50. Muszę tylko trochę poszperać i zobaczyć czy jest RTOS,...
Witam Kolegów Przy okazji problemu z jakim borykam się [url=http://www.elektroda.pl/rtvforum/vi... udało mi się poprawnie uruchomić na procesorze STM32F107 system freeRTOS. Jestem mega pozytywnie zaskoczony tym, że całość systemu udało mi się poprawnie odpalić w Eclipse w zaledwie 4 godziny. Do tej pory uważałem, że...
Zlecę skonfigurowanie dwóch projektów dotyczących sterowania urządzeniem audio na STM32F4xx w IDE na Windows (oraz ich późniejsze modyfikacje w ramach kontynuacji współpracy). Te dwa projekty mają podobną konstrukcję, są napisane w C, największa część ich funkcjonalności dotyczy przesyłania pomiędzy sobą po UART i SPI kilku typów komunikatów synchronicznych...
Witam tak czy siak nie chodzi mi tutaj o pomiar czasu, miało to być tylko orientacyjnie. Pętli for użyłem tylko żeby zobaczyć orientacyjny czas... dla pętli for W FreeRtos kopiując "kolejkę" używają właśnie memcpy, myślałem żeby użyć tam DMA, ale teraz się zastanawiam (stąd ten post ) czy goście z CodeSourcery nie zrobili tego memcpy na DMA, bo czas...
Pytanie mam bardzo krótkie: jak dodaje się pliki do projektu w Eclipse? Uruchamiam port FreeRTOS dla STM32 i przyszła pora aby dodać do tego zestawu nowe funkcje. Mam plik eeprom.h i eeprom.c. Standardowo dodałem dyrektywę #include "eeprom.h" Oczywiście plik znajduje się w folderze gdzie sięga kompilator swoimi mackami. Wszystko fajnie tylko,...
Jakiego typu jest absolutnie absurdalny i perwersyjnie wypaczony pomysł, aby mając OSa robić takie delay'e w wątkach ??? Również o podobną perwersję zakrawa wykonywanie przerwania timera co mikrosekundę tylko po to, zeby zmniejszać tam jakąś zmienną. Wez timer, skonfiguruj go jako one-shot, skonfiguruj mu takt na 1us, do ARR wpisz chciany czas w us,...
Pozycje w obcym języka są przydatne, ale dla tych, którzy już coś wiedzą na konkretny temat. Ucząc się od podstaw to tylko język ojczysty...(dla większości) Przejrzałem w/w pozycje - spis treści ładnie "wygląda" w pozycji "Mikrokontrolery STM32 w praktyce" - głównie interesuje mnie "instalacja i obsługa systemu operacyjnego FreRTOS". Ale patrząc po...
Aha. Ciekawostka - w rodzinie STM32 zatrzymując tok programu debuggerem - no teoretycznie powinniśmy zatrzymywać cały procek. JEdnak nie - na wyjściu PWM nadal mamy prawidłowy sygnał - timer kontynuuje pracę. Działa też DMA. Cuda wianki. Jeśli jeszcze o tym nie wiesz, to zainteresuj się rejestrem DBGMCU->CR 4\/3!!
Cześć, Platforma: STM32F769I-DISCO OS: FreeRTOS Środowisko: System Workbench for STM32 Próbuję zaimplementować PTP na podanej platformie, jednak od dłuższego czasu męczę się z regularnie pojawiającym się Hard Faultem. Jak zdołałem wybadać, błąd pojawia się prawdopodobnie, gdy upłynie czas jednego z timerów programowych, które są tworzone. Tworzonych...
Przyznam się, że jeszcze nie do końca się orientuję w tablicach wektorów i skryptach linkera. Zwyczajnie nigdy nie miałem potrzeby do tego zaglądać wcześniej. Wszystko co mam praktycznie bez zmian pochodzi z dema FreeRTOS dla płytki Premier. Ktoś to demo wpakował pod Eclipse. Miało być szybciej ale jak na razie tylko problemy z nim mam. W jakimś innym...
Jednak chyba się przeliczyłem. Ustawiłem w pliku skryptu linkera __main_stack_size = 1024; __process_stack_size = 2048; W pliku FreeRTOSConfig.h #define configMINIMAL_STACK_SIZE( ( unsigned short ) 128 ) #define configTOTAL_HEAP_SIZE ( ( size_t ) ( 2 * 1024 ) ) Po zaprogramowaniu i uruchomieniu debbuggera (prawie...
Cześć, Trochę za mało info dałem w pierwszym poscie. 1. Używam FreeRTOS. 2. Korzystam z DMA. Używam do obsługi karty SD zmodyfikowanej biblioteki SPL tak aby działało pod FreeRTOS (nie ja to wymyśliłem ale na tym etapie projektu nie mogę tego zmienić). Sam transfer DMA do karty podczas zapisu wykonuje się bardzo szybko. Zadanie, które zapisuje na karte...
Witam Dodałem lib STemWin520d_CM3_GCC.a w trzeba tylko skonfigurować Lcd i TouchPanel i program mi się skompilował. Jak znajdę trochę czasu to zobaczę czy to działa na - HY-mini STM32 emWimGUIBuilder V5.20 tworzy plik .c który można dodać do projektu. Pytanie czy to jest za darmo? bo te jest ewidentnie GUI Micrium. po dodaniu STemWin520d_CM3_OS_GCC.a...
Elektronika praktyczna: Dzięki za linki ale wydaje mi się ze jest to prawie to samo co w książce "Mikrokontrolery STM32 w praktyce" lecz przykład który był dołączony nie kompiluje się u mnie więc jeśli masz przykład do pierwszego artukułu to proszę o linka ; ). Na ChibiOS/RT natknąłem się ale wydawało mi się że FreeRTOS jest starszy i bardziej popularny...
Jeśli chcesz to zdebuggować, to możesz się "zaopatrzyć" w bleeding-edge-toolchain ( https://github.com/FreddieChopin/bleedin... ). Jest on kompilowany praktycznie tak samo jak toolchain ARMowy, z tym że biblioteki zawierają wszystkie symbole, a więc można je spokojnie debuggować i widzisz co się dzieje. Z Twojego opisu wynika, że problem...
Ale po co szukać po necie, skoro na płytce CD dołączonej do zestawu STM32F1-Mini są wszystkie potrzebne komponenty? Mają ponadto tę zaletę, że są juz skonfigurowane pod dokładnie ten zestaw. Tomasz zacznij od wgrania do procesora gotowego FreeRtos 6.0, ma juz zdefiniowane 2 wątki: 1. mruga diodami - możesz go zostawić, będzie widać, że system pracuje...
freertos stm32 stm32 freertos przerwanie stm32 freertos przerwać
mondeo zetec przepływomierz instrukcja centralny zamek zmiana kierunek silnik przełącznik
tester rezonatorów kwarcowych bosch super silence
Sterowniki HP 1500, LaserJet, PSC, DeskJet D1500 do Windows 7 – gdzie pobrać i jak zainstalować Brötje BBS – lokalizacja i funkcja programu 750 w menu serwisowym kotła