Ta strona używa ciasteczek (cookies), dzięki którym możliwe jest między innymi poprawne wyświetlanie elementów strony, zapamiętywanie sesji użytkowników. Dodatkowo na stronie znajduje się skrypt Google Analytics oraz PIWIK (statystyki oglądalności). Znajdują się również skrypty przycisków serwisów społecznościowych Facebook, Twitter i Google+ oraz YouTube, które również mogą zapisywać ciasteczka.

ARDUINO jako programator mikrokontrolerów AVR

Nie będę tłumaczył czym jest Arduino, ponieważ w internecie są miejsca gdzie jest to fachowo i dokładnie wyjaśnione. Skupię się tylko na opisaniu jak wykorzystać płytkę Arduino do programowania mikrokontrolerów AVR na macOS. Opis ten będzie ograniczony tylko do płytki Arduino UNO, a to z tego powodu że jedynie taką obecnie posiadam. Płytka którą zakupiłem w sklepie internetowym Nettigo, jest klonem oryginału. W opisie na stronie sklepu widniała informacja, że jest to klon lepszej jakości, cokolwiek to znaczy. Może i coś w tym jest, bo jak na razie sprawuje się bez zarzutu a i macOS wykrył ją od razu po podłączeniu do komputera.

Głównym powodem mojego zainteresowania Arduino, była chęć sprawdzenia czy można je wykorzystać w roli programatora i czy AVRFusesCalc będzie potrafił za jego pomocą ustawiać fusebity. Z tego też powodu od jakiegoś czasu testuję właśnie możliwość programowania mikrokontrolerów AVR przy użyciu środowiska Arduino. A teraz w końcu przyszła pora na wykorzystanie płytki Arduino jako programatora.

Arduino UNO umożliwia programowanie mikrokontrolerów, które można później użyć po za płytką Arduino a to dzięki podstawce do której można włożyć dodatkowy mikrokontroler. Jednak nasz wybór ogranicza się do konkretnej rodziny mikrokontrolerów. Dodatkowo należy pamiętać o wgraniu do mikrokontrolera bootloadera, bez którego nie jest możliwe zaprogramowanie układu. Niby nic wielkiego, ale bootloader może zabrać nam nawet pół kilobajta pamięci. Gdy projekt jest niewielki nie ma to wielkiego znaczenia, ale przy rozbudowanych kodach gdy walczy się o każdy wolny bajt, jest to spory minus. Można co prawda to ograniczenie obejść wykorzystując zewnętrzny programator, np USBAsp. Nadal jednak będziemy skazani na konkretną wersję mikrokontrolera która będzie pasowała do podstawki na płytce Arduino.

Jest jednak sposób który umożliwia wykorzystanie płytki Arduino jako programatora dowolnego mikrokontrolera AVR. No, prawie dowolnego, ale o tym za chwilę. Wspomniany sposób polega na wykorzystaniu pinów ISP mikrokontrolera włożonego do podstawki na płytce Arduino, do zaprogramowania innego mikrokontrolera znajdującego się po za tą płytką. Żeby jednak móc z tego skorzystać należy do mikrokontrolera na płytce Arduino wgrać specjalny program, który uczyni z niego „pomost” dzięki któremu będzie można zaprogramować układ po za płytką. Program ten jest dostarczany wraz z aplikacją Arduino i znajduje się w jej zasobach.

Na początku należy sprawdzić czy jest potrzeba instalowania sterownika do obsługi płytki Arduino. W tym celu, po podłączeniu Arduino do komputera, należy z menu wybrać opcję "Narzędzia->Płytka" i na liście zaznaczyć posiadaną przez siebie płytkę, w moim przypadku jest to Arduino UNO. Kolejnym krokiem jest wybranie z menu pozycji "Narzędzia->Port" i zaznaczenie portu do komunikacji z Arduino. macOS sam rozpoznaje podłączane urządzenia i jeśli tylko takowe rozpozna, uaktywnia tak zwany wirtualny port poprzez który będzie się z danym urządzeniem komunikował. Arduino UNO które ja zakupiłem, zostało od razu rozpoznane i na liście portów miałem pozycję "usbmodem.14111". Jeśli na liście nie masz nic innego jak "bluetooth" i ewentualnie "iPhone", to znak tego że trzeba doinstalować sterowniki. Jaki miałby to być sterownik, trzeba się dowiedzieć u producenta lub sprzedawcy posiadanej płytki Arduino.

Po ustawieniu portu można testowo wgrać program BLINK z przykładów: "Plik -> Przykłady -> Basics -> Blink". Dzięki temu upewnisz się że komunikacja pomiędzy Arduino a komputerem działa. Jeśli wbudowana na płytce Arduino dioda zacznie migać to wszystko przebiegło prawidłowo. Teraz można wgrać program który umożliwi programowanie mikrokontrolerów po za płytką Arduino. Z menu wybieramy "Plik -> Przykłady -> ArduinoISP -> ArduinoISP", i wgrywamy kod do mikrokontrolera. Generalnie program można wgrać w takiej postaci w jakiej został wczytany do szkicownika. Warto jednak przeczytać komentarze i upewnić się czy nie są wymagane jakieś zmiany odnośnie posiadanej płytki Arduino.

Jeśli wgranie kodu do mikrokontrolera odbyło się bez błędów, można przejść do podłączenia dodatkowego mikrokontrolera. Dobrze sprawdzi się w tym przypadku stykówka i w niej zamontowany mikrokontroler. Przydałoby się też podłączyć diodę LED, nie zapominając o rezystorze, dzięki czemu będzie można naocznie się przekonać czy udało się wgrać wsad do AVR. Teraz w oparciu o noty katalogowe mikrokontrolera i płytki Arduino, należy te dwa układy ze sobą połączyć. W przypadku Arduino UNO i ATmegi328, połączenia wyglądają jak na zdjęciu powyżej. Profilaktycznie można również podciągnąć pin Reset do GND. Chodzi o pin Reset mikrokontrolera znajdującego się w podstawce na płytce Arduino. Wystarczy kondensator 10uF.

Gdy strona sprzętowa jest już ogarnięta, można zająć się programowaniem. Jak już wspominałem sposób ten umożliwia wgrywanie wsadu do prawie każdego mikrokontrolera AVR. To prawie bierze się z tego że Arduino natywnie nie daje możliwości wybrania jako wzoru, pojedynczego mikrokontrolera AVR. Trzeba się posiłkować wzorami stworzonymi przez pasjonatów Arduino. Na szczęście do najczęściej wykorzystywanych AVR, takowe wzory istnieją. Skąd je wziąć i jak zainstalować opisałem w poradniku. W poradniku tym jest również opisane jak skonfigurować mikrokontroler w aplikacji Arduino, więc nie będę tu tego powtarzał. Po wybraniu właściwego wzoru dla podłączonego AVR, kolejnym krokiem jest wybranie programatora. Z listy programatorów należy wybrać „Arduino as ISP”. Do szkicownika wczytujemy ponownie BLINK z przykładów. Dokonujemy kilku zmian w kodzie w celu ustalenia pinu do którego podłączyliśmy diodę, czyli LED_BUILTIN zmieniamy na wartość liczbową odpowiadającą numerowi pinu mikrokontrolera AVR w środowisku Arduino. Jak określić jaki numer pinu ma dany mikrokontroler, również wyjaśniłem w linkowanym wcześniej poradniku. Po wprowadzeniu zmian, naciskamy "Wgraj". Dioda powinna zacząć migać. W ten sposób płytka Arduino została użyta w roli programatora dla zewnętrznego mikrokontrolera AVR. Program został wgrany i działa, pomimo braku w nim zainstalowanego bootloadera dla Arduino.

Czas na sprawdzenie jak poradzi sobie AVRFusesCalc z Arduino w roli programatora. Po jego uruchomieniu, w preferencjach należy ustawić programator, port oraz prędkość komunikacji na wybranym porcie. Z listy programatorów wybieramy „stk500v1”, ustawiamy port oraz prędkość komunikacji. Jeśli w programie do obsługi ISP, który został wgrany do mikrokontrolera w podstawce Arduino nie dokonano zmian odnośnie prędkości komunikacji, należy wybrać wartość 19200. Naciskamy „Zapisz” i można przejść do próby odczytania fusebitów. Do wyboru są "Fusbity uproszczone" lub też "Fuse/Lock Bits AVR", gdzie będziesz miał dostęp do wszystkich fusebitów mikrokontrolera. Po naciśnięciu „Sprawdź AVR” powinny zostać wczytane fusebity i lockbity mikrokontrolera podłączonego poprzez Arduino. Fusebity można w ten sposób ustawiać w dowolnym mikrokontrolerze AVR. Nie jesteśmy tutaj ograniczeni do wzorów zainstalowanych w Arduino.

Na koniec drobna uwaga odnośnie sterowników Arduino dla macOS. Jak wspominałem ja nic nie musiałem instalować, system sam uaktywnił port do obsługi Arduino. Generalnie super, ale nie ma róży bez kolców. Zdarzają się sytuacje że po odłączeniu płytki Arduino od komputera i ponownym jej podłączeniu, system uaktywnia inny port niż chwilę wcześniej. Co siłą rzeczy oznacza, że przy próbie wgrania wsadu lub ustawienia fusebitów, wyrzucony zostanie błąd o niemożności odczytania portu. Trzeba mieć to na uwadze i w razie takiego komunikatu, sprawdzić w pierwszej kolejności czy system nie zmienił portu. Osoby które będą musiały zainstalować dedykowany sterownik, pewnie się z tą niedogodnością nie spotkają.

To by było chyba wszystko. Mam nadzieję że niczgo nie przeoczyłem. Jak widać można wykorzystać płytkę Arduino UNO w roli programatora na macOS. Używanie jej niesie za sobą co prawda pewne ograniczenia, wynikające głównie z niewielkiej ilości wzorów mikrokontrolerów AVR dla Arduino IDE, ale z drugiej strony daje dostęp do przeogromnej bazy gotowych programów które można wgrać i potestować w swoich układach.

Zachęcam do komentarzy pod poradnikiem jak i do subskrybowania mojego kanału na YouTube. Ostatnio założyłem również stronę na Facebooku, w związku z czym zapraszam do polubienia jej.

Tags: AVR, Arduino, macOS, fusebits, AVRFusesCalc

E-mail

Dodaj komentarz