diff --git a/DS18B20/dallas_tools.c b/DS18B20/dallas_tools.c
index 86ef68a..8bd859d 100644
--- a/DS18B20/dallas_tools.c
+++ b/DS18B20/dallas_tools.c
@@ -45,7 +45,7 @@ HAL_StatusTypeDef Dallas_ReplaceLostedSensor(DALLAS_HandleTypeDef *sensor)
}
else
{
- return HAL_OK;
+ return HAL_BUSY; // датчик не потерян
}
}
@@ -201,6 +201,9 @@ HAL_StatusTypeDef Dallas_SensorInitByUserBytes(OneWire_t *onewire, DALLAS_Handle
return result;
}
}
+
+ memset(&sensor->sensROM, 0, DALLAS_ROM_SIZE);
+ memset(&sensor->scratchpad, 0, sizeof(DALLAS_ScratchpadTypeDef));
/* Возвращаем ошибку если не нашли */
return HAL_ERROR;
}
@@ -499,7 +502,7 @@ HAL_StatusTypeDef Dallas_IsConnected(DALLAS_HandleTypeDef *sensor)
}
sensor->isConnected = 0;
- Dallas_ReplaceLostedSensor(sensor);
+// Dallas_ReplaceLostedSensor(sensor);
return HAL_BUSY; // использую busy, чтобы отличать ситуацию от HAL_ERROR
}
}
diff --git a/DS18B20/pch_sensors.c b/DS18B20/pch_sensors.c
index 6656c9e..7f80098 100644
--- a/DS18B20/pch_sensors.c
+++ b/DS18B20/pch_sensors.c
@@ -8,14 +8,47 @@
/* Includes ----------------------------------------------------------------*/
#include "pch_sensors.h"
-
+PCHSens_UnknownSensorsTypeDef UnknownSensors;
/* Declarations and definitions --------------------------------------------*/
PCHSens_ModuleTypeDef module1;
/* Functions ---------------------------------------------------------------*/
+HAL_StatusTypeDef PCHSens_FindUnknownSensors(OneWire_t *onewire, PCHSens_UnknownSensorsTypeDef *unknowns)
+{
+ HAL_StatusTypeDef result;
+ if(onewire == NULL)
+ return HAL_ERROR;
+ if(unknowns == NULL)
+ return HAL_ERROR;
+
+ unknowns->onewire = onewire;
+ unknowns->UnknownCnt = 0;
+ DALLAS_ScratchpadTypeDef scratchpad;
+
+ PCHSens_LocationTypeDef *location = (PCHSens_LocationTypeDef *)&scratchpad.tHighRegister;
+ for(int i = 0; i < onewire->RomCnt; i++)
+ {
+ /* Проверка присутствует ли выбранный датчик на линии */
+ result = DS18B20_ReadScratchpad(onewire, (uint8_t *)&DS.DevAddr[i], (uint8_t *)&scratchpad);
+ if(result != HAL_OK)
+ __NOP();
+
+ if((IS_REG_PCH_LOCATION(location) == 0) ||
+ (IS_REG_PCH_LOCATION(location) == 0) ||
+ (IS_REG_PCH_NUMB(location) == 0) )
+ {
+ unknowns->unknown_sensors[unknowns->UnknownCnt].Init.SensInd = i;
+ unknowns->unknown_sensors[unknowns->UnknownCnt].Init.init_func = &Dallas_SensorInitByInd;
+ result = Dallas_AddNewSensors(onewire, &unknowns->unknown_sensors[unknowns->UnknownCnt++]);
+ if(result != HAL_OK)
+ __NOP();
+ }
+ }
+ return HAL_OK;
+}
-HAL_StatusTypeDef PCHSens_InitNewSensor(OneWire_t *onewire, PCH_SensorTypeDef* sensor, uint64_t ROM, PCHSens_LocationTypeDef *location)
+HAL_StatusTypeDef PCHSens_InitNewSensor(OneWire_t *onewire, PCHSens_SensorTypeDef* sensor, uint64_t ROM, uint16_t location)
{
DALLAS_HandleTypeDef tempsens;
HAL_StatusTypeDef result;
@@ -25,59 +58,75 @@ HAL_StatusTypeDef PCHSens_InitNewSensor(OneWire_t *onewire, PCH_SensorTypeDef* s
return HAL_ERROR;
if(location == NULL)
return HAL_ERROR;
-
- PCHSens_LocationTypeDef initlocation = *location;
-
+
sensor->Location = (PCHSens_LocationTypeDef *)&sensor->sens.scratchpad.tHighRegister;
sensor->sens.Init.ROM = ROM;
- sensor->sens.Init.UserBytes12 = initlocation.all;
+ sensor->sens.Init.UserBytes12 = location;
sensor->sens.Init.init_func = &Dallas_SensorInitByROM;
result = Dallas_AddNewSensors(onewire, &sensor->sens);
if(result != HAL_OK)
+ {
+ sensor->not_found = 1;
return result;
+ }
- result = Dallas_WriteUserBytes(&sensor->sens, initlocation.all, 0, DALLAS_USER_BYTE_12);
+ result = Dallas_WriteUserBytes(&sensor->sens, location, 0, DALLAS_USER_BYTE_12);
if(result != HAL_OK)
return result;
-
+
sensor->sens.Init.init_func = &Dallas_SensorInitByUserBytes;
- return Dallas_AddNewSensors(onewire, &sensor->sens);
+ result = Dallas_AddNewSensors(onewire, &sensor->sens);
+ if(result == HAL_OK)
+ sensor->not_found = 0;
+ else
+ sensor->not_found = 1;
+
+ return result;
}
-HAL_StatusTypeDef PCHSens_FindSensor(OneWire_t *onewire, PCH_SensorTypeDef* sensor, PCHSens_LocationTypeDef *location)
-{
+
+
+HAL_StatusTypeDef PCHSens_AddSensor(OneWire_t *onewire, PCHSens_SensorTypeDef* sensor, uint16_t location)
+{
+ HAL_StatusTypeDef result;
if(onewire == NULL)
return HAL_ERROR;
if(sensor == NULL)
return HAL_ERROR;
if(location == NULL)
return HAL_ERROR;
-
- PCHSens_LocationTypeDef initlocation = *location;
-
+
sensor->Location = (PCHSens_LocationTypeDef *)&sensor->sens.scratchpad.tHighRegister;
- sensor->sens.Init.UserBytes12 = initlocation.all;
+ sensor->sens.Init.UserBytes12 = location;
sensor->sens.Init.init_func = &Dallas_SensorInitByUserBytes;
-
- return Dallas_AddNewSensors(onewire, &sensor->sens);
+
+ result = Dallas_AddNewSensors(onewire, &sensor->sens);
+
+ if(result == HAL_OK)
+ sensor->not_found = 0;
+ else
+ sensor->not_found = 1;
+
+ return result;
}
-HAL_StatusTypeDef PCHSens_FindModule(OneWire_t *onewire, PCHSens_ModuleTypeDef* module, PCHSens_LocationTypeDef *location, uint8_t init)
+HAL_StatusTypeDef PCHSens_InitModule(OneWire_t *onewire, PCHSens_ModuleTypeDef* module, uint16_t location, uint8_t init)
{
if(onewire == NULL)
return HAL_ERROR;
if(module == NULL)
return HAL_ERROR;
- PCHSens_LocationTypeDef initlocation = *location;
+ PCHSens_LocationTypeDef initlocation;
+ initlocation.all = location;
module->onewire = onewire;
module->refLocation = initlocation;
@@ -85,54 +134,109 @@ HAL_StatusTypeDef PCHSens_FindModule(OneWire_t *onewire, PCHSens_ModuleTypeDef*
if(init == 0)
{
initlocation.location.Location = 0;
- PCHSens_FindSensor(onewire, &module->sens1, &initlocation);
+ PCHSens_AddSensor(onewire, &module->sens1, initlocation.all);
initlocation.location.Location = 1;
- PCHSens_FindSensor(onewire, &module->sens2, &initlocation);
+ PCHSens_AddSensor(onewire, &module->sens2, initlocation.all);
initlocation.location.Location = 2;
- PCHSens_FindSensor(onewire, &module->sens3, &initlocation);
+ PCHSens_AddSensor(onewire, &module->sens3, initlocation.all);
initlocation.location.Location = 3;
- PCHSens_FindSensor(onewire, &module->sens4, &initlocation);
+ PCHSens_AddSensor(onewire, &module->sens4, initlocation.all);
}
else
{
uint64_t ROM = 0x28366a48f6563c8d;
initlocation.location.Location = 0;
- PCHSens_InitNewSensor(onewire, &module->sens1, ROM, &initlocation);
+ PCHSens_InitNewSensor(onewire, &module->sens1, ROM, initlocation.all);
ROM = 0x28CF5248F6BB3C2F;
initlocation.location.Location = 1;
- PCHSens_InitNewSensor(onewire, &module->sens2, ROM, &initlocation);
+ PCHSens_InitNewSensor(onewire, &module->sens2, ROM, initlocation.all);
ROM = 0x28876D60060000CD;
initlocation.location.Location = 2;
- PCHSens_InitNewSensor(onewire, &module->sens3, ROM, &initlocation);
+ PCHSens_InitNewSensor(onewire, &module->sens3, ROM, initlocation.all);
ROM = 0;
initlocation.location.Location = 3;
- PCHSens_InitNewSensor(onewire, &module->sens4, ROM, &initlocation);
+ PCHSens_InitNewSensor(onewire, &module->sens4, ROM, initlocation.all);
}
return HAL_OK;
}
-HAL_StatusTypeDef PCHSens_ReadModuleTemperature(PCHSens_ModuleTypeDef *module)
+HAL_StatusTypeDef PCHSens_ReadTemperature(PCHSens_ModuleTypeDef *module)
{
HAL_StatusTypeDef result;
+ if(module == NULL)
+ return HAL_ERROR;
+
result = Dallas_StartConvertTAll(module->onewire, DALLAS_WAIT_BUS, 0);
result = Dallas_ReadTemperature(&module->sens1.sens);
+ if(result != HAL_OK)
+ PCHSens_CheckSensor(module->onewire, &module->sens1);
+
result = Dallas_ReadTemperature(&module->sens2.sens);
+ if(result != HAL_OK)
+ PCHSens_CheckSensor(module->onewire, &module->sens1);
+
result = Dallas_ReadTemperature(&module->sens3.sens);
+ if(result != HAL_OK)
+ PCHSens_CheckSensor(module->onewire, &module->sens1);
+
result = Dallas_ReadTemperature(&module->sens4.sens);
+ if(result != HAL_OK)
+ PCHSens_CheckSensor(module->onewire, &module->sens1);
return result;
}
-void Dallas_FirstInit(void)
+
+HAL_StatusTypeDef PCHSens_CheckSensor(OneWire_t *onewire, PCHSens_SensorTypeDef* sensor)
+{
+ HAL_StatusTypeDef result;
+ PCHSens_LocationTypeDef initlocation;
+ unsigned unknow_sensors_flag = 0;
+
+ if(sensor == NULL)
+ return HAL_ERROR;
+ if(sensor->sens.isInitialized == 0)
+ return HAL_ERROR;
+
+ if((sensor->sens.isLost == 1))
+ {
+ initlocation.location.Location = 0;
+ if(Dallas_ReplaceLostedSensor(&sensor->sens) != HAL_OK)
+ {
+ sensor->not_found = 1;
+ }
+ else
+ {
+ sensor->not_found = 0;
+ }
+ }
+ return HAL_OK;
+}
+
+
+HAL_StatusTypeDef PCHSens_DefineUnknownSensor(PCHSens_UnknownSensorsTypeDef *unknowns, PCHSens_SensorTypeDef *sensor)
+{
+ HAL_StatusTypeDef result;
+ if(unknowns->UnknownCnt == 0)
+ return HAL_OK;
+
+ if((unknowns->ROMtoDefine != NULL) && (unknowns->LocationtoDefine.all != NULL))
+ {
+ result = PCHSens_InitNewSensor(unknowns->onewire, sensor, unknowns->ROMtoDefine, unknowns->LocationtoDefine.all);
+ }
+ return HAL_OK;
+}
+
+void PCHSens_FirstInit(void)
{
int init_find = 0;
OW.DataPin = DS_Pin;
@@ -142,12 +246,9 @@ void Dallas_FirstInit(void)
OneWire_Init(&OW);
DS18B20_Search(&DS, &OW);
+ PCHSens_InitModule(&OW, &module1, REG_PCH_NUMB_11|REG_PCH_DIODE_NUMB_1, init_find);
- PCHSens_LocationTypeDef location;
- location.all = REG_PCH_NUMB_11|REG_PCH_DIODE_NUMB_1;
- PCHSens_FindModule(&OW, &module1, &location, init_find);
-
-
+ PCHSens_FindUnknownSensors(&OW, &UnknownSensors);
// Dallas_SensorInitByInd(&OW, &AllSens.outdoor, 0);
// Dallas_SensorInitByInd(&OW, &AllSens.indoor, 2);
// Dallas_SensorInitByInd(&OW, &AllSens.bathroom, 1);
diff --git a/DS18B20/pch_sensors.h b/DS18B20/pch_sensors.h
index 55eda97..eb8ad8c 100644
--- a/DS18B20/pch_sensors.h
+++ b/DS18B20/pch_sensors.h
@@ -16,20 +16,20 @@
/* Declarations and definitions ---------------------------------------------*/
-/* Позиции параметров в ROM */
+/* Позиции параметров в UserBytes */
#define REG_SENS_LOCATION_Pos (0) /*!< @brief Позиция параметра "Локация внутри модуля" */
#define REG_PCH_LOCATION_Pos (8) /*!< @brief Позиция параметра "Расположение в ПЧ" */
-#define REG_PCH_DIOD_PHASE_Pos (10) /*!< @brief Позиция параметра "Диодный или фазный модуль" */
-#define REG_PCH_MODULE_NUMB_Pos (8) /*!< @brief Позиция параметра "Порядковый номер диодного/фазного модуля" */
+#define REG_PCH_DIOD_PHASE_Pos (10) /*!< @brief Позиция параметра "Диодный или фазный модуль" @ref REG_PCH_LOCATION_Pos */
+#define REG_PCH_MODULE_NUMB_Pos (8) /*!< @brief Позиция параметра "Порядковый номер диодного/фазного модуля" @ref REG_PCH_LOCATION_Pos */
#define REG_PCH_NUMB_Pos (11) /*!< @brief Позиция параметра "Преобразователь частоты" */
-#define REG_PCH_NUMB_DIGIT_1_Pos (13) /*!< @brief Позиция параметра "Первая цифра номера преобразователя частоты" */
-#define REG_PCH_NUMB_DIGIT_2_Pos (11) /*!< @brief Позиция параметра "Вторая цифра номера преобразователя частоты" */
+#define REG_PCH_NUMB_DIGIT_1_Pos (13) /*!< @brief Позиция параметра "Первая цифра номера преобразователя частоты" @ref REG_PCH_NUMB_Pos */
+#define REG_PCH_NUMB_DIGIT_2_Pos (11) /*!< @brief Позиция параметра "Вторая цифра номера преобразователя частоты" @ref REG_PCH_NUMB_Pos */
#define REG_ZIP_Pos (15) /*!< @brief Позиция параметра "ЗИП/не ЗИП" */
-/* Маски параметров в ROM */
+/* Маски параметров в UserBytes */
#define REG_SENS_LOCATION_Mask ((uint16_t)0x3 << REG_SENS_LOCATION_Pos) /*!< @brief Маска параметра "Локация внутри модуля" */
#define REG_PCH_LOCATION_Mask ((uint16_t)0x7 << REG_PCH_LOCATION_Pos) /*!< @brief Маска параметра "Расположение в ПЧ" */
@@ -42,7 +42,7 @@
#define REG_ZIP_Mask ((uint16_t)0x1 << REG_ZIP_Pos) /*!< @brief Маска параметра "ЗИП/не ЗИП" */
-/* Варианты параметров в ROM */
+/* Варианты параметров в UserBytes */
#define REG_PCH_NUMB_11 ((1 << REG_PCH_NUMB_DIGIT_1_Pos) | (1 << REG_PCH_NUMB_DIGIT_2_Pos))
#define REG_PCH_NUMB_12 ((1 << REG_PCH_NUMB_DIGIT_1_Pos) | (2 << REG_PCH_NUMB_DIGIT_2_Pos))
#define REG_PCH_NUMB_13 ((1 << REG_PCH_NUMB_DIGIT_1_Pos) | (3 << REG_PCH_NUMB_DIGIT_2_Pos))
@@ -57,19 +57,50 @@
#define REG_PCH_PHASE_NUMB_2 ((1 << REG_PCH_DIOD_PHASE_Pos) | (2 << REG_PCH_MODULE_NUMB_Pos))
#define REG_PCH_PHASE_NUMB_3 ((1 << REG_PCH_DIOD_PHASE_Pos) | (3 << REG_PCH_MODULE_NUMB_Pos))
-/* Получить параметр из ROM */
-#define GET_REG_SENS_LOCATION(_REG_) ((_REG_) & REG_SENS_LOCATION_Mask) /*!< @brief Маска параметра "Локация внутри модуля" */
+/* Получить параметр из UserBytes */
+#define GET_REG_SENS_LOCATION(_REG_) ((_REG_) & REG_SENS_LOCATION_Mask) /*!< @brief Получить параметр "Локация внутри модуля" */
-#define GET_REG_PCH_LOCATION(_REG_) ((_REG_) & REG_PCH_LOCATION_Mask) /*!< @brief Маска параметра "Расположение в ПЧ" */
-#define GET_REG_PCH_DIOD_PHASE(_REG_) ((_REG_) & REG_PCH_DIOD_PHASE_Mask) /*!< @brief Маска параметра "Диодный или фазный модуль" */
-#define GET_REG_PCH_MODULE_NUMB(_REG_) ((_REG_) & REG_PCH_MODULE_NUMB_Mask) /*!< @brief Маска параметра "Порядковый номер диодного/фазного модуля" */
+#define GET_REG_PCH_LOCATION(_REG_) ((_REG_) & REG_PCH_LOCATION_Mask) /*!< @brief Получить параметр "Расположение в ПЧ" */
+#define GET_REG_PCH_DIOD_PHASE(_REG_) ((_REG_) & REG_PCH_DIOD_PHASE_Mask) /*!< @brief Получить параметр "Диодный или фазный модуль" */
+#define GET_REG_PCH_MODULE_NUMB(_REG_) ((_REG_) & REG_PCH_MODULE_NUMB_Mask) /*!< @brief Получить параметр "Порядковый номер диодного/фазного модуля" */
-#define GET_REG_PCH_NUMB(_REG_) ((_REG_) & REG_PCH_NUMB_Mask) /*!< @brief Маска параметра "Преобразователь частоты" */
-#define GET_REG_PCH_NUMB_DIGIT_1(_REG_) ((_REG_) & REG_PCH_NUMB_DIGIT_1_Mask) /*!< @brief Маска параметра "Первая цифра номера преобразователя частоты" */
-#define GET_REG_PCH_NUMB_DIGIT_2(_REG_) ((_REG_) & REG_PCH_NUMB_DIGIT_2_Mask) /*!< @brief Маска параметра "Вторая цифра номера преобразователя частоты" */
+#define GET_REG_PCH_NUMB(_REG_) ((_REG_) & REG_PCH_NUMB_Mask) /*!< @brief Получить параметр "Преобразователь частоты" */
+#define GET_REG_PCH_NUMB_DIGIT_1(_REG_) ((_REG_) & REG_PCH_NUMB_DIGIT_1_Mask) /*!< @brief Получить параметр "Первая цифра номера преобразователя частоты" */
+#define GET_REG_PCH_NUMB_DIGIT_2(_REG_) ((_REG_) & REG_PCH_NUMB_DIGIT_2_Mask) /*!< @brief Получить параметр "Вторая цифра номера преобразователя частоты" */
-#define GET_REG_ZIP(_REG_) ((_REG_) & REG_ZIP_Mask) /*!< @brief Маска параметра "ЗИП/не ЗИП" */
+#define GET_REG_ZIP(_REG_) ((_REG_) & REG_ZIP_Mask) /*!< @brief Получить параметр "ЗИП/не ЗИП" */
+/* Диапазоны параметров из UserBytes */
+#define REG_SENS_LOCATION_MAX 4
+#define REG_SENS_LOCATION_MIN 1
+#define REG_PCH_DIOD_PHASE_MAX 1
+#define REG_PCH_DIOD_PHASE_MIN 0
+#define REG_PCH_MODULE_NUMB_MAX 3
+#define REG_PCH_MODULE_NUMB_MIN 0
+#define REG_PCH_NUMB_DIGIT_1_MAX 3
+#define REG_PCH_NUMB_DIGIT_1_MIN 1
+#define REG_PCH_NUMB_DIGIT_2_MAX 2
+#define REG_PCH_NUMB_DIGIT_2_MIN 1
+
+
+/** @brief Получить параметр "Локация внутри модуля" */
+#define IS_REG_SENS_LOCATION(_REG_) (((_REG_)->location.Location <= REG_SENS_LOCATION_MAX) && ((_REG_)->location.Location >= REG_SENS_LOCATION_MIN))
+
+/*!< @brief Получить параметр "Расположение в ПЧ" */
+#define IS_REG_PCH_LOCATION(_REG_) (IS_REG_PCH_DIOD_PHASE(_REG_) && IS_REG_PCH_MODULE_NUMB(_REG_))
+/*!< @brief Получить параметр "Диодный или фазный модуль" */
+#define IS_REG_PCH_DIOD_PHASE(_REG_) (((_REG_)->location.DiodeOrPhase <= REG_PCH_DIOD_PHASE_MAX) && ((_REG_)->location.DiodeOrPhase >= REG_PCH_DIOD_PHASE_MIN))
+/*!< @brief Получить параметр "Порядковый номер диодного/фазного модуля" */
+#define IS_REG_PCH_MODULE_NUMB(_REG_) (((_REG_)->location.ModuleNumb <= REG_PCH_MODULE_NUMB_MAX) && ((_REG_)->location.ModuleNumb >= REG_PCH_MODULE_NUMB_MIN))
+
+/*!< @brief Получить параметр "Преобразователь частоты" */
+#define IS_REG_PCH_NUMB(_REG_) (IS_REG_PCH_NUMB_DIGIT_1(_REG_) && IS_REG_PCH_NUMB_DIGIT_2(_REG_))
+/*!< @brief Получить параметр "Первая цифра номера преобразователя частоты" */
+#define IS_REG_PCH_NUMB_DIGIT_1(_REG_) (((_REG_)->location.PCHdig1 <= REG_PCH_NUMB_DIGIT_1_MAX) && ((_REG_)->location.PCHdig1 >= REG_PCH_NUMB_DIGIT_1_MIN))
+/*!< @brief Получить параметр "Вторая цифра номера преобразователя частоты" s*/
+#define IS_REG_PCH_NUMB_DIGIT_2(_REG_) (((_REG_)->location.PCHdig2 <= REG_PCH_NUMB_DIGIT_2_MAX) && ((_REG_)->location.PCHdig2 >= REG_PCH_NUMB_DIGIT_2_MIN))
+/*!< @brief Получить параметр "ЗИП/не ЗИП" */
+#define IS_REG_ZIP(_REG_) (GET_REG_ZIP(_REG_))
typedef union
{
@@ -91,27 +122,41 @@ typedef struct
{
DALLAS_HandleTypeDef sens;
PCHSens_LocationTypeDef *Location;
-}PCH_SensorTypeDef;
+ unsigned not_found:1;
+}PCHSens_SensorTypeDef;
typedef struct
{
OneWire_t *onewire;
- PCH_SensorTypeDef sens1;
- PCH_SensorTypeDef sens2;
- PCH_SensorTypeDef sens3;
- PCH_SensorTypeDef sens4;
+ PCHSens_SensorTypeDef sens1;
+ PCHSens_SensorTypeDef sens2;
+ PCHSens_SensorTypeDef sens3;
+ PCHSens_SensorTypeDef sens4;
+
+ PCHSens_LocationTypeDef refLocation;
- PCHSens_LocationTypeDef refLocation;
}PCHSens_ModuleTypeDef;
extern PCHSens_ModuleTypeDef module1;
+typedef struct
+{
+ OneWire_t *onewire;
+
+ DALLAS_HandleTypeDef unknown_sensors[DS18B20_DEVICE_AMOUNT];
+ uint8_t UnknownCnt;
+ uint64_t ROMtoDefine;
+ PCHSens_LocationTypeDef LocationtoDefine;
+}PCHSens_UnknownSensorsTypeDef;
+
/* Functions ---------------------------------------------------------------*/
-HAL_StatusTypeDef PCHSens_InitNewSensor(OneWire_t *onewire, PCH_SensorTypeDef* sensor, uint64_t ROM, PCHSens_LocationTypeDef *location);
-HAL_StatusTypeDef PCHSens_FindSensor(OneWire_t *onewire, PCH_SensorTypeDef* sensor, PCHSens_LocationTypeDef *location);
-HAL_StatusTypeDef PCHSens_FindModule(OneWire_t *onewire, PCHSens_ModuleTypeDef* module, PCHSens_LocationTypeDef *location, uint8_t init);
-HAL_StatusTypeDef PCHSens_ReadModuleTemperature(PCHSens_ModuleTypeDef *module);
+HAL_StatusTypeDef PCHSens_FindUnknownSensors(OneWire_t *onewire, PCHSens_UnknownSensorsTypeDef *unknowns);
+HAL_StatusTypeDef PCHSens_InitNewSensor(OneWire_t *onewire, PCHSens_SensorTypeDef* sensor, uint64_t ROM, uint16_t location);
+HAL_StatusTypeDef PCHSens_AddSensor(OneWire_t *onewire, PCHSens_SensorTypeDef* sensor, uint16_t location);
+HAL_StatusTypeDef PCHSens_InitModule(OneWire_t *onewire, PCHSens_ModuleTypeDef* module, uint16_t location, uint8_t init);
+HAL_StatusTypeDef PCHSens_ReadTemperature(PCHSens_ModuleTypeDef *module);
+HAL_StatusTypeDef PCHSens_CheckSensor(OneWire_t *onewire, PCHSens_SensorTypeDef* sensor);
-void Dallas_FirstInit(void);
+void PCHSens_FirstInit(void);
#endif // #ifndef PCH_SENSORS_H
\ No newline at end of file
diff --git a/test_project/Core/Src/main.c b/test_project/Core/Src/main.c
index 694b797..913b6ec 100644
--- a/test_project/Core/Src/main.c
+++ b/test_project/Core/Src/main.c
@@ -96,14 +96,14 @@ int main(void)
DwtInit();
/* Set parameter and initialize DS18B20 */
/* Initialize OneWire and reset all data */
- Dallas_FirstInit();
+ PCHSens_FirstInit();
/* USER CODE END 2 */
/* Infinite loop */
/* USER CODE BEGIN WHILE */
while (1)
{
- PCHSens_ReadModuleTemperature(&module1);
+ PCHSens_ReadTemperature(&module1);
// Dallas_ReadAll();
/* Start temperature conversion on all devices on one bus */
// DS18B20_StartConvTAll(&OW);
diff --git a/test_project/MDK-ARM/ds18b20.uvoptx b/test_project/MDK-ARM/ds18b20.uvoptx
index 66bd40e..a5bf29f 100644
--- a/test_project/MDK-ARM/ds18b20.uvoptx
+++ b/test_project/MDK-ARM/ds18b20.uvoptx
@@ -145,43 +145,10 @@
0
ST-LINKIII-KEIL_SWO
- -U53FF72064980555724221187 -O2254 -SF10000 -C0 -A0 -I0 -HNlocalhost -HP7184 -P1 -N00("ARM CoreSight SW-DP (ARM Core") -D00(1BA01477) -L00(0) -TO131090 -TC10000000 -TT10000000 -TP21 -TDS8007 -TDT0 -TDC1F -TIEFFFFFFFF -TIP8 -FO7 -FD20000000 -FC800 -FN1 -FF0STM32F10x_128.FLM -FS08000000 -FL08000 -FP0($$Device:STM32F103C6$Flash\STM32F10x_128.FLM) -WA0 -WE0 -WVCE4 -WS2710 -WM0 -WP2
+ -U53FF72064980555724221187 -O2254 -SF10000 -C0 -A0 -I0 -HNlocalhost -HP7184 -P1 -N00("ARM CoreSight SW-DP (ARM Core") -D00(2BA01477) -L00(0) -TO131090 -TC10000000 -TT10000000 -TP21 -TDS8007 -TDT0 -TDC1F -TIEFFFFFFFF -TIP8 -FO7 -FD20000000 -FC800 -FN1 -FF0STM32F10x_128.FLM -FS08000000 -FL08000 -FP0($$Device:STM32F103C6$Flash\STM32F10x_128.FLM) -WA0 -WE0 -WVCE4 -WS2710 -WM0 -WP2
-
-
- 0
- 0
- 294
- 1
- 134220332
- 0
- 0
- 0
- 0
- 0
- 1
- ..\..\DS18B20\dallas_tools.c
-
- \\ds18b20\../../DS18B20/dallas_tools.c\294
-
-
- 1
- 0
- 291
- 1
- 0
- 0
- 0
- 0
- 0
- 0
- 0
- ..\..\DS18B20\dallas_tools.c
-
-
-
-
+
0