Jeśli trafiłeś na ten artykuł to znaczy, że interesujesz się tematem programowania układów elektronicznych i dobrze trafiłeś, bo tu poznasz najbardziej podstawowe informacje na ten temat, więc nie przedłużając, zacznijmy od samego początku.
Na początek – czym jest AVR?
Tak pokrótce jest to rodzina programowalnych mikrokontrolerów, czyli w zasadzie kompletnych mikroprocesorów, zamkniętych w pojedynczej obudowie, w postaci układu scalonego z wyprowadzeniami, wyprodukowanych przez firmę Atmel, które z łatwością można wykorzystywać jako proste, programowalne układy sterujące we własnych projektach bez konieczności tworzenia i wytrawiania płytek drukowanych. Największe zalety mikrokontrolerów AVR to przede wszystkim ich prostota i niska cena przy stosunkowo dużych możliwościach, w związku z tym są idealne jako podstawa do pierwszych własnych projektów elektronicznych.
Układ AVR, jak wspomniałem wcześniej jest kompletnym układem, zawierającym 8-bitową jednostkę obliczeniową CPU, pamięć operacyjną RAM, służącą do przechowywania aktualnie wykonywanych rozkazów, pamięć Flash (zbudowaną podobnie jak kości pamięci wewnątrz pendrive’a) oraz pamięć programowalną EEPROM, gdzie zapisane są dane startowe oraz ustawienia konfiguracyjne. AVR posiada również oczywiście porty komunikacyjne wejścia/wyjścia służące do wysyłania i odbierania sygnałów sterujących poszczególnymi podzespołami zewnętrznymi.
Do programowania układów niezbędny jest układ programatora, który będzie stanowił pomost umożliwiający przesyłanie napisanego przez nas na komputerze programu do mikrokontrolera. Programator taki ma zazwyczaj postać płytki drukowanej z kilkoma układami oraz portami komunikacyjnymi, z jednej strony jest to interfejs do komunikacji z komputerem, z drugiej wejście do wpięcia mikrokontrolera.
Programator taki możemy zbudować sami lub zakupić gotowy układ, zwłaszcza, że najprostsze układy są dostępne w stosunkowo niskiej cenie, a na początek ich możliwości będą dla nas w zupełności wystarczające. Do komunikacji z komputerem obecnie najczęściej używany jest interfejs USB, który jest najbardziej uniwersalnym złączem, dostępnym w każdym współczesnym komputerze, jednak w starszych komputerach programatory były często podłączanie poprzez port szeregowy lub równoległy, jednak dziś te porty wyszły praktycznie z użycia, poza rozwiązaniami typowo przemysłowymi.
Przejdźmy teraz do kolejnego elementu, jakim jest programowanie AVR
Do programowania avr niezbędny jest nam oczywiście komputer z odpowiednim interfejsem umożliwiającym podpięcie programatora, a także odpowiednie środowisko programistyczne. Wybór środowiska programistycznego jest zależny od tego, w jakim języku mamy zamiar pisać nasz kod. W tym wypadku pomocne mogą być nasze wcześniejsze doświadczenia z którymś z języków programowania.
Programowanie AVR jest możliwe m.in. w assemblerze oraz w językach wysokiego poziomu, jakimi są język C oraz Bascom. Assembler jest to tzw. język niskopoziomowy, w którym kod programu zapisujemy bezpośrednio w krótkich rozkazach zwanych mnemonikami, a same rozkazy są zależne od rodzaju procesora, na jaki piszemy dany program.
Natomiast języki wysokiego poziomu są znacznie łatwiejsze do zrozumienia dla przeciętnego człowieka i przy tym są bardziej uniwersalne, ponieważ instrukcje w języku C lub Bascom są identyczne niezależnie od tego, na jaki procesor jest pisany program (oczywiście istnieją pewne różnice wynikające z danego standardu, jaki jest obsługiwany przez konkretny kompilator czy rozszerzeń dostępnych w dodatkowych bibliotekach, jednak na potrzeby podstaw przyjmujemy, że skupimy się na podstawach danego języka).
Język C należy do rodziny języków, z której oprócz C, wywodzi się m.in. język C++ czy Java, więc część instrukcji jest zgodna lub działa podobnie w wymienionych językach. C++ oraz Java są aktualnie jednymi z najpopularniejszych języków kompilowanych, w których pisze się oprogramowanie, powstało w nich również wiele aplikacji na komputery i smartfony, co jest niewątpliwą zaletą, gdyż łatwo o znalezienie rozwiązania, jeśli napotkamy jakiś problem podczas pracy.
Innym językiem, w którym pisane są programy dla mikrokontrolerów jest Bascom, opierający się na języku Basic, który z kolei wywodzi się z tej samej rodziny języków co VBA, w którym pisane są makra dla pakietu Office czy nieco już zapomniany VBS, w którym pisane były skrypty dla systemu Windows. Bascom na pierwszy rzut oka wydaje się znacznie prostszy niż język C, jednak ma swoje wady, przede wszystkim ma sporo ograniczeń, a przez to jest mniej popularny i w zasadzie nieużywany poza mikrokontrolerami AVT.
Oczywiście wybór środowiska programistycznego jest kwestią indywidualną, jednak samo zagadnienie, jakim jest programowanie AVR to na pewno ciekawe i rozwijające hobby, które daje sporo satysfakcji przy stosunkowo niewielkich kosztach