Mikrokontrolery firmy Atmel, których konstrukcja bazuje na 8-bitowych rdzeniach AVR podzielone zostały na trzy rodziny:
- TinyAVR z pamięcią Flash o pojemności od 0,5 do 16 kB, w obudowach od 6-32 pinów
- MegaAVR z pamięcią Flash o pojemności od 4 do 256 kB, w obudowach od 28-100 pinów
- AVR Xmega z pamięcią Flash o pojemności od 8 do 384 kB, w obudowach od 32-100 pinów.
Na rodzinę tinyAVR składają się mikrokontrolery ATtiny, które znajdują zastosowanie w aplikacjach w których jest potrzebny niewielki, energooszczędny mikrokontroler, realizujący stosunkowo proste zadania.
W aplikacjach nieco bardziej skomplikowanych stosowane są układy ATmega z rodziny megaAVR. W przypadku, gdy wymagana jest większa wydajność coraz większe uznanie w oczach klientów znajdują układy ATxmega z rodziny AVR Xmega. Ich wybór pokazano na rysunku 1.
Układy ATxmega zostały wyposażone w funkcje niewystępujące w innych rozwiązaniach 8-bitowych. Znacząco zwiększają one możliwości 8-bitowych mikrokontrolerów.
System zdarzeń
Jedną z cech mikrokontrolerów ATxmega jest system zdarzeń (Event System, rysunek 2), który umożliwia współdziałanie peryferiów bez udziału CPU z gwarantowanym czasem reakcji.
Funkcja ta znajduje zastosowanie w aplikacjach, gdzie kluczowe jest zapewnienie reakcji układu w czasie nie dłuższym niż określony. Dodatkowo, w aplikacjach zasilanych bateryjnie, skorzystanie z systemu zdarzeń może znacząco wpłynąć na sumaryczne zużycie energii.
Kontroler DMA
Kontroler DMA (Direct Memory Access) umożliwia szybki transfer danych pomiędzy peryferiami i pamięcią, bez obciążania CPU. Rezultat zastosowania DMA przedstawiono na rysunku 3 oraz umieszczono w tabeli 1.
Podukład kryptograficzny
Wybrane układy ATxmega zawierają moduł kryptograficzny, obsługujący 64-bitowy algorytm szyfrowania DES oraz 128-bitowy AES. Coraz większa popularność algorytmów szyfrowania transmisji danych sprawia, że często obecność modułu AES jest jednym z podstawowych wymagań w nowoczesnych aplikacjach. Podukład ten nosi nazwę Crypto Engine, a jego działanie zostało zilustrowane na rysunku 4.
Kontroler przerwań
Wielopoziomowy kontroler przerwań (Multi-level Interrupt Controller) umożliwia nadawanie przerwaniom jednego z trzech dostępnych priorytetów. Przerwania o wyższym priorytecie realizowane są przed tymi o niższym. Mechanizm ten daje programiście wiele możliwości realizacji różnego rodzaju scenariuszy działania układu. Wprowadzenie wielopoziomowego kontrolera przerwań jest przykładem reakcji producenta na potrzeby klientów, którym brak możliwości nadawania priorytetów przerwań utrudniał dotąd pracę z układami z rodziny ATmega. Działanie kontrolera pokazano na rysunku 5.
Łatwa obsługa USB
Powszechność USB sprawia, że nawet w najmniejszych aplikacjach interfejs ten staje się konieczny. Z wykorzystaniem tego portu można zrealizować funkcję bootloadera lub też prowadzić standardową komunikację. Dodatkowo programista skorzystać może z bezpłatnego stosu USB, dostępnego w ramach oprogramowania Atmel Studio. Do dyspozycji są między innymi klasy: CDC, HID Mouse, HID Keyboard czy Mass Storage. Dzięki temu oprogramowanie interfejsu przebiega sprawnie i zajmuje niewiele czasu.
Mechanizm picoPower drugiej generacji
Atmel od wielu lat pracuje nad obniżeniem poboru energii. W rodzinie ATmega układy z funkcją picoPower oznaczono dodając do symbolu literę P, np. Atmega168PA. W rodzinie ATxmega zastosowano drugą generację tego mechanizmu. Jedna z ciekawszych cech tej technologii nosi nazwę "True 1.8V operation" co oznacza, że układ może bezpiecznie pracować przy bardzo niskich napięciach zasilania, nawet 1,8 V ±10%. W praktyce dotyczy to sytuacji nawet bardzo dużego rozładowania baterii. Dostępnych jest pięć stanów uśpienia mikrokontrolera, z których trzy pokazano na rysunku 6.
W efekcie mikrokontrolery ATxmega z funkcją picoPower drugiej generacji wymagają jedynie 100 nA prądu w trybie Power Down dla podtrzymania pamięci RAM, 550 nA w trybie Power Save, dla podtrzymania pracy układu zegara czasu rzeczywistego oraz są w stanie wybudzić się w 5 µs ze stanu uśpienia.
Zaawansowany system zegarowy
Rodzina AVR XMEGA ma bardzo rozbudowany system możliwych źródeł taktowania mikrokontrolera. Dostępne są:
- wewnętrzne oscylatory RC 32- i 2-megahercowe (±1%), z możliwością kalibracji z zewnętrznego zegara 32,768 kHz,
- wewnętrzny oscylator 32,768 kHz (±1%),
- wewnętrzny oscylator 32 kHz ULP (Ultra Low Power),
- zewnętrzny oscylator o częstotliwości z zakresu od 0,4 MHz do 16 MHz,
- zewnętrzny oscylator 32,768 kHz.
Oprócz tego programista ma do dyspozycji wewnętrzną pętlę PLL (wejście: 400 kHz - 32 MHz, wyjście: 10 MHz - 128 MHz) i wbudowany preskaler (2 - 2048 razy).
Pozostałe peryferia
Oprócz wyżej wymienionych układy z rodziny ATxmega mają standardowe interfejsy zarówno komunikacyjne (UART, SPI, EBI, TWI), jak i analogowe (ADC, DAC, komparatory). Do tego wybrane podrodziny zostały wyposażone m.in. w kontrolery LCD, do 160 segmentów, programowane obwody logiczne (XCL - XMEGA Custom Logic), rozbudowane timery i RTC z podtrzymaniem bateryjnym. Każda ATxmega ma też unikalny numer indentyfikacyjny.
Wsparcie środowiska
Wszystkie 8-bitowe układy AVR są wspierane przez Atmel Studio. Pakiet ten można bezpłatnie pobrać ze strony producenta i używać beż żadnych ograniczeń, zarówno pod względem rozmiaru kodu, jak i czasu działania. Wraz z Atmel Studio dostępny jest moduł ASF (Atmel Software Framework), zawierający kilka tysięcy przykładowych programów począwszy od mrugania diodą, po rozbudowane aplikacje typu RTOS z funkcjami takimi, jak stos IP. W module tym dostępne są bloki pozwalające obsługiwać peryferia za pomocą prostego API. Ponadto Atmel oferuje szereg programatorów, debuggerów, zestawów ewaluacyjnych i różnego rodzaju narzędzi.
Podsumowanie
Oferta Atmela w zakresie 8-bitowych mikrokontrolerów jest systematycznie rozwijana. W najbliższym czasie zostanie ona rozbudowana o nowe układy ATtiny, a wybrane pozycje z grupy ATmega zostaną zmigrowane do nowszych technologii, przez co znacząco spadnie ich cena.
Mariusz Rudnicki
Inżynier Działu Wsparcia Technicznego