@@ -52,289 +52,24 @@ class SPISettings {
5252 init_MightInline (clock, bitOrder, dataMode);
5353 }
5454 }
55- SPISettings () {
56- init_AlwaysInline (4000000 , MSBFIRST, SPI_MODE0);
57- }
55+ SPISettings () { init_AlwaysInline (4000000 , MSBFIRST, SPI_MODE0); }
5856private:
5957 void init_MightInline (uint32_t clock, BitOrder bitOrder, uint8_t dataMode) {
6058 init_AlwaysInline (clock, bitOrder, dataMode);
6159 }
62- void init_AlwaysInline (uint32_t clock, BitOrder bitOrder, uint8_t dataMode)
63- __attribute__((__always_inline__)) {
64- uint8_t div;
60+ void init_AlwaysInline (uint32_t clock, BitOrder bitOrder, uint8_t dataMode) __attribute__((__always_inline__)) {
6561 border = bitOrder;
66- if (__builtin_constant_p (clock)) {
67- if (clock >= F_CPU / 2 ) div = 2 ;
68- else if (clock >= F_CPU / 3 ) div = 3 ;
69- else if (clock >= F_CPU / 4 ) div = 4 ;
70- else if (clock >= F_CPU / 5 ) div = 5 ;
71- else if (clock >= F_CPU / 6 ) div = 6 ;
72- else if (clock >= F_CPU / 7 ) div = 7 ;
73- else if (clock >= F_CPU / 8 ) div = 8 ;
74- else if (clock >= F_CPU / 9 ) div = 9 ;
75- else if (clock >= F_CPU / 10 ) div = 10 ;
76- else if (clock >= F_CPU / 11 ) div = 11 ;
77- else if (clock >= F_CPU / 12 ) div = 12 ;
78- else if (clock >= F_CPU / 13 ) div = 13 ;
79- else if (clock >= F_CPU / 14 ) div = 14 ;
80- else if (clock >= F_CPU / 15 ) div = 15 ;
81- else if (clock >= F_CPU / 16 ) div = 16 ;
82- else if (clock >= F_CPU / 17 ) div = 17 ;
83- else if (clock >= F_CPU / 18 ) div = 18 ;
84- else if (clock >= F_CPU / 19 ) div = 19 ;
85- else if (clock >= F_CPU / 20 ) div = 20 ;
86- else if (clock >= F_CPU / 21 ) div = 21 ;
87- else if (clock >= F_CPU / 22 ) div = 22 ;
88- else if (clock >= F_CPU / 23 ) div = 23 ;
89- else if (clock >= F_CPU / 24 ) div = 24 ;
90- else if (clock >= F_CPU / 25 ) div = 25 ;
91- else if (clock >= F_CPU / 26 ) div = 26 ;
92- else if (clock >= F_CPU / 27 ) div = 27 ;
93- else if (clock >= F_CPU / 28 ) div = 28 ;
94- else if (clock >= F_CPU / 29 ) div = 29 ;
95- else if (clock >= F_CPU / 30 ) div = 30 ;
96- else if (clock >= F_CPU / 31 ) div = 31 ;
97- else if (clock >= F_CPU / 32 ) div = 32 ;
98- else if (clock >= F_CPU / 33 ) div = 33 ;
99- else if (clock >= F_CPU / 34 ) div = 34 ;
100- else if (clock >= F_CPU / 35 ) div = 35 ;
101- else if (clock >= F_CPU / 36 ) div = 36 ;
102- else if (clock >= F_CPU / 37 ) div = 37 ;
103- else if (clock >= F_CPU / 38 ) div = 38 ;
104- else if (clock >= F_CPU / 39 ) div = 39 ;
105- else if (clock >= F_CPU / 40 ) div = 40 ;
106- else if (clock >= F_CPU / 41 ) div = 41 ;
107- else if (clock >= F_CPU / 42 ) div = 42 ;
108- else if (clock >= F_CPU / 43 ) div = 43 ;
109- else if (clock >= F_CPU / 44 ) div = 44 ;
110- else if (clock >= F_CPU / 45 ) div = 45 ;
111- else if (clock >= F_CPU / 46 ) div = 46 ;
112- else if (clock >= F_CPU / 47 ) div = 47 ;
113- else if (clock >= F_CPU / 48 ) div = 48 ;
114- else if (clock >= F_CPU / 49 ) div = 49 ;
115- else if (clock >= F_CPU / 50 ) div = 50 ;
116- else if (clock >= F_CPU / 51 ) div = 51 ;
117- else if (clock >= F_CPU / 52 ) div = 52 ;
118- else if (clock >= F_CPU / 53 ) div = 53 ;
119- else if (clock >= F_CPU / 54 ) div = 54 ;
120- else if (clock >= F_CPU / 55 ) div = 55 ;
121- else if (clock >= F_CPU / 56 ) div = 56 ;
122- else if (clock >= F_CPU / 57 ) div = 57 ;
123- else if (clock >= F_CPU / 58 ) div = 58 ;
124- else if (clock >= F_CPU / 59 ) div = 59 ;
125- else if (clock >= F_CPU / 60 ) div = 60 ;
126- else if (clock >= F_CPU / 61 ) div = 61 ;
127- else if (clock >= F_CPU / 62 ) div = 62 ;
128- else if (clock >= F_CPU / 63 ) div = 63 ;
129- else if (clock >= F_CPU / 64 ) div = 64 ;
130- else if (clock >= F_CPU / 65 ) div = 65 ;
131- else if (clock >= F_CPU / 66 ) div = 66 ;
132- else if (clock >= F_CPU / 67 ) div = 67 ;
133- else if (clock >= F_CPU / 68 ) div = 68 ;
134- else if (clock >= F_CPU / 69 ) div = 69 ;
135- else if (clock >= F_CPU / 70 ) div = 70 ;
136- else if (clock >= F_CPU / 71 ) div = 71 ;
137- else if (clock >= F_CPU / 72 ) div = 72 ;
138- else if (clock >= F_CPU / 73 ) div = 73 ;
139- else if (clock >= F_CPU / 74 ) div = 74 ;
140- else if (clock >= F_CPU / 75 ) div = 75 ;
141- else if (clock >= F_CPU / 76 ) div = 76 ;
142- else if (clock >= F_CPU / 77 ) div = 77 ;
143- else if (clock >= F_CPU / 78 ) div = 78 ;
144- else if (clock >= F_CPU / 79 ) div = 79 ;
145- else if (clock >= F_CPU / 80 ) div = 80 ;
146- else if (clock >= F_CPU / 81 ) div = 81 ;
147- else if (clock >= F_CPU / 82 ) div = 82 ;
148- else if (clock >= F_CPU / 83 ) div = 83 ;
149- else if (clock >= F_CPU / 84 ) div = 84 ;
150- else if (clock >= F_CPU / 85 ) div = 85 ;
151- else if (clock >= F_CPU / 86 ) div = 86 ;
152- else if (clock >= F_CPU / 87 ) div = 87 ;
153- else if (clock >= F_CPU / 88 ) div = 88 ;
154- else if (clock >= F_CPU / 89 ) div = 89 ;
155- else if (clock >= F_CPU / 90 ) div = 90 ;
156- else if (clock >= F_CPU / 91 ) div = 91 ;
157- else if (clock >= F_CPU / 92 ) div = 92 ;
158- else if (clock >= F_CPU / 93 ) div = 93 ;
159- else if (clock >= F_CPU / 94 ) div = 94 ;
160- else if (clock >= F_CPU / 95 ) div = 95 ;
161- else if (clock >= F_CPU / 96 ) div = 96 ;
162- else if (clock >= F_CPU / 97 ) div = 97 ;
163- else if (clock >= F_CPU / 98 ) div = 98 ;
164- else if (clock >= F_CPU / 99 ) div = 99 ;
165- else if (clock >= F_CPU / 100 ) div = 100 ;
166- else if (clock >= F_CPU / 101 ) div = 101 ;
167- else if (clock >= F_CPU / 102 ) div = 102 ;
168- else if (clock >= F_CPU / 103 ) div = 103 ;
169- else if (clock >= F_CPU / 104 ) div = 104 ;
170- else if (clock >= F_CPU / 105 ) div = 105 ;
171- else if (clock >= F_CPU / 106 ) div = 106 ;
172- else if (clock >= F_CPU / 107 ) div = 107 ;
173- else if (clock >= F_CPU / 108 ) div = 108 ;
174- else if (clock >= F_CPU / 109 ) div = 109 ;
175- else if (clock >= F_CPU / 110 ) div = 110 ;
176- else if (clock >= F_CPU / 111 ) div = 111 ;
177- else if (clock >= F_CPU / 112 ) div = 112 ;
178- else if (clock >= F_CPU / 113 ) div = 113 ;
179- else if (clock >= F_CPU / 114 ) div = 114 ;
180- else if (clock >= F_CPU / 115 ) div = 115 ;
181- else if (clock >= F_CPU / 116 ) div = 116 ;
182- else if (clock >= F_CPU / 117 ) div = 117 ;
183- else if (clock >= F_CPU / 118 ) div = 118 ;
184- else if (clock >= F_CPU / 119 ) div = 119 ;
185- else if (clock >= F_CPU / 120 ) div = 120 ;
186- else if (clock >= F_CPU / 121 ) div = 121 ;
187- else if (clock >= F_CPU / 122 ) div = 122 ;
188- else if (clock >= F_CPU / 123 ) div = 123 ;
189- else if (clock >= F_CPU / 124 ) div = 124 ;
190- else if (clock >= F_CPU / 125 ) div = 125 ;
191- else if (clock >= F_CPU / 126 ) div = 126 ;
192- else if (clock >= F_CPU / 127 ) div = 127 ;
193- else if (clock >= F_CPU / 128 ) div = 128 ;
194- else if (clock >= F_CPU / 129 ) div = 129 ;
195- else if (clock >= F_CPU / 130 ) div = 130 ;
196- else if (clock >= F_CPU / 131 ) div = 131 ;
197- else if (clock >= F_CPU / 132 ) div = 132 ;
198- else if (clock >= F_CPU / 133 ) div = 133 ;
199- else if (clock >= F_CPU / 134 ) div = 134 ;
200- else if (clock >= F_CPU / 135 ) div = 135 ;
201- else if (clock >= F_CPU / 136 ) div = 136 ;
202- else if (clock >= F_CPU / 137 ) div = 137 ;
203- else if (clock >= F_CPU / 138 ) div = 138 ;
204- else if (clock >= F_CPU / 139 ) div = 139 ;
205- else if (clock >= F_CPU / 140 ) div = 140 ;
206- else if (clock >= F_CPU / 141 ) div = 141 ;
207- else if (clock >= F_CPU / 142 ) div = 142 ;
208- else if (clock >= F_CPU / 143 ) div = 143 ;
209- else if (clock >= F_CPU / 144 ) div = 144 ;
210- else if (clock >= F_CPU / 145 ) div = 145 ;
211- else if (clock >= F_CPU / 146 ) div = 146 ;
212- else if (clock >= F_CPU / 147 ) div = 147 ;
213- else if (clock >= F_CPU / 148 ) div = 148 ;
214- else if (clock >= F_CPU / 149 ) div = 149 ;
215- else if (clock >= F_CPU / 150 ) div = 150 ;
216- else if (clock >= F_CPU / 151 ) div = 151 ;
217- else if (clock >= F_CPU / 152 ) div = 152 ;
218- else if (clock >= F_CPU / 153 ) div = 153 ;
219- else if (clock >= F_CPU / 154 ) div = 154 ;
220- else if (clock >= F_CPU / 155 ) div = 155 ;
221- else if (clock >= F_CPU / 156 ) div = 156 ;
222- else if (clock >= F_CPU / 157 ) div = 157 ;
223- else if (clock >= F_CPU / 158 ) div = 158 ;
224- else if (clock >= F_CPU / 159 ) div = 159 ;
225- else if (clock >= F_CPU / 160 ) div = 160 ;
226- else if (clock >= F_CPU / 161 ) div = 161 ;
227- else if (clock >= F_CPU / 162 ) div = 162 ;
228- else if (clock >= F_CPU / 163 ) div = 163 ;
229- else if (clock >= F_CPU / 164 ) div = 164 ;
230- else if (clock >= F_CPU / 165 ) div = 165 ;
231- else if (clock >= F_CPU / 166 ) div = 166 ;
232- else if (clock >= F_CPU / 167 ) div = 167 ;
233- else if (clock >= F_CPU / 168 ) div = 168 ;
234- else if (clock >= F_CPU / 169 ) div = 169 ;
235- else if (clock >= F_CPU / 170 ) div = 170 ;
236- else if (clock >= F_CPU / 171 ) div = 171 ;
237- else if (clock >= F_CPU / 172 ) div = 172 ;
238- else if (clock >= F_CPU / 173 ) div = 173 ;
239- else if (clock >= F_CPU / 174 ) div = 174 ;
240- else if (clock >= F_CPU / 175 ) div = 175 ;
241- else if (clock >= F_CPU / 176 ) div = 176 ;
242- else if (clock >= F_CPU / 177 ) div = 177 ;
243- else if (clock >= F_CPU / 178 ) div = 178 ;
244- else if (clock >= F_CPU / 179 ) div = 179 ;
245- else if (clock >= F_CPU / 180 ) div = 180 ;
246- else if (clock >= F_CPU / 181 ) div = 181 ;
247- else if (clock >= F_CPU / 182 ) div = 182 ;
248- else if (clock >= F_CPU / 183 ) div = 183 ;
249- else if (clock >= F_CPU / 184 ) div = 184 ;
250- else if (clock >= F_CPU / 185 ) div = 185 ;
251- else if (clock >= F_CPU / 186 ) div = 186 ;
252- else if (clock >= F_CPU / 187 ) div = 187 ;
253- else if (clock >= F_CPU / 188 ) div = 188 ;
254- else if (clock >= F_CPU / 189 ) div = 189 ;
255- else if (clock >= F_CPU / 190 ) div = 190 ;
256- else if (clock >= F_CPU / 191 ) div = 191 ;
257- else if (clock >= F_CPU / 192 ) div = 192 ;
258- else if (clock >= F_CPU / 193 ) div = 193 ;
259- else if (clock >= F_CPU / 194 ) div = 194 ;
260- else if (clock >= F_CPU / 195 ) div = 195 ;
261- else if (clock >= F_CPU / 196 ) div = 196 ;
262- else if (clock >= F_CPU / 197 ) div = 197 ;
263- else if (clock >= F_CPU / 198 ) div = 198 ;
264- else if (clock >= F_CPU / 199 ) div = 199 ;
265- else if (clock >= F_CPU / 200 ) div = 200 ;
266- else if (clock >= F_CPU / 201 ) div = 201 ;
267- else if (clock >= F_CPU / 202 ) div = 202 ;
268- else if (clock >= F_CPU / 203 ) div = 203 ;
269- else if (clock >= F_CPU / 204 ) div = 204 ;
270- else if (clock >= F_CPU / 205 ) div = 205 ;
271- else if (clock >= F_CPU / 206 ) div = 206 ;
272- else if (clock >= F_CPU / 207 ) div = 207 ;
273- else if (clock >= F_CPU / 208 ) div = 208 ;
274- else if (clock >= F_CPU / 209 ) div = 209 ;
275- else if (clock >= F_CPU / 210 ) div = 210 ;
276- else if (clock >= F_CPU / 211 ) div = 211 ;
277- else if (clock >= F_CPU / 212 ) div = 212 ;
278- else if (clock >= F_CPU / 213 ) div = 213 ;
279- else if (clock >= F_CPU / 214 ) div = 214 ;
280- else if (clock >= F_CPU / 215 ) div = 215 ;
281- else if (clock >= F_CPU / 216 ) div = 216 ;
282- else if (clock >= F_CPU / 217 ) div = 217 ;
283- else if (clock >= F_CPU / 218 ) div = 218 ;
284- else if (clock >= F_CPU / 219 ) div = 219 ;
285- else if (clock >= F_CPU / 220 ) div = 220 ;
286- else if (clock >= F_CPU / 221 ) div = 221 ;
287- else if (clock >= F_CPU / 222 ) div = 222 ;
288- else if (clock >= F_CPU / 223 ) div = 223 ;
289- else if (clock >= F_CPU / 224 ) div = 224 ;
290- else if (clock >= F_CPU / 225 ) div = 225 ;
291- else if (clock >= F_CPU / 226 ) div = 226 ;
292- else if (clock >= F_CPU / 227 ) div = 227 ;
293- else if (clock >= F_CPU / 228 ) div = 228 ;
294- else if (clock >= F_CPU / 229 ) div = 229 ;
295- else if (clock >= F_CPU / 230 ) div = 230 ;
296- else if (clock >= F_CPU / 231 ) div = 231 ;
297- else if (clock >= F_CPU / 232 ) div = 232 ;
298- else if (clock >= F_CPU / 233 ) div = 233 ;
299- else if (clock >= F_CPU / 234 ) div = 234 ;
300- else if (clock >= F_CPU / 235 ) div = 235 ;
301- else if (clock >= F_CPU / 236 ) div = 236 ;
302- else if (clock >= F_CPU / 237 ) div = 237 ;
303- else if (clock >= F_CPU / 238 ) div = 238 ;
304- else if (clock >= F_CPU / 239 ) div = 239 ;
305- else if (clock >= F_CPU / 240 ) div = 240 ;
306- else if (clock >= F_CPU / 241 ) div = 241 ;
307- else if (clock >= F_CPU / 242 ) div = 242 ;
308- else if (clock >= F_CPU / 243 ) div = 243 ;
309- else if (clock >= F_CPU / 244 ) div = 244 ;
310- else if (clock >= F_CPU / 245 ) div = 245 ;
311- else if (clock >= F_CPU / 246 ) div = 246 ;
312- else if (clock >= F_CPU / 247 ) div = 247 ;
313- else if (clock >= F_CPU / 248 ) div = 248 ;
314- else if (clock >= F_CPU / 249 ) div = 249 ;
315- else if (clock >= F_CPU / 250 ) div = 250 ;
316- else if (clock >= F_CPU / 251 ) div = 251 ;
317- else if (clock >= F_CPU / 252 ) div = 252 ;
318- else if (clock >= F_CPU / 253 ) div = 253 ;
319- else if (clock >= F_CPU / 254 ) div = 254 ;
320- else /* clock >= F_CPU / 255 */ div = 255 ;
321- /*
322- #! /usr/bin/perl
323- for ($i=2; $i<256; $i++) {
324- printf "\t\t\telse if (clock >= F_CPU / %3d) div = %3d;\n", $i, $i;
325- }
326- */
62+ uint8_t div;
63+ if (clock < (F_CPU / 255 )) {
64+ div = 255 ;
65+ } else if (clock >= (F_CPU / 2 )) {
66+ div = 2 ;
32767 } else {
328- for (div=2 ; div<255 ; div++) {
329- if (clock >= F_CPU / div) break ;
330- }
68+ div = (F_CPU / (clock + 1 )) + 1 ;
33169 }
33270 config = (dataMode & 3 ) | SPI_CSR_CSAAT | SPI_CSR_SCBR (div) | SPI_CSR_DLYBCT (1 );
333- // clockdiv = div;
334- // datamode = dataMode;
33571 }
33672 uint32_t config;
337- // uint8_t clockdiv, datamode;
33873 BitOrder border;
33974 friend class SPIClass ;
34075};
0 commit comments