|
cursada_mc2
Base de control de temperatura para EDU-CIAA-NXP
|
Implementacion del driver para sensor de temperatura DS18B20. More...
Include dependency graph for ds18b20_driver.c:Go to the source code of this file.
Macros | |
| #define | DS18B20_CMD_CONVERT_T 0x44U |
| #define | DS18B20_CMD_READ_SCRATCHPAD 0xBEU |
Functions | |
| static uint8_t | ds18b20_crc8 (const uint8_t *data, uint8_t length) |
| static bool | ds18b20_crc8_is_valid (const uint8_t *data, uint8_t length) |
| static void | ds18b20_reset_state (ds18b20_driver_t *driver) |
| static bool | ds18b20_begin_command (ds18b20_driver_t *driver, uint8_t command) |
| static bool | ds18b20_bus_begin_command (const onewire_driver_t *bus, const uint8_t rom_code[ONEWIRE_ROM_CODE_SIZE], uint8_t command) |
| static bool | ds18b20_finish_conversion (ds18b20_driver_t *driver) |
| static bool | ds18b20_bus_read_raw (const onewire_driver_t *bus, const uint8_t rom_code[ONEWIRE_ROM_CODE_SIZE], int16_t *raw_temperature) |
| bool | ds18b20_init (ds18b20_driver_t *driver, const onewire_pin_config_t *pin_config) |
| Inicializa el driver DS18B20 sobre el pin indicado. | |
| 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. | |
| 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_is_present (ds18b20_driver_t *driver) |
| Verifica si hay un dispositivo presente en el bus del sensor. | |
| bool | ds18b20_start_conversion (ds18b20_driver_t *driver) |
| Inicia una conversion de temperatura. | |
| 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_has_valid_sample (const ds18b20_driver_t *driver) |
| Indica si el driver dispone de una ultima muestra valida. | |
| bool | ds18b20_get_latest_raw (const ds18b20_driver_t *driver, int16_t *raw_temperature) |
| Obtiene la ultima temperatura cruda ya convertida. | |
| 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_scratchpad (ds18b20_driver_t *driver, uint8_t scratchpad[DS18B20_SCRATCHPAD_SIZE]) |
| Lee el scratchpad completo del sensor. | |
| bool | ds18b20_read_raw (ds18b20_driver_t *driver, int16_t *raw_temperature) |
| Lee la temperatura cruda del sensor en forma bloqueante. | |
| 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_init (ds18b20_bus_driver_t *driver, const onewire_pin_config_t *pin_config) |
| Inicializa un bus compartido para varios sensores DS18B20. | |
| uint8_t | ds18b20_bus_discover (ds18b20_bus_driver_t *driver) |
| Descubre sensores DS18B20 y actualiza la tabla interna del bus. | |
| bool | ds18b20_bus_start_conversion (ds18b20_bus_driver_t *driver) |
| Inicia una conversion global para todos los sensores del bus. | |
| void | ds18b20_bus_process (ds18b20_bus_driver_t *driver, uint16_t elapsed_ms) |
| Avanza la maquina de estados multi-sensor del bus. | |
| bool | ds18b20_bus_is_busy (const ds18b20_bus_driver_t *driver) |
| Indica si el bus esta ocupado convirtiendo o leyendo sensores. | |
| uint8_t | ds18b20_bus_get_device_count (const ds18b20_bus_driver_t *driver) |
| Devuelve la cantidad de sensores actualmente descubiertos. | |
| 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. | |
| 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. | |
| 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_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. | |
| #define DS18B20_CMD_CONVERT_T 0x44U |
Definition at line 12 of file ds18b20_driver.c.
| #define DS18B20_CMD_READ_SCRATCHPAD 0xBEU |
Definition at line 13 of file ds18b20_driver.c.
|
static |
Definition at line 48 of file ds18b20_driver.c.
References ds18b20_driver_t::bus, ds18b20_driver_t::initialized, onewire_match_rom(), onewire_reset(), onewire_skip_rom(), onewire_write_byte(), ds18b20_driver_t::rom_code, and ds18b20_driver_t::use_match_rom.
Referenced by ds18b20_read_scratchpad(), and ds18b20_start_conversion().
|
static |
Definition at line 67 of file ds18b20_driver.c.
References onewire_driver_t::initialized, onewire_match_rom(), onewire_reset(), onewire_skip_rom(), and onewire_write_byte().
Referenced by ds18b20_bus_read_raw(), and ds18b20_bus_start_conversion().
| uint8_t ds18b20_bus_discover | ( | ds18b20_bus_driver_t * | driver | ) |
Esta variante no se usa en el firmware actual.
Definition at line 359 of file ds18b20_driver.c.
References ds18b20_bus_driver_t::bus, ds18b20_bus_driver_t::conversion_elapsed_ms, ds18b20_bus_driver_t::current_index, ds18b20_bus_driver_t::device_count, ds18b20_bus_driver_t::devices, DS18B20_BUS_STATE_IDLE, ds18b20_crc8_is_valid(), DS18B20_FAMILY_CODE, DS18B20_MAX_DEVICES, ds18b20_bus_driver_t::initialized, ds18b20_device_t::last_raw_temperature, ONEWIRE_ROM_CODE_SIZE, onewire_search_roms(), ds18b20_device_t::rom_code, ds18b20_device_t::sample_valid, and ds18b20_bus_driver_t::state.
| uint8_t ds18b20_bus_get_device_count | ( | const ds18b20_bus_driver_t * | driver | ) |
Esta variante no se usa en el firmware actual.
Definition at line 467 of file ds18b20_driver.c.
References ds18b20_bus_driver_t::device_count, and ds18b20_bus_driver_t::initialized.
| bool ds18b20_bus_get_latest_raw | ( | const ds18b20_bus_driver_t * | driver, |
| uint8_t | index, | ||
| int16_t * | raw_temperature | ||
| ) |
Esta variante no se usa en el firmware actual.
Definition at line 485 of file ds18b20_driver.c.
References ds18b20_bus_driver_t::device_count, ds18b20_bus_driver_t::devices, ds18b20_bus_driver_t::initialized, ds18b20_device_t::last_raw_temperature, and ds18b20_device_t::sample_valid.
| bool ds18b20_bus_get_latest_temperature_celsius | ( | const ds18b20_bus_driver_t * | driver, |
| uint8_t | index, | ||
| float * | temperature_celsius | ||
| ) |
Esta variante no se usa en el firmware actual.
Definition at line 498 of file ds18b20_driver.c.
References ds18b20_bus_driver_t::devices, ds18b20_bus_has_valid_sample(), and ds18b20_device_t::last_raw_temperature.
| bool ds18b20_bus_get_rom_code | ( | const ds18b20_bus_driver_t * | driver, |
| uint8_t | index, | ||
| uint8_t | rom_code[ONEWIRE_ROM_CODE_SIZE] | ||
| ) |
Esta variante no se usa en el firmware actual.
Definition at line 510 of file ds18b20_driver.c.
References ds18b20_bus_driver_t::device_count, ds18b20_bus_driver_t::devices, ds18b20_bus_driver_t::initialized, ONEWIRE_ROM_CODE_SIZE, and ds18b20_device_t::rom_code.
| bool ds18b20_bus_has_valid_sample | ( | const ds18b20_bus_driver_t * | driver, |
| uint8_t | index | ||
| ) |
Esta variante no se usa en el firmware actual.
Definition at line 476 of file ds18b20_driver.c.
References ds18b20_bus_driver_t::device_count, ds18b20_bus_driver_t::devices, ds18b20_bus_driver_t::initialized, and ds18b20_device_t::sample_valid.
Referenced by ds18b20_bus_get_latest_temperature_celsius().
| bool ds18b20_bus_init | ( | ds18b20_bus_driver_t * | driver, |
| const onewire_pin_config_t * | pin_config | ||
| ) |
Esta variante no se usa en el firmware actual.
Definition at line 340 of file ds18b20_driver.c.
References ds18b20_bus_driver_t::bus, ds18b20_bus_driver_t::conversion_elapsed_ms, ds18b20_bus_driver_t::current_index, ds18b20_bus_driver_t::device_count, ds18b20_bus_driver_t::devices, DS18B20_BUS_STATE_IDLE, ds18b20_bus_driver_t::initialized, onewire_init(), and ds18b20_bus_driver_t::state.
| bool ds18b20_bus_is_busy | ( | const ds18b20_bus_driver_t * | driver | ) |
Esta variante no se usa en el firmware actual.
Definition at line 457 of file ds18b20_driver.c.
References DS18B20_BUS_STATE_CONVERTING, DS18B20_BUS_STATE_READING, ds18b20_bus_driver_t::initialized, and ds18b20_bus_driver_t::state.
| void ds18b20_bus_process | ( | ds18b20_bus_driver_t * | driver, |
| uint16_t | elapsed_ms | ||
| ) |
Esta variante no se usa en el firmware actual.
Definition at line 409 of file ds18b20_driver.c.
References ds18b20_bus_driver_t::bus, ds18b20_bus_driver_t::conversion_elapsed_ms, ds18b20_bus_driver_t::current_index, ds18b20_bus_driver_t::device_count, ds18b20_bus_driver_t::devices, ds18b20_bus_read_raw(), DS18B20_BUS_STATE_CONVERTING, DS18B20_BUS_STATE_ERROR, DS18B20_BUS_STATE_IDLE, DS18B20_BUS_STATE_READING, DS18B20_CONVERSION_TIME_MS, ds18b20_bus_driver_t::initialized, ds18b20_device_t::last_raw_temperature, ds18b20_device_t::rom_code, ds18b20_device_t::sample_valid, and ds18b20_bus_driver_t::state.
|
static |
Definition at line 105 of file ds18b20_driver.c.
References ds18b20_bus_begin_command(), DS18B20_CMD_READ_SCRATCHPAD, ds18b20_crc8_is_valid(), DS18B20_SCRATCHPAD_SIZE, onewire_driver_t::initialized, and onewire_read_byte().
Referenced by ds18b20_bus_process().
| bool ds18b20_bus_start_conversion | ( | ds18b20_bus_driver_t * | driver | ) |
Esta variante no se usa en el firmware actual.
Definition at line 392 of file ds18b20_driver.c.
References ds18b20_bus_driver_t::bus, ds18b20_bus_driver_t::conversion_elapsed_ms, ds18b20_bus_driver_t::current_index, ds18b20_bus_driver_t::device_count, ds18b20_bus_begin_command(), DS18B20_BUS_STATE_CONVERTING, DS18B20_BUS_STATE_ERROR, DS18B20_CMD_CONVERT_T, ds18b20_bus_driver_t::initialized, and ds18b20_bus_driver_t::state.
|
static |
Definition at line 15 of file ds18b20_driver.c.
Referenced by ds18b20_crc8_is_valid().
|
static |
Definition at line 35 of file ds18b20_driver.c.
References ds18b20_crc8().
Referenced by ds18b20_bus_discover(), ds18b20_bus_read_raw(), ds18b20_discover(), ds18b20_init_with_rom(), and ds18b20_read_scratchpad().
| uint8_t ds18b20_discover | ( | const onewire_pin_config_t * | pin_config, |
| uint8_t | rom_codes[][ONEWIRE_ROM_CODE_SIZE], | ||
| uint8_t | max_devices | ||
| ) |
Esta variante no se usa en el firmware actual, pero se conserva como parte de la API del driver.
Definition at line 173 of file ds18b20_driver.c.
References ds18b20_crc8_is_valid(), DS18B20_FAMILY_CODE, onewire_init(), ONEWIRE_ROM_CODE_SIZE, and onewire_search_roms().
|
static |
Definition at line 89 of file ds18b20_driver.c.
References ds18b20_read_scratchpad(), DS18B20_SCRATCHPAD_SIZE, DS18B20_STATE_DATA_READY, DS18B20_STATE_ERROR, ds18b20_driver_t::last_raw_temperature, ds18b20_driver_t::sample_valid, and ds18b20_driver_t::state.
Referenced by ds18b20_process(), and ds18b20_read_raw().
| bool ds18b20_get_latest_raw | ( | const ds18b20_driver_t * | driver, |
| int16_t * | raw_temperature | ||
| ) |
Definition at line 265 of file ds18b20_driver.c.
References ds18b20_driver_t::initialized, ds18b20_driver_t::last_raw_temperature, and ds18b20_driver_t::sample_valid.
Referenced by app_step_20ms(), and ds18b20_read_raw().
| bool ds18b20_get_latest_temperature_celsius | ( | const ds18b20_driver_t * | driver, |
| float * | temperature_celsius | ||
| ) |
Esta variante no se usa en el firmware actual.
Definition at line 275 of file ds18b20_driver.c.
References ds18b20_has_valid_sample(), and ds18b20_driver_t::last_raw_temperature.
| bool ds18b20_has_valid_sample | ( | const ds18b20_driver_t * | driver | ) |
Definition at line 256 of file ds18b20_driver.c.
References ds18b20_driver_t::initialized, and ds18b20_driver_t::sample_valid.
Referenced by ds18b20_get_latest_temperature_celsius().
| bool ds18b20_init | ( | ds18b20_driver_t * | driver, |
| const onewire_pin_config_t * | pin_config | ||
| ) |
| driver | Instancia del driver a inicializar. |
| pin_config | Configuracion fisica del pin del bus 1-Wire. |
| true | Si la inicializacion fue correcta y el sensor respondio. |
| false | Si hubo un error de parametros o no se detecto presencia. |
Definition at line 132 of file ds18b20_driver.c.
References ds18b20_driver_t::bus, ds18b20_is_present(), ds18b20_reset_state(), ds18b20_driver_t::initialized, onewire_init(), ds18b20_driver_t::rom_code, and ds18b20_driver_t::use_match_rom.
Referenced by app_init(), and app_step_20ms().
| 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] | ||
| ) |
Esta variante no se usa en el firmware actual, pero se conserva como parte de la API del driver.
Definition at line 149 of file ds18b20_driver.c.
References ds18b20_driver_t::bus, ds18b20_crc8_is_valid(), DS18B20_FAMILY_CODE, ds18b20_is_present(), ds18b20_reset_state(), ds18b20_driver_t::initialized, onewire_init(), ONEWIRE_ROM_CODE_SIZE, ds18b20_driver_t::rom_code, and ds18b20_driver_t::use_match_rom.
| bool ds18b20_is_busy | ( | const ds18b20_driver_t * | driver | ) |
| driver | Instancia del driver. |
| true | Si el sensor esta convirtiendo temperatura. |
| false | Si no hay conversion pendiente o el driver es invalido. |
Definition at line 247 of file ds18b20_driver.c.
References DS18B20_STATE_CONVERTING, ds18b20_driver_t::initialized, and ds18b20_driver_t::state.
Referenced by app_step_20ms().
| bool ds18b20_is_present | ( | ds18b20_driver_t * | driver | ) |
Definition at line 208 of file ds18b20_driver.c.
References ds18b20_driver_t::bus, onewire_driver_t::initialized, and onewire_reset().
Referenced by ds18b20_init(), and ds18b20_init_with_rom().
| void ds18b20_process | ( | ds18b20_driver_t * | driver, |
| uint16_t | elapsed_ms | ||
| ) |
Debe llamarse periodicamente desde el lazo principal o desde una tarea cooperativa. Cuando la conversion termina, el driver lee el scratchpad y actualiza la ultima muestra valida disponible.
| driver | Instancia del driver. |
| elapsed_ms | Tiempo transcurrido desde la ultima llamada, en ms. |
Definition at line 229 of file ds18b20_driver.c.
References ds18b20_driver_t::conversion_elapsed_ms, DS18B20_CONVERSION_TIME_MS, ds18b20_finish_conversion(), DS18B20_STATE_CONVERTING, ds18b20_driver_t::initialized, and ds18b20_driver_t::state.
Referenced by app_step_20ms().
| bool ds18b20_read_raw | ( | ds18b20_driver_t * | driver, |
| int16_t * | raw_temperature | ||
| ) |
Esta variante no se usa en el firmware actual.
Definition at line 305 of file ds18b20_driver.c.
References driver_delay_ms(), DS18B20_CONVERSION_TIME_MS, ds18b20_finish_conversion(), ds18b20_get_latest_raw(), and ds18b20_start_conversion().
Referenced by ds18b20_read_temperature_celsius().
| bool ds18b20_read_scratchpad | ( | ds18b20_driver_t * | driver, |
| uint8_t | scratchpad[DS18B20_SCRATCHPAD_SIZE] | ||
| ) |
Esta variante no se usa en el firmware actual.
Definition at line 286 of file ds18b20_driver.c.
References ds18b20_driver_t::bus, ds18b20_begin_command(), DS18B20_CMD_READ_SCRATCHPAD, ds18b20_crc8_is_valid(), DS18B20_SCRATCHPAD_SIZE, and onewire_read_byte().
Referenced by ds18b20_finish_conversion().
| bool ds18b20_read_temperature_celsius | ( | ds18b20_driver_t * | driver, |
| float * | temperature_celsius | ||
| ) |
Esta variante no se usa en el firmware actual.
Definition at line 324 of file ds18b20_driver.c.
References ds18b20_read_raw().
|
static |
Definition at line 40 of file ds18b20_driver.c.
References ds18b20_driver_t::conversion_elapsed_ms, DS18B20_STATE_IDLE, ds18b20_driver_t::last_raw_temperature, ds18b20_driver_t::sample_valid, and ds18b20_driver_t::state.
Referenced by ds18b20_init(), and ds18b20_init_with_rom().
| bool ds18b20_start_conversion | ( | ds18b20_driver_t * | driver | ) |
| driver | Instancia del driver. |
| true | Si el comando pudo enviarse. |
| false | Si el sensor no respondio. |
Definition at line 217 of file ds18b20_driver.c.
References ds18b20_driver_t::conversion_elapsed_ms, ds18b20_begin_command(), DS18B20_CMD_CONVERT_T, DS18B20_STATE_CONVERTING, DS18B20_STATE_ERROR, and ds18b20_driver_t::state.
Referenced by app_init(), app_step_20ms(), and ds18b20_read_raw().