Compare commits

...

5 Commits

Author SHA1 Message Date
maniacbug ebcd0d1d0b Add isValid 2013-10-03 06:53:28 -07:00
maniacbug 8eaad77b2c Merge pull request #16 from RWSDev/master
Updated led_remote example to use correct var on line 172
2013-07-12 20:31:56 -07:00
Jason Becht 49f22eae21 Update examples/led_remote/led_remote.pde
Line 172 was using button_pins instead of led_pins.  This caused leds to be lit dim when set to HIGH.  Changed to correct var.
2013-02-06 18:43:42 -06:00
maniacbug 84e464def4 latest jamfiles 2012-06-23 19:46:42 -07:00
maniacbug 2c97186329 Fix bug introduced in the move to PROGMEM. Props to @basilrx for finding this. Also added a test case to demonstrate the bug, and guard against more like it in the future. 2012-02-26 19:53:08 -08:00
8 changed files with 45 additions and 15 deletions

View File

@ -649,7 +649,7 @@ void RF24::openReadingPipe(uint8_t child, uint64_t address)
// Note it would be more efficient to set all of the bits for all open
// pipes at once. However, I thought it would make the calling code
// more simple to do it this way.
write_register(EN_RXADDR,read_register(EN_RXADDR) | _BV(child_pipe_enable[child]));
write_register(EN_RXADDR,read_register(EN_RXADDR) | _BV(pgm_read_byte(&child_pipe_enable[child])));
}
}

9
RF24.h
View File

@ -637,6 +637,15 @@ public:
*/
bool testRPD(void) ;
/**
* Test whether this is a real radio, or a mock shim for
* debugging. Setting either pin to 0xff is the way to
* indicate that this is not a real radio.
*
* @return true if this is a legitimate radio
*/
bool isValid() { return ce_pin != 0xff && csn_pin != 0xff; }
/**@}*/
};

View File

@ -75,7 +75,7 @@ void setup(void)
// optionally, reduce the payload size. seems to
// improve reliability
radio.setPayloadSize(8);
//radio.setPayloadSize(8);
//
// Open pipes to other nodes for communication
@ -86,15 +86,15 @@ void setup(void)
// Open 'our' pipe for writing
// Open the 'other' pipe for reading, in position #1 (we can have up to 5 pipes open for reading)
if ( role == role_ping_out )
//if ( role == role_ping_out )
{
radio.openWritingPipe(pipes[0]);
//radio.openWritingPipe(pipes[0]);
radio.openReadingPipe(1,pipes[1]);
}
else
//else
{
radio.openWritingPipe(pipes[1]);
radio.openReadingPipe(1,pipes[0]);
//radio.openWritingPipe(pipes[1]);
//radio.openReadingPipe(1,pipes[0]);
}
//

View File

@ -4,7 +4,7 @@ PROJECT_LIBS = SPI RF24 ;
# (2) Board Information
UPLOAD_PROTOCOL ?= stk500v1 ;
UPLOAD_PROTOCOL ?= arduino ;
UPLOAD_SPEED ?= 57600 ;
MCU ?= atmega328p ;
F_CPU ?= 16000000 ;
@ -35,8 +35,8 @@ if $(OS) = MACOSX
}
else
{
AVR_BIN = /usr/bin ;
AVR_INCLUDE = /usr/lib/avr/include ;
AVR_BIN ?= /usr/bin ;
AVR_INCLUDE ?= /usr/lib/avr/include ;
AVR_ETC = /etc ;
}

View File

@ -169,7 +169,7 @@ void setup(void)
int i = num_led_pins;
while(i--)
{
pinMode(button_pins[i],OUTPUT);
pinMode(led_pins[i],OUTPUT);
led_states[i] = HIGH;
digitalWrite(led_pins[i],led_states[i]);
}

View File

@ -37,7 +37,7 @@ if $(OS) = MACOSX
else
{
AVR_BIN ?= /usr/bin ;
AVR_INCLUDE = /usr/lib/avr/include ;
AVR_INCLUDE ?= /usr/lib/avr/include ;
AVR_ETC = /etc ;
}

View File

@ -89,6 +89,8 @@ const int interval = 100; //*< ms to wait between sends */
char configuration = '1'; //*< Configuration key, one char sent in by the test framework to tell us how to configure, this is the default */
uint8_t pipe_number = 1; // Which pipe to send on.
void one_ok(void)
{
// Have we received enough yet?
@ -203,6 +205,20 @@ void setup(void)
radio.enableDynamicPayloads();
}
// Config 4 tests out a higher pipe ##
if (configuration == '4' && role == role_sender)
{
// Set top 4 bytes of the address in pipe 1
radio.openReadingPipe(1,pipe & 0xFFFFFFFF00ULL);
// indicate the pipe to use
pipe_number = 5;
}
else if ( role == role_sender )
{
radio.openReadingPipe(5,0);
}
//
// Open pipes to other nodes for communication
//
@ -216,7 +232,7 @@ void setup(void)
}
else
{
radio.openReadingPipe(1,pipe);
radio.openReadingPipe(pipe_number,pipe);
}
//
@ -230,7 +246,7 @@ void setup(void)
// Dump the configuration of the rf unit for debugging
//
//radio.printDetails();
radio.printDetails();
//
// Attach interrupt handler to interrupt #0 (using pin 2)
@ -410,7 +426,7 @@ void check_radio(void)
// Add an ack packet for the next time around.
// Here we will report back how many bytes we got this time.
radio.writeAckPayload( 1, &len, sizeof(len) );
radio.writeAckPayload( pipe_number, &len, sizeof(len) );
++message_count;
}
}

View File

@ -14,3 +14,8 @@ stty 57600 raw ignbrk hup < /dev/ttyUSB0
sleep 1
stty 57600 raw ignbrk hup < /dev/ttyUSB1
expect test.ex 3
sleep 1
stty 57600 raw ignbrk hup < /dev/ttyUSB0
sleep 1
stty 57600 raw ignbrk hup < /dev/ttyUSB1
expect test.ex 4