Subversion Repositories FlightCtrl

Rev

Go to most recent revision | Blame | Last modification | View Log | RSS feed

   1                            .file   "twimaster.c"
   2                            .arch atmega644
   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 I2CError
  11                    .global I2CError
  12                            .section .bss
  15                    I2CError:
  16 0000 0000                  .skip 2,0
  17                    .global MissingMotor
  18                    .global MissingMotor
  21                    MissingMotor:
  22 0002 00                    .skip 1,0
  23                    .global motorread
  24                    .global motorread
  27                    motorread:
  28 0003 00                    .skip 1,0
  29                    .global motor
  30                    .global motor
  33                    motor:
  34 0004 00                    .skip 1,0
  35                    .global twi_state
  36                    .global twi_state
  39                    twi_state:
  40 0005 00                    .skip 1,0
  41                            .text
  42                    .global i2c_init
  44                    i2c_init:
  45                    /* prologue: frame size=0 */
  46                    /* prologue end (size=0) */
  47 0000 1092 B900             sts 185,__zero_reg__
  48 0004 8AE2                  ldi r24,lo8(42)
  49 0006 8093 B800             sts 184,r24
  50                    /* epilogue: frame size=0 */
  51 000a 0895                  ret
  52                    /* epilogue end (size=1) */
  53                    /* function i2c_init size 6 (5) */
  55                    .global i2c_start
  57                    i2c_start:
  58                    /* prologue: frame size=0 */
  59                    /* prologue end (size=0) */
  60 000c 85EA                  ldi r24,lo8(-91)
  61 000e 8093 BC00             sts 188,r24
  62                    /* epilogue: frame size=0 */
  63 0012 0895                  ret
  64                    /* epilogue end (size=1) */
  65                    /* function i2c_start size 4 (3) */
  67                    .global i2c_stop
  69                    i2c_stop:
  70                    /* prologue: frame size=0 */
  71                    /* prologue end (size=0) */
  72 0014 84E9                  ldi r24,lo8(-108)
  73 0016 8093 BC00             sts 188,r24
  74                    /* epilogue: frame size=0 */
  75 001a 0895                  ret
  76                    /* epilogue end (size=1) */
  77                    /* function i2c_stop size 4 (3) */
  79                    .global i2c_write_byte
  81                    i2c_write_byte:
  82                    /* prologue: frame size=0 */
  83                    /* prologue end (size=0) */
  84 001c 1092 B900             sts 185,__zero_reg__
  85 0020 8093 BB00             sts 187,r24
  86 0024 85E8                  ldi r24,lo8(-123)
  87 0026 8093 BC00             sts 188,r24
  88                    /* epilogue: frame size=0 */
  89 002a 0895                  ret
  90                    /* epilogue end (size=1) */
  91                    /* function i2c_write_byte size 8 (7) */
  93                    .global i2c_reset
  95                    i2c_reset:
  96                    /* prologue: frame size=0 */
  97                    /* prologue end (size=0) */
  98 002c 0E94 0000             call i2c_stop
  99 0030 1092 0000             sts twi_state,__zero_reg__
 100 0034 8091 BB00             lds r24,187
 101 0038 1092 0000             sts motor,__zero_reg__
 102 003c 80E8                  ldi r24,lo8(-128)
 103 003e 8093 BC00             sts 188,r24
 104 0042 1092 BD00             sts 189,__zero_reg__
 105 0046 1092 BA00             sts 186,__zero_reg__
 106 004a 1092 BB00             sts 187,__zero_reg__
 107 004e 1092 B900             sts 185,__zero_reg__
 108 0052 1092 B800             sts 184,__zero_reg__
 109 0056 0E94 0000             call i2c_init
 110 005a 0E94 0000             call i2c_start
 111 005e 80E0                  ldi r24,lo8(0)
 112 0060 0E94 0000             call i2c_write_byte
 113                    /* epilogue: frame size=0 */
 114 0064 0895                  ret
 115                    /* epilogue end (size=1) */
 116                    /* function i2c_reset size 29 (28) */
 118                    .global I2C_WriteByte
 120                    I2C_WriteByte:
 121                    /* prologue: frame size=0 */
 122                    /* prologue end (size=0) */
 123 0066 8093 BB00             sts 187,r24
 124 006a 85E8                  ldi r24,lo8(-123)
 125 006c 8093 BC00             sts 188,r24
 126                    /* epilogue: frame size=0 */
 127 0070 0895                  ret
 128                    /* epilogue end (size=1) */
 129                    /* function I2C_WriteByte size 6 (5) */
 131                    .global I2C_ReceiveByte
 133                    I2C_ReceiveByte:
 134                    /* prologue: frame size=0 */
 135                    /* prologue end (size=0) */
 136 0072 85EC                  ldi r24,lo8(-59)
 137 0074 8093 BC00             sts 188,r24
 138                    /* epilogue: frame size=0 */
 139 0078 0895                  ret
 140                    /* epilogue end (size=1) */
 141                    /* function I2C_ReceiveByte size 4 (3) */
 143                    .global I2C_ReceiveLastByte
 145                    I2C_ReceiveLastByte:
 146                    /* prologue: frame size=0 */
 147                    /* prologue end (size=0) */
 148 007a 85E8                  ldi r24,lo8(-123)
 149 007c 8093 BC00             sts 188,r24
 150                    /* epilogue: frame size=0 */
 151 0080 0895                  ret
 152                    /* epilogue end (size=1) */
 153                    /* function I2C_ReceiveLastByte size 4 (3) */
 155                            .lcomm missing_motor.0,1
 156                    .global __vector_26
 158                    __vector_26:
 159                    /* prologue: frame size=0 */
 160 0082 1F92                  push __zero_reg__
 161 0084 0F92                  push __tmp_reg__
 162 0086 0FB6                  in __tmp_reg__,__SREG__
 163 0088 0F92                  push __tmp_reg__
 164 008a 1124                  clr __zero_reg__
 165 008c 2F93                  push r18
 166 008e 3F93                  push r19
 167 0090 4F93                  push r20
 168 0092 5F93                  push r21
 169 0094 6F93                  push r22
 170 0096 7F93                  push r23
 171 0098 8F93                  push r24
 172 009a 9F93                  push r25
 173 009c AF93                  push r26
 174 009e BF93                  push r27
 175 00a0 EF93                  push r30
 176 00a2 FF93                  push r31
 177                    /* prologue end (size=17) */
 178 00a4 8091 0000             lds r24,twi_state
 179 00a8 282F                  mov r18,r24
 180 00aa 3327                  clr r19
 181 00ac 4427                  clr r20
 182 00ae 5527                  clr r21
 183 00b0 8F5F                  subi r24,lo8(-(1))
 184 00b2 8093 0000             sts twi_state,r24
 185 00b6 F901                  movw r30,r18
 186 00b8 2731                  cpi r18,23
 187 00ba 3105                  cpc r19,__zero_reg__
 188 00bc 00F4                  brsh .L48
 189 00be E050                  subi r30,lo8(-(pm(.L49)))
 190 00c0 F040                  sbci r31,hi8(-(pm(.L49)))
 191 00c2 0C94 0000             jmp __tablejump2__
 192                            .data
 193                            .section .progmem.gcc_sw_table, "a", @progbits
 194                            .p2align 1
 195                    .L49:
 196 0000 0000                  .word pm(.L11)
 197 0002 0000                  .word pm(.L21)
 198 0004 0000                  .word pm(.L22)
 199 0006 0000                  .word pm(.L26)
 200 0008 0000                  .word pm(.L30)
 201 000a 0000                  .word pm(.L31)
 202 000c 0000                  .word pm(.L48)
 203 000e 0000                  .word pm(.L48)
 204 0010 0000                  .word pm(.L43)
 205 0012 0000                  .word pm(.L34)
 206 0014 0000                  .word pm(.L35)
 207 0016 0000                  .word pm(.L46)
 208 0018 0000                  .word pm(.L42)
 209 001a 0000                  .word pm(.L43)
 210 001c 0000                  .word pm(.L39)
 211 001e 0000                  .word pm(.L40)
 212 0020 0000                  .word pm(.L46)
 213 0022 0000                  .word pm(.L42)
 214 0024 0000                  .word pm(.L43)
 215 0026 0000                  .word pm(.L44)
 216 0028 0000                  .word pm(.L45)
 217 002a 0000                  .word pm(.L46)
 218 002c 0000                  .word pm(.L47)
 219                            .text
 220                    .L31:
 221 00c6 8091 0000             lds r24,motorread
 222 00ca E82F                  mov r30,r24
 223 00cc FF27                  clr r31
 224 00ce E050                  subi r30,lo8(-(motor_rx2))
 225 00d0 F040                  sbci r31,hi8(-(motor_rx2))
 226 00d2 9091 BB00             lds r25,187
 227 00d6 9083                  st Z,r25
 228 00d8 8F5F                  subi r24,lo8(-(1))
 229 00da 8230                  cpi r24,lo8(2)
 230 00dc 00F4                  brsh .+2
 231 00de 00C0                  rjmp .L55
 232 00e0 1092 0000             sts motorread,__zero_reg__
 233 00e4 0E94 0000             call i2c_stop
 234                    .L48:
 235 00e8 1092 0000             sts twi_state,__zero_reg__
 236 00ec 00C0                  rjmp .L10
 237                    .L46:
 238 00ee 80E8                  ldi r24,lo8(-128)
 239 00f0 0E94 0000             call i2c_write_byte
 240 00f4 00C0                  rjmp .L10
 241                    .L43:
 242 00f6 88E9                  ldi r24,lo8(-104)
 243 00f8 0E94 0000             call i2c_write_byte
 244 00fc 00C0                  rjmp .L10
 245                    .L42:
 246 00fe 0E94 0000             call i2c_stop
 247 0102 8AE0                  ldi r24,lo8(10)
 248 0104 90E0                  ldi r25,hi8(10)
 249 0106 9093 0000             sts (I2CTimeout)+1,r25
 250 010a 8093 0000             sts I2CTimeout,r24
 251 010e 0E94 0000             call i2c_start
 252 0112 00C0                  rjmp .L10
 253                    .L44:
 254 0114 84E1                  ldi r24,lo8(20)
 255 0116 0E94 0000             call i2c_write_byte
 256 011a 00C0                  rjmp .L10
 257                    .L39:
 258 011c 82E1                  ldi r24,lo8(18)
 259 011e 0E94 0000             call i2c_write_byte
 260 0122 00C0                  rjmp .L10
 261                    .L35:
 262 0124 8091 0000             lds r24,AnalogOffsetNick
 263 0128 0E94 0000             call i2c_write_byte
 264 012c 00C0                  rjmp .L10
 265                    .L34:
 266 012e 80E1                  ldi r24,lo8(16)
 267 0130 0E94 0000             call i2c_write_byte
 268 0134 00C0                  rjmp .L10
 269                    .L40:
 270 0136 8091 0000             lds r24,AnalogOffsetRoll
 271 013a 0E94 0000             call i2c_write_byte
 272 013e 00C0                  rjmp .L10
 273                    .L45:
 274 0140 8091 0000             lds r24,AnalogOffsetGier
 275 0144 0E94 0000             call i2c_write_byte
 276 0148 00C0                  rjmp .L10
 277                    .L21:
 278 014a 8091 0000             lds r24,motor
 279 014e E82F                  mov r30,r24
 280 0150 FF27                  clr r31
 281 0152 E050                  subi r30,lo8(-(Motor))
 282 0154 F040                  sbci r31,hi8(-(Motor))
 283 0156 8F5F                  subi r24,lo8(-(1))
 284 0158 8093 0000             sts motor,r24
 285 015c 8081                  ld r24,Z
 286 015e 0E94 0000             call i2c_write_byte
 287 0162 00C0                  rjmp .L10
 288                    .L11:
 289 0164 9091 0000             lds r25,motor
 290 0168 292F                  mov r18,r25
 291 016a E92F                  mov r30,r25
 292 016c FF27                  clr r31
 293 016e EE0F                  lsl r30
 294 0170 FF1F                  rol r31
 295 0172 EE0F                  lsl r30
 296 0174 FF1F                  rol r31
 297 0176 E050                  subi r30,lo8(-(Mixer))
 298 0178 F040                  sbci r31,hi8(-(Mixer))
 299 017a 8585                  ldd r24,Z+13
 300 017c 1816                  cp __zero_reg__,r24
 301 017e 04F0                  brlt .+2
 302 0180 00C0                  rjmp .L59
 303                    .L13:
 304 0182 9230                  cpi r25,lo8(2)
 305 0184 01F4                  brne .+2
 306 0186 00C0                  rjmp .L60
 307 0188 9923                  tst r25
 308 018a 01F4                  brne .+2
 309 018c 00C0                  rjmp .L61
 310                    .L19:
 311 018e 9130                  cpi r25,lo8(1)
 312 0190 01F0                  breq .+2
 313 0192 00C0                  rjmp .L10
 314 0194 86E5                  ldi r24,lo8(86)
 315 0196 0E94 0000             call i2c_write_byte
 316 019a 00C0                  rjmp .L10
 317                    .L30:
 318 019c 8091 0000             lds r24,motorread
 319 01a0 E82F                  mov r30,r24
 320 01a2 FF27                  clr r31
 321 01a4 E050                  subi r30,lo8(-(motor_rx))
 322 01a6 F040                  sbci r31,hi8(-(motor_rx))
 323 01a8 8091 BB00             lds r24,187
 324 01ac 8083                  st Z,r24
 325 01ae 0E94 0000             call I2C_ReceiveLastByte
 326 01b2 00C0                  rjmp .L10
 327                    .L26:
 328 01b4 8091 B900             lds r24,185
 329 01b8 8034                  cpi r24,lo8(64)
 330 01ba 01F4                  brne .+2
 331 01bc 00C0                  rjmp .L27
 332 01be 8091 0000             lds r24,motorread
 333 01c2 E82F                  mov r30,r24
 334 01c4 FF27                  clr r31
 335 01c6 E050                  subi r30,lo8(-(MotorPresent))
 336 01c8 F040                  sbci r31,hi8(-(MotorPresent))
 337 01ca 1082                  st Z,__zero_reg__
 338 01cc 8F5F                  subi r24,lo8(-(1))
 339 01ce 8230                  cpi r24,lo8(2)
 340 01d0 00F0                  brlo .L54
 341 01d2 1092 0000             sts motorread,__zero_reg__
 342                    .L28:
 343 01d6 0E94 0000             call i2c_stop
 344 01da 1092 0000             sts twi_state,__zero_reg__
 345                    .L29:
 346 01de 1092 0000             sts MissingMotor,__zero_reg__
 347 01e2 1092 0000             sts missing_motor.0,__zero_reg__
 348 01e6 00C0                  rjmp .L10
 349                    .L22:
 350 01e8 8091 B900             lds r24,185
 351 01ec 8033                  cpi r24,lo8(48)
 352 01ee 01F4                  brne .+2
 353 01f0 00C0                  rjmp .L62
 354                    .L23:
 355 01f2 0E94 0000             call i2c_stop
 356 01f6 8AE0                  ldi r24,lo8(10)
 357 01f8 90E0                  ldi r25,hi8(10)
 358 01fa 9093 0000             sts (I2CTimeout)+1,r25
 359 01fe 8093 0000             sts I2CTimeout,r24
 360 0202 1092 0000             sts twi_state,__zero_reg__
 361 0206 0E94 0000             call i2c_start
 362 020a 00C0                  rjmp .L10
 363                    .L47:
 364 020c 0E94 0000             call i2c_stop
 365 0210 8AE0                  ldi r24,lo8(10)
 366 0212 90E0                  ldi r25,hi8(10)
 367 0214 9093 0000             sts (I2CTimeout)+1,r25
 368 0218 8093 0000             sts I2CTimeout,r24
 369 021c 00C0                  rjmp .L48
 370                    .L55:
 371 021e 8093 0000             sts motorread,r24
 372 0222 0E94 0000             call i2c_stop
 373 0226 00C0                  rjmp .L48
 374                    .L54:
 375 0228 8093 0000             sts motorread,r24
 376 022c 00C0                  rjmp .L28
 377                    .L59:
 378 022e 9230                  cpi r25,lo8(2)
 379 0230 00F0                  brlo .+2
 380 0232 00C0                  rjmp .L13
 381                    .L14:
 382 0234 922F                  mov r25,r18
 383 0236 9F5F                  subi r25,lo8(-(1))
 384 0238 E92F                  mov r30,r25
 385 023a FF27                  clr r31
 386 023c EE0F                  lsl r30
 387 023e FF1F                  rol r31
 388 0240 EE0F                  lsl r30
 389 0242 FF1F                  rol r31
 390 0244 E050                  subi r30,lo8(-(Mixer))
 391 0246 F040                  sbci r31,hi8(-(Mixer))
 392 0248 8585                  ldd r24,Z+13
 393 024a 1816                  cp __zero_reg__,r24
 394 024c 04F0                  brlt .L51
 395 024e 292F                  mov r18,r25
 396 0250 9230                  cpi r25,lo8(2)
 397 0252 00F0                  brlo .L14
 398                    .L51:
 399 0254 9093 0000             sts motor,r25
 400 0258 00C0                  rjmp .L13
 401                    .L60:
 402 025a 1092 0000             sts motor,__zero_reg__
 403 025e 83E0                  ldi r24,lo8(3)
 404 0260 8093 0000             sts twi_state,r24
 405 0264 8091 0000             lds r24,motorread
 406 0268 8823                  tst r24
 407 026a 01F0                  breq .L63
 408                    .L16:
 409 026c 8130                  cpi r24,lo8(1)
 410 026e 01F4                  brne .L10
 411 0270 87E5                  ldi r24,lo8(87)
 412 0272 0E94 0000             call i2c_write_byte
 413 0276 00C0                  rjmp .L10
 414                    .L62:
 415 0278 8091 0000             lds r24,missing_motor.0
 416 027c 8823                  tst r24
 417 027e 01F4                  brne .L52
 418 0280 9091 0000             lds r25,motor
 419 0284 9093 0000             sts missing_motor.0,r25
 420                    .L24:
 421 0288 E92F                  mov r30,r25
 422 028a FF27                  clr r31
 423 028c E050                  subi r30,lo8(-(MotorError-1))
 424 028e F040                  sbci r31,hi8(-(MotorError-1))
 425 0290 8081                  ld r24,Z
 426 0292 8F5F                  subi r24,lo8(-(1))
 427 0294 01F4                  brne .L53
 428 0296 8FEF                  ldi r24,lo8(-1)
 429                    .L53:
 430 0298 8083                  st Z,r24
 431 029a 00C0                  rjmp .L23
 432                    .L61:
 433 029c 82E5                  ldi r24,lo8(82)
 434 029e 0E94 0000             call i2c_write_byte
 435 02a2 9091 0000             lds r25,motor
 436 02a6 00C0                  rjmp .L19
 437                    .L27:
 438 02a8 8091 0000             lds r24,motorread
 439 02ac E82F                  mov r30,r24
 440 02ae FF27                  clr r31
 441 02b0 E050                  subi r30,lo8(-(MotorPresent))
 442 02b2 F040                  sbci r31,hi8(-(MotorPresent))
 443 02b4 8C5F                  subi r24,lo8(-(4))
 444 02b6 8083                  st Z,r24
 445 02b8 0E94 0000             call I2C_ReceiveByte
 446 02bc 00C0                  rjmp .L29
 447                    .L52:
 448 02be 9091 0000             lds r25,motor
 449 02c2 00C0                  rjmp .L24
 450                    .L63:
 451 02c4 83E5                  ldi r24,lo8(83)
 452 02c6 0E94 0000             call i2c_write_byte
 453 02ca 8091 0000             lds r24,motorread
 454 02ce 00C0                  rjmp .L16
 455                    .L10:
 456 02d0 8091 BC00             lds r24,188
 457 02d4 8068                  ori r24,lo8(-128)
 458 02d6 8093 BC00             sts 188,r24
 459                    /* epilogue: frame size=0 */
 460 02da FF91                  pop r31
 461 02dc EF91                  pop r30
 462 02de BF91                  pop r27
 463 02e0 AF91                  pop r26
 464 02e2 9F91                  pop r25
 465 02e4 8F91                  pop r24
 466 02e6 7F91                  pop r23
 467 02e8 6F91                  pop r22
 468 02ea 5F91                  pop r21
 469 02ec 4F91                  pop r20
 470 02ee 3F91                  pop r19
 471 02f0 2F91                  pop r18
 472 02f2 0F90                  pop __tmp_reg__
 473 02f4 0FBE                  out __SREG__,__tmp_reg__
 474 02f6 0F90                  pop __tmp_reg__
 475 02f8 1F90                  pop __zero_reg__
 476 02fa 1895                  reti
 477                    /* epilogue end (size=17) */
 478                    /* function __vector_26 size 342 (308) */
 480                            .comm motor_rx,16,1
 481                            .comm MotorPresent,2,1
 482                            .comm MotorError,2,1
 483                            .comm Mixer,77,1
 484                            .comm motor_rx2,16,1
 485                    /* File "twimaster.c": code  407 = 0x0197 ( 365), prologues  17, epilogues  25 */
DEFINED SYMBOLS
                            *ABS*:00000000 twimaster.c
C:\Users\Bernd\AppData\Local\Temp/ccqYbtJB.s:3      *ABS*:0000003f __SREG__
C:\Users\Bernd\AppData\Local\Temp/ccqYbtJB.s:4      *ABS*:0000003e __SP_H__
C:\Users\Bernd\AppData\Local\Temp/ccqYbtJB.s:5      *ABS*:0000003d __SP_L__
C:\Users\Bernd\AppData\Local\Temp/ccqYbtJB.s:6      *ABS*:00000000 __tmp_reg__
C:\Users\Bernd\AppData\Local\Temp/ccqYbtJB.s:7      *ABS*:00000001 __zero_reg__
C:\Users\Bernd\AppData\Local\Temp/ccqYbtJB.s:15     .bss:00000000 I2CError
C:\Users\Bernd\AppData\Local\Temp/ccqYbtJB.s:21     .bss:00000002 MissingMotor
C:\Users\Bernd\AppData\Local\Temp/ccqYbtJB.s:27     .bss:00000003 motorread
C:\Users\Bernd\AppData\Local\Temp/ccqYbtJB.s:33     .bss:00000004 motor
C:\Users\Bernd\AppData\Local\Temp/ccqYbtJB.s:39     .bss:00000005 twi_state
C:\Users\Bernd\AppData\Local\Temp/ccqYbtJB.s:44     .text:00000000 i2c_init
C:\Users\Bernd\AppData\Local\Temp/ccqYbtJB.s:57     .text:0000000c i2c_start
C:\Users\Bernd\AppData\Local\Temp/ccqYbtJB.s:69     .text:00000014 i2c_stop
C:\Users\Bernd\AppData\Local\Temp/ccqYbtJB.s:81     .text:0000001c i2c_write_byte
C:\Users\Bernd\AppData\Local\Temp/ccqYbtJB.s:95     .text:0000002c i2c_reset
C:\Users\Bernd\AppData\Local\Temp/ccqYbtJB.s:120    .text:00000066 I2C_WriteByte
C:\Users\Bernd\AppData\Local\Temp/ccqYbtJB.s:133    .text:00000072 I2C_ReceiveByte
C:\Users\Bernd\AppData\Local\Temp/ccqYbtJB.s:145    .text:0000007a I2C_ReceiveLastByte
                             .bss:00000006 missing_motor.0
C:\Users\Bernd\AppData\Local\Temp/ccqYbtJB.s:158    .text:00000082 __vector_26
                            *COM*:00000010 motor_rx2
                            *COM*:0000004d Mixer
                            *COM*:00000010 motor_rx
                            *COM*:00000002 MotorPresent
                            *COM*:00000002 MotorError

UNDEFINED SYMBOLS
__do_copy_data
__do_clear_bss
__tablejump2__
I2CTimeout
AnalogOffsetNick
AnalogOffsetRoll
AnalogOffsetGier
Motor