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.

Programowanie AVR przy użyciu aplikacji Arduino na macOS.

Jakiś czas temu napisał do mnie jeden z użytkowników AVRFusesCalc, zgłaszając problem że nie może odczytać fusebitów z mikrokontrolera AVR. Z racji że Apple jest bardzo restrykcyjne w kwestii dostępu do zasobów systemu, i pozwoliło na dostęp tylko do jednej lokacji, moje pierwsze pytanie w takiej sytuacji jest zawsze takie samo: jaka jest ścieżka dostępu do "avrdude"? I jak zwykle okazało się że ścieżka jest niestandardowa. Tym razem jednak problemem nie było zainstalowanie pakietu AVR-GCC w niewłaściwym folderze, ale chęć użycia "avrdude" znajdującego się w aplikacji Arduino.

Była to rzecz która mnie dość mocno zaintrygowała, bo co prawda mam zainstalowaną aplikację Arduino i nawet używałem jej do programowania, jednak nigdy wcześniej nie zagłębiałem się w to, co zawiera ona w sobie. W konsoli oczywiście widziałem że korzysta z "avrdude" ale byłem przekonany że to dzięki temu iż mam zainstalowane w systemie biblioteki do AVR działa ona bez problemu.

Po zgłębieniu więc tematu, okazało się że z aplikacją Arduino dostajemy nie tylko "avrdude" ale również pliki nagłówkowe do poszczególnych mikrokontrolerów AVR. To odkrycie sprawiło że zacząłem się zastanawiać, jak tu sprawić aby AVRFusesCalc mógł odczytywać fusebity korzystając z "avrdude" w Arduino, oraz czy da się zaprogramować mikrokontroler w czystym C przy użyciu szkicownika Arduino.

Ci co mają aplikację Arduino już zainstalowaną na komputerze, wiedzą że w standardowej swej postaci nie umożliwia ona programowania "czystych" mikrokontrolerów AVR. Jedyne dostępne zestawy to te z rodziny Arduino AVR. Aplikacja daje jednak możliwość zainstalowania dodatkowych wzorów płytek. Zacząłem więc przeszukiwać internet pod kątem programowania AVR bez użycia płytek Arduino. Po chwili poszukiwań natrafiłem w GitHub na projekt MCUdude . W sumie jest to kilka niezależnych pakietów, gdzie każdy zawiera dane dla innego mikrokontrolera AVR. Nie będę tutaj opisywał co zawiera jaki pakiet, bo wszystko to jest dokładnie opisane na stronie projektu, skupię się tylko na instalacji ich w systemie.

Chcąc więc zainstalować któryś z pakietów, należy na niego kliknąć. Po naciśnięciu otworzy się link w którym będzie można przeczytać szczegółowe informacje na temat wybranego pakietu wzorów płytek AVR. Znajdują się tam między innymi informacje o tym jakie dokładnie mikrokontrolery są obsługiwane, jakie prędkości taktowania, informacje o bootloaderze. Dość istotną sprawą są prędkości taktowania. Jeśli ma się jakieś konkretne wymagania w tym temacie, to lepiej się upewnić czy dana prędkość jest wspierana niż marnować potem czas na zastanawianie się czemu program nie działa.

Po zapoznaniu się więc z informacjami na temat danego pakietu, można wybrać opcję "Manual Installation". Przeniesie nas ona do akapitu w którym będzie znajdował się link, dzięki któremu będzie można zainstalować potrzebne pliki w aplikacji Arduino. Aby tego dokonać, należy skopiować link, otworzyć Arduino a następnie z menu wybrać opcję Preferencje.

W oknie które się pojawi, na samym jego dole znajduje się pole tekstowe w którym wklejamy skopiowany wcześniej link. W sytuacji kiedy mamy tam już wpisany wcześniej inny link, kliknąć należy ikonę obok tego pola tekstowego. Dzięki temu otworzy się okno w którym będzie można dopisać link do tych już istniejących. W ten sposób można przekopiować linki ze wszystkich pakietów MCUdude, przez co za jednym razem zainstalują się wszystkie dostępne wzory płytek dla AVR. Po wpisaniu linków, każdy w osobnej linii, naciskamy przycisk OK i zamykamy okno preferencji naciskając również przycisk OK.

Teraz należy z menu wybrać Narzędzia -> Płytka -> Menedżer Płytek. Pojawi się okno z dostępnymi do zainstalowania płytkami. Zjeżdżamy suwakiem na sam dół tego okna i szukamy wzorów z pakietu MCUdude. U mnie były one samym końcu. Zaznaczamy interesujący nas pakiet, wybieramy wersję do zainstalowania i naciskamy przycisk Install. W ten sam sposób postępujemy jeśli chcemy zainstalować kolejne wzory płytek dla AVR. Po zakończonej instalacji zamykamy okno opuszczając w ten sposób menedżera płytek.

O ile instalacja przebiegła bez problemu, to po wybraniu z menu opcji Narzędzia -> Płytka, w spisie dostępnych wzorów powinny się również znajdować wzory dla mikrokontrolerów AVR. Teraz pozostaje wybrać interesujący nas mikrokontroler. Po dokonaniu wyboru należy jeszcze ustawić prędkość taktowania, programator oraz inne interesujące nas opcje. Na macOS nie ustawia się portu o ile korzysta się z programatora USBAsp.

Po skonfigurowaniu wzoru płytki na podstawie podłączonego mikrokontrolera i ustalonego taktowania, można przejść do programowania. Możliwości są dwie. Można skorzystać ze składni języka C typowej dla Arduino, lub użyć czystego C. W pierwszym przypadku należy sprawdzić w opisie zainstalowanego pakietu z GitHub, jak ma się numeracja pinów danego mikrokontrolera do numeracji z Arduino. Każdy pakiet MCUdude, ma w swoim opisie dokładną rozpiskę pinów wraz z numeracją dla Arduino. W przypadku chęci programowania w czystym C, również dobrze jest sprawdzić opis pinów, aby się upewnić czy wszystkie funkcjonalności danego mikrokontrolera zostały zaimplementowane, czy też są może jakieś wykluczenia.

Wgrajmy więc pierwszy program na AVR korzystając ze szkicownika Arduino. Standardowo będzie to "Hello World" w świecie mikrokontrolerów, czyli miganie jedną diodą LED. Wybieramy z menu opcję Plik -> Przykłady -> 01.Basics -> Blink. W oknie szkicownika pojawi się kod do migania jedną diodą LED napisany z wykorzystaniem składni języka C dla Arduino. Z racji że podłączony mamy zwykły mikrokontroler AVR, jak już wspomniałem wcześniej, sprawdzamy jaki ma numer pin dla Arduino do którego podłączoną mamy diodę. Następnie polecenie LED_BUILTIN zmieniamy na postać liczbową, wpisując w to miejsce numer pinu z Arduino. I tak w moim przykładzie użyłem Atmegi 8, a diodę podłączyłem do PB0. Polecenie LED_BUILTIN zamieniłem więc na liczbę 8. Oczywiście zmiany tej należy dokonać we wszystkich liniach kodu w których polecenie to się znajduje.

Naciskamy ikonę "Wgraj" znajdującą się na belce okna szkicownika. O ile dobrze skonfigurowaliśmy płytkę a diodę prawidłowo podłączyliśmy, powinna ona zacząć migać. W ten oto sposób wgraliśmy program pierwotnie napisany dla płytek Arduino do "gołego" mikrokontrolera AVR.

Spróbujmy teraz wgrać kod napisany w czystym C. Tu również możemy się posłużyć gotowymi przykładami. W tym celu wybieramy z menu opcję Plik -> Przykłady -> AVR C code examples -> Blink. Kod który został wczytany do szkicownika posiada składnię typową dla programów pisanych w C na mikrokontrolery AVR. Tak więc na początku dołączamy potrzebne biblioteki poleceniem #include, następnie w funkcji main() konfigurujemy mikrokontroler, a w pętli while(1) będzie wykonywać się właściwy kod programu.

Wczytany przykład pokazuje też różne sposoby konfigurowania stanu na pinach mikrokontrolera. Mamy tu pokazaną możliwość ustalenia stanu na pinie poprzez wpisanie wartości w postaci liczby HEX, z użyciem makra BV, czy też wykorzystując przesunięcia bitowe. Po ustawieniu więc odpowiedniego stanu na pinie do którego jest podłączona dioda, naciskamy Wgraj i cieszymy się migającą diodą.

To wszystko co chciałem w tym poradniku przekazać. Jak widać można w o wiele prostszy sposób zacząć przygodę z programowaniem mikrokontrolerów AVR na macOS. Nie trzeba walczyć z instalacją pakietu AVR-GCC, Eclipse i pilnowaniem czy czasem nie pojawiła się nowsza wersja bibliotek. Korzystając z aplikacji Arduino wszystko to otrzymuje się razem z nią. Jak jeszcze uda się wykorzystać avrdude z Arduino w AVRFusesCalc to kto wie, może instalacja AVR-GCC w ogóle nie będzie potrzebna na macOS.

AKTUALIZACJA 11.06.2018

Z racji że ukazała się nowa wersja programu AVRFusesCalc w której można już korzystać z "avrdude" w Arduino, nagrałem film na którym pokazuję jak zainstalować wzory płytek AVR, jak napisać pierwszy program typu "Hello world" w C oraz jak wykorzystać biblioteki z Ardunio w programie AVRFusesCalc. Link poniżej. Zapraszam do oglądania i komentowania.

Tags: AVR, Arduino, macOS

E-mail

Dodaj komentarz


Kod antyspamowy
Odśwież