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
1 2 3 4 5 6 7 8 9 10 11 12 |
int led = 13; void setup() { pinMode(led, OUTPUT); } void loop() { digitalWrite(led, HIGH); delay(1000); digitalWrite(led, LOW); delay(1000); } |
A bez biblioteki
1 2 3 4 5 6 7 8 9 10 |
#include <avr/io.h> #include <util/delay.h> int main() { DDRB |= _BV(PB5); while (1) { PORTB ^= _BV(PB5); _delay_ms(1000); } } |
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
[su_button url=”https://roboblog.eu/2015/12/04/arduino-poradnik-1/” size=”7″]Kurs Arduino[/su_button]