⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 bsp_temperature.c

📁 嵌入式的tcpip协议栈
💻 C
📖 第 1 页 / 共 2 页
字号:
*
* 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 + -