LibDriver MCP9600
Loading...
Searching...
No Matches
driver_mcp9600_shot.c
Go to the documentation of this file.
1
36
37#include "driver_mcp9600_shot.h"
38
39static mcp9600_handle_t gs_handle;
40
51{
52 uint8_t res;
53 int16_t reg;
54 uint8_t reg2;
55
56 /* link interface function */
64
65 /* set mcp9600 iic address */
66 res = mcp9600_set_addr_pin(&gs_handle, addr_pin);
67 if (res != 0)
68 {
69 mcp9600_interface_debug_print("mcp9600: set addr pin failed.\n");
70
71 return 1;
72 }
73
74 /* chip init */
75 res = mcp9600_init(&gs_handle);
76 if (res != 0)
77 {
78 mcp9600_interface_debug_print("mcp9600: init failed.\n");
79
80 return 1;
81 }
82
83 /* set normal */
84 res = mcp9600_set_mode(&gs_handle, MCP9600_MODE_NORMAL);
85 if (res != 0)
86 {
87 mcp9600_interface_debug_print("mcp9600: set mode failed.\n");
88 (void)mcp9600_deinit(&gs_handle);
89
90 return 1;
91 }
92
93 /* set default filter coefficient */
95 if (res != 0)
96 {
97 mcp9600_interface_debug_print("mcp9600: set filter coefficient failed.\n");
98 (void)mcp9600_deinit(&gs_handle);
99
100 return 1;
101 }
102
103 /* set thermocouple type */
104 res = mcp9600_set_thermocouple_type(&gs_handle, type);
105 if (res != 0)
106 {
107 mcp9600_interface_debug_print("mcp9600: set thermocouple type failed.\n");
108 (void)mcp9600_deinit(&gs_handle);
109
110 return 1;
111 }
112
113 /* set default cold junction resolution */
115 if (res != 0)
116 {
117 mcp9600_interface_debug_print("mcp9600: set cold junction resolution failed.\n");
118 (void)mcp9600_deinit(&gs_handle);
119
120 return 1;
121 }
122
123 /* set default adc resolution */
125 if (res != 0)
126 {
127 mcp9600_interface_debug_print("mcp9600: set adc resolution failed.\n");
128 (void)mcp9600_deinit(&gs_handle);
129
130 return 1;
131 }
132
133 /* set default burst mode sample */
135 if (res != 0)
136 {
137 mcp9600_interface_debug_print("mcp9600: set burst mode sample failed.\n");
138 (void)mcp9600_deinit(&gs_handle);
139
140 return 1;
141 }
142
143 /* alert1 limit convert to register */
145 if (res != 0)
146 {
147 mcp9600_interface_debug_print("mcp9600: alert limit convert to register failed.\n");
148 (void)mcp9600_deinit(&gs_handle);
149
150 return 1;
151 }
152
153 /* set alert1 limit */
154 res = mcp9600_set_alert_limit(&gs_handle, MCP9600_ALERT_1, reg);
155 if (res != 0)
156 {
157 mcp9600_interface_debug_print("mcp9600: set alert limit failed.\n");
158 (void)mcp9600_deinit(&gs_handle);
159
160 return 1;
161 }
162
163 /* alert2 limit convert to register */
165 if (res != 0)
166 {
167 mcp9600_interface_debug_print("mcp9600: alert limit convert to register failed.\n");
168 (void)mcp9600_deinit(&gs_handle);
169
170 return 1;
171 }
172
173 /* set alert2 limit */
174 res = mcp9600_set_alert_limit(&gs_handle, MCP9600_ALERT_2, reg);
175 if (res != 0)
176 {
177 mcp9600_interface_debug_print("mcp9600: set alert limit failed.\n");
178 (void)mcp9600_deinit(&gs_handle);
179
180 return 1;
181 }
182
183 /* alert3 limit convert to register */
185 if (res != 0)
186 {
187 mcp9600_interface_debug_print("mcp9600: alert limit convert to register failed.\n");
188 (void)mcp9600_deinit(&gs_handle);
189
190 return 1;
191 }
192
193 /* set alert3 limit */
194 res = mcp9600_set_alert_limit(&gs_handle, MCP9600_ALERT_3, reg);
195 if (res != 0)
196 {
197 mcp9600_interface_debug_print("mcp9600: set alert limit failed.\n");
198 (void)mcp9600_deinit(&gs_handle);
199
200 return 1;
201 }
202
203 /* alert4 limit convert to register */
205 if (res != 0)
206 {
207 mcp9600_interface_debug_print("mcp9600: alert limit convert to register failed.\n");
208 (void)mcp9600_deinit(&gs_handle);
209
210 return 1;
211 }
212
213 /* set alert4 limit */
214 res = mcp9600_set_alert_limit(&gs_handle, MCP9600_ALERT_4, reg);
215 if (res != 0)
216 {
217 mcp9600_interface_debug_print("mcp9600: set alert limit failed.\n");
218 (void)mcp9600_deinit(&gs_handle);
219
220 return 1;
221 }
222
223 /* alert1 hysteresis convert to register */
225 if (res != 0)
226 {
227 mcp9600_interface_debug_print("mcp9600: alert hysteresis convert to register failed.\n");
228 (void)mcp9600_deinit(&gs_handle);
229
230 return 1;
231 }
232
233 /* set alert1 hysteresis */
234 res = mcp9600_set_alert_hysteresis(&gs_handle, MCP9600_ALERT_1, reg2);
235 if (res != 0)
236 {
237 mcp9600_interface_debug_print("mcp9600: set alert hysteresis failed.\n");
238 (void)mcp9600_deinit(&gs_handle);
239
240 return 1;
241 }
242
243 /* alert2 hysteresis convert to register */
245 if (res != 0)
246 {
247 mcp9600_interface_debug_print("mcp9600: alert hysteresis convert to register failed.\n");
248 (void)mcp9600_deinit(&gs_handle);
249
250 return 1;
251 }
252
253 /* set alert2 hysteresis */
254 res = mcp9600_set_alert_hysteresis(&gs_handle, MCP9600_ALERT_2, reg2);
255 if (res != 0)
256 {
257 mcp9600_interface_debug_print("mcp9600: set alert hysteresis failed.\n");
258 (void)mcp9600_deinit(&gs_handle);
259
260 return 1;
261 }
262
263 /* alert3 hysteresis convert to register */
265 if (res != 0)
266 {
267 mcp9600_interface_debug_print("mcp9600: alert hysteresis convert to register failed.\n");
268 (void)mcp9600_deinit(&gs_handle);
269
270 return 1;
271 }
272
273 /* set alert3 hysteresis */
274 res = mcp9600_set_alert_hysteresis(&gs_handle, MCP9600_ALERT_3, reg2);
275 if (res != 0)
276 {
277 mcp9600_interface_debug_print("mcp9600: set alert hysteresis failed.\n");
278 (void)mcp9600_deinit(&gs_handle);
279
280 return 1;
281 }
282
283 /* alert4 hysteresis convert to register */
285 if (res != 0)
286 {
287 mcp9600_interface_debug_print("mcp9600: alert hysteresis convert to register failed.\n");
288 (void)mcp9600_deinit(&gs_handle);
289
290 return 1;
291 }
292
293 /* set alert4 hysteresis */
294 res = mcp9600_set_alert_hysteresis(&gs_handle, MCP9600_ALERT_4, reg2);
295 if (res != 0)
296 {
297 mcp9600_interface_debug_print("mcp9600: set alert hysteresis failed.\n");
298 (void)mcp9600_deinit(&gs_handle);
299
300 return 1;
301 }
302
303 /* set alert1 temperature maintain detect */
306 if (res != 0)
307 {
308 mcp9600_interface_debug_print("mcp9600: set temperature maintain detect failed.\n");
309 (void)mcp9600_deinit(&gs_handle);
310
311 return 1;
312 }
313
314 /* set alert2 temperature maintain detect */
317 if (res != 0)
318 {
319 mcp9600_interface_debug_print("mcp9600: set temperature maintain detect failed.\n");
320 (void)mcp9600_deinit(&gs_handle);
321
322 return 1;
323 }
324
325 /* set alert3 temperature maintain detect */
328 if (res != 0)
329 {
330 mcp9600_interface_debug_print("mcp9600: set temperature maintain detect failed.\n");
331 (void)mcp9600_deinit(&gs_handle);
332
333 return 1;
334 }
335
336 /* set alert4 temperature maintain detect */
339 if (res != 0)
340 {
341 mcp9600_interface_debug_print("mcp9600: set temperature maintain detect failed.\n");
342 (void)mcp9600_deinit(&gs_handle);
343
344 return 1;
345 }
346
347 /* set alert1 detect edge */
349 if (res != 0)
350 {
351 mcp9600_interface_debug_print("mcp9600: set detect edge failed.\n");
352 (void)mcp9600_deinit(&gs_handle);
353
354 return 1;
355 }
356
357 /* set alert2 detect edge */
359 if (res != 0)
360 {
361 mcp9600_interface_debug_print("mcp9600: set detect edge failed.\n");
362 (void)mcp9600_deinit(&gs_handle);
363
364 return 1;
365 }
366
367 /* set alert3 detect edge */
369 if (res != 0)
370 {
371 mcp9600_interface_debug_print("mcp9600: set detect edge failed.\n");
372 (void)mcp9600_deinit(&gs_handle);
373
374 return 1;
375 }
376
377 /* set alert4 detect edge */
379 if (res != 0)
380 {
381 mcp9600_interface_debug_print("mcp9600: set detect edge failed.\n");
382 (void)mcp9600_deinit(&gs_handle);
383
384 return 1;
385 }
386
387 /* set alert1 active level */
389 if (res != 0)
390 {
391 mcp9600_interface_debug_print("mcp9600: set active level failed.\n");
392 (void)mcp9600_deinit(&gs_handle);
393
394 return 1;
395 }
396
397 /* set alert2 active level */
399 if (res != 0)
400 {
401 mcp9600_interface_debug_print("mcp9600: set active level failed.\n");
402 (void)mcp9600_deinit(&gs_handle);
403
404 return 1;
405 }
406
407 /* set alert3 active level */
409 if (res != 0)
410 {
411 mcp9600_interface_debug_print("mcp9600: set active level failed.\n");
412 (void)mcp9600_deinit(&gs_handle);
413
414 return 1;
415 }
416
417 /* set alert4 active level */
419 if (res != 0)
420 {
421 mcp9600_interface_debug_print("mcp9600: set active level failed.\n");
422 (void)mcp9600_deinit(&gs_handle);
423
424 return 1;
425 }
426
427 /* set alert1 interrupt mode */
429 if (res != 0)
430 {
431 mcp9600_interface_debug_print("mcp9600: set interrupt mode failed.\n");
432 (void)mcp9600_deinit(&gs_handle);
433
434 return 1;
435 }
436
437 /* set alert2 interrupt mode */
439 if (res != 0)
440 {
441 mcp9600_interface_debug_print("mcp9600: set interrupt mode failed.\n");
442 (void)mcp9600_deinit(&gs_handle);
443
444 return 1;
445 }
446
447 /* set alert3 interrupt mode */
449 if (res != 0)
450 {
451 mcp9600_interface_debug_print("mcp9600: set interrupt mode failed.\n");
452 (void)mcp9600_deinit(&gs_handle);
453
454 return 1;
455 }
456
457 /* set alert4 interrupt mode */
459 if (res != 0)
460 {
461 mcp9600_interface_debug_print("mcp9600: set interrupt mode failed.\n");
462 (void)mcp9600_deinit(&gs_handle);
463
464 return 1;
465 }
466
467 /* set alert1 output */
469 if (res != 0)
470 {
471 mcp9600_interface_debug_print("mcp9600: set alert output failed.\n");
472 (void)mcp9600_deinit(&gs_handle);
473
474 return 1;
475 }
476
477 /* set alert2 output */
479 if (res != 0)
480 {
481 mcp9600_interface_debug_print("mcp9600: set alert output failed.\n");
482 (void)mcp9600_deinit(&gs_handle);
483
484 return 1;
485 }
486
487 /* set alert3 output */
489 if (res != 0)
490 {
491 mcp9600_interface_debug_print("mcp9600: set alert output failed.\n");
492 (void)mcp9600_deinit(&gs_handle);
493
494 return 1;
495 }
496
497 /* set alert4 output */
499 if (res != 0)
500 {
501 mcp9600_interface_debug_print("mcp9600: set alert output failed.\n");
502 (void)mcp9600_deinit(&gs_handle);
503
504 return 1;
505 }
506
507 return 0;
508}
509
518{
519 uint8_t res;
520
521 /* deinit the chip */
522 res = mcp9600_deinit(&gs_handle);
523 if (res != 0)
524 {
525 return 1;
526 }
527
528 return 0;
529}
530
544uint8_t mcp9600_shot_read(int16_t *hot_raw, float *hot_s,
545 int16_t *delta_raw, float *delta_s, int16_t *cold_raw, float *cold_s)
546{
547 uint8_t res;
548
549 /* single read */
550 res = mcp9600_single_read(&gs_handle, hot_raw, hot_s, delta_raw, delta_s, cold_raw, cold_s);
551 if (res != 0)
552 {
553 return 1;
554 }
555
556 return 0;
557}
driver mcp9600 shot header file
uint8_t mcp9600_set_alert_hysteresis(mcp9600_handle_t *handle, mcp9600_alert_t alert, uint8_t reg)
set the alert hysteresis
mcp9600_address_t
mcp9600 address enumeration definition
mcp9600_thermocouple_type_t
mcp9600 thermocouple type enumeration definition
uint8_t mcp9600_set_active_level(mcp9600_handle_t *handle, mcp9600_alert_t alert, mcp9600_active_level_t level)
set the active level
uint8_t mcp9600_set_detect_edge(mcp9600_handle_t *handle, mcp9600_alert_t alert, mcp9600_detect_edge_t edge)
set the detect edge
uint8_t mcp9600_set_cold_junction_resolution(mcp9600_handle_t *handle, mcp9600_cold_junction_resolution_t resolution)
set the cold junction resolution
uint8_t mcp9600_single_read(mcp9600_handle_t *handle, int16_t *hot_raw, float *hot_s, int16_t *delta_raw, float *delta_s, int16_t *cold_raw, float *cold_s)
read data once
uint8_t mcp9600_set_alert_limit(mcp9600_handle_t *handle, mcp9600_alert_t alert, int16_t reg)
set the alert limit
uint8_t mcp9600_set_thermocouple_type(mcp9600_handle_t *handle, mcp9600_thermocouple_type_t type)
set the thermocouple type
uint8_t mcp9600_set_mode(mcp9600_handle_t *handle, mcp9600_mode_t mode)
set the mode
struct mcp9600_handle_s mcp9600_handle_t
mcp9600 handle structure definition
uint8_t mcp9600_alert_limit_convert_to_register(mcp9600_handle_t *handle, float c, int16_t *reg)
convert the alert limit to the register raw data
uint8_t mcp9600_alert_hysteresis_convert_to_register(mcp9600_handle_t *handle, float c, uint8_t *reg)
convert the alert hysteresis to the register raw data
uint8_t mcp9600_set_alert_output(mcp9600_handle_t *handle, mcp9600_alert_t alert, mcp9600_bool_t enable)
set the alert output
uint8_t mcp9600_set_addr_pin(mcp9600_handle_t *handle, mcp9600_address_t addr_pin)
set the iic address pin
uint8_t mcp9600_set_filter_coefficient(mcp9600_handle_t *handle, mcp9600_filter_coefficient_t coefficient)
set the filter coefficient
uint8_t mcp9600_set_temperature_maintain_detect(mcp9600_handle_t *handle, mcp9600_alert_t alert, mcp9600_temperature_maintain_detect_t maintain_detect)
set the temperature maintain detect
uint8_t mcp9600_set_burst_mode_sample(mcp9600_handle_t *handle, mcp9600_burst_mode_sample_t sample)
set the burst mode sample
uint8_t mcp9600_set_interrupt_mode(mcp9600_handle_t *handle, mcp9600_alert_t alert, mcp9600_interrupt_mode_t mode)
set the interrupt mode
uint8_t mcp9600_deinit(mcp9600_handle_t *handle)
close the chip
uint8_t mcp9600_set_adc_resolution(mcp9600_handle_t *handle, mcp9600_adc_resolution_t resolution)
set the adc resolution
uint8_t mcp9600_init(mcp9600_handle_t *handle)
initialize the chip
@ MCP9600_MODE_NORMAL
@ MCP9600_ALERT_2
@ MCP9600_ALERT_3
@ MCP9600_ALERT_1
@ MCP9600_ALERT_4
#define MCP9600_SHOT_DEFAULT_ALERT1_LIMIT
#define MCP9600_SHOT_DEFAULT_ALERT1_HYSTERESIS
#define MCP9600_SHOT_DEFAULT_ALERT4_TEMPERATURE_MAINTAIN_DETECT
#define MCP9600_SHOT_DEFAULT_BURST_MODE_SAMPLE
#define MCP9600_SHOT_DEFAULT_ALERT2_HYSTERESIS
#define MCP9600_SHOT_DEFAULT_ALERT1_EDGE
#define MCP9600_SHOT_DEFAULT_ALERT4_LIMIT
#define MCP9600_SHOT_DEFAULT_ALERT3_OUTPUT
#define MCP9600_SHOT_DEFAULT_ALERT2_INTERRUPT_MODE
#define MCP9600_SHOT_DEFAULT_ALERT4_OUTPUT
#define MCP9600_SHOT_DEFAULT_ALERT1_TEMPERATURE_MAINTAIN_DETECT
#define MCP9600_SHOT_DEFAULT_ALERT2_OUTPUT
#define MCP9600_SHOT_DEFAULT_ALERT3_TEMPERATURE_MAINTAIN_DETECT
#define MCP9600_SHOT_DEFAULT_ALERT1_OUTPUT
#define MCP9600_SHOT_DEFAULT_ALERT2_ACTIVE_LEVEL
uint8_t mcp9600_shot_read(int16_t *hot_raw, float *hot_s, int16_t *delta_raw, float *delta_s, int16_t *cold_raw, float *cold_s)
shot example read
#define MCP9600_SHOT_DEFAULT_ALERT3_EDGE
#define MCP9600_SHOT_DEFAULT_ALERT4_EDGE
#define MCP9600_SHOT_DEFAULT_ADC_RESOLUTION
#define MCP9600_SHOT_DEFAULT_COLD_JUNCTION_RESOLUTION
#define MCP9600_SHOT_DEFAULT_ALERT3_INTERRUPT_MODE
#define MCP9600_SHOT_DEFAULT_ALERT2_LIMIT
#define MCP9600_SHOT_DEFAULT_FILTER_COEFFICIENT
mcp9600 shot example default definition
#define MCP9600_SHOT_DEFAULT_ALERT3_LIMIT
#define MCP9600_SHOT_DEFAULT_ALERT1_ACTIVE_LEVEL
uint8_t mcp9600_shot_init(mcp9600_address_t addr_pin, mcp9600_thermocouple_type_t type)
shot example init
#define MCP9600_SHOT_DEFAULT_ALERT3_ACTIVE_LEVEL
#define MCP9600_SHOT_DEFAULT_ALERT3_HYSTERESIS
#define MCP9600_SHOT_DEFAULT_ALERT4_ACTIVE_LEVEL
#define MCP9600_SHOT_DEFAULT_ALERT4_INTERRUPT_MODE
#define MCP9600_SHOT_DEFAULT_ALERT1_INTERRUPT_MODE
#define MCP9600_SHOT_DEFAULT_ALERT2_TEMPERATURE_MAINTAIN_DETECT
#define MCP9600_SHOT_DEFAULT_ALERT2_EDGE
#define MCP9600_SHOT_DEFAULT_ALERT4_HYSTERESIS
uint8_t mcp9600_shot_deinit(void)
shot example deinit
uint8_t mcp9600_interface_iic_deinit(void)
interface iic bus deinit
uint8_t mcp9600_interface_iic_write_cmd(uint8_t addr, uint8_t *buf, uint16_t len)
interface iic bus write command
void mcp9600_interface_debug_print(const char *const fmt,...)
interface print format data
void mcp9600_interface_delay_ms(uint32_t ms)
interface delay ms
uint8_t mcp9600_interface_iic_init(void)
interface iic bus init
uint8_t mcp9600_interface_iic_read_cmd(uint8_t addr, uint8_t *buf, uint16_t len)
interface iic bus read command