Subversion Repositories BL-Ctrl

Rev

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

   1                            .file   "analog.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 ADC_Init
 102                    ADC_Init:
 103                            .stabd  46,0,0
   1:src/analog.c  **** /*############################################################################
   2:src/analog.c  **** 
   3:src/analog.c  **** ############################################################################*/
   4:src/analog.c  **** 
   5:src/analog.c  **** #include "main.h"
   6:src/analog.c  **** 
   7:src/analog.c  **** //############################################################################
   8:src/analog.c  **** //Init ADC
   9:src/analog.c  **** void ADC_Init(void)
  10:src/analog.c  **** //############################################################################
  11:src/analog.c  **** {
 105                    .LM0:
 106                    .LFBB1:
 107                    /* prologue: frame size=0 */
 108                    /* prologue end (size=0) */
  12:src/analog.c  ****   ADCSRA = 0xA6;  // Free Run & 1MHZ
 110                    .LM1:
 111 0000 86EA                  ldi r24,lo8(-90)
 112 0002 86B9                  out 38-0x20,r24
  13:src/analog.c  ****   ADMUX = 7;      // Kanal 7
 114                    .LM2:
 115 0004 87E0                  ldi r24,lo8(7)
 116 0006 87B9                  out 39-0x20,r24
  14:src/analog.c  ****   ADCSRA |= 0x40; // Start
 118                    .LM3:
 119 0008 369A                  sbi 38-0x20,6
 120                    /* epilogue: frame size=0 */
 121 000a 0895                  ret
 122                    /* epilogue end (size=1) */
 123                    /* function ADC_Init size 6 (5) */
 125                    .Lscope1:
 127                            .stabd  78,0,0
 129                    .global AdConvert
 131                    AdConvert:
 132                            .stabd  46,0,0
  15:src/analog.c  **** }
  16:src/analog.c  **** 
  17:src/analog.c  **** //############################################################################
  18:src/analog.c  **** //Strom Analogwerte lesen
  19:src/analog.c  **** void AdConvert(void)
  20:src/analog.c  **** //############################################################################
  21:src/analog.c  **** {
 134                    .LM4:
 135                    .LFBB2:
 136                    /* prologue: frame size=0 */
 137                    /* prologue end (size=0) */
  22:src/analog.c  ****  unsigned int i=0;  
  23:src/analog.c  ****  unsigned char sense;
  24:src/analog.c  ****   sense = ADMUX;   // Sense-Kanal merken
 139                    .LM5:
 140 000c 27B1                  in r18,39-0x20
  25:src/analog.c  ****   ADMUX  =  0x06;  // Kanal 6
 142                    .LM6:
 143 000e 96E0                  ldi r25,lo8(6)
 144 0010 97B9                  out 39-0x20,r25
  26:src/analog.c  ****   SFIOR  =  0x00;  // Analog Comperator aus
 146                    .LM7:
 147 0012 10BE                  out 80-0x20,__zero_reg__
  27:src/analog.c  ****   ADCSRA =  0xD3;  // Converter ein, single
 149                    .LM8:
 150 0014 83ED                  ldi r24,lo8(-45)
 151 0016 86B9                  out 38-0x20,r24
  28:src/analog.c  ****   ADCSRA |= 0x10;  // Ready löschen
 153                    .LM9:
 154 0018 349A                  sbi 38-0x20,4
  29:src/analog.c  ****   ADMUX  =  0x06;  // Kanal 6
 156                    .LM10:
 157 001a 97B9                  out 39-0x20,r25
  30:src/analog.c  ****   ADCSRA |= 0x40;  // Start
 159                    .LM11:
 160 001c 369A                  sbi 38-0x20,6
 161                    .L4:
  31:src/analog.c  ****   while (((ADCSRA & 0x10) == 0));
 163                    .LM12:
 164 001e 349B                  sbis 38-0x20,4
 165 0020 00C0                  rjmp .L4
  32:src/analog.c  ****   ADMUX = sense;   // zurück auf den Sense-Kanal
 167                    .LM13:
 168 0022 27B9                  out 39-0x20,r18
  33:src/analog.c  ****   i = ADCW * 4;
 170                    .LM14:
 171 0024 84B1                  in r24,36-0x20
 172 0026 95B1                  in r25,(36)+1-0x20
  34:src/analog.c  **** //  if(i > 300) i = 300;
  35:src/analog.c  ****   Strom = (i + Strom * 7) / 8; 
 174                    .LM15:
 175 0028 2091 0000             lds r18,Strom
 176 002c 3091 0000             lds r19,(Strom)+1
 177 0030 A901                  movw r20,r18
 178 0032 63E0                  ldi r22,3
 179 0034 440F          1:      lsl r20
 180 0036 551F                  rol r21
 181 0038 6A95                  dec r22
 182 003a 01F4                  brne 1b
 183 003c 421B                  sub r20,r18
 184 003e 530B                  sbc r21,r19
 185 0040 880F                  lsl r24
 186 0042 991F                  rol r25
 187 0044 880F                  lsl r24
 188 0046 991F                  rol r25
 189 0048 480F                  add r20,r24
 190 004a 591F                  adc r21,r25
 191 004c 83E0                  ldi r24,3
 192 004e 5695          1:      lsr r21
 193 0050 4795                  ror r20
 194 0052 8A95                  dec r24
 195 0054 01F4                  brne 1b
 196 0056 5093 0000             sts (Strom)+1,r21
 197 005a 4093 0000             sts Strom,r20
  36:src/analog.c  ****   if (Strom_max < Strom) Strom_max = Strom;
 199                    .LM16:
 200 005e 8091 0000             lds r24,Strom_max
 201 0062 9927                  clr r25
 202 0064 8417                  cp r24,r20
 203 0066 9507                  cpc r25,r21
 204 0068 00F4                  brsh .L6
 205 006a 4093 0000             sts Strom_max,r20
 206                    .L6:
  37:src/analog.c  ****   ADCSRA = 0x00;  
 208                    .LM17:
 209 006e 16B8                  out 38-0x20,__zero_reg__
  38:src/analog.c  ****   SFIOR = 0x08;  // Analog Comperator ein
 211                    .LM18:
 212 0070 88E0                  ldi r24,lo8(8)
 213 0072 80BF                  out 80-0x20,r24
 214                    /* epilogue: frame size=0 */
 215 0074 0895                  ret
 216                    /* epilogue end (size=1) */
 217                    /* function AdConvert size 53 (52) */
 222                    .Lscope2:
 224                            .stabd  78,0,0
 227                    .global MessAD
 229                    MessAD:
 230                            .stabd  46,0,0
  39:src/analog.c  **** }
  40:src/analog.c  **** 
  41:src/analog.c  **** 
  42:src/analog.c  **** 
  43:src/analog.c  **** //############################################################################
  44:src/analog.c  **** //Strom Analogwerte lesen
  45:src/analog.c  **** unsigned int MessAD(unsigned char channel)
  46:src/analog.c  **** //############################################################################
  47:src/analog.c  **** {
 232                    .LM19:
 233                    .LFBB3:
 234                    /* prologue: frame size=0 */
 235                    /* prologue end (size=0) */
  48:src/analog.c  ****  unsigned char sense;
  49:src/analog.c  ****   sense = ADMUX;   // Sense-Kanal merken
 237                    .LM20:
 238 0076 27B1                  in r18,39-0x20
  50:src/analog.c  ****   ADMUX  =  channel;  // Kanal 6
 240                    .LM21:
 241 0078 87B9                  out 39-0x20,r24
  51:src/analog.c  ****   SFIOR  =  0x00;  // Analog Comperator aus
 243                    .LM22:
 244 007a 10BE                  out 80-0x20,__zero_reg__
  52:src/analog.c  ****   ADCSRA =  0xD3;  // Converter ein, single
 246                    .LM23:
 247 007c 93ED                  ldi r25,lo8(-45)
 248 007e 96B9                  out 38-0x20,r25
  53:src/analog.c  ****   ADCSRA |= 0x10;  // Ready löschen
 250                    .LM24:
 251 0080 349A                  sbi 38-0x20,4
  54:src/analog.c  ****   ADMUX  =  channel;  // Kanal 6
 253                    .LM25:
 254 0082 87B9                  out 39-0x20,r24
  55:src/analog.c  ****   ADCSRA |= 0x40;  // Start
 256                    .LM26:
 257 0084 369A                  sbi 38-0x20,6
 258                    .L12:
  56:src/analog.c  ****   while (((ADCSRA & 0x10) == 0));
 260                    .LM27:
 261 0086 349B                  sbis 38-0x20,4
 262 0088 00C0                  rjmp .L12
  57:src/analog.c  ****   ADMUX = sense;   // zurück auf den Sense-Kanal
 264                    .LM28:
 265 008a 27B9                  out 39-0x20,r18
  58:src/analog.c  ****   ADCSRA = 0x00;  
 267                    .LM29:
 268 008c 16B8                  out 38-0x20,__zero_reg__
  59:src/analog.c  ****   SFIOR = 0x08;  // Analog Comperator ein
 270                    .LM30:
 271 008e 88E0                  ldi r24,lo8(8)
 272 0090 80BF                  out 80-0x20,r24
  60:src/analog.c  **** return(ADCW);
 274                    .LM31:
 275 0092 84B1                  in r24,36-0x20
 276 0094 95B1                  in r25,(36)+1-0x20
 277                    /* epilogue: frame size=0 */
 278 0096 0895                  ret
 279                    /* epilogue end (size=1) */
 280                    /* function MessAD size 17 (16) */
 285                    .Lscope3:
 287                            .stabd  78,0,0
 289                    .global FastADConvert
 291                    FastADConvert:
 292                            .stabd  46,0,0
  61:src/analog.c  **** }
  62:src/analog.c  **** 
  63:src/analog.c  **** //############################################################################
  64:src/analog.c  **** //Strom Analogwerte lesen
  65:src/analog.c  **** void FastADConvert(void)
  66:src/analog.c  **** //############################################################################
  67:src/analog.c  **** {
 294                    .LM32:
 295                    .LFBB4:
 296                    /* prologue: frame size=0 */
 297                    /* prologue end (size=0) */
  68:src/analog.c  ****  unsigned int i=0;  
  69:src/analog.c  ****   i = MessAD(6) * 4;
 299                    .LM33:
 300 0098 86E0                  ldi r24,lo8(6)
 301 009a 00D0                  rcall MessAD
 302 009c 9C01                  movw r18,r24
 303 009e 220F                  lsl r18
 304 00a0 331F                  rol r19
 305 00a2 220F                  lsl r18
 306 00a4 331F                  rol r19
 307 00a6 293C                  cpi r18,201
 308 00a8 3105                  cpc r19,__zero_reg__
 309 00aa 00F0                  brlo .L18
 311                    .LM34:
 312 00ac 28EC                  ldi r18,lo8(200)
 313 00ae 30E0                  ldi r19,hi8(200)
 314                    .L18:
  70:src/analog.c  **** //  i = ADCW * 4;
  71:src/analog.c  ****   if(i > 200) i = 200;
  72:src/analog.c  ****   Strom = i;//(i + Strom * 1) / 2; 
 316                    .LM35:
 317 00b0 3093 0000             sts (Strom)+1,r19
 318 00b4 2093 0000             sts Strom,r18
  73:src/analog.c  ****   if (Strom_max < Strom) Strom_max = Strom;
 320                    .LM36:
 321 00b8 8091 0000             lds r24,Strom_max
 322 00bc 9927                  clr r25
 323 00be 8217                  cp r24,r18
 324 00c0 9307                  cpc r25,r19
 325 00c2 00F4                  brsh .L19
 326 00c4 2093 0000             sts Strom_max,r18
 327                    .L19:
  74:src/analog.c  ****   ADCSRA = 0x00;  
 329                    .LM37:
 330 00c8 16B8                  out 38-0x20,__zero_reg__
  75:src/analog.c  ****   SFIOR = 0x08;  // Analog Comperator ein
 332                    .LM38:
 333 00ca 88E0                  ldi r24,lo8(8)
 334 00cc 80BF                  out 80-0x20,r24
 335                    /* epilogue: frame size=0 */
 336 00ce 0895                  ret
 337                    /* epilogue end (size=1) */
 338                    /* function FastADConvert size 28 (27) */
 340                    .Lscope4:
 342                            .stabd  78,0,0
 344                    .Letext0:
 345                    /* File "src/analog.c": code  104 = 0x0068 ( 100), prologues   0, epilogues   4 */
DEFINED SYMBOLS
                            *ABS*:00000000 analog.c
     /tmp/ccjrtWT0.s:2      *ABS*:0000003f __SREG__
     /tmp/ccjrtWT0.s:3      *ABS*:0000003e __SP_H__
     /tmp/ccjrtWT0.s:4      *ABS*:0000003d __SP_L__
     /tmp/ccjrtWT0.s:5      *ABS*:00000000 __tmp_reg__
     /tmp/ccjrtWT0.s:6      *ABS*:00000001 __zero_reg__
     /tmp/ccjrtWT0.s:102    .text:00000000 ADC_Init
     /tmp/ccjrtWT0.s:131    .text:0000000c AdConvert
     /tmp/ccjrtWT0.s:229    .text:00000076 MessAD
     /tmp/ccjrtWT0.s:291    .text:00000098 FastADConvert

UNDEFINED SYMBOLS
__do_copy_data
__do_clear_bss
Strom
Strom_max