Subversion Repositories BL-Ctrl

Rev

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

   1                            .file   "main.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 SetPWM
 102                    SetPWM:
 103                            .stabd  46,0,0
   1:src/main.c    **** /*#######################################################################################
   2:src/main.c    **** Flight Control
   3:src/main.c    **** #######################################################################################*/
   4:src/main.c    **** // ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
   5:src/main.c    **** // + Regler für Brushless-Motoren
   6:src/main.c    **** // + ATMEGA8 mit 8MHz
   7:src/main.c    **** // + Nur für den privaten Gebrauch
   8:src/main.c    **** // + Copyright (c) 12.2007 Holger Buss
   9:src/main.c    **** // + www.MikroKopter.com
  10:src/main.c    **** // ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
  11:src/main.c    **** // + Es gilt für das gesamte Projekt (Hardware, Software, Binärfiles, Sourcecode und Dokumentation)
  12:src/main.c    **** // + dass eine Nutzung (auch auszugsweise) nur für den privaten (nicht-kommerziellen) Gebrauch zulä
  13:src/main.c    **** // + Sollten direkte oder indirekte kommerzielle Absichten verfolgt werden, ist mit uns (info@mikro
  14:src/main.c    **** // + bzgl. der Nutzungsbedingungen aufzunehmen. 
  15:src/main.c    **** // + Eine kommerzielle Nutzung ist z.B.Verkauf von MikroKoptern, Bestückung und Verkauf von Platine
  16:src/main.c    **** // + Verkauf von Luftbildaufnahmen, usw.
  17:src/main.c    **** // ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
  18:src/main.c    **** // + Werden Teile des Quellcodes (mit oder ohne Modifikation) weiterverwendet oder veröffentlicht, 
  19:src/main.c    **** // + unterliegen sie auch diesen Nutzungsbedingungen und diese Nutzungsbedingungen incl. Copyright 
  20:src/main.c    **** // ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
  21:src/main.c    **** // + Sollte die Software (auch auszugesweise) oder sonstige Informationen des MikroKopter-Projekts
  22:src/main.c    **** // + auf anderen Webseiten oder sonstigen Medien veröffentlicht werden, muss unsere Webseite "http:
  23:src/main.c    **** // + eindeutig als Ursprung verlinkt werden
  24:src/main.c    **** // ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
  25:src/main.c    **** // + Keine Gewähr auf Fehlerfreiheit, Vollständigkeit oder Funktion
  26:src/main.c    **** // + Benutzung auf eigene Gefahr
  27:src/main.c    **** // + Wir übernehmen keinerlei Haftung für direkte oder indirekte Personen- oder Sachschäden
  28:src/main.c    **** // ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
  29:src/main.c    **** // + Die Portierung der Software (oder Teile davon) auf andere Systeme (ausser der Hardware von www
  30:src/main.c    **** // + mit unserer Zustimmung zulässig
  31:src/main.c    **** // ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
  32:src/main.c    **** // + Die Funktion printf_P() unterliegt ihrer eigenen Lizenz und ist hiervon nicht betroffen
  33:src/main.c    **** // ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
  34:src/main.c    **** // + Redistributions of source code (with or without modifications) must retain the above copyright
  35:src/main.c    **** // + this list of conditions and the following disclaimer.
  36:src/main.c    **** // +   * Neither the name of the copyright holders nor the names of contributors may be used to end
  37:src/main.c    **** // +     from this software without specific prior written permission.
  38:src/main.c    **** // +   * The use of this project (hardware, software, binary files, sources and documentation) is o
  39:src/main.c    **** // +     for non-commercial use (directly or indirectly)
  40:src/main.c    **** // +     Commercial use (for excample: selling of MikroKopters, selling of PCBs, assembly, ...) is 
  41:src/main.c    **** // +     with our written permission
  42:src/main.c    **** // +   * If sources or documentations are redistributet on other webpages, out webpage (http://www.
  43:src/main.c    **** // +     clearly linked as origin 
  44:src/main.c    **** // +   * porting to systems other than hardware from www.mikrokopter.de is not allowed
  45:src/main.c    **** // +  THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
  46:src/main.c    **** // +  AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
  47:src/main.c    **** // +  IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
  48:src/main.c    **** // +  ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE
  49:src/main.c    **** // +  LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
  50:src/main.c    **** // +  CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
  51:src/main.c    **** // +  SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
  52:src/main.c    **** // +  INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN// +  CONTRACT, STRICT
  53:src/main.c    **** // +  ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
  54:src/main.c    **** // +  POSSIBILITY OF SUCH DAMAGE. 
  55:src/main.c    **** // ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
  56:src/main.c    **** 
  57:src/main.c    **** #include "main.h"
  58:src/main.c    **** 
  59:src/main.c    **** unsigned int  PWM = 0; 
  60:src/main.c    **** unsigned int  Strom = 0,RuheStrom; //ca. in 0,1A
  61:src/main.c    **** unsigned char Strom_max = 0;
  62:src/main.c    **** unsigned char Mittelstrom = 0; 
  63:src/main.c    **** unsigned int  Drehzahl = 0;  // in 100UPM  60 = 6000
  64:src/main.c    **** unsigned int  KommutierDelay = 10;
  65:src/main.c    **** unsigned int  I2C_Timeout = 0;
  66:src/main.c    **** unsigned int SIO_Timeout = 0;
  67:src/main.c    **** unsigned int  SollDrehzahl = 0;
  68:src/main.c    **** unsigned int  IstDrehzahl = 0;
  69:src/main.c    **** unsigned int  DrehZahlTabelle[256];//vorberechnete Werte zur Drehzahlerfassung
  70:src/main.c    **** unsigned char ZeitFuerBerechnungen = 1;
  71:src/main.c    **** unsigned char MotorAnwerfen = 0;
  72:src/main.c    **** unsigned char MotorGestoppt = 1;
  73:src/main.c    **** unsigned char MaxPWM = MAX_PWM;
  74:src/main.c    **** unsigned int  CntKommutierungen = 0;
  75:src/main.c    **** unsigned int  SIO_Drehzahl = 0;
  76:src/main.c    **** unsigned char ZeitZumAdWandeln = 1;
  77:src/main.c    **** unsigned char MotorAdresse = 1;
  78:src/main.c    **** unsigned char PPM_Betrieb = 1;
  79:src/main.c    **** 
  80:src/main.c    **** //############################################################################
  81:src/main.c    **** //
  82:src/main.c    **** void SetPWM(void)
  83:src/main.c    **** //############################################################################
  84:src/main.c    **** {
 105                    .LM0:
 106                    .LFBB1:
 107                    /* prologue: frame size=0 */
 108                    /* prologue end (size=0) */
  85:src/main.c    ****     unsigned char tmp_pwm; 
  86:src/main.c    ****     tmp_pwm = PWM;
 110                    .LM1:
 111 0000 2091 0000             lds r18,PWM
  87:src/main.c    ****     if(tmp_pwm > MaxPWM)    // Strombegrenzung
 113                    .LM2:
 114 0004 8091 0000             lds r24,MaxPWM
 115 0008 8217                  cp r24,r18
 116 000a 00F4                  brsh .L2
  88:src/main.c    ****         {
  89:src/main.c    ****         tmp_pwm = MaxPWM;
  90:src/main.c    ****         PORTC |= ROT; 
 118                    .LM3:
 119 000c AB9A                  sbi 53-0x20,3
 120 000e 282F                  mov r18,r24
 121                    .L2:
  91:src/main.c    ****         } 
  92:src/main.c    ****     if(Strom > MAX_STROM)   // Strombegrenzung
 123                    .LM4:
 124 0010 8091 0000             lds r24,Strom
 125 0014 9091 0000             lds r25,(Strom)+1
 126 0018 893C                  cpi r24,201
 127 001a 9105                  cpc r25,__zero_reg__
 128 001c 00F0                  brlo .L4
  93:src/main.c    ****         {
  94:src/main.c    ****         OCR1A = 0; OCR1B = 0; OCR2  = 0;
 130                    .LM5:
 131 001e 1BBC                  out (74)+1-0x20,__zero_reg__
 132 0020 1ABC                  out 74-0x20,__zero_reg__
 133 0022 19BC                  out (72)+1-0x20,__zero_reg__
 134 0024 18BC                  out 72-0x20,__zero_reg__
 135 0026 13BC                  out 67-0x20,__zero_reg__
  95:src/main.c    ****         PORTC |= ROT; 
 137                    .LM6:
 138 0028 AB9A                  sbi 53-0x20,3
  96:src/main.c    ****         Strom--;
 140                    .LM7:
 141 002a 0197                  sbiw r24,1
 142 002c 9093 0000             sts (Strom)+1,r25
 143 0030 8093 0000             sts Strom,r24
 144 0034 0895                  ret
 145                    .L4:
  97:src/main.c    ****         }
  98:src/main.c    ****     else 
  99:src/main.c    ****         {
 100:src/main.c    ****         #ifdef  _32KHZ 
 101:src/main.c    ****         OCR1A =  tmp_pwm; OCR1B =  tmp_pwm; OCR2  = tmp_pwm;
 102:src/main.c    ****         #endif 
 103:src/main.c    **** 
 104:src/main.c    ****         #ifdef  _16KHZ 
 105:src/main.c    ****         //OCR1A = 2 * (int)tmp_pwm; OCR1B = 2 * (int)tmp_pwm; OCR2  = tmp_pwm;
 106:src/main.c    ****         OCR1A =  tmp_pwm; OCR1B =  tmp_pwm; OCR2  = tmp_pwm;
 147                    .LM8:
 148 0036 822F                  mov r24,r18
 149 0038 9927                  clr r25
 150 003a 9BBD                  out (74)+1-0x20,r25
 151 003c 8ABD                  out 74-0x20,r24
 152 003e 99BD                  out (72)+1-0x20,r25
 153 0040 88BD                  out 72-0x20,r24
 154 0042 23BD                  out 67-0x20,r18
 155 0044 0895                  ret
 156                    /* epilogue: frame size=0 */
 157                    /* epilogue: noreturn */
 158                    /* epilogue end (size=0) */
 159                    /* function SetPWM size 35 (35) */
 164                    .Lscope1:
 166                            .stabd  78,0,0
 168                    .global PWM_Init
 170                    PWM_Init:
 171                            .stabd  46,0,0
 107:src/main.c    ****         #endif 
 108:src/main.c    ****         }
 109:src/main.c    **** }
 110:src/main.c    **** 
 111:src/main.c    **** //############################################################################
 112:src/main.c    **** //
 113:src/main.c    **** void PWM_Init(void)
 114:src/main.c    **** //############################################################################
 115:src/main.c    **** {
 173                    .LM9:
 174                    .LFBB2:
 175                    /* prologue: frame size=0 */
 176                    /* prologue end (size=0) */
 116:src/main.c    ****     PWM_OFF;
 178                    .LM10:
 179 0046 91E0                  ldi r25,lo8(1)
 180 0048 9FBD                  out 79-0x20,r25
 181 004a 81E4                  ldi r24,lo8(65)
 182 004c 85BD                  out 69-0x20,r24
 183 004e 8EE0                  ldi r24,lo8(14)
 184 0050 87BB                  out 55-0x20,r24
 185 0052 88B3                  in r24,56-0x20
 186 0054 817F                  andi r24,lo8(-15)
 187 0056 88BB                  out 56-0x20,r24
 117:src/main.c    ****     TCCR1B = (1 << CS10) | (0 << CS11) | (0 << CS12) | (0 << WGM12) | 
 189                    .LM11:
 190 0058 9EBD                  out 78-0x20,r25
 191                    /* epilogue: frame size=0 */
 192 005a 0895                  ret
 193                    /* epilogue end (size=1) */
 194                    /* function PWM_Init size 11 (10) */
 196                    .Lscope2:
 198                            .stabd  78,0,0
 201                    .global Wait
 203                    Wait:
 204                            .stabd  46,0,0
 118:src/main.c    ****              (0 << WGM13) | (0<< ICES1) | (0 << ICNC1);
 119:src/main.c    **** /*    TCCR1B = (1 << CS10) | (0 << CS11) | (0 << CS12) | (1 << WGM12) | 
 120:src/main.c    ****              (0 << WGM13) | (0<< ICES1) | (0 << ICNC1);
 121:src/main.c    **** */
 122:src/main.c    **** }
 123:src/main.c    **** 
 124:src/main.c    **** //############################################################################
 125:src/main.c    **** //
 126:src/main.c    **** void Wait(unsigned char dauer)
 127:src/main.c    **** //############################################################################
 128:src/main.c    **** {
 206                    .LM12:
 207                    .LFBB3:
 208                    /* prologue: frame size=0 */
 209                    /* prologue end (size=0) */
 129:src/main.c    ****     dauer = (unsigned char)TCNT0 + dauer;
 211                    .LM13:
 212 005c 92B7                  in r25,82-0x20
 213 005e 980F                  add r25,r24
 130:src/main.c    ****     while((TCNT0 - dauer) & 0x80);
 215                    .LM14:
 216 0060 292F                  mov r18,r25
 217 0062 3327                  clr r19
 218                    .L11:
 220                    .LM15:
 221 0064 82B7                  in r24,82-0x20
 222 0066 821B                  sub r24,r18
 223 0068 87FD                  sbrc r24,7
 224 006a 00C0                  rjmp .L11
 225                    /* epilogue: frame size=0 */
 226 006c 0895                  ret
 227                    /* epilogue end (size=1) */
 228                    /* function Wait size 9 (8) */
 230                    .Lscope3:
 232                            .stabd  78,0,0
 235                    .global Delay
 237                    Delay:
 238                            .stabd  46,0,0
 131:src/main.c    **** }
 132:src/main.c    **** 
 133:src/main.c    **** //############################################################################
 134:src/main.c    **** //
 135:src/main.c    **** void Anwerfen(unsigned char pwm)
 136:src/main.c    **** //############################################################################
 137:src/main.c    **** {
 138:src/main.c    ****     unsigned long timer = 300,i;
 139:src/main.c    ****     DISABLE_SENSE_INT;
 140:src/main.c    ****     PWM = 5;
 141:src/main.c    ****     SetPWM();
 142:src/main.c    ****     Manuell();
 143:src/main.c    ****     Delay_ms(200);
 144:src/main.c    ****     PWM = pwm;
 145:src/main.c    ****     while(1)
 146:src/main.c    ****         {
 147:src/main.c    ****         for(i=0;i<timer; i++) 
 148:src/main.c    ****             {
 149:src/main.c    ****             if(!UebertragungAbgeschlossen)  SendUart();
 150:src/main.c    ****             else DatenUebertragung();
 151:src/main.c    ****             Wait(100);  // warten
 152:src/main.c    ****             } 
 153:src/main.c    ****         timer-= timer/15+1;
 154:src/main.c    ****         if(timer < 25) { if(TEST_MANUELL) timer = 25; else return; }
 155:src/main.c    **** 
 156:src/main.c    ****         Manuell();
 157:src/main.c    ****         Phase++;
 158:src/main.c    ****         Phase %= 6;
 159:src/main.c    ****         AdConvert();
 160:src/main.c    ****         PWM = pwm;
 161:src/main.c    ****         SetPWM();
 162:src/main.c    ****         if(SENSE) 
 163:src/main.c    ****             {
 164:src/main.c    ****             PORTD ^= GRUEN;
 165:src/main.c    ****             } 
 166:src/main.c    ****         }
 167:src/main.c    **** }
 168:src/main.c    **** 
 169:src/main.c    **** /*
 170:src/main.c    **** #define SENSE_A ADMUX = 0;
 171:src/main.c    **** #define SENSE_B ADMUX = 1;
 172:src/main.c    **** #define SENSE_C ADMUX = 2;
 173:src/main.c    **** 
 174:src/main.c    **** #define ClrSENSE            ACSR |= 0x10
 175:src/main.c    **** #define SENSE               ((ACSR & 0x10))
 176:src/main.c    **** #define SENSE_L             (!(ACSR & 0x20))
 177:src/main.c    **** #define SENSE_H             ((ACSR & 0x20))
 178:src/main.c    **** */
 179:src/main.c    **** 
 180:src/main.c    **** void RotBlink(unsigned char anz)
 181:src/main.c    **** {
 182:src/main.c    **** sei(); // Interrupts ein
 183:src/main.c    ****  while(anz--)
 184:src/main.c    ****   {
 185:src/main.c    ****    PORTC |= ROT;
 186:src/main.c    ****    Delay_ms(300);    
 187:src/main.c    ****    PORTC &= ~ROT;
 188:src/main.c    ****    Delay_ms(300);    
 189:src/main.c    ****   }
 190:src/main.c    ****    Delay_ms(1000);    
 191:src/main.c    **** }
 192:src/main.c    **** 
 193:src/main.c    **** #define TEST_STROMGRENZE 120
 194:src/main.c    **** unsigned char DelayM(unsigned int timer)
 195:src/main.c    **** {
 196:src/main.c    ****  while(timer--)
 197:src/main.c    ****   {
 198:src/main.c    ****    FastADConvert();
 199:src/main.c    ****    if(Strom > (TEST_STROMGRENZE + RuheStrom))
 200:src/main.c    ****        {
 201:src/main.c    ****         FETS_OFF;
 202:src/main.c    ****         return(1);
 203:src/main.c    ****        } 
 204:src/main.c    ****   }
 205:src/main.c    ****  return(0);  
 206:src/main.c    **** }
 207:src/main.c    **** 
 208:src/main.c    **** unsigned char Delay(unsigned int timer)
 209:src/main.c    **** {
 240                    .LM16:
 241                    .LFBB4:
 242                    /* prologue: frame size=0 */
 243                    /* prologue end (size=0) */
 210:src/main.c    ****  while(timer--)
 211:src/main.c    ****   {
 212:src/main.c    **** //   if(SENSE_H) { PORTC |= ROT; } else { PORTC &= ~ROT;}
 213:src/main.c    ****   }
 214:src/main.c    ****  return(0);  
 215:src/main.c    **** }
 245                    .LM17:
 246 006e 80E0                  ldi r24,lo8(0)
 247 0070 90E0                  ldi r25,hi8(0)
 248                    /* epilogue: frame size=0 */
 249 0072 0895                  ret
 250                    /* epilogue end (size=1) */
 251                    /* function Delay size 3 (2) */
 253                    .Lscope4:
 255                            .stabd  78,0,0
 257                    .global SollwertErmittlung
 259                    SollwertErmittlung:
 260                            .stabd  46,0,0
 216:src/main.c    **** 
 217:src/main.c    **** /*
 218:src/main.c    **** void ShowSense(void)
 219:src/main.c    **** {
 220:src/main.c    ****  if(SENSE_H) { PORTC |= ROT; } else { PORTC &= ~ROT;}
 221:src/main.c    **** 
 222:src/main.c    **** }
 223:src/main.c    **** */
 224:src/main.c    **** #define HIGH_A_EIN PORTB |= 0x08
 225:src/main.c    **** #define HIGH_B_EIN PORTB |= 0x04
 226:src/main.c    **** #define HIGH_C_EIN PORTB |= 0x02
 227:src/main.c    **** #define LOW_A_EIN  PORTD |= 0x08
 228:src/main.c    **** #define LOW_B_EIN  PORTD |= 0x10
 229:src/main.c    **** #define LOW_C_EIN  PORTD |= 0x20
 230:src/main.c    **** 
 231:src/main.c    **** void MotorTon(void)
 232:src/main.c    **** //############################################################################
 233:src/main.c    **** {
 234:src/main.c    ****     unsigned char ADR_TAB[5] = {0,0,2,1,3};
 235:src/main.c    ****     unsigned int timer = 300,i;
 236:src/main.c    ****     unsigned int t = 0;
 237:src/main.c    ****     unsigned char anz = 0,MosfetOkay = 0, grenze = 50;
 238:src/main.c    **** 
 239:src/main.c    ****     PORTC &= ~ROT;
 240:src/main.c    ****     Delay_ms(300 * ADR_TAB[MotorAdresse]);    
 241:src/main.c    ****     DISABLE_SENSE_INT;
 242:src/main.c    ****     cli();//Globale Interrupts Ausschalten
 243:src/main.c    ****     uart_putchar('\n');
 244:src/main.c    ****     STEUER_OFF;
 245:src/main.c    ****     Strom_max = 0;
 246:src/main.c    ****     DelayM(50);
 247:src/main.c    ****     RuheStrom = Strom_max;
 248:src/main.c    **** //    uart_putchar(RuheStrom + 'A');
 249:src/main.c    **** //+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
 250:src/main.c    **** //+ High-Mosfets auf Kurzschluss testen
 251:src/main.c    **** //+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
 252:src/main.c    ****     Strom = 0;
 253:src/main.c    ****     LOW_B_EIN; 
 254:src/main.c    ****     HIGH_A_EIN; 
 255:src/main.c    ****     if(DelayM(3))
 256:src/main.c    ****        {
 257:src/main.c    ****         anz = 1;
 258:src/main.c    ****         uart_putchar('1');
 259:src/main.c    ****        }
 260:src/main.c    ****     FETS_OFF;
 261:src/main.c    ****     Delay(1000);
 262:src/main.c    ****     Strom = 0;
 263:src/main.c    ****     LOW_A_EIN;
 264:src/main.c    ****     HIGH_B_EIN; 
 265:src/main.c    ****     if(DelayM(3))
 266:src/main.c    ****        {
 267:src/main.c    ****         anz = 2;
 268:src/main.c    ****         uart_putchar('2');
 269:src/main.c    ****        }
 270:src/main.c    ****     FETS_OFF;
 271:src/main.c    ****     Delay(1000);
 272:src/main.c    ****     Strom = 0;
 273:src/main.c    ****     LOW_B_EIN; // Low C ein
 274:src/main.c    ****     HIGH_C_EIN; // High B ein
 275:src/main.c    ****     if(DelayM(3))
 276:src/main.c    ****        {
 277:src/main.c    ****         anz = 3;
 278:src/main.c    ****         uart_putchar('3');
 279:src/main.c    ****        }
 280:src/main.c    ****     FETS_OFF;
 281:src/main.c    ****     Delay(1000);
 282:src/main.c    ****     LOW_A_EIN; // Low  A ein; und A gegen C
 283:src/main.c    ****     HIGH_C_EIN; // High C ein
 284:src/main.c    ****     if(DelayM(3))
 285:src/main.c    ****        {
 286:src/main.c    ****         anz = 3;
 287:src/main.c    ****         uart_putchar('7');
 288:src/main.c    ****        }
 289:src/main.c    ****     FETS_OFF;
 290:src/main.c    ****     DelayM(10000);
 291:src/main.c    **** if(anz) while(1) RotBlink(anz);  // bei Kurzschluss nicht starten
 292:src/main.c    **** 
 293:src/main.c    **** //+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
 294:src/main.c    **** //+ LOW-Mosfets auf Schalten und Kurzschluss testen
 295:src/main.c    **** //+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
 296:src/main.c    ****  if(UDR == ' ') {t = 65535; grenze = 40; uart_putchar('_');} else t = 1000; // Ausführlicher Test
 297:src/main.c    ****  Strom = 0;
 298:src/main.c    ****  for(i=0;i<t;i++)
 299:src/main.c    ****  {
 300:src/main.c    ****   LOW_A_EIN; 
 301:src/main.c    ****   DelayM(1);
 302:src/main.c    ****   FETS_OFF;
 303:src/main.c    ****   Delay(5);
 304:src/main.c    ****   HIGH_A_EIN;
 305:src/main.c    ****   DelayM(1);
 306:src/main.c    ****   FETS_OFF;
 307:src/main.c    ****   if(Strom > grenze + RuheStrom) {anz = 4; uart_putchar('4'); break;}
 308:src/main.c    ****   Delay(5);
 309:src/main.c    ****  }
 310:src/main.c    ****  Delay(10000);
 311:src/main.c    **** 
 312:src/main.c    ****  Strom = 0;
 313:src/main.c    ****  for(i=0;i<t;i++)
 314:src/main.c    ****  {
 315:src/main.c    ****   LOW_B_EIN; 
 316:src/main.c    ****   DelayM(1);
 317:src/main.c    ****   FETS_OFF;
 318:src/main.c    ****   Delay(5);
 319:src/main.c    ****   HIGH_B_EIN;
 320:src/main.c    ****   DelayM(1);
 321:src/main.c    ****   FETS_OFF;
 322:src/main.c    ****   if(Strom > grenze + RuheStrom) {anz = 5; uart_putchar('5'); break;}
 323:src/main.c    ****   Delay(5);
 324:src/main.c    ****  } 
 325:src/main.c    **** 
 326:src/main.c    ****  Strom = 0;
 327:src/main.c    ****  Delay(10000);
 328:src/main.c    **** 
 329:src/main.c    ****  for(i=0;i<t;i++)
 330:src/main.c    ****  {
 331:src/main.c    ****   LOW_C_EIN; 
 332:src/main.c    ****   DelayM(1);
 333:src/main.c    ****   FETS_OFF;
 334:src/main.c    ****   Delay(5);
 335:src/main.c    ****   HIGH_C_EIN;
 336:src/main.c    ****   DelayM(1);
 337:src/main.c    ****   FETS_OFF;
 338:src/main.c    ****   if(Strom > grenze + RuheStrom) {anz = 6; uart_putchar('6'); break;}
 339:src/main.c    ****   Delay(5);
 340:src/main.c    ****  } 
 341:src/main.c    **** 
 342:src/main.c    **** //+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
 343:src/main.c    **** //+ High-Mosfets auf Schalten testen
 344:src/main.c    **** //+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
 345:src/main.c    ****     SENSE_A;
 346:src/main.c    ****     FETS_OFF;
 347:src/main.c    ****     LOW_B_EIN; // Low B ein
 348:src/main.c    ****     LOW_C_EIN; // Low C ein
 349:src/main.c    ****     Strom = 0;
 350:src/main.c    **** #define TONDAUER  40000    
 351:src/main.c    **** #define SOUND_E 2
 352:src/main.c    **** #define SOUND1_A 300
 353:src/main.c    **** #define SOUND2_A 330
 354:src/main.c    **** #define SOUND3_A 360
 355:src/main.c    **** 
 356:src/main.c    ****     for(i=0; i< (TONDAUER / SOUND2_A) ; i++)
 357:src/main.c    ****      {
 358:src/main.c    ****       HIGH_A_EIN; // Test A
 359:src/main.c    ****       Delay(SOUND_E);
 360:src/main.c    ****       if(MessAD(0) > 50) { MosfetOkay |= 0x01; } else { MosfetOkay &= ~0x01;};
 361:src/main.c    ****       PORTB = 0;
 362:src/main.c    ****       Delay(SOUND1_A);
 363:src/main.c    ****      }
 364:src/main.c    ****     FETS_OFF;
 365:src/main.c    **** 
 366:src/main.c    ****     LOW_A_EIN; // Low A ein
 367:src/main.c    ****     LOW_C_EIN; // Low C ein
 368:src/main.c    ****     for(i=0; i<(TONDAUER / SOUND1_A); i++)
 369:src/main.c    ****      {
 370:src/main.c    ****       HIGH_B_EIN; // Test B
 371:src/main.c    ****       Delay(SOUND_E);
 372:src/main.c    ****       if(MessAD(1) > 50) { MosfetOkay |= 0x02; } else { MosfetOkay &= ~0x02;};
 373:src/main.c    ****       PORTB = 0;
 374:src/main.c    ****       Delay(SOUND1_A);
 375:src/main.c    ****      }
 376:src/main.c    **** 
 377:src/main.c    ****     FETS_OFF;
 378:src/main.c    ****     LOW_A_EIN; // Low A ein
 379:src/main.c    ****     LOW_B_EIN; // Low B ein
 380:src/main.c    ****     for(i=0; i<(TONDAUER / SOUND3_A); i++)
 381:src/main.c    ****      {
 382:src/main.c    ****       HIGH_C_EIN; // Test C
 383:src/main.c    ****       Delay(SOUND_E);
 384:src/main.c    ****       if(MessAD(2) > 50) { MosfetOkay |= 0x04; } else { MosfetOkay &= ~0x04;};
 385:src/main.c    ****       PORTB = 0;
 386:src/main.c    ****       Delay(SOUND2_A);
 387:src/main.c    ****      }
 388:src/main.c    ****     FETS_OFF;
 389:src/main.c    **** //+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
 390:src/main.c    **** //+ Low-Mosfets auf Schalten testen
 391:src/main.c    **** //+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
 392:src/main.c    ****     SENSE_B;
 393:src/main.c    ****     LOW_A_EIN; // Low A ein
 394:src/main.c    ****     for(i=0; i< (TONDAUER / SOUND2_A) ; i++)
 395:src/main.c    ****      {
 396:src/main.c    ****       HIGH_B_EIN; // Test B
 397:src/main.c    ****       Delay(SOUND_E);
 398:src/main.c    ****       if(MessAD(0) > 50) { MosfetOkay &= ~0x08;} else { MosfetOkay |= 0x08;};
 399:src/main.c    ****       PORTB = 0;
 400:src/main.c    ****       Delay(SOUND2_A);
 401:src/main.c    ****      }
 402:src/main.c    **** 
 403:src/main.c    **** //++++++++++++++++++++++++++++++++++++
 404:src/main.c    ****     LOW_C_EIN; // Low C ein
 405:src/main.c    ****     for(i=0; i<(TONDAUER / SOUND1_A); i++)
 406:src/main.c    ****      {
 407:src/main.c    ****       HIGH_B_EIN; // Test B
 408:src/main.c    ****       Delay(SOUND_E);
 409:src/main.c    ****       if(MessAD(2) > 50) { MosfetOkay &= ~0x20;} else { MosfetOkay |= 0x20;};
 410:src/main.c    ****       PORTB = 0;
 411:src/main.c    ****       Delay(SOUND3_A);
 412:src/main.c    ****      }
 413:src/main.c    ****     FETS_OFF;
 414:src/main.c    **** //++++++++++++++++++++++++++++++++++++
 415:src/main.c    ****     FETS_OFF;
 416:src/main.c    ****     LOW_B_EIN; // Low B ein
 417:src/main.c    ****     for(i=0; i<(TONDAUER / SOUND3_A); i++)
 418:src/main.c    ****      {
 419:src/main.c    ****       HIGH_C_EIN; // Test C
 420:src/main.c    ****       Delay(SOUND_E);
 421:src/main.c    ****       if(MessAD(1) > 50) { MosfetOkay &= ~0x10;} else { MosfetOkay |= 0x10;};
 422:src/main.c    ****       PORTB = 0;
 423:src/main.c    ****       Delay(SOUND3_A);
 424:src/main.c    ****      }
 425:src/main.c    ****     FETS_OFF;
 426:src/main.c    **** //++++++++++++++++++++++++++++++++++++
 427:src/main.c    **** 
 428:src/main.c    **** //+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
 429:src/main.c    ****     sei();//Globale Interrupts Einschalten
 430:src/main.c    **** //    Delay_ms(250 * MotorAdresse);    
 431:src/main.c    **** /*
 432:src/main.c    ****     LOW_A_EIN; // Low B ein
 433:src/main.c    **** #define SOUND8_A 650
 434:src/main.c    ****     for(i=0; i<(TONDAUER / SOUND8_A); i++)
 435:src/main.c    ****      {
 436:src/main.c    ****       HIGH_B_EIN; // Test B
 437:src/main.c    ****       Delay(SOUND_E);
 438:src/main.c    ****       PORTB = 0;
 439:src/main.c    ****       Delay(SOUND8_A);
 440:src/main.c    ****      }
 441:src/main.c    **** */
 442:src/main.c    ****  Delay_ms(300 * (4-ADR_TAB[MotorAdresse]));    
 443:src/main.c    ****  if(!(MosfetOkay & 0x01))  { anz = 1; UDR='A'; } else
 444:src/main.c    ****  if(!(MosfetOkay & 0x02))  { anz = 2; UDR='B'; } else
 445:src/main.c    ****  if(!(MosfetOkay & 0x04))  { anz = 3; UDR='C'; } else
 446:src/main.c    ****  if(!(MosfetOkay & 0x08))  { anz = 4; UDR='a'; } else
 447:src/main.c    ****  if(!(MosfetOkay & 0x10))  { anz = 5; UDR='b'; } else
 448:src/main.c    ****  if(!(MosfetOkay & 0x20))  { anz = 6; UDR='c'; }  
 449:src/main.c    **** 
 450:src/main.c    ****  if(anz) Delay_ms(1000); 
 451:src/main.c    **** 
 452:src/main.c    ****  RotBlink(anz);
 453:src/main.c    ****  uart_putchar('.');
 454:src/main.c    **** }
 455:src/main.c    **** 
 456:src/main.c    **** //############################################################################
 457:src/main.c    **** //
 458:src/main.c    **** unsigned char SollwertErmittlung(void)
 459:src/main.c    **** //############################################################################
 460:src/main.c    **** {
 262                    .LM18:
 263                    .LFBB5:
 264                    /* prologue: frame size=0 */
 265                    /* prologue end (size=0) */
 461:src/main.c    ****     static unsigned int sollwert = 0;
 462:src/main.c    ****     unsigned int ppm;
 463:src/main.c    ****     if(!I2C_Timeout)   // bei Erreichen von 0 ist der Wert ungültig
 267                    .LM19:
 268 0074 8091 0000             lds r24,I2C_Timeout
 269 0078 9091 0000             lds r25,(I2C_Timeout)+1
 270 007c 892B                  or r24,r25
 271 007e 01F0                  breq .+2
 272 0080 00C0                  rjmp .L20
 464:src/main.c    ****         {
 465:src/main.c    ****         if(SIO_Timeout)  // es gibt gültige SIO-Daten
 274                    .LM20:
 275 0082 8091 0000             lds r24,SIO_Timeout
 276 0086 9091 0000             lds r25,(SIO_Timeout)+1
 277 008a 892B                  or r24,r25
 278 008c 01F0                  breq .L22
 466:src/main.c    ****             {
 467:src/main.c    ****              sollwert =  (MAX_PWM * (unsigned int) SIO_Sollwert) / 200;  // skalieren auf 0-200 = 0
 280                    .LM21:
 281 008e 9091 0000             lds r25,SIO_Sollwert
 282 0092 8FEF                  ldi r24,lo8(-1)
 283 0094 989F                  mul r25,r24
 284 0096 C001                  movw r24,r0
 285 0098 1124                  clr r1
 286 009a 68EC                  ldi r22,lo8(200)
 287 009c 70E0                  ldi r23,hi8(200)
 288 009e 00D0                  rcall __udivmodhi4
 289 00a0 7093 0000             sts (sollwert.2390)+1,r23
 290 00a4 6093 0000             sts sollwert.2390,r22
 468:src/main.c    ****              PPM_Betrieb = 0;
 292                    .LM22:
 293 00a8 1092 0000             sts PPM_Betrieb,__zero_reg__
 469:src/main.c    ****              ICP_INT_DISABLE;
 295                    .LM23:
 296 00ac 89B7                  in r24,89-0x20
 297 00ae 8F7D                  andi r24,lo8(-33)
 298 00b0 89BF                  out 89-0x20,r24
 299 00b2 00C0                  rjmp .L32
 300                    .L22:
 470:src/main.c    ****              PORTC &= ~ROT;
 471:src/main.c    ****             }
 472:src/main.c    ****         else
 473:src/main.c    ****             if(anz_ppm_werte > 20)  // es gibt gültige PPM-Daten
 302                    .LM24:
 303 00b4 8091 0000             lds r24,anz_ppm_werte
 304 00b8 8531                  cpi r24,lo8(21)
 305 00ba 00F0                  brlo .L25
 474:src/main.c    ****                 {
 475:src/main.c    ****                 PPM_Betrieb = 1;
 307                    .LM25:
 308 00bc 81E0                  ldi r24,lo8(1)
 309 00be 8093 0000             sts PPM_Betrieb,r24
 476:src/main.c    ****                 ppm = PPM_Signal;
 311                    .LM26:
 312 00c2 2091 0000             lds r18,PPM_Signal
 313 00c6 3091 0000             lds r19,(PPM_Signal)+1
 477:src/main.c    ****                 if(ppm > 300) ppm =   0;  // ungültiges Signal
 315                    .LM27:
 316 00ca 41E0                  ldi r20,hi8(301)
 317 00cc 2D32                  cpi r18,lo8(301)
 318 00ce 3407                  cpc r19,r20
 319 00d0 00F4                  brsh .L27
 478:src/main.c    ****                 if(ppm > 200) ppm = 200;
 321                    .LM28:
 322 00d2 293C                  cpi r18,201
 323 00d4 3105                  cpc r19,__zero_reg__
 324 00d6 00F4                  brsh .L29
 479:src/main.c    ****                 if(ppm <= MIN_PPM) sollwert = 0;
 326                    .LM29:
 327 00d8 2B30                  cpi r18,11
 328 00da 3105                  cpc r19,__zero_reg__
 329 00dc 00F4                  brsh .L31
 330                    .L27:
 331 00de 1092 0000             sts (sollwert.2390)+1,__zero_reg__
 332 00e2 1092 0000             sts sollwert.2390,__zero_reg__
 333 00e6 00C0                  rjmp .L32
 334                    .L29:
 335 00e8 28EC                  ldi r18,lo8(200)
 336 00ea 30E0                  ldi r19,hi8(200)
 337                    .L31:
 480:src/main.c    ****                 else 
 481:src/main.c    ****                     {
 482:src/main.c    ****                     sollwert = (int) MIN_PWM + ((MAX_PWM - MIN_PWM) * (ppm - MIN_PPM)) / (190 - MIN
 339                    .LM30:
 340 00ec 8CEF                  ldi r24,lo8(252)
 341 00ee 90E0                  ldi r25,hi8(252)
 342 00f0 AC01                  movw r20,r24
 343 00f2 249F                  mul r18,r20
 344 00f4 C001                  movw r24,r0
 345 00f6 259F                  mul r18,r21
 346 00f8 900D                  add r25,r0
 347 00fa 349F                  mul r19,r20
 348 00fc 900D                  add r25,r0
 349 00fe 1124                  clr r1
 350 0100 885D                  subi r24,lo8(-(-2520))
 351 0102 9940                  sbci r25,hi8(-(-2520))
 352 0104 64EB                  ldi r22,lo8(180)
 353 0106 70E0                  ldi r23,hi8(180)
 354 0108 00D0                  rcall __udivmodhi4
 355 010a 6D5F                  subi r22,lo8(-(3))
 356 010c 7F4F                  sbci r23,hi8(-(3))
 357 010e 7093 0000             sts (sollwert.2390)+1,r23
 358 0112 6093 0000             sts sollwert.2390,r22
 359                    .L32:
 483:src/main.c    ****                     }
 484:src/main.c    ****                 PORTC &= ~ROT;
 361                    .LM31:
 362 0116 AB98                  cbi 53-0x20,3
 363 0118 00C0                  rjmp .L24
 364                    .L25:
 485:src/main.c    ****                 }
 486:src/main.c    ****             else   // Kein gültiger Sollwert
 487:src/main.c    ****                 {
 488:src/main.c    ****                  if(!TEST_SCHUB) { if(sollwert) sollwert--; }   
 366                    .LM32:
 367 011a 8091 0000             lds r24,sollwert.2390
 368 011e 9091 0000             lds r25,(sollwert.2390)+1
 369 0122 0097                  sbiw r24,0
 370 0124 01F0                  breq .L33
 371 0126 0197                  sbiw r24,1
 372 0128 9093 0000             sts (sollwert.2390)+1,r25
 373 012c 8093 0000             sts sollwert.2390,r24
 374                    .L33:
 489:src/main.c    ****                  PORTC |= ROT; 
 376                    .LM33:
 377 0130 AB9A                  sbi 53-0x20,3
 378 0132 00C0                  rjmp .L24
 379                    .L20:
 490:src/main.c    ****                 }
 491:src/main.c    ****         }
 492:src/main.c    ****     else // I2C-Daten sind gültig
 493:src/main.c    ****         {
 494:src/main.c    ****         sollwert = I2C_RXBuffer; 
 381                    .LM34:
 382 0134 8091 0000             lds r24,I2C_RXBuffer
 383 0138 9927                  clr r25
 384 013a 9093 0000             sts (sollwert.2390)+1,r25
 385 013e 8093 0000             sts sollwert.2390,r24
 495:src/main.c    ****         PPM_Betrieb = 0;
 387                    .LM35:
 388 0142 1092 0000             sts PPM_Betrieb,__zero_reg__
 496:src/main.c    ****         PORTC &= ~ROT;
 390                    .LM36:
 391 0146 AB98                  cbi 53-0x20,3
 497:src/main.c    ****         ICP_INT_DISABLE;
 393                    .LM37:
 394 0148 89B7                  in r24,89-0x20
 395 014a 8F7D                  andi r24,lo8(-33)
 396 014c 89BF                  out 89-0x20,r24
 397                    .L24:
 498:src/main.c    ****         }
 499:src/main.c    ****     if(sollwert > MAX_PWM) sollwert = MAX_PWM;
 399                    .LM38:
 400 014e 8091 0000             lds r24,sollwert.2390
 401 0152 9091 0000             lds r25,(sollwert.2390)+1
 402 0156 8F3F                  cpi r24,255
 403 0158 9105                  cpc r25,__zero_reg__
 404 015a 01F0                  breq .L35
 405 015c 00F0                  brlo .L35
 406 015e 8FEF                  ldi r24,lo8(255)
 407 0160 90E0                  ldi r25,hi8(255)
 408 0162 9093 0000             sts (sollwert.2390)+1,r25
 409 0166 8093 0000             sts sollwert.2390,r24
 410                    .L35:
 411 016a 8091 0000             lds r24,sollwert.2390
 500:src/main.c    ****     return(sollwert); 
 501:src/main.c    **** }
 413                    .LM39:
 414 016e 9927                  clr r25
 415                    /* epilogue: frame size=0 */
 416 0170 0895                  ret
 417                    /* epilogue end (size=1) */
 418                    /* function SollwertErmittlung size 127 (126) */
 424                    .Lscope5:
 426                            .stabd  78,0,0
 428                    .global DebugAusgaben
 430                    DebugAusgaben:
 431                            .stabd  46,0,0
 502:src/main.c    **** 
 503:src/main.c    **** void DebugAusgaben(void)
 504:src/main.c    **** {
 433                    .LM40:
 434                    .LFBB6:
 435                    /* prologue: frame size=0 */
 436                    /* prologue end (size=0) */
 505:src/main.c    ****     DebugOut.Analog[0] = Strom;
 438                    .LM41:
 439 0172 8091 0000             lds r24,Strom
 440 0176 9091 0000             lds r25,(Strom)+1
 441 017a 9093 0000             sts (DebugOut+18)+1,r25
 442 017e 8093 0000             sts DebugOut+18,r24
 506:src/main.c    ****     DebugOut.Analog[1] = Mittelstrom;
 444                    .LM42:
 445 0182 8091 0000             lds r24,Mittelstrom
 446 0186 9927                  clr r25
 447 0188 9093 0000             sts (DebugOut+20)+1,r25
 448 018c 8093 0000             sts DebugOut+20,r24
 507:src/main.c    ****     DebugOut.Analog[2] = SIO_Drehzahl;
 450                    .LM43:
 451 0190 8091 0000             lds r24,SIO_Drehzahl
 452 0194 9091 0000             lds r25,(SIO_Drehzahl)+1
 453 0198 9093 0000             sts (DebugOut+22)+1,r25
 454 019c 8093 0000             sts DebugOut+22,r24
 508:src/main.c    ****     DebugOut.Analog[3] = PPM_Signal;
 456                    .LM44:
 457 01a0 8091 0000             lds r24,PPM_Signal
 458 01a4 9091 0000             lds r25,(PPM_Signal)+1
 459 01a8 9093 0000             sts (DebugOut+24)+1,r25
 460 01ac 8093 0000             sts DebugOut+24,r24
 461                    /* epilogue: frame size=0 */
 462 01b0 0895                  ret
 463                    /* epilogue end (size=1) */
 464                    /* function DebugAusgaben size 32 (31) */
 466                    .Lscope6:
 468                            .stabd  78,0,0
 471                    .global RotBlink
 473                    RotBlink:
 474                            .stabd  46,0,0
 476                    .LM45:
 477                    .LFBB7:
 478                    /* prologue: frame size=0 */
 479 01b2 1F93                  push r17
 480                    /* prologue end (size=1) */
 481 01b4 182F                  mov r17,r24
 483                    .LM46:
 484                    /* #APP */
 485 01b6 7894                  sei
 486                    /* #NOAPP */
 487 01b8 00C0                  rjmp .L41
 488                    .L42:
 490                    .LM47:
 491 01ba AB9A                  sbi 53-0x20,3
 493                    .LM48:
 494 01bc 8CE2                  ldi r24,lo8(300)
 495 01be 91E0                  ldi r25,hi8(300)
 496 01c0 00D0                  rcall Delay_ms
 498                    .LM49:
 499 01c2 AB98                  cbi 53-0x20,3
 501                    .LM50:
 502 01c4 8CE2                  ldi r24,lo8(300)
 503 01c6 91E0                  ldi r25,hi8(300)
 504 01c8 00D0                  rcall Delay_ms
 505                    .L41:
 507                    .LM51:
 508 01ca 1150                  subi r17,1
 509 01cc 00F4                  brcc .L42
 511                    .LM52:
 512 01ce 88EE                  ldi r24,lo8(1000)
 513 01d0 93E0                  ldi r25,hi8(1000)
 514 01d2 00D0                  rcall Delay_ms
 515                    /* epilogue: frame size=0 */
 516 01d4 1F91                  pop r17
 517 01d6 0895                  ret
 518                    /* epilogue end (size=2) */
 519                    /* function RotBlink size 21 (18) */
 521                    .Lscope7:
 523                            .stabd  78,0,0
 526                    .global DelayM
 528                    DelayM:
 529                            .stabd  46,0,0
 531                    .LM53:
 532                    .LFBB8:
 533                    /* prologue: frame size=0 */
 534 01d8 CF93                  push r28
 535 01da DF93                  push r29
 536                    /* prologue end (size=2) */
 537 01dc EC01                  movw r28,r24
 538 01de 00C0                  rjmp .L46
 539                    .L47:
 541                    .LM54:
 542 01e0 00D0                  rcall FastADConvert
 544                    .LM55:
 545 01e2 8091 0000             lds r24,RuheStrom
 546 01e6 9091 0000             lds r25,(RuheStrom)+1
 547 01ea 8858                  subi r24,lo8(-(120))
 548 01ec 9F4F                  sbci r25,hi8(-(120))
 549 01ee 2091 0000             lds r18,Strom
 550 01f2 3091 0000             lds r19,(Strom)+1
 551 01f6 8217                  cp r24,r18
 552 01f8 9307                  cpc r25,r19
 553 01fa 00F4                  brsh .L46
 555                    .LM56:
 556 01fc 82B3                  in r24,50-0x20
 557 01fe 877C                  andi r24,lo8(-57)
 558 0200 82BB                  out 50-0x20,r24
 559 0202 88B3                  in r24,56-0x20
 560 0204 817F                  andi r24,lo8(-15)
 561 0206 88BB                  out 56-0x20,r24
 562 0208 81E0                  ldi r24,lo8(1)
 563 020a 90E0                  ldi r25,hi8(1)
 564 020c 00C0                  rjmp .L49
 565                    .L46:
 567                    .LM57:
 568 020e 2197                  sbiw r28,1
 569 0210 8FEF                  ldi r24,hi8(-1)
 570 0212 CF3F                  cpi r28,lo8(-1)
 571 0214 D807                  cpc r29,r24
 572 0216 01F4                  brne .L47
 573 0218 80E0                  ldi r24,lo8(0)
 574 021a 90E0                  ldi r25,hi8(0)
 575                    .L49:
 576                    /* epilogue: frame size=0 */
 577 021c DF91                  pop r29
 578 021e CF91                  pop r28
 579 0220 0895                  ret
 580                    /* epilogue end (size=3) */
 581                    /* function DelayM size 37 (32) */
 583                    .Lscope8:
 585                            .stabd  78,0,0
 587                    .global MotorTon
 589                    MotorTon:
 590                            .stabd  46,0,0
 592                    .LM58:
 593                    .LFBB9:
 594                    /* prologue: frame size=5 */
 595 0222 8F92                  push r8
 596 0224 9F92                  push r9
 597 0226 BF92                  push r11
 598 0228 CF92                  push r12
 599 022a DF92                  push r13
 600 022c EF92                  push r14
 601 022e FF92                  push r15
 602 0230 0F93                  push r16
 603 0232 1F93                  push r17
 604 0234 CF93                  push r28
 605 0236 DF93                  push r29
 606 0238 CDB7                  in r28,__SP_L__
 607 023a DEB7                  in r29,__SP_H__
 608 023c 2597                  sbiw r28,5
 609 023e 0FB6                  in __tmp_reg__,__SREG__
 610 0240 F894                  cli
 611 0242 DEBF                  out __SP_H__,r29
 612 0244 0FBE                  out __SREG__,__tmp_reg__
 613 0246 CDBF                  out __SP_L__,r28
 614                    /* prologue end (size=19) */
 616                    .LM59:
 617 0248 DE01                  movw r26,r28
 618 024a 1196                  adiw r26,1
 619 024c E0E0                  ldi r30,lo8(C.8.2210)
 620 024e F0E0                  ldi r31,hi8(C.8.2210)
 621 0250 85E0                  ldi r24,lo8(5)
 622                    .L55:
 624                    .LM60:
 625 0252 0190                  ld r0,Z+
 626 0254 0D92                  st X+,r0
 627 0256 8150                  subi r24,lo8(-(-1))
 628 0258 01F4                  brne .L55
 630                    .LM61:
 631 025a AB98                  cbi 53-0x20,3
 633                    .LM62:
 634 025c 8091 0000             lds r24,MotorAdresse
 635 0260 FE01                  movw r30,r28
 636 0262 E80F                  add r30,r24
 637 0264 F11D                  adc r31,__zero_reg__
 638 0266 8181                  ldd r24,Z+1
 639 0268 9927                  clr r25
 640 026a 2CE2                  ldi r18,lo8(300)
 641 026c 31E0                  ldi r19,hi8(300)
 642 026e AC01                  movw r20,r24
 643 0270 429F                  mul r20,r18
 644 0272 C001                  movw r24,r0
 645 0274 439F                  mul r20,r19
 646 0276 900D                  add r25,r0
 647 0278 529F                  mul r21,r18
 648 027a 900D                  add r25,r0
 649 027c 1124                  clr r1
 650 027e 00D0                  rcall Delay_ms
 652                    .LM63:
 653 0280 1092 0000             sts CompInterruptFreigabe,__zero_reg__
 654 0284 4398                  cbi 40-0x20,3
 656                    .LM64:
 657                    /* #APP */
 658 0286 F894                  cli
 660                    .LM65:
 661                    /* #NOAPP */
 662 0288 8AE0                  ldi r24,lo8(10)
 663 028a 00D0                  rcall uart_putchar
 665                    .LM66:
 666 028c 82B3                  in r24,50-0x20
 667 028e 877C                  andi r24,lo8(-57)
 668 0290 82BB                  out 50-0x20,r24
 669 0292 81E0                  ldi r24,lo8(1)
 670 0294 8FBD                  out 79-0x20,r24
 671 0296 81E4                  ldi r24,lo8(65)
 672 0298 85BD                  out 69-0x20,r24
 673 029a 8EE0                  ldi r24,lo8(14)
 674 029c 87BB                  out 55-0x20,r24
 675 029e 88B3                  in r24,56-0x20
 676 02a0 817F                  andi r24,lo8(-15)
 677 02a2 88BB                  out 56-0x20,r24
 679                    .LM67:
 680 02a4 1092 0000             sts Strom_max,__zero_reg__
 682                    .LM68:
 683 02a8 82E3                  ldi r24,lo8(50)
 684 02aa 90E0                  ldi r25,hi8(50)
 685 02ac 00D0                  rcall DelayM
 687                    .LM69:
 688 02ae 8091 0000             lds r24,Strom_max
 689 02b2 9927                  clr r25
 690 02b4 9093 0000             sts (RuheStrom)+1,r25
 691 02b8 8093 0000             sts RuheStrom,r24
 693                    .LM70:
 694 02bc 1092 0000             sts (Strom)+1,__zero_reg__
 695 02c0 1092 0000             sts Strom,__zero_reg__
 697                    .LM71:
 698 02c4 949A                  sbi 50-0x20,4
 700                    .LM72:
 701 02c6 C39A                  sbi 56-0x20,3
 703                    .LM73:
 704 02c8 83E0                  ldi r24,lo8(3)
 705 02ca 90E0                  ldi r25,hi8(3)
 706 02cc 00D0                  rcall DelayM
 707 02ce 8823                  tst r24
 708 02d0 01F4                  brne .L56
 709 02d2 BB24                  clr r11
 710 02d4 00C0                  rjmp .L58
 711                    .L56:
 713                    .LM74:
 714 02d6 81E3                  ldi r24,lo8(49)
 715 02d8 00D0                  rcall uart_putchar
 716 02da BB24                  clr r11
 717 02dc B394                  inc r11
 718                    .L58:
 720                    .LM75:
 721 02de 82B3                  in r24,50-0x20
 722 02e0 877C                  andi r24,lo8(-57)
 723 02e2 82BB                  out 50-0x20,r24
 724 02e4 88B3                  in r24,56-0x20
 725 02e6 817F                  andi r24,lo8(-15)
 726 02e8 88BB                  out 56-0x20,r24
 728                    .LM76:
 729 02ea 1092 0000             sts (Strom)+1,__zero_reg__
 730 02ee 1092 0000             sts Strom,__zero_reg__
 732                    .LM77:
 733 02f2 939A                  sbi 50-0x20,3
 735                    .LM78:
 736 02f4 C29A                  sbi 56-0x20,2
 738                    .LM79:
 739 02f6 83E0                  ldi r24,lo8(3)
 740 02f8 90E0                  ldi r25,hi8(3)
 741 02fa 00D0                  rcall DelayM
 742 02fc 8823                  tst r24
 743 02fe 01F0                  breq .L59
 745                    .LM80:
 746 0300 82E3                  ldi r24,lo8(50)
 747 0302 00D0                  rcall uart_putchar
 748 0304 B2E0                  ldi r27,lo8(2)
 749 0306 BB2E                  mov r11,r27
 750                    .L59:
 752                    .LM81:
 753 0308 82B3                  in r24,50-0x20
 754 030a 877C                  andi r24,lo8(-57)
 755 030c 82BB                  out 50-0x20,r24
 756 030e 88B3                  in r24,56-0x20
 757 0310 817F                  andi r24,lo8(-15)
 758 0312 88BB                  out 56-0x20,r24
 760                    .LM82:
 761 0314 1092 0000             sts (Strom)+1,__zero_reg__
 762 0318 1092 0000             sts Strom,__zero_reg__
 764                    .LM83:
 765 031c 949A                  sbi 50-0x20,4
 767                    .LM84:
 768 031e C19A                  sbi 56-0x20,1
 770                    .LM85:
 771 0320 83E0                  ldi r24,lo8(3)
 772 0322 90E0                  ldi r25,hi8(3)
 773 0324 00D0                  rcall DelayM
 774 0326 8823                  tst r24
 775 0328 01F0                  breq .L61
 777                    .LM86:
 778 032a 83E3                  ldi r24,lo8(51)
 779 032c 00D0                  rcall uart_putchar
 780 032e A3E0                  ldi r26,lo8(3)
 781 0330 BA2E                  mov r11,r26
 782                    .L61:
 784                    .LM87:
 785 0332 82B3                  in r24,50-0x20
 786 0334 877C                  andi r24,lo8(-57)
 787 0336 82BB                  out 50-0x20,r24
 788 0338 88B3                  in r24,56-0x20
 789 033a 817F                  andi r24,lo8(-15)
 790 033c 88BB                  out 56-0x20,r24
 792                    .LM88:
 793 033e 939A                  sbi 50-0x20,3
 795                    .LM89:
 796 0340 C19A                  sbi 56-0x20,1
 798                    .LM90:
 799 0342 83E0                  ldi r24,lo8(3)
 800 0344 90E0                  ldi r25,hi8(3)
 801 0346 00D0                  rcall DelayM
 802 0348 8823                  tst r24
 803 034a 01F0                  breq .L63
 805                    .LM91:
 806 034c 87E3                  ldi r24,lo8(55)
 807 034e 00D0                  rcall uart_putchar
 808 0350 F3E0                  ldi r31,lo8(3)
 809 0352 BF2E                  mov r11,r31
 810                    .L63:
 812                    .LM92:
 813 0354 82B3                  in r24,50-0x20
 814 0356 877C                  andi r24,lo8(-57)
 815 0358 82BB                  out 50-0x20,r24
 816 035a 88B3                  in r24,56-0x20
 817 035c 817F                  andi r24,lo8(-15)
 818 035e 88BB                  out 56-0x20,r24
 820                    .LM93:
 821 0360 80E1                  ldi r24,lo8(10000)
 822 0362 97E2                  ldi r25,hi8(10000)
 823 0364 00D0                  rcall DelayM
 825                    .LM94:
 826 0366 BB20                  tst r11
 827 0368 01F0                  breq .L65
 828                    .L138:
 829 036a 8B2D                  mov r24,r11
 830 036c 00D0                  rcall RotBlink
 831 036e 00C0                  rjmp .L138
 832                    .L65:
 834                    .LM95:
 835 0370 8CB1                  in r24,44-0x20
 836 0372 8032                  cpi r24,lo8(32)
 837 0374 01F0                  breq .L67
 838 0376 E8EE                  ldi r30,lo8(1000)
 839 0378 8E2E                  mov r8,r30
 840 037a E3E0                  ldi r30,hi8(1000)
 841 037c 9E2E                  mov r9,r30
 842 037e 82E3                  ldi r24,lo8(50)
 843 0380 00C0                  rjmp .L69
 844                    .L67:
 845 0382 8FE5                  ldi r24,lo8(95)
 846 0384 00D0                  rcall uart_putchar
 847 0386 8824                  clr r8
 848 0388 8A94                  dec r8
 849 038a 982C                  mov r9,r8
 850 038c 88E2                  ldi r24,lo8(40)
 851                    .L69:
 853                    .LM96:
 854 038e 1092 0000             sts (Strom)+1,__zero_reg__
 855 0392 1092 0000             sts Strom,__zero_reg__
 856 0396 00E0                  ldi r16,lo8(0)
 857 0398 10E0                  ldi r17,hi8(0)
 859                    .LM97:
 860 039a C82E                  mov r12,r24
 861 039c DD24                  clr r13
 862                    .L70:
 864                    .LM98:
 865 039e 939A                  sbi 50-0x20,3
 867                    .LM99:
 868 03a0 81E0                  ldi r24,lo8(1)
 869 03a2 90E0                  ldi r25,hi8(1)
 870 03a4 00D0                  rcall DelayM
 872                    .LM100:
 873 03a6 82B3                  in r24,50-0x20
 874 03a8 877C                  andi r24,lo8(-57)
 875 03aa 82BB                  out 50-0x20,r24
 876 03ac 88B3                  in r24,56-0x20
 877 03ae 817F                  andi r24,lo8(-15)
 878 03b0 88BB                  out 56-0x20,r24
 880                    .LM101:
 881 03b2 C39A                  sbi 56-0x20,3
 883                    .LM102:
 884 03b4 81E0                  ldi r24,lo8(1)
 885 03b6 90E0                  ldi r25,hi8(1)
 886 03b8 00D0                  rcall DelayM
 888                    .LM103:
 889 03ba 82B3                  in r24,50-0x20
 890 03bc 877C                  andi r24,lo8(-57)
 891 03be 82BB                  out 50-0x20,r24
 892 03c0 88B3                  in r24,56-0x20
 893 03c2 817F                  andi r24,lo8(-15)
 894 03c4 88BB                  out 56-0x20,r24
 896                    .LM104:
 897 03c6 7601                  movw r14,r12
 898 03c8 8091 0000             lds r24,RuheStrom
 899 03cc 9091 0000             lds r25,(RuheStrom)+1
 900 03d0 8C0D                  add r24,r12
 901 03d2 9D1D                  adc r25,r13
 902 03d4 2091 0000             lds r18,Strom
 903 03d8 3091 0000             lds r19,(Strom)+1
 904 03dc 8217                  cp r24,r18
 905 03de 9307                  cpc r25,r19
 906 03e0 00F4                  brsh .L71
 907 03e2 84E3                  ldi r24,lo8(52)
 908 03e4 00D0                  rcall uart_putchar
 909 03e6 74E0                  ldi r23,lo8(4)
 910 03e8 B72E                  mov r11,r23
 911 03ea 00C0                  rjmp .L73
 912                    .L71:
 914                    .LM105:
 915 03ec 0F5F                  subi r16,lo8(-(1))
 916 03ee 1F4F                  sbci r17,hi8(-(1))
 917 03f0 0815                  cp r16,r8
 918 03f2 1905                  cpc r17,r9
 919 03f4 01F4                  brne .L70
 920                    .L73:
 922                    .LM106:
 923 03f6 1092 0000             sts (Strom)+1,__zero_reg__
 924 03fa 1092 0000             sts Strom,__zero_reg__
 925 03fe 00E0                  ldi r16,lo8(0)
 926 0400 10E0                  ldi r17,hi8(0)
 927                    .L74:
 929                    .LM107:
 930 0402 949A                  sbi 50-0x20,4
 932                    .LM108:
 933 0404 81E0                  ldi r24,lo8(1)
 934 0406 90E0                  ldi r25,hi8(1)
 935 0408 00D0                  rcall DelayM
 937                    .LM109:
 938 040a 82B3                  in r24,50-0x20
 939 040c 877C                  andi r24,lo8(-57)
 940 040e 82BB                  out 50-0x20,r24
 941 0410 88B3                  in r24,56-0x20
 942 0412 817F                  andi r24,lo8(-15)
 943 0414 88BB                  out 56-0x20,r24
 945                    .LM110:
 946 0416 C29A                  sbi 56-0x20,2
 948                    .LM111:
 949 0418 81E0                  ldi r24,lo8(1)
 950 041a 90E0                  ldi r25,hi8(1)
 951 041c 00D0                  rcall DelayM
 953                    .LM112:
 954 041e 82B3                  in r24,50-0x20
 955 0420 877C                  andi r24,lo8(-57)
 956 0422 82BB                  out 50-0x20,r24
 957 0424 88B3                  in r24,56-0x20
 958 0426 817F                  andi r24,lo8(-15)
 959 0428 88BB                  out 56-0x20,r24
 961                    .LM113:
 962 042a 8091 0000             lds r24,RuheStrom
 963 042e 9091 0000             lds r25,(RuheStrom)+1
 964 0432 8E0D                  add r24,r14
 965 0434 9F1D                  adc r25,r15
 966 0436 2091 0000             lds r18,Strom
 967 043a 3091 0000             lds r19,(Strom)+1
 968 043e 8217                  cp r24,r18
 969 0440 9307                  cpc r25,r19
 970 0442 00F4                  brsh .L75
 971 0444 85E3                  ldi r24,lo8(53)
 972 0446 00D0                  rcall uart_putchar
 973 0448 65E0                  ldi r22,lo8(5)
 974 044a B62E                  mov r11,r22
 975 044c 00C0                  rjmp .L77
 976                    .L75:
 978                    .LM114:
 979 044e 0F5F                  subi r16,lo8(-(1))
 980 0450 1F4F                  sbci r17,hi8(-(1))
 981 0452 0815                  cp r16,r8
 982 0454 1905                  cpc r17,r9
 983 0456 01F4                  brne .L74
 984                    .L77:
 986                    .LM115:
 987 0458 1092 0000             sts (Strom)+1,__zero_reg__
 988 045c 1092 0000             sts Strom,__zero_reg__
 989 0460 00E0                  ldi r16,lo8(0)
 990 0462 10E0                  ldi r17,hi8(0)
 991                    .L78:
 993                    .LM116:
 994 0464 959A                  sbi 50-0x20,5
 996                    .LM117:
 997 0466 81E0                  ldi r24,lo8(1)
 998 0468 90E0                  ldi r25,hi8(1)
 999 046a 00D0                  rcall DelayM
 1001                   .LM118:
 1002 046c 82B3                 in r24,50-0x20
 1003 046e 877C                 andi r24,lo8(-57)
 1004 0470 82BB                 out 50-0x20,r24
 1005 0472 88B3                 in r24,56-0x20
 1006 0474 817F                 andi r24,lo8(-15)
 1007 0476 88BB                 out 56-0x20,r24
 1009                   .LM119:
 1010 0478 C19A                 sbi 56-0x20,1
 1012                   .LM120:
 1013 047a 81E0                 ldi r24,lo8(1)
 1014 047c 90E0                 ldi r25,hi8(1)
 1015 047e 00D0                 rcall DelayM
 1017                   .LM121:
 1018 0480 82B3                 in r24,50-0x20
 1019 0482 877C                 andi r24,lo8(-57)
 1020 0484 82BB                 out 50-0x20,r24
 1021 0486 88B3                 in r24,56-0x20
 1022 0488 817F                 andi r24,lo8(-15)
 1023 048a 88BB                 out 56-0x20,r24
 1025                   .LM122:
 1026 048c 8091 0000            lds r24,RuheStrom
 1027 0490 9091 0000            lds r25,(RuheStrom)+1
 1028 0494 8E0D                 add r24,r14
 1029 0496 9F1D                 adc r25,r15
 1030 0498 2091 0000            lds r18,Strom
 1031 049c 3091 0000            lds r19,(Strom)+1
 1032 04a0 8217                 cp r24,r18
 1033 04a2 9307                 cpc r25,r19
 1034 04a4 00F4                 brsh .L79
 1035 04a6 86E3                 ldi r24,lo8(54)
 1036 04a8 00D0                 rcall uart_putchar
 1037 04aa 56E0                 ldi r21,lo8(6)
 1038 04ac B52E                 mov r11,r21
 1039 04ae 00C0                 rjmp .L81
 1040                   .L79:
 1042                   .LM123:
 1043 04b0 0F5F                 subi r16,lo8(-(1))
 1044 04b2 1F4F                 sbci r17,hi8(-(1))
 1045 04b4 0815                 cp r16,r8
 1046 04b6 1905                 cpc r17,r9
 1047 04b8 01F4                 brne .L78
 1048                   .L81:
 1050                   .LM124:
 1051 04ba 17B8                 out 39-0x20,__zero_reg__
 1053                   .LM125:
 1054 04bc 82B3                 in r24,50-0x20
 1055 04be 877C                 andi r24,lo8(-57)
 1056 04c0 82BB                 out 50-0x20,r24
 1057 04c2 88B3                 in r24,56-0x20
 1058 04c4 817F                 andi r24,lo8(-15)
 1059 04c6 88BB                 out 56-0x20,r24
 1061                   .LM126:
 1062 04c8 949A                 sbi 50-0x20,4
 1064                   .LM127:
 1065 04ca 959A                 sbi 50-0x20,5
 1067                   .LM128:
 1068 04cc 1092 0000            sts (Strom)+1,__zero_reg__
 1069 04d0 1092 0000            sts Strom,__zero_reg__
 1070 04d4 00E0                 ldi r16,lo8(0)
 1071 04d6 10E0                 ldi r17,hi8(0)
 1072 04d8 FF24                 clr r15
 1073                   .L82:
 1075                   .LM129:
 1076 04da C39A                 sbi 56-0x20,3
 1078                   .LM130:
 1079 04dc 80E0                 ldi r24,lo8(0)
 1080 04de 90E0                 ldi r25,hi8(0)
 1081 04e0 00D0                 rcall MessAD
 1082 04e2 C397                 sbiw r24,51
 1083 04e4 04F0                 brlt .L83
 1084 04e6 51E0                 ldi r21,lo8(1)
 1085 04e8 F52A                 or r15,r21
 1086 04ea 00C0                 rjmp .L85
 1087                   .L83:
 1088 04ec 8EEF                 ldi r24,lo8(-2)
 1089 04ee F822                 and r15,r24
 1090                   .L85:
 1092                   .LM131:
 1093 04f0 18BA                 out 56-0x20,__zero_reg__
 1095                   .LM132:
 1096 04f2 0F5F                 subi r16,lo8(-(1))
 1097 04f4 1F4F                 sbci r17,hi8(-(1))
 1098 04f6 0937                 cpi r16,121
 1099 04f8 1105                 cpc r17,__zero_reg__
 1100 04fa 01F4                 brne .L82
 1102                   .LM133:
 1103 04fc 82B3                 in r24,50-0x20
 1104 04fe 877C                 andi r24,lo8(-57)
 1105 0500 82BB                 out 50-0x20,r24
 1106 0502 88B3                 in r24,56-0x20
 1107 0504 817F                 andi r24,lo8(-15)
 1108 0506 88BB                 out 56-0x20,r24
 1110                   .LM134:
 1111 0508 939A                 sbi 50-0x20,3
 1113                   .LM135:
 1114 050a 959A                 sbi 50-0x20,5
 1115 050c 00E0                 ldi r16,lo8(0)
 1116 050e 10E0                 ldi r17,hi8(0)
 1117                   .L87:
 1119                   .LM136:
 1120 0510 C29A                 sbi 56-0x20,2
 1122                   .LM137:
 1123 0512 81E0                 ldi r24,lo8(1)
 1124 0514 90E0                 ldi r25,hi8(1)
 1125 0516 00D0                 rcall MessAD
 1126 0518 C397                 sbiw r24,51
 1127 051a 04F0                 brlt .L88
 1128 051c 42E0                 ldi r20,lo8(2)
 1129 051e F42A                 or r15,r20
 1130 0520 00C0                 rjmp .L90
 1131                   .L88:
 1132 0522 5DEF                 ldi r21,lo8(-3)
 1133 0524 F522                 and r15,r21
 1134                   .L90:
 1136                   .LM138:
 1137 0526 18BA                 out 56-0x20,__zero_reg__
 1139                   .LM139:
 1140 0528 0F5F                 subi r16,lo8(-(1))
 1141 052a 1F4F                 sbci r17,hi8(-(1))
 1142 052c 0538                 cpi r16,133
 1143 052e 1105                 cpc r17,__zero_reg__
 1144 0530 01F4                 brne .L87
 1146                   .LM140:
 1147 0532 82B3                 in r24,50-0x20
 1148 0534 877C                 andi r24,lo8(-57)
 1149 0536 82BB                 out 50-0x20,r24
 1150 0538 88B3                 in r24,56-0x20
 1151 053a 817F                 andi r24,lo8(-15)
 1152 053c 88BB                 out 56-0x20,r24
 1154                   .LM141:
 1155 053e 939A                 sbi 50-0x20,3
 1157                   .LM142:
 1158 0540 949A                 sbi 50-0x20,4
 1159 0542 00E0                 ldi r16,lo8(0)
 1160 0544 10E0                 ldi r17,hi8(0)
 1161                   .L92:
 1163                   .LM143:
 1164 0546 C19A                 sbi 56-0x20,1
 1166                   .LM144:
 1167 0548 82E0                 ldi r24,lo8(2)
 1168 054a 90E0                 ldi r25,hi8(2)
 1169 054c 00D0                 rcall MessAD
 1170 054e C397                 sbiw r24,51
 1171 0550 04F0                 brlt .L93
 1172 0552 84E0                 ldi r24,lo8(4)
 1173 0554 F82A                 or r15,r24
 1174 0556 00C0                 rjmp .L95
 1175                   .L93:
 1176 0558 4BEF                 ldi r20,lo8(-5)
 1177 055a F422                 and r15,r20
 1178                   .L95:
 1180                   .LM145:
 1181 055c 18BA                 out 56-0x20,__zero_reg__
 1183                   .LM146:
 1184 055e 0F5F                 subi r16,lo8(-(1))
 1185 0560 1F4F                 sbci r17,hi8(-(1))
 1186 0562 0F36                 cpi r16,111
 1187 0564 1105                 cpc r17,__zero_reg__
 1188 0566 01F4                 brne .L92
 1190                   .LM147:
 1191 0568 82B3                 in r24,50-0x20
 1192 056a 877C                 andi r24,lo8(-57)
 1193 056c 82BB                 out 50-0x20,r24
 1194 056e 88B3                 in r24,56-0x20
 1195 0570 817F                 andi r24,lo8(-15)
 1196 0572 88BB                 out 56-0x20,r24
 1198                   .LM148:
 1199 0574 81E0                 ldi r24,lo8(1)
 1200 0576 87B9                 out 39-0x20,r24
 1202                   .LM149:
 1203 0578 939A                 sbi 50-0x20,3
 1204 057a 00E0                 ldi r16,lo8(0)
 1205 057c 10E0                 ldi r17,hi8(0)
 1206                   .L97:
 1208                   .LM150:
 1209 057e C29A                 sbi 56-0x20,2
 1211                   .LM151:
 1212 0580 80E0                 ldi r24,lo8(0)
 1213 0582 90E0                 ldi r25,hi8(0)
 1214 0584 00D0                 rcall MessAD
 1215 0586 C397                 sbiw r24,51
 1216 0588 04F0                 brlt .L98
 1217 058a 57EF                 ldi r21,lo8(-9)
 1218 058c F522                 and r15,r21
 1219 058e 00C0                 rjmp .L100
 1220                   .L98:
 1221 0590 88E0                 ldi r24,lo8(8)
 1222 0592 F82A                 or r15,r24
 1223                   .L100:
 1225                   .LM152:
 1226 0594 18BA                 out 56-0x20,__zero_reg__
 1228                   .LM153:
 1229 0596 0F5F                 subi r16,lo8(-(1))
 1230 0598 1F4F                 sbci r17,hi8(-(1))
 1231 059a 0937                 cpi r16,121
 1232 059c 1105                 cpc r17,__zero_reg__
 1233 059e 01F4                 brne .L97
 1235                   .LM154:
 1236 05a0 959A                 sbi 50-0x20,5
 1237 05a2 00E0                 ldi r16,lo8(0)
 1238 05a4 10E0                 ldi r17,hi8(0)
 1239                   .L102:
 1241                   .LM155:
 1242 05a6 C29A                 sbi 56-0x20,2
 1244                   .LM156:
 1245 05a8 82E0                 ldi r24,lo8(2)
 1246 05aa 90E0                 ldi r25,hi8(2)
 1247 05ac 00D0                 rcall MessAD
 1248 05ae C397                 sbiw r24,51
 1249 05b0 04F0                 brlt .L103
 1250 05b2 4FED                 ldi r20,lo8(-33)
 1251 05b4 F422                 and r15,r20
 1252 05b6 00C0                 rjmp .L105
 1253                   .L103:
 1254 05b8 50E2                 ldi r21,lo8(32)
 1255 05ba F52A                 or r15,r21
 1256                   .L105:
 1258                   .LM157:
 1259 05bc 18BA                 out 56-0x20,__zero_reg__
 1261                   .LM158:
 1262 05be 0F5F                 subi r16,lo8(-(1))
 1263 05c0 1F4F                 sbci r17,hi8(-(1))
 1264 05c2 0538                 cpi r16,133
 1265 05c4 1105                 cpc r17,__zero_reg__
 1266 05c6 01F4                 brne .L102
 1268                   .LM159:
 1269 05c8 82B3                 in r24,50-0x20
 1270 05ca 877C                 andi r24,lo8(-57)
 1271 05cc 82BB                 out 50-0x20,r24
 1272 05ce 88B3                 in r24,56-0x20
 1273 05d0 817F                 andi r24,lo8(-15)
 1274 05d2 88BB                 out 56-0x20,r24
 1276                   .LM160:
 1277 05d4 82B3                 in r24,50-0x20
 1278 05d6 877C                 andi r24,lo8(-57)
 1279 05d8 82BB                 out 50-0x20,r24
 1280 05da 88B3                 in r24,56-0x20
 1281 05dc 817F                 andi r24,lo8(-15)
 1282 05de 88BB                 out 56-0x20,r24
 1284                   .LM161:
 1285 05e0 949A                 sbi 50-0x20,4
 1286 05e2 00E0                 ldi r16,lo8(0)
 1287 05e4 10E0                 ldi r17,hi8(0)
 1288                   .L107:
 1290                   .LM162:
 1291 05e6 C19A                 sbi 56-0x20,1
 1293                   .LM163:
 1294 05e8 81E0                 ldi r24,lo8(1)
 1295 05ea 90E0                 ldi r25,hi8(1)
 1296 05ec 00D0                 rcall MessAD
 1297 05ee C397                 sbiw r24,51
 1298 05f0 04F0                 brlt .L108
 1299 05f2 8FEE                 ldi r24,lo8(-17)
 1300 05f4 F822                 and r15,r24
 1301 05f6 00C0                 rjmp .L110
 1302                   .L108:
 1303 05f8 40E1                 ldi r20,lo8(16)
 1304 05fa F42A                 or r15,r20
 1305                   .L110:
 1307                   .LM164:
 1308 05fc 18BA                 out 56-0x20,__zero_reg__
 1310                   .LM165:
 1311 05fe 0F5F                 subi r16,lo8(-(1))
 1312 0600 1F4F                 sbci r17,hi8(-(1))
 1313 0602 0F36                 cpi r16,111
 1314 0604 1105                 cpc r17,__zero_reg__
 1315 0606 01F4                 brne .L107
 1317                   .LM166:
 1318 0608 82B3                 in r24,50-0x20
 1319 060a 877C                 andi r24,lo8(-57)
 1320 060c 82BB                 out 50-0x20,r24
 1321 060e 88B3                 in r24,56-0x20
 1322 0610 817F                 andi r24,lo8(-15)
 1323 0612 88BB                 out 56-0x20,r24
 1325                   .LM167:
 1326                   /* #APP */
 1327 0614 7894                 sei
 1329                   .LM168:
 1330                   /* #NOAPP */
 1331 0616 8091 0000            lds r24,MotorAdresse
 1332 061a FE01                 movw r30,r28
 1333 061c E80F                 add r30,r24
 1334 061e F11D                 adc r31,__zero_reg__
 1335 0620 2181                 ldd r18,Z+1
 1336 0622 84E0                 ldi r24,lo8(4)
 1337 0624 90E0                 ldi r25,hi8(4)
 1338 0626 821B                 sub r24,r18
 1339 0628 9109                 sbc r25,__zero_reg__
 1340 062a 2CE2                 ldi r18,lo8(300)
 1341 062c 31E0                 ldi r19,hi8(300)
 1342 062e AC01                 movw r20,r24
 1343 0630 429F                 mul r20,r18
 1344 0632 C001                 movw r24,r0
 1345 0634 439F                 mul r20,r19
 1346 0636 900D                 add r25,r0
 1347 0638 529F                 mul r21,r18
 1348 063a 900D                 add r25,r0
 1349 063c 1124                 clr r1
 1350 063e 00D0                 rcall Delay_ms
 1352                   .LM169:
 1353 0640 8F2D                 mov r24,r15
 1354 0642 9927                 clr r25
 1355 0644 80FD                 sbrc r24,0
 1356 0646 00C0                 rjmp .L112
 1357 0648 81E4                 ldi r24,lo8(65)
 1358 064a 8CB9                 out 44-0x20,r24
 1359 064c BB24                 clr r11
 1360 064e B394                 inc r11
 1361 0650 00C0                 rjmp .L114
 1362                   .L112:
 1364                   .LM170:
 1365 0652 81FD                 sbrc r24,1
 1366 0654 00C0                 rjmp .L115
 1367 0656 82E4                 ldi r24,lo8(66)
 1368 0658 8CB9                 out 44-0x20,r24
 1369 065a 42E0                 ldi r20,lo8(2)
 1370 065c B42E                 mov r11,r20
 1371 065e 00C0                 rjmp .L114
 1372                   .L115:
 1374                   .LM171:
 1375 0660 82FD                 sbrc r24,2
 1376 0662 00C0                 rjmp .L117
 1377 0664 83E4                 ldi r24,lo8(67)
 1378 0666 8CB9                 out 44-0x20,r24
 1379 0668 33E0                 ldi r19,lo8(3)
 1380 066a B32E                 mov r11,r19
 1381 066c 00C0                 rjmp .L114
 1382                   .L117:
 1384                   .LM172:
 1385 066e 83FD                 sbrc r24,3
 1386 0670 00C0                 rjmp .L119
 1387 0672 81E6                 ldi r24,lo8(97)
 1388 0674 8CB9                 out 44-0x20,r24
 1389 0676 24E0                 ldi r18,lo8(4)
 1390 0678 B22E                 mov r11,r18
 1391 067a 00C0                 rjmp .L114
 1392                   .L119:
 1394                   .LM173:
 1395 067c 84FD                 sbrc r24,4
 1396 067e 00C0                 rjmp .L121
 1397 0680 82E6                 ldi r24,lo8(98)
 1398 0682 8CB9                 out 44-0x20,r24
 1399 0684 95E0                 ldi r25,lo8(5)
 1400 0686 B92E                 mov r11,r25
 1401 0688 00C0                 rjmp .L114
 1402                   .L121:
 1404                   .LM174:
 1405 068a 85FD                 sbrc r24,5
 1406 068c 00C0                 rjmp .L123
 1407 068e 83E6                 ldi r24,lo8(99)
 1408 0690 8CB9                 out 44-0x20,r24
 1409 0692 86E0                 ldi r24,lo8(6)
 1410 0694 B82E                 mov r11,r24
 1411 0696 00C0                 rjmp .L114
 1412                   .L123:
 1414                   .LM175:
 1415 0698 BB20                 tst r11
 1416 069a 01F0                 breq .L125
 1417                   .L114:
 1418 069c 88EE                 ldi r24,lo8(1000)
 1419 069e 93E0                 ldi r25,hi8(1000)
 1420 06a0 00D0                 rcall Delay_ms
 1421                   .L125:
 1423                   .LM176:
 1424 06a2 8B2D                 mov r24,r11
 1425 06a4 00D0                 rcall RotBlink
 1427                   .LM177:
 1428 06a6 8EE2                 ldi r24,lo8(46)
 1429 06a8 00D0                 rcall uart_putchar
 1430                   /* epilogue: frame size=5 */
 1431 06aa 2596                 adiw r28,5
 1432 06ac 0FB6                 in __tmp_reg__,__SREG__
 1433 06ae F894                 cli
 1434 06b0 DEBF                 out __SP_H__,r29
 1435 06b2 0FBE                 out __SREG__,__tmp_reg__
 1436 06b4 CDBF                 out __SP_L__,r28
 1437 06b6 DF91                 pop r29
 1438 06b8 CF91                 pop r28
 1439 06ba 1F91                 pop r17
 1440 06bc 0F91                 pop r16
 1441 06be FF90                 pop r15
 1442 06c0 EF90                 pop r14
 1443 06c2 DF90                 pop r13
 1444 06c4 CF90                 pop r12
 1445 06c6 BF90                 pop r11
 1446 06c8 9F90                 pop r9
 1447 06ca 8F90                 pop r8
 1448 06cc 0895                 ret
 1449                   /* epilogue end (size=18) */
 1450                   /* function MotorTon size 607 (570) */
 1460                   .Lscope9:
 1462                           .stabd  78,0,0
 1465                   .global Anwerfen
 1467                   Anwerfen:
 1468                           .stabd  46,0,0
 1470                   .LM178:
 1471                   .LFBB10:
 1472                   /* prologue: frame size=0 */
 1473 06ce AF92                 push r10
 1474 06d0 BF92                 push r11
 1475 06d2 CF92                 push r12
 1476 06d4 DF92                 push r13
 1477 06d6 EF92                 push r14
 1478 06d8 FF92                 push r15
 1479 06da 0F93                 push r16
 1480 06dc 1F93                 push r17
 1481 06de CF93                 push r28
 1482 06e0 DF93                 push r29
 1483                   /* prologue end (size=10) */
 1484 06e2 182F                 mov r17,r24
 1486                   .LM179:
 1487 06e4 1092 0000            sts CompInterruptFreigabe,__zero_reg__
 1488 06e8 4398                 cbi 40-0x20,3
 1490                   .LM180:
 1491 06ea 85E0                 ldi r24,lo8(5)
 1492 06ec 90E0                 ldi r25,hi8(5)
 1493 06ee 9093 0000            sts (PWM)+1,r25
 1494 06f2 8093 0000            sts PWM,r24
 1496                   .LM181:
 1497 06f6 00D0                 rcall SetPWM
 1499                   .LM182:
 1500 06f8 00D0                 rcall Manuell
 1502                   .LM183:
 1503 06fa 88EC                 ldi r24,lo8(200)
 1504 06fc 90E0                 ldi r25,hi8(200)
 1505 06fe 00D0                 rcall Delay_ms
 1507                   .LM184:
 1508 0700 C12F                 mov r28,r17
 1509 0702 DD27                 clr r29
 1510 0704 D093 0000            sts (PWM)+1,r29
 1511 0708 C093 0000            sts PWM,r28
 1512 070c 1CE2                 ldi r17,lo8(300)
 1513 070e A12E                 mov r10,r17
 1514 0710 11E0                 ldi r17,hi8(300)
 1515 0712 B12E                 mov r11,r17
 1516 0714 C12C                 mov r12,__zero_reg__
 1517 0716 D12C                 mov r13,__zero_reg__
 1518                   .L160:
 1520                   .LM185:
 1521 0718 EE24                 clr r14
 1522 071a FF24                 clr r15
 1523 071c 8701                 movw r16,r14
 1524 071e 00C0                 rjmp .L147
 1525                   .L148:
 1527                   .LM186:
 1528 0720 8091 0000            lds r24,UebertragungAbgeschlossen
 1529 0724 8823                 tst r24
 1530 0726 01F4                 brne .L149
 1531 0728 00D0                 rcall SendUart
 1532 072a 00C0                 rjmp .L151
 1533                   .L149:
 1535                   .LM187:
 1536 072c 00D0                 rcall DatenUebertragung
 1537                   .L151:
 1539                   .LM188:
 1540 072e 84E6                 ldi r24,lo8(100)
 1541 0730 00D0                 rcall Wait
 1543                   .LM189:
 1544 0732 0894                 sec
 1545 0734 E11C                 adc r14,__zero_reg__
 1546 0736 F11C                 adc r15,__zero_reg__
 1547 0738 011D                 adc r16,__zero_reg__
 1548 073a 111D                 adc r17,__zero_reg__
 1549                   .L147:
 1550 073c EA14                 cp r14,r10
 1551 073e FB04                 cpc r15,r11
 1552 0740 0C05                 cpc r16,r12
 1553 0742 1D05                 cpc r17,r13
 1554 0744 01F4                 brne .L148
 1556                   .LM190:
 1557 0746 C601                 movw r24,r12
 1558 0748 B501                 movw r22,r10
 1559 074a 2FE0                 ldi r18,lo8(15)
 1560 074c 30E0                 ldi r19,hi8(15)
 1561 074e 40E0                 ldi r20,hlo8(15)
 1562 0750 50E0                 ldi r21,hhi8(15)
 1563 0752 00D0                 rcall __udivmodsi4
 1564 0754 A21A                 sub r10,r18
 1565 0756 B30A                 sbc r11,r19
 1566 0758 C40A                 sbc r12,r20
 1567 075a D50A                 sbc r13,r21
 1568 075c 0894                 sec
 1569 075e A108                 sbc r10,__zero_reg__
 1570 0760 B108                 sbc r11,__zero_reg__
 1571 0762 C108                 sbc r12,__zero_reg__
 1572 0764 D108                 sbc r13,__zero_reg__
 1574                   .LM191:
 1575 0766 89E1                 ldi r24,lo8(25)
 1576 0768 A816                 cp r10,r24
 1577 076a B104                 cpc r11,__zero_reg__
 1578 076c C104                 cpc r12,__zero_reg__
 1579 076e D104                 cpc r13,__zero_reg__
 1580 0770 00F0                 brlo .L156
 1582                   .LM192:
 1583 0772 00D0                 rcall Manuell
 1585                   .LM193:
 1586 0774 8091 0000            lds r24,Phase
 1587 0778 8F5F                 subi r24,lo8(-(1))
 1588 077a 8093 0000            sts Phase,r24
 1590                   .LM194:
 1591 077e 8091 0000            lds r24,Phase
 1592 0782 66E0                 ldi r22,lo8(6)
 1593 0784 00D0                 rcall __udivmodqi4
 1594 0786 9093 0000            sts Phase,r25
 1596                   .LM195:
 1597 078a 00D0                 rcall AdConvert
 1599                   .LM196:
 1600 078c D093 0000            sts (PWM)+1,r29
 1601 0790 C093 0000            sts PWM,r28
 1603                   .LM197:
 1604 0794 00D0                 rcall SetPWM
 1606                   .LM198:
 1607 0796 449B                 sbis 40-0x20,4
 1608 0798 00C0                 rjmp .L160
 1610                   .LM199:
 1611 079a 82B3                 in r24,50-0x20
 1612 079c 8058                 subi r24,lo8(-(-128))
 1613 079e 82BB                 out 50-0x20,r24
 1614 07a0 00C0                 rjmp .L160
 1615                   .L156:
 1616                   /* epilogue: frame size=0 */
 1617 07a2 DF91                 pop r29
 1618 07a4 CF91                 pop r28
 1619 07a6 1F91                 pop r17
 1620 07a8 0F91                 pop r16
 1621 07aa FF90                 pop r15
 1622 07ac EF90                 pop r14
 1623 07ae DF90                 pop r13
 1624 07b0 CF90                 pop r12
 1625 07b2 BF90                 pop r11
 1626 07b4 AF90                 pop r10
 1627 07b6 0895                 ret
 1628                   /* epilogue end (size=11) */
 1629                   /* function Anwerfen size 117 (96) */
 1635                   .Lscope10:
 1637                           .stabd  78,0,0
 1639                   .global main
 1641                   main:
 1642                           .stabd  46,0,0
 509:src/main.c    **** }
 510:src/main.c    **** 
 511:src/main.c    **** 
 512:src/main.c    **** //############################################################################
 513:src/main.c    **** //Hauptprogramm
 514:src/main.c    **** int main (void)
 515:src/main.c    **** //############################################################################
 516:src/main.c    **** {
 1644                   .LM200:
 1645                   .LFBB11:
 1646                   /* prologue: frame size=0 */
 1647 07b8 C0E0                 ldi r28,lo8(__stack - 0)
 1648 07ba D0E0                 ldi r29,hi8(__stack - 0)
 1649 07bc DEBF                 out __SP_H__,r29
 1650 07be CDBF                 out __SP_L__,r28
 1651                   /* prologue end (size=4) */
 517:src/main.c    ****     char altPhase = 0;
 518:src/main.c    ****     int test = 0;
 519:src/main.c    ****     unsigned int MinUpmPulse,Blink,TestschubTimer;
 520:src/main.c    ****     unsigned int Blink2,MittelstromTimer,DrehzahlMessTimer,MotorGestopptTimer;
 521:src/main.c    **** 
 522:src/main.c    ****     DDRC  = 0x08;
 1653                   .LM201:
 1654 07c0 88E0                 ldi r24,lo8(8)
 1655 07c2 84BB                 out 52-0x20,r24
 523:src/main.c    ****     PORTC = 0x08;
 1657                   .LM202:
 1658 07c4 85BB                 out 53-0x20,r24
 524:src/main.c    ****     DDRD  = 0xBA;
 1660                   .LM203:
 1661 07c6 8AEB                 ldi r24,lo8(-70)
 1662 07c8 81BB                 out 49-0x20,r24
 525:src/main.c    ****     PORTD = 0x00;
 1664                   .LM204:
 1665 07ca 12BA                 out 50-0x20,__zero_reg__
 526:src/main.c    ****     DDRB  = 0x0E;
 1667                   .LM205:
 1668 07cc 8EE0                 ldi r24,lo8(14)
 1669 07ce 87BB                 out 55-0x20,r24
 527:src/main.c    ****     PORTB = 0x31;
 1671                   .LM206:
 1672 07d0 81E3                 ldi r24,lo8(49)
 1673 07d2 88BB                 out 56-0x20,r24
 528:src/main.c    ****         
 529:src/main.c    **** #if (MOTORADRESSE == 0)
 530:src/main.c    ****     PORTB |= (ADR1 + ADR2);   // Pullups für Adresswahl
 1675                   .LM207:
 1676 07d4 88B3                 in r24,56-0x20
 1677 07d6 806C                 ori r24,lo8(-64)
 1678 07d8 88BB                 out 56-0x20,r24
 531:src/main.c    ****     for(test=0;test<500;test++);
 532:src/main.c    ****     if (PINB & ADR1)
 1680                   .LM208:
 1681 07da B69B                 sbis 54-0x20,6
 1682 07dc 00C0                 rjmp .L162
 533:src/main.c    ****          {
 534:src/main.c    ****            if (PINB & ADR2) MotorAdresse = 1;
 1684                   .LM209:
 1685 07de B79B                 sbis 54-0x20,7
 1686 07e0 00C0                 rjmp .L164
 1687 07e2 81E0                 ldi r24,lo8(1)
 1688 07e4 00C0                 rjmp .L220
 1689                   .L164:
 535:src/main.c    ****             else MotorAdresse = 2;
 1691                   .LM210:
 1692 07e6 82E0                 ldi r24,lo8(2)
 1693 07e8 00C0                 rjmp .L220
 1694                   .L162:
 536:src/main.c    ****          }
 537:src/main.c    ****          else
 538:src/main.c    ****          {
 539:src/main.c    ****            if (PINB & ADR2) MotorAdresse = 3;
 1696                   .LM211:
 1697 07ea B79B                 sbis 54-0x20,7
 1698 07ec 00C0                 rjmp .L167
 1699 07ee 83E0                 ldi r24,lo8(3)
 1700 07f0 00C0                 rjmp .L220
 1701                   .L167:
 540:src/main.c    ****             else MotorAdresse = 4;
 1703                   .LM212:
 1704 07f2 84E0                 ldi r24,lo8(4)
 1705                   .L220:
 1706 07f4 8093 0000            sts MotorAdresse,r24
 541:src/main.c    ****          }
 542:src/main.c    **** #else
 543:src/main.c    ****     MotorAdresse  = MOTORADRESSE;
 544:src/main.c    **** #endif
 545:src/main.c    ****     
 546:src/main.c    ****     UART_Init();
 1708                   .LM213:
 1709 07f8 00D0                 rcall UART_Init
 547:src/main.c    ****     Timer0_Init();
 1711                   .LM214:
 1712 07fa 00D0                 rcall Timer0_Init
 548:src/main.c    ****     sei();//Globale Interrupts Einschalten
 1714                   .LM215:
 1715                   /* #APP */
 1716 07fc 7894                 sei
 549:src/main.c    ****     
 550:src/main.c    ****     // Am Blinken erkennt man die richtige Motoradresse
 551:src/main.c    **** /*
 552:src/main.c    ****     for(test=0;test<5;test++)
 553:src/main.c    ****         {
 554:src/main.c    ****         if(test == MotorAdresse) PORTD |= GRUEN;
 555:src/main.c    ****         Delay_ms(150);
 556:src/main.c    ****         PORTD &= ~GRUEN;
 557:src/main.c    ****         Delay_ms(250);
 558:src/main.c    ****         }       
 559:src/main.c    **** 
 560:src/main.c    ****     Delay_ms(500);
 561:src/main.c    **** */   
 562:src/main.c    ****    // UART_Init();  // war doppelt
 563:src/main.c    ****     PWM_Init(); 
 1718                   .LM216:
 1719                   /* #NOAPP */
 1720 07fe 00D0                 rcall PWM_Init
 564:src/main.c    **** 
 565:src/main.c    ****     InitIC2_Slave(0x50);                            
 1722                   .LM217:
 1723 0800 80E5                 ldi r24,lo8(80)
 1724 0802 00D0                 rcall InitIC2_Slave
 566:src/main.c    ****     InitPPM();
 1726                   .LM218:
 1727 0804 00D0                 rcall InitPPM
 567:src/main.c    **** 
 568:src/main.c    ****     Blink             = SetDelay(101);    
 1729                   .LM219:
 1730 0806 85E6                 ldi r24,lo8(101)
 1731 0808 90E0                 ldi r25,hi8(101)
 1732 080a 00D0                 rcall SetDelay
 569:src/main.c    ****     Blink2            = SetDelay(102);
 1734                   .LM220:
 1735 080c 86E6                 ldi r24,lo8(102)
 1736 080e 90E0                 ldi r25,hi8(102)
 1737 0810 00D0                 rcall SetDelay
 570:src/main.c    ****     MinUpmPulse       = SetDelay(103);
 1739                   .LM221:
 1740 0812 87E6                 ldi r24,lo8(103)
 1741 0814 90E0                 ldi r25,hi8(103)
 1742 0816 00D0                 rcall SetDelay
 1743 0818 EC01                 movw r28,r24
 571:src/main.c    ****     MittelstromTimer  = SetDelay(254);
 1745                   .LM222:
 1746 081a 8EEF                 ldi r24,lo8(254)
 1747 081c 90E0                 ldi r25,hi8(254)
 1748 081e 00D0                 rcall SetDelay
 1749 0820 6C01                 movw r12,r24
 572:src/main.c    ****     DrehzahlMessTimer = SetDelay(1005);
 1751                   .LM223:
 1752 0822 8DEE                 ldi r24,lo8(1005)
 1753 0824 93E0                 ldi r25,hi8(1005)
 1754 0826 00D0                 rcall SetDelay
 1755 0828 8C01                 movw r16,r24
 573:src/main.c    ****     TestschubTimer    = SetDelay(1006);
 1757                   .LM224:
 1758 082a 8EEE                 ldi r24,lo8(1006)
 1759 082c 93E0                 ldi r25,hi8(1006)
 1760 082e 00D0                 rcall SetDelay
 1761 0830 00C0                 rjmp .L169
 1762                   .L170:
 574:src/main.c    ****     while(!CheckDelay(MinUpmPulse))
 575:src/main.c    ****     {
 576:src/main.c    ****      if(SollwertErmittlung()) break;
 1764                   .LM225:
 1765 0832 00D0                 rcall SollwertErmittlung
 1766 0834 8823                 tst r24
 1767 0836 01F4                 brne .L171
 1768                   .L169:
 1770                   .LM226:
 1771 0838 CE01                 movw r24,r28
 1772 083a 00D0                 rcall CheckDelay
 1773 083c 8823                 tst r24
 1774 083e 01F0                 breq .L170
 1775                   .L171:
 577:src/main.c    ****     }
 578:src/main.c    ****     ;
 579:src/main.c    ****     PORTD |= GRUEN;
 1777                   .LM227:
 1778 0840 979A                 sbi 50-0x20,7
 580:src/main.c    ****     PWM = 0;
 1780                   .LM228:
 1781 0842 1092 0000            sts (PWM)+1,__zero_reg__
 1782 0846 1092 0000            sts PWM,__zero_reg__
 581:src/main.c    **** 
 582:src/main.c    ****     SetPWM();
 1784                   .LM229:
 1785 084a 00D0                 rcall SetPWM
 583:src/main.c    **** 
 584:src/main.c    ****     SFIOR = 0x08;  // Analog Comperator ein
 1787                   .LM230:
 1788 084c 88E0                 ldi r24,lo8(8)
 1789 084e 80BF                 out 80-0x20,r24
 585:src/main.c    ****     ADMUX = 1; 
 1791                   .LM231:
 1792 0850 81E0                 ldi r24,lo8(1)
 1793 0852 87B9                 out 39-0x20,r24
 586:src/main.c    **** 
 587:src/main.c    ****     MinUpmPulse = SetDelay(10);
 1795                   .LM232:
 1796 0854 8AE0                 ldi r24,lo8(10)
 1797 0856 90E0                 ldi r25,hi8(10)
 1798 0858 00D0                 rcall SetDelay
 1799 085a EC01                 movw r28,r24
 588:src/main.c    ****     DebugOut.Analog[1] = 1;
 1801                   .LM233:
 1802 085c 81E0                 ldi r24,lo8(1)
 1803 085e 90E0                 ldi r25,hi8(1)
 1804 0860 9093 0000            sts (DebugOut+20)+1,r25
 1805 0864 8093 0000            sts DebugOut+20,r24
 589:src/main.c    ****     PPM_Signal = 0;
 1807                   .LM234:
 1808 0868 1092 0000            sts (PPM_Signal)+1,__zero_reg__
 1809 086c 1092 0000            sts PPM_Signal,__zero_reg__
 590:src/main.c    **** 
 591:src/main.c    ****     if(!SollwertErmittlung()) MotorTon();
 1811                   .LM235:
 1812 0870 00D0                 rcall SollwertErmittlung
 1813 0872 8823                 tst r24
 1814 0874 01F4                 brne .L172
 1815 0876 00D0                 rcall MotorTon
 1816                   .L172:
 592:src/main.c    **** //MotorTon();    
 593:src/main.c    ****     PORTB = 0x31; // Pullups wieder einschalten
 1818                   .LM236:
 1819 0878 81E3                 ldi r24,lo8(49)
 1820 087a 88BB                 out 56-0x20,r24
 1821 087c EE24                 clr r14
 1822                   .L222:
 594:src/main.c    **** 
 595:src/main.c    ****     // zum Test der Hardware; Motor dreht mit konstanter Drehzahl ohne Regelung
 596:src/main.c    ****     if(TEST_MANUELL)    Anwerfen(TEST_MANUELL);  // kommt von dort nicht wieder
 597:src/main.c    **** 
 598:src/main.c    ****     while (1)
 599:src/main.c    ****         {
 600:src/main.c    **** //ShowSense();
 601:src/main.c    **** 
 602:src/main.c    ****         if(!TEST_SCHUB)   PWM = SollwertErmittlung();
 1824                   .LM237:
 1825 087e 00D0                 rcall SollwertErmittlung
 1826 0880 9927                 clr r25
 1827 0882 9093 0000            sts (PWM)+1,r25
 1828 0886 8093 0000            sts PWM,r24
 603:src/main.c    ****         //I2C_TXBuffer = PWM; // Antwort über I2C-Bus
 604:src/main.c    ****         if(MANUELL_PWM)   PWM = MANUELL_PWM;
 605:src/main.c    **** 
 606:src/main.c    ****         // ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
 607:src/main.c    ****         if(Phase != altPhase)   // es gab eine Kommutierung im Interrupt
 1830                   .LM238:
 1831 088a 8091 0000            lds r24,Phase
 1832 088e 8E15                 cp r24,r14
 1833 0890 01F0                 breq .L175
 608:src/main.c    ****             {
 609:src/main.c    ****             MotorGestoppt = 0;
 1835                   .LM239:
 1836 0892 1092 0000            sts MotorGestoppt,__zero_reg__
 610:src/main.c    ****             ZeitFuerBerechnungen = 0;    // direkt nach einer Kommutierung ist Zeit 
 1838                   .LM240:
 1839 0896 1092 0000            sts ZeitFuerBerechnungen,__zero_reg__
 611:src/main.c    ****             MinUpmPulse = SetDelay(250);  // Timeout, falls ein Motor stehen bleibt
 1841                   .LM241:
 1842 089a 8AEF                 ldi r24,lo8(250)
 1843 089c 90E0                 ldi r25,hi8(250)
 1844 089e 00D0                 rcall SetDelay
 1845 08a0 EC01                 movw r28,r24
 612:src/main.c    ****             altPhase = Phase;
 1847                   .LM242:
 1848 08a2 E090 0000            lds r14,Phase
 1849                   .L175:
 613:src/main.c    ****             }
 614:src/main.c    ****         // ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
 615:src/main.c    ****         if(!PWM)    // Sollwert == 0
 1851                   .LM243:
 1852 08a6 8091 0000            lds r24,PWM
 1853 08aa 9091 0000            lds r25,(PWM)+1
 1854 08ae 892B                 or r24,r25
 1855 08b0 01F4                 brne .L177
 616:src/main.c    ****             {
 617:src/main.c    ****             MotorAnwerfen = 0;      // kein Startversuch
 1857                   .LM244:
 1858 08b2 1092 0000            sts MotorAnwerfen,__zero_reg__
 618:src/main.c    ****             ZeitFuerBerechnungen = 0;
 1860                   .LM245:
 1861 08b6 1092 0000            sts ZeitFuerBerechnungen,__zero_reg__
 619:src/main.c    ****             // nach 1,5 Sekunden den Motor als gestoppt betrachten 
 620:src/main.c    ****             if(CheckDelay(MotorGestopptTimer)) 
 1863                   .LM246:
 1864 08ba C501                 movw r24,r10
 1865 08bc 00D0                 rcall CheckDelay
 1866 08be 8823                 tst r24
 1867 08c0 01F0                 breq .L179
 621:src/main.c    ****                 {
 622:src/main.c    ****                 DISABLE_SENSE_INT;
 1869                   .LM247:
 1870 08c2 1092 0000            sts CompInterruptFreigabe,__zero_reg__
 1871 08c6 4398                 cbi 40-0x20,3
 623:src/main.c    ****                 MotorGestoppt = 1;  
 1873                   .LM248:
 1874 08c8 91E0                 ldi r25,lo8(1)
 1875 08ca 9093 0000            sts MotorGestoppt,r25
 624:src/main.c    ****                 STEUER_OFF;
 1877                   .LM249:
 1878 08ce 82B3                 in r24,50-0x20
 1879 08d0 877C                 andi r24,lo8(-57)
 1880 08d2 82BB                 out 50-0x20,r24
 1881 08d4 9FBD                 out 79-0x20,r25
 1882 08d6 81E4                 ldi r24,lo8(65)
 1883 08d8 85BD                 out 69-0x20,r24
 1884 08da 8EE0                 ldi r24,lo8(14)
 1885 08dc 87BB                 out 55-0x20,r24
 1886 08de 88B3                 in r24,56-0x20
 1887 08e0 817F                 andi r24,lo8(-15)
 1888 08e2 88BB                 out 56-0x20,r24
 1889 08e4 00C0                 rjmp .L179
 1890                   .L177:
 625:src/main.c    ****                 } 
 626:src/main.c    ****             }
 627:src/main.c    ****         else 
 628:src/main.c    ****             {
 629:src/main.c    ****             if(MotorGestoppt) MotorAnwerfen = 1;        // Startversuch
 1892                   .LM250:
 1893 08e6 8091 0000            lds r24,MotorGestoppt
 1894 08ea 8823                 tst r24
 1895 08ec 01F0                 breq .L181
 1896 08ee 81E0                 ldi r24,lo8(1)
 1897 08f0 8093 0000            sts MotorAnwerfen,r24
 1898                   .L181:
 630:src/main.c    ****             MotorGestopptTimer = SetDelay(1500);
 1900                   .LM251:
 1901 08f4 8CED                 ldi r24,lo8(1500)
 1902 08f6 95E0                 ldi r25,hi8(1500)
 1903 08f8 00D0                 rcall SetDelay
 1904 08fa 5C01                 movw r10,r24
 1905                   .L179:
 631:src/main.c    ****             }
 632:src/main.c    **** 
 633:src/main.c    ****         if(MotorGestoppt && !TEST_SCHUB) PWM = 0;
 1907                   .LM252:
 1908 08fc 8091 0000            lds r24,MotorGestoppt
 1909 0900 8823                 tst r24
 1910 0902 01F0                 breq .L183
 1911 0904 1092 0000            sts (PWM)+1,__zero_reg__
 1912 0908 1092 0000            sts PWM,__zero_reg__
 1913                   .L183:
 634:src/main.c    ****         SetPWM();
 1915                   .LM253:
 1916 090c 00D0                 rcall SetPWM
 635:src/main.c    ****         // +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
 636:src/main.c    ****         if(!ZeitFuerBerechnungen++)
 1918                   .LM254:
 1919 090e 8091 0000            lds r24,ZeitFuerBerechnungen
 1920 0912 8F5F                 subi r24,lo8(-(1))
 1921 0914 8093 0000            sts ZeitFuerBerechnungen,r24
 1922 0918 8130                 cpi r24,lo8(1)
 1923 091a 01F0                 breq .+2
 1924 091c 00C0                 rjmp .L222
 637:src/main.c    ****             {
 638:src/main.c    ****             if(MotorGestoppt) PORTD |= GRUEN; //else PORTD &= ~GRUEN;
 1926                   .LM255:
 1927 091e 8091 0000            lds r24,MotorGestoppt
 1928 0922 8111                 cpse r24,__zero_reg__
 1929 0924 979A                 sbi 50-0x20,7
 1930                   .L186:
 639:src/main.c    ****             if(SIO_DEBUG)
 640:src/main.c    ****                 {
 641:src/main.c    ****                 DebugAusgaben();  // welche Werte sollen angezeigt werden?
 642:src/main.c    ****                 if(!UebertragungAbgeschlossen)  SendUart(); 
 643:src/main.c    ****                 else DatenUebertragung();
 644:src/main.c    ****                 }
 645:src/main.c    ****             // Berechnen des Mittleren Stroms zur (langsamen) Strombegrenzung
 646:src/main.c    ****             if(CheckDelay(MittelstromTimer))   
 1932                   .LM256:
 1933 0926 C601                 movw r24,r12
 1934 0928 00D0                 rcall CheckDelay
 1935 092a 8823                 tst r24
 1936 092c 01F0                 breq .L188
 647:src/main.c    ****                 {
 648:src/main.c    ****                 MittelstromTimer = SetDelay(50); // alle 50ms
 1938                   .LM257:
 1939 092e 82E3                 ldi r24,lo8(50)
 1940 0930 90E0                 ldi r25,hi8(50)
 1941 0932 00D0                 rcall SetDelay
 1942 0934 6C01                 movw r12,r24
 649:src/main.c    ****                 if(Mittelstrom <  Strom) Mittelstrom++;// Mittelwert des Stroms bilden
 1944                   .LM258:
 1945 0936 8091 0000            lds r24,Mittelstrom
 1946 093a 482F                 mov r20,r24
 1947 093c 5527                 clr r21
 1948 093e 2091 0000            lds r18,Strom
 1949 0942 3091 0000            lds r19,(Strom)+1
 1950 0946 4217                 cp r20,r18
 1951 0948 5307                 cpc r21,r19
 1952 094a 00F4                 brsh .L190
 1953 094c 8F5F                 subi r24,lo8(-(1))
 1954 094e 00C0                 rjmp .L221
 1955                   .L190:
 650:src/main.c    ****                 else if(Mittelstrom >  Strom) Mittelstrom--;
 1957                   .LM259:
 1958 0950 2417                 cp r18,r20
 1959 0952 3507                 cpc r19,r21
 1960 0954 00F4                 brsh .L192
 1961 0956 8150                 subi r24,lo8(-(-1))
 1962                   .L221:
 1963 0958 8093 0000            sts Mittelstrom,r24
 1964                   .L192:
 651:src/main.c    ****                 if(Strom > MAX_STROM) MaxPWM -= MaxPWM / 32;               
 1966                   .LM260:
 1967 095c 293C                 cpi r18,201
 1968 095e 3105                 cpc r19,__zero_reg__
 1969 0960 00F0                 brlo .L194
 1970 0962 8091 0000            lds r24,MaxPWM
 1971 0966 982F                 mov r25,r24
 1972 0968 9295                 swap r25
 1973 096a 9695                 lsr r25
 1974 096c 9770                 andi r25,0x7
 1975 096e 891B                 sub r24,r25
 1976 0970 8093 0000            sts MaxPWM,r24
 1977                   .L194:
 652:src/main.c    ****                 if((Mittelstrom > LIMIT_STROM))// Strom am Limit?
 1979                   .LM261:
 1980 0974 8091 0000            lds r24,Mittelstrom
 1981 0978 9091 0000            lds r25,MaxPWM
 1982 097c 8937                 cpi r24,lo8(121)
 1983 097e 00F0                 brlo .L196
 653:src/main.c    ****                     {
 654:src/main.c    ****                     if(MaxPWM) MaxPWM--;// dann die Maximale PWM herunterfahren
 1985                   .LM262:
 1986 0980 9923                 tst r25
 1987 0982 01F0                 breq .L198
 1988 0984 9150                 subi r25,lo8(-(-1))
 1989 0986 9093 0000            sts MaxPWM,r25
 1990                   .L198:
 655:src/main.c    ****                     PORTC |= ROT; 
 1992                   .LM263:
 1993 098a AB9A                 sbi 53-0x20,3
 1994 098c 00C0                 rjmp .L188
 1995                   .L196:
 656:src/main.c    ****                     }
 657:src/main.c    ****                 else 
 658:src/main.c    ****                     {
 659:src/main.c    ****                     if(MaxPWM < MAX_PWM) MaxPWM++;
 1997                   .LM264:
 1998 098e 9F3F                 cpi r25,lo8(-1)
 1999 0990 01F0                 breq .L188
 2000 0992 9F5F                 subi r25,lo8(-(1))
 2001 0994 9093 0000            sts MaxPWM,r25
 2002                   .L188:
 660:src/main.c    ****                     }
 661:src/main.c    ****                 }
 662:src/main.c    **** 
 663:src/main.c    ****             if(CheckDelay(DrehzahlMessTimer))   // Ist-Drehzahl bestimmen
 2004                   .LM265:
 2005 0998 C801                 movw r24,r16
 2006 099a 00D0                 rcall CheckDelay
 2007 099c 8823                 tst r24
 2008 099e 01F0                 breq .L201
 664:src/main.c    ****                 {
 665:src/main.c    ****                 DrehzahlMessTimer = SetDelay(10);
 2010                   .LM266:
 2011 09a0 8AE0                 ldi r24,lo8(10)
 2012 09a2 90E0                 ldi r25,hi8(10)
 2013 09a4 00D0                 rcall SetDelay
 2014 09a6 8C01                 movw r16,r24
 666:src/main.c    ****                 SIO_Drehzahl = CntKommutierungen;//(6 * CntKommutierungen) / (POLANZAHL / 2);
 2016                   .LM267:
 2017 09a8 8091 0000            lds r24,CntKommutierungen
 2018 09ac 9091 0000            lds r25,(CntKommutierungen)+1
 2019 09b0 9093 0000            sts (SIO_Drehzahl)+1,r25
 2020 09b4 8093 0000            sts SIO_Drehzahl,r24
 667:src/main.c    ****                 CntKommutierungen = 0;
 2022                   .LM268:
 2023 09b8 1092 0000            sts (CntKommutierungen)+1,__zero_reg__
 2024 09bc 1092 0000            sts CntKommutierungen,__zero_reg__
 668:src/main.c    ****                 if(PPM_Timeout == 0) // keine PPM-Signale
 2026                   .LM269:
 2027 09c0 8091 0000            lds r24,PPM_Timeout
 2028 09c4 8823                 tst r24
 2029 09c6 01F4                 brne .L201
 669:src/main.c    ****                 ZeitZumAdWandeln = 1;
 2031                   .LM270:
 2032 09c8 81E0                 ldi r24,lo8(1)
 2033 09ca 8093 0000            sts ZeitZumAdWandeln,r24
 2034                   .L201:
 670:src/main.c    ****                 }
 671:src/main.c    **** 
 672:src/main.c    ****           if(TEST_SCHUB)
 673:src/main.c    ****            {
 674:src/main.c    ****             if(CheckDelay(TestschubTimer))  
 675:src/main.c    ****                 {
 676:src/main.c    ****                 TestschubTimer = SetDelay(1500);
 677:src/main.c    ****                     switch(test) 
 678:src/main.c    ****                         {
 679:src/main.c    ****                         case 0: PWM = 50; test++; break;
 680:src/main.c    ****                         case 1: PWM = 130; test++; break;
 681:src/main.c    ****                         case 2: PWM = 60;  test++; break;
 682:src/main.c    ****                         case 3: PWM = 140; test++; break;
 683:src/main.c    ****                         case 4: PWM = 150; test = 0; break;
 684:src/main.c    ****                         default: test = 0;
 685:src/main.c    ****                         } 
 686:src/main.c    ****                 }
 687:src/main.c    ****             }  
 688:src/main.c    ****           // Motor Stehen geblieben
 689:src/main.c    ****             if((CheckDelay(MinUpmPulse) && SIO_Drehzahl == 0) || MotorAnwerfen) 
 2036                   .LM271:
 2037 09ce CE01                 movw r24,r28
 2038 09d0 00D0                 rcall CheckDelay
 2039 09d2 8823                 tst r24
 2040 09d4 01F0                 breq .L204
 2041 09d6 8091 0000            lds r24,SIO_Drehzahl
 2042 09da 9091 0000            lds r25,(SIO_Drehzahl)+1
 2043 09de 892B                 or r24,r25
 2044 09e0 01F0                 breq .L206
 2045                   .L204:
 2046 09e2 8091 0000            lds r24,MotorAnwerfen
 2047 09e6 8823                 tst r24
 2048 09e8 01F4                 brne .+2
 2049 09ea 00C0                 rjmp .L222
 2050                   .L206:
 690:src/main.c    ****                 {
 691:src/main.c    ****                 MotorGestoppt = 1;    
 2052                   .LM272:
 2053 09ec FF24                 clr r15
 2054 09ee F394                 inc r15
 2055 09f0 F092 0000            sts MotorGestoppt,r15
 692:src/main.c    ****                 DISABLE_SENSE_INT;
 2057                   .LM273:
 2058 09f4 1092 0000            sts CompInterruptFreigabe,__zero_reg__
 2059 09f8 4398                 cbi 40-0x20,3
 693:src/main.c    ****                 MinUpmPulse = SetDelay(100);         
 2061                   .LM274:
 2062 09fa 84E6                 ldi r24,lo8(100)
 2063 09fc 90E0                 ldi r25,hi8(100)
 2064 09fe 00D0                 rcall SetDelay
 2065 0a00 EC01                 movw r28,r24
 694:src/main.c    ****                 if(MotorAnwerfen)
 2067                   .LM275:
 2068 0a02 8091 0000            lds r24,MotorAnwerfen
 2069 0a06 8823                 tst r24
 2070 0a08 01F4                 brne .+2
 2071 0a0a 00C0                 rjmp .L222
 695:src/main.c    ****                     {
 696:src/main.c    ****                     PORTC &= ~ROT;
 2073                   .LM276:
 2074 0a0c AB98                 cbi 53-0x20,3
 697:src/main.c    ****                     MotorAnwerfen = 0;
 2076                   .LM277:
 2077 0a0e 1092 0000            sts MotorAnwerfen,__zero_reg__
 698:src/main.c    ****                     Anwerfen(10);
 2079                   .LM278:
 2080 0a12 8AE0                 ldi r24,lo8(10)
 2081 0a14 00D0                 rcall Anwerfen
 699:src/main.c    ****                     PORTD |= GRUEN;
 2083                   .LM279:
 2084 0a16 979A                 sbi 50-0x20,7
 700:src/main.c    ****                     MotorGestoppt = 0;    
 2086                   .LM280:
 2087 0a18 1092 0000            sts MotorGestoppt,__zero_reg__
 701:src/main.c    ****                     Phase--;
 2089                   .LM281:
 2090 0a1c 8091 0000            lds r24,Phase
 2091 0a20 8150                 subi r24,lo8(-(-1))
 2092 0a22 8093 0000            sts Phase,r24
 702:src/main.c    ****                     PWM = 1;
 2094                   .LM282:
 2095 0a26 81E0                 ldi r24,lo8(1)
 2096 0a28 90E0                 ldi r25,hi8(1)
 2097 0a2a 9093 0000            sts (PWM)+1,r25
 2098 0a2e 8093 0000            sts PWM,r24
 703:src/main.c    ****                     SetPWM();
 2100                   .LM283:
 2101 0a32 00D0                 rcall SetPWM
 704:src/main.c    ****                     SENSE_TOGGLE_INT;
 2103                   .LM284:
 2104 0a34 88B1                 in r24,40-0x20
 2105 0a36 8C7F                 andi r24,lo8(-4)
 2106 0a38 88B9                 out 40-0x20,r24
 705:src/main.c    ****                     ENABLE_SENSE_INT;
 2108                   .LM285:
 2109 0a3a F092 0000            sts CompInterruptFreigabe,r15
 2110 0a3e 88B1                 in r24,40-0x20
 2111 0a40 8A60                 ori r24,lo8(10)
 2112 0a42 88B9                 out 40-0x20,r24
 706:src/main.c    ****                     MinUpmPulse = SetDelay(20);
 2114                   .LM286:
 2115 0a44 84E1                 ldi r24,lo8(20)
 2116 0a46 90E0                 ldi r25,hi8(20)
 2117 0a48 00D0                 rcall SetDelay
 2118 0a4a EC01                 movw r28,r24
 2119                   .L208:
 707:src/main.c    ****                     while(!CheckDelay(MinUpmPulse)); // kurz Synchronisieren
 2121                   .LM287:
 2122 0a4c CE01                 movw r24,r28
 2123 0a4e 00D0                 rcall CheckDelay
 2124 0a50 8823                 tst r24
 2125 0a52 01F0                 breq .L208
 708:src/main.c    ****                     PWM = 15;
 2127                   .LM288:
 2128 0a54 8FE0                 ldi r24,lo8(15)
 2129 0a56 90E0                 ldi r25,hi8(15)
 2130 0a58 9093 0000            sts (PWM)+1,r25
 2131 0a5c 8093 0000            sts PWM,r24
 709:src/main.c    ****                     SetPWM();
 2133                   .LM289:
 2134 0a60 00D0                 rcall SetPWM
 710:src/main.c    ****                     MinUpmPulse = SetDelay(300);
 2136                   .LM290:
 2137 0a62 8CE2                 ldi r24,lo8(300)
 2138 0a64 91E0                 ldi r25,hi8(300)
 2139 0a66 00D0                 rcall SetDelay
 2140 0a68 EC01                 movw r28,r24
 2141                   .L210:
 711:src/main.c    ****                     while(!CheckDelay(MinUpmPulse)); // kurz Durchstarten
 2143                   .LM291:
 2144 0a6a CE01                 movw r24,r28
 2145 0a6c 00D0                 rcall CheckDelay
 2146 0a6e 8823                 tst r24
 2147 0a70 01F0                 breq .L210
 712:src/main.c    ****                    
 713:src/main.c    ****                                     // Drehzahlmessung wieder aufsetzen
 714:src/main.c    ****                     DrehzahlMessTimer = SetDelay(50);
 2149                   .LM292:
 2150 0a72 82E3                 ldi r24,lo8(50)
 2151 0a74 90E0                 ldi r25,hi8(50)
 2152 0a76 00D0                 rcall SetDelay
 2153 0a78 8C01                 movw r16,r24
 2154 0a7a 87E0                 ldi r24,lo8(7)
 2155 0a7c E82E                 mov r14,r24
 2156 0a7e 00C0                 rjmp .L222
 2157                   /* epilogue: frame size=0 */
 2158                   /* epilogue: noreturn */
 2159                   /* epilogue end (size=0) */
 2160                   /* function main size 358 (354) */
 2169                   .Lscope11:
 2171                           .stabd  78,0,0
 2172                   .global PWM
 2173                   .global PWM
 2174                           .section .bss
 2177                   PWM:
 2178 0000 0000                 .skip 2,0
 2179                   .global Strom
 2180                   .global Strom
 2183                   Strom:
 2184 0002 0000                 .skip 2,0
 2185                   .global Strom_max
 2186                   .global Strom_max
 2189                   Strom_max:
 2190 0004 00                   .skip 1,0
 2191                   .global Mittelstrom
 2192                   .global Mittelstrom
 2195                   Mittelstrom:
 2196 0005 00                   .skip 1,0
 2197                   .global Drehzahl
 2198                   .global Drehzahl
 2201                   Drehzahl:
 2202 0006 0000                 .skip 2,0
 2203                   .global KommutierDelay
 2204                           .data
 2207                   KommutierDelay:
 2208 0000 0A00                 .word   10
 2209                   .global I2C_Timeout
 2210                   .global I2C_Timeout
 2211                           .section .bss
 2214                   I2C_Timeout:
 2215 0008 0000                 .skip 2,0
 2216                   .global SIO_Timeout
 2217                   .global SIO_Timeout
 2220                   SIO_Timeout:
 2221 000a 0000                 .skip 2,0
 2222                   .global SollDrehzahl
 2223                   .global SollDrehzahl
 2226                   SollDrehzahl:
 2227 000c 0000                 .skip 2,0
 2228                   .global IstDrehzahl
 2229                   .global IstDrehzahl
 2232                   IstDrehzahl:
 2233 000e 0000                 .skip 2,0
 2234                   .global ZeitFuerBerechnungen
 2235                           .data
 2238                   ZeitFuerBerechnungen:
 2239 0002 01                   .byte   1
 2240                   .global MotorAnwerfen
 2241                   .global MotorAnwerfen
 2242                           .section .bss
 2245                   MotorAnwerfen:
 2246 0010 00                   .skip 1,0
 2247                   .global MotorGestoppt
 2248                           .data
 2251                   MotorGestoppt:
 2252 0003 01                   .byte   1
 2253                   .global MaxPWM
 2256                   MaxPWM:
 2257 0004 FF                   .byte   -1
 2258                   .global CntKommutierungen
 2259                   .global CntKommutierungen
 2260                           .section .bss
 2263                   CntKommutierungen:
 2264 0011 0000                 .skip 2,0
 2265                   .global SIO_Drehzahl
 2266                   .global SIO_Drehzahl
 2269                   SIO_Drehzahl:
 2270 0013 0000                 .skip 2,0
 2271                   .global ZeitZumAdWandeln
 2272                           .data
 2275                   ZeitZumAdWandeln:
 2276 0005 01                   .byte   1
 2277                   .global MotorAdresse
 2280                   MotorAdresse:
 2281 0006 01                   .byte   1
 2282                   .global PPM_Betrieb
 2285                   PPM_Betrieb:
 2286 0007 01                   .byte   1
 2287                           .lcomm sollwert.2390,2
 2290                   C.8.2210:
 2291 0008 00                   .byte   0
 2292 0009 00                   .byte   0
 2293 000a 02                   .byte   2
 2294 000b 01                   .byte   1
 2295 000c 03                   .byte   3
 2296                           .comm RuheStrom,2,1
 2297                           .comm DrehZahlTabelle,512,1
 2320                           .text
 2322                   .Letext0:
 2323                   /* File "src/main.c": code 1357 = 0x054d (1282), prologues  36, epilogues  39 */
DEFINED SYMBOLS
                            *ABS*:00000000 main.c
     /tmp/ccPB1ogc.s:2      *ABS*:0000003f __SREG__
     /tmp/ccPB1ogc.s:3      *ABS*:0000003e __SP_H__
     /tmp/ccPB1ogc.s:4      *ABS*:0000003d __SP_L__
     /tmp/ccPB1ogc.s:5      *ABS*:00000000 __tmp_reg__
     /tmp/ccPB1ogc.s:6      *ABS*:00000001 __zero_reg__
     /tmp/ccPB1ogc.s:102    .text:00000000 SetPWM
     /tmp/ccPB1ogc.s:2177   .bss:00000000 PWM
     /tmp/ccPB1ogc.s:2256   .data:00000004 MaxPWM
     /tmp/ccPB1ogc.s:2183   .bss:00000002 Strom
     /tmp/ccPB1ogc.s:170    .text:00000046 PWM_Init
     /tmp/ccPB1ogc.s:203    .text:0000005c Wait
     /tmp/ccPB1ogc.s:237    .text:0000006e Delay
     /tmp/ccPB1ogc.s:259    .text:00000074 SollwertErmittlung
     /tmp/ccPB1ogc.s:2214   .bss:00000008 I2C_Timeout
     /tmp/ccPB1ogc.s:2220   .bss:0000000a SIO_Timeout
                             .bss:00000015 sollwert.2390
     /tmp/ccPB1ogc.s:2285   .data:00000007 PPM_Betrieb
     /tmp/ccPB1ogc.s:430    .text:00000172 DebugAusgaben
     /tmp/ccPB1ogc.s:2195   .bss:00000005 Mittelstrom
     /tmp/ccPB1ogc.s:2269   .bss:00000013 SIO_Drehzahl
     /tmp/ccPB1ogc.s:473    .text:000001b2 RotBlink
     /tmp/ccPB1ogc.s:528    .text:000001d8 DelayM
                            *COM*:00000002 RuheStrom
     /tmp/ccPB1ogc.s:589    .text:00000222 MotorTon
     /tmp/ccPB1ogc.s:2290   .data:00000008 C.8.2210
     /tmp/ccPB1ogc.s:2280   .data:00000006 MotorAdresse
     /tmp/ccPB1ogc.s:2189   .bss:00000004 Strom_max
     /tmp/ccPB1ogc.s:1467   .text:000006ce Anwerfen
     /tmp/ccPB1ogc.s:1641   .text:000007b8 main
     /tmp/ccPB1ogc.s:2251   .data:00000003 MotorGestoppt
     /tmp/ccPB1ogc.s:2238   .data:00000002 ZeitFuerBerechnungen
     /tmp/ccPB1ogc.s:2245   .bss:00000010 MotorAnwerfen
     /tmp/ccPB1ogc.s:2263   .bss:00000011 CntKommutierungen
     /tmp/ccPB1ogc.s:2275   .data:00000005 ZeitZumAdWandeln
     /tmp/ccPB1ogc.s:2201   .bss:00000006 Drehzahl
     /tmp/ccPB1ogc.s:2207   .data:00000000 KommutierDelay
     /tmp/ccPB1ogc.s:2226   .bss:0000000c SollDrehzahl
     /tmp/ccPB1ogc.s:2232   .bss:0000000e IstDrehzahl
                            *COM*:00000200 DrehZahlTabelle

UNDEFINED SYMBOLS
__do_copy_data
__do_clear_bss
SIO_Sollwert
__udivmodhi4
anz_ppm_werte
PPM_Signal
I2C_RXBuffer
DebugOut
Delay_ms
FastADConvert
CompInterruptFreigabe
uart_putchar
MessAD
Manuell
UebertragungAbgeschlossen
SendUart
DatenUebertragung
__udivmodsi4
Phase
__udivmodqi4
AdConvert
__stack
UART_Init
Timer0_Init
InitIC2_Slave
InitPPM
SetDelay
CheckDelay
PPM_Timeout