logo elektroda
logo elektroda
X
logo elektroda
Adblock/uBlockOrigin/AdGuard mogą powodować znikanie niektórych postów z powodu nowej reguły.

Kurs XMEGA (01) - co trzeba wiedzieć, by zacząć

leonow32 13 Lis 2013 19:08 6222 10
  • Mikrokontrolery AVR firmy Atmel zdobyły bardzo dużą popularność na polskim rynku. Dotychczas producent oferował nam dwie rodziny: ATtiny oraz ATmega, które różniły się możliwościami i ceną, choć sposób ich programowania był identyczny. Wprowadzając najnowszą rodzinę, XMEGA, producent dokonał bardzo istotnych zmian, zarówno w budowie procesora, a także w sposobie pisania programów. Niniejszy cykl artykułów ma na celu pokazać różnice między tradycyjnymi ATmega a nowymi XMEGA oraz jak wykorzystać je w praktycznych rozwiązaniach. Mam nadzieję, że zachęcę czytelników do używania tych fantastycznych procesorów.

    Kurs XMEGA (01) - co trzeba wiedzieć, by zacząć

    Zegar i zasilanie

    Napięcie zasilania wynosi od 1,6V do 3,6V. Częstotliwość taktowania procesora wynosi maksymalnie 32MHz już przy napięciu 2,7V. Klasyczna ATmega8 mogła się rozpędzić tylko do 16MHz i potrzebowała do tego wyższego napięcia. Obniżenie napięcia zasilania pozwala znacząco zmniejszyć pobór prądu przy zachowaniu wysokiej wydajności obliczeniowej. Na porty procesora można podać napięcie nie większe niż napięcie zasilania, więc należy uważać przy podłączaniu układów zasilanych napięciem 5 V.

    Po włączeniu zasilania procesor uruchamia się, korzystając z wbudowanego generatora RC o częstotliwości 2 MHz. XMEGA oferuje dużo bardziej rozbudowany system dystrybucji sygnałów zegarowych niż tradycyjne AVR-y. Najważniejszą różnicą jest to, że już możemy zapomnieć o fusebitach! Cały system zegarowy możemy konfigurować z poziomu programu w dowolnym momencie. Na wypadek błędnej konfiguracji lub awarii, procesor jest w stanie wykryć nieprawidłowy sygnał zegarowy i przełączyć się samoczynnie na wbudowany generator 2 MHz, więc można eksperymentować bez obawy o zablokowanie procesora. Mamy do dyspozycji następujące generatory sygnału zegarowego:
    - wbudowany RC 32 kHz, 2 MHz, 32 MHz
    - zewnętrzny kwarcowy od 32 kHz do 16 MHz

    Oprócz tego, mamy do dyspozycji układ PLL podwyższający częstotliwość źródła oraz szereg różnych preskalerów, obniżających częstotliwość. Co ciekawe, niektóre peryferia mogą pracować z częstotliwością wyższą niż rdzeń procesora (32 MHz). Nic nie stoi na przeszkodzie, by procesor pracował z częstotliwością nawet 1 kHz, aby zmniejszyć pobór mocy, a potem przełączyć go na 32 MHz, gdy użytkownik będzie potrzebował szybkiego przetwarzania programu. Dodatkowymi dwoma cukiereczkami poprawiającymi wydajność procesora jest system zdarzeń oraz DMA. Układy te pozwalają przetwarzać dane oraz przenosić je między peryferiami lub pamięcią bez zaangażowania rdzenia. Taka możliwość świetnie poprawia np. wydajność układów pomiarowych – przetwornik ADC może ładować dane prosto do pamięci, podczas gdy rdzeń może je analizować w tym samym czasie.

    Dokumentacje

    Przyzwyczailiśmy się, że Atmel publikuje jedną dokumentację, w której znajdziemy wszystko na temat jednego lub kilku podobnych mikrokontrolerów. W przypadku XMEGA jest inaczej.

    Poszukajmy na stronie Atmela dokumentacji procesowa ATxmega128A3U. Znajdziemy dwie dokumentacje. Dokument Atmel AVR XMEGA AU Manual zawiera opis poszczególnych peryferiów bez koncentrowania się na konkretnym modelu procesora. Natomiast ATxmega64A3U/128A3U/192A3U/256A3U Complete zawiera sprecyzowane informacje specyficzne dla danego modelu. Dlaczego te informacje zostały rozdzielone?

    Procesory XMEGA zostały zaprojektowane z myślą o łatwym przenoszeniu kodu. Tak więc, kod z ATxmega128A3U możemy łatwo przenieść na ATxmega16A4U, gdyż peryferia w nim zawarte są identyczne. Różnią się tylko ilością tych peryferiów, rozmiarem pamięci oraz liczbą nóżek w obudowie. Oba należą do rodziny A z rozszerzeniem USB, czyli AU. Dlatego informacje o peryferiach, wspólne dla wszystkich mikrokontrolerów z tej rodziny, umieszczono w osobnej dokumentacji.

    Warto zwrócić uwagę, że peryferia są wielokrotnie powielone oraz dostępne na wielu różnych portach procesora. Już nie ma problemów znanych z ATmega, kiedy np. wyjścia PWM wyprowadzone są na te same nóżki co jedyny interfejs SPI – w przypadku XMEGA po prostu wystarczy użyć SPI w jednym porcie, a PWM w drugim. Niektóre XMEGA mają nawet 8 interfejsów USART, 4 SPI, 4 I2C, 2 przetworniki ADC, 2 DAC oraz 8 timerów 16-bitowych!

    Kurs XMEGA (01) - co trzeba wiedzieć, by zacząć

    Polecam też dokumenty z serii AVR1000, a przede wszystkim:
    AVR1000: Getting Started Writing C-code for XMEGA
    AVR1001: Getting Started With the XMEGA Event System
    AVR1003: Using the XMEGA™ Clock System
    AVR1005: Getting started with XMEGA
    AVR1305: XMEGA Interrupts
    AVR1306: Using the XMEGA Timer/Counter
    AVR1307: Using the XMEGA USART
    AVR1308: Using the XMEGA TWI
    AVR1309: Using the XMEGA SPI

    Tych poradników jest cała masa, a wyżej wymienione to tylko wierzchołek góry lodowej. Zachęcam do poszperania na stronie Atmela, bo można tam znaleźć wiele przykładów i gotowych rozwiązań.

    Skąd czerpać wiedzę

    W polskim Internecie pojawiły się już dwa cykle artykułów na temat mikrokontrolerów XMEGA. To najlepszy sposób, by poznać podstawy ich działania i najszybciej nauczyć się je wykorzystywać. Zapraszam na kurs prowadzony na stronie Leon Instruments oraz na świetnym blogu mikrokontrolery.blogspot.com.

    Godna polecenia jest również najnowsza książka Tomasza Francuza pt. AVR. Praktyczne projekty. Autor jest znawcą tematu, a także świetnym pisarzem – w książce znajdują się podstawowe informacje zrozumiałe dla początkujących oraz nieco bardziej skomplikowane rzeczy dla osób chcących zagłębić się w szczegóły. Niezmiernie przydane są również krótkie i czytelnie opisane fragmenty kodu, pozwalające od razu przetestować opisywane peryferia na jakimś zestawie testowym.

    Kurs XMEGA (01) - co trzeba wiedzieć, by zacząć

    Zestawy rozwojowe

    Producent przygotował kilka zestawów testowych o nazwie XMEGA XPLAINED. Dostępne są płytki z procesorami należącymi do różnych rodzin. W Internecie znajdziemy również sporo materiałów szkoleniowych przygotowanych przez firmę Atmel. Zestawy XPLAINED mają niewątpliwie największą wartość edukacyjną, jednak wadą jest ich stosunkowo wysoka cena.

    Dobrym rozwiązaniem, będącym złotym środkiem pomiędzy kosztami a możliwościami jest płytka rozwojowa X3-DIL64 produkcji Leon Instruments z procesorem ATxmega128A3U. Zaprojektowano ją tak, by wyglądem przypominała układ scalony w obudowie DIL64 w celu łatwego budowania prototypów przy użyciu tanich i popularnych płytek stykowych. Wszystkie wyprowadzenia procesora są dostępne dla użytkownika, a ponadto dostępny jest kompletny układ zasilający z USB, złącze do karty SD oraz do programatora PDI. Ważne! Nie musisz kupować programatora PDI, bo procesor ma fabrycznie wgrany bootloader FLIP, dzięki któremu można przesyłać programy przez zwyczajny kabel USB! Warto też dodać, że przykłady opisane w książce „AVR. Praktyczne projekty” praktycznie bez zmian da się uruchomić na zestawie X3-DIL64, dzięki czemu stanowi on idealną pomoc dla osób wchodzących w XMEGA.

    Programatory

    Mikrokontrolery XMEGA nie posiadają interfejsu do programowania pamięci, takiego jak w ATmega i ATtiny, więc niestety może nas czekać zmiana programatora. Polecam następujące trzy rozwiązania.
    :arrow: FLIP – darmowy program do ściągnięcia ze strony producenta, umożliwiający wgrywanie programów przez zwyczajny kabel USB. Niestety nie integruje się z Atmel Studio i jest mało wygodny przy dużych projektach. Jednak na początek jest idealny, jako rozwiązanie najtańsze, bo kabelek USB każdy ma. Aby FLIP działał, procesor musi mieć wgrany bootloader FLIP – warto dodać, że procesor na płytce X3-DIL64 z Leon Instruments ma FLIP wgrany fabrycznie, a przycisk uruchamiający tryb programowania FLIP jest dostępny na płytce.
    :arrow: AVR ISP mkII – programator, który obsługuje interfejsy ISP, PDI i TPI, a więc umożliwiający zaprogramowanie wszystkich współczesnych mikrokontrolerów AVR. Znakomicie integruje się z Atmel Studio. Wystarczy nacisnąć F5, by program został przesłany do procesora. Na stronie AVT, Kamami i allegro jest dostępna cała masa różnorodnych klonów mkII za bardzo atrakcyjną cenę. Polecam ten programator wszystkim hobbystom.
    :arrow: AVR Dragon – hit od wielu lat, gdyż jako jedyny za rozsądną cenę udostępnia interfejs JTAG. Dzięki niemu można zajrzeć do środka procesora i zobaczyć, co się z nim dzieje. Jest to nieoceniona pomoc przy większych projektach, gdyż pozwala szybko i skutecznie znajdywać błędy w programach. AVR Dragon polecam dla profesjonalistów i bardziej zaawansowanych hobbystów.

    Fajne? Ranking DIY
    O autorze
    leonow32
    Poziom 30  
    Offline 
    leonow32 napisał 2025 postów o ocenie 1221, pomógł 37 razy. Mieszka w mieście Poznań. Jest z nami od 2007 roku.
  • #2 12949286
    darco_10
    Poziom 10  
    Świetny artykuł, fajnie, ze ktoś rozkręca temat rodziny Xmega. Proponowaną książkę Pana Tomasza mam i mogę ją z czystym sercem polecić innym zainteresowanym. Pomiędzy ATmega, a Xmega według mnie, jest ogromna przepaść pod względem możliwości, a ceny są zbliżone np. porównując do ATmega328P, więc nie ma na co czekać...
  • #3 12970025
    tmf
    VIP Zasłużony dla elektroda
    Dziękuję za miłe słowa. Małe sprostowanie w kwestii modułów - akurat w chwili składania książki innych nie było. Oczywiście polecam moduł eXplore, ale również moduły z Leon Instruments bedą ok. XMEGA ma tą przyjemną cechę, że niezwykle prosto przenosi się aplikacje pomiędzy procesorami. W 90% przypadków wystarczy zmienić typ procesora w ustawieniach projektu. Także naprawdę fajnie, że mamy na rynku wybór modułów, każdy z nich ma unikalne, fajne cechy.
  • #4 17650765
    kogiel
    Poziom 16  
    Fajny artykuł szkoda, że umarł śmiercią naturalną :-(
    Chętnie bym protestował możliwości Xmegi, ale niestety gotowe moduły są nie do osiągnięcia,
    a nie wiem gdzie znaleźć bootloader do tych procesorów
    Jeśli ktoś by miał namiar prosiłbym o linki
  • #6 17650831
    landy13
    Poziom 31  
    leonow32 napisał:
    ...a bootloader mogę Ci przesłać na maila.
    Tylko czym wgra ów bootloader, skoro nie ma programatora PDI? Bo gdyby miał to bootloader byłby zbędny.
  • #7 17650869
    kogiel
    Poziom 16  
    Można jeszcze wgrać AVRICEMkII pożyczonym od kolegi, lub własnym, a później się nie męczyć
    Tak samo robię ze zwykłą Atmegą wgrywam bootoader USBASP, a potem już tylko programuje przez Xloader
  • #8 17650876
    tmf
    VIP Zasłużony dla elektroda
    IMHO, aby efektywnie programować procesory o pewnym stopniu skomplikowania (albo pisać programy o pewnym stopniu skomplikowania), trzeba zainwestować w narzędzia. Bootloader jest ok (oczywiście trzeba móc go wgrać), niemniej jak rozwiązać problem bez debuggera? Oczywiście można się bawić w wysyłanie komunikatów (nawet jest to proste - wgrywam w XMEGA USB-CDC i sobie patrzę na konsoli jak program działa), niemniej sprzętowy debugger ułatwia życie. Oczywiście, Atmel Studio ma świertny symulator, który tez bardzo pomaga i jakoś umożliwi obejście braku debuggera. Jednak, przydałoby się zainwestować w narzędzia. Niestety Microchip nie sprzedaje ich tanio, chociaż można upolować okazję i jakiś kupon rabatowy.
    Właśnie debugguję układ, który ma komunikować się przez RS485 i mam podpięte 4 debuggery, żeby śledzić co się dzieje w każdym module + wysyłanie komunikatów przez USB-CDC, żeby śledzić transmisję live. Bez chociaż jednego sprzętowego debuggera, w ogóle bym się za to nie brał, bo prędzej bym osiwiał niż skończył projekt.
    Płytek z XMEGA jest sporo, polecam z Leon Instruments, które mi służą do prototypowania.
  • #9 17650895
    kogiel
    Poziom 16  
    Tmf to napisz gdzie można kupić płytki Leon Instruments
    Ja osobiście nie piszę zbyt skomplikowanych projektów, jeśli coś się wiesza to sprawdzam zapalanie diod na porcie, jest to o wiele szybsze niż wysyłanie przez uart
    ps:
    tu napisaleś: http://mikrokontrolery.blogspot.com/2011/02/xmega-podlaczamy-przez-usb-flip.html ,że "bootloadery prekompilowane dla każdego procka można pobrać ze strony Atmela." jest jeszce gdzieś taka strona ?
  • #10 17650909
    tmf
    VIP Zasłużony dla elektroda
    Jezeli nie ma w eXtronic, to są w modulowo.pl. Są też moduły Xplained z XMEGA np. w Farnellu. Ale IMHO nasze są lepsze, bo jest dostęp do wszystkich pinów IO.

    Dodano po 39 [sekundy]:

    kogiel napisał:
    tu napisaleś: http://mikrokontrolery.blogspot.com/2011/02/xmega-podlaczamy-przez-usb-flip.html ,że "bootloadery prekompilowane dla każdego procka można pobrać ze strony Atmela." jest jeszce gdzieś taka strona ?

    Tak, trzeba ją odszukać na stronie Microchipa.
  • #11 17650926
    kogiel
    Poziom 16  
    W eXtronic nie ma, napisz mi które to są wasze (może być na mail kogiel at wp.pl)

    edit:
    szukałem na stronie stronie Microchipa niestety nic nie znalazłem :-(
REKLAMA