#if defined(NRF52_PLATFORM) #include "NRF52Board.h" void NRF52Board::begin() { startup_reason = BD_STARTUP_NORMAL; } void NRF52BoardDCDC::begin() { NRF52Board::begin(); // Enable DC/DC converter for improved power efficiency uint8_t sd_enabled = 0; sd_softdevice_is_enabled(&sd_enabled); if (sd_enabled) { sd_power_dcdc_mode_set(NRF_POWER_DCDC_ENABLE); } else { NRF_POWER->DCDCEN = 1; } } // Temperature from NRF52 MCU float NRF52Board::getMCUTemperature() { NRF_TEMP->TASKS_START = 1; // Start temperature measurement long startTime = millis(); while (NRF_TEMP->EVENTS_DATARDY == 0) { // Wait for completion. Should complete in 50us if(millis() - startTime > 5) { // To wait 5ms just in case NRF_TEMP->TASKS_STOP = 1; return NAN; } } NRF_TEMP->EVENTS_DATARDY = 0; // Clear event flag int32_t temp = NRF_TEMP->TEMP; // In 0.25 *C units NRF_TEMP->TASKS_STOP = 1; return temp * 0.25f; // Convert to *C } #endif