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); |