Ewentualnie jak ustawić priorytety/wywłaszczenia? Ja bym spróbował zrobić to w ten sposób jak poniżej. To taki przykład o co mniej więcej w tym chodzi. Podzieliłem priorytety na 4 grupy o ważności priorytetów od 0 do 3 za pomocą funkcji dostępnych w CMSIS. Im wyższy numer grupy ( 0G, 1G, 2G, 3G) tym wyższy priorytet, z tym że taki podział mówi o wywłaszczeniu....
z tego co rozumiem żeby dokonać jakiejkolwiek zmiany w rejestrze AIRCR należy tam również wpisywać 0x5FA po to by zapis nie został odrzucony. Chyba że źle kombinuje:P Dobrze kombinujesz, wcięło mi ten zapis :P SCB->AIRCR = AIRCR_VECTKEY_MASK | (3<<8); gdzie: #define AIRCR_VECTKEY_MASK ((uint32_t)0x05FA0000) Chociaż...
Ja na samym początku przerzucam wektory przerwań na początek pamięci RAM. A później wstrzykuję swoją funkcję w miejsce oryginalnego wektora. Po rozmyślaniu na ten temat doszedłem do następujących wniosków. 1. Możliwość dynamicznej rejestracji przerwań (najlepiej w wysoce abstrakcyjny sposób, tak aby funkcje nie musiały być publiczne) byłaby z pewnością...
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...
Twój kod jest zły, bo czwórki bitów dla poszczególnych przerwań są w tych tablicach IP[] upakowane po 8. Funkcje z CMSISa do przerwań (do NVIC) są generalnie funkcjami inline, więc efekt finalny będziesz miał taki sam - czy użyjesz swoich dostępów do rejestrów, czy tych funkcji. Ja bym proponował zostać przy tych funkcjach. Jak koniecznie chcesz poczytać,...
Witam , Wracam do tematu . Zegar skończony i przetestowany . Podziękowania dla autora za pomoc . Kilka krótkich filmów z pracy zegara wykonane telefonem . https://filmy.elektroda.pl/11_1551555088... https://filmy.elektroda.pl/90_1551555174... https://filmy.elektroda.pl/15_1551555225... https://filmy.elektroda.pl/89_1551555287... Jedna z dwóch gier...
https://obrazki.elektroda.pl/9151185000_... Autor poniższego zestawienia jest inżynierem i konsultantem wsparcia dla systemów wbudowanych. W swojej karierze poznał on szereg różnych architektur mikrokontrolerów, różniących się wydajnością, wyborem peryferii, poborem zasilania etc. Wybór odpowiedniego układu stanowi zawsze o sukcesie...
Właśnie w datasheecie, 157 strona dokładnie jest napisane, że rejestr dzieli się na dwie części. Bity 0-15 służą do wysterowania na logiczne 1 pinów od 0 do 15 poprzez wstawienie tam wartości logicznej 1, oraz bity 16-31 służą do wysterowania logicznie na 0 pinów od 0 do 15 także poprzez wstawienie tam wartości logicznej 1. https://obrazki.elektroda.pl/3431699300_...
Witam drogich użytkowników, mam problem z poprawnym zaprogramowaniem trybu oszczędzania energii w STM32. Znalazłem przykładowy kod który mógłbym wykorzystać aczkolwiek nie wiem jak poprawnie zdefiniować funkcję NVIC wywołaną na samym początku listingu. Gdyby ktoś miał chwilę i mógł mi z tym pomóc byłbym bardzo wdzięczny. :) Dopiero zaczynam przygodę...
Nie jest to zagadka, tylko znajomość priorytetu operatorów czyli czegoś bardzo podstawowego: Kolejny post zupełnie nie na temat... Tak jakby się ktoś pytał o priorytet operatorów w wyrażeniu w którym jest tyle nawiasów... (at)OlegTor , zapis o który pytasz jest głupim sposobem zrobienia zaokrąglenia wartości "do góry" do wielokrotności liczby 4. Dla...
Znowu małe pytanie... Działa Ci operator new, czy coś trzeba jeszcze dodać ? U mnie procesror wchodzi w HardFault_Handler jak próbuje go użyć : Hmm... W aplikacji testowej jest sporo alokacji dynamicznych w teście kolejek, choć są one jednowątkowe oraz dosyć zorganizowane (po kilku alokacjach jest zawsze dealokacja wszystkiego). Tak więc odpowiedzieć...
Dzięki wielkie za pierwszą podpowiedź jutro sprawdzę sugestię, ale priorytety w NVIC rozumiem : Hmmmmmm... czyli w pierwszej grupie TIM1 ma preemption=0 i sub=2 natomiast systick jest w 0 grupie i ma preemption == sub == 0 czyli wg mnie powinien wywłaszczać. P.S: W timerze delay jest mi potrzebny bo wysyłam dane po rs485 i muszę odczekać czas ze względu...
Następnie Ty zerujesz bit ACK i bit Stop powodując zawieszenie się magistrali. Ogarnij się.... Czyli ten fragment kodu jest błędny ? Jest w 100% poprawny.... Tak naprawdę jest to żądanie STOPU a nie jego wygenerowanie. Przed tym warunkiem ostatniego bajtu masz odczyt z DR oznacza to, że JUŻ TRWA odbiór ostatniego bajtu, po którym zostanie wygenerowany...
Witam Jestem początkującym w temacie FreeRTOS i mam parę problemów ze zrozumieniem działania tego systemu. Jeśli mam jakąś obsługę przerwania i w czasie jego wystąpienia ustawiam semafor na który czeka jakieś zadanie o niskim priorytecie (albo nie najwyższym) to po wyjściu z tego przerwania to zadanie będzie niezwłocznie wykonywane czy system poczeka...
W tym wątku jest wszystko już napisane. Masz np 16 priorytetów przerwań. 16 bo tyle np w STM32 zaimplementował producent. W rejestrach priorytetów te 16 priorytetów jest reprezentowane przez 4 najstarsze bity XXXX----. Bity X mogą być jeszcze rozdzielone tworząc grupy priorytetów i subpriorytety np GGSS----. G oznacza numer grupy, S oznacza numer subpriorytetu....
Z tego co piszesz wynikało by, że w zasadzie tego kodu się po prostu nie da używać w sposób przewidziany przez autorów (; Rozumiem, że aby to ominąć to funkcję `USBH_Process(&hUSBHost);` musiałbym wywoływać np. z przerwania od timera, które miałoby taki sam priorytet jak przerwanie od USB?
Dlatego, że procedury obsługi peryferiala USB na niskim poziomie w STM32 nie są wielobieżne. Każdy program, który wysyła coś po USB w (za przeproszeniem) pętli głównej Programowanie wielowątkowe, systemy operacyjne, mówi to Panu coś, Panie BlueDraco:) W moim rozwiązaniu mam klasę USB która ma w sobie wątek odpowiedzialny za obsługę niskiego poziomu...
Co do priorytetów, u mnie dla LPC1769 jest ustawione tak: [syntax=C]/* The lowest priority. */ #define configKERNEL_INTERRUPT_PRIORITY ( 31 << (8 - configPRIO_BITS) ) #define configMAX_SYSCALL_INTERRUPT_PRIORITY ( 5 << (8 - configPRIO_BITS) )[/syntax] Dla STM32 configPRIO_BITS jest równe 4. U siebie też tak masz? Z tym przesunięciem bitowym?...
Wg mnie się da - http://infocenter.arm.com/help/index.jsp...
Trochę rozpustnie to napisałem poprawiłem kod jest bardziej zwięzły. O program oczywiście po proszę. Gaskoin - Twój program znalazłem na elektrodzie już wcześniej. Między innymi z niego korzystałem pisząc swój. Rzeczywiście nie wiele się różnią tym bardziej nie wiem gdzie leży problem. Zależy mi na stałym ciągłym pomiarze z dwóch wejść. Grupa Injected...
Witam, spotkała mnie sytuacja z której nie mogę wybrnąć. Tzn do transmisji używam I2C, które w kontrolerze przerwań ma priorytet 1 dla obsługi zdarzen oraz 0 dla błędów. Kiedy uruchamiam Timer 17 skonfigurowany jako PWM(to co odczytane zostanie z I2C ma trafić do PWM'a), to transmisja stoi. Od Timera 17 nie generuje przerwań , wiec nic nie powinno zwieszać...
Akurat biore sie za jeden projekcik i doszedlem po wstepnej analizie ze dalsze pisanie bez RTOS-a to bedzie lekki horror :) Dzisiaj na tapete wzielem ChibiOS/RT... niestety nie mam wiekszego doswiadczenia z RTOS-ami na STM32 :) Ladnie udalo sie odpalic miganie LED-ami na wlasnej plytce itd. Ale niejako sam RTOS przez warstwe HAL sprawia mi troche problemow...
To obniż priorytet - wtedy nie będzie Cię blokowało. Ewentualnie musiałbyś zrobić tak, że cały driver jest RTOSowy, z transakcjami itd., przez co zakończenie jakiejś operacji dopiero budzi taska, nie musisz się bawić w takie pętle. No chyba że nie rozumiem opisu problemu który napotkałeś... P.S. "written" 4\/3!!
Wszystko fajnie, pod warunkiem, że chce się używać STM32. 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ę...
Teraz mam problem z przerwaniami od końca konwersji ADC1. Działanie układu wygląda tak jakby mikrokontroler nie wchodził w obsługę uchwytu przerwania od przetwornika ADC 1,2. Konfiguracja przetwornika: void init_adc (void) { // Niezależny tryb pracy // Włączenie przerwań od końca przerwań - EOC ADC1->CR1 = ADC_CR1_EOCIE ; //Wybór czasu...
Piszę do swojego RTOSa driver dla SPI używający DMA. W rozważaniach ograniczmy się do STM32F0, ale ogólnie rozchodzi mi się o wszystkie układy STM32 które mają SPI wyposażone w FIFO _ORAZ_ DMA które FIFO nie ma (czyli najgorsza możliwa kombinacja). Generalnie wszystko jest w miarę proste i logiczne, ale zastanawiam się nad obsługą błędów, a konkretnie...
Jestem początkujący jeśli chodzi w ogóle o mikrokontrolery i programowanie także proszę o wyrozumiałość. Na tej płytce jest dioda LED podłączona do portu PA5. Jeżeli chcemy ją zapalić to używając rejestru BSRR piszemy w programie: GPIOA->BSRR |= 1 << 5; a gasimy GPIOA->BSRR |= 1 << 21; nurtuje mnie taka sytuacja while(1){ GPIOA->BSRR...
Nie powinno zatrzymywać się na wartości AAR tylko liczyć dalej (przekręcić się). Timer musi być zle skonfigurowany. Poniższy kod na pewno działa :) // konfiguracja timera TIM_DeInit(TIM2); //Konfiguracja timera do zliczania impulsow z enkodera TIM_ITConfig(TIM2, TIM_IT_Update, DISABLE); TIM_EncoderInterfaceConfig(TIM2, TIM_EncoderMode_TI1,TIM_ICPolarity_Falli...
Jakbyś nie zauważył to inna rodzina procesorów ;-) W użyciu jest lepsze. Inaczej po co w tamtych procesorach stosowano by bit band? Albert W STM32 też taki zapis można wykonać jedną instrukcją. Mimo, że są oddzielne rejestry do ustawiania i kasowania bitów. Porty są 16bitowe a jeden z tych rejestrów jest 32bitowy. Zapis do starszych 16b powoduje kasowanie...
Cze, Od jakiegoś czasu rozwijam swoją konstrukcję sterownika do stacji pogodowej. Projekt robi się coraz większy i większy i w końcu dotarłem do etapu, w ktorym rozważam użycie jakiegoś RTOSa. Mam dużą bibliotekę własnego kodu obejmującą takie rzeczy jak kompleksowa obsługa komunikacji po USART czy I2C, mam pełną obsługę konsoli tekstowej. Do tego używam...
witam, mam podobny problem, nie wiem co robię źle, chcę zapalić diodę podłączoną do PB0 za pomocą przerwania od przycisku podłączonego do PC7 lub 8. po wgraniu kodu przerwanie od SYSTICK ładnie działa, zapala i gasi na zmianę diodę na PB1, natomiast dioda na PB0 swieci się cały czas i nie ma żadnej reakcji na naciskanie przycisku.... poniżej kod.
hohoh Tymon, szczerze to nie czytałem całego tego dokładnie, ale na pierwszy rzut oka to czy to nie jest "przekombinowane" jesli chodzi o nasz problem? ;p Zajmuje to dość trochę pamięci, tworzenie jakichś tablic wskaźników do struktur w takim przypadku to też dość nieciekawa sprawa. Bardzo malutko to pamięci zajmuje: break . Wtedy każde zadanie o malejącym...
Początek programu FreeRtos wygląda tak: /* Private define ----------------------------------------... #define LED_TASK_STACK_SIZE ( configMINIMAL_STACK_SIZE ) #define LCD_TASK_STACK_SIZE ( configMINIMAL_STACK_SIZE ) #define USART_TASK_STACK_SIZE ( configMINIMAL_STACK_SIZE ) #define LED_TASK_PRIORITY ( tskIDLE_PRIORITY + 1 ) #define...
No bo wciąż ustawiasz rejestr IMR "odwrotnie" - zajrzyj do manuala co oznacza 0, a co oznacza 1. I w ramach testów zrezygnuj z ustawiania jakichkolwiek priorytetów przerwań czy czegokolwiek z nimi związanego. 4\/3!!
Przerwania, w odróżnieniu od starych ARMów są w całości zarządzane przez ARM'a czyli CortexMx. W dokumentacji ARM znajdziesz opisy rejestrów i jako to działa. Każdy producent, taki jak ST zmienia znaczenie linii przerwań, definiując je po swojemu za wyjątkiem kilku pierwszych zarezerwowanych przez ARM. Ponadto, Cortex'y mają możliwość nadania przerwaniom...
Na priorytet zawsze jest 4 bity czyli możliwe jest 16 poziomów priorytetów. Natomiast to jak to podzielisz ma ułatwić programiście życie i zapanowanie nad priorytetami poprzez łączenie je w grupy.
Witam, Z freeRTOSem dopiero się zapoznaje, mam kilka pytań odnośnie kolejek, bazuje na tutorialu twórcy tego systemu, lecz nie do końca rozumiem niuanse przez język angielski. Mam przykładowo 2 zadania, jedno wysyła dane do kolejki, drugie ma je odbierać. Odbiornikiem jest vTaskLCD(); który ma wysłać dane do wyświetlacza, natomiast vSenderLCD(); wysyła...
Skoro nie masz problemu z timerem, to po co w ogóle o nim pisać i po co testować program który ma też przerwania od timera? Niemniej jednak na początek brawa za to, że NIE używasz słynnego i popularnego badziewia (; Wg mnie (skoro chodzi o pin zerowy), powinieneś konfigurować rejestr AFIO->EXTICR[0], a nie 1. Problemem jest manual niezgrany z plikiem...
W ciągu ostatnich dwóch lat w EP pojawił się cykl artykułów poświęconych programowaniu STM32 bez SPL z wieloma przykładami. A i ważna uwaga co do tekstu: w aktualnych, nowych wersjach plików nagłówkowych dla F4 już nie ma BSRRL i BSRRH, a jest BSRR (co powoduje, że programy napisane pół roku temu już się nie kompilują z nowymi plikami nagłówkowymi)....
Witam, Używam FSMC do obsługi wyświetlacza, a timera do generowania przebiegu który steruje serwomechanizmami. Zauważyłem taką przypadłość, że jak coś zmieniam na ekranie to serwa lekko drgają, co zapewne jest spowodowane jakimś opóźnieniem w wysterowaniu wyjścia przez zegar i/lub uruchomieniu przerwania które ładuje następna wartość do rejestru (jeden...
Rozumiem, po prostu czytałem manuala i tam wypisywali o konkretnym bicie, myślałem że RSTCAL to właśnie ten konkretny bit i nie mogłem znaleźć nic o masce o której wypisywaliście więc nie miałem się do tego jak odnieść, aż w końcu dotarłem do tego: Bez obrazy, ale to są podstawy programowania w C na mikrokontroler. Żadnej obrazy, ja to wiem, bo zaczynam...
1. Pierwsze 14 wyjątków pochodzi z rdzenia (2+14 adresów w tablicy). Te z rdzenia mają numery ujemne lub 2..15, spoza rdzenia - nieujemne lub od 16 w górę. 2. Jw, ale część wyjątków rdzenia też ma ustawiany priorytet. 3. Najlepiej zapomnij o "grupowaniu". W praktyce nie ma żadnego sensu korzystanie z tego. Domyślnie po reset mamy zawsze konfigurację...
(at)Piotrus_999 czytanie ze zrozumieniem sie kłania. Proszę: http://bfy.tw/EXOL
1. Masz odpowiednie definicje rejestrów i wartości do wpisania w nagłówkach CMSIS. 2. Nie. Wpisujesz bit PENDSVSET i przerwanie jest pending ;) 3. Nie ma najniższego priorytetu. Trzeba ustawić. Jeżeli pytanie pierwsze jest przeczące to czy dobrze rozumiem, że wystarczy wpisać 1 w PENDSVSET a wychodząc 1 w PENDSVCLR ? Clear sie sam robi po wykonaniu...
12 cykli - tyle zajmuje przejście do obsługi przerwania 6 cykli - tyle zajmuje przejście z przerwania do przerwania o wyższym priorytecie 6 cykli - tyle zajmuje przejście do przerwania o niższy priorytecie bezpośrednio po zakończeniu przerwania o wyższym priorytecie 12 cykli - tyle zajmuje wyjście z przerwania. Ta zasada tyczy się wszystkich przerwań
Witam A jak masz ustawione priorytety przerwań? Przypadkiem przerwanie od DMA nie wywłaszcza Ci przerwania od DCMI? Proponował bym sprawdzić Status Register w przerwaniu DMA, co jest źródłem przerwania, sam ostatnio miałem taki przypadek, że mimo tego, że nie włączałem przerwania od Start Conversion[SC] a jedynie End Conversion[EC] w ADC, kiedy ADC...
Cześć, Nie dawno zacząłem przygodę z STM32. I mam duży problem nad którym siedzę już parę dni. Chciałem stworzyć prostą komunikację z komputerem gdzie przez terminal odpowiednimi komendami będzie można gasić i zapalać diody i w drugą stronę przesyłać które diody są zapalone. nie wiem gdzie jest tu błąd więc Ustawienie GIPO void GPIO_Conf(void) { GPIO_InitTypeDef...
Ok, rozumiem :) no tak, właśnie doczytałem z tym SysTickiem :P to tylko pozostaje to SetPriority - ustawiać czy nie?:P a jeśli tak, to jakie liczby podaje jako priorytet?
Panowie dziękuję za pomoc ale połowę z tego zrozumiałem, więc nawet nie próbowałem tego robić bo wiem że i tak nic z tego nie będzie. Zrobiłem tak: skonfigurowałem ADC w CubeMX, bez DMA. Wygenerowałem kod. Z pliku adc.c usunąłem linijki odpowiadające za włączenie dwóch kanałów: [syntax=c]//sConfig.Channel = ADC_CHANNEL_1; //sConfig.Channel = ADC_CHANNEL_2;[/syntax]...
musisz więc wyłączyć JTAGa, bo on zwykle ma priorytet. 4\/3!!
priorytet windows huawei priorytet priorytet wiadomości
pralka samsung falownik silnika migająca kontrolka płynu kierownica tracer kabel
strojenie stereodekodera haier pompa
Mitsubishi Outlander brak świateł mijania – żarówki i bezpieczniki sprawne, reszta świateł działa Skrypt .bat do zabezpieczenia folderu hasłem w Windows – przykładowy kod, ograniczenia, porady