Zaprogramuj sobie AVR – programowanie ATtiny cz.1
Spora ilość ludzi z którymi mam styczność nie do końca zdaje sobie sprawę co to jest Arduino i z czego jest zbudowane. Kupujemy gotową płytkę, którą podłączamy przez USB do komputera i programujemy i nie przejmujemy się co za układ się na niej znajduje. W większości płyt Arduino jest to jeden z modeli ATmega. A gdybyśmy chcieli kupić sobie sam mikrokontroler i go zaprogramować? Nie, nie musimy uczyć się języka C dla AVR :) Możemy spokojnie wgrać sobie bootloader Arduino i programować układ tak samo jak płytkę Arduino, czyli w prosty sposób. I właśnie dlatego zaprezentuję wam w kilku częściach jak zacząć zabawę z programowaniem mikrokontrolerów AVR i Arduino, lutowaniem i budowaniem prostych układów.
Dostępnych mamy naprawdę sporo wersji układów ATtiny i ATmega. W tym wpisie przedstawię przede wszystkim układy ATtiny, które posiadam i używam. Mógłbym przedstawić tu długie listy dostępnych układów, ale skupię się na dwóch popularnych układach na które możemy z powodzeniem wgrać bootloader Arduino (coś jak Bios w naszym komputerze). Po wgraniu bootloadera będziemy mogli pisać już kod w Arduino IDE i wysyłać go na nasze układy.
Przygotowanie do programowania
Aby móc zaprogramować układy będziemy potrzebować programatora lub Arduino. Najlepszym wyjściem jest zakup programatora zgodnego z USBasp.
Oprócz programatora warto również zakupić podstawkę do programowania układów, dzięki czemu nie będziemy musieli męczyć się z podłączaniem wielu kabelków. W łatwy sposób wepniemy układ i zaprogramujemy go.
Oprócz tego większość podstawek posiada wyjścia pinów, co pozwala programować i testować kod już na nich bez potrzeby wyciągania układu.
ATtiny
Używać będziemy dwóch układów ATtiny85 oraz ATtiny2313, które są popularne i łatwo dostępne w sklepach internetowych.
ATtiny85
Zacznę od układu ATtiny85, który jest jednym z najmniejszych i posiada tylko 8 pinów z których 5 pinów jest programowalnych: 3 piny wejść analogowych ADC (ADC0 znajduje się na pinie reset) oraz 2 piny PWM. Oprócz tego możliwa jest też komunikacja poprzez SPI (w celu np. wgrania programu). Pozostałe piny służą do zasilenia układu (1.8 - 5.5V dla wersji ATtiny85V oraz 2.7 - 5.5V dla ATtiny85) i resetu układu. Czyli jak widzimy możemy zasilać układ już niecałymi 2 woltami. Układ może posiadać od 2 do 8 KB pamięci na program oraz od 128 - 512 bajtów pamięci SRam (w zależności od wersji).
Pełna specyfikacja układu ATtiny85
Attiny2313
Drugi układ, którego będziemy używać to attiny2313, posiadający znacznie więcej złącz. Posiada ich aż 20 z czego programowalnych mamy 17 pinów, które są głównie cyfrowe m.in. 4 PWM, UART oraz standardowo SPI. Układ nie posiada zwykłych wejść analogowych ADC, dostępne są dwa złącza dla komparatora. Do układu możemy podłączyć również zewnętrzny kwarc do 20MHz. Układ posiada 2 KB pamięci na program oraz 128 bajtów SRam.
Pełna specyfikacja układu ATtiny2313
Przydatne naklejki
Bardzo przydatne są naklejki z oznaczeniami pinów w układach. Gotowe projekty możemy znaleźć w internecie. Polecam pobranie tego pliku PDF oraz sprawdzenie tej strony.
Gdy mamy już układy oraz programator możemy zabrać się za przygotowanie Arduino IDE, które musimy wcześniej zainstalować.
Przygotowanie Arduino IDE
Aby móc programować powyższe układy będziemy potrzebować plików konfiguracyjnych, które musimy skopiować do katalogów programu Arduino IDE.
Paczka zawiera pliki konfiguracyjne dla ATtiny 25, 45, 85 i 2313 i kilku innych.
Należy rozpakować katalog tiny a następnie przenieść go
dla Linuksa do katalogu
/usr/share/arduino/hardware/
dla Windowsa do katalogu
nazwa_uzytkownika/Dokumenty/Arduino/hardware/
Jeśli nie mamy takiego katalogu musimy go utworzyć.
Po uruchomieniu Arduino IDE powinniśmy widzieć na liście płytek nasze układy.
Wgrywanie Bootloadera i kodu
Teraz gdy mamy przygotowane Arduino IDE wystarczy podpiąć nasz programator z podstawką i podpiętym mikrokontrolerem ATtiny a następnie wybrać odpowiedni układ [code=bash]Narzędzia>Płytka[/code]
np. ATtiny85 @ 8Mhz Internal.
Następnie wybieramy programator USBasp
Narzędzia>Programator
a na koniec wybieramy opcję
Narzędzia>Wypal bootloader
Po poprawnym zakończeniu wgrywania bootloadera możemy przejść do programowania układu.
Podsumowanie
Choć obecnie jesteśmy w stanie kupić z Chin gotowe Arduino mini czy nano w podobnych cenach lub niewiele droższe to jednak programowanie mikrokontrolerów AVR oraz stworzenie własnej płytki daje wielką satysfakcję. Polecam zabawę z samymi układami i tworzenie małych rozwiązań, przy okazji można nauczyć się lutowania. Również pisanie kodu w Arduino ułatwi na samym początku naukę, a bardziej dociekliwi i żądni wiedzy mogą zająć się w późniejszym czasie programowaniem w języku C na AVR.
W kolejnej części zaczniemy zabawę z programowaniem zaprezentowanych układów ATtiny, chętni mają więc czas, aby się zaopatrzyć w te układy i trochę elektroniki. Przygotujemy m.in. prosty sterownik obrotów stołu do skanera 3d i bezprzewodowy czujnik temperatury. W późniejszych częściach przedstawię również układy ATmega8 i ATmega16.