Spis treści:
Mikrokontrolery AVR cieszą się ogromną popularnością. Aby dostosować ich działanie, niezbędny będzie także programator.
Co to jest programator?
Określenie „programator” dotyczy wszystkich urządzeń, których zadaniem jest programowanie układów elektronicznych. To proces, który odbywa się poprzez wgranie kodu do pamięci mikrokontrolera – zależnie od wybranego sprzętu może to być np. pamięć flash, EPROM czy EEPROM. Kod wejściowy jest przeważnie przygotowywany z użyciem komputera osobistego, często także z wykorzystaniem specjalnych, dedykowanych środowisk programistycznych, które ułatwiają wykonanie całego procesu. W roli interfejsu do przesyłania danych najczęściej stosuje się obecnie standard USB, głównie ze względu na jego uniwersalność i popularność. Czasami można spotkać się także z alternatywnymi, zazwyczaj starszymi rozwiązaniami – do przykładów należą złącza RS-232 oraz porty szeregowe.
Jak działa programator?
Podstawowym zadaniem programatora jest przekształcenie kodu w formie tekstowej na instrukcje zrozumiałe dla mikrokontrolera. Jak jednak dokładnie odbywa się ten proces? Główną rolę odgrywa algorytm programowania, który może się różnić w zależności od rodzaju i architektury docelowego procesora. Z tego względu na rynku dostępne są różne warianty programatorów – w tym urządzenia przeznaczone do stosowania z układami AVR, ATmega czy JTAG. Niektóre modele odznaczają się uniwersalnym działaniem i pozwalają na programowanie różnych procesorów. Wróćmy jednak do algorytmów programowania – ich wykonanie opiera się na przekształceniu danych na wartości w systemie szesnastkowym. Tak przygotowane informacje mogą być wgrane bezpośrednio do pamięci mikrokontrolera, a następnie odczytane i wykonane przez procesor.
Mikrokontrolery AVR
Zanim przejdziemy do informacji na temat programatorów AVR, warto przyjrzeć się samym mikrokontrolerom z tej rodziny. To układy, które charakteryzują się dość skromnymi możliwościami i prostą konstrukcją, jednak mogą pochwalić się solidną pozycją w świecie elektroniki. Ich popularność wynika m.in. z niskich cen – dzięki temu stanowią świetne rozwiązanie dla osób, które dopiero zaczynają swoją przygodę z tym tematem. Są one również bardzo dobrym wyborem do testowania niewielkich projektów. Układy AVR były początkowo opracowywane przez firmę Atmel, a następnie przez Microchip, która produkuje również mikrokontrolery PIC oraz dsPIC. Szyna danych w mikrokontrolerach AVR jest 8-bitowa, co w pewnym stopniu ogranicza ich możliwości – jest to jednak zupełnie wystarczająca konfiguracja w prostych aplikacjach.
Mimo że mikrokontrolery AVR stopniowo tracą popularność na rzecz bardziej zaawansowanych rozwiązań, warto podkreślić, że są one wykorzystywane również przez inne platformy. Najbardziej znanym przykładem jest Arduino – układy z tej serii korzystają m.in. z mikrokontrolerów tinyAVR oraz megaAVR. Aby wgrać instrukcje do pamięci Arduino, nie trzeba jednak korzystać z programatora. Platforma korzysta z własnego, wbudowanego programu ładującego, który pozwala na bezpośrednie przesłanie programu z komputera poprzez port USB. Ze względu na ograniczenia pod względem pamięci takie rozwiązanie nie jest jednak stosowane w mniejszych mikrokontrolerach. Sam program ładujący zajmuje przeważnie ok. 2 kilobajtów, co może być sporą przeszkodą, gdy dysponujemy bardzo ograniczoną ilością miejsca na dane.
Jak działa programator AVR?
Mamy za sobą już ogólną zasadę działania programatora AVR – warto przyjrzeć się nieco bliżej mechanizmowi pracy takiego urządzenia. Kluczową kwestią są w tym przypadku linie SPI, czyli interfejsu szeregowego wykorzystywanego przez mikrokontrolery AVR. Wyróżniamy cztery linie, z których każda odpowiada za inne zadanie:
- SCK – synchronizuje transmisję danych przez sygnał zegarowy;
- MOSI – przesyła dane z programatora do mikrokontrolera;
- MISO – przesyła dane w przeciwnym kierunku: z mikrokontrolera do programatora;
- RESET – linia odpowiadająca za wprowadzenie mikrokontrolera w tryb programowania.
Zarówno MOSI, jak i MISO działają zgodnie z taktem nadawanym przez linię SCK. Programowanie jest z kolei możliwe jedynie wtedy, gdy linia RESET jest w stanie niskim. Zależnie od modelu mikrokontrolera wyprowadzenia dla wskazanych linii mogą znajdować się w różnych miejscach. Z tego względu przed podłączeniem programatora należy dokładnie sprawdzić specyfikację danego produktu. Podłączenie programatora do mikrokontrolera może odbywać się m.in. poprzez złącza KANDA, które występują w dwóch wariantach – z 6 lub 10 pinami. Alternatywnym sposobem jest po prostu podłączenie standardowej płytki stykowej oraz odpowiednio ułożonych przewodów. Aby ułatwić to zadanie, można skorzystać z tzw. gniazda ZIF – dodatkowego elementu do wygodniejszego łączenia mikrokontrolera.
Jak korzystać z programatora AVR?
Oprócz samego podłączenia i przesyłania danych między programatorem AVR a mikrokontrolerem należy zwrócić uwagę również na konieczność wykorzystania odpowiedniego oprogramowania. Na komputerze, do którego podłącza się programator, muszą przede wszystkim znaleźć się sterowniki pozwalające na obsługę sprzętu. Aktualnie są one często dołączane do urządzeń lub zintegrowane ze środowiskami programistycznymi do mikrokontrolerów. Jeśli jednak nie mamy dostępu do sterownika, należy poszukać odpowiedniego pliku w sieci, pamiętając o wyborze właściwego rozwiązania do konkretnego modelu mikrokontrolera. Przydatny będzie także program do modyfikacji kodu i usprawnienia procesu przesyłania kodu – wśród najpopularniejszych opcji znajdują się m.in. AVRdude, embedXcode, BitBurner i AVR8 Burn-O-Mat.
Funkcje i kluczowe elementy specyfikacji programatorów AVR
Standardowy programator AVR pozwala na zapis danych do pamięci EEPROM lub flash – przy wyborze konkretnego produktu należy zwrócić uwagę na rodzaj pamięci wykorzystywanej przez mikrokontroler. W większości przypadków możemy także liczyć na dostęp do funkcji odczytu danych z pamięci. Poszczególne rozwiązania mogą różnić się m.in. pod względem prędkości przesyłania danych – maksymalna szybkość transmisji szeregowej obsługiwana przez AVR to 5 kB/s. Nie bez znaczenia jest także wsparcie dla różnych systemów operacyjnych: wiele dostępnych produktów bez problemu pracuje zarówno z Windowsem, jak i Linuksem oraz macOS, jednak niektóre są przygotowane pod kątem konkretnej platformy. Ostatnim czynnikiem przy wyborze, który często ma największe znaczenie, jest zgodność z danym modelem mikrokontrolera.
Jak oceniasz ten wpis blogowy?
Kliknij gwiazdkę, aby go ocenić!
Średnia ocena: 4.7 / 5. Liczba głosów: 3
Jak dotąd brak głosów! Bądź pierwszą osobą, która oceni ten wpis.