c2x4rgb  2.1.0.0
c2x4rgb_delays.h
Go to the documentation of this file.
1 
16 #ifndef C2X4RGB_DELAYS_H
17 #define C2X4RGB_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( 3 ); // ~290ns
25  #define DELAY_TOL Delay_Cyc( 9 ); // ~910ns
26  #define DELAY_T1H Delay_Cyc( 13 ); // ~880ns
27  #define DELAY_T1L // ~380ns
28  #elif MK64FN1M0VDC12
29  /*< Adjusted for MK64FN1M0VDC12 */
30  #define DELAY_TOH Delay_Cyc( 2 ); // ~300ns
31  #define DELAY_TOL Delay_Cyc( 5 ); // ~900ns
32  #define DELAY_T1H Delay_Cyc( 9 ); // ~880ns
33  #define DELAY_T1L // ~480ns
34  #elif PIC32MX795F512L
35  /*< Adjusted for PIC32MX795F512L */
36  #define DELAY_TOH \
37  asm nop; \
38  asm nop; \
39  asm nop; // ~290ns
40  #define DELAY_TOL \
41  asm nop; \
42  asm nop; \
43  asm nop; \
44  asm nop; // ~930ns
45  #define DELAY_T1H Delay_Cyc( 4 ); // ~870ns
46  #define DELAY_T1L // ~1010ns
47  #else
48  #error "Logic delays are not defined for the selected MCU"
49  #endif
50 #elif __clang__
51  #ifdef STM32F407ZG
52  /*< Adjusted for STM32F407ZG */
53  #define DELAY_TOH \
54  asm("nop"); \
55  asm("nop"); \
56  asm("nop"); \
57  asm("nop"); \
58  asm("nop"); \
59  asm("nop"); \
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"); // ~300ns
82  #define DELAY_TOL Delay_Cyc( 7 ); // ~910ns
83  #define DELAY_T1H Delay_Cyc( 13 ); // ~890ns
84  #define DELAY_T1L // ~440ns
85  #elif MK64
86  /*< Adjusted for MK64FN1M0VDC12 */
87  #define DELAY_TOH \
88  asm("nop"); \
89  asm("nop"); \
90  asm("nop"); \
91  asm("nop"); \
92  asm("nop"); \
93  asm("nop"); \
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"); // ~290ns
104  #define DELAY_TOL Delay_Cyc( 4 ); // ~880ns
105  #define DELAY_T1H Delay_Cyc( 18 ); // ~900ns
106  #define DELAY_T1L // ~540ns
107  #elif TM4C129
108  /*< Adjusted for TM4C129XNCZAD */
109  #define DELAY_TOH \
110  asm("nop"); \
111  asm("nop"); \
112  asm("nop"); \
113  asm("nop"); \
114  asm("nop"); \
115  asm("nop"); \
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"); // ~310ns
126  #define DELAY_TOL \
127  asm("nop"); \
128  asm("nop"); \
129  asm("nop"); \
130  asm("nop"); \
131  asm("nop"); \
132  asm("nop"); \
133  asm("nop"); \
134  asm("nop"); \
135  asm("nop"); \
136  asm("nop"); \
137  asm("nop"); \
138  asm("nop"); \
139  asm("nop"); \
140  asm("nop"); \
141  asm("nop"); \
142  asm("nop"); \
143  asm("nop"); \
144  asm("nop"); \
145  asm("nop"); \
146  asm("nop"); \
147  asm("nop"); \
148  asm("nop"); \
149  asm("nop"); \
150  asm("nop"); // ~880ns
151  #define DELAY_T1H Delay_Cyc( 7 ); // ~870ns
152  #define DELAY_T1L // ~750ns
153  #elif GD32VF103VBT6
154  /*< Adjusted for GD32VF103VBT6 */
155  #define DELAY_TOH \
156  asm("nop"); \
157  asm("nop"); \
158  asm("nop"); \
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"); // ~290ns
168  #define DELAY_TOL \
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"); \
191  asm("nop"); \
192  asm("nop"); \
193  asm("nop"); \
194  asm("nop"); \
195  asm("nop"); \
196  asm("nop"); \
197  asm("nop"); \
198  asm("nop"); \
199  asm("nop"); \
200  asm("nop"); // ~900ns
201  #define DELAY_T1H Delay_Cyc( 3 ); // ~910ns
202  #define DELAY_T1L // ~640ns
203  #else
204  #error "Logic delays are not defined for the selected MCU"
205  #endif
206 #elif __GNUC__
207  #ifdef STM32F407ZG
208  /*< Adjusted for STM32F407ZG */
209  #define DELAY_TOH \
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"); \
232  asm("nop"); \
233  asm("nop"); \
234  asm("nop"); \
235  asm("nop"); \
236  asm("nop"); \
237  asm("nop"); \
238  asm("nop"); \
239  asm("nop"); \
240  asm("nop"); \
241  asm("nop"); // ~300ns
242  #define DELAY_TOL Delay_Cyc( 5 ); // ~910ns
243  #define DELAY_T1H Delay_Cyc( 11 ); // ~900ns
244  #define DELAY_T1L // ~420ns
245  #elif MK64
246  /*< Adjusted for MK64FN1M0VDC12 */
247  #define DELAY_TOH \
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"); \
262  asm("nop"); \
263  asm("nop"); \
264  asm("nop"); \
265  asm("nop"); \
266  asm("nop"); \
267  asm("nop"); \
268  asm("nop"); \
269  asm("nop"); \
270  asm("nop"); \
271  asm("nop"); // ~310ns
272  #define DELAY_TOL Delay_Cyc( 3 ); // ~890ns
273  #define DELAY_T1H Delay_Cyc( 16 ); // ~900ns
274  #define DELAY_T1L // ~490ns
275  #elif GD32VF103VBT6
276  /*< Adjusted for GD32VF103VBT6 */
277  #define DELAY_TOH \
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"); \
290  asm("nop"); \
291  asm("nop"); \
292  asm("nop"); \
293  asm("nop"); // ~300ns
294  #define DELAY_TOL Delay_Cyc( 2 ); // ~950ns
295  #define DELAY_T1H Delay_Cyc( 5 ); // ~910ns
296  #define DELAY_T1L // ~590ns
297  #else
298  #error "Logic delays are not defined for the selected MCU"
299  #endif
300 #else
301  #error "Logic delays are not defined for the selected toolchain"
302 #endif
303 
304 #endif // C2X4RGB_DELAYS_H