0,0 → 1,1184 |
1 .file "twimaster.c" |
2 .arch atmega644p |
3 __SREG__ = 0x3f |
4 __SP_H__ = 0x3e |
5 __SP_L__ = 0x3d |
6 __tmp_reg__ = 0 |
7 __zero_reg__ = 1 |
8 .global __do_copy_data |
9 .global __do_clear_bss |
10 .global BLConfig_ReadMask |
11 .global BLConfig_ReadMask |
12 .section .bss |
15 BLConfig_ReadMask: |
16 0000 0000 .skip 2,0 |
17 .global BLConfig_WriteMask |
18 .global BLConfig_WriteMask |
21 BLConfig_WriteMask: |
22 0002 0000 .skip 2,0 |
23 .global BLFlags |
24 .global BLFlags |
27 BLFlags: |
28 0004 00 .skip 1,0 |
29 .global MissingMotor |
30 .global MissingMotor |
33 MissingMotor: |
34 0005 00 .skip 1,0 |
35 .global I2CTimeout |
36 .data |
39 I2CTimeout: |
40 0000 6400 .word 100 |
41 .global motor_read |
42 .global motor_read |
43 .section .bss |
46 motor_read: |
47 0006 00 .skip 1,0 |
48 .global motor_write |
49 .global motor_write |
52 motor_write: |
53 0007 00 .skip 1,0 |
54 .global dac_channel |
55 .global dac_channel |
58 dac_channel: |
59 0008 00 .skip 1,0 |
60 .global twi_state |
61 .global twi_state |
64 twi_state: |
65 0009 00 .skip 1,0 |
66 .text |
67 .global I2C_Init |
69 I2C_Init: |
70 /* prologue: frame size=0 */ |
71 /* prologue end (size=0) */ |
72 0000 9FB7 in r25,95-0x20 |
73 /* #APP */ |
74 0002 F894 cli |
75 /* #NOAPP */ |
76 0004 3998 cbi 39-0x20,1 |
77 0006 389A sbi 39-0x20,0 |
78 0008 88B1 in r24,40-0x20 |
79 000a 8360 ori r24,lo8(3) |
80 000c 88B9 out 40-0x20,r24 |
81 000e 8091 B900 lds r24,185 |
82 0012 8C7F andi r24,lo8(-4) |
83 0014 8093 B900 sts 185,r24 |
84 0018 8AE2 ldi r24,lo8(42) |
85 001a 8093 B800 sts 184,r24 |
86 001e 1092 0000 sts twi_state,__zero_reg__ |
87 0022 1092 0000 sts motor_write,__zero_reg__ |
88 0026 1092 0000 sts motor_read,__zero_reg__ |
89 002a E0E0 ldi r30,lo8(Motor) |
90 002c F0E0 ldi r31,hi8(Motor) |
91 002e 8BE0 ldi r24,lo8(11) |
92 .L5: |
93 0030 1082 st Z,__zero_reg__ |
94 0032 1182 std Z+1,__zero_reg__ |
95 0034 1282 std Z+2,__zero_reg__ |
96 0036 1382 std Z+3,__zero_reg__ |
97 0038 1482 std Z+4,__zero_reg__ |
98 003a 1582 std Z+5,__zero_reg__ |
99 003c 1682 std Z+6,__zero_reg__ |
100 003e 1782 std Z+7,__zero_reg__ |
101 0040 8150 subi r24,lo8(-(-1)) |
102 0042 3896 adiw r30,8 |
103 0044 87FF sbrs r24,7 |
104 0046 F4CF rjmp .L5 |
105 0048 9FBF out 95-0x20,r25 |
106 /* epilogue: frame size=0 */ |
107 004a 0895 ret |
108 /* epilogue end (size=1) */ |
109 /* function I2C_Init size 39 (38) */ |
111 .global I2C_Reset |
113 I2C_Reset: |
114 /* prologue: frame size=0 */ |
115 /* prologue end (size=0) */ |
116 004c 1092 0000 sts twi_state,__zero_reg__ |
117 0050 84E9 ldi r24,lo8(-108) |
118 0052 8093 BC00 sts 188,r24 |
119 0056 1092 0000 sts motor_write,__zero_reg__ |
120 005a 1092 0000 sts motor_read,__zero_reg__ |
121 005e 80E8 ldi r24,lo8(-128) |
122 0060 8093 BC00 sts 188,r24 |
123 0064 1092 BD00 sts 189,__zero_reg__ |
124 0068 1092 BA00 sts 186,__zero_reg__ |
125 006c 1092 BB00 sts 187,__zero_reg__ |
126 0070 1092 B900 sts 185,__zero_reg__ |
127 0074 1092 B800 sts 184,__zero_reg__ |
128 0078 0E94 0000 call I2C_Init |
129 007c 1092 BB00 sts 187,__zero_reg__ |
130 0080 85E8 ldi r24,lo8(-123) |
131 0082 8093 BC00 sts 188,r24 |
132 0086 8091 0000 lds r24,BLFlags |
133 008a 8260 ori r24,lo8(2) |
134 008c 8093 0000 sts BLFlags,r24 |
135 /* epilogue: frame size=0 */ |
136 0090 0895 ret |
137 /* epilogue end (size=1) */ |
138 /* function I2C_Reset size 35 (34) */ |
140 .lcomm missing_motor.0,1 |
141 .lcomm motor_read_temperature.1,1 |
142 .lcomm pBuff.2,2 |
143 .lcomm BuffLen.3,1 |
144 .global __vector_26 |
146 __vector_26: |
147 /* prologue: frame size=0 */ |
148 0092 1F92 push __zero_reg__ |
149 0094 0F92 push __tmp_reg__ |
150 0096 0FB6 in __tmp_reg__,__SREG__ |
151 0098 0F92 push __tmp_reg__ |
152 009a 1124 clr __zero_reg__ |
153 009c 2F93 push r18 |
154 009e 3F93 push r19 |
155 00a0 4F93 push r20 |
156 00a2 5F93 push r21 |
157 00a4 8F93 push r24 |
158 00a6 9F93 push r25 |
159 00a8 EF93 push r30 |
160 00aa FF93 push r31 |
161 /* prologue end (size=13) */ |
162 00ac 8091 0000 lds r24,twi_state |
163 00b0 282F mov r18,r24 |
164 00b2 3327 clr r19 |
165 00b4 4427 clr r20 |
166 00b6 5527 clr r21 |
167 00b8 8F5F subi r24,lo8(-(1)) |
168 00ba 8093 0000 sts twi_state,r24 |
169 00be F901 movw r30,r18 |
170 00c0 2731 cpi r18,23 |
171 00c2 3105 cpc r19,__zero_reg__ |
172 00c4 08F0 brlo .+2 |
173 00c6 B3C2 rjmp .L72 |
174 00c8 E050 subi r30,lo8(-(pm(.L73))) |
175 00ca F040 sbci r31,hi8(-(pm(.L73))) |
176 00cc 0C94 0000 jmp __tablejump2__ |
177 .data |
178 .section .progmem.gcc_sw_table, "a", @progbits |
179 .p2align 1 |
180 .L73: |
181 0000 0000 .word pm(.L76) |
182 0002 0000 .word pm(.L17) |
183 0004 0000 .word pm(.L22) |
184 0006 0000 .word pm(.L27) |
185 0008 0000 .word pm(.L29) |
186 000a 0000 .word pm(.L33) |
187 000c 0000 .word pm(.L50) |
188 000e 0000 .word pm(.L72) |
189 0010 0000 .word pm(.L72) |
190 0012 0000 .word pm(.L72) |
191 0014 0000 .word pm(.L72) |
192 0016 0000 .word pm(.L72) |
193 0018 0000 .word pm(.L72) |
194 001a 0000 .word pm(.L72) |
195 001c 0000 .word pm(.L72) |
196 001e 0000 .word pm(.L72) |
197 0020 0000 .word pm(.L72) |
198 0022 0000 .word pm(.L72) |
199 0024 0000 .word pm(.L60) |
200 0026 0000 .word pm(.L61) |
201 0028 0000 .word pm(.L62) |
202 002a 0000 .word pm(.L68) |
203 002c 0000 .word pm(.L69) |
204 .text |
205 .L75: |
206 00d0 8091 0000 lds r24,motor_write |
207 00d4 8C30 cpi r24,lo8(12) |
208 00d6 90F4 brsh .L13 |
209 00d8 8091 0000 lds r24,motor_write |
210 00dc 8F5F subi r24,lo8(-(1)) |
211 00de 8093 0000 sts motor_write,r24 |
212 .L76: |
213 00e2 8091 0000 lds r24,motor_write |
214 00e6 E82F mov r30,r24 |
215 00e8 FF27 clr r31 |
216 00ea EE0F lsl r30 |
217 00ec FF1F rol r31 |
218 00ee EE0F lsl r30 |
219 00f0 FF1F rol r31 |
220 00f2 E050 subi r30,lo8(-(Mixer)) |
221 00f4 F040 sbci r31,hi8(-(Mixer)) |
222 00f6 8585 ldd r24,Z+13 |
223 00f8 1816 cp __zero_reg__,r24 |
224 00fa 54F7 brge .L75 |
225 .L13: |
226 00fc 8091 0000 lds r24,motor_write |
227 0100 8C30 cpi r24,lo8(12) |
228 0102 70F0 brlo .L15 |
229 0104 1092 0000 sts (BLConfig_WriteMask)+1,__zero_reg__ |
230 0108 1092 0000 sts BLConfig_WriteMask,__zero_reg__ |
231 010c 1092 0000 sts motor_write,__zero_reg__ |
232 0110 85E0 ldi r24,lo8(5) |
233 0112 8093 0000 sts twi_state,r24 |
234 0116 8091 0000 lds r24,motor_read |
235 011a 880F lsl r24 |
236 011c 8D5A subi r24,lo8(-(83)) |
237 011e 04C0 rjmp .L84 |
238 .L15: |
239 0120 8091 0000 lds r24,motor_write |
240 0124 880F lsl r24 |
241 0126 8E5A subi r24,lo8(-(82)) |
242 .L84: |
243 0128 8093 BB00 sts 187,r24 |
244 012c 85E8 ldi r24,lo8(-123) |
245 012e 74C2 rjmp .L80 |
246 .L17: |
247 0130 8091 0000 lds r24,motor_write |
248 0134 E82F mov r30,r24 |
249 0136 FF27 clr r31 |
250 0138 83E0 ldi r24,3 |
251 013a EE0F 1: lsl r30 |
252 013c FF1F rol r31 |
253 013e 8A95 dec r24 |
254 0140 E1F7 brne 1b |
255 0142 E050 subi r30,lo8(-(Motor)) |
256 0144 F040 sbci r31,hi8(-(Motor)) |
257 0146 8181 ldd r24,Z+1 |
258 0148 8093 BB00 sts 187,r24 |
259 014c 85E8 ldi r24,lo8(-123) |
260 014e 8093 BC00 sts 188,r24 |
261 0152 8091 0000 lds r24,motor_write |
262 0156 E82F mov r30,r24 |
263 0158 FF27 clr r31 |
264 015a EE0F lsl r30 |
265 015c FF1F rol r31 |
266 015e EE0F lsl r30 |
267 0160 FF1F rol r31 |
268 0162 EE0F lsl r30 |
269 0164 FF1F rol r31 |
270 0166 E050 subi r30,lo8(-(Motor)) |
271 0168 F040 sbci r31,hi8(-(Motor)) |
272 016a 8081 ld r24,Z |
273 016c 80FF sbrs r24,0 |
274 016e 91C0 rjmp .L25 |
275 0170 8091 0000 lds r24,motor_write |
276 0174 E82F mov r30,r24 |
277 0176 FF27 clr r31 |
278 0178 EE0F lsl r30 |
279 017a FF1F rol r31 |
280 017c EE0F lsl r30 |
281 017e FF1F rol r31 |
282 0180 EE0F lsl r30 |
283 0182 FF1F rol r31 |
284 0184 E050 subi r30,lo8(-(Motor)) |
285 0186 F040 sbci r31,hi8(-(Motor)) |
286 0188 8281 ldd r24,Z+2 |
287 018a 8823 tst r24 |
288 018c 29F0 breq .L21 |
289 018e 8091 0000 lds r24,RequiredMotors |
290 0192 8730 cpi r24,lo8(7) |
291 0194 08F4 brsh .+2 |
292 0196 5FC2 rjmp .L9 |
293 .L21: |
294 0198 8091 0000 lds r24,BLConfig_WriteMask |
295 019c 9091 0000 lds r25,(BLConfig_WriteMask)+1 |
296 01a0 892B or r24,r25 |
297 01a2 09F0 breq .+2 |
298 01a4 58C2 rjmp .L9 |
299 01a6 8091 0000 lds r24,BLConfig_ReadMask |
300 01aa 9091 0000 lds r25,(BLConfig_ReadMask)+1 |
301 01ae 892B or r24,r25 |
302 01b0 09F0 breq .+2 |
303 01b2 51C2 rjmp .L9 |
304 01b4 6EC0 rjmp .L25 |
305 .L22: |
306 01b6 8091 0000 lds r24,motor_write |
307 01ba 21E0 ldi r18,lo8(1) |
308 01bc 30E0 ldi r19,hi8(1) |
309 01be 02C0 rjmp 2f |
310 01c0 220F 1: lsl r18 |
311 01c2 331F rol r19 |
312 01c4 8A95 2: dec r24 |
313 01c6 E2F7 brpl 1b |
314 01c8 8091 0000 lds r24,BLConfig_ReadMask |
315 01cc 9091 0000 lds r25,(BLConfig_ReadMask)+1 |
316 01d0 2823 and r18,r24 |
317 01d2 3923 and r19,r25 |
318 01d4 232B or r18,r19 |
319 01d6 79F0 breq .L23 |
320 01d8 8091 0000 lds r24,motor_write |
321 01dc E82F mov r30,r24 |
322 01de FF27 clr r31 |
323 01e0 EE0F lsl r30 |
324 01e2 FF1F rol r31 |
325 01e4 EE0F lsl r30 |
326 01e6 FF1F rol r31 |
327 01e8 EE0F lsl r30 |
328 01ea FF1F rol r31 |
329 01ec E050 subi r30,lo8(-(Motor)) |
330 01ee F040 sbci r31,hi8(-(Motor)) |
331 01f0 80E1 ldi r24,lo8(16) |
332 01f2 8483 std Z+4,r24 |
333 01f4 0DC0 rjmp .L24 |
334 .L23: |
335 01f6 8091 0000 lds r24,motor_write |
336 01fa E82F mov r30,r24 |
337 01fc FF27 clr r31 |
338 01fe EE0F lsl r30 |
339 0200 FF1F rol r31 |
340 0202 EE0F lsl r30 |
341 0204 FF1F rol r31 |
342 0206 EE0F lsl r30 |
343 0208 FF1F rol r31 |
344 020a E050 subi r30,lo8(-(Motor)) |
345 020c F040 sbci r31,hi8(-(Motor)) |
346 020e 1482 std Z+4,__zero_reg__ |
347 .L24: |
348 0210 8091 0000 lds r24,motor_write |
349 0214 E82F mov r30,r24 |
350 0216 FF27 clr r31 |
351 0218 53E0 ldi r21,3 |
352 021a EE0F 1: lsl r30 |
353 021c FF1F rol r31 |
354 021e 5A95 dec r21 |
355 0220 E1F7 brne 1b |
356 0222 E050 subi r30,lo8(-(Motor)) |
357 0224 F040 sbci r31,hi8(-(Motor)) |
358 0226 8481 ldd r24,Z+4 |
359 0228 282F mov r18,r24 |
360 022a 3327 clr r19 |
361 022c 43E0 ldi r20,3 |
362 022e 220F 1: lsl r18 |
363 0230 331F rol r19 |
364 0232 4A95 dec r20 |
365 0234 E1F7 brne 1b |
366 0236 8091 0000 lds r24,motor_write |
367 023a E82F mov r30,r24 |
368 023c FF27 clr r31 |
369 023e 93E0 ldi r25,3 |
370 0240 EE0F 1: lsl r30 |
371 0242 FF1F rol r31 |
372 0244 9A95 dec r25 |
373 0246 E1F7 brne 1b |
374 0248 E050 subi r30,lo8(-(Motor)) |
375 024a F040 sbci r31,hi8(-(Motor)) |
376 024c 8281 ldd r24,Z+2 |
377 024e 8770 andi r24,lo8(7) |
378 0250 822B or r24,r18 |
379 0252 8093 BB00 sts 187,r24 |
380 0256 85E8 ldi r24,lo8(-123) |
381 0258 8093 BC00 sts 188,r24 |
382 025c 2091 0000 lds r18,motor_write |
383 0260 81E0 ldi r24,lo8(1) |
384 0262 90E0 ldi r25,hi8(1) |
385 0264 02C0 rjmp 2f |
386 0266 880F 1: lsl r24 |
387 0268 991F rol r25 |
388 026a 2A95 2: dec r18 |
389 026c E2F7 brpl 1b |
390 026e 2091 0000 lds r18,BLConfig_WriteMask |
391 0272 3091 0000 lds r19,(BLConfig_WriteMask)+1 |
392 0276 8223 and r24,r18 |
393 0278 9323 and r25,r19 |
394 027a 892B or r24,r25 |
395 027c 51F0 breq .L25 |
396 027e 80E0 ldi r24,lo8(BLConfig) |
397 0280 90E0 ldi r25,hi8(BLConfig) |
398 0282 9093 0000 sts (pBuff.2)+1,r25 |
399 0286 8093 0000 sts pBuff.2,r24 |
400 028a 88E0 ldi r24,lo8(8) |
401 028c 8093 0000 sts BuffLen.3,r24 |
402 0290 E2C1 rjmp .L9 |
403 .L25: |
404 0292 84E0 ldi r24,lo8(4) |
405 0294 80C1 rjmp .L82 |
406 .L27: |
407 0296 E091 0000 lds r30,pBuff.2 |
408 029a F091 0000 lds r31,(pBuff.2)+1 |
409 029e 8191 ld r24,Z+ |
410 02a0 8093 BB00 sts 187,r24 |
411 02a4 85E8 ldi r24,lo8(-123) |
412 02a6 8093 BC00 sts 188,r24 |
413 02aa F093 0000 sts (pBuff.2)+1,r31 |
414 02ae E093 0000 sts pBuff.2,r30 |
415 02b2 8091 0000 lds r24,BuffLen.3 |
416 02b6 8150 subi r24,lo8(-(-1)) |
417 02b8 8093 0000 sts BuffLen.3,r24 |
418 02bc 8823 tst r24 |
419 02be 09F4 brne .+2 |
420 02c0 CAC1 rjmp .L9 |
421 02c2 83E0 ldi r24,lo8(3) |
422 02c4 68C1 rjmp .L82 |
423 .L29: |
424 02c6 8091 B900 lds r24,185 |
425 02ca 8033 cpi r24,lo8(48) |
426 02cc 51F5 brne .L30 |
427 02ce 8091 0000 lds r24,missing_motor.0 |
428 02d2 8823 tst r24 |
429 02d4 29F4 brne .L31 |
430 02d6 8091 0000 lds r24,motor_write |
431 02da 8F5F subi r24,lo8(-(1)) |
432 02dc 8093 0000 sts missing_motor.0,r24 |
433 .L31: |
434 02e0 8091 0000 lds r24,motor_write |
435 02e4 E82F mov r30,r24 |
436 02e6 FF27 clr r31 |
437 02e8 83E0 ldi r24,3 |
438 02ea EE0F 1: lsl r30 |
439 02ec FF1F rol r31 |
440 02ee 8A95 dec r24 |
441 02f0 E1F7 brne 1b |
442 02f2 E050 subi r30,lo8(-(Motor)) |
443 02f4 F040 sbci r31,hi8(-(Motor)) |
444 02f6 8381 ldd r24,Z+3 |
445 02f8 9927 clr r25 |
446 02fa 8F77 andi r24,lo8(127) |
447 02fc 9070 andi r25,hi8(127) |
448 02fe 8F37 cpi r24,127 |
449 0300 9105 cpc r25,__zero_reg__ |
450 0302 7CF4 brge .L30 |
451 0304 8091 0000 lds r24,motor_write |
452 0308 E82F mov r30,r24 |
453 030a FF27 clr r31 |
454 030c EE0F lsl r30 |
455 030e FF1F rol r31 |
456 0310 EE0F lsl r30 |
457 0312 FF1F rol r31 |
458 0314 EE0F lsl r30 |
459 0316 FF1F rol r31 |
460 0318 E050 subi r30,lo8(-(Motor)) |
461 031a F040 sbci r31,hi8(-(Motor)) |
462 031c 8381 ldd r24,Z+3 |
463 031e 8F5F subi r24,lo8(-(1)) |
464 0320 8383 std Z+3,r24 |
465 .L30: |
466 0322 1092 0000 sts twi_state,__zero_reg__ |
467 0326 84E9 ldi r24,lo8(-108) |
468 0328 8093 BC00 sts 188,r24 |
469 032c 8AE0 ldi r24,lo8(10) |
470 032e 90E0 ldi r25,hi8(10) |
471 0330 9093 0000 sts (I2CTimeout)+1,r25 |
472 0334 8093 0000 sts I2CTimeout,r24 |
473 0338 8091 0000 lds r24,motor_write |
474 033c 8F5F subi r24,lo8(-(1)) |
475 033e 8093 0000 sts motor_write,r24 |
476 0342 1092 0000 sts twi_state,__zero_reg__ |
477 0346 62C1 rjmp .L85 |
478 .L33: |
479 0348 8091 B900 lds r24,185 |
480 034c 8034 cpi r24,lo8(64) |
481 034e A9F1 breq .L34 |
482 0350 8091 0000 lds r24,motor_read |
483 0354 E82F mov r30,r24 |
484 0356 FF27 clr r31 |
485 0358 EE0F lsl r30 |
486 035a FF1F rol r31 |
487 035c EE0F lsl r30 |
488 035e FF1F rol r31 |
489 0360 EE0F lsl r30 |
490 0362 FF1F rol r31 |
491 0364 E050 subi r30,lo8(-(Motor)) |
492 0366 F040 sbci r31,hi8(-(Motor)) |
493 0368 8381 ldd r24,Z+3 |
494 036a 8F77 andi r24,lo8(127) |
495 036c 8383 std Z+3,r24 |
496 036e 8091 0000 lds r24,motor_read |
497 0372 8F5F subi r24,lo8(-(1)) |
498 0374 8093 0000 sts motor_read,r24 |
499 0378 8091 0000 lds r24,motor_read |
500 037c 8C30 cpi r24,lo8(12) |
501 037e A0F0 brlo .L35 |
502 0380 1092 0000 sts motor_read,__zero_reg__ |
503 0384 1092 0000 sts (BLConfig_ReadMask)+1,__zero_reg__ |
504 0388 1092 0000 sts BLConfig_ReadMask,__zero_reg__ |
505 038c 8091 0000 lds r24,motor_read_temperature.1 |
506 0390 8F5F subi r24,lo8(-(1)) |
507 0392 8093 0000 sts motor_read_temperature.1,r24 |
508 0396 8C30 cpi r24,lo8(12) |
509 0398 38F0 brlo .L35 |
510 039a 1092 0000 sts motor_read_temperature.1,__zero_reg__ |
511 039e 8091 0000 lds r24,BLFlags |
512 03a2 8D7F andi r24,lo8(-3) |
513 03a4 8093 0000 sts BLFlags,r24 |
514 .L35: |
515 03a8 8091 0000 lds r24,BLFlags |
516 03ac 8160 ori r24,lo8(1) |
517 03ae 8093 0000 sts BLFlags,r24 |
518 03b2 1092 0000 sts twi_state,__zero_reg__ |
519 03b6 84E9 ldi r24,lo8(-108) |
520 03b8 71C0 rjmp .L78 |
521 .L34: |
522 03ba 8091 0000 lds r24,motor_read |
523 03be E82F mov r30,r24 |
524 03c0 FF27 clr r31 |
525 03c2 EE0F lsl r30 |
526 03c4 FF1F rol r31 |
527 03c6 EE0F lsl r30 |
528 03c8 FF1F rol r31 |
529 03ca EE0F lsl r30 |
530 03cc FF1F rol r31 |
531 03ce E050 subi r30,lo8(-(Motor)) |
532 03d0 F040 sbci r31,hi8(-(Motor)) |
533 03d2 8381 ldd r24,Z+3 |
534 03d4 8068 ori r24,lo8(-128) |
535 03d6 8383 std Z+3,r24 |
536 03d8 8091 0000 lds r24,motor_read |
537 03dc E82F mov r30,r24 |
538 03de FF27 clr r31 |
539 03e0 EE0F lsl r30 |
540 03e2 FF1F rol r31 |
541 03e4 EE0F lsl r30 |
542 03e6 FF1F rol r31 |
543 03e8 EE0F lsl r30 |
544 03ea FF1F rol r31 |
545 03ec E050 subi r30,lo8(-(Motor)) |
546 03ee F040 sbci r31,hi8(-(Motor)) |
547 03f0 8081 ld r24,Z |
548 03f2 80FF sbrs r24,0 |
549 03f4 2FC0 rjmp .L38 |
550 03f6 8091 0000 lds r24,motor_read |
551 03fa E82F mov r30,r24 |
552 03fc FF27 clr r31 |
553 03fe 53E0 ldi r21,3 |
554 0400 EE0F 1: lsl r30 |
555 0402 FF1F rol r31 |
556 0404 5A95 dec r21 |
557 0406 E1F7 brne 1b |
558 0408 E050 subi r30,lo8(-(Motor)) |
559 040a F040 sbci r31,hi8(-(Motor)) |
560 040c 8481 ldd r24,Z+4 |
561 040e 9927 clr r25 |
562 0410 0097 sbiw r24,0 |
563 0412 51F0 breq .L41 |
564 0414 4097 sbiw r24,16 |
565 0416 D9F5 brne .L44 |
566 0418 80E0 ldi r24,lo8(BLConfig) |
567 041a 90E0 ldi r25,hi8(BLConfig) |
568 041c 9093 0000 sts (pBuff.2)+1,r25 |
569 0420 8093 0000 sts pBuff.2,r24 |
570 0424 88E0 ldi r24,lo8(8) |
571 0426 31C0 rjmp .L77 |
572 .L41: |
573 0428 8091 0000 lds r24,motor_read |
574 042c 9927 clr r25 |
575 042e 43E0 ldi r20,3 |
576 0430 880F 1: lsl r24 |
577 0432 991F rol r25 |
578 0434 4A95 dec r20 |
579 0436 E1F7 brne 1b |
580 0438 8050 subi r24,lo8(-(Motor+5)) |
581 043a 9040 sbci r25,hi8(-(Motor+5)) |
582 043c 9093 0000 sts (pBuff.2)+1,r25 |
583 0440 8093 0000 sts pBuff.2,r24 |
584 0444 9091 0000 lds r25,motor_read |
585 0448 8091 0000 lds r24,motor_read_temperature.1 |
586 044c 9817 cp r25,r24 |
587 044e E1F4 brne .L45 |
588 0450 83E0 ldi r24,lo8(3) |
589 0452 1BC0 rjmp .L77 |
590 .L38: |
591 0454 8091 0000 lds r24,motor_read |
592 0458 9927 clr r25 |
593 045a 33E0 ldi r19,3 |
594 045c 880F 1: lsl r24 |
595 045e 991F rol r25 |
596 0460 3A95 dec r19 |
597 0462 E1F7 brne 1b |
598 0464 8050 subi r24,lo8(-(Motor+5)) |
599 0466 9040 sbci r25,hi8(-(Motor+5)) |
600 0468 9093 0000 sts (pBuff.2)+1,r25 |
601 046c 8093 0000 sts pBuff.2,r24 |
602 0470 8091 0000 lds r24,BLFlags |
603 0474 81FD sbrc r24,1 |
604 0476 06C0 rjmp .L46 |
605 0478 9091 0000 lds r25,motor_read |
606 047c 8091 0000 lds r24,motor_read_temperature.1 |
607 0480 9817 cp r25,r24 |
608 0482 11F4 brne .L45 |
609 .L46: |
610 0484 82E0 ldi r24,lo8(2) |
611 0486 01C0 rjmp .L77 |
612 .L45: |
613 0488 81E0 ldi r24,lo8(1) |
614 .L77: |
615 048a 8093 0000 sts BuffLen.3,r24 |
616 .L44: |
617 048e 8091 0000 lds r24,BuffLen.3 |
618 0492 8130 cpi r24,lo8(1) |
619 0494 11F4 brne .L48 |
620 0496 85E8 ldi r24,lo8(-123) |
621 0498 01C0 rjmp .L78 |
622 .L48: |
623 049a 85EC ldi r24,lo8(-59) |
624 .L78: |
625 049c 8093 BC00 sts 188,r24 |
626 04a0 8091 0000 lds r24,missing_motor.0 |
627 04a4 8093 0000 sts MissingMotor,r24 |
628 04a8 1092 0000 sts missing_motor.0,__zero_reg__ |
629 04ac D4C0 rjmp .L9 |
630 .L50: |
631 04ae E091 0000 lds r30,pBuff.2 |
632 04b2 F091 0000 lds r31,(pBuff.2)+1 |
633 04b6 8091 BB00 lds r24,187 |
634 04ba 8083 st Z,r24 |
635 04bc 8091 0000 lds r24,pBuff.2 |
636 04c0 9091 0000 lds r25,(pBuff.2)+1 |
637 04c4 0196 adiw r24,1 |
638 04c6 9093 0000 sts (pBuff.2)+1,r25 |
639 04ca 8093 0000 sts pBuff.2,r24 |
640 04ce 8091 0000 lds r24,BuffLen.3 |
641 04d2 8150 subi r24,lo8(-(-1)) |
642 04d4 8093 0000 sts BuffLen.3,r24 |
643 04d8 8230 cpi r24,lo8(2) |
644 04da 10F0 brlo .L51 |
645 04dc 85EC ldi r24,lo8(-59) |
646 04de 58C0 rjmp .L79 |
647 .L51: |
648 04e0 8130 cpi r24,lo8(1) |
649 04e2 11F4 brne .L53 |
650 04e4 85E8 ldi r24,lo8(-123) |
651 04e6 54C0 rjmp .L79 |
652 .L53: |
653 04e8 8091 0000 lds r24,BLFlags |
654 04ec 81FF sbrs r24,1 |
655 04ee 2DC0 rjmp .L55 |
656 04f0 8091 0000 lds r24,FCFlags |
657 04f4 80FD sbrc r24,0 |
658 04f6 1DC0 rjmp .L56 |
659 04f8 8091 0000 lds r24,motor_read |
660 04fc E82F mov r30,r24 |
661 04fe FF27 clr r31 |
662 0500 23E0 ldi r18,3 |
663 0502 EE0F 1: lsl r30 |
664 0504 FF1F rol r31 |
665 0506 2A95 dec r18 |
666 0508 E1F7 brne 1b |
667 050a E050 subi r30,lo8(-(Motor)) |
668 050c F040 sbci r31,hi8(-(Motor)) |
669 050e 8681 ldd r24,Z+6 |
670 0510 8A3F cpi r24,lo8(-6) |
671 0512 79F4 brne .L56 |
672 0514 8091 0000 lds r24,motor_read |
673 0518 E82F mov r30,r24 |
674 051a FF27 clr r31 |
675 051c 93E0 ldi r25,3 |
676 051e EE0F 1: lsl r30 |
677 0520 FF1F rol r31 |
678 0522 9A95 dec r25 |
679 0524 E1F7 brne 1b |
680 0526 E050 subi r30,lo8(-(Motor)) |
681 0528 F040 sbci r31,hi8(-(Motor)) |
682 052a 8081 ld r24,Z |
683 052c 8160 ori r24,lo8(1) |
684 052e 8083 st Z,r24 |
685 0530 0CC0 rjmp .L55 |
686 .L56: |
687 0532 8091 0000 lds r24,motor_read |
688 0536 E82F mov r30,r24 |
689 0538 FF27 clr r31 |
690 053a 83E0 ldi r24,3 |
691 053c EE0F 1: lsl r30 |
692 053e FF1F rol r31 |
693 0540 8A95 dec r24 |
694 0542 E1F7 brne 1b |
695 0544 E050 subi r30,lo8(-(Motor)) |
696 0546 F040 sbci r31,hi8(-(Motor)) |
697 0548 1082 st Z,__zero_reg__ |
698 .L55: |
699 054a 8091 0000 lds r24,motor_read |
700 054e 8F5F subi r24,lo8(-(1)) |
701 0550 8093 0000 sts motor_read,r24 |
702 0554 8091 0000 lds r24,motor_read |
703 0558 8C30 cpi r24,lo8(12) |
704 055a A0F0 brlo .L58 |
705 055c 1092 0000 sts motor_read,__zero_reg__ |
706 0560 1092 0000 sts (BLConfig_ReadMask)+1,__zero_reg__ |
707 0564 1092 0000 sts BLConfig_ReadMask,__zero_reg__ |
708 0568 8091 0000 lds r24,motor_read_temperature.1 |
709 056c 8F5F subi r24,lo8(-(1)) |
710 056e 8093 0000 sts motor_read_temperature.1,r24 |
711 0572 8C30 cpi r24,lo8(12) |
712 0574 38F0 brlo .L58 |
713 0576 1092 0000 sts motor_read_temperature.1,__zero_reg__ |
714 057a 8091 0000 lds r24,BLFlags |
715 057e 8D7F andi r24,lo8(-3) |
716 0580 8093 0000 sts BLFlags,r24 |
717 .L58: |
718 0584 1092 0000 sts twi_state,__zero_reg__ |
719 0588 84E9 ldi r24,lo8(-108) |
720 058a 8093 BC00 sts 188,r24 |
721 058e 49C0 rjmp .L81 |
722 .L79: |
723 0590 8093 BC00 sts 188,r24 |
724 0594 86E0 ldi r24,lo8(6) |
725 .L82: |
726 0596 8093 0000 sts twi_state,r24 |
727 059a 5DC0 rjmp .L9 |
728 .L60: |
729 059c 88E9 ldi r24,lo8(-104) |
730 059e C4CD rjmp .L84 |
731 .L61: |
732 05a0 8091 0000 lds r24,dac_channel |
733 05a4 880F lsl r24 |
734 05a6 805F subi r24,lo8(-(16)) |
735 05a8 BFCD rjmp .L84 |
736 .L62: |
737 05aa 8091 0000 lds r24,dac_channel |
738 05ae 9927 clr r25 |
739 05b0 8130 cpi r24,1 |
740 05b2 9105 cpc r25,__zero_reg__ |
741 05b4 61F0 breq .L65 |
742 05b6 8230 cpi r24,2 |
743 05b8 9105 cpc r25,__zero_reg__ |
744 05ba 1CF4 brge .L67 |
745 05bc 892B or r24,r25 |
746 05be 21F0 breq .L64 |
747 05c0 4AC0 rjmp .L9 |
748 .L67: |
749 05c2 0297 sbiw r24,2 |
750 05c4 39F0 breq .L66 |
751 05c6 47C0 rjmp .L9 |
752 .L64: |
753 05c8 8091 0000 lds r24,AnalogOffsetNick |
754 05cc ADCD rjmp .L84 |
755 .L65: |
756 05ce 8091 0000 lds r24,AnalogOffsetRoll |
757 05d2 AACD rjmp .L84 |
758 .L66: |
759 05d4 8091 0000 lds r24,AnalogOffsetGier |
760 05d8 A7CD rjmp .L84 |
761 .L68: |
762 05da 80E8 ldi r24,lo8(-128) |
763 05dc A5CD rjmp .L84 |
764 .L69: |
765 05de 1092 0000 sts twi_state,__zero_reg__ |
766 05e2 84E9 ldi r24,lo8(-108) |
767 05e4 8093 BC00 sts 188,r24 |
768 05e8 8AE0 ldi r24,lo8(10) |
769 05ea 90E0 ldi r25,hi8(10) |
770 05ec 9093 0000 sts (I2CTimeout)+1,r25 |
771 05f0 8093 0000 sts I2CTimeout,r24 |
772 05f4 8091 0000 lds r24,dac_channel |
773 05f8 8230 cpi r24,lo8(2) |
774 05fa 88F4 brsh .L70 |
775 05fc 8091 0000 lds r24,dac_channel |
776 0600 8F5F subi r24,lo8(-(1)) |
777 0602 8093 0000 sts dac_channel,r24 |
778 0606 82E1 ldi r24,lo8(18) |
779 0608 8093 0000 sts twi_state,r24 |
780 .L85: |
781 060c 8091 0000 lds r24,BLFlags |
782 0610 8E7F andi r24,lo8(-2) |
783 0612 8093 0000 sts BLFlags,r24 |
784 0616 85EA ldi r24,lo8(-91) |
785 .L80: |
786 0618 8093 BC00 sts 188,r24 |
787 061c 1CC0 rjmp .L9 |
788 .L70: |
789 061e 1092 0000 sts dac_channel,__zero_reg__ |
790 .L81: |
791 0622 8091 0000 lds r24,BLFlags |
792 0626 8160 ori r24,lo8(1) |
793 0628 8093 0000 sts BLFlags,r24 |
794 062c 14C0 rjmp .L9 |
795 .L72: |
796 062e 1092 0000 sts twi_state,__zero_reg__ |
797 0632 84E9 ldi r24,lo8(-108) |
798 0634 8093 BC00 sts 188,r24 |
799 0638 8091 0000 lds r24,BLFlags |
800 063c 8160 ori r24,lo8(1) |
801 063e 8093 0000 sts BLFlags,r24 |
802 0642 8AE0 ldi r24,lo8(10) |
803 0644 90E0 ldi r25,hi8(10) |
804 0646 9093 0000 sts (I2CTimeout)+1,r25 |
805 064a 8093 0000 sts I2CTimeout,r24 |
806 064e 1092 0000 sts motor_write,__zero_reg__ |
807 0652 1092 0000 sts motor_read,__zero_reg__ |
808 .L9: |
809 /* epilogue: frame size=0 */ |
810 0656 FF91 pop r31 |
811 0658 EF91 pop r30 |
812 065a 9F91 pop r25 |
813 065c 8F91 pop r24 |
814 065e 5F91 pop r21 |
815 0660 4F91 pop r20 |
816 0662 3F91 pop r19 |
817 0664 2F91 pop r18 |
818 0666 0F90 pop __tmp_reg__ |
819 0668 0FBE out __SREG__,__tmp_reg__ |
820 066a 0F90 pop __tmp_reg__ |
821 066c 1F90 pop __zero_reg__ |
822 066e 1895 reti |
823 /* epilogue end (size=13) */ |
824 /* function __vector_26 size 779 (753) */ |
826 .global I2C_WriteBLConfig |
828 I2C_WriteBLConfig: |
829 /* prologue: frame size=0 */ |
830 0670 1F93 push r17 |
831 0672 CF93 push r28 |
832 0674 DF93 push r29 |
833 /* prologue end (size=3) */ |
834 0676 182F mov r17,r24 |
835 0678 8091 0000 lds r24,MotorenEin |
836 067c 8823 tst r24 |
837 067e 21F4 brne .L88 |
838 0680 8091 0000 lds r24,PC_MotortestActive |
839 0684 8823 tst r24 |
840 0686 19F0 breq .L87 |
841 .L88: |
842 0688 81E0 ldi r24,lo8(1) |
843 068a 90E0 ldi r25,hi8(1) |
844 068c 97C0 rjmp .L86 |
845 .L87: |
846 068e 1D30 cpi r17,lo8(13) |
847 0690 08F0 brlo .+2 |
848 0692 92C0 rjmp .L115 |
849 0694 1123 tst r17 |
850 0696 B1F0 breq .L90 |
851 0698 E12F mov r30,r17 |
852 069a FF27 clr r31 |
853 069c 23E0 ldi r18,3 |
854 069e EE0F 1: lsl r30 |
855 06a0 FF1F rol r31 |
856 06a2 2A95 dec r18 |
857 06a4 E1F7 brne 1b |
858 06a6 E050 subi r30,lo8(-(Motor)) |
859 06a8 F040 sbci r31,hi8(-(Motor)) |
860 06aa 3597 sbiw r30,5 |
861 06ac 8081 ld r24,Z |
862 06ae 3596 adiw r30,5 |
863 06b0 8823 tst r24 |
864 06b2 0CF0 brlt .+2 |
865 06b4 81C0 rjmp .L115 |
866 06b6 3897 sbiw r30,8 |
867 06b8 8081 ld r24,Z |
868 06ba 80FD sbrc r24,0 |
869 06bc 03C0 rjmp .L90 |
870 06be 83E0 ldi r24,lo8(3) |
871 06c0 90E0 ldi r25,hi8(3) |
872 06c2 7CC0 rjmp .L86 |
873 .L90: |
874 06c4 8091 0000 lds r24,BLConfig |
875 06c8 8230 cpi r24,lo8(2) |
876 06ca 19F0 breq .L93 |
877 06cc 84E0 ldi r24,lo8(4) |
878 06ce 90E0 ldi r25,hi8(4) |
879 06d0 75C0 rjmp .L86 |
880 .L93: |
881 06d2 67E0 ldi r22,lo8(7) |
882 06d4 70E0 ldi r23,hi8(7) |
883 06d6 80E0 ldi r24,lo8(BLConfig) |
884 06d8 90E0 ldi r25,hi8(BLConfig) |
885 06da 0E94 0000 call RAM_Checksum |
886 06de 9091 0000 lds r25,BLConfig+7 |
887 06e2 8917 cp r24,r25 |
888 06e4 19F0 breq .L94 |
889 06e6 85E0 ldi r24,lo8(5) |
890 06e8 90E0 ldi r25,hi8(5) |
891 06ea 68C0 rjmp .L86 |
892 .L94: |
893 06ec 80ED ldi r24,lo8(2000) |
894 06ee 97E0 ldi r25,hi8(2000) |
895 06f0 0E94 0000 call SetDelay |
896 06f4 EC01 movw r28,r24 |
897 .L95: |
898 06f6 8091 0000 lds r24,BLFlags |
899 06fa 80FD sbrc r24,0 |
900 06fc 05C0 rjmp .L96 |
901 06fe CE01 movw r24,r28 |
902 0700 0E94 0000 call CheckDelay |
903 0704 8823 tst r24 |
904 0706 B9F3 breq .L95 |
905 .L96: |
906 0708 1123 tst r17 |
907 070a 19F4 brne .L98 |
908 070c 8FEF ldi r24,lo8(255) |
909 070e 90E0 ldi r25,hi8(255) |
910 0710 0BC0 rjmp .L114 |
911 .L98: |
912 0712 212F mov r18,r17 |
913 0714 3327 clr r19 |
914 0716 2150 subi r18,lo8(-(-1)) |
915 0718 3040 sbci r19,hi8(-(-1)) |
916 071a 81E0 ldi r24,lo8(1) |
917 071c 90E0 ldi r25,hi8(1) |
918 071e 02C0 rjmp 2f |
919 0720 880F 1: lsl r24 |
920 0722 991F rol r25 |
921 0724 2A95 2: dec r18 |
922 0726 E2F7 brpl 1b |
923 .L114: |
924 0728 9093 0000 sts (BLConfig_WriteMask)+1,r25 |
925 072c 8093 0000 sts BLConfig_WriteMask,r24 |
926 0730 A1E0 ldi r26,lo8(1) |
927 0732 B0E0 ldi r27,hi8(1) |
928 0734 E0E0 ldi r30,lo8(Motor) |
929 0736 F0E0 ldi r31,hi8(Motor) |
930 0738 40E0 ldi r20,lo8(0) |
931 073a 50E0 ldi r21,hi8(0) |
932 073c 6BE0 ldi r22,lo8(11) |
933 .L104: |
934 073e CD01 movw r24,r26 |
935 0740 042E mov r0,r20 |
936 0742 02C0 rjmp 2f |
937 0744 880F 1: lsl r24 |
938 0746 991F rol r25 |
939 0748 0A94 2: dec r0 |
940 074a E2F7 brpl 1b |
941 074c 2091 0000 lds r18,BLConfig_WriteMask |
942 0750 3091 0000 lds r19,(BLConfig_WriteMask)+1 |
943 0754 8223 and r24,r18 |
944 0756 9323 and r25,r19 |
945 0758 892B or r24,r25 |
946 075a 11F0 breq .L102 |
947 075c 1182 std Z+1,__zero_reg__ |
948 075e 1282 std Z+2,__zero_reg__ |
949 .L102: |
950 0760 6150 subi r22,lo8(-(-1)) |
951 0762 4F5F subi r20,lo8(-(1)) |
952 0764 5F4F sbci r21,hi8(-(1)) |
953 0766 3896 adiw r30,8 |
954 0768 67FF sbrs r22,7 |
955 076a E9CF rjmp .L104 |
956 076c 1092 0000 sts motor_write,__zero_reg__ |
957 .L105: |
958 0770 1092 0000 sts twi_state,__zero_reg__ |
959 0774 8091 0000 lds r24,BLFlags |
960 0778 8E7F andi r24,lo8(-2) |
961 077a 8093 0000 sts BLFlags,r24 |
962 077e 85EA ldi r24,lo8(-91) |
963 0780 8093 BC00 sts 188,r24 |
964 .L108: |
965 0784 8091 0000 lds r24,BLFlags |
966 0788 80FD sbrc r24,0 |
967 078a 05C0 rjmp .L109 |
968 078c CE01 movw r24,r28 |
969 078e 0E94 0000 call CheckDelay |
970 0792 8823 tst r24 |
971 0794 B9F3 breq .L108 |
972 .L109: |
973 0796 8091 0000 lds r24,BLConfig_WriteMask |
974 079a 9091 0000 lds r25,(BLConfig_WriteMask)+1 |
975 079e 892B or r24,r25 |
976 07a0 29F0 breq .L106 |
977 07a2 CE01 movw r24,r28 |
978 07a4 0E94 0000 call CheckDelay |
979 07a8 8823 tst r24 |
980 07aa 11F3 breq .L105 |
981 .L106: |
982 07ac 8091 0000 lds r24,BLConfig_WriteMask |
983 07b0 9091 0000 lds r25,(BLConfig_WriteMask)+1 |
984 07b4 0097 sbiw r24,0 |
985 07b6 11F0 breq .L86 |
986 .L115: |
987 07b8 82E0 ldi r24,lo8(2) |
988 07ba 90E0 ldi r25,hi8(2) |
989 .L86: |
990 /* epilogue: frame size=0 */ |
991 07bc DF91 pop r29 |
992 07be CF91 pop r28 |
993 07c0 1F91 pop r17 |
994 07c2 0895 ret |
995 /* epilogue end (size=4) */ |
996 /* function I2C_WriteBLConfig size 172 (165) */ |
998 .global I2C_ReadBLConfig |
1000 I2C_ReadBLConfig: |
1001 /* prologue: frame size=0 */ |
1002 07c4 0F93 push r16 |
1003 07c6 1F93 push r17 |
1004 07c8 CF93 push r28 |
1005 07ca DF93 push r29 |
1006 /* prologue end (size=4) */ |
1007 07cc 982F mov r25,r24 |
1008 07ce 8091 0000 lds r24,MotorenEin |
1009 07d2 8823 tst r24 |
1010 07d4 21F4 brne .L118 |
1011 07d6 8091 0000 lds r24,PC_MotortestActive |
1012 07da 8823 tst r24 |
1013 07dc 19F0 breq .L117 |
1014 .L118: |
1015 07de 81E0 ldi r24,lo8(1) |
1016 07e0 90E0 ldi r25,hi8(1) |
1017 07e2 92C0 rjmp .L116 |
1018 .L117: |
1019 07e4 9D30 cpi r25,lo8(13) |
1020 07e6 A0F4 brsh .L141 |
1021 07e8 9923 tst r25 |
1022 07ea 19F4 brne .L120 |
1023 07ec 86E0 ldi r24,lo8(6) |
1024 07ee 90E0 ldi r25,hi8(6) |
1025 07f0 8BC0 rjmp .L116 |
1026 .L120: |
1027 07f2 C92F mov r28,r25 |
1028 07f4 DD27 clr r29 |
1029 07f6 FE01 movw r30,r28 |
1030 07f8 33E0 ldi r19,3 |
1031 07fa EE0F 1: lsl r30 |
1032 07fc FF1F rol r31 |
1033 07fe 3A95 dec r19 |
1034 0800 E1F7 brne 1b |
1035 0802 E050 subi r30,lo8(-(Motor)) |
1036 0804 F040 sbci r31,hi8(-(Motor)) |
1037 0806 3597 sbiw r30,5 |
1038 0808 8081 ld r24,Z |
1039 080a 3596 adiw r30,5 |
1040 080c 87FD sbrc r24,7 |
1041 080e 03C0 rjmp .L121 |
1042 .L141: |
1043 0810 82E0 ldi r24,lo8(2) |
1044 0812 90E0 ldi r25,hi8(2) |
1045 0814 79C0 rjmp .L116 |
1046 .L121: |
1047 0816 3897 sbiw r30,8 |
1048 0818 8081 ld r24,Z |
1049 081a 80FD sbrc r24,0 |
1050 081c 03C0 rjmp .L122 |
1051 081e 83E0 ldi r24,lo8(3) |
1052 0820 90E0 ldi r25,hi8(3) |
1053 0822 72C0 rjmp .L116 |
1054 .L122: |
1055 0824 80ED ldi r24,lo8(2000) |
1056 0826 97E0 ldi r25,hi8(2000) |
1057 0828 0E94 0000 call SetDelay |
1058 082c 8C01 movw r16,r24 |
1059 .L123: |
1060 082e 8091 0000 lds r24,BLFlags |
1061 0832 80FD sbrc r24,0 |
1062 0834 05C0 rjmp .L124 |
1063 0836 C801 movw r24,r16 |
1064 0838 0E94 0000 call CheckDelay |
1065 083c 8823 tst r24 |
1066 083e B9F3 breq .L123 |
1067 .L124: |
1068 0840 2197 sbiw r28,1 |
1069 0842 21E0 ldi r18,lo8(1) |
1070 0844 30E0 ldi r19,hi8(1) |
1071 0846 C901 movw r24,r18 |
1072 0848 02C0 rjmp 2f |
1073 084a 880F 1: lsl r24 |
1074 084c 991F rol r25 |
1075 084e CA95 2: dec r28 |
1076 0850 E2F7 brpl 1b |
1077 0852 9093 0000 sts (BLConfig_ReadMask)+1,r25 |
1078 0856 8093 0000 sts BLConfig_ReadMask,r24 |
1079 085a D901 movw r26,r18 |
1080 085c E0E0 ldi r30,lo8(Motor) |
1081 085e F0E0 ldi r31,hi8(Motor) |
1082 0860 40E0 ldi r20,lo8(0) |
1083 0862 50E0 ldi r21,hi8(0) |
1084 0864 6BE0 ldi r22,lo8(11) |
1085 .L130: |
1086 0866 CD01 movw r24,r26 |
1087 0868 042E mov r0,r20 |
1088 086a 02C0 rjmp 2f |
1089 086c 880F 1: lsl r24 |
1090 086e 991F rol r25 |
1091 0870 0A94 2: dec r0 |
1092 0872 E2F7 brpl 1b |
1093 0874 2091 0000 lds r18,BLConfig_ReadMask |
1094 0878 3091 0000 lds r19,(BLConfig_ReadMask)+1 |
1095 087c 8223 and r24,r18 |
1096 087e 9323 and r25,r19 |
1097 0880 892B or r24,r25 |
1098 0882 11F0 breq .L128 |
1099 0884 1182 std Z+1,__zero_reg__ |
1100 0886 1282 std Z+2,__zero_reg__ |
1101 .L128: |
1102 0888 6150 subi r22,lo8(-(-1)) |
1103 088a 4F5F subi r20,lo8(-(1)) |
1104 088c 5F4F sbci r21,hi8(-(1)) |
1105 088e 3896 adiw r30,8 |
1106 0890 67FF sbrs r22,7 |
1107 0892 E9CF rjmp .L130 |
1108 0894 1092 0000 sts motor_read,__zero_reg__ |
1109 0898 1092 0000 sts BLConfig,__zero_reg__ |
1110 089c 1092 0000 sts BLConfig+7,__zero_reg__ |
1111 .L131: |
1112 08a0 1092 0000 sts twi_state,__zero_reg__ |
1113 08a4 8091 0000 lds r24,BLFlags |
1114 08a8 8E7F andi r24,lo8(-2) |
1115 08aa 8093 0000 sts BLFlags,r24 |
1116 08ae 85EA ldi r24,lo8(-91) |
1117 08b0 8093 BC00 sts 188,r24 |
1118 .L134: |
1119 08b4 8091 0000 lds r24,BLFlags |
1120 08b8 80FD sbrc r24,0 |
1121 08ba 05C0 rjmp .L135 |
1122 08bc C801 movw r24,r16 |
1123 08be 0E94 0000 call CheckDelay |
1124 08c2 8823 tst r24 |
1125 08c4 B9F3 breq .L134 |
1126 .L135: |
1127 08c6 8091 0000 lds r24,BLConfig_ReadMask |
1128 08ca 9091 0000 lds r25,(BLConfig_ReadMask)+1 |
1129 08ce 892B or r24,r25 |
1130 08d0 29F0 breq .L132 |
1131 08d2 C801 movw r24,r16 |
1132 08d4 0E94 0000 call CheckDelay |
1133 08d8 8823 tst r24 |
1134 08da 11F3 breq .L131 |
1135 .L132: |
1136 08dc 8091 0000 lds r24,BLConfig |
1137 08e0 8230 cpi r24,lo8(2) |
1138 08e2 19F0 breq .L137 |
1139 08e4 84E0 ldi r24,lo8(4) |
1140 08e6 90E0 ldi r25,hi8(4) |
1141 08e8 0FC0 rjmp .L116 |
1142 .L137: |
1143 08ea 67E0 ldi r22,lo8(7) |
1144 08ec 70E0 ldi r23,hi8(7) |
1145 08ee 80E0 ldi r24,lo8(BLConfig) |
1146 08f0 90E0 ldi r25,hi8(BLConfig) |
1147 08f2 0E94 0000 call RAM_Checksum |
1148 08f6 9091 0000 lds r25,BLConfig+7 |
1149 08fa 8917 cp r24,r25 |
1150 08fc 19F0 breq .L138 |
1151 08fe 85E0 ldi r24,lo8(5) |
1152 0900 90E0 ldi r25,hi8(5) |
1153 0902 02C0 rjmp .L116 |
1154 .L138: |
1155 0904 80E0 ldi r24,lo8(0) |
1156 0906 90E0 ldi r25,hi8(0) |
1157 .L116: |
1158 /* epilogue: frame size=0 */ |
1159 0908 DF91 pop r29 |
1160 090a CF91 pop r28 |
1161 090c 1F91 pop r17 |
1162 090e 0F91 pop r16 |
1163 0910 0895 ret |
1164 /* epilogue end (size=5) */ |
1165 /* function I2C_ReadBLConfig size 168 (159) */ |
1167 .comm Motor,96,1 |
1168 .comm BLConfig,8,1 |
1169 /* File "twimaster.c": code 1193 = 0x04a9 (1149), prologues 20, epilogues 24 */ |
DEFINED SYMBOLS |
*ABS*:00000000 twimaster.c |
C:\Users\Arthur-P\AppData\Local\Temp/ccktbaaa.s:3 *ABS*:0000003f __SREG__ |
C:\Users\Arthur-P\AppData\Local\Temp/ccktbaaa.s:4 *ABS*:0000003e __SP_H__ |
C:\Users\Arthur-P\AppData\Local\Temp/ccktbaaa.s:5 *ABS*:0000003d __SP_L__ |
C:\Users\Arthur-P\AppData\Local\Temp/ccktbaaa.s:6 *ABS*:00000000 __tmp_reg__ |
C:\Users\Arthur-P\AppData\Local\Temp/ccktbaaa.s:7 *ABS*:00000001 __zero_reg__ |
C:\Users\Arthur-P\AppData\Local\Temp/ccktbaaa.s:15 .bss:00000000 BLConfig_ReadMask |
C:\Users\Arthur-P\AppData\Local\Temp/ccktbaaa.s:21 .bss:00000002 BLConfig_WriteMask |
C:\Users\Arthur-P\AppData\Local\Temp/ccktbaaa.s:27 .bss:00000004 BLFlags |
C:\Users\Arthur-P\AppData\Local\Temp/ccktbaaa.s:33 .bss:00000005 MissingMotor |
C:\Users\Arthur-P\AppData\Local\Temp/ccktbaaa.s:39 .data:00000000 I2CTimeout |
C:\Users\Arthur-P\AppData\Local\Temp/ccktbaaa.s:46 .bss:00000006 motor_read |
C:\Users\Arthur-P\AppData\Local\Temp/ccktbaaa.s:52 .bss:00000007 motor_write |
C:\Users\Arthur-P\AppData\Local\Temp/ccktbaaa.s:58 .bss:00000008 dac_channel |
C:\Users\Arthur-P\AppData\Local\Temp/ccktbaaa.s:64 .bss:00000009 twi_state |
C:\Users\Arthur-P\AppData\Local\Temp/ccktbaaa.s:69 .text:00000000 I2C_Init |
*COM*:00000060 Motor |
C:\Users\Arthur-P\AppData\Local\Temp/ccktbaaa.s:113 .text:0000004c I2C_Reset |
.bss:0000000a missing_motor.0 |
C:\Users\Arthur-P\AppData\Local\Temp/ccktbaaa.s:140 .bss:0000000b motor_read_temperature.1 |
C:\Users\Arthur-P\AppData\Local\Temp/ccktbaaa.s:141 .bss:0000000c pBuff.2 |
C:\Users\Arthur-P\AppData\Local\Temp/ccktbaaa.s:142 .bss:0000000e BuffLen.3 |
C:\Users\Arthur-P\AppData\Local\Temp/ccktbaaa.s:146 .text:00000092 __vector_26 |
*COM*:00000008 BLConfig |
C:\Users\Arthur-P\AppData\Local\Temp/ccktbaaa.s:828 .text:00000670 I2C_WriteBLConfig |
C:\Users\Arthur-P\AppData\Local\Temp/ccktbaaa.s:1000 .text:000007c4 I2C_ReadBLConfig |
|
UNDEFINED SYMBOLS |
__do_copy_data |
__do_clear_bss |
__tablejump2__ |
Mixer |
RequiredMotors |
FCFlags |
AnalogOffsetNick |
AnalogOffsetRoll |
AnalogOffsetGier |
MotorenEin |
PC_MotortestActive |
RAM_Checksum |
SetDelay |
CheckDelay |