rgbring  2.1.0.0
rgbring_delays.h
Go to the documentation of this file.
1 
16 #ifndef RGBRING_DELAYS_H
17 #define RGBRING_DELAYS_H
18 
19 // Delay adjustment for specific systems.
20 // Adjusted specifically for NECTO v7.0.2 and mikroSDK v2.11.1.
21 #ifdef __MIKROC_AI__
22  #ifdef STM32F407ZG
23  /*< Adjusted for STM32F407ZG */
24  #define DELAY_TOH Delay_Cyc( 2 ); // ~280ns
25  #define DELAY_TOL Delay_Cyc( 8 ); // ~940ns
26  #define DELAY_T1H Delay_Cyc( 13 ); // ~880ns
27  #define DELAY_T1L // ~420ns
28  #elif MK64FN1M0VDC12
29  /*< Adjusted for MK64FN1M0VDC12 */
30  #define DELAY_TOH Delay_Cyc( 2 ); // ~300ns
31  #define DELAY_TOL Delay_Cyc( 4 ); // ~910ns
32  #define DELAY_T1H Delay_Cyc( 9 ); // ~880ns
33  #define DELAY_T1L // ~510ns
34  #elif TM4C129
35  /*< Adjusted for TM4C129XNCZAD */
36  #define DELAY_TOH // ~390ns
37  #define DELAY_TOL // ~920ns
38  #define DELAY_T1H Delay_Cyc( 6 ); // ~950ns
39  #define DELAY_T1L // ~950ns
40  #elif PIC32MX795F512L
41  /*< Adjusted for PIC32MX795F512L */
42  #define DELAY_TOH \
43  asm nop; \
44  asm nop; \
45  asm nop; // ~300ns
46  #define DELAY_TOL \
47  asm nop; \
48  asm nop; \
49  asm nop; \
50  asm nop; // ~950ns
51  #define DELAY_T1H Delay_Cyc( 4 ); // ~840ns
52  #define DELAY_T1L // ~1050ns
53  #else
54  #error "Logic delays are not defined for the selected MCU"
55  #endif
56 #elif __clang__
57  #ifdef STM32F407ZG
58  /*< Adjusted for STM32F407ZG */
59  #define DELAY_TOH \
60  asm("nop"); \
61  asm("nop"); \
62  asm("nop"); \
63  asm("nop"); \
64  asm("nop"); \
65  asm("nop"); \
66  asm("nop"); \
67  asm("nop"); \
68  asm("nop"); \
69  asm("nop"); \
70  asm("nop"); \
71  asm("nop"); \
72  asm("nop"); \
73  asm("nop"); \
74  asm("nop"); \
75  asm("nop"); \
76  asm("nop"); \
77  asm("nop"); \
78  asm("nop"); \
79  asm("nop"); \
80  asm("nop"); \
81  asm("nop"); \
82  asm("nop"); \
83  asm("nop"); \
84  asm("nop"); \
85  asm("nop"); \
86  asm("nop"); \
87  asm("nop"); // ~300ns
88  #define DELAY_TOL Delay_Cyc( 7 ); // ~920ns
89  #define DELAY_T1H Delay_Cyc( 13 ); // ~890ns
90  #define DELAY_T1L // ~440ns
91  #elif MK64
92  /*< Adjusted for MK64FN1M0VDC12 */
93  #define DELAY_TOH \
94  asm("nop"); \
95  asm("nop"); \
96  asm("nop"); \
97  asm("nop"); \
98  asm("nop"); \
99  asm("nop"); \
100  asm("nop"); \
101  asm("nop"); \
102  asm("nop"); \
103  asm("nop"); \
104  asm("nop"); \
105  asm("nop"); \
106  asm("nop"); \
107  asm("nop"); \
108  asm("nop"); \
109  asm("nop"); // ~290ns
110  #define DELAY_TOL Delay_Cyc( 4 ); // ~960ns
111  #define DELAY_T1H Delay_Cyc( 18 ); // ~900ns
112  #define DELAY_T1L // ~540ns
113  #elif TM4C129
114  /*< Adjusted for TM4C129XNCZAD */
115  #define DELAY_TOH \
116  asm("nop"); \
117  asm("nop"); \
118  asm("nop"); \
119  asm("nop"); \
120  asm("nop"); \
121  asm("nop"); \
122  asm("nop"); \
123  asm("nop"); \
124  asm("nop"); \
125  asm("nop"); \
126  asm("nop"); \
127  asm("nop"); \
128  asm("nop"); \
129  asm("nop"); \
130  asm("nop"); \
131  asm("nop"); // ~320ns
132  #define DELAY_TOL \
133  asm("nop"); \
134  asm("nop"); \
135  asm("nop"); \
136  asm("nop"); \
137  asm("nop"); \
138  asm("nop"); \
139  asm("nop"); \
140  asm("nop"); // ~930ns
141  #define DELAY_T1H Delay_Cyc( 7 ); // ~860ns
142  #define DELAY_T1L // ~770ns
143  #elif GD32VF103VBT6
144  /*< Adjusted for GD32VF103VBT6 */
145  #define DELAY_TOH \
146  asm("nop"); \
147  asm("nop"); \
148  asm("nop"); \
149  asm("nop"); \
150  asm("nop"); \
151  asm("nop"); \
152  asm("nop"); \
153  asm("nop"); \
154  asm("nop"); \
155  asm("nop"); \
156  asm("nop"); \
157  asm("nop"); // ~290ns
158  #define DELAY_TOL \
159  asm("nop"); \
160  asm("nop"); \
161  asm("nop"); \
162  asm("nop"); \
163  asm("nop"); \
164  asm("nop"); \
165  asm("nop"); \
166  asm("nop"); \
167  asm("nop"); \
168  asm("nop"); \
169  asm("nop"); \
170  asm("nop"); \
171  asm("nop"); \
172  asm("nop"); \
173  asm("nop"); \
174  asm("nop"); \
175  asm("nop"); \
176  asm("nop"); \
177  asm("nop"); \
178  asm("nop"); \
179  asm("nop"); \
180  asm("nop"); \
181  asm("nop"); \
182  asm("nop"); \
183  asm("nop"); \
184  asm("nop"); \
185  asm("nop"); \
186  asm("nop"); \
187  asm("nop"); \
188  asm("nop"); \
189  asm("nop"); \
190  asm("nop"); // ~920ns
191  #define DELAY_T1H Delay_Cyc( 3 ); // ~900ns
192  #define DELAY_T1L // ~650ns
193  #else
194  #error "Logic delays are not defined for the selected MCU"
195  #endif
196 #elif __GNUC__
197  #ifdef STM32F407ZG
198  /*< Adjusted for STM32F407ZG */
199  #define DELAY_TOH \
200  asm("nop"); \
201  asm("nop"); \
202  asm("nop"); \
203  asm("nop"); \
204  asm("nop"); \
205  asm("nop"); \
206  asm("nop"); \
207  asm("nop"); \
208  asm("nop"); \
209  asm("nop"); \
210  asm("nop"); \
211  asm("nop"); \
212  asm("nop"); \
213  asm("nop"); \
214  asm("nop"); \
215  asm("nop"); \
216  asm("nop"); \
217  asm("nop"); \
218  asm("nop"); \
219  asm("nop"); \
220  asm("nop"); \
221  asm("nop"); \
222  asm("nop"); \
223  asm("nop"); \
224  asm("nop"); \
225  asm("nop"); \
226  asm("nop"); \
227  asm("nop"); \
228  asm("nop"); \
229  asm("nop"); \
230  asm("nop"); \
231  asm("nop"); // ~300ns
232  #define DELAY_TOL Delay_Cyc( 5 ); // ~920ns
233  #define DELAY_T1H Delay_Cyc( 11 ); // ~900ns
234  #define DELAY_T1L // ~420ns
235  #elif MK64
236  /*< Adjusted for MK64FN1M0VDC12 */
237  #define DELAY_TOH \
238  asm("nop"); \
239  asm("nop"); \
240  asm("nop"); \
241  asm("nop"); \
242  asm("nop"); \
243  asm("nop"); \
244  asm("nop"); \
245  asm("nop"); \
246  asm("nop"); \
247  asm("nop"); \
248  asm("nop"); \
249  asm("nop"); \
250  asm("nop"); \
251  asm("nop"); \
252  asm("nop"); \
253  asm("nop"); \
254  asm("nop"); \
255  asm("nop"); \
256  asm("nop"); \
257  asm("nop"); \
258  asm("nop"); \
259  asm("nop"); \
260  asm("nop"); \
261  asm("nop"); // ~310ns
262  #define DELAY_TOL Delay_Cyc( 2 ); // ~940ns
263  #define DELAY_T1H Delay_Cyc( 16 ); // ~860ns
264  #define DELAY_T1L // ~490ns
265  #elif TM4C129
266  /*< Adjusted for TM4C129XNCZAD */
267  #define DELAY_TOH // ~460ns
268  #define DELAY_TOL // ~1040ns
269  #define DELAY_T1H Delay_Cyc( 2 ); // ~920ns
270  #define DELAY_T1L // ~1020ns
271  #elif GD32VF103VBT6
272  /*< Adjusted for GD32VF103VBT6 */
273  #define DELAY_TOH \
274  asm("nop"); \
275  asm("nop"); \
276  asm("nop"); \
277  asm("nop"); \
278  asm("nop"); \
279  asm("nop"); \
280  asm("nop"); \
281  asm("nop"); \
282  asm("nop"); \
283  asm("nop"); \
284  asm("nop"); \
285  asm("nop"); \
286  asm("nop"); \
287  asm("nop"); \
288  asm("nop"); \
289  asm("nop"); // ~310ns
290  #define DELAY_TOL Delay_Cyc( 2 ); // ~970ns
291  #define DELAY_T1H Delay_Cyc( 5 ); // ~960ns
292  #define DELAY_T1L // ~550ns
293  #else
294  #error "Logic delays are not defined for the selected MCU"
295  #endif
296 #else
297  #error "Logic delays are not defined for the selected toolchain"
298 #endif
299 
300 #endif // RGBRING_DELAYS_H