comparison Small_CPU/Src/externalInterface.c @ 662:1b995079c045 Betatest

PSCR Mode
author heinrichs weikamp
date Tue, 14 Dec 2021 15:36:10 +0100
parents 011d8f9f5ddb
children 52d68cf9994c
comparison
equal deleted inserted replaced
661:87bee7cc77b3 662:1b995079c045
25 25
26 #include <math.h> 26 #include <math.h>
27 #include "i2c.h" 27 #include "i2c.h"
28 #include "externalInterface.h" 28 #include "externalInterface.h"
29 #include "scheduler.h" 29 #include "scheduler.h"
30 #include "uart.h"
31 #include "data_exchange.h"
30 32
31 extern SGlobal global; 33 extern SGlobal global;
34 extern UART_HandleTypeDef huart1;
32 35
33 #define ADC_ANSWER_LENGTH (5u) /* 3424 will provide addr + 4 data bytes */ 36 #define ADC_ANSWER_LENGTH (5u) /* 3424 will provide addr + 4 data bytes */
34 #define ADC_TIMEOUT (10u) /* conversion stuck for unknown reason => restart */ 37 #define ADC_TIMEOUT (10u) /* conversion stuck for unknown reason => restart */
35 #define ADC_REF_VOLTAGE_MV (2048.0f) /* reference voltage of MPC3424*/ 38 #define ADC_REF_VOLTAGE_MV (2048.0f) /* reference voltage of MPC3424*/
36 39
50 static uint8_t recBuf[ADC_ANSWER_LENGTH]; 53 static uint8_t recBuf[ADC_ANSWER_LENGTH];
51 static uint8_t timeoutCnt = 0; 54 static uint8_t timeoutCnt = 0;
52 static uint8_t externalInterfacePresent = 0; 55 static uint8_t externalInterfacePresent = 0;
53 56
54 float externalChannel_mV[MAX_ADC_CHANNEL]; 57 float externalChannel_mV[MAX_ADC_CHANNEL];
58 static uint8_t externalV33_On = 0;
59 static uint16_t externalCO2Value;
60 static uint16_t externalCO2SignalStrength;
61 static uint16_t externalCO2Status = 0;
55 62
56 63
57 void externalInterface_Init(void) 64 void externalInterface_Init(void)
58 { 65 {
59 activeChannel = 0; 66 activeChannel = 0;
63 { 70 {
64 externalInterfacePresent = 1; 71 externalInterfacePresent = 1;
65 global.deviceDataSendToMaster.hw_Info.extADC = 1; 72 global.deviceDataSendToMaster.hw_Info.extADC = 1;
66 } 73 }
67 global.deviceDataSendToMaster.hw_Info.checkADC = 1; 74 global.deviceDataSendToMaster.hw_Info.checkADC = 1;
75
76 /* init data values */
77 externalV33_On = 0;
78 externalCO2Value = 0;
79 externalCO2SignalStrength = 0;
80 externalCO2Status = 0;
68 } 81 }
69 82
70 83
71 uint8_t externalInterface_StartConversion(uint8_t channel) 84 uint8_t externalInterface_StartConversion(uint8_t channel)
72 { 85 {
166 { 179 {
167 retval = externalChannel_mV[channel]; 180 retval = externalChannel_mV[channel];
168 } 181 }
169 return retval; 182 return retval;
170 } 183 }
184
185 void externalInterface_InitPower33(void)
186 {
187 GPIO_InitTypeDef GPIO_InitStructure;
188
189 GPIO_InitStructure.Pin = GPIO_PIN_7;
190 GPIO_InitStructure.Mode = GPIO_MODE_OUTPUT_PP;
191 GPIO_InitStructure.Pull = GPIO_PULLUP;
192 GPIO_InitStructure.Speed = GPIO_SPEED_LOW;
193 HAL_GPIO_Init(GPIOC, &GPIO_InitStructure);
194 HAL_GPIO_WritePin(GPIOC,GPIO_PIN_7,GPIO_PIN_SET);
195 }
196
197
198 uint8_t externalInterface_isEnabledPower33()
199 {
200 return externalV33_On;
201 }
202 void externalInterface_SwitchPower33(uint8_t state)
203 {
204 if(state != externalV33_On)
205 {
206 if(state)
207 {
208 HAL_GPIO_WritePin(GPIOC,GPIO_PIN_7,GPIO_PIN_RESET);
209 externalV33_On = 1;
210 MX_USART1_UART_Init();
211 }
212 else
213 {
214 HAL_GPIO_WritePin(GPIOC,GPIO_PIN_7,GPIO_PIN_SET);
215 externalV33_On = 0;
216 externalInterface_SetCO2Value(0);
217 externalInterface_SetCO2SignalStrength(0);
218 MX_USART1_UART_DeInit();
219 }
220 }
221 }
222
223 void externalInterface_SetCO2Value(uint16_t CO2_ppm)
224 {
225 externalCO2Value = CO2_ppm;
226 }
227
228 void externalInterface_SetCO2SignalStrength(uint16_t LED_qa)
229 {
230 externalCO2SignalStrength = LED_qa;
231 }
232
233 uint16_t externalInterface_GetCO2Value(void)
234 {
235 return externalCO2Value;
236 }
237
238 uint16_t externalInterface_GetCO2SignalStrength(void)
239 {
240 return externalCO2SignalStrength;
241 }
242
243
244 void externalInterface_SetCO2State(uint16_t state)
245 {
246 externalCO2Status = state;
247 }
248
249 uint16_t externalInterface_GetCO2State(void)
250 {
251 return externalCO2Status;
252 }
253
254 void externalInterface_ExecuteCmd(uint16_t Cmd)
255 {
256 char cmdString[10];
257 uint8_t cmdLength = 0;
258
259 switch(Cmd & 0x00FF) /* lower byte is reserved for commands */
260 {
261 case EXT_INTERFACE_CO2_CALIB: cmdLength = snprintf(cmdString, 10, "G\r\n");
262 break;
263 default:
264 break;
265 }
266 if(cmdLength != 0)
267 {
268 HAL_UART_Transmit(&huart1,(uint8_t*)cmdString,cmdLength,10);
269 }
270 return;
271 }
272