mirror of
https://github.com/meshcore-dev/MeshCore.git
synced 2026-04-20 22:13:47 +00:00
24 lines
618 B
C++
24 lines
618 B
C++
|
|
#if defined(NRF52_PLATFORM)
|
||
|
|
#include "NRF52Board.h"
|
||
|
|
|
||
|
|
// 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
|