-
Notifications
You must be signed in to change notification settings - Fork 163
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
- Loading branch information
Showing
6 changed files
with
579 additions
and
0 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 |
---|---|---|
@@ -0,0 +1,4 @@ | ||
version.h | ||
output/ | ||
ojam/ | ||
.*.swp |
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 |
---|---|---|
@@ -0,0 +1,222 @@ | ||
PROJECT_NAME = $(PWD:B) ; | ||
PROJECT_DIR = . ; | ||
PROJECT_LIBS = SPI RF24 RF24Network ; | ||
|
||
OUT_DIR = ojam ; | ||
F_CPU = 16000000 ; | ||
MCU = atmega328p ; | ||
PORTS = /dev/tty.usbserial-A600eHIs /dev/tty.usbserial-A40081RP /dev/tty.usbserial-A9007LmI ; | ||
|
||
UPLOAD_RATE = 57600 ; | ||
AVRDUDE_PROTOCOL = stk500v1 ; | ||
COM = 33 ; | ||
|
||
# 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 ; | ||
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 -Werror -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) : [^.]* ] ; | ||
|
||
# Grab everything from the core directory | ||
CORE_MODULES = [ GLOB $(ARDUINO_CORE) : *.c *.cpp ] ; | ||
|
||
# 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 ] ; | ||
|
||
# In addition to explicitly-specified program modules, pick up anything from the current | ||
# dir. | ||
PROJECT_MODULES += [ GLOB $(PROJECT_DIR) : *.c *.cpp *.pde ] ; | ||
|
||
# Shortcut for the out files | ||
OUT = $(OUT_DIR)/$(PROJECT_NAME) ; | ||
|
||
# AvrDude setup | ||
|
||
AVRDUDE_FLAGS = -V -F -D -C $(AVRDUDECONFIG_PATH)/avrdude.conf -p $(MCU) -c $(AVRDUDE_PROTOCOL) -b $(UPLOAD_RATE) ; | ||
|
||
#This is not working :( | ||
#HDRSCAN on $(OUT).pde = "^#[ \\t]*include[ \\t]*[<\\"](.*)[\\">].*$" ; | ||
#HDRRULE on $(OUT).pde = HDER ; | ||
#rule HDER | ||
#{ | ||
# Echo $(<) INCLUDES $(>:B) ; | ||
# | ||
# _LIB = [ GLOB $(ARDUINO_LIB)/$(>:B) $(SKETCH_LIB)/$(>:B) : *.cpp ] ; | ||
# Includes $(<) : $(OUT_DIR)/$(_LIB:B).o ; | ||
# Echo [ GLOB $(ARDUINO_LIB)/$(>:B) $(SKETCH_LIB)/$(>:B) : *.cpp ] ; | ||
#} | ||
|
||
rule GitVersion | ||
{ | ||
Always $(<) ; | ||
Depends all : $(<) ; | ||
} | ||
|
||
actions GitVersion | ||
{ | ||
echo "const char program_version[] = \"\\" > $(<) | ||
git log -1 --pretty=format:%h >> $(<) | ||
echo "\";" >> $(<) | ||
} | ||
|
||
GitVersion version.h ; | ||
|
||
rule AvrCc | ||
{ | ||
Depends $(<) : $(>) ; | ||
Depends $(<) : $(<:D) ; | ||
Clean clean : $(<) ; | ||
|
||
CCHDRS on $(<) = [ on $(<) FIncludes $(HDRS) ] ; | ||
CCDEFS on $(<) = [ on $(<) FDefines $(DEFINES) ] ; | ||
} | ||
|
||
actions AvrCc | ||
{ | ||
$(AVR_CC) -c -o $(<) $(CCHDRS) $(CCDEFS) $(CFLAGS) $(>) | ||
} | ||
|
||
rule AvrC++ | ||
{ | ||
Depends $(<) : $(>) ; | ||
Depends $(<) : $(<:D) ; | ||
Clean clean : $(<) ; | ||
|
||
CCHDRS on $(<) = [ on $(<) FIncludes $(HDRS) ] ; | ||
CCDEFS on $(<) = [ on $(<) FDefines $(DEFINES) ] ; | ||
} | ||
|
||
actions AvrC++ | ||
{ | ||
$(AVR_CXX) -c -o $(<) $(CCHDRS) $(CCDEFS) $(CXXFLAGS) $(>) | ||
} | ||
|
||
rule Pde | ||
{ | ||
Depends $(<) : $(>) ; | ||
Depends $(<) : $(<:D) ; | ||
Clean clean : $(<) ; | ||
|
||
# Could not get headerscan to work :( | ||
# HDRRULE on $(>) = HDER ; | ||
# HDRSCAN on $(>) = $(HDRPATTERN) ; | ||
} | ||
|
||
actions Pde | ||
{ | ||
echo "#include <WProgram.h>" > $(<) | ||
echo "#line 1 \"$(>)\"" >> $(<) | ||
cat $(>) >> $(<) | ||
} | ||
|
||
rule AvrPde | ||
{ | ||
local _CPP = $(OUT_DIR)/$(_I:B).cpp ; | ||
Pde $(_CPP) : $(>) ; | ||
AvrC++ $(<) : $(_CPP) ; | ||
} | ||
|
||
rule AvrObject | ||
{ | ||
switch $(>:S) | ||
{ | ||
case .c : AvrCc $(<) : $(>) ; | ||
case .cpp : AvrC++ $(<) : $(>) ; | ||
case .pde : AvrPde $(<) : $(>) ; | ||
} | ||
} | ||
|
||
rule AvrObjects | ||
{ | ||
for _I in $(<) | ||
{ | ||
AvrObject $(OUT_DIR)/$(_I:B).o : $(_I) ; | ||
} | ||
} | ||
|
||
rule AvrMainFromObjects | ||
{ | ||
Depends $(<) : $(>) ; | ||
Depends $(<) : $(<:D) ; | ||
MkDir $(<:D) ; | ||
Depends all : $(<) ; | ||
Clean clean : $(<) ; | ||
} | ||
|
||
actions AvrMainFromObjects | ||
{ | ||
$(AVR_LD) $(LDFLAGS) -o $(<) $(>) | ||
} | ||
|
||
rule AvrMain | ||
{ | ||
AvrMainFromObjects $(<) : $(OUT_DIR)/$(>:B).o ; | ||
AvrObjects $(>) ; | ||
} | ||
|
||
rule AvrHex | ||
{ | ||
Depends $(<) : $(>) ; | ||
Depends $(<) : $(<:D) ; | ||
Depends hex : $(<) ; | ||
Clean clean : $(<) ; | ||
} | ||
|
||
actions AvrHex | ||
{ | ||
$(AVR_OBJCOPY) -O ihex -R .eeprom $(>) $(<) | ||
} | ||
|
||
rule AvrUpload | ||
{ | ||
Depends $(1) : $(2) ; | ||
Depends $(2) : $(3) ; | ||
NotFile $(1) ; | ||
Always $(1) ; | ||
Always $(2) ; | ||
AvrUploadAction $(2) : $(3) ; | ||
} | ||
|
||
actions AvrUploadAction | ||
{ | ||
$(AVRDUDE) $(AVRDUDE_FLAGS) -P $(<) $(AVRDUDE_WRITE_FLASH) -U flash:w:$(>):i | ||
} | ||
|
||
AvrMain $(OUT).elf : $(CORE_MODULES) $(LIB_MODULES) $(PROJECT_MODULES) ; | ||
AvrHex $(OUT).hex : $(OUT).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 ; | ||
|
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 |
---|---|---|
@@ -0,0 +1,58 @@ | ||
/* | ||
Copyright (C) 2011 James Coliz, Jr. <maniacbug@ymail.com> | ||
This program is free software; you can redistribute it and/or | ||
modify it under the terms of the GNU General Public License | ||
version 2 as published by the Free Software Foundation. | ||
*/ | ||
|
||
/** | ||
* Simplest possible example of using RF24Network, | ||
* | ||
* RECEIVER NODE | ||
* Listens for messages from the transmitter and prints them out. | ||
*/ | ||
|
||
#include <RF24Network.h> | ||
#include <RF24.h> | ||
#include <SPI.h> | ||
|
||
// nRF24L01(+) radio attached to SPI and pins 8 & 9 | ||
RF24 radio(8,9); | ||
|
||
// Network uses that radio | ||
RF24Network network(radio); | ||
|
||
// Address of our node | ||
const uint16_t this_node = 0; | ||
|
||
// Address of the other node | ||
const uint16_t other_node = 1; | ||
|
||
void setup(void) | ||
{ | ||
Serial.begin(57600); | ||
Serial.println("RF24Network/examples/helloworld_rx/"); | ||
|
||
SPI.begin(); | ||
radio.begin(); | ||
network.begin(/*channel*/ 90, /*node address*/ this_node); | ||
} | ||
|
||
void loop(void) | ||
{ | ||
// Pump the network regularly | ||
network.update(); | ||
|
||
// Is there anything ready for us? | ||
while ( network.available() ) | ||
{ | ||
// If so, grab it and print it out | ||
RF24NetworkHeader header; | ||
static char message[32]; | ||
network.read(header,message,sizeof(message)); | ||
Serial.print("Received: "); | ||
Serial.println(message); | ||
} | ||
} | ||
// vim:ai:cin:sts=2 sw=2 ft=cpp |
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 |
---|---|---|
@@ -0,0 +1,4 @@ | ||
version.h | ||
output/ | ||
ojam/ | ||
.*.swp |
Oops, something went wrong.