czwartek, 7 stycznia 2016

AVR & Eclipse - C, Arduino

Moja przygoda z C pisanym dla AVR zaczęła się od ascetycznego Programmers Notepad ( w pakiecie WinAVR), potem epizodycznie używałem Atmel Studio, aby ostatecznie przejść do Eclipse, który wówczas posługiwałem się też zawodowo. Nawiasem mówiąc, od kilku lat korzystam ze znacznie lepszego, jednak płatnego PHPStorma. Wracając jednak do tematu, korzystając z Eclipse mamy do dyspozycji pluginy wspierające pracę zarówno jeśli chcemy pisać kod w C, jak też pisać kod pod Arduino.

Kod w C

Eclipse jest darmowym i najlepszym IDE do pisania kodu w C pod AVR, choć mogę być w błędzie ;) Poza typowym wsparciem jakie daje każde IDE w tworzeniu kodu, do dyspozycji mamy "AVR plugin". Daje on przede wszystkim możliwość wysyłania skompilowanego kodu do mikrokontrolera. Rozwlekły opis jego instalacji i uruchomienia można znaleźć w artykule "How to get started with Eclipse and AVR". Poniżej przedstawiam mocno skróconą wersję, która już kilkakrotnie mi się przydała. 

1) Instalujemy WinAVR
2) Instalujemy najnowszą wersję Eclipse'a dla C (Eclipse IDE for C/C++ Developers). Obecnie jest to Mars.
3) Instalujemy plugin AVR z linku http://avr-eclipse.sourceforge.net/updatesite/. W tym celu należy wejść w menu do Help/Install New Software... i dodać powyższy link w polu "Work with" i kliknąć na przycisk Add...,a by zapamiętać adres.  Potem można już wybrać poniżej interesujący nas plugin i go zainstalować.

4) Tworzymy nowy projekt przez wybranie z menu głównego
File/New Project/C Project
i w otwartym oknie zatytułowanym "C Project" wprowadzamy nazwę projektu, a następnie wybieramy "Project type" równy "AVR Cross Target Application" i dalej "Empty Project" oraz po prawej stronie w kolumnie "Toolchains" opcję "AVR-GCC Toolchain"

5) Konfiguracja utworzonego projektu (menu Project/Properties)
5.1) C/C++ Build -> Settings: Klikamy na "Additional Tools in Toolchain" i zaznaczamy trzy checkboxy:
- Generate HEX file from Flash memory
- Print Size
- AVRDude

5.2) AVR
- AVRDude - tu klikamy na przycisk New i wybieramy nasz programator. W moim przypadku był to popularny i tani USBasp. Pól konfiguracji (port, baudrate) nie wypełniałem.

- Target Hardware - klikając na przycisk "Load from MCU" można sprawdzić poprawność łączenia z ATmegą i ustawić właściwy typ mikrokontrolera (MCU Type) oraz częstotliwość pracy (MCU Clock Frequency)

6) I to wszystko. Napisany kod można zbudować/skompilować wybierając z menu opcję "Project -> Build All", a następnie przesłać do mikrokontrolera przy użyciu innej opcji z menu "AVR->Upload Project To Target Device".

Kod pod Arduino

Z menu Help wybieramy Eclipse Marketplace, czyli coś w rodzaju repozytorium pluginów. Tam wystarczy wyszukać słowo “arduino”. Wśród znalezionych pluginów pojawia się plugin Arduino eclipse IDE V2. Klikamy na przycisk Install i przechodzimy przez kolejne kroki, aby zainstalować plugin.

Poza instalacją pluginu, konieczna jest instalacja samego IDE Arduino. Nie może być jednak nowsza niż 1.6.5, więc taką właśnie wybrałem.

Po zainstalowaniu tej wersji, przechodzimy z powrotem do Eclipse. Tam, z menu Window wybieramy opcje (Preferences), a w nich z kolei ustawienia dla sekcji Arduino (po lewej). W polu "Arduino IDE path" należy podać ścieżkę do Arduino IDE (w moim przypadku była pusta). Kolejną rzeczą do zrobienia jest dodanie rozszerzeń plików *.ino i *.pde w sekcji C/C++ / File Types. Dla *.ino jako type podajemy C++ Source File, dla *.pde będzie to opcja C++ header file.

Teraz można przystąpić do utworzenia nowego projektu (sketcha), wybierając w menu File / Others / Arduino / New Arduino sketch. Tworząc projekt trzeba jeszcze podać platformę (board, w moim przypadku Arduino/Genuino Uno) i port COMn (gdzie n numer portu używanego do komunikacji z Arduino Uno). Sketch można utworzyć też szybciej, wybierając z menu opcję Arduino / New Sketch.

Podczas korzystania z Eclipsa napotkałem jeden problem z brakującymi referencjami ("undefined reference to ...") do funkcji z włączanych bibliotek. Problem rozwiązałem, póki co, włączając bibliotekę do kodu sketcha.

Brak komentarzy:

Prześlij komentarz