Code:
FLASHMEM void tempmon_init(void)
{
// Notes:
// TEMPMON_TEMPSENSE0 &= ~0x2U; Stops temp monitoring
// TEMPMON_TEMPSENSE0 |= 0x1U; Powers down temp monitoring
uint32_t calibrationData;
uint32_t roomCount;
uint32_t tempCodeVal;
//first power on the temperature sensor - no register change
TEMPMON_TEMPSENSE0 &= ~0x1U;
//set monitoring frequency - no register change
TEMPMON_TEMPSENSE1 = (((uint32_t)(((uint32_t)(frequency)) << 0U)) & 0xFFFFU);
//read calibration data - this works
calibrationData = HW_OCOTP_ANA1;
s_hotTemp = (uint32_t)(calibrationData & 0xFFU) >> 0x00U;
s_hotCount = (uint32_t)(calibrationData & 0xFFF00U) >> 0X08U;
roomCount = (uint32_t)(calibrationData & 0xFFF00000U) >> 0x14U;
s_hot_ROOM = s_hotTemp - 25.0f;
s_roomC_hotC = roomCount - s_hotCount;
//time to set alarm temperatures
//Set High Alarm Temp
tempCodeVal = (uint32_t)(s_hotCount + (s_hotTemp - highAlarmTemp) * s_roomC_hotC / s_hot_ROOM);
TEMPMON_TEMPSENSE0 |= (((uint32_t)(((uint32_t)(tempCodeVal)) << 20U)) & 0xFFF00000U);
//Set Panic Alarm Temp
tempCodeVal = (uint32_t)(s_hotCount + (s_hotTemp - panicAlarmTemp) * s_roomC_hotC / s_hot_ROOM);
TEMPMON_TEMPSENSE2 |= (((uint32_t)(((uint32_t)(tempCodeVal)) << 16U)) & 0xFFF0000U);
// Set Low Temp Alarm Temp
tempCodeVal = (uint32_t)(s_hotCount + (s_hotTemp - lowAlarmTemp) * s_roomC_hotC / s_hot_ROOM);
TEMPMON_TEMPSENSE2 |= (((uint32_t)(((uint32_t)(tempCodeVal)) << 0U)) & 0xFFFU);
//Start temp monitoring
TEMPMON_TEMPSENSE0 |= 0x2U; //starts temp monitoring
//PANIC shutdown:
NVIC_SET_PRIORITY(IRQ_TEMPERATURE_PANIC, 0);
attachInterruptVector(IRQ_TEMPERATURE_PANIC, &Panic_Temp_isr);
NVIC_ENABLE_IRQ(IRQ_TEMPERATURE_PANIC);
}
Is Panic Temperature IRQ sets automatically even if we do not call above function from our main .ino file?