v0.65 - 7 March 2011 ==================== - Interrupts are now disabled while feeding the watchdog as per a warning in the usermanual. - Modified projectconfig.h to select the target board and configure the project accordingly. This isn't ideal, but it's a lot more maintainable than have a seperate code base for every board since they share 95% of the same code. - Fixed a bug in adcInit(). AD6 and AD7 were not being initialised for the LPC1114 Reference Design Base Board. Depending on what board you are using, you will need to comment or uncomment the appropriate pins in 'core/adc/adc.c'. - Made a number of changes to reduce power consumption in deep sleep (adjusting internal pullups, making sure peripherals are in sleep mode or properly configured for lower power consumption, etc.). The LPC1114 802.15.4 wireless Boards went from ~250uA to 79uA in deep sleep. - Modified WDT code to use the WDT oscillator (rather than the external crystal) - Fixed a bug when waking up from sleep in Chibi. Removed systick delay when toggling reset and slptr pins since this was causing a blocking condition with the wakeup ISR. - Added a CFG_VREG section to projectconfig.h to make it easier to work with dual output voltage regulators like the TPS780 - Fixed a bug calculating the battery voltage in cmd_sysinfo.h - Updated SCB_DEVICEID list in lpc111x.h to include new parts from UM10398 Rev. 3 (14 January 2011). - Added wsbridge example to 'tools/examples/chibi/sniffer-wsbridge' - Modified chb_libpcap.c to always create a new file when logging 802.15.4 frames to the SD card. If a file of the same name exists, it will now be overwritten. - Updated pmu to switch to 2.2V in sleep mode if a TPS780 is used for the voltage regulator, and swtich to 3.3V on startup (only relevant for wireless boards). v0.60 - 31 Jan 2011 =================== - Added a number of examples to the 'tools/examples' folder. - Modified Crossworks project to build with stdio/printf in 'core/lib' (saves about 1.5-2K in release mode) - Added rollover counter to the systick timer - Updated schematic for wireless board in tools/schematics (v1.6 which is the final production version). This schematic shows the expected layout for peripherals like the SD card and battery voltage divider. - Reduced command names in cmd_tbl.h to save some flash space, and reduced text in various commands (saves ~0.3kb) - Added the battery/supply voltage to the 'sysinfo' command (only applies to LPC1114 wireless board) - Made a number of changes for deep-sleep mode to reduce power consumption (pmu.c updated, including a bug fix that prevented the code from exiting deep sleep twice from SW). - Added basic driver for SSD1306-based 128x64 OLED displays (courtesy Adafruit Industries who have a convenient breakout board for these displays). - Added 'chb_libpcap' to log raw 802.15.4 frames to libpcap binary files. This allows wireless traffic to be stored for debugging and analysis in Wireshark or other libpcap compatible protocol analysers. Based on wsbridge by Freaklabs. - Added a 'tools' folder with schematics and common open-source tools that can be used with the code base - Modified 'core/gpio/gpio.c' to reduce the compiled code size. Repetitive switches where only the registers change were modified to use temporary registers and execute the code only once. - Updated Chibi to v0.91 (adds sleep method and promiscuous mode to allow Chibi to act as an 802.15.4 packet sniffer, etc.). To enable promiscuous mode, set CFG_CHIBI_PROMISCUOUS to 1 and change the buffer size to 1024 to handle a larger amount of incoming traffic. The following code will send all incoming bytes to UART for processing on the PC using WSBridge (available in the '/tools' folder or from www.freaklabs.org): #include "drivers/chibi/chb.h" #include "drivers/chibi/chb_drvr.h" static chb_rx_data_t rx_data; ... chb_pcb_t *pcb = chb_get_pcb(); while(1) { // Check for incoming messages while (pcb->data_rcv) { // get the length of the data rx_data.len = chb_read(&rx_data); // make sure the length is nonzero if (rx_data.len) { // Enable LED to indicate message reception gpioSetValue (CFG_LED_PORT, CFG_LED_PIN, CFG_LED_ON); // Send raw data to UART for processing on // the PC (requires WSBridge - www.freaklabs.org) uint8_t i; for (i=0; i