main/task_driver.c

changeset 87
47253f294a9f
parent 86
8d0287a1a9e1
child 88
7f02dbee58d0
equal deleted inserted replaced
86:8d0287a1a9e1 87:47253f294a9f
32 int MLT_Mode = MLT_MODE_NONE; ///< MLT mode flag 32 int MLT_Mode = MLT_MODE_NONE; ///< MLT mode flag
33 double HLT_Input = 0; ///< HLT input value 33 double HLT_Input = 0; ///< HLT input value
34 double HLT_Setpoint = 0; ///< HLT setpoint values 34 double HLT_Setpoint = 0; ///< HLT setpoint values
35 int HLT_Output = 0; ///< HLT output value 35 int HLT_Output = 0; ///< HLT output value
36 int HLT_Mode = HLT_MODE_NONE; ///< HLT mode flag 36 int HLT_Mode = HLT_MODE_NONE; ///< HLT mode flag
37 TickType_t MLT_time, HLT_time;
38
39
40 static const char *MLTTypes[] = { "None", "Bang", "PID", "Off", "Ext" };
41 static const char *HLTTypes[] = { "None", "Bang", "Off", "On" };
37 42
38 static const char *TAG = "task_driver"; 43 static const char *TAG = "task_driver";
39 44
40 extern SemaphoreHandle_t xSemaphoreDS18B20; 45 extern SemaphoreHandle_t xSemaphoreDS18B20;
41 extern DS18B20_State * ds18b20_state; 46 extern DS18B20_State *ds18b20_state;
42 extern unsigned long lastTime; 47 extern unsigned long lastTime;
43 48
44 49
45 /** 50 /**
46 * @brief Turn the MLT SSR on or off. 51 * @brief Turn the MLT SSR on or off.
47 */ 52 */
60 65
61 66
62 void MLT(int onoff) { 67 void MLT(int onoff) {
63 68
64 if (onoff && outEnable) { 69 if (onoff && outEnable) {
70 if (MLT_pin != 1)
71 MLT_time = xTaskGetTickCount();
65 gpio_set_level(SSR_MLT, 1); 72 gpio_set_level(SSR_MLT, 1);
66 MLT_pin = 1; 73 MLT_pin = 1;
67 } else { 74 } else {
75 if (MLT_pin)
76 runtime.MLT_usage += xTaskGetTickCount() - MLT_time;
68 gpio_set_level(SSR_MLT, 0); 77 gpio_set_level(SSR_MLT, 0);
69 MLT_pin = 0; 78 MLT_pin = 0;
70 } 79 }
71 } 80 }
72 81
73 82
74 83
75 void HLT(int onoff) { 84 void HLT(int onoff) {
76 85
77 if (onoff && outEnable) { 86 if (onoff && outEnable) {
87 if (HLT_pin != 1)
88 HLT_time = xTaskGetTickCount();
78 gpio_set_level(SSR_HLT, 1); 89 gpio_set_level(SSR_HLT, 1);
79 HLT_pin = 1; 90 HLT_pin = 1;
80 } else { 91 } else {
92 if (HLT_pin)
93 runtime.HLT_usage += xTaskGetTickCount() - HLT_time;
81 gpio_set_level(SSR_HLT, 0); 94 gpio_set_level(SSR_HLT, 0);
82 HLT_pin = 0; 95 HLT_pin = 0;
83 } 96 }
84 } 97 }
85 98
182 PID_SetMode(PID_MANUAL); 195 PID_SetMode(PID_MANUAL);
183 } else if (driver_state->mlt_mode == MLT_MODE_PID) { 196 } else if (driver_state->mlt_mode == MLT_MODE_PID) {
184 LoadPIDsettings(); 197 LoadPIDsettings();
185 } 198 }
186 MLT_Mode = driver_state->mlt_mode; 199 MLT_Mode = driver_state->mlt_mode;
187 ESP_LOGI(TAG, "MLT mode set to %d", MLT_Mode); 200 ESP_LOGI(TAG, "MLT mode set to %s", MLTTypes[MLT_Mode]);
188 } 201 }
189 if (driver_state->hlt_mode != HLT_Mode) { 202 if (driver_state->hlt_mode != HLT_Mode) {
190 HLT_Mode = driver_state->hlt_mode; 203 HLT_Mode = driver_state->hlt_mode;
191 ESP_LOGI(TAG, "HLT mode set to %d", HLT_Mode); 204 ESP_LOGI(TAG, "HLT mode set to %s", HLTTypes[HLT_Mode]);
192 } 205 }
193 outEnable = driver_state->enable; 206 outEnable = driver_state->enable;
194 HLT_Input = driver_state->hlt_pv; 207 HLT_Input = driver_state->hlt_pv;
195 HLT_Setpoint = driver_state->hlt_sp; 208 HLT_Setpoint = driver_state->hlt_sp;
196 xSemaphoreGive(xSemaphoreDriver); 209 xSemaphoreGive(xSemaphoreDriver);

mercurial