LibDriver LM75B
Loading...
Searching...
No Matches
driver_lm75b_interrupt_test.c
Go to the documentation of this file.
1
37
39
40static lm75b_handle_t gs_handle;
41
55 float low_threshold, float high_threshold, uint32_t times)
56{
57 uint8_t res;
58 uint32_t i;
59 uint16_t raw;
60 float s;
61 uint16_t reg;
62 lm75b_info_t info;
63
64 /* link interface function */
72
73 /* get lm75b info */
74 res = lm75b_info(&info);
75 if (res != 0)
76 {
77 lm75b_interface_debug_print("lm75b: get info failed.\n");
78
79 return 1;
80 }
81 else
82 {
83 /* print chip information */
84 lm75b_interface_debug_print("lm75b: chip is %s.\n", info.chip_name);
85 lm75b_interface_debug_print("lm75b: manufacturer is %s.\n", info.manufacturer_name);
86 lm75b_interface_debug_print("lm75b: interface is %s.\n", info.interface);
87 lm75b_interface_debug_print("lm75b: driver version is %d.%d.\n", info.driver_version / 1000, (info.driver_version % 1000) / 100);
88 lm75b_interface_debug_print("lm75b: min supply voltage is %0.1fV.\n", info.supply_voltage_min_v);
89 lm75b_interface_debug_print("lm75b: max supply voltage is %0.1fV.\n", info.supply_voltage_max_v);
90 lm75b_interface_debug_print("lm75b: max current is %0.2fmA.\n", info.max_current_ma);
91 lm75b_interface_debug_print("lm75b: max temperature is %0.1fC.\n", info.temperature_max);
92 lm75b_interface_debug_print("lm75b: min temperature is %0.1fC.\n", info.temperature_min);
93 }
94
95 /* set addr pin */
96 res = lm75b_set_addr_pin(&gs_handle, addr);
97 if (res != 0)
98 {
99 lm75b_interface_debug_print("lm75b: set addr pin failed.\n");
100
101 return 1;
102 }
103
104 /* lm75b init */
105 res = lm75b_init(&gs_handle);
106 if (res != 0)
107 {
108 lm75b_interface_debug_print("lm75b: init failed.\n");
109
110 return 1;
111 }
112
113 /* set interrupt mode */
114 res = lm75b_set_interrupt_mode(&gs_handle, mode);
115 if (res != 0)
116 {
117 lm75b_interface_debug_print("lm75b: set interrupt mode failed.\n");
118 (void)lm75b_deinit(&gs_handle);
119
120 return 1;
121 }
122
123 /* set fault queue 1 */
125 if (res != 0)
126 {
127 lm75b_interface_debug_print("lm75b: set fault queue failed.\n");
128 (void)lm75b_deinit(&gs_handle);
129
130 return 1;
131 }
132
133 /* set os polarity low */
135 if (res != 0)
136 {
137 lm75b_interface_debug_print("lm75b: set os polarity failed.\n");
138 (void)lm75b_deinit(&gs_handle);
139
140 return 1;
141 }
142
143 /* over temperature threshold convert to register */
144 res = lm75b_over_temperature_threshold_convert_to_register(&gs_handle, high_threshold, (uint16_t *)&reg);
145 if (res != 0)
146 {
147 lm75b_interface_debug_print("lm75b: over temperature threshold convert to register failed.\n");
148 (void)lm75b_deinit(&gs_handle);
149
150 return 1;
151 }
152
153 /* set over temperature threshold */
154 res = lm75b_set_over_temperature_threshold(&gs_handle, reg);
155 if (res != 0)
156 {
157 lm75b_interface_debug_print("lm75b: set over temperature threshold failed.\n");
158 (void)lm75b_deinit(&gs_handle);
159
160 return 1;
161 }
162
163 /* hysteresis convert to register */
164 res = lm75b_hysteresis_convert_to_register(&gs_handle, low_threshold, (uint16_t *)&reg);
165 if (res != 0)
166 {
167 lm75b_interface_debug_print("lm75b: hysteresis convert to register failed.\n");
168 (void)lm75b_deinit(&gs_handle);
169
170 return 1;
171 }
172
173 /* set hysteresis */
174 res = lm75b_set_hysteresis(&gs_handle, reg);
175 if (res != 0)
176 {
177 lm75b_interface_debug_print("lm75b: set hysteresis failed.\n");
178 (void)lm75b_deinit(&gs_handle);
179
180 return 1;
181 }
182
183 /* set normal mode */
184 res = lm75b_set_mode(&gs_handle, LM75B_MODE_NORMAL);
185 if (res != 0)
186 {
187 lm75b_interface_debug_print("lm75b: set mode failed.\n");
188 (void)lm75b_deinit(&gs_handle);
189
190 return 1;
191 }
192
193 /* start interrupt test */
194 lm75b_interface_debug_print("lm75b: start interrupt test.\n");
195 for (i = 0; i < times; i++)
196 {
198
199 /* read data */
200 res = lm75b_read(&gs_handle, (uint16_t *)&raw, (float *)&s);
201 if (res != 0)
202 {
203 lm75b_interface_debug_print("lm75b: read failed.\n");
204 (void)lm75b_deinit(&gs_handle);
205
206 return 1;
207 }
208 lm75b_interface_debug_print("lm75b: temperature is %0.3fC.\n", s);
209 if (s > high_threshold)
210 {
211 lm75b_interface_debug_print("lm75b: temperature is over high threshold.\n");
212 }
213 if (s < low_threshold)
214 {
215 lm75b_interface_debug_print("lm75b: temperature is below low threshold.\n");
216 }
217 }
218
219 /* finish interrupt test */
220 lm75b_interface_debug_print("lm75b: finish interrupt test.\n");
221 (void)lm75b_deinit(&gs_handle);
222
223 return 0;
224}
driver lm75b interrupt test header file
struct lm75b_handle_s lm75b_handle_t
lm75b handle structure definition
uint8_t lm75b_set_mode(lm75b_handle_t *handle, lm75b_mode_t mode)
set the chip mode
lm75b_address_t
lm75b address enumeration definition
struct lm75b_info_s lm75b_info_t
lm75b information structure definition
uint8_t lm75b_read(lm75b_handle_t *handle, uint16_t *raw, float *s)
read data from the chip
uint8_t lm75b_info(lm75b_info_t *info)
get chip's information
uint8_t lm75b_set_addr_pin(lm75b_handle_t *handle, lm75b_address_t addr_pin)
set the iic address pin
uint8_t lm75b_init(lm75b_handle_t *handle)
initialize the chip
uint8_t lm75b_deinit(lm75b_handle_t *handle)
close the chip
lm75b_os_operation_mode_t
lm75b os operation enumeration definition
@ LM75B_MODE_NORMAL
@ LM75B_FAULT_QUEUE_1
@ LM75B_OS_POLARITY_LOW
uint8_t lm75b_interface_iic_write(uint8_t addr, uint8_t reg, uint8_t *buf, uint16_t len)
interface iic bus write
uint8_t lm75b_interface_iic_init(void)
interface iic bus init
void lm75b_interface_debug_print(const char *const fmt,...)
interface print format data
uint8_t lm75b_interface_iic_deinit(void)
interface iic bus deinit
uint8_t lm75b_interface_iic_read(uint8_t addr, uint8_t reg, uint8_t *buf, uint16_t len)
interface iic bus read
void lm75b_interface_delay_ms(uint32_t ms)
interface delay ms
uint8_t lm75b_hysteresis_convert_to_register(lm75b_handle_t *handle, float c, uint16_t *reg)
convert the hysteresis value to the register data
uint8_t lm75b_set_hysteresis(lm75b_handle_t *handle, uint16_t hysteresis)
set the hysteresis value
uint8_t lm75b_set_os_polarity(lm75b_handle_t *handle, lm75b_os_polarity_t polarity)
set the chip os polarity
uint8_t lm75b_set_interrupt_mode(lm75b_handle_t *handle, lm75b_os_operation_mode_t mode)
set the chip interrupt mode
uint8_t lm75b_set_fault_queue(lm75b_handle_t *handle, lm75b_fault_queue_t fault_queue)
set the chip fault queue
uint8_t lm75b_set_over_temperature_threshold(lm75b_handle_t *handle, uint16_t threshold)
set the over temperature threshold
uint8_t lm75b_over_temperature_threshold_convert_to_register(lm75b_handle_t *handle, float c, uint16_t *reg)
convert the over temperature threshold to the register data
uint8_t lm75b_interrupt_test(lm75b_address_t addr, lm75b_os_operation_mode_t mode, float low_threshold, float high_threshold, uint32_t times)
interrupt test
float temperature_max
float supply_voltage_max_v
uint32_t driver_version
float temperature_min
float max_current_ma
char manufacturer_name[32]
float supply_voltage_min_v
char interface[8]
char chip_name[32]