LibDriver DS1307
Loading...
Searching...
No Matches
driver_ds1307_output_test.c
Go to the documentation of this file.
1
36
38#include <stdlib.h>
39
40static ds1307_handle_t gs_handle;
41
50uint8_t ds1307_output_test(uint32_t times)
51{
52 uint8_t res;
53 uint32_t i;
54 ds1307_info_t info;
55
56 /* link functions */
64
65 /* get ds1307 info */
66 res = ds1307_info(&info);
67 if (res != 0)
68 {
69 ds1307_interface_debug_print("ds1307: get info failed.\n");
70
71 return 1;
72 }
73 else
74 {
75 /* print ds1307 info */
76 ds1307_interface_debug_print("ds1307: chip is %s.\n", info.chip_name);
77 ds1307_interface_debug_print("ds1307: manufacturer is %s.\n", info.manufacturer_name);
78 ds1307_interface_debug_print("ds1307: interface is %s.\n", info.interface);
79 ds1307_interface_debug_print("ds1307: driver version is %d.%d.\n", info.driver_version / 1000, (info.driver_version % 1000) / 100);
80 ds1307_interface_debug_print("ds1307: min supply voltage is %0.1fV.\n", info.supply_voltage_min_v);
81 ds1307_interface_debug_print("ds1307: max supply voltage is %0.1fV.\n", info.supply_voltage_max_v);
82 ds1307_interface_debug_print("ds1307: max current is %0.2fmA.\n", info.max_current_ma);
83 ds1307_interface_debug_print("ds1307: max temperature is %0.1fC.\n", info.temperature_max);
84 ds1307_interface_debug_print("ds1307: min temperature is %0.1fC.\n", info.temperature_min);
85 }
86
87 /* start output test */
88 ds1307_interface_debug_print("ds1307: start output test.\n");
89
90 /* init ds1307 */
91 res = ds1307_init(&gs_handle);
92 if (res != 0)
93 {
94 ds1307_interface_debug_print("ds1307: init failed.\n");
95
96 return 1;
97 }
98
99 /* set oscillator */
100 res = ds1307_set_oscillator(&gs_handle, DS1307_BOOL_TRUE);
101 if (res != 0)
102 {
103 ds1307_interface_debug_print("ds1307: set oscillator failed.\n");
104 (void)ds1307_deinit(&gs_handle);
105
106 return 1;
107 }
108
109 /* set square wave mode */
111 if (res != 0)
112 {
113 ds1307_interface_debug_print("ds1307: set output mode failed.\n");
114 (void)ds1307_deinit(&gs_handle);
115
116 return 1;
117 }
118
119 /* output */
120 ds1307_interface_debug_print("ds1307: set square wave mode 1Hz.\n");
121
122 /* 1Hz */
124 if (res != 0)
125 {
126 ds1307_interface_debug_print("ds1307: set square wave frequency failed.\n");
127 (void)ds1307_deinit(&gs_handle);
128
129 return 1;
130 }
131
132 /* loop */
133 for (i = 0; i < times; i++)
134 {
135 /* delay 1000ms */
137
138 /* output */
139 ds1307_interface_debug_print("ds1307: run %ds.\n", i + 1);
140 }
141
142 /* output */
143 ds1307_interface_debug_print("ds1307: set square wave mode 4096Hz.\n");
144
145 /* 4096Hz */
147 if (res != 0)
148 {
149 ds1307_interface_debug_print("ds1307: set square wave frequency failed.\n");
150 (void)ds1307_deinit(&gs_handle);
151
152 return 1;
153 }
154
155 /* loop */
156 for (i = 0; i < times; i++)
157 {
158 /* delay 1000ms */
160
161 /* output */
162 ds1307_interface_debug_print("ds1307: run %ds.\n", i + 1);
163 }
164
165 /* output */
166 ds1307_interface_debug_print("ds1307: set square wave mode 8192Hz.\n");
167
168 /* 8192Hz */
170 if (res != 0)
171 {
172 ds1307_interface_debug_print("ds1307: set square wave frequency failed.\n");
173 (void)ds1307_deinit(&gs_handle);
174
175 return 1;
176 }
177
178 /* loop */
179 for (i = 0; i < times; i++)
180 {
181 /* delay 1000ms */
183
184 /* output */
185 ds1307_interface_debug_print("ds1307: run %ds.\n", i + 1);
186 }
187
188 /* output */
189 ds1307_interface_debug_print("ds1307: set square wave mode 32768Hz.\n");
190
191 /* 32768Hz */
193 if (res != 0)
194 {
195 ds1307_interface_debug_print("ds1307: set square wave frequency failed.\n");
196 (void)ds1307_deinit(&gs_handle);
197
198 return 1;
199 }
200
201 /* loop */
202 for (i = 0; i < times; i++)
203 {
204 /* delay 1000ms */
206
207 /* output */
208 ds1307_interface_debug_print("ds1307: run %ds.\n", i + 1);
209 }
210
211 /* set level mode */
213 if (res != 0)
214 {
215 ds1307_interface_debug_print("ds1307: set output mode failed.\n");
216 (void)ds1307_deinit(&gs_handle);
217
218 return 1;
219 }
220
221 /* output */
222 ds1307_interface_debug_print("ds1307: set output mode level high.\n");
223
224 /* set high */
226 if (res != 0)
227 {
228 ds1307_interface_debug_print("ds1307: set output level failed.\n");
229 (void)ds1307_deinit(&gs_handle);
230
231 return 1;
232 }
233
234 /* loop */
235 for (i = 0; i < times; i++)
236 {
237 /* delay 1000ms */
239
240 /* output */
241 ds1307_interface_debug_print("ds1307: run %ds.\n", i + 1);
242 }
243
244 /* output */
245 ds1307_interface_debug_print("ds1307: set output mode level low.\n");
246
247 /* set low */
249 if (res != 0)
250 {
251 ds1307_interface_debug_print("ds1307: set output level failed.\n");
252 (void)ds1307_deinit(&gs_handle);
253
254 return 1;
255 }
256
257 /* loop */
258 for (i = 0; i < times; i++)
259 {
260 /* delay 1000ms */
262
263 /* output */
264 ds1307_interface_debug_print("ds1307: run %ds.\n", i + 1);
265 }
266
267 /* finish output test */
268 ds1307_interface_debug_print("ds1307: finish output test.\n");
269 (void)ds1307_deinit(&gs_handle);
270
271 return 0;
272}
driver ds1307 output test header file
uint8_t ds1307_info(ds1307_info_t *info)
get chip's information
struct ds1307_info_s ds1307_info_t
ds1307 information structure definition
struct ds1307_handle_s ds1307_handle_t
ds1307 handle structure definition
uint8_t ds1307_set_output_mode(ds1307_handle_t *handle, ds1307_output_mode_t mode)
set the output mode
uint8_t ds1307_set_oscillator(ds1307_handle_t *handle, ds1307_bool_t enable)
enable or disable the oscillator
uint8_t ds1307_init(ds1307_handle_t *handle)
initialize the chip
uint8_t ds1307_set_output_level(ds1307_handle_t *handle, ds1307_output_level_t level)
set the output level
uint8_t ds1307_set_square_wave_frequency(ds1307_handle_t *handle, ds1307_square_wave_frequency_t freq)
set the square wave frequency
uint8_t ds1307_deinit(ds1307_handle_t *handle)
close the chip
@ DS1307_SQUARE_WAVE_FREQUENCY_4096_HZ
@ DS1307_SQUARE_WAVE_FREQUENCY_8192_HZ
@ DS1307_SQUARE_WAVE_FREQUENCY_32768_HZ
@ DS1307_SQUARE_WAVE_FREQUENCY_1_HZ
@ DS1307_OUTPUT_LEVEL_HIGH
@ DS1307_OUTPUT_LEVEL_LOW
@ DS1307_BOOL_TRUE
@ DS1307_OUTPUT_MODE_SQUARE_WAVE
@ DS1307_OUTPUT_MODE_LEVEL
void ds1307_interface_debug_print(const char *const fmt,...)
interface print format data
uint8_t ds1307_interface_iic_deinit(void)
interface iic bus deinit
uint8_t ds1307_interface_iic_read(uint8_t addr, uint8_t reg, uint8_t *buf, uint16_t len)
interface iic bus read
uint8_t ds1307_interface_iic_init(void)
interface iic bus init
uint8_t ds1307_interface_iic_write(uint8_t addr, uint8_t reg, uint8_t *buf, uint16_t len)
interface iic bus write
void ds1307_interface_delay_ms(uint32_t ms)
interface delay ms
uint8_t ds1307_output_test(uint32_t times)
output test
float supply_voltage_max_v
uint32_t driver_version
char manufacturer_name[32]
float supply_voltage_min_v
char chip_name[32]