Mikrokontrolery XMEGA
XMEGA to 8-bitowe mikrokontrolery z rdzeniem AVR. Od innych rodzin AVR8 odróżnia je bogactwo urządzeń peryferyjnych, niższe napięcie pracy (1,8 – 3,6V), budowa zorientowana na oszczędność energii oraz wiele specjalistycznych podsystemów znacznie przyśpieszających wykonywanie programu (DMA, wielopoziomowy system
przerwań, układy szyfrowania DES/AES, CRC) oraz poprawione interfejsy peryferyjne.
Pomimo bogactwa elementów programowanie tych procesorów, podobnie jak innych
procesorów rodziny AVR8, pozostaje proste, co jest dużym atutem tej rodziny. Z drugiej
strony bogactwo bardzo elastycznych interfejsów peryferyjnych powoduje, że warto
zastanowić się nad sposobem realizacji programu, tak aby maksymalnie wykorzystać
zasoby sprzętowe. Nie tylko przyspieszy to wykonywanie programu, ale także umożliwi
tworzenie aplikacji o możliwie minimalnym poborze energii, ułatwi także pisanie kodu.
Wszystkie procesory XMEGA należą do czterech głównych rodzin (A, B, D — rysunki
1.1 i 1.2 — oraz E, która zawiera nowe, ulepszone układy peryferyjne) różniących się
występującymi układami peryferyjnymi oraz przeznaczeniem. W ramach danej rodziny procesor posiada dokładnie takie same układy peryferyjne oraz identyczny rozkład
sygnałów na wyprowadzeniach obudowy procesora. Jedyna różnica pomiędzy układami w danej rodzinie polega na ilości dostępnej pamięci. I tak np. mikrokontrolery
XMEGA64A1 i XMEGA128A1 różnią się wyłącznie ilością pamięci (odpowiednio
64 lub 128 kB) i o ile program się zmieści w mniejszym procesorze, mogą być stosowane
wymiennie. Taka koncepcja budowy mikrokontrolera pociąga też zmiany w dokumentacji
procesora. Na stronie internetowej firmy Atmel dostępne są noty dla poszczególnych
rodzin, gdzie opisane są wszystkie szczegóły danej rodziny mikrokontrolerów. Z kolei w notach dotyczących konkretnego modelu są wymienione tylko różnice cechujące
konkretny model oraz parametry elektryczne, bez dokładnego opisu poszczególnych
podsystemów.
Rodzina A1
• 2 ADC 2Msps
• 2 DAC
• 8 T/C
• 8 USART
• 4 SPI
• 4 TWI
• DMA
• CryptoEngine
• Int. pam. zew.
Rodzina A3
• 2 ADC 2Msps
• 1 DAC
• 7 T/C
• 7 USART
• 4 SPI
• 2 TWI
• DMA
• CryptoEngine
Rodzina A4
• 1 ADC 2Msps
• 1 DAC
• 5 T/C
• 5 USART
• 2 SPI
• 3 TWI
• DMA
• CryptoEngine
Rodzina D3
• 1 ADC 200 ksps
• 1 DAC
• 5 T/C
• 3 USART
• 2 SPI
• 1 TWI
Rodzina D4
• 1 ADC 200 ksps
• 4 T/C
• 2 USART
• 2 SPI
• 1 TWI
Rysunek 1.1. Główne rodziny mikrokontrolerów XMEGA oraz występujące w nich układy peryferyjne
W notach poświęconych konkretnemu modelowi znajdziemy też erraty do mikrokontrolera — nie znajdziemy ich w notach ogólnych opisujących rodzinę.
Zmiana ta jest nieco myląca dla osób, które miały już do czynienia z AVR, gdyż noty dla
innych rodzin procesorów zawierają komplet informacji. Firma Atmel wprowadziła
jeszcze mikrokontrolery rodziny B, które cechują się wsparciem dla LCD (zawierają
one kontroler wielosegmentowych wyświetlaczy LCD), a także posiadają wbudowany
sterownik klasy USB-device. Ponadto większość rodzin posiada swoje młodsze siostry
— mikrokontrolery z dodatkową literą U na końcu nazwy rodziny, np. XMEGA128A1U.
Litera ta oznacza, że procesor wyposażony jest w interfejs USB, ale co ważniejsze —
zawiera nowy rdzeń, rozszerzone układy peryferyjne i poprawione błędy starszego
brata. W efekcie zazwyczaj powinniśmy korzystać z tych nowszych wersji procesora,
tym bardziej że ich cena często jest niższa. Jak widzimy, najbogatszymi możliwo-
ściami mogą pochwalić się mikrokontrolery rodziny A1 — posiadają one wszystkie
charakterystyczne dla XMEGA podsystemy, a także jako jedyne posiadają interfejs pamięci zewnętrznej. Dzięki temu nadają się one szczególnie do budowy zaawansowanych
sterowników, wymagających dużej ilości pamięci (umożliwiają sprzętową obsługę
pamięci statycznych i dynamicznych). Kolejne podrodziny (A3 i A4) są nieco uboższe
— oprócz tego, że brakuje im interfejsu pamięci zewnętrznej, posiadają także mniej instancji poszczególnych modułów IO — ale za to dostępne są w obudowach o mniejszej
liczbie wyprowadzeń. Stosunkowo najprostszą rodziną jest rodzina D (D3 i D4). Mikrokontrolery z tej rodziny nie posiadają DMA ani modułu kryptograficznego. Są
więc przeznaczone do prostszych zastosowań, do których normalnie użylibyśmy procesorów rodziny ATMega lub ATTiny, jednocześnie oferując znaczną przewagę nad
starszymi rodzinami procesorów AVR8. Co warto podkreślić, ich cena kształtuje się
na poziomie odpowiadającym prostszym modelom ATMega.
ta
Mikrokontrolery XMEGA są stosunkowo nową rodziną mikrokontrolerów, od ich
wprowadzenia na rynek minęło zaledwie kilka lat. Niestety projektując je, producent
nie ustrzegł się błędów i pewne funkcjonalności nie działają dokładnie tak, jak to jest
opisane w notach katalogowych procesora. Drobne problemy dotyczą głównie rodzin
najwcześniej wprowadzonych na rynek (np. XMEGA rodziny A1), kolejno wypuszczane modele nie posiadają większości błędów znanych z wcześniejszych modeli.
Najnowszą rodziną jest rodzina mikrokontrolerów XMEGA dostosowanych do pracy
z magistralą USB; w rodzinie tej wyeliminowano większość błędów i problemów, jakie wcześniej występowały. Stąd też przed użyciem danego procesora zawsze należy
pobrać jego specyficzną notę katalogową i sprawdzić sekcję Errata — oszczędzi nam
to wielu problemów w trakcie programowania. Jeśli błąd wymieniony w erracie jest
kluczowy dla tworzonego projektu, to można sięgnąć po nowszy procesor (np. z serii U),
nawet jeśli nie wykorzystujemy związanych z nim funkcjonalności. W prezentowanej
książce autor starał się zaznaczyć najważniejsze błędy w sytuacjach, w których mogą
się one ujawnić.
XMEGA a inne AVR-y
Programowanie mikrokontrolerów rodziny XMEGA istotnie różni się od programowania
innych 8-bitowych mikrokontrolerów firmy Atmel. Przede wszystkim inżynierom udało
się uporządkować moduły wchodzące w skład mikrokontrolera. W XMEGA wszystkie
moduły danego typu mają taką samą funkcjonalność. Dzięki temu programowanie poszczególnych modułów znacznie się uprościło. Pociągnęło to za sobą pewne zmiany
w AVR-libc. Dzięki temu, jeśli np. dysponujemy 8 modułami USART, to dostęp do każ-
dego z nich jest identyczny — wystarczy tylko zmienić adres bazowy struktury opisującej
dany moduł, co zostało szerzej omówione w rozdziale 6. „Koniec bałaganu, czyli o nazwach rejestrów i układów peryferyjnych”. Jednak zmiany w budowie XMEGA wymusiły także daleko idące zmiany w kompilatorze języka C.
Kompilator
Język C staje się dominującym językiem programowania mikrokontrolerów, a co za
tym idzie, często ich popularność jest określana dostępnością dobrych narzędzi programistycznych. Osoby chcące rozpocząć przygodę z XMEGA są w doskonałej sytuacji,
gdyż na rynku dostępnych jest wiele komercyjnych i całkowicie bezpłatnych kompilatorów tego języka. Jednym z najlepszych, a w dodatku darmowych, jest avr-gcc. Jest to
port popularnego kompilatora gcc na platformę AVR. Jest on dostępny zarówno dla
środowiska MS Windows, jak i GNU Linux. Firma Atmel wydała tzw. toolchain, zawierający kompilator, biblioteki i inne potrzebne narzędzia oferujący pełne wsparcie dla
wszystkich mikrokontrolerów AVR. Można go pobrać razem z Atmel Studio 6 (jest to
zalecany sposób instalacji) lub osobno, w wersji zarówno dla MS Windows, jak i dla
GNU/Linux. Użytkownicy systemu GNU/Linux są w nieco uprzywilejowanej sytuacji,
gdyż liczne dystrybucje tego systemu zawierają nowsze wersje avr-gcc, oferujące lepsze możliwości optymalizacyjne i często najnowsze wersje biblioteki AVR-libc (trzeba
jednak pamiętać, że korzystając z tych wersji, narażamy się na potencjalne problemy).
Szczególnie ten ostatni element jest niezwykle ważny, gdyż XMEGA jest ciągle stosunkowo nową rodziną mikrokontrolerów i AVR-libc we wcześniejszych wersjach
zawierała różne mniej lub bardziej uciążliwe błędy. Należy jednak pamiętać, że nie
wszystkie dystrybucje GNU/Linux zawierają pakiety avr-gcc z zaaplikowanymi łatkami umożliwiającymi współpracę z XMEGA. Listę wspieranych przez posiadaną
wersję avr-gcc procesorów można sprawdzić, wydając polecenie:
avr-gcc –target-help
W efekcie w sekcji Known CPU names uzyska się listę wspieranych mikrokontrolerów.
Inną możliwością sprawdzenia, czy interesujący nas mikrokontroler jest wspierany,
jest po prostu próba kompilacji jakiegoś pliku z ustawionym danym typem mikrokontrolera:
avr-gcc –c test.c –mmcu=badany mikrokontroler
Plik test.c może być dowolnym plikiem zawierającym kod języka C, może być nawet
pustym plikiem (ale musi istnieć). W opcji –mmcu podajemy nazwę mikrokontrolera,
dla którego chcemy sprawdzić wsparcie. Jeśli nie jest on wspierany, to próba kompilacji
zakończy się niepowodzeniem, z komunikatem błędu:
test.c:1: error: MCU 'ss' supported for assembler only
oraz wyświetleniem listy wspieranych mikrokontrolerów.
Nowe peryferia
W mikrokontrolerach XMEGA wprowadzono nowe układy peryferyjne, umożliwiające sprzętową realizację wielu zadań, co znacznie odciąża CPU. Dzięki temu w wielu
zastosowaniach prędkość XMEGA wielokrotnie przewyższa prędkość innych procesorów rodziny AVR8. Co ważne, także układy peryferyjne znane z wcześniejszych mikrokontrolerów zostały znacznie rozwinięte, wprowadzono wiele udogodnień, dzięki
czemu ich funkcje są znacznie bardziej elastyczne.
DMA
Jedną z najważniejszych innowacji jest DMA (ang. Direct Memory Access). Jest to 4-
kanałowy podsystem potrafiący po skonfigurowaniu niezależnie od procesora przesy-
łać bloki danych pomiędzy pamięcią a pamięcią, a także pomiędzy pamięcią i większością układów peryferyjnych. Dzięki temu procesor jest znacznie odciążony — np.
tocząca się „w tle” transmisja szeregowa z wykorzystaniem portu USART zupełnie
nie angażuje procesora. Podobnie możemy przesyłać dane np. z pamięci do układów
podłączonych poprzez interfejs SPI, zupełnie nie angażując w to CPU. Posiadając aż cztery takie kanały, dostajemy do dyspozycji potężne narzędzie. DMA potrafi też wyliczać
CRC transmitowanych danych, a także wykonywać na nich proste operacje logiczne
— funkcjonalność ta została wprowadzona w rodzinie E i nazwana EDMA (ang. Enhanced DMA).
Moduł kryptograficzny
Kolejnym interesującym układem peryferyjnym jest moduł kryptograficzny. Umożliwia on sprzętowe szyfrowanie i deszyfrowanie danych z użyciem szyfrów DES (ang.
Data Encryption Standard), 3DES i AES (ang. Advanced Encryption Standard). Sprzętowa realizacja szyfrowania i deszyfrowania umożliwia uzyskanie ponad 100-krotnie
większej szybkości działania w odniesieniu do programowej implementacji szyfrowania. Dzięki temu prosty, 8-bitowy mikrokontroler osiąga wydajność porównywalną
do układów 32-bitowych. Obecność sprzętowego modułu kryptograficznego to nie tylko
większa szybkość działania, ale także oszczędność pamięci. Funkcje kryptograficzne,
które do tej pory były realizowane czysto programowo, zajmowały ok. 5 – 7 kB pamięci
FLASH, przy wykorzystaniu mechanizmów sprzętowych ich wielkość redukuje się do
kilkudziesięciu bajtów. Obecność tego modułu docenią z pewnością osoby implementują-
ce bezpieczne protokoły sieciowe, bezprzewodowe, a także osoby chcące szyfrować
dane, w tym kod programu.
Kontroler przerwań
Kolejną nowością zbliżającą procesory XMEGA do „poważniejszych” 32-bitowych
kuzynów jest rozbudowany kontroler przerwań. W przeciwieństwie do innych mikrokontrolerów AVR8 umożliwia on realizację wielopoziomowych scenariuszy przerwań
wraz z różnymi algorytmami podziału czasu CPU pomiędzy funkcje obsługi przerwań. Dzięki temu można realizować bardziej elastyczne scenariusze obsługi przerwań, nie ma też problemu znanego z innych AVR, kiedy przerwanie blokowało
przyjmowanie innych przerwań, w tym tych, którym programista chciał nadać wyższy
poziom. Kontroler obsługuje też specjalne przerwania niemaskowalne NMI (ang.
Non-maskable interrupt), które sygnalizują poważne awarie systemu, np. awarię
oscylatora.
Moduł CRC
Wprowadzono także moduł automatycznie obliczający CRC (ang. Cyclic redundancy
check) zgodnie z jednym z kilku algorytmów (CRC-CCITT, CRC16 lub IEEE802.3,
CRC32). Procesor może obliczać CRC dla zadanego bloku danych, w tym danych znajdujących się w pamięci FLASH lub transmitowanych przez moduły IO i DMA. Umoż-
liwia to m.in. automatyczną kontrolę poprawności pamięci programu po starcie mikrokontrolera.
Układ RTC
Hobbyści z pewnością zaoszczędzą kilka złotych dzięki wbudowanemu układowi RTC
(ang. Real-time counter). Co prawda RTC istniał także w ATMega, lecz w XMEGA jego możliwości znacznie rozszerzono, między innymi wprowadzono układ awaryjnego
podtrzymywania zasilania (rodzina A3), dzięki czemu RTC działa poprawnie nawet
w przypadku zaniku zasilania procesora. Praktycznie likwiduje to konieczność użycia
zewnętrznych układów RTC.
Sprzętowa obsługa enkoderów i przycisków pojemnościowych
Część mikrokontrolerów XMEGA dysponuje także sprzętowymi mechanizmami obsługi enkoderów, a także paneli pojemnościowych (technologia firmy Atmel QTouch).
Możliwości te wraz z gotowymi bibliotekami udostępnionymi przez firmę znacznie
przyśpieszają prace nad aplikacjami oferującymi wygodne i efektownie wyglądające
panele sterujące.
Układ DAC
Kolejnym interesującym modułem jest moduł DAC (ang. Digital to analog converter). XMEGA są wyposażone w jeden lub dwa 2-kanałowe przetworniki DAC, dzięki
temu z łatwością możemy generować sygnały analogowe o dowolnych przebiegach.
W połączeniu z DMA umożliwia to np. odtwarzanie dźwięków, muzyki i mowy praktycznie z minimalnym zaangażowaniem procesora. Nawet początkujący hobbyści mogą
w ten sposób tworzonym przez siebie programom nadać zupełnie nowy wymiar.
System obsługi zdarzeń
To kolejna rewolucyjna koncepcja zastosowana przez twórców XMEGA. Każdy podsystem może generować zdarzenia, które mogą wyzwalać reakcję innych podsystemów. Np. zdarzenie polegające na przepełnieniu licznika timera może generować
zdarzenie, które będzie wyzwalać reakcję innego timera, polegającą np. na zwiększeniu wartości jego licznika. Dzięki temu łatwo i bez udziału procesora można stworzyć
licznik o większej długości. Odpowiednie zaprogramowanie tego modułu umożliwia
realizację wielu zadań całkowicie bez udziału CPU. Dzięki temu procesor nie traci
czasu na obsługę przerwań, przy użyciu których podobne funkcje należało realizować
w ATMega. Zapewnia to także większą przewidywalność obsługi zdarzeń i zmniejszenie latencji pomiędzy zdarzeniem a jego obsługą do dwóch taktów zegara.
Układ zarządzania zegarem i mocą
Co prawda te podsystemy istnieją także w innych AVR-ach, lecz w XMEGA nadano im
zupełnie nową jakość. To, co zapewne ucieszy wielu użytkowników AVR, to wiadomość, że nareszcie koniec z zablokowanymi procesorami. Zegar taktujący mikrokontroler konfiguruje się całkowicie programowo, nie ma więc możliwości zablokowania
procesora poprzez wybór niewłaściwego źródła zegara. Zwiększono także maksymalną
częstotliwość taktowania CPU do 32 MHz, co przekłada się na znaczny wzrost wydajności. Co więcej, niektóre układy peryferyjne można taktować z częstotliwościami
wielokrotnie wyższymi, dzięki czemu interfejs pamięci zewnętrznej pracuje praktycznie bez opóźnień w stosunku do wewnętrznej pamięci SRAM, a liczniki mogą generować przebiegi o częstotliwości ponad 100 MHz. Elastyczna konfiguracja układu zegarowego umożliwia optymalizację szybkości CPU, a co za tym idzie — poboru energii.
Fanów AVR ucieszy zapewne fakt, że znacznie poprawiono stabilność wewnętrznego
generatora RC. Dzięki temu możemy go użyć do taktowania transmisji USART lub
USB, co eliminuje konieczność zastosowania zewnętrznego kwarcu. Znacznie także
rozszerzono możliwości zarządzania poborem energii, a także zredukowano spoczynkowy
pobór energii przez procesor. Co ważne, XMEGA są wyposażone w układ detekcji
problemów z zegarem. W przypadku uszkodzenia np. zewnętrznego kwarcu procesor
automatycznie przełącza się na generator wewnętrzny, sygnalizując problem. Wraz z innymi układami kontrolnymi powoduje to, że systemy zbudowane w oparciu o XMEGA
gwarantują niespotykane bezpieczeństwo.
Układ ADC
Kolejny moduł to przetwornik analogowo-cyfrowy (ang. Analog to digital converter).
Tylko z nazwy przypomina on rozwiązania znane z np. ATMega. Poza tym że poprawiono jego parametry, w XMEGA posiada on 12-bitową rozdzielczość, umożliwia próbkowanie z szybkością 2 megapróbek na sekundę (Msps), zupełnie zmieniono układ
kontrolujących go rejestrów. Dzięki temu wiele zadań procesor może realizować cał-
kowicie sprzętowo. Porównania wartości ADC z wartościami referencyjnymi mogą
generować przerwania informujące o uzyskaniu wartości pomiaru mniejszej, większej
lub mieszczącej się w zadanych granicach. Rozszerzono możliwości wzmacniacza
wbudowanego w wejścia ADC, co w wielu sytuacjach pozwoli na uniknięcie dodatkowego zewnętrznego układu kondycjonującego sygnał — np. wzmacniacza operacyjnego.
Co więcej, XMEGA posiadają do dwóch niezależnych ADC, z których każdy posiada
po kilka kanałów. Jest to duży postęp w stosunku do innych AVR-ów, posiadających
tylko jeden, wielokanałowy przetwornik. ADC w pełni współpracuje z DMA i systemem
obsługi zdarzeń, dzięki czemu nawet wysokie częstotliwości próbkowania praktycznie
nie obciążają procesora.
Komparator analogowy
To kolejny podsystem, który rozwinięto na tyle, że z pewnością stanie się jednym z czę-
ściej wykorzystywanych układów peryferyjnych. Nie tylko zwiększono liczbę komparatorów analogowych do co najmniej czterech, ale co istotne — w sposób elastyczny
zrealizowano wybór sygnałów doprowadzonych do ich wejść. Na dowolne wejście komparatora można doprowadzić zewnętrzny sygnał analogowy, wyjście DAC, napięcia
referencyjne itd. Komparatory realizują porównania typu większy, mniejszy, posiadają
funkcję komparatora okienkowego, umożliwiają także programową realizację histerezy
i opóźnienia.
Układy interfejsów IO
Kolejną świetną wiadomością jest obecność zwielokrotnionych interfejsów IO. W starszych rodzinach AVR programiści spotykali się często z ograniczeniami wynikającymi
z obecności tylko jednego sprzętowego interfejsu I2C, SPI czy USART. W XMEGA
mamy do dyspozycji nawet osiem takich interfejsów i co najmniej kilka niezależnych
interfejsów SPI lub I2C. Co ważne, każdy z nich posiada identyczny zestaw rejestrów
kontrolnych, dzięki czemu jeden sterownik może współpracować z dowolnym interfejsem, np. zamiana USART 0 na USART 1 sprowadza się tylko do podania nowego
adresu bazowego rejestrów kontrolnych USART. Co więcej, USART rozbudowano także
o sprzętową obsługę protokołu IrDA (ang. The Infrared Data Association), dzięki
czemu stworzenie układów wymiany danych w podczerwieni lub układów sterujących
innymi urządzeniami jest banalnie proste.
Interfejs pamięci zewnętrznej
Również ten podsystem znacznie rozwinięto. Oprócz znanej z wcześniejszych modeli
obsługi pamięci SRAM dodano także obsługę pamięci dynamicznych (SDRAM). Co
więcej, interfejs łączący pamięć z procesorem jest elastycznie konfigurowalny, dzięki
czemu możemy pamięci zewnętrzne łączyć bezpośrednio, z pominięciem zewnętrznych zatrzasków (co jednak wykorzystuje dużą liczbę pinów IO) lub z wykorzystaniem 1 – 2 zatrzasków (co minimalizuje liczbę zajętych pinów IO procesora). Ponadto
procesor posługuje się adresami 24-bitowymi, dzięki czemu bezpośrednio potrafi zaadresować 16 MB pamięci. Wsparcie dla tej cechy oferuje avr-gcc w wersji 4.7.
Liczniki
W XMEGA nie tylko dodano kolejne liczniki (nawet 8 w jednym procesorze), ale
także rozwinięto ich możliwości. Przede wszystkim przybyło kanałów PWM (nawet
32 kanały), a dzięki możliwości taktowania ich zegarem z układu PLL rozdzielczość
PWM sięga 4 ns. Osoby zajmujące się robotyką z pewnością ucieszy fakt, że liczniki
wzbogacono w możliwość sprzętowej realizacji czasów martwych (ang. Dead time)
oraz układy detekcji sytuacji awaryjnych, dzięki czemu sterowanie silnikami, w tym
silnikami krokowymi, jest bardzo proste. Praktycznie projektant układu musi do procesora dodać tylko mostek H, cała logika sterująca jest realizowana sprzętowo przez
procesor. To też przekłada się na mniejsze koszty budowy układu.
Porty IO
Ostatnim podsystemem jest układ portów IO. Nie tylko zwiększono ich liczbę (co jest
zależne od wybranej obudowy), ale także zupełnie zmieniono ich funkcjonalność. Co
prawda w podstawowym trybie działają one w sposób znany nam z innych modeli
AVR, lecz oferują także zupełnie nowe możliwości, jak praca w konfiguracji wired-OR,
wired-AND, bus keeper itd. Ta elastyczność umożliwia znaczną redukcję wymaganych
elementów zewnętrznych (np. bezpośrednio można realizować magistrale ze stanami
recesywnymi). Co istotne, dodano rejestry umożliwiające modyfikację stanu poszczególnych linii IO w sposób atomowy. Znikają więc problemy wynikające z odwoływania
się do tego samego portu w programie głównym i w przerwaniach. Dla przyśpieszenia
operacji wprowadzono także porty wirtualne — dowolny port IO można zmapować
w przestrzeń portu wirtualnego, co umożliwia operowanie na nim przy użyciu krótkich,
jednotaktowych instrukcji asemblera. avr-gcc ma pełne wsparcie dla tej cechy.
Z pewnością po tym wstępie każdy fan mikrokontrolerów nie może doczekać się już pokazania konkretów. Przejdźmy więc do praktycznego wykorzystania XMEGA. Wszystkie
przykłady bazują na płytkach demonstracyjnych XPlained ATXMEGA-A1 oraz w mniejszym stopniu ATMEGA-A3BU. Niemniej równolegle z kodem pokazane zostały
schematy umożliwiające zbudowanie pokazanych przykładów z pominięciem modułów
firmy Atmel lub zbudowanie układów testowych w oparciu o dostępne minimoduły
pasujące do płytki stykowej. Moduły takie można sobie przygotować samemu (stosowne schematy i wzory PCB dostępne są na blogu http://mikrokontrolery.blogspot.com,
można też zakupić gotowe układy z preprogramowanym bootloaderem, co wyeliminuje
konieczność stosowania programatora i obniży koszty startu z mikrokontrolerami.