본문 바로가기

Nordic/nRF52

[nRF52 xBee EVM] Arduino 테스트 - 내장 온도 측정하기

 

nRF5 SDK에 온도 센서관련 예제가 있다.
/examples/periphera/temperature

([nRF52 xBee EVM] 기본 동작 테스트 - temperature 테스트 (IAR) 참고)

 

하지만 아두이노 코드에 뒤져봐도 nrf_temp.h 파일이 없다.

예제 폴더에서 복사해서...
 
#include "nrf_temp.h" 

void setup() { 
 Serial.begin(115200); 
} 

int32_t get_temperature(void) 
{ 
    int32_t temp; 
     
    NRF_TEMP->TASKS_START = 1; /** Start the temperature measurement. */ 
    /* Busy wait while temperature measurement is not finished, you can skip waiting if you enable interrupt for DATARDY event and read the result in the interrupt. */ 
    /*lint -e{845} // A zero has been given as right argument to operator '|'" */ 
    while (NRF_TEMP->EVENTS_DATARDY == 0) 
    { 
        // Do nothing. 
    } 
    NRF_TEMP->EVENTS_DATARDY = 0; 
    /**@note Workaround for PAN_028 rev2.0A anomaly 29 - TEMP: Stop task clears the TEMP register. */ 
    temp = (nrf_temp_read() / 4); 
    /**@note Workaround for PAN_028 rev2.0A anomaly 30 - TEMP: Temp module analog front end does not power down when DATARDY event occurs. */ 
    NRF_TEMP->TASKS_STOP = 1; /** Stop the temperature measurement. */  
    return temp;  
} 

void loop() { 
  int sensorValue = get_temperature(); 
   
  // print out the value you read: 
  Serial.println(sensorValue); 
  delay(500);
}

 

 

nRF52의 칩 내부 온도값을 그래프로 출력하면 잘 동작 하는것을 확인 할 수 있다. 

 

 

반응형