0,0 → 1,2590 |
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 |