Niezawodne programowanie
Przygotowanie RTS
04/03/16 14:29 Filed in: Discovery

Przyjechała nowa zabawka STM32F469-Discovery i trzeba zabrać się za instalację kompilatora Ady oraz przygotowanie RTS.
Kompilator można pobrać ze strony libre.adacore.com.
Na stronie blog.adacore.com można znaleźć jak przygotować RTS dla tej platformy.
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.