Commit 5726c162 authored by maniacbug's avatar maniacbug

Fixed bug in scanner display, thanks to David Bath. Also upgraded to latest...

Fixed bug in scanner display, thanks to David Bath.  Also upgraded to latest Jam toolchain and moved pins over to the new GettingStarted defaults.
parent d4371639
PROJECT_NAME = $(PWD:B) ; # (1) Project Information
PROJECT_DIR = . ;
PROJECT_LIBS = SPI RF24 ;
OUT_DIR = ojam ; PROJECT_LIBS = SPI RF24 ;
F_CPU = 16000000 ;
MCU = atmega328p ;
PORTS = /dev/tty.usbserial-A600eHIs /dev/tty.usbserial-A40081RP /dev/tty.usbserial-A9007LmI ;
UPLOAD_RATE = 57600 ; # (2) Board Information
AVRDUDE_PROTOCOL = stk500v1 ;
COM = 33 ; 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 if $(OS) = MACOSX
{ {
ARDUINO_VERSION = 22 ; AVR_BIN = /usr/local/avrtools/bin ;
OLD_DIR = /opt/arduino-0021 ; AVR_ETC = /usr/local/avrtools/etc ;
AVR_TOOLS_PATH = $(OLD_DIR)/hardware/tools/avr/bin ; AVR_INCLUDE = /usr/local/avrtools/include ;
AVRDUDECONFIG_PATH = $(OLD_DIR)/hardware/tools/avr/etc ; }
ARDUINO_DIR = /opt/Arduino ; else
ARDUINO_AVR = /usr/lib/avr/include ; {
} AVR_BIN = /usr/bin ;
AVR_INCLUDE = /usr/lib/avr/include ;
# Where is everything? AVR_ETC = /etc ;
ARDUINO_VERSION ?= 22 ; }
AVR_TOOLS_PATH ?= /usr/bin ;
ARDUINO_DIR ?= /opt/arduino-00$(ARDUINO_VERSION) ; # (5) Directories where Arduino core and libraries are located
ARDUINO_AVR ?= $(ARDUINO_DIR)/hardware/tools/avr/avr/include/avr ;
AVRDUDECONFIG_PATH ?= $(ARDUINO_DIR)/hardware/tools ; ARDUINO_DIR ?= /opt/Arduino ;
ARDUINO_CORE = $(ARDUINO_DIR)/hardware/arduino/cores/arduino ; ARDUINO_CORE = $(ARDUINO_DIR)/hardware/arduino/cores/$(CORE) $(ARDUINO_DIR)/hardware/arduino/variants/$(VARIANT) ;
ARDUINO_LIB = $(ARDUINO_DIR)/libraries ; ARDUINO_LIB = $(ARDUINO_DIR)/libraries ;
SKETCH_LIB = $(HOME)/Source/Arduino/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 # Tool locations
CORE_MODULES = [ GLOB $(ARDUINO_CORE) : *.c *.cpp ] ;
# Grab everything from libraries. To avoid this "grab everything" behaviour, you CC = $(AVR_BIN)/avr-gcc ;
# can specify specific modules to pick up in PROJECT_MODULES C++ = $(AVR_BIN)/avr-g++ ;
LIB_MODULES = [ GLOB $(ARDUINO_LIB)/$(PROJECT_LIBS) $(SKETCH_LIB)/$(PROJECT_LIBS) : *.cpp ] ; 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 # Search everywhere for headers
# dir.
PROJECT_MODULES += [ GLOB $(PROJECT_DIR) : *.c *.cpp *.pde ] ; 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 LOCATE_TARGET = $(F_CPU) ;
OUT = $(OUT_DIR)/$(PROJECT_NAME) ; 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 rule GitVersion
{ {
Always $(<) ; Always $(<) ;
Depends all : $(<) ; Depends all : $(<) ;
} }
actions GitVersion actions GitVersion
{ {
echo "const char program_version[] = \"\\" > $(<) echo "const char program_version[] = \"\\" > $(<)
git log -1 --pretty=format:%h >> $(<) git log -1 --pretty=format:%h >> $(<)
echo "\";" >> $(<) echo "\";" >> $(<)
} }
GitVersion version.h ; GitVersion version.h ;
rule AvrCc rule Pde
{ {
Depends $(<) : $(>) ; Depends $(<) : $(>) ;
Depends $(<) : $(<:D) ; MakeLocate $(<) : $(LOCATE_SOURCE) ;
Clean clean : $(<) ; Clean clean : $(<) ;
CCHDRS on $(<) = [ on $(<) FIncludes $(HDRS) ] ;
CCDEFS on $(<) = [ on $(<) FDefines $(DEFINES) ] ;
} }
actions AvrCc if ( $(ARDUINO_VERSION) < 100 )
{ {
$(AVR_CC) -c -o $(<) $(CCHDRS) $(CCDEFS) $(CFLAGS) $(>) ARDUINO_H = WProgram.h ;
} }
else
rule AvrC++
{ {
Depends $(<) : $(>) ; ARDUINO_H = Arduino.h ;
Depends $(<) : $(<:D) ;
Clean clean : $(<) ;
CCHDRS on $(<) = [ on $(<) FIncludes $(HDRS) ] ;
CCDEFS on $(<) = [ on $(<) FDefines $(DEFINES) ] ;
} }
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 $(<) : $(>) ; local _CPP = $(>:B).cpp ;
Depends $(<) : $(<:D) ; Pde $(_CPP) : $(>) ;
Clean clean : $(<) ; C++ $(<) : $(_CPP) ;
} }
actions Pde rule UserObject
{ {
echo "#include <WProgram.h>" > $(<) switch $(>:S)
echo "#line 1 \"$(>)\"" >> $(<) {
cat $(>) >> $(<) case .ino : C++Pde $(<) : $(>) ;
case .pde : C++Pde $(<) : $(>) ;
}
} }
rule AvrPde rule Objects
{ {
local _CPP = $(OUT_DIR)/$(_I:B).cpp ; local _i ;
Pde $(_CPP) : $(>) ;
AvrC++ $(<) : $(_CPP) ;
}
rule AvrObject for _i in [ FGristFiles $(<) ]
{ {
switch $(>:S) local _b = $(_i:B)$(SUFOBJ) ;
{ local _o = $(_b:G=$(SOURCE_GRIST:E)) ;
case .c : AvrCc $(<) : $(>) ; Object $(_o) : $(_i) ;
case .cpp : AvrC++ $(<) : $(>) ; Depends obj : $(_o) ;
case .pde : AvrPde $(<) : $(>) ; }
}
} }
rule AvrObjects rule Main
{ {
for _I in $(<) MainFromObjects $(<) : $(>:B)$(SUFOBJ) ;
{ Objects $(>) ;
AvrObject $(OUT_DIR)/$(_I:B).o : $(_I) ;
}
} }
rule AvrMainFromObjects rule Hex
{ {
Depends $(<) : $(>) ; Depends $(<) : $(>) ;
Depends $(<) : $(<:D) ; MakeLocate $(<) : $(LOCATE_TARGET) ;
MkDir $(<:D) ; Depends hex : $(<) ;
Depends all : $(<) ; Clean clean : $(<) ;
Clean clean : $(<) ;
} }
actions AvrMainFromObjects actions Hex
{ {
$(AVR_LD) $(LDFLAGS) -o $(<) $(>) $(OBJCOPY) -O ihex -R .eeprom $(>) $(<)
} }
rule AvrMain rule Upload
{ {
AvrMainFromObjects $(<) : $(OUT_DIR)/$(>:B).o ; Depends $(1) : $(2) ;
AvrObjects $(>) ; Depends $(2) : $(3) ;
NotFile $(1) ;
Always $(1) ;
Always $(2) ;
UploadAction $(2) : $(3) ;
} }
rule AvrHex actions UploadAction
{ {
Depends $(<) : $(>) ; $(AVRDUDE) $(AVRDUDEFLAGS) -P $(<) $(AVRDUDE_WRITE_FLASH) -U flash:w:$(>):i
Depends $(<) : $(<:D) ;
Depends hex : $(<) ;
Clean clean : $(<) ;
} }
actions AvrHex #
{ # Targets
$(AVR_OBJCOPY) -O ihex -R .eeprom $(>) $(<) #
}
rule AvrUpload # Grab everything from the core directory
{ CORE_MODULES = [ GLOB $(ARDUINO_CORE) : *.c *.cpp ] ;
Depends $(1) : $(2) ;
Depends $(2) : $(3) ;
NotFile $(1) ;
Always $(1) ;
Always $(2) ;
AvrUploadAction $(2) : $(3) ;
}
actions AvrUploadAction # Grab everything from libraries. To avoid this "grab everything" behaviour, you
{ # can specify specific modules to pick up in PROJECT_MODULES
$(AVRDUDE) $(AVRDUDE_FLAGS) -P $(<) $(AVRDUDE_WRITE_FLASH) -U flash:w:$(>):i 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) ; # Main output executable
AvrHex $(OUT).hex : $(OUT).elf ; MAIN = $(PWD:B).elf ;
AvrUpload p6 : /dev/tty.usbserial-A600eHIs : $(OUT).hex ; Main $(MAIN) : $(CORE_MODULES) $(LIB_MODULES) $(PROJECT_MODULES) ;
AvrUpload p4 : /dev/tty.usbserial-A40081RP : $(OUT).hex ; Hex $(MAIN:B).hex : $(MAIN) ;
AvrUpload p9 : /dev/tty.usbserial-A9007LmI : $(OUT).hex ;
# Upload targets
for _p in $(PORTS)
{
Upload $(_p) : $(PORT_$(_p)) : $(MAIN:B).hex ;
}
...@@ -29,14 +29,14 @@ ...@@ -29,14 +29,14 @@
// Set up nRF24L01 radio on SPI bus plus pins 8 & 9 // Set up nRF24L01 radio on SPI bus plus pins 8 & 9
RF24 radio(8,9); RF24 radio(9,10);
// //
// Channel info // Channel info
// //
const short num_channels = 128; const uint8_t num_channels = 128;
short values[num_channels]; uint8_t values[num_channels];
// //
// Setup // Setup
...@@ -84,12 +84,12 @@ void setup(void) ...@@ -84,12 +84,12 @@ void setup(void)
// Loop // Loop
// //
const short num_reps = 100; const int num_reps = 100;
void loop(void) void loop(void)
{ {
// Clear measurement values // Clear measurement values
memset(values,0,num_channels); memset(values,0,sizeof(values));
// Scan all channels num_reps times // Scan all channels num_reps times
int rep_counter = num_reps; int rep_counter = num_reps;
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment