📄 bsp_temperature.c
字号:
*
* Return(s) : none.
*********************************************************************************************************/
void SetCriticalTempLocal (CPU_INT08S CriticalTempLocalInteger)
{
Temp_Sensor_Write(0x20, CriticalTempLocalInteger);
}
/*********************************************************************************************************
* SetCriticalHysteresis()
*
* Description : Set Critical Temperature Hysteresis
*
* Argument(s) : Critical Temperature Hysteresis value.
*
* Return(s) : none.
*********************************************************************************************************/
void SetCriticalHysteresis (CPU_INT08S CriticalHysteresisInteger)
{
Temp_Sensor_Write(0x21, CriticalHysteresisInteger);
}
/*********************************************************************************************************
* GetCriticalTempRemote()
*
* Description : Read Remote Temperature Critical Limit
*
* Argument(s) : Pointer to Remote Temperature Critical Limits value.
*
* Return(s) : none.
*********************************************************************************************************/
void GetCriticalTempRemote(CPU_INT08S *integer)
{
CPU_INT08U reg = 0x19;
CPU_INT08U data = 0xFF;
I2C_ReadReg(SA56004_ADDRESS, &data, 1, reg);
*integer = data;
}
/*********************************************************************************************************
* GetCriticalTempLocal()
*
* Description : Read Local Temperature Critical Limit
*
* Argument(s) : Pointer to Local Temperature Critical Limit value.
*
* Return(s) : none.
*********************************************************************************************************/
void GetCriticalTempLocal(CPU_INT08S *integer)
{
CPU_INT08U reg = 0x20;
CPU_INT08U data = 0xFF;
I2C_ReadReg(SA56004_ADDRESS, &data, 1, reg);
*integer = data;
}
/*********************************************************************************************************
* GetCriticalHysteresis()
*
* Description : Read Critical Temperature Hysteresis
*
* Argument(s) : Pointer to Critical Temperature Hysteresis value.
*
* Return(s) : none.
*********************************************************************************************************/
void GetCriticalHysteresis(CPU_INT08S *integer)
{
CPU_INT08U reg = 0x21;
CPU_INT08U data = 0xFF;
I2C_ReadReg(SA56004_ADDRESS, &data, 1, reg);
*integer = data;
}
/*********************************************************************************************************
* GetLocalAlarmStatus()
*
* Description : Read Local Alarm Status
*
* Argument(s) : none.
*
* Return(s) : Local Alarm Status.
*********************************************************************************************************/
CPU_INT08S GetLocalAlarmStatus(void)
{
CPU_INT08U LocalHighAlarmTemp;
CPU_INT08U LocalLowAlarmTemp;
CPU_INT08U LocalAlarmTempStatus;
CPU_INT08U reg = 0x02;
CPU_INT08U data = 0xFF;
I2C_ReadReg(SA56004_ADDRESS, &data, 1, reg); // Read Status Register
LocalHighAlarmTemp = data & 0x40; // Bit 6 is Local High Alarm Temperature Status
LocalLowAlarmTemp = data & 0x20; // Bit 5 is Local Low Alarm Temperature Status
if ((LocalHighAlarmTemp == 0x00) && (LocalLowAlarmTemp == 0)) LocalAlarmTempStatus = 1; // Local Temperature = OK - within the Alarm min / max values
if (LocalHighAlarmTemp == 0x40) LocalAlarmTempStatus = 2; // Local Temperature above max alarm
if (LocalLowAlarmTemp == 0x20) LocalAlarmTempStatus = 0; // Local Temperature below min alarm
I2C_ReadReg(SA56004_ADDRESS, &data, 1, 0x03); // Read Configuration Register in order to check if Bit7 has been set
if (data && 0x80) Temp_Sensor_Write(0x09, data & 0x7F); // Clear Bit 7 (to enable again the ALERT output)
OSTimeDlyHMSM(0, 0, 0, 60); // Delay allows another conversion to be performed before next status reading - Handles all status being cleared when read is performed
return LocalAlarmTempStatus;
}
/*********************************************************************************************************
* GetRemoteAlarmStatus()
*
* Description : Read Remote Alarm Status
*
* Argument(s) : none.
*
* Return(s) : Remote Alarm Status.
*********************************************************************************************************/
CPU_INT08S GetRemoteAlarmStatus(void)
{
CPU_INT08U RemoteHighAlarmTemp;
CPU_INT08U RemoteLowAlarmTemp;
CPU_INT08U RemoteAlarmTempStatus;
CPU_INT08U reg = 0x02;
CPU_INT08U data = 0xFF;
I2C_ReadReg(SA56004_ADDRESS, &data, 1, reg);
RemoteHighAlarmTemp = data & 0x10; // Bit 4 is Remote High Alarm Temperature Status
RemoteLowAlarmTemp = data & 0x08; // Bit 3 is Remote Low Alarm Temperature Status
if ((RemoteHighAlarmTemp == 0) && (RemoteLowAlarmTemp == 0)) RemoteAlarmTempStatus = 1; // Remote Temperature = OK - within the Alarm min / max values
if (RemoteHighAlarmTemp == 0x10) RemoteAlarmTempStatus = 2; // Remote Temperature above max alarm
if (RemoteLowAlarmTemp == 0x08) RemoteAlarmTempStatus = 0; // Local Temperature below min alarm
I2C_ReadReg(SA56004_ADDRESS, &data, 1, 0x03); // Read Configuration Register in order to check if Bit7 has been set
if (data && 0x80) Temp_Sensor_Write(0x09, data & 0x7F); // Clear Bit 7 (to enable again the ALERT output)
OSTimeDlyHMSM(0, 0, 0, 60); // Delay allows another conversion to be performed before next status reading - Handles all status being cleared when read is performed
return RemoteAlarmTempStatus;
}
/*********************************************************************************************************
* GetRemoteCriticalStatus()
*
* Description : Read Remote Critical Alarm Status
*
* Argument(s) : none.
*
* Return(s) : Remote Critical Alarm Status.
*********************************************************************************************************/
CPU_INT08S GetRemoteCriticalStatus(void)
{
CPU_INT08U RemoteCriticalTemp;
CPU_INT08U RemoteCriticalTempStatus;
CPU_INT08U reg = 0x02;
CPU_INT08U data = 0xFF;
I2C_ReadReg(SA56004_ADDRESS, &data, 1, reg);
RemoteCriticalTemp = data & 0x02; // Bit 1 is Remote Critical Temperature Status
if (RemoteCriticalTemp == 0x00) RemoteCriticalTempStatus = 1; // Remote Temperature is below Critical
if (RemoteCriticalTemp == 0x02) RemoteCriticalTempStatus = 2; // Remote Temperature is above Critical
I2C_ReadReg(SA56004_ADDRESS, &data, 1, 0x03); // Read Configuration Register in order to check if Bit7 has been set
if (data && 0x80) Temp_Sensor_Write(0x09, data & 0x7F); // Clear Bit 7 (to enable again the ALERT output)
OSTimeDlyHMSM(0, 0, 0, 60);
return RemoteCriticalTempStatus; // Delay allows another conversion to be performed before next status reading - Handles all status being cleared when read is performed
}
/*********************************************************************************************************
* GetLocalCriticalStatus()
*
* Description : Read Local Critical Alarm Status
*
* Argument(s) : none.
*
* Return(s) : Local Critical Alarm Status.
*********************************************************************************************************/
CPU_INT08S GetLocalCriticalStatus(void)
{
CPU_INT08U LocalCriticalTemp;
CPU_INT08U LocalCriticalTempStatus;
CPU_INT08U reg = 0x02;
CPU_INT08U data = 0xFF;
I2C_ReadReg(SA56004_ADDRESS, &data, 1, reg);
LocalCriticalTemp = data & 0x01; // Bit 0 is Local Critical Temperature Status
if (LocalCriticalTemp == 0x00) LocalCriticalTempStatus = 1; // Local Temperature is below Critical
if (LocalCriticalTemp == 0x01) LocalCriticalTempStatus = 2; // Local Temperature is above Critical
I2C_ReadReg(SA56004_ADDRESS, &data, 1, 0x03); // Read Configuration Register in order to check if Bit7 has been set
if (data && 0x80) Temp_Sensor_Write(0x09, data & 0x7F); // Clear Bit 7 (to enable again the ALERT output)
OSTimeDlyHMSM(0, 0, 0, 60); // Delay allows another conversion to be performed before next status reading - Handles all status being cleared when read is performed
return LocalCriticalTempStatus;
}
/*********************************************************************************************************
* GetRemoteSensorPresenceStatus()
*
* Description : Read Remote Sensor Presence Status
*
* Argument(s) : none.
*
* Return(s) : Remote Sensor Presence Status.
*********************************************************************************************************/
CPU_INT08S GetRemoteSensorPresenceStatus(void)
{
CPU_INT08U RemoteSensorPresence;
CPU_INT08U RemoteSensorPresenceStatus;
CPU_INT08U reg = 0x02;
CPU_INT08U data = 0xFF;
I2C_ReadReg(SA56004_ADDRESS, &data, 1, reg);
RemoteSensorPresence = data & 0x04; // Bit 2 is Remote Sensor Presence Status
if (RemoteSensorPresence == 0x00) RemoteSensorPresenceStatus = 1; // Remote Temp Sensor is present
if (RemoteSensorPresence == 0x04) RemoteSensorPresenceStatus = 0; // Remote Temp Sensor is not present (open)
OSTimeDlyHMSM(0, 0, 0, 60); // Delay allows another conversion to be performed before next status reading - Handles all status being cleared when read is performed
return RemoteSensorPresenceStatus;
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -