# HG changeset patch # User Tero Koskinen # Date 1340221550 -10800 # Wed Jun 20 22:45:50 2012 +0300 # Node ID 22149289c93afe3b42bc50496aaf934dfa167118 # Parent 0000000000000000000000000000000000000000 Led blinking example using AVR-Ada 1.2. diff --git a/.hgignore b/.hgignore new file mode 100644 --- /dev/null +++ b/.hgignore @@ -0,0 +1,8 @@ +syntax: glob + +objects +*.swp +blink.elf +main.map +blink.hex + diff --git a/Makefile b/Makefile new file mode 100644 --- /dev/null +++ b/Makefile @@ -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 + diff --git a/blink.adb b/blink.adb new file mode 100644 --- /dev/null +++ b/blink.adb @@ -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; diff --git a/blink.gpr b/blink.gpr new file mode 100644 --- /dev/null +++ b/blink.gpr @@ -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;