Mikrokontrolery 8-bitowe vs 32-bitowe

Mikrokontrolery 8-bitowe vs 32-bitowe

Upowszechnienie relatywnie tanich mikrokontrolerów z rdzeniem 32-bitowym wywołało trwający do dzisiaj spór o to, czy mikrokontrolery 8-bitowe są jeszcze potrzebne i czy jest sens ich stosowania. Producenci nowych elementów prześcigają się w uzyskiwaniu dużej wydajności nowoczesnych, 32-bitowych rozwiązań. Warto je poznać i stosować, jeżeli nie chce się zostać technicznym dinozaurem. Jednak mikrokontrolery 8-bitowe były bardzo szeroko stosowane na całym świecie nawet w stosunkowo wymagających aplikacjach i do dziś nie zniknęły z rynku, a wręcz stale obserwujemy premiery nowych modeli zaskakujących wieloma praktycznymi rozwiązaniami.

Wielu konstruktorów i programistów doskonale zna układy serii ATmega, PIC16, czy STM8, na których poznawali tajniki techniki cyfrowej i które stosowali w różnych rozbudowanych konstrukcjach. Natomiast nowe rozwiązania zawsze obarczone są pewnym ryzykiem – czy to prawidłowości funkcjonowania, czy długoczasowej dostępności. Dlatego wiele osób nie miało zamiaru bezwzględnie poddawać się, tak mocno kreowanej presji nowoczesności. Do tej pory, na 8-bitowcach dało się zrobić bardzo dużo, a w przyszłości zapewne da się zrobić jeszcze więcej. Nie tak łatwo porzucić wieloletnie doświadczenia, setki godzin żmudnych dociekań i analizowania kodu wynikowego kompilatora oraz możliwości stosowania wstawek asemblerowych w krytycznych fragmentach kodu.

Nowe technologie miały też kilka „chorób wieku dziecięcego”, do których możemy zaliczyć problemy z szybkością układów peryferyjnych (taktowanie magistrali bloków peryferyjnych), tak zwane „puchnięcie kodu”, brak tanich lub darmowych narzędzi programistycznych (IDE, kompilatory, bloków peryferyjnych), programatorów, debuggerów, wsparcia w postaci modułów ewaluacyjnych, czy w końcu wsparcia środowiska entuzjastów. Wszystkie te przeszkody szybko znikały. W dodatku pojawił się nowy lepszy rdzeń – Cortex. Producenci układów 32-bitowych intensywnie pracowali nad wsparciem programowo-sprzętowym, a społeczność entuzjastów rosła błyskawicznie. Mikrokontrolery z rdzeniami Cortex bardzo szybko zyskały wielu oddanych zwolenników. Patrząc na ich możliwości techniczne i umiarkowaną cenę – trudno się temu dziwić. Pierwsze wrażenia były takie, że nic już nie uratuje układów serii AVR, czy PIC i zajmą one miejsce w historii podobne do lamp elektronowych.

Rysunek 1. Mikrokontroler AVR przeznaczony do zastosowań w branży motoryzacyjnej. Jest wyposażony w małą liczbę wyprowadzeń (8...20), szereg układów czasowo-licznikowych, podstawowe interfejsy komunikacyjne, komparator i przetwornik ADC. Pracuje z zasilaniem 2,7...5,5 V, w temperaturze –40...+125°C

Jednak od czasu, kiedy pojawiły się pierwsze w miarę tanie i dostępne mikrokontrolery 32-bitowe minęło już sporo czasu, a układy 8-bitowe nadal mają się nadspodziewanie dobrze. Nie dość, że są systematycznie rozwijane, to jeszcze można je bez problemu zakupić nawet w dużych ilościach. Pojawiają się nowe interesujące komponenty, wprowadza się innowacje przeznaczone do specyficznych zastosowań (rysunek 1), jak chociażby stosowane przez Microchip układy peryferyjne pracujące niezależnie od rdzenia. Rozwijane są też narzędzia projektowe, oferowane niemal zawsze za darmo: środowiska IDE, konfiguratory układów peryferyjnych, kompilatory C oraz rozbudowane biblioteki.

Nadal jest to sporny segment rynku mikrokontrolerów. Świadczą o tym choćby ciągłe próby wejścia w segment prostych aplikacji przez oferowanie 32-bitowych mikrokontrolerów z uproszonym rdzeniem Cortex-M0+. Są one dostępne w cenie bardziej rozbudowanych układów 8-bitowych, a mają większe możliwości. Nawet jeśli to się trochę udaje, to nie widać fali rezygnacji z mikrokontrolerów 8-bitowych. Dlatego ciągle aktualne pozostaje pytanie: jaki mikrokontroler wybrać: 8-bitowy, czy 32-bitowy? Wydaje się, że jeżeli mamy elementy w podobnej cenie, to zawsze lepiej jest zastosować ten o większych możliwościach, czyli mikrokontroler z 32-bitowym rdzeniem. Niestety w praktyce nie jest to takie proste.

Dobór do aplikacji

W przypadku takich dylematów pierwsza mądra rada jak się pojawia to taka, aby dobierać elementy adekwatnie do aplikacji. Jeżeli mamy do wykonania bardziej skomplikowane zadania wymagające większej mocy obliczeniowej, wykonywania zaawansowanych algorytmów związanych z obsługą protokołów sieciowych na przykład rodziny TCP/IP, stosowania zabezpieczeń informacji metodami kryptograficznymi, obsługi rozbudowanych graficznych interfejsów użytkownika HMI itp. to nie warto sobie zawracać głowy nawet rozbudowanymi mikrokontrolerami 8-bitowymi. Intuicyjnie wyczuwamy, że nawet gdyby podołały takim zadaniom, to najprawdopodobniej byłoby to okupione dużo większym nakładem pracy programisty. Poza tym wiele takich aplikacji musi mieć potencjał do późniejszej funkcjonalnej rozbudowy, co w przypadku zastosowania mniej wydajnych mikrokontrolerów może być problematyczne.

Należy wiedzieć, że stosowanie zasobnych w pamięć i rozbudowane układy peryferyjne szybkich mikrokontrolerów z rdzeniem 32-bitowym nie musi być okupione wnikliwym wczytywaniem się w dokumentację. Programiści mają do dyspozycji gotowe biblioteki lub całe tzw. frameworki, pozwalające pisać programy z pewnym stopniem abstrakcji – dostęp do układów peryferyjnych zapewniają funkcje warstwy HAL (hardware abstraction layer). Dzięki temu można się skupić na skomplikowanych algorytmach stosowanych w wyższych warstwach aplikacji. Przykładem takiego podejścia jest cały ekosystem przeznaczony do projektowania rozbudowanych interfejsów HMI zbudowanych w oparciu o zaawansowane mikrokontrolery z rodziny STM32.

Rysunek 2. Przykładowy moduł z interfejsem HMI zaprogramowanym z użyciem TouchGFX

Firma ST dostarcza bezpłatne narzędzie TouchGFX Designer, które w połączeniu z innymi narzędziami, takimi jak STM32CubeMX pozwala na relatywnie szybkie zaprogramowanie wieloekranowego interfejsu w wieloma widżetami i możliwością animacji (rysunek 2). Obsługa grafiki w takim zakresie jest nie osiągalna nawet dla zaawansowanego 8-bitowca.

Rysunek 3. Mikrokontroler serii XMC1300 przeznaczony do sterowania silnikami elektrycznymi. Jest wyposażony w 8 niezależnych układów czasowo-licznikowych o rozdzielczości nawet 64-bitów i taktowane sygnałem do 96 MHz. Ponadto ma sprzętowy blok realizujący złożone obliczenia – MATH co-processor

Kolejnym przykładem może być sterowanie silników BLDC. Proste zakręcenie osią silnika ze sterowaniem trapezowym to zadanie bardzo łatwe. Jeżeli mikrokontroler ma układy peryferyjne: generatory PWM i komparatory lub przetworniki ADC, to z bardziej skomplikowanym sterowaniem silnikiem bez czujnikowym poradzi sobie nawet jednostka 8-bitowa. Jednak w wymagających zastosowaniach stosuje się sterowanie 3-fazowe sinusoidalne lub sterowanie wektorowe. W takim przypadku trzeba w czasie rzeczywistym wykonywać szereg zaawansowanych obliczeń funkcji trygonometrycznych i nawet szybka 32-bitowa jednostka może wymagać wsparcia w postaci koprocesora zmiennoprzecinkowego (rysunek 3).

W złożonych systemach wbudowanych wykonywanie wszystkich zadań realizuje się z zastosowaniem systemu czasu rzeczywistego RTOS. Im szybszy mikrokontroler i im więcej ma pamięci tym bardziej efektywne będzie wykonywanie wątków. Tu również przewagę mają szybkie 32-bitowe mikrokontrolery, szczególnie te, które są wyposażone w mechanizmy zarządzania pamięcią. Kiedy jednak zadania stają się mniej wymagające przewaga 32-bitowców nie jest tak oczywista. Zalety dużego rdzenia stają się coraz mniej widoczne. Dlatego producenci jednostek z 32-bitowym rdzeniem kuszą klientów potrzebujących prostszych rozwiązań, np. ceną, czy środowiskiem projektowym i w końcu lepszym stosunkiem możliwości do ceny. Mikrokontrolery STM32G0 z rdzeniem Cortex-M0+ są tego klasycznym przykładem.

Rysunek 4. Nawet w najsłabiej wyposażonej serii – Value Line, mikrokontrolery STM32G031 oferują mnóstwo zasobów sprzętowych

Nawet w najgorzej wyposażonej serii Value Line STM32G031 (rysunek 4) dostajemy rdzeń Cortex M0+ taktowany z częstotliwością do 64 MHz, do 64 kB pamięci flash, do 8 kB pamięci RAM, 5-kanałowe DMA, szereg interfejsów komunikacyjnych: I2C, USART, SPI, 12-bitowy DAC ze sprzętowym oversamplingiem, 11 liczników i sprzętowy RTC. W wyższych seriach jest już tylko lepiej. W najwyższej serii Access and Encryption pojawiają się zaawansowane sprzętowe moduły szyfrujące AES, rozbudowane generatory PWM do sterowania silnikami, interfejsy USB ale też jednostka ochrony pamięci umożliwiająca wydajne działanie systemów RTOS.

Rodzina układów STM32G0 to tylko przykład, takich ofert jest znacznie więcej. Wydaje się, że jeżeli cena jest porównywalna, to wybór będzie oczywisty – powinniśmy zastosować ten o lepszych możliwościach. Możliwości funkcjonalne to istotny argument brany pod uwagę przy dobieraniu mikrokontrolera do aplikacji, ale nie jedyny.

Mikrokontrolery są elementami szczególnymi – mają niesamowite możliwości, które w dużej mierze zależą od oprogramowania, a przy jego tworzeniu duże znaczenie ma czynnik ludzki. Poza tym oprócz parametrów funkcjonalnych są też parametry elektryczne na przykład napięcie zasilania i związana z tym odporność na zakłócenia czy zakres napięć wejściowych przetworników cyfrowo-analogowych czy analogowo-cyfrowych. Mogą tez wystąpić ograniczenia natury technologicznej – przy małoseryjnej produkcji nie opłaca się stosować trudnych do przylutowania obudów stosowanych w najnowszych mikrokontrolerach. Po uwzględnieniu takich czynników, to co wydawało się oczywiste, mocno traci na znaczeniu.

Czynnik ludzki

Jednym z czynników determinujących nasze wybory jest przyzwyczajenie. Jeżeli używamy danego typu mikrokontrolera od lat i mamy pewność, że spełni on wymagania nowej aplikacji, to z pewnością go zastosujemy. Potencjalnie lepsze właściwości innego układu nie wpłyną na lepsze funkcjonowanie aplikacji. Jeżeli to co chcemy zrobić da się zrealizować na układzie typu ATmega, ATtiny, PIC16F, PIC18F, czy na nowej wersji 8051 (rysunek 5), to z pewnością taki zastosujemy. Mikrokontrolery 8-bitowe funkcjonują od ponad 40 lat i mają wielu czynnych konstruktorów z ogromnym doświadczeniem w ich programowaniu, więc dopóki będą dostępne to będą stosowane.

Rysunek 5. Jedna z nowych wersji mikrokontrolera 8051 – układ AT89C51CC03. Może być taktowany sygnałem do 60 MHz i zawiera wiele zawansowanych układów peryferyjnych, np. kontroler magistrali CAN

Ja używam różnych mikrokontrolerów, mam na koncie projekty z układami na rdzeniu Cortex oraz PIC32. Ale dla prostszych zadań stosuję moje ulubione Microchip PIC16F lub PIC18F, jeżeli jest to technicznie wykonalne. Dobrze je znam i nie muszę się niczego nowego uczyć, a poza tym są one prostsze w budowie i działaniu, więc łatwiej analizować wszelkie problemy. Korzystając z konfiguratora układów peryferyjnych mogę wiele zadań wykonać szybko i efektywnie. Oczywiście muszą być spełnione warunki zapewnienia całkowitej funkcjonalności bez kompromisów wynikających z prostej budowy rdzenia i posiadanych zasobów. Przeanalizowana musi być również możliwość rozbudowy o nowe funkcje, jeżeli taka jest przewidywana.

Z drugiej strony, każdy kto pracuje z bardziej rozbudowanymi układami, na przykład tylko z rodziną STM32 i ma do zrobienia projekt mniej wymagający, to bardzo będzie cenił możliwość użycia procesora ze znanym rdzeniem – Cortex-M0+. Całe środowisko projektowe jest wtedy identyczne. Podobne lub takie same będą też układy peryferyjne. Aplikacja może powstać bardzo szybko, bo programista praktycznie nie musi uczyć się niczego nowego i może wykorzystać swoje nawyki i przyzwyczajenia z programowania zaawansowanych projektów.

Kiedyś przeczytałem ciekawą opinię dotyczącą stosowania układów 8-bitowych. Autor sugerował, że te układy są chętniej stosowane przez inżynierów elektroników, ponieważ z racji relatywnie prostej architektury są łatwiejsze w programowaniu. Programiście jest łatwiej bezpośrednio panować nad układami peryferyjnymi, przerwaniami, bezpośrednią lokacją kodu i danych w pamięci. Układy peryferyjne są konfigurowane przez bezpośrednie zapisywanie rejestrów konfiguracyjnych. Dziś trudno zgodzić się z tą opinią. To stara szkoła programowania wymuszona przez historyczny brak wsparcia dostarczanego przez firmy zewnętrzne lub producenta mikrokontrolerów. A jeśli nawet to wsparcie istniało, to stać na nie było tylko duże firmy. Dlatego niemal wszystko trzeba było oprogramować samodzielnie. Dziś sytuacja wygląda inaczej.

Rysunek 6. Warstwa HAL „oddziela” programistę od sprzętu

Układy 32-bitowe są chętniej stosowane przez inżynierów z formalnym wykształceniem informatycznym, którzy lepiej czują się w programowaniu abstrakcyjnym, kiedy oddziela ich od sprzętu warstwa HAL (rysunek 6). Funkcje tej warstwy są dostarczane bezpłatnie i są dość dobrze udokumentowane. Powszechnie stają się też funkcje wyższych warstw aplikacji, jak wspomniany już generator grafiki ToychGFX, czy standardowo dostarczane stosy protokołów TCP/IP, Bluetooth, czy ZigBee. Młodsi inżynierowie mogą mieć mgliste pojęcie o szczegółach technicznych działania rdzenia czy układów peryferyjnych. Programowanie mikrokontrolera ma przypominać programowanie pod kontrolą systemu operacyjnego komputera PC czy pisanie aplikacji dla smartfona – jak najdalej od szczegółów technicznych sprzętu. To oczywiście duże uproszczenie, ale pokazuje wpływ różnych czynników nietechnicznych na nasze wybory.

Istniejące projekty

Jeszcze nie tak dawno mikrokontrolery 8-bitowe były jedynymi dostępnymi elementami tego typu w wielu obszarach techniki. Jednostki 16-bitowe, czy 32-bitowe stosowano w naprawdę wymagających systemach, a  same układy oraz narzędzia programowe były bardzo kosztowne. Te uwarunkowania przyczyniły się to tego, że powstało bardzo wiele urządzeń ze sterownikami 8-bitowymi. Są dopracowane sprzętowo i programowo i pracują niezawodnie, dlatego ciągle się sprzedają. Z technicznego czy ekonomicznego punktu widzenia nie ma żadnych przesłanek, aby cokolwiek zmieniać i stosować inną architekturę dla samej zmiany. To zawsze będzie się wiązało z kosztami, problemami technicznymi, koniecznością czasochłonnego testowania, a nawet ponowną certyfikacją. W takim przypadku pozostawanie przy sprawdzonym rozwiązaniu jest optymalne, a to powoduje, że mikrokontrolery 8-bitowe są nadal potrzebne.

Jeżeli sami programujemy lub mamy w zespole programistów bardziej doświadczonych w programowaniu jednostek 8-bitowych to jest to kolejny argument, żeby próbować dalej pracować z tymi elementami. Jak już wspomniałem – filozofia wydajnego programowania mikrokontrolerów 32-bitowych wymaga innego podejścia i doświadczenia. Trzeba albo się tego nauczyć albo zatrudnić kogoś kto to doświadczenie już ma, a to wiąże się z czasem i kosztami.

Innowacyjność

Z drugiej strony, jeżeli mamy produkt nie modernizowany przez lata, to brak innowacji może się stać zagrożeniem z powodu zmniejszenia lub całkowitej utraty jego konkurencyjności. Dlatego powinno się przeanalizować czy produkt ma wymagany potencjał rozwojowy. Przy projektowaniu należy przewidywać, kiedy może nastąpić tak zwana śmierć funkcjonalna, rozumiana jako brak możliwości dodawania nowych funkcji.

Rysunek 7. Mikrokontrolery serii PIC16F18Q41 to wyjątkowo szybkie i dobrze wyposażone układy. Pracują z zasilaniem od 1,8 do 5,5 V, mogą być taktowane sygnałem o częstotliwości do 64 MHz, a wśród układów peryferyjnych znajduje wzmacniacz operacyjny o paśmie do 5,5 MHz, 12-bitowy ADC i 8-bitowy DAC, 8 układów czasowo-licznikowych oraz inne bloki umożliwiające np. generowanie przebiegu o określonej częstotliwości

W zależności od przewidywanych wymagań można próbować pozostać w obszarze mikrokontrolerów 8-bitowych – one również są sukcesywnie rozwijane (rysunek 7), lub zacząć stosować mikrokontrolery z rdzeniem Cortex lub podobnym, chodź i to nie zawsze wystarcza. Wiele lat temu zaprojektowałem urządzenie bardzo narażone na uszkodzenie z powodu pracy w środowisku silnych przepięć. Musiało ono być niezawodne, bo nieprawidłowe działanie mogło spowodować spore wymierne straty materialne klienta. Sterownik bazował najpierw na mikrokontrolerze Intel 8048, a potem na Intel 8051. Był niezawodny, dobrze się sprzedawał i klienci mieli o nim bardzo dobre zdanie. Jednak zastosowany mikrokontroler z biegiem czasu nie był w stanie sprostać rosnącym wymaganiom funkcjonalnym. Ostateczne oczekiwania wzrosły na tyle, że trzeba było zastosować układy pracujące pod kontrolą systemu Linux. Zastosowanie mikrokontrolerów z rdzeniem Cortex to prosty sposób na skokowe zwiększenie możliwości sprzętowo-programowych urządzeń, które do tej pory były bazowały na starszych rozwiązaniach. Zawsze powinno się rozważyć ich stosowanie w przypadku konieczności rozwoju sprzętu i oprogramowania.

Wymagania niezawodnościowe i środowiskowe

Producenci mikrokontrolerów chwalą się niskimi poborami prądu możliwymi do uzyskania przez zaprogramowanie kilku różnych trybów oszczędzania energii. Te oszczędności wynikają z jednej strony z ograniczania szybkości taktowania, a z drugiej strony z coraz niższych napięć zasilających. Niski pobór energii to zawsze zaleta, ale niskie napięcia zasilania mogą być problemem w zastosowaniach przemysłowych, bo powodują, że mikrokontroler jest bardziej wrażliwy na zakłócenia EMI.

Żeby układ pracował poprawnie w niekorzystnym środowisku trzeba stosować szereg zabiegów technicznych zwiększających stopień skomplikowania urządzenia i w konsekwencji jego koszt. Zaprojektowanie sprzętu wymaga dużego doświadczeni a i przeprowadzania szeregu testów i badań. Trzeba pamiętać, że zakłócenia mogą się przedostawać nie tylko przez linie zasilające, ale też przez każde z wyprowadzeń mikrokontrolera: linie portów, interfejsów komunikacyjnych czy wejść przeznaczonych do pomiarów analogowych. Nieprawidłowy projekt powoduje, że urządzenie przestaje pracować prawidłowo, lub ulega uszkodzeniu. Mikrokontrolery zasilane napięciem 5 V będą pobierały więcej prądu, ale jednocześnie są wyraźnie bardziej odporne na zakłócenia w stosunku do tych zasilanych napięciem 3,3 V lub 1,8 V. Jeżeli jest taka możliwość, to lepiej zastosować elementy zasilane napięciem wyższym (rysunek 8).

Rysunek 8. Mikrokontrolery serii RX13 są przeznaczone do wymagających aplikacji przemysłowych. Są wyposażone sprzętowe bloki przyspieszające obliczenia oraz mogą być zasilanie napięciem 5 V

Dodatkowym czynnikiem podnoszącym odporność jest mniejsza gęstość upakowania tranzystorów na płytce krzemowej. Nowoczesne technologie produkcji pozwalają na wytwarzanie coraz mniejszych tranzystorów i coraz krótszych połączeń pomiędzy nimi. Dzięki temu układ może być tańszy, bo z jednego wafla krzemowego można wyprodukować więcej struktur mikrokontrolerów. Mniejsze rozmiary pozwalają tez na szybsze taktowanie mikrokontrolera i zwiększanie jego wydajności. To oczywiste zalety, ale takie struktury są też mniej odporne na uszkodzenia spowodowane przepięciami.

Mikrokontrolery 8-bitowe mogą być zasilane napięciem od 3,3 V do 5 V, przy czym jest to napięcie zasilania rdzenia i układów peryferyjnych. Można wybrać, czy chcemy uzyskać wyższą odporność na zakłócenia i zasilać układ napięciem 5 V, czy zasilać napięciem 3,3 V i zmniejszyć pobór prądu. Spotkałem się z sytuacjami, gdzie poszukiwane były stare serie mikrokontrolerów 8–bitowych: 8051, PIC16C (PIC16F) czy STM8/7, wyprodukowanych w starej technologii i zasilanych napięciem 5 V, do pracy środowisku szczególnie narażonym na zakłócenia EMI. Nowoczesne mikrokontrolery są zasilane napięciem 3,3 V, a sam rdzeń wymaga jeszcze niższego napięcia np. 1,8 V czy 1,1 V. Problem ten dostrzegł Microchip i wprowadził serię 16-bitowych mikrokontrolerów PIC24FVxxKA, których rdzenie mogą być zasilane napięciem do 5,5 V.

Oczywiście sterowniki, w których pracują mikrokontrolery zasilane niższym napięciem będą również poprawnie pracowały w zakłóconym środowisku, ale może to wymagać znacznie więcej dodatkowych zabiegów. Układ zasilania musi dobrze tłumić przepięcia, a wszystkie linie powinny być dobrze zabezpieczone od przepięć, a najlepiej izolowane galwanicznie od reszty układu.

Prototypowanie

Jednym z ważniejszych elementów projektu jest prototypowanie. W bardzo wielu przypadkach powinno się zbudować układ przeznaczony do wykonania testów i dopiero, gdy te testy będą zadowalające to można projektować PCB i budować prototyp. Nowoczesna mikrokontrolery często są umieszczane w obudowach trudnych do prawidłowego przylutowania bez specjalistycznego sprzętu – na przykład w obudowach BGA. To bardzo utrudnia prace małych firm nie posiadających odpowiedniego zaplecza. Producenci mikrokontrolerów próbują temu zaradzić i oferują w bardzo korzystnych cenach moduły ewaluacyjne pozwalające na przeprowadzanie testów.

To w jakiś sposób rozwiązuje problem testowania, ale dalej pozostaje problem prototypu i potem produkcyjny. Mikrokontrolery 8-bitowe ciągle są oferowane nawet w obudowach do montażu przewlekanego. To ułatwia pracę i powoduje, że jeżeli mikrokontroler spełnia wymagania techniczne i funkcjonalne, a urządzanie ma być wykonane w krótkiej serii to wybierana jest obudowa pozwalająca na jego wykonanie bez dodatkowych kosztów. Wygląda na to, że zapotrzebowanie na takie obudowy jest duże, bo firma Microchip swoje mikrokontrolery PIC16F nadal udostępnia również w obudowach PDIP.

Rysunek 9. Wiele układów 32-bitowych jest dostępnych w obudowach SMD dwurzędowych – względnie łatwych w montażu

Natomiast wiele układów 32-bitowych dostępnych jest w obudowach SMD dwurzędowych, które można w miarę łatwo montować na PCB (rysunek 9).

Radiowe moduły komunikacyjne

Protokoły transmisyjne przeznaczone do radiowego transferu danych mogą być bardzo rozbudowane i do ich implementacji potrzebne są określone zasoby. Pewnym kłopotem w ich implementacji jest wymagany określony czas reakcji na zdarzenia. Jeżeli aplikacja nie zareaguje w odpowiednim czasie to prędkość transmisji spada, pojawiają się błędy lub transmisja nie może być w ogóle realizowana. Dlatego chętnie są stosowane gotowe niezbyt drogie moduły integrujące gotową kompletną część radiową i szybki mikrokontroler z zawierający w pamięci firmware obsługujący jeden lub kilka protokołów transmisyjnych (rysunek 10).

Rysunek 10. Seria układów SAMR34 ma 32-bitowy rdzeń ARM Cortex-M0+ połączony z wbudowanym tranceiverem radiowym UHF

Może to być Wi-Fi, Bluetooth, ZigBee itp. Kiedy nasza aplikacja nie wykonuje skomplikowanych zadań, a potrzebuje na przykład transmisji Bluetooth, to może się okazać, że połączenie modułu komunikacyjnego z mikrokontrolerem 8-bitowym przez UART, lub SPI jest zupełnie wystarczające. Z drugiej strony nawet użycie wydajnego mikrokontrolera 32-bitowego, kiedy wykonuje on wymagające algorytmy sterowania może nie wystarczyć do pełnej niezakłóconej własnej obsługi protokołów transmisyjnych.

Urządzenia IoT

Internet rzeczy IoT to bardzo ważny obszar stosowania mikrokontrolerów. Żeby dobrze spełniały swoją funkcję muszą być wyposażone w radiowy tor łączności zapewniający bezpieczny transfer danych i oszczędność energii. Jednoczesne spełnienie tych warunków jest trudne do realizacji. Transmisja radiowa może nie wymagać dużo energii, jeżeli jej zasięg nie jest zbyt duży. Praca w zasięgu sieci Wi-Fi, czy połączenie Bluetooth 5.0 nie musi stanowić dużego wyzwania dla zasilania układów radiowych. Wspomniane wyżej moduły radiowe znacznie ułatwiają realizację kanału łączności radiowej.

Jednak połączenia radiowe na duże odległości (powyżej 1 km) wymagają stosowania specjalnych rozwiązań. W terenach słabo zurbanizowanych, gdzie nie ma infrastruktury Wi-Fi, czy nawet GPS mogą być stosowane specjalne standardy LoRaWan integrujące rozwiązania sieciowe z systemem radiowej transmisji na duże odległości LoRa. Są mikrokontrolery, które mają w swojej strukturze gotowe moduły transceiverów, na przykład układ ATSAMR34J18B. Seria SAMR34 ma 32-bitowy rdzeń ARM Cortex-M0+ połączony z wbudowanym tranceiverem UHF pracującym w pasmach 868 MHz i 915 MHz wspierającym standard LoRa z modulacją FSK (rysunek 10). Rdzeń może być taktowany maksymalną częstotliwością 48 MHz. Wbudowany moduł kryptograficzny AES ze sprzętowym generatorem liczb losowych pozwala na kodowanie transmisji i zapewnienie jej bezpieczeństwa. Takie gotowe rozwiązania wydają się idealne do aplikacji z zakresu IoT.

Rysunek 11. Moduł AVR-IoT WA to platforma demonstracyjna bazująca na architekturze 8-bitowej mikrokontrolerów AVR. Zawiera mikrokontroler ATmega4808, układ szyfrujący ATECC608A i moduł łączności Wi-Fi WINC1510

Urządzenia IoT nie muszą mieć wbudowanych szybkich, dobrze wyposażonych, a przez to niestety drogich mikrokontrolerów. Pojawiły się rozwiązania zawierające mikrokontrolery 8-bitowe – jednym nich jest moduł moduł AVR-IoT WA (rysunek 11). Jest to platforma demonstracyjna bazująca na architekturze 8-bitowej mikrokontrolerów AVR, zaprojektowana do testowania rozwiązań IoT wykorzystujących łączność Wi-Fi. Zastosowano tu mikrokontroler ATmega4808, układ szyfrujący ATECC608A i moduł łączności Wi-Fi WINC1510. To z czym nie mógłby poradzić sobie 8-bitowy mikrokontroler, wykonają układ szyfrujący i moduł łączności. Płytka PCB jest bardziej skomplikowana, ale oprogramowanie mikrokontrolera jest prostsze, bo nie ma potrzeby programowania szyfrowania i standardu transmisji Wi-Fi. To bardzo interesująca opcja dla konstruktora.

Podsumowanie

Wybór mikrokontrolera do aplikacji nie jest ani prosty, ani oczywisty. Najlepiej jest kierować się możliwościami technicznymi i ceną. Jednak mikrokontroler jest unikalnym elementem elektronicznym. Funkcjonalność urządzenia, w którym pracuje, zależy od parametrów technicznych układu: architektury rdzenia, częstotliwości taktowania, ilości pamięci, ilości i jakości układów peryferyjnych itp. Ale najlepszy nawet mikrokontroler musi być odpowiednio oprogramowany. Tutaj pojawia się czynnik ludzki: przyzwyczajenia, poziom wiedzy czy doświadczenie.

Można postawić pytanie: czy mikrokontrolery 8-bitowe zostaną zastąpione całkowicie lub prawie całkowicie przez teoretycznie lepsze mikrokontrolery 32-bitowe? Być może w dłuższej perspektywie czasu tak się stanie. Ale moim zdaniem lepiej, gdyby 8-bitowce nie zniknęły z rynku. Różnorodność oferty jest zawsze korzystna dla użytkowników i projektantów.

Szybki rozwój technologii powoduje, że coraz częściej i chętniej projektanci sięgają po jednostki jeszcze bardziej wydajne niż najbardziej popularne mikrokontrolery 32-bitowe z rdzeniem Cortex. Najbardziej znanym rozwiązaniem jest moduł Raspberry Pi pracujący pod kontrolą jednej z dystrybucji systemu Linux. Otwiera to przed projektantami zupełnie inne możliwości programowo-sprzętowe. Wymaga też przyswojenia nowej niemałej wiedzy i kolejnej zmiany nawyków. To w jakiś sposób pokazuje, że nie ma i chyba nie będzie uniwersalnego mikrokontrolera do wszystkiego. Z jednej strony potrzebujemy prostych i bardzo prostych rozwiązań i tu układy 8-bitowe radzą sobie doskonale. W części zastosowań ich użycie będzie się przenikało z układami wyposażonymi w Cortex-M0+, ale w wyborze konkretnych rozwiązań mogą, jak wiemy, decydować inne czynniki. W bardziej wymagających zastosowanych może być podobnie. Niska cena modułów pracujących pod Linuxem może kusić, aby je zastosować zamiast klasycznych rozwiązań z mikrokontrolerami.

Tomasz Jabłoński, EP

Artykuł ukazał się w
Elektronika Praktyczna
wrzesień 2021

Elektronika Praktyczna Plus lipiec - grudzień 2012

Elektronika Praktyczna Plus

Monograficzne wydania specjalne

Elektronik kwiecień 2024

Elektronik

Magazyn elektroniki profesjonalnej

Raspberry Pi 2015

Raspberry Pi

Wykorzystaj wszystkie możliwości wyjątkowego minikomputera

Świat Radio maj - czerwiec 2024

Świat Radio

Magazyn krótkofalowców i amatorów CB

Automatyka, Podzespoły, Aplikacje kwiecień 2024

Automatyka, Podzespoły, Aplikacje

Technika i rynek systemów automatyki

Elektronika Praktyczna kwiecień 2024

Elektronika Praktyczna

Międzynarodowy magazyn elektroników konstruktorów

Elektronika dla Wszystkich maj 2024

Elektronika dla Wszystkich

Interesująca elektronika dla pasjonatów