Subversion Repositories FlightCtrl

Rev

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

   1                            .file   "sbus.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 NewSBusData
  11                    .global NewSBusData
  12                            .section .bss
  15                    NewSBusData:
  16 0000 00                    .skip 1,0
  17                            .text
  18                    .global SbusUartInit
  20                    SbusUartInit:
  21                    /* prologue: frame size=0 */
  22                    /* prologue end (size=0) */
  23 0000 4FB7                  in r20,95-0x20
  24 0002 28E1                  ldi r18,lo8(24)
  25 0004 30E0                  ldi r19,hi8(24)
  26                    /* #APP */
  27 0006 F894                  cli
  28                    /* #NOAPP */
  29 0008 8091 C900             lds r24,201
  30 000c 8F77                  andi r24,lo8(127)
  31 000e 8093 C900             sts 201,r24
  32 0012 8091 C900             lds r24,201
  33 0016 8F7B                  andi r24,lo8(-65)
  34 0018 8093 C900             sts 201,r24
  35 001c 8091 C900             lds r24,201
  36 0020 8F7D                  andi r24,lo8(-33)
  37 0022 8093 C900             sts 201,r24
  38 0026 5A9A                  sbi 43-0x20,2
  39 0028 5298                  cbi 42-0x20,2
  40 002a 5B9A                  sbi 43-0x20,3
  41 002c 539A                  sbi 42-0x20,3
  42 002e 832F                  mov r24,r19
  43 0030 9927                  clr r25
  44 0032 8093 CD00             sts 205,r24
  45 0036 2093 CC00             sts 204,r18
  46 003a 8091 C800             lds r24,200
  47 003e 8260                  ori r24,lo8(2)
  48 0040 8093 C800             sts 200,r24
  49 0044 80E1                  ldi r24,lo8(16)
  50 0046 8093 C900             sts 201,r24
  51 004a 8091 CA00             lds r24,202
  52 004e 8F77                  andi r24,lo8(127)
  53 0050 8093 CA00             sts 202,r24
  54 0054 8091 CA00             lds r24,202
  55 0058 8F7B                  andi r24,lo8(-65)
  56 005a 8093 CA00             sts 202,r24
  57 005e 8091 CA00             lds r24,202
  58 0062 8091 CA00             lds r24,202
  59 0066 8F7E                  andi r24,lo8(-17)
  60 0068 8093 CA00             sts 202,r24
  61 006c 8091 CA00             lds r24,202
  62 0070 8860                  ori r24,lo8(8)
  63 0072 8093 CA00             sts 202,r24
  64 0076 8091 C900             lds r24,201
  65 007a 8B7F                  andi r24,lo8(-5)
  66 007c 8093 C900             sts 201,r24
  67 0080 8091 CA00             lds r24,202
  68 0084 8460                  ori r24,lo8(4)
  69 0086 8093 CA00             sts 202,r24
  70 008a 8091 CA00             lds r24,202
  71 008e 8260                  ori r24,lo8(2)
  72 0090 8093 CA00             sts 202,r24
  73                    .L7:
  74 0094 8091 C800             lds r24,200
  75 0098 87FF                  sbrs r24,7
  76 009a 00C0                  rjmp .L6
  77 009c 8091 CE00             lds r24,206
  78 00a0 00C0                  rjmp .L7
  79                    .L6:
  80 00a2 8091 C900             lds r24,201
  81 00a6 8068                  ori r24,lo8(-128)
  82 00a8 8093 C900             sts 201,r24
  83 00ac 8091 0000             lds r24,sBusBuffer+23
  84 00b0 8460                  ori r24,lo8(4)
  85 00b2 8093 0000             sts sBusBuffer+23,r24
  86 00b6 4FBF                  out 95-0x20,r20
  87                    /* epilogue: frame size=0 */
  88 00b8 0895                  ret
  89                    /* epilogue end (size=1) */
  90                    /* function SbusUartInit size 94 (93) */
  92                            .lcomm ptr.1,1
  93                    .global SbusParser
  95                    SbusParser:
  96                    /* prologue: frame size=0 */
  97                    /* prologue end (size=0) */
  98 00ba 9091 0000             lds r25,SpektrumTimer
  99 00be 9923                  tst r25
 100 00c0 01F4                  brne .L9
 101 00c2 8F30                  cpi r24,lo8(15)
 102 00c4 01F4                  brne .L9
 103 00c6 9093 0000             sts ptr.1,r25
 104 00ca 80E5                  ldi r24,lo8(80)
 105 00cc 8093 0000             sts SpektrumTimer,r24
 106 00d0 0895                  ret
 107                    .L9:
 108 00d2 E091 0000             lds r30,ptr.1
 109 00d6 EF5F                  subi r30,lo8(-(1))
 110 00d8 E093 0000             sts ptr.1,r30
 111 00dc E831                  cpi r30,lo8(24)
 112 00de 01F4                  brne .L11
 113 00e0 81E0                  ldi r24,lo8(1)
 114 00e2 8093 0000             sts NewSBusData,r24
 115 00e6 0895                  ret
 116                    .L11:
 117 00e8 E931                  cpi r30,lo8(25)
 118 00ea 00F0                  brlo .L13
 119 00ec 89E1                  ldi r24,lo8(25)
 120 00ee 8093 0000             sts ptr.1,r24
 121 00f2 0895                  ret
 122                    .L13:
 123 00f4 FF27                  clr r31
 124 00f6 E050                  subi r30,lo8(-(sBusBuffer))
 125 00f8 F040                  sbci r31,hi8(-(sBusBuffer))
 126 00fa 8083                  st Z,r24
 127 00fc 0895                  ret
 128                    /* epilogue: frame size=0 */
 129                    /* epilogue: noreturn */
 130                    /* epilogue end (size=0) */
 131                    /* function SbusParser size 34 (34) */
 133                            .lcomm load.0,1
 134                    .global ProcessSBus
 136                    ProcessSBus:
 137                    /* prologue: frame size=0 */
 138 00fe A0E0                  ldi r26,lo8(0)
 139 0100 B0E0                  ldi r27,hi8(0)
 140 0102 E0E0                  ldi r30,pm_lo8(1f)
 141 0104 F0E0                  ldi r31,pm_hi8(1f)
 142 0106 0C94 0000             jmp __prologue_saves__+16
 143                    1:
 144                    /* prologue end (size=6) */
 145 010a 91E0                  ldi r25,lo8(1)
 146 010c D92E                  mov r13,r25
 147 010e 82E0                  ldi r24,lo8(2)
 148 0110 A82E                  mov r10,r24
 149 0112 BD2C                  mov r11,r13
 150 0114 E12C                  mov r14,__zero_reg__
 151 0116 01E0                  ldi r16,hi8(256)
 152 0118 F02E                  mov r15,r16
 153 011a 8091 0000             lds r24,sBusBuffer+23
 154 011e 82FD                  sbrc r24,2
 155 0120 00C0                  rjmp .L16
 156 0122 8091 6F00             lds r24,111
 157 0126 8F7D                  andi r24,lo8(-33)
 158 0128 8093 6F00             sts 111,r24
 159 012c E091 0000             lds r30,EE_Parameter+105
 160 0130 EE23                  tst r30
 161 0132 01F0                  breq .L18
 162 0134 FF27                  clr r31
 163 0136 EE0F                  add r30,r30
 164 0138 FF1F                  adc r31,r31
 165 013a E050                  subi r30,lo8(-(PPM_in))
 166 013c F040                  sbci r31,hi8(-(PPM_in))
 167 013e 8081                  ld r24,Z
 168 0140 9181                  ldd r25,Z+1
 169 0142 8436                  cpi r24,100
 170 0144 9105                  cpc r25,__zero_reg__
 171 0146 04F4                  brge .L17
 172                    .L18:
 173 0148 8091 0000             lds r24,SenderOkay
 174 014c 883C                  cpi r24,lo8(-56)
 175 014e 00F4                  brsh .L19
 176 0150 8091 0000             lds r24,SenderOkay
 177 0154 8C5E                  subi r24,lo8(-(20))
 178 0156 00C0                  rjmp .L38
 179                    .L19:
 180 0158 88EC                  ldi r24,lo8(-56)
 181                    .L38:
 182 015a 8093 0000             sts SenderOkay,r24
 183                    .L17:
 184 015e 8091 0000             lds r24,sBusBuffer+1
 185 0162 682F                  mov r22,r24
 186 0164 7727                  clr r23
 187 0166 8091 0000             lds r24,load.0
 188 016a 8150                  subi r24,lo8(-(-1))
 189 016c 8093 0000             sts load.0,r24
 190 0170 8F3F                  cpi r24,lo8(-1)
 191 0172 01F4                  brne .L21
 192 0174 1CE7                  ldi r17,lo8(124)
 193 0176 C12E                  mov r12,r17
 194 0178 82E0                  ldi r24,lo8(2)
 195 017a 8093 0000             sts load.0,r24
 196 017e 00C0                  rjmp .L22
 197                    .L21:
 198 0180 C4E2                  ldi r28,lo8(36)
 199 0182 CC2E                  mov r12,r28
 200                    .L22:
 201 0184 40E0                  ldi r20,lo8(0)
 202                    .L39:
 203 0186 4C15                  cp r20,r12
 204 0188 00F0                  brlo .+2
 205 018a 00C0                  rjmp .L37
 206 018c EA2D                  mov r30,r10
 207 018e FF27                  clr r31
 208 0190 E050                  subi r30,lo8(-(sBusBuffer))
 209 0192 F040                  sbci r31,hi8(-(sBusBuffer))
 210 0194 8081                  ld r24,Z
 211 0196 8D21                  and r24,r13
 212 0198 01F0                  breq .L26
 213 019a 6E29                  or r22,r14
 214 019c 7F29                  or r23,r15
 215                    .L26:
 216 019e 8D2D                  mov r24,r13
 217 01a0 9927                  clr r25
 218 01a2 880F                  add r24,r24
 219 01a4 991F                  adc r25,r25
 220 01a6 D82E                  mov r13,r24
 221 01a8 8823                  tst r24
 222 01aa 01F4                  brne .L27
 223 01ac B1E0                  ldi r27,lo8(1)
 224 01ae DB2E                  mov r13,r27
 225 01b0 AD0C                  add r10,r13
 226                    .L27:
 227 01b2 EE0C                  add r14,r14
 228 01b4 FF1C                  adc r15,r15
 229 01b6 20E0                  ldi r18,lo8(2048)
 230 01b8 E216                  cp r14,r18
 231 01ba 28E0                  ldi r18,hi8(2048)
 232 01bc F206                  cpc r15,r18
 233 01be 01F0                  breq .+2
 234 01c0 00C0                  rjmp .L25
 235 01c2 A1E0                  ldi r26,lo8(1)
 236 01c4 EA2E                  mov r14,r26
 237 01c6 F12C                  mov r15,__zero_reg__
 238 01c8 CB01                  movw r24,r22
 239 01ca 8050                  subi r24,lo8(-(-1024))
 240 01cc 9440                  sbci r25,hi8(-(-1024))
 241 01ce 65E0                  ldi r22,lo8(5)
 242 01d0 70E0                  ldi r23,hi8(5)
 243 01d2 0E94 0000             call __divmodhi4
 244 01d6 AB2D                  mov r26,r11
 245 01d8 BB27                  clr r27
 246 01da FD01                  movw r30,r26
 247 01dc EA0F                  add r30,r26
 248 01de FB1F                  adc r31,r27
 249 01e0 E050                  subi r30,lo8(-(PPM_in))
 250 01e2 F040                  sbci r31,hi8(-(PPM_in))
 251 01e4 8081                  ld r24,Z
 252 01e6 9181                  ldd r25,Z+1
 253 01e8 9C01                  movw r18,r24
 254 01ea 220F                  lsl r18
 255 01ec 331F                  rol r19
 256 01ee 280F                  add r18,r24
 257 01f0 391F                  adc r19,r25
 258 01f2 260F                  add r18,r22
 259 01f4 371F                  adc r19,r23
 260 01f6 37FF                  sbrs r19,7
 261 01f8 00C0                  rjmp .L29
 262 01fa 2D5F                  subi r18,lo8(-(3))
 263 01fc 3F4F                  sbci r19,hi8(-(3))
 264                    .L29:
 265 01fe E901                  movw r28,r18
 266 0200 D595                  asr r29
 267 0202 C795                  ror r28
 268 0204 D595                  asr r29
 269 0206 C795                  ror r28
 270 0208 CB01                  movw r24,r22
 271 020a 0196                  adiw r24,1
 272 020c 8C17                  cp r24,r28
 273 020e 9D07                  cpc r25,r29
 274 0210 04F4                  brge .L30
 275 0212 2197                  sbiw r28,1
 276 0214 00C0                  rjmp .L31
 277                    .L30:
 278 0216 6150                  subi r22,lo8(-(-1))
 279 0218 7040                  sbci r23,hi8(-(-1))
 280 021a C617                  cp r28,r22
 281 021c D707                  cpc r29,r23
 282 021e 04F4                  brge .L31
 283 0220 2196                  adiw r28,1
 284                    .L31:
 285 0222 8091 0000             lds r24,SenderOkay
 286 0226 833C                  cpi r24,lo8(-61)
 287 0228 00F0                  brlo .L33
 288 022a 8D01                  movw r16,r26
 289 022c 0A0F                  add r16,r26
 290 022e 1B1F                  adc r17,r27
 291 0230 F801                  movw r30,r16
 292 0232 E050                  subi r30,lo8(-(PPM_in))
 293 0234 F040                  sbci r31,hi8(-(PPM_in))
 294 0236 8081                  ld r24,Z
 295 0238 9181                  ldd r25,Z+1
 296 023a FE01                  movw r30,r28
 297 023c E81B                  sub r30,r24
 298 023e F90B                  sbc r31,r25
 299 0240 CF01                  movw r24,r30
 300 0242 63E0                  ldi r22,lo8(3)
 301 0244 70E0                  ldi r23,hi8(3)
 302 0246 0E94 0000             call __divmodhi4
 303 024a CB01                  movw r24,r22
 304 024c 880F                  lsl r24
 305 024e 991F                  rol r25
 306 0250 860F                  add r24,r22
 307 0252 971F                  adc r25,r23
 308 0254 0050                  subi r16,lo8(-(PPM_diff))
 309 0256 1040                  sbci r17,hi8(-(PPM_diff))
 310 0258 F801                  movw r30,r16
 311 025a 9183                  std Z+1,r25
 312 025c 8083                  st Z,r24
 313 025e 00C0                  rjmp .L34
 314                    .L33:
 315 0260 AA0F                  add r26,r26
 316 0262 BB1F                  adc r27,r27
 317 0264 A050                  subi r26,lo8(-(PPM_diff))
 318 0266 B040                  sbci r27,hi8(-(PPM_diff))
 319 0268 1196                  adiw r26,1
 320 026a 1C92                  st X,__zero_reg__
 321 026c 1E92                  st -X,__zero_reg__
 322                    .L34:
 323 026e EB2D                  mov r30,r11
 324 0270 FF27                  clr r31
 325 0272 EE0F                  add r30,r30
 326 0274 FF1F                  adc r31,r31
 327 0276 E050                  subi r30,lo8(-(PPM_in))
 328 0278 F040                  sbci r31,hi8(-(PPM_in))
 329 027a D183                  std Z+1,r29
 330 027c C083                  st Z,r28
 331 027e 60E0                  ldi r22,lo8(0)
 332 0280 70E0                  ldi r23,hi8(0)
 333 0282 B394                  inc r11
 334                    .L25:
 335 0284 4F5F                  subi r20,lo8(-(1))
 336 0286 00C0                  rjmp .L39
 337                    .L37:
 338 0288 1092 0000             sts NewPpmData,__zero_reg__
 339                    .L16:
 340 028c 1092 0000             sts NewSBusData,__zero_reg__
 341                    /* epilogue: frame size=0 */
 342 0290 EAE0                  ldi r30,10
 343 0292 CDB7                  in r28,__SP_L__
 344 0294 DEB7                  in r29,__SP_H__
 345 0296 0C94 0000             jmp __epilogue_restores__+16
 346                    /* epilogue end (size=5) */
 347                    /* function ProcessSBus size 207 (196) */
 349                            .comm sBusBuffer,25,1
 350                    /* File "sbus.c": code  335 = 0x014f ( 323), prologues   6, epilogues   6 */
DEFINED SYMBOLS
                            *ABS*:00000000 sbus.c
  C:\Temp/ccZAe6Uj.s:3      *ABS*:0000003f __SREG__
  C:\Temp/ccZAe6Uj.s:4      *ABS*:0000003e __SP_H__
  C:\Temp/ccZAe6Uj.s:5      *ABS*:0000003d __SP_L__
  C:\Temp/ccZAe6Uj.s:6      *ABS*:00000000 __tmp_reg__
  C:\Temp/ccZAe6Uj.s:7      *ABS*:00000001 __zero_reg__
  C:\Temp/ccZAe6Uj.s:15     .bss:00000000 NewSBusData
  C:\Temp/ccZAe6Uj.s:20     .text:00000000 SbusUartInit
                            *COM*:00000019 sBusBuffer
                             .bss:00000001 ptr.1
  C:\Temp/ccZAe6Uj.s:95     .text:000000ba SbusParser
  C:\Temp/ccZAe6Uj.s:92     .bss:00000002 load.0
  C:\Temp/ccZAe6Uj.s:136    .text:000000fe ProcessSBus

UNDEFINED SYMBOLS
__do_copy_data
__do_clear_bss
SpektrumTimer
__prologue_saves__
EE_Parameter
PPM_in
SenderOkay
__divmodhi4
PPM_diff
NewPpmData
__epilogue_restores__