forked from maniacbug/RF24
-
Notifications
You must be signed in to change notification settings - Fork 0
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
Fixed bug in scanner display, thanks to David Bath. Also upgraded to …
…latest Jam toolchain and moved pins over to the new GettingStarted defaults.
- Loading branch information
Showing
2 changed files
with
150 additions
and
146 deletions.
There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -1,206 +1,210 @@ | ||
PROJECT_NAME = $(PWD:B) ; | ||
PROJECT_DIR = . ; | ||
PROJECT_LIBS = SPI RF24 ; | ||
# (1) Project Information | ||
|
||
OUT_DIR = ojam ; | ||
F_CPU = 16000000 ; | ||
MCU = atmega328p ; | ||
PORTS = /dev/tty.usbserial-A600eHIs /dev/tty.usbserial-A40081RP /dev/tty.usbserial-A9007LmI ; | ||
PROJECT_LIBS = SPI RF24 ; | ||
|
||
UPLOAD_RATE = 57600 ; | ||
AVRDUDE_PROTOCOL = stk500v1 ; | ||
COM = 33 ; | ||
# (2) Board Information | ||
|
||
UPLOAD_PROTOCOL ?= stk500v1 ; | ||
UPLOAD_SPEED ?= 57600 ; | ||
MCU ?= atmega328p ; | ||
F_CPU ?= 16000000 ; | ||
CORE ?= arduino ; | ||
VARIANT ?= standard ; | ||
ARDUINO_VERSION ?= 100 ; | ||
|
||
# (3) USB Ports | ||
|
||
PORTS = p4 p6 p9 u0 u1 u2 ; | ||
PORT_p6 = /dev/tty.usbserial-A600eHIs ; | ||
PORT_p4 = /dev/tty.usbserial-A40081RP ; | ||
PORT_p9 = /dev/tty.usbserial-A9007LmI ; | ||
PORT_u0 = /dev/ttyUSB0 ; | ||
PORT_u1 = /dev/ttyUSB1 ; | ||
PORT_u2 = /dev/ttyUSB2 ; | ||
|
||
# (4) Location of AVR tools | ||
# | ||
# This configuration assumes using avr-tools that were obtained separate from the Arduino | ||
# distribution. | ||
|
||
# Host-specific overrides for locations | ||
if $(OS) = MACOSX | ||
{ | ||
ARDUINO_VERSION = 22 ; | ||
OLD_DIR = /opt/arduino-0021 ; | ||
AVR_TOOLS_PATH = $(OLD_DIR)/hardware/tools/avr/bin ; | ||
AVRDUDECONFIG_PATH = $(OLD_DIR)/hardware/tools/avr/etc ; | ||
ARDUINO_DIR = /opt/Arduino ; | ||
ARDUINO_AVR = /usr/lib/avr/include ; | ||
} | ||
|
||
# Where is everything? | ||
ARDUINO_VERSION ?= 22 ; | ||
AVR_TOOLS_PATH ?= /usr/bin ; | ||
ARDUINO_DIR ?= /opt/arduino-00$(ARDUINO_VERSION) ; | ||
ARDUINO_AVR ?= $(ARDUINO_DIR)/hardware/tools/avr/avr/include/avr ; | ||
AVRDUDECONFIG_PATH ?= $(ARDUINO_DIR)/hardware/tools ; | ||
ARDUINO_CORE = $(ARDUINO_DIR)/hardware/arduino/cores/arduino ; | ||
AVR_BIN = /usr/local/avrtools/bin ; | ||
AVR_ETC = /usr/local/avrtools/etc ; | ||
AVR_INCLUDE = /usr/local/avrtools/include ; | ||
} | ||
else | ||
{ | ||
AVR_BIN = /usr/bin ; | ||
AVR_INCLUDE = /usr/lib/avr/include ; | ||
AVR_ETC = /etc ; | ||
} | ||
|
||
# (5) Directories where Arduino core and libraries are located | ||
|
||
ARDUINO_DIR ?= /opt/Arduino ; | ||
ARDUINO_CORE = $(ARDUINO_DIR)/hardware/arduino/cores/$(CORE) $(ARDUINO_DIR)/hardware/arduino/variants/$(VARIANT) ; | ||
ARDUINO_LIB = $(ARDUINO_DIR)/libraries ; | ||
SKETCH_LIB = $(HOME)/Source/Arduino/libraries ; | ||
AVR_CC = $(AVR_TOOLS_PATH)/avr-gcc ; | ||
AVR_CXX = $(AVR_TOOLS_PATH)/avr-g++ ; | ||
AVR_LD = $(AVR_TOOLS_PATH)/avr-gcc ; | ||
AVR_OBJCOPY = $(AVR_TOOLS_PATH)/avr-objcopy ; | ||
AVRDUDE = $(AVR_TOOLS_PATH)/avrdude ; | ||
|
||
DEFINES = F_CPU=$(F_CPU)L ARDUINO=$(ARDUINO_VERSION) VERSION_H ; | ||
CTUNING = -ffunction-sections -fdata-sections ; | ||
CXXTUNING = -fno-exceptions -fno-strict-aliasing ; | ||
CFLAGS = -Os -Wall -Wextra -mmcu=$(MCU) $(CTUNING) ; | ||
CXXFLAGS = $(CFLAGS) $(CXXTUNING) ; | ||
LDFLAGS = -Os -lm -Wl,--gc-sections -mmcu=atmega328p ; | ||
|
||
# Search everywhere for headers | ||
HDRS = $(PROJECT_DIR) $(ARDUINO_AVR) $(ARDUINO_CORE) [ GLOB $(ARDUINO_LIB) $(SKETCH_LIB) : [^.]* ] ; | ||
# | ||
# -------------------------------------------------- | ||
# Below this line usually never needs to be modified | ||
# | ||
|
||
# Grab everything from the core directory | ||
CORE_MODULES = [ GLOB $(ARDUINO_CORE) : *.c *.cpp ] ; | ||
# Tool locations | ||
|
||
# Grab everything from libraries. To avoid this "grab everything" behaviour, you | ||
# can specify specific modules to pick up in PROJECT_MODULES | ||
LIB_MODULES = [ GLOB $(ARDUINO_LIB)/$(PROJECT_LIBS) $(SKETCH_LIB)/$(PROJECT_LIBS) : *.cpp ] ; | ||
CC = $(AVR_BIN)/avr-gcc ; | ||
C++ = $(AVR_BIN)/avr-g++ ; | ||
LINK = $(AVR_BIN)/avr-gcc ; | ||
OBJCOPY = $(AVR_BIN)/avr-objcopy ; | ||
AVRDUDE = $(AVR_BIN)/avrdude ; | ||
|
||
# Flags | ||
|
||
DEFINES += F_CPU=$(F_CPU)L ARDUINO=$(ARDUINO_VERSION) VERSION_H ; | ||
OPTIM = -Os ; | ||
CCFLAGS = -Wall -Wextra -mmcu=$(MCU) -ffunction-sections -fdata-sections ; | ||
C++FLAGS = $(CCFLAGS) -fno-exceptions -fno-strict-aliasing ; | ||
LINKFLAGS = $(OPTIM) -lm -Wl,--gc-sections -mmcu=$(MCU) ; | ||
AVRDUDEFLAGS = -V -F -D -C $(AVR_ETC)/avrdude.conf -p $(MCU) -c $(UPLOAD_PROTOCOL) -b $(UPLOAD_SPEED) ; | ||
|
||
# In addition to explicitly-specified program modules, pick up anything from the current | ||
# dir. | ||
PROJECT_MODULES += [ GLOB $(PROJECT_DIR) : *.c *.cpp *.pde ] ; | ||
# Search everywhere for headers | ||
|
||
HDRS = $(PWD) $(AVR_INCLUDE) $(ARDUINO_CORE) $(ARDUINO_LIB)/$(PROJECT_LIBS) $(ARDUINO_LIB)/$(PROJECT_LIBS)/utility $(SKETCH_LIB)/$(PROJECT_LIBS) ; | ||
|
||
# Output locations | ||
|
||
# Shortcut for the out files | ||
OUT = $(OUT_DIR)/$(PROJECT_NAME) ; | ||
LOCATE_TARGET = $(F_CPU) ; | ||
LOCATE_SOURCE = $(F_CPU) ; | ||
|
||
# AvrDude setup | ||
AVRDUDE_FLAGS = -V -F -D -C $(AVRDUDECONFIG_PATH)/avrdude.conf -p $(MCU) -c $(AVRDUDE_PROTOCOL) -b $(UPLOAD_RATE) ; | ||
# | ||
# Custom rules | ||
# | ||
|
||
rule GitVersion | ||
{ | ||
Always $(<) ; | ||
Depends all : $(<) ; | ||
Always $(<) ; | ||
Depends all : $(<) ; | ||
} | ||
|
||
actions GitVersion | ||
{ | ||
echo "const char program_version[] = \"\\" > $(<) | ||
git log -1 --pretty=format:%h >> $(<) | ||
echo "\";" >> $(<) | ||
echo "const char program_version[] = \"\\" > $(<) | ||
git log -1 --pretty=format:%h >> $(<) | ||
echo "\";" >> $(<) | ||
} | ||
|
||
GitVersion version.h ; | ||
|
||
rule AvrCc | ||
rule Pde | ||
{ | ||
Depends $(<) : $(>) ; | ||
Depends $(<) : $(<:D) ; | ||
Clean clean : $(<) ; | ||
|
||
CCHDRS on $(<) = [ on $(<) FIncludes $(HDRS) ] ; | ||
CCDEFS on $(<) = [ on $(<) FDefines $(DEFINES) ] ; | ||
Depends $(<) : $(>) ; | ||
MakeLocate $(<) : $(LOCATE_SOURCE) ; | ||
Clean clean : $(<) ; | ||
} | ||
|
||
actions AvrCc | ||
if ( $(ARDUINO_VERSION) < 100 ) | ||
{ | ||
$(AVR_CC) -c -o $(<) $(CCHDRS) $(CCDEFS) $(CFLAGS) $(>) | ||
ARDUINO_H = WProgram.h ; | ||
} | ||
|
||
rule AvrC++ | ||
else | ||
{ | ||
Depends $(<) : $(>) ; | ||
Depends $(<) : $(<:D) ; | ||
Clean clean : $(<) ; | ||
|
||
CCHDRS on $(<) = [ on $(<) FIncludes $(HDRS) ] ; | ||
CCDEFS on $(<) = [ on $(<) FDefines $(DEFINES) ] ; | ||
ARDUINO_H = Arduino.h ; | ||
} | ||
|
||
actions AvrC++ | ||
actions Pde | ||
{ | ||
$(AVR_CXX) -c -o $(<) $(CCHDRS) $(CCDEFS) $(CXXFLAGS) $(>) | ||
echo "#include <$(ARDUINO_H)>" > $(<) | ||
echo "#line 1 \"$(>)\"" >> $(<) | ||
cat $(>) >> $(<) | ||
} | ||
|
||
rule Pde | ||
rule C++Pde | ||
{ | ||
Depends $(<) : $(>) ; | ||
Depends $(<) : $(<:D) ; | ||
Clean clean : $(<) ; | ||
|
||
local _CPP = $(>:B).cpp ; | ||
Pde $(_CPP) : $(>) ; | ||
C++ $(<) : $(_CPP) ; | ||
} | ||
|
||
actions Pde | ||
rule UserObject | ||
{ | ||
echo "#include <WProgram.h>" > $(<) | ||
echo "#line 1 \"$(>)\"" >> $(<) | ||
cat $(>) >> $(<) | ||
switch $(>:S) | ||
{ | ||
case .ino : C++Pde $(<) : $(>) ; | ||
case .pde : C++Pde $(<) : $(>) ; | ||
} | ||
} | ||
|
||
rule AvrPde | ||
rule Objects | ||
{ | ||
local _CPP = $(OUT_DIR)/$(_I:B).cpp ; | ||
Pde $(_CPP) : $(>) ; | ||
AvrC++ $(<) : $(_CPP) ; | ||
} | ||
local _i ; | ||
|
||
rule AvrObject | ||
{ | ||
switch $(>:S) | ||
{ | ||
case .c : AvrCc $(<) : $(>) ; | ||
case .cpp : AvrC++ $(<) : $(>) ; | ||
case .pde : AvrPde $(<) : $(>) ; | ||
} | ||
for _i in [ FGristFiles $(<) ] | ||
{ | ||
local _b = $(_i:B)$(SUFOBJ) ; | ||
local _o = $(_b:G=$(SOURCE_GRIST:E)) ; | ||
Object $(_o) : $(_i) ; | ||
Depends obj : $(_o) ; | ||
} | ||
} | ||
|
||
rule AvrObjects | ||
rule Main | ||
{ | ||
for _I in $(<) | ||
{ | ||
AvrObject $(OUT_DIR)/$(_I:B).o : $(_I) ; | ||
} | ||
MainFromObjects $(<) : $(>:B)$(SUFOBJ) ; | ||
Objects $(>) ; | ||
} | ||
|
||
rule AvrMainFromObjects | ||
rule Hex | ||
{ | ||
Depends $(<) : $(>) ; | ||
Depends $(<) : $(<:D) ; | ||
MkDir $(<:D) ; | ||
Depends all : $(<) ; | ||
Clean clean : $(<) ; | ||
Depends $(<) : $(>) ; | ||
MakeLocate $(<) : $(LOCATE_TARGET) ; | ||
Depends hex : $(<) ; | ||
Clean clean : $(<) ; | ||
} | ||
|
||
actions AvrMainFromObjects | ||
actions Hex | ||
{ | ||
$(AVR_LD) $(LDFLAGS) -o $(<) $(>) | ||
$(OBJCOPY) -O ihex -R .eeprom $(>) $(<) | ||
} | ||
|
||
rule AvrMain | ||
rule Upload | ||
{ | ||
AvrMainFromObjects $(<) : $(OUT_DIR)/$(>:B).o ; | ||
AvrObjects $(>) ; | ||
Depends $(1) : $(2) ; | ||
Depends $(2) : $(3) ; | ||
NotFile $(1) ; | ||
Always $(1) ; | ||
Always $(2) ; | ||
UploadAction $(2) : $(3) ; | ||
} | ||
|
||
rule AvrHex | ||
actions UploadAction | ||
{ | ||
Depends $(<) : $(>) ; | ||
Depends $(<) : $(<:D) ; | ||
Depends hex : $(<) ; | ||
Clean clean : $(<) ; | ||
$(AVRDUDE) $(AVRDUDEFLAGS) -P $(<) $(AVRDUDE_WRITE_FLASH) -U flash:w:$(>):i | ||
} | ||
|
||
actions AvrHex | ||
{ | ||
$(AVR_OBJCOPY) -O ihex -R .eeprom $(>) $(<) | ||
} | ||
# | ||
# Targets | ||
# | ||
|
||
rule AvrUpload | ||
{ | ||
Depends $(1) : $(2) ; | ||
Depends $(2) : $(3) ; | ||
NotFile $(1) ; | ||
Always $(1) ; | ||
Always $(2) ; | ||
AvrUploadAction $(2) : $(3) ; | ||
} | ||
# Grab everything from the core directory | ||
CORE_MODULES = [ GLOB $(ARDUINO_CORE) : *.c *.cpp ] ; | ||
|
||
actions AvrUploadAction | ||
{ | ||
$(AVRDUDE) $(AVRDUDE_FLAGS) -P $(<) $(AVRDUDE_WRITE_FLASH) -U flash:w:$(>):i | ||
} | ||
# Grab everything from libraries. To avoid this "grab everything" behaviour, you | ||
# can specify specific modules to pick up in PROJECT_MODULES | ||
LIB_MODULES = [ GLOB $(ARDUINO_LIB)/$(PROJECT_LIBS) $(ARDUINO_LIB)/$(PROJECT_LIBS)/utility $(SKETCH_LIB)/$(PROJECT_LIBS) : *.cpp *.c ] ; | ||
|
||
# Grab everything from the current dir | ||
PROJECT_MODULES += [ GLOB $(PWD) : *.c *.cpp *.pde *.ino ] ; | ||
|
||
AvrMain $(OUT).elf : $(CORE_MODULES) $(LIB_MODULES) $(PROJECT_MODULES) ; | ||
AvrHex $(OUT).hex : $(OUT).elf ; | ||
# Main output executable | ||
MAIN = $(PWD:B).elf ; | ||
|
||
AvrUpload p6 : /dev/tty.usbserial-A600eHIs : $(OUT).hex ; | ||
AvrUpload p4 : /dev/tty.usbserial-A40081RP : $(OUT).hex ; | ||
AvrUpload p9 : /dev/tty.usbserial-A9007LmI : $(OUT).hex ; | ||
Main $(MAIN) : $(CORE_MODULES) $(LIB_MODULES) $(PROJECT_MODULES) ; | ||
Hex $(MAIN:B).hex : $(MAIN) ; | ||
|
||
# Upload targets | ||
for _p in $(PORTS) | ||
{ | ||
Upload $(_p) : $(PORT_$(_p)) : $(MAIN:B).hex ; | ||
} |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters