|
|
|
@ -3,8 +3,43 @@ |
|
|
|
|
|
|
|
#include "SenseCapSolarBoard.h" |
|
|
|
|
|
|
|
#ifdef NRF52_POWER_MANAGEMENT |
|
|
|
const PowerMgtConfig power_config = { |
|
|
|
.lpcomp_ain_channel = PWRMGT_LPCOMP_AIN, |
|
|
|
.lpcomp_refsel = PWRMGT_LPCOMP_REFSEL, |
|
|
|
.voltage_bootlock = PWRMGT_VOLTAGE_BOOTLOCK |
|
|
|
}; |
|
|
|
|
|
|
|
void SenseCapSolarBoard::initiateShutdown(uint8_t reason) { |
|
|
|
bool enable_lpcomp = (reason == SHUTDOWN_REASON_LOW_VOLTAGE || |
|
|
|
reason == SHUTDOWN_REASON_BOOT_PROTECT); |
|
|
|
|
|
|
|
pinMode(VBAT_ENABLE, OUTPUT); |
|
|
|
digitalWrite(VBAT_ENABLE, enable_lpcomp ? LOW : HIGH); |
|
|
|
|
|
|
|
if (enable_lpcomp) { |
|
|
|
configureVoltageWake(power_config.lpcomp_ain_channel, power_config.lpcomp_refsel); |
|
|
|
} |
|
|
|
|
|
|
|
enterSystemOff(reason); |
|
|
|
} |
|
|
|
#endif // NRF52_POWER_MANAGEMENT
|
|
|
|
|
|
|
|
void SenseCapSolarBoard::begin() { |
|
|
|
NRF52Board::begin(); |
|
|
|
NRF52BoardDCDC::begin(); |
|
|
|
|
|
|
|
pinMode(BATTERY_PIN, INPUT); |
|
|
|
pinMode(VBAT_ENABLE, OUTPUT); |
|
|
|
digitalWrite(VBAT_ENABLE, LOW); |
|
|
|
analogReadResolution(12); |
|
|
|
analogReference(AR_INTERNAL_3_0); |
|
|
|
delay(50); |
|
|
|
|
|
|
|
#ifdef PIN_USER_BTN |
|
|
|
pinMode(PIN_USER_BTN, INPUT_PULLUP); |
|
|
|
#elif defined(PIN_BUTTON1) |
|
|
|
pinMode(PIN_BUTTON1, INPUT_PULLUP); |
|
|
|
#endif |
|
|
|
|
|
|
|
#if defined(PIN_WIRE_SDA) && defined(PIN_WIRE_SCL) |
|
|
|
Wire.setPins(PIN_WIRE_SDA, PIN_WIRE_SCL); |
|
|
|
@ -12,10 +47,23 @@ void SenseCapSolarBoard::begin() { |
|
|
|
|
|
|
|
Wire.begin(); |
|
|
|
|
|
|
|
#ifdef LED_GREEN |
|
|
|
pinMode(LED_GREEN, OUTPUT); |
|
|
|
digitalWrite(LED_GREEN, HIGH); |
|
|
|
#endif |
|
|
|
#ifdef LED_BLUE |
|
|
|
pinMode(LED_BLUE, OUTPUT); |
|
|
|
digitalWrite(LED_BLUE, LOW); |
|
|
|
#endif |
|
|
|
|
|
|
|
#ifdef P_LORA_TX_LED |
|
|
|
pinMode(P_LORA_TX_LED, OUTPUT); |
|
|
|
digitalWrite(P_LORA_TX_LED, LOW); |
|
|
|
#endif |
|
|
|
|
|
|
|
#ifdef NRF52_POWER_MANAGEMENT |
|
|
|
checkBootVoltage(&power_config); |
|
|
|
#endif |
|
|
|
|
|
|
|
delay(10); // give sx1262 some time to power up
|
|
|
|
} |
|
|
|
} |
|
|
|
|