From 79f8a286ae21327726e51a84f35088e45d94a807 Mon Sep 17 00:00:00 2001 From: PaulZC Date: Sun, 30 May 2021 13:23:12 +0100 Subject: [PATCH 01/15] Update to Apollo3 v2.1.0 - work in progress --- Firmware/OpenLog_Artemis/OpenLog_Artemis.ino | 31 ++++++----- Firmware/OpenLog_Artemis/Sensors.ino | 9 ++-- Firmware/OpenLog_Artemis/autoDetect.ino | 16 +++--- Firmware/OpenLog_Artemis/lowerPower.ino | 51 ++++++++++++------- .../OpenLog_Artemis/menuAttachedDevices.ino | 16 +++--- Firmware/OpenLog_Artemis/productionTest.ino | 17 ++++--- Firmware/OpenLog_Artemis/settings.h | 2 +- Firmware/OpenLog_Artemis/zmodem_crc16.cpp | 9 ++-- Firmware/OpenLog_Artemis/zmodem_fixes.h | 2 +- 9 files changed, 89 insertions(+), 64 deletions(-) diff --git a/Firmware/OpenLog_Artemis/OpenLog_Artemis.ino b/Firmware/OpenLog_Artemis/OpenLog_Artemis.ino index a715f2e..a69848d 100644 --- a/Firmware/OpenLog_Artemis/OpenLog_Artemis.ino +++ b/Firmware/OpenLog_Artemis/OpenLog_Artemis.ino @@ -13,7 +13,7 @@ The Board should be set to SparkFun Apollo3 \ SparkFun RedBoard Artemis ATP. - Please note: this firmware currently only compiles on v1.2.1 of the Apollo3 boards. + Please note: this firmware currently only compiles on v1.2.2 of the Apollo3 boards. It does not yet work with the new Mbed version (v2.0) of the core. v1.0 Power Consumption: @@ -93,10 +93,11 @@ (done) Add support for exFAT. Requires v2.0.6 of Bill Greiman's SdFat library. https://github.com/sparkfun/OpenLog_Artemis/issues/34 (done) Add minimum awake time: https://github.com/sparkfun/OpenLog_Artemis/issues/83 (done) Add support for the Pulse Oximeter and Qwiic Button: https://github.com/sparkfun/OpenLog_Artemis/issues/81 + (in progress) Update to Apollo3 v2.1.0 - FIRMWARE_VERSION_MAJOR = 2 */ -const int FIRMWARE_VERSION_MAJOR = 1; -const int FIRMWARE_VERSION_MINOR = 11; +const int FIRMWARE_VERSION_MAJOR = 2; +const int FIRMWARE_VERSION_MINOR = 0; //Define the OLA board identifier: // This is an int which is unique to this variant of the OLA and which allows us @@ -106,7 +107,7 @@ const int FIRMWARE_VERSION_MINOR = 11; // the variant * 0x100 (OLA = 1; GNSS_LOGGER = 2; GEOPHONE_LOGGER = 3) // the major firmware version * 0x10 // the minor firmware version -#define OLA_IDENTIFIER 0x11B // Stored as 283 decimal in OLA_settings.txt +#define OLA_IDENTIFIER 0x120 // Stored as 288 decimal in OLA_settings.txt #include "settings.h" @@ -157,7 +158,7 @@ enum returnStatus { //Setup Qwiic Port //-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=- #include -TwoWire qwiic(1); //Will use pads 8/9 +TwoWire qwiic(9,8); //Will use pads 8/9 - changed from (1) for Apollo3 v2 //-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=- //EEPROM for storing settings @@ -202,12 +203,13 @@ const int sdPowerDownDelay = 100; //Delay for this many ms before turning off th //Add RTC interface for Artemis //-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=- #include "RTC.h" //Include RTC library included with the Aruino_Apollo3 core -APM3_RTC myRTC; //Create instance of RTC class +Apollo3RTC myRTC; //Create instance of RTC class //-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=- //Create UART instance for OpenLog style serial logging //-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=- -Uart SerialLog(1, 13, 12); // Declares a Uart object called Serial1 using instance 1 of Apollo3 UART peripherals with RX on pin 13 and TX on pin 12 (note, you specify *pins* not Apollo3 pads. This uses the variant's pin map to determine the Apollo3 pad) +//UART SerialLog(12, 13, 10, 17); // Declares a Uart object called Serial1 with RX on pin 13 and TX on pin 12. Unused pins 10 and 17 are named for RTS and CTS to keep Apollo3 happy +UART SerialLog(12, 13); // Declares a Uart object called Serial1 with RX on pin 13 and TX on pin 12 unsigned long lastSeriaLogSyncTime = 0; const int MAX_IDLE_TIME_MSEC = 500; bool newSerialData = false; @@ -806,7 +808,7 @@ void beginQwiic() pinMode(PIN_QWIIC_POWER, OUTPUT); qwiicPowerOn(); qwiic.begin(); - qwiic.setPullups(settings.qwiicBusPullUps); //Just to make it really clear what pull-ups are being used, set pullups here. + //qwiic.setPullups(settings.qwiicBusPullUps); //Just to make it really clear what pull-ups are being used, set pullups here. } void beginSD() @@ -870,15 +872,16 @@ void beginSD() void enableCIPOpullUp() { //Add CIPO pull-up - ap3_err_t retval = AP3_OK; - am_hal_gpio_pincfg_t cipoPinCfg = AP3_GPIO_DEFAULT_PINCFG; + uint32_t retval = AM_HAL_STATUS_SUCCESS; + am_hal_gpio_pincfg_t cipoPinCfg = {0,0,0,0,0,0,0,0,0,0,0,0}; // = AP3_GPIO_DEFAULT_PINCFG; cipoPinCfg.uFuncSel = AM_HAL_PIN_6_M0MISO; + cipoPinCfg.ePullup = AM_HAL_GPIO_PIN_PULLUP_1_5K; cipoPinCfg.eDriveStrength = AM_HAL_GPIO_PIN_DRIVESTRENGTH_12MA; cipoPinCfg.eGPOutcfg = AM_HAL_GPIO_PIN_OUTCFG_PUSHPULL; - cipoPinCfg.uIOMnum = AP3_SPI_IOM; - cipoPinCfg.ePullup = AM_HAL_GPIO_PIN_PULLUP_1_5K; - padMode(MISO, cipoPinCfg, &retval); - if (retval != AP3_OK) + cipoPinCfg.uIOMnum = 1; // AP3_SPI_IOM; // IOM 1 is used for SPI. Redundant since pin is not a CE? + //padMode(MISO, cipoPinCfg, &retval); + retval = am_hal_gpio_pinconfig(MISO, cipoPinCfg); + if (retval != AM_HAL_STATUS_SUCCESS) printDebug(F("Setting CIPO padMode failed!")); } diff --git a/Firmware/OpenLog_Artemis/Sensors.ino b/Firmware/OpenLog_Artemis/Sensors.ino index 662e600..f315d57 100644 --- a/Firmware/OpenLog_Artemis/Sensors.ino +++ b/Firmware/OpenLog_Artemis/Sensors.ino @@ -258,7 +258,7 @@ void gatherDeviceValues() break; case DEVICE_GPS_UBLOX: { - qwiic.setPullups(0); //Disable pullups to minimize CRC issues + //qwiic.setPullups(0); //Disable pullups to minimize CRC issues SFE_UBLOX_GNSS *nodeDevice = (SFE_UBLOX_GNSS *)temp->classPtr; struct_uBlox *nodeSetting = (struct_uBlox *)temp->configPtr; @@ -333,7 +333,7 @@ void gatherDeviceValues() } } - qwiic.setPullups(settings.qwiicBusPullUps); //Re-enable pullups + //qwiic.setPullups(settings.qwiicBusPullUps); //Re-enable pullups } break; case DEVICE_PROXIMITY_VCNL4040: @@ -1457,7 +1457,10 @@ void setMaxI2CSpeed() if (maxSpeed > settings.qwiicBusMaxSpeed) maxSpeed = settings.qwiicBusMaxSpeed; - qwiic.setClock(maxSpeed); + if (maxSpeed > 200000) + qwiic.setClock(AM_HAL_IOM_400KHZ); + else + qwiic.setClock(AM_HAL_IOM_100KHZ); for (int i = 0; i < 100; i++) //Allow time for the speed to change { checkBattery(); diff --git a/Firmware/OpenLog_Artemis/autoDetect.ino b/Firmware/OpenLog_Artemis/autoDetect.ino index d7d9f58..4cd93c7 100644 --- a/Firmware/OpenLog_Artemis/autoDetect.ino +++ b/Firmware/OpenLog_Artemis/autoDetect.ino @@ -349,12 +349,12 @@ bool beginQwiicDevices() break; case DEVICE_GPS_UBLOX: { - qwiic.setPullups(0); //Disable pullups for u-blox comms. + //qwiic.setPullups(0); //Disable pullups for u-blox comms. SFE_UBLOX_GNSS *tempDevice = (SFE_UBLOX_GNSS *)temp->classPtr; struct_uBlox *nodeSetting = (struct_uBlox *)temp->configPtr; //Create a local pointer that points to same spot as node does if (nodeSetting->powerOnDelayMillis > qwiicPowerOnDelayMillis) qwiicPowerOnDelayMillis = nodeSetting->powerOnDelayMillis; // Increase qwiicPowerOnDelayMillis if required temp->online = tempDevice->begin(qwiic, temp->address); //Wire port, Address - qwiic.setPullups(settings.qwiicBusPullUps); //Re-enable pullups. + //qwiic.setPullups(settings.qwiicBusPullUps); //Re-enable pullups. } break; case DEVICE_PROXIMITY_VCNL4040: @@ -657,7 +657,7 @@ void configureDevice(node * temp) break; case DEVICE_GPS_UBLOX: { - qwiic.setPullups(0); //Disable pullups for u-blox comms. + //qwiic.setPullups(0); //Disable pullups for u-blox comms. SFE_UBLOX_GNSS *sensor = (SFE_UBLOX_GNSS *)temp->classPtr; struct_uBlox *nodeSetting = (struct_uBlox *)temp->configPtr; @@ -678,7 +678,7 @@ void configureDevice(node * temp) else sensor->setNavigationFrequency(10); //Set nav freq to 10Hz. Max output depends on the module used. - qwiic.setPullups(settings.qwiicBusPullUps); //Re-enable pullups. + //qwiic.setPullups(settings.qwiicBusPullUps); //Re-enable pullups. } break; case DEVICE_PROXIMITY_VCNL4040: @@ -1203,15 +1203,15 @@ deviceType_e testDevice(uint8_t i2cAddress, uint8_t muxAddress, uint8_t portNumb case 0x42: { //Confidence: High - Sends/receives CRC checked data response - qwiic.setPullups(0); //Disable pullups to minimize CRC issues + //qwiic.setPullups(0); //Disable pullups to minimize CRC issues SFE_UBLOX_GNSS sensor; if(settings.printDebugMessages == true) sensor.enableDebugging(); // Enable debug messages if required if (sensor.begin(qwiic, i2cAddress) == true) //Wire port, address { - qwiic.setPullups(settings.qwiicBusPullUps); //Re-enable pullups to prevent ghosts at 0x43 onwards + //qwiic.setPullups(settings.qwiicBusPullUps); //Re-enable pullups to prevent ghosts at 0x43 onwards return (DEVICE_GPS_UBLOX); } - qwiic.setPullups(settings.qwiicBusPullUps); //Re-enable pullups for normal discovery + //qwiic.setPullups(settings.qwiicBusPullUps); //Re-enable pullups for normal discovery } break; case 0x44: @@ -1613,7 +1613,7 @@ bool setMuxPortState(uint8_t portBits, uint8_t deviceAddress, TwoWire &wirePort, wirePort.beginTransmission(deviceAddress); for (int i = 0; i < extraBytes; i++) { - wirePort.write(0x00); // Writing these extra bytes seems key to avoiding the slippery mux problem + wirePort.write((uint8_t)0x00); // Writing these extra bytes seems key to avoiding the slippery mux problem } wirePort.write(portBits); if (wirePort.endTransmission() != 0) diff --git a/Firmware/OpenLog_Artemis/lowerPower.ino b/Firmware/OpenLog_Artemis/lowerPower.ino index 292e664..b911e81 100644 --- a/Firmware/OpenLog_Artemis/lowerPower.ino +++ b/Firmware/OpenLog_Artemis/lowerPower.ino @@ -89,7 +89,7 @@ void powerDown() SPI.end(); //Power down SPI - power_adc_disable(); //Power down ADC. It it started by default before setup(). + powerControlADC(false); // power_adc_disable(); //Power down ADC. It it started by default before setup(). Serial.end(); //Power down UART SerialLog.end(); @@ -108,11 +108,16 @@ void powerDown() //Disable pads for (int x = 0; x < 50; x++) { - if ((x != ap3_gpio_pin2pad(PIN_POWER_LOSS)) && - //(x != ap3_gpio_pin2pad(PIN_LOGIC_DEBUG)) && - (x != ap3_gpio_pin2pad(PIN_MICROSD_POWER)) && - (x != ap3_gpio_pin2pad(PIN_QWIIC_POWER)) && - (x != ap3_gpio_pin2pad(PIN_IMU_POWER))) +// if ((x != ap3_gpio_pin2pad(PIN_POWER_LOSS)) && +// //(x != ap3_gpio_pin2pad(PIN_LOGIC_DEBUG)) && +// (x != ap3_gpio_pin2pad(PIN_MICROSD_POWER)) && +// (x != ap3_gpio_pin2pad(PIN_QWIIC_POWER)) && +// (x != ap3_gpio_pin2pad(PIN_IMU_POWER))) + if ((x != PIN_POWER_LOSS) && + //(x != PIN_LOGIC_DEBUG) && + (x != PIN_MICROSD_POWER) && + (x != PIN_QWIIC_POWER) && + (x != PIN_IMU_POWER)) { am_hal_gpio_pinconfig(x, g_AM_HAL_GPIO_DISABLE); } @@ -177,7 +182,7 @@ void resetArtemis(void) SPI.end(); //Power down SPI - power_adc_disable(); //Power down ADC. It it started by default before setup(). + powerControlADC(false); // power_adc_disable(); //Power down ADC. It it started by default before setup(). Serial.end(); //Power down UART SerialLog.end(); @@ -196,11 +201,16 @@ void resetArtemis(void) //Disable pads for (int x = 0; x < 50; x++) { - if ((x != ap3_gpio_pin2pad(PIN_POWER_LOSS)) && - //(x != ap3_gpio_pin2pad(PIN_LOGIC_DEBUG)) && - (x != ap3_gpio_pin2pad(PIN_MICROSD_POWER)) && - (x != ap3_gpio_pin2pad(PIN_QWIIC_POWER)) && - (x != ap3_gpio_pin2pad(PIN_IMU_POWER))) +// if ((x != ap3_gpio_pin2pad(PIN_POWER_LOSS)) && +// //(x != ap3_gpio_pin2pad(PIN_LOGIC_DEBUG)) && +// (x != ap3_gpio_pin2pad(PIN_MICROSD_POWER)) && +// (x != ap3_gpio_pin2pad(PIN_QWIIC_POWER)) && +// (x != ap3_gpio_pin2pad(PIN_IMU_POWER))) + if ((x != PIN_POWER_LOSS) && + //(x != PIN_LOGIC_DEBUG) && + (x != PIN_MICROSD_POWER) && + (x != PIN_QWIIC_POWER) && + (x != PIN_IMU_POWER)) { am_hal_gpio_pinconfig(x, g_AM_HAL_GPIO_DISABLE); } @@ -270,7 +280,7 @@ void goToSleep(uint32_t sysTicksToSleep) SPI.end(); //Power down SPI - power_adc_disable(); //Power down ADC. It it started by default before setup(). + powerControlADC(false); // power_adc_disable(); //Power down ADC. It it started by default before setup(). Serial.end(); //Power down UART SerialLog.end(); @@ -289,11 +299,16 @@ void goToSleep(uint32_t sysTicksToSleep) //Disable pads for (int x = 0; x < 50; x++) { - if ((x != ap3_gpio_pin2pad(PIN_POWER_LOSS)) && - //(x != ap3_gpio_pin2pad(PIN_LOGIC_DEBUG)) && - (x != ap3_gpio_pin2pad(PIN_MICROSD_POWER)) && - (x != ap3_gpio_pin2pad(PIN_QWIIC_POWER)) && - (x != ap3_gpio_pin2pad(PIN_IMU_POWER))) +// if ((x != ap3_gpio_pin2pad(PIN_POWER_LOSS)) && +// //(x != ap3_gpio_pin2pad(PIN_LOGIC_DEBUG)) && +// (x != ap3_gpio_pin2pad(PIN_MICROSD_POWER)) && +// (x != ap3_gpio_pin2pad(PIN_QWIIC_POWER)) && +// (x != ap3_gpio_pin2pad(PIN_IMU_POWER))) + if ((x != PIN_POWER_LOSS) && + //(x != PIN_LOGIC_DEBUG) && + (x != PIN_MICROSD_POWER) && + (x != PIN_QWIIC_POWER) && + (x != PIN_IMU_POWER)) { am_hal_gpio_pinconfig(x, g_AM_HAL_GPIO_DISABLE); } diff --git a/Firmware/OpenLog_Artemis/menuAttachedDevices.ino b/Firmware/OpenLog_Artemis/menuAttachedDevices.ino index 81668a5..d985e3e 100644 --- a/Firmware/OpenLog_Artemis/menuAttachedDevices.ino +++ b/Firmware/OpenLog_Artemis/menuAttachedDevices.ino @@ -33,9 +33,9 @@ bool detectQwiicDevices() printDebug(F("detectQwiicDevices started\r\n")); bool somethingDetected = false; - qwiic.setClock(100000); //During detection, go slow + qwiic.setClock(AM_HAL_IOM_100KHZ); //During detection, go slow - qwiic.setPullups(settings.qwiicBusPullUps); //Set pullups. (Redundant. beginQwiic has done this too.) If we don't have pullups, detectQwiicDevices() takes ~900ms to complete. We'll disable pullups if something is detected. + //qwiic.setPullups(settings.qwiicBusPullUps); //Set pullups. (Redundant. beginQwiic has done this too.) If we don't have pullups, detectQwiicDevices() takes ~900ms to complete. We'll disable pullups if something is detected. //24k causes a bunch of unknown devices to be falsely detected. //qwiic.setPullups(24); //Set pullups to 24k. If we don't have pullups, detectQwiicDevices() takes ~900ms to complete. We'll disable pullups if something is detected. @@ -465,12 +465,10 @@ void menuConfigure_QwiicBus() settings.powerDownQwiicBusBetweenReads ^= 1; else if (incoming == '2') { - SerialPrint(F("Enter max frequency to run Qwiic bus: (100000 or 400000): ")); - uint32_t amt = getNumber(menuTimeout); - if ((amt == 100000) || (amt == 400000)) - settings.qwiicBusMaxSpeed = amt; + if (settings.qwiicBusMaxSpeed == 100000) + settings.qwiicBusMaxSpeed = 400000; else - SerialPrintln(F("Error: Out of range")); + settings.qwiicBusMaxSpeed = 100000; } else if (incoming == '3') { @@ -1087,7 +1085,7 @@ void getUbloxDateTime(int &year, int &month, int &day, int &hour, int &minute, i { case DEVICE_GPS_UBLOX: { - qwiic.setPullups(0); //Disable pullups to minimize CRC issues + //qwiic.setPullups(0); //Disable pullups to minimize CRC issues SFE_UBLOX_GNSS *nodeDevice = (SFE_UBLOX_GNSS *)temp->classPtr; struct_uBlox *nodeSetting = (struct_uBlox *)temp->configPtr; @@ -1104,7 +1102,7 @@ void getUbloxDateTime(int &year, int &month, int &day, int &hour, int &minute, i timeValid = nodeDevice->getTimeValid(); millisecond = nodeDevice->getMillisecond(); - qwiic.setPullups(settings.qwiicBusPullUps); //Re-enable pullups + //qwiic.setPullups(settings.qwiicBusPullUps); //Re-enable pullups } } temp = temp->next; diff --git a/Firmware/OpenLog_Artemis/productionTest.ino b/Firmware/OpenLog_Artemis/productionTest.ino index c9f404f..99f1b89 100644 --- a/Firmware/OpenLog_Artemis/productionTest.ino +++ b/Firmware/OpenLog_Artemis/productionTest.ino @@ -289,7 +289,7 @@ void productionTest() Serial.flush(); //Finish any prints qwiic.end(); //Power down I2C SPI.end(); //Power down SPI - power_adc_disable(); //Power down ADC. It it started by default before setup(). + powerControlADC(false); // power_adc_disable(); //Power down ADC. It it started by default before setup(). Serial.end(); //Power down UART SerialLog.end(); //Force the peripherals off @@ -532,11 +532,16 @@ void productionTest() //Disable pads for (int x = 0; x < 50; x++) { - if ((x != ap3_gpio_pin2pad(PIN_POWER_LOSS)) && - //(x != ap3_gpio_pin2pad(PIN_LOGIC_DEBUG)) && - (x != ap3_gpio_pin2pad(PIN_MICROSD_POWER)) && - (x != ap3_gpio_pin2pad(PIN_QWIIC_POWER)) && - (x != ap3_gpio_pin2pad(PIN_IMU_POWER))) +// if ((x != ap3_gpio_pin2pad(PIN_POWER_LOSS)) && +// //(x != ap3_gpio_pin2pad(PIN_LOGIC_DEBUG)) && +// (x != ap3_gpio_pin2pad(PIN_MICROSD_POWER)) && +// (x != ap3_gpio_pin2pad(PIN_QWIIC_POWER)) && +// (x != ap3_gpio_pin2pad(PIN_IMU_POWER))) + if ((x != PIN_POWER_LOSS) && + //(x != PIN_LOGIC_DEBUG) && + (x != PIN_MICROSD_POWER) && + (x != PIN_QWIIC_POWER) && + (x != PIN_IMU_POWER)) { am_hal_gpio_pinconfig(x, g_AM_HAL_GPIO_DISABLE); } diff --git a/Firmware/OpenLog_Artemis/settings.h b/Firmware/OpenLog_Artemis/settings.h index 62d4ed0..8c8bb57 100644 --- a/Firmware/OpenLog_Artemis/settings.h +++ b/Firmware/OpenLog_Artemis/settings.h @@ -322,7 +322,7 @@ struct struct_QWIIC_BUTTON { bool toggleLEDOnClick = true; bool ledState = false; // Do not store in NVM uint8_t ledBrightness = 255; - unsigned long powerOnDelayMillis = 3000; // Wait for at least this many millis before communicating with this device. Increase if required! + unsigned long powerOnDelayMillis = minimumQwiicPowerOnDelay; // Wait for at least this many millis before communicating with this device. Increase if required! }; struct struct_BIO_SENSOR_HUB { diff --git a/Firmware/OpenLog_Artemis/zmodem_crc16.cpp b/Firmware/OpenLog_Artemis/zmodem_crc16.cpp index a975769..60da0d8 100644 --- a/Firmware/OpenLog_Artemis/zmodem_crc16.cpp +++ b/Firmware/OpenLog_Artemis/zmodem_crc16.cpp @@ -1,4 +1,4 @@ -#include +//#include - not supported in v2 of the Apollo3 core /* @@ -8,7 +8,8 @@ #define ZMODEM_CRC16_CPP /* crctab calculated by Mark G. Mendel, Network Systems Corporation */ // Dylan (monte_carlo_ecm, bitflipper, etc.) - Moved to PROGMEM -PROGMEM static const unsigned short crctab[256] = { +//PROGMEM static const unsigned short crctab[256] = { - not supported in v2 of the Apollo3 core +static const unsigned short crctab[256] = { 0x0000, 0x1021, 0x2042, 0x3063, 0x4084, 0x50a5, 0x60c6, 0x70e7, 0x8108, 0x9129, 0xa14a, 0xb16b, 0xc18c, 0xd1ad, 0xe1ce, 0xf1ef, 0x1231, 0x0210, 0x3273, 0x2252, 0x52b5, 0x4294, 0x72f7, 0x62d6, @@ -103,7 +104,8 @@ PROGMEM static const unsigned short crctab[256] = { // Pete (El_Supremo) add 'unsigned' // Dylan (monte_carlo_ecm, bitflipper, etc.) - Moved to PROGMEM -PROGMEM static const unsigned long cr3tab[] = { /* CRC polynomial 0xedb88320 */ +//PROGMEM static const unsigned long cr3tab[] = { /* CRC polynomial 0xedb88320 */ - not supported in v2 of the Apollo3 core +static const unsigned long cr3tab[] = { /* CRC polynomial 0xedb88320 */ 0x00000000, 0x77073096, 0xee0e612c, 0x990951ba, 0x076dc419, 0x706af48f, 0xe963a535, 0x9e6495a3, 0x0edb8832, 0x79dcb8a4, 0xe0d5e91e, 0x97d2d988, 0x09b64c2b, 0x7eb17cbd, 0xe7b82d07, 0x90bf1d91, 0x1db71064, 0x6ab020f2, 0xf3b97148, 0x84be41de, 0x1adad47d, 0x6ddde4eb, 0xf4d4b551, 0x83d385c7, @@ -158,4 +160,3 @@ long c; /* End of crctab.c */ #endif - diff --git a/Firmware/OpenLog_Artemis/zmodem_fixes.h b/Firmware/OpenLog_Artemis/zmodem_fixes.h index b5ec90d..9bbf97f 100644 --- a/Firmware/OpenLog_Artemis/zmodem_fixes.h +++ b/Firmware/OpenLog_Artemis/zmodem_fixes.h @@ -6,7 +6,7 @@ From: http://stackoverflow.com/questions/2607853/why-prototype-is-used-header-fi #ifndef ZMODEM_FIXES_H #define ZMODEM_FIXES_H -#define SERIAL_TX_BUFFER_SIZE AP3_UART_RINGBUFF_SIZE +#define SERIAL_TX_BUFFER_SIZE SERIAL_BUFFER_SIZE // AP3_UART_RINGBUFF_SIZE //////////////////////////////////////////////////////// From 3c8af0eacafa5f1da28f4b781f5036d3acf72187 Mon Sep 17 00:00:00 2001 From: PaulZC Date: Mon, 31 May 2021 13:33:32 +0100 Subject: [PATCH 02/15] Functional but not working correctly. On hold until printf float is available. --- Firmware/OpenLog_Artemis/OpenLog_Artemis.ino | 25 ++++++---- Firmware/OpenLog_Artemis/lowerPower.ino | 49 ++++++++++--------- .../OpenLog_Artemis/menuAnalogLogging.ino | 4 +- .../OpenLog_Artemis/menuAttachedDevices.ino | 4 +- Firmware/OpenLog_Artemis/menuMain.ino | 2 +- Firmware/OpenLog_Artemis/menuPower.ino | 4 +- Firmware/OpenLog_Artemis/menuTerminal.ino | 16 +++--- Firmware/OpenLog_Artemis/nvm.ino | 17 ++++--- Firmware/OpenLog_Artemis/productionTest.ino | 21 ++++---- 9 files changed, 76 insertions(+), 66 deletions(-) diff --git a/Firmware/OpenLog_Artemis/OpenLog_Artemis.ino b/Firmware/OpenLog_Artemis/OpenLog_Artemis.ino index a69848d..30093d4 100644 --- a/Firmware/OpenLog_Artemis/OpenLog_Artemis.ino +++ b/Firmware/OpenLog_Artemis/OpenLog_Artemis.ino @@ -11,10 +11,9 @@ This firmware runs the OpenLog Artemis. A large variety of system settings can be adjusted by connecting at 115200bps. - The Board should be set to SparkFun Apollo3 \ SparkFun RedBoard Artemis ATP. + The Board should be set to SparkFun Apollo3 \ RedBoard Artemis ATP. - Please note: this firmware currently only compiles on v1.2.2 of the Apollo3 boards. - It does not yet work with the new Mbed version (v2.0) of the core. + Please note: this version of the firmware compiles on v2.1.0+ of the Apollo3 boards. v1.0 Power Consumption: Sleep between reads, RTC fully charged, no Qwiic, SD, no USB, no Power LED: 260uA @@ -93,7 +92,7 @@ (done) Add support for exFAT. Requires v2.0.6 of Bill Greiman's SdFat library. https://github.com/sparkfun/OpenLog_Artemis/issues/34 (done) Add minimum awake time: https://github.com/sparkfun/OpenLog_Artemis/issues/83 (done) Add support for the Pulse Oximeter and Qwiic Button: https://github.com/sparkfun/OpenLog_Artemis/issues/81 - (in progress) Update to Apollo3 v2.1.0 - FIRMWARE_VERSION_MAJOR = 2 + (on hold) Update to Apollo3 v2.1.0 - FIRMWARE_VERSION_MAJOR = 2. On hold until this issue is resolved (OLA uses printf float in _so_ many places...): https://github.com/sparkfun/Arduino_Apollo3/issues/278 */ const int FIRMWARE_VERSION_MAJOR = 2; @@ -311,8 +310,9 @@ void setup() { delay(1); // Let PIN_POWER_LOSS stabilize - if (digitalRead(PIN_POWER_LOSS) == LOW) powerDown(); //Check PIN_POWER_LOSS just in case we missed the falling edge - attachInterrupt(digitalPinToInterrupt(PIN_POWER_LOSS), powerDown, FALLING); + if (digitalRead(PIN_POWER_LOSS) == LOW) powerDownOLA(); //Check PIN_POWER_LOSS just in case we missed the falling edge + //attachInterrupt(PIN_POWER_LOSS, powerDownOLA, FALLING); // TO DO: figure out why this no longer works on v2.1.0 + attachInterrupt(PIN_POWER_LOSS, doNothingISR, FALLING); powerLEDOn(); // Turn the power LED on - if the hardware supports it @@ -333,6 +333,8 @@ void setup() { // Use the worst case power on delay for the Qwiic bus for now as we don't yet know what sensors are connected // (worstCaseQwiicPowerOnDelay is defined in settings.h) qwiicPowerOnDelayMillis = worstCaseQwiicPowerOnDelay; + + EEPROM.init(); beginQwiic(); // Turn the qwiic power on as early as possible @@ -361,7 +363,7 @@ void setup() { SerialPrintln(F("Stop Logging is enabled. Pull GPIO pin 32 to GND to stop logging.")); pinMode(PIN_STOP_LOGGING, INPUT_PULLUP); delay(1); // Let the pin stabilize - attachInterrupt(digitalPinToInterrupt(PIN_STOP_LOGGING), stopLoggingISR, FALLING); // Enable the interrupt + attachInterrupt(PIN_STOP_LOGGING, stopLoggingISR, FALLING); // Enable the interrupt stopLoggingSeen = false; // Make sure the flag is clear } @@ -372,12 +374,12 @@ void setup() { if (settings.fallingEdgeTrigger == true) { SerialPrintln(F("Falling-edge triggering is enabled. Sensor data will be logged on a falling edge on GPIO pin 11.")); - attachInterrupt(digitalPinToInterrupt(PIN_TRIGGER), triggerPinISR, FALLING); // Enable the interrupt + attachInterrupt(PIN_TRIGGER, triggerPinISR, FALLING); // Enable the interrupt } else { SerialPrintln(F("Rising-edge triggering is enabled. Sensor data will be logged on a rising edge on GPIO pin 11.")); - attachInterrupt(digitalPinToInterrupt(PIN_TRIGGER), triggerPinISR, RISING); // Enable the interrupt + attachInterrupt(PIN_TRIGGER, triggerPinISR, RISING); // Enable the interrupt } triggerEdgeSeen = false; // Make sure the flag is clear } @@ -1251,6 +1253,11 @@ void triggerPinISR(void) triggerEdgeSeen = true; } +//Do Nothing ISR +void doNothingISR(void) +{ +} + void SerialFlush(void) { Serial.flush(); diff --git a/Firmware/OpenLog_Artemis/lowerPower.ino b/Firmware/OpenLog_Artemis/lowerPower.ino index b911e81..d3ad54e 100644 --- a/Firmware/OpenLog_Artemis/lowerPower.ino +++ b/Firmware/OpenLog_Artemis/lowerPower.ino @@ -1,6 +1,6 @@ // Read the battery voltage // If it is low, increment lowBatteryReadings -// If lowBatteryReadings exceeds lowBatteryReadingsLimit then powerDown +// If lowBatteryReadings exceeds lowBatteryReadingsLimit then powerDownOLA void checkBattery(void) { #if(HARDWARE_VERSION_MAJOR >= 1) @@ -12,9 +12,9 @@ void checkBattery(void) lowBatteryReadings++; // Increment the low battery count if (lowBatteryReadings > lowBatteryReadingsLimit) // Have we exceeded the low battery count limit? { - // Gracefully powerDown + // Gracefully powerDownOLA - //Save files before powerDown + //Save files before powerDownOLA if (online.dataLogging == true) { sensorDataFile.sync(); @@ -35,7 +35,7 @@ void checkBattery(void) SerialFlush(); //Finish any prints - powerDown(); // power down and wait for reset + powerDownOLA(); // power down and wait for reset } } else @@ -50,22 +50,22 @@ void checkBattery(void) //This function takes 100us to run including GPIO setting //This puts the Apollo3 into 2.36uA to 2.6uA consumption mode //With leakage across the 3.3V protection diode, it's approx 3.00uA. -void powerDown() +void powerDownOLA(void) // This is an ISR and so needs void as a parameter { //Prevent voltage supervisor from waking us from sleep - detachInterrupt(digitalPinToInterrupt(PIN_POWER_LOSS)); + detachInterrupt(PIN_POWER_LOSS); //Prevent stop logging button from waking us from sleep if (settings.useGPIO32ForStopLogging == true) { - detachInterrupt(digitalPinToInterrupt(PIN_STOP_LOGGING)); // Disable the interrupt + detachInterrupt(PIN_STOP_LOGGING); // Disable the interrupt pinMode(PIN_STOP_LOGGING, INPUT); // Remove the pull-up } //Prevent trigger from waking us from sleep if (settings.useGPIO11ForTrigger == true) { - detachInterrupt(digitalPinToInterrupt(PIN_TRIGGER)); // Disable the interrupt + detachInterrupt(PIN_TRIGGER); // Disable the interrupt pinMode(PIN_TRIGGER, INPUT); // Remove the pull-up } @@ -240,12 +240,12 @@ void goToSleep(uint32_t sysTicksToSleep) //printDebug("goToSleep: online.IMU = " + (String)online.IMU + "\r\n"); //Prevent voltage supervisor from waking us from sleep - detachInterrupt(digitalPinToInterrupt(PIN_POWER_LOSS)); + detachInterrupt(PIN_POWER_LOSS); //Prevent stop logging button from waking us from sleep if (settings.useGPIO32ForStopLogging == true) { - detachInterrupt(digitalPinToInterrupt(PIN_STOP_LOGGING)); // Disable the interrupt + detachInterrupt(PIN_STOP_LOGGING); // Disable the interrupt pinMode(PIN_STOP_LOGGING, INPUT); // Remove the pull-up } @@ -253,7 +253,7 @@ void goToSleep(uint32_t sysTicksToSleep) //(This should be redundant. We should not be going to sleep if triggering is enabled?) if (settings.useGPIO11ForTrigger == true) { - detachInterrupt(digitalPinToInterrupt(PIN_TRIGGER)); // Disable the interrupt + detachInterrupt(PIN_TRIGGER); // Disable the interrupt pinMode(PIN_TRIGGER, INPUT); // Remove the pull-up } @@ -384,13 +384,14 @@ void wakeFromSleep() am_hal_stimer_config(AM_HAL_STIMER_HFRC_3MHZ); //Turn on ADC - uint32_t adcError = (uint32_t)ap3_adc_setup(); - if (settings.logA11 == true) adcError += (uint32_t)ap3_set_pin_to_analog(11); // Set _pad_ 11 to analog if enabled for logging - if (settings.logA12 == true) adcError += (uint32_t)ap3_set_pin_to_analog(12); // Set _pad_ 12 to analog if enabled for logging - if (settings.logA13 == true) adcError += (uint32_t)ap3_set_pin_to_analog(13); // Set _pad_ 13 to analog if enabled for logging - if (settings.logA32 == true) adcError += (uint32_t)ap3_set_pin_to_analog(32); // Set _pad_ 32 to analog if enabled for logging + //uint32_t adcError = (uint32_t)ap3_adc_setup(); + uint32_t adcError = powerControlADC(true); + //if (settings.logA11 == true) adcError += (uint32_t)ap3_set_pin_to_analog(11); // Set _pad_ 11 to analog if enabled for logging + //if (settings.logA12 == true) adcError += (uint32_t)ap3_set_pin_to_analog(12); // Set _pad_ 12 to analog if enabled for logging + //if (settings.logA13 == true) adcError += (uint32_t)ap3_set_pin_to_analog(13); // Set _pad_ 13 to analog if enabled for logging + //if (settings.logA32 == true) adcError += (uint32_t)ap3_set_pin_to_analog(32); // Set _pad_ 32 to analog if enabled for logging #if(HARDWARE_VERSION_MAJOR >= 1) - adcError += (uint32_t)ap3_set_pin_to_analog(PIN_VIN_MONITOR); // Set _pad_ PIN_VIN_MONITOR to analog + //adcError += (uint32_t)ap3_set_pin_to_analog(PIN_VIN_MONITOR); // Set _pad_ PIN_VIN_MONITOR to analog #endif //Run setup again @@ -400,15 +401,15 @@ void wakeFromSleep() delay(1); // Let PIN_POWER_LOSS stabilize - attachInterrupt(digitalPinToInterrupt(PIN_POWER_LOSS), powerDown, FALLING); + attachInterrupt(PIN_POWER_LOSS, powerDownOLA, FALLING); - if (digitalRead(PIN_POWER_LOSS) == LOW) powerDown(); //Check PIN_POWER_LOSS just in case we missed the falling edge + if (digitalRead(PIN_POWER_LOSS) == LOW) powerDownOLA(); //Check PIN_POWER_LOSS just in case we missed the falling edge if (settings.useGPIO32ForStopLogging == true) { pinMode(PIN_STOP_LOGGING, INPUT_PULLUP); delay(1); // Let the pin stabilize - attachInterrupt(digitalPinToInterrupt(PIN_STOP_LOGGING), stopLoggingISR, FALLING); // Enable the interrupt + attachInterrupt(PIN_STOP_LOGGING, stopLoggingISR, FALLING); // Enable the interrupt stopLoggingSeen = false; // Make sure the flag is clear } @@ -417,9 +418,9 @@ void wakeFromSleep() pinMode(PIN_TRIGGER, INPUT_PULLUP); delay(1); // Let the pin stabilize if (settings.fallingEdgeTrigger == true) - attachInterrupt(digitalPinToInterrupt(PIN_TRIGGER), triggerPinISR, FALLING); // Enable the interrupt + attachInterrupt(PIN_TRIGGER, triggerPinISR, FALLING); // Enable the interrupt else - attachInterrupt(digitalPinToInterrupt(PIN_TRIGGER), triggerPinISR, RISING); // Enable the interrupt + attachInterrupt(PIN_TRIGGER, triggerPinISR, RISING); // Enable the interrupt triggerEdgeSeen = false; // Make sure the flag is clear } @@ -481,7 +482,7 @@ void wakeFromSleep() void stopLogging(void) { - detachInterrupt(digitalPinToInterrupt(PIN_STOP_LOGGING)); // Disable the interrupt + detachInterrupt(PIN_STOP_LOGGING); // Disable the interrupt //Save files before going to sleep if (online.dataLogging == true) @@ -503,7 +504,7 @@ void stopLogging(void) SerialLog.print((String)settings.serialTerminalBaudRate); SerialPrintln(F("bps...")); delay(sdPowerDownDelay); // Give the SD card time to shut down - powerDown(); + powerDownOLA(); } void waitForQwiicBusPowerDelay() // Wait while the qwiic devices power up diff --git a/Firmware/OpenLog_Artemis/menuAnalogLogging.ino b/Firmware/OpenLog_Artemis/menuAnalogLogging.ino index 17326f3..f53556c 100644 --- a/Firmware/OpenLog_Artemis/menuAnalogLogging.ino +++ b/Firmware/OpenLog_Artemis/menuAnalogLogging.ino @@ -54,7 +54,7 @@ void menuAnalogLogging() settings.logA11 = true; // Disable triggering settings.useGPIO11ForTrigger = false; - detachInterrupt(digitalPinToInterrupt(PIN_TRIGGER)); // Disable the interrupt + detachInterrupt(PIN_TRIGGER); // Disable the interrupt pinMode(PIN_TRIGGER, INPUT); // Remove the pull-up triggerEdgeSeen = false; // Make sure the flag is clear } @@ -117,7 +117,7 @@ void menuAnalogLogging() settings.logA32 = true; // Disable stop logging settings.useGPIO32ForStopLogging = false; - detachInterrupt(digitalPinToInterrupt(PIN_STOP_LOGGING)); // Disable the interrupt + detachInterrupt(PIN_STOP_LOGGING); // Disable the interrupt pinMode(PIN_STOP_LOGGING, INPUT); // Remove the pull-up } else diff --git a/Firmware/OpenLog_Artemis/menuAttachedDevices.ino b/Firmware/OpenLog_Artemis/menuAttachedDevices.ino index d985e3e..408e65f 100644 --- a/Firmware/OpenLog_Artemis/menuAttachedDevices.ino +++ b/Firmware/OpenLog_Artemis/menuAttachedDevices.ino @@ -406,7 +406,7 @@ void menuAttachedDevices() settings.logA32 = false; if (settings.useGPIO11ForTrigger == true) // If interrupts are enabled, we need to disable and then re-enable { - detachInterrupt(digitalPinToInterrupt(PIN_TRIGGER)); // Disable the interrupt + detachInterrupt(PIN_TRIGGER); // Disable the interrupt settings.useGPIO11ForTrigger = false; } settings.useGPIO11ForFastSlowLogging = false; @@ -414,7 +414,7 @@ void menuAttachedDevices() { // Disable stop logging settings.useGPIO32ForStopLogging = false; - detachInterrupt(digitalPinToInterrupt(PIN_STOP_LOGGING)); // Disable the interrupt + detachInterrupt(PIN_STOP_LOGGING); // Disable the interrupt } } else diff --git a/Firmware/OpenLog_Artemis/menuMain.ino b/Firmware/OpenLog_Artemis/menuMain.ino index 5809998..2e0fd57 100644 --- a/Firmware/OpenLog_Artemis/menuMain.ino +++ b/Firmware/OpenLog_Artemis/menuMain.ino @@ -143,7 +143,7 @@ void menuMain() SerialLog.print((String)settings.serialTerminalBaudRate); SerialPrintln(F("bps...")); delay(sdPowerDownDelay); // Give the SD card time to shut down - powerDown(); + powerDownOLA(); } else SerialPrintln(F("Quit aborted")); diff --git a/Firmware/OpenLog_Artemis/menuPower.ino b/Firmware/OpenLog_Artemis/menuPower.ino index 3f5c8d3..ba90ece 100644 --- a/Firmware/OpenLog_Artemis/menuPower.ino +++ b/Firmware/OpenLog_Artemis/menuPower.ino @@ -45,7 +45,7 @@ void menuPower() { // Disable stop logging settings.useGPIO32ForStopLogging = false; - detachInterrupt(digitalPinToInterrupt(PIN_STOP_LOGGING)); // Disable the interrupt + detachInterrupt(PIN_STOP_LOGGING); // Disable the interrupt pinMode(PIN_STOP_LOGGING, INPUT); // Remove the pull-up stopLoggingSeen = false; // Make sure the flag is clear } @@ -55,7 +55,7 @@ void menuPower() settings.useGPIO32ForStopLogging = true; pinMode(PIN_STOP_LOGGING, INPUT_PULLUP); delay(1); // Let the pin stabilize - attachInterrupt(digitalPinToInterrupt(PIN_STOP_LOGGING), stopLoggingISR, FALLING); // Enable the interrupt + attachInterrupt(PIN_STOP_LOGGING, stopLoggingISR, FALLING); // Enable the interrupt stopLoggingSeen = false; // Make sure the flag is clear settings.logA32 = false; // Disable analog logging on pin 32 } diff --git a/Firmware/OpenLog_Artemis/menuTerminal.ino b/Firmware/OpenLog_Artemis/menuTerminal.ino index d8fe4d6..eada58a 100644 --- a/Firmware/OpenLog_Artemis/menuTerminal.ino +++ b/Firmware/OpenLog_Artemis/menuTerminal.ino @@ -264,7 +264,7 @@ void menuLogRate() { // Disable triggering settings.useGPIO11ForTrigger = false; - detachInterrupt(digitalPinToInterrupt(PIN_TRIGGER)); // Disable the interrupt + detachInterrupt(PIN_TRIGGER); // Disable the interrupt pinMode(PIN_TRIGGER, INPUT); // Remove the pull-up triggerEdgeSeen = false; // Make sure the flag is clear } @@ -275,9 +275,9 @@ void menuLogRate() pinMode(PIN_TRIGGER, INPUT_PULLUP); delay(1); // Let the pin stabilize if (settings.fallingEdgeTrigger == true) - attachInterrupt(digitalPinToInterrupt(PIN_TRIGGER), triggerPinISR, FALLING); // Enable the interrupt + attachInterrupt(PIN_TRIGGER, triggerPinISR, FALLING); // Enable the interrupt else - attachInterrupt(digitalPinToInterrupt(PIN_TRIGGER), triggerPinISR, RISING); // Enable the interrupt + attachInterrupt(PIN_TRIGGER, triggerPinISR, RISING); // Enable the interrupt triggerEdgeSeen = false; // Make sure the flag is clear settings.logA11 = false; // Disable analog logging on pin 11 settings.logMaxRate = false; // Disable max rate logging @@ -298,12 +298,12 @@ void menuLogRate() { if (settings.useGPIO11ForTrigger == true) // If interrupts are enabled, we need to disable and then re-enable { - detachInterrupt(digitalPinToInterrupt(PIN_TRIGGER)); // Disable the interrupt + detachInterrupt(PIN_TRIGGER); // Disable the interrupt settings.fallingEdgeTrigger ^= 1; // Invert the flag if (settings.fallingEdgeTrigger == true) - attachInterrupt(digitalPinToInterrupt(PIN_TRIGGER), triggerPinISR, FALLING); // Enable the interrupt + attachInterrupt(PIN_TRIGGER, triggerPinISR, FALLING); // Enable the interrupt else - attachInterrupt(digitalPinToInterrupt(PIN_TRIGGER), triggerPinISR, RISING); // Enable the interrupt + attachInterrupt(PIN_TRIGGER, triggerPinISR, RISING); // Enable the interrupt triggerEdgeSeen = false; // Make sure the flag is clear } else @@ -368,7 +368,7 @@ void menuLogRate() // Disable triggering if (settings.useGPIO11ForTrigger == true) { - detachInterrupt(digitalPinToInterrupt(PIN_TRIGGER)); // Disable the interrupt + detachInterrupt(PIN_TRIGGER); // Disable the interrupt triggerEdgeSeen = false; // Make sure the flag is clear } settings.useGPIO11ForTrigger = false; @@ -415,7 +415,7 @@ void menuLogRate() // Disable triggering if (settings.useGPIO11ForTrigger == true) { - detachInterrupt(digitalPinToInterrupt(PIN_TRIGGER)); // Disable the interrupt + detachInterrupt(PIN_TRIGGER); // Disable the interrupt pinMode(PIN_TRIGGER, INPUT); // Remove the pull-up triggerEdgeSeen = false; // Make sure the flag is clear } diff --git a/Firmware/OpenLog_Artemis/nvm.ino b/Firmware/OpenLog_Artemis/nvm.ino index baff71a..d009741 100644 --- a/Firmware/OpenLog_Artemis/nvm.ino +++ b/Firmware/OpenLog_Artemis/nvm.ino @@ -145,13 +145,13 @@ void recordSystemSettingsToFile() settingsFile.println("enablePwrLedDuringSleep=" + (String)settings.enablePwrLedDuringSleep); settingsFile.println("logVIN=" + (String)settings.logVIN); settingsFile.println("openNewLogFilesAfter=" + (String)settings.openNewLogFilesAfter); - settingsFile.println("vinCorrectionFactor=" + (String)settings.vinCorrectionFactor); + settingsFile.print("vinCorrectionFactor="); settingsFile.println(settings.vinCorrectionFactor); settingsFile.println("useGPIO32ForStopLogging=" + (String)settings.useGPIO32ForStopLogging); settingsFile.println("qwiicBusPullUps=" + (String)settings.qwiicBusPullUps); settingsFile.println("outputSerial=" + (String)settings.outputSerial); settingsFile.println("zmodemStartDelay=" + (String)settings.zmodemStartDelay); settingsFile.println("enableLowBatteryDetection=" + (String)settings.enableLowBatteryDetection); - settingsFile.println("lowBatteryThreshold=" + (String)settings.lowBatteryThreshold); + settingsFile.print("lowBatteryThreshold="); settingsFile.println(settings.lowBatteryThreshold); settingsFile.println("frequentFileAccessTimestamps=" + (String)settings.frequentFileAccessTimestamps); settingsFile.println("useGPIO11ForTrigger=" + (String)settings.useGPIO11ForTrigger); settingsFile.println("fallingEdgeTrigger=" + (String)settings.fallingEdgeTrigger); @@ -280,11 +280,12 @@ bool parseLine(char* str) { // Convert string to double. double d = strtod(str, &ptr); - if (str == ptr || *skipSpace(ptr)) return false; //SerialPrintf2("d = %lf\r\n", d); //SerialFlush(); + if (str == ptr || *skipSpace(ptr)) return false; + // Get setting name if (strcmp(settingName, "sizeOfSettings") == 0) { @@ -508,7 +509,7 @@ void recordDeviceSettingsToFile() { struct_NAU7802 *nodeSetting = (struct_NAU7802 *)temp->configPtr; settingsFile.println((String)base + "log=" + nodeSetting->log); - settingsFile.println((String)base + "calibrationFactor=" + nodeSetting->calibrationFactor); + settingsFile.print((String)base + "calibrationFactor="); settingsFile.println(nodeSetting->calibrationFactor); settingsFile.println((String)base + "zeroOffset=" + nodeSetting->zeroOffset); settingsFile.println((String)base + "decimalPlaces=" + nodeSetting->decimalPlaces); settingsFile.println((String)base + "averageAmount=" + nodeSetting->averageAmount); @@ -724,8 +725,8 @@ void recordDeviceSettingsToFile() struct_SGP40 *nodeSetting = (struct_SGP40 *)temp->configPtr; settingsFile.println((String)base + "log=" + nodeSetting->log); settingsFile.println((String)base + "logVOC=" + nodeSetting->logVOC); - settingsFile.println((String)base + "RH=" + nodeSetting->RH); - settingsFile.println((String)base + "T=" + nodeSetting->T); + settingsFile.print((String)base + "RH="); settingsFile.println(nodeSetting->RH); + settingsFile.print((String)base + "T="); settingsFile.println(nodeSetting->T); } break; case DEVICE_PRESSURE_SDP3X: @@ -747,8 +748,8 @@ void recordDeviceSettingsToFile() settingsFile.println((String)base + "logDepth=" + nodeSetting->logDepth); settingsFile.println((String)base + "logAltitude=" + nodeSetting->logAltitude); settingsFile.println((String)base + "model=" + nodeSetting->model); - settingsFile.println((String)base + "fluidDensity=" + nodeSetting->fluidDensity); - settingsFile.println((String)base + "conversion=" + nodeSetting->conversion); + settingsFile.print((String)base + "fluidDensity="); settingsFile.println(nodeSetting->fluidDensity); + settingsFile.print((String)base + "conversion="); settingsFile.println(nodeSetting->conversion); } break; case DEVICE_QWIIC_BUTTON: diff --git a/Firmware/OpenLog_Artemis/productionTest.ino b/Firmware/OpenLog_Artemis/productionTest.ino index 99f1b89..602044f 100644 --- a/Firmware/OpenLog_Artemis/productionTest.ino +++ b/Firmware/OpenLog_Artemis/productionTest.ino @@ -90,7 +90,7 @@ void productionTest() // OK. The breakout pins were held low and then released (pulled-up) within five seconds so let's go into production test mode! - //detachInterrupt(digitalPinToInterrupt(PIN_POWER_LOSS)); // Disable power loss interrupt + //detachInterrupt(PIN_POWER_LOSS); // Disable power loss interrupt digitalWrite(PIN_STAT_LED, LOW); // Turn the STAT LED off powerLEDOff(); // Turn the power LED on - if the hardware supports it @@ -324,7 +324,7 @@ void productionTest() am_hal_stimer_config(AM_HAL_STIMER_CFG_CLEAR | AM_HAL_STIMER_CFG_FREEZE); am_hal_stimer_config(AM_HAL_STIMER_HFRC_3MHZ); //Turn on ADC - ap3_adc_setup(); + powerControlADC(true); //ap3_adc_setup(); Serial.begin(115200); SerialLog.begin(115200); SPI.begin(); @@ -517,7 +517,7 @@ void productionTest() break; case 0x55: // Deep sleep { - detachInterrupt(digitalPinToInterrupt(PIN_POWER_LOSS)); // Disable power loss interrupt + detachInterrupt(PIN_POWER_LOSS); // Disable power loss interrupt Serial.end(); //Power down UART //Force the peripherals off am_hal_pwrctrl_periph_disable(AM_HAL_PWRCTRL_PERIPH_IOM0); @@ -550,14 +550,15 @@ void productionTest() imuPowerOff(); microSDPowerOff(); qwiicPowerOff(); - //Power down Flash, SRAM, cache - am_hal_pwrctrl_memory_deepsleep_powerdown(AM_HAL_PWRCTRL_MEM_CACHE); //Turn off CACHE - am_hal_pwrctrl_memory_deepsleep_powerdown(AM_HAL_PWRCTRL_MEM_FLASH_512K); //Turn off everything but lower 512k - am_hal_pwrctrl_memory_deepsleep_powerdown(AM_HAL_PWRCTRL_MEM_SRAM_64K_DTCM); //Turn off everything but lower 64k - //am_hal_pwrctrl_memory_deepsleep_powerdown(AM_HAL_PWRCTRL_MEM_ALL); //Turn off all memory (doesn't recover) - //Keep the 32kHz clock running for RTC + + //Power down cache, flash, SRAM + am_hal_pwrctrl_memory_deepsleep_powerdown(AM_HAL_PWRCTRL_MEM_ALL); // Power down all flash and cache + am_hal_pwrctrl_memory_deepsleep_retain(AM_HAL_PWRCTRL_MEM_SRAM_384K); // Retain all SRAM + + //Use the lower power 32kHz clock. Use it to run CT6 as well. am_hal_stimer_config(AM_HAL_STIMER_CFG_CLEAR | AM_HAL_STIMER_CFG_FREEZE); - am_hal_stimer_config(AM_HAL_STIMER_XTAL_32KHZ); + am_hal_stimer_config(AM_HAL_STIMER_XTAL_32KHZ | AM_HAL_STIMER_CFG_COMPARE_G_ENABLE); + while (1) // Stay in deep sleep until we get reset { am_hal_sysctrl_sleep(AM_HAL_SYSCTRL_SLEEP_DEEP); //Sleep From 73272aa62fd87cfa969de23f5f5b939b77349411 Mon Sep 17 00:00:00 2001 From: PaulZC Date: Fri, 4 Jun 2021 14:30:52 +0100 Subject: [PATCH 03/15] Add printf support --- Firmware/OpenLog_Artemis/OpenLog_Artemis.ino | 17 +- Firmware/OpenLog_Artemis/Sensors.ino | 202 +++++++++---- Firmware/OpenLog_Artemis/autoDetect.ino | 3 +- Firmware/OpenLog_Artemis/logging.ino | 13 +- Firmware/OpenLog_Artemis/lowerPower.ino | 2 - .../OpenLog_Artemis/menuAttachedDevices.ino | 28 +- Firmware/OpenLog_Artemis/menuPower.ino | 7 +- Firmware/OpenLog_Artemis/menuTerminal.ino | 30 +- Firmware/OpenLog_Artemis/menuTimeStamp.ino | 52 +++- Firmware/OpenLog_Artemis/nvm.ino | 6 + Firmware/OpenLog_Artemis/productionTest.ino | 48 ++- Firmware/OpenLog_Artemis/settings.h | 2 + Firmware/OpenLog_Artemis/support.ino | 285 +++++++++++++++++- Firmware/OpenLog_Artemis/timeStamp.ino | 76 ++++- 14 files changed, 666 insertions(+), 105 deletions(-) diff --git a/Firmware/OpenLog_Artemis/OpenLog_Artemis.ino b/Firmware/OpenLog_Artemis/OpenLog_Artemis.ino index 30093d4..cf8cce6 100644 --- a/Firmware/OpenLog_Artemis/OpenLog_Artemis.ino +++ b/Firmware/OpenLog_Artemis/OpenLog_Artemis.ino @@ -92,7 +92,12 @@ (done) Add support for exFAT. Requires v2.0.6 of Bill Greiman's SdFat library. https://github.com/sparkfun/OpenLog_Artemis/issues/34 (done) Add minimum awake time: https://github.com/sparkfun/OpenLog_Artemis/issues/83 (done) Add support for the Pulse Oximeter and Qwiic Button: https://github.com/sparkfun/OpenLog_Artemis/issues/81 - (on hold) Update to Apollo3 v2.1.0 - FIRMWARE_VERSION_MAJOR = 2. On hold until this issue is resolved (OLA uses printf float in _so_ many places...): https://github.com/sparkfun/Arduino_Apollo3/issues/278 + (in progress) Update to Apollo3 v2.1.0 - FIRMWARE_VERSION_MAJOR = 2. + (TO DO) Implement printf (OLA uses printf float in _so_ many places...): https://github.com/sparkfun/Arduino_Apollo3/issues/278 + (TO DO) Figure out why attachInterrupt(PIN_POWER_LOSS, powerDownOLA, FALLING); causes badness + (TO DO) Add a qwiic.setPullups function + (TO DO) Check if we need ap3_set_pin_to_analog when coming out of sleep + (TO DO) Figure out why SerialLog RX does not work */ const int FIRMWARE_VERSION_MAJOR = 2; @@ -207,8 +212,7 @@ Apollo3RTC myRTC; //Create instance of RTC class //Create UART instance for OpenLog style serial logging //-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=- -//UART SerialLog(12, 13, 10, 17); // Declares a Uart object called Serial1 with RX on pin 13 and TX on pin 12. Unused pins 10 and 17 are named for RTS and CTS to keep Apollo3 happy -UART SerialLog(12, 13); // Declares a Uart object called Serial1 with RX on pin 13 and TX on pin 12 +UART SerialLog(BREAKOUT_PIN_TX, BREAKOUT_PIN_RX); // Declares a Uart object called Serial1 with TX on pin 12 and RX on pin 13 unsigned long lastSeriaLogSyncTime = 0; const int MAX_IDLE_TIME_MSEC = 500; bool newSerialData = false; @@ -287,9 +291,7 @@ void SerialPrintln(const char *); void SerialPrintln(const __FlashStringHelper *); void DoSerialPrint(char (*)(const char *), const char *, bool newLine = false); -//unsigned long startTime = 0; - -#define DUMP( varname ) {Serial.printf("%s: %llu\r\n", #varname, varname); if (settings.useTxRxPinsForTerminal == true) SerialLog.printf("%s: %llu\r\n", #varname, varname);} +#define DUMP( varname ) {Serial.printf("%s: %d\r\n", #varname, varname); if (settings.useTxRxPinsForTerminal == true) SerialLog.printf("%s: %d\r\n", #varname, varname);} #define SerialPrintf1( var ) {Serial.printf( var ); if (settings.useTxRxPinsForTerminal == true) SerialLog.printf( var );} #define SerialPrintf2( var1, var2 ) {Serial.printf( var1, var2 ); if (settings.useTxRxPinsForTerminal == true) SerialLog.printf( var1, var2 );} #define SerialPrintf3( var1, var2, var3 ) {Serial.printf( var1, var2, var3 ); if (settings.useTxRxPinsForTerminal == true) SerialLog.printf( var1, var2, var3 );} @@ -320,6 +322,7 @@ void setup() { digitalWrite(PIN_STAT_LED, HIGH); // Turn the STAT LED on while we configure everything Serial.begin(115200); //Default for initial debug messages if necessary + pinMode(BREAKOUT_PIN_RX, INPUT); SerialLog.begin(115200); //Default for initial debug messages if necessary SerialPrintln(F("")); @@ -448,8 +451,6 @@ void setup() { else measurementStartTime = millis(); - //SerialPrintf2("Setup time: %.02f ms\r\n", (micros() - startTime) / 1000.0); - digitalWrite(PIN_STAT_LED, LOW); // Turn the STAT LED off now that everything is configured //If we are immediately going to go to sleep after the first reading then diff --git a/Firmware/OpenLog_Artemis/Sensors.ino b/Firmware/OpenLog_Artemis/Sensors.ino index f315d57..9b9e869 100644 --- a/Firmware/OpenLog_Artemis/Sensors.ino +++ b/Firmware/OpenLog_Artemis/Sensors.ino @@ -5,6 +5,9 @@ void getData() measurementTotal++; char tempData[50]; + char tempData1[16]; + char tempData2[16]; + char tempData3[16]; outputData[0] = '\0'; //Clear string contents if (settings.logRTC) @@ -22,7 +25,7 @@ void getData() if (settings.logAnalogVoltages == true) { float voltage = analog11 * 2 / 16384.0; - sprintf(tempData, "%.2f,", voltage); + olaftoa(voltage, tempData, 2, sizeof(tempData) / sizeof(char)); } else sprintf(tempData, "%d,", analog11); @@ -37,7 +40,7 @@ void getData() if (settings.logAnalogVoltages == true) { float voltage = analog12 * 2 / 16384.0; - sprintf(tempData, "%.2f,", voltage); + olaftoa(voltage, tempData, 2, sizeof(tempData) / sizeof(char)); } else sprintf(tempData, "%d,", analog12); @@ -52,7 +55,7 @@ void getData() if (settings.logAnalogVoltages == true) { float voltage = analog13 * 2 / 16384.0; - sprintf(tempData, "%.2f,", voltage); + olaftoa(voltage, tempData, 2, sizeof(tempData) / sizeof(char)); } else sprintf(tempData, "%d,", analog13); @@ -67,7 +70,7 @@ void getData() if (settings.logAnalogVoltages == true) { float voltage = analog32 * 2 / 16384.0; - sprintf(tempData, "%.2f,", voltage); + olaftoa(voltage, tempData, 2, sizeof(tempData) / sizeof(char)); } else sprintf(tempData, "%d,", analog32); @@ -78,7 +81,7 @@ void getData() if (settings.logVIN) { float voltage = readVIN(); - sprintf(tempData, "%.2f,", voltage); + olaftoa(voltage, tempData, 2, sizeof(tempData) / sizeof(char)); strcat(outputData, tempData); } @@ -96,22 +99,32 @@ void getData() if (settings.logIMUAccel) { - sprintf(tempData, "%.2f,%.2f,%.2f,", myICM.accX(), myICM.accY(), myICM.accZ()); + olaftoa(myICM.accX(), tempData1, 2, sizeof(tempData1) / sizeof(char)); + olaftoa(myICM.accY(), tempData2, 2, sizeof(tempData2) / sizeof(char)); + olaftoa(myICM.accZ(), tempData3, 2, sizeof(tempData3) / sizeof(char)); + sprintf(tempData, "%s,%s,%s,", tempData1, tempData2, tempData3); strcat(outputData, tempData); } if (settings.logIMUGyro) { - sprintf(tempData, "%.2f,%.2f,%.2f,", myICM.gyrX(), myICM.gyrY(), myICM.gyrZ()); + olaftoa(myICM.gyrX(), tempData1, 2, sizeof(tempData1) / sizeof(char)); + olaftoa(myICM.gyrY(), tempData2, 2, sizeof(tempData2) / sizeof(char)); + olaftoa(myICM.gyrZ(), tempData3, 2, sizeof(tempData3) / sizeof(char)); + sprintf(tempData, "%s,%s,%s,", tempData1, tempData2, tempData3); strcat(outputData, tempData); } if (settings.logIMUMag) { - sprintf(tempData, "%.2f,%.2f,%.2f,", myICM.magX(), myICM.magY(), myICM.magZ()); + olaftoa(myICM.magX(), tempData1, 2, sizeof(tempData1) / sizeof(char)); + olaftoa(myICM.magY(), tempData2, 2, sizeof(tempData2) / sizeof(char)); + olaftoa(myICM.magZ(), tempData3, 2, sizeof(tempData3) / sizeof(char)); + sprintf(tempData, "%s,%s,%s,", tempData1, tempData2, tempData3); strcat(outputData, tempData); } if (settings.logIMUTemp) { - sprintf(tempData, "%.2f,", myICM.temp()); + olaftoa(myICM.temp(), tempData1, 2, sizeof(tempData1) / sizeof(char)); + sprintf(tempData, "%s,", tempData1); strcat(outputData, tempData); } } @@ -129,14 +142,18 @@ void getData() } if (settings.imuLogDMPQuat6) { - sprintf(tempData, "%.3f,%.3f,%.3f,", ((double)dmpData.Quat6.Data.Q1) / 1073741824.0, - ((double)dmpData.Quat6.Data.Q2) / 1073741824.0, ((double)dmpData.Quat6.Data.Q3) / 1073741824.0); + olaftoa(((double)dmpData.Quat6.Data.Q1) / 1073741824.0, tempData1, 3, sizeof(tempData1) / sizeof(char)); + olaftoa(((double)dmpData.Quat6.Data.Q2) / 1073741824.0, tempData2, 3, sizeof(tempData2) / sizeof(char)); + olaftoa(((double)dmpData.Quat6.Data.Q3) / 1073741824.0, tempData3, 3, sizeof(tempData3) / sizeof(char)); + sprintf(tempData, "%s,%s,%s,", tempData1, tempData2, tempData3); strcat(outputData, tempData); } if (settings.imuLogDMPQuat9) { - sprintf(tempData, "%.3f,%.3f,%.3f,%d,", ((double)dmpData.Quat9.Data.Q1) / 1073741824.0, - ((double)dmpData.Quat9.Data.Q2) / 1073741824.0, ((double)dmpData.Quat9.Data.Q3) / 1073741824.0, dmpData.Quat9.Data.Accuracy); + olaftoa(((double)dmpData.Quat9.Data.Q1) / 1073741824.0, tempData1, 3, sizeof(tempData1) / sizeof(char)); + olaftoa(((double)dmpData.Quat9.Data.Q2) / 1073741824.0, tempData2, 3, sizeof(tempData2) / sizeof(char)); + olaftoa(((double)dmpData.Quat9.Data.Q3) / 1073741824.0, tempData3, 3, sizeof(tempData3) / sizeof(char)); + sprintf(tempData, "%s,%s,%s,%d,", tempData1, tempData2, tempData3, dmpData.Quat9.Data.Accuracy); strcat(outputData, tempData); } if (settings.imuLogDMPAccel) @@ -180,7 +197,7 @@ void getData() } float actualRate = measurementCount * 1000.0 / (currentMillis - measurementStartTime); - sprintf(tempData, "%.02f,", actualRate); //Hz + olaftoa(actualRate, tempData, 2, sizeof(tempData) / sizeof(char)); strcat(outputData, tempData); } @@ -226,7 +243,7 @@ void gatherDeviceValues() if (nodeSetting->log == true) { float currentWeight = nodeDevice->getWeight(false, nodeSetting->averageAmount); //Do not allow negative weights, take average of X readings - sprintf(tempData, "%.*f,", nodeSetting->decimalPlaces, currentWeight); + olaftoa(currentWeight, tempData, nodeSetting->decimalPlaces, sizeof(tempData) / sizeof(char)); strcat(outputData, tempData); } } @@ -267,10 +284,27 @@ void gatherDeviceValues() { if (nodeSetting->logDate) { + char gnssDayStr[3]; + char gnssMonthStr[3]; + char gnssYearStr[5]; + int gnssDay = nodeDevice->getDay(); + int gnssMonth = nodeDevice->getMonth(); + int gnssYear = nodeDevice->getYear(); + if (gnssDay < 10) + sprintf(gnssDayStr, "0%d", gnssDay); + else + sprintf(gnssDayStr, "%d", gnssDay); + if (gnssMonth < 10) + sprintf(gnssMonthStr, "0%d", gnssMonth); + else + sprintf(gnssMonthStr, "%d", gnssMonth); + sprintf(gnssYearStr, "%d", gnssYear); if (settings.americanDateStyle == true) - sprintf(tempData, "%02d/%02d/%d,", nodeDevice->getMonth(), nodeDevice->getDay(), nodeDevice->getYear()); + { + sprintf(tempData, "%s/%s/%s,", gnssMonthStr, gnssDayStr, gnssYearStr); + } else - sprintf(tempData, "%02d/%02d/%d,", nodeDevice->getDay(), nodeDevice->getMonth(), nodeDevice->getYear()); + sprintf(tempData, "%s/%s/%s,", gnssDayStr, gnssMonthStr, gnssYearStr); strcat(outputData, tempData); } if (nodeSetting->logTime) @@ -278,7 +312,35 @@ void gatherDeviceValues() int adjustedHour = nodeDevice->getHour(); if (settings.hour24Style == false) if (adjustedHour > 12) adjustedHour -= 12; - sprintf(tempData, "%02d:%02d:%02d.%03d,", adjustedHour, nodeDevice->getMinute(), nodeDevice->getSecond(), nodeDevice->getMillisecond()); + + char gnssHourStr[3]; + char gnssMinStr[3]; + char gnssSecStr[3]; + char gnssMillisStr[4]; + int gnssMin = nodeDevice->getMinute(); + int gnssSec = nodeDevice->getSecond(); + int gnssMillis = nodeDevice->getMillisecond(); + + if (adjustedHour < 10) + sprintf(gnssHourStr, "0%d", adjustedHour); + else + sprintf(gnssHourStr, "%d", adjustedHour); + if (gnssMin < 10) + sprintf(gnssMinStr, "0%d", gnssMin); + else + sprintf(gnssMinStr, "%d", gnssMin); + if (gnssSec < 10) + sprintf(gnssSecStr, "0%,", gnssSec); + else + sprintf(gnssSecStr, "%d", gnssSec); + if (gnssMillis < 10) + sprintf(gnssMillisStr, "00%d", gnssMillis); + else if (gnssMillis < 100) + sprintf(gnssMillisStr, "0%d", gnssMillis); + else + sprintf(gnssMillisStr, "%d", gnssMillis); + + sprintf(tempData, "%s:%s:%s.%s,", gnssHourStr, gnssMinStr, gnssSecStr, gnssMillisStr); strcat(outputData, tempData); } if (nodeSetting->logPosition) @@ -366,7 +428,7 @@ void gatherDeviceValues() { if (nodeSetting->logTemperature) { - sprintf(tempData, "%.04f,", nodeDevice->readTempC()); //Resolution to 0.0078°C, accuracy of 0.1°C + olaftoa(nodeDevice->readTempC(), tempData, 4, sizeof(tempData) / sizeof(char)); //Resolution to 0.0078°C, accuracy of 0.1°C strcat(outputData, tempData); } } @@ -381,12 +443,12 @@ void gatherDeviceValues() { if (nodeSetting->logPressure) { - sprintf(tempData, "%.02f,", nodeDevice->getPressure()); + olaftoa(nodeDevice->getPressure(), tempData, 2, sizeof(tempData) / sizeof(char)); strcat(outputData, tempData); } if (nodeSetting->logTemperature) { - sprintf(tempData, "%.02f,", nodeDevice->getTemperature()); + olaftoa(nodeDevice->getTemperature(), tempData, 2, sizeof(tempData) / sizeof(char)); strcat(outputData, tempData); } } @@ -400,12 +462,12 @@ void gatherDeviceValues() { if (nodeSetting->logPressure) { - sprintf(tempData, "%.02f,", nodeDevice->getPressure_hPa()); + olaftoa(nodeDevice->getPressure_hPa(), tempData, 2, sizeof(tempData) / sizeof(char)); strcat(outputData, tempData); } if (nodeSetting->logTemperature) { - sprintf(tempData, "%.02f,", nodeDevice->getTemperature_degC()); + olaftoa(nodeDevice->getTemperature_degC(), tempData, 2, sizeof(tempData) / sizeof(char)); strcat(outputData, tempData); } } @@ -419,22 +481,22 @@ void gatherDeviceValues() { if (nodeSetting->logPressure) { - sprintf(tempData, "%.02f,", nodeDevice->readFloatPressure()); + olaftoa(nodeDevice->readFloatPressure(), tempData, 2, sizeof(tempData) / sizeof(char)); strcat(outputData, tempData); } if (nodeSetting->logHumidity) { - sprintf(tempData, "%.02f,", nodeDevice->readFloatHumidity()); + olaftoa(nodeDevice->readFloatHumidity(), tempData, 2, sizeof(tempData) / sizeof(char)); strcat(outputData, tempData); } if (nodeSetting->logAltitude) { - sprintf(tempData, "%.02f,", nodeDevice->readFloatAltitudeMeters()); + olaftoa(nodeDevice->readFloatAltitudeMeters(), tempData, 2, sizeof(tempData) / sizeof(char)); strcat(outputData, tempData); } if (nodeSetting->logTemperature) { - sprintf(tempData, "%.02f,", nodeDevice->readTempC()); + olaftoa(nodeDevice->readTempC(), tempData, 2, sizeof(tempData) / sizeof(char)); strcat(outputData, tempData); } } @@ -448,17 +510,17 @@ void gatherDeviceValues() { if (nodeSetting->logUVA) { - sprintf(tempData, "%.02f,", nodeDevice->uva()); + olaftoa(nodeDevice->uva(), tempData, 2, sizeof(tempData) / sizeof(char)); strcat(outputData, tempData); } if (nodeSetting->logUVB) { - sprintf(tempData, "%.02f,", nodeDevice->uvb()); + olaftoa(nodeDevice->uvb(), tempData, 2, sizeof(tempData) / sizeof(char)); strcat(outputData, tempData); } if (nodeSetting->logUVIndex) { - sprintf(tempData, "%.02f,", nodeDevice->index()); + olaftoa(nodeDevice->index(), tempData, 2, sizeof(tempData) / sizeof(char)); strcat(outputData, tempData); } } @@ -530,12 +592,12 @@ void gatherDeviceValues() } if (nodeSetting->logHumidity) { - sprintf(tempData, "%.02f,", nodeDevice->getHumidity()); + olaftoa(nodeDevice->getHumidity(), tempData, 2, sizeof(tempData) / sizeof(char)); strcat(outputData, tempData); } if (nodeSetting->logTemperature) { - sprintf(tempData, "%.02f,", nodeDevice->getTemperature()); + olaftoa(nodeDevice->getTemperature(), tempData, 2, sizeof(tempData) / sizeof(char)); strcat(outputData, tempData); } } @@ -549,17 +611,17 @@ void gatherDeviceValues() { if (nodeSetting->logHumidity) { - sprintf(tempData, "%.02f,", nodeDevice->getHumidity()); + olaftoa(nodeDevice->getHumidity(), tempData, 2, sizeof(tempData) / sizeof(char)); strcat(outputData, tempData); } if (nodeSetting->logPressure) { - sprintf(tempData, "%.02f,", nodeDevice->getPressure()); + olaftoa(nodeDevice->getPressure(), tempData, 2, sizeof(tempData) / sizeof(char)); strcat(outputData, tempData); } if (nodeSetting->logTemperature) { - sprintf(tempData, "%.02f,", nodeDevice->getTemperature()); + olaftoa(nodeDevice->getTemperature(), tempData, 2, sizeof(tempData) / sizeof(char)); strcat(outputData, tempData); } } @@ -573,12 +635,12 @@ void gatherDeviceValues() { if (nodeSetting->logTemperature) { - sprintf(tempData, "%.02f,", nodeDevice->getThermocoupleTemp()); + olaftoa(nodeDevice->getThermocoupleTemp(), tempData, 2, sizeof(tempData) / sizeof(char)); strcat(outputData, tempData); } if (nodeSetting->logAmbientTemperature) { - sprintf(tempData, "%.02f,", nodeDevice->getAmbientTemp()); + olaftoa(nodeDevice->getAmbientTemp(), tempData, 2, sizeof(tempData) / sizeof(char)); strcat(outputData, tempData); } } @@ -592,12 +654,12 @@ void gatherDeviceValues() { if (nodeSetting->logHumidity) { - sprintf(tempData, "%.02f,", nodeDevice->getHumidity()); + olaftoa(nodeDevice->getHumidity(), tempData, 2, sizeof(tempData) / sizeof(char)); strcat(outputData, tempData); } if (nodeSetting->logTemperature) { - sprintf(tempData, "%.02f,", nodeDevice->getTemperature()); + olaftoa(nodeDevice->getTemperature(), tempData, 2, sizeof(tempData) / sizeof(char)); strcat(outputData, tempData); } } @@ -612,12 +674,12 @@ void gatherDeviceValues() nodeDevice->update(); if (nodeSetting->logHumidity) { - sprintf(tempData, "%.02f,", nodeDevice->toPercent()); + olaftoa(nodeDevice->toPercent(), tempData, 2, sizeof(tempData) / sizeof(char)); strcat(outputData, tempData); } if (nodeSetting->logTemperature) { - sprintf(tempData, "%.02f,", nodeDevice->toDegC()); + olaftoa(nodeDevice->toDegC(), tempData, 2, sizeof(tempData) / sizeof(char)); strcat(outputData, tempData); } } @@ -670,17 +732,17 @@ void gatherDeviceValues() if (nodeSetting->logCentigrade) { - sprintf(tempData, "%.03f,", nodeDevice->readPT100Centigrade()); + olaftoa(nodeDevice->readPT100Centigrade(), tempData, 3, sizeof(tempData) / sizeof(char)); strcat(outputData, tempData); } if (nodeSetting->logFahrenheit) { - sprintf(tempData, "%.03f,", nodeDevice->readPT100Fahrenheit()); + olaftoa(nodeDevice->readPT100Fahrenheit(), tempData, 3, sizeof(tempData) / sizeof(char)); strcat(outputData, tempData); } if (nodeSetting->logInternalTemperature) { - sprintf(tempData, "%.03f,", nodeDevice->readInternalTemperature()); + olaftoa(nodeDevice->readInternalTemperature(), tempData, 3, sizeof(tempData) / sizeof(char)); strcat(outputData, tempData); } if (nodeSetting->logRawVoltage) @@ -699,37 +761,37 @@ void gatherDeviceValues() { if (nodeSetting->usePSI) { - sprintf(tempData, "%.04f,", nodeDevice->readPressure()); + olaftoa(nodeDevice->readPressure(), tempData, 4, sizeof(tempData) / sizeof(char)); strcat(outputData, tempData); } if (nodeSetting->usePA) { - sprintf(tempData, "%.01f,", nodeDevice->readPressure(PA)); + olaftoa(nodeDevice->readPressure(PA), tempData, 1, sizeof(tempData) / sizeof(char)); strcat(outputData, tempData); } if (nodeSetting->useKPA) { - sprintf(tempData, "%.04f,", nodeDevice->readPressure(KPA)); + olaftoa(nodeDevice->readPressure(KPA), tempData, 4, sizeof(tempData) / sizeof(char)); strcat(outputData, tempData); } if (nodeSetting->useTORR) { - sprintf(tempData, "%.03f,", nodeDevice->readPressure(TORR)); + olaftoa(nodeDevice->readPressure(TORR), tempData, 3, sizeof(tempData) / sizeof(char)); strcat(outputData, tempData); } if (nodeSetting->useINHG) { - sprintf(tempData, "%.04f,", nodeDevice->readPressure(INHG)); + olaftoa(nodeDevice->readPressure(INHG), tempData, 4, sizeof(tempData) / sizeof(char)); strcat(outputData, tempData); } if (nodeSetting->useATM) { - sprintf(tempData, "%.06f,", nodeDevice->readPressure(ATM)); + olaftoa(nodeDevice->readPressure(ATM), tempData, 6, sizeof(tempData) / sizeof(char)); strcat(outputData, tempData); } if (nodeSetting->useBAR) { - sprintf(tempData, "%.06f,", nodeDevice->readPressure(BAR)); + olaftoa(nodeDevice->readPressure(BAR), tempData, 6, sizeof(tempData) / sizeof(char)); strcat(outputData, tempData); } } @@ -743,17 +805,17 @@ void gatherDeviceValues() { if (nodeSetting->logPM1) { - sprintf(tempData, "%.02f,", nodeDevice->getPM1_0()); + olaftoa(nodeDevice->getPM1_0(), tempData, 2, sizeof(tempData) / sizeof(char)); strcat(outputData, tempData); } if (nodeSetting->logPM25) { - sprintf(tempData, "%.02f,", nodeDevice->getPM2_5()); + olaftoa(nodeDevice->getPM2_5(), tempData, 2, sizeof(tempData) / sizeof(char)); strcat(outputData, tempData); } if (nodeSetting->logPM10) { - sprintf(tempData, "%.02f,", nodeDevice->getPM10()); + olaftoa(nodeDevice->getPM10(), tempData, 2, sizeof(tempData) / sizeof(char)); strcat(outputData, tempData); } if (nodeSetting->logPC05) @@ -838,12 +900,12 @@ void gatherDeviceValues() } if (nodeSetting->logPressure) { - sprintf(tempData, "%.02f,", pressure); + olaftoa(pressure, tempData, 2, sizeof(tempData) / sizeof(char)); strcat(outputData, tempData); } if (nodeSetting->logTemperature) { - sprintf(tempData, "%.02f,", temperature); + olaftoa(temperature, tempData, 2, sizeof(tempData) / sizeof(char)); strcat(outputData, tempData); } } @@ -861,22 +923,22 @@ void gatherDeviceValues() } if (nodeSetting->logPressure) { - sprintf(tempData, "%.02f,", nodeDevice->pressure(nodeSetting->conversion)); + olaftoa(nodeDevice->pressure(nodeSetting->conversion), tempData, 2, sizeof(tempData) / sizeof(char)); strcat(outputData, tempData); } if (nodeSetting->logTemperature) { - sprintf(tempData, "%.02f,", nodeDevice->temperature()); + olaftoa(nodeDevice->temperature(), tempData, 2, sizeof(tempData) / sizeof(char)); strcat(outputData, tempData); } if (nodeSetting->logDepth) { - sprintf(tempData, "%.03f,", nodeDevice->depth()); + olaftoa(nodeDevice->depth(), tempData, 3, sizeof(tempData) / sizeof(char)); strcat(outputData, tempData); } if (nodeSetting->logAltitude) { - sprintf(tempData, "%.02f,", nodeDevice->altitude()); + olaftoa(nodeDevice->altitude(), tempData, 2, sizeof(tempData) / sizeof(char)); strcat(outputData, tempData); } } @@ -895,7 +957,7 @@ void gatherDeviceValues() } if (nodeSetting->logPressed) { - sprintf(tempData, "%.03f,", ((float)pressedPopped) / 1000.0); // Record only the most recent press - that's the best we can do + olaftoa(((float)pressedPopped) / 1000.0, tempData, 3, sizeof(tempData) / sizeof(char)); strcat(outputData, tempData); } @@ -907,7 +969,7 @@ void gatherDeviceValues() } if (nodeSetting->logClicked) { - sprintf(tempData, "%.03f,", ((float)clickedPopped) / 1000.0); // Record only the most recent click - that's the best we can do + olaftoa(((float)clickedPopped) / 1000.0, tempData, 3, sizeof(tempData) / sizeof(char)); strcat(outputData, tempData); } @@ -930,7 +992,7 @@ void gatherDeviceValues() if (nodeSetting->log == true) { bioData body; - if ((nodeSetting->logHeartrate) || (nodeSetting->logConfidence) || (nodeSetting->logOxygen) || (nodeSetting->logStatus)) + if ((nodeSetting->logHeartrate) || (nodeSetting->logConfidence) || (nodeSetting->logOxygen) || (nodeSetting->logStatus) || (nodeSetting->logExtendedStatus) || (nodeSetting->logRValue)) { body = nodeDevice->readBpm(); } @@ -954,6 +1016,16 @@ void gatherDeviceValues() sprintf(tempData, "%d,", body.status); strcat(outputData, tempData); } + if (nodeSetting->logExtendedStatus) + { + sprintf(tempData, "%d,", body.extStatus); + strcat(outputData, tempData); + } + if (nodeSetting->logRValue) + { + olaftoa(body.rValue, tempData, 1, sizeof(tempData) / sizeof(char)); + strcat(outputData, tempData); + } } } break; @@ -1400,6 +1472,10 @@ void printHelperText(bool terminalOnly) strcat(helperText, "O2%,"); if (nodeSetting->logStatus) strcat(helperText, "stat,"); + if (nodeSetting->logExtendedStatus) + strcat(helperText, "eStat,"); + if (nodeSetting->logRValue) + strcat(helperText, "O2R,"); } } break; diff --git a/Firmware/OpenLog_Artemis/autoDetect.ino b/Firmware/OpenLog_Artemis/autoDetect.ino index 4cd93c7..5232ff5 100644 --- a/Firmware/OpenLog_Artemis/autoDetect.ino +++ b/Firmware/OpenLog_Artemis/autoDetect.ino @@ -828,12 +828,13 @@ void configureDevice(node * temp) else sensor->LEDoff(); } + break; case DEVICE_BIO_SENSOR_HUB: { SparkFun_Bio_Sensor_Hub *sensor = (SparkFun_Bio_Sensor_Hub *)temp->classPtr; struct_BIO_SENSOR_HUB *sensorSetting = (struct_BIO_SENSOR_HUB *)temp->configPtr; - sensor->configBpm(MODE_ONE); // Configuring just the BPM settings. + sensor->configBpm(MODE_TWO); // MODE_TWO provides the oxygen R value } break; default: diff --git a/Firmware/OpenLog_Artemis/logging.ino b/Firmware/OpenLog_Artemis/logging.ino index 1135815..e7c1f06 100644 --- a/Firmware/OpenLog_Artemis/logging.ino +++ b/Firmware/OpenLog_Artemis/logging.ino @@ -26,7 +26,18 @@ char* findNextAvailableLog(int &newFileNumber, const char *fileLeader) static char newFileName[40]; while (1) { - sprintf(newFileName, "%s%05u.TXT", fileLeader, newFileNumber); //Splice the new file number into this file name. Max no. is 99999. + char newFileNumberStr[6]; + if (newFileNumber < 10) + sprintf(newFileNumberStr, "0000%d", newFileNumber); + else if (newFileNumber < 100) + sprintf(newFileNumberStr, "000%d", newFileNumber); + else if (newFileNumber < 1000) + sprintf(newFileNumberStr, "00%d", newFileNumber); + else if (newFileNumber < 10000) + sprintf(newFileNumberStr, "0%d", newFileNumber); + else + sprintf(newFileNumberStr, "%d", newFileNumber); + sprintf(newFileName, "%s%s.TXT", fileLeader, newFileNumberStr); //Splice the new file number into this file name. Max no. is 99999. if (sd.exists(newFileName) == false) break; //File name not found so we will use it. diff --git a/Firmware/OpenLog_Artemis/lowerPower.ino b/Firmware/OpenLog_Artemis/lowerPower.ino index d3ad54e..c877e6f 100644 --- a/Firmware/OpenLog_Artemis/lowerPower.ino +++ b/Firmware/OpenLog_Artemis/lowerPower.ino @@ -474,8 +474,6 @@ void wakeFromSleep() configureQwiicDevices(); //Apply config settings to each device in the node list } - //SerialPrintf2("Wake up time: %.02f ms\r\n", (micros() - startTime) / 1000.0); - //When we wake up micros has been reset to zero so we need to let the main loop know to take a reading takeReading = true; } diff --git a/Firmware/OpenLog_Artemis/menuAttachedDevices.ino b/Firmware/OpenLog_Artemis/menuAttachedDevices.ino index 408e65f..cd6b136 100644 --- a/Firmware/OpenLog_Artemis/menuAttachedDevices.ino +++ b/Firmware/OpenLog_Artemis/menuAttachedDevices.ino @@ -416,6 +416,15 @@ void menuAttachedDevices() settings.useGPIO32ForStopLogging = false; detachInterrupt(PIN_STOP_LOGGING); // Disable the interrupt } + + recordSystemSettings(); //Record the new settings to EEPROM and config file now in case the user resets before exiting the menus + + if (detectQwiicDevices() == true) //Detect the oximeter + { + beginQwiicDevices(); //Begin() each device in the node list + configureQwiicDevices(); //Apply config settings to each device in the node list + recordDeviceSettingsToFile(); //Record the current devices settings to device config file now in case the user resets before exiting the menus + } } else SerialPrintln(F("\"Detect Bio Sensor Pulse Oximeter\" aborted")); @@ -835,9 +844,12 @@ void menuConfigure_NAU7802(void *configPtr) if (sensorConfig->log == true) { SerialPrintln(F("2) Calibrate Scale")); - SerialPrintf2("\tScale calibration factor: %f\r\n", sensorConfig->calibrationFactor); + char tempStr[16]; + olaftoa(sensorConfig->calibrationFactor, tempStr, 6, sizeof(tempStr) / sizeof(char)); + SerialPrintf2("\tScale calibration factor: %s\r\n", tempStr); SerialPrintf2("\tScale zero offset: %d\r\n", sensorConfig->zeroOffset); - SerialPrintf2("\tWeight currently on scale: %f\r\n", sensor->getWeight()); + olaftoa(sensor->getWeight(), tempStr, sensorConfig->decimalPlaces, sizeof(tempStr) / sizeof(char)); + SerialPrintf2("\tWeight currently on scale: %s\r\n", tempStr); SerialPrintf2("3) Number of decimal places: %d\r\n", sensorConfig->decimalPlaces); SerialPrintf2("4) Average number of readings to take per weight read: %d\r\n", sensorConfig->averageAmount); @@ -2542,6 +2554,14 @@ void menuConfigure_BIO_SENSOR_HUB(void *configPtr) SerialPrint(F("5) Log Status: ")); if (sensorSetting->logStatus == true) SerialPrintln(F("Enabled")); else SerialPrintln(F("Disabled")); + + SerialPrint(F("6) Log Extended Status: ")); + if (sensorSetting->logExtendedStatus == true) SerialPrintln(F("Enabled")); + else SerialPrintln(F("Disabled")); + + SerialPrint(F("7) Log Oxygen R Value: ")); + if (sensorSetting->logRValue == true) SerialPrintln(F("Enabled")); + else SerialPrintln(F("Disabled")); } SerialPrintln(F("x) Exit")); @@ -2559,6 +2579,10 @@ void menuConfigure_BIO_SENSOR_HUB(void *configPtr) sensorSetting->logOxygen ^= 1; else if (incoming == 5) sensorSetting->logStatus ^= 1; + else if (incoming == 6) + sensorSetting->logExtendedStatus ^= 1; + else if (incoming == 7) + sensorSetting->logRValue ^= 1; else if (incoming == STATUS_PRESSED_X) break; else if (incoming == STATUS_GETNUMBER_TIMEOUT) diff --git a/Firmware/OpenLog_Artemis/menuPower.ino b/Firmware/OpenLog_Artemis/menuPower.ino index ba90ece..47a3799 100644 --- a/Firmware/OpenLog_Artemis/menuPower.ino +++ b/Firmware/OpenLog_Artemis/menuPower.ino @@ -23,10 +23,13 @@ void menuPower() else SerialPrintln(F("Disabled")); SerialPrint(F("5) Low Battery Threshold (V): ")); - SerialPrintf2("%.2f\r\n", settings.lowBatteryThreshold); + char tempStr[16]; + olaftoa(settings.lowBatteryThreshold, tempStr, 2, sizeof(tempStr) / sizeof(char)); + SerialPrintf2("%s\r\n", tempStr); SerialPrint(F("6) VIN measurement correction factor: ")); - SerialPrintf2("%.3f\r\n", settings.vinCorrectionFactor); + olaftoa(settings.vinCorrectionFactor, tempStr, 3, sizeof(tempStr) / sizeof(char)); + SerialPrintf2("%s\r\n", tempStr); #endif SerialPrintln(F("x) Exit")); diff --git a/Firmware/OpenLog_Artemis/menuTerminal.ino b/Firmware/OpenLog_Artemis/menuTerminal.ino index eada58a..7fa414b 100644 --- a/Firmware/OpenLog_Artemis/menuTerminal.ino +++ b/Firmware/OpenLog_Artemis/menuTerminal.ino @@ -35,7 +35,9 @@ void menuLogRate() { //Display fractional Hertz uint32_t logRateSeconds = (uint32_t)(settings.usBetweenReadings / 1000000ULL); - SerialPrintf2("%.06lf\r\n", 1.0 / logRateSeconds); + char tempStr[16]; + olaftoa(1.0 / logRateSeconds, tempStr, 6, sizeof(tempStr) / sizeof(char)); + SerialPrintf2("%s\r\n", tempStr); } } @@ -51,7 +53,9 @@ void menuLogRate() else { float rate = (float)(settings.usBetweenReadings / 1000000.0); - SerialPrintf2("%.06f\r\n", rate); + char tempStr[16]; + olaftoa(rate, tempStr, 6, sizeof(tempStr) / sizeof(char)); + SerialPrintf2("%s\r\n", tempStr); } } @@ -124,12 +128,30 @@ void menuLogRate() SerialPrint(F("19) Slow logging starts at: ")); int slowHour = settings.slowLoggingStartMOD / 60; int slowMin = settings.slowLoggingStartMOD % 60; - SerialPrintf3("%02d:%02d\r\n", slowHour, slowMin); + char hourStr[3]; + char minStr[3]; + if (slowHour < 10) + sprintf(hourStr, "0%d", slowHour); + else + sprintf(hourStr, "%d", slowHour); + if (slowMin < 10) + sprintf(minStr, "0%d", slowMin); + else + sprintf(minStr, "%d", slowMin); + SerialPrintf3("%s:%s\r\n", hourStr, minStr); SerialPrint(F("20) Slow logging ends at: ")); slowHour = settings.slowLoggingStopMOD / 60; slowMin = settings.slowLoggingStopMOD % 60; - SerialPrintf3("%02d:%02d\r\n", slowHour, slowMin); + if (slowHour < 10) + sprintf(hourStr, "0%d", slowHour); + else + sprintf(hourStr, "%d", slowHour); + if (slowMin < 10) + sprintf(minStr, "0%d", slowMin); + else + sprintf(minStr, "%d", slowMin); + SerialPrintf3("%s:%s\r\n", hourStr, minStr); } if ((settings.useGPIO11ForTrigger == false) && (settings.usBetweenReadings >= maxUsBeforeSleep)) diff --git a/Firmware/OpenLog_Artemis/menuTimeStamp.ino b/Firmware/OpenLog_Artemis/menuTimeStamp.ino index 6082b69..dfb2ad6 100644 --- a/Firmware/OpenLog_Artemis/menuTimeStamp.ino +++ b/Firmware/OpenLog_Artemis/menuTimeStamp.ino @@ -7,22 +7,58 @@ void menuTimeStamp() SerialPrint(F("Current date/time: ")); myRTC.getTime(); - char rtcDate[11]; //10/12/2019 + char rtcDate[11]; // 10/12/2019 + char rtcDay[3]; + char rtcMonth[3]; + char rtcYear[5]; + if (myRTC.dayOfMonth < 10) + sprintf(rtcDay, "0%d", myRTC.dayOfMonth); + else + sprintf(rtcDay, "%d", myRTC.dayOfMonth); + if (myRTC.month < 10) + sprintf(rtcMonth, "0%d", myRTC.month); + else + sprintf(rtcMonth, "%d", myRTC.month); + if (myRTC.year < 10) + sprintf(rtcYear, "200%d", myRTC.year); + else + sprintf(rtcYear, "20%d", myRTC.year); if (settings.americanDateStyle == true) - sprintf(rtcDate, "%02d/%02d/20%02d", myRTC.month, myRTC.dayOfMonth, myRTC.year); + sprintf(rtcDate, "%s/%s/%s,", rtcMonth, rtcDay, rtcYear); else - sprintf(rtcDate, "%02d/%02d/20%02d", myRTC.dayOfMonth, myRTC.month, myRTC.year); + sprintf(rtcDate, "%s/%s/%s,", rtcDay, rtcMonth, rtcYear); SerialPrint(rtcDate); SerialPrint(F(" ")); - char rtcTime[12]; //09:14:37.41 + char rtcTime[13]; //09:14:37.41, int adjustedHour = myRTC.hour; if (settings.hour24Style == false) { if (adjustedHour > 12) adjustedHour -= 12; } - sprintf(rtcTime, "%02d:%02d:%02d.%02d", adjustedHour, myRTC.minute, myRTC.seconds, myRTC.hundredths); + char rtcHour[3]; + char rtcMin[3]; + char rtcSec[3]; + char rtcHundredths[3]; + if (adjustedHour < 10) + sprintf(rtcHour, "0%d", adjustedHour); + else + sprintf(rtcHour, "%d", adjustedHour); + if (myRTC.minute < 10) + sprintf(rtcMin, "0%d", myRTC.minute); + else + sprintf(rtcMin, "%d", myRTC.minute); + if (myRTC.seconds < 10) + sprintf(rtcSec, "0%d", myRTC.seconds); + else + sprintf(rtcSec, "%d", myRTC.seconds); + if (myRTC.hundredths < 10) + sprintf(rtcHundredths, "0%d", myRTC.hundredths); + else + sprintf(rtcHundredths, "%d", myRTC.hundredths); + sprintf(rtcTime, "%s:%s:%s.%s,", rtcHour, rtcMin, rtcSec, rtcHundredths); + SerialPrintln(rtcTime); SerialPrint(F("1) Log Date: ")); @@ -101,7 +137,7 @@ void menuTimeStamp() int dd = myRTC.dayOfMonth, mm = myRTC.month, yy = myRTC.year, h = myRTC.hour, m = myRTC.minute, s = myRTC.seconds, ms = (myRTC.hundredths * 10); bool dateValid, timeValid; getGPSDateTime(yy, mm, dd, h, m, s, ms, dateValid, timeValid); // Get the GPS date and time, corrected for localUTCOffset - myRTC.setTime(h, m, s, (ms / 10), dd, mm, (yy - 2000)); //Manually set RTC + myRTC.setTime((ms / 10), s, m, h, dd, mm, (yy - 2000)); //Manually set RTC lastSDFileNameChangeTime = rtcMillis(); // Record the time of the file name change SerialPrintln(F("RTC set to GPS (UTC) time")); if ((dateValid == false) || (timeValid == false)) @@ -138,7 +174,7 @@ void menuTimeStamp() SerialPrint(F("Enter current day (1 to 31): ")); dd = getNumber(menuTimeout); //Timeout after x seconds - myRTC.setTime(h, m, s, 0, dd, mm, yy); //Manually set RTC + myRTC.setTime(0, s, m, h, dd, mm, yy); //Manually set RTC lastSDFileNameChangeTime = rtcMillis(); // Record the time of the file name change } else if (incoming == 5) @@ -164,7 +200,7 @@ void menuTimeStamp() SerialPrint(F("Enter current second (0 to 59): ")); s = getNumber(menuTimeout); //Timeout after x seconds - myRTC.setTime(h, m, s, 0, dd, mm, yy); //Manually set RTC + myRTC.setTime(0, s, m, h, dd, mm, yy); //Manually set RTC lastSDFileNameChangeTime = rtcMillis(); // Record the time of the file name change } else if (incoming == 7) diff --git a/Firmware/OpenLog_Artemis/nvm.ino b/Firmware/OpenLog_Artemis/nvm.ino index d009741..b696897 100644 --- a/Firmware/OpenLog_Artemis/nvm.ino +++ b/Firmware/OpenLog_Artemis/nvm.ino @@ -770,6 +770,8 @@ void recordDeviceSettingsToFile() settingsFile.println((String)base + "logConfidence=" + nodeSetting->logConfidence); settingsFile.println((String)base + "logOxygen=" + nodeSetting->logOxygen); settingsFile.println((String)base + "logStatus=" + nodeSetting->logStatus); + settingsFile.println((String)base + "logExtendedStatus=" + nodeSetting->logExtendedStatus); + settingsFile.println((String)base + "logRValue=" + nodeSetting->logRValue); } break; default: @@ -1389,6 +1391,10 @@ bool parseDeviceLine(char* str) { nodeSetting->logOxygen = d; else if (strcmp(deviceSettingName, "logStatus") == 0) nodeSetting->logStatus = d; + else if (strcmp(deviceSettingName, "logExtendedStatus") == 0) + nodeSetting->logExtendedStatus = d; + else if (strcmp(deviceSettingName, "logRValue") == 0) + nodeSetting->logRValue = d; else SerialPrintf2("Unknown device setting: %s\r\n", deviceSettingName); } diff --git a/Firmware/OpenLog_Artemis/productionTest.ino b/Firmware/OpenLog_Artemis/productionTest.ino index 602044f..6d6be13 100644 --- a/Firmware/OpenLog_Artemis/productionTest.ino +++ b/Firmware/OpenLog_Artemis/productionTest.ino @@ -109,6 +109,10 @@ void productionTest() unsigned long lastHelloSent = 0; // Use this to record the last time a Hello was sent bool echoUSB = false; // Flag to indicate if we should be echoing on USB (command 0x16/0x17) + char tempData1[16]; + char tempData2[16]; + char tempData3[16]; + while (1) // Do this loop forever! { while (!SerialLog.available()) // Wait until we receive a command byte @@ -139,7 +143,8 @@ void productionTest() { float vin = readVIN(); // Read VIN #ifdef verboseProdTest - Serial.printf("VIN is %fV\r\n", vin); + olaftoa(vin, tempData1, 2, sizeof(tempData1) / sizeof(char)); + Serial.printf("VIN is %sV\r\n", tempData1); #endif if ((vin >= 4.75) && (vin <= 5.25)) // Success { @@ -162,7 +167,8 @@ void productionTest() { myICM.getAGMT(); //Update values #ifdef verboseProdTest - Serial.printf("IMU Temp is: %.2fC\r\n", myICM.temp()); + olaftoa(myICM.temp(), tempData1, 2, sizeof(tempData1) / sizeof(char)); + Serial.printf("IMU Temp is: %sC\r\n", tempData1); #endif if ((myICM.temp() >= 10.0) && (myICM.temp() <= 40.0)) { @@ -202,7 +208,10 @@ void productionTest() { myICM.getAGMT(); //Update values #ifdef verboseProdTest - Serial.printf("IMU Accel readings are: %.2f %.2f %.2f mg\r\n", myICM.accX(), myICM.accY(), myICM.accZ()); + olaftoa(myICM.accX(), tempData1, 2, sizeof(tempData1) / sizeof(char)); + olaftoa(myICM.accY(), tempData2, 2, sizeof(tempData2) / sizeof(char)); + olaftoa(myICM.accZ(), tempData3, 2, sizeof(tempData3) / sizeof(char)); + Serial.printf("IMU Accel readings are: %s %s %s mg\r\n", tempData1, tempData2, tempData3); #endif if (((myICM.accX() > -100) && (myICM.accX() < 100)) && // Check the readings are in range ((myICM.accY() > -100) && (myICM.accY() < 100)) && @@ -244,11 +253,15 @@ void productionTest() { myICM.getAGMT(); //Update values #ifdef verboseProdTest - Serial.printf("IMU Mag readings are: %.2f %.2f %.2f nT\r\n", myICM.magX(), myICM.magY(), myICM.magZ()); + olaftoa(myICM.magX(), tempData1, 2, sizeof(tempData1) / sizeof(char)); + olaftoa(myICM.magY(), tempData2, 2, sizeof(tempData2) / sizeof(char)); + olaftoa(myICM.magZ(), tempData3, 2, sizeof(tempData3) / sizeof(char)); + Serial.printf("IMU Mag readings are: %s %s %s nT\r\n", tempData1, tempData2, tempData3); #endif float magVectorProduct = sqrt((myICM.magX() * myICM.magX()) + (myICM.magY() * myICM.magY())); // Calculate the vector product of magX and magY #ifdef verboseProdTest - Serial.printf("IMU Mag XY vector product is: %.2f nT\r\n", magVectorProduct); + olaftoa(magVectorProduct, tempData1, 2, sizeof(tempData1) / sizeof(char)); + Serial.printf("IMU Mag XY vector product is: %s nT\r\n", tempData1); #endif if (((myICM.magZ() >= 20.0) && (myICM.magZ() <= 30.0)) && // Check the readings are in range ((magVectorProduct >= 20.0) && (magVectorProduct <= 30.0))) @@ -429,9 +442,30 @@ void productionTest() case 0x18: myRTC.getTime(); // Read the RTC SerialLog.write(0x18); - SerialLog.printf("%02d:%02d:%02d.%02d", myRTC.hour, myRTC.minute, myRTC.seconds, myRTC.hundredths); + char rtcHour[3]; + char rtcMin[3]; + char rtcSec[3]; + char rtcHundredths[3]; + if (myRTC.hour < 10) + sprintf(rtcHour, "0%d", myRTC.hour); + else + sprintf(rtcHour, "%d", myRTC.hour); + if (myRTC.minute < 10) + sprintf(rtcMin, "0%d", myRTC.minute); + else + sprintf(rtcMin, "%d", myRTC.minute); + if (myRTC.seconds < 10) + sprintf(rtcSec, "0%d", myRTC.seconds); + else + sprintf(rtcSec, "%d", myRTC.seconds); + if (myRTC.hundredths < 10) + sprintf(rtcHundredths, "0%d", myRTC.hundredths); + else + sprintf(rtcHundredths, "%d", myRTC.hundredths); + + SerialLog.printf("%s:%s:%s.%s", rtcHour, rtcMin, rtcSec, rtcHundredths); #ifdef verboseProdTest - Serial.printf("RTC time is %02d:%02d:%02d.%02d\r\n", myRTC.hour, myRTC.minute, myRTC.seconds, myRTC.hundredths); + Serial.printf("RTC time is %s:%s:%s.%s\r\n", rtcHour, rtcMin, rtcSec, rtcHundredths); #endif break; case 0x19: // SD Card Test diff --git a/Firmware/OpenLog_Artemis/settings.h b/Firmware/OpenLog_Artemis/settings.h index 8c8bb57..9efef54 100644 --- a/Firmware/OpenLog_Artemis/settings.h +++ b/Firmware/OpenLog_Artemis/settings.h @@ -331,6 +331,8 @@ struct struct_BIO_SENSOR_HUB { bool logConfidence = true; bool logOxygen = true; bool logStatus = true; + bool logExtendedStatus = true; + bool logRValue = true; unsigned long powerOnDelayMillis = minimumQwiicPowerOnDelay; // Wait for at least this many millis before communicating with this device. Increase if required! }; diff --git a/Firmware/OpenLog_Artemis/support.ino b/Firmware/OpenLog_Artemis/support.ino index 70f7332..d8972f1 100644 --- a/Firmware/OpenLog_Artemis/support.ino +++ b/Firmware/OpenLog_Artemis/support.ino @@ -8,7 +8,6 @@ void printDebug(String thingToPrint) } } - //Option not known void printUnknown(uint8_t unknownChoice) { @@ -352,3 +351,287 @@ double getDouble(int numberOfSeconds) } return (largeNumber); } + +//***************************************************************************** +// +// Divide an unsigned 32-bit value by 10. +// +// Note: Adapted from Ch10 of Hackers Delight (hackersdelight.org). +// +//***************************************************************************** +static uint64_t divu64_10(uint64_t ui64Val) +{ + uint64_t q64, r64; + uint32_t q32, r32, ui32Val; + + // + // If a 32-bit value, use the more optimal 32-bit routine. + // + if ( ui64Val >> 32 ) + { + q64 = (ui64Val>>1) + (ui64Val>>2); + q64 += (q64 >> 4); + q64 += (q64 >> 8); + q64 += (q64 >> 16); + q64 += (q64 >> 32); + q64 >>= 3; + r64 = ui64Val - q64*10; + return q64 + ((r64 + 6) >> 4); + } + else + { + ui32Val = (uint32_t)(ui64Val & 0xffffffff); + q32 = (ui32Val>>1) + (ui32Val>>2); + q32 += (q32 >> 4); + q32 += (q32 >> 8); + q32 += (q32 >> 16); + q32 >>= 3; + r32 = ui32Val - q32*10; + return (uint64_t)(q32 + ((r32 + 6) >> 4)); + } +} + +//***************************************************************************** +// +// Converts ui64Val to a string. +// Note: pcBuf[] must be sized for a minimum of 21 characters. +// +// Returns the number of decimal digits in the string. +// +// NOTE: If pcBuf is NULL, will compute a return ui64Val only (no chars +// written). +// +//***************************************************************************** +static int uint64_to_str(uint64_t ui64Val, char *pcBuf) +{ + char tbuf[25]; + int ix = 0, iNumDig = 0; + unsigned uMod; + uint64_t u64Tmp; + + do + { + // + // Divide by 10 + // + u64Tmp = divu64_10(ui64Val); + + // + // Get modulus + // + uMod = ui64Val - (u64Tmp * 10); + + tbuf[ix++] = uMod + '0'; + ui64Val = u64Tmp; + } while ( ui64Val ); + + // + // Save the total number of digits + // + iNumDig = ix; + + // + // Now, reverse the buffer when saving to the caller's buffer. + // + if ( pcBuf ) + { + while ( ix-- ) + { + *pcBuf++ = tbuf[ix]; + } + + // + // Terminate the caller's buffer + // + *pcBuf = 0x00; + } + + return iNumDig; +} + +//***************************************************************************** +// +// Float to ASCII text. A basic implementation for providing support for +// single-precision %f. +// +// param +// fValue = Float value to be converted. +// pcBuf = Buffer to place string AND input of buffer size. +// iPrecision = Desired number of decimal places. +// bufSize = The size (in bytes) of the buffer. +// The recommended size is at least 16 bytes. +// +// This function performs a basic translation of a floating point single +// precision value to a string. +// +// return Number of chars printed to the buffer. +// +//***************************************************************************** +#define OLA_FTOA_ERR_VAL_TOO_SMALL -1 +#define OLA_FTOA_ERR_VAL_TOO_LARGE -2 +#define OLA_FTOA_ERR_BUFSIZE -3 + +typedef union +{ + int32_t I32; + float F; +} ola_i32fl_t; + +static int olaftoa(float fValue, char *pcBuf, int iPrecision, int bufSize) +{ + ola_i32fl_t unFloatValue; + int iExp2, iBufSize; + int32_t i32Significand, i32IntPart, i32FracPart; + char *pcBufInitial, *pcBuftmp; + + iBufSize = bufSize; // *(uint32_t*)pcBuf; + if (iBufSize < 4) + { + return OLA_FTOA_ERR_BUFSIZE; + } + + if (fValue == 0.0f) + { + // "0.0" + *(uint32_t*)pcBuf = 0x00 << 24 | ('0' << 16) | ('.' << 8) | ('0' << 0); + return 3; + } + + pcBufInitial = pcBuf; + + unFloatValue.F = fValue; + + iExp2 = ((unFloatValue.I32 >> 23) & 0x000000FF) - 127; + i32Significand = (unFloatValue.I32 & 0x00FFFFFF) | 0x00800000; + i32FracPart = 0; + i32IntPart = 0; + + if (iExp2 >= 31) + { + return OLA_FTOA_ERR_VAL_TOO_LARGE; + } + else if (iExp2 < -23) + { + return OLA_FTOA_ERR_VAL_TOO_SMALL; + } + else if (iExp2 >= 23) + { + i32IntPart = i32Significand << (iExp2 - 23); + } + else if (iExp2 >= 0) + { + i32IntPart = i32Significand >> (23 - iExp2); + i32FracPart = (i32Significand << (iExp2 + 1)) & 0x00FFFFFF; + } + else // if (iExp2 < 0) + { + i32FracPart = (i32Significand & 0x00FFFFFF) >> -(iExp2 + 1); + } + + if (unFloatValue.I32 < 0) + { + *pcBuf++ = '-'; + } + + if (i32IntPart == 0) + { + *pcBuf++ = '0'; + } + else + { + if (i32IntPart > 0) + { + uint64_to_str(i32IntPart, pcBuf); + } + else + { + *pcBuf++ = '-'; + uint64_to_str(-i32IntPart, pcBuf); + } + while (*pcBuf) // Get to end of new string + { + pcBuf++; + } + } + + // + // Now, begin the fractional part + // + *pcBuf++ = '.'; + + if (i32FracPart == 0) + { + *pcBuf++ = '0'; + } + else + { + int jx, iMax; + + iMax = iBufSize - (pcBuf - pcBufInitial) - 1; + iMax = (iMax > iPrecision) ? iPrecision : iMax; + + for (jx = 0; jx < iMax; jx++) + { + i32FracPart *= 10; + *pcBuf++ = (i32FracPart >> 24) + '0'; + i32FracPart &= 0x00FFFFFF; + } + + // + // Per the printf spec, the number of digits printed to the right of the + // decimal point (i.e. iPrecision) should be rounded. + // Some examples: + // Value iPrecision Formatted value + // 1.36399 Unspecified (6) 1.363990 + // 1.36399 3 1.364 + // 1.36399 4 1.3640 + // 1.36399 5 1.36399 + // 1.363994 Unspecified (6) 1.363994 + // 1.363994 3 1.364 + // 1.363994 4 1.3640 + // 1.363994 5 1.36399 + // 1.363995 Unspecified (6) 1.363995 + // 1.363995 3 1.364 + // 1.363995 4 1.3640 + // 1.363995 5 1.36400 + // 1.996 Unspecified (6) 1.996000 + // 1.996 2 2.00 + // 1.996 3 1.996 + // 1.996 4 1.9960 + // + // To determine whether to round up, we'll look at what the next + // decimal value would have been. + // + if ( ((i32FracPart * 10) >> 24) >= 5 ) + { + // + // Yes, we need to round up. + // Go back through the string and make adjustments as necessary. + // + pcBuftmp = pcBuf - 1; + while ( pcBuftmp >= pcBufInitial ) + { + if ( *pcBuftmp == '.' ) + { + } + else if ( *pcBuftmp == '9' ) + { + *pcBuftmp = '0'; + } + else + { + *pcBuftmp += 1; + break; + } + pcBuftmp--; + } + } + } + + // + // Terminate the string and we're done + // + *pcBuf = 0x00; + + return (pcBuf - pcBufInitial); +} // ftoa() diff --git a/Firmware/OpenLog_Artemis/timeStamp.ino b/Firmware/OpenLog_Artemis/timeStamp.ino index e0288f2..ada44eb 100644 --- a/Firmware/OpenLog_Artemis/timeStamp.ino +++ b/Firmware/OpenLog_Artemis/timeStamp.ino @@ -10,11 +10,26 @@ void getTimeString(char timeStringBuffer[]) if (settings.logDate) { - char rtcDate[12]; //10/12/2019, + char rtcDate[12]; // 10/12/2019, + char rtcDay[3]; + char rtcMonth[3]; + char rtcYear[5]; + if (myRTC.dayOfMonth < 10) + sprintf(rtcDay, "0%d", myRTC.dayOfMonth); + else + sprintf(rtcDay, "%d", myRTC.dayOfMonth); + if (myRTC.month < 10) + sprintf(rtcMonth, "0%d", myRTC.month); + else + sprintf(rtcMonth, "%d", myRTC.month); + if (myRTC.year < 10) + sprintf(rtcYear, "200%d", myRTC.year); + else + sprintf(rtcYear, "20%d", myRTC.year); if (settings.americanDateStyle == true) - sprintf(rtcDate, "%02d/%02d/20%02d,", myRTC.month, myRTC.dayOfMonth, myRTC.year); + sprintf(rtcDate, "%s/%s/%s,", rtcMonth, rtcDay, rtcYear); else - sprintf(rtcDate, "%02d/%02d/20%02d,", myRTC.dayOfMonth, myRTC.month, myRTC.year); + sprintf(rtcDate, "%s/%s/%s,", rtcDay, rtcMonth, rtcYear); strcat(timeStringBuffer, rtcDate); } @@ -26,14 +41,63 @@ void getTimeString(char timeStringBuffer[]) { if (adjustedHour > 12) adjustedHour -= 12; } - sprintf(rtcTime, "%02d:%02d:%02d.%02d,", adjustedHour, myRTC.minute, myRTC.seconds, myRTC.hundredths); + char rtcHour[3]; + char rtcMin[3]; + char rtcSec[3]; + char rtcHundredths[3]; + if (adjustedHour < 10) + sprintf(rtcHour, "0%d", adjustedHour); + else + sprintf(rtcHour, "%d", adjustedHour); + if (myRTC.minute < 10) + sprintf(rtcMin, "0%d", myRTC.minute); + else + sprintf(rtcMin, "%d", myRTC.minute); + if (myRTC.seconds < 10) + sprintf(rtcSec, "0%d", myRTC.seconds); + else + sprintf(rtcSec, "%d", myRTC.seconds); + if (myRTC.hundredths < 10) + sprintf(rtcHundredths, "0%d", myRTC.hundredths); + else + sprintf(rtcHundredths, "%d", myRTC.hundredths); + sprintf(rtcTime, "%s:%s:%s.%s,", rtcHour, rtcMin, rtcSec, rtcHundredths); strcat(timeStringBuffer, rtcTime); } if (settings.logMicroseconds) { - char microseconds[11]; // - sprintf(microseconds, "%lu,", micros()); + // Convert uint64_t to string + // Based on printLLNumber by robtillaart + // https://forum.arduino.cc/index.php?topic=143584.msg1519824#msg1519824 + char microsecondsRev[20]; // Char array to hold to microseconds (reversed order) + char microseconds[20]; // Char array to hold to microseconds (correct order) + uint64_t microsNow = micros(); + unsigned int i = 0; + + if (microsNow == 0ULL) // if usBetweenReadings is zero, set tempTime to "0" + { + microseconds[0] = '0'; + microseconds[1] = ','; + microseconds[2] = 0; + } + + else + { + while (microsNow > 0) + { + microsecondsRev[i++] = (microsNow % 10) + '0'; // divide by 10, convert the remainder to char + microsNow /= 10; // divide by 10 + } + unsigned int j = 0; + while (i > 0) + { + microseconds[j++] = microsecondsRev[--i]; // reverse the order + microseconds[j] = ','; + microseconds[j+1] = 0; // mark the end with a NULL + } + } + strcat(timeStringBuffer, microseconds); } } From 943d2f00054da7188cdcec4ff8f056be0c54c6a1 Mon Sep 17 00:00:00 2001 From: PaulZC Date: Fri, 18 Jun 2021 09:56:35 +0100 Subject: [PATCH 04/15] Update IMU_DMP_Quat9.ino for V2.1 of the Apollo3 core --- .../IMU_DMP_Quat9/IMU_DMP_Quat9.ino | 24 +++++++++++++++++-- 1 file changed, 22 insertions(+), 2 deletions(-) diff --git a/Firmware/Test Sketches/IMU_DMP_Quat9/IMU_DMP_Quat9.ino b/Firmware/Test Sketches/IMU_DMP_Quat9/IMU_DMP_Quat9.ino index 757d2d0..0c25663 100644 --- a/Firmware/Test Sketches/IMU_DMP_Quat9/IMU_DMP_Quat9.ino +++ b/Firmware/Test Sketches/IMU_DMP_Quat9/IMU_DMP_Quat9.ino @@ -53,6 +53,15 @@ void setup() { digitalWrite(PIN_IMU_CHIP_SELECT, HIGH); //Be sure IMU is deselected pinMode(PIN_IMU_INT, INPUT_PULLUP); + //There is a quirk in v2.1 of the Apollo3 mbed core which means that the first SPI transaction will + //disable the pull-up on CIPO. We need to do a fake transaction and then re-enable the pull-up + //to work around this... +#if defined(ARDUINO_ARCH_MBED) + SPI.beginTransaction(SPISettings(1000000, MSBFIRST, SPI_MODE0)); // Do a fake transaction + SPI.endTransaction(); + enableCIPOpullUp(); // Re-enable the CIPO pull-up +#endif + //Reset ICM by power cycling it imuPowerOff(); @@ -86,7 +95,7 @@ void setup() { // Initialize the ICM-20948 // If the DMP is enabled, .begin performs a minimal startup. We need to configure the sample mode etc. manually. - myICM.begin( CS_PIN, SPI_PORT ); + myICM.begin( CS_PIN, SPI_PORT, 4000000); //Set IMU SPI rate to 4MHz #ifndef QUAT_ANIMATION SERIAL_PORT.print( F("Initialization of the sensor returned: ") ); @@ -279,16 +288,27 @@ void imuPowerOff() digitalWrite(PIN_IMU_POWER, LOW); } +#if defined(ARDUINO_ARCH_MBED) // updated for v2.1.0 of the Apollo3 core +bool enableCIPOpullUp() +{ + //Add 1K5 pull-up on CIPO + am_hal_gpio_pincfg_t cipoPinCfg = g_AM_BSP_GPIO_IOM0_MISO; + cipoPinCfg.ePullup = AM_HAL_GPIO_PIN_PULLUP_1_5K; + pin_config(D6, cipoPinCfg); + return (true); +} +#else bool enableCIPOpullUp() { //Add CIPO pull-up ap3_err_t retval = AP3_OK; am_hal_gpio_pincfg_t cipoPinCfg = AP3_GPIO_DEFAULT_PINCFG; cipoPinCfg.uFuncSel = AM_HAL_PIN_6_M0MISO; + cipoPinCfg.ePullup = AM_HAL_GPIO_PIN_PULLUP_1_5K; cipoPinCfg.eDriveStrength = AM_HAL_GPIO_PIN_DRIVESTRENGTH_12MA; cipoPinCfg.eGPOutcfg = AM_HAL_GPIO_PIN_OUTCFG_PUSHPULL; cipoPinCfg.uIOMnum = AP3_SPI_IOM; - cipoPinCfg.ePullup = AM_HAL_GPIO_PIN_PULLUP_1_5K; padMode(MISO, cipoPinCfg, &retval); return (retval == AP3_OK); } +#endif From 433f0b96f34c1698b9f7c6fb9df22f1ff158e20d Mon Sep 17 00:00:00 2001 From: PaulZC Date: Fri, 18 Jun 2021 14:43:19 +0100 Subject: [PATCH 05/15] Debugging sleep functionality --- Firmware/OpenLog_Artemis/OpenLog_Artemis.ino | 84 ++++-- Firmware/OpenLog_Artemis/Sensors.ino | 19 +- Firmware/OpenLog_Artemis/autoDetect.ino | 14 +- Firmware/OpenLog_Artemis/lowerPower.ino | 268 ++++++++++-------- .../OpenLog_Artemis/menuAttachedDevices.ino | 10 +- 5 files changed, 225 insertions(+), 170 deletions(-) diff --git a/Firmware/OpenLog_Artemis/OpenLog_Artemis.ino b/Firmware/OpenLog_Artemis/OpenLog_Artemis.ino index cf8cce6..0019db2 100644 --- a/Firmware/OpenLog_Artemis/OpenLog_Artemis.ino +++ b/Firmware/OpenLog_Artemis/OpenLog_Artemis.ino @@ -93,11 +93,12 @@ (done) Add minimum awake time: https://github.com/sparkfun/OpenLog_Artemis/issues/83 (done) Add support for the Pulse Oximeter and Qwiic Button: https://github.com/sparkfun/OpenLog_Artemis/issues/81 (in progress) Update to Apollo3 v2.1.0 - FIRMWARE_VERSION_MAJOR = 2. - (TO DO) Implement printf (OLA uses printf float in _so_ many places...): https://github.com/sparkfun/Arduino_Apollo3/issues/278 - (TO DO) Figure out why attachInterrupt(PIN_POWER_LOSS, powerDownOLA, FALLING); causes badness - (TO DO) Add a qwiic.setPullups function + (done) Implement printf float (OLA uses printf float in _so_ many places...): https://github.com/sparkfun/Arduino_Apollo3/issues/278 + (worked around) Figure out why attachInterrupt(PIN_POWER_LOSS, powerDownOLA, FALLING); causes badness + (done) Add a setQwiicPullups function (TO DO) Check if we need ap3_set_pin_to_analog when coming out of sleep - (TO DO) Figure out why SerialLog RX does not work + (TO DO) Figure out why SerialLog RX does not work: https://github.com/sparkfun/Arduino_Apollo3/issues/401 + (TO DO) Investigate why code does not wake from deep sleep correctly */ const int FIRMWARE_VERSION_MAJOR = 2; @@ -280,6 +281,7 @@ int lowBatteryReadings = 0; // Count how many times the battery voltage has read const int lowBatteryReadingsLimit = 10; // Don't declare the battery voltage low until we have had this many consecutive low readings (to reject sampling noise) volatile static bool triggerEdgeSeen = false; //Flag to indicate if a trigger interrupt has been seen char serialTimestamp[40]; //Buffer to store serial timestamp, if needed +volatile static bool powerLossSeen = false; //Flag to indicate if a power loss event has been seen //-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=- uint8_t getByteChoice(int numberOfSeconds, bool updateDZSERIAL = false); // Header @@ -314,7 +316,8 @@ void setup() { if (digitalRead(PIN_POWER_LOSS) == LOW) powerDownOLA(); //Check PIN_POWER_LOSS just in case we missed the falling edge //attachInterrupt(PIN_POWER_LOSS, powerDownOLA, FALLING); // TO DO: figure out why this no longer works on v2.1.0 - attachInterrupt(PIN_POWER_LOSS, doNothingISR, FALLING); + attachInterrupt(PIN_POWER_LOSS, powerLossISR, FALLING); + powerLossSeen = false; // Make sure the flag is clear powerLEDOn(); // Turn the power LED on - if the hardware supports it @@ -343,7 +346,7 @@ void setup() { beginSD(); //285 - 293ms - enableCIPOpullUp(); // Enable CIPO pull-up after beginSD + enableCIPOpullUp(); // Enable CIPO pull-up _after_ beginSD loadSettings(); //50 - 250ms @@ -811,7 +814,43 @@ void beginQwiic() pinMode(PIN_QWIIC_POWER, OUTPUT); qwiicPowerOn(); qwiic.begin(); - //qwiic.setPullups(settings.qwiicBusPullUps); //Just to make it really clear what pull-ups are being used, set pullups here. + setQwiicPullups(settings.qwiicBusPullUps); //Just to make it really clear what pull-ups are being used, set pullups here. +} + +void setQwiicPullups(uint32_t qwiicBusPullUps) +{ + //Change SCL and SDA pull-ups manually using pin_config + am_hal_gpio_pincfg_t sclPinCfg = g_AM_BSP_GPIO_IOM1_SCL; + am_hal_gpio_pincfg_t sdaPinCfg = g_AM_BSP_GPIO_IOM1_SDA; + + if (qwiicBusPullUps == 0) + { + sclPinCfg.ePullup = AM_HAL_GPIO_PIN_PULLUP_NONE; // No pull-ups + sdaPinCfg.ePullup = AM_HAL_GPIO_PIN_PULLUP_NONE; + } + else if (qwiicBusPullUps == 1) + { + sclPinCfg.ePullup = AM_HAL_GPIO_PIN_PULLUP_1_5K; // Use 1K5 pull-ups + sdaPinCfg.ePullup = AM_HAL_GPIO_PIN_PULLUP_1_5K; + } + else if (qwiicBusPullUps == 6) + { + sclPinCfg.ePullup = AM_HAL_GPIO_PIN_PULLUP_6K; // Use 6K pull-ups + sdaPinCfg.ePullup = AM_HAL_GPIO_PIN_PULLUP_6K; + } + else if (qwiicBusPullUps == 12) + { + sclPinCfg.ePullup = AM_HAL_GPIO_PIN_PULLUP_12K; // Use 12K pull-ups + sdaPinCfg.ePullup = AM_HAL_GPIO_PIN_PULLUP_12K; + } + else + { + sclPinCfg.ePullup = AM_HAL_GPIO_PIN_PULLUP_24K; // Use 24K pull-ups + sdaPinCfg.ePullup = AM_HAL_GPIO_PIN_PULLUP_24K; + } + + pin_config(D8, sclPinCfg); + pin_config(D9, sdaPinCfg); } void beginSD() @@ -825,7 +864,7 @@ void beginSD() // For reasons I don't understand, we seem to have to wait for at least 1ms after SPI.begin before we call microSDPowerOn. // If you comment the next line, the Artemis resets at microSDPowerOn when beginSD is called from wakeFromSleep... // But only on one of my V10 red boards. The second one I have doesn't seem to need the delay!? - delay(1); + delay(5); microSDPowerOn(); @@ -833,6 +872,8 @@ void beginSD() //Max current is 200mA average across 1s, peak 300mA for (int i = 0; i < 10; i++) //Wait { +printDebug(F("Still alive!\r\n")); SerialFlush(); + checkBattery(); delay(1); } @@ -872,20 +913,12 @@ void beginSD() } } -void enableCIPOpullUp() +void enableCIPOpullUp() // updated for v2.1.0 of the Apollo3 core { - //Add CIPO pull-up - uint32_t retval = AM_HAL_STATUS_SUCCESS; - am_hal_gpio_pincfg_t cipoPinCfg = {0,0,0,0,0,0,0,0,0,0,0,0}; // = AP3_GPIO_DEFAULT_PINCFG; - cipoPinCfg.uFuncSel = AM_HAL_PIN_6_M0MISO; + //Add 1K5 pull-up on CIPO + am_hal_gpio_pincfg_t cipoPinCfg = g_AM_BSP_GPIO_IOM0_MISO; cipoPinCfg.ePullup = AM_HAL_GPIO_PIN_PULLUP_1_5K; - cipoPinCfg.eDriveStrength = AM_HAL_GPIO_PIN_DRIVESTRENGTH_12MA; - cipoPinCfg.eGPOutcfg = AM_HAL_GPIO_PIN_OUTCFG_PUSHPULL; - cipoPinCfg.uIOMnum = 1; // AP3_SPI_IOM; // IOM 1 is used for SPI. Redundant since pin is not a CE? - //padMode(MISO, cipoPinCfg, &retval); - retval = am_hal_gpio_pinconfig(MISO, cipoPinCfg); - if (retval != AM_HAL_STATUS_SUCCESS) - printDebug(F("Setting CIPO padMode failed!")); + pin_config(D6, cipoPinCfg); } void beginIMU() @@ -1242,6 +1275,12 @@ extern "C" void am_stimer_cmpr6_isr(void) } } +//Power Loss ISR +void powerLossISR(void) +{ + powerLossSeen = true; +} + //Stop Logging ISR void stopLoggingISR(void) { @@ -1254,11 +1293,6 @@ void triggerPinISR(void) triggerEdgeSeen = true; } -//Do Nothing ISR -void doNothingISR(void) -{ -} - void SerialFlush(void) { Serial.flush(); diff --git a/Firmware/OpenLog_Artemis/Sensors.ino b/Firmware/OpenLog_Artemis/Sensors.ino index 9b9e869..16f8119 100644 --- a/Firmware/OpenLog_Artemis/Sensors.ino +++ b/Firmware/OpenLog_Artemis/Sensors.ino @@ -25,7 +25,8 @@ void getData() if (settings.logAnalogVoltages == true) { float voltage = analog11 * 2 / 16384.0; - olaftoa(voltage, tempData, 2, sizeof(tempData) / sizeof(char)); + olaftoa(voltage, tempData1, 2, sizeof(tempData1) / sizeof(char)); + sprintf(tempData, "%s,", tempData1); } else sprintf(tempData, "%d,", analog11); @@ -40,7 +41,8 @@ void getData() if (settings.logAnalogVoltages == true) { float voltage = analog12 * 2 / 16384.0; - olaftoa(voltage, tempData, 2, sizeof(tempData) / sizeof(char)); + olaftoa(voltage, tempData1, 2, sizeof(tempData1) / sizeof(char)); + sprintf(tempData, "%s,", tempData1); } else sprintf(tempData, "%d,", analog12); @@ -55,7 +57,8 @@ void getData() if (settings.logAnalogVoltages == true) { float voltage = analog13 * 2 / 16384.0; - olaftoa(voltage, tempData, 2, sizeof(tempData) / sizeof(char)); + olaftoa(voltage, tempData1, 2, sizeof(tempData1) / sizeof(char)); + sprintf(tempData, "%s,", tempData1); } else sprintf(tempData, "%d,", analog13); @@ -70,7 +73,8 @@ void getData() if (settings.logAnalogVoltages == true) { float voltage = analog32 * 2 / 16384.0; - olaftoa(voltage, tempData, 2, sizeof(tempData) / sizeof(char)); + olaftoa(voltage, tempData1, 2, sizeof(tempData1) / sizeof(char)); + sprintf(tempData, "%s,", tempData1); } else sprintf(tempData, "%d,", analog32); @@ -81,7 +85,8 @@ void getData() if (settings.logVIN) { float voltage = readVIN(); - olaftoa(voltage, tempData, 2, sizeof(tempData) / sizeof(char)); + olaftoa(voltage, tempData1, 2, sizeof(tempData1) / sizeof(char)); + sprintf(tempData, "%s,", tempData1); strcat(outputData, tempData); } @@ -275,7 +280,7 @@ void gatherDeviceValues() break; case DEVICE_GPS_UBLOX: { - //qwiic.setPullups(0); //Disable pullups to minimize CRC issues + setQwiicPullups(0); //Disable pullups to minimize CRC issues SFE_UBLOX_GNSS *nodeDevice = (SFE_UBLOX_GNSS *)temp->classPtr; struct_uBlox *nodeSetting = (struct_uBlox *)temp->configPtr; @@ -395,7 +400,7 @@ void gatherDeviceValues() } } - //qwiic.setPullups(settings.qwiicBusPullUps); //Re-enable pullups + setQwiicPullups(settings.qwiicBusPullUps); //Re-enable pullups } break; case DEVICE_PROXIMITY_VCNL4040: diff --git a/Firmware/OpenLog_Artemis/autoDetect.ino b/Firmware/OpenLog_Artemis/autoDetect.ino index 5232ff5..607fc0f 100644 --- a/Firmware/OpenLog_Artemis/autoDetect.ino +++ b/Firmware/OpenLog_Artemis/autoDetect.ino @@ -349,12 +349,12 @@ bool beginQwiicDevices() break; case DEVICE_GPS_UBLOX: { - //qwiic.setPullups(0); //Disable pullups for u-blox comms. + setQwiicPullups(0); //Disable pullups for u-blox comms. SFE_UBLOX_GNSS *tempDevice = (SFE_UBLOX_GNSS *)temp->classPtr; struct_uBlox *nodeSetting = (struct_uBlox *)temp->configPtr; //Create a local pointer that points to same spot as node does if (nodeSetting->powerOnDelayMillis > qwiicPowerOnDelayMillis) qwiicPowerOnDelayMillis = nodeSetting->powerOnDelayMillis; // Increase qwiicPowerOnDelayMillis if required temp->online = tempDevice->begin(qwiic, temp->address); //Wire port, Address - //qwiic.setPullups(settings.qwiicBusPullUps); //Re-enable pullups. + setQwiicPullups(settings.qwiicBusPullUps); //Re-enable pullups. } break; case DEVICE_PROXIMITY_VCNL4040: @@ -657,7 +657,7 @@ void configureDevice(node * temp) break; case DEVICE_GPS_UBLOX: { - //qwiic.setPullups(0); //Disable pullups for u-blox comms. + setQwiicPullups(0); //Disable pullups for u-blox comms. SFE_UBLOX_GNSS *sensor = (SFE_UBLOX_GNSS *)temp->classPtr; struct_uBlox *nodeSetting = (struct_uBlox *)temp->configPtr; @@ -678,7 +678,7 @@ void configureDevice(node * temp) else sensor->setNavigationFrequency(10); //Set nav freq to 10Hz. Max output depends on the module used. - //qwiic.setPullups(settings.qwiicBusPullUps); //Re-enable pullups. + setQwiicPullups(settings.qwiicBusPullUps); //Re-enable pullups. } break; case DEVICE_PROXIMITY_VCNL4040: @@ -1204,15 +1204,15 @@ deviceType_e testDevice(uint8_t i2cAddress, uint8_t muxAddress, uint8_t portNumb case 0x42: { //Confidence: High - Sends/receives CRC checked data response - //qwiic.setPullups(0); //Disable pullups to minimize CRC issues + setQwiicPullups(0); //Disable pullups to minimize CRC issues SFE_UBLOX_GNSS sensor; if(settings.printDebugMessages == true) sensor.enableDebugging(); // Enable debug messages if required if (sensor.begin(qwiic, i2cAddress) == true) //Wire port, address { - //qwiic.setPullups(settings.qwiicBusPullUps); //Re-enable pullups to prevent ghosts at 0x43 onwards + setQwiicPullups(settings.qwiicBusPullUps); //Re-enable pullups to prevent ghosts at 0x43 onwards return (DEVICE_GPS_UBLOX); } - //qwiic.setPullups(settings.qwiicBusPullUps); //Re-enable pullups for normal discovery + setQwiicPullups(settings.qwiicBusPullUps); //Re-enable pullups for normal discovery } break; case 0x44: diff --git a/Firmware/OpenLog_Artemis/lowerPower.ino b/Firmware/OpenLog_Artemis/lowerPower.ino index c877e6f..51e21ba 100644 --- a/Firmware/OpenLog_Artemis/lowerPower.ino +++ b/Firmware/OpenLog_Artemis/lowerPower.ino @@ -44,13 +44,19 @@ void checkBattery(void) } } #endif + +//printDebug(F(".")); SerialFlush(); +//if (millis() % 50 == 0) printDebug(F("\r\n")); SerialFlush(); + + if (powerLossSeen) + powerDownOLA(); // power down and wait for reset } //Power down the entire system but maintain running of RTC //This function takes 100us to run including GPIO setting //This puts the Apollo3 into 2.36uA to 2.6uA consumption mode //With leakage across the 3.3V protection diode, it's approx 3.00uA. -void powerDownOLA(void) // This is an ISR and so needs void as a parameter +void powerDownOLA(void) { //Prevent voltage supervisor from waking us from sleep detachInterrupt(PIN_POWER_LOSS); @@ -235,7 +241,7 @@ void resetArtemis(void) //Power everything down and wait for interrupt wakeup void goToSleep(uint32_t sysTicksToSleep) { - //printDebug("goToSleep: sysTicksToSleep = " + (String)sysTicksToSleep + "\r\n"); + printDebug("goToSleep: sysTicksToSleep = " + (String)sysTicksToSleep + "\r\n"); //printDebug("goToSleep: online.IMU = " + (String)online.IMU + "\r\n"); @@ -275,100 +281,100 @@ void goToSleep(uint32_t sysTicksToSleep) SerialFlush(); //Finish any prints - // Wire.end(); //Power down I2C - qwiic.end(); //Power down I2C - - SPI.end(); //Power down SPI - - powerControlADC(false); // power_adc_disable(); //Power down ADC. It it started by default before setup(). - - Serial.end(); //Power down UART - SerialLog.end(); - - //Force the peripherals off - am_hal_pwrctrl_periph_disable(AM_HAL_PWRCTRL_PERIPH_IOM0); - am_hal_pwrctrl_periph_disable(AM_HAL_PWRCTRL_PERIPH_IOM1); - am_hal_pwrctrl_periph_disable(AM_HAL_PWRCTRL_PERIPH_IOM2); - am_hal_pwrctrl_periph_disable(AM_HAL_PWRCTRL_PERIPH_IOM3); - am_hal_pwrctrl_periph_disable(AM_HAL_PWRCTRL_PERIPH_IOM4); - am_hal_pwrctrl_periph_disable(AM_HAL_PWRCTRL_PERIPH_IOM5); - am_hal_pwrctrl_periph_disable(AM_HAL_PWRCTRL_PERIPH_ADC); - am_hal_pwrctrl_periph_disable(AM_HAL_PWRCTRL_PERIPH_UART0); - am_hal_pwrctrl_periph_disable(AM_HAL_PWRCTRL_PERIPH_UART1); - - //Disable pads - for (int x = 0; x < 50; x++) - { -// if ((x != ap3_gpio_pin2pad(PIN_POWER_LOSS)) && -// //(x != ap3_gpio_pin2pad(PIN_LOGIC_DEBUG)) && -// (x != ap3_gpio_pin2pad(PIN_MICROSD_POWER)) && -// (x != ap3_gpio_pin2pad(PIN_QWIIC_POWER)) && -// (x != ap3_gpio_pin2pad(PIN_IMU_POWER))) - if ((x != PIN_POWER_LOSS) && - //(x != PIN_LOGIC_DEBUG) && - (x != PIN_MICROSD_POWER) && - (x != PIN_QWIIC_POWER) && - (x != PIN_IMU_POWER)) - { - am_hal_gpio_pinconfig(x, g_AM_HAL_GPIO_DISABLE); - } - } - - //Make sure PIN_POWER_LOSS is configured as an input for the WDT - pinMode(PIN_POWER_LOSS, INPUT); // BD49K30G-TL has CMOS output and does not need a pull-up - - //We can't leave these power control pins floating - imuPowerOff(); - microSDPowerOff(); - - //Keep Qwiic bus powered on if user desires it - if (settings.powerDownQwiicBusBetweenReads == true) - qwiicPowerOff(); - else - qwiicPowerOn(); //Make sure pins stays as output - - //Leave the power LED on if the user desires it - if (settings.enablePwrLedDuringSleep == true) - powerLEDOn(); - //else - // powerLEDOff(); - - //Adjust sysTicks down by the amount we've be at 48MHz - //Read millis _before_ we switch to the lower power clock! - uint32_t msBeenAwake = millis(); - uint32_t sysTicksAwake = msBeenAwake * 32768L / 1000L; //Convert to 32kHz systicks - - //Power down cache, flash, SRAM - am_hal_pwrctrl_memory_deepsleep_powerdown(AM_HAL_PWRCTRL_MEM_ALL); // Power down all flash and cache - am_hal_pwrctrl_memory_deepsleep_retain(AM_HAL_PWRCTRL_MEM_SRAM_384K); // Retain all SRAM - - //Use the lower power 32kHz clock. Use it to run CT6 as well. - am_hal_stimer_config(AM_HAL_STIMER_CFG_CLEAR | AM_HAL_STIMER_CFG_FREEZE); - am_hal_stimer_config(AM_HAL_STIMER_XTAL_32KHZ | AM_HAL_STIMER_CFG_COMPARE_G_ENABLE); - - //Check that sysTicksToSleep is >> sysTicksAwake - if (sysTicksToSleep > (sysTicksAwake + 3277)) // Abort if we are trying to sleep for < 100ms - { - sysTicksToSleep -= sysTicksAwake; - - //Setup interrupt to trigger when the number of ms have elapsed - am_hal_stimer_compare_delta_set(6, sysTicksToSleep); - - //We use counter/timer 6 to cause us to wake up from sleep but 0 to 7 are available - //CT 7 is used for Software Serial. All CTs are used for Servo. - am_hal_stimer_int_clear(AM_HAL_STIMER_INT_COMPAREG); //Clear CT6 - am_hal_stimer_int_enable(AM_HAL_STIMER_INT_COMPAREG); //Enable C/T G=6 - - //Enable the timer interrupt in the NVIC. - NVIC_EnableIRQ(STIMER_CMPR6_IRQn); - - //Deep Sleep - am_hal_sysctrl_sleep(AM_HAL_SYSCTRL_SLEEP_DEEP); - - //Turn off interrupt - NVIC_DisableIRQ(STIMER_CMPR6_IRQn); - am_hal_stimer_int_disable(AM_HAL_STIMER_INT_COMPAREG); //Disable C/T G=6 - } +// // Wire.end(); //Power down I2C +// qwiic.end(); //Power down I2C +// +// SPI.end(); //Power down SPI +// +// powerControlADC(false); // power_adc_disable(); //Power down ADC. It it started by default before setup(). +// +// Serial.end(); //Power down UART +// SerialLog.end(); + +// //Force the peripherals off +// am_hal_pwrctrl_periph_disable(AM_HAL_PWRCTRL_PERIPH_IOM0); +// am_hal_pwrctrl_periph_disable(AM_HAL_PWRCTRL_PERIPH_IOM1); +// am_hal_pwrctrl_periph_disable(AM_HAL_PWRCTRL_PERIPH_IOM2); +// am_hal_pwrctrl_periph_disable(AM_HAL_PWRCTRL_PERIPH_IOM3); +// am_hal_pwrctrl_periph_disable(AM_HAL_PWRCTRL_PERIPH_IOM4); +// am_hal_pwrctrl_periph_disable(AM_HAL_PWRCTRL_PERIPH_IOM5); +// am_hal_pwrctrl_periph_disable(AM_HAL_PWRCTRL_PERIPH_ADC); +// am_hal_pwrctrl_periph_disable(AM_HAL_PWRCTRL_PERIPH_UART0); +// am_hal_pwrctrl_periph_disable(AM_HAL_PWRCTRL_PERIPH_UART1); +// +// //Disable pads +// for (int x = 0; x < 50; x++) +// { +//// if ((x != ap3_gpio_pin2pad(PIN_POWER_LOSS)) && +//// //(x != ap3_gpio_pin2pad(PIN_LOGIC_DEBUG)) && +//// (x != ap3_gpio_pin2pad(PIN_MICROSD_POWER)) && +//// (x != ap3_gpio_pin2pad(PIN_QWIIC_POWER)) && +//// (x != ap3_gpio_pin2pad(PIN_IMU_POWER))) +// if ((x != PIN_POWER_LOSS) && +// //(x != PIN_LOGIC_DEBUG) && +// (x != PIN_MICROSD_POWER) && +// (x != PIN_QWIIC_POWER) && +// (x != PIN_IMU_POWER)) +// { +// am_hal_gpio_pinconfig(x, g_AM_HAL_GPIO_DISABLE); +// } +// } + +// //Make sure PIN_POWER_LOSS is configured as an input for the WDT +// pinMode(PIN_POWER_LOSS, INPUT); // BD49K30G-TL has CMOS output and does not need a pull-up +// +// //We can't leave these power control pins floating +// imuPowerOff(); +// microSDPowerOff(); +// +// //Keep Qwiic bus powered on if user desires it +// if (settings.powerDownQwiicBusBetweenReads == true) +// qwiicPowerOff(); +// else +// qwiicPowerOn(); //Make sure pins stays as output +// +// //Leave the power LED on if the user desires it +// if (settings.enablePwrLedDuringSleep == true) +// powerLEDOn(); +// else +// powerLEDOff(); + +// //Adjust sysTicks down by the amount we've be at 48MHz +// //Read millis _before_ we switch to the lower power clock! +// uint32_t msBeenAwake = millis(); +// uint32_t sysTicksAwake = msBeenAwake * 32768L / 1000L; //Convert to 32kHz systicks +// +// //Power down cache, flash, SRAM +// am_hal_pwrctrl_memory_deepsleep_powerdown(AM_HAL_PWRCTRL_MEM_ALL); // Power down all flash and cache +// am_hal_pwrctrl_memory_deepsleep_retain(AM_HAL_PWRCTRL_MEM_SRAM_384K); // Retain all SRAM +// +// //Use the lower power 32kHz clock. Use it to run CT6 as well. +// am_hal_stimer_config(AM_HAL_STIMER_CFG_CLEAR | AM_HAL_STIMER_CFG_FREEZE); +// am_hal_stimer_config(AM_HAL_STIMER_XTAL_32KHZ | AM_HAL_STIMER_CFG_COMPARE_G_ENABLE); + +// //Check that sysTicksToSleep is >> sysTicksAwake +// if (sysTicksToSleep > (sysTicksAwake + 3277)) // Abort if we are trying to sleep for < 100ms +// { +// sysTicksToSleep -= sysTicksAwake; +// +// //Setup interrupt to trigger when the number of ms have elapsed +// am_hal_stimer_compare_delta_set(6, sysTicksToSleep); +// +// //We use counter/timer 6 to cause us to wake up from sleep but 0 to 7 are available +// //CT 7 is used for Software Serial. All CTs are used for Servo. +// am_hal_stimer_int_clear(AM_HAL_STIMER_INT_COMPAREG); //Clear CT6 +// am_hal_stimer_int_enable(AM_HAL_STIMER_INT_COMPAREG); //Enable C/T G=6 +// +// //Enable the timer interrupt in the NVIC. +// NVIC_EnableIRQ(STIMER_CMPR6_IRQn); +// +// //Deep Sleep +// am_hal_sysctrl_sleep(AM_HAL_SYSCTRL_SLEEP_DEEP); +// +// //Turn off interrupt +// NVIC_DisableIRQ(STIMER_CMPR6_IRQn); +// am_hal_stimer_int_disable(AM_HAL_STIMER_INT_COMPAREG); //Disable C/T G=6 +// } //We're BACK! wakeFromSleep(); @@ -377,15 +383,23 @@ void goToSleep(uint32_t sysTicksToSleep) //Power everything up gracefully void wakeFromSleep() { - //Go back to using the main clock - //am_hal_stimer_int_enable(AM_HAL_STIMER_INT_OVERFLOW); - //NVIC_EnableIRQ(STIMER_IRQn); - am_hal_stimer_config(AM_HAL_STIMER_CFG_CLEAR | AM_HAL_STIMER_CFG_FREEZE); - am_hal_stimer_config(AM_HAL_STIMER_HFRC_3MHZ); +// //Go back to using the main clock +// //am_hal_stimer_int_enable(AM_HAL_STIMER_INT_OVERFLOW); +// //NVIC_EnableIRQ(STIMER_IRQn); +// am_hal_stimer_config(AM_HAL_STIMER_CFG_CLEAR | AM_HAL_STIMER_CFG_FREEZE); +// am_hal_stimer_config(AM_HAL_STIMER_HFRC_3MHZ); +// +// // Power up SRAM, turn on entire Flash +// am_hal_pwrctrl_memory_deepsleep_powerdown(AM_HAL_PWRCTRL_MEM_MAX); +// +// // Go back to using the main clock +// am_hal_stimer_config(AM_HAL_STIMER_CFG_CLEAR | AM_HAL_STIMER_CFG_FREEZE); +// am_hal_stimer_config(AM_HAL_STIMER_HFRC_3MHZ); //Turn on ADC +// initializeADC(); //uint32_t adcError = (uint32_t)ap3_adc_setup(); - uint32_t adcError = powerControlADC(true); + //uint32_t adcError = powerControlADC(true); //if (settings.logA11 == true) adcError += (uint32_t)ap3_set_pin_to_analog(11); // Set _pad_ 11 to analog if enabled for logging //if (settings.logA12 == true) adcError += (uint32_t)ap3_set_pin_to_analog(12); // Set _pad_ 12 to analog if enabled for logging //if (settings.logA13 == true) adcError += (uint32_t)ap3_set_pin_to_analog(13); // Set _pad_ 13 to analog if enabled for logging @@ -401,10 +415,12 @@ void wakeFromSleep() delay(1); // Let PIN_POWER_LOSS stabilize - attachInterrupt(PIN_POWER_LOSS, powerDownOLA, FALLING); - - if (digitalRead(PIN_POWER_LOSS) == LOW) powerDownOLA(); //Check PIN_POWER_LOSS just in case we missed the falling edge + //if (digitalRead(PIN_POWER_LOSS) == LOW) powerDownOLA(); //Check PIN_POWER_LOSS just in case we missed the falling edge + //attachInterrupt(PIN_POWER_LOSS, powerDownOLA, FALLING); // TO DO: figure out why this no longer works on v2.1.0 + attachInterrupt(PIN_POWER_LOSS, powerLossISR, FALLING); + powerLossSeen = false; // Make sure the flag is clear + if (settings.useGPIO32ForStopLogging == true) { pinMode(PIN_STOP_LOGGING, INPUT_PULLUP); @@ -434,26 +450,26 @@ void wakeFromSleep() powerLEDOn(); - Serial.begin(settings.serialTerminalBaudRate); - - if (settings.useTxRxPinsForTerminal == true) - { - SerialLog.begin(settings.serialTerminalBaudRate); // Start the serial port - } - - printDebug(F("wakeFromSleep: I'm awake!\r\n")); - printDebug("wakeFromSleep: adcError is " + (String)adcError + "."); - if (adcError > 0) - printDebug(F(" This indicates an error was returned by ap3_adc_setup or one of the calls to ap3_set_pin_to_analog.")); - printDebug(F("\r\n")); - - beginQwiic(); //Power up Qwiic bus as early as possible - - SPI.begin(); //Needed if SD is disabled - - beginSD(); //285 - 293ms - - enableCIPOpullUp(); // Enable CIPO pull-up after beginSD +// Serial.begin(settings.serialTerminalBaudRate); +// +// if (settings.useTxRxPinsForTerminal == true) +// { +// SerialLog.begin(settings.serialTerminalBaudRate); // Start the serial port +// } + + printDebug(F("wakeFromSleep: I'm awake!\r\n")); Serial.flush(); + //printDebug("wakeFromSleep: adcError is " + (String)adcError + "."); + //if (adcError > 0) + // printDebug(F(" This indicates an error was returned by ap3_adc_setup or one of the calls to ap3_set_pin_to_analog.")); + //printDebug(F("\r\n")); + +// beginQwiic(); //Power up Qwiic bus as early as possible +// +// SPI.begin(); //Needed if SD is disabled +// +// beginSD(); //285 - 293ms +// +// enableCIPOpullUp(); // Enable CIPO pull-up _after_ beginSD beginDataLogging(); //180ms @@ -464,7 +480,7 @@ void wakeFromSleep() } beginIMU(); //61ms - //printDebug("wakeFromSleep: online.IMU = " + (String)online.IMU + "\r\n"); + printDebug("wakeFromSleep: online.IMU = " + (String)online.IMU + "\r\n"); //If we powered down the Qwiic bus, then re-begin and re-configure everything if (settings.powerDownQwiicBusBetweenReads == true) diff --git a/Firmware/OpenLog_Artemis/menuAttachedDevices.ino b/Firmware/OpenLog_Artemis/menuAttachedDevices.ino index cd6b136..7990641 100644 --- a/Firmware/OpenLog_Artemis/menuAttachedDevices.ino +++ b/Firmware/OpenLog_Artemis/menuAttachedDevices.ino @@ -35,10 +35,10 @@ bool detectQwiicDevices() qwiic.setClock(AM_HAL_IOM_100KHZ); //During detection, go slow - //qwiic.setPullups(settings.qwiicBusPullUps); //Set pullups. (Redundant. beginQwiic has done this too.) If we don't have pullups, detectQwiicDevices() takes ~900ms to complete. We'll disable pullups if something is detected. + setQwiicPullups(settings.qwiicBusPullUps); //Set pullups. (Redundant. beginQwiic has done this too.) If we don't have pullups, detectQwiicDevices() takes ~900ms to complete. We'll disable pullups if something is detected. //24k causes a bunch of unknown devices to be falsely detected. - //qwiic.setPullups(24); //Set pullups to 24k. If we don't have pullups, detectQwiicDevices() takes ~900ms to complete. We'll disable pullups if something is detected. + //setQwiicPullups(24); //Set pullups to 24k. If we don't have pullups, detectQwiicDevices() takes ~900ms to complete. We'll disable pullups if something is detected. waitForQwiicBusPowerDelay(); // Wait while the qwiic devices power up @@ -227,7 +227,7 @@ bool detectQwiicDevices() bubbleSortDevices(head); //This may destroy mux alignment to node 0. //*** Let's leave pull-ups set to 1k and only disable them when taking to a u-blox device *** - //qwiic.setPullups(0); //We've detected something on the bus so disable pullups. + //setQwiicPullups(0); //We've detected something on the bus so disable pullups. setMaxI2CSpeed(); //Try for 400kHz but reduce to 100kHz or low if certain devices are attached @@ -1097,7 +1097,7 @@ void getUbloxDateTime(int &year, int &month, int &day, int &hour, int &minute, i { case DEVICE_GPS_UBLOX: { - //qwiic.setPullups(0); //Disable pullups to minimize CRC issues + setQwiicPullups(0); //Disable pullups to minimize CRC issues SFE_UBLOX_GNSS *nodeDevice = (SFE_UBLOX_GNSS *)temp->classPtr; struct_uBlox *nodeSetting = (struct_uBlox *)temp->configPtr; @@ -1114,7 +1114,7 @@ void getUbloxDateTime(int &year, int &month, int &day, int &hour, int &minute, i timeValid = nodeDevice->getTimeValid(); millisecond = nodeDevice->getMillisecond(); - //qwiic.setPullups(settings.qwiicBusPullUps); //Re-enable pullups + setQwiicPullups(settings.qwiicBusPullUps); //Re-enable pullups } } temp = temp->next; From baab0002ad2aea9155b2a2edc07075ff90114667 Mon Sep 17 00:00:00 2001 From: PaulZC Date: Fri, 18 Jun 2021 17:27:00 +0100 Subject: [PATCH 06/15] Debugging sleep functionality --- Firmware/OpenLog_Artemis/OpenLog_Artemis.ino | 2 - Firmware/OpenLog_Artemis/lowerPower.ino | 111 +++++++++---------- 2 files changed, 54 insertions(+), 59 deletions(-) diff --git a/Firmware/OpenLog_Artemis/OpenLog_Artemis.ino b/Firmware/OpenLog_Artemis/OpenLog_Artemis.ino index 0019db2..e6d81fd 100644 --- a/Firmware/OpenLog_Artemis/OpenLog_Artemis.ino +++ b/Firmware/OpenLog_Artemis/OpenLog_Artemis.ino @@ -872,8 +872,6 @@ void beginSD() //Max current is 200mA average across 1s, peak 300mA for (int i = 0; i < 10; i++) //Wait { -printDebug(F("Still alive!\r\n")); SerialFlush(); - checkBattery(); delay(1); } diff --git a/Firmware/OpenLog_Artemis/lowerPower.ino b/Firmware/OpenLog_Artemis/lowerPower.ino index 51e21ba..34b03fb 100644 --- a/Firmware/OpenLog_Artemis/lowerPower.ino +++ b/Firmware/OpenLog_Artemis/lowerPower.ino @@ -45,9 +45,6 @@ void checkBattery(void) } #endif -//printDebug(F(".")); SerialFlush(); -//if (millis() % 50 == 0) printDebug(F("\r\n")); SerialFlush(); - if (powerLossSeen) powerDownOLA(); // power down and wait for reset } @@ -320,30 +317,30 @@ void goToSleep(uint32_t sysTicksToSleep) // } // } -// //Make sure PIN_POWER_LOSS is configured as an input for the WDT -// pinMode(PIN_POWER_LOSS, INPUT); // BD49K30G-TL has CMOS output and does not need a pull-up -// -// //We can't leave these power control pins floating -// imuPowerOff(); -// microSDPowerOff(); -// -// //Keep Qwiic bus powered on if user desires it -// if (settings.powerDownQwiicBusBetweenReads == true) -// qwiicPowerOff(); -// else -// qwiicPowerOn(); //Make sure pins stays as output -// -// //Leave the power LED on if the user desires it -// if (settings.enablePwrLedDuringSleep == true) -// powerLEDOn(); -// else -// powerLEDOff(); - -// //Adjust sysTicks down by the amount we've be at 48MHz -// //Read millis _before_ we switch to the lower power clock! -// uint32_t msBeenAwake = millis(); -// uint32_t sysTicksAwake = msBeenAwake * 32768L / 1000L; //Convert to 32kHz systicks -// + //Make sure PIN_POWER_LOSS is configured as an input for the WDT + pinMode(PIN_POWER_LOSS, INPUT); // BD49K30G-TL has CMOS output and does not need a pull-up + + //We can't leave these power control pins floating + imuPowerOff(); + microSDPowerOff(); + + //Keep Qwiic bus powered on if user desires it + if (settings.powerDownQwiicBusBetweenReads == true) + qwiicPowerOff(); + else + qwiicPowerOn(); //Make sure pins stays as output + + //Leave the power LED on if the user desires it + if (settings.enablePwrLedDuringSleep == true) + powerLEDOn(); + else + powerLEDOff(); + + //Adjust sysTicks down by the amount we've be at 48MHz + //Read millis _before_ we switch to the lower power clock! + uint32_t msBeenAwake = millis(); + uint32_t sysTicksAwake = msBeenAwake * 32768L / 1000L; //Convert to 32kHz systicks + // //Power down cache, flash, SRAM // am_hal_pwrctrl_memory_deepsleep_powerdown(AM_HAL_PWRCTRL_MEM_ALL); // Power down all flash and cache // am_hal_pwrctrl_memory_deepsleep_retain(AM_HAL_PWRCTRL_MEM_SRAM_384K); // Retain all SRAM @@ -352,29 +349,29 @@ void goToSleep(uint32_t sysTicksToSleep) // am_hal_stimer_config(AM_HAL_STIMER_CFG_CLEAR | AM_HAL_STIMER_CFG_FREEZE); // am_hal_stimer_config(AM_HAL_STIMER_XTAL_32KHZ | AM_HAL_STIMER_CFG_COMPARE_G_ENABLE); -// //Check that sysTicksToSleep is >> sysTicksAwake -// if (sysTicksToSleep > (sysTicksAwake + 3277)) // Abort if we are trying to sleep for < 100ms -// { -// sysTicksToSleep -= sysTicksAwake; -// -// //Setup interrupt to trigger when the number of ms have elapsed -// am_hal_stimer_compare_delta_set(6, sysTicksToSleep); -// -// //We use counter/timer 6 to cause us to wake up from sleep but 0 to 7 are available -// //CT 7 is used for Software Serial. All CTs are used for Servo. -// am_hal_stimer_int_clear(AM_HAL_STIMER_INT_COMPAREG); //Clear CT6 -// am_hal_stimer_int_enable(AM_HAL_STIMER_INT_COMPAREG); //Enable C/T G=6 -// -// //Enable the timer interrupt in the NVIC. -// NVIC_EnableIRQ(STIMER_CMPR6_IRQn); -// -// //Deep Sleep -// am_hal_sysctrl_sleep(AM_HAL_SYSCTRL_SLEEP_DEEP); -// -// //Turn off interrupt -// NVIC_DisableIRQ(STIMER_CMPR6_IRQn); -// am_hal_stimer_int_disable(AM_HAL_STIMER_INT_COMPAREG); //Disable C/T G=6 -// } + //Check that sysTicksToSleep is >> sysTicksAwake + if (sysTicksToSleep > (sysTicksAwake + 3277)) // Abort if we are trying to sleep for < 100ms + { + sysTicksToSleep -= sysTicksAwake; + + //Setup interrupt to trigger when the number of ms have elapsed + am_hal_stimer_compare_delta_set(6, sysTicksToSleep); + + //We use counter/timer 6 to cause us to wake up from sleep but 0 to 7 are available + //CT 7 is used for Software Serial. All CTs are used for Servo. + am_hal_stimer_int_clear(AM_HAL_STIMER_INT_COMPAREG); //Clear CT6 + am_hal_stimer_int_enable(AM_HAL_STIMER_INT_COMPAREG); //Enable C/T G=6 + + //Enable the timer interrupt in the NVIC. + NVIC_EnableIRQ(STIMER_CMPR6_IRQn); + + //Deep Sleep + am_hal_sysctrl_sleep(AM_HAL_SYSCTRL_SLEEP_DEEP); + + //Turn off interrupt + NVIC_DisableIRQ(STIMER_CMPR6_IRQn); + am_hal_stimer_int_disable(AM_HAL_STIMER_INT_COMPAREG); //Disable C/T G=6 + } //We're BACK! wakeFromSleep(); @@ -463,13 +460,13 @@ void wakeFromSleep() // printDebug(F(" This indicates an error was returned by ap3_adc_setup or one of the calls to ap3_set_pin_to_analog.")); //printDebug(F("\r\n")); -// beginQwiic(); //Power up Qwiic bus as early as possible -// -// SPI.begin(); //Needed if SD is disabled -// -// beginSD(); //285 - 293ms -// -// enableCIPOpullUp(); // Enable CIPO pull-up _after_ beginSD + beginQwiic(); //Power up Qwiic bus as early as possible + + SPI.begin(); //Needed if SD is disabled + + beginSD(); //285 - 293ms + + enableCIPOpullUp(); // Enable CIPO pull-up _after_ beginSD beginDataLogging(); //180ms From 055dfa061163bbca7a23953017fc2b6cbf3c3d7b Mon Sep 17 00:00:00 2001 From: PaulZC Date: Fri, 18 Jun 2021 18:01:00 +0100 Subject: [PATCH 07/15] Update lowerPower.ino --- Firmware/OpenLog_Artemis/lowerPower.ino | 20 ++++++++++---------- 1 file changed, 10 insertions(+), 10 deletions(-) diff --git a/Firmware/OpenLog_Artemis/lowerPower.ino b/Firmware/OpenLog_Artemis/lowerPower.ino index 34b03fb..d88b255 100644 --- a/Firmware/OpenLog_Artemis/lowerPower.ino +++ b/Firmware/OpenLog_Artemis/lowerPower.ino @@ -344,10 +344,10 @@ void goToSleep(uint32_t sysTicksToSleep) // //Power down cache, flash, SRAM // am_hal_pwrctrl_memory_deepsleep_powerdown(AM_HAL_PWRCTRL_MEM_ALL); // Power down all flash and cache // am_hal_pwrctrl_memory_deepsleep_retain(AM_HAL_PWRCTRL_MEM_SRAM_384K); // Retain all SRAM -// -// //Use the lower power 32kHz clock. Use it to run CT6 as well. -// am_hal_stimer_config(AM_HAL_STIMER_CFG_CLEAR | AM_HAL_STIMER_CFG_FREEZE); -// am_hal_stimer_config(AM_HAL_STIMER_XTAL_32KHZ | AM_HAL_STIMER_CFG_COMPARE_G_ENABLE); + + //Use the lower power 32kHz clock. Use it to run CT6 as well. + am_hal_stimer_config(AM_HAL_STIMER_CFG_CLEAR | AM_HAL_STIMER_CFG_FREEZE); + am_hal_stimer_config(AM_HAL_STIMER_XTAL_32KHZ | AM_HAL_STIMER_CFG_COMPARE_G_ENABLE); //Check that sysTicksToSleep is >> sysTicksAwake if (sysTicksToSleep > (sysTicksAwake + 3277)) // Abort if we are trying to sleep for < 100ms @@ -380,12 +380,12 @@ void goToSleep(uint32_t sysTicksToSleep) //Power everything up gracefully void wakeFromSleep() { -// //Go back to using the main clock -// //am_hal_stimer_int_enable(AM_HAL_STIMER_INT_OVERFLOW); -// //NVIC_EnableIRQ(STIMER_IRQn); -// am_hal_stimer_config(AM_HAL_STIMER_CFG_CLEAR | AM_HAL_STIMER_CFG_FREEZE); -// am_hal_stimer_config(AM_HAL_STIMER_HFRC_3MHZ); -// + //Go back to using the main clock + //am_hal_stimer_int_enable(AM_HAL_STIMER_INT_OVERFLOW); + //NVIC_EnableIRQ(STIMER_IRQn); + am_hal_stimer_config(AM_HAL_STIMER_CFG_CLEAR | AM_HAL_STIMER_CFG_FREEZE); + am_hal_stimer_config(AM_HAL_STIMER_HFRC_3MHZ); + // // Power up SRAM, turn on entire Flash // am_hal_pwrctrl_memory_deepsleep_powerdown(AM_HAL_PWRCTRL_MEM_MAX); // From 572df610c84aa7764333d8f1d5d1b4b0eb1b06f7 Mon Sep 17 00:00:00 2001 From: PaulZC Date: Wed, 7 Jul 2021 12:44:35 +0100 Subject: [PATCH 08/15] Fix goToSleep. Increase DMP resolution. Add bestMillis(). Add comma after olaftoa values. With v2.1 of the core, both millis and micros are corrupted when coming out of deep sleep. bestMillis will use the RTC to generate the milliseconds. --- Firmware/OpenLog_Artemis/OpenLog_Artemis.ino | 42 +++-- Firmware/OpenLog_Artemis/Sensors.ino | 169 +++++++++++-------- Firmware/OpenLog_Artemis/lowerPower.ino | 138 +++++++-------- Firmware/OpenLog_Artemis/menuMain.ino | 7 +- Firmware/OpenLog_Artemis/support.ino | 15 ++ 5 files changed, 213 insertions(+), 158 deletions(-) diff --git a/Firmware/OpenLog_Artemis/OpenLog_Artemis.ino b/Firmware/OpenLog_Artemis/OpenLog_Artemis.ino index e6d81fd..3dff4b0 100644 --- a/Firmware/OpenLog_Artemis/OpenLog_Artemis.ino +++ b/Firmware/OpenLog_Artemis/OpenLog_Artemis.ino @@ -96,9 +96,9 @@ (done) Implement printf float (OLA uses printf float in _so_ many places...): https://github.com/sparkfun/Arduino_Apollo3/issues/278 (worked around) Figure out why attachInterrupt(PIN_POWER_LOSS, powerDownOLA, FALLING); causes badness (done) Add a setQwiicPullups function - (TO DO) Check if we need ap3_set_pin_to_analog when coming out of sleep - (TO DO) Figure out why SerialLog RX does not work: https://github.com/sparkfun/Arduino_Apollo3/issues/401 - (TO DO) Investigate why code does not wake from deep sleep correctly + (done) Check if we need ap3_set_pin_to_analog when coming out of sleep + (TO DO) Correct SerialLog RX: https://github.com/sparkfun/Arduino_Apollo3/issues/401 + (done) Investigate why code does not wake from deep sleep correctly */ const int FIRMWARE_VERSION_MAJOR = 2; @@ -214,7 +214,8 @@ Apollo3RTC myRTC; //Create instance of RTC class //Create UART instance for OpenLog style serial logging //-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=- UART SerialLog(BREAKOUT_PIN_TX, BREAKOUT_PIN_RX); // Declares a Uart object called Serial1 with TX on pin 12 and RX on pin 13 -unsigned long lastSeriaLogSyncTime = 0; +uint64_t lastSeriaLogSyncTime = 0; +uint64_t lastAwakeTimeMillis; const int MAX_IDLE_TIME_MSEC = 500; bool newSerialData = false; char incomingBuffer[256 * 2]; //This size of this buffer is sensitive. Do not change without analysis using OpenLog_Serial. @@ -275,7 +276,7 @@ bool sleepAfterRead = false; //Used to keep the code awake for at least minimumA const uint64_t maxUsBeforeSleep = 2000000ULL; //Number of us between readings before sleep is activated. const byte menuTimeout = 15; //Menus will exit/timeout after this number of seconds volatile static bool stopLoggingSeen = false; //Flag to indicate if we should stop logging -unsigned long qwiicPowerOnTime = 0; //Used to delay after Qwiic power on to allow sensors to power on, then answer autodetect +uint64_t qwiicPowerOnTime = 0; //Used to delay after Qwiic power on to allow sensors to power on, then answer autodetect unsigned long qwiicPowerOnDelayMillis; //Wait for this many milliseconds after turning on the Qwiic power before attempting to communicate with Qwiic devices int lowBatteryReadings = 0; // Count how many times the battery voltage has read low const int lowBatteryReadingsLimit = 10; // Don't declare the battery voltage low until we have had this many consecutive low readings (to reject sampling noise) @@ -447,15 +448,12 @@ void setup() { //If we are sleeping between readings then we cannot rely on millis() as it is powered down //Use RTC instead - if (((settings.useGPIO11ForTrigger == false) && (settings.usBetweenReadings >= maxUsBeforeSleep)) - || (settings.useGPIO11ForFastSlowLogging == true) - || (settings.useRTCForFastSlowLogging == true)) - measurementStartTime = rtcMillis(); - else - measurementStartTime = millis(); + measurementStartTime = bestMillis(); digitalWrite(PIN_STAT_LED, LOW); // Turn the STAT LED off now that everything is configured + lastAwakeTimeMillis = rtcMillis(); + //If we are immediately going to go to sleep after the first reading then //first present the user with the config menu in case they need to change something if (checkIfItIsTimeToSleep()) @@ -515,12 +513,14 @@ void loop() { checkBattery(); } - lastSeriaLogSyncTime = millis(); //Reset the last sync time to now + //If we are sleeping between readings then we cannot rely on millis() as it is powered down + //Use RTC instead + lastSeriaLogSyncTime = bestMillis(); //Reset the last sync time to now newSerialData = true; } else if (newSerialData == true) { - if ((millis() - lastSeriaLogSyncTime) > MAX_IDLE_TIME_MSEC) //If we haven't received any characters recently then sync log file + if ((bestMillis() - lastSeriaLogSyncTime) > MAX_IDLE_TIME_MSEC) //If we haven't received any characters recently then sync log file { if (incomingBufferSpot > 0) { @@ -536,13 +536,13 @@ void loop() { } newSerialData = false; - lastSeriaLogSyncTime = millis(); //Reset the last sync time to now + lastSeriaLogSyncTime = bestMillis(); //Reset the last sync time to now printDebug("Total chars received: " + (String)charsReceived + "\r\n"); } } } - //micros() resets to 0 during sleep so only test if we are not sleeping + //In v2.1 of the core micros() becomes corrupted during deep sleep so only test if we are not sleeping if (settings.usBetweenReadings < maxUsBeforeSleep) { if ((micros() - lastReadTime) >= settings.usBetweenReadings) @@ -630,9 +630,9 @@ void loop() { } //Force sync every 500ms - if (millis() - lastDataLogSyncTime > 500) + if (bestMillis() - lastDataLogSyncTime > 500) { - lastDataLogSyncTime = millis(); + lastDataLogSyncTime = bestMillis(); sensorDataFile.sync(); if (settings.frequentFileAccessTimestamps == true) updateDataFileAccess(&sensorDataFile); // Update the file access time & date @@ -690,7 +690,7 @@ void loop() { { // Check if we have been awake long enough (millis is reset to zero when waking from sleep) // goToSleep will automatically compensate for how long we have been awake - if (millis() < settings.minimumAwakeTimeMillis) + if ((bestMillis() - lastAwakeTimeMillis) < settings.minimumAwakeTimeMillis) return; // Too early to sleep - leave sleepAfterRead set true } @@ -919,6 +919,12 @@ void enableCIPOpullUp() // updated for v2.1.0 of the Apollo3 core pin_config(D6, cipoPinCfg); } +void disableCIPOpullUp() // updated for v2.1.0 of the Apollo3 core +{ + am_hal_gpio_pincfg_t cipoPinCfg = g_AM_BSP_GPIO_IOM0_MISO; + pin_config(D6, cipoPinCfg); +} + void beginIMU() { pinMode(PIN_IMU_POWER, OUTPUT); diff --git a/Firmware/OpenLog_Artemis/Sensors.ino b/Firmware/OpenLog_Artemis/Sensors.ino index 16f8119..89df396 100644 --- a/Firmware/OpenLog_Artemis/Sensors.ino +++ b/Firmware/OpenLog_Artemis/Sensors.ino @@ -147,17 +147,17 @@ void getData() } if (settings.imuLogDMPQuat6) { - olaftoa(((double)dmpData.Quat6.Data.Q1) / 1073741824.0, tempData1, 3, sizeof(tempData1) / sizeof(char)); - olaftoa(((double)dmpData.Quat6.Data.Q2) / 1073741824.0, tempData2, 3, sizeof(tempData2) / sizeof(char)); - olaftoa(((double)dmpData.Quat6.Data.Q3) / 1073741824.0, tempData3, 3, sizeof(tempData3) / sizeof(char)); + olaftoa(((double)dmpData.Quat6.Data.Q1) / 1073741824.0, tempData1, 5, sizeof(tempData1) / sizeof(char)); + olaftoa(((double)dmpData.Quat6.Data.Q2) / 1073741824.0, tempData2, 5, sizeof(tempData2) / sizeof(char)); + olaftoa(((double)dmpData.Quat6.Data.Q3) / 1073741824.0, tempData3, 5, sizeof(tempData3) / sizeof(char)); sprintf(tempData, "%s,%s,%s,", tempData1, tempData2, tempData3); strcat(outputData, tempData); } if (settings.imuLogDMPQuat9) { - olaftoa(((double)dmpData.Quat9.Data.Q1) / 1073741824.0, tempData1, 3, sizeof(tempData1) / sizeof(char)); - olaftoa(((double)dmpData.Quat9.Data.Q2) / 1073741824.0, tempData2, 3, sizeof(tempData2) / sizeof(char)); - olaftoa(((double)dmpData.Quat9.Data.Q3) / 1073741824.0, tempData3, 3, sizeof(tempData3) / sizeof(char)); + olaftoa(((double)dmpData.Quat9.Data.Q1) / 1073741824.0, tempData1, 5, sizeof(tempData1) / sizeof(char)); + olaftoa(((double)dmpData.Quat9.Data.Q2) / 1073741824.0, tempData2, 5, sizeof(tempData2) / sizeof(char)); + olaftoa(((double)dmpData.Quat9.Data.Q3) / 1073741824.0, tempData3, 5, sizeof(tempData3) / sizeof(char)); sprintf(tempData, "%s,%s,%s,%d,", tempData1, tempData2, tempData3, dmpData.Quat9.Data.Accuracy); strcat(outputData, tempData); } @@ -188,21 +188,11 @@ void getData() //If we are sleeping between readings then we cannot rely on millis() as it is powered down //Use RTC instead - if (((settings.useGPIO11ForTrigger == false) && (settings.usBetweenReadings >= maxUsBeforeSleep)) - || (settings.useGPIO11ForFastSlowLogging == true) - || (settings.useRTCForFastSlowLogging == true)) - { - currentMillis = rtcMillis(); - } - else - { - //Calculate the actual update rate based on the sketch start time and the - //number of updates we've completed. - currentMillis = millis(); - } + currentMillis = bestMillis(); float actualRate = measurementCount * 1000.0 / (currentMillis - measurementStartTime); - olaftoa(actualRate, tempData, 2, sizeof(tempData) / sizeof(char)); + olaftoa(actualRate, tempData1, 2, sizeof(tempData) / sizeof(char)); + sprintf(tempData, "%s,", tempData1); strcat(outputData, tempData); } @@ -222,6 +212,7 @@ void getData() void gatherDeviceValues() { char tempData[100]; + char tempData1[20]; //Step through list, printing values as we go node *temp = head; @@ -248,7 +239,8 @@ void gatherDeviceValues() if (nodeSetting->log == true) { float currentWeight = nodeDevice->getWeight(false, nodeSetting->averageAmount); //Do not allow negative weights, take average of X readings - olaftoa(currentWeight, tempData, nodeSetting->decimalPlaces, sizeof(tempData) / sizeof(char)); + olaftoa(currentWeight, tempData1, nodeSetting->decimalPlaces, sizeof(tempData) / sizeof(char)); + sprintf(tempData, "%s,", tempData1); strcat(outputData, tempData); } } @@ -335,7 +327,7 @@ void gatherDeviceValues() else sprintf(gnssMinStr, "%d", gnssMin); if (gnssSec < 10) - sprintf(gnssSecStr, "0%,", gnssSec); + sprintf(gnssSecStr, "0%d", gnssSec); else sprintf(gnssSecStr, "%d", gnssSec); if (gnssMillis < 10) @@ -433,7 +425,8 @@ void gatherDeviceValues() { if (nodeSetting->logTemperature) { - olaftoa(nodeDevice->readTempC(), tempData, 4, sizeof(tempData) / sizeof(char)); //Resolution to 0.0078°C, accuracy of 0.1°C + olaftoa(nodeDevice->readTempC(), tempData1, 4, sizeof(tempData) / sizeof(char)); //Resolution to 0.0078°C, accuracy of 0.1°C + sprintf(tempData, "%s,", tempData1); strcat(outputData, tempData); } } @@ -448,12 +441,14 @@ void gatherDeviceValues() { if (nodeSetting->logPressure) { - olaftoa(nodeDevice->getPressure(), tempData, 2, sizeof(tempData) / sizeof(char)); + olaftoa(nodeDevice->getPressure(), tempData1, 2, sizeof(tempData) / sizeof(char)); + sprintf(tempData, "%s,", tempData1); strcat(outputData, tempData); } if (nodeSetting->logTemperature) { - olaftoa(nodeDevice->getTemperature(), tempData, 2, sizeof(tempData) / sizeof(char)); + olaftoa(nodeDevice->getTemperature(), tempData1, 2, sizeof(tempData) / sizeof(char)); + sprintf(tempData, "%s,", tempData1); strcat(outputData, tempData); } } @@ -467,12 +462,14 @@ void gatherDeviceValues() { if (nodeSetting->logPressure) { - olaftoa(nodeDevice->getPressure_hPa(), tempData, 2, sizeof(tempData) / sizeof(char)); + olaftoa(nodeDevice->getPressure_hPa(), tempData1, 2, sizeof(tempData) / sizeof(char)); + sprintf(tempData, "%s,", tempData1); strcat(outputData, tempData); } if (nodeSetting->logTemperature) { - olaftoa(nodeDevice->getTemperature_degC(), tempData, 2, sizeof(tempData) / sizeof(char)); + olaftoa(nodeDevice->getTemperature_degC(), tempData1, 2, sizeof(tempData) / sizeof(char)); + sprintf(tempData, "%s,", tempData1); strcat(outputData, tempData); } } @@ -486,22 +483,26 @@ void gatherDeviceValues() { if (nodeSetting->logPressure) { - olaftoa(nodeDevice->readFloatPressure(), tempData, 2, sizeof(tempData) / sizeof(char)); + olaftoa(nodeDevice->readFloatPressure(), tempData1, 2, sizeof(tempData) / sizeof(char)); + sprintf(tempData, "%s,", tempData1); strcat(outputData, tempData); } if (nodeSetting->logHumidity) { - olaftoa(nodeDevice->readFloatHumidity(), tempData, 2, sizeof(tempData) / sizeof(char)); + olaftoa(nodeDevice->readFloatHumidity(), tempData1, 2, sizeof(tempData) / sizeof(char)); + sprintf(tempData, "%s,", tempData1); strcat(outputData, tempData); } if (nodeSetting->logAltitude) { - olaftoa(nodeDevice->readFloatAltitudeMeters(), tempData, 2, sizeof(tempData) / sizeof(char)); + olaftoa(nodeDevice->readFloatAltitudeMeters(), tempData1, 2, sizeof(tempData) / sizeof(char)); + sprintf(tempData, "%s,", tempData1); strcat(outputData, tempData); } if (nodeSetting->logTemperature) { - olaftoa(nodeDevice->readTempC(), tempData, 2, sizeof(tempData) / sizeof(char)); + olaftoa(nodeDevice->readTempC(), tempData1, 2, sizeof(tempData) / sizeof(char)); + sprintf(tempData, "%s,", tempData1); strcat(outputData, tempData); } } @@ -515,17 +516,20 @@ void gatherDeviceValues() { if (nodeSetting->logUVA) { - olaftoa(nodeDevice->uva(), tempData, 2, sizeof(tempData) / sizeof(char)); + olaftoa(nodeDevice->uva(), tempData1, 2, sizeof(tempData) / sizeof(char)); + sprintf(tempData, "%s,", tempData1); strcat(outputData, tempData); } if (nodeSetting->logUVB) { - olaftoa(nodeDevice->uvb(), tempData, 2, sizeof(tempData) / sizeof(char)); + olaftoa(nodeDevice->uvb(), tempData1, 2, sizeof(tempData) / sizeof(char)); + sprintf(tempData, "%s,", tempData1); strcat(outputData, tempData); } if (nodeSetting->logUVIndex) { - olaftoa(nodeDevice->index(), tempData, 2, sizeof(tempData) / sizeof(char)); + olaftoa(nodeDevice->index(), tempData1, 2, sizeof(tempData) / sizeof(char)); + sprintf(tempData, "%s,", tempData1); strcat(outputData, tempData); } } @@ -597,12 +601,14 @@ void gatherDeviceValues() } if (nodeSetting->logHumidity) { - olaftoa(nodeDevice->getHumidity(), tempData, 2, sizeof(tempData) / sizeof(char)); + olaftoa(nodeDevice->getHumidity(), tempData1, 2, sizeof(tempData) / sizeof(char)); + sprintf(tempData, "%s,", tempData1); strcat(outputData, tempData); } if (nodeSetting->logTemperature) { - olaftoa(nodeDevice->getTemperature(), tempData, 2, sizeof(tempData) / sizeof(char)); + olaftoa(nodeDevice->getTemperature(), tempData1, 2, sizeof(tempData) / sizeof(char)); + sprintf(tempData, "%s,", tempData1); strcat(outputData, tempData); } } @@ -616,17 +622,20 @@ void gatherDeviceValues() { if (nodeSetting->logHumidity) { - olaftoa(nodeDevice->getHumidity(), tempData, 2, sizeof(tempData) / sizeof(char)); + olaftoa(nodeDevice->getHumidity(), tempData1, 2, sizeof(tempData) / sizeof(char)); + sprintf(tempData, "%s,", tempData1); strcat(outputData, tempData); } if (nodeSetting->logPressure) { - olaftoa(nodeDevice->getPressure(), tempData, 2, sizeof(tempData) / sizeof(char)); + olaftoa(nodeDevice->getPressure(), tempData1, 2, sizeof(tempData) / sizeof(char)); + sprintf(tempData, "%s,", tempData1); strcat(outputData, tempData); } if (nodeSetting->logTemperature) { - olaftoa(nodeDevice->getTemperature(), tempData, 2, sizeof(tempData) / sizeof(char)); + olaftoa(nodeDevice->getTemperature(), tempData1, 2, sizeof(tempData) / sizeof(char)); + sprintf(tempData, "%s,", tempData1); strcat(outputData, tempData); } } @@ -640,12 +649,14 @@ void gatherDeviceValues() { if (nodeSetting->logTemperature) { - olaftoa(nodeDevice->getThermocoupleTemp(), tempData, 2, sizeof(tempData) / sizeof(char)); + olaftoa(nodeDevice->getThermocoupleTemp(), tempData1, 2, sizeof(tempData) / sizeof(char)); + sprintf(tempData, "%s,", tempData1); strcat(outputData, tempData); } if (nodeSetting->logAmbientTemperature) { - olaftoa(nodeDevice->getAmbientTemp(), tempData, 2, sizeof(tempData) / sizeof(char)); + olaftoa(nodeDevice->getAmbientTemp(), tempData1, 2, sizeof(tempData) / sizeof(char)); + sprintf(tempData, "%s,", tempData1); strcat(outputData, tempData); } } @@ -659,12 +670,14 @@ void gatherDeviceValues() { if (nodeSetting->logHumidity) { - olaftoa(nodeDevice->getHumidity(), tempData, 2, sizeof(tempData) / sizeof(char)); + olaftoa(nodeDevice->getHumidity(), tempData1, 2, sizeof(tempData) / sizeof(char)); + sprintf(tempData, "%s,", tempData1); strcat(outputData, tempData); } if (nodeSetting->logTemperature) { - olaftoa(nodeDevice->getTemperature(), tempData, 2, sizeof(tempData) / sizeof(char)); + olaftoa(nodeDevice->getTemperature(), tempData1, 2, sizeof(tempData) / sizeof(char)); + sprintf(tempData, "%s,", tempData1); strcat(outputData, tempData); } } @@ -679,12 +692,14 @@ void gatherDeviceValues() nodeDevice->update(); if (nodeSetting->logHumidity) { - olaftoa(nodeDevice->toPercent(), tempData, 2, sizeof(tempData) / sizeof(char)); + olaftoa(nodeDevice->toPercent(), tempData1, 2, sizeof(tempData) / sizeof(char)); + sprintf(tempData, "%s,", tempData1); strcat(outputData, tempData); } if (nodeSetting->logTemperature) { - olaftoa(nodeDevice->toDegC(), tempData, 2, sizeof(tempData) / sizeof(char)); + olaftoa(nodeDevice->toDegC(), tempData1, 2, sizeof(tempData) / sizeof(char)); + sprintf(tempData, "%s,", tempData1); strcat(outputData, tempData); } } @@ -737,17 +752,20 @@ void gatherDeviceValues() if (nodeSetting->logCentigrade) { - olaftoa(nodeDevice->readPT100Centigrade(), tempData, 3, sizeof(tempData) / sizeof(char)); + olaftoa(nodeDevice->readPT100Centigrade(), tempData1, 3, sizeof(tempData) / sizeof(char)); + sprintf(tempData, "%s,", tempData1); strcat(outputData, tempData); } if (nodeSetting->logFahrenheit) { - olaftoa(nodeDevice->readPT100Fahrenheit(), tempData, 3, sizeof(tempData) / sizeof(char)); + olaftoa(nodeDevice->readPT100Fahrenheit(), tempData1, 3, sizeof(tempData) / sizeof(char)); + sprintf(tempData, "%s,", tempData1); strcat(outputData, tempData); } if (nodeSetting->logInternalTemperature) { - olaftoa(nodeDevice->readInternalTemperature(), tempData, 3, sizeof(tempData) / sizeof(char)); + olaftoa(nodeDevice->readInternalTemperature(), tempData1, 3, sizeof(tempData) / sizeof(char)); + sprintf(tempData, "%s,", tempData1); strcat(outputData, tempData); } if (nodeSetting->logRawVoltage) @@ -766,37 +784,44 @@ void gatherDeviceValues() { if (nodeSetting->usePSI) { - olaftoa(nodeDevice->readPressure(), tempData, 4, sizeof(tempData) / sizeof(char)); + olaftoa(nodeDevice->readPressure(), tempData1, 4, sizeof(tempData) / sizeof(char)); + sprintf(tempData, "%s,", tempData1); strcat(outputData, tempData); } if (nodeSetting->usePA) { - olaftoa(nodeDevice->readPressure(PA), tempData, 1, sizeof(tempData) / sizeof(char)); + olaftoa(nodeDevice->readPressure(PA), tempData1, 1, sizeof(tempData) / sizeof(char)); + sprintf(tempData, "%s,", tempData1); strcat(outputData, tempData); } if (nodeSetting->useKPA) { - olaftoa(nodeDevice->readPressure(KPA), tempData, 4, sizeof(tempData) / sizeof(char)); + olaftoa(nodeDevice->readPressure(KPA), tempData1, 4, sizeof(tempData) / sizeof(char)); + sprintf(tempData, "%s,", tempData1); strcat(outputData, tempData); } if (nodeSetting->useTORR) { - olaftoa(nodeDevice->readPressure(TORR), tempData, 3, sizeof(tempData) / sizeof(char)); + olaftoa(nodeDevice->readPressure(TORR), tempData1, 3, sizeof(tempData) / sizeof(char)); + sprintf(tempData, "%s,", tempData1); strcat(outputData, tempData); } if (nodeSetting->useINHG) { - olaftoa(nodeDevice->readPressure(INHG), tempData, 4, sizeof(tempData) / sizeof(char)); + olaftoa(nodeDevice->readPressure(INHG), tempData1, 4, sizeof(tempData) / sizeof(char)); + sprintf(tempData, "%s,", tempData1); strcat(outputData, tempData); } if (nodeSetting->useATM) { - olaftoa(nodeDevice->readPressure(ATM), tempData, 6, sizeof(tempData) / sizeof(char)); + olaftoa(nodeDevice->readPressure(ATM), tempData1, 6, sizeof(tempData) / sizeof(char)); + sprintf(tempData, "%s,", tempData1); strcat(outputData, tempData); } if (nodeSetting->useBAR) { - olaftoa(nodeDevice->readPressure(BAR), tempData, 6, sizeof(tempData) / sizeof(char)); + olaftoa(nodeDevice->readPressure(BAR), tempData1, 6, sizeof(tempData) / sizeof(char)); + sprintf(tempData, "%s,", tempData1); strcat(outputData, tempData); } } @@ -810,17 +835,20 @@ void gatherDeviceValues() { if (nodeSetting->logPM1) { - olaftoa(nodeDevice->getPM1_0(), tempData, 2, sizeof(tempData) / sizeof(char)); + olaftoa(nodeDevice->getPM1_0(), tempData1, 2, sizeof(tempData) / sizeof(char)); + sprintf(tempData, "%s,", tempData1); strcat(outputData, tempData); } if (nodeSetting->logPM25) { - olaftoa(nodeDevice->getPM2_5(), tempData, 2, sizeof(tempData) / sizeof(char)); + olaftoa(nodeDevice->getPM2_5(), tempData1, 2, sizeof(tempData) / sizeof(char)); + sprintf(tempData, "%s,", tempData1); strcat(outputData, tempData); } if (nodeSetting->logPM10) { - olaftoa(nodeDevice->getPM10(), tempData, 2, sizeof(tempData) / sizeof(char)); + olaftoa(nodeDevice->getPM10(), tempData1, 2, sizeof(tempData) / sizeof(char)); + sprintf(tempData, "%s,", tempData1); strcat(outputData, tempData); } if (nodeSetting->logPC05) @@ -905,12 +933,14 @@ void gatherDeviceValues() } if (nodeSetting->logPressure) { - olaftoa(pressure, tempData, 2, sizeof(tempData) / sizeof(char)); + olaftoa(pressure, tempData1, 2, sizeof(tempData) / sizeof(char)); + sprintf(tempData, "%s,", tempData1); strcat(outputData, tempData); } if (nodeSetting->logTemperature) { - olaftoa(temperature, tempData, 2, sizeof(tempData) / sizeof(char)); + olaftoa(temperature, tempData1, 2, sizeof(tempData) / sizeof(char)); + sprintf(tempData, "%s,", tempData1); strcat(outputData, tempData); } } @@ -928,22 +958,26 @@ void gatherDeviceValues() } if (nodeSetting->logPressure) { - olaftoa(nodeDevice->pressure(nodeSetting->conversion), tempData, 2, sizeof(tempData) / sizeof(char)); + olaftoa(nodeDevice->pressure(nodeSetting->conversion), tempData1, 2, sizeof(tempData) / sizeof(char)); + sprintf(tempData, "%s,", tempData1); strcat(outputData, tempData); } if (nodeSetting->logTemperature) { - olaftoa(nodeDevice->temperature(), tempData, 2, sizeof(tempData) / sizeof(char)); + olaftoa(nodeDevice->temperature(), tempData1, 2, sizeof(tempData) / sizeof(char)); + sprintf(tempData, "%s,", tempData1); strcat(outputData, tempData); } if (nodeSetting->logDepth) { - olaftoa(nodeDevice->depth(), tempData, 3, sizeof(tempData) / sizeof(char)); + olaftoa(nodeDevice->depth(), tempData1, 3, sizeof(tempData) / sizeof(char)); + sprintf(tempData, "%s,", tempData1); strcat(outputData, tempData); } if (nodeSetting->logAltitude) { - olaftoa(nodeDevice->altitude(), tempData, 2, sizeof(tempData) / sizeof(char)); + olaftoa(nodeDevice->altitude(), tempData1, 2, sizeof(tempData) / sizeof(char)); + sprintf(tempData, "%s,", tempData1); strcat(outputData, tempData); } } @@ -962,7 +996,8 @@ void gatherDeviceValues() } if (nodeSetting->logPressed) { - olaftoa(((float)pressedPopped) / 1000.0, tempData, 3, sizeof(tempData) / sizeof(char)); + olaftoa(((float)pressedPopped) / 1000.0, tempData1, 3, sizeof(tempData) / sizeof(char)); + sprintf(tempData, "%s,", tempData1); strcat(outputData, tempData); } @@ -974,7 +1009,8 @@ void gatherDeviceValues() } if (nodeSetting->logClicked) { - olaftoa(((float)clickedPopped) / 1000.0, tempData, 3, sizeof(tempData) / sizeof(char)); + olaftoa(((float)clickedPopped) / 1000.0, tempData1, 3, sizeof(tempData) / sizeof(char)); + sprintf(tempData, "%s,", tempData1); strcat(outputData, tempData); } @@ -1028,7 +1064,8 @@ void gatherDeviceValues() } if (nodeSetting->logRValue) { - olaftoa(body.rValue, tempData, 1, sizeof(tempData) / sizeof(char)); + olaftoa(body.rValue, tempData1, 1, sizeof(tempData) / sizeof(char)); + sprintf(tempData, "%s,", tempData1); strcat(outputData, tempData); } } diff --git a/Firmware/OpenLog_Artemis/lowerPower.ino b/Firmware/OpenLog_Artemis/lowerPower.ino index d88b255..4ba9b23 100644 --- a/Firmware/OpenLog_Artemis/lowerPower.ino +++ b/Firmware/OpenLog_Artemis/lowerPower.ino @@ -204,11 +204,6 @@ void resetArtemis(void) //Disable pads for (int x = 0; x < 50; x++) { -// if ((x != ap3_gpio_pin2pad(PIN_POWER_LOSS)) && -// //(x != ap3_gpio_pin2pad(PIN_LOGIC_DEBUG)) && -// (x != ap3_gpio_pin2pad(PIN_MICROSD_POWER)) && -// (x != ap3_gpio_pin2pad(PIN_QWIIC_POWER)) && -// (x != ap3_gpio_pin2pad(PIN_IMU_POWER))) if ((x != PIN_POWER_LOSS) && //(x != PIN_LOGIC_DEBUG) && (x != PIN_MICROSD_POWER) && @@ -239,9 +234,7 @@ void resetArtemis(void) void goToSleep(uint32_t sysTicksToSleep) { printDebug("goToSleep: sysTicksToSleep = " + (String)sysTicksToSleep + "\r\n"); - - //printDebug("goToSleep: online.IMU = " + (String)online.IMU + "\r\n"); - + //Prevent voltage supervisor from waking us from sleep detachInterrupt(PIN_POWER_LOSS); @@ -276,37 +269,45 @@ void goToSleep(uint32_t sysTicksToSleep) delay(sdPowerDownDelay); // Give the SD card time to finish writing ***** THIS IS CRITICAL ***** + //qwiic.end(); //DO NOT Power down I2C - causes badness with v2.1 of the core: https://github.com/sparkfun/Arduino_Apollo3/issues/412 + + SPI.end(); //Power down SPI + + powerControlADC(false); //Power down ADC + + //Adjust sysTicks down by the amount we've be at 48MHz + //Read millis _before_ we switch to the lower power clock! + uint64_t msBeenAwake = rtcMillis() - lastAwakeTimeMillis; + uint64_t sysTicksAwake = msBeenAwake * 32768L / 1000L; //Convert to 32kHz systicks + if (sysTicksAwake < sysTicksToSleep) + sysTicksToSleep -= sysTicksAwake; + else + sysTicksToSleep = 0; + printDebug("goToSleep: sysTicksToSleep (adjusted) = " + (String)sysTicksToSleep + "\r\n\r\n"); + SerialFlush(); //Finish any prints + Serial.end(); + SerialLog.end(); + + //Force the peripherals off -// // Wire.end(); //Power down I2C -// qwiic.end(); //Power down I2C -// -// SPI.end(); //Power down SPI -// -// powerControlADC(false); // power_adc_disable(); //Power down ADC. It it started by default before setup(). -// -// Serial.end(); //Power down UART -// SerialLog.end(); - -// //Force the peripherals off -// am_hal_pwrctrl_periph_disable(AM_HAL_PWRCTRL_PERIPH_IOM0); -// am_hal_pwrctrl_periph_disable(AM_HAL_PWRCTRL_PERIPH_IOM1); -// am_hal_pwrctrl_periph_disable(AM_HAL_PWRCTRL_PERIPH_IOM2); -// am_hal_pwrctrl_periph_disable(AM_HAL_PWRCTRL_PERIPH_IOM3); -// am_hal_pwrctrl_periph_disable(AM_HAL_PWRCTRL_PERIPH_IOM4); -// am_hal_pwrctrl_periph_disable(AM_HAL_PWRCTRL_PERIPH_IOM5); -// am_hal_pwrctrl_periph_disable(AM_HAL_PWRCTRL_PERIPH_ADC); -// am_hal_pwrctrl_periph_disable(AM_HAL_PWRCTRL_PERIPH_UART0); -// am_hal_pwrctrl_periph_disable(AM_HAL_PWRCTRL_PERIPH_UART1); -// -// //Disable pads + //With v2.1 of the core, very bad things happen if the IOMs are disabled. + //We must leave them enabled. + //am_hal_pwrctrl_periph_disable(AM_HAL_PWRCTRL_PERIPH_IOM0); + //am_hal_pwrctrl_periph_disable(AM_HAL_PWRCTRL_PERIPH_IOM1); + //am_hal_pwrctrl_periph_disable(AM_HAL_PWRCTRL_PERIPH_IOM2); + //am_hal_pwrctrl_periph_disable(AM_HAL_PWRCTRL_PERIPH_IOM3); + //am_hal_pwrctrl_periph_disable(AM_HAL_PWRCTRL_PERIPH_IOM4); + //am_hal_pwrctrl_periph_disable(AM_HAL_PWRCTRL_PERIPH_IOM5); + + //The UARTs are more forgiving. We can disable those. + am_hal_pwrctrl_periph_disable(AM_HAL_PWRCTRL_PERIPH_UART0); + if (settings.useTxRxPinsForTerminal == true) + am_hal_pwrctrl_periph_disable(AM_HAL_PWRCTRL_PERIPH_UART1); + +// //DO NOT Disable all pads // for (int x = 0; x < 50; x++) // { -//// if ((x != ap3_gpio_pin2pad(PIN_POWER_LOSS)) && -//// //(x != ap3_gpio_pin2pad(PIN_LOGIC_DEBUG)) && -//// (x != ap3_gpio_pin2pad(PIN_MICROSD_POWER)) && -//// (x != ap3_gpio_pin2pad(PIN_QWIIC_POWER)) && -//// (x != ap3_gpio_pin2pad(PIN_IMU_POWER))) // if ((x != PIN_POWER_LOSS) && // //(x != PIN_LOGIC_DEBUG) && // (x != PIN_MICROSD_POWER) && @@ -317,6 +318,13 @@ void goToSleep(uint32_t sysTicksToSleep) // } // } + //Do disable pins 48 and 49 (UART0) to stop them back-feeding the CH340 + am_hal_gpio_pinconfig(48 , g_AM_HAL_GPIO_DISABLE); //TX0 + am_hal_gpio_pinconfig(49 , g_AM_HAL_GPIO_DISABLE); //RX0 + + //Disable the CIPO pull-up + disableCIPOpullUp(); + //Make sure PIN_POWER_LOSS is configured as an input for the WDT pinMode(PIN_POWER_LOSS, INPUT); // BD49K30G-TL has CMOS output and does not need a pull-up @@ -336,24 +344,17 @@ void goToSleep(uint32_t sysTicksToSleep) else powerLEDOff(); - //Adjust sysTicks down by the amount we've be at 48MHz - //Read millis _before_ we switch to the lower power clock! - uint32_t msBeenAwake = millis(); - uint32_t sysTicksAwake = msBeenAwake * 32768L / 1000L; //Convert to 32kHz systicks - -// //Power down cache, flash, SRAM -// am_hal_pwrctrl_memory_deepsleep_powerdown(AM_HAL_PWRCTRL_MEM_ALL); // Power down all flash and cache -// am_hal_pwrctrl_memory_deepsleep_retain(AM_HAL_PWRCTRL_MEM_SRAM_384K); // Retain all SRAM + //Power down cache, flash, SRAM + am_hal_pwrctrl_memory_deepsleep_powerdown(AM_HAL_PWRCTRL_MEM_ALL); // Power down all flash and cache + am_hal_pwrctrl_memory_deepsleep_retain(AM_HAL_PWRCTRL_MEM_SRAM_384K); // Retain all SRAM //Use the lower power 32kHz clock. Use it to run CT6 as well. am_hal_stimer_config(AM_HAL_STIMER_CFG_CLEAR | AM_HAL_STIMER_CFG_FREEZE); am_hal_stimer_config(AM_HAL_STIMER_XTAL_32KHZ | AM_HAL_STIMER_CFG_COMPARE_G_ENABLE); //Check that sysTicksToSleep is >> sysTicksAwake - if (sysTicksToSleep > (sysTicksAwake + 3277)) // Abort if we are trying to sleep for < 100ms + if (sysTicksToSleep > 3277) // Abort if we are trying to sleep for < 100ms { - sysTicksToSleep -= sysTicksAwake; - //Setup interrupt to trigger when the number of ms have elapsed am_hal_stimer_compare_delta_set(6, sysTicksToSleep); @@ -386,17 +387,16 @@ void wakeFromSleep() am_hal_stimer_config(AM_HAL_STIMER_CFG_CLEAR | AM_HAL_STIMER_CFG_FREEZE); am_hal_stimer_config(AM_HAL_STIMER_HFRC_3MHZ); -// // Power up SRAM, turn on entire Flash -// am_hal_pwrctrl_memory_deepsleep_powerdown(AM_HAL_PWRCTRL_MEM_MAX); -// -// // Go back to using the main clock -// am_hal_stimer_config(AM_HAL_STIMER_CFG_CLEAR | AM_HAL_STIMER_CFG_FREEZE); -// am_hal_stimer_config(AM_HAL_STIMER_HFRC_3MHZ); + // Power up SRAM, turn on entire Flash + am_hal_pwrctrl_memory_deepsleep_powerdown(AM_HAL_PWRCTRL_MEM_MAX); + + // Update lastAwakeTimeMillis + lastAwakeTimeMillis = rtcMillis(); //Turn on ADC -// initializeADC(); - //uint32_t adcError = (uint32_t)ap3_adc_setup(); - //uint32_t adcError = powerControlADC(true); + powerControlADC(true); + + //Re-enable analog inputs //if (settings.logA11 == true) adcError += (uint32_t)ap3_set_pin_to_analog(11); // Set _pad_ 11 to analog if enabled for logging //if (settings.logA12 == true) adcError += (uint32_t)ap3_set_pin_to_analog(12); // Set _pad_ 12 to analog if enabled for logging //if (settings.logA13 == true) adcError += (uint32_t)ap3_set_pin_to_analog(13); // Set _pad_ 13 to analog if enabled for logging @@ -447,19 +447,21 @@ void wakeFromSleep() powerLEDOn(); -// Serial.begin(settings.serialTerminalBaudRate); -// -// if (settings.useTxRxPinsForTerminal == true) -// { -// SerialLog.begin(settings.serialTerminalBaudRate); // Start the serial port -// } + //Re-enable pins 48 and 49 (UART0) + am_hal_gpio_pincfg_t txPinCfg = g_AM_BSP_GPIO_COM_UART_TX; + pin_config(PinName(48), txPinCfg); + am_hal_gpio_pincfg_t rxPinCfg = g_AM_BSP_GPIO_COM_UART_RX; + pin_config(PinName(49), rxPinCfg); - printDebug(F("wakeFromSleep: I'm awake!\r\n")); Serial.flush(); - //printDebug("wakeFromSleep: adcError is " + (String)adcError + "."); - //if (adcError > 0) - // printDebug(F(" This indicates an error was returned by ap3_adc_setup or one of the calls to ap3_set_pin_to_analog.")); - //printDebug(F("\r\n")); + Serial.begin(settings.serialTerminalBaudRate); + if (settings.useTxRxPinsForTerminal == true) + { + SerialLog.begin(settings.serialTerminalBaudRate); // Start the serial port + } + + printDebug(F("wakeFromSleep: I'm awake!\r\n")); SerialFlush(); + beginQwiic(); //Power up Qwiic bus as early as possible SPI.begin(); //Needed if SD is disabled @@ -523,7 +525,7 @@ void waitForQwiicBusPowerDelay() // Wait while the qwiic devices power up //Depending on what hardware is configured, the Qwiic bus may have only been turned on a few ms ago //Give sensors, specifically those with a low I2C address, time to turn on // If we're not using the SD card, everything will have happened much quicker than usual. - unsigned long qwiicPowerHasBeenOnFor = millis() - qwiicPowerOnTime; + uint64_t qwiicPowerHasBeenOnFor = bestMillis() - qwiicPowerOnTime; if (qwiicPowerHasBeenOnFor < qwiicPowerOnDelayMillis) { unsigned long delayFor = qwiicPowerOnDelayMillis - qwiicPowerHasBeenOnFor; @@ -544,7 +546,7 @@ void qwiicPowerOn() digitalWrite(PIN_QWIIC_POWER, HIGH); #endif - qwiicPowerOnTime = millis(); //Record this time so we wait enough time before detecting certain sensors + qwiicPowerOnTime = bestMillis(); //Record this time so we wait enough time before detecting certain sensors } void qwiicPowerOff() { diff --git a/Firmware/OpenLog_Artemis/menuMain.ino b/Firmware/OpenLog_Artemis/menuMain.ino index 2e0fd57..4cb6aa9 100644 --- a/Firmware/OpenLog_Artemis/menuMain.ino +++ b/Firmware/OpenLog_Artemis/menuMain.ino @@ -175,12 +175,7 @@ void menuMain() totalCharactersPrinted = 0; //If we are sleeping between readings then we cannot rely on millis() as it is powered down //Use RTC instead - if (((settings.useGPIO11ForTrigger == false) && (settings.usBetweenReadings >= maxUsBeforeSleep)) - || (settings.useGPIO11ForFastSlowLogging == true) - || (settings.useRTCForFastSlowLogging == true)) - measurementStartTime = rtcMillis(); - else - measurementStartTime = millis(); + measurementStartTime = bestMillis(); //Edge case: after 10Hz reading, user sets the log rate above 2s mark. We never go to sleep because //takeReading is not true. And since we don't wake up, takeReading never gets set to true. diff --git a/Firmware/OpenLog_Artemis/support.ino b/Firmware/OpenLog_Artemis/support.ino index d8972f1..d329474 100644 --- a/Firmware/OpenLog_Artemis/support.ino +++ b/Firmware/OpenLog_Artemis/support.ino @@ -1,3 +1,18 @@ +bool useRTCmillis(void) +{ + return (((settings.useGPIO11ForTrigger == false) && (settings.usBetweenReadings >= maxUsBeforeSleep)) + || (settings.useGPIO11ForFastSlowLogging == true) + || (settings.useRTCForFastSlowLogging == true)); +} + +uint64_t bestMillis(void) +{ + if (useRTCmillis()) + return(rtcMillis()); + else + return(millis()); +} + void printDebug(String thingToPrint) { if(settings.printDebugMessages == true) From b7d77c9fadfd02f06d7258159e0fb5038bc85f1e Mon Sep 17 00:00:00 2001 From: PaulZC Date: Thu, 8 Jul 2021 14:38:16 +0100 Subject: [PATCH 09/15] Change SerialLog to Serial1. Manually reconfigure TX and RX before using Serial1. --- Firmware/OpenLog_Artemis/OpenLog_Artemis.ino | 104 ++++++++---- Firmware/OpenLog_Artemis/Sensors.ino | 9 +- Firmware/OpenLog_Artemis/lowerPower.ino | 86 +++++----- .../OpenLog_Artemis/menuAnalogLogging.ino | 2 + .../OpenLog_Artemis/menuAttachedDevices.ino | 4 +- Firmware/OpenLog_Artemis/menuMain.ino | 6 +- Firmware/OpenLog_Artemis/menuPower.ino | 2 + .../OpenLog_Artemis/menuSerialLogging.ino | 8 +- Firmware/OpenLog_Artemis/menuTerminal.ino | 22 ++- Firmware/OpenLog_Artemis/menuTimeStamp.ino | 2 +- Firmware/OpenLog_Artemis/productionTest.ino | 149 +++++++++--------- Firmware/OpenLog_Artemis/support.ino | 40 ++--- Firmware/OpenLog_Artemis/zmodem.ino | 16 +- 13 files changed, 271 insertions(+), 179 deletions(-) diff --git a/Firmware/OpenLog_Artemis/OpenLog_Artemis.ino b/Firmware/OpenLog_Artemis/OpenLog_Artemis.ino index 3dff4b0..be69aa4 100644 --- a/Firmware/OpenLog_Artemis/OpenLog_Artemis.ino +++ b/Firmware/OpenLog_Artemis/OpenLog_Artemis.ino @@ -92,13 +92,21 @@ (done) Add support for exFAT. Requires v2.0.6 of Bill Greiman's SdFat library. https://github.com/sparkfun/OpenLog_Artemis/issues/34 (done) Add minimum awake time: https://github.com/sparkfun/OpenLog_Artemis/issues/83 (done) Add support for the Pulse Oximeter and Qwiic Button: https://github.com/sparkfun/OpenLog_Artemis/issues/81 + (in progress) Update to Apollo3 v2.1.0 - FIRMWARE_VERSION_MAJOR = 2. (done) Implement printf float (OLA uses printf float in _so_ many places...): https://github.com/sparkfun/Arduino_Apollo3/issues/278 (worked around) Figure out why attachInterrupt(PIN_POWER_LOSS, powerDownOLA, FALLING); causes badness (done) Add a setQwiicPullups function (done) Check if we need ap3_set_pin_to_analog when coming out of sleep - (TO DO) Correct SerialLog RX: https://github.com/sparkfun/Arduino_Apollo3/issues/401 - (done) Investigate why code does not wake from deep sleep correctly + (done?) Investigate why code does not wake from deep sleep correctly + (worked around) Correct SerialLog RX: https://github.com/sparkfun/Arduino_Apollo3/issues/401 + The work-around is to manually edit the PinNames.h for the SFE_ARTEMIS_ATP and change the pins for Serial1 + If you are using Windows, you will find PinNames.h in: + C:\Users\\AppData\Local\Arduino15\packages\SparkFun\hardware\apollo3\2.1.0\cores\mbed-os\targets\TARGET_Ambiq_Micro\TARGET_Apollo3\TARGET_SFE_ARTEMIS_ATP + Change lines 123 and 124 to: + SERIAL1_TX = D12, // Fix for OLA - was D24, + SERIAL1_RX = D13, // Fix for OLA - was D25, + (in progress) Reduce sleep current as much as possible. v1.2.1 achieved ~110uA. With v2.1 the draw is more like 500uA... */ const int FIRMWARE_VERSION_MAJOR = 2; @@ -213,7 +221,9 @@ Apollo3RTC myRTC; //Create instance of RTC class //Create UART instance for OpenLog style serial logging //-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=- -UART SerialLog(BREAKOUT_PIN_TX, BREAKOUT_PIN_RX); // Declares a Uart object called Serial1 with TX on pin 12 and RX on pin 13 + +//UART SerialLog(BREAKOUT_PIN_TX, BREAKOUT_PIN_RX); // Declares a Uart object called SerialLog with TX on pin 12 and RX on pin 13 + uint64_t lastSeriaLogSyncTime = 0; uint64_t lastAwakeTimeMillis; const int MAX_IDLE_TIME_MSEC = 500; @@ -294,12 +304,12 @@ void SerialPrintln(const char *); void SerialPrintln(const __FlashStringHelper *); void DoSerialPrint(char (*)(const char *), const char *, bool newLine = false); -#define DUMP( varname ) {Serial.printf("%s: %d\r\n", #varname, varname); if (settings.useTxRxPinsForTerminal == true) SerialLog.printf("%s: %d\r\n", #varname, varname);} -#define SerialPrintf1( var ) {Serial.printf( var ); if (settings.useTxRxPinsForTerminal == true) SerialLog.printf( var );} -#define SerialPrintf2( var1, var2 ) {Serial.printf( var1, var2 ); if (settings.useTxRxPinsForTerminal == true) SerialLog.printf( var1, var2 );} -#define SerialPrintf3( var1, var2, var3 ) {Serial.printf( var1, var2, var3 ); if (settings.useTxRxPinsForTerminal == true) SerialLog.printf( var1, var2, var3 );} -#define SerialPrintf4( var1, var2, var3, var4 ) {Serial.printf( var1, var2, var3, var4 ); if (settings.useTxRxPinsForTerminal == true) SerialLog.printf( var1, var2, var3, var4 );} -#define SerialPrintf5( var1, var2, var3, var4, var5 ) {Serial.printf( var1, var2, var3, var4, var5 ); if (settings.useTxRxPinsForTerminal == true) SerialLog.printf( var1, var2, var3, var4, var5 );} +#define DUMP( varname ) {Serial.printf("%s: %d\r\n", #varname, varname); if (settings.useTxRxPinsForTerminal == true) Serial1.printf("%s: %d\r\n", #varname, varname);} +#define SerialPrintf1( var ) {Serial.printf( var ); if (settings.useTxRxPinsForTerminal == true) Serial1.printf( var );} +#define SerialPrintf2( var1, var2 ) {Serial.printf( var1, var2 ); if (settings.useTxRxPinsForTerminal == true) Serial1.printf( var1, var2 );} +#define SerialPrintf3( var1, var2, var3 ) {Serial.printf( var1, var2, var3 ); if (settings.useTxRxPinsForTerminal == true) Serial1.printf( var1, var2, var3 );} +#define SerialPrintf4( var1, var2, var3, var4 ) {Serial.printf( var1, var2, var3, var4 ); if (settings.useTxRxPinsForTerminal == true) Serial1.printf( var1, var2, var3, var4 );} +#define SerialPrintf5( var1, var2, var3, var4, var5 ) {Serial.printf( var1, var2, var3, var4, var5 ); if (settings.useTxRxPinsForTerminal == true) Serial1.printf( var1, var2, var3, var4, var5 );} // The Serial port for the Zmodem connection // must not be the same as DSERIAL unless all @@ -325,15 +335,24 @@ void setup() { pinMode(PIN_STAT_LED, OUTPUT); digitalWrite(PIN_STAT_LED, HIGH); // Turn the STAT LED on while we configure everything - Serial.begin(115200); //Default for initial debug messages if necessary - pinMode(BREAKOUT_PIN_RX, INPUT); - SerialLog.begin(115200); //Default for initial debug messages if necessary - SerialPrintln(F("")); - SPI.begin(); //Needed if SD is disabled + //Do not start Serial1 before productionTest() otherwise the pin configuration gets overwritten + //and subsequent Serial1.begin's don't restore the pins to UART mode... + productionTest(); //Check if we need to go into production test mode + //We need to manually restore the Serial1 TX and RX pins after they were changed by productionTest() + am_hal_gpio_pincfg_t pinConfigTx = g_AM_BSP_GPIO_COM_UART_TX; + pinConfigTx.uFuncSel = AM_HAL_PIN_12_UART1TX; + pin_config(PinName(BREAKOUT_PIN_TX), pinConfigTx); + am_hal_gpio_pincfg_t pinConfigRx = g_AM_BSP_GPIO_COM_UART_RX; + pinConfigRx.uFuncSel = AM_HAL_PIN_13_UART1RX; + pin_config(PinName(BREAKOUT_PIN_RX), pinConfigRx); + + Serial.begin(115200); //Default for initial debug messages if necessary + Serial1.begin(115200); //Default for initial debug messages if necessary + //pinMode(PIN_LOGIC_DEBUG, OUTPUT); // Debug pin to assist tracking down slippery mux bugs //digitalWrite(PIN_LOGIC_DEBUG, HIGH); @@ -353,16 +372,18 @@ void setup() { if (settings.useTxRxPinsForTerminal == true) { - SerialLog.begin(settings.serialTerminalBaudRate); // Restart the serial port + Serial1.flush(); //Complete any previous prints at the previous baud rate + Serial1.begin(settings.serialTerminalBaudRate); // Restart the serial port } else { - SerialLog.end(); // Stop the SerialLog port + Serial1.flush(); //Complete any previous prints + Serial1.end(); // Stop the SerialLog port } Serial.flush(); //Complete any previous prints Serial.begin(settings.serialTerminalBaudRate); - + SerialPrintf3("Artemis OpenLog v%d.%d\r\n", FIRMWARE_VERSION_MAJOR, FIRMWARE_VERSION_MINOR); if (settings.useGPIO32ForStopLogging == true) @@ -431,7 +452,7 @@ void setup() { if ((deviceCount == 0) && (settings.resetOnZeroDeviceCount == true)) // Check for resetOnZeroDeviceCount { - if ((Serial.available()) || ((settings.useTxRxPinsForTerminal == true) && (SerialLog.available()))) + if ((Serial.available()) || ((settings.useTxRxPinsForTerminal == true) && (Serial1.available()))) menuMain(); //Present user menu - in case the user wants to disable resetOnZeroDeviceCount else { @@ -464,7 +485,7 @@ void loop() { checkBattery(); // Check for low battery - if ((Serial.available()) || ((settings.useTxRxPinsForTerminal == true) && (SerialLog.available()))) + if ((Serial.available()) || ((settings.useTxRxPinsForTerminal == true) && (Serial1.available()))) menuMain(); //Present user menu if (settings.logSerial == true && online.serialLogging == true && settings.useTxRxPinsForTerminal == false) @@ -473,9 +494,9 @@ void loop() { //SerialPrintf2("timestampCharsLeftToWrite is %d\r\n", timestampCharsLeftToWrite); //SerialFlush(); - if (SerialLog.available() || (timestampCharsLeftToWrite > 0)) + if (Serial1.available() || (timestampCharsLeftToWrite > 0)) { - while (SerialLog.available() || (timestampCharsLeftToWrite > 0)) + while (Serial1.available() || (timestampCharsLeftToWrite > 0)) { if (timestampCharsLeftToWrite > 0) // Based on code written by @DennisMelamed in PR #70 { @@ -490,7 +511,7 @@ void loop() { } else { - incomingBuffer[incomingBufferSpot++] = SerialLog.read(); + incomingBuffer[incomingBufferSpot++] = Serial1.read(); //Get the RTC timestamp if we just received the timestamp token if (settings.timestampSerial && (incomingBuffer[incomingBufferSpot-1] == settings.timeStampToken)) @@ -612,7 +633,7 @@ void loop() { //Output to TX pin if ((settings.outputSerial == true) && (online.serialOutput == true)) - SerialLog.print(outputData); //Print to TX pin + Serial1.print(outputData); //Print to TX pin //Record to SD if (settings.logData == true) @@ -812,6 +833,7 @@ bool checkSleepOnRTCTime(void) void beginQwiic() { pinMode(PIN_QWIIC_POWER, OUTPUT); + pin_config(PinName(PIN_QWIIC_POWER), g_AM_HAL_GPIO_OUTPUT); // Make sure the pin does actually get re-configured after being disabled qwiicPowerOn(); qwiic.begin(); setQwiicPullups(settings.qwiicBusPullUps); //Just to make it really clear what pull-ups are being used, set pullups here. @@ -856,7 +878,9 @@ void setQwiicPullups(uint32_t qwiicBusPullUps) void beginSD() { pinMode(PIN_MICROSD_POWER, OUTPUT); + pin_config(PinName(PIN_MICROSD_POWER), g_AM_HAL_GPIO_OUTPUT); // Make sure the pin does actually get re-configured after being disabled pinMode(PIN_MICROSD_CHIP_SELECT, OUTPUT); + pin_config(PinName(PIN_MICROSD_CHIP_SELECT), g_AM_HAL_GPIO_OUTPUT); // Make sure the pin does actually get re-configured after being disabled digitalWrite(PIN_MICROSD_CHIP_SELECT, HIGH); //Be sure SD is deselected if (settings.enableSD == true) @@ -928,7 +952,9 @@ void disableCIPOpullUp() // updated for v2.1.0 of the Apollo3 core void beginIMU() { pinMode(PIN_IMU_POWER, OUTPUT); + pin_config(PinName(PIN_IMU_POWER), g_AM_HAL_GPIO_OUTPUT); // Make sure the pin does actually get re-configured after being disabled pinMode(PIN_IMU_CHIP_SELECT, OUTPUT); + pin_config(PinName(PIN_IMU_CHIP_SELECT), g_AM_HAL_GPIO_OUTPUT); // Make sure the pin does actually get re-configured after being disabled digitalWrite(PIN_IMU_CHIP_SELECT, HIGH); //Be sure IMU is deselected if (settings.enableIMU == true && settings.logMaxRate == false) @@ -1218,7 +1244,15 @@ void beginSerialLogging() updateDataFileCreate(&serialDataFile); // Update the file create time & date - SerialLog.begin(settings.serialLogBaudRate); + //We need to manually restore the Serial1 TX and RX pins + am_hal_gpio_pincfg_t pinConfigTx = g_AM_BSP_GPIO_COM_UART_TX; + pinConfigTx.uFuncSel = AM_HAL_PIN_12_UART1TX; + pin_config(PinName(BREAKOUT_PIN_TX), pinConfigTx); + am_hal_gpio_pincfg_t pinConfigRx = g_AM_BSP_GPIO_COM_UART_RX; + pinConfigRx.uFuncSel = AM_HAL_PIN_13_UART1RX; + pin_config(PinName(BREAKOUT_PIN_RX), pinConfigRx); + + Serial1.begin(settings.serialLogBaudRate); online.serialLogging = true; } @@ -1230,7 +1264,15 @@ void beginSerialOutput() { if (settings.outputSerial == true) { - SerialLog.begin(settings.serialLogBaudRate); // (Re)start the serial port + //We need to manually restore the Serial1 TX and RX pins + am_hal_gpio_pincfg_t pinConfigTx = g_AM_BSP_GPIO_COM_UART_TX; + pinConfigTx.uFuncSel = AM_HAL_PIN_12_UART1TX; + pin_config(PinName(BREAKOUT_PIN_TX), pinConfigTx); + am_hal_gpio_pincfg_t pinConfigRx = g_AM_BSP_GPIO_COM_UART_RX; + pinConfigRx.uFuncSel = AM_HAL_PIN_13_UART1RX; + pin_config(PinName(BREAKOUT_PIN_RX), pinConfigRx); + + Serial1.begin(settings.serialLogBaudRate); // (Re)start the serial port online.serialOutput = true; } else @@ -1302,7 +1344,7 @@ void SerialFlush(void) Serial.flush(); if (settings.useTxRxPinsForTerminal == true) { - SerialLog.flush(); + Serial1.flush(); } } @@ -1315,8 +1357,7 @@ void SerialPrint(const char *line) void SerialPrint(const __FlashStringHelper *line) { - DoSerialPrint([](const char *ptr) {return (char) pgm_read_byte_near(ptr);}, - (const char*) line); + DoSerialPrint([](const char *ptr) {return (char) pgm_read_byte_near(ptr);}, (const char*) line); } void SerialPrintln(const char *line) @@ -1326,8 +1367,7 @@ void SerialPrintln(const char *line) void SerialPrintln(const __FlashStringHelper *line) { - DoSerialPrint([](const char *ptr) {return (char) pgm_read_byte_near(ptr);}, - (const char*) line, true); + DoSerialPrint([](const char *ptr) {return (char) pgm_read_byte_near(ptr);}, (const char*) line, true); } void DoSerialPrint(char (*funct)(const char *), const char *string, bool newLine) @@ -1338,13 +1378,13 @@ void DoSerialPrint(char (*funct)(const char *), const char *string, bool newLine { Serial.print(ch); if (settings.useTxRxPinsForTerminal == true) - SerialLog.print(ch); + Serial1.print(ch); } if (newLine) { Serial.println(); if (settings.useTxRxPinsForTerminal == true) - SerialLog.println(); + Serial1.println(); } } diff --git a/Firmware/OpenLog_Artemis/Sensors.ino b/Firmware/OpenLog_Artemis/Sensors.ino index 89df396..aefa4b1 100644 --- a/Firmware/OpenLog_Artemis/Sensors.ino +++ b/Firmware/OpenLog_Artemis/Sensors.ino @@ -189,9 +189,12 @@ void getData() //If we are sleeping between readings then we cannot rely on millis() as it is powered down //Use RTC instead currentMillis = bestMillis(); - - float actualRate = measurementCount * 1000.0 / (currentMillis - measurementStartTime); - olaftoa(actualRate, tempData1, 2, sizeof(tempData) / sizeof(char)); + float actualRate; + if ((currentMillis - measurementStartTime) < 1) // Avoid divide by zero + actualRate = 0.0; + else + actualRate = measurementCount * 1000.0 / (currentMillis - measurementStartTime); + olaftoa(actualRate, tempData1, 3, sizeof(tempData) / sizeof(char)); sprintf(tempData, "%s,", tempData1); strcat(outputData, tempData); } diff --git a/Firmware/OpenLog_Artemis/lowerPower.ino b/Firmware/OpenLog_Artemis/lowerPower.ino index 4ba9b23..16a5218 100644 --- a/Firmware/OpenLog_Artemis/lowerPower.ino +++ b/Firmware/OpenLog_Artemis/lowerPower.ino @@ -95,9 +95,10 @@ void powerDownOLA(void) powerControlADC(false); // power_adc_disable(); //Power down ADC. It it started by default before setup(). Serial.end(); //Power down UART - SerialLog.end(); + Serial1.end(); //Force the peripherals off + //This will cause badness with v2.1 of the core but we don't care as we are waiting for a reset am_hal_pwrctrl_periph_disable(AM_HAL_PWRCTRL_PERIPH_IOM0); am_hal_pwrctrl_periph_disable(AM_HAL_PWRCTRL_PERIPH_IOM1); am_hal_pwrctrl_periph_disable(AM_HAL_PWRCTRL_PERIPH_IOM2); @@ -108,14 +109,9 @@ void powerDownOLA(void) am_hal_pwrctrl_periph_disable(AM_HAL_PWRCTRL_PERIPH_UART0); am_hal_pwrctrl_periph_disable(AM_HAL_PWRCTRL_PERIPH_UART1); - //Disable pads + //Disable pads (this disables the LEDs too) for (int x = 0; x < 50; x++) { -// if ((x != ap3_gpio_pin2pad(PIN_POWER_LOSS)) && -// //(x != ap3_gpio_pin2pad(PIN_LOGIC_DEBUG)) && -// (x != ap3_gpio_pin2pad(PIN_MICROSD_POWER)) && -// (x != ap3_gpio_pin2pad(PIN_QWIIC_POWER)) && -// (x != ap3_gpio_pin2pad(PIN_IMU_POWER))) if ((x != PIN_POWER_LOSS) && //(x != PIN_LOGIC_DEBUG) && (x != PIN_MICROSD_POWER) && @@ -126,8 +122,6 @@ void powerDownOLA(void) } } - //powerLEDOff(); - //Make sure PIN_POWER_LOSS is configured as an input for the WDT pinMode(PIN_POWER_LOSS, INPUT); // BD49K30G-TL has CMOS output and does not need a pull-up @@ -188,9 +182,10 @@ void resetArtemis(void) powerControlADC(false); // power_adc_disable(); //Power down ADC. It it started by default before setup(). Serial.end(); //Power down UART - SerialLog.end(); + Serial1.end(); //Force the peripherals off + //This will cause badness with v2.1 of the core but we don't care as we are going to force a WDT reset am_hal_pwrctrl_periph_disable(AM_HAL_PWRCTRL_PERIPH_IOM0); am_hal_pwrctrl_periph_disable(AM_HAL_PWRCTRL_PERIPH_IOM1); am_hal_pwrctrl_periph_disable(AM_HAL_PWRCTRL_PERIPH_IOM2); @@ -287,14 +282,14 @@ void goToSleep(uint32_t sysTicksToSleep) SerialFlush(); //Finish any prints Serial.end(); - SerialLog.end(); + Serial1.end(); //Force the peripherals off //With v2.1 of the core, very bad things happen if the IOMs are disabled. - //We must leave them enabled. - //am_hal_pwrctrl_periph_disable(AM_HAL_PWRCTRL_PERIPH_IOM0); - //am_hal_pwrctrl_periph_disable(AM_HAL_PWRCTRL_PERIPH_IOM1); + //We must leave them enabled: https://github.com/sparkfun/Arduino_Apollo3/issues/412 + //am_hal_pwrctrl_periph_disable(AM_HAL_PWRCTRL_PERIPH_IOM0); // SPI + //am_hal_pwrctrl_periph_disable(AM_HAL_PWRCTRL_PERIPH_IOM1); // qwiic I2C //am_hal_pwrctrl_periph_disable(AM_HAL_PWRCTRL_PERIPH_IOM2); //am_hal_pwrctrl_periph_disable(AM_HAL_PWRCTRL_PERIPH_IOM3); //am_hal_pwrctrl_periph_disable(AM_HAL_PWRCTRL_PERIPH_IOM4); @@ -305,26 +300,22 @@ void goToSleep(uint32_t sysTicksToSleep) if (settings.useTxRxPinsForTerminal == true) am_hal_pwrctrl_periph_disable(AM_HAL_PWRCTRL_PERIPH_UART1); -// //DO NOT Disable all pads -// for (int x = 0; x < 50; x++) -// { -// if ((x != PIN_POWER_LOSS) && -// //(x != PIN_LOGIC_DEBUG) && -// (x != PIN_MICROSD_POWER) && -// (x != PIN_QWIIC_POWER) && -// (x != PIN_IMU_POWER)) -// { -// am_hal_gpio_pinconfig(x, g_AM_HAL_GPIO_DISABLE); -// } -// } + //Disable as many pins as we can + const int pinsToDisable[] = {0,1,2,10,14,17,12,24,25,28,36,38,39,40,41,42,43,45,21,22,16,31,35,-1}; + for (int x = 0; pinsToDisable[x] >= 0; x++) + { + am_hal_gpio_pinconfig(PinName(pinsToDisable[x]), g_AM_HAL_GPIO_DISABLE); + } + + //Do disable the ICM pins to minimise the current draw during deep sleep + am_hal_gpio_pinconfig(D6 , g_AM_HAL_GPIO_DISABLE); //ICM / microSD CIPO + am_hal_gpio_pinconfig(D44 , g_AM_HAL_GPIO_DISABLE); //ICM CS + am_hal_gpio_pinconfig(D37 , g_AM_HAL_GPIO_DISABLE); //ICM INT //Do disable pins 48 and 49 (UART0) to stop them back-feeding the CH340 am_hal_gpio_pinconfig(48 , g_AM_HAL_GPIO_DISABLE); //TX0 am_hal_gpio_pinconfig(49 , g_AM_HAL_GPIO_DISABLE); //RX0 - //Disable the CIPO pull-up - disableCIPOpullUp(); - //Make sure PIN_POWER_LOSS is configured as an input for the WDT pinMode(PIN_POWER_LOSS, INPUT); // BD49K30G-TL has CMOS output and does not need a pull-up @@ -409,10 +400,11 @@ void wakeFromSleep() //If 3.3V rail drops below 3V, system will enter low power mode and maintain RTC pinMode(PIN_POWER_LOSS, INPUT); // BD49K30G-TL has CMOS output and does not need a pull-up + pin_config(PinName(PIN_POWER_LOSS), g_AM_HAL_GPIO_INPUT); // Make sure the pin does actually get re-configured after being disabled delay(1); // Let PIN_POWER_LOSS stabilize - //if (digitalRead(PIN_POWER_LOSS) == LOW) powerDownOLA(); //Check PIN_POWER_LOSS just in case we missed the falling edge + if (digitalRead(PIN_POWER_LOSS) == LOW) powerDownOLA(); //Check PIN_POWER_LOSS just in case we missed the falling edge //attachInterrupt(PIN_POWER_LOSS, powerDownOLA, FALLING); // TO DO: figure out why this no longer works on v2.1.0 attachInterrupt(PIN_POWER_LOSS, powerLossISR, FALLING); @@ -421,6 +413,7 @@ void wakeFromSleep() if (settings.useGPIO32ForStopLogging == true) { pinMode(PIN_STOP_LOGGING, INPUT_PULLUP); + pin_config(PinName(PIN_STOP_LOGGING), g_AM_HAL_GPIO_INPUT_PULLUP); // Make sure the pin does actually get re-configured after being disabled delay(1); // Let the pin stabilize attachInterrupt(PIN_STOP_LOGGING, stopLoggingISR, FALLING); // Enable the interrupt stopLoggingSeen = false; // Make sure the flag is clear @@ -429,6 +422,7 @@ void wakeFromSleep() if (settings.useGPIO11ForTrigger == true) //(This should be redundant. We should not be going to sleep if triggering is enabled?) { pinMode(PIN_TRIGGER, INPUT_PULLUP); + pin_config(PinName(PIN_TRIGGER), g_AM_HAL_GPIO_INPUT_PULLUP); // Make sure the pin does actually get re-configured after being disabled delay(1); // Let the pin stabilize if (settings.fallingEdgeTrigger == true) attachInterrupt(PIN_TRIGGER, triggerPinISR, FALLING); // Enable the interrupt @@ -440,24 +434,36 @@ void wakeFromSleep() if (settings.useGPIO11ForFastSlowLogging == true) { pinMode(PIN_TRIGGER, INPUT_PULLUP); + pin_config(PinName(PIN_TRIGGER), g_AM_HAL_GPIO_INPUT_PULLUP); // Make sure the pin does actually get re-configured after being disabled } pinMode(PIN_STAT_LED, OUTPUT); + pin_config(PinName(PIN_STAT_LED), g_AM_HAL_GPIO_OUTPUT); // Make sure the pin does actually get re-configured after being disabled digitalWrite(PIN_STAT_LED, LOW); powerLEDOn(); //Re-enable pins 48 and 49 (UART0) - am_hal_gpio_pincfg_t txPinCfg = g_AM_BSP_GPIO_COM_UART_TX; - pin_config(PinName(48), txPinCfg); - am_hal_gpio_pincfg_t rxPinCfg = g_AM_BSP_GPIO_COM_UART_RX; - pin_config(PinName(49), rxPinCfg); + pin_config(PinName(48), g_AM_BSP_GPIO_COM_UART_TX); + pin_config(PinName(49), g_AM_BSP_GPIO_COM_UART_RX); + + //Re-enable CIPO and ICM_CS but may as well leave ICM_INT disabled + pin_config(D6, g_AM_BSP_GPIO_IOM0_MISO); + pin_config(D44, g_AM_HAL_GPIO_OUTPUT); Serial.begin(settings.serialTerminalBaudRate); if (settings.useTxRxPinsForTerminal == true) { - SerialLog.begin(settings.serialTerminalBaudRate); // Start the serial port + //We may need to manually restore the Serial1 TX and RX pins? + am_hal_gpio_pincfg_t pinConfigTx = g_AM_BSP_GPIO_COM_UART_TX; + pinConfigTx.uFuncSel = AM_HAL_PIN_12_UART1TX; + pin_config(PinName(BREAKOUT_PIN_TX), pinConfigTx); + am_hal_gpio_pincfg_t pinConfigRx = g_AM_BSP_GPIO_COM_UART_RX; + pinConfigRx.uFuncSel = AM_HAL_PIN_13_UART1RX; + pin_config(PinName(BREAKOUT_PIN_RX), pinConfigRx); + + Serial1.begin(settings.serialTerminalBaudRate); // Start the serial port } printDebug(F("wakeFromSleep: I'm awake!\r\n")); SerialFlush(); @@ -514,7 +520,7 @@ void stopLogging(void) SerialPrint(F("Logging is stopped. Please reset OpenLog Artemis and open a terminal at ")); Serial.print((String)settings.serialTerminalBaudRate); if (settings.useTxRxPinsForTerminal == true) - SerialLog.print((String)settings.serialTerminalBaudRate); + Serial1.print((String)settings.serialTerminalBaudRate); SerialPrintln(F("bps...")); delay(sdPowerDownDelay); // Give the SD card time to shut down powerDownOLA(); @@ -540,6 +546,7 @@ void waitForQwiicBusPowerDelay() // Wait while the qwiic devices power up void qwiicPowerOn() { pinMode(PIN_QWIIC_POWER, OUTPUT); + pin_config(PinName(PIN_QWIIC_POWER), g_AM_HAL_GPIO_OUTPUT); // Make sure the pin does actually get re-configured after being disabled #if(HARDWARE_VERSION_MAJOR == 0) digitalWrite(PIN_QWIIC_POWER, LOW); #else @@ -551,6 +558,7 @@ void qwiicPowerOn() void qwiicPowerOff() { pinMode(PIN_QWIIC_POWER, OUTPUT); + pin_config(PinName(PIN_QWIIC_POWER), g_AM_HAL_GPIO_OUTPUT); // Make sure the pin does actually get re-configured after being disabled #if(HARDWARE_VERSION_MAJOR == 0) digitalWrite(PIN_QWIIC_POWER, HIGH); #else @@ -561,22 +569,26 @@ void qwiicPowerOff() void microSDPowerOn() { pinMode(PIN_MICROSD_POWER, OUTPUT); + pin_config(PinName(PIN_MICROSD_POWER), g_AM_HAL_GPIO_OUTPUT); // Make sure the pin does actually get re-configured after being disabled digitalWrite(PIN_MICROSD_POWER, LOW); } void microSDPowerOff() { pinMode(PIN_MICROSD_POWER, OUTPUT); + pin_config(PinName(PIN_MICROSD_POWER), g_AM_HAL_GPIO_OUTPUT); // Make sure the pin does actually get re-configured after being disabled digitalWrite(PIN_MICROSD_POWER, HIGH); } void imuPowerOn() { pinMode(PIN_IMU_POWER, OUTPUT); + pin_config(PinName(PIN_IMU_POWER), g_AM_HAL_GPIO_OUTPUT); // Make sure the pin does actually get re-configured after being disabled digitalWrite(PIN_IMU_POWER, HIGH); } void imuPowerOff() { pinMode(PIN_IMU_POWER, OUTPUT); + pin_config(PinName(PIN_IMU_POWER), g_AM_HAL_GPIO_OUTPUT); // Make sure the pin does actually get re-configured after being disabled digitalWrite(PIN_IMU_POWER, LOW); } @@ -584,6 +596,7 @@ void powerLEDOn() { #if(HARDWARE_VERSION_MAJOR >= 1) pinMode(PIN_PWR_LED, OUTPUT); + pin_config(PinName(PIN_PWR_LED), g_AM_HAL_GPIO_OUTPUT); // Make sure the pin does actually get re-configured after being disabled digitalWrite(PIN_PWR_LED, HIGH); // Turn the Power LED on #endif } @@ -591,6 +604,7 @@ void powerLEDOff() { #if(HARDWARE_VERSION_MAJOR >= 1) pinMode(PIN_PWR_LED, OUTPUT); + pin_config(PinName(PIN_PWR_LED), g_AM_HAL_GPIO_OUTPUT); // Make sure the pin does actually get re-configured after being disabled digitalWrite(PIN_PWR_LED, LOW); // Turn the Power LED off #endif } diff --git a/Firmware/OpenLog_Artemis/menuAnalogLogging.ino b/Firmware/OpenLog_Artemis/menuAnalogLogging.ino index f53556c..378c370 100644 --- a/Firmware/OpenLog_Artemis/menuAnalogLogging.ino +++ b/Firmware/OpenLog_Artemis/menuAnalogLogging.ino @@ -56,6 +56,7 @@ void menuAnalogLogging() settings.useGPIO11ForTrigger = false; detachInterrupt(PIN_TRIGGER); // Disable the interrupt pinMode(PIN_TRIGGER, INPUT); // Remove the pull-up + pin_config(PinName(PIN_TRIGGER), g_AM_HAL_GPIO_INPUT); // Make sure the pin does actually get re-configured after being disabled triggerEdgeSeen = false; // Make sure the flag is clear } else @@ -119,6 +120,7 @@ void menuAnalogLogging() settings.useGPIO32ForStopLogging = false; detachInterrupt(PIN_STOP_LOGGING); // Disable the interrupt pinMode(PIN_STOP_LOGGING, INPUT); // Remove the pull-up + pin_config(PinName(PIN_STOP_LOGGING), g_AM_HAL_GPIO_INPUT); // Make sure the pin does actually get re-configured after being disabled } else settings.logA32 = false; diff --git a/Firmware/OpenLog_Artemis/menuAttachedDevices.ino b/Firmware/OpenLog_Artemis/menuAttachedDevices.ino index 7990641..732c58e 100644 --- a/Firmware/OpenLog_Artemis/menuAttachedDevices.ino +++ b/Firmware/OpenLog_Artemis/menuAttachedDevices.ino @@ -878,7 +878,7 @@ void menuConfigure_NAU7802(void *configPtr) SerialPrint(F("New zero offset: ")); Serial.println(sensor->getZeroOffset()); if (settings.useTxRxPinsForTerminal == true) - SerialLog.println(sensor->getZeroOffset()); + Serial1.println(sensor->getZeroOffset()); SerialPrintln(F("Place known weight on scale. Press a key when weight is in place and stable.")); waitForInput(); @@ -1574,7 +1574,7 @@ void menuConfigure_SCD30(void *configPtr) SerialPrint(F("The current temperature offset read from the sensor is: ")); Serial.print(sensor->getTemperatureOffset(), 2); if (settings.useTxRxPinsForTerminal == true) - SerialLog.print(sensor->getTemperatureOffset(), 2); + Serial1.print(sensor->getTemperatureOffset(), 2); SerialPrintln(F("C")); SerialPrint(F("Enter new temperature offset in C (-50 to 50): ")); int amt = getNumber(menuTimeout); //x second timeout diff --git a/Firmware/OpenLog_Artemis/menuMain.ino b/Firmware/OpenLog_Artemis/menuMain.ino index 4cb6aa9..c65d62d 100644 --- a/Firmware/OpenLog_Artemis/menuMain.ino +++ b/Firmware/OpenLog_Artemis/menuMain.ino @@ -111,7 +111,7 @@ void menuMain() SerialPrint(F("Settings erased. Please reset OpenLog Artemis and open a terminal at ")); Serial.print((String)settings.serialTerminalBaudRate); if (settings.useTxRxPinsForTerminal == true) - SerialLog.print((String)settings.serialTerminalBaudRate); + Serial1.print((String)settings.serialTerminalBaudRate); SerialPrintln(F("bps...")); while (1); } @@ -140,7 +140,7 @@ void menuMain() SerialPrint(F("Log files are closed. Please reset OpenLog Artemis and open a terminal at ")); Serial.print((String)settings.serialTerminalBaudRate); if (settings.useTxRxPinsForTerminal == true) - SerialLog.print((String)settings.serialTerminalBaudRate); + Serial1.print((String)settings.serialTerminalBaudRate); SerialPrintln(F("bps...")); delay(sdPowerDownDelay); // Give the SD card time to shut down powerDownOLA(); @@ -168,7 +168,7 @@ void menuMain() while (Serial.available()) Serial.read(); //Empty buffer of any newline chars if (settings.useTxRxPinsForTerminal == true) - while (SerialLog.available()) SerialLog.read(); //Empty buffer of any newline chars + while (Serial1.available()) Serial1.read(); //Empty buffer of any newline chars //Reset measurements measurementCount = 0; diff --git a/Firmware/OpenLog_Artemis/menuPower.ino b/Firmware/OpenLog_Artemis/menuPower.ino index 47a3799..0c91e7e 100644 --- a/Firmware/OpenLog_Artemis/menuPower.ino +++ b/Firmware/OpenLog_Artemis/menuPower.ino @@ -50,6 +50,7 @@ void menuPower() settings.useGPIO32ForStopLogging = false; detachInterrupt(PIN_STOP_LOGGING); // Disable the interrupt pinMode(PIN_STOP_LOGGING, INPUT); // Remove the pull-up + pin_config(PinName(PIN_STOP_LOGGING), g_AM_HAL_GPIO_INPUT); // Make sure the pin does actually get re-configured after being disabled stopLoggingSeen = false; // Make sure the flag is clear } else @@ -57,6 +58,7 @@ void menuPower() // Enable stop logging settings.useGPIO32ForStopLogging = true; pinMode(PIN_STOP_LOGGING, INPUT_PULLUP); + pin_config(PinName(PIN_STOP_LOGGING), g_AM_HAL_GPIO_INPUT_PULLUP); // Make sure the pin does actually get re-configured after being disabled delay(1); // Let the pin stabilize attachInterrupt(PIN_STOP_LOGGING, stopLoggingISR, FALLING); // Enable the interrupt stopLoggingSeen = false; // Make sure the flag is clear diff --git a/Firmware/OpenLog_Artemis/menuSerialLogging.ino b/Firmware/OpenLog_Artemis/menuSerialLogging.ino index 350bcea..db074ba 100644 --- a/Firmware/OpenLog_Artemis/menuSerialLogging.ino +++ b/Firmware/OpenLog_Artemis/menuSerialLogging.ino @@ -18,7 +18,7 @@ void menuSerialLogging() SerialPrint(F("3) zmodem start delay: ")); Serial.print(settings.zmodemStartDelay); if (settings.useTxRxPinsForTerminal == true) - SerialLog.print(settings.zmodemStartDelay); + Serial1.print(settings.zmodemStartDelay); SerialPrintln(F(" seconds")); if ((settings.logSerial == true) || (settings.outputSerial == true)) @@ -26,7 +26,7 @@ void menuSerialLogging() SerialPrint(F("4) Set serial baud rate: ")); Serial.print(settings.serialLogBaudRate); if (settings.useTxRxPinsForTerminal == true) - SerialLog.print(settings.zmodemStartDelay); + Serial1.print(settings.zmodemStartDelay); SerialPrintln(F(" bps")); } @@ -39,7 +39,7 @@ void menuSerialLogging() SerialPrint(F("6) Timestamp token: ")); Serial.print(settings.timeStampToken); if (settings.useTxRxPinsForTerminal == true) - SerialLog.print(settings.timeStampToken); + Serial1.print(settings.timeStampToken); SerialPrint(F(" (Decimal)")); switch (settings.timeStampToken) { @@ -131,7 +131,7 @@ void menuSerialLogging() else { settings.serialLogBaudRate = newBaud; - SerialLog.begin(settings.serialLogBaudRate); + Serial1.begin(settings.serialLogBaudRate); } } else if (incoming == '5') diff --git a/Firmware/OpenLog_Artemis/menuTerminal.ino b/Firmware/OpenLog_Artemis/menuTerminal.ino index 7fa414b..6b21263 100644 --- a/Firmware/OpenLog_Artemis/menuTerminal.ino +++ b/Firmware/OpenLog_Artemis/menuTerminal.ino @@ -16,7 +16,7 @@ void menuLogRate() SerialPrint(F("3) Set Serial Terminal Baud Rate: ")); Serial.print(settings.serialTerminalBaudRate); if (settings.useTxRxPinsForTerminal == true) - SerialLog.print(settings.serialTerminalBaudRate); + Serial1.print(settings.serialTerminalBaudRate); SerialPrintln(F(" bps")); if (settings.useGPIO11ForTrigger == false) @@ -288,6 +288,7 @@ void menuLogRate() settings.useGPIO11ForTrigger = false; detachInterrupt(PIN_TRIGGER); // Disable the interrupt pinMode(PIN_TRIGGER, INPUT); // Remove the pull-up + pin_config(PinName(PIN_TRIGGER), g_AM_HAL_GPIO_INPUT); // Make sure the pin does actually get re-configured after being disabled triggerEdgeSeen = false; // Make sure the flag is clear } else @@ -295,6 +296,7 @@ void menuLogRate() // Enable triggering settings.useGPIO11ForTrigger = true; pinMode(PIN_TRIGGER, INPUT_PULLUP); + pin_config(PinName(PIN_TRIGGER), g_AM_HAL_GPIO_INPUT_PULLUP); // Make sure the pin does actually get re-configured after being disabled delay(1); // Let the pin stabilize if (settings.fallingEdgeTrigger == true) attachInterrupt(PIN_TRIGGER, triggerPinISR, FALLING); // Enable the interrupt @@ -363,7 +365,16 @@ void menuLogRate() online.serialOutput = false; settings.logA12 = false; settings.logA13 = false; - SerialLog.begin(settings.serialTerminalBaudRate); // (Re)Start the serial port + + //We need to manually restore the Serial1 TX and RX pins before we can use Serial1 + am_hal_gpio_pincfg_t pinConfigTx = g_AM_BSP_GPIO_COM_UART_TX; + pinConfigTx.uFuncSel = AM_HAL_PIN_12_UART1TX; + pin_config(PinName(BREAKOUT_PIN_TX), pinConfigTx); + am_hal_gpio_pincfg_t pinConfigRx = g_AM_BSP_GPIO_COM_UART_RX; + pinConfigRx.uFuncSel = AM_HAL_PIN_13_UART1RX; + pin_config(PinName(BREAKOUT_PIN_RX), pinConfigRx); + + Serial1.begin(settings.serialTerminalBaudRate); // (Re)Start the serial port using the terminal baud rate } else SerialPrintln(F("\"Use TX and RX pins for terminal\" aborted")); @@ -386,6 +397,7 @@ void menuLogRate() settings.useRTCForFastSlowLogging = false; settings.logA11 = false; // Disable analog logging on pin 11 pinMode(PIN_TRIGGER, INPUT_PULLUP); + pin_config(PinName(PIN_TRIGGER), g_AM_HAL_GPIO_INPUT_PULLUP); // Make sure the pin does actually get re-configured after being disabled delay(1); // Let the pin stabilize // Disable triggering if (settings.useGPIO11ForTrigger == true) @@ -399,6 +411,7 @@ void menuLogRate() { settings.useGPIO11ForFastSlowLogging = false; pinMode(PIN_TRIGGER, INPUT); // Remove the pull-up + pin_config(PinName(PIN_TRIGGER), g_AM_HAL_GPIO_INPUT); // Make sure the pin does actually get re-configured after being disabled } } else @@ -421,6 +434,7 @@ void menuLogRate() { settings.useGPIO11ForFastSlowLogging = false; pinMode(PIN_TRIGGER, INPUT); // Remove the pull-up + pin_config(PinName(PIN_TRIGGER), g_AM_HAL_GPIO_INPUT); // Make sure the pin does actually get re-configured after being disabled } } else if (incoming == 17) @@ -430,7 +444,8 @@ void menuLogRate() settings.useRTCForFastSlowLogging = true; if (settings.useGPIO11ForFastSlowLogging == true) { - pinMode(PIN_TRIGGER, INPUT); // Remove the pull-up + pinMode(PIN_TRIGGER, INPUT); // Remove the pull-up + pin_config(PinName(PIN_TRIGGER), g_AM_HAL_GPIO_INPUT); // Make sure the pin does actually get re-configured after being disabled } settings.useGPIO11ForFastSlowLogging = false; settings.logA11 = false; // Disable analog logging on pin 11 @@ -439,6 +454,7 @@ void menuLogRate() { detachInterrupt(PIN_TRIGGER); // Disable the interrupt pinMode(PIN_TRIGGER, INPUT); // Remove the pull-up + pin_config(PinName(PIN_TRIGGER), g_AM_HAL_GPIO_INPUT); // Make sure the pin does actually get re-configured after being disabled triggerEdgeSeen = false; // Make sure the flag is clear } settings.useGPIO11ForTrigger = false; diff --git a/Firmware/OpenLog_Artemis/menuTimeStamp.ino b/Firmware/OpenLog_Artemis/menuTimeStamp.ino index dfb2ad6..62ed995 100644 --- a/Firmware/OpenLog_Artemis/menuTimeStamp.ino +++ b/Firmware/OpenLog_Artemis/menuTimeStamp.ino @@ -101,7 +101,7 @@ void menuTimeStamp() SerialPrint(F("9) Local offset from UTC: ")); Serial.println(settings.localUTCOffset); if (settings.useTxRxPinsForTerminal == true) - SerialLog.println(settings.localUTCOffset); + Serial1.println(settings.localUTCOffset); } SerialPrint(F("10) Log Microseconds: ")); diff --git a/Firmware/OpenLog_Artemis/productionTest.ino b/Firmware/OpenLog_Artemis/productionTest.ino index 6d6be13..bb698d3 100644 --- a/Firmware/OpenLog_Artemis/productionTest.ino +++ b/Firmware/OpenLog_Artemis/productionTest.ino @@ -90,6 +90,16 @@ void productionTest() // OK. The breakout pins were held low and then released (pulled-up) within five seconds so let's go into production test mode! + //We need to manually restore the Serial1 TX and RX pins before we can use Serial1 + am_hal_gpio_pincfg_t pinConfigTx = g_AM_BSP_GPIO_COM_UART_TX; + pinConfigTx.uFuncSel = AM_HAL_PIN_12_UART1TX; + pin_config(PinName(BREAKOUT_PIN_TX), pinConfigTx); + am_hal_gpio_pincfg_t pinConfigRx = g_AM_BSP_GPIO_COM_UART_RX; + pinConfigRx.uFuncSel = AM_HAL_PIN_13_UART1RX; + pin_config(PinName(BREAKOUT_PIN_RX), pinConfigRx); + + Serial.begin(115200); //Default for initial debug messages if necessary + //detachInterrupt(PIN_POWER_LOSS); // Disable power loss interrupt digitalWrite(PIN_STAT_LED, LOW); // Turn the STAT LED off powerLEDOff(); // Turn the power LED on - if the hardware supports it @@ -98,7 +108,7 @@ void productionTest() readVIN(); // Read VIN now to initialise the analog pin - SerialLog.begin(115200); // Begin the serial port using the TX and RX breakout pins + Serial1.begin(115200); // Begin the serial port using the TX and RX breakout pins #ifdef verboseProdTest Serial.println(F("OLA Production Test initiated!")); @@ -115,7 +125,7 @@ void productionTest() while (1) // Do this loop forever! { - while (!SerialLog.available()) // Wait until we receive a command byte + while (!Serial1.available()) // Wait until we receive a command byte { if ((sendHellos == true) && (millis() > lastHelloSent)) // Is it time to send a Hello? (5 x 10 / 115200 = 0.434ms) { @@ -132,7 +142,7 @@ void productionTest() } // Command byte received! Let's process it. - uint8_t commandByte = SerialLog.read(); + uint8_t commandByte = Serial1.read(); #ifdef verboseProdTest Serial.printf("Processing command byte: 0x%02X\r\n", commandByte); #endif @@ -148,11 +158,11 @@ void productionTest() #endif if ((vin >= 4.75) && (vin <= 5.25)) // Success { - SerialLog.write(0x01); + Serial1.write(0x01); } else { - SerialLog.write(0x81); + Serial1.write(0x81); } } // / 0x01: VIN/3 break; @@ -172,16 +182,16 @@ void productionTest() #endif if ((myICM.temp() >= 10.0) && (myICM.temp() <= 40.0)) { - SerialLog.write(0x02); // Test passed + Serial1.write(0x02); // Test passed } else { - SerialLog.write(0x82); // Test failed - readings are out of range + Serial1.write(0x82); // Test failed - readings are out of range } } else { - SerialLog.write(0x82); // Test failed - IMU data is not ready + Serial1.write(0x82); // Test failed - IMU data is not ready #ifdef verboseProdTest Serial.println(F("IMU data not ready!")); #endif @@ -189,7 +199,7 @@ void productionTest() } else { - SerialLog.write(0x82); // Test failed - IMU is not online + Serial1.write(0x82); // Test failed - IMU is not online #ifdef verboseProdTest Serial.println(F("IMU is not online!")); #endif @@ -217,16 +227,16 @@ void productionTest() ((myICM.accY() > -100) && (myICM.accY() < 100)) && ((myICM.accZ() > -1100) && (myICM.accZ() < -900))) { - SerialLog.write(0x03); // Test passed + Serial1.write(0x03); // Test passed } else { - SerialLog.write(0x83); // Test failed - readings are out of range + Serial1.write(0x83); // Test failed - readings are out of range } } else { - SerialLog.write(0x83); // Test failed - IMU data is not ready + Serial1.write(0x83); // Test failed - IMU data is not ready #ifdef verboseProdTest Serial.println(F("IMU data not ready!")); #endif @@ -234,7 +244,7 @@ void productionTest() } else { - SerialLog.write(0x83); // Test failed - IMU is not online + Serial1.write(0x83); // Test failed - IMU is not online #ifdef verboseProdTest Serial.println(F("IMU is not online!")); #endif @@ -266,16 +276,16 @@ void productionTest() if (((myICM.magZ() >= 20.0) && (myICM.magZ() <= 30.0)) && // Check the readings are in range ((magVectorProduct >= 20.0) && (magVectorProduct <= 30.0))) { - SerialLog.write(0x04); // Test passed + Serial1.write(0x04); // Test passed } else { - SerialLog.write(0x84); // Test failed - readings are out of range + Serial1.write(0x84); // Test failed - readings are out of range } } else { - SerialLog.write(0x84); // Test failed - IMU data is not ready + Serial1.write(0x84); // Test failed - IMU data is not ready #ifdef verboseProdTest Serial.println(F("IMU data not ready!")); #endif @@ -283,7 +293,7 @@ void productionTest() } else { - SerialLog.write(0x84); // Test failed - IMU is not online + Serial1.write(0x84); // Test failed - IMU is not online #ifdef verboseProdTest Serial.println(F("IMU is not online!")); #endif @@ -300,21 +310,21 @@ void productionTest() Serial.println(F("Going into deep sleep for 5 seconds...")); #endif Serial.flush(); //Finish any prints - qwiic.end(); //Power down I2C + //qwiic.end(); //Power down I2C SPI.end(); //Power down SPI - powerControlADC(false); // power_adc_disable(); //Power down ADC. It it started by default before setup(). + powerControlADC(false); //Power down ADC. It it started by default before setup(). Serial.end(); //Power down UART - SerialLog.end(); + Serial1.end(); //Force the peripherals off - am_hal_pwrctrl_periph_disable(AM_HAL_PWRCTRL_PERIPH_IOM0); - am_hal_pwrctrl_periph_disable(AM_HAL_PWRCTRL_PERIPH_IOM1); - am_hal_pwrctrl_periph_disable(AM_HAL_PWRCTRL_PERIPH_IOM2); - am_hal_pwrctrl_periph_disable(AM_HAL_PWRCTRL_PERIPH_IOM3); - am_hal_pwrctrl_periph_disable(AM_HAL_PWRCTRL_PERIPH_IOM4); - am_hal_pwrctrl_periph_disable(AM_HAL_PWRCTRL_PERIPH_IOM5); - am_hal_pwrctrl_periph_disable(AM_HAL_PWRCTRL_PERIPH_ADC); - am_hal_pwrctrl_periph_disable(AM_HAL_PWRCTRL_PERIPH_UART0); - am_hal_pwrctrl_periph_disable(AM_HAL_PWRCTRL_PERIPH_UART1); + //am_hal_pwrctrl_periph_disable(AM_HAL_PWRCTRL_PERIPH_IOM0); + //am_hal_pwrctrl_periph_disable(AM_HAL_PWRCTRL_PERIPH_IOM1); + //am_hal_pwrctrl_periph_disable(AM_HAL_PWRCTRL_PERIPH_IOM2); + //am_hal_pwrctrl_periph_disable(AM_HAL_PWRCTRL_PERIPH_IOM3); + //am_hal_pwrctrl_periph_disable(AM_HAL_PWRCTRL_PERIPH_IOM4); + //am_hal_pwrctrl_periph_disable(AM_HAL_PWRCTRL_PERIPH_IOM5); + //am_hal_pwrctrl_periph_disable(AM_HAL_PWRCTRL_PERIPH_ADC); + //am_hal_pwrctrl_periph_disable(AM_HAL_PWRCTRL_PERIPH_UART0); + //am_hal_pwrctrl_periph_disable(AM_HAL_PWRCTRL_PERIPH_UART1); //Use the lower power 32kHz clock. Use it to run CT6 as well. am_hal_stimer_config(AM_HAL_STIMER_CFG_CLEAR | AM_HAL_STIMER_CFG_FREEZE); am_hal_stimer_config(AM_HAL_STIMER_XTAL_32KHZ | AM_HAL_STIMER_CFG_COMPARE_G_ENABLE); @@ -339,7 +349,7 @@ void productionTest() //Turn on ADC powerControlADC(true); //ap3_adc_setup(); Serial.begin(115200); - SerialLog.begin(115200); + Serial1.begin(115200); SPI.begin(); myRTC.getTime(); // Read the RTC unsigned long hundredthsAfterSleep = (myRTC.hour * 360000) + (myRTC.minute * 6000) + (myRTC.seconds * 100) + myRTC.hundredths; @@ -351,97 +361,97 @@ void productionTest() #endif if ((elapsedHundredths > 490) && (elapsedHundredths < 510)) { - SerialLog.write(0x05); // Test passed + Serial1.write(0x05); // Test passed } else { - SerialLog.write(0x85); // Test failed + Serial1.write(0x85); // Test failed } } // /0x05: RTC Crystal break; case 0x06: qwiicPowerOn(); - SerialLog.write(0x06); + Serial1.write(0x06); break; case 0x07: qwiicPowerOff(); - SerialLog.write(0x07); + Serial1.write(0x07); break; case 0x08: powerLEDOn(); - SerialLog.write(0x08); + Serial1.write(0x08); break; case 0x09: powerLEDOff(); - SerialLog.write(0x09); + Serial1.write(0x09); break; case 0x0A: digitalWrite(PIN_STAT_LED, HIGH); - SerialLog.write(0x0A); + Serial1.write(0x0A); break; case 0x0B: digitalWrite(PIN_STAT_LED, LOW); - SerialLog.write(0x0B); + Serial1.write(0x0B); break; case 0x0C: pinMode(BREAKOUT_PIN_32, OUTPUT); digitalWrite(BREAKOUT_PIN_32, HIGH); - SerialLog.write(0x0C); + Serial1.write(0x0C); break; case 0x0D: pinMode(BREAKOUT_PIN_32, OUTPUT); digitalWrite(BREAKOUT_PIN_32, LOW); - SerialLog.write(0x0D); + Serial1.write(0x0D); break; case 0x0E: pinMode(PIN_QWIIC_SCL, OUTPUT); digitalWrite(PIN_QWIIC_SCL, HIGH); - SerialLog.write(0x0E); + Serial1.write(0x0E); break; case 0x0F: pinMode(PIN_QWIIC_SCL, OUTPUT); digitalWrite(PIN_QWIIC_SCL, LOW); - SerialLog.write(0x0F); + Serial1.write(0x0F); break; case 0x10: pinMode(PIN_QWIIC_SDA, OUTPUT); digitalWrite(PIN_QWIIC_SDA, HIGH); - SerialLog.write(0x10); + Serial1.write(0x10); break; case 0x11: pinMode(PIN_QWIIC_SDA, OUTPUT); digitalWrite(PIN_QWIIC_SDA, LOW); - SerialLog.write(0x11); + Serial1.write(0x11); break; case 0x12: pinMode(BREAKOUT_PIN_11, OUTPUT); digitalWrite(BREAKOUT_PIN_11, HIGH); - SerialLog.write(0x12); + Serial1.write(0x12); break; case 0x13: pinMode(BREAKOUT_PIN_11, OUTPUT); digitalWrite(BREAKOUT_PIN_11, LOW); - SerialLog.write(0x13); + Serial1.write(0x13); break; case 0x14: sendHellos = true; - SerialLog.write(0x14); + Serial1.write(0x14); break; case 0x15: sendHellos = false; - SerialLog.write(0x15); + Serial1.write(0x15); break; case 0x16: echoUSB = true; - SerialLog.write(0x16); + Serial1.write(0x16); break; case 0x17: echoUSB = false; - SerialLog.write(0x17); + Serial1.write(0x17); break; case 0x18: myRTC.getTime(); // Read the RTC - SerialLog.write(0x18); + Serial1.write(0x18); char rtcHour[3]; char rtcMin[3]; char rtcSec[3]; @@ -463,7 +473,7 @@ void productionTest() else sprintf(rtcHundredths, "%d", myRTC.hundredths); - SerialLog.printf("%s:%s:%s.%s", rtcHour, rtcMin, rtcSec, rtcHundredths); + Serial1.printf("%s:%s:%s.%s", rtcHour, rtcMin, rtcSec, rtcHundredths); #ifdef verboseProdTest Serial.printf("RTC time is %s:%s:%s.%s\r\n", rtcHour, rtcMin, rtcSec, rtcHundredths); #endif @@ -497,7 +507,7 @@ void productionTest() if (strcmp(line, "112358132134\n") == 0) // Look for the correct sequence { testFile.close(); // Close the file - SerialLog.write(0x19); // Test passed + Serial1.write(0x19); // Test passed #ifdef verboseProdTest Serial.println(F("SD card test passed - file contents are correct")); #endif @@ -505,7 +515,7 @@ void productionTest() else { testFile.close(); // Close the file - SerialLog.write(0x99); // Test failed - data did not compare + Serial1.write(0x99); // Test failed - data did not compare #ifdef verboseProdTest Serial.println(F("Test file contents incorrect!")); for (int l = 0; l < 13; l++) @@ -517,7 +527,7 @@ void productionTest() else { testFile.close(); // Close the file - SerialLog.write(0x99); // Test failed - test file contents are not the correct length + Serial1.write(0x99); // Test failed - test file contents are not the correct length #ifdef verboseProdTest Serial.printf("Test file contents incorrect length (%d)!\r\n", n); #endif @@ -525,7 +535,7 @@ void productionTest() } else { - SerialLog.write(0x99); // Test failed - could not reopen the test file + Serial1.write(0x99); // Test failed - could not reopen the test file #ifdef verboseProdTest Serial.println(F("Failed to reopen test file")); #endif @@ -533,7 +543,7 @@ void productionTest() } else { - SerialLog.write(0x99); // Test failed - could not create the test file + Serial1.write(0x99); // Test failed - could not create the test file #ifdef verboseProdTest Serial.println(F("Failed to create test file")); #endif @@ -541,7 +551,7 @@ void productionTest() } else { - SerialLog.write(0x99); // Test failed - SD is not online + Serial1.write(0x99); // Test failed - SD is not online #ifdef verboseProdTest Serial.println(F("SD card is not online!")); #endif @@ -554,23 +564,18 @@ void productionTest() detachInterrupt(PIN_POWER_LOSS); // Disable power loss interrupt Serial.end(); //Power down UART //Force the peripherals off - am_hal_pwrctrl_periph_disable(AM_HAL_PWRCTRL_PERIPH_IOM0); - am_hal_pwrctrl_periph_disable(AM_HAL_PWRCTRL_PERIPH_IOM1); - am_hal_pwrctrl_periph_disable(AM_HAL_PWRCTRL_PERIPH_IOM2); - am_hal_pwrctrl_periph_disable(AM_HAL_PWRCTRL_PERIPH_IOM3); - am_hal_pwrctrl_periph_disable(AM_HAL_PWRCTRL_PERIPH_IOM4); - am_hal_pwrctrl_periph_disable(AM_HAL_PWRCTRL_PERIPH_IOM5); - am_hal_pwrctrl_periph_disable(AM_HAL_PWRCTRL_PERIPH_ADC); - am_hal_pwrctrl_periph_disable(AM_HAL_PWRCTRL_PERIPH_UART0); - am_hal_pwrctrl_periph_disable(AM_HAL_PWRCTRL_PERIPH_UART1); + //am_hal_pwrctrl_periph_disable(AM_HAL_PWRCTRL_PERIPH_IOM0); + //am_hal_pwrctrl_periph_disable(AM_HAL_PWRCTRL_PERIPH_IOM1); + //am_hal_pwrctrl_periph_disable(AM_HAL_PWRCTRL_PERIPH_IOM2); + //am_hal_pwrctrl_periph_disable(AM_HAL_PWRCTRL_PERIPH_IOM3); + //am_hal_pwrctrl_periph_disable(AM_HAL_PWRCTRL_PERIPH_IOM4); + //am_hal_pwrctrl_periph_disable(AM_HAL_PWRCTRL_PERIPH_IOM5); + //am_hal_pwrctrl_periph_disable(AM_HAL_PWRCTRL_PERIPH_ADC); + //am_hal_pwrctrl_periph_disable(AM_HAL_PWRCTRL_PERIPH_UART0); + //am_hal_pwrctrl_periph_disable(AM_HAL_PWRCTRL_PERIPH_UART1); //Disable pads for (int x = 0; x < 50; x++) { -// if ((x != ap3_gpio_pin2pad(PIN_POWER_LOSS)) && -// //(x != ap3_gpio_pin2pad(PIN_LOGIC_DEBUG)) && -// (x != ap3_gpio_pin2pad(PIN_MICROSD_POWER)) && -// (x != ap3_gpio_pin2pad(PIN_QWIIC_POWER)) && -// (x != ap3_gpio_pin2pad(PIN_IMU_POWER))) if ((x != PIN_POWER_LOSS) && //(x != PIN_LOGIC_DEBUG) && (x != PIN_MICROSD_POWER) && diff --git a/Firmware/OpenLog_Artemis/support.ino b/Firmware/OpenLog_Artemis/support.ino index d329474..1acb047 100644 --- a/Firmware/OpenLog_Artemis/support.ino +++ b/Firmware/OpenLog_Artemis/support.ino @@ -19,7 +19,7 @@ void printDebug(String thingToPrint) { Serial.print(thingToPrint); if (settings.useTxRxPinsForTerminal == true) - SerialLog.print(thingToPrint); + Serial1.print(thingToPrint); } } @@ -29,7 +29,7 @@ void printUnknown(uint8_t unknownChoice) SerialPrint(F("Unknown choice: ")); Serial.write(unknownChoice); if (settings.useTxRxPinsForTerminal == true) - SerialLog.write(unknownChoice); + Serial1.write(unknownChoice); SerialPrintln(F("")); } void printUnknown(int unknownValue) @@ -37,7 +37,7 @@ void printUnknown(int unknownValue) SerialPrint(F("Unknown value: ")); Serial.write(unknownValue); if (settings.useTxRxPinsForTerminal == true) - SerialLog.write(unknownValue); + Serial1.write(unknownValue); SerialPrintln(F("")); } @@ -53,7 +53,7 @@ void waitForInput() while (Serial.available() > 0) Serial.read(); //Clear buffer if (settings.useTxRxPinsForTerminal == true) - while (SerialLog.available() > 0) SerialLog.read(); //Clear buffer + while (Serial1.available() > 0) Serial1.read(); //Clear buffer bool keepChecking = true; while (keepChecking) @@ -63,7 +63,7 @@ void waitForInput() if (settings.useTxRxPinsForTerminal == true) { - if (SerialLog.available()) + if (Serial1.available()) keepChecking = false; } @@ -88,7 +88,7 @@ uint8_t getByteChoice(int numberOfSeconds, bool updateDZSERIAL) while (Serial.available() > 0) Serial.read(); //Clear buffer if (settings.useTxRxPinsForTerminal == true) - while (SerialLog.available() > 0) SerialLog.read(); //Clear buffer + while (Serial1.available() > 0) Serial1.read(); //Clear buffer long startTime = millis(); byte incoming; @@ -105,24 +105,24 @@ uint8_t getByteChoice(int numberOfSeconds, bool updateDZSERIAL) // SerialPrint(F("byte: 0x")); // Serial.println(incoming, HEX); // if (settings.useTxRxPinsForTerminal == true) -// SerialLog.println(incoming, HEX); +// Serial1.println(incoming, HEX); if (incoming >= 'a' && incoming <= 'z') break; if (incoming >= 'A' && incoming <= 'Z') break; if (incoming >= '0' && incoming <= '9') break; } - if ((settings.useTxRxPinsForTerminal == true) && (SerialLog.available() > 0)) + if ((settings.useTxRxPinsForTerminal == true) && (Serial1.available() > 0)) { - incoming = SerialLog.read(); + incoming = Serial1.read(); if (updateDZSERIAL) { - DSERIAL = &SerialLog; - ZSERIAL = &SerialLog; + DSERIAL = &Serial1; + ZSERIAL = &Serial1; } // SerialPrint(F("byte: 0x")); // Serial.println(incoming, HEX); // if (settings.useTxRxPinsForTerminal == true) -// SerialLog.println(incoming, HEX); +// Serial1.println(incoming, HEX); if (incoming >= 'a' && incoming <= 'z') break; if (incoming >= 'A' && incoming <= 'Z') break; if (incoming >= '0' && incoming <= '9') break; @@ -155,7 +155,7 @@ int64_t getNumber(int numberOfSeconds) while (Serial.available() > 0) Serial.read(); //Clear buffer if (settings.useTxRxPinsForTerminal == true) - while (SerialLog.available() > 0) SerialLog.read(); //Clear buffer + while (Serial1.available() > 0) Serial1.read(); //Clear buffer //Get input from user char cleansed[20]; //Good for very large numbers: 123,456,789,012,345,678\0 @@ -170,7 +170,7 @@ int64_t getNumber(int numberOfSeconds) if (Serial.available()) serialAvailable = true; - if ((settings.useTxRxPinsForTerminal == true) && (SerialLog.available())) + if ((settings.useTxRxPinsForTerminal == true) && (Serial1.available())) serialAvailable = true; checkBattery(); @@ -202,7 +202,7 @@ int64_t getNumber(int numberOfSeconds) incoming = Serial.read(); else - incoming = SerialLog.read(); + incoming = Serial1.read(); if (incoming == '\n' || incoming == '\r') { @@ -215,7 +215,7 @@ int64_t getNumber(int numberOfSeconds) Serial.write(incoming); //Echo user's typing if (settings.useTxRxPinsForTerminal == true) - SerialLog.write(incoming); //Echo user's typing + Serial1.write(incoming); //Echo user's typing cleansed[spot++] = (char)incoming; } @@ -260,7 +260,7 @@ double getDouble(int numberOfSeconds) while (Serial.available() > 0) Serial.read(); //Clear buffer if (settings.useTxRxPinsForTerminal == true) - while (SerialLog.available() > 0) SerialLog.read(); //Clear buffer + while (Serial1.available() > 0) Serial1.read(); //Clear buffer //Get input from user char cleansed[20]; //Good for very large numbers: 123,456,789,012,345,678\0 @@ -276,7 +276,7 @@ double getDouble(int numberOfSeconds) if (Serial.available()) serialAvailable = true; - if ((settings.useTxRxPinsForTerminal == true) && (SerialLog.available())) + if ((settings.useTxRxPinsForTerminal == true) && (Serial1.available())) serialAvailable = true; checkBattery(); @@ -308,7 +308,7 @@ double getDouble(int numberOfSeconds) incoming = Serial.read(); else - incoming = SerialLog.read(); + incoming = Serial1.read(); if (incoming == '\n' || incoming == '\r') { @@ -321,7 +321,7 @@ double getDouble(int numberOfSeconds) Serial.write(incoming); //Echo user's typing if (settings.useTxRxPinsForTerminal == true) - SerialLog.write(incoming); //Echo user's typing + Serial1.write(incoming); //Echo user's typing cleansed[spot++] = (char)incoming; } diff --git a/Firmware/OpenLog_Artemis/zmodem.ino b/Firmware/OpenLog_Artemis/zmodem.ino index b46ce74..14ef6ff 100644 --- a/Firmware/OpenLog_Artemis/zmodem.ino +++ b/Firmware/OpenLog_Artemis/zmodem.ino @@ -267,7 +267,7 @@ void sdCardMenu(void) if (DSERIAL == &Serial) sd.ls("/", LS_DATE | LS_SIZE); // Do a non-recursive LS of the root directory showing file modification dates and sizes else - sd.ls(&SerialLog, "/", LS_DATE | LS_SIZE); + sd.ls(&Serial1, "/", LS_DATE | LS_SIZE); DSERIALprintln(F("End of Directory\r\n")); } @@ -412,7 +412,17 @@ void sdCardMenu(void) { settings.logA12 = false; //Disable analog readings on TX pin if (settings.useTxRxPinsForTerminal == false) - SerialLog.begin(settings.serialLogBaudRate); // (Re)start the serial port + { + //We need to manually restore the Serial1 TX and RX pins + am_hal_gpio_pincfg_t pinConfigTx = g_AM_BSP_GPIO_COM_UART_TX; + pinConfigTx.uFuncSel = AM_HAL_PIN_12_UART1TX; + pin_config(PinName(BREAKOUT_PIN_TX), pinConfigTx); + am_hal_gpio_pincfg_t pinConfigRx = g_AM_BSP_GPIO_COM_UART_RX; + pinConfigRx.uFuncSel = AM_HAL_PIN_13_UART1RX; + pin_config(PinName(BREAKOUT_PIN_RX), pinConfigRx); + + Serial1.begin(settings.serialLogBaudRate); // (Re)start the serial port + } DSERIALprint(F("\r\nSending ")); DSERIAL->print(param); DSERIALprint(F(" to the TX pin at ")); DSERIAL->print(settings.serialLogBaudRate); DSERIALprintln(F(" baud")); @@ -420,7 +430,7 @@ void sdCardMenu(void) { char ch; if (fout.read(&ch, 1) == 1) // Read a single char - SerialLog.write(ch); // Send it via SerialLog (TX pin) + Serial1.write(ch); // Send it via SerialLog (TX pin) } fout.close(); From b4f13bb674c63bf00e36ff496007d0999e7b1e0b Mon Sep 17 00:00:00 2001 From: PaulZC Date: Thu, 8 Jul 2021 18:20:47 +0100 Subject: [PATCH 10/15] Add configureSerial1TxRx. Improvements to the sleep current - disable SPI and qwiic pins. --- Firmware/OpenLog_Artemis/OpenLog_Artemis.ino | 60 +++++++++---------- Firmware/OpenLog_Artemis/lowerPower.ino | 45 ++++++++------ .../OpenLog_Artemis/menuSerialLogging.ino | 1 + Firmware/OpenLog_Artemis/menuTerminal.ino | 7 +-- Firmware/OpenLog_Artemis/productionTest.ino | 7 +-- Firmware/OpenLog_Artemis/zmodem.ino | 7 +-- 6 files changed, 58 insertions(+), 69 deletions(-) diff --git a/Firmware/OpenLog_Artemis/OpenLog_Artemis.ino b/Firmware/OpenLog_Artemis/OpenLog_Artemis.ino index be69aa4..ab2a828 100644 --- a/Firmware/OpenLog_Artemis/OpenLog_Artemis.ino +++ b/Firmware/OpenLog_Artemis/OpenLog_Artemis.ino @@ -93,20 +93,17 @@ (done) Add minimum awake time: https://github.com/sparkfun/OpenLog_Artemis/issues/83 (done) Add support for the Pulse Oximeter and Qwiic Button: https://github.com/sparkfun/OpenLog_Artemis/issues/81 - (in progress) Update to Apollo3 v2.1.0 - FIRMWARE_VERSION_MAJOR = 2. + (in progress) Update to Apollo3 v2.1.1 - FIRMWARE_VERSION_MAJOR = 2. (done) Implement printf float (OLA uses printf float in _so_ many places...): https://github.com/sparkfun/Arduino_Apollo3/issues/278 (worked around) Figure out why attachInterrupt(PIN_POWER_LOSS, powerDownOLA, FALLING); causes badness (done) Add a setQwiicPullups function (done) Check if we need ap3_set_pin_to_analog when coming out of sleep (done?) Investigate why code does not wake from deep sleep correctly (worked around) Correct SerialLog RX: https://github.com/sparkfun/Arduino_Apollo3/issues/401 - The work-around is to manually edit the PinNames.h for the SFE_ARTEMIS_ATP and change the pins for Serial1 - If you are using Windows, you will find PinNames.h in: - C:\Users\\AppData\Local\Arduino15\packages\SparkFun\hardware\apollo3\2.1.0\cores\mbed-os\targets\TARGET_Ambiq_Micro\TARGET_Apollo3\TARGET_SFE_ARTEMIS_ATP - Change lines 123 and 124 to: - SERIAL1_TX = D12, // Fix for OLA - was D24, - SERIAL1_RX = D13, // Fix for OLA - was D25, - (in progress) Reduce sleep current as much as possible. v1.2.1 achieved ~110uA. With v2.1 the draw is more like 500uA... + The work-around is to use Serial1 in place of serialLog and then to manually force UART1 to use pins 12 and 13 + We need a work-around anyway because if pins 12 or 13 have been used as analog inputs, Serial1.begin does not re-configure them for UART TX and RX + (TO DO) Figure out why we actually need something connected to the RX pin on start up when using the Tx and Rx pins for the terminal + (in progress) Reduce sleep current as much as possible. v1.2.1 achieved ~110uA. With v2.1.1 the draw is more like 280uA... */ const int FIRMWARE_VERSION_MAJOR = 2; @@ -158,6 +155,10 @@ const byte PIN_TRIGGER = 11; const byte PIN_QWIIC_SCL = 8; const byte PIN_QWIIC_SDA = 9; +const byte PIN_SPI_SCK = 5; +const byte PIN_SPI_CIPO = 6; +const byte PIN_SPI_COPI = 7; + // Include this many extra bytes when starting a mux - to try and avoid the slippery mux bug // This should be 0 but 3 or 7 seem to work better depending on which way the wind is blowing. const byte EXTRA_MUX_STARTUP_BYTES = 3; @@ -171,7 +172,7 @@ enum returnStatus { //Setup Qwiic Port //-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=- #include -TwoWire qwiic(9,8); //Will use pads 8/9 - changed from (1) for Apollo3 v2 +TwoWire qwiic(PIN_QWIIC_SDA,PIN_QWIIC_SCL); //Will use pads 8/9 - changed from (1) for Apollo3 v2 //-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=- //EEPROM for storing settings @@ -343,16 +344,11 @@ void setup() { productionTest(); //Check if we need to go into production test mode //We need to manually restore the Serial1 TX and RX pins after they were changed by productionTest() - am_hal_gpio_pincfg_t pinConfigTx = g_AM_BSP_GPIO_COM_UART_TX; - pinConfigTx.uFuncSel = AM_HAL_PIN_12_UART1TX; - pin_config(PinName(BREAKOUT_PIN_TX), pinConfigTx); - am_hal_gpio_pincfg_t pinConfigRx = g_AM_BSP_GPIO_COM_UART_RX; - pinConfigRx.uFuncSel = AM_HAL_PIN_13_UART1RX; - pin_config(PinName(BREAKOUT_PIN_RX), pinConfigRx); + configureSerial1TxRx(); Serial.begin(115200); //Default for initial debug messages if necessary Serial1.begin(115200); //Default for initial debug messages if necessary - + //pinMode(PIN_LOGIC_DEBUG, OUTPUT); // Debug pin to assist tracking down slippery mux bugs //digitalWrite(PIN_LOGIC_DEBUG, HIGH); @@ -871,8 +867,8 @@ void setQwiicPullups(uint32_t qwiicBusPullUps) sdaPinCfg.ePullup = AM_HAL_GPIO_PIN_PULLUP_24K; } - pin_config(D8, sclPinCfg); - pin_config(D9, sdaPinCfg); + pin_config(PinName(PIN_QWIIC_SCL), sclPinCfg); + pin_config(PinName(PIN_QWIIC_SDA), sdaPinCfg); } void beginSD() @@ -940,15 +936,25 @@ void enableCIPOpullUp() // updated for v2.1.0 of the Apollo3 core //Add 1K5 pull-up on CIPO am_hal_gpio_pincfg_t cipoPinCfg = g_AM_BSP_GPIO_IOM0_MISO; cipoPinCfg.ePullup = AM_HAL_GPIO_PIN_PULLUP_1_5K; - pin_config(D6, cipoPinCfg); + pin_config(PinName(PIN_SPI_CIPO), cipoPinCfg); } void disableCIPOpullUp() // updated for v2.1.0 of the Apollo3 core { am_hal_gpio_pincfg_t cipoPinCfg = g_AM_BSP_GPIO_IOM0_MISO; - pin_config(D6, cipoPinCfg); + pin_config(PinName(PIN_SPI_CIPO), cipoPinCfg); } +void configureSerial1TxRx(void) // Configure pins 12 and 13 for UART1 TX and RX +{ + am_hal_gpio_pincfg_t pinConfigTx = g_AM_BSP_GPIO_COM_UART_TX; + pinConfigTx.uFuncSel = AM_HAL_PIN_12_UART1TX; + pin_config(PinName(BREAKOUT_PIN_TX), pinConfigTx); + am_hal_gpio_pincfg_t pinConfigRx = g_AM_BSP_GPIO_COM_UART_RX; + pinConfigRx.uFuncSel = AM_HAL_PIN_13_UART1RX; + pin_config(PinName(BREAKOUT_PIN_RX), pinConfigRx); +} + void beginIMU() { pinMode(PIN_IMU_POWER, OUTPUT); @@ -1245,12 +1251,7 @@ void beginSerialLogging() updateDataFileCreate(&serialDataFile); // Update the file create time & date //We need to manually restore the Serial1 TX and RX pins - am_hal_gpio_pincfg_t pinConfigTx = g_AM_BSP_GPIO_COM_UART_TX; - pinConfigTx.uFuncSel = AM_HAL_PIN_12_UART1TX; - pin_config(PinName(BREAKOUT_PIN_TX), pinConfigTx); - am_hal_gpio_pincfg_t pinConfigRx = g_AM_BSP_GPIO_COM_UART_RX; - pinConfigRx.uFuncSel = AM_HAL_PIN_13_UART1RX; - pin_config(PinName(BREAKOUT_PIN_RX), pinConfigRx); + configureSerial1TxRx(); Serial1.begin(settings.serialLogBaudRate); @@ -1265,12 +1266,7 @@ void beginSerialOutput() if (settings.outputSerial == true) { //We need to manually restore the Serial1 TX and RX pins - am_hal_gpio_pincfg_t pinConfigTx = g_AM_BSP_GPIO_COM_UART_TX; - pinConfigTx.uFuncSel = AM_HAL_PIN_12_UART1TX; - pin_config(PinName(BREAKOUT_PIN_TX), pinConfigTx); - am_hal_gpio_pincfg_t pinConfigRx = g_AM_BSP_GPIO_COM_UART_RX; - pinConfigRx.uFuncSel = AM_HAL_PIN_13_UART1RX; - pin_config(PinName(BREAKOUT_PIN_RX), pinConfigRx); + configureSerial1TxRx(); Serial1.begin(settings.serialLogBaudRate); // (Re)start the serial port online.serialOutput = true; diff --git a/Firmware/OpenLog_Artemis/lowerPower.ino b/Firmware/OpenLog_Artemis/lowerPower.ino index 16a5218..9b1f0dd 100644 --- a/Firmware/OpenLog_Artemis/lowerPower.ino +++ b/Firmware/OpenLog_Artemis/lowerPower.ino @@ -294,23 +294,28 @@ void goToSleep(uint32_t sysTicksToSleep) //am_hal_pwrctrl_periph_disable(AM_HAL_PWRCTRL_PERIPH_IOM3); //am_hal_pwrctrl_periph_disable(AM_HAL_PWRCTRL_PERIPH_IOM4); //am_hal_pwrctrl_periph_disable(AM_HAL_PWRCTRL_PERIPH_IOM5); - - //The UARTs are more forgiving. We can disable those. - am_hal_pwrctrl_periph_disable(AM_HAL_PWRCTRL_PERIPH_UART0); - if (settings.useTxRxPinsForTerminal == true) - am_hal_pwrctrl_periph_disable(AM_HAL_PWRCTRL_PERIPH_UART1); + //am_hal_pwrctrl_periph_disable(AM_HAL_PWRCTRL_PERIPH_UART0); + //if (settings.useTxRxPinsForTerminal == true) + // am_hal_pwrctrl_periph_disable(AM_HAL_PWRCTRL_PERIPH_UART1); //Disable as many pins as we can const int pinsToDisable[] = {0,1,2,10,14,17,12,24,25,28,36,38,39,40,41,42,43,45,21,22,16,31,35,-1}; for (int x = 0; pinsToDisable[x] >= 0; x++) { - am_hal_gpio_pinconfig(PinName(pinsToDisable[x]), g_AM_HAL_GPIO_DISABLE); + am_hal_gpio_pinconfig(pinsToDisable[x], g_AM_HAL_GPIO_DISABLE); } - //Do disable the ICM pins to minimise the current draw during deep sleep - am_hal_gpio_pinconfig(D6 , g_AM_HAL_GPIO_DISABLE); //ICM / microSD CIPO - am_hal_gpio_pinconfig(D44 , g_AM_HAL_GPIO_DISABLE); //ICM CS - am_hal_gpio_pinconfig(D37 , g_AM_HAL_GPIO_DISABLE); //ICM INT + //Do disable CIPO, COPI, SCLK and chip selects to minimise the current draw during deep sleep + am_hal_gpio_pinconfig(PIN_SPI_CIPO , g_AM_HAL_GPIO_DISABLE); //ICM / microSD CIPO + am_hal_gpio_pinconfig(PIN_SPI_COPI , g_AM_HAL_GPIO_DISABLE); //ICM / microSD COPI + am_hal_gpio_pinconfig(PIN_SPI_SCK , g_AM_HAL_GPIO_DISABLE); //ICM / microSD SCK + am_hal_gpio_pinconfig(PIN_IMU_CHIP_SELECT , g_AM_HAL_GPIO_DISABLE); //ICM CS + am_hal_gpio_pinconfig(PIN_IMU_INT , g_AM_HAL_GPIO_DISABLE); //ICM INT + am_hal_gpio_pinconfig(PIN_MICROSD_CHIP_SELECT , g_AM_HAL_GPIO_DISABLE); //microSD CS + + //Do disable qwiic SDA and SCL to minimise the current draw during deep sleep + am_hal_gpio_pinconfig(PIN_QWIIC_SDA , g_AM_HAL_GPIO_DISABLE); + am_hal_gpio_pinconfig(PIN_QWIIC_SCL , g_AM_HAL_GPIO_DISABLE); //Do disable pins 48 and 49 (UART0) to stop them back-feeding the CH340 am_hal_gpio_pinconfig(48 , g_AM_HAL_GPIO_DISABLE); //TX0 @@ -447,21 +452,23 @@ void wakeFromSleep() pin_config(PinName(48), g_AM_BSP_GPIO_COM_UART_TX); pin_config(PinName(49), g_AM_BSP_GPIO_COM_UART_RX); - //Re-enable CIPO and ICM_CS but may as well leave ICM_INT disabled - pin_config(D6, g_AM_BSP_GPIO_IOM0_MISO); - pin_config(D44, g_AM_HAL_GPIO_OUTPUT); + //Re-enable CIPO, COPI, SCK and the chip selects but may as well leave ICM_INT disabled + pin_config(PinName(PIN_SPI_CIPO), g_AM_BSP_GPIO_IOM0_MISO); + pin_config(PinName(PIN_SPI_COPI), g_AM_BSP_GPIO_IOM0_MOSI); + pin_config(PinName(PIN_SPI_SCK), g_AM_BSP_GPIO_IOM0_SCK); + pin_config(PinName(PIN_IMU_CHIP_SELECT), g_AM_HAL_GPIO_OUTPUT); + pin_config(PinName(PIN_MICROSD_CHIP_SELECT) , g_AM_HAL_GPIO_OUTPUT); + + //Re-enable the SDA and SCL pins + pin_config(PinName(PIN_QWIIC_SCL), g_AM_BSP_GPIO_IOM1_SCL); + pin_config(PinName(PIN_QWIIC_SDA), g_AM_BSP_GPIO_IOM1_SDA); Serial.begin(settings.serialTerminalBaudRate); if (settings.useTxRxPinsForTerminal == true) { //We may need to manually restore the Serial1 TX and RX pins? - am_hal_gpio_pincfg_t pinConfigTx = g_AM_BSP_GPIO_COM_UART_TX; - pinConfigTx.uFuncSel = AM_HAL_PIN_12_UART1TX; - pin_config(PinName(BREAKOUT_PIN_TX), pinConfigTx); - am_hal_gpio_pincfg_t pinConfigRx = g_AM_BSP_GPIO_COM_UART_RX; - pinConfigRx.uFuncSel = AM_HAL_PIN_13_UART1RX; - pin_config(PinName(BREAKOUT_PIN_RX), pinConfigRx); + configureSerial1TxRx(); Serial1.begin(settings.serialTerminalBaudRate); // Start the serial port } diff --git a/Firmware/OpenLog_Artemis/menuSerialLogging.ino b/Firmware/OpenLog_Artemis/menuSerialLogging.ino index db074ba..65cc64d 100644 --- a/Firmware/OpenLog_Artemis/menuSerialLogging.ino +++ b/Firmware/OpenLog_Artemis/menuSerialLogging.ino @@ -130,6 +130,7 @@ void menuSerialLogging() } else { + configureSerial1TxRx(); settings.serialLogBaudRate = newBaud; Serial1.begin(settings.serialLogBaudRate); } diff --git a/Firmware/OpenLog_Artemis/menuTerminal.ino b/Firmware/OpenLog_Artemis/menuTerminal.ino index 6b21263..f509f1b 100644 --- a/Firmware/OpenLog_Artemis/menuTerminal.ino +++ b/Firmware/OpenLog_Artemis/menuTerminal.ino @@ -367,12 +367,7 @@ void menuLogRate() settings.logA13 = false; //We need to manually restore the Serial1 TX and RX pins before we can use Serial1 - am_hal_gpio_pincfg_t pinConfigTx = g_AM_BSP_GPIO_COM_UART_TX; - pinConfigTx.uFuncSel = AM_HAL_PIN_12_UART1TX; - pin_config(PinName(BREAKOUT_PIN_TX), pinConfigTx); - am_hal_gpio_pincfg_t pinConfigRx = g_AM_BSP_GPIO_COM_UART_RX; - pinConfigRx.uFuncSel = AM_HAL_PIN_13_UART1RX; - pin_config(PinName(BREAKOUT_PIN_RX), pinConfigRx); + configureSerial1TxRx(); Serial1.begin(settings.serialTerminalBaudRate); // (Re)Start the serial port using the terminal baud rate } diff --git a/Firmware/OpenLog_Artemis/productionTest.ino b/Firmware/OpenLog_Artemis/productionTest.ino index bb698d3..6beea0d 100644 --- a/Firmware/OpenLog_Artemis/productionTest.ino +++ b/Firmware/OpenLog_Artemis/productionTest.ino @@ -91,12 +91,7 @@ void productionTest() // OK. The breakout pins were held low and then released (pulled-up) within five seconds so let's go into production test mode! //We need to manually restore the Serial1 TX and RX pins before we can use Serial1 - am_hal_gpio_pincfg_t pinConfigTx = g_AM_BSP_GPIO_COM_UART_TX; - pinConfigTx.uFuncSel = AM_HAL_PIN_12_UART1TX; - pin_config(PinName(BREAKOUT_PIN_TX), pinConfigTx); - am_hal_gpio_pincfg_t pinConfigRx = g_AM_BSP_GPIO_COM_UART_RX; - pinConfigRx.uFuncSel = AM_HAL_PIN_13_UART1RX; - pin_config(PinName(BREAKOUT_PIN_RX), pinConfigRx); + configureSerial1TxRx(); Serial.begin(115200); //Default for initial debug messages if necessary diff --git a/Firmware/OpenLog_Artemis/zmodem.ino b/Firmware/OpenLog_Artemis/zmodem.ino index 14ef6ff..db44eeb 100644 --- a/Firmware/OpenLog_Artemis/zmodem.ino +++ b/Firmware/OpenLog_Artemis/zmodem.ino @@ -414,12 +414,7 @@ void sdCardMenu(void) if (settings.useTxRxPinsForTerminal == false) { //We need to manually restore the Serial1 TX and RX pins - am_hal_gpio_pincfg_t pinConfigTx = g_AM_BSP_GPIO_COM_UART_TX; - pinConfigTx.uFuncSel = AM_HAL_PIN_12_UART1TX; - pin_config(PinName(BREAKOUT_PIN_TX), pinConfigTx); - am_hal_gpio_pincfg_t pinConfigRx = g_AM_BSP_GPIO_COM_UART_RX; - pinConfigRx.uFuncSel = AM_HAL_PIN_13_UART1RX; - pin_config(PinName(BREAKOUT_PIN_RX), pinConfigRx); + configureSerial1TxRx(); Serial1.begin(settings.serialLogBaudRate); // (Re)start the serial port } From 0436354a84775b2f44a4391e53904efe90217f5e Mon Sep 17 00:00:00 2001 From: PaulZC Date: Fri, 9 Jul 2021 10:22:08 +0100 Subject: [PATCH 11/15] Ensure pull-ups are enabled on Serial1 Rx and the interrupt pins --- Firmware/OpenLog_Artemis/OpenLog_Artemis.ino | 16 ++++--- Firmware/OpenLog_Artemis/lowerPower.ino | 46 +++++++++++-------- .../OpenLog_Artemis/menuAnalogLogging.ino | 4 +- Firmware/OpenLog_Artemis/menuPower.ino | 13 +++++- Firmware/OpenLog_Artemis/menuTerminal.ino | 16 ++++--- Firmware/OpenLog_Artemis/nvm.ino | 3 ++ Firmware/OpenLog_Artemis/settings.h | 1 + 7 files changed, 62 insertions(+), 37 deletions(-) diff --git a/Firmware/OpenLog_Artemis/OpenLog_Artemis.ino b/Firmware/OpenLog_Artemis/OpenLog_Artemis.ino index ab2a828..20c0237 100644 --- a/Firmware/OpenLog_Artemis/OpenLog_Artemis.ino +++ b/Firmware/OpenLog_Artemis/OpenLog_Artemis.ino @@ -98,11 +98,10 @@ (worked around) Figure out why attachInterrupt(PIN_POWER_LOSS, powerDownOLA, FALLING); causes badness (done) Add a setQwiicPullups function (done) Check if we need ap3_set_pin_to_analog when coming out of sleep - (done?) Investigate why code does not wake from deep sleep correctly + (done) Investigate why code does not wake from deep sleep correctly (worked around) Correct SerialLog RX: https://github.com/sparkfun/Arduino_Apollo3/issues/401 The work-around is to use Serial1 in place of serialLog and then to manually force UART1 to use pins 12 and 13 We need a work-around anyway because if pins 12 or 13 have been used as analog inputs, Serial1.begin does not re-configure them for UART TX and RX - (TO DO) Figure out why we actually need something connected to the RX pin on start up when using the Tx and Rx pins for the terminal (in progress) Reduce sleep current as much as possible. v1.2.1 achieved ~110uA. With v2.1.1 the draw is more like 280uA... */ @@ -388,6 +387,7 @@ void setup() { pinMode(PIN_STOP_LOGGING, INPUT_PULLUP); delay(1); // Let the pin stabilize attachInterrupt(PIN_STOP_LOGGING, stopLoggingISR, FALLING); // Enable the interrupt + pin_config(PinName(PIN_STOP_LOGGING), g_AM_HAL_GPIO_INPUT_PULLUP); // Make sure the pull-up does actually stay enabled stopLoggingSeen = false; // Make sure the flag is clear } @@ -405,6 +405,7 @@ void setup() { SerialPrintln(F("Rising-edge triggering is enabled. Sensor data will be logged on a rising edge on GPIO pin 11.")); attachInterrupt(PIN_TRIGGER, triggerPinISR, RISING); // Enable the interrupt } + pin_config(PinName(PIN_TRIGGER), g_AM_HAL_GPIO_INPUT_PULLUP); // Make sure the pull-up does actually stay enabled triggerEdgeSeen = false; // Make sure the flag is clear } @@ -829,7 +830,7 @@ bool checkSleepOnRTCTime(void) void beginQwiic() { pinMode(PIN_QWIIC_POWER, OUTPUT); - pin_config(PinName(PIN_QWIIC_POWER), g_AM_HAL_GPIO_OUTPUT); // Make sure the pin does actually get re-configured after being disabled + pin_config(PinName(PIN_QWIIC_POWER), g_AM_HAL_GPIO_OUTPUT); // Make sure the pin does actually get re-configured qwiicPowerOn(); qwiic.begin(); setQwiicPullups(settings.qwiicBusPullUps); //Just to make it really clear what pull-ups are being used, set pullups here. @@ -874,9 +875,9 @@ void setQwiicPullups(uint32_t qwiicBusPullUps) void beginSD() { pinMode(PIN_MICROSD_POWER, OUTPUT); - pin_config(PinName(PIN_MICROSD_POWER), g_AM_HAL_GPIO_OUTPUT); // Make sure the pin does actually get re-configured after being disabled + pin_config(PinName(PIN_MICROSD_POWER), g_AM_HAL_GPIO_OUTPUT); // Make sure the pin does actually get re-configured pinMode(PIN_MICROSD_CHIP_SELECT, OUTPUT); - pin_config(PinName(PIN_MICROSD_CHIP_SELECT), g_AM_HAL_GPIO_OUTPUT); // Make sure the pin does actually get re-configured after being disabled + pin_config(PinName(PIN_MICROSD_CHIP_SELECT), g_AM_HAL_GPIO_OUTPUT); // Make sure the pin does actually get re-configured digitalWrite(PIN_MICROSD_CHIP_SELECT, HIGH); //Be sure SD is deselected if (settings.enableSD == true) @@ -952,15 +953,16 @@ void configureSerial1TxRx(void) // Configure pins 12 and 13 for UART1 TX and RX pin_config(PinName(BREAKOUT_PIN_TX), pinConfigTx); am_hal_gpio_pincfg_t pinConfigRx = g_AM_BSP_GPIO_COM_UART_RX; pinConfigRx.uFuncSel = AM_HAL_PIN_13_UART1RX; + pinConfigRx.ePullup = AM_HAL_GPIO_PIN_PULLUP_WEAK; // Put a weak pull-up on the Rx pin pin_config(PinName(BREAKOUT_PIN_RX), pinConfigRx); } void beginIMU() { pinMode(PIN_IMU_POWER, OUTPUT); - pin_config(PinName(PIN_IMU_POWER), g_AM_HAL_GPIO_OUTPUT); // Make sure the pin does actually get re-configured after being disabled + pin_config(PinName(PIN_IMU_POWER), g_AM_HAL_GPIO_OUTPUT); // Make sure the pin does actually get re-configured pinMode(PIN_IMU_CHIP_SELECT, OUTPUT); - pin_config(PinName(PIN_IMU_CHIP_SELECT), g_AM_HAL_GPIO_OUTPUT); // Make sure the pin does actually get re-configured after being disabled + pin_config(PinName(PIN_IMU_CHIP_SELECT), g_AM_HAL_GPIO_OUTPUT); // Make sure the pin does actually get re-configured digitalWrite(PIN_IMU_CHIP_SELECT, HIGH); //Be sure IMU is deselected if (settings.enableIMU == true && settings.logMaxRate == false) diff --git a/Firmware/OpenLog_Artemis/lowerPower.ino b/Firmware/OpenLog_Artemis/lowerPower.ino index 9b1f0dd..dfc28b8 100644 --- a/Firmware/OpenLog_Artemis/lowerPower.ino +++ b/Firmware/OpenLog_Artemis/lowerPower.ino @@ -317,9 +317,12 @@ void goToSleep(uint32_t sysTicksToSleep) am_hal_gpio_pinconfig(PIN_QWIIC_SDA , g_AM_HAL_GPIO_DISABLE); am_hal_gpio_pinconfig(PIN_QWIIC_SCL , g_AM_HAL_GPIO_DISABLE); - //Do disable pins 48 and 49 (UART0) to stop them back-feeding the CH340 - am_hal_gpio_pinconfig(48 , g_AM_HAL_GPIO_DISABLE); //TX0 - am_hal_gpio_pinconfig(49 , g_AM_HAL_GPIO_DISABLE); //RX0 + //If requested, disable pins 48 and 49 (UART0) to stop them back-feeding the CH340 + if (settings.serialTxRxDuringSleep == false) + { + am_hal_gpio_pinconfig(48 , g_AM_HAL_GPIO_DISABLE); //TX0 + am_hal_gpio_pinconfig(49 , g_AM_HAL_GPIO_DISABLE); //RX0 + } //Make sure PIN_POWER_LOSS is configured as an input for the WDT pinMode(PIN_POWER_LOSS, INPUT); // BD49K30G-TL has CMOS output and does not need a pull-up @@ -405,7 +408,7 @@ void wakeFromSleep() //If 3.3V rail drops below 3V, system will enter low power mode and maintain RTC pinMode(PIN_POWER_LOSS, INPUT); // BD49K30G-TL has CMOS output and does not need a pull-up - pin_config(PinName(PIN_POWER_LOSS), g_AM_HAL_GPIO_INPUT); // Make sure the pin does actually get re-configured after being disabled + pin_config(PinName(PIN_POWER_LOSS), g_AM_HAL_GPIO_INPUT); // Make sure the pin does actually get re-configured delay(1); // Let PIN_POWER_LOSS stabilize @@ -418,39 +421,44 @@ void wakeFromSleep() if (settings.useGPIO32ForStopLogging == true) { pinMode(PIN_STOP_LOGGING, INPUT_PULLUP); - pin_config(PinName(PIN_STOP_LOGGING), g_AM_HAL_GPIO_INPUT_PULLUP); // Make sure the pin does actually get re-configured after being disabled + pin_config(PinName(PIN_STOP_LOGGING), g_AM_HAL_GPIO_INPUT_PULLUP); // Make sure the pin does actually get re-configured delay(1); // Let the pin stabilize attachInterrupt(PIN_STOP_LOGGING, stopLoggingISR, FALLING); // Enable the interrupt + pin_config(PinName(PIN_STOP_LOGGING), g_AM_HAL_GPIO_INPUT_PULLUP); // Make sure the pull-up does actually stay enabled stopLoggingSeen = false; // Make sure the flag is clear } if (settings.useGPIO11ForTrigger == true) //(This should be redundant. We should not be going to sleep if triggering is enabled?) { pinMode(PIN_TRIGGER, INPUT_PULLUP); - pin_config(PinName(PIN_TRIGGER), g_AM_HAL_GPIO_INPUT_PULLUP); // Make sure the pin does actually get re-configured after being disabled + pin_config(PinName(PIN_TRIGGER), g_AM_HAL_GPIO_INPUT_PULLUP); // Make sure the pin does actually get re-configured delay(1); // Let the pin stabilize if (settings.fallingEdgeTrigger == true) attachInterrupt(PIN_TRIGGER, triggerPinISR, FALLING); // Enable the interrupt else attachInterrupt(PIN_TRIGGER, triggerPinISR, RISING); // Enable the interrupt + pin_config(PinName(PIN_TRIGGER), g_AM_HAL_GPIO_INPUT_PULLUP); // Make sure the pull-up does actually stay enabled triggerEdgeSeen = false; // Make sure the flag is clear } if (settings.useGPIO11ForFastSlowLogging == true) { pinMode(PIN_TRIGGER, INPUT_PULLUP); - pin_config(PinName(PIN_TRIGGER), g_AM_HAL_GPIO_INPUT_PULLUP); // Make sure the pin does actually get re-configured after being disabled + pin_config(PinName(PIN_TRIGGER), g_AM_HAL_GPIO_INPUT_PULLUP); // Make sure the pin does actually get re-configured } pinMode(PIN_STAT_LED, OUTPUT); - pin_config(PinName(PIN_STAT_LED), g_AM_HAL_GPIO_OUTPUT); // Make sure the pin does actually get re-configured after being disabled + pin_config(PinName(PIN_STAT_LED), g_AM_HAL_GPIO_OUTPUT); // Make sure the pin does actually get re-configured digitalWrite(PIN_STAT_LED, LOW); powerLEDOn(); - //Re-enable pins 48 and 49 (UART0) - pin_config(PinName(48), g_AM_BSP_GPIO_COM_UART_TX); - pin_config(PinName(49), g_AM_BSP_GPIO_COM_UART_RX); + //Re-enable pins 48 and 49 (UART0) if requested + if (settings.serialTxRxDuringSleep == false) + { + pin_config(PinName(48), g_AM_BSP_GPIO_COM_UART_TX); + pin_config(PinName(49), g_AM_BSP_GPIO_COM_UART_RX); + } //Re-enable CIPO, COPI, SCK and the chip selects but may as well leave ICM_INT disabled pin_config(PinName(PIN_SPI_CIPO), g_AM_BSP_GPIO_IOM0_MISO); @@ -553,7 +561,7 @@ void waitForQwiicBusPowerDelay() // Wait while the qwiic devices power up void qwiicPowerOn() { pinMode(PIN_QWIIC_POWER, OUTPUT); - pin_config(PinName(PIN_QWIIC_POWER), g_AM_HAL_GPIO_OUTPUT); // Make sure the pin does actually get re-configured after being disabled + pin_config(PinName(PIN_QWIIC_POWER), g_AM_HAL_GPIO_OUTPUT); // Make sure the pin does actually get re-configured #if(HARDWARE_VERSION_MAJOR == 0) digitalWrite(PIN_QWIIC_POWER, LOW); #else @@ -565,7 +573,7 @@ void qwiicPowerOn() void qwiicPowerOff() { pinMode(PIN_QWIIC_POWER, OUTPUT); - pin_config(PinName(PIN_QWIIC_POWER), g_AM_HAL_GPIO_OUTPUT); // Make sure the pin does actually get re-configured after being disabled + pin_config(PinName(PIN_QWIIC_POWER), g_AM_HAL_GPIO_OUTPUT); // Make sure the pin does actually get re-configured #if(HARDWARE_VERSION_MAJOR == 0) digitalWrite(PIN_QWIIC_POWER, HIGH); #else @@ -576,26 +584,26 @@ void qwiicPowerOff() void microSDPowerOn() { pinMode(PIN_MICROSD_POWER, OUTPUT); - pin_config(PinName(PIN_MICROSD_POWER), g_AM_HAL_GPIO_OUTPUT); // Make sure the pin does actually get re-configured after being disabled + pin_config(PinName(PIN_MICROSD_POWER), g_AM_HAL_GPIO_OUTPUT); // Make sure the pin does actually get re-configured digitalWrite(PIN_MICROSD_POWER, LOW); } void microSDPowerOff() { pinMode(PIN_MICROSD_POWER, OUTPUT); - pin_config(PinName(PIN_MICROSD_POWER), g_AM_HAL_GPIO_OUTPUT); // Make sure the pin does actually get re-configured after being disabled + pin_config(PinName(PIN_MICROSD_POWER), g_AM_HAL_GPIO_OUTPUT); // Make sure the pin does actually get re-configured digitalWrite(PIN_MICROSD_POWER, HIGH); } void imuPowerOn() { pinMode(PIN_IMU_POWER, OUTPUT); - pin_config(PinName(PIN_IMU_POWER), g_AM_HAL_GPIO_OUTPUT); // Make sure the pin does actually get re-configured after being disabled + pin_config(PinName(PIN_IMU_POWER), g_AM_HAL_GPIO_OUTPUT); // Make sure the pin does actually get re-configured digitalWrite(PIN_IMU_POWER, HIGH); } void imuPowerOff() { pinMode(PIN_IMU_POWER, OUTPUT); - pin_config(PinName(PIN_IMU_POWER), g_AM_HAL_GPIO_OUTPUT); // Make sure the pin does actually get re-configured after being disabled + pin_config(PinName(PIN_IMU_POWER), g_AM_HAL_GPIO_OUTPUT); // Make sure the pin does actually get re-configured digitalWrite(PIN_IMU_POWER, LOW); } @@ -603,7 +611,7 @@ void powerLEDOn() { #if(HARDWARE_VERSION_MAJOR >= 1) pinMode(PIN_PWR_LED, OUTPUT); - pin_config(PinName(PIN_PWR_LED), g_AM_HAL_GPIO_OUTPUT); // Make sure the pin does actually get re-configured after being disabled + pin_config(PinName(PIN_PWR_LED), g_AM_HAL_GPIO_OUTPUT); // Make sure the pin does actually get re-configured digitalWrite(PIN_PWR_LED, HIGH); // Turn the Power LED on #endif } @@ -611,7 +619,7 @@ void powerLEDOff() { #if(HARDWARE_VERSION_MAJOR >= 1) pinMode(PIN_PWR_LED, OUTPUT); - pin_config(PinName(PIN_PWR_LED), g_AM_HAL_GPIO_OUTPUT); // Make sure the pin does actually get re-configured after being disabled + pin_config(PinName(PIN_PWR_LED), g_AM_HAL_GPIO_OUTPUT); // Make sure the pin does actually get re-configured digitalWrite(PIN_PWR_LED, LOW); // Turn the Power LED off #endif } diff --git a/Firmware/OpenLog_Artemis/menuAnalogLogging.ino b/Firmware/OpenLog_Artemis/menuAnalogLogging.ino index 378c370..68c3533 100644 --- a/Firmware/OpenLog_Artemis/menuAnalogLogging.ino +++ b/Firmware/OpenLog_Artemis/menuAnalogLogging.ino @@ -56,7 +56,7 @@ void menuAnalogLogging() settings.useGPIO11ForTrigger = false; detachInterrupt(PIN_TRIGGER); // Disable the interrupt pinMode(PIN_TRIGGER, INPUT); // Remove the pull-up - pin_config(PinName(PIN_TRIGGER), g_AM_HAL_GPIO_INPUT); // Make sure the pin does actually get re-configured after being disabled + pin_config(PinName(PIN_TRIGGER), g_AM_HAL_GPIO_INPUT); // Make sure the pin does actually get re-configured triggerEdgeSeen = false; // Make sure the flag is clear } else @@ -120,7 +120,7 @@ void menuAnalogLogging() settings.useGPIO32ForStopLogging = false; detachInterrupt(PIN_STOP_LOGGING); // Disable the interrupt pinMode(PIN_STOP_LOGGING, INPUT); // Remove the pull-up - pin_config(PinName(PIN_STOP_LOGGING), g_AM_HAL_GPIO_INPUT); // Make sure the pin does actually get re-configured after being disabled + pin_config(PinName(PIN_STOP_LOGGING), g_AM_HAL_GPIO_INPUT); // Make sure the pin does actually get re-configured } else settings.logA32 = false; diff --git a/Firmware/OpenLog_Artemis/menuPower.ino b/Firmware/OpenLog_Artemis/menuPower.ino index 0c91e7e..e70bbcd 100644 --- a/Firmware/OpenLog_Artemis/menuPower.ino +++ b/Firmware/OpenLog_Artemis/menuPower.ino @@ -32,6 +32,10 @@ void menuPower() SerialPrintf2("%s\r\n", tempStr); #endif + SerialPrint(F("7) Serial Tx and Rx pins during sleep are: ")); + if (settings.serialTxRxDuringSleep == true) SerialPrintln(F("Enabled")); + else SerialPrintln(F("Disabled")); + SerialPrintln(F("x) Exit")); byte incoming = getByteChoice(menuTimeout); //Timeout after x seconds @@ -50,7 +54,7 @@ void menuPower() settings.useGPIO32ForStopLogging = false; detachInterrupt(PIN_STOP_LOGGING); // Disable the interrupt pinMode(PIN_STOP_LOGGING, INPUT); // Remove the pull-up - pin_config(PinName(PIN_STOP_LOGGING), g_AM_HAL_GPIO_INPUT); // Make sure the pin does actually get re-configured after being disabled + pin_config(PinName(PIN_STOP_LOGGING), g_AM_HAL_GPIO_INPUT); // Make sure the pin does actually get re-configured stopLoggingSeen = false; // Make sure the flag is clear } else @@ -58,9 +62,10 @@ void menuPower() // Enable stop logging settings.useGPIO32ForStopLogging = true; pinMode(PIN_STOP_LOGGING, INPUT_PULLUP); - pin_config(PinName(PIN_STOP_LOGGING), g_AM_HAL_GPIO_INPUT_PULLUP); // Make sure the pin does actually get re-configured after being disabled + pin_config(PinName(PIN_STOP_LOGGING), g_AM_HAL_GPIO_INPUT_PULLUP); // Make sure the pin does actually get re-configured delay(1); // Let the pin stabilize attachInterrupt(PIN_STOP_LOGGING, stopLoggingISR, FALLING); // Enable the interrupt + pin_config(PinName(PIN_STOP_LOGGING), g_AM_HAL_GPIO_INPUT_PULLUP); // Make sure the pull-up does actually stay enabled stopLoggingSeen = false; // Make sure the flag is clear settings.logA32 = false; // Disable analog logging on pin 32 } @@ -103,6 +108,10 @@ void menuPower() settings.vinCorrectionFactor = tempCF; } #endif + else if (incoming == '7') + { + settings.serialTxRxDuringSleep ^= 1; + } else if (incoming == 'x') break; else if (incoming == STATUS_GETBYTE_TIMEOUT) diff --git a/Firmware/OpenLog_Artemis/menuTerminal.ino b/Firmware/OpenLog_Artemis/menuTerminal.ino index f509f1b..b3c033d 100644 --- a/Firmware/OpenLog_Artemis/menuTerminal.ino +++ b/Firmware/OpenLog_Artemis/menuTerminal.ino @@ -288,7 +288,7 @@ void menuLogRate() settings.useGPIO11ForTrigger = false; detachInterrupt(PIN_TRIGGER); // Disable the interrupt pinMode(PIN_TRIGGER, INPUT); // Remove the pull-up - pin_config(PinName(PIN_TRIGGER), g_AM_HAL_GPIO_INPUT); // Make sure the pin does actually get re-configured after being disabled + pin_config(PinName(PIN_TRIGGER), g_AM_HAL_GPIO_INPUT); // Make sure the pin does actually get re-configured triggerEdgeSeen = false; // Make sure the flag is clear } else @@ -296,12 +296,13 @@ void menuLogRate() // Enable triggering settings.useGPIO11ForTrigger = true; pinMode(PIN_TRIGGER, INPUT_PULLUP); - pin_config(PinName(PIN_TRIGGER), g_AM_HAL_GPIO_INPUT_PULLUP); // Make sure the pin does actually get re-configured after being disabled + pin_config(PinName(PIN_TRIGGER), g_AM_HAL_GPIO_INPUT_PULLUP); // Make sure the pin does actually get re-configured delay(1); // Let the pin stabilize if (settings.fallingEdgeTrigger == true) attachInterrupt(PIN_TRIGGER, triggerPinISR, FALLING); // Enable the interrupt else attachInterrupt(PIN_TRIGGER, triggerPinISR, RISING); // Enable the interrupt + pin_config(PinName(PIN_TRIGGER), g_AM_HAL_GPIO_INPUT_PULLUP); // Make sure the pull-up does actually stay enabled triggerEdgeSeen = false; // Make sure the flag is clear settings.logA11 = false; // Disable analog logging on pin 11 settings.logMaxRate = false; // Disable max rate logging @@ -328,6 +329,7 @@ void menuLogRate() attachInterrupt(PIN_TRIGGER, triggerPinISR, FALLING); // Enable the interrupt else attachInterrupt(PIN_TRIGGER, triggerPinISR, RISING); // Enable the interrupt + pin_config(PinName(PIN_TRIGGER), g_AM_HAL_GPIO_INPUT_PULLUP); // Make sure the pull-up does actually stay enabled triggerEdgeSeen = false; // Make sure the flag is clear } else @@ -392,7 +394,7 @@ void menuLogRate() settings.useRTCForFastSlowLogging = false; settings.logA11 = false; // Disable analog logging on pin 11 pinMode(PIN_TRIGGER, INPUT_PULLUP); - pin_config(PinName(PIN_TRIGGER), g_AM_HAL_GPIO_INPUT_PULLUP); // Make sure the pin does actually get re-configured after being disabled + pin_config(PinName(PIN_TRIGGER), g_AM_HAL_GPIO_INPUT_PULLUP); // Make sure the pin does actually get re-configured delay(1); // Let the pin stabilize // Disable triggering if (settings.useGPIO11ForTrigger == true) @@ -406,7 +408,7 @@ void menuLogRate() { settings.useGPIO11ForFastSlowLogging = false; pinMode(PIN_TRIGGER, INPUT); // Remove the pull-up - pin_config(PinName(PIN_TRIGGER), g_AM_HAL_GPIO_INPUT); // Make sure the pin does actually get re-configured after being disabled + pin_config(PinName(PIN_TRIGGER), g_AM_HAL_GPIO_INPUT); // Make sure the pin does actually get re-configured } } else @@ -429,7 +431,7 @@ void menuLogRate() { settings.useGPIO11ForFastSlowLogging = false; pinMode(PIN_TRIGGER, INPUT); // Remove the pull-up - pin_config(PinName(PIN_TRIGGER), g_AM_HAL_GPIO_INPUT); // Make sure the pin does actually get re-configured after being disabled + pin_config(PinName(PIN_TRIGGER), g_AM_HAL_GPIO_INPUT); // Make sure the pin does actually get re-configured } } else if (incoming == 17) @@ -440,7 +442,7 @@ void menuLogRate() if (settings.useGPIO11ForFastSlowLogging == true) { pinMode(PIN_TRIGGER, INPUT); // Remove the pull-up - pin_config(PinName(PIN_TRIGGER), g_AM_HAL_GPIO_INPUT); // Make sure the pin does actually get re-configured after being disabled + pin_config(PinName(PIN_TRIGGER), g_AM_HAL_GPIO_INPUT); // Make sure the pin does actually get re-configured } settings.useGPIO11ForFastSlowLogging = false; settings.logA11 = false; // Disable analog logging on pin 11 @@ -449,7 +451,7 @@ void menuLogRate() { detachInterrupt(PIN_TRIGGER); // Disable the interrupt pinMode(PIN_TRIGGER, INPUT); // Remove the pull-up - pin_config(PinName(PIN_TRIGGER), g_AM_HAL_GPIO_INPUT); // Make sure the pin does actually get re-configured after being disabled + pin_config(PinName(PIN_TRIGGER), g_AM_HAL_GPIO_INPUT); // Make sure the pin does actually get re-configured triggerEdgeSeen = false; // Make sure the flag is clear } settings.useGPIO11ForTrigger = false; diff --git a/Firmware/OpenLog_Artemis/nvm.ino b/Firmware/OpenLog_Artemis/nvm.ino index b696897..d7a1df0 100644 --- a/Firmware/OpenLog_Artemis/nvm.ino +++ b/Firmware/OpenLog_Artemis/nvm.ino @@ -180,6 +180,7 @@ void recordSystemSettingsToFile() settingsFile.println("imuLogDMPCpass=" + (String)settings.imuLogDMPCpass); settingsFile.println("minimumAwakeTimeMillis=" + (String)settings.minimumAwakeTimeMillis); settingsFile.println("identifyBioSensorHubs=" + (String)settings.identifyBioSensorHubs); + settingsFile.println("serialTxRxDuringSleep=" + (String)settings.serialTxRxDuringSleep); updateDataFileAccess(&settingsFile); // Update the file access time & date settingsFile.close(); } @@ -457,6 +458,8 @@ bool parseLine(char* str) { settings.minimumAwakeTimeMillis = d; else if (strcmp(settingName, "identifyBioSensorHubs") == 0) settings.identifyBioSensorHubs = d; + else if (strcmp(settingName, "serialTxRxDuringSleep") == 0) + settings.serialTxRxDuringSleep = d; else { SerialPrintf2("Unknown setting %s. Ignoring...\r\n", settingName); diff --git a/Firmware/OpenLog_Artemis/settings.h b/Firmware/OpenLog_Artemis/settings.h index 9efef54..16ea3fe 100644 --- a/Firmware/OpenLog_Artemis/settings.h +++ b/Firmware/OpenLog_Artemis/settings.h @@ -423,6 +423,7 @@ struct struct_settings { bool imuLogDMPCpass = false; // If true, log INV_ICM20948_SENSOR_MAGNETIC_FIELD_UNCALIBRATED unsigned long minimumAwakeTimeMillis = 0; // Set to greater than zero to keep the Artemis awake for this long between sleeps bool identifyBioSensorHubs = false; // If true, Bio Sensor Hubs (Pulse Oximeters) will be included in autoDetect (requires exclusive use of pins 32 and 11) + bool serialTxRxDuringSleep = false; // If true, the Serial Tx and Rx pins are left enabled during sleep - to prevent the COM port reinitializing } settings; //These are the devices on board OpenLog that may be on or offline. From 0022b9b4703368ca5fc7f49fd255dd21a9f4ff61 Mon Sep 17 00:00:00 2001 From: PaulZC Date: Fri, 9 Jul 2021 13:59:10 +0100 Subject: [PATCH 12/15] Add printGNSSDebugMessages and gnssFactoryDefault --- Firmware/OpenLog_Artemis/autoDetect.ino | 3 +- .../OpenLog_Artemis/menuAttachedDevices.ino | 49 ++++++++++++++++++- Firmware/OpenLog_Artemis/menuDebug.ino | 8 +++ Firmware/OpenLog_Artemis/menuTimeStamp.ino | 4 +- Firmware/OpenLog_Artemis/nvm.ino | 3 ++ Firmware/OpenLog_Artemis/settings.h | 1 + 6 files changed, 65 insertions(+), 3 deletions(-) diff --git a/Firmware/OpenLog_Artemis/autoDetect.ino b/Firmware/OpenLog_Artemis/autoDetect.ino index 607fc0f..932883b 100644 --- a/Firmware/OpenLog_Artemis/autoDetect.ino +++ b/Firmware/OpenLog_Artemis/autoDetect.ino @@ -353,6 +353,7 @@ bool beginQwiicDevices() SFE_UBLOX_GNSS *tempDevice = (SFE_UBLOX_GNSS *)temp->classPtr; struct_uBlox *nodeSetting = (struct_uBlox *)temp->configPtr; //Create a local pointer that points to same spot as node does if (nodeSetting->powerOnDelayMillis > qwiicPowerOnDelayMillis) qwiicPowerOnDelayMillis = nodeSetting->powerOnDelayMillis; // Increase qwiicPowerOnDelayMillis if required + if(settings.printGNSSDebugMessages == true) tempDevice->enableDebugging(); // Enable debug messages if required temp->online = tempDevice->begin(qwiic, temp->address); //Wire port, Address setQwiicPullups(settings.qwiicBusPullUps); //Re-enable pullups. } @@ -1206,7 +1207,7 @@ deviceType_e testDevice(uint8_t i2cAddress, uint8_t muxAddress, uint8_t portNumb //Confidence: High - Sends/receives CRC checked data response setQwiicPullups(0); //Disable pullups to minimize CRC issues SFE_UBLOX_GNSS sensor; - if(settings.printDebugMessages == true) sensor.enableDebugging(); // Enable debug messages if required + if(settings.printGNSSDebugMessages == true) sensor.enableDebugging(); // Enable debug messages if required if (sensor.begin(qwiic, i2cAddress) == true) //Wire port, address { setQwiicPullups(settings.qwiicBusPullUps); //Re-enable pullups to prevent ghosts at 0x43 onwards diff --git a/Firmware/OpenLog_Artemis/menuAttachedDevices.ino b/Firmware/OpenLog_Artemis/menuAttachedDevices.ino index 732c58e..941f149 100644 --- a/Firmware/OpenLog_Artemis/menuAttachedDevices.ino +++ b/Firmware/OpenLog_Artemis/menuAttachedDevices.ino @@ -1006,6 +1006,8 @@ void menuConfigure_uBlox(void *configPtr) if (sensorSetting->useAutoPVT == true) SerialPrintln(F("Yes")); else SerialPrintln(F("No")); + SerialPrintln(F("16) Reset GNSS to factory defaults")); + SerialFlush(); } SerialPrintln(F("x) Exit")); @@ -1051,6 +1053,18 @@ void menuConfigure_uBlox(void *configPtr) } else if (incoming == 15) sensorSetting->useAutoPVT ^= 1; + else if (incoming == 16) + { + SerialPrintln(F("Reset GNSS module to factory defaults. This will take 5 seconds to complete.")); + SerialPrintln(F("Are you sure? Press 'y' to confirm: ")); + byte bContinue = getByteChoice(menuTimeout); + if (bContinue == 'y') + { + gnssFactoryDefault(); + } + else + SerialPrintln(F("Reset GNSS aborted")); + } else if (incoming == STATUS_PRESSED_X) break; else if (incoming == STATUS_GETNUMBER_TIMEOUT) @@ -1065,7 +1079,6 @@ void menuConfigure_uBlox(void *configPtr) else printUnknown(incoming); } - } bool isUbloxAttached() @@ -1102,6 +1115,9 @@ void getUbloxDateTime(int &year, int &month, int &day, int &hour, int &minute, i SFE_UBLOX_GNSS *nodeDevice = (SFE_UBLOX_GNSS *)temp->classPtr; struct_uBlox *nodeSetting = (struct_uBlox *)temp->configPtr; + //If autoPVT is enabled, flush the data to make sure we get fresh date and time + if (nodeSetting->useAutoPVT) nodeDevice->flushPVT(); + //Get latested date/time from GPS //These will be extracted from a single PVT packet year = nodeDevice->getYear(); @@ -1121,6 +1137,37 @@ void getUbloxDateTime(int &year, int &month, int &day, int &hour, int &minute, i } } +void gnssFactoryDefault(void) +{ + //Step through node list + node *temp = head; + + while (temp != NULL) + { + switch (temp->deviceType) + { + case DEVICE_GPS_UBLOX: + { + setQwiicPullups(0); //Disable pullups to minimize CRC issues + + SFE_UBLOX_GNSS *nodeDevice = (SFE_UBLOX_GNSS *)temp->classPtr; + struct_uBlox *nodeSetting = (struct_uBlox *)temp->configPtr; + + //Reset the module to the factory defaults + nodeDevice->factoryDefault(); + + delay(5000); //Blocking delay to allow module to reset + + nodeDevice->setI2COutput(COM_TYPE_UBX); //Set the I2C port to output UBX only (turn off NMEA noise) + nodeDevice->saveConfigSelective(VAL_CFG_SUBSEC_IOPORT); //Save (only) the current ioPortsettings to flash and BBR + + setQwiicPullups(settings.qwiicBusPullUps); //Re-enable pullups + } + } + temp = temp->next; + } +} + void menuConfigure_MCP9600(void *configPtr) { struct_MCP9600 *sensorSetting = (struct_MCP9600*)configPtr; diff --git a/Firmware/OpenLog_Artemis/menuDebug.ino b/Firmware/OpenLog_Artemis/menuDebug.ino index 1a63549..20a0976 100644 --- a/Firmware/OpenLog_Artemis/menuDebug.ino +++ b/Firmware/OpenLog_Artemis/menuDebug.ino @@ -13,6 +13,10 @@ void menuDebug() if (settings.resetOnZeroDeviceCount == true) SerialPrintln(F("Enabled")); else SerialPrintln(F("Disabled")); + SerialPrint(F("3) GNSS Debug Messages: ")); + if (settings.printGNSSDebugMessages == true) SerialPrintln(F("Enabled")); + else SerialPrintln(F("Disabled")); + SerialPrintln(F("x) Exit")); byte incoming = getByteChoice(menuTimeout); //Timeout after x seconds @@ -42,6 +46,10 @@ void menuDebug() settings.resetOnZeroDeviceCount ^= 1; } } + else if (incoming == '3') + { + settings.printGNSSDebugMessages ^= 1; + } else if (incoming == 'x') break; else if (incoming == STATUS_GETBYTE_TIMEOUT) diff --git a/Firmware/OpenLog_Artemis/menuTimeStamp.ino b/Firmware/OpenLog_Artemis/menuTimeStamp.ino index 62ed995..1b10775 100644 --- a/Firmware/OpenLog_Artemis/menuTimeStamp.ino +++ b/Firmware/OpenLog_Artemis/menuTimeStamp.ino @@ -57,7 +57,7 @@ void menuTimeStamp() sprintf(rtcHundredths, "0%d", myRTC.hundredths); else sprintf(rtcHundredths, "%d", myRTC.hundredths); - sprintf(rtcTime, "%s:%s:%s.%s,", rtcHour, rtcMin, rtcSec, rtcHundredths); + sprintf(rtcTime, "%s:%s:%s.%s", rtcHour, rtcMin, rtcSec, rtcHundredths); SerialPrintln(rtcTime); @@ -174,6 +174,8 @@ void menuTimeStamp() SerialPrint(F("Enter current day (1 to 31): ")); dd = getNumber(menuTimeout); //Timeout after x seconds + myRTC.getTime(); + h = myRTC.hour; m = myRTC.minute; s = myRTC.seconds; myRTC.setTime(0, s, m, h, dd, mm, yy); //Manually set RTC lastSDFileNameChangeTime = rtcMillis(); // Record the time of the file name change } diff --git a/Firmware/OpenLog_Artemis/nvm.ino b/Firmware/OpenLog_Artemis/nvm.ino index d7a1df0..a46d0ab 100644 --- a/Firmware/OpenLog_Artemis/nvm.ino +++ b/Firmware/OpenLog_Artemis/nvm.ino @@ -181,6 +181,7 @@ void recordSystemSettingsToFile() settingsFile.println("minimumAwakeTimeMillis=" + (String)settings.minimumAwakeTimeMillis); settingsFile.println("identifyBioSensorHubs=" + (String)settings.identifyBioSensorHubs); settingsFile.println("serialTxRxDuringSleep=" + (String)settings.serialTxRxDuringSleep); + settingsFile.println("printGNSSDebugMessages=" + (String)settings.printGNSSDebugMessages); updateDataFileAccess(&settingsFile); // Update the file access time & date settingsFile.close(); } @@ -460,6 +461,8 @@ bool parseLine(char* str) { settings.identifyBioSensorHubs = d; else if (strcmp(settingName, "serialTxRxDuringSleep") == 0) settings.serialTxRxDuringSleep = d; + else if (strcmp(settingName, "printGNSSDebugMessages") == 0) + settings.printGNSSDebugMessages = d; else { SerialPrintf2("Unknown setting %s. Ignoring...\r\n", settingName); diff --git a/Firmware/OpenLog_Artemis/settings.h b/Firmware/OpenLog_Artemis/settings.h index 16ea3fe..765d70b 100644 --- a/Firmware/OpenLog_Artemis/settings.h +++ b/Firmware/OpenLog_Artemis/settings.h @@ -424,6 +424,7 @@ struct struct_settings { unsigned long minimumAwakeTimeMillis = 0; // Set to greater than zero to keep the Artemis awake for this long between sleeps bool identifyBioSensorHubs = false; // If true, Bio Sensor Hubs (Pulse Oximeters) will be included in autoDetect (requires exclusive use of pins 32 and 11) bool serialTxRxDuringSleep = false; // If true, the Serial Tx and Rx pins are left enabled during sleep - to prevent the COM port reinitializing + bool printGNSSDebugMessages = false; } settings; //These are the devices on board OpenLog that may be on or offline. From 49c6eb241c77cb99b4fa0207f99c7459480ae7cb Mon Sep 17 00:00:00 2001 From: PaulZC Date: Thu, 15 Jul 2021 17:01:35 +0100 Subject: [PATCH 13/15] Corrections for Qwiic bus speed (100kHz and 400kHz). Ensure interrupt directions are set correctly. --- Firmware/OpenLog_Artemis/OpenLog_Artemis.ino | 17 ++++++++++++----- Firmware/OpenLog_Artemis/Sensors.ino | 12 ++++++++++++ Firmware/OpenLog_Artemis/autoDetect.ino | 4 ++++ Firmware/OpenLog_Artemis/lowerPower.ino | 17 ++++++++++++++--- .../OpenLog_Artemis/menuAttachedDevices.ino | 3 ++- Firmware/OpenLog_Artemis/menuPower.ino | 4 +++- Firmware/OpenLog_Artemis/menuTerminal.ino | 18 ++++++++++++++++-- 7 files changed, 63 insertions(+), 12 deletions(-) diff --git a/Firmware/OpenLog_Artemis/OpenLog_Artemis.ino b/Firmware/OpenLog_Artemis/OpenLog_Artemis.ino index 20c0237..db241e7 100644 --- a/Firmware/OpenLog_Artemis/OpenLog_Artemis.ino +++ b/Firmware/OpenLog_Artemis/OpenLog_Artemis.ino @@ -13,7 +13,9 @@ The Board should be set to SparkFun Apollo3 \ RedBoard Artemis ATP. - Please note: this version of the firmware compiles on v2.1.0+ of the Apollo3 boards. + Please note: this version of the firmware compiles on v2.1.0 of the Apollo3 boards. + + (At the time of writing, data logging with the the u-blox ZED-F9P is problematic when using v2.1.1 of the core.) v1.0 Power Consumption: Sleep between reads, RTC fully charged, no Qwiic, SD, no USB, no Power LED: 260uA @@ -95,7 +97,7 @@ (in progress) Update to Apollo3 v2.1.1 - FIRMWARE_VERSION_MAJOR = 2. (done) Implement printf float (OLA uses printf float in _so_ many places...): https://github.com/sparkfun/Arduino_Apollo3/issues/278 - (worked around) Figure out why attachInterrupt(PIN_POWER_LOSS, powerDownOLA, FALLING); causes badness + (worked around) attachInterrupt(PIN_POWER_LOSS, powerDownOLA, FALLING); causes badness - https://github.com/sparkfun/Arduino_Apollo3/issues/416 (done) Add a setQwiicPullups function (done) Check if we need ap3_set_pin_to_analog when coming out of sleep (done) Investigate why code does not wake from deep sleep correctly @@ -326,7 +328,7 @@ void setup() { delay(1); // Let PIN_POWER_LOSS stabilize if (digitalRead(PIN_POWER_LOSS) == LOW) powerDownOLA(); //Check PIN_POWER_LOSS just in case we missed the falling edge - //attachInterrupt(PIN_POWER_LOSS, powerDownOLA, FALLING); // TO DO: figure out why this no longer works on v2.1.0 + //attachInterrupt(PIN_POWER_LOSS, powerDownOLA, FALLING); // We can't do this with v2.1.0 as attachInterrupt causes a spontaneous interrupt attachInterrupt(PIN_POWER_LOSS, powerLossISR, FALLING); powerLossSeen = false; // Make sure the flag is clear @@ -387,7 +389,9 @@ void setup() { pinMode(PIN_STOP_LOGGING, INPUT_PULLUP); delay(1); // Let the pin stabilize attachInterrupt(PIN_STOP_LOGGING, stopLoggingISR, FALLING); // Enable the interrupt - pin_config(PinName(PIN_STOP_LOGGING), g_AM_HAL_GPIO_INPUT_PULLUP); // Make sure the pull-up does actually stay enabled + am_hal_gpio_pincfg_t intPinConfig = g_AM_HAL_GPIO_INPUT_PULLUP; + intPinConfig.eIntDir = AM_HAL_GPIO_PIN_INTDIR_HI2LO; + pin_config(PinName(PIN_STOP_LOGGING), intPinConfig); // Make sure the pull-up does actually stay enabled stopLoggingSeen = false; // Make sure the flag is clear } @@ -395,17 +399,20 @@ void setup() { { pinMode(PIN_TRIGGER, INPUT_PULLUP); delay(1); // Let the pin stabilize + am_hal_gpio_pincfg_t intPinConfig = g_AM_HAL_GPIO_INPUT_PULLUP; if (settings.fallingEdgeTrigger == true) { SerialPrintln(F("Falling-edge triggering is enabled. Sensor data will be logged on a falling edge on GPIO pin 11.")); attachInterrupt(PIN_TRIGGER, triggerPinISR, FALLING); // Enable the interrupt + intPinConfig.eIntDir = AM_HAL_GPIO_PIN_INTDIR_HI2LO; } else { SerialPrintln(F("Rising-edge triggering is enabled. Sensor data will be logged on a rising edge on GPIO pin 11.")); attachInterrupt(PIN_TRIGGER, triggerPinISR, RISING); // Enable the interrupt + intPinConfig.eIntDir = AM_HAL_GPIO_PIN_INTDIR_LO2HI; } - pin_config(PinName(PIN_TRIGGER), g_AM_HAL_GPIO_INPUT_PULLUP); // Make sure the pull-up does actually stay enabled + pin_config(PinName(PIN_TRIGGER), intPinConfig); // Make sure the pull-up does actually stay enabled triggerEdgeSeen = false; // Make sure the flag is clear } diff --git a/Firmware/OpenLog_Artemis/Sensors.ino b/Firmware/OpenLog_Artemis/Sensors.ino index aefa4b1..f77f0aa 100644 --- a/Firmware/OpenLog_Artemis/Sensors.ino +++ b/Firmware/OpenLog_Artemis/Sensors.ino @@ -1568,7 +1568,10 @@ void setMaxI2CSpeed() //Check if i2cSpeed is lowered struct_uBlox *sensor = (struct_uBlox*)temp->configPtr; if (sensor->i2cSpeed == 100000) + { + //printDebug("setMaxI2CSpeed: sensor->i2cSpeed is 100000. Reducing maxSpeed to 100kHz\r\n"); maxSpeed = 100000; + } } temp = temp->next; @@ -1576,12 +1579,21 @@ void setMaxI2CSpeed() //If user wants to limit the I2C bus speed, do it here if (maxSpeed > settings.qwiicBusMaxSpeed) + { + //printDebug("setMaxI2CSpeed: maxSpeed is > settings.qwiicBusMaxSpeed. Reducing maxSpeed to " + (String)settings.qwiicBusMaxSpeed + "Hz\r\n"); maxSpeed = settings.qwiicBusMaxSpeed; + } if (maxSpeed > 200000) + { + printDebug("setMaxI2CSpeed: setting qwiic clock speed to " + (String)AM_HAL_IOM_400KHZ + "Hz\r\n"); qwiic.setClock(AM_HAL_IOM_400KHZ); + } else + { + printDebug("setMaxI2CSpeed: setting qwiic clock speed to " + (String)AM_HAL_IOM_100KHZ + "Hz\r\n"); qwiic.setClock(AM_HAL_IOM_100KHZ); + } for (int i = 0; i < 100; i++) //Allow time for the speed to change { checkBattery(); diff --git a/Firmware/OpenLog_Artemis/autoDetect.ino b/Firmware/OpenLog_Artemis/autoDetect.ino index 932883b..b6b99e8 100644 --- a/Firmware/OpenLog_Artemis/autoDetect.ino +++ b/Firmware/OpenLog_Artemis/autoDetect.ino @@ -855,6 +855,10 @@ void configureQwiicDevices() configureDevice(temp); temp = temp->next; } + + //Now that the settings are loaded and the devices are configured, + //try for 400kHz but reduce to 100kHz if certain devices are attached + setMaxI2CSpeed(); } //Returns a pointer to the menu function that configures this particular device type diff --git a/Firmware/OpenLog_Artemis/lowerPower.ino b/Firmware/OpenLog_Artemis/lowerPower.ino index dfc28b8..199ec6d 100644 --- a/Firmware/OpenLog_Artemis/lowerPower.ino +++ b/Firmware/OpenLog_Artemis/lowerPower.ino @@ -414,7 +414,7 @@ void wakeFromSleep() if (digitalRead(PIN_POWER_LOSS) == LOW) powerDownOLA(); //Check PIN_POWER_LOSS just in case we missed the falling edge - //attachInterrupt(PIN_POWER_LOSS, powerDownOLA, FALLING); // TO DO: figure out why this no longer works on v2.1.0 + //attachInterrupt(PIN_POWER_LOSS, powerDownOLA, FALLING); // We can't do this with v2.1.0 as attachInterrupt causes a spontaneous interrupt attachInterrupt(PIN_POWER_LOSS, powerLossISR, FALLING); powerLossSeen = false; // Make sure the flag is clear @@ -424,7 +424,9 @@ void wakeFromSleep() pin_config(PinName(PIN_STOP_LOGGING), g_AM_HAL_GPIO_INPUT_PULLUP); // Make sure the pin does actually get re-configured delay(1); // Let the pin stabilize attachInterrupt(PIN_STOP_LOGGING, stopLoggingISR, FALLING); // Enable the interrupt - pin_config(PinName(PIN_STOP_LOGGING), g_AM_HAL_GPIO_INPUT_PULLUP); // Make sure the pull-up does actually stay enabled + am_hal_gpio_pincfg_t intPinConfig = g_AM_HAL_GPIO_INPUT_PULLUP; + intPinConfig.eIntDir = AM_HAL_GPIO_PIN_INTDIR_HI2LO; + pin_config(PinName(PIN_STOP_LOGGING), intPinConfig); // Make sure the pull-up does actually stay enabled stopLoggingSeen = false; // Make sure the flag is clear } @@ -433,11 +435,20 @@ void wakeFromSleep() pinMode(PIN_TRIGGER, INPUT_PULLUP); pin_config(PinName(PIN_TRIGGER), g_AM_HAL_GPIO_INPUT_PULLUP); // Make sure the pin does actually get re-configured delay(1); // Let the pin stabilize + am_hal_gpio_pincfg_t intPinConfig = g_AM_HAL_GPIO_INPUT_PULLUP; if (settings.fallingEdgeTrigger == true) + { + SerialPrintln(F("Falling-edge triggering is enabled. Sensor data will be logged on a falling edge on GPIO pin 11.")); attachInterrupt(PIN_TRIGGER, triggerPinISR, FALLING); // Enable the interrupt + intPinConfig.eIntDir = AM_HAL_GPIO_PIN_INTDIR_HI2LO; + } else + { + SerialPrintln(F("Rising-edge triggering is enabled. Sensor data will be logged on a rising edge on GPIO pin 11.")); attachInterrupt(PIN_TRIGGER, triggerPinISR, RISING); // Enable the interrupt - pin_config(PinName(PIN_TRIGGER), g_AM_HAL_GPIO_INPUT_PULLUP); // Make sure the pull-up does actually stay enabled + intPinConfig.eIntDir = AM_HAL_GPIO_PIN_INTDIR_LO2HI; + } + pin_config(PinName(PIN_TRIGGER), intPinConfig); // Make sure the pull-up does actually stay enabled triggerEdgeSeen = false; // Make sure the flag is clear } diff --git a/Firmware/OpenLog_Artemis/menuAttachedDevices.ino b/Firmware/OpenLog_Artemis/menuAttachedDevices.ino index 941f149..99f90ea 100644 --- a/Firmware/OpenLog_Artemis/menuAttachedDevices.ino +++ b/Firmware/OpenLog_Artemis/menuAttachedDevices.ino @@ -229,7 +229,8 @@ bool detectQwiicDevices() //*** Let's leave pull-ups set to 1k and only disable them when taking to a u-blox device *** //setQwiicPullups(0); //We've detected something on the bus so disable pullups. - setMaxI2CSpeed(); //Try for 400kHz but reduce to 100kHz or low if certain devices are attached + //We need to call setMaxI2CSpeed in configureQwiicDevices + //We cannot do it here as the device settings have not been loaded SerialPrintln(F("Autodetect complete")); diff --git a/Firmware/OpenLog_Artemis/menuPower.ino b/Firmware/OpenLog_Artemis/menuPower.ino index e70bbcd..7abbf0c 100644 --- a/Firmware/OpenLog_Artemis/menuPower.ino +++ b/Firmware/OpenLog_Artemis/menuPower.ino @@ -65,7 +65,9 @@ void menuPower() pin_config(PinName(PIN_STOP_LOGGING), g_AM_HAL_GPIO_INPUT_PULLUP); // Make sure the pin does actually get re-configured delay(1); // Let the pin stabilize attachInterrupt(PIN_STOP_LOGGING, stopLoggingISR, FALLING); // Enable the interrupt - pin_config(PinName(PIN_STOP_LOGGING), g_AM_HAL_GPIO_INPUT_PULLUP); // Make sure the pull-up does actually stay enabled + am_hal_gpio_pincfg_t intPinConfig = g_AM_HAL_GPIO_INPUT_PULLUP; + intPinConfig.eIntDir = AM_HAL_GPIO_PIN_INTDIR_HI2LO; + pin_config(PinName(PIN_STOP_LOGGING), intPinConfig); // Make sure the pull-up does actually stay enabled stopLoggingSeen = false; // Make sure the flag is clear settings.logA32 = false; // Disable analog logging on pin 32 } diff --git a/Firmware/OpenLog_Artemis/menuTerminal.ino b/Firmware/OpenLog_Artemis/menuTerminal.ino index b3c033d..901d5de 100644 --- a/Firmware/OpenLog_Artemis/menuTerminal.ino +++ b/Firmware/OpenLog_Artemis/menuTerminal.ino @@ -298,11 +298,18 @@ void menuLogRate() pinMode(PIN_TRIGGER, INPUT_PULLUP); pin_config(PinName(PIN_TRIGGER), g_AM_HAL_GPIO_INPUT_PULLUP); // Make sure the pin does actually get re-configured delay(1); // Let the pin stabilize + am_hal_gpio_pincfg_t intPinConfig = g_AM_HAL_GPIO_INPUT_PULLUP; if (settings.fallingEdgeTrigger == true) + { attachInterrupt(PIN_TRIGGER, triggerPinISR, FALLING); // Enable the interrupt + intPinConfig.eIntDir = AM_HAL_GPIO_PIN_INTDIR_HI2LO; + } else + { attachInterrupt(PIN_TRIGGER, triggerPinISR, RISING); // Enable the interrupt - pin_config(PinName(PIN_TRIGGER), g_AM_HAL_GPIO_INPUT_PULLUP); // Make sure the pull-up does actually stay enabled + intPinConfig.eIntDir = AM_HAL_GPIO_PIN_INTDIR_LO2HI; + } + pin_config(PinName(PIN_TRIGGER), intPinConfig); // Make sure the pull-up does actually stay enabled triggerEdgeSeen = false; // Make sure the flag is clear settings.logA11 = false; // Disable analog logging on pin 11 settings.logMaxRate = false; // Disable max rate logging @@ -325,11 +332,18 @@ void menuLogRate() { detachInterrupt(PIN_TRIGGER); // Disable the interrupt settings.fallingEdgeTrigger ^= 1; // Invert the flag + am_hal_gpio_pincfg_t intPinConfig = g_AM_HAL_GPIO_INPUT_PULLUP; if (settings.fallingEdgeTrigger == true) + { attachInterrupt(PIN_TRIGGER, triggerPinISR, FALLING); // Enable the interrupt + intPinConfig.eIntDir = AM_HAL_GPIO_PIN_INTDIR_HI2LO; + } else + { attachInterrupt(PIN_TRIGGER, triggerPinISR, RISING); // Enable the interrupt - pin_config(PinName(PIN_TRIGGER), g_AM_HAL_GPIO_INPUT_PULLUP); // Make sure the pull-up does actually stay enabled + intPinConfig.eIntDir = AM_HAL_GPIO_PIN_INTDIR_LO2HI; + } + pin_config(PinName(PIN_TRIGGER), intPinConfig); // Make sure the pull-up does actually stay enabled triggerEdgeSeen = false; // Make sure the flag is clear } else From 8e69e51d6837e6541d6c0773b3038b7fb8a1844b Mon Sep 17 00:00:00 2001 From: PaulZC Date: Thu, 15 Jul 2021 18:47:17 +0100 Subject: [PATCH 14/15] Uncomment (non-functional) Qwiic Button code --- Firmware/OpenLog_Artemis/OpenLog_Artemis.ino | 2 +- Firmware/OpenLog_Artemis/Sensors.ino | 28 ++-- Firmware/OpenLog_Artemis/autoDetect.ino | 72 ++++----- .../OpenLog_Artemis/menuAttachedDevices.ino | 140 +++++++++--------- Firmware/OpenLog_Artemis/nvm.ino | 54 +++---- Firmware/OpenLog_Artemis/settings.h | 2 +- 6 files changed, 149 insertions(+), 149 deletions(-) diff --git a/Firmware/OpenLog_Artemis/OpenLog_Artemis.ino b/Firmware/OpenLog_Artemis/OpenLog_Artemis.ino index 56343fc..5a5af47 100644 --- a/Firmware/OpenLog_Artemis/OpenLog_Artemis.ino +++ b/Firmware/OpenLog_Artemis/OpenLog_Artemis.ino @@ -270,7 +270,7 @@ icm_20948_DMP_data_t dmpData; // Global storage for the DMP data - extracted fro #include "SparkFun_SGP40_Arduino_Library.h" // Click here to get the library: http://librarymanager/All#SparkFun_SGP40 #include "SparkFun_SDP3x_Arduino_Library.h" // Click here to get the library: http://librarymanager/All#SparkFun_SDP3x #include "MS5837.h" // Click here to download the library: https://github.com/sparkfunX/BlueRobotics_MS5837_Library -//#include "SparkFun_Qwiic_Button.h" // Click here to get the library: http://librarymanager/All#SparkFun_Qwiic_Button_Switch +#include "SparkFun_Qwiic_Button.h" // Click here to get the library: http://librarymanager/All#SparkFun_Qwiic_Button_Switch #include "SparkFun_Bio_Sensor_Hub_Library.h" // Click here to get the library: http://librarymanager/All#SparkFun_Bio_Sensor //-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=- diff --git a/Firmware/OpenLog_Artemis/Sensors.ino b/Firmware/OpenLog_Artemis/Sensors.ino index 47d250b..c5eb695 100644 --- a/Firmware/OpenLog_Artemis/Sensors.ino +++ b/Firmware/OpenLog_Artemis/Sensors.ino @@ -1490,20 +1490,20 @@ void printHelperText(bool terminalOnly) } } break; -// case DEVICE_QWIIC_BUTTON: -// { -// struct_QWIIC_BUTTON *nodeSetting = (struct_QWIIC_BUTTON *)temp->configPtr; -// if (nodeSetting->log) -// { -// if (nodeSetting->logPressed) -// strcat(helperText, "pressS,"); -// if (nodeSetting->logClicked) -// strcat(helperText, "clickS,"); -// if (nodeSetting->toggleLEDOnClick) -// strcat(helperText, "LED,"); -// } -// } -// break; + case DEVICE_QWIIC_BUTTON: + { + struct_QWIIC_BUTTON *nodeSetting = (struct_QWIIC_BUTTON *)temp->configPtr; + if (nodeSetting->log) + { + if (nodeSetting->logPressed) + strcat(helperText, "pressS,"); + if (nodeSetting->logClicked) + strcat(helperText, "clickS,"); + if (nodeSetting->toggleLEDOnClick) + strcat(helperText, "LED,"); + } + } + break; case DEVICE_BIO_SENSOR_HUB: { struct_BIO_SENSOR_HUB *nodeSetting = (struct_BIO_SENSOR_HUB *)temp->configPtr; diff --git a/Firmware/OpenLog_Artemis/autoDetect.ino b/Firmware/OpenLog_Artemis/autoDetect.ino index 458c7fa..47b7b06 100644 --- a/Firmware/OpenLog_Artemis/autoDetect.ino +++ b/Firmware/OpenLog_Artemis/autoDetect.ino @@ -255,12 +255,12 @@ bool addDevice(deviceType_e deviceType, uint8_t address, uint8_t muxAddress, uin temp->configPtr = new struct_MS5837; } break; -// case DEVICE_QWIIC_BUTTON: -// { -// temp->classPtr = new QwiicButton; -// temp->configPtr = new struct_QWIIC_BUTTON; -// } -// break; + case DEVICE_QWIIC_BUTTON: + { + temp->classPtr = new QwiicButton; + temp->configPtr = new struct_QWIIC_BUTTON; + } + break; case DEVICE_BIO_SENSOR_HUB: { temp->classPtr = new SparkFun_Bio_Sensor_Hub(32, 11, address); // Reset pin is 32, MFIO pin is 11 @@ -528,15 +528,15 @@ bool beginQwiicDevices() temp->online = true; } break; -// case DEVICE_QWIIC_BUTTON: -// { -// QwiicButton *tempDevice = (QwiicButton *)temp->classPtr; -// struct_QWIIC_BUTTON *nodeSetting = (struct_QWIIC_BUTTON *)temp->configPtr; //Create a local pointer that points to same spot as node does -// if (nodeSetting->powerOnDelayMillis > qwiicPowerOnDelayMillis) qwiicPowerOnDelayMillis = nodeSetting->powerOnDelayMillis; // Increase qwiicPowerOnDelayMillis if required -// if (tempDevice->begin(temp->address, qwiic) == true) //Address, Wire port. Returns true on success. -// temp->online = true; -// } -// break; + case DEVICE_QWIIC_BUTTON: + { + QwiicButton *tempDevice = (QwiicButton *)temp->classPtr; + struct_QWIIC_BUTTON *nodeSetting = (struct_QWIIC_BUTTON *)temp->configPtr; //Create a local pointer that points to same spot as node does + if (nodeSetting->powerOnDelayMillis > qwiicPowerOnDelayMillis) qwiicPowerOnDelayMillis = nodeSetting->powerOnDelayMillis; // Increase qwiicPowerOnDelayMillis if required + if (tempDevice->begin(temp->address, qwiic) == true) //Address, Wire port. Returns true on success. + temp->online = true; + } + break; case DEVICE_BIO_SENSOR_HUB: { SparkFun_Bio_Sensor_Hub *tempDevice = (SparkFun_Bio_Sensor_Hub *)temp->classPtr; @@ -941,9 +941,9 @@ FunctionPointer getConfigFunctionPtr(uint8_t nodeNumber) case DEVICE_PRESSURE_MS5837: ptr = (FunctionPointer)menuConfigure_MS5837; break; -// case DEVICE_QWIIC_BUTTON: -// ptr = (FunctionPointer)menuConfigure_QWIIC_BUTTON; -// break; + case DEVICE_QWIIC_BUTTON: + ptr = (FunctionPointer)menuConfigure_QWIIC_BUTTON; + break; case DEVICE_BIO_SENSOR_HUB: ptr = (FunctionPointer)menuConfigure_BIO_SENSOR_HUB; break; @@ -1093,7 +1093,7 @@ void swap(struct node * a, struct node * b) #define ADR_VCNL4040 0x60 #define ADR_SCD30 0x61 #define ADR_MCP9600 0x60 //0x60 to 0x67 -//#define ADR_QWIIC_BUTTON 0x6F //But can be any address... Limit the range to 0x68-0x6F +#define ADR_QWIIC_BUTTON 0x6F //But can be any address... Limit the range to 0x68-0x6F #define ADR_MULTIPLEXER 0x70 //0x70 to 0x77 #define ADR_SHTC3 0x70 #define ADR_MS5637 0x76 @@ -1385,20 +1385,20 @@ deviceType_e testDevice(uint8_t i2cAddress, uint8_t muxAddress, uint8_t portNumb return (DEVICE_TEMPERATURE_MCP9600); } break; -// case 0x68: -// case 0x69: -// case 0x6A: -// case 0x6B: -// case 0x6C: -// case 0x6D: -// case 0x6E: -// case 0x6F: -// { -// QwiicButton sensor; -// if (sensor.begin(i2cAddress, qwiic) == true) //Address, Wire port -// return (DEVICE_QWIIC_BUTTON); -// } -// break; + case 0x68: + case 0x69: + case 0x6A: + case 0x6B: + case 0x6C: + case 0x6D: + case 0x6E: + case 0x6F: + { + QwiicButton sensor; + if (sensor.begin(i2cAddress, qwiic) == true) //Address, Wire port + return (DEVICE_QWIIC_BUTTON); + } + break; case 0x70: { //Ignore devices we've already recorded. This was causing the mux to get tested, a begin() would happen, and the mux would be reset. @@ -1711,9 +1711,9 @@ const char* getDeviceName(deviceType_e deviceNumber) case DEVICE_PRESSURE_MS5837: return "Pressure-MS5837"; break; -// case DEVICE_QWIIC_BUTTON: -// return "Qwiic_Button"; -// break; + case DEVICE_QWIIC_BUTTON: + return "Qwiic_Button"; + break; case DEVICE_BIO_SENSOR_HUB: return "Bio-Sensor-Oximeter"; break; diff --git a/Firmware/OpenLog_Artemis/menuAttachedDevices.ino b/Firmware/OpenLog_Artemis/menuAttachedDevices.ino index b997dae..99b9625 100644 --- a/Firmware/OpenLog_Artemis/menuAttachedDevices.ino +++ b/Firmware/OpenLog_Artemis/menuAttachedDevices.ino @@ -337,9 +337,9 @@ void menuAttachedDevices() case DEVICE_PRESSURE_MS5837: SerialPrintf3("%s MS5837 (BAR30 / BAR02) Pressure Sensor %s\r\n", strDeviceMenu, strAddress); break; -// case DEVICE_QWIIC_BUTTON: -// SerialPrintf3("%s Qwiic Button %s\r\n", strDeviceMenu, strAddress); -// break; + case DEVICE_QWIIC_BUTTON: + SerialPrintf3("%s Qwiic Button %s\r\n", strDeviceMenu, strAddress); + break; case DEVICE_BIO_SENSOR_HUB: SerialPrintf3("%s Bio Sensor Pulse Oximeter %s\r\n", strDeviceMenu, strAddress); break; @@ -2513,73 +2513,73 @@ void menuConfigure_MS5837(void *configPtr) } } -//void menuConfigure_QWIIC_BUTTON(void *configPtr) -//{ -// struct_QWIIC_BUTTON *sensorSetting = (struct_QWIIC_BUTTON*)configPtr; -// -// while (1) -// { -// SerialPrintln(F("")); -// SerialPrintln(F("Menu: Configure Qwiic Button")); -// -// SerialPrint(F("1) Sensor Logging: ")); -// if (sensorSetting->log == true) SerialPrintln(F("Enabled")); -// else SerialPrintln(F("Disabled")); -// -// if (sensorSetting->log == true) -// { -// SerialPrint(F("2) Log Button Presses: ")); -// if (sensorSetting->logPressed == true) SerialPrintln(F("Enabled")); -// else SerialPrintln(F("Disabled")); -// -// SerialPrint(F("3) Log Button Clicks: ")); -// if (sensorSetting->logClicked == true) SerialPrintln(F("Enabled")); -// else SerialPrintln(F("Disabled")); -// -// SerialPrint(F("4) Toggle LED on each click (and log the LED state): ")); -// if (sensorSetting->toggleLEDOnClick == true) SerialPrintln(F("Enabled")); -// else SerialPrintln(F("Disabled")); -// -// SerialPrintf2("5) LED Brightness: %d\r\n", sensorSetting->ledBrightness); -// } -// SerialPrintln(F("x) Exit")); -// -// int incoming = getNumber(menuTimeout); //Timeout after x seconds -// -// if (incoming == 1) -// sensorSetting->log ^= 1; -// else if (sensorSetting->log == true) -// { -// if (incoming == 2) -// sensorSetting->logPressed ^= 1; -// else if (incoming == 3) -// sensorSetting->logClicked ^= 1; -// else if (incoming == 4) -// sensorSetting->toggleLEDOnClick ^= 1; -// else if (incoming == 5) -// { -// SerialPrint(F("Enter the LED brightness (0 to 255): ")); -// int bright = getNumber(menuTimeout); //x second timeout -// if (bright < 0 || bright > 255) -// SerialPrintln(F("Error: Out of range")); -// else -// sensorSetting->ledBrightness = bright; -// } -// else if (incoming == STATUS_PRESSED_X) -// break; -// else if (incoming == STATUS_GETNUMBER_TIMEOUT) -// break; -// else -// printUnknown(incoming); -// } -// else if (incoming == STATUS_PRESSED_X) -// break; -// else if (incoming == STATUS_GETNUMBER_TIMEOUT) -// break; -// else -// printUnknown(incoming); -// } -//} +void menuConfigure_QWIIC_BUTTON(void *configPtr) +{ + struct_QWIIC_BUTTON *sensorSetting = (struct_QWIIC_BUTTON*)configPtr; + + while (1) + { + SerialPrintln(F("")); + SerialPrintln(F("Menu: Configure Qwiic Button")); + + SerialPrint(F("1) Sensor Logging: ")); + if (sensorSetting->log == true) SerialPrintln(F("Enabled")); + else SerialPrintln(F("Disabled")); + + if (sensorSetting->log == true) + { + SerialPrint(F("2) Log Button Presses: ")); + if (sensorSetting->logPressed == true) SerialPrintln(F("Enabled")); + else SerialPrintln(F("Disabled")); + + SerialPrint(F("3) Log Button Clicks: ")); + if (sensorSetting->logClicked == true) SerialPrintln(F("Enabled")); + else SerialPrintln(F("Disabled")); + + SerialPrint(F("4) Toggle LED on each click (and log the LED state): ")); + if (sensorSetting->toggleLEDOnClick == true) SerialPrintln(F("Enabled")); + else SerialPrintln(F("Disabled")); + + SerialPrintf2("5) LED Brightness: %d\r\n", sensorSetting->ledBrightness); + } + SerialPrintln(F("x) Exit")); + + int incoming = getNumber(menuTimeout); //Timeout after x seconds + + if (incoming == 1) + sensorSetting->log ^= 1; + else if (sensorSetting->log == true) + { + if (incoming == 2) + sensorSetting->logPressed ^= 1; + else if (incoming == 3) + sensorSetting->logClicked ^= 1; + else if (incoming == 4) + sensorSetting->toggleLEDOnClick ^= 1; + else if (incoming == 5) + { + SerialPrint(F("Enter the LED brightness (0 to 255): ")); + int bright = getNumber(menuTimeout); //x second timeout + if (bright < 0 || bright > 255) + SerialPrintln(F("Error: Out of range")); + else + sensorSetting->ledBrightness = bright; + } + else if (incoming == STATUS_PRESSED_X) + break; + else if (incoming == STATUS_GETNUMBER_TIMEOUT) + break; + else + printUnknown(incoming); + } + else if (incoming == STATUS_PRESSED_X) + break; + else if (incoming == STATUS_GETNUMBER_TIMEOUT) + break; + else + printUnknown(incoming); + } +} void menuConfigure_BIO_SENSOR_HUB(void *configPtr) { diff --git a/Firmware/OpenLog_Artemis/nvm.ino b/Firmware/OpenLog_Artemis/nvm.ino index 108716e..a46d0ab 100644 --- a/Firmware/OpenLog_Artemis/nvm.ino +++ b/Firmware/OpenLog_Artemis/nvm.ino @@ -758,16 +758,16 @@ void recordDeviceSettingsToFile() settingsFile.print((String)base + "conversion="); settingsFile.println(nodeSetting->conversion); } break; -// case DEVICE_QWIIC_BUTTON: -// { -// struct_QWIIC_BUTTON *nodeSetting = (struct_QWIIC_BUTTON *)temp->configPtr; -// settingsFile.println((String)base + "log=" + nodeSetting->log); -// settingsFile.println((String)base + "logPressed=" + nodeSetting->logPressed); -// settingsFile.println((String)base + "logClicked=" + nodeSetting->logClicked); -// settingsFile.println((String)base + "toggleLEDOnClick=" + nodeSetting->toggleLEDOnClick); -// settingsFile.println((String)base + "ledBrightness=" + nodeSetting->ledBrightness); -// } -// break; + case DEVICE_QWIIC_BUTTON: + { + struct_QWIIC_BUTTON *nodeSetting = (struct_QWIIC_BUTTON *)temp->configPtr; + settingsFile.println((String)base + "log=" + nodeSetting->log); + settingsFile.println((String)base + "logPressed=" + nodeSetting->logPressed); + settingsFile.println((String)base + "logClicked=" + nodeSetting->logClicked); + settingsFile.println((String)base + "toggleLEDOnClick=" + nodeSetting->toggleLEDOnClick); + settingsFile.println((String)base + "ledBrightness=" + nodeSetting->ledBrightness); + } + break; case DEVICE_BIO_SENSOR_HUB: { struct_BIO_SENSOR_HUB *nodeSetting = (struct_BIO_SENSOR_HUB *)temp->configPtr; @@ -1367,23 +1367,23 @@ bool parseDeviceLine(char* str) { SerialPrintf2("Unknown device setting: %s\r\n", deviceSettingName); } break; -// case DEVICE_QWIIC_BUTTON: -// { -// struct_QWIIC_BUTTON *nodeSetting = (struct_QWIIC_BUTTON *)deviceConfigPtr; //Create a local pointer that points to same spot as node does -// if (strcmp(deviceSettingName, "log") == 0) -// nodeSetting->log = d; -// else if (strcmp(deviceSettingName, "logPressed") == 0) -// nodeSetting->logPressed = d; -// else if (strcmp(deviceSettingName, "logClicked") == 0) -// nodeSetting->logClicked = d; -// else if (strcmp(deviceSettingName, "toggleLEDOnClick") == 0) -// nodeSetting->toggleLEDOnClick = d; -// else if (strcmp(deviceSettingName, "ledBrightness") == 0) -// nodeSetting->ledBrightness = d; -// else -// SerialPrintf2("Unknown device setting: %s\r\n", deviceSettingName); -// } -// break; + case DEVICE_QWIIC_BUTTON: + { + struct_QWIIC_BUTTON *nodeSetting = (struct_QWIIC_BUTTON *)deviceConfigPtr; //Create a local pointer that points to same spot as node does + if (strcmp(deviceSettingName, "log") == 0) + nodeSetting->log = d; + else if (strcmp(deviceSettingName, "logPressed") == 0) + nodeSetting->logPressed = d; + else if (strcmp(deviceSettingName, "logClicked") == 0) + nodeSetting->logClicked = d; + else if (strcmp(deviceSettingName, "toggleLEDOnClick") == 0) + nodeSetting->toggleLEDOnClick = d; + else if (strcmp(deviceSettingName, "ledBrightness") == 0) + nodeSetting->ledBrightness = d; + else + SerialPrintf2("Unknown device setting: %s\r\n", deviceSettingName); + } + break; case DEVICE_BIO_SENSOR_HUB: { struct_BIO_SENSOR_HUB *nodeSetting = (struct_BIO_SENSOR_HUB *)deviceConfigPtr; //Create a local pointer that points to same spot as node does diff --git a/Firmware/OpenLog_Artemis/settings.h b/Firmware/OpenLog_Artemis/settings.h index ebb62ad..936cae1 100644 --- a/Firmware/OpenLog_Artemis/settings.h +++ b/Firmware/OpenLog_Artemis/settings.h @@ -26,7 +26,7 @@ typedef enum DEVICE_VOC_SGP40, DEVICE_PRESSURE_SDP3X, DEVICE_PRESSURE_MS5837, -// DEVICE_QWIIC_BUTTON, + DEVICE_QWIIC_BUTTON, DEVICE_BIO_SENSOR_HUB, DEVICE_TOTAL_DEVICES, //Marks the end, used to iterate loops From c7dd641c9340d6819a0aef06f063e0a3f53f3c6c Mon Sep 17 00:00:00 2001 From: PaulZC Date: Fri, 16 Jul 2021 09:17:19 +0100 Subject: [PATCH 15/15] v2.0 --- Binaries/OpenLog_Artemis-V10-v112_BETA.bin | Bin 243120 -> 0 bytes Binaries/OpenLog_Artemis-V10-v20.bin | Bin 0 -> 359280 bytes Binaries/OpenLog_Artemis-X04-v20.bin | Bin 0 -> 358104 bytes Firmware/OpenLog_Artemis/OpenLog_Artemis.ino | 10 +++++----- 4 files changed, 5 insertions(+), 5 deletions(-) delete mode 100644 Binaries/OpenLog_Artemis-V10-v112_BETA.bin create mode 100644 Binaries/OpenLog_Artemis-V10-v20.bin create mode 100644 Binaries/OpenLog_Artemis-X04-v20.bin diff --git a/Binaries/OpenLog_Artemis-V10-v112_BETA.bin b/Binaries/OpenLog_Artemis-V10-v112_BETA.bin deleted file mode 100644 index 9b24db4cadf0bd1e139c609ee58adc42a3c09806..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 243120 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 z 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%0AU?*#-9h1+773|AhtqdL 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%0D<@4ogC^y1)&H& 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
gp|Bq(sypR8BfgZjqhlwL};7F)7NrzI9J*N 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

4Pc>JaobZBb9!Dv`Qb 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 literal 0 HcmV?d00001 diff --git a/Firmware/OpenLog_Artemis/OpenLog_Artemis.ino b/Firmware/OpenLog_Artemis/OpenLog_Artemis.ino index 5a5af47..0b3a566 100644 --- a/Firmware/OpenLog_Artemis/OpenLog_Artemis.ino +++ b/Firmware/OpenLog_Artemis/OpenLog_Artemis.ino @@ -97,16 +97,16 @@ (done - but does not work) Add support for the Qwiic Button. The QB uses clock-stretching and the Artemis really doesn't enjoy that... (done) Increase DMP data resolution to five decimal places https://github.com/sparkfun/OpenLog_Artemis/issues/90 - (in progress) Update to Apollo3 v2.1.1 - FIRMWARE_VERSION_MAJOR = 2. + (in progress) Update to Apollo3 v2.1.0 - FIRMWARE_VERSION_MAJOR = 2. (done) Implement printf float (OLA uses printf float in _so_ many places...): https://github.com/sparkfun/Arduino_Apollo3/issues/278 - (worked around) attachInterrupt(PIN_POWER_LOSS, powerDownOLA, FALLING); causes badness - https://github.com/sparkfun/Arduino_Apollo3/issues/416 + (worked around) attachInterrupt(PIN_POWER_LOSS, powerDownOLA, FALLING); triggers an immediate interrupt - https://github.com/sparkfun/Arduino_Apollo3/issues/416 (done) Add a setQwiicPullups function (done) Check if we need ap3_set_pin_to_analog when coming out of sleep (done) Investigate why code does not wake from deep sleep correctly (worked around) Correct SerialLog RX: https://github.com/sparkfun/Arduino_Apollo3/issues/401 The work-around is to use Serial1 in place of serialLog and then to manually force UART1 to use pins 12 and 13 We need a work-around anyway because if pins 12 or 13 have been used as analog inputs, Serial1.begin does not re-configure them for UART TX and RX - (in progress) Reduce sleep current as much as possible. v1.2.1 achieved ~110uA. With v2.1.1 the draw is more like 280uA... + (in progress) Reduce sleep current as much as possible. v1.2.1 achieved ~110uA. With v2.1.0 the draw is more like 260uA... */ const int FIRMWARE_VERSION_MAJOR = 2; @@ -175,7 +175,7 @@ enum returnStatus { //Setup Qwiic Port //-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=- #include -TwoWire qwiic(PIN_QWIIC_SDA,PIN_QWIIC_SCL); //Will use pads 8/9 - changed from (1) for Apollo3 v2 +TwoWire qwiic(PIN_QWIIC_SDA,PIN_QWIIC_SCL); //Will use pads 8/9 //-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=- //EEPROM for storing settings @@ -187,7 +187,7 @@ TwoWire qwiic(PIN_QWIIC_SDA,PIN_QWIIC_SCL); //Will use pads 8/9 - changed from ( //-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=- #include -#include //SdFat v2.0.6 by Bill Greiman: http://librarymanager/All#SdFat_exFAT +#include //SdFat v2.0.7 by Bill Greiman: http://librarymanager/All#SdFat_exFAT #define SD_FAT_TYPE 3 // SD_FAT_TYPE = 0 for SdFat/File, 1 for FAT16/FAT32, 2 for exFAT, 3 for FAT16/FAT32 and exFAT. #define SD_CONFIG SdSpiConfig(PIN_MICROSD_CHIP_SELECT, SHARED_SPI, SD_SCK_MHZ(24)) // 24MHz

&V2s0U*!K;P-eTv%^yOkUX0OHJ6*wO^Wm%39 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 IMR@T40YtL+K>z>% literal 0 HcmV?d00001 diff --git a/Binaries/OpenLog_Artemis-X04-v20.bin b/Binaries/OpenLog_Artemis-X04-v20.bin new file mode 100644 index 0000000000000000000000000000000000000000..3394b619c324482528c1df56f1ffb5ab10e50a3d GIT binary patch literal 358104 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%0D5S$nq2crK)O_fv%*XebkJ@2A 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%0ABy zz4JwnTKJ>5KID6*P3jP5AeI8L))pz#MkC%dZc7t?@+r{j(oAEa{jkywA(k^DE&A_jPY18rdE`*Ii*ga`!_;r8U2Z@;V zlIx)9KWkCFSf5reZcfuw?-px0WA0JW#>uW297n|maZkYA&P_yU`J$s2>ku-b_~^x* zi}ZO%MVD@?n3=?NI~f`5D2|G2@m7!c)m$RtZ{oB-b*bSL(6-<*xrz0d&+5f8=pB{= zon{j=Et^dDVpak){;30NWvx4bPKxJK;gak*N^&VI2Pn^}e1)jX`=4 zU5G||q~F@8fek!UBkoG0abkskA{U;?R}r0k5_j+rxC45}gMa)Lc=tf)H*LhjnV^-h zbq;f7R|%ur3OzMwu!pYO_$+)9v1x>mYyw|FGbenWEoE^ULuUzd@Lfi;#!9F5+>A)8 z+y)MBMuc^p3p4DDaO?+gnm+@&VbYi-z54kWrJq6{g64kmxf|g3XpW%$8SU$6?9&+p zow+i)Wsk_ZSM##&tE^sBOwo(7DZI!{QKWA)UxkLN0E%xaVUlzrmr#o_F1u1+%p~dY zYX^Rjjwz@+O?Kt|Vj0yd8CFY6=*?Pj>z%tHjg_Hq#tHp>_e;-_c)pBt<3HTJTdZHS zR@}9SN(W2Ok@+{kU%yRaZ-!%=ZtnnJkOAD2XH z+f)7B-jm{si)Ofu_M_s9;N;@4-?`#FfO$_LSo{aX`J6&9<9iPqCup&sRpbTen|UX- z1NC%;a4UR0WwcWNC4`s28B{*J5Z2p?Hj_ac$sSmuO-3u}cRte?VQCdJ>pv5-YoNOb zeepbKj&1}0p5m8Vst?6Y$@Qe2j-Ha^89gPojWNi;#g4`4pTBp5uL^$b=6JAf;H2+1 z52L@w!q>`c+5g@rs%-m2wF@%A`j6oK6n2Ay_Wfj$5Nl#zIVa9Hg@T9KmeY#gq5D5; zBAptXvplzG%4pB=DWf}~3**ard@*(>U-_~h&%n+hxBnK&=2a%#*vA`My$Zu2FKcM= za)v*9WtL`dAkSw-btdvez7fHEkNVhGVlisU{2yXCoX~wE34JnZ?zWjro@*WI_))hc9op*9=@j+-pz65=%{UEaZie0?zX!NsvbR zbvpPf@UHU*zuuRAIhr>@$4pg#6(tRr*p7xuO|{lFuauqqbYo)Y!fLXY(ZDWF&a$_% zz&sh~+$WA^*nJI&^4C)>{QFJjINQCpQ5MjSzuK8%kAtj`^nIWO+6`QrTNvq^fZfgJ zM1=9tX?J2Bz`Pl{+1%H;6PRl|#VE;RE>brAtCTw>oujZHamW$EWFO9eM>ymNAq%^9 zIXL79LE~e=3ICV}#tELY2<@gq>wMzxD2Q<TG9ZWLN-)7SO zCa#5@5izy5^E0obRgiem(DL&EKdV(@|4shtDV2zkRIEQr<&b~ezf9%Ob*aQ4l`zmY6eXGLAFEH2 zdJp?5&Gi9WE6R&bp0lb$jbu}$Ma)?LQoC;bg6fIDAyT`bB{$7(8G^iT4DwW&7^&ne zO0ITsC^_Z^2bF#eQdCGM(hPPBlygWh=YRNOuFJXbx}2$&D&u*Ny66tyzs`>dFVnJpWskrbcm!L*%6J5qm9N_827G+*}x z=pUf|1nfVrr@p+FXfLgsD7!;Sg}zseeE-`YeDC*#|LpgyRQGG&%SXO{><8cf%@_K! z-+$pF+6BHRn#e|Ia>vim zZ97bt=dUYQBhsO=aZ=gzNQW6NTj8XU_Ik`Gm&yiRM5(>l8@M_JS}m+irjORkUcCkF z7G+bSzdUkXDYqeQ!r5wfZgWE)c4)7&VEx~n`+%*zgkcSs@wAiCbD7NL_?pG+JrCS2 zoiB%2<2O{A)t(*CR>I5Xelb^@kzNUXY3%*5?~8+dFAv!~tl>%+joLbP!-A{+;>|!= z+Wze3Kzz++Slnf#GrG9Svn%7P965>UBKi@nwq73LhIO%w312eVXlfOZ?VM#)M zWxhS$q2I8~o}kVWH2h*mzI`XIRP|ZMQku30YYYUeoZrxk0LLNpt+|3!$(2gefljdB|wmo3_ESCC;)=e1eI+gTg~wB%}r{ zPTvVJq?2s3O_p%s5m6}`b}R!G>o3F-%y1XX?V8EJl1nS%r#Y+$8=^)*J6$j7m{$Ms|SC`B)_~;gWqGt zmu;YRiEXvMlFsJA!?q<(|JF-#5K2>;$>5EVaUF3!?NoK~DXPnvcfNZmR3(S*tfGsX z2y7YOpP-WsuU(VSD+R%S8?10ikA}{&Z|ig+-!S28=$tm#_#6Ilrm*zJ(n)#BE`Cyz z=+L$`4J6i@zc{(~1`tDw){=&9PU-@NZc znx)-N@t#GzT^rJ~Ur6{<6UAk2_+~ z6oVc43QfnwvDlT@K>O?RTLC(8u=l+WJv$1v4l*ZnMy&WEI8FjIR5%q~JaDdE;J3-A zuiWC=zYX@f+e9uiJ~w`Wtcy2<0XuMali4D;{~NvI9Bhjvd6kcWJ79L!)&b$tl+|py zKKopg@rnNyS7>*bV@`KHwXr1(x)~Q&5}pz04s zsE<&)QW=*aIuTyjZCiQZ9J@Qghl;V6U&?a;4ocw$&Ke^81O;DgWz|P;MXR~uUDak>2rK@w`UozB zmFU)+aUrZ^+4>{65Vj(ax)Z4rA{8OAnR~*Su}PnaDUCbfPbF;U7VMq^h>bP-|Hok| znytP`tt@)F$R#T4U82f$uO-A3ChYaE6(ehm)%q32>I8NEio)s!TnXw6EB03FSMH^- zm0i^hxDd9|xL*H+aXrGGC|uuw3t>;t+#)W(Jb;!IpHnq6N#-8XK2Jo;1@tMCfty05 zRKRl2+@l2*T2abYaY}uwXsQ_l>@$C_+^^dIj>9F&T{o#|O#M&M+~V2lsd!FE0=~6w z!QaQ~6)3yHr7T`o>;j?zTjCPK>nrg$vW5pes0_keRE9vCn0t~KYLnBxAGgV8ZxM17 z>D8Khbc`Y?7Wp58ci49vbBk_5o=1xeYDLkyB3W^O+dKv|XR;8WHZ(Bgx9fFyFg)hS zE}E(~pdHr++uDtEhvQ9TG7)cwuib6597&XSYgtHOmY8vE1m}$t9yn8n)RO~0ZUsMX zC4M~6roTlh0V>`IDwg_&saW|Ic~%RQVhp22>V+ezYkrb?3{uzpOzOWz>Y8Q_I}~$I z0@9!7GX;BWKzg*`EjkYmzIaM#AZwePC#~?y`~aNQ8es5)Q;f)CN{;sErzLzJ$I0QAeOAe{ZE7 z1)VyXdsGs=PC$30+RcwU=17H2R~$6+{wf~pp1`GKlUC^G;QRya{ZXp}{k0eUH5~S) zk-z{knLZPzV_appc8aqcY^}LR!E8aVc@-%#=(lr=*g6_l)O)DsV0_i6P5H%#B!vEZ zF?aM1k&84Yf6+AaU^b&KYvJsRmRNm&m&;MaPPi7;hmp7+G2V-r23VR}IrOM561YpU^e+ zI=ZHf&@~Bk6*2B2QTnk=V$vu}B63s>c`)*B0^Me!rgGCN``nVL>UQWwt}D@FoJ4Y< z9QAK2Mvs+74@!Vq_8%s^OeP81VW7m`*; zVb4E)SR=^^lvpvDByb!S{i6A<$0He?uy-4E|g@y@s@gW91{(3qKoc zJ7NXKTISXAOqy3J5$~t-$~t)6rnTB7QEn1536vWT$`t~Kk=akJbPH_V!r+%37@OT{ z9%~`HD7eqx0D7e(G@ergs2B<=h7uL2w-ZL^FAviSJUkz!pf>;)5Gm)PRmg@eOxTW- z%fQIUJPb=zX@;K++8Re_Gd)Oi=*}U0!bo_EMDxJ-oQgNm&}SYVpYf=@2<53jFEbLdR@$$uxeudM@%NgpO~#tN4<_Raqr_S5=ivE{Ft`6oba6@>do<)v$8!Qx{ftJ%yEWHP*@14NvS{ z9atr)jK4?D14bHsDQyG#K#ShYj2-tGM&M{^C3K-A4mY)`vdDswmPchp zsY5gdf1FCj4^nyHU!?NDNGkV9sSr)qGYShg4H}LNt%R8a=iTz6cN{tkbk@4o$@iK$ zXn>N&E|q`wp=eQ&cyCdfC`;Tf{S8r{DT)@k#IeP)^lu?y3G|O!8TbGk7#@>`L&NL9 zOoT^{gvTL#c>bP+H{8Ir{-Hjk38r-$-dvINy2(1jcaXS=;nDC5v~z%NU-diO#NQB~ zBQFljUO7eYfR70D^DhrlKOam@X&cmC`+hdlnK&MMD}V3Nei{5g1?WB(RG(&1fa=Gj zS(V1g5$XHDcwKOrT}boltNqu{tL}q=aS9t=sb#5LmVUnHIJC7`_zqA)^G`OF?`HW+ zo${`AEDxH`LEWC|kCR3*wYMJfWx_9h+01tZ*t>}wCkh}`_GMd_kq{z>VtK^2=gc!?WEo35{8HdU*C3b8wm{gI2rde!5Rp^I{~PID|w^cIHR7*j7Mu*IV?}vg!X1ATA9el864LFzg}e>5bo(P^of4+;0%!-d#fto_ zSkNI>y&)vSbMA13Ss)*ZdSx%n3NMkg#B zI?38<5v=V@tsTmNQ<1kv=F%Q63=#wCQ9T}@u0bn7-N^`{LxrnjAk7F9nxIb@CWMRM z0_&Rr2EkVzBXo7XK>n0A=@^sVGHcy076~do|5!Cs(w|X?5~l zGFWSLxZZQJ#k}i?gX|c?oU)<~(mS%`=x~LXzVGC^8`#T(@IsC6vrZ{;{bJ2UwiXzTMv45Huaw@*PR2|IaqtXpO$c56@G+UjU zoJSnPCFfn5*8kh^e^<&pC(4OEbCt`H1NrQfD3O~L_#KK-Zgp0{vV>|9_)E1IuKSPg z|F@;0_*SQ;d6U#C9j>s_4}$gND>Ne%{&%VV_-mpOU$Lpw3Y~bFKC2?E?1Rz(<*Jb4 za82u)s$3h8?}un*8MHy>OZ1nay*~u~Da>3kzf4_5?G2B-|DV46SEawcEIcUx(-!*B zDJu>sol}hRqs515{h#6u_c7{sA2~OIvT}WgE3}j^KI-6H)NiQ;f1LaEzc)B5i>O5Z zs^tHF3n$7@ZK>SvJC77$EENaFTBs#^oMc~Blr)X@;@QEy_z{d>Sip?Do%55oRL46- zb~f!!tk|Q3n2t!J_u4m6Klw%m-r>ayP<%i?pXxYdoW%PH=K%Dv_KC-kKk92ctfF4{@{ zFioUbjPFacie(o0G&R0o@9QeluUNjyxQf2duiT5&u6+-U3zW$U-T+vL(-eqbA34bS($y-87qfCclkMV?);Gmr9VNLYNj!YLd$E57j@+C|=UnFj ztJ3*9yS$6T+HUSy!aZ-U#$K9dqhZM;!!JGTx5~42!XnCAf&H-blv|N`b*l6k) zwviFWSE#xe5fOQ39iMsesx`( zm3S`2_0(_}?(1-^5B~l&?$6@d9Q=KKy4OFy^l#q39DKL)-^95-t^f4A59zpZHREc* z)ryP0c^h{>F1ca0mE9coK&UWfK#ta!efgF*V4(wk;#MoWeKCA_taX^tZ&ECcxPEp1 zb9;i}Ywvi&1@8pI7hbL5Z{8%sXI`D*oHxvH#v5+<#QV8D(QwkMG934gGI+eB4S(^D zF?{HaGraE|Yk1ciZ+OQ$*>KdGYB=JZZfN(;Fudix$#B?vv*DmO!|&svkeEl znT96s97ChmYo0n9^n1E_F3Tl% z9d9C3&?xlcM%ciF3Sahr{LL)GM(-rUdau&(j5oxv&O6Rf73A|WVS~07S3o}Z>VnZC zH}exnvui}QCLX8IiKk^o{TcbpQSdDDw{K$v12=)0z@$olCom@5r!%R{9O?ILyt(#& z7WXUk_!}yfr%kwzt^9>?k|!XS^Bem+Yw~J0u<5mxG0FFxe>N{>JrKpyV=9K_cxi7{ z=bfmYhcJ`ngljnTmbd6cC9S_AuXa7Yt@y;dCU2c{G16IFSvdZk#4*Od1g#{Qw&!2x znZ39!xOwJI+`YIrzkxo0s}}o zZ8;{&>eJwjh21<#fK|ixjSmzSFSy*UH`+FhJ!D@eM%Nq@V`^R&$JC&&P2ZODfw#k% z-g12zMUhK(dEaqH-Z1;>m^Ttp!smh|)V!gf5~`W*7!}f-%>LqPlmCV`4|YYf_7=yA z?5wWhB;*|myMl(&y(_*Lmx<@-f&5j4uxU6ZGBw8HLU^@01bYz8^uKxa$@9I2u z(EUnIwn+Dh$!4!HInzt?cg?-9oecKh4rios_SKJHSBy);{+OM4uE`G!LIc*p%wXx> ze*G(_V?e%DAFr zRpE-BRr{qCsjxD=+_+MK^^j_^zyAesOykR9V&f7EJL_wsqC1ZLs%iGsxo;d3wXXYc zc1o1a8(MJL6vJ*e+77{HgzXAdY|DAe+xZmN9Vf3g%ez=EqfKRL@J>xW@y!j%o!{J; z{P8!YNmWulkAmg$1Yh+rE+Koj{Be zl_|+Le}PrwZxju)_7PWGry2dt<=z-inHP9xUi$O+gikHb?`Ff|Qw z4Wy<;YGfe{tid)qK_xmW^LB}qrYl}x3^)Th?P=qrXDS_kXgE*uc}1ts!+Y*IO{7mO zgGI?Gi_Jzn+Vg}s0B(hB?Wes-yo$n-p^b!n;5PKl80`Kv`=har)dDlhKXp{w@97*Y~ZLbcdlgk<=a%IXSNFK4+pcw(WQbaFnK*|DMfhCX;PLcPB~3<%L)= zr$Uz%y;MHUgzrW1dF00$^&ZYR(NlFOxe#ShW}w%G0oYrZ0Th7H{8Ws|79~`9Bb0W45eKBq=L=psj0sP+JWN=>&@! zdcQb9+aI4-FaFm;raOZNrbq~%kJhN!0=zAkXoFlLgsl`aG#xnVF`0N5lMJjhQ^<(uLD3voJqACr&KXz*i+vT{~bJ_X4Pg3a8NUuu7Q+G1Bego!*a?uEWJ_$MvB)3)z{clYK z(nKKc_mEOMn#sS#i&}Ow$w$?~DWCwp>E?nxOW|7QP{XqFj8Cg0#LQ6PE~NfaoElFH zL~f7z6(9VCvD#?Tcm z-7U%^w}`ix3hZ202hVrVGiThw)zGzKXFb@IpBU1a(K^BS_xquXYK#xo?0c`T_gnPmTd%9_I{bnsKPfLqb2YTV zq3>kT=zvJxeQa~P`ds-pPNvdTdqvlVg$?-Mv-!JsH2u0DBJkL&i0=?)1l#Ea#+k=h9=t zPYuo#=n|(ahbPDE)G4o=y!2Sg2+m<3 z9aXbJ_%lvMpv#kCAWuW2mxg>1j#)Uq#O%DU1U3k|QG%_n5mwHbA*$9rSSuzphs}TR z@vUw`-zTki6|iT*Os!&^37Gt}!_+{tQwzORligCEBZFpjAioXftc}X%ls2`c7W!J| zDxhs_Vb;W3NE_f(&@(NQq!zNI^HLy_T0`bliRDbk#RQ#9tISghfA>-EkOR#~A&fq> z74|Gt-hF=tAB$@aE)_g_ZFEjB^43jl36Gz9tPWI@)(yl{Tb0fCJmTw39tt6ZlxjX> zn_2NGtc$mB`UjIVnCrF-mqMbmOipvewnv7)2fC*&tH8XpvRsX^qV{NXE-_WB%42Jz z?FQ54Qnhe=h^f!^eIq}R4W)0!o){Ng7A8WAOJ?Btkc-oqG}t74K~Q_cZ!n{ z?i={>w<*q4>?r7)kMYfgr!!iIJ*kr2|116!J6oq)|B{ngL#VSTmxJat2Ku`lJ#9OiFuQ()do2XY(-9rrNO0T?;GPH@IJl9s1h6o?xu z^!WA5joJET4I7svG*n&Kc&Yfp#sqbG$%T!^>(WeJGUSR1xe`wu4Bmyb)g zglwddyrl`fR@l)>dImu4(*;gCceXKlOF`DsPrTGGsH}4fsH``1rc|p;RKBO6D<`^_ z7O1OLX|Y11e^+_K8bxYSXP1<_u_Tah)OGp3fP7QY>x>o|G&&sUb-(^muFH^X*3vWH zLMe^C#rjQMxB_LMQ{#=8)fCV-XVxf$89>qhRp-?Cdi&05U+-@RWEtzssl$DutZ%yHO)<{yge18otSo(vb^(taSqA)ssjdJ;Fho0jyBKZy zs%eQ^4k~42tAWT)nglw_E!nvkbEEv!t5qd+rAGJUal@g|!Lw4IRzb6NhwBq@5Bwo4 zf%Q`^R-hK~Caq~rnp1W6^0#sW$A{N%5pX};b8KqJ=~2MM*#jIOuP4DCh)H%Mk)2iLtWj~sU{VY34Xn^n zk2vG4DrJl(JS%kUxRYLu@h^zO7(eh7=`bs>{@(RI9Y$W3Aj3Fo_fnl;K?g0&J=#ck zfMvnEzQ)9@<3Q6bV!38pK8Fw!y!_ZT4Wf;y66-ZwcP=#5;vQ)bw`q9miHB((qjYG_ zd=qm}Mfr9|?gTbPb%qs&*pSH++B{{O%h)a^>E4RyRq^h#4p^a8IC56%;A<5;+cV{N zm#L<4H%4W1-D)nilbssY#wBZ#8^!VM&>mgA!K^ucmvc1sWHRV|THJ@Br6l(pn9HAT z#2&D5?wI2xy0eaR&Lu4!poXfG-t!)Q6Py0x+{wU$>43JKP$jz&soo~L?VnA@y{a4I zJGY2@%~q$ZE5xw7NtVV;`PB0V^V!q8=bk=YKliUER?LNk?)22`*tQA%YX>0@2-|Ev zc>H}Ymp0uZcLNC8F1xEN;&uh_z+_!4(i}78_thC~V+_9DvHh}) zXUxj8M*EKH0Eb8VK)VlvJHeaECh~hp{cGw)|C~{l%5vD|SeR6^XL6ZUHBW_g&%}Cm zm~Vx}p@9MC*DuH3lC51eo>oZx#+{J7VqG*PTA7Jh30zn`ZH1Op>@P?{a-lrNy%X!H z-u;Ia=p8tXy=4erfHTKBV_ow2O!t@NSY@@k4On9(2`=?ceak}yQzf13j|XMM*;X{5 zPxX0{#*v=(M}sdH!8dZ-U~rwB&>T}HvnJA=uaH1~c8`^?Y%XoyYvg z(uyr44$$gPR`@eaeO~H!)c??za!6ZiGdN`IzFcbIzyL|K)4yIN%!_h41uA?T6?i$p( z4u7XFTqjXz^MDN$0xcE>s6;dMFr}V32pghi)wE+9x$Y2!I-9hyUw}^j3g^wv7eu~Y z*(IBF0HYwx(AKoO>5pbbw@jfp-D;N6*lIsKmpSp9mcZ!Bl17)jbCjFkwAZXYPUA{w z-DC!rJpJV+Cb`Lc{P;!hu_}4hCGQc;dFoEizG&kHGY90FjunoaBO4Re$7FZFl7Ytj zMkiS!k>2JVoof9?M^)*P7Mjacrz4$z6ThutXWuJMf}D;F23^l;S*b z5_Eu^`?q5L46jz*wy)`FJf&Ddgg(C#I%Yu7s0KE9wL<9jX@L8S9gy%rUy(i4qMDWg zp8Qx}1bklTolNa`YpMk;Yl595Y*IfLH7yxPMf3-(4_E5m_5vHOv)VptL5T2Azuw8t z{FSJ;F*khYDX}lL$5pFzaaehF_U%R4IS-+0m$(VVL^gxCFN2ev^()c9gaBuY(dR(g zecT)HGH)CZq<*^xvJ}E@51pT|hQ-e7F6@NWmJ;`NXOw%a)H{s!ackJy?h=!c%4*rzSiFmNC4L=#=y2)~ zmJ}**QVRv}d)0Q%wxPPxg_X!o*j%)q!}D*n?ke(Y>}j{dD+5mG>HEu&x$xk2&IK(` zH38&paJ^oC2Hvnc>hN}$zaY+p+`iER^s{*EAjKo1NPscz#gHpo?liUv=I*l zRuF~M+iXD_@laup6k=Pd9r^0_QiygLX?RoV-h;iuTJbKE7Gbi1t3~6kAtCZdoRIm{XW)?X->;SQgvKlfnuAKfQssoc?=w?25sRlW2^Vq%o0EKm8vig+)h2 zV`U#J;Yl6!!`_f#v7S~i0sAr~(4wO(@mLdMO-$|ark$`_Y;RHspA0fVEWm#iLp_2P zNQl$zO`Z5E0$-7KL?P(JmWov=#R@OQz_EPTKuya@ecp{evYYz^?%;89Dp zofo$B6ZM4F(0S|@jW$%csh{1E>84py!{WOog!Zrr-#H&*QqFfOwcmPW+HbsuWz;7r zuW(Bw2cYhc$z%*dnq>T?@^bpVTZ_l&#y>qIoI^yrMWRYBp_5$ zMn{}sm;YNJdKj`^fw7+1vwV>nGIElp6hl^&>((x3cd+*PkKSvCzOW>} zijxrOn6?b`k2SdX#o3v}CM;(XL1dok5dTLA9yl|B1X{7kqe)KDNQ=SCms)Z=kJiE+}zNPbu*5)`-E*W{xcfe_IoaJ&$YD>7(%I~8-7y8KW+zil` zD8tsxvwztnvp-na)L+@NDCCC}9xiL3_XWn?jXoN84-0EJ8hgi^w&et7s4yTucC6xs zI6e+ihQQbiv^L}e9Ld-D1yyN{GkwmS-rTyn)kD`cm1s9_xZSz_j^rL~l))nRRn z<{_ya0CzMp?rC)x9`~6&Q;#TV?9&E%tp~ zlDvZOmrTviG=@odMc?`5``B0Y=+FFzuSrNIusD&BOmxn82YI)m{!ZTFjF@p~7W@cx z*(pMD4W9-!tar8oe=j?z4fOxVw&etD;Q!)xTsPkkpZmK(TE+amzsA}HElVIF^oUA0eK3sP`OjNJ%EsC!yE!7WKy5f;ig_7a`)%E*Lz@F;;4RL#emaCWVg39Co=7UF9vB%Vvvtg(!B z%b*iRC6d7pP(N`Uf=zmhvjK2vTg0iE+!Q6`bdxeSnQ<0sf))GEyzz(N{9 zK+;TqwR(r^fcYZ&s2m)cqdE4D86ya&6M*cg7C!1b?T(yJSd+=NS$e)rdY&Wc2*|MJRW@>a`HMWWQ90` z6gQo4VkfWFIQqS;KE~0D)jtNDz$Nd^uq7dhVO0xLfV0H1d3JyA+@Wvn;G?nI)Ri%t z>y~4!)fPaWEJ>$w$nPFd?kA=!=U#zK@L_-NJ$)KCqa`huonp9&dxa!Zc3`)Jn|!^$ z@-yfgGLzQU;7UUMe7$$TbE@1FBeX|;2ALFvJPoh&e}nH>(}DMz+TmAEwUB{sOlXqH zEwew1UxvcnIAgWtm<|(4m*xQK1I}aE^8n^nD{LJ87vBoa?e=FHVZG&m6}N4tn7Qy> z_j}-CkcWwx9A3xQ#OR@(tkU zF8MufCRx^XikAyYu2xh{ij!p_gY1k*c%7m5 zM}qHf^gHmr0B>QJjDEvxqn<-;fWE^}&msPS%JL4@!hoLuTC=a=(h-8; zHIzP})JVAfYWRL6NtDfY9*dT;y9KSCOgqt+))NL5@pPa2TSW%zphhY=^@5MYuo|?23z&B3 zW5k;U*cub@qe-YkLzhh z+lL&;Baaq2#Nw{QJ&SjoALJAWiRQb^F(?3|x z)^1$S)LPf8*SiX6+(Zq2>#YI}bAhQ&wMCicY-}Vn;Z_k-hB)694x7p;o}>1}{dzn6 zeeF3RYHR$x|3x0mP@?<%b1YOc+s~Fv`TVtVX)W)X#ZW$q241Q6hVjWl)O6?Bj!`TzT9?6 z7NcK5bCJFr94og>`YrFav2=R;f#1}E^J57~@ECB5{_fG26Y>)26%F&Uv?rkTB*MZN z@ACM1-v{3&N$sY%IHQx|Ut9%0zGvS?EFQ7u z45pT2-h%`$40DDI7h|#&%(NW2#6(X+8QvYDb!>Q7qX6ec)OB~t-m{E@B#WKxV<*ro$YH&g%&j~V) znS3iwah}wKW)cOKySIW~jIp`xi&Y5K5)FuAM6K2V3Tary{XHgzD78cxdMXh6Pi3tp zL2L~&&Y;*<#m?B`^ruo=g7sc;DUNpLcBV6Tl3H7=?UZV3YUy%t%VA6Y-{%C>&b{~Z zzxoL|Ip;m^dC$8%@3VfNQ1ET+OFXmIOzEz zeL5s}dXJn0?A;Q zV@2;co^SC$8=SXqBxu;*yk>`fH}uVhbMmnIU&4|o2OZ%T;0>i#_>aSg#@Ht7oZIB+ zQjFt1?jTVt1ut-mLa&iC>jhA1CX2GhkPfQFzW9RKajo?tbaR>mlv6j)T8Gs?1O9=r z{+AI!#ag0(L6*+OVDxkQ=x-x@U+(vR?_efQ_hB5ZFZblO2$sF=ql*&}kv$!p1nz2x z?T(3RKo0KM?qS;5qNg34x=s#S!k=D^O0=QfF<};&*d|#~Hy_&&R}$B-3-3X`at~O; z@ZYpqhc$1Lt^2mgGg|%*WLn~{n8uicdDt7-dw&-guJEdp0_l z@l$={U4l2m^)fO+joD3aqK#gJ79R<{ESDO#$*G2yd!E4eC_^J!{Bn;2$D<9WH$O`1zU3|M0vOt$il6SuVhtLfkbQcclXb$Aj-we7}qD!hYfAW?(yl@4opQzQK3j zd>-G&@Vy1!Z{gd6?-tPC#7X;BJb9hrH{%GFx1OdI(Z!FIp1sOt>WWjBI>cA7?~Rp- z*I{<;muFg=R=gwM4-dW3rKBMxJ=*8rAbtw=roU>DGf~p8b++oqj9>F?^^crI5_BBT zwJ>N!3~W0QESxUra^2o9S}EUiwqXglI${1>y_;`55yhcTW6J|hOpS%Cht zf`@vp1-M(lu%|cPf^T}`8px^8jUc1q!_c_#4NNBA7-z}s5W3EByrkiG$T}ks7p`|` zH0QC4|9IaDzL{`n;Qt`=jVQ%_+`3(kNuaVbQSO38!oL^H6+8!6y)|s6%vr6~m|xFjr$3e!KpvhT)Mt zh&;0homLO|=Rcq~qrGd4$glLYkZ#G+mOE!WXytyp7B+dLuvO4lN_=0petI>5yq_1ccWBhFreO{PJ5i+HL`gU?ZkHZ%>I`dxd!#fFf36%dxsfq0 z#k@JUdT8&tT=^pQWYT!y!=Lq@D{s^cKY!oK*y4PLa2R}R4aPDJJL;A`H8Oq*u-KvA znmbx!Ci{l(dgWq`>HOL9C7RUp=h3#r;tp^KOvX7mqdp$(6y7w$9+4;V@aa4mE*osA zO?(M$eHRg39|R)W)-U@0p&WrP8Tc#q#diZ2{((FZik%=%EI1Mh7NXZ9I^{d|0n#a- zDZgC#h&t;09?i%P3M4JKg2>L_7`_@XZCIkQODtzvOXs-rSgU>ignzeb;3A%J0Z8*7 zDSPjGm`Ac=XnplP8gL7T+KDfN z*9-Wr)f(>nneqi{?fE5bU6rFWF&~g$Ryg?Mum-y!dAnNHM$SClC*P$9q`TyBVo}72~=6AgxfL6vAUqDZ*-#91h_r;V54M1%(TNQ1PHVkgt zwF-S5g<0_;dV03#i%1Jw?(mw^FfVAH(<~=jPDBTtu||uSWMoq5Rf`9_W1)qP%(`L9 ztfOZ{X5ELOp|Skoto!fv{|2?gn+NqVxsUr)*gY8O`RXQDPJW_=xmI0Gaga$&3QkXD z?qkYe%pSu|Wba{r#6HQcW2=<^l`Q=?da}X$EbnJC@;fiNjGl$*u@=6A&W-H95$Md} zfWoikZUsKi=|x`HQ1Fr7tATkE$I*S^;D7X9!Y_sk2F&GI9y2twboQCPj{?ifmqW(A z*dvq&TX#a2|6$K0aT7SrQ1C(6O8(Kq8`ux*eflMz8J=Z=~{7{Rb2epir=+w<*w6mE~dcHJ0Dqj;mY|;F-htR9%74 zGx$x%^cjzxGqyWBW^5XCLELgN&r$BUBEEsM+WTIz-w<#4Q^7e?EBE)(wO8v7%gF{^ z^JrwrPyM1{M)0))a$`Ym7J%+(iY7PkjdIltHr>>blt2z{UemJ-+6uh#mys7;2@*(MjnQksO zdf?A#qVfGnZ{Ugvzv(zG^!XLM1+P8?-^#eXSZUOz5#+ZprEJz@YIn0RHC6FuNFVfO zn1Zv@l)gMKpShBmmW@%p(U&n5UQv)#=gWcxmVe7WSpM0Jsb$|^fzLfW2>9&+as=_a zIpxmLJ&~FFlb%-w+X9}dr|}94JO5bur7NJ8h_kcV;~D;TmdC22H7*^}~ zHp}y+XIX7iE%r3MfL#u9n2miA-0b|r*y~9jPu6=@(RC39HQhgM@czHi{pFd1_iOe1 z;Qi16m9miCDas-S_X9!n_WfgUe>Uz<#PeStFqWG?ip*LTvM^QYx{r^zGy7?M?G@wum{7y7GD14U`|X z0%b|BuHb3^pZ6~#_$T`3M1GM1Yn`3w>1dx@F3>aG@2dae4Fz|G)Q1yG5{e`AGFzdS zzHoHYIoO3kHO)jZiK1D>AhKBKppT-X>!E#+bM9wD!MT0pzsp?Re-Axp=C=wBEh=&C zRQAg$N8WM7K!c)wQ~O4qcn%sH-C;Rs?;&pULA;q9oY6zb-B$4Lu?_QXR23WsHx3Qe z^1ok=f9CI36Q?A+5QDjYx@Z_tnJwVeOJm*~aYR?a=Gde+-Nnjxvm2gF@NC?Mn6!c5 z_5PQzrgVpZkc12qmmra3gOj&OFS-%KRLV|Zq^<5F=|8vse5SdAwM6?>;QWHfOTicq zfTODJV}O-JF&44i1}#Y)U5I_kupV5I2YGru#^y{f)qh^rpVrnx&!Z=QYl9D7^M@A7 zx_DhZ$t0xznyROAjh@4Du9a#aiJHfGy`ExH7#s=ufurgb>Z2^lcs@|aTmorahe9TQ(KbdO-53)2Ik)u69Oraz!+C!prp z&`VgMA)C7Iuw0Dab1|bIhL>kHdXky&;EhFZ_5^3jksMP?p$}8_KO9)s@gs7sgz zL>QR417yeE8X}4G05pi0`|V$TL^j-dxzI}dTN5N}H;zL=%YYj`+cCu!N4i5-VkG|= zE3f#puEhPM8zdC>PUIcv_3;i)dGbxn+my(B1s2x}Ej};jq220KUz1Da_z8S*AGGN9 zBzBAizCccOHvT46@472bfgX7Z)W}m1kt%KZBP`!{u&+EKn}Mlu{d=Cdin@nBzx*z8 zTr>DR3D*+_%RGwjr|v4hd$0_9*SVp3KE*X={0Se){*2XJ@wtn3wY>h;05iVjU(S~F z|394lgD>%oOQ2O_%Xi9A?&uv9xeY5x!$9!yKI4Yctvlsmry+Zu=Ib#(^`BnVO=e$2 z-N2}%n)CagLmf4~S1UeuM4k!B0_$TZIK7=cYQrlY$i(3?lzH&R>Nj6e_>rRiRm$%b zZ)TN0RsKp^B6i4eeTmJa*P=QL`j=pK==zqHhk~^|T8v>q8QuTLo8}6p;j)LaGSUi+ z?I}{~ne`_962dm+*8^`hmA_iK6B=o(1#8$M0EtY00203;rkxoZ_a@eV?`yaoyHD+n ze`9Bl-l~H%K3lu9C&7BDG8(q{;p}pH>z3FZHZcbMaIrV0(O6|z8M{Z-5RDuPI#?I} zepRc-n=T_AGvx6W^vFIv-e8XM2A9IUSE$AE8%@wGFNbE?tYn3xx9jNt=8Cy|hNbGp z)i*-HmwJupq1+ydtpEItp*Q{HjWgv;Lmhfyi*kLma^0_7|NE7G=%vYnobzw0Skm9-KU=Vr1(Zar`Y%0*cB7VV+{IczU1sxJ~4S6`Ef5^3V&^!d*T^J z|4WJXkZ@7j+*#=wc!XzK$)~`u(Z*<`S{eS|49+RO@dn?B6Q+%m#088^Opwm^CwJb9 zwq)ajZ~am)?Z|kudh-grC%qY{p-y=__8!y5uGT&FD;-LF#}+1Yo}`aDBvM=lwF8lJ z4;7~W7{2QUuSRkL?S2+0IB=+OEv7iBvc{eyCi?Vc+BQatI=;ZgXFjzk>YKDElWNF8L<=-X88Fs;9N3s5mt@c|vlN;=x`pwW%U+~Q+gazJtK9HDo zHNaY~_!A_XTJ|?Ne&S>-pZQqpBzS)AD!Le;_K@wClb#6~lo-g-w__mnxTb-Z1VwP_ zfT!FaZ0(I$%$)GX_{&!ES4n|X@GZRYFK;r|jq^^%svwU(=s9bgif0Bz9a3)XY_Gw^ zAVN=X12=~JXNZ+oA`<@?Zg#-~pv`Ex*YAK{R<^07V7t*`^{;Y_srb1kZQ=v|Gh1^I zv$zJjRmdvgu7Gg`MSza?2(Z{U_M}aW_M2dJ9$9i_(neL z=cvF@f7MF01Jk$NT*tR%)yStzmVSTDR*L6gvi`XB`Aw@$*=X(aVbh8$n}#C8x&mBX zJLUq#CDnoNBTug6!C1U|s^If_|7eOt9&VW0y!DG#Gx9-dBoAgu^CoMR3GzMpo*|P) zyAyjB^(Wm=@szWmi+6czwypxztJ$QHekHG~8ZL1vmH+dt)++MHv4_9hL&vWvTJz2tbs3LVt1wd1OzPjRV>BZb{cn*5 zsG7rZPeYFzc7$2J+=|3p{=)w55xmxt-ti0VF6eHPHSGEL3HSNQlaeqDejDPUAvjpE zvV!YkO*>k-+;P72+_Ao;>dX(Q1ZppWzOa2ku7KQKG41*+ChOyXE~_IDQ@rD6#k15M zgrjQ{%aoGIMX91-{v@C-ULa?6z72k>%g>2w^EpEP+%g02dJOT?G@qffk~Cok_?z&J zhGHr*c4Rfs`N;8D$EZS9 zD-$P;LwqyE%9z&~%uQwHs-|khx}la7+?j{@TLpA~nlCg4q?cvJX3ae&npZNGDZbJ= zib3rU<|}A1`MxMbbS0V#)|gi=@zf}Pfm@7k_TVB9BUyXYqV~up$4p0}2f5+-WKg$7 zy{!&oU808x5nA#Z0rNEeI{s_oNDwL>-Q=f7w^Mzu-ry=f}%H=9^DH#+Rc-rV2 z>SvAgysSf{EMr1^{nnJN9z;YLMfGg8^aQfU0MmRR5~aQFSgJV6@lD{)eJgQa3htZK zM&%wIEVuMn^wuV1JJg9$j_v@5dVUuA4(+7-s*q2GtsjPG&Xw6+{6R+A2Q-;o-kRDY z_QZ2WL{?8m|GeAtdgU-lD{#JM2a}QR)&QNMz`@Y+w1iUtt_;Qu!6rjG><4%ew4*XvKg zI?>zuf`4!4#v$V&o}b|I*wy|;u7$3%sf+B3W}a?E-L(6PeZk|%Jsefci+aa=FSm7% zUE5K(buX}DwWT&kV`{|DjB!YV{clBX`B9GOwq!B3bM)5Dh-mw@{T2{`f422G`?YgR z9FXq2gki%LFdl^AluENiIvX@v$kX4+dpzbBUa5-N8fmqm0JYZ=p9*Z24= zXNOH$*?sVpAxgtaMsnS7G;HJThxz8%H^?=7*vQZb#5-yA!pMd!|E|r-rYfE`#DN4-HuB_MRY$ zZ~)o7S^bvSP^y! zueHvkM4TV)Pv~q=Cw|cESYMawVIO=6=mI0fF}+)4ZFdw92Ks_~;q6`8rf_W4aV3wh zU?zU$TjikVsEo&oIs(z?`xTDktx;AzvcJGnkDF9y9_)`z1DD`Wg||@V4)SF|)>Okg zs^G{&wVHbfQJG>&-YV5Vv&@)RJM<>*0Qrs}j&h1x${irA{#Z5-rLqRh6g^qVG-&UN zp6m-g*q@E)N#y2)?Fey$edK#IxEB=NJ&$U!|FH+_(N{BIwVv*)u6#&+-}xz3=?@_S zvWrhz?AUbVOl6`}AD`>n348IV%7P;YyW@2_O-=0>U^|cbV9%^E{;2MF^od$xUho5AZ)E-^Hg1o-YC`puTlfL`inlcbI+{LE-3rM7Sb!h z_qyE!zV;YCq<61znJr}J`Kdpmf8<^H56yJ2`D0jWoz}G1p+2CNn)>1Yvk!d|rGo^f zHO(nhAJ9v|kXxL8BC1QrFD_3hPZVhPzu;;t*A;SI{Iae`_t;0BV<&(8h@n;moz}^L zYS8iON{@y-q)q2ld)|iynj(`&`;4`QN=RVSNVxIX*tT3Tvom|^ zK70Iy7Q~j0ciarjoz>^dcj%|EQ}at#ZQbA6WRH6P8nT$K!oK<4xfKpWDi8+rd8KdJ z108ve1>#K1uTPLY{*o`MF|Cw%V~V||HWP0$?}lOFVQ3KSw^$yskrhuZ+hx~)V&mwU z2*s7EN0k(gJ|{Eo{jC&<-0eFi>*pVXcirpuy!KqN$!{Z|ctKwK$u&l zbNAu7pZM8B^gA5fjbG=f-m<;+f1r*;D?63i53~x^1LEcPVIOn<7y3QYHmQK9`bQNz z2eCVR0$TXGcI@|XUWwkC(BOFMRyr@i%r{o!*>u)igp=P{GC z%J|0uS%cY`FUG)6`E(I{CE*ult&0I&TGuIJ-W>KIKQR$xSR}jztFG7PV#ChD^3}tn^$__yY~$T1uiGp$E&H68oi(7o@69^)esnhrN_HTyNW2nYGyfxyka;w~WF84v zM7v0l(698IQv9K*zYrl_QD30~N`7^((8XjN@8;sSwCr!?eaE}?@iytYo5^LQYwjQR z-P~EswXYyW4ffVxuNXw?l?9M9!ohq6bBmEaatn=|c(F3OigvC&eU3JvaZlw>;M=6y z{Tqkq10HCmXf9CNO|9;vd`8*ReALEAG!xK9zpQPcEJoQrrXjnEF>A5Qb`&Ka8QYmx{F4>T zgoC~%j%;PWY$^I3^iN0OclZB%0{r(s31=^Z7q7d}eP_HA%-PtRNp|>5z8=`2j{g8p zLi_ErM)d^={Ai;O0)4vK_iMmT0 zonP2E>q3WFr$)XEH8>EV(Js>4>!r@V2*ptQN=NgJ?$+vA>4oh#D&PD&-taVh#B5kk z4?wFl1Nx-t0ph<0=?C&a5l^UG5DlDG$rwbj}Z9p^iX`WZRqPQKcFCb=NIM8=;@WxN| z9V~n+(4Y>Sk0&al)b+WKC~Snz_`u;Lm{p)&IU;4I8!jtewZCP}$WYawl71TI8;5xI zA^Nfn5|3da(HK}Ntg2}Z6|{1Q-q6aaCORh%t(|6tUNX`lcS7YkAZD}BF728H-< zKx+eS#IqBn9oi!%$?)$Qq_phVF9Q0pmjb%6f|w~@4z!4$V6Pv8tlk`UQTEFiXyjA}x1)7BMQgKUaL*(Oc4ALw8_n8d(2n8_H2YiAKGUnNG{{x7ic|_IB~MSJo{dM88DQzeA#+S=U)5g z7h(;T&K=;pQfU1v_X=1A@W3{{Tl7UBMZ_#-5Nj;m?7@@4cX8)wC5(0_LW>7q+2EUU zo;L|Ja#9^nF+~PWIy8tu0@TKdJ^sk9orrhd1KZMVUIFsikFbMAyTL8glN>^Ofm+-O zeU9oN#lY3cH0Rb2N+b04EyzW(z_0C!q8+#IL?uy6)^|bu)cHf*s;E>A?X}zoCu&P( zm12ifNs~g8ApKq}uYuR24nCOfR+S_U5HmY4#;ZT0Z=F{ ztaEzl*`Aq@E>+U&13Ku5Xujv8J-)Wcx>Yq^bnJyqv6FiFrwYx01#bi>_EV6InCuUH zJbcBibtCZBV?tj9MxuWT*U&DSq1&wFROHL(xy0$u>6uiQFD?KbhQ1;EU!aYhfoQ}d z#Tq_=U(d&&ksX6Ftu%9C#q;3q%i7?D9EvjZ2D`(KBPl=V`)@)Sovh_oe!(%f?KAlk zH@(AS16ZdgnA|UY`p!;|07T7Ck$=WmyQy}&UEk5V{i)-VFbDtU*zC=z zz3M@~TxIWT_Am`eVzLRihv@mskbqUvA7J&`q1Ip~4YOrF@x106B#R$YX%&BYZiPmsbWh2Z&~X%~q=!#V{~73%B@a1)%ra-87_`Z2*r{JblS(*m)K)?b)B>AHC7DoT zy_Z*NG>i7M%)(~7%CAyt%d@GZu_uwCBbvkK8c-J^{Xx8h8u#USRk)8=$^u(bN>K9g zQ5lLRh%vC+Rnj%cu1>F7sh`~qKW8a_fND1mMuDrOTPG-bAkr?#UBC(Di+T8}FTglZ zeD8edCV7e{V;jp)mq)kB!B5|Y7iYWXXbg0!$<#<6Tyi;vw zrSyS{4g3zx)UT_!9X#2ccdB+zhUQuh9t{a4>4=O4=Ug*X_i4z4TBT*n+ERfm8s!sm zG(H~at!4vP`|)PhAP0Z-wzG)JN6HbB6qVGVq{^o+mtaY5H)aqTh|xIA zz)D)2v#ckqVY79vH?`y~rxo7bXgi`1QpT|3R2OhuO*pq^V2-`x`l3w*uV_7HNlZVm z8c`oKeHkXD#^HeBWu?#h!e++6>JY53`sSes>cDo$x7+?w4&di(H-J5Yu=pN5p*{qUA z_HULSoX?Y|ukswN(l2a2XVG;)uLzHB%6qOt`{;e-;9G;wq4ppXB=QHVqUR00-dXw-YAW6gQ{HSw}^J8c7>PJ`aS$$!3>YBxCQlUNg<6t`ql6Tul zTdF^WEGrgMp}vaEmVH9@bw6t$zZ>csfJ?i3%B^x-))OKioQGyvP#k7Bg`u?YNyczw& z9AzDiEq}bODaf<1+sR(@VK}i^O?FAMVomk&ISIZ|N`&@9CeTcSE)MjQp*UW~w0O04 za7BL`c=)cX!<4J=L{XkibM0SgNDH1FJo>OXVQ%8Q!@%EzE%?T}zgS+*O9MP>`MOo@ zKS93a@StJl6ILH~h2`u$%ia8V*xvapw|VvQ)k3#g_|hMlZ}g7z9EyaUZDum!AJ(H@ zHR!q4HUcA*I)=^pvXwBQBQ;0C0wLJQ=1w^gU{?+CxnJY${r!rkdi(D&4piUFG^Sh* z{^D)o?dw`p@b8PBUoFNWiw^BRUn%ITHmS+ITUOaVli#i0Evxsjxue>lo9I*3j1?bu zjmFNyABgJKM8!)F3@{TJ>9=kncUSupB|rw(>}pT>**4ka^t3a^llGaCp5=X6W8gQK zHO#v&y~tiPGXc8##U=2K(`(^1rRAo`iF#o>-(~0C_o#M!CeQa;3LE7(=3*6mCV=@+ z-y7YfLflpAz9m3eG+1NJs|p}{=n&n&>_LxilZ}Qw@Hc>$Mg2B8bN)6t%kXU59@yxY zd6Q)x-W^&W^Wqe7vdBY|B!jQmD(gyr+csE_`dY=}!EzcO^HM%^(~)v>LcujW1ZLuF1443m1}F^kNMIR`qd5m@ilJ&{=O*N>=j@A0v@ z6MUvIkJulX$pPV4ldJR3lsJ~jV#mI3zHGY)q??%%G9`AR7u7c}DE+-@hfC+3DH&Mm z`-`q<9NXB)NG!(4nGAc%FXG#bKFF{x2xLL0@JV2-2yenHAOi(9U{2DSqH(7+NPE(j z7WNH9^>ltF7uN4YyvJnZ57cSDY29a6cd#Pu9MV8!w|VSmQ&-QBhuh};>^^6Pm!0ue zpL~OKZu1J)y0^&YPWUa|dnrKmOUR_PrDc~_KaV|_p3G$a&dzqL*+d`q^%54@D`ylM zk#~@lxyL~H4BrRTCA9n0fDY8inFc)d5QFEwh385Nz0kkKlxyayjWY|DB`;l^R8BUn z1s=krvY~h7U@vG8t&dIRGt18^^EvKq?NJt-dglPB(S@jTwX)(_GlvyTG?d-)8CHP+O0)H30LyRvrL+E3s0uvEfB=40ktC$07vb~=*H?2|H ziTI0NpC;$)K;%A78W1*mnOw>LKi#(r_g!9dDZu1@k9+><{|59`*(;8Y7~IA6gS`x(lkRFjb|#n-udm};FJCQ?#{OO;`vocRlKbppKv}X7`T>P zD{p4t{iWrE?l_*b$v+NhXk;f&E@Y>GYceo77kp$dR`xQ5ug_Lmm8rDHq_hOcN5?fK z*dIzsHh_fVe$>6k-QiBDUR=Ga`a*T;CT9`NZ=%sJw;*cBF?ZhFxjgL5`uXe&6R=`g z?Lm?DX_e*i-sk$#I(W;29UOM;pIu<@;m2#bV>RFV*~WaY99#rc1^7LH9x>9i@C0vu z$u>Ezv=PyNyNc2j+nyTtUG8{Uj#qR=kNXL4Vpk9SeXo!5;ixSOa83?p_Ai8fgjZ@B z7M>@CrwBl>5M*}m7Rb$K0;s_{OxC`R__LNHZMZ%e*K=nZ7mLFUC^aL$jFIHfabyB| z9eP$a{viGe@yYG8v-SsY{ny>7L2n&>=+V(hg?LjvFF$^g>a1y7EEa*gWRRHw9B1U2 zzs?8u$0h&icdtQxef|5I8tbbN{>YQN*r!TDw}Q05gF;VPp@)Ti^=(>=q`r^KCK?glp@9ra6o7|30`AoW3WcYn4@7*kBKHFc=mhRLK|UI4 z_=e0JU}5)u74Hdu1<+HyExA&VN|2X6B2x{O8?TgW`j>L|-7cp+DoESHQ6*8}bEAs) zETb4$*bYOQ5-rXE0}g(Vw5|ndgTn9b$NqI1AL4nZy$qjS$Zq3+bIX-z;RU`|k=;(C zkE6=nwZY)jw}JaHw`rqVyzJd6i`I+y`;7HsTj^9j(+Zx&AjV5qWQy$;q?{1xg`29u z^O-Z(E?@iVIz%yAfdhYv&HO50oyuiGCkAg1rk(2NM9pm8T)i>DTMa#h+Q;T6NnzMZ ztjrCd^aG;;WyYYd7!M)n&-YRW2~CFyADv~RFWR!ir?CtJRnVU@W5xE~j#IfWRbZCj z^I1yd^CXU|@R^^;!t{E7pz8+ayH1L9Lii$ zb}E!KG}XT9;C9e#3k;T-Y5r#L$gY&WjIyW^PY|r<1Kfrt{ALUVCe#EzRj|GnXsTFN zF-jmGK~qIi;U&s|xV&Z=3x8=)LZy8_RceaVaoO`DSsPDvE_DExJb zjyKX-n`&Pl>}Tgu-CTG8WHxOqXk+h3?k|wg@u%UAwv-aygzlfg(tW}>&cD0XOJ1kb6QwZxBCP!P z{>v^)8+q?@&;)^Z2wevHc^=lg8<>J-pqJ2EW+eN`WU)JN9}v?R&%O6RJ`4T9`7N@^ zMCJzZ=ZFK%pixPF2=8VafzgYxHgC-LHY@MP9-zJ?Bno!MFexmkx~;13{c*+dbM?SX ze95uD`&|`pwq|9>9P<0@=U#L3XCgCfWGQ?&RM-5f;)UxLmPPn@dhdR$2@lo;(G@mN zJ?Ctz6*P=btltQ0Qda@b0^^C~dMZn6ll&;V!UiwB5#^J(fGq3Ee8u_CfI-sanwc+H zMks#yeALMFEXG|+{tWXe!ARTsJJ;q^q?asv=Fo{H$U*vATH^^hc&!)lp;+hl zBAWpaj=EDB0s0EUHX_s?tbgo^m#ddQTiKQh3ov-~23RbBNAX6O%|@IwV!*~KJI+3M zw~xin)6zE<5qix|@^>Jg%tP&smGApZKU>fi4zBpYy^rDEW@jXe zRyeo{eF?qYyx8A^lZO^|E700^;cY+bC$GuJV1-PE4+-`dSoQ?z!~WNg3 zA2Dy>-K4FKX}6jugHj{r!^&5`jP+atZLqKpIn9yRTn*3tXzVpF_5nS|x@v7q$s22v zE61U>`MrYF482H7iy$5BH*A2$@3(^VYX2YB3DPS-TfP-Ah@?}Xei`(4fDfwT^H552 zlJpo7=I`I|*@-e8_>S~J##G>(_46eKh&Lx+NI@!x-XpTkRoI8(;B_iUeZZAp9Vfzoa-C)!co1T0yzqX6D{3rm|E4W$vS zB0c9y+o0aDm<0-1!$z~Wp%$pme*FeuXQzYKGc-%DVU|YP!sDG@YmcW39n^ z{IT}lHsjYS)t{=Vj|9ngBDO$QXeUL~2-2VXRI{y-Ttz}>En6>0?S1Snk_)Kc?>x)) z?9e;uj|LIB%b02YM%E4^#U971pA-x}cN`wCSfSOm*%i=BN#?#4j(xQ>mciiq<5oQJ zxfU(-ZipX5K7xD96!WIGaxZ{hf-3!{hhor4M$ImHXv5--iz?&G$3DCrs1ewousVL- z8$A`}=QEkyPQ=VXpB>}OC0;lR=t|n6Ue)!Bn)LHgy(;N+DnWY30~XB zl-?^R=}oeAv>NnrzxATWBu|*3c~{@8?GvVCuRL%!oeKpJo+CPyO_&3W$QN3bE%q z^AIH$1x(|}^A*penT+(~w#fSW*XJkW`D2cbyNi2>@C+*O{JfqxCiJA9v`-OyLApQh zXwAw!8uD$9Ixh!Htsd!$Gk(@|HBynGJ*$w62%keJ3wWhJxE3x$^uEuDo~h&OMbsxS~5n<4vCO zG~U_hZ>?Co!Cg*mh^h?*|LdfN@;m86!K?ki#MLYB(*>XL+vl(U;QWiX&-eY{{D&v+ zevS>#sdL2@JKrkY82b=eE@HFPh!9qF74pMjw_4&VTsJyu0rV+3Ub^Z$8L@0Qk*Dg( z<4ilXbrI^=LEaxW<*Zf%8sjQx(7em`cg{MX?P; z+vxfY^btKr$^8J&YPv?hp&KvJ%}rgYE7@1N$G)c}$`=g!LxtI@j(JjR8QZ`fXhJ`v z(%g>7EvV}&)MY(t1nx_jx6Zz|l{?3n^rH3Dk6q8%dwpLN7@;qyZA~rwHjpZUvxMIt z^Z;f2?2p%_u4N?K+ti+=nF8k59IvWm)P^Z-buOWJ6h_%>ZM>_^)IOo);zo-%*^6vJ z(3LxjNLx<#t8jjbmjfaok1H(Bk`6ucu57m8yQ@kLGa4SrEmqOVLYV~q18tN!d&fk{}mYiY`QKWrQHekbuE zK1hw--XnsOX*nh5?%NIz2VM$57S$dxn3>EPr+Rg+2x@@+L3KVlg{+l}SO1XOe~(=3 z)$sLuMb@>v0`Jk^mMON*dA!tdia4A|pGD^1anzjWHU41!{pr-u{QFnCz-+t+SIn5t zIl1C<>zqZMXfw6ljtJ8PPqll8Ytw3Nae`-`tkG|G&0LcxYepNP7v}JtXR^C#tf~Ch z_{?`#}S=Uirq<`2iZ*#d&WzqL^ra6ToIWR>M(H=VntoC^l|<7X-&r815)h#4ID@W^>L zUBiLHOjb<;JSt{MtP04f6DPYHT}PZeSrV8j^2mvYp^X)y(rdJX++jVfr4(R9T8Mud)gYNRx`HU! z&gkB)Jwj(bN{lGE=;7TX?&|v)ID6U!G#9@f>yWWXzSxp41NUQux&jZF`vMQ*I%U`X z!mlaT&RJ0L*L6$|w2a17Q3u<}aKkX@Wl9Im2lS_g+Nou#%D$YwS1C!u=9?kI5-v+?RcaOr+f5O%X3@7)H zwOlITrN>Vy{WQqqfL{DJd$~(_wp1{7ZdMiLA7UoV^xvmwB@wq7Whu`Gisi`j+FlJf zG2jvo97<6)NA;?n0u>LGZA!Zf~K3*eCkhp zSgIu5I@_F6K51hx_;9ZUa(aS)vuv~?lE%Clb|Az06}8Q^I+M5W+O>m~!QivxV+!63 zcw6m|GtFNGh(6HTQJ17vanP*uWT8}esbug~zc@~`kjm7!auwURAQt%ZAF@<&mI?kB z@T6%EH+!eeo9^1-t?@KMS=8^feC&@ePJ$*6xUZH(AF?f)i^rvkG3~<)bjQs8 zK%jVVmXU6eYWpToGI%B#XKpEd)C+y#W0+IaSIA;gGOCJn$*PX=X3|}#p}Y81I2_Eo zts|s9Bc$p72R{oHxS?<`XMmAJMR&(bzdJ?qb2H}1ztX~boJ)d^$E?&Jjp!d98G16o z3*PahfP4&0UT%Om#i8+|7?HHOK)t{_HT7pz@#3>5v{Q1Dr-G+Xp0`6*x#db=gMhRD z*ux=T!g^@-^ENW|pI+sRHt|-lCPcF*PMJNCxx*S()f(0xth`*K#DUDb6iS#3*^2K3wGkKw?KLj7qGQhX=PD)B#Aw(o zjD|DbO%+0p8pj614sgoISPcAryMwKuxB0Fw8DmfL=f>^PzvauqIFA~nBowhU)$*l( z1m-1cnIO_grz#_zao0%C?Yj~<3+>g_I-}P_nu^uH0q^6?Q`Tpou0Vit+4cnf?3&O9 z3kRY~CalkdK8wTIUhKU?{Y+zeiel1~F|`ej=f9t%@!X5CBYc0xg;;%P7!2NK*L-B_ zdIa+hy08t1ZG>0Gak;t5{0yu?YY)}!tF@$2?rf4gZv_WVaNr`mk^^=VB>?z_ppuhIz!nUo37i+yW$;;M58?=k!EF(NM?QJ9{(AWg2 zU5JpkK;Q8$+NHNl@^{s0HZ-?c=4ed^(qg6m8c@Ugeg(zMNShJy;qksqy47c1Tbu2< z6|7cv3A(njkIjZf7w4V=_K{)mt>($}M&=C`w-s8LktLCAFJA=Wuu4AfU^W0p4{tF; zHY*y@F6?@|wW%#vk;BZ-US8J(yR~3-KqlG&+)UEyI>bmR78xf`2gWNUzYCln%u6r#8WG#WOS^jwxO!9O6pxB8 zFwf}S`ax^R{#t6{X2(i;;9w)JeF<=5XXEMkE~wm88PPbOsbngX3gM~M#VkM4cTM8@ z^j2pP;rY-$m^#QOzNOF3dUn**&S_5(d;Rr^Ur?rf*`B!4$I zJkuaeme#_vI}Ls4m))S`z+hG(?pIyogdVKEX!Uce|Gb)V&7&6!SgGJRzH1n)0kvo_ z#8L(W>8O0nJ0E>Q9+qZVSS55PvkPFW26j=&R(p>>(F1&^lIPa57zxr)@sjr#>5Zu$ z{-<_qLp!+tpLT>{`IKvDhNzVpQU;$_6=sOAdT54x2W=MRxS=^h+0xkt&;kW#_YwFv z(L7PD6W0y*3K*;Z?14|>pr;&IDrxC4;+Lp>$gNyT^FeUYamQW9;KNyG5uGQQg=SOo zGq-|=k44G`gX&|r4|tk<*?ib)SlDWYcvw33$p3I|;lG?4b2J+Ad<1VQBp*noA2r>^3q8#39N%++KgHv`=sGXS}iN-@{TWJl~cTCR}C^Ql#b@5%QCPa z;HPB}`>|fAOhmsQr|9<~3wh5XYdqUkz|h#xb?aMaD}L?LJ|sx-0$no~s=5k<;c}Ao z3D?;*JY?JqtMz1Zk%V<}8lM{1Bn$PM#{Uz{+zhPd$SO%LvVyCD6@_KcN3G#SZRsVc zm3HsP6+C?DQfkQ$e!E@Uo-AH=Eo?i2e#kpgQ$bde$o-)G?XBkPf$0`KYKdbJQ3s97 zZ!j+UHUoO_m*LB<=(c}1UkV&GcLp@Y`pRst(W9@ewj*vIUT4qd!vY1WLUWJaOLKIx zq9X$DRyo}}3bGhaM&VSKb7vF@FX4ij`A5qmNx z{r>GGj$48Bl{%3S9b1Z^3uve3(HKFK1mEYk`aM9{nl=D^k}fcD-_ zBPSjGu%e-280?mWWs{!fwX2|mo?kKDpO~BH*IM%Y3oA!dZm%4+;iC=eE9fX3f z?Re{EZmMSjn~ZLZ`uQ$1&srnCopu4^xKAq?@Okf5LPiAnwdoH7CFJqNv6;+ z!%;Wz?kH0GNb(#v^eNjh$LwpuIn&o6!|mkvTUk>z&S)|IjOol8lZPuac@lN@vSpr4 z_$2Dil)dWV*1k&T)?V^#!UyNpjziof`Tf%T_~Y9oJ4M<_?E-gU+Os;jEE(BxseRGn zIB%_sg}pZ!9N}?fkT_dDrR}W4+{V;0k({YTqzRL;zJMv&7YaTNpGQLf&h8rt8G{>3 zzENL>v)fo;U?dAMK6dQQKvVe<`z=599VaCq-daMx$)}=chl9Sb%d5lp-@=YI?c8L= z&j9paer^& ze-nOZ^=L0gaVL&~rKFqGf{&+i)#20Sk#g{(4zsl}#e(>XH_6es717Yw8(R|`I>)B>1#OcZhT830 zTl%_#9z<{@t{7XL-ELaSw_RRMH6u#fi`-w~AuoYs;m>|q=?iMZ!`I@I&bre<1v@bQ ziUoXCvX_(Igx$)#oW}4xvcKrjw|=1YPlrBX4>CeUn^@CkIUl|IpaBTh=-Y7cbHzTZ z10Th}*EJH4z=PJ%8p?x3Lpqs`?IDUJG`}NGaecw?)eQ1@`uj zluV5g>&Ye59wX{Dg4>_OtcsCp!{&{=MdQz26^r?f`i;CbM*1~$>huoq&J7z@>5W!v zFlZYvt}=+oRLBvB%Sa1O6g${e4D5S(z_puhC0|M2EWl6WK`YsIuqTF742<+iKSg5j zYgRcBzc_>rvBVC`XdU=f%7PVnug!R`64c0}l=UtBq+w#p6w1dr6CcXsX+23#8+jre zJPSTcI{Nc@FUhi%B2(hTB}ZzW9_1=H0<6gS<4@G1PeQ?up{*nh1Pe*WWSxk=YIxi1 zlZqk5Ps`EPg^ttYt5rempp}jI z;66MHS*+jnQ@qrh@Hk+y&-h}%RndF#?w90mQ1`Lk*8^US_I$KgV^R6Fcy2g24_4_v z2DCtpjKXimylTy@;BMTHs3qL-N#A>cHJX_7QHV0IU8^>kfc$+?Bb?VM_gZ>71Hkf> zYI@nMD)0)l_Gy>ZSE#dNfXajn<*eX0q;b*(U{H?e)MRJ*w^uAwA~Bn47Rb>LE?>IP z(X{jh;M^xkLOk-kVpJ}#=gdv(S>p?s`|2Flr_C|=*~#!QGccJ(??h!Thl5k(Y;dpI z?0@*8vZMS9E1I6+z%NoxB~GgD6U?6mblLAH&u;9~nm-J*K;N#(;qlhwt9Bt!ru=4o zQ8_H~mES;|wl5Hw+5Z+opD~mdNpEJwrgfdk955+JS7XOIB!442$$qyiNm{YQ9SVNe z{_wS-T#Xsc@0oEsB9GEaZ`xOXN#*){zK#}iL5#KRGwn@LnP?{Ju|Xie=hGt ze{92CjLb=r&~p^2JOr#B;!B-afi#yXUsIW!RI*ckK>vp8+|_AjHaodJRZMa$l#SSZ zQe0kpwEt1pW?bLxS_r>EoX3n&B*3C1nIFT9`^LZB!FIA9v5`0LKoYBsD ztPj?bV zl~rZC#!q1nf=dC%yf2Ix8oUL{>r0UL0`*xRLp*xDY_##Y8q@({GYPHA)&nI7?KI;1b<{9j&j6dJ26l)f=YD9M zzJWjH*8!^Oa9|-Ko-z!3?EE=cA@Hq!|E^XpZw|1AH!+uqcIz>gHY={$o^QeYO`4DXvA{vP}kVN{UDs@e76!@%F{ z4p04&e;~LsJQuMH!g7kcCN6loA=)$-d1{3xvRyTp@rcLJc6rQOHeqN_9?w_3o=X4 zGqu;RB}W%-UneC)YLe=Eh=&I+qqKoFoeT^FMdi*|bBy`(z+A|D!V{Q}@F~9P%SN7- zow6OeMt#4X z<`{!sXMsS!Iz+gts+@0qYNZVNzCAk?cCV7TgMKp3B6^mDHB{Sz9hdHBNPopx7W)Q* z+d>@lScs?voxYzL2(AigXm7xg3s-)DD~}IenH#de!j#A+A?om_ww2Jd>7Da!@Hl2b z$$|f3U=VZg9(mfIuy6W0hGTJb6MWQIMt@IicM9%fE9q)8u4)FaMw?TLnT8$mH^|y^ zzm;-iKo1!XXK$8gG8(__7S9tVQ3MORe}M99vt!@HSmmH?$vtj(nNmx`14C`j!ugmU z>)?4+=nnyQY&T~3E6O+!|BPH4w|ha!x?x#_UeE#ah?BmT4TE=HL#%A1?winFa?+*S zSI*(LaNq>+zgZEnK<^H=@E}^qNiW`R*OuEY-mkQ{ z7E#iN21l-LV88PI&ZC}|5wOt1Pv}4j?*1)2a@E-B>*Q#2^bf`XzGR3;`k%)k4{dNN z^A~h^RaV+g*`Noe0jxSlK*D%6&@+6F`RYAHmiL?h!9^3<=ky-z* z`(R|RBWfKAo;XQ5B+B7J?L|K9Ra!4A{WP>FnR3^dF` zGFmwJ&PkHVXzd`{S9%UIJ=U)X8GvD>y0_^(QA^62MAluRu@SrjJ=wq%%Rb3E!tFKh zewy(zF47&*y~B(1juxa-OZkl9m}`ZM)4M~K5jXYf(|Xrz?~WDIp=k&Q{~p#lo1Wga zLJ#cHxj?Ms7bdS_5JA`=+YE^j9s<0x&Y8T*V5J;nR5$rztHjM{DddtK@EBS9<@whA za;Y_bPJD4@8E;k_UUO%ze{Iudc@eV3IPlp&e?PnlHp_3}`*q+k{}GuORZ1TZ1iw8I zsdt@SVE!~qU>=zXutspt|dTRbWdmK?k5c0OHT-e?mS_rJ%3T2Fw_ou!Vr%^ z9EE8m8j&B(Y<(O&!%md?IcC~U*~swO z8m#LU6%w*8Mj(N;7I4{inMEGOJwr;)w`9LX=cE9pOrT+-Ft# zgdHznZzF!^&;B#u3eN_F>=EELM);D)6xa*EZQxl92g?jSo6Adjt_+ki+PijPx)v@htW=J^fDyvVZhV5iu4Vat(}v zzJ63aq?*W;<9&vE>B552N*#896@c^MQ)45xLk&<2$@6$_qCe8=_h4V13H7jq&W@}J(u`^a|3fwQg z5>Sc14-6My4$wYCy%vclI|iy|*3*daU$fkkC+x_&wi&BYk!ImV5G|&GD@;2Q;R(lJ z%pyFYrgJ1o>lGMzKH5jUa%WW3RwfHr7rj#huRfjRq-%-hh5#q^aenY`I|uor~M`Txh)x4<`5pZ)*NIl1*7D3{U}NRtAk0ZCibA}S>