main/task_driver.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 103
1885d0c75c48
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.

#ifndef	_TASK_DRIVER_H
#define	_TASK_DRIVER_H

/**
 * @file task_driver.h
 * @brief The interface to the FreeRTOS driver task. This task drives the Solid
 *        State Relays (SSR) to power the Mash Lauter Tun (MLT) and the Hot
 *        Liquer Tank (HLT) heating elements. It also controls the pump relay.
 *
 * It takes the temperature readings from the DS18B20 task.
 */


/**
 * @brief MLT working mode.
 */
typedef enum {
    MLT_MODE_NONE = 0,			///< Not active
    MLT_MODE_BANG = 1,			///< Bang on/off mode
    MLT_MODE_PID = 2,			///< PID mode
    MLT_MODE_OFF = 3,			///< Off but show setpoint
    MLT_MODE_EXT = 4,			///< External regulation
} MLT_MODE_TYPE;

/**
 * @brief HLT working mode.
 */
typedef enum {
    HLT_MODE_NONE = 0,			///< Not active
    HLT_MODE_BANG = 1,			///< Bang on/off mode
    HLT_MODE_OFF = 2,			///< Off but show setpoint
    HLT_MODE_ON = 3,			///< On if free
} HLT_MODE_TYPE;


/**
 * @brief Structure containing the information of the driver task.
 */
typedef struct {
    bool   enable;			///< Enable outputs
    int    mlt_gpio;			///< MLT SSR GPIO pin
    int    mlt_mode;			///< MLT Mode: 0 = off, 1 = bang on/off, 2 = PID, 3 = cooling
    double mlt_sp;			///< Setpoint MLT temperature
    double mlt_pv;			///< Current MLT temperature
    int    mlt_power;			///< Current MLT drive power %
    int    hlt_gpio;			///< HLT SSR  GPIO pin
    int    hlt_mode;			///< HLT Mode:  0 = off, 1 = bang on/off, 2 = always on
    double hlt_sp;			///< Setpoint HLT temperature
    double hlt_pv;			///< Current HLT temperature
    int    hlt_power;			///< Current HLT drive power %
    bool   hlt_and_mlt;			///< True if both MLT and HLT are allowed at the same time.
    int	   pump_gpio;			///< Pump SSR GPIO pin
    int	   pump_run;			///< Pump on/off
} DRIVER_State;


/**
 * @brief FreeRTOS driver task. This task drives the Solid
 *        State Relays (SSR) to power the Mash Lauter Tun (MLT) and the Hot
 *        Liquer Tank (HLT) heating elements. It also controls the pump relay.
 */
void task_driver(void *);

#endif

mercurial