From 75635bf65dc778950585eb2063e6a92b45763539 Mon Sep 17 00:00:00 2001 From: FakuFaku Date: Sat, 10 Dec 2011 01:12:34 +0900 Subject: [PATCH 1/9] Added an #if clause to include the new Arduino.h header instead of the old WProgram.h in case the IDE version is greater or equal to 1.0 --- ...ing the chibiArduino Wireless Protocol Stack.pdf | Bin chibi.cpp | 0 chibi.h | 5 +++++ chibiUsrCfg.h | 0 .../chibi_ex1_hello_world1.pde | 0 .../chibi_ex2_hello_world2.pde | 0 .../chibi_ex3_hello_world3.pde | 0 examples/chibi_ex4_cmdline/chibi_ex4_cmdline.pde | 0 .../chibi_ex5_led_brightness.pde | 0 examples/chibi_ex6_servo/chibi_ex6_servo.pde | 0 .../chibi_ex7_webserver/chibi_ex7_webserver.pde | 0 examples/chibi_ex8_button/chibi_ex8_button.pde | 0 examples/chibi_ex9_wsbridge/chibi_ex9_wsbridge.pde | 0 keywords.txt | 0 src/chb.c | 0 src/chb.h | 0 src/chb_buf.c | 0 src/chb_buf.h | 0 src/chb_cmd.c | 6 +++++- src/chb_cmd.h | 0 src/chb_drvr.c | 6 +++++- src/chb_drvr.h | 0 src/chb_eeprom.c | 0 src/chb_eeprom.h | 0 src/chb_rx_int.c | 6 +++++- src/chb_rx_int.h | 0 src/chb_rx_poll.c | 6 +++++- src/chb_rx_poll.h | 0 src/chb_spi.c | 0 src/chb_spi.h | 0 src/types.h | 0 31 files changed, 25 insertions(+), 4 deletions(-) mode change 100644 => 100755 HOWTO Using the chibiArduino Wireless Protocol Stack.pdf mode change 100644 => 100755 chibi.cpp mode change 100644 => 100755 chibi.h mode change 100644 => 100755 chibiUsrCfg.h mode change 100644 => 100755 examples/chibi_ex1_hello_world1/chibi_ex1_hello_world1.pde mode change 100644 => 100755 examples/chibi_ex2_hello_world2/chibi_ex2_hello_world2.pde mode change 100644 => 100755 examples/chibi_ex3_hello_world3/chibi_ex3_hello_world3.pde mode change 100644 => 100755 examples/chibi_ex4_cmdline/chibi_ex4_cmdline.pde mode change 100644 => 100755 examples/chibi_ex5_led_brightness/chibi_ex5_led_brightness.pde mode change 100644 => 100755 examples/chibi_ex6_servo/chibi_ex6_servo.pde mode change 100644 => 100755 examples/chibi_ex7_webserver/chibi_ex7_webserver.pde mode change 100644 => 100755 examples/chibi_ex8_button/chibi_ex8_button.pde mode change 100644 => 100755 examples/chibi_ex9_wsbridge/chibi_ex9_wsbridge.pde mode change 100644 => 100755 keywords.txt mode change 100644 => 100755 src/chb.c mode change 100644 => 100755 src/chb.h mode change 100644 => 100755 src/chb_buf.c mode change 100644 => 100755 src/chb_buf.h mode change 100644 => 100755 src/chb_cmd.c mode change 100644 => 100755 src/chb_cmd.h mode change 100644 => 100755 src/chb_drvr.c mode change 100644 => 100755 src/chb_drvr.h mode change 100644 => 100755 src/chb_eeprom.c mode change 100644 => 100755 src/chb_eeprom.h mode change 100644 => 100755 src/chb_rx_int.c mode change 100644 => 100755 src/chb_rx_int.h mode change 100644 => 100755 src/chb_rx_poll.c mode change 100644 => 100755 src/chb_rx_poll.h mode change 100644 => 100755 src/chb_spi.c mode change 100644 => 100755 src/chb_spi.h mode change 100644 => 100755 src/types.h diff --git a/HOWTO Using the chibiArduino Wireless Protocol Stack.pdf b/HOWTO Using the chibiArduino Wireless Protocol Stack.pdf old mode 100644 new mode 100755 diff --git a/chibi.cpp b/chibi.cpp old mode 100644 new mode 100755 diff --git a/chibi.h b/chibi.h old mode 100644 new mode 100755 index d0286ec..6356483 --- a/chibi.h +++ b/chibi.h @@ -41,7 +41,12 @@ #ifndef CHIBI_H #define CHIBI_H +#if ARDUINO >= 100 +#include +#else #include +#endif + #include "chibiUsrCfg.h" #define BROADCAST_ADDR 0xFFFF diff --git a/chibiUsrCfg.h b/chibiUsrCfg.h old mode 100644 new mode 100755 diff --git a/examples/chibi_ex1_hello_world1/chibi_ex1_hello_world1.pde b/examples/chibi_ex1_hello_world1/chibi_ex1_hello_world1.pde old mode 100644 new mode 100755 diff --git a/examples/chibi_ex2_hello_world2/chibi_ex2_hello_world2.pde b/examples/chibi_ex2_hello_world2/chibi_ex2_hello_world2.pde old mode 100644 new mode 100755 diff --git a/examples/chibi_ex3_hello_world3/chibi_ex3_hello_world3.pde b/examples/chibi_ex3_hello_world3/chibi_ex3_hello_world3.pde old mode 100644 new mode 100755 diff --git a/examples/chibi_ex4_cmdline/chibi_ex4_cmdline.pde b/examples/chibi_ex4_cmdline/chibi_ex4_cmdline.pde old mode 100644 new mode 100755 diff --git a/examples/chibi_ex5_led_brightness/chibi_ex5_led_brightness.pde b/examples/chibi_ex5_led_brightness/chibi_ex5_led_brightness.pde old mode 100644 new mode 100755 diff --git a/examples/chibi_ex6_servo/chibi_ex6_servo.pde b/examples/chibi_ex6_servo/chibi_ex6_servo.pde old mode 100644 new mode 100755 diff --git a/examples/chibi_ex7_webserver/chibi_ex7_webserver.pde b/examples/chibi_ex7_webserver/chibi_ex7_webserver.pde old mode 100644 new mode 100755 diff --git a/examples/chibi_ex8_button/chibi_ex8_button.pde b/examples/chibi_ex8_button/chibi_ex8_button.pde old mode 100644 new mode 100755 diff --git a/examples/chibi_ex9_wsbridge/chibi_ex9_wsbridge.pde b/examples/chibi_ex9_wsbridge/chibi_ex9_wsbridge.pde old mode 100644 new mode 100755 diff --git a/keywords.txt b/keywords.txt old mode 100644 new mode 100755 diff --git a/src/chb.c b/src/chb.c old mode 100644 new mode 100755 diff --git a/src/chb.h b/src/chb.h old mode 100644 new mode 100755 diff --git a/src/chb_buf.c b/src/chb_buf.c old mode 100644 new mode 100755 diff --git a/src/chb_buf.h b/src/chb_buf.h old mode 100644 new mode 100755 diff --git a/src/chb_cmd.c b/src/chb_cmd.c old mode 100644 new mode 100755 index cd0d251..39df25e --- a/src/chb_cmd.c +++ b/src/chb_cmd.c @@ -39,7 +39,11 @@ */ /**************************************************************************/ #include -#include "WProgram.h" +#if ARDUINO >= 100 +#include +#else +#include +#endif #include "HardwareSerial.h" #include "chb_cmd.h" diff --git a/src/chb_cmd.h b/src/chb_cmd.h old mode 100644 new mode 100755 diff --git a/src/chb_drvr.c b/src/chb_drvr.c old mode 100644 new mode 100755 index 08f75fb..3c9dc6f --- a/src/chb_drvr.c +++ b/src/chb_drvr.c @@ -32,7 +32,11 @@ *******************************************************************/ #include -#include "WProgram.h" +#if ARDUINO >= 100 +#include +#else +#include +#endif #include "chb.h" #include "chb_drvr.h" #include "chb_buf.h" diff --git a/src/chb_drvr.h b/src/chb_drvr.h old mode 100644 new mode 100755 diff --git a/src/chb_eeprom.c b/src/chb_eeprom.c old mode 100644 new mode 100755 diff --git a/src/chb_eeprom.h b/src/chb_eeprom.h old mode 100644 new mode 100755 diff --git a/src/chb_rx_int.c b/src/chb_rx_int.c old mode 100644 new mode 100755 index f3ccecc..3b59ee5 --- a/src/chb_rx_int.c +++ b/src/chb_rx_int.c @@ -38,7 +38,11 @@ */ /**************************************************************************/ -#include "WProgram.h" +#if ARDUINO >= 100 +#include +#else +#include +#endif #include "chb.h" #include "chb_drvr.h" #include "chb_spi.h" diff --git a/src/chb_rx_int.h b/src/chb_rx_int.h old mode 100644 new mode 100755 diff --git a/src/chb_rx_poll.c b/src/chb_rx_poll.c old mode 100644 new mode 100755 index e351c20..a8f1102 --- a/src/chb_rx_poll.c +++ b/src/chb_rx_poll.c @@ -38,7 +38,11 @@ */ /**************************************************************************/ -#include "WProgram.h" +#if ARDUINO >= 100 +#include +#else +#include +#endif #include "chb.h" #include "chb_drvr.h" #include "chb_spi.h" diff --git a/src/chb_rx_poll.h b/src/chb_rx_poll.h old mode 100644 new mode 100755 diff --git a/src/chb_spi.c b/src/chb_spi.c old mode 100644 new mode 100755 diff --git a/src/chb_spi.h b/src/chb_spi.h old mode 100644 new mode 100755 diff --git a/src/types.h b/src/types.h old mode 100644 new mode 100755 From 9ffb3c81008f11e2c654f226f0890b6c584e9d99 Mon Sep 17 00:00:00 2001 From: FakuFaku Date: Sat, 10 Dec 2011 01:17:05 +0900 Subject: [PATCH 2/9] Resotored old permission (644) --- ...ing the chibiArduino Wireless Protocol Stack.pdf | Bin chibi.cpp | 0 chibi.h | 0 chibiUsrCfg.h | 0 .../chibi_ex1_hello_world1.pde | 0 .../chibi_ex2_hello_world2.pde | 0 .../chibi_ex3_hello_world3.pde | 0 examples/chibi_ex4_cmdline/chibi_ex4_cmdline.pde | 0 .../chibi_ex5_led_brightness.pde | 0 examples/chibi_ex6_servo/chibi_ex6_servo.pde | 0 .../chibi_ex7_webserver/chibi_ex7_webserver.pde | 0 examples/chibi_ex8_button/chibi_ex8_button.pde | 0 examples/chibi_ex9_wsbridge/chibi_ex9_wsbridge.pde | 0 keywords.txt | 0 src/chb.c | 0 src/chb.h | 0 src/chb_buf.c | 0 src/chb_buf.h | 0 src/chb_cmd.c | 0 src/chb_cmd.h | 0 src/chb_drvr.c | 0 src/chb_drvr.h | 0 src/chb_eeprom.c | 0 src/chb_eeprom.h | 0 src/chb_rx_int.c | 0 src/chb_rx_int.h | 0 src/chb_rx_poll.c | 0 src/chb_rx_poll.h | 0 src/chb_spi.c | 0 src/chb_spi.h | 0 src/types.h | 0 31 files changed, 0 insertions(+), 0 deletions(-) mode change 100755 => 100644 HOWTO Using the chibiArduino Wireless Protocol Stack.pdf mode change 100755 => 100644 chibi.cpp mode change 100755 => 100644 chibi.h mode change 100755 => 100644 chibiUsrCfg.h mode change 100755 => 100644 examples/chibi_ex1_hello_world1/chibi_ex1_hello_world1.pde mode change 100755 => 100644 examples/chibi_ex2_hello_world2/chibi_ex2_hello_world2.pde mode change 100755 => 100644 examples/chibi_ex3_hello_world3/chibi_ex3_hello_world3.pde mode change 100755 => 100644 examples/chibi_ex4_cmdline/chibi_ex4_cmdline.pde mode change 100755 => 100644 examples/chibi_ex5_led_brightness/chibi_ex5_led_brightness.pde mode change 100755 => 100644 examples/chibi_ex6_servo/chibi_ex6_servo.pde mode change 100755 => 100644 examples/chibi_ex7_webserver/chibi_ex7_webserver.pde mode change 100755 => 100644 examples/chibi_ex8_button/chibi_ex8_button.pde mode change 100755 => 100644 examples/chibi_ex9_wsbridge/chibi_ex9_wsbridge.pde mode change 100755 => 100644 keywords.txt mode change 100755 => 100644 src/chb.c mode change 100755 => 100644 src/chb.h mode change 100755 => 100644 src/chb_buf.c mode change 100755 => 100644 src/chb_buf.h mode change 100755 => 100644 src/chb_cmd.c mode change 100755 => 100644 src/chb_cmd.h mode change 100755 => 100644 src/chb_drvr.c mode change 100755 => 100644 src/chb_drvr.h mode change 100755 => 100644 src/chb_eeprom.c mode change 100755 => 100644 src/chb_eeprom.h mode change 100755 => 100644 src/chb_rx_int.c mode change 100755 => 100644 src/chb_rx_int.h mode change 100755 => 100644 src/chb_rx_poll.c mode change 100755 => 100644 src/chb_rx_poll.h mode change 100755 => 100644 src/chb_spi.c mode change 100755 => 100644 src/chb_spi.h mode change 100755 => 100644 src/types.h diff --git a/HOWTO Using the chibiArduino Wireless Protocol Stack.pdf b/HOWTO Using the chibiArduino Wireless Protocol Stack.pdf old mode 100755 new mode 100644 diff --git a/chibi.cpp b/chibi.cpp old mode 100755 new mode 100644 diff --git a/chibi.h b/chibi.h old mode 100755 new mode 100644 diff --git a/chibiUsrCfg.h b/chibiUsrCfg.h old mode 100755 new mode 100644 diff --git a/examples/chibi_ex1_hello_world1/chibi_ex1_hello_world1.pde b/examples/chibi_ex1_hello_world1/chibi_ex1_hello_world1.pde old mode 100755 new mode 100644 diff --git a/examples/chibi_ex2_hello_world2/chibi_ex2_hello_world2.pde b/examples/chibi_ex2_hello_world2/chibi_ex2_hello_world2.pde old mode 100755 new mode 100644 diff --git a/examples/chibi_ex3_hello_world3/chibi_ex3_hello_world3.pde b/examples/chibi_ex3_hello_world3/chibi_ex3_hello_world3.pde old mode 100755 new mode 100644 diff --git a/examples/chibi_ex4_cmdline/chibi_ex4_cmdline.pde b/examples/chibi_ex4_cmdline/chibi_ex4_cmdline.pde old mode 100755 new mode 100644 diff --git a/examples/chibi_ex5_led_brightness/chibi_ex5_led_brightness.pde b/examples/chibi_ex5_led_brightness/chibi_ex5_led_brightness.pde old mode 100755 new mode 100644 diff --git a/examples/chibi_ex6_servo/chibi_ex6_servo.pde b/examples/chibi_ex6_servo/chibi_ex6_servo.pde old mode 100755 new mode 100644 diff --git a/examples/chibi_ex7_webserver/chibi_ex7_webserver.pde b/examples/chibi_ex7_webserver/chibi_ex7_webserver.pde old mode 100755 new mode 100644 diff --git a/examples/chibi_ex8_button/chibi_ex8_button.pde b/examples/chibi_ex8_button/chibi_ex8_button.pde old mode 100755 new mode 100644 diff --git a/examples/chibi_ex9_wsbridge/chibi_ex9_wsbridge.pde b/examples/chibi_ex9_wsbridge/chibi_ex9_wsbridge.pde old mode 100755 new mode 100644 diff --git a/keywords.txt b/keywords.txt old mode 100755 new mode 100644 diff --git a/src/chb.c b/src/chb.c old mode 100755 new mode 100644 diff --git a/src/chb.h b/src/chb.h old mode 100755 new mode 100644 diff --git a/src/chb_buf.c b/src/chb_buf.c old mode 100755 new mode 100644 diff --git a/src/chb_buf.h b/src/chb_buf.h old mode 100755 new mode 100644 diff --git a/src/chb_cmd.c b/src/chb_cmd.c old mode 100755 new mode 100644 diff --git a/src/chb_cmd.h b/src/chb_cmd.h old mode 100755 new mode 100644 diff --git a/src/chb_drvr.c b/src/chb_drvr.c old mode 100755 new mode 100644 diff --git a/src/chb_drvr.h b/src/chb_drvr.h old mode 100755 new mode 100644 diff --git a/src/chb_eeprom.c b/src/chb_eeprom.c old mode 100755 new mode 100644 diff --git a/src/chb_eeprom.h b/src/chb_eeprom.h old mode 100755 new mode 100644 diff --git a/src/chb_rx_int.c b/src/chb_rx_int.c old mode 100755 new mode 100644 diff --git a/src/chb_rx_int.h b/src/chb_rx_int.h old mode 100755 new mode 100644 diff --git a/src/chb_rx_poll.c b/src/chb_rx_poll.c old mode 100755 new mode 100644 diff --git a/src/chb_rx_poll.h b/src/chb_rx_poll.h old mode 100755 new mode 100644 diff --git a/src/chb_spi.c b/src/chb_spi.c old mode 100755 new mode 100644 diff --git a/src/chb_spi.h b/src/chb_spi.h old mode 100755 new mode 100644 diff --git a/src/types.h b/src/types.h old mode 100755 new mode 100644 From 0622524f6001692b736ec8df626dd144203053a9 Mon Sep 17 00:00:00 2001 From: FakuFaku Date: Sat, 10 Dec 2011 01:20:11 +0900 Subject: [PATCH 3/9] Added a thin README. --- README.markdown | 5 +++++ 1 file changed, 5 insertions(+) create mode 100644 README.markdown diff --git a/README.markdown b/README.markdown new file mode 100644 index 0000000..00eeabd --- /dev/null +++ b/README.markdown @@ -0,0 +1,5 @@ +### chibiArduino + +A lightweight 802.15.4 wireless protocol stack for Arduino +http://freaklabs.org/index.php/chibiArduino.html + From ca78dfcfab6c4ab8c606052c269b3155313aa140 Mon Sep 17 00:00:00 2001 From: FakuFaku Date: Wed, 2 May 2012 12:20:39 +0900 Subject: [PATCH 4/9] Modified the library to work with the new bGeigie board for Safecast. The board uses the Atmega1284p chip. --- chibiUsrCfg.h | 36 ++++++++++++++++++++++++++++++++++++ src/chb_rx_int.c | 7 +++++++ src/chb_spi.h | 13 +++++++++++++ 3 files changed, 56 insertions(+) diff --git a/chibiUsrCfg.h b/chibiUsrCfg.h index f0c7fc7..3d58de9 100644 --- a/chibiUsrCfg.h +++ b/chibiUsrCfg.h @@ -121,9 +121,17 @@ CHB_SLPTR_PIN default 2 on the chibiduino. */ /**************************************************************************/ +#if defined(__AVR_ATmega1284P__) +/* for bGeigie2 board using 1284P */ +#define CHB_SLPTR_PORT PORTA +#define CHB_SLPTR_DDIR DDRA +#define CHB_SLPTR_PIN 2 +#else +/* for standard freakduino */ #define CHB_SLPTR_PORT PORTC #define CHB_SLPTR_DDIR DDRC #define CHB_SLPTR_PIN 2 +#endif /**************************************************************************/ /*! @@ -135,9 +143,18 @@ CHB_SPI_CS_PIN default 3 on the chibiduino. */ /**************************************************************************/ +#if defined(__AVR_ATmega1284P__) +/* for bGeigie2 board using 1284P */ +#define CHB_SPI_CS_PORT PORTA +#define CHB_SPI_CS_DDIR DDRA +#define CHB_SPI_CS_PIN 3 // PA.3 - SPI Chip Select (SSEL) + +#else +/* for standard freakduino */ #define CHB_SPI_CS_PORT PORTC #define CHB_SPI_CS_DDIR DDRC #define CHB_SPI_CS_PIN 3 // PC.3 - SPI Chip Select (SSEL) +#endif /**************************************************************************/ @@ -148,7 +165,14 @@ CHB_RADIO_IRQ default PCINT0_vect on the chibiduino */ /**************************************************************************/ +#if defined(__AVR_ATmega1284P__) +/* for bGeigie2 board using 1284P (PC6) */ +#define CHB_RADIO_IRQ PCINT2_vect + +#else +/* for standard freakduino (PB6) */ #define CHB_RADIO_IRQ PCINT0_vect +#endif /**************************************************************************/ /*! @@ -157,12 +181,24 @@ */ /**************************************************************************/ // enable rising edge interrupt on IRQ0 +#if defined(__AVR_ATmega1284P__) +/* for bGeigie2 board using 1284P */ +#define CFG_CHB_INTP() do \ + { \ + PCMSK2 |= _BV(PCINT22); \ + PCICR |= _BV(PCIE2); \ + } \ + while(0) + +#else +/* for standard freakduino (atmega328p) */ #define CFG_CHB_INTP() do \ { \ PCMSK0 |= _BV(PCINT6); \ PCICR |= _BV(PCIE0); \ } \ while(0) +#endif /**************************************************************************/ /*! diff --git a/src/chb_rx_int.c b/src/chb_rx_int.c index 3b59ee5..cd42c5f 100644 --- a/src/chb_rx_int.c +++ b/src/chb_rx_int.c @@ -63,7 +63,14 @@ ISR(CHB_RADIO_IRQ) CHB_ENTER_CRIT(); // get the pin's value to check whether it was a rising or falling edge. +#if defined(__AVR_ATmega1284P__) + /* for bGeigie2 board using 1284P (PC6) */ + pinval = PINC & _BV(PINC6); +#else + /* for standard freakduino (PB6) */ pinval = PINB & _BV(PINB6); +#endif + // we'll only enter the ISR if the interrupt is a positive edge. if (pinval) diff --git a/src/chb_spi.h b/src/chb_spi.h index b1594a8..cb92bff 100644 --- a/src/chb_spi.h +++ b/src/chb_spi.h @@ -49,6 +49,17 @@ #define CHB_SPI_DISABLE() do {CHB_SPI_CS_PORT |= _BV(CHB_SPI_CS_PIN);} while (0) /* Note: The SPI chip select pin is defined in chibiUsrCfg.h */ +#if defined(__AVR_ATmega1284P__) +/* for bGeigie2 board using 1284P */ +#define CHB_SPI_PORT PORTB +#define CHB_SPI_DDIR DDRB +#define CHB_SCK 7 // PB.7 - Output: SPI Serial Clock (SCLK) +#define CHB_MOSI 5 // PB.5 - Output: SPI Master out - slave in (MOSI) +#define CHB_MISO 6 // PB.6 - Input: SPI Master in - slave out (MISO) +#define CHB_SPI_SELN 4 // PB.4 - Input: The dedicated SPI CS pin needs to have internal pullup enabled if an input + +#else +/* for standard freakduino */ #define CHB_SPI_PORT PORTB #define CHB_SPI_DDIR DDRB #define CHB_SCK 5 // PB.5 - Output: SPI Serial Clock (SCLK) @@ -56,6 +67,8 @@ #define CHB_MISO 4 // PB.4 - Input: SPI Master in - slave out (MISO) #define CHB_SPI_SELN 2 // PB.2 - Input: The dedicated SPI CS pin needs to have internal pullup enabled if an input +#endif + void chb_spi_init(); U8 chb_xfer_byte(U8 data); From f7cc47fa799d641ae4dbfdb490b950f802d02717 Mon Sep 17 00:00:00 2001 From: FakuFaku Date: Tue, 17 Jul 2012 23:36:48 +0900 Subject: [PATCH 5/9] Modified chip select pin to reflect revision 3.3 of the board. --- chibiUsrCfg.h | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/chibiUsrCfg.h b/chibiUsrCfg.h index 3d58de9..23ad738 100644 --- a/chibiUsrCfg.h +++ b/chibiUsrCfg.h @@ -122,7 +122,7 @@ */ /**************************************************************************/ #if defined(__AVR_ATmega1284P__) -/* for bGeigie2 board using 1284P */ +/* for bGeigie2 board using 1284P PORTA2 */ #define CHB_SLPTR_PORT PORTA #define CHB_SLPTR_DDIR DDRA #define CHB_SLPTR_PIN 2 @@ -145,9 +145,9 @@ /**************************************************************************/ #if defined(__AVR_ATmega1284P__) /* for bGeigie2 board using 1284P */ -#define CHB_SPI_CS_PORT PORTA -#define CHB_SPI_CS_DDIR DDRA -#define CHB_SPI_CS_PIN 3 // PA.3 - SPI Chip Select (SSEL) +#define CHB_SPI_CS_PORT PORTD +#define CHB_SPI_CS_DDIR DDRD +#define CHB_SPI_CS_PIN 5 // PD.5 - SPI Chip Select (SSEL) #else /* for standard freakduino */ From 6a096e7d9ad9adde10afd5ca06fe6feafafc92d2 Mon Sep 17 00:00:00 2001 From: FakuFaku Date: Sun, 14 Oct 2012 19:02:18 +0200 Subject: [PATCH 6/9] Modified initialization routine to return 1 in case of success and 0 in case of failure. --- chibi.cpp | 4 ++-- chibi.h | 2 +- src/chb.c | 4 ++-- src/chb.h | 2 +- src/chb_drvr.c | 12 +++++++++--- src/chb_drvr.h | 2 +- 6 files changed, 16 insertions(+), 10 deletions(-) diff --git a/chibi.cpp b/chibi.cpp index 1a79614..9717471 100644 --- a/chibi.cpp +++ b/chibi.cpp @@ -64,9 +64,9 @@ static chb_rx_data_t rx_data; Init the chibi stack */ /**************************************************************************/ -void chibiInit() +uint8_t chibiInit() { - chb_init(); + return chb_init(); } /**************************************************************************/ diff --git a/chibi.h b/chibi.h index 6356483..f05a994 100644 --- a/chibi.h +++ b/chibi.h @@ -51,7 +51,7 @@ #define BROADCAST_ADDR 0xFFFF -void chibiInit(); +uint8_t chibiInit(); void chibiSetShortAddr(uint16_t addr); uint16_t chibiGetShortAddr(); void chibiSetIEEEAddr(uint8_t *ieee_addr); diff --git a/src/chb.c b/src/chb.c index 0aaf7d8..4bd9d52 100644 --- a/src/chb.c +++ b/src/chb.c @@ -49,11 +49,11 @@ static U16 prev_src_addr = 0xFFFE; */ /**************************************************************************/ -void chb_init() +U8 chb_init() { memset(&pcb, 0, sizeof(pcb_t)); pcb.src_addr = chb_get_short_addr(); - chb_drvr_init(); + return chb_drvr_init(); } /**************************************************************************/ diff --git a/src/chb.h b/src/chb.h index 094a772..a1e983a 100644 --- a/src/chb.h +++ b/src/chb.h @@ -92,7 +92,7 @@ typedef struct U8 *data; } chb_rx_data_t; -void chb_init(); +U8 chb_init(); pcb_t *chb_get_pcb(); U8 chb_write(U16 addr, U8 *data, U8 len); U8 chb_read(chb_rx_data_t *rx); diff --git a/src/chb_drvr.c b/src/chb_drvr.c index 3c9dc6f..7343455 100644 --- a/src/chb_drvr.c +++ b/src/chb_drvr.c @@ -591,7 +591,7 @@ U8 chb_tx(U8 *hdr, U8 *data, U8 len) Initialize the radio registers. */ /**************************************************************************/ -static void chb_radio_init() +static U8 chb_radio_init() { U8 ieee_addr[8]; @@ -662,7 +662,13 @@ static void chb_radio_init() // grab the error message from flash & print it out strcpy_P(buf, chb_err_init); Serial.print(buf); + + // return error status + return 0; } + + // If we reach this point, report success + return 1; } /**************************************************************************/ @@ -670,7 +676,7 @@ static void chb_radio_init() Initialize the complete driver. */ /**************************************************************************/ -void chb_drvr_init() +U8 chb_drvr_init() { // config SPI for at86rf230 access chb_spi_init(); @@ -679,7 +685,7 @@ void chb_drvr_init() CHB_SLPTR_DDIR |= (_BV(CHB_SLPTR_PIN)); // config radio - chb_radio_init(); + return chb_radio_init(); } /**************************************************************************/ diff --git a/src/chb_drvr.h b/src/chb_drvr.h index 3112d53..95f749d 100644 --- a/src/chb_drvr.h +++ b/src/chb_drvr.h @@ -250,7 +250,7 @@ enum */ /**************************************************************************/ // init -void chb_drvr_init(); +U8 chb_drvr_init(); // data access U8 chb_reg_read(U8 addr); From ce9e74515e68e201832f77db0d246abddebc6729 Mon Sep 17 00:00:00 2001 From: FakuFaku Date: Tue, 16 Oct 2012 00:26:55 +0200 Subject: [PATCH 7/9] Added the chibiGetChannel function in the chibi.h header file so that it can be used. --- chibi.h | 1 + 1 file changed, 1 insertion(+) diff --git a/chibi.h b/chibi.h index f05a994..13c05ad 100644 --- a/chibi.h +++ b/chibi.h @@ -64,6 +64,7 @@ uint8_t chibiGetData(uint8_t *data); uint8_t chibiGetRSSI(); uint16_t chibiGetSrcAddr(); uint8_t chibiSetChannel(uint8_t channel); +uint8_t chibiGetChannel(); void chibiSleepRadio(uint8_t enb); void chibiCmdInit(uint32_t speed); void chibiCmdPoll(); From 86bce273980bca65ea529a08c285d2f7bee7f05c Mon Sep 17 00:00:00 2001 From: FakuFaku Date: Wed, 14 Nov 2012 18:20:59 +0100 Subject: [PATCH 8/9] Correct chb_delay_us bug. --- src/chb_drvr.c | 6 ++---- 1 file changed, 2 insertions(+), 4 deletions(-) diff --git a/src/chb_drvr.c b/src/chb_drvr.c index 7343455..9536553 100644 --- a/src/chb_drvr.c +++ b/src/chb_drvr.c @@ -85,10 +85,8 @@ static U8 chb_get_status() /**************************************************************************/ static void chb_delay_us(U16 usec) { - do - { - delayMicroseconds(usec); - } while (--usec); + // Use the Arduino microsecond delay function + delayMicroseconds(usec); } /**************************************************************************/ From 910c4c7310096d442fa9e528278c83ba94f611d9 Mon Sep 17 00:00:00 2001 From: FakuFaku Date: Wed, 14 Nov 2012 18:25:26 +0100 Subject: [PATCH 9/9] Added configuration to use library with Safecast Ninja2 board based on ATmega32U4 processor. --- chibiUsrCfg.h | 36 ++++++++++++++++++++++++++++++++++++ src/chb_rx_int.c | 3 +++ src/chb_spi.h | 9 +++++++++ 3 files changed, 48 insertions(+) diff --git a/chibiUsrCfg.h b/chibiUsrCfg.h index 23ad738..5e43726 100644 --- a/chibiUsrCfg.h +++ b/chibiUsrCfg.h @@ -126,6 +126,13 @@ #define CHB_SLPTR_PORT PORTA #define CHB_SLPTR_DDIR DDRA #define CHB_SLPTR_PIN 2 + +#elif defined(__AVR_ATmega32U4__) +/* for new Ninja2 board using 32u4 PORTD5 */ +#define CHB_SLPTR_PORT PORTD +#define CHB_SLPTR_DDIR DDRD +#define CHB_SLPTR_PIN 5 + #else /* for standard freakduino */ #define CHB_SLPTR_PORT PORTC @@ -149,6 +156,12 @@ #define CHB_SPI_CS_DDIR DDRD #define CHB_SPI_CS_PIN 5 // PD.5 - SPI Chip Select (SSEL) +#elif defined(__AVR_ATmega32U4__) +/* for bGeigie2 board using PORTD7 on 32u4 */ +#define CHB_SPI_CS_PORT PORTB +#define CHB_SPI_CS_DDIR DDRB +#define CHB_SPI_CS_PIN 0 // PB.0 - SPI Chip Select (SSEL) + #else /* for standard freakduino */ #define CHB_SPI_CS_PORT PORTC @@ -169,6 +182,10 @@ /* for bGeigie2 board using 1284P (PC6) */ #define CHB_RADIO_IRQ PCINT2_vect +#elif defined(__AVR_ATmega32U4__) +/* for bGeigie2 board using 32U4 (PB7) */ +#define CHB_RADIO_IRQ PCINT0_vect + #else /* for standard freakduino (PB6) */ #define CHB_RADIO_IRQ PCINT0_vect @@ -190,6 +207,15 @@ } \ while(0) +#elif defined(__AVR_ATmega32U4__) +/* for bGeigie2 board using PCINT7 (PB7) on 32U4 */ +#define CFG_CHB_INTP() do \ + { \ + PCMSK0 |= _BV(PCINT7); \ + PCICR |= _BV(PCIE0); \ + } \ + while(0) + #else /* for standard freakduino (atmega328p) */ #define CFG_CHB_INTP() do \ @@ -210,8 +236,18 @@ off until the SPI bus is free and the data can be retrieved without collision. */ /**************************************************************************/ +#if defined(__AVR_ATmega1284P__) +#define CHB_IRQ_DISABLE() do {PCMSK2 &= ~_BV(PCINT22);} while(0) +#define CHB_IRQ_ENABLE() do {PCMSK2 |= _BV(PCINT22);} while(0) + +#elif defined(__AVR_ATmega32U4__) +#define CHB_IRQ_DISABLE() do {PCMSK0 &= ~_BV(PCINT7);} while(0) +#define CHB_IRQ_ENABLE() do {PCMSK0 |= _BV(PCINT7);} while(0) + +#else #define CHB_IRQ_DISABLE() do {PCMSK0 &= ~_BV(PCINT6);} while(0) #define CHB_IRQ_ENABLE() do {PCMSK0 |= _BV(PCINT6);} while(0) +#endif /**************************************************************************/ diff --git a/src/chb_rx_int.c b/src/chb_rx_int.c index cd42c5f..cd7f46d 100644 --- a/src/chb_rx_int.c +++ b/src/chb_rx_int.c @@ -66,6 +66,9 @@ ISR(CHB_RADIO_IRQ) #if defined(__AVR_ATmega1284P__) /* for bGeigie2 board using 1284P (PC6) */ pinval = PINC & _BV(PINC6); +#elif defined(__AVR_ATmega32U4__) + /* for bGeigie2 board using 32U4 (PB7) */ + pinval = PINB & _BV(PINB7); #else /* for standard freakduino (PB6) */ pinval = PINB & _BV(PINB6); diff --git a/src/chb_spi.h b/src/chb_spi.h index cb92bff..1445e87 100644 --- a/src/chb_spi.h +++ b/src/chb_spi.h @@ -58,6 +58,15 @@ #define CHB_MISO 6 // PB.6 - Input: SPI Master in - slave out (MISO) #define CHB_SPI_SELN 4 // PB.4 - Input: The dedicated SPI CS pin needs to have internal pullup enabled if an input +#elif defined(__AVR_ATmega32U4__) +/* for bGeigie2 board using 1284P */ +#define CHB_SPI_PORT PORTB +#define CHB_SPI_DDIR DDRB +#define CHB_SCK 1 // PB.1 - Output: SPI Serial Clock (SCLK) +#define CHB_MOSI 2 // PB.2 - Output: SPI Master out - slave in (MOSI) +#define CHB_MISO 3 // PB.3 - Input: SPI Master in - slave out (MISO) +#define CHB_SPI_SELN 0 // PB.0 - Input: The dedicated SPI CS pin needs to have internal pullup enabled if an input + #else /* for standard freakduino */ #define CHB_SPI_PORT PORTB