LibDriver PCF8563
Loading...
Searching...
No Matches
driver_pcf8563_output_test.c
Go to the documentation of this file.
1
36
38#include <stdlib.h>
39
40static pcf8563_handle_t gs_handle;
41
50uint8_t pcf8563_output_test(uint32_t times)
51{
52 uint8_t res;
53 uint32_t i;
54 pcf8563_info_t info;
55
56 /* link functions */
65
66 /* get pcf8563 info */
67 res = pcf8563_info(&info);
68 if (res != 0)
69 {
70 pcf8563_interface_debug_print("pcf8563: get info failed.\n");
71
72 return 1;
73 }
74 else
75 {
76 /* print pcf8563 info */
77 pcf8563_interface_debug_print("pcf8563: chip is %s.\n", info.chip_name);
78 pcf8563_interface_debug_print("pcf8563: manufacturer is %s.\n", info.manufacturer_name);
79 pcf8563_interface_debug_print("pcf8563: interface is %s.\n", info.interface);
80 pcf8563_interface_debug_print("pcf8563: driver version is %d.%d.\n", info.driver_version / 1000, (info.driver_version % 1000) / 100);
81 pcf8563_interface_debug_print("pcf8563: min supply voltage is %0.1fV.\n", info.supply_voltage_min_v);
82 pcf8563_interface_debug_print("pcf8563: max supply voltage is %0.1fV.\n", info.supply_voltage_max_v);
83 pcf8563_interface_debug_print("pcf8563: max current is %0.2fmA.\n", info.max_current_ma);
84 pcf8563_interface_debug_print("pcf8563: max temperature is %0.1fC.\n", info.temperature_max);
85 pcf8563_interface_debug_print("pcf8563: min temperature is %0.1fC.\n", info.temperature_min);
86 }
87
88 /* start output test */
89 pcf8563_interface_debug_print("pcf8563: start output test.\n");
90
91 /* init pcf8563 */
92 res = pcf8563_init(&gs_handle);
93 if (res != 0)
94 {
95 pcf8563_interface_debug_print("pcf8563: init failed.\n");
96
97 return 1;
98 }
99
100 /* disable rtc stop */
101 res = pcf8563_set_rtc_stop(&gs_handle, PCF8563_BOOL_FALSE);
102 if (res != 0)
103 {
104 pcf8563_interface_debug_print("pcf8563: set rtc stop failed.\n");
105 (void)pcf8563_deinit(&gs_handle);
106
107 return 1;
108 }
109
110 /* disable test mode */
111 res = pcf8563_set_test_mode(&gs_handle, PCF8563_BOOL_FALSE);
112 if (res != 0)
113 {
114 pcf8563_interface_debug_print("pcf8563: set test mode failed.\n");
115 (void)pcf8563_deinit(&gs_handle);
116
117 return 1;
118 }
119
120 /* disable power on reset */
122 if (res != 0)
123 {
124 pcf8563_interface_debug_print("pcf8563: set power on reset failed.\n");
125 (void)pcf8563_deinit(&gs_handle);
126
127 return 1;
128 }
129
130 /* disable minute alarm */
132 if (res != 0)
133 {
134 pcf8563_interface_debug_print("pcf8563: set minute alarm enable failed.\n");
135 (void)pcf8563_deinit(&gs_handle);
136
137 return 1;
138 }
139
140 /* disable hour alarm */
142 if (res != 0)
143 {
144 pcf8563_interface_debug_print("pcf8563: set hour alarm enable failed.\n");
145 (void)pcf8563_deinit(&gs_handle);
146
147 return 1;
148 }
149
150 /* disable day alarm */
152 if (res != 0)
153 {
154 pcf8563_interface_debug_print("pcf8563: set day alarm enable failed.\n");
155 (void)pcf8563_deinit(&gs_handle);
156
157 return 1;
158 }
159
160 /* disable week alarm */
162 if (res != 0)
163 {
164 pcf8563_interface_debug_print("pcf8563: set week alarm enable failed.\n");
165 (void)pcf8563_deinit(&gs_handle);
166
167 return 1;
168 }
169
170 /* disable timer interrupt */
172 if (res != 0)
173 {
174 pcf8563_interface_debug_print("pcf8563: set timer interrupt failed.\n");
175 (void)pcf8563_deinit(&gs_handle);
176
177 return 1;
178 }
179
180 /* disable alarm interrupt */
182 if (res != 0)
183 {
184 pcf8563_interface_debug_print("pcf8563: set alarm interrupt failed.\n");
185 (void)pcf8563_deinit(&gs_handle);
186
187 return 1;
188 }
189
190 /* set interrupt mode pulse */
192 if (res != 0)
193 {
194 pcf8563_interface_debug_print("pcf8563: set interrupt mode failed.\n");
195 (void)pcf8563_deinit(&gs_handle);
196
197 return 1;
198 }
199
200 /* enable clock out */
202 if (res != 0)
203 {
204 pcf8563_interface_debug_print("pcf8563: set clock out enable failed.\n");
205 (void)pcf8563_deinit(&gs_handle);
206
207 return 1;
208 }
209
210 /* set clock out 32.768khz */
212 if (res != 0)
213 {
214 pcf8563_interface_debug_print("pcf8563: set clock out failed.\n");
215 (void)pcf8563_deinit(&gs_handle);
216
217 return 1;
218 }
219
220 /* output */
221 pcf8563_interface_debug_print("pcf8563: set clock out 32.768khz.\n");
222
223 /* loop */
224 for (i = 0; i < times; i++)
225 {
226 /* delay 1000ms */
228
229 /* output */
230 pcf8563_interface_debug_print("pcf8563: run %ds.\n", i + 1);
231 }
232
233 /* set clock out 1.024khz */
235 if (res != 0)
236 {
237 pcf8563_interface_debug_print("pcf8563: set clock out failed.\n");
238 (void)pcf8563_deinit(&gs_handle);
239
240 return 1;
241 }
242
243 /* output */
244 pcf8563_interface_debug_print("pcf8563: set clock out 1.024khz.\n");
245
246 /* loop */
247 for (i = 0; i < times; i++)
248 {
249 /* delay 1000ms */
251
252 /* output */
253 pcf8563_interface_debug_print("pcf8563: run %ds.\n", i + 1);
254 }
255
256 /* set clock out 32hz */
258 if (res != 0)
259 {
260 pcf8563_interface_debug_print("pcf8563: set clock out failed.\n");
261 (void)pcf8563_deinit(&gs_handle);
262
263 return 1;
264 }
265
266 /* output */
267 pcf8563_interface_debug_print("pcf8563: set clock out 32hz.\n");
268
269 /* loop */
270 for (i = 0; i < times; i++)
271 {
272 /* delay 1000ms */
274
275 /* output */
276 pcf8563_interface_debug_print("pcf8563: run %ds.\n", i + 1);
277 }
278
279 /* set clock out 1hz */
281 if (res != 0)
282 {
283 pcf8563_interface_debug_print("pcf8563: set clock out failed.\n");
284 (void)pcf8563_deinit(&gs_handle);
285
286 return 1;
287 }
288
289 /* output */
290 pcf8563_interface_debug_print("pcf8563: set clock out 1hz.\n");
291
292 /* loop */
293 for (i = 0; i < times; i++)
294 {
295 /* delay 1000ms */
297
298 /* output */
299 pcf8563_interface_debug_print("pcf8563: run %ds.\n", i + 1);
300 }
301
302 /* disable clock out */
304 if (res != 0)
305 {
306 pcf8563_interface_debug_print("pcf8563: set clock out enable failed.\n");
307 (void)pcf8563_deinit(&gs_handle);
308
309 return 1;
310 }
311
312 /* finish output test */
313 pcf8563_interface_debug_print("pcf8563: finish output test.\n");
314 (void)pcf8563_deinit(&gs_handle);
315
316 return 0;
317}
driver pcf8563 output test header file
uint8_t pcf8563_info(pcf8563_info_t *info)
get chip's information
uint8_t pcf8563_set_week_alarm_enable(pcf8563_handle_t *handle, pcf8563_bool_t enable)
enable or disable week alarm
uint8_t pcf8563_set_hour_alarm_enable(pcf8563_handle_t *handle, pcf8563_bool_t enable)
enable or disable hour alarm
uint8_t pcf8563_deinit(pcf8563_handle_t *handle)
close the chip
uint8_t pcf8563_set_clock_out(pcf8563_handle_t *handle, pcf8563_clock_out_t clk)
set clock out
uint8_t pcf8563_set_timer_interrupt(pcf8563_handle_t *handle, pcf8563_bool_t enable)
enable or disable timer interrupt
uint8_t pcf8563_set_test_mode(pcf8563_handle_t *handle, pcf8563_bool_t enable)
enable or disable test mode
uint8_t pcf8563_set_clock_out_enable(pcf8563_handle_t *handle, pcf8563_bool_t enable)
enable or disable clock out enable
uint8_t pcf8563_init(pcf8563_handle_t *handle)
initialize the chip
struct pcf8563_info_s pcf8563_info_t
pcf8563 information structure definition
uint8_t pcf8563_set_alarm_interrupt(pcf8563_handle_t *handle, pcf8563_bool_t enable)
enable or disable alarm interrupt
uint8_t pcf8563_set_day_alarm_enable(pcf8563_handle_t *handle, pcf8563_bool_t enable)
enable or disable day alarm
uint8_t pcf8563_set_minute_alarm_enable(pcf8563_handle_t *handle, pcf8563_bool_t enable)
enable or disable minute alarm
uint8_t pcf8563_set_rtc_stop(pcf8563_handle_t *handle, pcf8563_bool_t enable)
enable or disable rtc stop
struct pcf8563_handle_s pcf8563_handle_t
pcf8563 handle structure definition
uint8_t pcf8563_set_interrupt_mode(pcf8563_handle_t *handle, pcf8563_interrupt_mode_t mode)
set the interrupt mode
uint8_t pcf8563_set_power_on_reset(pcf8563_handle_t *handle, pcf8563_bool_t enable)
enable or disable power on reset
@ PCF8563_BOOL_TRUE
@ PCF8563_BOOL_FALSE
@ PCF8563_INTERRUPT_MODE_PULSE
@ PCF8563_CLOCK_OUT_32P768KHZ
@ PCF8563_CLOCK_OUT_32HZ
@ PCF8563_CLOCK_OUT_1P024KHZ
@ PCF8563_CLOCK_OUT_1HZ
uint8_t pcf8563_interface_iic_init(void)
interface iic bus init
uint8_t pcf8563_interface_iic_read(uint8_t addr, uint8_t reg, uint8_t *buf, uint16_t len)
interface iic bus read
uint8_t pcf8563_interface_iic_deinit(void)
interface iic bus deinit
void pcf8563_interface_delay_ms(uint32_t ms)
interface delay ms
void pcf8563_interface_debug_print(const char *const fmt,...)
interface print format data
void pcf8563_interface_receive_callback(uint8_t type)
interface receive callback
uint8_t pcf8563_interface_iic_write(uint8_t addr, uint8_t reg, uint8_t *buf, uint16_t len)
interface iic bus write
uint8_t pcf8563_output_test(uint32_t times)
output test
uint32_t driver_version
char manufacturer_name[32]