Obecnie największy udział w rynku mikrokontrolerów stosowanych w systemach wbudowanych (embedded) mają układy z architekturą 32-bitową, a jednak układy z rdzeniami 8- i 16-bitowymi nadal znajdują liczne zastosowania także w nowych produktach. Są one oparte na bardzo dokładnie poznanych rdzeniach, które to dzięki długiej obecności na rynku zostały wszechstronnie sprawdzone i dopracowane. Narzędzia do tych mikrokontrolerów również zostały na przestrzeni lat udoskonalone i projektant dysponuje obecnie zestawem bardzo dojrzałych kompilatorów i bibliotek. We współczesnych „prostych” układach 8-bitowwych implementuje się dodatkowe funkcjonalności, które znacznie poszerzają ich obszary aplikacji.
Istotnym czynnikiem sprzyjającym ciągłemu rozwojowi „prostszych” mikrokontrolerów 8- i -16 bitowych jest segment Internetu Rzeczy (Internet of Things, IoT). Wobec dużej liczby urządzeń i aplikacji pracujących w tym segmencie, przed wszystkimi układami z tego obszaru stawiane są wymagania dotyczące niskiego zapotrzebowania na energię elektryczną. Dotyczy to zwłaszcza inteligentnych czujników z łącznością bezprzewodową, urządzeń elektroniki noszonej (wereables), systemów informacyjnych zastępujących tradycyjne metki cenowe w sklepach, beaconów itp. Bardzo często urządzenia tego typu są zasilane bateryjnie, a użytkownicy oczekują długiego czasu pracy bez konieczności wymiany baterii. W tych zastosowaniach bezkonkurencyjne są mikrokontrolery 8- i 16-bitowe, które można łatwo wprowadzić (i szybko wybudzić) w tryb obniżonego poboru energii, w którym ich peryferia i/lub rdzeń przebywają w trybie energooszczędnym i są wybudzane tylko na czas potrzebny do wykonania koniecznych działań.
We współczesnych mikrokontrolerach stosowane są moduły peryferyjne mogące pracować niezależnie od rdzenia i realizować swoje zadania samodzielnie (sprzętowo), bez wybudzania energochłonnego rdzenia. Sprzyja to niewielkiemu poborowi energii i uwalnia moc obliczeniową stosunkowo niedużego mikrokontrolera, którego rdzeń może zostać przeznaczony do wykonywania innych zadań których wymagają współczesne aplikacje. Takie „niezależne” moduły peryferyjne, zaimplementowane w mikrokontrolerach można łączyć wewnętrznie w większe bloki pozwalające na realizację bardziej złożonych funkcji. Aby ułatwić projektantowi konfigurację modułów peryferyjnych pracujących niezależnie od rdzenia (ang. Core Indpendent Peripherals, CIP), producent zazwyczaj oddaje do dyspozycji użytkowników narzędzia z graficznym, przyjaznym użytkownikowi interfejsem.
Mikrokontrolerów cechujących się wyżej wspomnianymi cechami nie mogło zabraknąć w ofercie firmy Microchip. Przykładem takiego „prostego, pozornie wiekowego” mikrokontrolera z bardzo nowoczesnymi peryferiami jest przedstawiony na Ilustracji 1 mikrokontroler z interesującej rodziny AVR128DB.
Rodzina mikrokontrolerów AVR128DB łączy w sobie wydajność rdzenia AVR® o małym poborze prądu wraz z zestawem urządzeń peryferyjnych pracujących niezależnie od rdzenia oraz dużą liczbą wbudowanych peryferiów analogowych. Możliwość pracy przy napięciu zasilającym 5V zwiększa odporność na zakłócenia. Dokładny opis znajdziemy w dołączonej do tego artykułu karcie katalogowej.
Omówienie nowych możliwości należy zacząć od systemu obsługi zdarzeń „Event System”. Jest to potężne narzędzie odciążające rdzeń mikrokontrolera. Pozwala ono na ustanowienie prostych zależności między zdarzeniami. Instrukcje warunkowe zostaną wykonane bez udziału rdzenia, a nawet bez wybudzania go. Przykładem może być niezależna od kodu programu obsługa przycisków. Przekroczenie ustalonej różnicy potencjałów na komparatorze może skutkować na przykład wyzwoleniem przetwornika na określonym pinie, rozpoczęciem zliczania itp. Taka funkcjonalność ogranicza ilość niezbędnego do pracy urządzenia kodu i zwiększa prędkość reakcji całego mikrokontrolera.
Kolejnym bardzo ciekawym dodatkiem jest obecność konfigurowalnych komórek logicznych „Configurable Logic Cell”; jest to podobne do poprzedniego udogodnienie, również aktywne jest w trybie obniżonego poboru energii. Umożliwia wykonywanie operacji logicznych na sygnałach ze źródeł zewnętrznych i wewnętrznych (licznik, rejestr) i przenoszenie wyniku operacji do jednego z peryferiów lub pinów wyjściowych. Pozwala to uniknąć stosowania instrukcji warunkowych w kodzie programu. Moduł CLC wykonuje funkcje bramek logicznych (AND, OR, XOR, NOT i ich kombinacji), zatrzasków czy przerzutników bez pochłaniającej energię procedury wybudzenia rdzenia.
Następnym dodatkiem, bezcennym w pewnych zastosowaniach, jest wbudowany system wykrywania zera; „Zero Cross Detector”. Moduł ten służy do wyzwalania przerwań w chwili przekroczenia przez sygnał AC progu o zerowym potencjale (względem GND mikrokontrolera). Wbudowany w mikrokontroler układ może próbkować napięcie bezpośrednio z linii energetycznej – jedynym niezbędnym, pasywnym elementem będzie w takim przypadku wpięty szeregowo rezystor ograniczający natężenie prądu oraz (opcjonalnie) rezystor podciągający. Funkcjonalność ZCD pozwala na efektywne sterowanie triakiem (przyciemnianie świateł, regulacja ogrzewania), monitorowanie jakości energii (pomiar okresu) czy ograniczanie zakłóceń EMI w obwodach kontrolujących zasilanie danego urządzenia prądem zmiennym (załączanie w chwili, gdy sinusoida zbliżona jest do zera, eliminuje gwałtowne skoki napięcia i generowane przez nie zakłócenia elektromagnetyczne). Co więcej, peryferium może zostać skonfigurowane do sygnalizowania konkretnego rodzaju przekroczenia (zbocze wznoszące, opadająca lub obydwa). Sygnał ZCD nie musi być obsługiwany programowo i można go wyprowadzić na jeden z pinów I/O mikrokontrolera.
Ukłonem w stronę projektantów układów które komunikują się z urządzeniami zewnętrznymi jest moduł „Cyclic Redundancy Check (CRC/SCAN)”. Generowanie oraz weryfikacja sumy kontrolnej jest powszechnie stosowanym sposobem sprawdzania prawidłowości komunikacji między układami w systemach mikroprocesorowych. Programowa implementacja takiej funkcjonalności konsumuje dużo mocy obliczeniowej, co jest istotne zwłaszcza w przypadku 8-bitowych jednostek pracujących z ograniczoną w celu oszczędzania energii częstotliwością. Najnowsze mikrokontrolery od Microchip (zarówno PIC, jak i AVR) zostały wyposażone w peryferia, które samoczynnie generują sumę kontrolną (nawet w postaci 32-bitowego wielomianu) i umieszczają ją w dostępnym dla programu rejestrze. Funkcjonalność określana mianem SCAN pozwala układowi CRC na bezpośredni dostęp do pamięci mikrokontrolera, co dodatkowo usprawnia pracę z sumami kontrolnymi.
Ostatnim, ale jakże czasem istotnym modułem jest zaawansowany „Watchdog”. Nawet najlepiej zaprojektowane układy cyfrowe wykonujące bezbłędny i wielokrotnie zrewidowany kod, mogą ulec „zawieszeniu”. Ten problem może wystąpić z wielu powodów, bywa że nie związanych z funkcjami realizowanymi przez kod. Może to być przekroczenie dozwolonej temperatury pracy czy zakłócenia na linii zasilającej. Podstawową ochroną przed takimi sytuacjami są liczniki typu Watchdog (WDT), pracujące niezależnie od wykonywanego programu. W przypadku gdy wykonywanie instrukcji zajmuje dłużej niż to zostało przewidziane, WDT resetuje mikrokontroler. W przypadku rodziny AVR128DB możliwe jest zaprogramowanie „okna czasowego” (Window Mode Watchdog Timer, WWDT), w którym program ma zostać wykonany. W przypadku takiej kontroli, praca urządzenia zostanie przerwana i wznowiona od początku zarówno w przypadku zbyt długiego, jak i zbyt krótkiego okresu między odpowiedziami z rdzenia. W tym drugim przypadku istnieje możliwość, że część instrukcji nie została wykonana, co może mieć negatywne konsekwencje – zwłaszcza jeżeli pominięty blok operacji miał bezpośredni związek z ochroną obwodu lub operatora urządzenia (jak na przykład nieodnotowany sygnał z wyłącznika krańcowego).
Przykład użycia modułów CIP w konkretnych aplikacjach i korzyści jakie ich użycie przynosi przy tworzeniu obwodów realizujących złożone funkcjonalności zostały pokazane przygotowanych przez producenta filmach.
Tematem artykułu były przede wszystkim dostępne w układach serii AVR128DB peryferia CIP, ale warto wiedzieć, że funkcjonalność samych układów jest znacznie większa. W mikrokontrolerach z rodziny AVR128DB znajdziemy m.in. przetworniki A/C i 10-bitowy DAC (czyli przetwornik C/A), układ RTC (zegar czasu rzeczywistego), generatory PWM (w tym 12-bitowe generatory TCB przystosowane do pracy w układach zasilających), sprzętowe interfejsy USART, SPI i TWI), źródła napięcia odniesienia przydatne do prowadzenia precyzyjnych pomiarów, komparatory, możliwość generowania przerwań zewnętrznych na wszystkich pinach I/O. Układy AVR128DB wyposażono również we wbudowane wzmacniacze operacyjne (do 3 sztuk). W połączeniu z przetwornikami analogowo-cyfrowymi pozwalają one na szerokie i precyzyjne przetwarzanie sygnałów wejściowych. Mikrokontrolery posiadają również port wejścia-wyjścia przystosowany do pracy z różnymi poziomami logicznymi (od 1,8V do 5,5V). Dzięki temu zbędne staje się stosowanie zewnętrznych konwerterów – co jest kolejnym krokiem na drodze do miniaturyzacji i energooszczędności obwodów, w których zastosowane będą układy produkowane przez Microchip. Warto zapoznać się z pełną ofertą dostępną w katalogu TME obejmującą również odpowiedni zestaw uruchomieniowy.