cursada_mc2
Base de control de temperatura para EDU-CIAA-NXP
Loading...
Searching...
No Matches
ds18b20_driver.h
Go to the documentation of this file.
1
6#if !defined(DRIVER_DS18B20_DRIVER_H_)
7#define DRIVER_DS18B20_DRIVER_H_
8
9#include "onewire_driver.h"
10
11#include <stdbool.h>
12#include <stdint.h>
13
15#define DS18B20_SCRATCHPAD_SIZE 9U
17#define DS18B20_CONVERSION_TIME_MS 750U
19#define DS18B20_FAMILY_CODE 0x28U
21#define DS18B20_MAX_DEVICES 8U
31
41
58
62typedef struct {
63 uint8_t rom_code[ONEWIRE_ROM_CODE_SIZE];
67
83
93bool ds18b20_init(ds18b20_driver_t* driver, const onewire_pin_config_t* pin_config);
94
102 const onewire_pin_config_t* pin_config,
103 const uint8_t rom_code[ONEWIRE_ROM_CODE_SIZE]);
104
111uint8_t ds18b20_discover(const onewire_pin_config_t* pin_config,
112 uint8_t rom_codes[][ONEWIRE_ROM_CODE_SIZE],
113 uint8_t max_devices);
114
119
129
140void ds18b20_process(ds18b20_driver_t* driver, uint16_t elapsed_ms);
141
150bool ds18b20_is_busy(const ds18b20_driver_t* driver);
151
156
160bool ds18b20_get_latest_raw(const ds18b20_driver_t* driver, int16_t* raw_temperature);
161
168 float* temperature_celsius);
169
175bool ds18b20_read_scratchpad(ds18b20_driver_t* driver, uint8_t scratchpad[DS18B20_SCRATCHPAD_SIZE]);
176
182bool ds18b20_read_temperature_celsius(ds18b20_driver_t* driver, float* temperature_celsius);
183
189bool ds18b20_read_raw(ds18b20_driver_t* driver, int16_t* raw_temperature);
190
196bool ds18b20_bus_init(ds18b20_bus_driver_t* driver, const onewire_pin_config_t* pin_config);
197
204
211
217void ds18b20_bus_process(ds18b20_bus_driver_t* driver, uint16_t elapsed_ms);
218
224bool ds18b20_bus_is_busy(const ds18b20_bus_driver_t* driver);
225
232
238bool ds18b20_bus_has_valid_sample(const ds18b20_bus_driver_t* driver, uint8_t index);
239
246 uint8_t index,
247 int16_t* raw_temperature);
248
255 uint8_t index,
256 float* temperature_celsius);
257
264 uint8_t index,
265 uint8_t rom_code[ONEWIRE_ROM_CODE_SIZE]);
266
267#endif // DRIVER_DS18B20_DRIVER_H_
uint8_t ds18b20_bus_get_device_count(const ds18b20_bus_driver_t *driver)
Devuelve la cantidad de sensores actualmente descubiertos.
bool ds18b20_init(ds18b20_driver_t *driver, const onewire_pin_config_t *pin_config)
Inicializa el driver DS18B20 sobre el pin indicado.
uint8_t ds18b20_bus_discover(ds18b20_bus_driver_t *driver)
Descubre sensores DS18B20 y actualiza la tabla interna del bus.
bool ds18b20_bus_get_latest_raw(const ds18b20_bus_driver_t *driver, uint8_t index, int16_t *raw_temperature)
Obtiene la ultima temperatura cruda cacheada de un sensor del bus.
ds18b20_bus_state_t
Estado del gestor multi-sensor para un bus 1-Wire compartido.
@ DS18B20_BUS_STATE_IDLE
@ DS18B20_BUS_STATE_READING
@ DS18B20_BUS_STATE_ERROR
@ DS18B20_BUS_STATE_CONVERTING
bool ds18b20_is_present(ds18b20_driver_t *driver)
Verifica si hay un dispositivo presente en el bus del sensor.
bool ds18b20_init_with_rom(ds18b20_driver_t *driver, const onewire_pin_config_t *pin_config, const uint8_t rom_code[ONEWIRE_ROM_CODE_SIZE])
Inicializa un sensor DS18B20 concreto identificado por su ROM.
bool ds18b20_bus_get_rom_code(const ds18b20_bus_driver_t *driver, uint8_t index, uint8_t rom_code[ONEWIRE_ROM_CODE_SIZE])
Copia el codigo ROM de un sensor descubierto en el bus.
bool ds18b20_read_raw(ds18b20_driver_t *driver, int16_t *raw_temperature)
Lee la temperatura cruda del sensor en forma bloqueante.
ds18b20_state_t
Estado interno de la conversion no bloqueante del sensor.
@ DS18B20_STATE_IDLE
@ DS18B20_STATE_CONVERTING
@ DS18B20_STATE_DATA_READY
@ DS18B20_STATE_ERROR
void ds18b20_bus_process(ds18b20_bus_driver_t *driver, uint16_t elapsed_ms)
Avanza la maquina de estados multi-sensor del bus.
void ds18b20_process(ds18b20_driver_t *driver, uint16_t elapsed_ms)
Avanza la maquina de estados no bloqueante del sensor.
bool ds18b20_is_busy(const ds18b20_driver_t *driver)
Indica si hay una conversion en curso.
bool ds18b20_bus_is_busy(const ds18b20_bus_driver_t *driver)
Indica si el bus esta ocupado convirtiendo o leyendo sensores.
bool ds18b20_bus_init(ds18b20_bus_driver_t *driver, const onewire_pin_config_t *pin_config)
Inicializa un bus compartido para varios sensores DS18B20.
bool ds18b20_bus_has_valid_sample(const ds18b20_bus_driver_t *driver, uint8_t index)
Indica si un sensor del bus tiene una muestra valida disponible.
uint8_t ds18b20_discover(const onewire_pin_config_t *pin_config, uint8_t rom_codes[][ONEWIRE_ROM_CODE_SIZE], uint8_t max_devices)
Busca sensores DS18B20 presentes en el bus indicado.
bool ds18b20_start_conversion(ds18b20_driver_t *driver)
Inicia una conversion de temperatura.
bool ds18b20_read_scratchpad(ds18b20_driver_t *driver, uint8_t scratchpad[DS18B20_SCRATCHPAD_SIZE])
Lee el scratchpad completo del sensor.
#define DS18B20_MAX_DEVICES
Cantidad maxima de sensores DS18B20 por bus en esta implementacion.
bool ds18b20_has_valid_sample(const ds18b20_driver_t *driver)
Indica si el driver dispone de una ultima muestra valida.
bool ds18b20_get_latest_temperature_celsius(const ds18b20_driver_t *driver, float *temperature_celsius)
Obtiene la ultima temperatura valida en grados Celsius.
bool ds18b20_read_temperature_celsius(ds18b20_driver_t *driver, float *temperature_celsius)
Lee la temperatura del sensor en grados Celsius en forma bloqueante.
bool ds18b20_bus_get_latest_temperature_celsius(const ds18b20_bus_driver_t *driver, uint8_t index, float *temperature_celsius)
Obtiene la ultima temperatura cacheada de un sensor del bus en Celsius.
bool ds18b20_bus_start_conversion(ds18b20_bus_driver_t *driver)
Inicia una conversion global para todos los sensores del bus.
bool ds18b20_get_latest_raw(const ds18b20_driver_t *driver, int16_t *raw_temperature)
Obtiene la ultima temperatura cruda ya convertida.
#define DS18B20_SCRATCHPAD_SIZE
Tamano del scratchpad del DS18B20.
Interfaz del driver para bus 1-Wire por bit-banging.
#define ONEWIRE_ROM_CODE_SIZE
Tamano del codigo ROM de un dispositivo 1-Wire.
Estado del driver para multiples sensores DS18B20 sobre un mismo bus.
ds18b20_bus_state_t state
onewire_driver_t bus
Datos cacheados de un sensor DS18B20 descubierto en un bus compartido.
int16_t last_raw_temperature
Estado del driver DS18B20 para un sensor individual.
ds18b20_state_t state
int16_t last_raw_temperature
uint16_t conversion_elapsed_ms
onewire_driver_t bus
Estado del driver 1-Wire para un bus individual.
Configuracion fisica del pin usado por el bus 1-Wire.