Subversion Repositories FlightCtrl

Rev

Rev 2301 | Go to most recent revision | Blame | Compare with Previous | Last modification | View Log | RSS feed

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

UNDEFINED SYMBOLS
__do_copy_data
__do_clear_bss
__tablejump2__
Mixer
RequiredMotors
FC_StatusFlags
AnalogOffsetNick
AnalogOffsetRoll
AnalogOffsetGier
MotorenEin
PC_MotortestActive
RAM_Checksum
SetDelay
CheckDelay