Arduino bez wysokopoziomowej biblioteki

Cześć

Dziś zajmiemy się tematem programowania Arduino w czystym języku C bez wysokopoziomowej biblioteki, która w teorii ułatwi nam programowanie kontrolera. Dzięki tej bibliotece Arduino nie musimy się zagłębiać w wewnętrzną architekturę procesora.

Dla początkujących korzystanie z tej biblioteki jest bardzo dobrym rozwiązaniem ponieważ dzięki niej może poznać podstawową logikę programowania mikrokontrolerów.

Jednak w późniejszej drodze związanej z mikrokontrolerami będziemy musieli przestać korzystać z wysokopoziomowej biblioteki oraz zacząć programować w tak zwanym „czystym” języku C.

Dlaczego?

Dzięki ręcznej konfiguracji peryferiów lepiej zrozumiesz zasadę działania mikrokontrolera. Gdy już będziesz znał język C będziesz mógł programować każde inne mikroprocesory np. ARM Cortex. Kolejnym plusem korzystania z czystego języka C jest większa kontrola nad sprzętem oraz większe możliwości konfiguracji oraz optymalizacji.

Porównanie

Przykładowy program migający diodą z wysokopoziomową biblioteką wygląda tak

A bez biblioteki

W takim razie dlaczego Arduino a nie „czysta” ATmega?

Odpowiedź na to pytanie jest bardzo prosta. Arduino jest bardzo wygodną platformą prototypową. Nie musimy przejmować się zewnętrznym programatorem oraz nadmiarem niepotrzebnych kabelków. W późniejszym czasie gdy projekt będzie gotowy oraz sprawdzony możemy kupić czystą ATmege i zaprojektować płytkę drukowaną.

Jak to zrobić?

IDE Arduino nie umożliwia nam programowania bez użycia wysokopoziomowej biblioteki dlatego musimy skorzystać z innego środowiska ja skorzystam ze środowiska Eclipse.

Na początku musimy pobrać oraz zainstalować takie narzędzia jak
Java
Eclipse C/C++ IDE
Arduino IDE
AVR Eclpise

Gdy pobraliśmy i zainstalowaliśmy nasze narzędzia możemy przejść do stworzenia pierwszego projektu

1.Tworzymy nowy projekt C w Eclipse File=> New=> C project

2.Ustawienia projektu

  • Project Name: <nazwa>
  • Project Type: AVR Cross Target Application => Empty project
  • Toolchains: AVR-GCC Toolchain

3. Wybieramy wersje swojego kontrolera w przypadku Arduino Uno jest to ATmega328P z zegarem 16000000 Hz

4. W zakładce właściwości (Project =Properties) klikamy + na C/C++ Build wybieramy Tools in Toolchain
gdzie zaznaczamy Generate HEX file for flash memory oraz Print size

5. Klikamy AVR C++ Linker i wpisujemy

  • Command: avr-gcc
  • Command line pattern: ${COMMAND} –cref -s -Os ${OUTPUT_FLAG}${OUTPUT_PREFIX}${OUTPUT} ${INPUTS} -lm ${FLAGS} *NOTE

6. Budujemy projekt przyciskiem Project =>Build All.

 

 

Gdy mamy projekt pozostaje nam go tylko wgrać na naszą płytkę

1. W Eclipsie wybieramy Project =>Properties następnie AVR => AVRDude

2. Jeżeli nie mamy skonfigurowanego programatora klikamy new

3.Konfiguracja powinna wyglądać mniej więcej tak

  • Programmer Hardware: Atmel STK500 Version 1.x Firmware
  • Override default port: //./<tutaj wpisujemy port do którego podpięta jest płytka>
  • Override default baudrate: 57600

4. Klikamy OK a następnie AVR => Upload to target device

5. Gotowe

 

Kurs Arduino