Elektroda.pl
Elektroda.pl
X
Please add exception to AdBlock for elektroda.pl.
If you watch the ads, you support portal and users.

Porównanie 21 mikrokontrolerów kosztujących poniżej jednego dolara - część 1

ghost666 27 Dec 2017 19:02 6099 1
Nazwa.pl
  • Porównanie 21 mikrokontrolerów kosztujących poniżej jednego dolara - część 1
    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 projektu. Kierować się możemy różnymi kryteriami, tak subiektywnymi, jak i obiektywnymi.

    W roku 2017 pojawiło się na rynku mikrokontrolerów wiele nowych, ciekawych rozwiązań. Zmieniły się też trendy w sektorze – coraz większy nacisk kładzie się na środowiska otwarte i pracujące na wielu platformach. Pojawiają się narzędzia do generowania kodu, które bezszwowo (przynajmniej w założeniu) integrują się z używanymi IDE. Finalnie, nie sposób nie zauważyć, że coraz więcej układów ośmiobitowych wypieranych jest przez mikrokontrolery z rdzeniem ARM Cortex-M0+.

    W poniższym zestawieniu porównamy 21 mikrokontrolerów, które łączy tylko jedna cecha – cena poniżej jednego dolara (wg cen na stronie sklepu DigiKey). Niektóre projekty wymagać mogą mocnych układów, taktowanych zegarami po kilkaset MHz, jednakże znaczna większość prac, jakie powierza się mikrokontrolerom może być zrealizowana na prostych, tanich układach.

    Jeden dolar to dobra kwota za MCU – dostaniemy za nią w miarę uniwersalny i dobrze wyposażony układ. Jeśli zejdziemy istotnie poniżej tej strefy, to już wpadamy w 6- bądź 8-nóżkowe układy mające kilkanaście bajtów pamięci RAMu i zupełny brak przetworników analogowo-cyfrowych (ADC) czy innych peryferii. Bardzo często mają tylko pojedynczy timer i kilka GPIO. Z kolei, jeśli wydać będziemy chcieli już kilka dolarów, to liczba dostępnych układów urośnie kilkukrotnie i pojawią się nie tylko uniwersalne układy, ale także bardzo wyspecjalizowane kości.

    Układy w poniższym zestawieniu dobrane zostały tak, by reprezentować różnorodne rodziny i architektury, z których każda ma swoje wady i zalety. Oprócz danych na temat konkretnego układu dowiemy się także co nieco na temat całej rodziny.

    Niestety – finalnie, na dole tego tekstu, ani w znacznie większym tekście na stronie autora tego artykułu, nie znajdziemy informacji, kto wygrał w tym zestawieniu. Ciężko opracować tak uniwersalny test, by zdecydować, jaki układ jest tutaj najlepszy, szczególnie, że jak wszyscy wiemy – najlepszy mikrokontroler to ten, który już znamy (jeśli jesteśmy inżynierem) lub najtańszy (jeśli jesteśmy księgowym). Nie zmienia to faktu, że warto zapoznać się z poniższym zestawieniem i wykorzystać zawarte w nim informacje do własnych potrzeb.

    Kryteria

    W poniższym zestawieniu uwzględnimy kilka kryteriów – jakościowych i ilościowych; obiektywnych i subiektywnych – opisujących mikrokontrolery. Podzielmy je na kilka kategorii:

    Parametry, obudowy i peryferia

    Jakie jest najszybsze taktowanie układu? Ile ma pamięci? Jakie peryferia? Ile kosztuje? W jakich wersjach jest dostępny? Im dana rodzina układów jest większa, tym elastyczniej dobierać można peryferia, co oznacza, że nie płaci się za niechciane moduły układu. Będzie to jednym z kryteriów naszej oceny.

    Podobnie jak elastyczność doboru elementu, tak i obudowa nie jest bez znaczenia. Jeśli dany mikrokontroler dostępny jest w wielu obudowach – to bardzo dobrze, bo różne są potrzeby. Profesjonalista produkujący system elektroniki noszonej poszukiwać będzie mikroskopijnych obudów np. CSP (2x2 mm), a hobbysta preferować będzie obudowy do montażu przewlekanego, które wykorzystać można na płytce stykowej.

    Jeśli chodzi o peryferia, to ich rodzaj i dostępność mocno zależy od architektury i producenta. Niektóre rodziny MCU mają szeroki wybór: DMA, wiele kanałów przerwań, różne poziomy oszczędności prądu, generatory zegarowe, przetworniki etc. Inne z kolei nie mają prawie nic. To, co bardziej nam pasuje zależy znowu od aplikacji układu. Nie ma sensu także oceniać poszczególnych MCU według wszystkich peryferii, aczkolwiek jest kilka punktów wspólnych, które warto pomiędzy poszczególnymi układami porównać.

    Komfort projektowania systemu

    Żadne porównanie MCU nie może być kompletne bez porównania środowisk pracy z nimi. Oczywiście jest to bardzo subiektywne zagadnienie, ale można wyłuskać szereg ważnych informacji, które da się obiektywnie porównać ze sobą: jaki jest wybór IDE, które sugeruje producent układów, jakie kompilatory wspierają dany układ, ile kosztuje IDE, na jakich systemach operacyjnych działa etc. Wszystkie te kwestie mają wpływ na komfort pracy z danym mikrokontrolerem.

    Ciężko jest porównywać poszczególne funkcje różnych IDE między sobą, ale kwestie, takie jak zarządzanie projektami, jakość generowanego kodu czy narzędzia do generacji kodów inicjalizacyjnych, biblioteki do peryferii układu itp. – to wszystko może być porównane pomiędzy poszczególnymi rodzinami mikrokontrolerów.

    W zestawieniu skupimy się na IDE sugerowanych przez producentów układów. Często istnieją różne alternatywy, jeśli chodzi o IDE i/lub kompilator, ale to tylko zaciemniłoby przedstawiany obraz.

    Finalnie, jeśli chodzi o komfort użytkowania, po krótce ocenimy też dostępność narzędzi deweloperskich: płytek prototypowych, programatorów, debuggerów etc. Ta część pracy jest bardzo ważna, szczególnie na początkowym etapie pracy z nową architekturą układów.

    Wydajność

    Tą cechę układu najprościej jest ocenić testami – benchmarkami. Autor opracował trzy testy, z czego dwa opiszemy w niniejszym materiale i przedstawimy część uzyskanych wyników.

    Pierwszym testem jest proste mruganie diodą – zmieniania stanu pinu wyjściowego w pętli while(1) najszybciej jak się da. Pozwala to na ocenę nie tylko jak szybka jest dana architektura, ale także, jak dobry jakościowo kod generowany jest przez narzędzia dedykowane dla tego układu. Programy uruchamiane na poszczególnych mikrokontrolerach zostały zoptymalizowane pod kątem prędkości, a do ich stworzenia wykorzystano wszelkie możliwe dedykowane funkcje, które przyspieszyć mają GPIO.

    Drugim testem jest filtr typu biquad, operujący na 64 próbkach. Jest to doskonały przykład realnej aplikacji, w jakiej pracować musi procesor. Przetwarzając w ten sposób dane, oczekujemy dobrej wydajności, pozwalającej na pracę w czasie zbliżonym do rzeczywistego.

    W tym teście 16-bitowe dane przetwarzane są poprzez filtr górnoprzepustowy drugiego rzędu (pasmo odcięcia 400 Hz). Częstotliwość próbkowania sygnału wynosi 8 kHz. Aby uniknąć problemów z porównaniem wyników pomiędzy układami, dane pobierane są z 64-elementowych macierzy w pamięci układu, a nie na przykład z przetwornika ADC. Zakończenie przetwarzania danych sygnalizowane jest zmianą stanu jednego z pinów. Prędkość oszacujemy mierząc, jak szybko zmienia się jego stan.

    Autor podczas tego testu mierzył także pobór mocy przez układ. Dane dotyczące tego parametru znaleźć można w źródłowym tekście.

    Zawodnicy

    W poniższej tabeli znajdziemy podsumowanie wybranych do porównania układów (z zaznaczeniem, z jakiej rodziny MCU pochodzą). Dużą część z tych układów to elementy wprowadzone do sprzedaży w ostatnim czasie, więc warto dokładniej zapoznać się z tą listą.

    Porównanie 21 mikrokontrolerów kosztujących poniżej jednego dolara - część 1
    Rodzina ATMEL TINYAVR - ATtiny1616: Nowe układy z linii tinyAVR, jakie Atmel wprowadził na rynek w 2017 roku wyposażone są w peryferia podobne do tych, jakie mają układy XMega: dwa mnożniki 8x8, nowy interfejs UPDI do debugowania i praca z zegarem do 20 MHz. Te nowinki powinny tchnąć trochę życia w tą rodzinę ośmiobitowych elementów.
    Porównanie 21 mikrokontrolerów kosztujących poniżej jednego dolara - część 1
    Rodzina ATMEL MEGAAVR - ATmega168PB: AVRy zaskarbiły sobie przyjaźń hobbystów, jako że były to pierwsze układy na rynku, które oprogramować można było w C w darmowym środowisku. Wersja B popularnej ATmega168 charakteryzuje się mniejszą kością w układzie, ale poza tym niewiele się zmieniło - układ nadal działa tylko z maksymalnie 8 MHz zegarem.
    Porównanie 21 mikrokontrolerów kosztujących poniżej jednego dolara - część 1
    Rodzina ATMEL SAM D10 - ATSAMD10D14A: Atmel stara się, by jego najtańsze układy z rdzeniem ARM Cortex-M0 zastąpiły wszystkie, oprócz najtańszych układy z rodziny TinyAVR. W układach z linii SAM D10 wszystko jest lepsze niż w tych małych AVRach - cena, wydajność i peryferia. Uzupełniają to zarówno dodatkowe możliwości analogowe układu, jak i doskonała konfiguracja pamięci w układzie.
    Porównanie 21 mikrokontrolerów kosztujących poniżej jednego dolara - część 1
    Rodzina CYPRESS PSOC 4000S - CY8C4024LQI: Rekonfigurowalna logika - klasyczny element układów PSoC - jest nieobecna w tym układzie. Taktowany zegarem do 24 MHz miniaturowy mikrokontroler od Cypressa ma zbudowane tylko podstawowe elementy analogowe i nie posiada wbudowanych modułów dla sensorów pojemnościowych, z których słynie firma. Oprócz dosyć nietypowego środowiska programistycznego układ ten tonie w morzu podobnych do niego kości z rdzeniem ARM.
    Porównanie 21 mikrokontrolerów kosztujących poniżej jednego dolara - część 1
    Rodzina FREESCALE KE04 - MKE04Z8VTG4: Freescale zaczął korzystać z rdzeni ARM Cortex-M0 w układach KE04 aby porzucić swoją własną rodzinę ośmiobitowych mikrokontrolerów. Przy pracy z zasilaniem od 2,7 V do 5,5 V, ogromną ilością timerów i opcji analogowych to krok w dobrą stronę. Proste środowisko do prototypowania rozwiązań na tych układach może odciągnąć wielu projektantów od innych, konkurencyjnych ekosystemów.
    Porównanie 21 mikrokontrolerów kosztujących poniżej jednego dolara - część 1
    Rodzina FREESCALE KL03 - MKL03Z8VFG4: O ile seria układów KE dedykowana jest do zastąpienia typowych ośmiobitowców, to układy z serii KL skupiają się na minimalizacji pobieranej mocy zasilania.
    Porównanie 21 mikrokontrolerów kosztujących poniżej jednego dolara - część 1
    Rodzina HOLTEK HT-66 - HT66F0185: Podstawowe 8-bitowe mikrokontrolery z klasycznym 4-cyklowym rdzeniem z pojedynczym akumulatorem (jak PIC16). Anemiczny zestaw peryferii i nieduża pamięć układu sprawiają, że mikrokontrolery od Holteka nie mają zbyt wiele do zaoferowania inżynierom. Z drugiej strony firma ta ma wiele układów dedykowanych do bardzo wąskich zastosowań, takich jak na przykład kontrola wysokiego napięcia itp.
    Porównanie 21 mikrokontrolerów kosztujących poniżej jednego dolara - część 1
    Rodzina INFINEON XMC1100 - XMC1100T016X0016: Układy z rdzeniem ARM od Infineona to częsty wybór w systemach kontrolnych. Nowe układy XMC1100 także chętnie wybierane są do tego rodzaju zadań. Dzięki 16k RAMu, elastycznym interfejsom komunikacyjnym, do 16 timerom i sześciokanałowemu ADC o prędkości próbkowania 1 MSPS te mikrokontrolery oferują bardzo wiele na tle układów z rdzeniem Cortex-M0.
    Porównanie 21 mikrokontrolerów kosztujących poniżej jednego dolara - część 1
    Rodzina MICROCHIP PIC16 - PIC16LF18325: Być może układy z rodziny 8051 są najsłynniejszymi mikrokontrolerami, to układy PIC16 mogą niebawem je dogonić. Nowe elementy z tej rodziny mają wiele nowych peryferiów, więcej timerów, interfejsów i lepsze moduły analogowe, jednakże nadal wszystko kontrolowane jest tym samym, dosyć powolnym rdzeniem.
    Porównanie 21 mikrokontrolerów kosztujących poniżej jednego dolara - część 1
    Rodzina MICROCHIP PIC24 - PIC24F04KL100: Rodzina drogich, 16-bitowych mikrokontrolerów, zaprojektowanych jako konkurencja dla MSP430. Jakkolwiek układy te oferują całkiem dobre parametry, to porównanie ich z innymi rodzinami, takimi jak PIC32MM - uwidacznia się wysoka cena mikrokontrolerów z rodziny PIC24 jak i inne wady, np. wysoki pobór prądu, nawet w czasie uśpienia.
    Porównanie 21 mikrokontrolerów kosztujących poniżej jednego dolara - część 1
    Rodzina MICROCHIP PIC32MM - PIC32MM0064: 32-bitowe układy od Microchipa da się bezpośrednio porównać z układami ARM, przynajmniej jeśli chodzi o wydajność. Niestety nie mogą pochwalić się taką samą elastycznością jak one. To doskonały 32-bitowy układ dla początkujących, który dodatkowo posiada peryferia typowe dla 'mniejszych' układów PIC18 i PIC24 oraz konfigurację opartą o fuse-bity.
    Porównanie 21 mikrokontrolerów kosztujących poniżej jednego dolara - część 1
    Rodzina NUVOTON N76 - N76E003AT20: Układ N76 to mikrokontroler w stylu 8051, ale posiada on kilka rozszerzeń w porównaniu do klasycznych peryferiów 8051. Są one istotnie wolniejsze niż EFM8 czy STC8, ale doskonale zadokumentowane. Firma oferuje bardzo wydajne wsparcie, a jednocześnie niską cenę.
    Porównanie 21 mikrokontrolerów kosztujących poniżej jednego dolara - część 1
    Rodzina NUVOTON M051 - M052LDN: Układy z rodziny M051 to zaawansowane procesory z rdzeniem Cortex-M0 pracujące z zegarem do 50 MHz. Wyposażone są zarówno w doskonałe timery, jak i zaawansowane peryferia komunikacyjne. Układy te posiadają doskonałe biblioteki z bogatymi funkcjami i doskonałe narzędzia deweloperskie. Piętą Achillesa tych układów są ograniczenia IDE, pojawiające się w nim błędy oraz duży pobór prądu.
    Porównanie 21 mikrokontrolerów kosztujących poniżej jednego dolara - część 1
    Rodzina NXP LPC811 - LPC811M001JDH16: Układy z rodziny LPC81x są znane wśród hobbystów głównie z powoduje słynnego LPC810 — 8-pinowego układu w obudowie DIP. Jednakże pamiętać trzeba, że to dosyć stara rodzina mikrokontrolerów z rdzeniem ARM. Maksymalny zegar taktujący te elementy to 30 MHz, a uboga lista peryferiów (np. brak na niej ADC) nie zachęca do korzystania z nich w nowoczesnych konstrukcjach. Z drugiej strony istnieje dużo kodu stworzonego dla tych elementów, który wykorzystać można przy realizacji kolejnych projektów.
    Porównanie 21 mikrokontrolerów kosztujących poniżej jednego dolara - część 1
    Rodzina RENESAS RL-78 - R5F102A8ASP: Mikrokontrolery z rodziny RL-78, wykorzystują sprytny hybrydowy rdzeń, który łączy 8-bitowej szerokości ścieżkę danych z 16-bitowym ALU. Jednocześnie układy te potrafią doskonale połączyć wysoką wydajność i niską cenę. Dodatkowo elementy te charakteryzują się niskim poborem mocy i niezłym wyborem peryferii. Środowisko programistyczne dla tych układów także jest całkiem niezłe, co czyni z nich poważną konkurencję dla układów z rodzin PIC24 czy MSP430.
    Porównanie 21 mikrokontrolerów kosztujących poniżej jednego dolara - część 1
    Rodzina SANYO LC87 - LC87F1M16: nie ma w układach LC-87 zbyt wiele cech, które można by polubić. Ogromne zużycie mocy, kiepskie peryferia i dosyć wysoka cena, a do tego starodawny i mało ergonomiczny interfejs użytkownika w środowisku deweloperskim. Wiek układu i narzędzi do niego wskazuje, że układy te nie nadają się raczej do nowych, perspektywicznych konstrukcji.
    Porównanie 21 mikrokontrolerów kosztujących poniżej jednego dolara - część 1
    Rodzina SILICON LABS EFM8 - EFM8LB11: Układy EFM8 Laser Bee to ciekawe, szybki (zegar do 72 MHz) mikrokontrolery z rdzeniem 8051, które są zarówno jednymi z najszybszych układów w tym zestawieniu, jak i pobierającymi najniższą moc zasilania. Dodatkowo towarzyszy im darmowe, wydajne IDE, więc hobbyści i profesjonaliści chętnie sięgają po układy z tej rodziny.
    Porównanie 21 mikrokontrolerów kosztujących poniżej jednego dolara - część 1
    Rodzina ST STM8 - STM8S103F3P6: Układy STM8 wyglądają jak ARM w przebraniu: 32-bitowa pamięć, wydajne obliczenia, niski pobór prądu, zagnieżdżony moduł do obsługi wektora przerwań - wszystko łudząco podobne do większego STM32. Gdyby tylko środowisko STVD było równie nowoczesne co same układy jak i i ich peryferia, to byłaby to bardzo ciekawa alternatywa.
    Porównanie 21 mikrokontrolerów kosztujących poniżej jednego dolara - część 1
    Rodzina ST STM32F0 - STM32F030F4P6: Układy F0 mają średniej klasy peryferia i dosyć duży pobór mocy, ale nadrabiają to doskonałym debuggerem i środowiskiem programistycznym, świetnymi parametrami, zwłaszcza większych układów z rodziny STM32 (np. zegar 180 MHz i 2 MB RAMu w STM32F4). No i oczywiście tanie i dobre płytki rozwojowe dla układów STM32 z linii STM32 Discovery.
    Porównanie 21 mikrokontrolerów kosztujących poniżej jednego dolara - część 1
    Rodzina STCMICRO STC8 - STC8A8K64S4A12: To nowa rodzina układów z rdzeniem 8051, które wykonują rozkazy z jednym cyklu zegara. Mikrokontrolery te mają dużo RAMu i sporo nowoczesnych peryferiów zintegrowanych w swojej strukturze. Dzięki dużym obudowom (do 64-pinów) można wykorzystać wiele z tych modułów w układzie. Niestety, jako że są to nowe układy, to wiele funkcji nie jest jeszcze dobrze zadokumentowane, a część dokumentacji i kart katalogowych nie została jeszcze przetłumaczona na angielski.
    Porównanie 21 mikrokontrolerów kosztujących poniżej jednego dolara - część 1
    Rodzina TI MSP430 - MSP430FR2111: Firma Texas Instruments od dawna zmniejsza pobór mocy w układach MSP430. Dzięki wbudowaniu pamięci FRAM, elastycznym stanom zasilania i szerokiemu zakresowi opcji taktowania układów (tak zewnętrznymi, jak wewnętrznymi zegarami) MSP430 pobierają bardzo mało mocy z zasilania. Niestety, trzeba zapłacić za to dosyć wysoką cenę - układy z tej rodziny potrafią być nawet dwa razy droższe niż niektóre konkurencyjne układy ośmiobitowe.


    Porównanie specyfikacji
    Rdzeń

    Układy podzielić można na dwa rodzaje – te, które wykorzystują własne rdzenie i te, które korzystają z licencji zewnętrznych. Spośród 21 układów w tym zestawieniu aż osiem korzysta z 32-bitowych rdzeni ARM – coraz popularniejszych na rynku, nawet w segmencie najtańszych elementów. Kolejne trzy mikrokontrolery wykorzystują dobrze znany 8-bitowy rdzeń 8051. Pozostałe dziesięć układów korzysta z własnych rdzeni: sześć 8-bitowych, trzech 16-bitowych i jednego 32-bitowego (PIC32MM – jedyny 32-bitowy nie-ARM).

    AVR

    Rdzeń AVR jest bardzo popularnym układem RISC, znanym ze swojej wydajności. Na rynku obecne są już od 1997 roku. Zestaw instrukcji omawianych tutaj układów, znany jako AVRe, posiada szereg wydajnych instrukcji m.in. do mnożenia w dwóch cyklach zegara, jak i wielu operacji działających w pojedynczym cyklu.

    Instrukcje rdzenia AVR są w większości 16-bitowe, a część jest 32-bitowych. W systemie są 32 rejestry, jednakże jedynie 16 z nich nazwać można ogólnego przeznaczenia, jako że nie wszystkie instrukcje korzystać mogą z rejestrów R0-R15.

    Rdzeń AVR w momencie pojawienia się na rynku dał ogromny skok jakościowy w porównaniu z układami 8051, będącymi wtedy u szczytu popularności. Mimo wielu usprawnień w rdzeniu 51 AVRy nadal są od niego istotnie szybsze, gdy pracują z dużymi ilościami danych w macierzach, które przechowywane mają być w rozszerzonej, 16-bitowej pamięci RAM.

    Warto też wspomnieć, że AVRy zaprojektowano z kompilatorem C na myśli. Dzięki 32 rejestrom kompilator może w dowolny sposób żonglować wieloma wartościami – 8051 ma tylko cztery banki po osiem rejestrów, co jednakże także ma swoje zalety np. podczas obsługi przerwań. Te z kolei w AVRach są dosyć słabo zaimplementowane. Jest tylko jeden priorytet przerwania w tych procesorach i bardzo często wejście do przerwania wymaga odkładania danych z rejestrów na stos.

    Inną wadą AVRów są niskie częstotliwości taktowania. Nawet najmocniejsze XMEGA nie pracują z zegarami powyżej 32 MHz, a zaprezentowane tutaj układy taktowane są 20 MHz. Wiele porównywanych tutaj układów korzysta z zegara 48 MHz czy nawet 72 MHz, co daje im dużo większą realną wydajność, nawet po uwzględnieniu wysokiej wydajności w przeliczeniu na cykl zegara AVRów.

    PIC16

    Gdy spojrzymy na całą rodzinę PIC16, to wydają się one bardzo dziwaczne. Szokuje wręcz, że zdobyły tak ogromną popularność. Procesor ten korzysta z 14-bitowej pamięci programu, mimo że jest układem 8-bitowym. Znacząco upraszcza to jego projekt, ponieważ 14 bitów pozwala na zapisanie wszystkich danych potrzebnych do wykonania instrukcji CPU. Pozostawia też dostatecznie dużego obszaru w słowie na zaadresowanie do 128 rejestrów lub 2K pamięci programu.

    Microchip nazywa architekturę PIC16 RISCem, ponieważ każda instrukcja (spośród 49) zajmuje dokładnie jedno słowo. Nazywana jest często architekturą 4T, jako że przetworzenie każdej instrukcji w języku maszynowym zajmuje dokładnie 4 cykle zegara. To nie do końca prawda, bo potrzebne są jeszcze dodatkowe cztery cykle, by uzyskać instrukcje, co daje w efekcie 8 cykli.

    Jako że realne układy mają więcej niż 128 bitów rejestrów czy 2K pamięci programu, to układy PIC posiadają dodatkowo rejestr BSR do selekcji banku. Pozwala to adresować więcej banków o takiej wielkości, ale wymaga (częstego) przełączania się pomiędzy bankami.

    Z uwagi na to, że PIC16 mają tylko jeden rejestr, nazwany W, programowanie w assemblerze jest proste. Wszystkie operacje polegają na przesuwaniu czegoś do W lub z W gdzie indziej.

    Omawiany układ może przechowywać program o długości 8192 14-bitowych słów. Microchip opisuje to, jako 14 KB pamięci flash, ale realnie każdy użytkownik powie, że pamięć ma 8 K – 8192 słów, bo np. przechowywanie 8192-elementowej macierzy zajmie całe dostępne 14 KB pamięci.

    PIC24

    Układy PIC10, 12, 15 i 18 to 8-bitowe procesowy z 12..16-bitową pamięcią programu. PIC24 to układ 16-bitowy z 24-bitowymi instrukcjami (ma to całkiem spory sens, patrząc na nazewnictwo). Jeśli poprzednie układy określimy jako 4T, to PIC24 to 2T – dwa cykle zegara na operacje.

    PIC24 adresuje pamięć w sposób pośredni, zwiększając bądź zmniejszając offset adresu. Ma kilka więcej instrukcji niż PIC16 i trzy, zamiast dwóch, sprzętowe breakpointy. Poza tym niewiele różni się od PIC16.

    Układy te charakteryzują się bardzo niskim poborem mocy, podobnie jak PIC16. Niestety nie można ich tak wysoko taktować jak np. MSP430, który z resztą pobiera mniej mocy.

    Warto tutaj wspomnieć o rozwinięciu tej architektury o procesor DSP – rodzinie dsPIC. Układy te znalazły swoje zastosowanie m.in. w motoryzacji, ale niestety nie przyczyniło się to do popularyzacji PIC24.

    PIC32

    Gdy wszyscy przechodzili z własnych rozwiązań na rdzenie ARM, Microchip trwał przy swoich rozwiązaniach. Dopiero w 2007 roku firma dodała do swojej oferty 32-bitowy procesor – PIC32. Wykorzystuje on standardowy rdzeń – M4K oparty na architekturze MIPS. Został on stworzony do aplikacji jednordzeniowych. Posiada 32 rejestry, wektorowy kontroler przerwań i wsparcie dla kodowania 16-bitowych instrukcji.

    Jakkolwiek nie jest to ARM, to jest do niego na tyle podobny, że żaden programista zaznajomiony z ARMami nie powinien mieć zbyt wielkich problemów z przesiadką na PIC32.

    Układy z rodziny PIC32 programowane mogą być podobnymi narzędziami jak mniejsze mikrokontrolery Microchipa, ale układ posiada też interfejs JTAG, aczkolwiek najpopularniejszy programator JTAG (J-Link od Seggera) niestety wspiera tylko PIC32MX, nie ma wsparcia dla PIC32MM.

    ARM Cortex-M0

    Jest to najmniejszy rdzeń z rodziny ARM – 32-bitowych układów RISC. Zaprojektowany został przez ARM Holding, który udziela zainteresowanym firmom licencji na jego implementację w swoich produktach.

    Historia tego rdzenia sięga dosyć daleko. W zamyśle miał on być procesorem dla komputerów osobistych. Stworzyło go konsorcjum firm, takich jak Acorn, Apple i VLSI Technology. Miał on pracować w 32-bitowych komputerach Acorna, jednakże jego zwiększająca się popularność w systemach zasilanych bateryjnie, spowodowała, że zaimplementowano go także w MCU. Pierwszy rdzeń ARM w mikrokontrolerze – ARM7TDMI-S – nie zdobył ogromnej popularności. Pojawił się w AT91 Atmela i STR7 STMicro.

    Poznanie historii rdzenia ARM jest kluczowe, by zrozumieć różnice pomiędzy nim, a innymi układami sprzedawanymi na licencji, takimi jak 8051. Odmiennie niż w przypadku tego drugiego, ARMy to tylko rdzeń – nie konkretny mikrokontroler. ARM7TDMIS nie posiadał GPIO, UARTów, ADC czy timerów – był zwykłym procesorem, bez peryferiów. Te elementy zaprojektowane musiały zostać przez implementatorów rdzenia tak, aby spełniać standard AHB – szyny wyjściowej ARMa.

    Podczas tworzenia swoich mikrokontrolerów z rdzeniem ARM każda firma podchodziła inaczej – Freescale wykorzystał sporo peryferiów układów HC08 i ColdFire, Atmel zaprojektował je od podstaw, a STMicro zapożyczyło część elementów z ST7 (prekursor STM8), ale zaprojektował także nowe timery i peryferia komunikacyjne. Jako że w większości projektów mikrokontrolery, przez nawet 90% czasu pracy, wykorzystują peryferia, to kwestia nie do pominięcia. Przez to też każdy układ z rdzeniem ARM różni się od swoich kuzynów.

    Układy z rdzeniem M0 obsługują jedynie 16-bitowe instrukcje, jednakże posiadają pełne 32-bitowe ALU z 32-bitowymi mnożnikami, obsługujący takiej samej szerokości wynik. Dzięki temu rdzeń może być o 2/3 mniejszy niż Cortex-M3.
    Rdzenie ARM, oprócz zwykłych rejestrów CPU posiadają 13 rejestrów ogólnego przeznaczenia. Układ posiada zagnieżdżony kontroler przerwań, pozwalający na obsługę do 32 przerwań na 4 różnych priorytetach – to o wiele więcej, niż ośmiobitowe rdzenie, ale nie zbliża się do poziomu, jakie osiągają większe procesory ARM – 240 przerwań na 256 priorytetach.

    Dodatkowo rdzeń Cortex-M0 posiada pełne wsparcie dla obsługi wyjątków – to kolejna rzecz, jakiej nie uświadczymy w ośmiobitowych układach.

    Rdzenie M0+ to rozszerzona wersja M0, którą rozszerzono o operację tworzenia gałęzi (skoków) w dwóch cyklach zegara. Dodatkowo M0+ pobierają mniej prądu oraz mogą być wyposażone w dodatkowe możliwości, takie jak GPIO pracujące w jednym cyklu zegara, wsparcie dla prostych instrukcji bufora MTB i inne.

    Jednym z problemów z programowaniem tych układów jest fakt, że dla innych aplikacji niż 16- i 32-bitowa matematyka, ich kod nie jest szczególnie wydatny. Oznacza to, że operacje typowe dla mikrokontrolerów, takie jak wysyłanie danych przez porty komunikacyjne, programowa zmiana bitów na GPIO czy obsługa ADC, tworzą bardzo dużo kodu. Po części jest to spowodowane tym, że peryferia te są o wiele bardziej złożone, ale i elastyczniejsze, niż ich analogi z układów ośmiobitowych.

    Kolejną wadą ARMów jest 12-cyklowe opóźnienie w obsłudze przerwań. Jeśli do tego układ będzie musiał zachowywać, podczas przejścia do przerwania, dużo rejestrów na stosie, to opóźnienie przy obsłudze przerwania może być znaczne – do tego stopnia, że taktowany 16 MHz rdzeń 8-bitowy może bez problemu wyprzedzić 32-bitowy mikrokontroler taktowany zegarem 72 MHz.

    8051

    Ten rdzeń stworzony został przez Intela w 1980 roku. Jest to jeden z pierwszych, szeroko przyjętych ośmiobitowców. Posługuje się zmodyfikowaną architekturą harwardzką i posiada zestaw instrukcji CISC. Dodatkowo procesor ten posiada sprzętowy mnożnik, dzielnik, adresowalną pamięć RAM oraz szereg instrukcji do manipulowania bitami. 8051 posiada cztery przełączalne banki po osiem rejestrów każdy, dwa priorytety przerwań. Może adresować zarówno do 654 KB pamięci programu, jak i pamięci RAMu (rozszerzonego) – podręczny RAM, dostępny z wykorzystaniem szybszych instrukcji (tzw. scratch pad) może mieć jedynie do 128 bajtów.

    Układ 8051 to tak na prawdę nie jest rodzina układów – to konkretny element, ale jego nazwa stała się synonimem architektury, zestawu peryferiów czy nawet rozkładu wyprowadzeń. Oryginalny mikrokontroler posiadał 4K pamięci ROM, 128 bajtów pamięci RAM, osiem pełnych 8-bitowych portów GPIO (łącznie 32 piny I/O), interfejs UART, system obsługi przerwań z dwoma priorytetami oraz dwa lub trzy timery.

    Procesor 8051 ma w pełni ortogonalny zestaw instrukcji CISC. Oznacza to, że można niemalże każdą operację w układzie zrealizować pojedynczym, bezpośrednim i natychmiastowym mnemonikiem. Te operacje wykonywać można w RAMie, na rejestrach czy w akumulatorze A.

    Wielu producentów produkowało zamienniki – klony – procesorów 8051. Intel w 2007 roku zakończył produkcję tych układów, co umknęło wielu z uwagi na to, ile dostępnych jest zamienników. Wiele firm jednakże posunęło rozwój tych układów w przód – oprócz naśladowania funkcjonalności układów Intela, wiele z nich wyposażono w dodatkowe timery, peryferia itp.

    Z uwagi na szybką obsługę przerwań i niewielki rozmiar rdzenia, mikrokontrolery te są bardzo chętnie używane w systemach czasu rzeczywistego – w kamerach USB, sprzęcie audio do obróbki DSP a także w układach FPGA do obsługi systemu.

    Wiele osób, które w przeszłości pracowało z układami 8051 uważa je za „stare i wolne”. Nie jest to nieprawdą – oryginał był układem 12T – każdy cykl programu wymagał 12 cykli zegara. Pobranie instrukcji zajmowało cykl programu, a by ją wykonać, kolejny cykl etc. Czasami potrzebne było nawet 50 cykli zegara, by zrealizować pojedynczą instrukcję, ale to przeszłość. Obecnie rdzenie oparte na MCS-51 to procesory 1T.

    W prezentowanym zestawieniu występują trzy układy wyposażone w rdzeń 8051 – każdy z nich zaimplementowany został trochę inaczej, taktowany może być innej częstotliwości zegarem etc. Stąd też warto przyjrzeć się im wszystkim, gdyż stanowczo nie będą takie same.

    STM8

    Rdzeń STM8 oferuje sześć rejestrów CPU, pojedynczy akumulator I dwa rejestry indeksujące. Układ ma 24-bitowy licznik programu, 16-bitowy wskaźnik stosu i rejestr warunkowy. Procesor ten zbudowano w architekturze harwardzkiej, ale posiada zunifikowaną przestrzeń adresową. Szyna pamięci programu ma szerokość 32 bitów, większość instrukcji może być przechwycona w jednym cyklu, a duża część z nich także w jednym cyklu wykonana.

    STM8 słyną z aż 20 trybów adresowania pamięci – relatywnego, przez wskaźnik, etc. Są trzy „zasięgi” adresów – krótki (jeden bajt), długi (dwa bajty) i rozszerzony (trzy bajty). To, z jakiego korzystamy jest wynikiem kompromisu pomiędzy obszarem obsługiwanej pamięci a wydajnością.

    Rdzeń ten znajduje się – jeśli chodzi o sposób adresowania pamięci – pomiędzy procesorami RISC, posiadającymi wiele rejestrów ogólnego przeznaczenia i CISC, które bezpośrednio adresują pamięć, ale płacą za to ogromną cenę w wydajności, gdy adresować muszą pamięć adresem 16-bitowym. STM8 wydaje się osiągać ciekawy kompromis w tym zakresie.

    Peryferia

    W poniższej tabeli zebrano część specyfikacji peryferii układów. Pozwala to łatwo porównać je ze sobą w przypadku poszczególnych układów.

    Rodzina układówPrędkość (maksymalna częstotliwość zegara)Pamięć Flash (pojemność)Pamięć RAM (pojemność)Timery (liczba punktów)Wyjścia PWMInterfejsy komunikacyjnePrzetwornik analogowo-cyfrowy
    ATMEL TINYAVR20 MHz16 KB2 KB28 punktów9 kanałów3 interfejsy20 kanały
    ATMEL MEGAAVR20 MHz16 KB1 KB17 punktów6 kanałów4 interfejsy8 kanałów
    ATMEL SAM D1048 MHz16 KB4 KB51 punktów8 kanałów3 interfejsy8 kanałów
    CYPRESS PSOC 4000S24 MHz16 KB2 KB37 punktów4 kanały2 interfejsy0 kan.
    FREESCALE KE0448 MHz8 KB1 KB50 punktów4 kanały3 interfejsy12 kanałów
    FREESCALE KL0348 MHz8 KB2 KB26 punktów3 kanały3 interfejsy4 kanały
    HOLTEK HT6620 MHz8 KB0,25 KB12 punktów3 kanały2 interfejsy 8 kanałów
    INFINEON XMC110032 MHz14 KB16 KB48 punktów1 kanał2 interfejsy 6 kan.
    MICROCHIP PIC1632 MHz14 KB1 KB47 punktów1 kanałów3 interfejsy12 kanałów
    MICROCHIP PIC2432 MHz4 KB0,5 KB17 punktów2 kanały2 interfejsy 0 kanałów
    MICROCHIP PIC32MM25 MHz32 KB8 KB44 punktów3 kanały4 interfejsy11 kanałów
    NUVOTON N7616 MHz18 KB1 KB31 punktów6 kanałów3 interfejsy8 kanałów
    NUVOTON M05150 MHz12 KB4 KB62 punktów8 kanałów6 interfejsów8 kanałów
    NXP LPC81130 MHz8 KB2 KB45 punktów4 kanały4 interfejsy0 kanałów
    RENESAS RL7824 MHz10 KB0,768 KB54 punktów7 kanałów4 interfejsy6 kanałów
    SANYO LC8712 MHz16 KB1 KB22 punktów4 kanały3 interfejsy20 kan.
    SILICON LABS EFM872 MHz16 KB1,28 KB42 punktów6 kanałów4 interfejsy20 kanałów
    ST STM816 MHz32 KB2 KB43 punktów9 kanałów3 interfejsy7 kanałów
    ST STM32F048 MHz16 KB4 KB40 punktów6 kanałów3 interfejsy16 kan.
    STC STC8330 MHz64 KB4 KB51 punktów12 kanałów6 interfejsów15 kanałów
    TI MSP430FR16 MHz16 KB1 KB13 punktów2 kanały1 interfejs8 kan.


    Zestawienie powyżej prezentuje maksymalny zegar danego układu. Jak pokażą dalsze testy, nie jest on miarodajny, jeśli chodzi o wydajność. Dodatkowo, wiele MCU ogranicza częstotliwość zegara peryferiów, co nie jest bez znaczenia, jeśli poszukujemy układu do np. szybkiego operowania bitami na wyjściu.

    Dodatkowo zwrócić musimy uwagę, że niektóre układy – takie jak tinyAVR czy megaAVR – nie mogą pracować ze swoim maksymalnym zegarem przy zasilaniu poniżej 5 V. Nie jest to ogromny problem, bo w systemie i tak skorzystamy najpewniej z wbudowanego oscylatora – dodanie do mikrokontrolera nawet najtańszego kwarcu za dolara poważnie zwiększy cenę urządzenia.

    Jeśli chodzi o pojemność pamięci Flash, to pamiętać trzeba o tym, że różne układy mają różne potrzeby i inaczej wykorzystują pamięć. Na przykład PIC16 z 14 KB pamięci, z uwagi na 14-bitowy rdzeń, będzie zachowywał się jakby było jej 8 KB, analogicznie HT66, z tym, że ten układ ma 16-bitowe instrukcje czy PIC24 z 24-bitowymi instrukcjami.

    Na plus wybija się w tym zestawieniu STC8 – 64 KB pamięci flash w połączeniu z rdzeniem 8051 sprawiają, że może to być bardzo zdolny układ. Na drugim końcu zestawienia będą układy z rdzeniami ARM, które wymagają bardzo dużo pamięci flash do przechowywania swojego obszernego kodu. Szersze omówienie niuansów pamięci w tych układach znaleźć można w artykule źródłowym.

    Żadne zestawienie układów nie jest kompletne bez porównania timerów. Najprościej jest przyporządkować każdemu układowi punktację za poszczególne aspekty timerów. W tym zestawieniu autor przyjął następującą punktację:

    1 punkt z 8-bitowy licznik
    2 punkty za 8-bitowy timer z autoprzeładowaniem
    2 punkty za 16-bitowy licznik
    4 punkty za 16-bitowy timer z autoprzeładowaniem
    6 punktów za 24-bitowy timer z autoprzeładowaniem
    8 punktów za 32-bitowy timer z autoprzeładowaniem
    2 punkty za zegar czasu rzeczywistego
    2 punkty za każdy 16-bitowy timer, który może być rozszerzony do 32-bitów


    1 punkt za każdy kanał przechwytywania
    1 punkt za każdy kanał 8-bitowego PWMa
    2 punkty za każdy kanał 16-bitowego PWMa
    3 punkty za każdy kanał 24-bitowego PWMa
    3 punkty za każdy kanał PWM o arbitralnie ustalanej fazie
    2 punkty za każdy moduł PWM, który charakteryzuje się zmniejszonym poborem mocy

    Łączna liczba punktów dla każdego układu zawarta jest w powyższej tabeli – osobno timery i kanały PWM.

    Żaden układ nie byłby kompletny bez interfejsów komunikacyjnych – UART, SPI czy I²C. Nuvoton posunął się nawet do tego, że zduplikował te interfejsy, dając swojemu układowi po dwa z każdego rodzaju. Jednakże rzadko kiedy konieczne jest zastosowanie równolegle więcej niż jednego interfejsu SPI czy I²C w systemie. Niektóre układy posiadają dwa, lub nawet cztery (STC8) interfejsy UART. Takie podejście jest o wiele bardziej użyteczne, jako że pojedynczy UART pozwala zazwyczaj na komunikację z pojedynczym urządzeniem.

    Warto zwrócić tutaj uwagę na tzw. “moduł szeregowy”, jaki zaimplementował Atmel, Cypress, Infineon i Renesas. Może on być wykorzystany jako dowolny z wymienionych interfejsów. Cypress i Infineon wbudowali w swój układ dwa takie, a Atmel i Renesas po trzy.

    Jeśli chodzi o przetwornik analogowo-cyfrowy (ADC), to znajdziemy go we wszystkich układach oprócz prezentowanych PSoC 4000S, LPC811 i PIC24 (mimo tego, że większe układy z tych rodzin mają takie moduły). Większość 8- i 16-bitowych MCU ma 10-bitowe przetworniki, a 32-bitowce 12-bitowe. Niektóre ośmiobitowce (jak HT66 czy STC8) pochwalić się mogą jednak ADC o rozdzielczości 12 bit, a EFM8 od Silicon Labs nawet 14-bitowym przetwornikiem, który dodatkowo ma 20 kanałów, tyle co tinyAVR i LC87. Rekordzistą jest tutaj jednakże PIC16, który ma 24 kanały ADC, które próbkować może z prędkością 470 ksps. EFM8 osiąga 900 ksps, a najwyższa prędkość – 1 Msps – osiągana jest jedynie przez układy od ST i Infineona. Na drugim końcu skali znalazł się megaAVR z przetwornikiem, który próbkuje z prędkością zaledwie 15 ksps.

    W układach w tym zakresie cen nietypowa jest obecność przetwornika cyfrowo-analogowego (DAC). W zebranych tutaj mikrokontrolerach jednakże, aż pięć posiada taki moduł. EFM8 wyposażony jest w dwukanałowy przetwornik DAC o rozdzielczości 12 bit. SAM D10 ma jednokanałowy przetwornik 10-bitowy, a tinyAVR przetwornik o rozdzielczości 8 bitów i trzech kanałach wyjściowych. PIC16 ma 5-bitowy przetwornik z jednym kanałem (ale dwoma wyjściami), a KE04 6-bitowy przetwornik podłączony do wewnętrznego komparatora.

    Elastyczność

    Jedną z ważnych cech MCU jest elastyczność jego rodziny. Jest to o tyle ważne, że gdy już nauczymy się konkretnej architektury, to dobrze jest móc wybrać inny, podobny układ, ale np. lepiej wyposażony, jeśli nasza aplikacja tego wymaga. Sprawdźmy zatem, jak elastyczne są poszczególne rodziny układów. W zestawieniu przyjęliśmy, że jeżeli inny członek tej rodziny ma dwa razy wyższe parametry, to określimy go jako dwa razy mocniejszy.

    Na czele tego zestawienia plasuje są PIC32MX. W ramach tej linii układów Microchipa dostępne są MCU taktowane zegarem do 120 MHz z 512 KB pamięci FLASH i 128 KB RAM. Jeśli jednak uwzględnimy jeszcze inne układy PIC32, na przykład nowszą linię PIC32MZ, to dostępne są układy taktowane do 252 MHz z 2 MB Flash i nawet do 32 MB wbudowanej pamięci DDR2. Wyposażone są one często w rozbudowane bloki grafiki itp., co umożliwia stworzenie bardzo złożonych implementacji, pracujących z Linuxem na pokładzie etc. Mikrokontrolery te są bezpośrednimi konkurentami układów z rdzeniem ARM Cortex-M7.

    Kolejny na liście jest STM32 – STM32F0 ma większego brata w postaci STM32F4, jeden z najmocniejszych układów z rdzeniem ARM Cortex. Niektóre z nich pracują z zegarem do 180 MHz, posiadają do 2 MB pamięci Flash i 364 KB pamięci RAM. Jednakże są jeszcze większe mikrokontrolery z stajni STM32 – np. STM32F7 z rdzeniem Cortex-M7, taktowane do 216 MHz I wyposażone w 2 MB Flash i 512 KB RAM.

    LPC811, jeden z najsłabszych układów w tym zestawieniu, także ma mocniejsze rodzeństwo. Na przykład układy LPC546xx – giganty z rdzeniem ARM Cortex-M4, taktowane do 220 MHz i wyposażone w 512 KB Flash i 200 KB RAM.

    Słabo wypadają układy tinyAVR. W ramach tej rodziny najmocniejsze układy mają 16 KB Flash, 2 KB RAM I taktowane mogą być zegarem do 20 MHz. Atmel zapowiada jednakże, że niebawem w handlu pojawić się ma 32 KB wersja tinyAVR. Trochę lepiej wypada megaAVR, ale nadal większość tych MCU pracuje z zegarem do 20 MHz. Są wersje z 64 KB pamięci Flash i do 4 KB pamięci RAM, jednak żadna z nich nie jest dostępna w dużej obudowie ze 100 pinami.

    Linia układów SAM D10 rozciąga się w SAM D21, które taktowane są do 48 MHz, ale posiadają do 256 KB Flash i 32 KB RAM. Jeśli wyjdzie się poza układy D1x i D2x, to dostępne są takie bestie jak ATSAM70 z zegarem do 300 MHz, 2 MB Flash i 384 KB RAM w obudowach do 144 pinów. Są one bardzo przyjaźnie wycenione – starsze układy w wersji 64 pinowej z 1 MB Flash dostępne są już za 5,14 dolara.

    Układy PSoC 4000S są na samym dole ekosystemu MCU Cypressa. Kolejne PSoC 5 mają już do 256 KB Flash i 64 KB RAMu. Taktowane mogą być zegarem do 80 MHz. Te układy są dodatkowo bogato wyposażone w analogowe peryferia, moduły do obsługi pojemnościowych interfejsów dotykowych itp. Idąc dalej, docieramy doi PSoC6 – taktowanych do 150 MHz układów z rdzeniem ARM Cortex-M4F, 1 MB pamięci Flash, 288 KB RAMu, zintegrowanymi modułami Bluetooth etc.

    Układy KE04 i KL03 są najprostszymi członkami rodziny Kinetis. Najmocniejszy układ Freescale z rodziny E – KE1x – dysponuje 512 KB pamięci Flash, 64 KB pamięci RAM i zegarem do 168 MHz, zamkniętymi w dużych obudowach do 100 pinów.

    Holtek HT66 nie ma w zasadzie nic mocniejszego do ogólnego użytku niż HT66F0185, ale firma ta produkuje wiele dedykowanych mikrokontrolerów z tym samym rdzeniem.

    Rodzina Infineon XMC1000 rozciąga się aż do XMC1400 z 200 KB pamięci Flash, 16 KB pamięci RAM I minimalnie szybszym zegarem do 48 MHz. Jeśli wykroczymy poza ekosystem XMC1000 to korzystać możemy z XMC4000, który zachowuje te same peryferia, co mniejszy brat, ale posiada rdzeń Cortex-M4F taktowany do 144 MHz z 2 MB Flash, 352 KB RAM i ogromnymi obudowami do 196 pinów.

    Najmocniejszy PIC16 obecnie na rynku – PIC16F19197 ma 56 KB pamięci Flash (czyli 32 K słów, bo to PIC), 4 KB pamięci RAM. Ale z tej rodziny łatwo przesiąść się na PIC18, jako że mają ten sam kompilator i podobną architekturę peryferiów. Tutaj najmocniejszy układ do PIC18F97J60 – 100-pinowa bestia z 128 KB Flash (64 K słów) i 4 KB RAM. Układ ten wyróżnia się ponadto wbudowanym fizycznym interfejsem Ethernet i MAC. To jedyny taki układ, który integruje całą warstwę fizyczną (PHY) Ethernetu.

    PIC24FJ1024GA610 – najmocniejszy z rodziny – ma do 1024 KB pamięci Flash, 32 KB pamięci RAM i zegar do 32 MHz. Dodatkowo są jeszcze podobne im układy z rodziny dsPIC. Najmocniejszym członkiem tej rodziny z układem DSP jest dsPIC33EP512GM604 z 512 KB pamięci Flash, 48 KB RAMu i zegarem do 140 MHz.

    Najmocniejszym bratem Nuvoton N76 jest taktowany do 40 MHz W79E658A, który ma 128 KB Flash i 1,25 KB RAMu. Z kolei Nuvoton M051 Ma trochę starszego rodzeństwa z rdzeniem Cortex-M4. Na przykład układ M505 posiada wbudowane 2 MB pamięci Flash dołączonej po SPI, 128 KB RAMu i działa z zegarem do 100 MHz. Nuvoton niebawem ma zamiar wypuścić M487 z 192 MHz CPU, 512 KB pamięci Flash i 160 KB RAMu.

    Rodzina Renesas RL-78 rozciąga się aż do R5F101SLAFB, w 128-pinowej obudowie, w której znajdziemy 512 KB Flash I 32 KB RAM. Maksymalny zegar tego układu do 32 MHz.

    LC87F7NP6AUE – najmocniejszy MCU z rodziny Sanyo LC87 – ma 256 KB Flash i 12 KB RAM przy zegarze 18 MHz.

    Jeśli chodzi o EFM8, to Silicon Labs oferuje nam EFM8LB1. Układ ten ma 64 KB Flash, 4,25 KB RAM, ale produkowany jest w niewielkiej 32-pinowej obudowie. Jeśli podoba nam się rodzina 8051 Silicon Labs, możemy jednakże sięgnąć po większy C8051F120. Taktowany do 100 MHz procesor MCS-51 z 128 KB Flash i 8,25 KB RAM.

    Rodzina MSP430 rozciąga się aż do MSP430F6779, który w 128-pinowej obudowie mieści 512 KB pamięci Flash I 32 KB RAMu.

    Testowany układ STC8 jest najmocniejszy z całej rodziny.

    Z uwagi na ograniczenie wielkości postu na forum ;) druga część tuta.

    Cool? Ranking DIY
    About Author
    ghost666
    Translator, editor
    Offline 
    Fizyk z wykształcenia. Po zrobieniu doktoratu i dwóch latach pracy na uczelni, przeszedł do sektora prywatnego, gdzie zajmuje się projektowaniem urządzeń elektronicznych i programowaniem. Od 2003 roku na forum Elektroda.pl, od 2008 roku członek zespołu redakcyjnego.
    ghost666 wrote 11695 posts with rating 9883, helped 157 times. Live in city Warszawa. Been with us since 2003 year.
  • Nazwa.pl
  • #2
    Marek_Ertew
    Level 16  
    ghost666 wrote:

    PIC24 adresuje pamięć w sposób pośredni, zwiększając bądź zwiększając offset adresu. Ma kilka więcej instrukcji niż PIC16 i trzy, zamiast dwóch, sprzętowe breakpointy. Poza tym niewiele różni się od PIC16.
    Literówka?

    ghost666 wrote:

    Układ 8051 to tak na prawdę nie jest rodzina układów – to konkretny element, ale jego nazwa stała się synonimem architektury, zestawu peryferiów czy nawet rozkładu wyprowadzeń. Oryginalny mikrokontroler posiadał 4K pamięci ROM, 128 bajtów pamięci RAM, osiem pełnych 8-bitowych portów GPIO (łącznie 32 piny I/O), interfejs UART, system obsługi przerwań z dwoma priorytetami oraz dwa lub trzy timery.
    8051 ma cztery porty (wbudowany ROM) lub niepełne dwa (plus zewnętrzna magistrala równoległa).

    Poza tym, w zestawieniu brakuje informacji na temat zakresu napięć zasilania. Czasem "droższy" i gorszy uC wygra gdy do konkurencji doliczymy koszt stabilizatora napięcia. I nie myślę tu o standardowych napięciach 5V lub 3.3V a o zasilaniu z akumulatora li-ion (max 4.2V) lub 2 paluszków (1.6V - 3.2V).