ao-bringup-avr: Add very primitive 'blink' to toggle the 32u4 B7 line
authorKeith Packard <keithp@keithp.com>
Wed, 4 May 2011 05:13:35 +0000 (22:13 -0700)
committerKeith Packard <keithp@keithp.com>
Wed, 4 May 2011 05:13:35 +0000 (22:13 -0700)
This should permit basic testing of the chip.

Signed-off-by: Keith Packard <keithp@keithp.com>
ao-bringup-avr/Makefile [new file with mode: 0644]
ao-bringup-avr/ao-blink.c [new file with mode: 0644]

diff --git a/ao-bringup-avr/Makefile b/ao-bringup-avr/Makefile
new file mode 100644 (file)
index 0000000..39ade42
--- /dev/null
@@ -0,0 +1,21 @@
+MCU=atmega32u4
+DUDECPUTYPE=m32u4
+#PROGRAMMER=stk500v2 -P usb
+PROGRAMMER=usbtiny
+LOADCMD=avrdude
+LOADARG=-p $(DUDECPUTYPE) -c $(PROGRAMMER) -e -U flash:w:
+CC=avr-gcc
+OBJCOPY=avr-objcopy
+CFLAGS=-g -mmcu=$(MCU) -Wall -Wstrict-prototypes -Os -mcall-prologues
+
+all: ao-blink.hex
+
+ao-blink.hex: ao-blink
+       avr-size ao-blink
+       $(OBJCOPY) -R .eeprom -O ihex ao-blink $@
+
+ao-blink: ao-blink.o
+       $(CC) $(CFLAGS) -o $@ ao-blink.o
+
+load: ao-blink.hex
+       $(LOADCMD) $(LOADARG)ao-blink.hex
\ No newline at end of file
diff --git a/ao-bringup-avr/ao-blink.c b/ao-bringup-avr/ao-blink.c
new file mode 100644 (file)
index 0000000..b131d49
--- /dev/null
@@ -0,0 +1,37 @@
+/*
+ * Copyright © 2011 Keith Packard <keithp@keithp.com>
+ *
+ * This program is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation; version 2 of the License.
+ *
+ * This program is distributed in the hope that it will be useful, but
+ * WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+ * General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License along
+ * with this program; if not, write to the Free Software Foundation, Inc.,
+ * 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA.
+ */
+
+#include <avr/io.h>
+#define F_CPU 16000000UL       // 16 MHz
+#include <util/delay.h>
+
+#define LEDOUT         PORTB7
+#define LEDPORT                PORTB
+#define LEDDDR         DDRB
+#define LEDDDRPIN      DD6
+
+int main(void)
+{
+       LEDDDR |= (1 << LEDDDRPIN);
+
+       while (1) {
+               LEDPORT |= (1 << LEDOUT);
+               _delay_ms(200);
+               LEDPORT &= ~(1 << LEDOUT);
+               _delay_ms(200);
+       }
+}