1+ /***************************************************************************/ /**
2+ * @file dummy_example.c
3+ * @brief exmaple program for Maxim platfom of LTC3220 project.
4+ * @author Jan Carlo Roleda ([email protected] ) 5+ ********************************************************************************
6+ * Copyright 2025(c) Analog Devices, Inc.
7+ *
8+ * Redistribution and use in source and binary forms, with or without
9+ * modification, are permitted provided that the following conditions are met:
10+ *
11+ * 1. Redistributions of source code must retain the above copyright notice,
12+ * this list of conditions and the following disclaimer.
13+ *
14+ * 2. Redistributions in binary form must reproduce the above copyright notice,
15+ * this list of conditions and the following disclaimer in the documentation
16+ * and/or other materials provided with the distribution.
17+ *
18+ * 3. Neither the name of Analog Devices, Inc. nor the names of its
19+ * contributors may be used to endorse or promote products derived from this
20+ * software without specific prior written permission.
21+ *
22+ * THIS SOFTWARE IS PROVIDED BY ANALOG DEVICES, INC. “AS IS” AND ANY EXPRESS OR
23+ * IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF
24+ * MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO
25+ * EVENT SHALL ANALOG DEVICES, INC. BE LIABLE FOR ANY DIRECT, INDIRECT,
26+ * INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
27+ * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA,
28+ * OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF
29+ * LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
30+ * NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE,
31+ * EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
32+ *******************************************************************************/
33+
34+ #include "common_data.h"
35+ #include "ltc3220.h"
36+ #include "no_os_delay.h"
37+ #include "example_tests.h"
38+
39+ /***************************************************************************/ /**
40+ * @brief Dummy example main execution.
41+ *
42+ * @return ret - Result of the example execution. If working correctly, will
43+ * execute continuously the while(1) loop and will not return.
44+ *******************************************************************************/
45+ int example_main ()
46+ {
47+ struct ltc3220_dev * ltc3220 ;
48+ int ret ;
49+
50+ ret = ltc3220_init (& ltc3220 , ltc3220_user_init );
51+ if (ret )
52+ goto error ;
53+
54+ while (true) {
55+ /* reset operations */
56+ ret = ltc3220_reset (ltc3220 );
57+ if (ret )
58+ goto error_ltc3220 ;
59+
60+ /* regular light mode */
61+ ltc3220_test_led_singles (ltc3220 , LTC3220_MODE_NORMAL );
62+
63+ no_os_mdelay (3000 );
64+
65+ ret = ltc3220_reset (ltc3220 );
66+ if (ret )
67+ goto error_ltc3220 ;
68+
69+ /* blinking (fast) */
70+ ltc3220_set_blink_fast (ltc3220 , true);
71+ ltc3220_set_blink_long (ltc3220 , false);
72+ ltc3220_test_led_singles (ltc3220 , LTC3220_MODE_BLINK );
73+
74+ no_os_mdelay (3000 );
75+
76+ ret = ltc3220_reset (ltc3220 );
77+ if (ret )
78+ goto error_ltc3220 ;
79+
80+ /* blinking (slow) */
81+ ltc3220_set_blink_fast (ltc3220 , false);
82+ ltc3220_set_blink_long (ltc3220 , true);
83+ ltc3220_test_led_singles (ltc3220 , LTC3220_MODE_BLINK );
84+
85+ no_os_mdelay (3000 );
86+
87+ ret = ltc3220_reset (ltc3220 );
88+ if (ret )
89+ goto error_ltc3220 ;
90+
91+ /* check if voltage output is ~4.6v */
92+ ltc3220_set_cpo_1p5x (ltc3220 , true);
93+
94+
95+ /* gradation (increasing) */
96+ ltc3220_set_grad_increasing (ltc3220 , true);
97+ ltc3220_set_grad_speed (ltc3220 , LTC3220_GRAD_MAX_SPD );
98+ ltc3220_test_led_singles (ltc3220 , LTC3220_MODE_GRADATION );
99+
100+ no_os_mdelay (3000 );
101+
102+ ret = ltc3220_reset (ltc3220 );
103+ if (ret )
104+ goto error_ltc3220 ;
105+
106+ /* gradation (decreasing) */
107+ ltc3220_set_grad_increasing (ltc3220 , false);
108+ ltc3220_set_grad_speed (ltc3220 , LTC3220_GRAD_MAX_SPD );
109+ ltc3220_test_led_singles (ltc3220 , LTC3220_MODE_GRADATION );
110+
111+ no_os_mdelay (3000 );
112+
113+ ret = ltc3220_reset (ltc3220 );
114+ if (ret )
115+ goto error_ltc3220 ;
116+
117+ /* gradation (disabled) = normal mode */
118+ ltc3220_set_grad_speed (ltc3220 , 0 );
119+ ltc3220_test_led_singles (ltc3220 , LTC3220_MODE_GRADATION );
120+
121+ no_os_mdelay (3000 );
122+
123+ ret = ltc3220_reset (ltc3220 );
124+ if (ret )
125+ goto error_ltc3220 ;
126+
127+ /* using different modes on the device */
128+ ltc3220_set_blink_fast (ltc3220 , true);
129+ ltc3220_set_grad_speed (ltc3220 , LTC3220_GRAD_MAX_SPD );
130+ ltc3220_test_led_singles_alt_modes (ltc3220 );
131+
132+ no_os_mdelay (3000 );
133+
134+ ret = ltc3220_reset (ltc3220 );
135+ if (ret )
136+ goto error_ltc3220 ;
137+
138+ /* check if voltage output is ~5.1v */
139+ ltc3220_set_cpo_2x (ltc3220 , true);
140+
141+ /* use parallel and single commands on LEDs */
142+ ltc3220_set_blink_fast (ltc3220 , true);
143+ ltc3220_set_blink_long (ltc3220 , true);
144+ ltc3220_test_led_quick_write_with_indiv (ltc3220 , LTC3220_MODE_BLINK );
145+
146+ no_os_mdelay (3000 );
147+
148+ ret = ltc3220_reset (ltc3220 );
149+ if (ret )
150+ goto error_ltc3220 ;
151+
152+ /* set alternating and shutdown, restore after 5s */
153+ ltc3220_set_cpo_2x (ltc3220 , true);
154+ ltc3220_set_blink_fast (ltc3220 , true);
155+ ltc3220_set_grad_speed (ltc3220 , LTC3220_GRAD_MAX_SPD );
156+ ltc3220_test_led_singles_alt_modes (ltc3220 );
157+ ltc3220_set_shutdown (ltc3220 , true);
158+
159+ no_os_mdelay (5000 );
160+
161+ ltc3220_set_shutdown (ltc3220 , false);
162+
163+ no_os_mdelay (5000 );
164+ }
165+
166+ error_ltc3220 :
167+ ltc3220_remove (ltc3220 );
168+
169+ error :
170+ return -1 ;
171+ }
0 commit comments