Niezawodne programowanie
May 2015
Arduinowe Hello World
15/05/15 13:58 Filed in: Arduino
Odpowiednikiem programu Hello World na Arduino jest program zapalający i gaszący diodę w odstępach jednosekundowych.
W pliku blink.adb umieszczamy następujący program:
with AVR.MCU;
with AVR.Real_Time.Delays;
use AVR;
procedure Blink is
begin
MCU.DDRB_Bits(5) := DD_Output;
loop
MCU.PINB_Bits(5) := True;
delay 1.0;
end loop;
end Blink;
Ustawia on dla piątego pinu w porcie PINB tryb wyjściowy. Następnie w nieskończonej pętli zmienia stan tego pinu na przeciwny odczekując po każdej zmianie jedną sekundę.
W pliku blink.gpr umieszczamy opis projektu:
project Blink extends "avr_app" is
for Main use ("blink.adb");
end Blink;
Jak widać nasz projekt jest rozszerzeniem projektu avr_app.gpr definiującego wszystkie potrzebne parametry kompilacji (plik avr_app.gpr znajduje się w katalogu /opt/avr-ada/avr-ada-111/avr/lib/gnat).
Projekt blink.gpr kompilujemy na Arduino UNO poleceniem:
Następnie zamieniamy plik wykonywalny ELF na postać szesnastkową poleceniem:
Na koniec wysyłamy program do Arduino podłączonego przez USB (na moim komputerze jest to port /dev/ttyACM0):
Jeśli jesteśmy zainteresowani analizą przekładu programu na assembler mikrokontrolera ATmega328p, to zrzucamy go do pliku blink.dump poleceniem:
W wielu przykładach jakie można znaleźć w sieci, miganie diody uzyskuje się przez naprzemienne wpisywanie wartości 1 i 0 do odpowiedniego bitu portu B. W tym celu należy w pliku blink.adb zmienić nieskończoną pętlę na następującą:
loop
MCU.PORTB_Bits(5) := True;
delay 1.0;
MCU.PORTB_Bits(5) := False;
delay 1.0;
end loop;
W pliku blink.adb umieszczamy następujący program:
with AVR.MCU;
with AVR.Real_Time.Delays;
use AVR;
procedure Blink is
begin
MCU.DDRB_Bits(5) := DD_Output;
loop
MCU.PINB_Bits(5) := True;
delay 1.0;
end loop;
end Blink;
Ustawia on dla piątego pinu w porcie PINB tryb wyjściowy. Następnie w nieskończonej pętli zmienia stan tego pinu na przeciwny odczekując po każdej zmianie jedną sekundę.
W pliku blink.gpr umieszczamy opis projektu:
project Blink extends "avr_app" is
for Main use ("blink.adb");
end Blink;
Jak widać nasz projekt jest rozszerzeniem projektu avr_app.gpr definiującego wszystkie potrzebne parametry kompilacji (plik avr_app.gpr znajduje się w katalogu /opt/avr-ada/avr-ada-111/avr/lib/gnat).
Projekt blink.gpr kompilujemy na Arduino UNO poleceniem:
avr-gnatmake -p -XBOARD=arduino_uno -Pblink.gpr
Następnie zamieniamy plik wykonywalny ELF na postać szesnastkową poleceniem:
avr-objcopy -O ihex -R .eeprom blink.elf blink.hex
Na koniec wysyłamy program do Arduino podłączonego przez USB (na moim komputerze jest to port /dev/ttyACM0):
ardude -V -F -c arduino -p m328p -P /dev/ttyACM0 -b 115200 -U flash:w:blink.hex
Jeśli jesteśmy zainteresowani analizą przekładu programu na assembler mikrokontrolera ATmega328p, to zrzucamy go do pliku blink.dump poleceniem:
avr-objdump -d -S blink.elf > blink.dump
W wielu przykładach jakie można znaleźć w sieci, miganie diody uzyskuje się przez naprzemienne wpisywanie wartości 1 i 0 do odpowiedniego bitu portu B. W tym celu należy w pliku blink.adb zmienić nieskończoną pętlę na następującą:
loop
MCU.PORTB_Bits(5) := True;
delay 1.0;
MCU.PORTB_Bits(5) := False;
delay 1.0;
end loop;
Programowanie Arduino w języku Ada
15/05/15 13:42 Filed in: Arduino
Zabieram się za programowanie Arduino w języku Ada. Każdemu, kto chciałby się tym bawić polecam projekt AVR-Ada i blog Tero Koskinena Tero's Arduino Blog.
Programy będę pisał na netbooku pracującym pod systemem Ubuntu 14.04 więc bardzo przydał mi się opis instalacji AVR-Ada w wersji 1.2.2, który można znaleźć we wpisie AVR-Ada package for Ubuntu 14.04.
Programy będę pisał na netbooku pracującym pod systemem Ubuntu 14.04 więc bardzo przydał mi się opis instalacji AVR-Ada w wersji 1.2.2, który można znaleźć we wpisie AVR-Ada package for Ubuntu 14.04.