thermo19 2.0.0.0
thermo19.h
Go to the documentation of this file.
1/****************************************************************************
2** Copyright (C) 2020 MikroElektronika d.o.o.
3** Contact: https://www.mikroe.com/contact
4**
5** Permission is hereby granted, free of charge, to any person obtaining a copy
6** of this software and associated documentation files (the "Software"), to deal
7** in the Software without restriction, including without limitation the rights
8** to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
9** copies of the Software, and to permit persons to whom the Software is
10** furnished to do so, subject to the following conditions:
11** The above copyright notice and this permission notice shall be
12** included in all copies or substantial portions of the Software.
13**
14** THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
15** EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES
16** OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.
17** IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM,
18** DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT
19** OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE
20** USE OR OTHER DEALINGS IN THE SOFTWARE.
21****************************************************************************/
22
28#ifndef THERMO19_H
29#define THERMO19_H
30
31#ifdef __cplusplus
32extern "C"{
33#endif
34
39#ifdef PREINIT_SUPPORTED
40#include "preinit.h"
41#endif
42
43#ifdef MikroCCoreVersion
44 #if MikroCCoreVersion >= 1
45 #include "delays.h"
46 #endif
47#endif
48
49#include "drv_digital_out.h"
50#include "drv_digital_in.h"
51#include "drv_one_wire.h"
52
73#define THERMO19_CMD_CONVERT_TEMPERATURE 0x44
74#define THERMO19_CMD_WRITE_SCRATCHPAD 0x4E
75#define THERMO19_CMD_READ_SCRATCHPAD 0xBE
76#define THERMO19_CMD_DETECT_ADDRESS 0x88
77#define THERMO19_CMD_SELECT_ADDRESS 0x70
78
79 // thermo19_cmd
80
95#define THERMO19_CONFIG_FORMAT_NORMAL 0x00
96#define THERMO19_CONFIG_FORMAT_EXTEND 0x80
97#define THERMO19_CONFIG_FORMAT_BIT_MASK 0x80
98#define THERMO19_CONFIG_RESOLUTION_8BIT 0x00
99#define THERMO19_CONFIG_RESOLUTION_9BIT 0x20
100#define THERMO19_CONFIG_RESOLUTION_10BIT 0x40
101#define THERMO19_CONFIG_RESOLUTION_12BIT 0x60
102#define THERMO19_CONFIG_RESOLUTION_BIT_MASK 0x60
103#define THERMO19_CONFIG_COMP_INT_COMPARATOR 0x00
104#define THERMO19_CONFIG_COMP_INT_INTERRUPT 0x10
105#define THERMO19_CONFIG_COMP_INT_BIT_MASK 0x10
106#define THERMO19_CONFIG_FAULT_QUEUE_SINGLE 0x00
107#define THERMO19_CONFIG_FAULT_QUEUE_MULTIPLE 0x08
108#define THERMO19_CONFIG_FAULT_QUEUE_BIT_MASK 0x08
109#define THERMO19_CONFIG_CONVERSION_RATE_0 0x00
110#define THERMO19_CONFIG_CONVERSION_RATE_1_64 0x01
111#define THERMO19_CONFIG_CONVERSION_RATE_1_32 0x02
112#define THERMO19_CONFIG_CONVERSION_RATE_1_16 0x03
113#define THERMO19_CONFIG_CONVERSION_RATE_1_4 0x04
114#define THERMO19_CONFIG_CONVERSION_RATE_1_1 0x05
115#define THERMO19_CONFIG_CONVERSION_RATE_4_1 0x06
116#define THERMO19_CONFIG_CONVERSION_RATE_8_1 0x07
117#define THERMO19_CONFIG_CONVERSION_RATE_BIT_MASK 0x07
118
123#define THERMO19_STATUS_TH_FAULT_OCCURED 0x80
124#define THERMO19_STATUS_TH_FAULT_NOT_OCCURED 0x00
125#define THERMO19_STATUS_TH_FAULT_BIT_MASK 0x80
126#define THERMO19_STATUS_TL_FAULT_OCCURED 0x40
127#define THERMO19_STATUS_TL_FAULT_NOT_OCCURED 0x00
128#define THERMO19_STATUS_TL_FAULT_BIT_MASK 0x40
129#define THERMO19_STATUS_ADDRRESS_0 0x1A
130#define THERMO19_STATUS_ADDRRESS_1 0x3A
131#define THERMO19_STATUS_ADDRRESS_BIT_MASK 0x3F
132
137#define THERMO19_ADDRESS_0 0x1A
138#define THERMO19_ADDRESS_1 0x3A
139#define THERMO19_ADDRESS_ALL 0xFF
140#define THERMO19_ADDRESS_BIT_MASK 0x3F
141
146#define THERMO19_DATA_RESOLUTION 0.0625
147
152#define THERMO19_FAMILY_CODE 0x3B
153
158#define THERMO19_DEFAULT_CONFIG ( THERMO19_CONFIG_RESOLUTION_12BIT | THERMO19_CONFIG_COMP_INT_INTERRUPT )
159#define THERMO19_DEFAULT_ADDRESS THERMO19_ADDRESS_ALL
160#define THERMO19_DEFAULT_TEMP_HIGH_ALARM 0xFFFF
161#define THERMO19_DEFAULT_TEMP_LOW_ALARM 0x0000
162
163 // thermo19_set
164
180#define THERMO19_MAP_MIKROBUS( cfg, mikrobus ) \
181 cfg.gp0 = MIKROBUS( mikrobus, MIKROBUS_PWM ); \
182 cfg.gp1 = MIKROBUS( mikrobus, MIKROBUS_AN ); \
183 cfg.alt = MIKROBUS( mikrobus, MIKROBUS_INT );
184
185 // thermo19_map
186 // thermo19
187
198
203typedef struct
204{
205 digital_in_t alt;
207 // Modules
208 one_wire_t ow;
210 one_wire_rom_address_t rom_addr;
211 uint8_t config;
212 uint8_t address;
214} thermo19_t;
215
220typedef struct
221{
222 // Communication gpio pins
223 pin_name_t gp0;
224 pin_name_t gp1;
225 pin_name_t alt;
230
235typedef enum
236{
238 THERMO19_ERROR = -1
239
241
258
274
290
305
318
331
343
355err_t thermo19_read_scratchpad ( thermo19_t *ctx, uint8_t *scratchpad );
356
370err_t thermo19_write_scratchpad ( thermo19_t *ctx, uint16_t temp_high, uint16_t temp_low, uint8_t config );
371
383err_t thermo19_read_temperature ( thermo19_t *ctx, float *temperature );
384
394
395#ifdef __cplusplus
396}
397#endif
398#endif // THERMO19_H
399
400 // thermo19
401
402// ------------------------------------------------------------------------ END
err_t thermo19_init(thermo19_t *ctx, thermo19_cfg_t *cfg)
Thermo 19 initialization function.
err_t thermo19_read_temperature(thermo19_t *ctx, float *temperature)
Thermo 19 read temperature function.
err_t thermo19_check_communication(thermo19_t *ctx)
Thermo 19 check communication function.
err_t thermo19_write_scratchpad(thermo19_t *ctx, uint16_t temp_high, uint16_t temp_low, uint8_t config)
Thermo 19 write scratchpad function.
uint8_t thermo19_get_alert_pin(thermo19_t *ctx)
Thermo 19 get alert pin function.
err_t thermo19_default_cfg(thermo19_t *ctx)
Thermo 19 default configuration function.
err_t thermo19_start_measurement(thermo19_t *ctx)
Thermo 19 start measurement function.
void thermo19_cfg_setup(thermo19_cfg_t *cfg)
Thermo 19 configuration object setup function.
err_t thermo19_select_device(thermo19_t *ctx)
Thermo 19 select device function.
err_t thermo19_read_scratchpad(thermo19_t *ctx, uint8_t *scratchpad)
Thermo 19 read scratchpad function.
void thermo19_gpio_selection(thermo19_cfg_t *cfg, thermo19_gpio_sel_t gpio_sel)
Thermo 19 driver interface setup function.
Thermo 19 Click configuration object.
Definition thermo19.h:221
pin_name_t gp0
Definition thermo19.h:223
pin_name_t alt
Definition thermo19.h:225
thermo19_gpio_sel_t gpio_sel
Definition thermo19.h:227
pin_name_t gp1
Definition thermo19.h:224
Thermo 19 Click context object.
Definition thermo19.h:204
one_wire_rom_address_t rom_addr
Definition thermo19.h:210
uint8_t config
Definition thermo19.h:211
digital_in_t alt
Definition thermo19.h:205
uint8_t address
Definition thermo19.h:212
one_wire_t ow
Definition thermo19.h:208
thermo19_return_value_t
Thermo 19 Click return value data.
Definition thermo19.h:236
@ THERMO19_ERROR
Definition thermo19.h:238
@ THERMO19_OK
Definition thermo19.h:237
thermo19_gpio_sel_t
Thermo 19 Click gpio selector.
Definition thermo19.h:193
@ THERMO19_GPIO_0
Definition thermo19.h:194
@ THERMO19_GPIO_1
Definition thermo19.h:195