Mikrokontrolery - Jak zacząć?

... czyli zbiór praktycznej wiedzy dot. mikrokontrolerów.

czwartek, 10 marca 2011

Recenzja modułu eXtrino XL z firmy Leon Instruments


Autor: tmf
Redakcja: Dondu

Właśnie dostałem ciekawą przesyłkę z firmy Leon Instruments – ich najnowszy produkt eXtrino XL – normalnie tego typu płytki leżą i czekają cierpliwie na chwilę wolnego, żeby się nimi zająć, ale coś mnie tknęło żeby otworzyć kopertę. Efekt był tak porażający, że od razu postanowiłem się podzielić wrażeniami z użytkowania tego modułu. To lećmy po kolei.

Przesyłka

Moduł przyszedł zapakowany w kopercie z folii bąbelkowej, tak jak to przy takich okazjach bywa… Po szybkim odpakowaniu w środku mamy płytkę zawierającą elementy i kilka poskładanych papierków – instrukcja i schemat modułu. Zwykle, podobnie jak większość, nie czytam instrukcji, ale ta przyciągnęła moją uwagę. Dlaczego? Bo jest krótka i… kolorowa. Na kilku stronach są przejrzyście pokazane informacje co moduł zawiera, opis parametrów granicznych, zdjęcie modułu z opisem poszczególnych elementów, kilka przydatnych wskazówek dotyczących użytkowania. W sumie instrukcję można przeczytać w dwie minuty – warto te dwie minuty na nią poświęcić. Druga kartka zawiera schemat modułu – przyda się jeśli będziemy chcieli napisać swój pierwszy program.

Płytka

Najlepsze wrażenie, a właściwie piorunujące robi sama płytka. Dlaczego? Poza funkcjonalnością wygląda po prostu niezwykle estetycznie, zresztą sami zobaczcie:


Płytka eXtrino XL

Płytka pokryta jest czarną, matową soldermaską, która wygląda naprawdę bardzo fajnie. Wszelkie styki są pozłacane, co ładnie kontrastuje z czernią soldermaski. Najbardziej rozbawił mnie pozłacany napis z tyłu płytki – Not made in China – tak, po jakości zdecydowanie widać, że to europejska robota :)

Stop China! :-)

Sama płytka jest ciekawie zaprojektowana – znajdziemy na niej procesor – ATXMEGA128A3U – naprawdę wypasiony AVR, taktowany nawet do 32 MHz (można przetaktować do 60-70 MHz, oczywiście tylko dla zabawy), który zawiera pełno układów peryferyjnych i sprzętowy interfejs USB. Dzięki temu ostatniemu nie zauważymy na płytce typowego układu FT232, który jest na wielu dev-boardach i umożliwia realizację szeregowego interfejsu do programowania układu. Ponieważ USB w XMEGA to pełny interfejs klasy device, stąd też możemy przy jego pomocy zaimplementować dowolne urządzenie USB.

Oprócz tego płytka zawiera:

  • złącze karty mikroSD,
  • enkoder obrotowy,
  • podstawki pod pamięci cyfrowe SPI, I2C, 18-bitowy przetwornik ADC, diodę RGB LED superflux, potencjometr cyfrowy (MCP41xxx), wzmacniacz (MCP6S91),
  • termometr (DS18x20 lub LM35),
  • kwarc taktujący procesor (nie jest potrzebny),
  • złącze pod moduł LCD zgodny z HD44780,
  • dwa złącza na które są wyprowadzone niektóre sygnały procesora (o rozkładzie kompatybilnym z modułami (shieldami) do Arduino – tylko uwaga – działającymi na 3,3V),
  • 8 LEDów sterowanych z zatrzasku 595 i 8 klawiszy typu mikroswitch podłączonych pod układ 74HC165, dzięki czemu i LEDy i klawisze nie zajmują portów IO procesora.

Warto podkreślić, że wymienione elementy są w podstawkach, jeśli ich nie używamy można je wyjąć, lub zamówić płytkę bez nich, dzięki czemu jest tańsza. Wszystkie układy są już podłączone do procesora, dzięki czemu płytka nie potrzebuje obszaru do którego lutujemy przewody lub złączy do wykonywania połączeń.

Ktoś powie, że to wada, bo mamy na stałe podłączone peryferia pod piny procesora. Tu wadą to nie jest – dlaczego? Z kilku powodów. Pierwszy jest taki, że nieużywane układy możemy wyjąć z podstawki, dzięki czemu dany pin IO procesora możemy wykorzystać do innych celów, drugi powód wynika z architektury użytego procesora. XMEGA mają sensownie poukładane układy peryferyjne, dzięki czemu jeśli np. pamięć SPI podłączymy pod SPIC0, to zmiana w finalnym układzie na inny interfejs SPI wiąże się tylko ze zmianą nazwy struktury, np. na SPID0. Nie mamy tu, pomieszanych tak jak w ATMega układów peryferyjnych. Dzięki temu płytka jest zwarta, gotowa do pracy i nie grozi nam plątanina przewodów łączących.

Zasilanie płytki

Płytkę możemy zasilać bezpośrednio z USB (jest to wygodne, gdyż przez ten sam kabel USB możemy się z płytką komunikować), lub z zewnętrznego zasilacza – 7,5-12V wg instrukcji. Tu miałbym pewne wątpliwości po co stosować zewnętrzny zasilacz. Oczywistą odpowiedzią jest, że w celu zwiększenia dopuszczalnego poboru prądu. Tyle, że stabilizator jest w obudowie SOT23, w efekcie warunki termiczne jego pracy uniemożliwią nam pobór istotnie większego niż z USB3.0 prądu, szczególnie jeśli moduł będziemy zasilać z 12V. Moim zdaniem w zupełności wystarczy możliwość zasilania z USB, z drugiej strony dodatkowa możliwość zasilania płytki nie przeszkadza.

Programowanie

Płytka umożliwia elastyczny wybór sposobu programowania – mamy do dyspozycji złącze PDI i JTAG. Dzięki temu można procesor łatwo programować i debuggować, np. przy pomocy taniego programatora/debuggera, który opisałem tutaj. Ale to nie wszystko.

Dla osób, które właśnie spłukały się kupując ten moduł mam miłą wiadomość – procesor zawiera wgrany bootloader, dzięki czemu łatwo możemy go programować wykorzystując darmowy program FLIP, który udostępnia nam firma Atmel. Ktoś powie, że programowanie z wykorzystaniem bootloadera jest uciążliwe – nic bardziej mylnego. Na module mamy dwa dodatkowe przyciski nazwane RESET i FLIP. Aby przejść w tryb bootloader wystarczy je razem nacisnąć, a następnie zwolnić najpierw RESET a potem FLIP. I to wszystko – procesor od tego momentu czeka na nowy wsad. Co ważne, dzięki zabezpieczeniom nasz program z pewnością nie skasuje bootloadera, stąd też możemy sobie bezpiecznie eksperymentować. Ponieważ testy płytki rozpocząłem od bootloadera, pokrótce opiszę jak on działa.

Bootloader


Jak już pisałem na czytanie instrukcji poświęciłem jakieś 2 minuty, prawdę mówiąc nawet nie doczytałem jak w bootloader wejść (chociaż jak później zauważyłem, jest to opisane), niemniej jest to tak intuicyjne, że szkoda czasu na czytanie – lepiej rozpocząć test. Aby ożywić płytkę wystarczy podłączyć ją do USB – potrzebny będzie kabel USB-miniUSB, którego nie ma w zestawie, ale chyba każdy elektronik ma takich kabli co najmniej kilka.

Podłączamy i… nic. Moduł zgłasza się odpalając na chwilę LEDy, po czym uruchamia się jakaś standardowa aplikacja. A jak odpalić bootloader? Ano tak, jak to się robiło w poprzednich modułach i ogólnie we wszystkich modułach z XMEGA. Naciskamy RESET i FLIP, po czym zwalniamy RESET i następnie FLIP (kolejność jest ważna). Od tej chwili procesor czeka na wgranie nowego kodu.

Warto zauważyć, że tradycyjnie na modułach z firmy Leon Instruments na RESET i FLIP są mikroswitche – jest to wygodne rozwiązanie, lepsze niż na modułach Xplained, gdzie trzeba kombinować ze zworkami i wejście w tryb bootloadera jest uciążliwe. Na eXtrino XL same mikroswitche są wyposażone w duże, żółte przyciski, dzięki czemu korzysta się z nich komfortowo (jakbym miał się do czegoś przyczepić to mikroswitche RESET i FLIP mogłyby mieć inny kolor niż pozostałe). Po wykonaniu opisanej sekwencji, zauważymy, że komputer wykrył nowe urządzenie USB:


Menedżer urządzeń

Ponieważ mam zainstalowane różne programy Atmela, najwyraźniej miałem już w systemie sterownik – płytka eXtrino po prostu się wykryła i natychmiast była gotowa do pracy. Sterowniki prawdopodobnie instalują się razem z Atmel Studio, więc każda osoba, która ten program zainstalowała już ma sterowniki do modułu. No to czas na test – w tym celu odpaliłem program FLIP. Po kliknięciu na piktogram symbolizujący kabel USB następuje nawiązanie połączenia z procesorem, co jest miłe program automatycznie wykrywa, że pracujemy z XMEGA128A3U i jest gotowy do dalszej pracy:


Program FLIP

I to wszystko – jak widzimy programowanie jest banalne. Żadnych AVRDude, konfiguracji, magicznych zaklęć – po prostu działa. Samo wczytywanie nowej aplikacji jest bardzo szybkie – w ciągu paru sekund zaprogramujemy całe 128 kB pamięci FLASH – o wiele szybciej niż z wykorzystaniem zabawek typu USBasp.

Podobnie łatwo możemy zaprogramować układ korzystając z zewnętrznego programatora – np. AVR Dragon lub Atmel-ICE. Po prostu łączymy programator z gniazdem PDI lub JTAG i to wszystko. Tu mała uwaga – lepiej aby na płytce były gniazda wannowe, uniemożliwiające odwrotne włożenie wtyczki kabla programatora. Na płytce są tylko tzw. goldpiny, a prawidłowe położenie wtyczki symbolizuje rysunek z wcięciem odpowiadającym indeksowi wtyczki. Nie jest to wystarczające zabezpieczenie, z drugiej strony odwrotne włożenie wtyczki nie grozi uszkodzeniem układu – po prostu nie będzie połączenia. Sama komunikacja odbywa się bez problemu:

Programowanie w Atmel Studio


Złącze wyświetlacza LCD

Jako ciekawostkę napiszę, że moduł posiada złącze kompatybilne z modułami wyświetlaczy LCD opartych na sterowniku HD44780 – czyli najpopularniejszych wyświetlaczy alfanumerycznych. Moduł po prostu wkładamy w złącze i powinien działać:

Podłączenie standardowego LCD.

Złącze mikroSD

Na płytce znajduje się też gniazdo dla kart mikroSD. Przetestowałem jego działanie z przykładami do mojej książki „AVR. Układy peryferyjne” – wszystko działa bez najmniejszych problemów, możemy bawić się zarówno kartami SD, jak i SDHC. Testowo odczytywałem 8 GB kartę poprzez FATFS – wszystko przebiegło bez najmniejszych problemów.

Ponieważ użyty mikrokontroler posiada sprzętowy interfejs USB wraz z moimi przykładami mamy prostą emulację RS232 poprzez USB, dzięki czemu nie musimy łączyć płytki z komputerem przy pomocy jakichkolwiek dodatkowych kabli – w zupełności wystarczy nam kabel USB, który użyłem do zasilania płytki.

Tu drobna uwaga – użyte gniazdo mikroSD odsługuje detekcję włożenia karty, lecz odpowiednie piny nie są na module podłączone do mikrokontrolera, ani wyprowadzone. Znowu – nie jest to wielka wada, większość modułów zawierających gniazda dla kart SD nie wykorzystuje detekcji karty, ale mimo wszystko szkoda. Drugi potencjalny problem – wszystkie urządzenia wykorzystujące interfejs SPI (karta SD, pamięci, przetwornik ADC) współdzielą wspólną magistralę.

Z jednej strony może to być wada, ale czytelnicy mojej najnowszej książki już wiedzą, że to żaden problem. Takie rozwiązanie ma też pewne zalety – zużywamy tylko 3 piny IO mikrokontrolera (MISO, MOSI, SCK).

Działanie

Uruchomiłem na płytce kilka kodów przykładów załączonych do moich książek o XMEGA – po kosmetycznych przeróbkach związanych z pinologią wszystko ruszyło bez problemu. Na płytce ciekawy jest sposób podłączenia mikroswitchy i LEDów – przez układy rejestrów szeregowych, dzięki czemu zwalniamy 16 pinów IO, a sterowanie zapewnia nam prosty interfejs SPI.

Jeśli to dla kogoś jest problem (IMHO takie rozwiązanie jest fajne), to producent udostępnia biblioteki, które umożliwiają nam sterowanie LEDami i odczyt mikroswitchy tak jakby były one połączone bezpośrednio do portu IO mikrokontrolera. Całkiem fajne rozwiązanie.

Podsumowanie

Nabywając eXtrino XL uzyskujemy naprawdę fajną i świetnie wykonaną płytkę. W połączeniu z modułami typu shieldy do Arduino będziemy mogli za jej pomocą potestować wiele aplikacji. Dodatkowo dzięki kompatybilności w rodzinie XMEGA przeniesienie aplikacji testowanych z XMEGA128A3U na inny, docelowy mikrokontroler z rodziny XMEGA jest banalne.

Osobiście mogę ten zakup polecić, płytka szybko się nie znudzi i z pewnością przyda się w warsztacie. IMHO jest to z pewnością bardziej atrakcyjna alternatywa od płytek Xplained XMEGA A3BU – za niższą cenę dostajemy dev-board z bogatszym wyposażeniem. Co prawda nie mamy na nim wyświetlacza graficznego LCD, lecz odpowiedni moduł można kupić za parę złotych.


Oceń artykuł.
Wasze opinie są dla nas ważne, gdyż pozwalają dopracować poszczególne artykuły.
Pozdrawiamy, Autorzy
Ten artykuł oceniam na:

1 komentarz:

  1. Dowiedziałem się od sprzedawcy: niestety procesor w tej płytce nie ma wszystkich pinów wyprowadzonych na zewnątrz.

    OdpowiedzUsuń

Działy
Działy dodatkowe
Inne
O blogu




Dzisiaj
--> za darmo!!! <--
1. USBasp
2. microBOARD M8


Napisz artykuł
--> i wygraj nagrodę. <--


Co nowego na blogu?
Śledź naszego Facebook-a



Co nowego na blogu?
Śledź nas na Google+

/* 20140911 Wyłączona prawa kolumna */
  • 00

    dni

  • 00

    godzin

  • :
  • 00

    minut

  • :
  • 00

    sekund

Nie czekaj do ostatniego dnia!
Jakość opisu projektu także jest istotna (pkt 9.2 regulaminu).

Sponsorzy:

Zapamiętaj ten artykuł w moim prywatnym spisie treści.