diff --git a/README.md b/README.md index fb943f1..a61334d 100644 --- a/README.md +++ b/README.md @@ -1,3 +1,97 @@ -# DS18B20_Library +# Библиотека для работы с датчиками температуры DS18B20 по 1-Wire -Библиотека для работы с датчиками температуры Dallas DS18B20 по 1-Wire \ No newline at end of file +--- + +## Описание + +Данная библиотека предоставляет драйвер для работы с цифровыми температурными датчиками DS18B20, подключёнными по однопроводному интерфейсу 1-Wire. Библиотека поддерживает: +- Инициализация шины 1-Wire и обнаружение всех датчиков на шине +- Инициализация датчика по: + - ROM-адресу + - Пользовательским байтам (TH, TL, UserByte3, UserByte4) + - Индексу (порядковому номеру) найденного устройства +- Запуск преобразования температуры у всех или отдельных датчиков с выбором метода ожидания окончания преобразования (по шине или задержкой) +- Чтение температуры и проверка статуса подключения датчика +- Возможность замены потерянного датчика в структуре + +--- + +## Быстрый старт + +### 1. Настройка порта и таймера для 1-Wire (файл `ow_port.h`): +```c +#define OW_GPIO_Port GPIOB +#define OW_Pin_Numb 0 +#define OW_Pin (1 << OW_Pin_Numb) +#define OW_TIM TIM3 +#define OW_TIM_1US_PERIOD 24 +``` + +### 2. Подключение библиотеки и инициализация таймера: +```c +#include "dallas_tools.h" + +MX_TIM_Init(); // Инициализация таймера (например, TIM3) +``` + +### 3. Инициализация шины и поиск датчиков: +```c +Dallas_BusFirstInit(&htim); +``` + +### 4. Инициализация структуры датчика по одному из методов: +```c +DALLAS_SensorHandleTypeDef sens; +// Инициализация по индексу (порядковому номеру найденного датчика) +sens1.Init.init_func = &Dallas_SensorInitByInd; +sens1.Init.InitParam.Ind = 0; + +// Инициализация по ROM-адресу +sens2.Init.init_func = &Dallas_SensorInitByROM; +sens2.Init.InitParam.ROM = rom_address; + +// Инициализация по пользовательским байтам +sens3.Init.init_func = &Dallas_SensorInitByUserBytes; +sens3.Init.InitParam.UserBytes.UserByte1 = 1; +sens3.Init.InitParam.UserBytes.UserByte2 = 2; +sens3.Init.InitParam.UserBytes.UserByte3 = 3; +sens3.Init.InitParam.UserBytes.UserByte4 = 4; +``` + +### 5. Добавление датчика в обработку: +```c +Dallas_AddNewSensors(&hdallas, &sens); +``` + +### 6. Запуск измерения и чтение температуры: +```c +Dallas_StartConvertTAll(&hdallas, DALLAS_WAIT_BUS, 0); +Dallas_ReadTemperature(&sens); +``` + +| Функция | Описание | +| -------------------------------------------------------- | ---------------------------------------------------------- | +| `Dallas_BusFirstInit(&htim)` | Инициализация шины 1-Wire, запуск таймера и поиск датчиков | +| `Dallas_AddNewSensors(&hdallas, &sensor)` | Инициализация структуры датчика и добавление в работу | +| `Dallas_ReplaceLostedSensor(&sensor)` | Замена потерянного датчика на новый, если доступен | +| `Dallas_StartConvertTAll(&hdallas, waitCondition, delay)` | Запуск преобразования температуры на всех датчиках | +| `Dallas_ConvertT(&sensor, waitCondition)` | Запуск преобразования температуры на одном датчике | +| `Dallas_ReadTemperature(&sensor)` | Чтение температуры с датчика | +| `Dallas_IsConnected(&sensor)` | Проверка подключения датчика (чтение scratchpad) | +| `Dallas_WriteUserBytes(&sensor, bytes12, bytes34, mask)` | Запись пользовательских байт в датчик | + + +## Требуемые зависимости + +- Драйвер 1-Wire (`onewire.c/h`, `ow_port.c/h`) +- Драйвер DS18B20 (`ds18b20.c/h`) + +--- + +## Примечания +- Функции работы с датчиками возвращают статус в формате `HAL_StatusTypeDef`. +- Ожидание окончания преобразования температуры настраивается через `DALLAS_WaitConvertionTypeDef`: + - `DALLAS_WAIT_BUS` — ожидание по состоянию линии 1-Wire. + - `DALLAS_WAIT_DELAY` — фиксированная задержка, зависящая от выбранного разрешения. + - `DALLAS_WAIT_NONE` — без ожидания (асинхронный режим). +- При потере связи с датчиком функция `Dallas_IsConnected` помечает датчик как потерянный. Для восстановления работы можно вызвать `Dallas_ReplaceLostedSensor`, она будет искать датчик и пытаться его инициализировать по заданной функции инициализации. \ No newline at end of file