Ile zasobów na co potrzeba, jak używać dobrodziejst RTOSa jak multitasking. Tak postawione pytanie jest tak ogólnikowe, że niezbyt wiem jak można na nie odpowiedzieć inaczej niż ogólnie znanymi informacjami. Z zasobów to potrzebny jest na pewno jeden timer, zwykle SysTick. Dodatkowo oczywiście pamięć (; Najlepiej więcej niż mniej. Są RTOSy których...
Zastanawia mnie praktyczny brak pytań dotyczących RTOS-ów. Ciekawe dlaczego amatorzy praktycznie nie korzystają z tego niezwykle przydatnego oprogramowania. Myślę że stoi za tym wiele mitów o RTOS-ach a szczególnie: 1. RTOS zajmuje strasznie dużo zasobów i zjada mnóstwo taktów procesora RTOS tak naprawdę nie zjada żadnych taktów poza przełaczniem wątków...
Witam, chciałbym, żeby ktoś obeznany wyjaśnił mi dlaczego podane na poniższej stronie stwierdzenie jest poprawne: http://www.freertos.org/Embedded-RTOS-Bi... Think of a binary semaphore as a queue that can only hold one item. The queue can therefore only be empty or full (hence binary). Tasks and interrupts using the queue don't care...
Więc proponuję Ci włączyć dane przerwanie dopiero po zarejestrowaniu semafora. Tak naprawde to powinieneś tak postępować z każdym mutexem,kolejką czy semaforem, niezależnie czy operują one w przerwaniu czy w tasku. Czyli najpierw tworzymy semafor, a potem uruchamiamy task, czy też włączamy dane przerwanie.
Moim zdaniem wątku nie da się przerwać. Mogę się jednak mylić z tego powodu właśnie zadałem tu pytanie. Nie mylisz się. Micropython nie wspiera możliwości zatrzymania (terminowania) wątku, a gdyby była taka możliwość to skończyłoby się to uwaleniem całego programu. W ESP-IDF, na którym opiera się micopython nie ma też bezpośrednio możliwości zatrzymania...
Eee.. zmieniłeś w międzyczasie OSa? Wygląda trochę jakbyś strzelał na oślep, coś nie działa, to sruu wszystko, kopiuj/wklej inny przykład itp. Trochę jakby bez zastanowienia co konkretnie może nie działać... Dodano po 1 Kurka, to odpal sobie DMA, odblokuj przerwanie od Transfer Complete i jesteś pewny, że dane odebrano ;) Z przerwania wepchnij wynik...
Magiczne słówko na "v..."? Generalnie idea którą przedstawiłeś jest kiepska z założenia. W typowym przypadku wątek powinien na "coś" czekać, a przerwanie powinno to "coś" "dawać". Przez "coś" należy rozumieć jakiś typowy obiekt synchronizacyjny (semafor, kolejka, flaga [nie mylić ze zmienną globalną], ...), a który dokładnie to już zależy od tego jaki...
To teraz zwróć uwagę na uchwyty do semaforów, w przerwaniu masz inny niż w tasku. Jeśli tylko pomyliłeś się wklejając funkcję to przeanalizuj spokojnie jak to działa (bez semaphore take na początku): - zajmujesz semafor w tasku - zadanie się wykona raz - próbujesz zając znowu semafor - czekamy - przerwanie zwalnia semafor - task rusza - dalej działa...
Więc pytanie po co ci dma, jeden wątek wpisuje do kolejki swoje, drugi swoje, a przerwanie uarta aktywuje semafor do trzeciego wątku który to wpisuje dane z kolejki do USARTx->DR PS. lepiej podaj treść zadania, bo tylko to ogranicza (i zbednie komplikuje) mnogość możliwych rozwiązań
1.tak, zmienne to oczywiscie volatile (w zasadzie tylko ) TxHasEND_UART2- oznaczająca koniec transmisji -reszta taka być nie musi. 2. V6.0.5. rzeczywiście troche stara .. 3.tak, działa to jakby był to zwykły pooling. Ta funkcja to rodzaj gatekeep'era (nie najwyższych lotów). ----- włóż wskaźnik na dane do kolejki rozumiem, że kolejka w takim przypadku...
LPC176x (czyli wersja 100-nóżkowa) posiada 4 timery, każdy z nich posiada po dwa wejścia: CAP0 i CAP1. Daje to max 8 wejść, czyli może się udać. Pokrótce wejścia CAP pozwalają zapisać aktualny stan timera (rejestr TC) w rejestrze CR0/CR1 w momencie zmiany stanu na takim wejściu. Pomiar szerokości impulsu PWM jest tym samym tak dokładny, jak często tyka...
Dorzucam obiecany krótki opis struktury kodu w module głównym. Przy tym stopniu skomplikowania postanowiłem skorzystać z systemu czasu rzeczywistego, wybrałem znany mi już FreeRTOS. Dzięki temu miałem możliwość podzielenia funkcjonalności na poszczególne procesy. Poniżej wklejam printout z wszystkimi procesami i drugi z socketami. https://obrazki.elektroda.pl/4477476100_...
Dlaczego nie można wywołać w normalny sposób przerwania, które powoduje tylko wysłanie danych przez xQueueSendFromISR? Jesli mozna to poprosze ten kawalek kodu. Jesli chodzi o USBSend to jego zadaniem jest właśnie wstawienie bajtu do odpowiedniej kolejki. Sprawa jest taka, że w tej chwili mam dodatkowe zadanie które tylko czeka, aż w buforze Rx znajdą...
Witam U mnie akurat to pomogło... ale cóż co projekt to inne problemy. Ja osobiście nie zrobił bym nigdy tak jak Ty czyli odbierać dane w przerwaniu i zapisywać je do globalnej zmiennej. Jak już muszę używać jakiś globalnych zmiennych to używam to zapisu i odczytu tych zmiennych funkcji. np readCos, i writeCos. Wiem że tylko ta funkcja może mi coś zmienić....
Przeglądałem rozwiązanie obsługi SPI pod Freertos z demo, ale z tego co widzę wszystkie opierają się o pooling. //--- U mnie wygląda to w zasadzie podobnie, tyle że z użyciem kolejkowania void prvSPI_GatekeeperTask(void *pvParameters) { _SPI_Params CurrentStructSPI; for(;;) { xQueueReceive( xSPI_Queue, &CurrentStructSPI,...
Nie za bardzo rozumiem o jakich przerwaniach piszesz. Slave SPI (abstrahując od przerwan błędów itd) ma przerwanie wtedy kiedy rejestr wysyłki jest pusty albo kiedy coś otrzymał (pominę kwestię fifo). Jeżeli jest to przerwanie od pustego rejestru TX to może tam wpisać dane, która zostanie wysłana przy następnej transmisji mastera. Jeżeli jest to od...
hmmm chyba sie nie myle bo co to jest jak nie fragment parsowania linii NMEA: header[0] = header[1]; header[1] = header[2]; header[2] = znak; if ((header[0] == 'G') && (header[1] == 'G') && (header[2] == 'A')) { new_ggaHeader_flag = 1;...
Witam, Aktualnie piszę aplikacje na mikrokontrolery bez systemu operacyjnego. Po przeczytaniu tutoriala na stronie FreeRTOS i kilku przykładów, nie mogę się przestawić na korzystanie z możliwości systemu operacyjnego. W aktualnej aplikacji korzystam z dużej struktury danych która jest uzupełniana danymi z zewnętrznych urządzeń. Dane ze struktury są...
Oba taski maja ten sam priorytet ? Spróbuj sprawdzić czy przerwanie od SysTiicka działa (breakpoint). Możesz tez spróbować wrzucić tutaj kod, który nie działa (okrojony najbardziej jak to możliwe). Powiem tak, na stm32f105 jeśli dobrze pamiętam to timer działa, a zmiana priorytetów nic nie dawała. Dzisiaj jednak pomęczyłem się z gołym projektem dla...
No właśnie o priorytetach wiem, 15 top najniższy dlatego wszystkie przerwania mają Dodano po 2 Niestety zwiększenie do 4kB stosów (Stack Configuration i Heap Configuration) w niczym nie pomogło, program wchodzi do przerwania i zawiesza się przy sprawdzaniu flagi. Jak nie sprawdzam flagi to wszystko działa. Wychodzi na to, że musiałbym na te 4 klawisze...
Ad.2 NIc sie nie stanie, tylko program moze róznie działać w zalezności jak sie zsynchronizują wątki tzn raz będzie działał a raz nie. No ok :] Skoro dla Ciebie raz_dziala_raz_nie != nie_dziala, to trwoga... Jesli juz precyzowac, niewiele zalezy od synchronizacji watkow. Zalezy od uzycia danego peryferium. Im czesciej watki beda konkurowac o jedno...
Dotyczy to tylko zmiennych automatycznych. Zmienne statyczne są "wspólne" (istnieje tylko jedna kopia, niezależnie od ilości wątków). Ok, czyli nie zuzyje tyle ramu, jesli bede uzywal zmiennych static. Tylko, ze musze wtedy byc czujny, bo jeden watek moze mi zepsuc inny (zmiennaą) ? A mialo byc tak, ze jeden watek nic nie wie o drugim. Nic nie wie,...
Faktycznie wygląda na to, że obsługa semaforów wpływa negatywnie na to. Musze przyznać, że jestem w lekkim szoku, ponieważ pomiędzy dwoma zboczami jest 400 us, procesor taktowany jest zegarem 180MHz, a w samych wątkach niewiele się dzieje. Moja opinia jest subiektywna i może zostać uznana za stronniczą (z racji tego że tworzę własny RTOS), jednak uważam...
Witam! Wrzucilem FreeRTOS v6.0.2 z ST Firmware v3.1.2 na te plytke. Uzywam IDE CrossWorks z ich standardowymi bibliotekami na ARMv7M w trybie THUMB little-endian. Kompilator pochodzi z IDE i jest to GCC v4.4.2. Nie dziala mi poprawnie komunikacja z karta inteligentnej. Karta pracuje w trybie T0, wiec Half-Duplex. Skonfigurowalem przerwania do USART3...
Witam ponownie Troche czasu minelo i zdazylem bardziej doglebnie poznac ten zestaw ref. jak i sam procesor STM32. Niestety wraz z rozrastaniem sie projektu powracaja stare bledy i tak: W trybie SC USART nie generuje mi przerwan dla kazdego znaku, tzn.: Przy wysylaniu przez karte ATR w stanie RSTIN LOW moj soft dostaje tylko jeden bajt (pierwszy z ATR)...
Cześć, walczę od jakiegoś czasu z resetami mikrokontrolera. Generalnie historia jest ciekawa, bo mam sterownik, w którym siedzi STM32F103, mam poprzedni bootloader i firmware, na którym resetów nie ma, dodałem trochę swoich zmian, posprzątałem kilka rzeczy, które wypadły z użytku i coś zaczęło się sypać :-/ Na moje oko nie widzę z czym może być problem,...
Witam 1.Czy używając semaforów lub kolejek w przerwaniach, minimalny czas odebrania takiego semafora, lub kolejki wynosi Tick, czyli 1 ms? Czyli w teorii max 1000 razy na sekundę..? 2. Jakie niebezpieczeństwo niesie za sobą obsługa całego przerwania w przerwaniu np od USB, nie używając semaforów lub kolejek. No bo działać to działa. 3. Co jeśli: -obsłużę...
freertos kolejka freertos przerwanie stm32 freertos przerwanie
mondeo zetec przepływomierz volcano nagrzewnica bramka radiowa
podkładka chłodząca tefal stacja parowa
Jak utworzyć kartę zielonke: Green Card lub PCB Brak świecenia czerwonej diody w Onkyo TX-SR504E: diagnostyka i rozwiązania