Skocz do zawartości

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


leonow32

Pomocna odpowiedź

Witam wszystkich bardzo serdecznie i chciałbym na forum FORBOT publikować mój kurs programowania mikrokontrolerów XMEGA - ten sam, który ukazał się w listopadowej Elektronice Praktycznej oraz na mojej stronie. Mam nadzieję spopularyzować te ciekawe mikrokontrolery, bo bez wątpienia są godne uwagi i bardzo przyjemnie się je programuje 🙂 no to lecimy!

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.

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!

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.

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.

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.

➡️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.

➡️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.

➡️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.

IMG_5288eacd494984894.thumb.gif.8a4d57f99359bdb6f7374d816f638454.gif

  • Lubię! 1
Link do komentarza
Share on other sites

Jeśli chodzi o Dragona: jest bardzo wrażliwy i łatwo go ubić (nam się udało nawet nie wiemy jak, możliwe, że był błąd w płytce programowanej). Już lepiej wydać 70zł więcej i kupić za 100$ (niecałe, więc nie powinno wejść do odprawy celnej) klona JTAG ICE mkII na ebayu. Albo od razu dokupić jakąś przejściówkę ochronną dla Dragona.

Link do komentarza
Share on other sites

Zarejestruj się lub zaloguj, aby ukryć tę reklamę.
Zarejestruj się lub zaloguj, aby ukryć tę reklamę.

jlcpcb.jpg

jlcpcb.jpg

Produkcja i montaż PCB - wybierz sprawdzone PCBWay!
   • Darmowe płytki dla studentów i projektów non-profit
   • Tylko 5$ za 10 prototypów PCB w 24 godziny
   • Usługa projektowania PCB na zlecenie
   • Montaż PCB od 30$ + bezpłatna dostawa i szablony
   • Darmowe narzędzie do podglądu plików Gerber
Zobacz również » Film z fabryki PCBWay

Z tego co wiem to jest już 6 odcinek, na stronie internetowej. Natomiast kurs jest dla średnio zaawansowanych moim zdaniem.

Dla czego ?

Opis jest bardzo wyrywkowy i lakoniczny.

Początkujący i tak nic z tego nie będzie wiedział.

W procesorach ATmega kontroler przerwań był tak prosty, że prostszy już być nie może. Można go było włączyć lub wyłączyć. W XMEGA kontroler przerwań został znacznie rozbudowany i traktowany jest jako pełnoprawny układ peryferyjny o nazwie PMIC, czyli Programmable Multilevel Interrupt Controller.................

Jest też dostępny scheduler round-robin, by mieć kontrolę nad kolejnością wykonywanych przerwań o tym samym priorytecie, w razie natłoku zgłoszeń. Jest to konieczne, gdyż w procesorach XMEGA mamy bardzo wiele różnych przerwań do dyspozycji – w ATxmega128A3U, zamontowanym na płytce X3-DIL64 z Leon Instruments, jest ponad 100 wektorów przerwań!

Szczerze dwa razy przeczytałem, arta, zanim zajarzyłem o co chodzi, z tymi priorytetami i kontrolerem przerwań, a w praktyce i tak pewnie pisząc program zrobiłbym to źle.

Link do komentarza
Share on other sites

Przez długi czas nie było żadnych odpowiedzi, więc stwierdziłem, że nie ma zainteresowania. Jak chcecie to powrzucam kolejne odcinki na forum, a tymczasem zapraszam na pozostałe części na stronie kursy na Leon Instruments.

Kurs staram się pisać tak, by był zrozumiały dla czytelnika, który coś już o mikrokontrolerach słyszał i często porównuję XMEGA ze starymi AVR-ami. Nie ma być łopatologii ani lania wody, bo Elektronika Praktyczna z gumy nie jest i wielu tematów nie mogę opisać zbyt obszernie, bo co miesiąc 10 stron nie dostanę 🙂 o wielu rzeczach jedynie wspominam, że istnieją, bo gdybym miał dokładnie opisywać wszystko bez wyjątku, to bym chyba 1000 stron zapisał i jeszcze by nie wystarczyło. Natomiast te ważniejsze sprawy są zilustrowane przykładowymi kodami programów.

Link do komentarza
Share on other sites

Bądź aktywny - zaloguj się lub utwórz konto!

Tylko zarejestrowani użytkownicy mogą komentować zawartość tej strony

Utwórz konto w ~20 sekund!

Zarejestruj nowe konto, to proste!

Zarejestruj się »

Zaloguj się

Posiadasz własne konto? Użyj go!

Zaloguj się »
×
×
  • Utwórz nowe...

Ważne informacje

Ta strona używa ciasteczek (cookies), dzięki którym może działać lepiej. Więcej na ten temat znajdziesz w Polityce Prywatności.