Led blinking example using AVR-Ada 1.2.
4 files changed, 66 insertions(+), 0 deletions(-)

A => .hgignore
A => Makefile
A => blink.adb
A => blink.gpr
A => .hgignore +8 -0
@@ 0,0 1,8 @@ 
+syntax: glob
+
+objects
+*.swp
+blink.elf
+main.map
+blink.hex
+

          
A => Makefile +19 -0
@@ 0,0 1,19 @@ 
+CFLAGS=-Wall -Os -DF_CPU=$(F_CPU) -mmcu=$(MCU)
+OBJCOPY=avr-objcopy
+BIN_FORMAT=ihex
+PORT=/dev/ttyACM0
+AVRDUDE=sudo avrdude -F -V
+
+GNATMAKE=avr-gnatmake
+
+blink.hex: blink.adb
+	$(GNATMAKE) -p -XMCU=atmega328p -Pblink.gpr
+	$(OBJCOPY) -O $(BIN_FORMAT) -R .eeprom blink.elf blink.hex
+
+upload: blink.hex
+	$(AVRDUDE) -c arduino -p m328p -P $(PORT) -b 115200 -U flash:w:blink.hex
+
+clean:
+	avr-gnatclean -XMCU=atmega328p -Pblink
+	rm -f blink.elf blink.hex main.map
+

          
A => blink.adb +31 -0
@@ 0,0 1,31 @@ 
+with AVR;
+with AVR.MCU;
+with AVR.Real_Time.Delays;
+
+use AVR;
+
+procedure Blink is
+   Led_On : Boolean := False;
+
+   -- Pins on Arduino
+   -- Digital pin 2     PD2
+   --         pin 3     PD3
+   --         pin 4     PD4
+   --         pin 5     PD5
+   --         pin 6     PD6
+   --         pin 7     PD7
+   --         pin 8     PB0
+   --         pin 9     PB1
+   --         pin 10    PB2
+   --         pin 11    PB3
+   --         pin 12    PB4
+   --         pin 13    PB5 ("Built in LED")
+   LED_PIN : constant := 5;
+begin
+   MCU.DDRB_Bits (LED_PIN) := DD_Output;
+   loop
+      Led_On := not Led_On;
+      MCU.PORTB_Bits (LED_PIN) := Led_On;
+      delay 1.0;
+   end loop;
+end Blink;

          
A => blink.gpr +8 -0
@@ 0,0 1,8 @@ 
+project Blink extends "avr_app" is
+	for Main use ("blink.adb");
+	for Object_Dir use "objects";
+	for Exec_Dir use ".";
+
+	for Source_Dirs use (".");
+
+end Blink;