Physical Address

304 North Cardinal St.
Dorchester Center, MA 02124

Mikrokontrolery AVR – zabawa i nauka dla jednych, praca dla innych

atmega8_01_pengoWspółczesny świat oparty jest na elektronice. Ale urządzenia te to nie tylko skomplikowane w swojej budowie i działaniu elektroniczne gadżety, ale także proste konstrukcje, które wszystkim osobom zainteresowanym wejściem w świat elektroniki pozwolą zrobić pierwsze kroki. Do takich urządzeń należą mikrokontrolery AVR amerykańskiej firmy Atmel.

Co to jest AVR?

Atmel AVR to rodzina 8-bitowych, jednoukładowych mikrokontrolerów, opartych na schemacie RISC (Reduced Instruction Set Computing), stanowiących modyfikację architektury harwardzkiej, w których pamięć danych programu jest oddzielona od pamięci rozkazów. Powstały w 1996 roku w głowach Alfa-Egila Bogena i Vegarda Wollana, studentów z Norwegian Institute of Technology (NTH).

Jednostka arytmetyczno-logiczna AVR zawiera 32 ośmiobitowe rejestry. Cechuje się rozkazami o prostej strukturze i związaną z tym dużą wydajnością obliczeniową, ponieważ w jednym takcie zegara procesor jest w stanie zrealizować większość rozkazów.

Mikrokontrolery AVR podzielono na kilka grup, ze względu na zastosowaną architekturę i przeznaczenie: tinyAVR (ATiny) o ograniczonym poborze energii i oferowane w małych obudowach, megaAVR (ATmega) posiadające rozszerzony zestaw poleceń, liczne zintegrowane peryferia instalowane w obudowach o 28-100 wyprowadzeniach. Ponadto istnieje linia AVR XMEGA (ATxmega) która ma 8/16 bitową architekturę i znacznie bardziej rozszerzone możliwości, m.in. sprzętowe wsparcie dla kryptografii, system zdarzeń logikę programowalną czy też Direct Memory Access (DMA), które umożliwia peryferiom dostęp do pamięci z pominięciem procesora.

Wyróżnia się także 32 bitową architekturę AVR32, której lista rozkazów jest jednak niekompatybilna z AVR. Dzielona jest ona na szereg serii, zaprojektowanych do konkretnych zadań.

W skład typowej konstrukcji mikrokontrolera AVR wchodzą m.in.: pamięć Flash, która jest programowalna, pamięć EEPROM, pamięć RAM, określona liczba uniwersalnych portów dla wejść i wyjść, 8 i 16 bitowe układy czasowo-licznikowe, przetworniki analogowo-cyfrowe oraz szereg innych części. Ważna rolę odgrywa interfejs SPI, który jest domyślnym interfejsem programowania dla Atmega.

Gdzie można zastosować mikrokontrolery AVR?

Mikrokontrolery AVR znajdują szerokie zastosowanie zarówno wśród hobbystów, amatorów, jak i profesjonalistów, ponieważ łatwo się programują i uruchamiają. Niektóre układy są tak rozbudowane, że wystarczy podłączyć do nich zasilanie, by stały się kompletnymi, programowalnymi systemami. Konstruowanie prostych układów jest tym łatwiejsze, że kontrolery można łączyć z obudowami typu Dual In-line Package (DIP). Dzięki temu łatwo jest skonstruować proste układy elektroniczne, zwłaszcza że nie ma konieczności przygotowywania do nich płytek drukowanych. Używając takich elementów oraz „garści” dodatkowych części można samodzielnie wykonać sterownik LEDów, metronom, odtwarzacz prostych plików muzycznych czy joystick na USB. W zastosowaniach ograniczeniem jest tylko fantazja. W elementy do skonstruowania własnego zestawu wykorzystującego mikrokontroler AVR można zaopatrzyć się w firmie Micros.

Jak programować mikrokontrolery AVR?

Mając podstawowy zestaw niezbędnych części, można zacząć programowanie mikrokontrolera. Programowanie polega na skasowaniu zawartości pamięci Flash i nadpisanie jej nową zawartością. Operację taką na pamięciach Flash można przeprowadzić około 10 tysięcy razy, później pamięć Flash staje się bezużyteczna i mikrokontroler należy wymienić. W pamięci Flash umieszczane są oprócz kodu programu wartości stałe np. duże tablice danych oraz teksty komunikatów, które mogą być wyświetlane na wyświetlaczach alfanumerycznych. Pamięć Flash programujemy z użyciem programatora ISP, który z jednej strony podłączamy do komputera PC przez jeden z dostępnych portów z drugiej odpowiednim przewodem z mikrokontrolerem na płytce bez konieczności demontażu mikrokontrolera. Napisany w dowolnym języku programowania, np. w C/C++, kod źródłowy kompilowany jest na język maszynowy z użyciem kompilatora i za pomocą programatora wgrywany do mikrokontrolera.