# HG changeset patch # User Tero Marttila # Date 1411587706 -10800 # Node ID cae83b7bfcf4094252113f9ff0cc2b94627cbd33 trivial avr-gcc hello skeleton using qmsk-arduino: debug timer diff -r 000000000000 -r cae83b7bfcf4 .hgignore --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/.hgignore Wed Sep 24 22:41:46 2014 +0300 @@ -0,0 +1,14 @@ +syntax: glob + +.*.swo +.*.swp + +build/ + +*.hex +*.s.* + +*.pyc + +docs/ +opt/ diff -r 000000000000 -r cae83b7bfcf4 Makefile --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/Makefile Wed Sep 24 22:41:46 2014 +0300 @@ -0,0 +1,84 @@ +QMSK_ARDUINO = qmsk + +PROG = hello + +ELF = build/src/$(PROG).elf +HEX = build/src/$(PROG).hex + +build/src/hello.elf: build/src/hello.o \ + build/qmsk/src/timer.o + +## +all: $(HEX) + +build: + mkdir -p build/src build/qmsk/src + +clean: + rm -rf build/ + +## Compiler +MCU = atmega328p + +# CPU clock frequency +CPU = 16000000 +STD = c99 + +CC = avr-gcc +CPPFLAGS = -DF_CPU=$(CPU)UL -I$(QMSK_ARDUINO)/include +CFLAGS = -mmcu=$(MCU) -std=$(STD) -Os -g +LDFLAGS = -mmcu=$(MCU) +LDLIBS = -lc + +build/%.o: %.c + $(CC) -c $(CPPFLAGS) $(CFLAGS) -o $@ $< + $(CC) -MM $(CPPFLAGS) -MT $@ -MF build/$*.d $< + +build/%.elf: + $(CC) $(LDFLAGS) $+ -o $@ $(LDLIBS) + +# existing .d files for rebuilding existing .o's +-include $(wildcard build/*/*.d) + +dump: $(ELF) + avr-objdump -d $(ELF) + +## Assembler +AS = avra +ASFLAGS = + +%.hex: %.s + $(AS) $(ASFLAGS) $< + mv $<.hex $@ + +## Flashing +# Arduino Duemilanove +AD_PART = m328p +AD_PROG = arduino +AD_BAUD = 57600 +AD_PORT = /dev/arduino + +AD = avrdude +ADFLAGS = -p $(AD_PART) -c $(AD_PROG) -b $(AD_BAUD) -P $(AD_PORT) + +build/%.hex: build/%.elf + avr-objcopy -O ihex -R .eeprom $< $@ + +.PRECIOUS: build/%.elf + +upload: $(HEX) + $(AD) $(ADFLAGS) -U flash:w:$< + +## Console +SERIAL_BAUD = 9600 +SERIAL_FLOW = n +SERIAL_PARITY = n +SERIAL_BITS = 8 +SERIAL_PORT = $(AD_PORT) + +SERIAL_TERM = picocom +SERIAL_FLAGS = -b $(SERIAL_BAUD) -f $(SERIAL_FLOW) -p $(SERIAL_PARITY) -d $(SERIAL_BITS) + +console: + $(SERIAL_TERM) $(SERIAL_FLAGS) $(SERIAL_PORT) + diff -r 000000000000 -r cae83b7bfcf4 README --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/README Wed Sep 24 22:41:46 2014 +0300 @@ -0,0 +1,13 @@ +# Depends + +* gcc-avr +* avr-libc +* avrdude + +# Build + + $ ln -s .../qmsk-arduino qmsk + $ make build + $ make + + diff -r 000000000000 -r cae83b7bfcf4 src/hello.c --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/src/hello.c Wed Sep 24 22:41:46 2014 +0300 @@ -0,0 +1,27 @@ +#include +#include + +#define DEBUG_DDR DDRB +#define DEBUG_PIN 5 +#define DEBUG_PORT PORTB + +#include "debug.h" +#include "timer.h" + +int main (void) +{ + debug_init(); + timer_init(); + + // init + debug_set(); + sei(); + + unsigned short timeout = 8000; + + // start + while (true) { + timer_sleep(timeout); + debug_toggle(); + } +}