ISIX-RTOS – przykłady w języku C: LCD+joystick+LED

Pierwsza seria artykułów zawierająca wprowadzenie do systemu ISIX z przykładami w języku C++ cieszyła się dużym zainteresowaniem wśród użytkowników mikrokontrolerów STM32. Napływające pytania skłoniły mnie do napisania drugiej wersji przykładów – tym razem napisanych w języku C.

ColdFire z USB: Flexis JM Badge Board

Mikrokontrolery ColdFire produkowane przez firmę Freescale należą do grona „klasyków” dzielnie stawiających czoła najazdowi ARM-ów. Mikrokontrolery z rodziny Flexis są także prekursorem popularnej obecnie „pinowej” kompatybilności różnych rodzin mikrokontrolerów, charakteryzuje je także – tracąca popularność – solidność wykonania, przejawiająca się niepokojąco niewielką liczbą errat…

ZL31ARM: obsługa GPIO, SysTick, PWM, EXINT i Watchdoga

Przykład obsługi portów GPIO w zestawie ZL31ARM (joystick, diody LED dołączone do GPIO), zegara SysTick (przerwania co 1 ms, zmiana stanu LED1 co 500 ms), licznika PWM (współczynnik wypełnienia impusu sterowany joystickiem gora/dol z wyjściem na LED2), obsługa przerwania zewnętrznego od joysticka i obsługa watchdoga.

ZL31ARM: obsługa ADC i DMA

Obsługa ADC (pomiar napięcia z suwaka potencjometru znajdującego się na płytce ZL31ARM) i za pomocą DMA albo zapisu do zmiennej w pamięci (ADConvertedValue) albo bezpośrednio do rejestru CCR1 timera TIM1.

Nowości w rodzinie STM32

Firma STMicroelectronics informuje o nowych mikrokontrolerach z rodziny STM32, wprowadzając jednocześnie ich nową klasyfikację, w ramach której podzielono je na trzy grupy (stan na grudzień 2010): – dostępną w sprzedaży serię F-1 (STM32F1xx), – planowaną do wprowadzenia do sprzedaży niebawem serię F-2 (STM32F2xx), – planowaną do wprowadzenia do sprzedaży serię L-1 (STM32L).

Funkcje API w obsłudze przerwań

Aby system mikroprocesorowy poprawnie radził sobie z zewnętrznymi zdarzeniami muszą być one obsługiwane za pomocą przerwań. Ma to szczególne znaczenia dla zadań krytycznych, w których nie może być mowy o zbyt dużych opóźnieniach w wykonaniu owego zadania, ani tym bardziej o pominięciu zdarzenia. Często nie zauważa się tego problemu, ponieważ wydaje się, że na przykład cykliczne sprawdzanie w pętli stanu danego wejścia jest wystarczające. Niestety takie podejście prędzej czy później powoduje generowanie błędów w pracy systemu. Jeżeli mamy do czynienia z projektem hobbistycznym, to nie jest to specjalnie dotkliwe, jednakże w przypadku rozwiązań komercyjnych nie można już sobie na takie błędy pozwolić.