Subversion Repositories BL-Ctrl

Rev

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

   1                            .file   "PPM_Decode.c"
   2                    __SREG__ = 0x3f
   3                    __SP_H__ = 0x3e
   4                    __SP_L__ = 0x3d
   5                    __tmp_reg__ = 0
   6                    __zero_reg__ = 1
   7                            .global __do_copy_data
   8                            .global __do_clear_bss
  11                            .text
  12                    .Ltext0:
 100                    .global InitPPM
 102                    InitPPM:
 103                            .stabd  46,0,0
   1:src/PPM_Decode.c **** /*############################################################################
   2:src/PPM_Decode.c ****  + Regler für Brushless-Motoren
   3:src/PPM_Decode.c ****  + ATMEGA8 mit 8MHz
   4:src/PPM_Decode.c ****  + (c) 01.2007 Holger Buss
   5:src/PPM_Decode.c ****  + Nur für den privaten Gebrauch
   6:src/PPM_Decode.c ****  + Keine Garantie auf Fehlerfreiheit
   7:src/PPM_Decode.c ****  + Kommerzielle Nutzung nur mit meiner Zustimmung
   8:src/PPM_Decode.c ****  + Der Code ist für die Hardware BL_Ctrl V1.0 entwickelt worden
   9:src/PPM_Decode.c ****  + www.mikrocontroller.com
  10:src/PPM_Decode.c **** ############################################################################*/
  11:src/PPM_Decode.c **** #include "main.h"
  12:src/PPM_Decode.c **** volatile unsigned int PPM_Signal = 0;
  13:src/PPM_Decode.c **** volatile unsigned char Timer1Overflow = 0;
  14:src/PPM_Decode.c **** volatile unsigned char PPM_Timeout = 0, anz_ppm_werte = 0;   // Ungültig, wenn Null
  15:src/PPM_Decode.c **** 
  16:src/PPM_Decode.c **** //############################################################################
  17:src/PPM_Decode.c **** //
  18:src/PPM_Decode.c **** void InitPPM(void)
  19:src/PPM_Decode.c **** //############################################################################
  20:src/PPM_Decode.c **** {
 105                    .LM0:
 106                    .LFBB1:
 107                    /* prologue: frame size=0 */
 108                    /* prologue end (size=0) */
  21:src/PPM_Decode.c ****  TCCR1B |= (1<<ICES1)|(1<<ICNC1);
 110                    .LM1:
 111 0000 8EB5                  in r24,78-0x20
 112 0002 806C                  ori r24,lo8(-64)
 113 0004 8EBD                  out 78-0x20,r24
  22:src/PPM_Decode.c ****  ICP_POS_FLANKE;
 115                    .LM2:
 116 0006 8EB5                  in r24,78-0x20
 117 0008 8064                  ori r24,lo8(64)
 118 000a 8EBD                  out 78-0x20,r24
  23:src/PPM_Decode.c ****  ICP_INT_ENABLE;
 120                    .LM3:
 121 000c 89B7                  in r24,89-0x20
 122 000e 8062                  ori r24,lo8(32)
 123 0010 89BF                  out 89-0x20,r24
  24:src/PPM_Decode.c ****  TIMER1_INT_ENABLE;
 125                    .LM4:
 126 0012 89B7                  in r24,89-0x20
 127 0014 8460                  ori r24,lo8(4)
 128 0016 89BF                  out 89-0x20,r24
 129                    /* epilogue: frame size=0 */
 130 0018 0895                  ret
 131                    /* epilogue end (size=1) */
 132                    /* function InitPPM size 13 (12) */
 134                    .Lscope1:
 136                            .stabd  78,0,0
 138                    .global __vector_8
 140                    __vector_8:
 141                            .stabd  46,0,0
  25:src/PPM_Decode.c **** }
  26:src/PPM_Decode.c **** 
  27:src/PPM_Decode.c **** //############################################################################
  28:src/PPM_Decode.c **** //
  29:src/PPM_Decode.c **** SIGNAL(SIG_OVERFLOW1)
  30:src/PPM_Decode.c **** //############################################################################
  31:src/PPM_Decode.c **** {
 143                    .LM5:
 144                    .LFBB2:
 145                    /* prologue: frame size=0 */
 146 001a 1F92                  push __zero_reg__
 147 001c 0F92                  push __tmp_reg__
 148 001e 0FB6                  in __tmp_reg__,__SREG__
 149 0020 0F92                  push __tmp_reg__
 150 0022 1124                  clr __zero_reg__
 151 0024 8F93                  push r24
 152                    /* prologue end (size=6) */
  32:src/PPM_Decode.c ****  Timer1Overflow++;
 154                    .LM6:
 155 0026 8091 0000             lds r24,Timer1Overflow
 156 002a 8F5F                  subi r24,lo8(-(1))
 157 002c 8093 0000             sts Timer1Overflow,r24
 158                    /* epilogue: frame size=0 */
 159 0030 8F91                  pop r24
 160 0032 0F90                  pop __tmp_reg__
 161 0034 0FBE                  out __SREG__,__tmp_reg__
 162 0036 0F90                  pop __tmp_reg__
 163 0038 1F90                  pop __zero_reg__
 164 003a 1895                  reti
 165                    /* epilogue end (size=6) */
 166                    /* function __vector_8 size 17 (5) */
 168                    .Lscope2:
 170                            .stabd  78,0,0
 172                    .global __vector_5
 174                    __vector_5:
 175                            .stabd  46,0,0
  33:src/PPM_Decode.c **** }
  34:src/PPM_Decode.c **** 
  35:src/PPM_Decode.c **** //############################################################################
  36:src/PPM_Decode.c **** //
  37:src/PPM_Decode.c **** SIGNAL(SIG_INPUT_CAPTURE1)
  38:src/PPM_Decode.c **** //############################################################################
  39:src/PPM_Decode.c **** {
 177                    .LM7:
 178                    .LFBB3:
 179                    /* prologue: frame size=0 */
 180 003c 1F92                  push __zero_reg__
 181 003e 0F92                  push __tmp_reg__
 182 0040 0FB6                  in __tmp_reg__,__SREG__
 183 0042 0F92                  push __tmp_reg__
 184 0044 1124                  clr __zero_reg__
 185 0046 2F93                  push r18
 186 0048 3F93                  push r19
 187 004a 4F93                  push r20
 188 004c 5F93                  push r21
 189 004e 8F93                  push r24
 190 0050 9F93                  push r25
 191                    /* prologue end (size=11) */
  40:src/PPM_Decode.c ****  static unsigned int tim_alt;
  41:src/PPM_Decode.c ****  static unsigned int ppm;
  42:src/PPM_Decode.c ****  if(TCCR1B & (1<<ICES1))   // Positive Flanke
 193                    .LM8:
 194 0052 0EB4                  in __tmp_reg__,78-0x20
 195 0054 06FE                  sbrs __tmp_reg__,6
 196 0056 00C0                  rjmp .L6
  43:src/PPM_Decode.c ****   {
  44:src/PPM_Decode.c ****    Timer1Overflow = 0;
 198                    .LM9:
 199 0058 1092 0000             sts Timer1Overflow,__zero_reg__
  45:src/PPM_Decode.c ****    tim_alt = ICR1; 
 201                    .LM10:
 202 005c 86B5                  in r24,70-0x20
 203 005e 97B5                  in r25,(70)+1-0x20
 204 0060 9093 0000             sts (tim_alt.2079)+1,r25
 205 0064 8093 0000             sts tim_alt.2079,r24
  46:src/PPM_Decode.c ****    ICP_NEG_FLANKE;
 207                    .LM11:
 208 0068 8EB5                  in r24,78-0x20
 209 006a 8F7B                  andi r24,lo8(-65)
 210 006c 8EBD                  out 78-0x20,r24
  47:src/PPM_Decode.c ****    PPM_Timeout = 100;
 212                    .LM12:
 213 006e 84E6                  ldi r24,lo8(100)
 214 0070 8093 0000             sts PPM_Timeout,r24
 215 0074 00C0                  rjmp .L17
 216                    .L6:
  48:src/PPM_Decode.c ****   }
  49:src/PPM_Decode.c ****  else                      // Negative Flanke
  50:src/PPM_Decode.c ****   {
  51:src/PPM_Decode.c ****     ICP_POS_FLANKE;
 218                    .LM13:
 219 0076 8EB5                  in r24,78-0x20
 220 0078 8064                  ori r24,lo8(64)
 221 007a 8EBD                  out 78-0x20,r24
  52:src/PPM_Decode.c **** #ifdef  _32KHZ 
  53:src/PPM_Decode.c ****     ppm = (ICR1 - tim_alt + (int) Timer1Overflow * 256) / 32;
  54:src/PPM_Decode.c **** #endif 
  55:src/PPM_Decode.c **** #ifdef  _16KHZ 
  56:src/PPM_Decode.c ****     ppm = (ICR1 - tim_alt + (int) Timer1Overflow * 512) / 32;
 223                    .LM14:
 224 007c 86B5                  in r24,70-0x20
 225 007e 97B5                  in r25,(70)+1-0x20
 226 0080 2091 0000             lds r18,Timer1Overflow
 227 0084 4091 0000             lds r20,tim_alt.2079
 228 0088 5091 0000             lds r21,(tim_alt.2079)+1
 229 008c 841B                  sub r24,r20
 230 008e 950B                  sbc r25,r21
 231 0090 3327                  clr r19
 232 0092 322F                  mov r19,r18
 233 0094 2227                  clr r18
 234 0096 330F                  lsl r19
 235 0098 820F                  add r24,r18
 236 009a 931F                  adc r25,r19
 237 009c 6894                  set
 238 009e 14F8                  bld __zero_reg__,5-1
 239 00a0 9695          1:      lsr r25
 240 00a2 8795                  ror r24
 241 00a4 1694                  lsr __zero_reg__
 242 00a6 01F4                  brne 1b
 243 00a8 9093 0000             sts (ppm.2080)+1,r25
 244 00ac 8093 0000             sts ppm.2080,r24
  57:src/PPM_Decode.c **** #endif 
  58:src/PPM_Decode.c ****     if(ppm < 280) ppm = 280;
 246                    .LM15:
 247 00b0 8851                  subi r24,lo8(280)
 248 00b2 9140                  sbci r25,hi8(280)
 249 00b4 00F4                  brsh .L9
 250 00b6 88E1                  ldi r24,lo8(280)
 251 00b8 91E0                  ldi r25,hi8(280)
 252 00ba 9093 0000             sts (ppm.2080)+1,r25
 253 00be 8093 0000             sts ppm.2080,r24
 254                    .L9:
  59:src/PPM_Decode.c ****     ppm -= 280;
 256                    .LM16:
 257 00c2 4091 0000             lds r20,ppm.2080
 258 00c6 5091 0000             lds r21,(ppm.2080)+1
 259 00ca 4851                  subi r20,lo8(-(-280))
 260 00cc 5140                  sbci r21,hi8(-(-280))
  60:src/PPM_Decode.c ****      if(PPM_Signal < ppm)  PPM_Signal++;
 262                    .LM17:
 263 00ce 8091 0000             lds r24,PPM_Signal
 264 00d2 9091 0000             lds r25,(PPM_Signal)+1
 265 00d6 8417                  cp r24,r20
 266 00d8 9507                  cpc r25,r21
 267 00da 00F4                  brsh .L11
 268 00dc 8091 0000             lds r24,PPM_Signal
 269 00e0 9091 0000             lds r25,(PPM_Signal)+1
 270 00e4 0196                  adiw r24,1
 271 00e6 00C0                  rjmp .L18
 272                    .L11:
  61:src/PPM_Decode.c ****      else if(PPM_Signal > ppm)  PPM_Signal--;
 274                    .LM18:
 275 00e8 8091 0000             lds r24,PPM_Signal
 276 00ec 9091 0000             lds r25,(PPM_Signal)+1
 277 00f0 4817                  cp r20,r24
 278 00f2 5907                  cpc r21,r25
 279 00f4 00F4                  brsh .L13
 280 00f6 8091 0000             lds r24,PPM_Signal
 281 00fa 9091 0000             lds r25,(PPM_Signal)+1
 282 00fe 0197                  sbiw r24,1
 283                    .L18:
 284 0100 9093 0000             sts (PPM_Signal)+1,r25
 285 0104 8093 0000             sts PPM_Signal,r24
 286                    .L13:
  62:src/PPM_Decode.c ****     if(FILTER_PPM)   ppm     = (PPM_Signal * FILTER_PPM + ppm) / (FILTER_PPM + 1);  // Filtern
 288                    .LM19:
 289 0108 8091 0000             lds r24,PPM_Signal
 290 010c 9091 0000             lds r25,(PPM_Signal)+1
 291 0110 9C01                  movw r18,r24
 292 0112 220F                  lsl r18
 293 0114 331F                  rol r19
 294 0116 220F                  lsl r18
 295 0118 331F                  rol r19
 296 011a 220F                  lsl r18
 297 011c 331F                  rol r19
 298 011e 281B                  sub r18,r24
 299 0120 390B                  sbc r19,r25
 300 0122 240F                  add r18,r20
 301 0124 351F                  adc r19,r21
 302 0126 83E0                  ldi r24,3
 303 0128 3695          1:      lsr r19
 304 012a 2795                  ror r18
 305 012c 8A95                  dec r24
 306 012e 01F4                  brne 1b
 307 0130 3093 0000             sts (ppm.2080)+1,r19
 308 0134 2093 0000             sts ppm.2080,r18
  63:src/PPM_Decode.c ****     PPM_Signal = ppm;
 310                    .LM20:
 311 0138 3093 0000             sts (PPM_Signal)+1,r19
 312 013c 2093 0000             sts PPM_Signal,r18
  64:src/PPM_Decode.c ****     if(anz_ppm_werte < 255) anz_ppm_werte++;
 314                    .LM21:
 315 0140 8091 0000             lds r24,anz_ppm_werte
 316 0144 8F3F                  cpi r24,lo8(-1)
 317 0146 01F0                  breq .L15
 318 0148 8091 0000             lds r24,anz_ppm_werte
 319 014c 8F5F                  subi r24,lo8(-(1))
 320 014e 8093 0000             sts anz_ppm_werte,r24
 321                    .L15:
  65:src/PPM_Decode.c ****     ZeitZumAdWandeln = 1;
 323                    .LM22:
 324 0152 81E0                  ldi r24,lo8(1)
 325 0154 8093 0000             sts ZeitZumAdWandeln,r24
 326                    .L17:
 327                    /* epilogue: frame size=0 */
 328 0158 9F91                  pop r25
 329 015a 8F91                  pop r24
 330 015c 5F91                  pop r21
 331 015e 4F91                  pop r20
 332 0160 3F91                  pop r19
 333 0162 2F91                  pop r18
 334 0164 0F90                  pop __tmp_reg__
 335 0166 0FBE                  out __SREG__,__tmp_reg__
 336 0168 0F90                  pop __tmp_reg__
 337 016a 1F90                  pop __zero_reg__
 338 016c 1895                  reti
 339                    /* epilogue end (size=11) */
 340                    /* function __vector_5 size 154 (132) */
 346                    .Lscope3:
 348                            .stabd  78,0,0
 350                    .global __vector_1
 352                    __vector_1:
 353                            .stabd  46,0,0
  66:src/PPM_Decode.c ****   } 
  67:src/PPM_Decode.c **** }
  68:src/PPM_Decode.c **** 
  69:src/PPM_Decode.c **** //############################################################################
  70:src/PPM_Decode.c **** //
  71:src/PPM_Decode.c **** SIGNAL(SIG_INTERRUPT0)
  72:src/PPM_Decode.c **** //############################################################################
  73:src/PPM_Decode.c **** {
 355                    .LM23:
 356                    .LFBB4:
 357                    /* prologue: frame size=0 */
 358 016e 1F92                  push __zero_reg__
 359 0170 0F92                  push __tmp_reg__
 360 0172 0FB6                  in __tmp_reg__,__SREG__
 361 0174 0F92                  push __tmp_reg__
 362 0176 1124                  clr __zero_reg__
 363 0178 8F93                  push r24
 364                    /* prologue end (size=6) */
  74:src/PPM_Decode.c ****  CLR_INT0_FLAG;      // IntFlag Loeschen 
 366                    .LM24:
 367 017a 8AB7                  in r24,90-0x20
 368 017c 8F7B                  andi r24,lo8(-65)
 369 017e 8ABF                  out 90-0x20,r24
 370                    /* epilogue: frame size=0 */
 371 0180 8F91                  pop r24
 372 0182 0F90                  pop __tmp_reg__
 373 0184 0FBE                  out __SREG__,__tmp_reg__
 374 0186 0F90                  pop __tmp_reg__
 375 0188 1F90                  pop __zero_reg__
 376 018a 1895                  reti
 377                    /* epilogue end (size=6) */
 378                    /* function __vector_1 size 15 (3) */
 380                    .Lscope4:
 382                            .stabd  78,0,0
 383                    .global PPM_Signal
 384                    .global PPM_Signal
 385                            .section .bss
 388                    PPM_Signal:
 389 0000 0000                  .skip 2,0
 390                    .global Timer1Overflow
 391                    .global Timer1Overflow
 394                    Timer1Overflow:
 395 0002 00                    .skip 1,0
 396                    .global PPM_Timeout
 397                    .global PPM_Timeout
 400                    PPM_Timeout:
 401 0003 00                    .skip 1,0
 402                    .global anz_ppm_werte
 403                    .global anz_ppm_werte
 406                    anz_ppm_werte:
 407 0004 00                    .skip 1,0
 408                            .lcomm ppm.2080,2
 409                            .lcomm tim_alt.2079,2
 416                            .text
 418                    .Letext0:
 419                    /* File "src/PPM_Decode.c": code  199 = 0x00c7 ( 152), prologues  23, epilogues  24 */
DEFINED SYMBOLS
                            *ABS*:00000000 PPM_Decode.c
     /tmp/cc2IZgCl.s:2      *ABS*:0000003f __SREG__
     /tmp/cc2IZgCl.s:3      *ABS*:0000003e __SP_H__
     /tmp/cc2IZgCl.s:4      *ABS*:0000003d __SP_L__
     /tmp/cc2IZgCl.s:5      *ABS*:00000000 __tmp_reg__
     /tmp/cc2IZgCl.s:6      *ABS*:00000001 __zero_reg__
     /tmp/cc2IZgCl.s:102    .text:00000000 InitPPM
     /tmp/cc2IZgCl.s:140    .text:0000001a __vector_8
     /tmp/cc2IZgCl.s:394    .bss:00000002 Timer1Overflow
     /tmp/cc2IZgCl.s:174    .text:0000003c __vector_5
     /tmp/cc2IZgCl.s:408    .bss:00000007 tim_alt.2079
     /tmp/cc2IZgCl.s:400    .bss:00000003 PPM_Timeout
                             .bss:00000005 ppm.2080
     /tmp/cc2IZgCl.s:388    .bss:00000000 PPM_Signal
     /tmp/cc2IZgCl.s:406    .bss:00000004 anz_ppm_werte
     /tmp/cc2IZgCl.s:352    .text:0000016e __vector_1

UNDEFINED SYMBOLS
__do_copy_data
__do_clear_bss
ZeitZumAdWandeln