aboutsummaryrefslogtreecommitdiff
path: root/examples/spiblink
diff options
context:
space:
mode:
Diffstat (limited to 'examples/spiblink')
-rw-r--r--examples/spiblink/Makefile66
-rw-r--r--examples/spiblink/config23
-rw-r--r--examples/spiblink/config.orig23
-rw-r--r--examples/spiblink/makefile32
-rw-r--r--examples/spiblink/master.c2
-rw-r--r--examples/spiblink/slave.c2
6 files changed, 114 insertions, 34 deletions
diff --git a/examples/spiblink/Makefile b/examples/spiblink/Makefile
new file mode 100644
index 0000000..621f237
--- /dev/null
+++ b/examples/spiblink/Makefile
@@ -0,0 +1,66 @@
+MAKEFLAGS += --no-builtin-rules
+PROJNAME = spiblink
+
+MSRC = master.c
+SSRC = slave.c
+
+MOBJ = $(patsubst %.c,%.o,$(MSRC))
+SOBJ = $(patsubst %.c,%.o,$(SSRC))
+
+.PHONY: all
+ifneq ("$(wildcard config)","") # Checking if configuration exists
+all: master.hex slave.hex
+ @echo Now you can flash $^ to your chips.
+else
+all: help
+endif
+
+# Edit here help like you ever want
+.PHONY: help
+help:
+ @echo "AVR-IOE USART echo example"
+ @echo " all - Build example"
+ @echo " config - Start configuration program"
+ @echo " menuconfig - NCurses based configuration program"
+ @echo " help - Prints this text"
+ @echo " clean - Removing all object files generated from source files"
+
+.PHONY: clean
+clean:
+ @echo " CLEAN OBJ"
+ @$(RM) $(MOBJ) $(SOBJ)
+ @echo " CLEAN master and slave *.hex, *.elf"
+ @$(RM) master.elf master.hex
+ @$(RM) slave.elf slave.hex
+ @$(MAKE) -C ../.. clean
+
+# Building targets are available only if configuration is generated
+ifneq ("$(wildcard config)","")
+-include config
+# If you want change some standard CFLAGS, change them in configuration not here.
+# Add here only options that should not be applied to avr-ioe also.
+CFLAGS = -I../../include -mmcu=$(MMCU) -imacros ../../.config.h \
+ $(shell echo $(CONFCFLAGS)) $(shell echo -DF_CPU=$(F_CPU)000L)
+
+master.elf slave.elf: %.elf: ../../libioe.a %.o
+ @echo " LD $@"
+ @avr-gcc -Os -mmcu=$(MMCU) $^ -o $@ -L../.. -lioe
+
+master.hex slave.hex: %.hex: %.elf
+ @echo " OBJCOPY $@"
+ @avr-objcopy -O ihex -R .eeprom $< $@
+
+$(MOBJ) $(SOBJ): %.o: %.c ../../libioe.a
+ @echo " CC $@"
+ @avr-gcc $(CFLAGS) -c -o $@ $<
+
+../../libioe.a: config
+ @CONFIG=$$(readlink -f config) $(MAKE) -C ../.. libioe.a
+endif
+
+config:
+ @CONFIG=$$(readlink -f config) $(MAKE) -C ../.. config
+
+.PHONY: menuconfig
+menuconfig:
+ @CONFIG=$$(readlink -f config) $(MAKE) -C ../.. menuconfig
diff --git a/examples/spiblink/config b/examples/spiblink/config
new file mode 100644
index 0000000..7455947
--- /dev/null
+++ b/examples/spiblink/config
@@ -0,0 +1,23 @@
+#
+# Automatically generated file; DO NOT EDIT.
+# AVR-IOE configuration
+#
+MMCU=atmega328p
+ATMEGA328P=y
+# ATTINY85 is not set
+F_CPU=16000
+
+#
+# Compilation options
+#
+GNUTOOLCHAIN_PREFIX=avr-
+CONFCFLAGS=-Os -ffunction-sections -fdata-sections -fshort-enums -Wall
+MCUSUPPORT_IOPORTS=y
+# CONFIG_IOPORTS is not set
+MCUSUPPORT_PCINT0=y
+MCUSUPPORT_PCINT1=y
+MCUSUPPORT_PCINT2=y
+MCUSUPPORT_SPI=y
+CONFIG_SPI=y
+MCUSUPPORT_USART=y
+# CONFIG_USART is not set
diff --git a/examples/spiblink/config.orig b/examples/spiblink/config.orig
new file mode 100644
index 0000000..af7b0a5
--- /dev/null
+++ b/examples/spiblink/config.orig
@@ -0,0 +1,23 @@
+#
+# Automatically generated file; DO NOT EDIT.
+# AVR-IOE configuration
+#
+MMCU="atmega328p"
+ATMEGA328P=y
+# ATTINY85 is not set
+F_CPU=16000
+
+#
+# Compilation options
+#
+GNUTOOLCHAIN_PREFIX="avr-"
+CONFCFLAGS="-Os -ffunction-sections -fdata-sections -fshort-enums -Wall"
+MCUSUPPORT_IOPORTS=y
+# CONFIG_IOPORTS is not set
+MCUSUPPORT_PCINT0=y
+MCUSUPPORT_PCINT1=y
+MCUSUPPORT_PCINT2=y
+MCUSUPPORT_SPI=y
+CONFIG_SPI=y
+MCUSUPPORT_USART=y
+# CONFIG_USART is not set
diff --git a/examples/spiblink/makefile b/examples/spiblink/makefile
deleted file mode 100644
index 60ba9c9..0000000
--- a/examples/spiblink/makefile
+++ /dev/null
@@ -1,32 +0,0 @@
-MAKEFLAGS += --no-builtin-rules
-
-MMCU = atmega328p
-F_CPU = 16000000L
-IOE_PREFIX = ../..
-IOE_CFLAGS ?= -Os -ffunction-sections -fdata-sections -fshort-enums -g -Wall \
- -DF_CPU=$(F_CPU) -mmcu=$(MMCU) \
- -DCONFIG_IOE_SPI
-
-.PHONY: all
-all: master.hex slave.hex
- @echo
- @echo Flash master.hex and slave.hex to two chips and... TODO
-
-.PHONY: all
-clean: ioeclean
- $(RM) master.o slave.o
- $(RM) master.elf master.hex
- $(RM) slave.elf slave.hex
-
-include ../../avr-ioe.mk
-
-master.elf: master.o
-slave.elf: slave.o
-master.elf slave.elf: %.elf: $(IOE_OBJ_SPI)
- avr-gcc -Os -mmcu=$(MMCU) $^ -o $@
-
-master.hex slave.hex: %.hex: %.elf
- avr-objcopy -O ihex -R .eeprom $< $@
-
-master.o slave.o: %.o: %.c
- avr-gcc $(IOE_CFLAGS) -c -o $@ $<
diff --git a/examples/spiblink/master.c b/examples/spiblink/master.c
index 267d7b2..1cc4289 100644
--- a/examples/spiblink/master.c
+++ b/examples/spiblink/master.c
@@ -1,6 +1,6 @@
#include <avr/io.h>
#include <util/delay.h>
-#include "../../spi.h"
+#include <spi.h>
int main() {
DDRB |= _BV(DDB1) | _BV(DDB2);
diff --git a/examples/spiblink/slave.c b/examples/spiblink/slave.c
index cf14408..91a8237 100644
--- a/examples/spiblink/slave.c
+++ b/examples/spiblink/slave.c
@@ -1,6 +1,6 @@
#include <avr/io.h>
#include <util/delay.h>
-#include "../../spi.h"
+#include <spi.h>
void receive(uint8_t data);