51 __esos_SetSystemFlag(__ESOS_SYS_ADC_IS_BUSY);
69 esos_sensor_initiate_hw();
86 return *((uint16_t*)pv_a) - *((uint16_t*)pv_b);
102 return (pu16_buf[u8_nelem / 2 - 1] + pu16_buf[u8_nelem / 2]) / 2;
118 for(;i<u8_nelem;i++){
119 if(max < pu16_buf[i]){
139 static uint8_t FMT_CONSTANT;
142 static uint16_t au16_dataArr[64] = {0};
143 static uint8_t arrayCount = 0;
144 uint16_t u16_oneShot = *pu16_data;
145 static uint32_t u32_algData;
150 FMT_CONSTANT = e_senFMT & 0b11110000;
151 vRef = e_senFMT & 0b00001111;
154 if((e_senProcess & 0b00001111) == 1){
155 while(arrayCount < 2){
156 esos_sensor_initiate_hw();
162 else if((e_senProcess & 0b00001111) == 2){
163 while(arrayCount < 4){
164 esos_sensor_initiate_hw();
170 else if((e_senProcess & 0b00001111) == 3){
171 while(arrayCount < 8){
172 esos_sensor_initiate_hw();
178 else if((e_senProcess & 0b00001111) == 4){
179 while(arrayCount < 16){
180 esos_sensor_initiate_hw();
186 else if((e_senProcess & 0b00001111) == 5){
187 while(arrayCount < 32){
188 esos_sensor_initiate_hw();
194 else if((e_senProcess & 0b00001111) == 6){
195 while(arrayCount < 64){
196 esos_sensor_initiate_hw();
209 if(e_senProcess == ESOS_SENSOR_ONE_SHOT){
210 esos_sensor_initiate_hw();
215 else if(e_senProcess == ESOS_SENSOR_AVG2){
216 while(arrayCount < 2){
217 u32_algData += au16_dataArr[arrayCount];
220 u32_algData = u32_algData/arrayCount;
221 *pu16_data = (uint16_t)u32_algData;
223 else if(e_senProcess == ESOS_SENSOR_AVG4){
224 while(arrayCount < 4){
225 u32_algData += au16_dataArr[arrayCount];
228 u32_algData = u32_algData/arrayCount;
229 *pu16_data = (uint16_t)u32_algData;
231 else if(e_senProcess == ESOS_SENSOR_AVG8){
232 while(arrayCount < 8){
233 u32_algData += au16_dataArr[arrayCount];
236 u32_algData = u32_algData/arrayCount;
237 *pu16_data = (uint16_t)u32_algData;
239 else if(e_senProcess == ESOS_SENSOR_AVG16){
240 while(arrayCount < 16){
241 u32_algData += au16_dataArr[arrayCount];
244 u32_algData = u32_algData/arrayCount;
245 *pu16_data = (uint16_t)u32_algData;
247 else if(e_senProcess == ESOS_SENSOR_AVG32){
248 while(arrayCount < 32){
249 u32_algData += au16_dataArr[arrayCount];
252 u32_algData = u32_algData/arrayCount;
253 *pu16_data = (uint16_t)u32_algData;
255 else if(e_senProcess == ESOS_SENSOR_AVG64){
256 while(arrayCount < 64){
257 u32_algData += au16_dataArr[arrayCount];
260 u32_algData = u32_algData/arrayCount;
261 *pu16_data = (uint16_t)u32_algData;
264 else if(e_senProcess == ESOS_SENSOR_MIN2){
265 *pu16_data = ESOS_SENSOR_MAX16;
266 while(arrayCount < 2){
267 if (au16_dataArr[arrayCount] < *pu16_data){
268 *pu16_data = au16_dataArr[arrayCount];
273 else if(e_senProcess == ESOS_SENSOR_MIN4){
274 *pu16_data = ESOS_SENSOR_MAX16;
275 while(arrayCount < 4){
276 if (au16_dataArr[arrayCount] < *pu16_data){
277 *pu16_data = au16_dataArr[arrayCount];
282 else if(e_senProcess == ESOS_SENSOR_MIN8){
283 *pu16_data = ESOS_SENSOR_MAX16;
284 while(arrayCount < 8){
285 if (au16_dataArr[arrayCount] < *pu16_data){
286 *pu16_data = au16_dataArr[arrayCount];
291 else if(e_senProcess == ESOS_SENSOR_MIN16){
292 *pu16_data = ESOS_SENSOR_MAX16;
293 while(arrayCount < 16){
294 if (au16_dataArr[arrayCount] < *pu16_data){
295 *pu16_data = au16_dataArr[arrayCount];
300 else if(e_senProcess == ESOS_SENSOR_MIN32){
301 *pu16_data = ESOS_SENSOR_MAX16;
302 while(arrayCount < 32){
303 if (au16_dataArr[arrayCount] < *pu16_data){
304 *pu16_data = au16_dataArr[arrayCount];
309 else if(e_senProcess == ESOS_SENSOR_MIN64){
310 *pu16_data = ESOS_SENSOR_MAX16;
311 while(arrayCount < 64){
312 if (au16_dataArr[arrayCount] < *pu16_data){
313 *pu16_data = au16_dataArr[arrayCount];
319 else if(e_senProcess == ESOS_SENSOR_MAX2){
322 else if(e_senProcess == ESOS_SENSOR_MAX4){
325 else if(e_senProcess == ESOS_SENSOR_MAX8){
328 else if(e_senProcess == ESOS_SENSOR_MAX16){
331 else if(e_senProcess == ESOS_SENSOR_MAX32){
334 else if(e_senProcess == ESOS_SENSOR_MAX64){
338 else if(e_senProcess == ESOS_SENSOR_MEDIAN2){
341 else if(e_senProcess == ESOS_SENSOR_MEDIAN4){
344 else if(e_senProcess == ESOS_SENSOR_MEDIAN8){
347 else if(e_senProcess == ESOS_SENSOR_MEDIAN16){
350 else if(e_senProcess == ESOS_SENSOR_MEDIAN32){
353 else if(e_senProcess == ESOS_SENSOR_MEDIAN64){
359 if(FMT_CONSTANT & ESOS_SENSOR_FORMAT_VOLTAGE){
360 const uint32_t u32_maxDeciMilliVolts =
361 vRef == ESOS_SENSOR_VREF_1V0 ? 10000
362 : vRef == ESOS_SENSOR_VREF_1V024 ? 10240
363 : vRef == ESOS_SENSOR_VREF_2V0 ? 20000
364 : vRef == ESOS_SENSOR_VREF_2V048 ? 20480
365 : vRef == ESOS_SENSOR_VREF_3V0 ? 30000
366 : vRef == ESOS_SENSOR_VREF_3V3 ? 33000
367 : vRef == ESOS_SENSOR_VREF_4V0 ? 40000
368 : vRef == ESOS_SENSOR_VREF_4V096 ? 40960
369 : vRef == ESOS_SENSOR_VREF_5V0 ? 50000
371 const uint32_t u32_divDeciMillivolts = (uint32_t)(*pu16_data) * u32_maxDeciMilliVolts;
372 const uint32_t u32_DeciMillivolts = u32_divDeciMillivolts / 4096;
373 *pu16_data = (uint16_t)u32_DeciMillivolts;
377 else if(FMT_CONSTANT & ESOS_SENSOR_FORMAT_PERCENT) {
378 *pu16_data = (uint32_t)(*pu16_data) * 100 / 4096;
394 __esos_ClearSystemFlag(__ESOS_SYS_ADC_IS_BUSY);