main/task_ds18b20.h

Fri, 28 Jun 2024 15:33:24 +0200

author
Michiel Broek <mbroek@mbse.eu>
date
Fri, 28 Jun 2024 15:33:24 +0200
branch
idf 5.1
changeset 137
e0f50087c909
parent 1
ad2c8b13eb88
permissions
-rw-r--r--

Fixed changing runtime datarecord size during switching between IDF 4.2 and 5.1. Fixed wiping the /spiffs filesystem. The directory listing from the SD card doesn't overwrite parts of the screen anymore. Solved the slow speed issue with the SD card. Try to force the SD card to operate at 20 MHz. More project settings changed to improve performance and memory usage.


/**
 * @file task_ds18b20.h
 * @brief The FreeRTOS task to query the DS18B20 sensors on one or two
 *        one-wire busses. Each bus must have only one sensor. That way
 *        we don't need to care about the DS18B20 internal ROM address.
 *        The task will update the DS18B20_State structure.
 *
 * Using a compile setting with make menuconfig it is possible to compile
 * a simulator instead of real hardware sensors. The simulator includes
 * fake kettles so that the temperature actually changes with the 
 * activation of the kettle Solid State Relays. Only usefull for developers.
 */

#ifndef	_TASK_DS18B20_H
#define	_TASK_DS18B20_H

/*
 * Error codes in this task
 */
#define	DS18B20_ERR_NONE		0			///< No errors
#define DS18B20_ERR_NOSENSOR		1			///< No sensor detected
#define	DS18B20_ERR_TOOMANY		2			///< Too many sensors
#define	DS18B20_ERR_CRC			3			///< CRC read error
#define	DS18B20_ERR_READ		4			///< Generic read error


/**
 * @brief Structure containing the variables for the DS18B20 task.
 */
typedef struct {
    bool   mlt_valid;			///< MLT sensor valid reading.
    double mlt_temperature;		///< Current MLT temperature.
    int    mlt_error;			///< MLT error number.
    bool   hlt_valid;			///< HLT sensor valid reading.
    double hlt_temperature;		///< Current HLT temperature.
    int    hlt_error;			///< HLT error number.
} DS18B20_State;


/**
 * @brief The FreeRTOS task to update the DS18B20 temperature sensors.
 */
void task_ds18b20(void *);


#endif

mercurial