c10x10rgb 2.0.0.0
c10x10rgb_delays.h
Go to the documentation of this file.
1
16#ifndef C10X10RGB_DELAYS_H
17#define C10X10RGB_DELAYS_H
18
19// Delay adjustment for specific systems.
20// Adjusted specifically for NECTO v6.1.0 and mikroSDK v2.11.0.
21#ifdef __MIKROC_AI__
22 #ifdef STM32F407ZG
23 /*< Adjusted for STM32F407ZG */
24 #define DELAY_TOH Delay_Cyc( 3 ); // ~280ns
25 #define DELAY_TOL Delay_Cyc( 7 ); // ~790ns
26 #define DELAY_T1H Delay_Cyc( 12 ); // ~820ns
27 #define DELAY_T1L Delay_Cyc( 8 ); // ~840ns
28 #elif MK64FN1M0VDC12
29 /*< Adjusted for MK64FN1M0VDC12 */
30 #define DELAY_TOH Delay_Cyc( 2 ); // ~300ns
31 #define DELAY_TOL Delay_Cyc( 4 ); // ~780ns
32 #define DELAY_T1H Delay_Cyc( 7 ); // ~790ns
33 #define DELAY_T1L Delay_Cyc( 3 ); // ~810ns
34 #elif TM4C129XNCZAD
35 /*< Adjusted for TM4C129XNCZAD */
36 #define DELAY_TOH // ~420ns
37 #define DELAY_TOL asm nop; // ~930ns
38 #define DELAY_T1H Delay_Cyc( 4 ); // ~790ns
39 #define DELAY_T1L // ~960ns
40 #elif PIC32MX795F512L
41 /*< Adjusted for PIC32MX795F512L */
42 #define DELAY_TOH // ~250ns
43 #define DELAY_TOL // ~710ns
44 #define DELAY_T1H Delay_Cyc( 4 ); // ~830ns
45 #define DELAY_T1L // ~900ns
46 #else
47 #error "Logic delays are not defined for the selected MCU"
48 #endif
49#elif __clang__
50 #ifdef STM32F407ZG
51 /*< Adjusted for STM32F407ZG */
52 #define DELAY_TOH Delay_Cyc( 2 ); // ~370ns
53 #define DELAY_TOL Delay_Cyc( 4 ); // ~740ns
54 #define DELAY_T1H Delay_Cyc( 10 ); // ~740ns
55 #define DELAY_T1L Delay_Cyc( 4 ); // ~750ns
56 #elif MK64
57 /*< Adjusted for MK64FN1M0VDC12 */
58 #define DELAY_TOH Delay_Cyc( 2 ); // ~360ns
59 #define DELAY_TOL Delay_Cyc( 2 ); // ~700ns
60 #define DELAY_T1H Delay_Cyc( 12 ); // ~740ns
61 #define DELAY_T1L Delay_Cyc( 2 ); // ~760ns
62 #elif TM4C129
63 /*< Adjusted for TM4C129XNCZAD */
64 #define DELAY_TOH \
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"); // ~280ns
77 #define DELAY_TOL \
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"); \
88 asm("nop"); \
89 asm("nop"); // ~760ns
90 #define DELAY_T1H Delay_Cyc( 6 ); // ~820ns
91 #define DELAY_T1L \
92 asm("nop"); \
93 asm("nop"); \
94 asm("nop"); \
95 asm("nop"); \
96 asm("nop"); \
97 asm("nop"); \
98 asm("nop"); \
99 asm("nop"); // ~730ns
100 #elif GD32VF103VBT6
101 /*< Adjusted for GD32VF103VBT6 */
102 #define DELAY_TOH \
103 asm("nop"); \
104 asm("nop"); \
105 asm("nop"); \
106 asm("nop"); \
107 asm("nop"); \
108 asm("nop"); \
109 asm("nop"); \
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"); // ~300ns
119 #define DELAY_TOL \
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"); \
132 asm("nop"); \
133 asm("nop"); \
134 asm("nop"); \
135 asm("nop"); // ~680ns
136 #define DELAY_T1H Delay_Cyc( 2 ); // ~680ns
137 #define DELAY_T1L \
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"); \
151 asm("nop"); \
152 asm("nop"); \
153 asm("nop"); // ~730ns
154 #else
155 #error "Logic delays are not defined for the selected MCU"
156 #endif
157#elif __GNUC__
158 #ifdef STM32F407ZG
159 /*< Adjusted for STM32F407ZG */
160 #define DELAY_TOH \
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"); // ~260ns
185 #define DELAY_TOL Delay_Cyc( 2 ); // ~740ns
186 #define DELAY_T1H Delay_Cyc( 7 ); // ~710ns
187 #define DELAY_T1L Delay_Cyc( 2 ); // ~740ns
188 #elif MK64
189 /*< Adjusted for MK64FN1M0VDC12 */
190 #define DELAY_TOH Delay_Cyc( 2 ); // ~390ns
191 #define DELAY_TOL Delay_Cyc( 2 ); // ~720ns
192 #define DELAY_T1H Delay_Cyc( 10 ); // ~680ns
193 #define DELAY_T1L Delay_Cyc( 4 ); // ~780ns
194 #elif TM4C129
195 /*< Adjusted for TM4C129XNCZAD */
196 #define DELAY_TOH // ~470ns
197 #define DELAY_TOL // ~950ns
198 #define DELAY_T1H Delay_Cyc( 2 ); // ~1000ns
199 #define DELAY_T1L // ~950ns
200 #elif GD32VF103VBT6
201 /*< Adjusted for GD32VF103VBT6 */
202 #define DELAY_TOH \
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"); // ~270ns
219 #define DELAY_TOL Delay_Cyc( 2 ); // ~850ns
220 #define DELAY_T1H Delay_Cyc( 4 ); // ~770ns
221 #define DELAY_T1L Delay_Cyc( 2 ); // ~850ns
222 #else
223 #error "Logic delays are not defined for the selected MCU"
224 #endif
225#else
226 #error "Logic delays are not defined for the selected toolchain"
227#endif
228
229#endif // _C10X10RGB_H_