@@ -52,289 +52,24 @@ class SPISettings {
52
52
init_MightInline (clock, bitOrder, dataMode);
53
53
}
54
54
}
55
- SPISettings () {
56
- init_AlwaysInline (4000000 , MSBFIRST, SPI_MODE0);
57
- }
55
+ SPISettings () { init_AlwaysInline (4000000 , MSBFIRST, SPI_MODE0); }
58
56
private:
59
57
void init_MightInline (uint32_t clock, BitOrder bitOrder, uint8_t dataMode) {
60
58
init_AlwaysInline (clock, bitOrder, dataMode);
61
59
}
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__)) {
65
61
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 ;
327
67
} else {
328
- for (div=2 ; div<255 ; div++) {
329
- if (clock >= F_CPU / div) break ;
330
- }
68
+ div = (F_CPU / (clock + 1 )) + 1 ;
331
69
}
332
70
config = (dataMode & 3 ) | SPI_CSR_CSAAT | SPI_CSR_SCBR (div) | SPI_CSR_DLYBCT (1 );
333
- // clockdiv = div;
334
- // datamode = dataMode;
335
71
}
336
72
uint32_t config;
337
- // uint8_t clockdiv, datamode;
338
73
BitOrder border;
339
74
friend class SPIClass ;
340
75
};
0 commit comments