Subversion Repositories BL-Ctrl

Compare Revisions

Ignore whitespace Rev 115 → Rev 116

/branches/V0.41-Hexa/edit/edit/edit.vcproj
0,0 → 1,180
<?xml version="1.0" encoding="gb2312"?>
<VisualStudioProject
ProjectType="Visual C++"
Version="9.00"
Name="edit"
ProjectGUID="{FC7A23A7-7DA9-47A5-8DC3-F474203FAEF9}"
RootNamespace="edit"
TargetFrameworkVersion="196613"
>
<Platforms>
<Platform
Name="Win32"
/>
</Platforms>
<ToolFiles>
</ToolFiles>
<Configurations>
<Configuration
Name="Debug|Win32"
OutputDirectory="$(SolutionDir)$(ConfigurationName)"
IntermediateDirectory="$(ConfigurationName)"
ConfigurationType="1"
CharacterSet="2"
>
<Tool
Name="VCPreBuildEventTool"
/>
<Tool
Name="VCCustomBuildTool"
/>
<Tool
Name="VCXMLDataGeneratorTool"
/>
<Tool
Name="VCWebServiceProxyGeneratorTool"
/>
<Tool
Name="VCMIDLTool"
/>
<Tool
Name="VCCLCompilerTool"
Optimization="0"
MinimalRebuild="true"
BasicRuntimeChecks="3"
RuntimeLibrary="3"
WarningLevel="3"
DebugInformationFormat="4"
/>
<Tool
Name="VCManagedResourceCompilerTool"
/>
<Tool
Name="VCResourceCompilerTool"
/>
<Tool
Name="VCPreLinkEventTool"
/>
<Tool
Name="VCLinkerTool"
GenerateDebugInformation="true"
TargetMachine="1"
/>
<Tool
Name="VCALinkTool"
/>
<Tool
Name="VCManifestTool"
/>
<Tool
Name="VCXDCMakeTool"
/>
<Tool
Name="VCBscMakeTool"
/>
<Tool
Name="VCFxCopTool"
/>
<Tool
Name="VCAppVerifierTool"
/>
<Tool
Name="VCPostBuildEventTool"
/>
</Configuration>
<Configuration
Name="Release|Win32"
OutputDirectory="$(SolutionDir)$(ConfigurationName)"
IntermediateDirectory="$(ConfigurationName)"
ConfigurationType="1"
CharacterSet="2"
WholeProgramOptimization="1"
>
<Tool
Name="VCPreBuildEventTool"
/>
<Tool
Name="VCCustomBuildTool"
/>
<Tool
Name="VCXMLDataGeneratorTool"
/>
<Tool
Name="VCWebServiceProxyGeneratorTool"
/>
<Tool
Name="VCMIDLTool"
/>
<Tool
Name="VCCLCompilerTool"
Optimization="2"
EnableIntrinsicFunctions="true"
RuntimeLibrary="2"
EnableFunctionLevelLinking="true"
WarningLevel="3"
DebugInformationFormat="3"
/>
<Tool
Name="VCManagedResourceCompilerTool"
/>
<Tool
Name="VCResourceCompilerTool"
/>
<Tool
Name="VCPreLinkEventTool"
/>
<Tool
Name="VCLinkerTool"
GenerateDebugInformation="true"
OptimizeReferences="2"
EnableCOMDATFolding="2"
TargetMachine="1"
/>
<Tool
Name="VCALinkTool"
/>
<Tool
Name="VCManifestTool"
/>
<Tool
Name="VCXDCMakeTool"
/>
<Tool
Name="VCBscMakeTool"
/>
<Tool
Name="VCFxCopTool"
/>
<Tool
Name="VCAppVerifierTool"
/>
<Tool
Name="VCPostBuildEventTool"
/>
</Configuration>
</Configurations>
<References>
</References>
<Files>
<Filter
Name="Ô´Îļþ"
Filter="cpp;c;cc;cxx;def;odl;idl;hpj;bat;asm;asmx"
UniqueIdentifier="{4FC737F1-C7A5-4376-A066-2A32D752A2FF}"
>
</Filter>
<Filter
Name="Í·Îļþ"
Filter="h;hpp;hxx;hm;inl;inc;xsd"
UniqueIdentifier="{93995380-89BD-4b04-88EB-625FBE52EBFB}"
>
</Filter>
<Filter
Name="×ÊÔ´Îļþ"
Filter="rc;ico;cur;bmp;dlg;rc2;rct;bin;rgs;gif;jpg;jpeg;jpe;resx;tiff;tif;png;wav"
UniqueIdentifier="{67DA6AB6-F800-4c08-8B7A-83BB121AAD01}"
>
</Filter>
</Files>
<Globals>
</Globals>
</VisualStudioProject>
/branches/V0.41-Hexa/edit/edit.sln
0,0 → 1,20

Microsoft Visual Studio Solution File, Format Version 10.00
# Visual Studio 2008
Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "edit", "edit\edit.vcproj", "{FC7A23A7-7DA9-47A5-8DC3-F474203FAEF9}"
EndProject
Global
GlobalSection(SolutionConfigurationPlatforms) = preSolution
Debug|Win32 = Debug|Win32
Release|Win32 = Release|Win32
EndGlobalSection
GlobalSection(ProjectConfigurationPlatforms) = postSolution
{FC7A23A7-7DA9-47A5-8DC3-F474203FAEF9}.Debug|Win32.ActiveCfg = Debug|Win32
{FC7A23A7-7DA9-47A5-8DC3-F474203FAEF9}.Debug|Win32.Build.0 = Debug|Win32
{FC7A23A7-7DA9-47A5-8DC3-F474203FAEF9}.Release|Win32.ActiveCfg = Release|Win32
{FC7A23A7-7DA9-47A5-8DC3-F474203FAEF9}.Release|Win32.Build.0 = Release|Win32
EndGlobalSection
GlobalSection(SolutionProperties) = preSolution
HideSolutionNode = FALSE
EndGlobalSection
EndGlobal
/branches/V0.41-Hexa/BLMC.lst
0,0 → 1,532
1 .file "BLMC.c"
2 __SREG__ = 0x3f
3 __SP_H__ = 0x3e
4 __SP_L__ = 0x3d
5 __CCP__ = 0x34
6 __tmp_reg__ = 0
7 __zero_reg__ = 1
15 .Ltext0:
16 .global __vector_4
18 __vector_4:
19 .LFB3:
20 .LM1:
21 0000 1F92 push __zero_reg__
22 0002 0F92 push r0
23 0004 0FB6 in r0,__SREG__
24 0006 0F92 push r0
25 0008 1124 clr __zero_reg__
26 /* prologue: Signal */
27 /* frame size = 0 */
28 /* epilogue start */
29 .LM2:
30 000a 0F90 pop r0
31 000c 0FBE out __SREG__,r0
32 000e 0F90 pop r0
33 0010 1F90 pop __zero_reg__
34 0012 1895 reti
35 .LFE3:
37 .global Manuell
39 Manuell:
40 .LFB5:
41 .LM3:
42 /* prologue: function */
43 /* frame size = 0 */
44 .LM4:
45 0014 8091 0000 lds r24,Phase
46 0018 8230 cpi r24,lo8(2)
47 001a 01F0 breq .L7
48 001c 8330 cpi r24,lo8(3)
49 001e 00F4 brsh .L11
50 0020 8823 tst r24
51 0022 01F0 breq .L5
52 0024 8130 cpi r24,lo8(1)
53 0026 01F0 breq .+2
54 0028 00C0 rjmp .L12
55 002a 00C0 rjmp .L15
56 .L11:
57 002c 8430 cpi r24,lo8(4)
58 002e 01F4 brne .+2
59 0030 00C0 rjmp .L9
60 0032 8430 cpi r24,lo8(4)
61 0034 00F0 brlo .L8
62 0036 8530 cpi r24,lo8(5)
63 0038 01F0 breq .+2
64 003a 00C0 rjmp .L12
65 003c 00C0 rjmp .L16
66 .L5:
67 .LM5:
68 003e 81EA ldi r24,lo8(-95)
69 0040 8FBD out 79-32,r24
70 0042 81E6 ldi r24,lo8(97)
71 0044 85BD out 69-32,r24
72 0046 88E0 ldi r24,lo8(8)
73 0048 87BB out 55-32,r24
74 .LM6:
75 004a 82B3 in r24,50-32
76 004c 877D andi r24,lo8(-41)
77 004e 82BB out 50-32,r24
78 0050 949A sbi 50-32,4
79 .LM7:
80 0052 8091 0000 lds r24,IntRef
81 0056 8260 ori r24,lo8(2)
82 0058 00C0 rjmp .L13
83 .L15:
84 .LM8:
85 005a 81EA ldi r24,lo8(-95)
86 005c 8FBD out 79-32,r24
87 005e 81E6 ldi r24,lo8(97)
88 0060 85BD out 69-32,r24
89 0062 88E0 ldi r24,lo8(8)
90 0064 87BB out 55-32,r24
91 .LM9:
92 0066 82B3 in r24,50-32
93 0068 877E andi r24,lo8(-25)
94 006a 82BB out 50-32,r24
95 006c 959A sbi 50-32,5
96 .LM10:
97 006e 8091 0000 lds r24,IntRef
98 0072 8160 ori r24,lo8(1)
99 0074 00C0 rjmp .L14
100 .L7:
101 .LM11:
102 0076 81EA ldi r24,lo8(-95)
103 0078 8FBD out 79-32,r24
104 007a 81E6 ldi r24,lo8(97)
105 007c 85BD out 69-32,r24
106 007e 84E0 ldi r24,lo8(4)
107 0080 87BB out 55-32,r24
108 .LM12:
109 0082 82B3 in r24,50-32
110 0084 877E andi r24,lo8(-25)
111 0086 82BB out 50-32,r24
112 0088 959A sbi 50-32,5
113 .LM13:
114 008a 8091 0000 lds r24,IntRef
115 008e 00C0 rjmp .L13
116 .L8:
117 .LM14:
118 0090 81EA ldi r24,lo8(-95)
119 0092 8FBD out 79-32,r24
120 0094 81E6 ldi r24,lo8(97)
121 0096 85BD out 69-32,r24
122 0098 84E0 ldi r24,lo8(4)
123 009a 87BB out 55-32,r24
124 .LM15:
125 009c 82B3 in r24,50-32
126 009e 8F7C andi r24,lo8(-49)
127 00a0 82BB out 50-32,r24
128 00a2 939A sbi 50-32,3
129 .LM16:
130 00a4 8091 0000 lds r24,IntRef
131 00a8 8260 ori r24,lo8(2)
132 .L14:
133 00aa 87B9 out 39-32,r24
134 .LM17:
135 00ac 4098 cbi 40-32,0
136 00ae 0895 ret
137 .L9:
138 .LM18:
139 00b0 81EA ldi r24,lo8(-95)
140 00b2 8FBD out 79-32,r24
141 00b4 81E6 ldi r24,lo8(97)
142 00b6 85BD out 69-32,r24
143 00b8 82E0 ldi r24,lo8(2)
144 00ba 87BB out 55-32,r24
145 .LM19:
146 00bc 82B3 in r24,50-32
147 00be 8F7C andi r24,lo8(-49)
148 00c0 82BB out 50-32,r24
149 00c2 939A sbi 50-32,3
150 .LM20:
151 00c4 8091 0000 lds r24,IntRef
152 00c8 8160 ori r24,lo8(1)
153 .L13:
154 00ca 87B9 out 39-32,r24
155 .LM21:
156 00cc 88B1 in r24,40-32
157 00ce 8360 ori r24,lo8(3)
158 00d0 88B9 out 40-32,r24
159 00d2 0895 ret
160 .L16:
161 .LM22:
162 00d4 81EA ldi r24,lo8(-95)
163 00d6 8FBD out 79-32,r24
164 00d8 81E6 ldi r24,lo8(97)
165 00da 85BD out 69-32,r24
166 00dc 82E0 ldi r24,lo8(2)
167 00de 87BB out 55-32,r24
168 .LM23:
169 00e0 82B3 in r24,50-32
170 00e2 877D andi r24,lo8(-41)
171 00e4 82BB out 50-32,r24
172 00e6 949A sbi 50-32,4
173 .LM24:
174 00e8 8091 0000 lds r24,IntRef
175 00ec 87B9 out 39-32,r24
176 .LM25:
177 00ee 4098 cbi 40-32,0
178 .L12:
179 00f0 0895 ret
180 .LFE5:
182 .global __vector_16
184 __vector_16:
185 .LFB4:
186 .LM26:
187 00f2 1F92 push __zero_reg__
188 00f4 0F92 push r0
189 00f6 0FB6 in r0,__SREG__
190 00f8 0F92 push r0
191 00fa 1124 clr __zero_reg__
192 00fc CF92 push r12
193 00fe DF92 push r13
194 0100 EF92 push r14
195 0102 FF92 push r15
196 0104 0F93 push r16
197 0106 1F93 push r17
198 0108 2F93 push r18
199 010a 3F93 push r19
200 010c 4F93 push r20
201 010e 5F93 push r21
202 0110 6F93 push r22
203 0112 7F93 push r23
204 0114 8F93 push r24
205 0116 9F93 push r25
206 0118 AF93 push r26
207 011a BF93 push r27
208 011c EF93 push r30
209 011e FF93 push r31
210 /* prologue: Signal */
211 /* frame size = 0 */
212 .LM27:
213 0120 61EA ldi r22,lo8(-95)
214 0122 F62E mov r15,r22
215 0124 01E6 ldi r16,lo8(97)
216 0126 52E0 ldi r21,lo8(2)
217 0128 C52E mov r12,r21
218 .LM28:
219 012a 44E0 ldi r20,lo8(4)
220 012c D42E mov r13,r20
221 .LM29:
222 012e 38E0 ldi r19,lo8(8)
223 0130 E32E mov r14,r19
224 .LVL0:
225 .L44:
226 .LM30:
227 0132 88B1 in r24,40-32
228 0134 90E0 ldi r25,lo8(0)
229 0136 25E0 ldi r18,5
230 0138 9695 1: lsr r25
231 013a 8795 ror r24
232 013c 2A95 dec r18
233 013e 01F4 brne 1b
234 0140 182F mov r17,r24
235 0142 1170 andi r17,lo8(1)
236 .LM31:
237 0144 8091 0000 lds r24,Phase
238 0148 8230 cpi r24,lo8(2)
239 014a 01F4 brne .+2
240 014c 00C0 rjmp .L21
241 014e 8330 cpi r24,lo8(3)
242 0150 00F4 brsh .L25
243 0152 8823 tst r24
244 0154 01F0 breq .L19
245 0156 8130 cpi r24,lo8(1)
246 0158 01F0 breq .+2
247 015a 00C0 rjmp .L18
248 015c 00C0 rjmp .L49
249 .L25:
250 015e 8430 cpi r24,lo8(4)
251 0160 01F4 brne .+2
252 0162 00C0 rjmp .L23
253 0164 8430 cpi r24,lo8(4)
254 0166 00F4 brsh .+2
255 0168 00C0 rjmp .L22
256 016a 8530 cpi r24,lo8(5)
257 016c 01F0 breq .+2
258 016e 00C0 rjmp .L18
259 0170 00C0 rjmp .L50
260 .L19:
261 .LM32:
262 0172 FFBC out 79-32,r15
263 0174 05BD out 69-32,r16
264 0176 E7BA out 55-32,r14
265 .LM33:
266 0178 1123 tst r17
267 017a 01F0 breq .L26
268 .LM34:
269 017c 82B3 in r24,50-32
270 017e 877E andi r24,lo8(-25)
271 0180 82BB out 50-32,r24
272 0182 959A sbi 50-32,5
273 .LM35:
274 0184 8091 0000 lds r24,ZeitZumAdWandeln
275 0188 8111 cpse r24,__zero_reg__
276 018a 00D0 rcall AdConvert
277 .L27:
278 .LM36:
279 018c 4098 cbi 40-32,0
280 .LM37:
281 018e 8091 0000 lds r24,IntRef
282 0192 8160 ori r24,lo8(1)
283 0194 87B9 out 39-32,r24
284 0196 00C0 rjmp .L45
285 .L26:
286 .LM38:
287 0198 82B3 in r24,50-32
288 019a 877D andi r24,lo8(-41)
289 019c 82BB out 50-32,r24
290 019e 949A sbi 50-32,4
291 01a0 00C0 rjmp .L18
292 .L49:
293 .LM39:
294 01a2 82B3 in r24,50-32
295 01a4 877E andi r24,lo8(-25)
296 01a6 82BB out 50-32,r24
297 01a8 959A sbi 50-32,5
298 .LM40:
299 01aa 1123 tst r17
300 01ac 01F4 brne .L28
301 .LM41:
302 01ae FFBC out 79-32,r15
303 01b0 05BD out 69-32,r16
304 01b2 D7BA out 55-32,r13
305 .LM42:
306 01b4 8091 0000 lds r24,ZeitZumAdWandeln
307 01b8 8111 cpse r24,__zero_reg__
308 01ba 00D0 rcall AdConvert
309 .L29:
310 .LM43:
311 01bc 8091 0000 lds r24,IntRef
312 .L48:
313 01c0 87B9 out 39-32,r24
314 .LM44:
315 01c2 88B1 in r24,40-32
316 01c4 8360 ori r24,lo8(3)
317 01c6 88B9 out 40-32,r24
318 .L45:
319 .LM45:
320 01c8 8091 0000 lds r24,Phase
321 01cc 8F5F subi r24,lo8(-(1))
322 01ce 8093 0000 sts Phase,r24
323 .L46:
324 .LM46:
325 01d2 8091 0000 lds r24,CntKommutierungen
326 01d6 9091 0000 lds r25,(CntKommutierungen)+1
327 01da 0196 adiw r24,1
328 01dc 9093 0000 sts (CntKommutierungen)+1,r25
329 01e0 8093 0000 sts CntKommutierungen,r24
330 01e4 00C0 rjmp .L18
331 .L28:
332 .LM47:
333 01e6 FFBC out 79-32,r15
334 01e8 05BD out 69-32,r16
335 01ea E7BA out 55-32,r14
336 01ec 00C0 rjmp .L18
337 .L21:
338 .LM48:
339 01ee FFBC out 79-32,r15
340 01f0 05BD out 69-32,r16
341 01f2 D7BA out 55-32,r13
342 .LM49:
343 01f4 1123 tst r17
344 01f6 01F0 breq .L30
345 .LM50:
346 01f8 82B3 in r24,50-32
347 01fa 8F7C andi r24,lo8(-49)
348 01fc 82BB out 50-32,r24
349 01fe 939A sbi 50-32,3
350 .LM51:
351 0200 8091 0000 lds r24,ZeitZumAdWandeln
352 0204 8111 cpse r24,__zero_reg__
353 0206 00D0 rcall AdConvert
354 .L31:
355 .LM52:
356 0208 8091 0000 lds r24,IntRef
357 020c 8260 ori r24,lo8(2)
358 020e 00C0 rjmp .L47
359 .L30:
360 .LM53:
361 0210 82B3 in r24,50-32
362 0212 877E andi r24,lo8(-25)
363 0214 82BB out 50-32,r24
364 0216 959A sbi 50-32,5
365 0218 00C0 rjmp .L18
366 .L22:
367 .LM54:
368 021a 82B3 in r24,50-32
369 021c 8F7C andi r24,lo8(-49)
370 021e 82BB out 50-32,r24
371 0220 939A sbi 50-32,3
372 .LM55:
373 0222 1123 tst r17
374 0224 01F4 brne .L32
375 .LM56:
376 0226 FFBC out 79-32,r15
377 0228 05BD out 69-32,r16
378 022a C7BA out 55-32,r12
379 .LM57:
380 022c 8091 0000 lds r24,ZeitZumAdWandeln
381 0230 8111 cpse r24,__zero_reg__
382 0232 00D0 rcall AdConvert
383 .L33:
384 .LM58:
385 0234 8091 0000 lds r24,IntRef
386 0238 8160 ori r24,lo8(1)
387 023a 00C0 rjmp .L48
388 .L32:
389 .LM59:
390 023c FFBC out 79-32,r15
391 023e 05BD out 69-32,r16
392 0240 D7BA out 55-32,r13
393 0242 00C0 rjmp .L18
394 .L23:
395 .LM60:
396 0244 FFBC out 79-32,r15
397 0246 05BD out 69-32,r16
398 0248 C7BA out 55-32,r12
399 .LM61:
400 024a 1123 tst r17
401 024c 01F0 breq .L34
402 .LM62:
403 024e 82B3 in r24,50-32
404 0250 877D andi r24,lo8(-41)
405 0252 82BB out 50-32,r24
406 0254 949A sbi 50-32,4
407 .LM63:
408 0256 8091 0000 lds r24,ZeitZumAdWandeln
409 025a 8111 cpse r24,__zero_reg__
410 025c 00D0 rcall AdConvert
411 .L35:
412 .LM64:
413 025e 8091 0000 lds r24,IntRef
414 .L47:
415 0262 87B9 out 39-32,r24
416 .LM65:
417 0264 4098 cbi 40-32,0
418 0266 00C0 rjmp .L45
419 .L34:
420 .LM66:
421 0268 82B3 in r24,50-32
422 026a 8F7C andi r24,lo8(-49)
423 026c 82BB out 50-32,r24
424 026e 939A sbi 50-32,3
425 0270 00C0 rjmp .L18
426 .L50:
427 .LM67:
428 0272 82B3 in r24,50-32
429 0274 877D andi r24,lo8(-41)
430 0276 82BB out 50-32,r24
431 0278 949A sbi 50-32,4
432 .LM68:
433 027a 1123 tst r17
434 027c 01F4 brne .L36
435 .LM69:
436 027e FFBC out 79-32,r15
437 0280 05BD out 69-32,r16
438 0282 E7BA out 55-32,r14
439 .LM70:
440 0284 8091 0000 lds r24,ZeitZumAdWandeln
441 0288 8111 cpse r24,__zero_reg__
442 028a 00D0 rcall AdConvert
443 .L37:
444 .LM71:
445 028c 8091 0000 lds r24,IntRef
446 0290 8260 ori r24,lo8(2)
447 0292 87B9 out 39-32,r24
448 .LM72:
449 0294 88B1 in r24,40-32
450 0296 8360 ori r24,lo8(3)
451 0298 88B9 out 40-32,r24
452 .LM73:
453 029a 1092 0000 sts Phase,__zero_reg__
454 029e 00C0 rjmp .L46
455 .L36:
456 .LM74:
457 02a0 FFBC out 79-32,r15
458 02a2 05BD out 69-32,r16
459 02a4 C7BA out 55-32,r12
460 .L18:
461 .LM75:
462 02a6 4599 sbic 40-32,5
463 02a8 00C0 rjmp .L38
464 02aa 1123 tst r17
465 02ac 01F0 breq .+2
466 02ae 00C0 rjmp .L44
467 .L38:
468 02b0 459B sbis 40-32,5
469 02b2 00C0 rjmp .L40
470 02b4 1123 tst r17
471 02b6 01F4 brne .+2
472 02b8 00C0 rjmp .L44
473 .L40:
474 .LM76:
475 02ba 1092 0000 sts ZeitZumAdWandeln,__zero_reg__
476 /* epilogue start */
477 .LM77:
478 02be FF91 pop r31
479 02c0 EF91 pop r30
480 02c2 BF91 pop r27
481 02c4 AF91 pop r26
482 02c6 9F91 pop r25
483 02c8 8F91 pop r24
484 02ca 7F91 pop r23
485 02cc 6F91 pop r22
486 02ce 5F91 pop r21
487 02d0 4F91 pop r20
488 02d2 3F91 pop r19
489 02d4 2F91 pop r18
490 02d6 1F91 pop r17
491 .LVL1:
492 02d8 0F91 pop r16
493 02da FF90 pop r15
494 02dc EF90 pop r14
495 02de DF90 pop r13
496 02e0 CF90 pop r12
497 02e2 0F90 pop r0
498 02e4 0FBE out __SREG__,r0
499 02e6 0F90 pop r0
500 02e8 1F90 pop __zero_reg__
501 02ea 1895 reti
502 .LFE4:
504 .global Phase
505 .global Phase
506 .section .bss
509 Phase:
510 0000 00 .skip 1,0
511 .global ShadowTCCR1A
512 .global ShadowTCCR1A
515 ShadowTCCR1A:
516 0001 00 .skip 1,0
517 .global CompFreigabeTimer
518 .data
521 CompFreigabeTimer:
522 0000 64 .byte 100
523 .global CompInterruptFreigabe
524 .global CompInterruptFreigabe
525 .section .bss
528 CompInterruptFreigabe:
529 0002 00 .skip 1,0
570 .Letext0:
DEFINED SYMBOLS
*ABS*:00000000 BLMC.c
C:\DOCUME~1\ADMINI~1\LOCALS~1\Temp/ccK1BcMH.s:2 *ABS*:0000003f __SREG__
C:\DOCUME~1\ADMINI~1\LOCALS~1\Temp/ccK1BcMH.s:3 *ABS*:0000003e __SP_H__
C:\DOCUME~1\ADMINI~1\LOCALS~1\Temp/ccK1BcMH.s:4 *ABS*:0000003d __SP_L__
C:\DOCUME~1\ADMINI~1\LOCALS~1\Temp/ccK1BcMH.s:5 *ABS*:00000034 __CCP__
C:\DOCUME~1\ADMINI~1\LOCALS~1\Temp/ccK1BcMH.s:6 *ABS*:00000000 __tmp_reg__
C:\DOCUME~1\ADMINI~1\LOCALS~1\Temp/ccK1BcMH.s:7 *ABS*:00000001 __zero_reg__
C:\DOCUME~1\ADMINI~1\LOCALS~1\Temp/ccK1BcMH.s:18 .text:00000000 __vector_4
C:\DOCUME~1\ADMINI~1\LOCALS~1\Temp/ccK1BcMH.s:39 .text:00000014 Manuell
C:\DOCUME~1\ADMINI~1\LOCALS~1\Temp/ccK1BcMH.s:509 .bss:00000000 Phase
C:\DOCUME~1\ADMINI~1\LOCALS~1\Temp/ccK1BcMH.s:184 .text:000000f2 __vector_16
C:\DOCUME~1\ADMINI~1\LOCALS~1\Temp/ccK1BcMH.s:515 .bss:00000001 ShadowTCCR1A
C:\DOCUME~1\ADMINI~1\LOCALS~1\Temp/ccK1BcMH.s:521 .data:00000000 CompFreigabeTimer
C:\DOCUME~1\ADMINI~1\LOCALS~1\Temp/ccK1BcMH.s:528 .bss:00000002 CompInterruptFreigabe
 
UNDEFINED SYMBOLS
IntRef
ZeitZumAdWandeln
AdConvert
CntKommutierungen
__do_copy_data
__do_clear_bss
/branches/V0.41-Hexa/BrushLess-Ctrl_V0_41_10A.eep
0,0 → 1,0
:00000001FF
/branches/V0.41-Hexa/BrushLess-Ctrl_V0_41_10A.elf
Cannot display: file marked as a binary type.
svn:mime-type = application/octet-stream
/branches/V0.41-Hexa/BrushLess-Ctrl_V0_41_10A.elf
Property changes:
Added: svn:mime-type
+application/octet-stream
\ No newline at end of property
/branches/V0.41-Hexa/BrushLess-Ctrl_V0_41_10A.hex
0,0 → 1,448
:1000000012C050CA2BC02AC0B5CAB5C927C026C065
:10001000A1C9A9C823C065C721C03AC61FC01EC058
:1000200022CB57CA1BC011241FBECFE5D4E0DEBFD0
:10003000CDBF10E0A0E6B0E0EAECFBE102C0059025
:100040000D92A837B107D9F713E0A8E7B0E001C0D7
:100050001D92A03AB107E1F746D4B5CDD1CF40917A
:10006000780080916400841710F4AB9A482F209197
:100070007A0030917B00293C3105C8F01BBC1ABCCA
:1000800019BC18BC13BC82B3877C82BBAB9A80912D
:100090009003909191030196909391038093900324
:1000A0002150304030937B0020937A000895842FB4
:1000B00090E09BBD8ABD99BD88BD43BD0895E4E82D
:1000C000F3E080917A0090917B0090938503809378
:1000D000840380917D0080938603138280918B003E
:1000E00090918C0090938903809388038091A50060
:1000F0009091A60090938B0380938A0383B580939D
:100100008C03118608951BBC1ABC19BC18BC13BC07
:1001100091E09FBD81E485BD8EE087BB88B3817F80
:1001200088BB9EBD089592B7980F82B7891B87FD43
:10013000FCCF089501C001970097E9F780E008958A
:100140008091800090918100892B09F059C08091A5
:10015000820090918300892B99F0909190008FEF0D
:10016000989FC001112468EC70E086DB70938F00CB
:1001700060938E001092670089B78F7D89BF31C070
:100180008091A900853178F181E08093670020910A
:10019000A5003091A60041E02D32340730F4293C0F
:1001A000310540F42B30310538F410928F00109255
:1001B0008E0017C028EC30E08CEF90E0AC01249F5B
:1001C000C001259F900D349F900D1124885D9940AA
:1001D00064EB70E051DB6D5F7F4F70938F00609335
:1001E0008E00AB9819C080918E0090918F0000977F
:1001F00029F0019790938F0080938E00AB9A0CC0EA
:100200008091950380938E0010928F00109267006A
:10021000AB9889B78F7D89BF80918E0090918F00B8
:100220008F3F910539F030F08FEF90E090938F0081
:1002300080938E0080918E000895CF93DF93EC0120
:1002400017C05FD821978091B5029091B602885867
:100250009F4F20917A0030917B008217930740F4E2
:1002600082B3877C82BB88B3817F88BB81E003C077
:10027000209739F780E0DF91CF9108951F93182FD1
:10028000789409C0AB9A8CE291E0D2D7AB988CE21B
:1002900091E0CED711501123A9F788EE93E0C8D78B
:1002A0001F910895AF92BF92DF92EF92FF920F934A
:1002B0001F93DF93CF93CDB7DEB727970FB6F89490
:1002C000DEBF0FBECDBFDE011196E8E6F0E087E0AD
:1002D00001900D928150E1F7AB9880916600FE018C
:1002E000E80FF11D818190E02CE231E0AC01429FEA
:1002F000C001439F900D529F900D112499D71092E9
:10030000B1004398F8948AE0DFD582B3877C82BB42
:100310001BBC1ABC19BC18BC13BC81E08FBD81E4A6
:1003200085BD8EE087BB88B3817F88BB10927C003F
:1003300082E390E082DF80917C008093B50210928E
:10034000B60210927B0010927A008CB1803231F0AC
:1003500038EEE32E33E0F32E82E306C08FE5B4D50A
:10036000EE24EA94FE2C88E210927B0010927A0030
:1003700000E010E0A82EBB24939A81E090E05DDFBE
:1003800082B3877C82BB88B3817F88BBC39A81E0BC
:1003900090E053DF82B3877C82BB88B3817F88BBC8
:1003A0008091B5029091B6028A0D9B1D20917A0032
:1003B00030917B008217930738F00F5F1F4F0E15A7
:1003C0001F05D0F2DD240AC084E37ED582B3877C8A
:1003D00082BB88B3817F88BB24E0D22E80E197E284
:1003E00000C001975FEF8F3F9507D9F710927B0010
:1003F00010927A0000E010E0949A81E090E01DDF16
:1004000082B3877C82BB88B3817F88BBC29A81E03C
:1004100090E013DF82B3877C82BB88B3817F88BB87
:100420008091B5029091B6028A0D9B1D20917A00B1
:1004300030917B008217930730F00F5F1F4F0E152E
:100440001F05D0F20AC085E33FD582B3877C82BB0B
:1004500088B3817F88BB95E0D92E10927B001092E3
:100460007A0080E197E200C001972FEF8F3F92075B
:10047000D9F700E010E0959A81E090E0DEDE82B3EB
:10048000877C82BB88B3817F88BBC19A81E090E082
:10049000D4DE82B3877C82BB88B3817F88BB8091A6
:1004A000B5029091B6028A0D9B1D20917A00309181
:1004B0007B008217930730F00F5F1F4F0E151F054B
:1004C000D0F20BC086E300D582B3877C82BB88B3B1
:1004D000817F88BB86E0D82E02C0DD2019F08D2DEB
:1004E000CDDEFDCF80918D0087B982B3877C82BB42
:1004F00088B3817F88BB949A959A10927B00109262
:100500007A0000E010E0FF24C39A80E0E5D6C397AC
:1005100018F041E0F42A02C05EEFF52218BA8CE22E
:1005200091E000C001972FEF8F3F9207D9F70F5F3F
:100530001F4F0937110541F782B3877C82BB88B30F
:10054000817F88BB939A959A00E010E0C29A81E07F
:10055000C3D6C39718F042E0F42A02C05DEFF5223B
:1005600018BA8CE291E000C001972FEF8F3F9207FD
:10057000D9F70F5F1F4F0538110541F782B3877C0C
:1005800082BB88B3817F88BB939A949A00E010E085
:10059000C19A82E0A1D6C39718F044E0F42A02C0C1
:1005A0005BEFF52218BA8AE491E000C001972FEFC3
:1005B0008F3F9207D9F70F5F1F4F0F36110541F795
:1005C00082B3877C82BB88B3817F88BB939A00E02B
:1005D00010E0C29A80E080D68138910518F047EF8C
:1005E000F42202C058E0F52A18BA8AE491E000C06B
:1005F00001972FEF8F3F9207D9F70F5F1F4F0937F2
:10060000110539F7959A00E010E0C29A82E064D6AD
:100610008138910518F04FEDF42202C050E2F52A1E
:1006200018BA88E691E000C001972FEF8F3F92073C
:10063000D9F70F5F1F4F0538110539F782B3877C53
:1006400082BB88B3817F88BB82B3877C82BB88B33F
:10065000817F88BB949A00E010E0C19A81E03CD68B
:100660008138910518F04FEEF42202C050E1F52ACE
:1006700018BA88E691E000C001972FEF8F3F9207EC
:10068000D9F70F5F1F4F0F36110539F782B3877CFB
:1006900082BB88B3817F88BB789480916600FE011D
:1006A000E80FF11D218183E090E0821B91092CE28B
:1006B00031E0AC01429FC001439F900D529F900DCD
:1006C0001124B6D5F0FC04C081E48CB911E01DC042
:1006D000F1FC04C082E48CB912E017C0F2FC04C043
:1006E00083E48CB913E011C0F3FC04C081E68CB93B
:1006F00014E00BC0F4FC04C082E68CB915E005C020
:10070000F5FC06C083E68CB916E0812FB7DDFDCF7E
:1007100080E0B4DD8EE2D8D327960FB6F894DEBF22
:100720000FBECDBFCF91DF911F910F91FF90EF9042
:10073000DF90BF90AF9008956F927F929F92AF929B
:10074000BF92CF92DF92EF92FF920F931F93CF93BE
:10075000DF93982E1092B100439885E090E090933B
:100760007900809378007BDC0FD78CE291E04CD548
:100770009093B4028093B30209C0C3D580917A00EC
:1007800090917B008937910508F05CC08091B3029D
:100790009091B40243D5882381F39092780010920F
:1007A00079005CE2A52E51E0B52EC12CD12CC6E813
:1007B000D3E046E0642E712C6C0E7D1EEE24FF24E7
:1007C000870180916F00882311F46CD201C06ED430
:1007D00082B78C59982F82B7891B87FDFCCF08946C
:1007E000E11CF11C011D111DEA14FB040C051D0583
:1007F00040F380917A0090917B00909385038093E1
:10080000840380917D0080938603198280918B0000
:1008100090918C0090938903809388038091A50028
:100820009091A60090938B0380938A0383B5809365
:100830008C03F301118265D580917A0090917B0041
:10084000CD97A8F082B3877C82BB1BBC1ABC19BCB5
:1008500018BC13BC81E08FBD81E485BD8EE087BBF1
:1008600088B3817F88BB8AE009DD80E02EC0C601A5
:10087000B5012FE030E040E050E012D820953095EF
:1008800040955095A20EB31EC41ED51EF9E1AF16B9
:10089000B104C104D104C0F077D68091AF008F5F5E
:1008A0008093AF008091AF0066E0DAD79093AF00FD
:1008B000DCD49092780010927900D1DB449B7ECFFB
:1008C00082B3805882BB7ACF81E0DF91CF911F91B4
:1008D0000F91FF90EF90DF90CF90BF90AF909F90DF
:1008E0007F906F9008955F926F927F928F929F9208
:1008F000AF92BF92CF92DF92EF92FF920F931F932E
:10090000CF93DF9388E084BB85BB8AE381BB12BAB7
:100910008EE087BB81E388BB88B3806C88BBB69BC5
:1009200006C0B79B02C081E007C082E005C0B79B4C
:1009300002C083E001C084E0809366008BE0809376
:10094000B200879B06C08CE08093B20080EC80935D
:100950008D008AEB81BBC4D34ED47894D4DB80E580
:10096000B0D5EBD485E690E04FD486E690E04CD449
:1009700087E690E049D49093B4028093B3028EEF5F
:1009800090E042D46C018DEE93E03ED4EC018EEE0B
:1009900093E03AD403C0D4DB882339F48091B302C6
:1009A0009091B4023BD48823B1F38091B2008C3093
:1009B00010F4979A01C097981092790010927800DD
:1009C0004EDB88E080BF81E087B98AE090E01CD4EC
:1009D0009093B4028093B30281E090E090938703F8
:1009E000809386031092A6001092A500A9DB8823AD
:1009F00009F458DC81E388BB10E0FF24F394F1E4B0
:100A0000EF2EEEE05E2E71E0672E712C6FE0862EE9
:100A1000912C01C0102F94DB809378001092790004
:100A20000091AF00011769F010926300109262000C
:100A30008AEF90E0E9D39093B4028093B3020091DF
:100A4000AF008091780090917900892BE1F41092A9
:100A5000880010926200C501E1D38823F1F0109262
:100A6000B1004398F092630082B3877C82BB1BBCC9
:100A70001ABC19BC18BC13BCFFBCE5BC57BA88B380
:100A8000817F88BB0AC080916300882311F0F092B7
:100A900088008CED95E0B8D35C01809163008823D9
:100AA00021F01092790010927800D9DA80916200DA
:100AB0008F5F80936200815009F0ACCF809163001A
:100AC000882341F08091B2008C3010F4979A01C0D5
:100AD000979817D4C601A2D38823A9F182E390E0A6
:100AE00093D36C0180917D00482F50E020917A00D3
:100AF00030917B004217530710F48F5F04C0241716
:100B0000350718F4815080937D00293C310548F069
:100B100080916400982F929596959770891B809389
:100B2000640080917D0090916400893738F09923AA
:100B300019F0915090936400AB9A05C09F3F19F053
:100B40009F5F90936400CE0169D3882391F08AE07F
:100B500090E05AD3EC018091890090918A009093A3
:100B60008C0080938B0010928A0010928900F09282
:100B700065008091B3029091B40250D3882331F084
:100B800080918B0090918C00892B29F080918800B6
:100B9000882309F43FCFF09263001092B10043988C
:100BA00084E690E031D39093B4028093B3028091B5
:100BB0008800882309F42ECFAB9810927C00109205
:100BC00088008AE0B9DD882309F45BC08091B20017
:100BD0008C3010F4979A01C097981092630080911E
:100BE000AF0081508093AF007092790060927800DE
:100BF00036DA88B18C7F88B9F092B10088B18A600A
:100C000088B984E190E000D39093B4028093B3025A
:100C10008091B3029091B40201D38823C9F39092DA
:100C20007900809278001BDA8CE291E0EDD290930B
:100C3000B4028093B30218C080917A0090917B0037
:100C4000CD9790F082B3877C82BB1BBC1ABC19BCC9
:100C500018BC13BCFFBCE5BC57BA88B3817F88BB06
:100C60008AE00CDBF09288008091B3029091B4028C
:100C7000D5D2882309F382E390E0C6D2EC0107E0E5
:100C8000C9CE5EDA882309F4C5CEF0928800C2CEC0
:100C90001F920F920FB60F9211240F900FBE0F905C
:100CA0001F9018955E9B24C080916F008823E1F40B
:100CB0008091A0009091A10001969093A100809353
:100CC000A000FC01E854FD4FE081ED3019F08436BE
:100CD000910539F41092A1001092A00081E0809358
:100CE0006F00589AECB908951092A1001092A000DC
:100CF00008951F93CF93DF93EC0170E0A22FB0E033
:100D0000119748C0E42FF0E0E25EFC4F30814F5F66
:100D1000E42FF0E0E25EFC4F50814F5FE42FF0E003
:100D2000E25EFC4F10814F5FE42FF0E0E25EFC4F8B
:100D300020814F5F842F90E08A179B0774F55D53E5
:100D4000FE01E70FF11D852F82958F703D53330F04
:100D5000330F382B3083613001F1912F9D537F5F2A
:100D6000FE01E70FF11D71505295507F892F869536
:100D70008695582B5083623081F063507E5FFE0170
:100D8000E70FF11D9295990F990F907C2D53922B9F
:100D900090837F5F662309F0B5CFDF91CF911F91DC
:100DA0000895DC0120E030E040E050E008C0FA01A6
:100DB000E854FD4F8081280F311D4F5F5F4F4A1768
:100DC0005B07A8F33F70C90136E0969587953A9581
:100DD000E1F7835CFD01E854FD4F808311962F738A
:100DE000235CFD01E854FD4F2083A754BD4F8DE0E7
:100DF0008C9310926F008091B8028CB90895CF93B4
:100E0000DF93EA01B22F93E29093B8026093B902A4
:100E10008093BA0263E070E0A0E04EC0FE01EA0FEA
:100E2000F11D9081AF5FB15019F430E040E00FC088
:100E3000FE01EA0FF11D4081AF5FB15011F430E0C7
:100E400006C0FE01EA0FF11D3081AF5FB150892F5E
:100E500086958695835CFB01E854FD4F8083242FA3
:100E600022952F70892F90E08370907054E0880F46
:100E7000991F5A95E1F7282B235CFB01E754FD4F9E
:100E80002083842F90E08F709070880F991F880FB7
:100E9000991F232F2295269526952370282B235CB6
:100EA000FB01E654FD4F20833F73335CFB01E554A7
:100EB000FD4F30836C5F7F4FBB2309F0AFCFCB0179
:100EC00070DFDF91CF9108951F93182F8A3011F4AE
:100ED0008DE0FADF5D9BFECF1CB980E090E01F91B2
:100EE00008951F920F920FB60F9211242F933F93E4
:100EF0004F935F936F937F938F939F93AF93BF9322
:100F0000CF93DF93EF93FF938CB180939100409147
:100F10009B00443610F010929A00509191005D3081
:100F200009F064C080919A00823009F05FC010928D
:100F30009A00A42FB0E0FD01E45EFC4F3081ED018A
:100F4000C35EDC4F288180919E0090919F00831B9F
:100F50009109821B91099F7090939F0080939E003E
:100F60009C0166E0369527956A95E1F7235C20930E
:100F70009D00982F9F73935C90939C00808128170D
:100F800009F080C08881981709F07CC040939900CF
:100F9000A25EBC4F5C9380912003823549F42CE023
:100FA00088E190E00FB6F894A89581BD0FBE21BDF1
:100FB0008091200389DF80912003843709F062C08B
:100FC0002091990083E990E066E043E092DEE091B1
:100FD0006600F0E0EE56FF4F80818093900084EF32
:100FE00091E090938300809382004CC080919A009E
:100FF0008130F9F0813020F0823009F041C024C006
:1010000080919100833239F480919200882319F401
:1010100081E080939A008091910080931E0381E08B
:1010200080939B008091910080939E0010929F007E
:1010300029C082E080939A00E42FF0E08091910033
:10104000E25EFC4F808309C0E42FF0E080919100C4
:10105000E25EFC4F8083443620F44F5F40939B0058
:1010600002C010929A002091910080919E00909170
:101070009F00820F911D90939F0080939E0002C05D
:1010800010929A00FF91EF91DF91CF91BF91AF91B4
:101090009F918F917F916F915F914F913F912F9190
:1010A0000F900FBE0F901F901895089580911C030C
:1010B00090911D03B3D0882391F080916F00882315
:1010C00071F084E46091B70242E853E022E197DED8
:1010D00082E390E099D090931D0380931C030895C0
:1010E00088E18AB9599A579A80E189B984E697E0EC
:1010F00060E070E0F7D388EC90E086D090931D0319
:1011000080931C038AE0E0DE82E4DEDE8CE4DCDE39
:101110008AE3DADE86E5D8DE80E3D6DE8EE2D4DE50
:1011200084E3D2DE81E3D0DE8AE0CEDE88E4CCDE6A
:1011300087E5CADE8AE3C8DE81E3C6DE8EE2C4DE6E
:101140008091B2008A5DC0DE8AE0BEDE81E4BCDE52
:1011500084E4BADE82E5B8DE8AE3B6DE809166001A
:10116000805DB2DE08951F920F920FB60F92112488
:101170008F939F93809194038F5F809394038091CA
:10118000A40081508093A4008F5F71F583E0809369
:10119000A4008091A2009091A30001969093A300D7
:1011A0008093A2008091800090918100009729F0A7
:1011B000019790938100809380008091A8008823FC
:1011C00031F08091A80081508093A80002C0109255
:1011D000A9008091820090918300009729F00197E7
:1011E00090938300809382009F918F910F900FBE08
:1011F0000F901F90189582E083BF89B7816089BFE7
:1012000089B7806489BF08952091A2003091A3001E
:1012100021503040280F391FC90108952091A200A4
:101220003091A300821B930B80709078892F0895D2
:101230002091A2003091A30021503040280F391F87
:101240008091A2009091A300A901481B590BCA01EB
:10125000807090789923A1F3089586EA86B98091E9
:101260008D00876087B9369A089527B190918D00D7
:10127000966097B910BE83ED86B9349A97B9369ABD
:10128000349BFECF27B984B195B120917A0030917B
:101290007B00A90163E0440F551F6A95E1F7421BEB
:1012A000530B880F991F880F991F480F591F83E010
:1012B000569547958A95E1F750937B0040937A00C5
:1012C00080917C0090E08417950710F440937C0097
:1012D00016B888E080BF089527B190918D00982BB3
:1012E00097B910BE83ED86B9349A97B9369A349B74
:1012F000FECF27B916B888E080BF24B135B1C90147
:10130000089586E0E9DF9C01220F331F220F331F6F
:10131000293C310510F028EC30E030937B0020931D
:101320007A0080917C0090E08217930710F420935C
:101330007C0016B888E080BF08958EB5806C8EBDA5
:101340008EB580648EBD89B7806289BF89B784609D
:1013500089BF08951F920F920FB60F9211248F9399
:101360008091A7008F5F8093A7008F910F900FBE91
:101370000F901F9018951F920F920FB60F92112485
:101380002F933F934F935F938F939F930EB406FEDB
:101390000FC01092A70086B597B59093AD008093CB
:1013A000AC008EB58F7B8EBD84E68093A8006FC0A5
:1013B0008EB580648EBD26B537B54091A70080916B
:1013C000AC009091AD00281B390B942F990F80E051
:1013D000280F391F85E0369527958A95E1F73093D8
:1013E000AB002093AA002851314030F488E191E00D
:1013F0009093AB008093AA004091AA005091AB005B
:10140000485151408091A5009091A60084179507FE
:1014100030F48091A5009091A60001960CC08091B7
:10142000A5009091A6004817590748F48091A5009F
:101430009091A60001979093A6008093A5008091BB
:10144000A5009091A6009C01220F331F220F331F8D
:10145000220F331F281B390B240F351F83E03695CD
:1014600027958A95E1F73093AB002093AA0030933B
:10147000A6002093A5008091A9008F3F29F08091BC
:10148000A9008F5F8093A90081E0809365009F9100
:101490008F915F914F913F912F910F900FBE0F90C1
:1014A0001F9018951F920F920FB60F9211248F93D1
:1014B0008AB78F7B8ABF8F910F900FBE0F901F90BE
:1014C000189590916600990F980F92B985EC86BF98
:1014D00008951F920F920FB60F9211248F939F932E
:1014E00081B190E0887F907080389105C9F0813893
:1014F000910534F4009791F18036910591F50AC079
:10150000883B9105B9F0883F910529F1883A91050A
:1015100041F510C086B7806886BF1092AE0023C028
:1015200083B18093950384EF91E090938100809341
:1015300080000EC08091AE00882339F480917D0038
:1015400083B981E08093AE0003C08091640083B9C9
:1015500086B7806807C086B7806986BF86B780690E
:1015600086BF85EC86BF9F918F910F900FBE0F9025
:101570001F9018951F920F920FB60F9211240F9083
:101580000FBE0F901F9018958091AF00823069F1C7
:10159000833030F4882369F0813009F063C017C0CC
:1015A000843009F43FC0843068F1853009F05AC0B6
:1015B0004BC081EA8FBD81E685BD88E087BB82B3E1
:1015C000877D82BB949A80918D00826038C081EAC9
:1015D0008FBD81E685BD88E087BB82B3877E82BBF5
:1015E000959A80918D0081601AC081EA8FBD81E655
:1015F00085BD84E087BB82B3877E82BB959A80914C
:101600008D001DC081EA8FBD81E685BD84E087BB6A
:1016100082B38F7C82BB939A80918D00826087B960
:101620004098089581EA8FBD81E685BD82E087BB41
:1016300082B38F7C82BB939A80918D00816087B941
:1016400088B1836088B9089581EA8FBD81E685BD40
:1016500082E087BB82B3877D82BB949A80918D00A4
:1016600087B9409808951F920F920FB60F921124D8
:10167000CF92DF92EF92FF920F931F932F933F939E
:101680004F935F936F937F938F939F93AF93BF938A
:10169000EF93FF9361EAF62E01E652E0C52E44E097
:1016A000D42E38E0E32E88B190E025E0969587951A
:1016B0002A95E1F7182F11708091AF00823009F45C
:1016C00050C0833030F4882371F0813009F0A5C018
:1016D00022C0843009F470C0843008F458C08530CA
:1016E00009F09BC080C0FFBC05BDE7BA112371F0B3
:1016F00082B3877E82BB959A809165008111B5DDAA
:10170000409880918D00816087B918C082B3877D31
:1017100082BB949A82C082B3877E82BB959A112342
:10172000E1F4FFBC05BDD7BA8091650081119DDD54
:1017300080918D0087B988B1836088B98091AF00AE
:101740008F5F8093AF008091890090918A0001960D
:1017500090938A008093890060C0FFBC05BDE7BA02
:101760005CC0FFBC05BDD7BA112361F082B38F7C8A
:1017700082BB939A80916500811177DD80918D0005
:10178000826029C082B3877E82BB959A46C082B3AD
:101790008F7C82BB939A112359F4FFBC05BDC7BA55
:1017A00080916500811161DD80918D008160C2CFE3
:1017B000FFBC05BDD7BA31C0FFBC05BDC7BA1123F8
:1017C00069F082B3877D82BB949A80916500811114
:1017D0004CDD80918D0087B94098B0CF82B38F7C6B
:1017E00082BB939A1AC082B3877D82BB949A1123DD
:1017F00089F4FFBC05BDE7BA80916500811135DD34
:1018000080918D00826087B988B1836088B9109219
:10181000AF0099CFFFBC05BDC7BA459903C01123DE
:1018200009F041CF459B03C0112309F43CCF10922E
:101830006500FF91EF91BF91AF919F918F917F9143
:101840006F915F914F913F912F911F910F91FF9059
:10185000EF90DF90CF900F900FBE0F901F901895D4
:10186000991B79E004C0991F961708F0961B881FF2
:101870007A95C9F780950895AA1BBB1B51E107C053
:10188000AA1FBB1FA617B70710F0A61BB70B881F10
:10189000991F5A95A9F780959095BC01CD0108959F
:1018A000A1E21A2EAA1BBB1BFD010DC0AA1FBB1F64
:1018B000EE1FFF1FA217B307E407F50720F0A21BD6
:1018C000B30BE40BF50B661F771F881F991F1A9443
:1018D00069F760957095809590959B01AC01BD016D
:1018E000CF0108950F931F93CF93DF938C01EB01EA
:1018F000009731F46115710519F420E030E037C02C
:1019000081E090E06EE070E038D0FC019C0100972F
:1019100071F180E88383209771F0D387C28781E8D3
:1019200083838091960390919703892B21F4F09300
:101930009703E093960301151105C9F011870087FD
:101940008381826083838091980390919903892B8E
:1019500071F4F0939903E093980380919A03909126
:101960009B03892B21F4F0939B03E0939A03C90115
:10197000DF91CF911F910F9108950F931F93CF93F4
:10198000DF93689F8001699F100D789F100D1124CF
:10199000C8010DD0EC01009721F060E070E0A801D3
:1019A0000BD1CE01DF91CF911F910F910895CF936D
:1019B000DF93BC018230910510F462E070E0A091E9
:1019C0009E03B0919F03ED01E0E0F0E040E050E0C5
:1019D00021C0888199818617970769F48A819B8144
:1019E000309719F09383828304C090939F03809370
:1019F0009E03FE0134C06817790738F4411551057C
:101A000019F08417950708F4AC01FE018A819B81C7
:101A10009C01E9012097E9F641155105A9F1CA0198
:101A2000861B970B049708F4BA01E0E0F0E02AC0A7
:101A30008D919C91119784179507F9F46417750798
:101A400081F412968D919C911397309719F093839E
:101A5000828304C090939F0380939E03FD0132967E
:101A60004FC0CA01861B970BFD01E80FF91F619358
:101A7000719302978D939C9343C0FD018281938162
:101A80009C01D9011097A1F680919C0390919D0330
:101A9000892B41F4809173009091740090939D0381
:101AA00080939C034091750050917600411551053B
:101AB00041F44DB75EB78091710090917200481B60
:101AC000590B20919C0330919D0324173507B0F4E6
:101AD000CA01821B930B8617970780F0AB014E5FFC
:101AE0005F4F8417950750F0420F531F50939D038B
:101AF00040939C03F9016193719302C0E0E0F0E030
:101B0000CF01DF91CF910895CF93DF93009709F430
:101B100050C0EC0122971B821A82A0919E03B091C3
:101B20009F03109709F140E050E0AC17BD0708F1A2
:101B3000BB83AA83FE0121913191E20FF31FAE17FF
:101B4000BF0779F48D919C911197280F391F2E5F53
:101B50003F4F3983288312968D919C9113979B83D5
:101B60008A834115510571F4D0939F03C0939E035E
:101B700020C012968D919C911397AD01009711F0A2
:101B8000DC01D3CFFA01D383C28321913191E20FDB
:101B9000F31FCE17DF0769F488819981280F391F59
:101BA0002E5F3F4FFA01318320838A819B8193838B
:101BB0008283DF91CF910895DC0101C06D93415084
:0A1BC0005040E0F70895F894FFCFBD
:101BCA000A000101FF0101010000000101020201F6
:081BDA00642000A003000000DC
:00000001FF
/branches/V0.41-Hexa/BrushLess-Ctrl_V0_41_10A.lss
0,0 → 1,4807
 
BrushLess-Ctrl_V0_41_10A.elf: file format elf32-avr
 
Sections:
Idx Name Size VMA LMA File off Algn
0 .text 00001bca 00000000 00000000 00000094 2**1
CONTENTS, ALLOC, LOAD, READONLY, CODE
1 .data 00000018 00800060 00001bca 00001c5e 2**0
CONTENTS, ALLOC, LOAD, DATA
2 .bss 00000328 00800078 00800078 00001c76 2**0
ALLOC
3 .debug_aranges 000000e0 00000000 00000000 00001c76 2**0
CONTENTS, READONLY, DEBUGGING
4 .debug_pubnames 000005da 00000000 00000000 00001d56 2**0
CONTENTS, READONLY, DEBUGGING
5 .debug_info 00001379 00000000 00000000 00002330 2**0
CONTENTS, READONLY, DEBUGGING
6 .debug_abbrev 0000077a 00000000 00000000 000036a9 2**0
CONTENTS, READONLY, DEBUGGING
7 .debug_line 00001739 00000000 00000000 00003e23 2**0
CONTENTS, READONLY, DEBUGGING
8 .debug_frame 000002e0 00000000 00000000 0000555c 2**2
CONTENTS, READONLY, DEBUGGING
9 .debug_str 000005bf 00000000 00000000 0000583c 2**0
CONTENTS, READONLY, DEBUGGING
10 .debug_loc 0000073a 00000000 00000000 00005dfb 2**0
CONTENTS, READONLY, DEBUGGING
11 .debug_ranges 00000018 00000000 00000000 00006535 2**0
CONTENTS, READONLY, DEBUGGING
 
Disassembly of section .text:
 
00000000 <__vectors>:
0: 12 c0 rjmp .+36 ; 0x26 <__ctors_end>
2: 50 ca rjmp .-2912 ; 0xfffff4a4 <__eeprom_end+0xff7ef4a4>
4: 2b c0 rjmp .+86 ; 0x5c <__bad_interrupt>
6: 2a c0 rjmp .+84 ; 0x5c <__bad_interrupt>
8: b5 ca rjmp .-2710 ; 0xfffff574 <__eeprom_end+0xff7ef574>
a: b5 c9 rjmp .-3222 ; 0xfffff376 <__eeprom_end+0xff7ef376>
c: 27 c0 rjmp .+78 ; 0x5c <__bad_interrupt>
e: 26 c0 rjmp .+76 ; 0x5c <__bad_interrupt>
10: a1 c9 rjmp .-3262 ; 0xfffff354 <__eeprom_end+0xff7ef354>
12: a9 c8 rjmp .-3758 ; 0xfffff166 <__eeprom_end+0xff7ef166>
14: 23 c0 rjmp .+70 ; 0x5c <__bad_interrupt>
16: 65 c7 rjmp .+3786 ; 0xee2 <__vector_11>
18: 21 c0 rjmp .+66 ; 0x5c <__bad_interrupt>
1a: 3a c6 rjmp .+3188 ; 0xc90 <__vector_13>
1c: 1f c0 rjmp .+62 ; 0x5c <__bad_interrupt>
1e: 1e c0 rjmp .+60 ; 0x5c <__bad_interrupt>
20: 22 cb rjmp .-2492 ; 0xfffff666 <__eeprom_end+0xff7ef666>
22: 57 ca rjmp .-2898 ; 0xfffff4d2 <__eeprom_end+0xff7ef4d2>
24: 1b c0 rjmp .+54 ; 0x5c <__bad_interrupt>
 
00000026 <__ctors_end>:
26: 11 24 eor r1, r1
28: 1f be out 0x3f, r1 ; 63
2a: cf e5 ldi r28, 0x5F ; 95
2c: d4 e0 ldi r29, 0x04 ; 4
2e: de bf out 0x3e, r29 ; 62
30: cd bf out 0x3d, r28 ; 61
 
00000032 <__do_copy_data>:
32: 10 e0 ldi r17, 0x00 ; 0
34: a0 e6 ldi r26, 0x60 ; 96
36: b0 e0 ldi r27, 0x00 ; 0
38: ea ec ldi r30, 0xCA ; 202
3a: fb e1 ldi r31, 0x1B ; 27
3c: 02 c0 rjmp .+4 ; 0x42 <.do_copy_data_start>
 
0000003e <.do_copy_data_loop>:
3e: 05 90 lpm r0, Z+
40: 0d 92 st X+, r0
 
00000042 <.do_copy_data_start>:
42: a8 37 cpi r26, 0x78 ; 120
44: b1 07 cpc r27, r17
46: d9 f7 brne .-10 ; 0x3e <.do_copy_data_loop>
 
00000048 <__do_clear_bss>:
48: 13 e0 ldi r17, 0x03 ; 3
4a: a8 e7 ldi r26, 0x78 ; 120
4c: b0 e0 ldi r27, 0x00 ; 0
4e: 01 c0 rjmp .+2 ; 0x52 <.do_clear_bss_start>
 
00000050 <.do_clear_bss_loop>:
50: 1d 92 st X+, r1
 
00000052 <.do_clear_bss_start>:
52: a0 3a cpi r26, 0xA0 ; 160
54: b1 07 cpc r27, r17
56: e1 f7 brne .-8 ; 0x50 <.do_clear_bss_loop>
58: 46 d4 rcall .+2188 ; 0x8e6 <main>
5a: b5 cd rjmp .-1174 ; 0xfffffbc6 <__eeprom_end+0xff7efbc6>
 
0000005c <__bad_interrupt>:
5c: d1 cf rjmp .-94 ; 0x0 <__vectors>
 
0000005e <SetPWM>:
//
void SetPWM(void)
//############################################################################
{
unsigned char tmp_pwm;
tmp_pwm = PWM;
5e: 40 91 78 00 lds r20, 0x0078
if(tmp_pwm > MaxPWM) // Strombegrenzung
62: 80 91 64 00 lds r24, 0x0064
66: 84 17 cp r24, r20
68: 10 f4 brcc .+4 ; 0x6e <SetPWM+0x10>
{
tmp_pwm = MaxPWM;
PORTC |= ROT;
6a: ab 9a sbi 0x15, 3 ; 21
6c: 48 2f mov r20, r24
}
if(Strom > MAX_STROM) // Strombegrenzung
6e: 20 91 7a 00 lds r18, 0x007A
72: 30 91 7b 00 lds r19, 0x007B
76: 29 3c cpi r18, 0xC9 ; 201
78: 31 05 cpc r19, r1
7a: c8 f0 brcs .+50 ; 0xae <SetPWM+0x50>
{
OCR1A = 0; OCR1B = 0; OCR2 = 0;
7c: 1b bc out 0x2b, r1 ; 43
7e: 1a bc out 0x2a, r1 ; 42
80: 19 bc out 0x29, r1 ; 41
82: 18 bc out 0x28, r1 ; 40
84: 13 bc out 0x23, r1 ; 35
PORTD &= ~0x38;
86: 82 b3 in r24, 0x12 ; 18
88: 87 7c andi r24, 0xC7 ; 199
8a: 82 bb out 0x12, r24 ; 18
PORTC |= ROT;
8c: ab 9a sbi 0x15, 3 ; 21
DebugOut.Analog[6]++;
8e: 80 91 90 03 lds r24, 0x0390
92: 90 91 91 03 lds r25, 0x0391
96: 01 96 adiw r24, 0x01 ; 1
98: 90 93 91 03 sts 0x0391, r25
9c: 80 93 90 03 sts 0x0390, r24
Strom--;
a0: 21 50 subi r18, 0x01 ; 1
a2: 30 40 sbci r19, 0x00 ; 0
a4: 30 93 7b 00 sts 0x007B, r19
a8: 20 93 7a 00 sts 0x007A, r18
ac: 08 95 ret
OCR1A = tmp_pwm; OCR1B = tmp_pwm; OCR2 = tmp_pwm;
#endif
 
#ifdef _16KHZ
//OCR1A = 2 * (int)tmp_pwm; OCR1B = 2 * (int)tmp_pwm; OCR2 = tmp_pwm;
OCR1A = tmp_pwm; OCR1B = tmp_pwm; OCR2 = tmp_pwm;
ae: 84 2f mov r24, r20
b0: 90 e0 ldi r25, 0x00 ; 0
b2: 9b bd out 0x2b, r25 ; 43
b4: 8a bd out 0x2a, r24 ; 42
b6: 99 bd out 0x29, r25 ; 41
b8: 88 bd out 0x28, r24 ; 40
ba: 43 bd out 0x23, r20 ; 35
bc: 08 95 ret
 
000000be <DebugAusgaben>:
}
}
 
void DebugAusgaben(void)
{
DebugOut.Analog[0] = Strom;
be: e4 e8 ldi r30, 0x84 ; 132
c0: f3 e0 ldi r31, 0x03 ; 3
c2: 80 91 7a 00 lds r24, 0x007A
c6: 90 91 7b 00 lds r25, 0x007B
ca: 90 93 85 03 sts 0x0385, r25
ce: 80 93 84 03 sts 0x0384, r24
DebugOut.Analog[1] = Mittelstrom;
d2: 80 91 7d 00 lds r24, 0x007D
d6: 80 93 86 03 sts 0x0386, r24
da: 13 82 std Z+3, r1 ; 0x03
DebugOut.Analog[2] = SIO_Drehzahl;
dc: 80 91 8b 00 lds r24, 0x008B
e0: 90 91 8c 00 lds r25, 0x008C
e4: 90 93 89 03 sts 0x0389, r25
e8: 80 93 88 03 sts 0x0388, r24
DebugOut.Analog[3] = PPM_Signal;
ec: 80 91 a5 00 lds r24, 0x00A5
f0: 90 91 a6 00 lds r25, 0x00A6
f4: 90 93 8b 03 sts 0x038B, r25
f8: 80 93 8a 03 sts 0x038A, r24
DebugOut.Analog[4] = OCR2;
fc: 83 b5 in r24, 0x23 ; 35
fe: 80 93 8c 03 sts 0x038C, r24
102: 11 86 std Z+9, r1 ; 0x09
// DebugOut.Analog[5] = PWM;
}
104: 08 95 ret
 
00000106 <PWM_Init>:
//############################################################################
//
void PWM_Init(void)
//############################################################################
{
PWM_OFF;
106: 1b bc out 0x2b, r1 ; 43
108: 1a bc out 0x2a, r1 ; 42
10a: 19 bc out 0x29, r1 ; 41
10c: 18 bc out 0x28, r1 ; 40
10e: 13 bc out 0x23, r1 ; 35
110: 91 e0 ldi r25, 0x01 ; 1
112: 9f bd out 0x2f, r25 ; 47
114: 81 e4 ldi r24, 0x41 ; 65
116: 85 bd out 0x25, r24 ; 37
118: 8e e0 ldi r24, 0x0E ; 14
11a: 87 bb out 0x17, r24 ; 23
11c: 88 b3 in r24, 0x18 ; 24
11e: 81 7f andi r24, 0xF1 ; 241
120: 88 bb out 0x18, r24 ; 24
TCCR1B = (1 << CS10) | (0 << CS11) | (0 << CS12) | (0 << WGM12) |
122: 9e bd out 0x2e, r25 ; 46
(0 << WGM13) | (0<< ICES1) | (0 << ICNC1);
/* TCCR1B = (1 << CS10) | (0 << CS11) | (0 << CS12) | (1 << WGM12) |
(0 << WGM13) | (0<< ICES1) | (0 << ICNC1);
*/
}
124: 08 95 ret
 
00000126 <Wait>:
//############################################################################
//
void Wait(unsigned char dauer)
//############################################################################
{
dauer = (unsigned char)TCNT0 + dauer;
126: 92 b7 in r25, 0x32 ; 50
128: 98 0f add r25, r24
while((TCNT0 - dauer) & 0x80);
12a: 82 b7 in r24, 0x32 ; 50
12c: 89 1b sub r24, r25
12e: 87 fd sbrc r24, 7
130: fc cf rjmp .-8 ; 0x12a <Wait+0x4>
}
132: 08 95 ret
 
00000134 <Delay>:
}
return(0);
}
 
unsigned char Delay(unsigned int timer)
{
134: 01 c0 rjmp .+2 ; 0x138 <Delay+0x4>
while(timer--)
{
// if(SENSE_H) { PORTC |= ROT; } else { PORTC &= ~ROT;}
asm volatile("");
136: 01 97 sbiw r24, 0x01 ; 1
return(0);
}
 
unsigned char Delay(unsigned int timer)
{
while(timer--)
138: 00 97 sbiw r24, 0x00 ; 0
13a: e9 f7 brne .-6 ; 0x136 <Delay+0x2>
{
// if(SENSE_H) { PORTC |= ROT; } else { PORTC &= ~ROT;}
asm volatile("");
}
return(0);
}
13c: 80 e0 ldi r24, 0x00 ; 0
13e: 08 95 ret
 
00000140 <SollwertErmittlung>:
unsigned char SollwertErmittlung(void)
//############################################################################
{
static unsigned int sollwert = 0;
unsigned int ppm;
if(!I2C_Timeout) // bei Erreichen von 0 ist der Wert ungültig
140: 80 91 80 00 lds r24, 0x0080
144: 90 91 81 00 lds r25, 0x0081
148: 89 2b or r24, r25
14a: 09 f0 breq .+2 ; 0x14e <SollwertErmittlung+0xe>
14c: 59 c0 rjmp .+178 ; 0x200 <SollwertErmittlung+0xc0>
{
if(SIO_Timeout) // es gibt gültige SIO-Daten
14e: 80 91 82 00 lds r24, 0x0082
152: 90 91 83 00 lds r25, 0x0083
156: 89 2b or r24, r25
158: 99 f0 breq .+38 ; 0x180 <SollwertErmittlung+0x40>
{
sollwert = (MAX_PWM * (unsigned int) SIO_Sollwert) / 200; // skalieren auf 0-200 = 0-255
15a: 90 91 90 00 lds r25, 0x0090
15e: 8f ef ldi r24, 0xFF ; 255
160: 98 9f mul r25, r24
162: c0 01 movw r24, r0
164: 11 24 eor r1, r1
166: 68 ec ldi r22, 0xC8 ; 200
168: 70 e0 ldi r23, 0x00 ; 0
16a: 86 db rcall .-2292 ; 0xfffff878 <__eeprom_end+0xff7ef878>
16c: 70 93 8f 00 sts 0x008F, r23
170: 60 93 8e 00 sts 0x008E, r22
PPM_Betrieb = 0;
174: 10 92 67 00 sts 0x0067, r1
ICP_INT_DISABLE;
178: 89 b7 in r24, 0x39 ; 57
17a: 8f 7d andi r24, 0xDF ; 223
17c: 89 bf out 0x39, r24 ; 57
17e: 31 c0 rjmp .+98 ; 0x1e2 <SollwertErmittlung+0xa2>
PORTC &= ~ROT;
}
else
if(anz_ppm_werte > 20) // es gibt gültige PPM-Daten
180: 80 91 a9 00 lds r24, 0x00A9
184: 85 31 cpi r24, 0x15 ; 21
186: 78 f1 brcs .+94 ; 0x1e6 <SollwertErmittlung+0xa6>
{
PPM_Betrieb = 1;
188: 81 e0 ldi r24, 0x01 ; 1
18a: 80 93 67 00 sts 0x0067, r24
ppm = PPM_Signal;
18e: 20 91 a5 00 lds r18, 0x00A5
192: 30 91 a6 00 lds r19, 0x00A6
if(ppm > 300) ppm = 0; // ungültiges Signal
196: 41 e0 ldi r20, 0x01 ; 1
198: 2d 32 cpi r18, 0x2D ; 45
19a: 34 07 cpc r19, r20
19c: 30 f4 brcc .+12 ; 0x1aa <SollwertErmittlung+0x6a>
if(ppm > 200) ppm = 200;
19e: 29 3c cpi r18, 0xC9 ; 201
1a0: 31 05 cpc r19, r1
1a2: 40 f4 brcc .+16 ; 0x1b4 <SollwertErmittlung+0x74>
if(ppm <= MIN_PPM) sollwert = 0;
1a4: 2b 30 cpi r18, 0x0B ; 11
1a6: 31 05 cpc r19, r1
1a8: 38 f4 brcc .+14 ; 0x1b8 <SollwertErmittlung+0x78>
1aa: 10 92 8f 00 sts 0x008F, r1
1ae: 10 92 8e 00 sts 0x008E, r1
1b2: 17 c0 rjmp .+46 ; 0x1e2 <SollwertErmittlung+0xa2>
1b4: 28 ec ldi r18, 0xC8 ; 200
1b6: 30 e0 ldi r19, 0x00 ; 0
else
{
sollwert = (int) MIN_PWM + ((MAX_PWM - MIN_PWM) * (ppm - MIN_PPM)) / (190 - MIN_PPM);
1b8: 8c ef ldi r24, 0xFC ; 252
1ba: 90 e0 ldi r25, 0x00 ; 0
1bc: ac 01 movw r20, r24
1be: 24 9f mul r18, r20
1c0: c0 01 movw r24, r0
1c2: 25 9f mul r18, r21
1c4: 90 0d add r25, r0
1c6: 34 9f mul r19, r20
1c8: 90 0d add r25, r0
1ca: 11 24 eor r1, r1
1cc: 88 5d subi r24, 0xD8 ; 216
1ce: 99 40 sbci r25, 0x09 ; 9
1d0: 64 eb ldi r22, 0xB4 ; 180
1d2: 70 e0 ldi r23, 0x00 ; 0
1d4: 51 db rcall .-2398 ; 0xfffff878 <__eeprom_end+0xff7ef878>
1d6: 6d 5f subi r22, 0xFD ; 253
1d8: 7f 4f sbci r23, 0xFF ; 255
1da: 70 93 8f 00 sts 0x008F, r23
1de: 60 93 8e 00 sts 0x008E, r22
}
PORTC &= ~ROT;
1e2: ab 98 cbi 0x15, 3 ; 21
1e4: 19 c0 rjmp .+50 ; 0x218 <SollwertErmittlung+0xd8>
}
else // Kein gültiger Sollwert
{
if(!TEST_SCHUB) { if(sollwert) sollwert--; }
1e6: 80 91 8e 00 lds r24, 0x008E
1ea: 90 91 8f 00 lds r25, 0x008F
1ee: 00 97 sbiw r24, 0x00 ; 0
1f0: 29 f0 breq .+10 ; 0x1fc <SollwertErmittlung+0xbc>
1f2: 01 97 sbiw r24, 0x01 ; 1
1f4: 90 93 8f 00 sts 0x008F, r25
1f8: 80 93 8e 00 sts 0x008E, r24
PORTC |= ROT;
1fc: ab 9a sbi 0x15, 3 ; 21
1fe: 0c c0 rjmp .+24 ; 0x218 <SollwertErmittlung+0xd8>
}
}
else // I2C-Daten sind gültig
{
sollwert = I2C_RXBuffer;
200: 80 91 95 03 lds r24, 0x0395
204: 80 93 8e 00 sts 0x008E, r24
208: 10 92 8f 00 sts 0x008F, r1
PPM_Betrieb = 0;
20c: 10 92 67 00 sts 0x0067, r1
PORTC &= ~ROT;
210: ab 98 cbi 0x15, 3 ; 21
ICP_INT_DISABLE;
212: 89 b7 in r24, 0x39 ; 57
214: 8f 7d andi r24, 0xDF ; 223
216: 89 bf out 0x39, r24 ; 57
}
if(sollwert > MAX_PWM) sollwert = MAX_PWM;
218: 80 91 8e 00 lds r24, 0x008E
21c: 90 91 8f 00 lds r25, 0x008F
220: 8f 3f cpi r24, 0xFF ; 255
222: 91 05 cpc r25, r1
224: 39 f0 breq .+14 ; 0x234 <SollwertErmittlung+0xf4>
226: 30 f0 brcs .+12 ; 0x234 <SollwertErmittlung+0xf4>
228: 8f ef ldi r24, 0xFF ; 255
22a: 90 e0 ldi r25, 0x00 ; 0
22c: 90 93 8f 00 sts 0x008F, r25
230: 80 93 8e 00 sts 0x008E, r24
return(sollwert);
}
234: 80 91 8e 00 lds r24, 0x008E
238: 08 95 ret
 
0000023a <DelayM>:
*/
 
 
#define TEST_STROMGRENZE 120
unsigned char DelayM(unsigned int timer)
{
23a: cf 93 push r28
23c: df 93 push r29
23e: ec 01 movw r28, r24
240: 17 c0 rjmp .+46 ; 0x270 <DelayM+0x36>
while(timer--)
{
FastADConvert();
242: 5f d8 rcall .-3906 ; 0xfffff302 <__eeprom_end+0xff7ef302>
244: 21 97 sbiw r28, 0x01 ; 1
if(Strom > (TEST_STROMGRENZE + RuheStrom))
246: 80 91 b5 02 lds r24, 0x02B5
24a: 90 91 b6 02 lds r25, 0x02B6
24e: 88 58 subi r24, 0x88 ; 136
250: 9f 4f sbci r25, 0xFF ; 255
252: 20 91 7a 00 lds r18, 0x007A
256: 30 91 7b 00 lds r19, 0x007B
25a: 82 17 cp r24, r18
25c: 93 07 cpc r25, r19
25e: 40 f4 brcc .+16 ; 0x270 <DelayM+0x36>
{
FETS_OFF;
260: 82 b3 in r24, 0x12 ; 18
262: 87 7c andi r24, 0xC7 ; 199
264: 82 bb out 0x12, r24 ; 18
266: 88 b3 in r24, 0x18 ; 24
268: 81 7f andi r24, 0xF1 ; 241
26a: 88 bb out 0x18, r24 ; 24
26c: 81 e0 ldi r24, 0x01 ; 1
26e: 03 c0 rjmp .+6 ; 0x276 <DelayM+0x3c>
 
 
#define TEST_STROMGRENZE 120
unsigned char DelayM(unsigned int timer)
{
while(timer--)
270: 20 97 sbiw r28, 0x00 ; 0
272: 39 f7 brne .-50 ; 0x242 <DelayM+0x8>
274: 80 e0 ldi r24, 0x00 ; 0
FETS_OFF;
return(1);
}
}
return(0);
}
276: df 91 pop r29
278: cf 91 pop r28
27a: 08 95 ret
 
0000027c <RotBlink>:
dauer = (unsigned char)TCNT0 + dauer;
while((TCNT0 - dauer) & 0x80);
}
 
void RotBlink(unsigned char anz)
{
27c: 1f 93 push r17
27e: 18 2f mov r17, r24
sei(); // Interrupts ein
280: 78 94 sei
282: 09 c0 rjmp .+18 ; 0x296 <RotBlink+0x1a>
while(anz--)
{
PORTC |= ROT;
284: ab 9a sbi 0x15, 3 ; 21
Delay_ms(300);
286: 8c e2 ldi r24, 0x2C ; 44
288: 91 e0 ldi r25, 0x01 ; 1
28a: d2 d7 rcall .+4004 ; 0x1230 <Delay_ms>
PORTC &= ~ROT;
28c: ab 98 cbi 0x15, 3 ; 21
Delay_ms(300);
28e: 8c e2 ldi r24, 0x2C ; 44
290: 91 e0 ldi r25, 0x01 ; 1
292: ce d7 rcall .+3996 ; 0x1230 <Delay_ms>
294: 11 50 subi r17, 0x01 ; 1
}
 
void RotBlink(unsigned char anz)
{
sei(); // Interrupts ein
while(anz--)
296: 11 23 and r17, r17
298: a9 f7 brne .-22 ; 0x284 <RotBlink+0x8>
PORTC |= ROT;
Delay_ms(300);
PORTC &= ~ROT;
Delay_ms(300);
}
Delay_ms(1000);
29a: 88 ee ldi r24, 0xE8 ; 232
29c: 93 e0 ldi r25, 0x03 ; 3
29e: c8 d7 rcall .+3984 ; 0x1230 <Delay_ms>
}
2a0: 1f 91 pop r17
2a2: 08 95 ret
 
000002a4 <MotorTon>:
#define LOW_B_EIN PORTD |= 0x10
#define LOW_C_EIN PORTD |= 0x20
 
void MotorTon(void)
//############################################################################
{
2a4: af 92 push r10
2a6: bf 92 push r11
2a8: df 92 push r13
2aa: ef 92 push r14
2ac: ff 92 push r15
2ae: 0f 93 push r16
2b0: 1f 93 push r17
2b2: df 93 push r29
2b4: cf 93 push r28
2b6: cd b7 in r28, 0x3d ; 61
2b8: de b7 in r29, 0x3e ; 62
2ba: 27 97 sbiw r28, 0x07 ; 7
2bc: 0f b6 in r0, 0x3f ; 63
2be: f8 94 cli
2c0: de bf out 0x3e, r29 ; 62
2c2: 0f be out 0x3f, r0 ; 63
2c4: cd bf out 0x3d, r28 ; 61
unsigned char ADR_TAB[7] = {0,0,0,1,1,2,2};
2c6: de 01 movw r26, r28
2c8: 11 96 adiw r26, 0x01 ; 1
2ca: e8 e6 ldi r30, 0x68 ; 104
2cc: f0 e0 ldi r31, 0x00 ; 0
2ce: 87 e0 ldi r24, 0x07 ; 7
2d0: 01 90 ld r0, Z+
2d2: 0d 92 st X+, r0
2d4: 81 50 subi r24, 0x01 ; 1
2d6: e1 f7 brne .-8 ; 0x2d0 <MotorTon+0x2c>
unsigned int timer = 300,i;
unsigned int t = 0;
unsigned char anz = 0,MosfetOkay = 0, grenze = 50;
 
PORTC &= ~ROT;
2d8: ab 98 cbi 0x15, 3 ; 21
Delay_ms(300 * ADR_TAB[MotorAdresse]);
2da: 80 91 66 00 lds r24, 0x0066
2de: fe 01 movw r30, r28
2e0: e8 0f add r30, r24
2e2: f1 1d adc r31, r1
2e4: 81 81 ldd r24, Z+1 ; 0x01
2e6: 90 e0 ldi r25, 0x00 ; 0
2e8: 2c e2 ldi r18, 0x2C ; 44
2ea: 31 e0 ldi r19, 0x01 ; 1
2ec: ac 01 movw r20, r24
2ee: 42 9f mul r20, r18
2f0: c0 01 movw r24, r0
2f2: 43 9f mul r20, r19
2f4: 90 0d add r25, r0
2f6: 52 9f mul r21, r18
2f8: 90 0d add r25, r0
2fa: 11 24 eor r1, r1
2fc: 99 d7 rcall .+3890 ; 0x1230 <Delay_ms>
DISABLE_SENSE_INT;
2fe: 10 92 b1 00 sts 0x00B1, r1
302: 43 98 cbi 0x08, 3 ; 8
cli();//Globale Interrupts Ausschalten
304: f8 94 cli
uart_putchar('\n');
306: 8a e0 ldi r24, 0x0A ; 10
308: df d5 rcall .+3006 ; 0xec8 <uart_putchar>
STEUER_OFF;
30a: 82 b3 in r24, 0x12 ; 18
30c: 87 7c andi r24, 0xC7 ; 199
30e: 82 bb out 0x12, r24 ; 18
310: 1b bc out 0x2b, r1 ; 43
312: 1a bc out 0x2a, r1 ; 42
314: 19 bc out 0x29, r1 ; 41
316: 18 bc out 0x28, r1 ; 40
318: 13 bc out 0x23, r1 ; 35
31a: 81 e0 ldi r24, 0x01 ; 1
31c: 8f bd out 0x2f, r24 ; 47
31e: 81 e4 ldi r24, 0x41 ; 65
320: 85 bd out 0x25, r24 ; 37
322: 8e e0 ldi r24, 0x0E ; 14
324: 87 bb out 0x17, r24 ; 23
326: 88 b3 in r24, 0x18 ; 24
328: 81 7f andi r24, 0xF1 ; 241
32a: 88 bb out 0x18, r24 ; 24
Strom_max = 0;
32c: 10 92 7c 00 sts 0x007C, r1
DelayM(50);
330: 82 e3 ldi r24, 0x32 ; 50
332: 90 e0 ldi r25, 0x00 ; 0
334: 82 df rcall .-252 ; 0x23a <DelayM>
RuheStrom = Strom_max;
336: 80 91 7c 00 lds r24, 0x007C
33a: 80 93 b5 02 sts 0x02B5, r24
33e: 10 92 b6 02 sts 0x02B6, r1
// uart_putchar(RuheStrom + 'A');
//+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
//+ High-Mosfets auf Kurzschluss testen
//+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Strom = 0;
342: 10 92 7b 00 sts 0x007B, r1
346: 10 92 7a 00 sts 0x007A, r1
if(anz) while(1) RotBlink(anz); // bei Kurzschluss nicht starten
*/
//+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
//+ LOW-Mosfets auf Schalten und Kurzschluss testen
//+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
if(UDR == ' ') {t = 65535; grenze = 40; uart_putchar('_');} else t = 1000; // Ausführlicher Test
34a: 8c b1 in r24, 0x0c ; 12
34c: 80 32 cpi r24, 0x20 ; 32
34e: 31 f0 breq .+12 ; 0x35c <MotorTon+0xb8>
350: 38 ee ldi r19, 0xE8 ; 232
352: e3 2e mov r14, r19
354: 33 e0 ldi r19, 0x03 ; 3
356: f3 2e mov r15, r19
358: 82 e3 ldi r24, 0x32 ; 50
35a: 06 c0 rjmp .+12 ; 0x368 <MotorTon+0xc4>
35c: 8f e5 ldi r24, 0x5F ; 95
35e: b4 d5 rcall .+2920 ; 0xec8 <uart_putchar>
360: ee 24 eor r14, r14
362: ea 94 dec r14
364: fe 2c mov r15, r14
366: 88 e2 ldi r24, 0x28 ; 40
Strom = 0;
368: 10 92 7b 00 sts 0x007B, r1
36c: 10 92 7a 00 sts 0x007A, r1
370: 00 e0 ldi r16, 0x00 ; 0
372: 10 e0 ldi r17, 0x00 ; 0
FETS_OFF;
Delay(5);
HIGH_A_EIN;
DelayM(1);
FETS_OFF;
if(Strom > grenze + RuheStrom) {anz = 4; uart_putchar('4'); FETS_OFF; break;}
374: a8 2e mov r10, r24
376: bb 24 eor r11, r11
//+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
if(UDR == ' ') {t = 65535; grenze = 40; uart_putchar('_');} else t = 1000; // Ausführlicher Test
Strom = 0;
for(i=0;i<t;i++)
{
LOW_A_EIN;
378: 93 9a sbi 0x12, 3 ; 18
DelayM(1);
37a: 81 e0 ldi r24, 0x01 ; 1
37c: 90 e0 ldi r25, 0x00 ; 0
37e: 5d df rcall .-326 ; 0x23a <DelayM>
FETS_OFF;
380: 82 b3 in r24, 0x12 ; 18
382: 87 7c andi r24, 0xC7 ; 199
384: 82 bb out 0x12, r24 ; 18
386: 88 b3 in r24, 0x18 ; 24
388: 81 7f andi r24, 0xF1 ; 241
38a: 88 bb out 0x18, r24 ; 24
Delay(5);
HIGH_A_EIN;
38c: c3 9a sbi 0x18, 3 ; 24
DelayM(1);
38e: 81 e0 ldi r24, 0x01 ; 1
390: 90 e0 ldi r25, 0x00 ; 0
392: 53 df rcall .-346 ; 0x23a <DelayM>
FETS_OFF;
394: 82 b3 in r24, 0x12 ; 18
396: 87 7c andi r24, 0xC7 ; 199
398: 82 bb out 0x12, r24 ; 18
39a: 88 b3 in r24, 0x18 ; 24
39c: 81 7f andi r24, 0xF1 ; 241
39e: 88 bb out 0x18, r24 ; 24
if(Strom > grenze + RuheStrom) {anz = 4; uart_putchar('4'); FETS_OFF; break;}
3a0: 80 91 b5 02 lds r24, 0x02B5
3a4: 90 91 b6 02 lds r25, 0x02B6
3a8: 8a 0d add r24, r10
3aa: 9b 1d adc r25, r11
3ac: 20 91 7a 00 lds r18, 0x007A
3b0: 30 91 7b 00 lds r19, 0x007B
3b4: 82 17 cp r24, r18
3b6: 93 07 cpc r25, r19
3b8: 38 f0 brcs .+14 ; 0x3c8 <MotorTon+0x124>
//+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
//+ LOW-Mosfets auf Schalten und Kurzschluss testen
//+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
if(UDR == ' ') {t = 65535; grenze = 40; uart_putchar('_');} else t = 1000; // Ausführlicher Test
Strom = 0;
for(i=0;i<t;i++)
3ba: 0f 5f subi r16, 0xFF ; 255
3bc: 1f 4f sbci r17, 0xFF ; 255
3be: 0e 15 cp r16, r14
3c0: 1f 05 cpc r17, r15
3c2: d0 f2 brcs .-76 ; 0x378 <MotorTon+0xd4>
3c4: dd 24 eor r13, r13
3c6: 0a c0 rjmp .+20 ; 0x3dc <MotorTon+0x138>
FETS_OFF;
Delay(5);
HIGH_A_EIN;
DelayM(1);
FETS_OFF;
if(Strom > grenze + RuheStrom) {anz = 4; uart_putchar('4'); FETS_OFF; break;}
3c8: 84 e3 ldi r24, 0x34 ; 52
3ca: 7e d5 rcall .+2812 ; 0xec8 <uart_putchar>
3cc: 82 b3 in r24, 0x12 ; 18
3ce: 87 7c andi r24, 0xC7 ; 199
3d0: 82 bb out 0x12, r24 ; 18
3d2: 88 b3 in r24, 0x18 ; 24
3d4: 81 7f andi r24, 0xF1 ; 241
3d6: 88 bb out 0x18, r24 ; 24
3d8: 24 e0 ldi r18, 0x04 ; 4
3da: d2 2e mov r13, r18
3dc: 80 e1 ldi r24, 0x10 ; 16
3de: 97 e2 ldi r25, 0x27 ; 39
3e0: 00 c0 rjmp .+0 ; 0x3e2 <MotorTon+0x13e>
return(0);
}
 
unsigned char Delay(unsigned int timer)
{
while(timer--)
3e2: 01 97 sbiw r24, 0x01 ; 1
3e4: 5f ef ldi r21, 0xFF ; 255
3e6: 8f 3f cpi r24, 0xFF ; 255
3e8: 95 07 cpc r25, r21
3ea: d9 f7 brne .-10 ; 0x3e2 <MotorTon+0x13e>
if(Strom > grenze + RuheStrom) {anz = 4; uart_putchar('4'); FETS_OFF; break;}
Delay(5);
}
Delay(10000);
 
Strom = 0;
3ec: 10 92 7b 00 sts 0x007B, r1
3f0: 10 92 7a 00 sts 0x007A, r1
3f4: 00 e0 ldi r16, 0x00 ; 0
3f6: 10 e0 ldi r17, 0x00 ; 0
for(i=0;i<t;i++)
{
LOW_B_EIN;
3f8: 94 9a sbi 0x12, 4 ; 18
DelayM(1);
3fa: 81 e0 ldi r24, 0x01 ; 1
3fc: 90 e0 ldi r25, 0x00 ; 0
3fe: 1d df rcall .-454 ; 0x23a <DelayM>
FETS_OFF;
400: 82 b3 in r24, 0x12 ; 18
402: 87 7c andi r24, 0xC7 ; 199
404: 82 bb out 0x12, r24 ; 18
406: 88 b3 in r24, 0x18 ; 24
408: 81 7f andi r24, 0xF1 ; 241
40a: 88 bb out 0x18, r24 ; 24
Delay(5);
HIGH_B_EIN;
40c: c2 9a sbi 0x18, 2 ; 24
DelayM(1);
40e: 81 e0 ldi r24, 0x01 ; 1
410: 90 e0 ldi r25, 0x00 ; 0
412: 13 df rcall .-474 ; 0x23a <DelayM>
FETS_OFF;
414: 82 b3 in r24, 0x12 ; 18
416: 87 7c andi r24, 0xC7 ; 199
418: 82 bb out 0x12, r24 ; 18
41a: 88 b3 in r24, 0x18 ; 24
41c: 81 7f andi r24, 0xF1 ; 241
41e: 88 bb out 0x18, r24 ; 24
if(Strom > grenze + RuheStrom) {anz = 5; uart_putchar('5'); FETS_OFF;break;}
420: 80 91 b5 02 lds r24, 0x02B5
424: 90 91 b6 02 lds r25, 0x02B6
428: 8a 0d add r24, r10
42a: 9b 1d adc r25, r11
42c: 20 91 7a 00 lds r18, 0x007A
430: 30 91 7b 00 lds r19, 0x007B
434: 82 17 cp r24, r18
436: 93 07 cpc r25, r19
438: 30 f0 brcs .+12 ; 0x446 <MotorTon+0x1a2>
Delay(5);
}
Delay(10000);
 
Strom = 0;
for(i=0;i<t;i++)
43a: 0f 5f subi r16, 0xFF ; 255
43c: 1f 4f sbci r17, 0xFF ; 255
43e: 0e 15 cp r16, r14
440: 1f 05 cpc r17, r15
442: d0 f2 brcs .-76 ; 0x3f8 <MotorTon+0x154>
444: 0a c0 rjmp .+20 ; 0x45a <MotorTon+0x1b6>
FETS_OFF;
Delay(5);
HIGH_B_EIN;
DelayM(1);
FETS_OFF;
if(Strom > grenze + RuheStrom) {anz = 5; uart_putchar('5'); FETS_OFF;break;}
446: 85 e3 ldi r24, 0x35 ; 53
448: 3f d5 rcall .+2686 ; 0xec8 <uart_putchar>
44a: 82 b3 in r24, 0x12 ; 18
44c: 87 7c andi r24, 0xC7 ; 199
44e: 82 bb out 0x12, r24 ; 18
450: 88 b3 in r24, 0x18 ; 24
452: 81 7f andi r24, 0xF1 ; 241
454: 88 bb out 0x18, r24 ; 24
456: 95 e0 ldi r25, 0x05 ; 5
458: d9 2e mov r13, r25
Delay(5);
}
 
Strom = 0;
45a: 10 92 7b 00 sts 0x007B, r1
45e: 10 92 7a 00 sts 0x007A, r1
462: 80 e1 ldi r24, 0x10 ; 16
464: 97 e2 ldi r25, 0x27 ; 39
466: 00 c0 rjmp .+0 ; 0x468 <__stack+0x9>
return(0);
}
 
unsigned char Delay(unsigned int timer)
{
while(timer--)
468: 01 97 sbiw r24, 0x01 ; 1
46a: 2f ef ldi r18, 0xFF ; 255
46c: 8f 3f cpi r24, 0xFF ; 255
46e: 92 07 cpc r25, r18
470: d9 f7 brne .-10 ; 0x468 <__stack+0x9>
472: 00 e0 ldi r16, 0x00 ; 0
474: 10 e0 ldi r17, 0x00 ; 0
Strom = 0;
Delay(10000);
 
for(i=0;i<t;i++)
{
LOW_C_EIN;
476: 95 9a sbi 0x12, 5 ; 18
DelayM(1);
478: 81 e0 ldi r24, 0x01 ; 1
47a: 90 e0 ldi r25, 0x00 ; 0
47c: de de rcall .-580 ; 0x23a <DelayM>
FETS_OFF;
47e: 82 b3 in r24, 0x12 ; 18
480: 87 7c andi r24, 0xC7 ; 199
482: 82 bb out 0x12, r24 ; 18
484: 88 b3 in r24, 0x18 ; 24
486: 81 7f andi r24, 0xF1 ; 241
488: 88 bb out 0x18, r24 ; 24
Delay(5);
HIGH_C_EIN;
48a: c1 9a sbi 0x18, 1 ; 24
DelayM(1);
48c: 81 e0 ldi r24, 0x01 ; 1
48e: 90 e0 ldi r25, 0x00 ; 0
490: d4 de rcall .-600 ; 0x23a <DelayM>
FETS_OFF;
492: 82 b3 in r24, 0x12 ; 18
494: 87 7c andi r24, 0xC7 ; 199
496: 82 bb out 0x12, r24 ; 18
498: 88 b3 in r24, 0x18 ; 24
49a: 81 7f andi r24, 0xF1 ; 241
49c: 88 bb out 0x18, r24 ; 24
if(Strom > grenze + RuheStrom) {anz = 6; uart_putchar('6'); FETS_OFF; break;}
49e: 80 91 b5 02 lds r24, 0x02B5
4a2: 90 91 b6 02 lds r25, 0x02B6
4a6: 8a 0d add r24, r10
4a8: 9b 1d adc r25, r11
4aa: 20 91 7a 00 lds r18, 0x007A
4ae: 30 91 7b 00 lds r19, 0x007B
4b2: 82 17 cp r24, r18
4b4: 93 07 cpc r25, r19
4b6: 30 f0 brcs .+12 ; 0x4c4 <__stack+0x65>
}
 
Strom = 0;
Delay(10000);
 
for(i=0;i<t;i++)
4b8: 0f 5f subi r16, 0xFF ; 255
4ba: 1f 4f sbci r17, 0xFF ; 255
4bc: 0e 15 cp r16, r14
4be: 1f 05 cpc r17, r15
4c0: d0 f2 brcs .-76 ; 0x476 <__stack+0x17>
4c2: 0b c0 rjmp .+22 ; 0x4da <__stack+0x7b>
FETS_OFF;
Delay(5);
HIGH_C_EIN;
DelayM(1);
FETS_OFF;
if(Strom > grenze + RuheStrom) {anz = 6; uart_putchar('6'); FETS_OFF; break;}
4c4: 86 e3 ldi r24, 0x36 ; 54
4c6: 00 d5 rcall .+2560 ; 0xec8 <uart_putchar>
4c8: 82 b3 in r24, 0x12 ; 18
4ca: 87 7c andi r24, 0xC7 ; 199
4cc: 82 bb out 0x12, r24 ; 18
4ce: 88 b3 in r24, 0x18 ; 24
4d0: 81 7f andi r24, 0xF1 ; 241
4d2: 88 bb out 0x18, r24 ; 24
4d4: 86 e0 ldi r24, 0x06 ; 6
4d6: d8 2e mov r13, r24
4d8: 02 c0 rjmp .+4 ; 0x4de <__stack+0x7f>
Delay(5);
}
 
if(anz) while(1) RotBlink(anz); // bei Kurzschluss nicht starten
4da: dd 20 and r13, r13
4dc: 19 f0 breq .+6 ; 0x4e4 <__stack+0x85>
4de: 8d 2d mov r24, r13
4e0: cd de rcall .-614 ; 0x27c <RotBlink>
4e2: fd cf rjmp .-6 ; 0x4de <__stack+0x7f>
 
//+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
//+ High-Mosfets auf Schalten testen
//+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
SENSE_A;
4e4: 80 91 8d 00 lds r24, 0x008D
4e8: 87 b9 out 0x07, r24 ; 7
FETS_OFF;
4ea: 82 b3 in r24, 0x12 ; 18
4ec: 87 7c andi r24, 0xC7 ; 199
4ee: 82 bb out 0x12, r24 ; 18
4f0: 88 b3 in r24, 0x18 ; 24
4f2: 81 7f andi r24, 0xF1 ; 241
4f4: 88 bb out 0x18, r24 ; 24
LOW_B_EIN; // Low B ein
4f6: 94 9a sbi 0x12, 4 ; 18
LOW_C_EIN; // Low C ein
4f8: 95 9a sbi 0x12, 5 ; 18
Strom = 0;
4fa: 10 92 7b 00 sts 0x007B, r1
4fe: 10 92 7a 00 sts 0x007A, r1
502: 00 e0 ldi r16, 0x00 ; 0
504: 10 e0 ldi r17, 0x00 ; 0
506: ff 24 eor r15, r15
#define SOUND2_A 330
#define SOUND3_A 360
 
for(i=0; i< (TONDAUER / SOUND2_A) ; i++)
{
HIGH_A_EIN; // Test A
508: c3 9a sbi 0x18, 3 ; 24
Delay(SOUND_E);
if(MessAD(0) > 50) { MosfetOkay |= 0x01; } else { MosfetOkay &= ~0x01;};
50a: 80 e0 ldi r24, 0x00 ; 0
50c: e5 d6 rcall .+3530 ; 0x12d8 <MessAD>
50e: c3 97 sbiw r24, 0x33 ; 51
510: 18 f0 brcs .+6 ; 0x518 <__stack+0xb9>
512: 41 e0 ldi r20, 0x01 ; 1
514: f4 2a or r15, r20
516: 02 c0 rjmp .+4 ; 0x51c <__stack+0xbd>
518: 5e ef ldi r21, 0xFE ; 254
51a: f5 22 and r15, r21
PORTB = 0;
51c: 18 ba out 0x18, r1 ; 24
51e: 8c e2 ldi r24, 0x2C ; 44
520: 91 e0 ldi r25, 0x01 ; 1
522: 00 c0 rjmp .+0 ; 0x524 <__stack+0xc5>
return(0);
}
 
unsigned char Delay(unsigned int timer)
{
while(timer--)
524: 01 97 sbiw r24, 0x01 ; 1
526: 2f ef ldi r18, 0xFF ; 255
528: 8f 3f cpi r24, 0xFF ; 255
52a: 92 07 cpc r25, r18
52c: d9 f7 brne .-10 ; 0x524 <__stack+0xc5>
#define SOUND_E 1 // 1
#define SOUND1_A 300
#define SOUND2_A 330
#define SOUND3_A 360
 
for(i=0; i< (TONDAUER / SOUND2_A) ; i++)
52e: 0f 5f subi r16, 0xFF ; 255
530: 1f 4f sbci r17, 0xFF ; 255
532: 09 37 cpi r16, 0x79 ; 121
534: 11 05 cpc r17, r1
536: 41 f7 brne .-48 ; 0x508 <__stack+0xa9>
Delay(SOUND_E);
if(MessAD(0) > 50) { MosfetOkay |= 0x01; } else { MosfetOkay &= ~0x01;};
PORTB = 0;
Delay(SOUND1_A);
}
FETS_OFF;
538: 82 b3 in r24, 0x12 ; 18
53a: 87 7c andi r24, 0xC7 ; 199
53c: 82 bb out 0x12, r24 ; 18
53e: 88 b3 in r24, 0x18 ; 24
540: 81 7f andi r24, 0xF1 ; 241
542: 88 bb out 0x18, r24 ; 24
 
LOW_A_EIN; // Low A ein
544: 93 9a sbi 0x12, 3 ; 18
LOW_C_EIN; // Low C ein
546: 95 9a sbi 0x12, 5 ; 18
548: 00 e0 ldi r16, 0x00 ; 0
54a: 10 e0 ldi r17, 0x00 ; 0
for(i=0; i<(TONDAUER / SOUND1_A); i++)
{
HIGH_B_EIN; // Test B
54c: c2 9a sbi 0x18, 2 ; 24
Delay(SOUND_E);
if(MessAD(1) > 50) { MosfetOkay |= 0x02; } else { MosfetOkay &= ~0x02;};
54e: 81 e0 ldi r24, 0x01 ; 1
550: c3 d6 rcall .+3462 ; 0x12d8 <MessAD>
552: c3 97 sbiw r24, 0x33 ; 51
554: 18 f0 brcs .+6 ; 0x55c <__stack+0xfd>
556: 42 e0 ldi r20, 0x02 ; 2
558: f4 2a or r15, r20
55a: 02 c0 rjmp .+4 ; 0x560 <__stack+0x101>
55c: 5d ef ldi r21, 0xFD ; 253
55e: f5 22 and r15, r21
PORTB = 0;
560: 18 ba out 0x18, r1 ; 24
562: 8c e2 ldi r24, 0x2C ; 44
564: 91 e0 ldi r25, 0x01 ; 1
566: 00 c0 rjmp .+0 ; 0x568 <__stack+0x109>
return(0);
}
 
unsigned char Delay(unsigned int timer)
{
while(timer--)
568: 01 97 sbiw r24, 0x01 ; 1
56a: 2f ef ldi r18, 0xFF ; 255
56c: 8f 3f cpi r24, 0xFF ; 255
56e: 92 07 cpc r25, r18
570: d9 f7 brne .-10 ; 0x568 <__stack+0x109>
}
FETS_OFF;
 
LOW_A_EIN; // Low A ein
LOW_C_EIN; // Low C ein
for(i=0; i<(TONDAUER / SOUND1_A); i++)
572: 0f 5f subi r16, 0xFF ; 255
574: 1f 4f sbci r17, 0xFF ; 255
576: 05 38 cpi r16, 0x85 ; 133
578: 11 05 cpc r17, r1
57a: 41 f7 brne .-48 ; 0x54c <__stack+0xed>
if(MessAD(1) > 50) { MosfetOkay |= 0x02; } else { MosfetOkay &= ~0x02;};
PORTB = 0;
Delay(SOUND1_A);
}
 
FETS_OFF;
57c: 82 b3 in r24, 0x12 ; 18
57e: 87 7c andi r24, 0xC7 ; 199
580: 82 bb out 0x12, r24 ; 18
582: 88 b3 in r24, 0x18 ; 24
584: 81 7f andi r24, 0xF1 ; 241
586: 88 bb out 0x18, r24 ; 24
LOW_A_EIN; // Low A ein
588: 93 9a sbi 0x12, 3 ; 18
LOW_B_EIN; // Low B ein
58a: 94 9a sbi 0x12, 4 ; 18
58c: 00 e0 ldi r16, 0x00 ; 0
58e: 10 e0 ldi r17, 0x00 ; 0
for(i=0; i<(TONDAUER / SOUND3_A); i++)
{
HIGH_C_EIN; // Test C
590: c1 9a sbi 0x18, 1 ; 24
Delay(SOUND_E);
if(MessAD(2) > 50) { MosfetOkay |= 0x04; } else { MosfetOkay &= ~0x04;};
592: 82 e0 ldi r24, 0x02 ; 2
594: a1 d6 rcall .+3394 ; 0x12d8 <MessAD>
596: c3 97 sbiw r24, 0x33 ; 51
598: 18 f0 brcs .+6 ; 0x5a0 <__stack+0x141>
59a: 44 e0 ldi r20, 0x04 ; 4
59c: f4 2a or r15, r20
59e: 02 c0 rjmp .+4 ; 0x5a4 <__stack+0x145>
5a0: 5b ef ldi r21, 0xFB ; 251
5a2: f5 22 and r15, r21
PORTB = 0;
5a4: 18 ba out 0x18, r1 ; 24
5a6: 8a e4 ldi r24, 0x4A ; 74
5a8: 91 e0 ldi r25, 0x01 ; 1
5aa: 00 c0 rjmp .+0 ; 0x5ac <__stack+0x14d>
return(0);
}
 
unsigned char Delay(unsigned int timer)
{
while(timer--)
5ac: 01 97 sbiw r24, 0x01 ; 1
5ae: 2f ef ldi r18, 0xFF ; 255
5b0: 8f 3f cpi r24, 0xFF ; 255
5b2: 92 07 cpc r25, r18
5b4: d9 f7 brne .-10 ; 0x5ac <__stack+0x14d>
}
 
FETS_OFF;
LOW_A_EIN; // Low A ein
LOW_B_EIN; // Low B ein
for(i=0; i<(TONDAUER / SOUND3_A); i++)
5b6: 0f 5f subi r16, 0xFF ; 255
5b8: 1f 4f sbci r17, 0xFF ; 255
5ba: 0f 36 cpi r16, 0x6F ; 111
5bc: 11 05 cpc r17, r1
5be: 41 f7 brne .-48 ; 0x590 <__stack+0x131>
Delay(SOUND_E);
if(MessAD(2) > 50) { MosfetOkay |= 0x04; } else { MosfetOkay &= ~0x04;};
PORTB = 0;
Delay(SOUND2_A);
}
FETS_OFF;
5c0: 82 b3 in r24, 0x12 ; 18
5c2: 87 7c andi r24, 0xC7 ; 199
5c4: 82 bb out 0x12, r24 ; 18
5c6: 88 b3 in r24, 0x18 ; 24
5c8: 81 7f andi r24, 0xF1 ; 241
5ca: 88 bb out 0x18, r24 ; 24
//+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
//+ Low-Mosfets auf Schalten testen
//+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
// SENSE_B;
LOW_A_EIN; // Low A ein
5cc: 93 9a sbi 0x12, 3 ; 18
5ce: 00 e0 ldi r16, 0x00 ; 0
5d0: 10 e0 ldi r17, 0x00 ; 0
for(i=0; i< (TONDAUER / SOUND2_A) ; i++)
{
HIGH_B_EIN; // Test B
5d2: c2 9a sbi 0x18, 2 ; 24
Delay(SOUND_E);
if(MessAD(0) > 128) { MosfetOkay &= ~0x08;} else { MosfetOkay |= 0x08;};
5d4: 80 e0 ldi r24, 0x00 ; 0
5d6: 80 d6 rcall .+3328 ; 0x12d8 <MessAD>
5d8: 81 38 cpi r24, 0x81 ; 129
5da: 91 05 cpc r25, r1
5dc: 18 f0 brcs .+6 ; 0x5e4 <__stack+0x185>
5de: 47 ef ldi r20, 0xF7 ; 247
5e0: f4 22 and r15, r20
5e2: 02 c0 rjmp .+4 ; 0x5e8 <__stack+0x189>
5e4: 58 e0 ldi r21, 0x08 ; 8
5e6: f5 2a or r15, r21
PORTB = 0;
5e8: 18 ba out 0x18, r1 ; 24
5ea: 8a e4 ldi r24, 0x4A ; 74
5ec: 91 e0 ldi r25, 0x01 ; 1
5ee: 00 c0 rjmp .+0 ; 0x5f0 <__stack+0x191>
return(0);
}
 
unsigned char Delay(unsigned int timer)
{
while(timer--)
5f0: 01 97 sbiw r24, 0x01 ; 1
5f2: 2f ef ldi r18, 0xFF ; 255
5f4: 8f 3f cpi r24, 0xFF ; 255
5f6: 92 07 cpc r25, r18
5f8: d9 f7 brne .-10 ; 0x5f0 <__stack+0x191>
//+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
//+ Low-Mosfets auf Schalten testen
//+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
// SENSE_B;
LOW_A_EIN; // Low A ein
for(i=0; i< (TONDAUER / SOUND2_A) ; i++)
5fa: 0f 5f subi r16, 0xFF ; 255
5fc: 1f 4f sbci r17, 0xFF ; 255
5fe: 09 37 cpi r16, 0x79 ; 121
600: 11 05 cpc r17, r1
602: 39 f7 brne .-50 ; 0x5d2 <__stack+0x173>
PORTB = 0;
Delay(SOUND2_A);
}
 
//++++++++++++++++++++++++++++++++++++
LOW_C_EIN; // Low C ein
604: 95 9a sbi 0x12, 5 ; 18
606: 00 e0 ldi r16, 0x00 ; 0
608: 10 e0 ldi r17, 0x00 ; 0
for(i=0; i<(TONDAUER / SOUND1_A); i++)
{
HIGH_B_EIN; // Test B
60a: c2 9a sbi 0x18, 2 ; 24
Delay(SOUND_E);
if(MessAD(2) > 128) { MosfetOkay &= ~0x20;} else { MosfetOkay |= 0x20;};
60c: 82 e0 ldi r24, 0x02 ; 2
60e: 64 d6 rcall .+3272 ; 0x12d8 <MessAD>
610: 81 38 cpi r24, 0x81 ; 129
612: 91 05 cpc r25, r1
614: 18 f0 brcs .+6 ; 0x61c <__stack+0x1bd>
616: 4f ed ldi r20, 0xDF ; 223
618: f4 22 and r15, r20
61a: 02 c0 rjmp .+4 ; 0x620 <__stack+0x1c1>
61c: 50 e2 ldi r21, 0x20 ; 32
61e: f5 2a or r15, r21
PORTB = 0;
620: 18 ba out 0x18, r1 ; 24
622: 88 e6 ldi r24, 0x68 ; 104
624: 91 e0 ldi r25, 0x01 ; 1
626: 00 c0 rjmp .+0 ; 0x628 <__stack+0x1c9>
return(0);
}
 
unsigned char Delay(unsigned int timer)
{
while(timer--)
628: 01 97 sbiw r24, 0x01 ; 1
62a: 2f ef ldi r18, 0xFF ; 255
62c: 8f 3f cpi r24, 0xFF ; 255
62e: 92 07 cpc r25, r18
630: d9 f7 brne .-10 ; 0x628 <__stack+0x1c9>
Delay(SOUND2_A);
}
 
//++++++++++++++++++++++++++++++++++++
LOW_C_EIN; // Low C ein
for(i=0; i<(TONDAUER / SOUND1_A); i++)
632: 0f 5f subi r16, 0xFF ; 255
634: 1f 4f sbci r17, 0xFF ; 255
636: 05 38 cpi r16, 0x85 ; 133
638: 11 05 cpc r17, r1
63a: 39 f7 brne .-50 ; 0x60a <__stack+0x1ab>
Delay(SOUND_E);
if(MessAD(2) > 128) { MosfetOkay &= ~0x20;} else { MosfetOkay |= 0x20;};
PORTB = 0;
Delay(SOUND3_A);
}
FETS_OFF;
63c: 82 b3 in r24, 0x12 ; 18
63e: 87 7c andi r24, 0xC7 ; 199
640: 82 bb out 0x12, r24 ; 18
642: 88 b3 in r24, 0x18 ; 24
644: 81 7f andi r24, 0xF1 ; 241
646: 88 bb out 0x18, r24 ; 24
//++++++++++++++++++++++++++++++++++++
FETS_OFF;
648: 82 b3 in r24, 0x12 ; 18
64a: 87 7c andi r24, 0xC7 ; 199
64c: 82 bb out 0x12, r24 ; 18
64e: 88 b3 in r24, 0x18 ; 24
650: 81 7f andi r24, 0xF1 ; 241
652: 88 bb out 0x18, r24 ; 24
LOW_B_EIN; // Low B ein
654: 94 9a sbi 0x12, 4 ; 18
656: 00 e0 ldi r16, 0x00 ; 0
658: 10 e0 ldi r17, 0x00 ; 0
for(i=0; i<(TONDAUER / SOUND3_A); i++)
{
HIGH_C_EIN; // Test C
65a: c1 9a sbi 0x18, 1 ; 24
Delay(SOUND_E);
if(MessAD(1) > 128) { MosfetOkay &= ~0x10;} else { MosfetOkay |= 0x10;};
65c: 81 e0 ldi r24, 0x01 ; 1
65e: 3c d6 rcall .+3192 ; 0x12d8 <MessAD>
660: 81 38 cpi r24, 0x81 ; 129
662: 91 05 cpc r25, r1
664: 18 f0 brcs .+6 ; 0x66c <__stack+0x20d>
666: 4f ee ldi r20, 0xEF ; 239
668: f4 22 and r15, r20
66a: 02 c0 rjmp .+4 ; 0x670 <__stack+0x211>
66c: 50 e1 ldi r21, 0x10 ; 16
66e: f5 2a or r15, r21
PORTB = 0;
670: 18 ba out 0x18, r1 ; 24
672: 88 e6 ldi r24, 0x68 ; 104
674: 91 e0 ldi r25, 0x01 ; 1
676: 00 c0 rjmp .+0 ; 0x678 <__stack+0x219>
return(0);
}
 
unsigned char Delay(unsigned int timer)
{
while(timer--)
678: 01 97 sbiw r24, 0x01 ; 1
67a: 2f ef ldi r18, 0xFF ; 255
67c: 8f 3f cpi r24, 0xFF ; 255
67e: 92 07 cpc r25, r18
680: d9 f7 brne .-10 ; 0x678 <__stack+0x219>
}
FETS_OFF;
//++++++++++++++++++++++++++++++++++++
FETS_OFF;
LOW_B_EIN; // Low B ein
for(i=0; i<(TONDAUER / SOUND3_A); i++)
682: 0f 5f subi r16, 0xFF ; 255
684: 1f 4f sbci r17, 0xFF ; 255
686: 0f 36 cpi r16, 0x6F ; 111
688: 11 05 cpc r17, r1
68a: 39 f7 brne .-50 ; 0x65a <__stack+0x1fb>
Delay(SOUND_E);
if(MessAD(1) > 128) { MosfetOkay &= ~0x10;} else { MosfetOkay |= 0x10;};
PORTB = 0;
Delay(SOUND3_A);
}
FETS_OFF;
68c: 82 b3 in r24, 0x12 ; 18
68e: 87 7c andi r24, 0xC7 ; 199
690: 82 bb out 0x12, r24 ; 18
692: 88 b3 in r24, 0x18 ; 24
694: 81 7f andi r24, 0xF1 ; 241
696: 88 bb out 0x18, r24 ; 24
//++++++++++++++++++++++++++++++++++++
 
//+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
sei();//Globale Interrupts Einschalten
698: 78 94 sei
Delay(SOUND_E);
PORTB = 0;
Delay(SOUND8_A);
}
*/
Delay_ms(300 * (3-ADR_TAB[MotorAdresse]));
69a: 80 91 66 00 lds r24, 0x0066
69e: fe 01 movw r30, r28
6a0: e8 0f add r30, r24
6a2: f1 1d adc r31, r1
6a4: 21 81 ldd r18, Z+1 ; 0x01
6a6: 83 e0 ldi r24, 0x03 ; 3
6a8: 90 e0 ldi r25, 0x00 ; 0
6aa: 82 1b sub r24, r18
6ac: 91 09 sbc r25, r1
6ae: 2c e2 ldi r18, 0x2C ; 44
6b0: 31 e0 ldi r19, 0x01 ; 1
6b2: ac 01 movw r20, r24
6b4: 42 9f mul r20, r18
6b6: c0 01 movw r24, r0
6b8: 43 9f mul r20, r19
6ba: 90 0d add r25, r0
6bc: 52 9f mul r21, r18
6be: 90 0d add r25, r0
6c0: 11 24 eor r1, r1
6c2: b6 d5 rcall .+2924 ; 0x1230 <Delay_ms>
if(!(MosfetOkay & 0x01)) { anz = 1; UDR='A'; } else
6c4: f0 fc sbrc r15, 0
6c6: 04 c0 rjmp .+8 ; 0x6d0 <__stack+0x271>
6c8: 81 e4 ldi r24, 0x41 ; 65
6ca: 8c b9 out 0x0c, r24 ; 12
6cc: 11 e0 ldi r17, 0x01 ; 1
6ce: 1d c0 rjmp .+58 ; 0x70a <__stack+0x2ab>
if(!(MosfetOkay & 0x02)) { anz = 2; UDR='B'; } else
6d0: f1 fc sbrc r15, 1
6d2: 04 c0 rjmp .+8 ; 0x6dc <__stack+0x27d>
6d4: 82 e4 ldi r24, 0x42 ; 66
6d6: 8c b9 out 0x0c, r24 ; 12
6d8: 12 e0 ldi r17, 0x02 ; 2
6da: 17 c0 rjmp .+46 ; 0x70a <__stack+0x2ab>
if(!(MosfetOkay & 0x04)) { anz = 3; UDR='C'; } else
6dc: f2 fc sbrc r15, 2
6de: 04 c0 rjmp .+8 ; 0x6e8 <__stack+0x289>
6e0: 83 e4 ldi r24, 0x43 ; 67
6e2: 8c b9 out 0x0c, r24 ; 12
6e4: 13 e0 ldi r17, 0x03 ; 3
6e6: 11 c0 rjmp .+34 ; 0x70a <__stack+0x2ab>
if(!(MosfetOkay & 0x08)) { anz = 4; UDR='a'; } else
6e8: f3 fc sbrc r15, 3
6ea: 04 c0 rjmp .+8 ; 0x6f4 <__stack+0x295>
6ec: 81 e6 ldi r24, 0x61 ; 97
6ee: 8c b9 out 0x0c, r24 ; 12
6f0: 14 e0 ldi r17, 0x04 ; 4
6f2: 0b c0 rjmp .+22 ; 0x70a <__stack+0x2ab>
if(!(MosfetOkay & 0x10)) { anz = 5; UDR='b'; } else
6f4: f4 fc sbrc r15, 4
6f6: 04 c0 rjmp .+8 ; 0x700 <__stack+0x2a1>
6f8: 82 e6 ldi r24, 0x62 ; 98
6fa: 8c b9 out 0x0c, r24 ; 12
6fc: 15 e0 ldi r17, 0x05 ; 5
6fe: 05 c0 rjmp .+10 ; 0x70a <__stack+0x2ab>
if(!(MosfetOkay & 0x20)) { anz = 6; UDR='c'; }
700: f5 fc sbrc r15, 5
702: 06 c0 rjmp .+12 ; 0x710 <__stack+0x2b1>
704: 83 e6 ldi r24, 0x63 ; 99
706: 8c b9 out 0x0c, r24 ; 12
708: 16 e0 ldi r17, 0x06 ; 6
 
// if(anz) Delay_ms(1000);
if(anz) while(1) RotBlink(anz); // bei Kurzschluss nicht starten
70a: 81 2f mov r24, r17
70c: b7 dd rcall .-1170 ; 0x27c <RotBlink>
70e: fd cf rjmp .-6 ; 0x70a <__stack+0x2ab>
RotBlink(anz);
710: 80 e0 ldi r24, 0x00 ; 0
712: b4 dd rcall .-1176 ; 0x27c <RotBlink>
uart_putchar('.');
714: 8e e2 ldi r24, 0x2E ; 46
716: d8 d3 rcall .+1968 ; 0xec8 <uart_putchar>
}
718: 27 96 adiw r28, 0x07 ; 7
71a: 0f b6 in r0, 0x3f ; 63
71c: f8 94 cli
71e: de bf out 0x3e, r29 ; 62
720: 0f be out 0x3f, r0 ; 63
722: cd bf out 0x3d, r28 ; 61
724: cf 91 pop r28
726: df 91 pop r29
728: 1f 91 pop r17
72a: 0f 91 pop r16
72c: ff 90 pop r15
72e: ef 90 pop r14
730: df 90 pop r13
732: bf 90 pop r11
734: af 90 pop r10
736: 08 95 ret
 
00000738 <Anwerfen>:
 
//############################################################################
//
char Anwerfen(unsigned char pwm)
//############################################################################
{
738: 6f 92 push r6
73a: 7f 92 push r7
73c: 9f 92 push r9
73e: af 92 push r10
740: bf 92 push r11
742: cf 92 push r12
744: df 92 push r13
746: ef 92 push r14
748: ff 92 push r15
74a: 0f 93 push r16
74c: 1f 93 push r17
74e: cf 93 push r28
750: df 93 push r29
752: 98 2e mov r9, r24
unsigned long timer = 300,i;
DISABLE_SENSE_INT;
754: 10 92 b1 00 sts 0x00B1, r1
758: 43 98 cbi 0x08, 3 ; 8
PWM = 5;
75a: 85 e0 ldi r24, 0x05 ; 5
75c: 90 e0 ldi r25, 0x00 ; 0
75e: 90 93 79 00 sts 0x0079, r25
762: 80 93 78 00 sts 0x0078, r24
SetPWM();
766: 7b dc rcall .-1802 ; 0x5e <SetPWM>
Manuell();
768: 0f d7 rcall .+3614 ; 0x1588 <Manuell>
// Delay_ms(200);
MinUpmPulse = SetDelay(300);
76a: 8c e2 ldi r24, 0x2C ; 44
76c: 91 e0 ldi r25, 0x01 ; 1
76e: 4c d5 rcall .+2712 ; 0x1208 <SetDelay>
770: 90 93 b4 02 sts 0x02B4, r25
774: 80 93 b3 02 sts 0x02B3, r24
778: 09 c0 rjmp .+18 ; 0x78c <Anwerfen+0x54>
while(!CheckDelay(MinUpmPulse))
{
FastADConvert();
77a: c3 d5 rcall .+2950 ; 0x1302 <FastADConvert>
if(Strom > 120)
77c: 80 91 7a 00 lds r24, 0x007A
780: 90 91 7b 00 lds r25, 0x007B
784: 89 37 cpi r24, 0x79 ; 121
786: 91 05 cpc r25, r1
788: 08 f0 brcs .+2 ; 0x78c <Anwerfen+0x54>
78a: 5c c0 rjmp .+184 ; 0x844 <Anwerfen+0x10c>
PWM = 5;
SetPWM();
Manuell();
// Delay_ms(200);
MinUpmPulse = SetDelay(300);
while(!CheckDelay(MinUpmPulse))
78c: 80 91 b3 02 lds r24, 0x02B3
790: 90 91 b4 02 lds r25, 0x02B4
794: 43 d5 rcall .+2694 ; 0x121c <CheckDelay>
796: 88 23 and r24, r24
798: 81 f3 breq .-32 ; 0x77a <Anwerfen+0x42>
STEUER_OFF; // Abschalten wegen Kurzschluss
RotBlink(10);
return(0);
}
}
PWM = pwm;
79a: 90 92 78 00 sts 0x0078, r9
79e: 10 92 79 00 sts 0x0079, r1
7a2: 5c e2 ldi r21, 0x2C ; 44
7a4: a5 2e mov r10, r21
7a6: 51 e0 ldi r21, 0x01 ; 1
7a8: b5 2e mov r11, r21
7aa: c1 2c mov r12, r1
7ac: d1 2c mov r13, r1
}
 
void DebugAusgaben(void)
{
DebugOut.Analog[0] = Strom;
DebugOut.Analog[1] = Mittelstrom;
7ae: c6 e8 ldi r28, 0x86 ; 134
7b0: d3 e0 ldi r29, 0x03 ; 3
DebugOut.Analog[2] = SIO_Drehzahl;
DebugOut.Analog[3] = PPM_Signal;
DebugOut.Analog[4] = OCR2;
7b2: 46 e0 ldi r20, 0x06 ; 6
7b4: 64 2e mov r6, r20
7b6: 71 2c mov r7, r1
7b8: 6c 0e add r6, r28
7ba: 7d 1e adc r7, r29
STEUER_OFF; // Abschalten wegen Kurzschluss
RotBlink(10);
return(0);
}
}
PWM = pwm;
7bc: ee 24 eor r14, r14
7be: ff 24 eor r15, r15
7c0: 87 01 movw r16, r14
while(1)
{
for(i=0;i<timer; i++)
{
if(!UebertragungAbgeschlossen) SendUart();
7c2: 80 91 6f 00 lds r24, 0x006F
7c6: 88 23 and r24, r24
7c8: 11 f4 brne .+4 ; 0x7ce <Anwerfen+0x96>
7ca: 6c d2 rcall .+1240 ; 0xca4 <SendUart>
7cc: 01 c0 rjmp .+2 ; 0x7d0 <Anwerfen+0x98>
else DatenUebertragung();
7ce: 6e d4 rcall .+2268 ; 0x10ac <DatenUebertragung>
//############################################################################
//
void Wait(unsigned char dauer)
//############################################################################
{
dauer = (unsigned char)TCNT0 + dauer;
7d0: 82 b7 in r24, 0x32 ; 50
7d2: 8c 59 subi r24, 0x9C ; 156
while((TCNT0 - dauer) & 0x80);
7d4: 98 2f mov r25, r24
7d6: 82 b7 in r24, 0x32 ; 50
7d8: 89 1b sub r24, r25
7da: 87 fd sbrc r24, 7
7dc: fc cf rjmp .-8 ; 0x7d6 <Anwerfen+0x9e>
}
}
PWM = pwm;
while(1)
{
for(i=0;i<timer; i++)
7de: 08 94 sec
7e0: e1 1c adc r14, r1
7e2: f1 1c adc r15, r1
7e4: 01 1d adc r16, r1
7e6: 11 1d adc r17, r1
7e8: ea 14 cp r14, r10
7ea: fb 04 cpc r15, r11
7ec: 0c 05 cpc r16, r12
7ee: 1d 05 cpc r17, r13
7f0: 40 f3 brcs .-48 ; 0x7c2 <Anwerfen+0x8a>
}
}
 
void DebugAusgaben(void)
{
DebugOut.Analog[0] = Strom;
7f2: 80 91 7a 00 lds r24, 0x007A
7f6: 90 91 7b 00 lds r25, 0x007B
7fa: 90 93 85 03 sts 0x0385, r25
7fe: 80 93 84 03 sts 0x0384, r24
DebugOut.Analog[1] = Mittelstrom;
802: 80 91 7d 00 lds r24, 0x007D
806: 80 93 86 03 sts 0x0386, r24
80a: 19 82 std Y+1, r1 ; 0x01
DebugOut.Analog[2] = SIO_Drehzahl;
80c: 80 91 8b 00 lds r24, 0x008B
810: 90 91 8c 00 lds r25, 0x008C
814: 90 93 89 03 sts 0x0389, r25
818: 80 93 88 03 sts 0x0388, r24
DebugOut.Analog[3] = PPM_Signal;
81c: 80 91 a5 00 lds r24, 0x00A5
820: 90 91 a6 00 lds r25, 0x00A6
824: 90 93 8b 03 sts 0x038B, r25
828: 80 93 8a 03 sts 0x038A, r24
DebugOut.Analog[4] = OCR2;
82c: 83 b5 in r24, 0x23 ; 35
82e: 80 93 8c 03 sts 0x038C, r24
832: f3 01 movw r30, r6
834: 11 82 std Z+1, r1 ; 0x01
if(!UebertragungAbgeschlossen) SendUart();
else DatenUebertragung();
Wait(100); // warten
}
DebugAusgaben();
FastADConvert();
836: 65 d5 rcall .+2762 ; 0x1302 <FastADConvert>
if(Strom > 60)
838: 80 91 7a 00 lds r24, 0x007A
83c: 90 91 7b 00 lds r25, 0x007B
840: cd 97 sbiw r24, 0x3d ; 61
842: a8 f0 brcs .+42 ; 0x86e <Anwerfen+0x136>
{
STEUER_OFF; // Abschalten wegen Kurzschluss
844: 82 b3 in r24, 0x12 ; 18
846: 87 7c andi r24, 0xC7 ; 199
848: 82 bb out 0x12, r24 ; 18
84a: 1b bc out 0x2b, r1 ; 43
84c: 1a bc out 0x2a, r1 ; 42
84e: 19 bc out 0x29, r1 ; 41
850: 18 bc out 0x28, r1 ; 40
852: 13 bc out 0x23, r1 ; 35
854: 81 e0 ldi r24, 0x01 ; 1
856: 8f bd out 0x2f, r24 ; 47
858: 81 e4 ldi r24, 0x41 ; 65
85a: 85 bd out 0x25, r24 ; 37
85c: 8e e0 ldi r24, 0x0E ; 14
85e: 87 bb out 0x17, r24 ; 23
860: 88 b3 in r24, 0x18 ; 24
862: 81 7f andi r24, 0xF1 ; 241
864: 88 bb out 0x18, r24 ; 24
RotBlink(10);
866: 8a e0 ldi r24, 0x0A ; 10
868: 09 dd rcall .-1518 ; 0x27c <RotBlink>
86a: 80 e0 ldi r24, 0x00 ; 0
86c: 2e c0 rjmp .+92 ; 0x8ca <Anwerfen+0x192>
return(0);
}
timer-= timer/15+1;
86e: c6 01 movw r24, r12
870: b5 01 movw r22, r10
872: 2f e0 ldi r18, 0x0F ; 15
874: 30 e0 ldi r19, 0x00 ; 0
876: 40 e0 ldi r20, 0x00 ; 0
878: 50 e0 ldi r21, 0x00 ; 0
87a: 12 d8 rcall .-4060 ; 0xfffff8a0 <__eeprom_end+0xff7ef8a0>
87c: 20 95 com r18
87e: 30 95 com r19
880: 40 95 com r20
882: 50 95 com r21
884: a2 0e add r10, r18
886: b3 1e adc r11, r19
888: c4 1e adc r12, r20
88a: d5 1e adc r13, r21
if(timer < 25) { if(TEST_MANUELL) timer = 25; else return(1); }
88c: f9 e1 ldi r31, 0x19 ; 25
88e: af 16 cp r10, r31
890: b1 04 cpc r11, r1
892: c1 04 cpc r12, r1
894: d1 04 cpc r13, r1
896: c0 f0 brcs .+48 ; 0x8c8 <Anwerfen+0x190>
Manuell();
898: 77 d6 rcall .+3310 ; 0x1588 <Manuell>
Phase++;
89a: 80 91 af 00 lds r24, 0x00AF
89e: 8f 5f subi r24, 0xFF ; 255
8a0: 80 93 af 00 sts 0x00AF, r24
Phase %= 6;
8a4: 80 91 af 00 lds r24, 0x00AF
8a8: 66 e0 ldi r22, 0x06 ; 6
8aa: da d7 rcall .+4020 ; 0x1860 <__udivmodqi4>
8ac: 90 93 af 00 sts 0x00AF, r25
AdConvert();
8b0: dc d4 rcall .+2488 ; 0x126a <AdConvert>
PWM = pwm;
8b2: 90 92 78 00 sts 0x0078, r9
8b6: 10 92 79 00 sts 0x0079, r1
SetPWM();
8ba: d1 db rcall .-2142 ; 0x5e <SetPWM>
if(SENSE)
8bc: 44 9b sbis 0x08, 4 ; 8
8be: 7e cf rjmp .-260 ; 0x7bc <Anwerfen+0x84>
{
PORTD ^= GRUEN;
8c0: 82 b3 in r24, 0x12 ; 18
8c2: 80 58 subi r24, 0x80 ; 128
8c4: 82 bb out 0x12, r24 ; 18
8c6: 7a cf rjmp .-268 ; 0x7bc <Anwerfen+0x84>
8c8: 81 e0 ldi r24, 0x01 ; 1
}
}
}
8ca: df 91 pop r29
8cc: cf 91 pop r28
8ce: 1f 91 pop r17
8d0: 0f 91 pop r16
8d2: ff 90 pop r15
8d4: ef 90 pop r14
8d6: df 90 pop r13
8d8: cf 90 pop r12
8da: bf 90 pop r11
8dc: af 90 pop r10
8de: 9f 90 pop r9
8e0: 7f 90 pop r7
8e2: 6f 90 pop r6
8e4: 08 95 ret
 
000008e6 <main>:
 
//############################################################################
//Hauptprogramm
int main (void)
//############################################################################
{
8e6: 5f 92 push r5
8e8: 6f 92 push r6
8ea: 7f 92 push r7
8ec: 8f 92 push r8
8ee: 9f 92 push r9
8f0: af 92 push r10
8f2: bf 92 push r11
8f4: cf 92 push r12
8f6: df 92 push r13
8f8: ef 92 push r14
8fa: ff 92 push r15
8fc: 0f 93 push r16
8fe: 1f 93 push r17
900: cf 93 push r28
902: df 93 push r29
char altPhase = 0;
int test = 0;
unsigned int Blink,TestschubTimer;
unsigned int Blink2,MittelstromTimer,DrehzahlMessTimer,MotorGestopptTimer;
 
DDRC = 0x08;
904: 88 e0 ldi r24, 0x08 ; 8
906: 84 bb out 0x14, r24 ; 20
PORTC = 0x08;
908: 85 bb out 0x15, r24 ; 21
DDRD = 0x3A;
90a: 8a e3 ldi r24, 0x3A ; 58
90c: 81 bb out 0x11, r24 ; 17
PORTD = 0x00;
90e: 12 ba out 0x12, r1 ; 18
DDRB = 0x0E;
910: 8e e0 ldi r24, 0x0E ; 14
912: 87 bb out 0x17, r24 ; 23
PORTB = 0x31;
914: 81 e3 ldi r24, 0x31 ; 49
916: 88 bb out 0x18, r24 ; 24
#if (MOTORADRESSE == 0)
PORTB |= (ADR1 + ADR2); // Pullups für Adresswahl
918: 88 b3 in r24, 0x18 ; 24
91a: 80 6c ori r24, 0xC0 ; 192
91c: 88 bb out 0x18, r24 ; 24
for(test=0;test<500;test++);
if(PINB & ADR1)
91e: b6 9b sbis 0x16, 6 ; 22
920: 06 c0 rjmp .+12 ; 0x92e <main+0x48>
{
if (PINB & ADR2) MotorAdresse = 1;
922: b7 9b sbis 0x16, 7 ; 22
924: 02 c0 rjmp .+4 ; 0x92a <main+0x44>
926: 81 e0 ldi r24, 0x01 ; 1
928: 07 c0 rjmp .+14 ; 0x938 <main+0x52>
else MotorAdresse = 2;
92a: 82 e0 ldi r24, 0x02 ; 2
92c: 05 c0 rjmp .+10 ; 0x938 <main+0x52>
}
else
{
if (PINB & ADR2) MotorAdresse = 3;
92e: b7 9b sbis 0x16, 7 ; 22
930: 02 c0 rjmp .+4 ; 0x936 <main+0x50>
932: 83 e0 ldi r24, 0x03 ; 3
934: 01 c0 rjmp .+2 ; 0x938 <main+0x52>
else MotorAdresse = 4;
936: 84 e0 ldi r24, 0x04 ; 4
938: 80 93 66 00 sts 0x0066, r24
}
HwVersion = 11;
93c: 8b e0 ldi r24, 0x0B ; 11
93e: 80 93 b2 00 sts 0x00B2, r24
#else
MotorAdresse = MOTORADRESSE;
HwVersion = 10;
#endif
if(PIND & 0x80) {HwVersion = 12; IntRef = 0xc0;}
942: 87 9b sbis 0x10, 7 ; 16
944: 06 c0 rjmp .+12 ; 0x952 <main+0x6c>
946: 8c e0 ldi r24, 0x0C ; 12
948: 80 93 b2 00 sts 0x00B2, r24
94c: 80 ec ldi r24, 0xC0 ; 192
94e: 80 93 8d 00 sts 0x008D, r24
DDRD = 0xBA;
952: 8a eb ldi r24, 0xBA ; 186
954: 81 bb out 0x11, r24 ; 17
UART_Init();
956: c4 d3 rcall .+1928 ; 0x10e0 <UART_Init>
Timer0_Init();
958: 4e d4 rcall .+2204 ; 0x11f6 <Timer0_Init>
sei();//Globale Interrupts Einschalten
95a: 78 94 sei
}
 
Delay_ms(500);
*/
// UART_Init(); // war doppelt
PWM_Init();
95c: d4 db rcall .-2136 ; 0x106 <PWM_Init>
 
InitIC2_Slave(0x50);
95e: 80 e5 ldi r24, 0x50 ; 80
960: b0 d5 rcall .+2912 ; 0x14c2 <InitIC2_Slave>
InitPPM();
962: eb d4 rcall .+2518 ; 0x133a <InitPPM>
 
Blink = SetDelay(101);
964: 85 e6 ldi r24, 0x65 ; 101
966: 90 e0 ldi r25, 0x00 ; 0
968: 4f d4 rcall .+2206 ; 0x1208 <SetDelay>
Blink2 = SetDelay(102);
96a: 86 e6 ldi r24, 0x66 ; 102
96c: 90 e0 ldi r25, 0x00 ; 0
96e: 4c d4 rcall .+2200 ; 0x1208 <SetDelay>
MinUpmPulse = SetDelay(103);
970: 87 e6 ldi r24, 0x67 ; 103
972: 90 e0 ldi r25, 0x00 ; 0
974: 49 d4 rcall .+2194 ; 0x1208 <SetDelay>
976: 90 93 b4 02 sts 0x02B4, r25
97a: 80 93 b3 02 sts 0x02B3, r24
MittelstromTimer = SetDelay(254);
97e: 8e ef ldi r24, 0xFE ; 254
980: 90 e0 ldi r25, 0x00 ; 0
982: 42 d4 rcall .+2180 ; 0x1208 <SetDelay>
984: 6c 01 movw r12, r24
DrehzahlMessTimer = SetDelay(1005);
986: 8d ee ldi r24, 0xED ; 237
988: 93 e0 ldi r25, 0x03 ; 3
98a: 3e d4 rcall .+2172 ; 0x1208 <SetDelay>
98c: ec 01 movw r28, r24
TestschubTimer = SetDelay(1006);
98e: 8e ee ldi r24, 0xEE ; 238
990: 93 e0 ldi r25, 0x03 ; 3
992: 3a d4 rcall .+2164 ; 0x1208 <SetDelay>
994: 03 c0 rjmp .+6 ; 0x99c <main+0xb6>
while(!CheckDelay(MinUpmPulse))
{
if(SollwertErmittlung()) break;
996: d4 db rcall .-2136 ; 0x140 <SollwertErmittlung>
998: 88 23 and r24, r24
99a: 39 f4 brne .+14 ; 0x9aa <main+0xc4>
Blink2 = SetDelay(102);
MinUpmPulse = SetDelay(103);
MittelstromTimer = SetDelay(254);
DrehzahlMessTimer = SetDelay(1005);
TestschubTimer = SetDelay(1006);
while(!CheckDelay(MinUpmPulse))
99c: 80 91 b3 02 lds r24, 0x02B3
9a0: 90 91 b4 02 lds r25, 0x02B4
9a4: 3b d4 rcall .+2166 ; 0x121c <CheckDelay>
9a6: 88 23 and r24, r24
9a8: b1 f3 breq .-20 ; 0x996 <main+0xb0>
{
if(SollwertErmittlung()) break;
}
 
GRN_ON;
9aa: 80 91 b2 00 lds r24, 0x00B2
9ae: 8c 30 cpi r24, 0x0C ; 12
9b0: 10 f4 brcc .+4 ; 0x9b6 <main+0xd0>
9b2: 97 9a sbi 0x12, 7 ; 18
9b4: 01 c0 rjmp .+2 ; 0x9b8 <main+0xd2>
9b6: 97 98 cbi 0x12, 7 ; 18
PWM = 0;
9b8: 10 92 79 00 sts 0x0079, r1
9bc: 10 92 78 00 sts 0x0078, r1
 
SetPWM();
9c0: 4e db rcall .-2404 ; 0x5e <SetPWM>
 
SFIOR = 0x08; // Analog Comperator ein
9c2: 88 e0 ldi r24, 0x08 ; 8
9c4: 80 bf out 0x30, r24 ; 48
ADMUX = 1;
9c6: 81 e0 ldi r24, 0x01 ; 1
9c8: 87 b9 out 0x07, r24 ; 7
 
MinUpmPulse = SetDelay(10);
9ca: 8a e0 ldi r24, 0x0A ; 10
9cc: 90 e0 ldi r25, 0x00 ; 0
9ce: 1c d4 rcall .+2104 ; 0x1208 <SetDelay>
9d0: 90 93 b4 02 sts 0x02B4, r25
9d4: 80 93 b3 02 sts 0x02B3, r24
DebugOut.Analog[1] = 1;
9d8: 81 e0 ldi r24, 0x01 ; 1
9da: 90 e0 ldi r25, 0x00 ; 0
9dc: 90 93 87 03 sts 0x0387, r25
9e0: 80 93 86 03 sts 0x0386, r24
PPM_Signal = 0;
9e4: 10 92 a6 00 sts 0x00A6, r1
9e8: 10 92 a5 00 sts 0x00A5, r1
 
if(!SollwertErmittlung()) MotorTon();
9ec: a9 db rcall .-2222 ; 0x140 <SollwertErmittlung>
9ee: 88 23 and r24, r24
9f0: 09 f4 brne .+2 ; 0x9f4 <main+0x10e>
9f2: 58 dc rcall .-1872 ; 0x2a4 <MotorTon>
//MotorTon();
PORTB = 0x31; // Pullups wieder einschalten
9f4: 81 e3 ldi r24, 0x31 ; 49
9f6: 88 bb out 0x18, r24 ; 24
9f8: 10 e0 ldi r17, 0x00 ; 0
STEUER_OFF;
}
}
else
{
if(MotorGestoppt) MotorAnwerfen = 1; // Startversuch
9fa: ff 24 eor r15, r15
9fc: f3 94 inc r15
// nach 1,5 Sekunden den Motor als gestoppt betrachten
if(CheckDelay(MotorGestopptTimer))
{
DISABLE_SENSE_INT;
MotorGestoppt = 1;
STEUER_OFF;
9fe: f1 e4 ldi r31, 0x41 ; 65
a00: ef 2e mov r14, r31
a02: ee e0 ldi r30, 0x0E ; 14
a04: 5e 2e mov r5, r30
if(Anwerfen(10))
{
GRN_ON;
MotorGestoppt = 0;
Phase--;
PWM = 1;
a06: 71 e0 ldi r23, 0x01 ; 1
a08: 67 2e mov r6, r23
a0a: 71 2c mov r7, r1
SetPWM();
SENSE_TOGGLE_INT;
ENABLE_SENSE_INT;
MinUpmPulse = SetDelay(20);
while(!CheckDelay(MinUpmPulse)); // kurz Synchronisieren
PWM = 15;
a0c: 6f e0 ldi r22, 0x0F ; 15
a0e: 86 2e mov r8, r22
a10: 91 2c mov r9, r1
a12: 01 c0 rjmp .+2 ; 0xa16 <main+0x130>
DebugOut.Analog[1] = 1;
PPM_Signal = 0;
 
if(!SollwertErmittlung()) MotorTon();
//MotorTon();
PORTB = 0x31; // Pullups wieder einschalten
a14: 10 2f mov r17, r16
 
while (1)
{
//ShowSense();
 
if(!TEST_SCHUB) PWM = SollwertErmittlung();
a16: 94 db rcall .-2264 ; 0x140 <SollwertErmittlung>
a18: 80 93 78 00 sts 0x0078, r24
a1c: 10 92 79 00 sts 0x0079, r1
//I2C_TXBuffer = PWM; // Antwort über I2C-Bus
if(MANUELL_PWM) PWM = MANUELL_PWM;
 
// ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
if(Phase != altPhase) // es gab eine Kommutierung im Interrupt
a20: 00 91 af 00 lds r16, 0x00AF
a24: 01 17 cp r16, r17
a26: 69 f0 breq .+26 ; 0xa42 <main+0x15c>
{
MotorGestoppt = 0;
a28: 10 92 63 00 sts 0x0063, r1
ZeitFuerBerechnungen = 0; // direkt nach einer Kommutierung ist Zeit
a2c: 10 92 62 00 sts 0x0062, r1
MinUpmPulse = SetDelay(250); // Timeout, falls ein Motor stehen bleibt
a30: 8a ef ldi r24, 0xFA ; 250
a32: 90 e0 ldi r25, 0x00 ; 0
a34: e9 d3 rcall .+2002 ; 0x1208 <SetDelay>
a36: 90 93 b4 02 sts 0x02B4, r25
a3a: 80 93 b3 02 sts 0x02B3, r24
altPhase = Phase;
a3e: 00 91 af 00 lds r16, 0x00AF
}
// ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
if(!PWM) // Sollwert == 0
a42: 80 91 78 00 lds r24, 0x0078
a46: 90 91 79 00 lds r25, 0x0079
a4a: 89 2b or r24, r25
a4c: e1 f4 brne .+56 ; 0xa86 <main+0x1a0>
{
MotorAnwerfen = 0; // kein Startversuch
a4e: 10 92 88 00 sts 0x0088, r1
ZeitFuerBerechnungen = 0;
a52: 10 92 62 00 sts 0x0062, r1
// nach 1,5 Sekunden den Motor als gestoppt betrachten
if(CheckDelay(MotorGestopptTimer))
a56: c5 01 movw r24, r10
a58: e1 d3 rcall .+1986 ; 0x121c <CheckDelay>
a5a: 88 23 and r24, r24
a5c: f1 f0 breq .+60 ; 0xa9a <main+0x1b4>
{
DISABLE_SENSE_INT;
a5e: 10 92 b1 00 sts 0x00B1, r1
a62: 43 98 cbi 0x08, 3 ; 8
MotorGestoppt = 1;
a64: f0 92 63 00 sts 0x0063, r15
STEUER_OFF;
a68: 82 b3 in r24, 0x12 ; 18
a6a: 87 7c andi r24, 0xC7 ; 199
a6c: 82 bb out 0x12, r24 ; 18
a6e: 1b bc out 0x2b, r1 ; 43
a70: 1a bc out 0x2a, r1 ; 42
a72: 19 bc out 0x29, r1 ; 41
a74: 18 bc out 0x28, r1 ; 40
a76: 13 bc out 0x23, r1 ; 35
a78: ff bc out 0x2f, r15 ; 47
a7a: e5 bc out 0x25, r14 ; 37
a7c: 57 ba out 0x17, r5 ; 23
a7e: 88 b3 in r24, 0x18 ; 24
a80: 81 7f andi r24, 0xF1 ; 241
a82: 88 bb out 0x18, r24 ; 24
a84: 0a c0 rjmp .+20 ; 0xa9a <main+0x1b4>
}
}
else
{
if(MotorGestoppt) MotorAnwerfen = 1; // Startversuch
a86: 80 91 63 00 lds r24, 0x0063
a8a: 88 23 and r24, r24
a8c: 11 f0 breq .+4 ; 0xa92 <main+0x1ac>
a8e: f0 92 88 00 sts 0x0088, r15
MotorGestopptTimer = SetDelay(1500);
a92: 8c ed ldi r24, 0xDC ; 220
a94: 95 e0 ldi r25, 0x05 ; 5
a96: b8 d3 rcall .+1904 ; 0x1208 <SetDelay>
a98: 5c 01 movw r10, r24
}
 
if(MotorGestoppt && !TEST_SCHUB) PWM = 0;
a9a: 80 91 63 00 lds r24, 0x0063
a9e: 88 23 and r24, r24
aa0: 21 f0 breq .+8 ; 0xaaa <main+0x1c4>
aa2: 10 92 79 00 sts 0x0079, r1
aa6: 10 92 78 00 sts 0x0078, r1
SetPWM();
aaa: d9 da rcall .-2638 ; 0x5e <SetPWM>
// +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
if(!ZeitFuerBerechnungen++)
aac: 80 91 62 00 lds r24, 0x0062
ab0: 8f 5f subi r24, 0xFF ; 255
ab2: 80 93 62 00 sts 0x0062, r24
ab6: 81 50 subi r24, 0x01 ; 1
ab8: 09 f0 breq .+2 ; 0xabc <main+0x1d6>
aba: ac cf rjmp .-168 ; 0xa14 <main+0x12e>
{
if(MotorGestoppt)
abc: 80 91 63 00 lds r24, 0x0063
ac0: 88 23 and r24, r24
ac2: 41 f0 breq .+16 ; 0xad4 <main+0x1ee>
{
GRN_ON;
ac4: 80 91 b2 00 lds r24, 0x00B2
ac8: 8c 30 cpi r24, 0x0C ; 12
aca: 10 f4 brcc .+4 ; 0xad0 <main+0x1ea>
acc: 97 9a sbi 0x12, 7 ; 18
ace: 01 c0 rjmp .+2 ; 0xad2 <main+0x1ec>
ad0: 97 98 cbi 0x12, 7 ; 18
FastADConvert();
ad2: 17 d4 rcall .+2094 ; 0x1302 <FastADConvert>
DebugAusgaben(); // welche Werte sollen angezeigt werden?
if(!UebertragungAbgeschlossen) SendUart();
else DatenUebertragung();
}
// Berechnen des Mittleren Stroms zur (langsamen) Strombegrenzung
if(CheckDelay(MittelstromTimer))
ad4: c6 01 movw r24, r12
ad6: a2 d3 rcall .+1860 ; 0x121c <CheckDelay>
ad8: 88 23 and r24, r24
ada: a9 f1 breq .+106 ; 0xb46 <main+0x260>
{
MittelstromTimer = SetDelay(50); // alle 50ms
adc: 82 e3 ldi r24, 0x32 ; 50
ade: 90 e0 ldi r25, 0x00 ; 0
ae0: 93 d3 rcall .+1830 ; 0x1208 <SetDelay>
ae2: 6c 01 movw r12, r24
if(Mittelstrom < Strom) Mittelstrom++;// Mittelwert des Stroms bilden
ae4: 80 91 7d 00 lds r24, 0x007D
ae8: 48 2f mov r20, r24
aea: 50 e0 ldi r21, 0x00 ; 0
aec: 20 91 7a 00 lds r18, 0x007A
af0: 30 91 7b 00 lds r19, 0x007B
af4: 42 17 cp r20, r18
af6: 53 07 cpc r21, r19
af8: 10 f4 brcc .+4 ; 0xafe <main+0x218>
afa: 8f 5f subi r24, 0xFF ; 255
afc: 04 c0 rjmp .+8 ; 0xb06 <main+0x220>
else if(Mittelstrom > Strom) Mittelstrom--;
afe: 24 17 cp r18, r20
b00: 35 07 cpc r19, r21
b02: 18 f4 brcc .+6 ; 0xb0a <main+0x224>
b04: 81 50 subi r24, 0x01 ; 1
b06: 80 93 7d 00 sts 0x007D, r24
if(Strom > MAX_STROM) MaxPWM -= MaxPWM / 32;
b0a: 29 3c cpi r18, 0xC9 ; 201
b0c: 31 05 cpc r19, r1
b0e: 48 f0 brcs .+18 ; 0xb22 <main+0x23c>
b10: 80 91 64 00 lds r24, 0x0064
b14: 98 2f mov r25, r24
b16: 92 95 swap r25
b18: 96 95 lsr r25
b1a: 97 70 andi r25, 0x07 ; 7
b1c: 89 1b sub r24, r25
b1e: 80 93 64 00 sts 0x0064, r24
if((Mittelstrom > LIMIT_STROM))// Strom am Limit?
b22: 80 91 7d 00 lds r24, 0x007D
b26: 90 91 64 00 lds r25, 0x0064
b2a: 89 37 cpi r24, 0x79 ; 121
b2c: 38 f0 brcs .+14 ; 0xb3c <main+0x256>
{
if(MaxPWM) MaxPWM--;// dann die Maximale PWM herunterfahren
b2e: 99 23 and r25, r25
b30: 19 f0 breq .+6 ; 0xb38 <main+0x252>
b32: 91 50 subi r25, 0x01 ; 1
b34: 90 93 64 00 sts 0x0064, r25
PORTC |= ROT;
b38: ab 9a sbi 0x15, 3 ; 21
b3a: 05 c0 rjmp .+10 ; 0xb46 <main+0x260>
}
else
{
if(MaxPWM < MAX_PWM) MaxPWM++;
b3c: 9f 3f cpi r25, 0xFF ; 255
b3e: 19 f0 breq .+6 ; 0xb46 <main+0x260>
b40: 9f 5f subi r25, 0xFF ; 255
b42: 90 93 64 00 sts 0x0064, r25
}
}
 
if(CheckDelay(DrehzahlMessTimer)) // Ist-Drehzahl bestimmen
b46: ce 01 movw r24, r28
b48: 69 d3 rcall .+1746 ; 0x121c <CheckDelay>
b4a: 88 23 and r24, r24
b4c: 91 f0 breq .+36 ; 0xb72 <main+0x28c>
{
DrehzahlMessTimer = SetDelay(10);
b4e: 8a e0 ldi r24, 0x0A ; 10
b50: 90 e0 ldi r25, 0x00 ; 0
b52: 5a d3 rcall .+1716 ; 0x1208 <SetDelay>
b54: ec 01 movw r28, r24
SIO_Drehzahl = CntKommutierungen;//(6 * CntKommutierungen) / (POLANZAHL / 2);
b56: 80 91 89 00 lds r24, 0x0089
b5a: 90 91 8a 00 lds r25, 0x008A
b5e: 90 93 8c 00 sts 0x008C, r25
b62: 80 93 8b 00 sts 0x008B, r24
CntKommutierungen = 0;
b66: 10 92 8a 00 sts 0x008A, r1
b6a: 10 92 89 00 sts 0x0089, r1
// if(PPM_Timeout == 0) // keine PPM-Signale
ZeitZumAdWandeln = 1;
b6e: f0 92 65 00 sts 0x0065, r15
}
}
}
#endif
// Motor Stehen geblieben
if((CheckDelay(MinUpmPulse) && SIO_Drehzahl == 0) || MotorAnwerfen)
b72: 80 91 b3 02 lds r24, 0x02B3
b76: 90 91 b4 02 lds r25, 0x02B4
b7a: 50 d3 rcall .+1696 ; 0x121c <CheckDelay>
b7c: 88 23 and r24, r24
b7e: 31 f0 breq .+12 ; 0xb8c <main+0x2a6>
b80: 80 91 8b 00 lds r24, 0x008B
b84: 90 91 8c 00 lds r25, 0x008C
b88: 89 2b or r24, r25
b8a: 29 f0 breq .+10 ; 0xb96 <main+0x2b0>
b8c: 80 91 88 00 lds r24, 0x0088
b90: 88 23 and r24, r24
b92: 09 f4 brne .+2 ; 0xb96 <main+0x2b0>
b94: 3f cf rjmp .-386 ; 0xa14 <main+0x12e>
{
MotorGestoppt = 1;
b96: f0 92 63 00 sts 0x0063, r15
DISABLE_SENSE_INT;
b9a: 10 92 b1 00 sts 0x00B1, r1
b9e: 43 98 cbi 0x08, 3 ; 8
MinUpmPulse = SetDelay(100);
ba0: 84 e6 ldi r24, 0x64 ; 100
ba2: 90 e0 ldi r25, 0x00 ; 0
ba4: 31 d3 rcall .+1634 ; 0x1208 <SetDelay>
ba6: 90 93 b4 02 sts 0x02B4, r25
baa: 80 93 b3 02 sts 0x02B3, r24
if(MotorAnwerfen)
bae: 80 91 88 00 lds r24, 0x0088
bb2: 88 23 and r24, r24
bb4: 09 f4 brne .+2 ; 0xbb8 <main+0x2d2>
bb6: 2e cf rjmp .-420 ; 0xa14 <main+0x12e>
{
PORTC &= ~ROT;
bb8: ab 98 cbi 0x15, 3 ; 21
Strom_max = 0;
bba: 10 92 7c 00 sts 0x007C, r1
MotorAnwerfen = 0;
bbe: 10 92 88 00 sts 0x0088, r1
if(Anwerfen(10))
bc2: 8a e0 ldi r24, 0x0A ; 10
bc4: b9 dd rcall .-1166 ; 0x738 <Anwerfen>
bc6: 88 23 and r24, r24
bc8: 09 f4 brne .+2 ; 0xbcc <main+0x2e6>
bca: 5b c0 rjmp .+182 ; 0xc82 <main+0x39c>
{
GRN_ON;
bcc: 80 91 b2 00 lds r24, 0x00B2
bd0: 8c 30 cpi r24, 0x0C ; 12
bd2: 10 f4 brcc .+4 ; 0xbd8 <main+0x2f2>
bd4: 97 9a sbi 0x12, 7 ; 18
bd6: 01 c0 rjmp .+2 ; 0xbda <main+0x2f4>
bd8: 97 98 cbi 0x12, 7 ; 18
MotorGestoppt = 0;
bda: 10 92 63 00 sts 0x0063, r1
Phase--;
bde: 80 91 af 00 lds r24, 0x00AF
be2: 81 50 subi r24, 0x01 ; 1
be4: 80 93 af 00 sts 0x00AF, r24
PWM = 1;
be8: 70 92 79 00 sts 0x0079, r7
bec: 60 92 78 00 sts 0x0078, r6
SetPWM();
bf0: 36 da rcall .-2964 ; 0x5e <SetPWM>
SENSE_TOGGLE_INT;
bf2: 88 b1 in r24, 0x08 ; 8
bf4: 8c 7f andi r24, 0xFC ; 252
bf6: 88 b9 out 0x08, r24 ; 8
ENABLE_SENSE_INT;
bf8: f0 92 b1 00 sts 0x00B1, r15
bfc: 88 b1 in r24, 0x08 ; 8
bfe: 8a 60 ori r24, 0x0A ; 10
c00: 88 b9 out 0x08, r24 ; 8
MinUpmPulse = SetDelay(20);
c02: 84 e1 ldi r24, 0x14 ; 20
c04: 90 e0 ldi r25, 0x00 ; 0
c06: 00 d3 rcall .+1536 ; 0x1208 <SetDelay>
c08: 90 93 b4 02 sts 0x02B4, r25
c0c: 80 93 b3 02 sts 0x02B3, r24
while(!CheckDelay(MinUpmPulse)); // kurz Synchronisieren
c10: 80 91 b3 02 lds r24, 0x02B3
c14: 90 91 b4 02 lds r25, 0x02B4
c18: 01 d3 rcall .+1538 ; 0x121c <CheckDelay>
c1a: 88 23 and r24, r24
c1c: c9 f3 breq .-14 ; 0xc10 <main+0x32a>
PWM = 15;
c1e: 90 92 79 00 sts 0x0079, r9
c22: 80 92 78 00 sts 0x0078, r8
SetPWM();
c26: 1b da rcall .-3018 ; 0x5e <SetPWM>
MinUpmPulse = SetDelay(300);
c28: 8c e2 ldi r24, 0x2C ; 44
c2a: 91 e0 ldi r25, 0x01 ; 1
c2c: ed d2 rcall .+1498 ; 0x1208 <SetDelay>
c2e: 90 93 b4 02 sts 0x02B4, r25
c32: 80 93 b3 02 sts 0x02B3, r24
c36: 18 c0 rjmp .+48 ; 0xc68 <main+0x382>
while(!CheckDelay(MinUpmPulse)) // kurz Durchstarten
{
if(Strom > LIMIT_STROM/2)
c38: 80 91 7a 00 lds r24, 0x007A
c3c: 90 91 7b 00 lds r25, 0x007B
c40: cd 97 sbiw r24, 0x3d ; 61
c42: 90 f0 brcs .+36 ; 0xc68 <main+0x382>
{
STEUER_OFF; // Abschalten wegen Kurzschluss
c44: 82 b3 in r24, 0x12 ; 18
c46: 87 7c andi r24, 0xC7 ; 199
c48: 82 bb out 0x12, r24 ; 18
c4a: 1b bc out 0x2b, r1 ; 43
c4c: 1a bc out 0x2a, r1 ; 42
c4e: 19 bc out 0x29, r1 ; 41
c50: 18 bc out 0x28, r1 ; 40
c52: 13 bc out 0x23, r1 ; 35
c54: ff bc out 0x2f, r15 ; 47
c56: e5 bc out 0x25, r14 ; 37
c58: 57 ba out 0x17, r5 ; 23
c5a: 88 b3 in r24, 0x18 ; 24
c5c: 81 7f andi r24, 0xF1 ; 241
c5e: 88 bb out 0x18, r24 ; 24
RotBlink(10);
c60: 8a e0 ldi r24, 0x0A ; 10
c62: 0c db rcall .-2536 ; 0x27c <RotBlink>
MotorAnwerfen = 1;
c64: f0 92 88 00 sts 0x0088, r15
MinUpmPulse = SetDelay(20);
while(!CheckDelay(MinUpmPulse)); // kurz Synchronisieren
PWM = 15;
SetPWM();
MinUpmPulse = SetDelay(300);
while(!CheckDelay(MinUpmPulse)) // kurz Durchstarten
c68: 80 91 b3 02 lds r24, 0x02B3
c6c: 90 91 b4 02 lds r25, 0x02B4
c70: d5 d2 rcall .+1450 ; 0x121c <CheckDelay>
c72: 88 23 and r24, r24
c74: 09 f3 breq .-62 ; 0xc38 <main+0x352>
RotBlink(10);
MotorAnwerfen = 1;
}
}
// Drehzahlmessung wieder aufsetzen
DrehzahlMessTimer = SetDelay(50);
c76: 82 e3 ldi r24, 0x32 ; 50
c78: 90 e0 ldi r25, 0x00 ; 0
c7a: c6 d2 rcall .+1420 ; 0x1208 <SetDelay>
c7c: ec 01 movw r28, r24
c7e: 07 e0 ldi r16, 0x07 ; 7
c80: c9 ce rjmp .-622 ; 0xa14 <main+0x12e>
altPhase = 7;
}
else if(SollwertErmittlung()) MotorAnwerfen = 1;
c82: 5e da rcall .-2884 ; 0x140 <SollwertErmittlung>
c84: 88 23 and r24, r24
c86: 09 f4 brne .+2 ; 0xc8a <main+0x3a4>
c88: c5 ce rjmp .-630 ; 0xa14 <main+0x12e>
c8a: f0 92 88 00 sts 0x0088, r15
c8e: c2 ce rjmp .-636 ; 0xa14 <main+0x12e>
 
00000c90 <__vector_13>:
 
int Debug_Timer;
 
 
SIGNAL(INT_VEC_TX)
{
c90: 1f 92 push r1
c92: 0f 92 push r0
c94: 0f b6 in r0, 0x3f ; 63
c96: 0f 92 push r0
c98: 11 24 eor r1, r1
}
c9a: 0f 90 pop r0
c9c: 0f be out 0x3f, r0 ; 63
c9e: 0f 90 pop r0
ca0: 1f 90 pop r1
ca2: 18 95 reti
 
00000ca4 <SendUart>:
 
void SendUart(void)
{
static unsigned int ptr = 0;
unsigned char tmp_tx;
if(!(UCSRA & 0x40)) return;
ca4: 5e 9b sbis 0x0b, 6 ; 11
ca6: 24 c0 rjmp .+72 ; 0xcf0 <SendUart+0x4c>
if(!UebertragungAbgeschlossen)
ca8: 80 91 6f 00 lds r24, 0x006F
cac: 88 23 and r24, r24
cae: e1 f4 brne .+56 ; 0xce8 <SendUart+0x44>
{
ptr++; // die [0] wurde schon gesendet
cb0: 80 91 a0 00 lds r24, 0x00A0
cb4: 90 91 a1 00 lds r25, 0x00A1
cb8: 01 96 adiw r24, 0x01 ; 1
cba: 90 93 a1 00 sts 0x00A1, r25
cbe: 80 93 a0 00 sts 0x00A0, r24
tmp_tx = SendeBuffer[ptr];
cc2: fc 01 movw r30, r24
cc4: e8 54 subi r30, 0x48 ; 72
cc6: fd 4f sbci r31, 0xFD ; 253
cc8: e0 81 ld r30, Z
if((tmp_tx == '\r') || (ptr == MAX_SENDE_BUFF))
cca: ed 30 cpi r30, 0x0D ; 13
ccc: 19 f0 breq .+6 ; 0xcd4 <SendUart+0x30>
cce: 84 36 cpi r24, 0x64 ; 100
cd0: 91 05 cpc r25, r1
cd2: 39 f4 brne .+14 ; 0xce2 <SendUart+0x3e>
{
ptr = 0;
cd4: 10 92 a1 00 sts 0x00A1, r1
cd8: 10 92 a0 00 sts 0x00A0, r1
UebertragungAbgeschlossen = 1;
cdc: 81 e0 ldi r24, 0x01 ; 1
cde: 80 93 6f 00 sts 0x006F, r24
}
USR |= (1<TXC);
ce2: 58 9a sbi 0x0b, 0 ; 11
UDR = tmp_tx;
ce4: ec b9 out 0x0c, r30 ; 12
ce6: 08 95 ret
}
else ptr = 0;
ce8: 10 92 a1 00 sts 0x00A1, r1
cec: 10 92 a0 00 sts 0x00A0, r1
cf0: 08 95 ret
 
00000cf2 <Decode64>:
}
 
// --------------------------------------------------------------------------
void Decode64(unsigned char *ptrOut, unsigned char len, unsigned char ptrIn,unsigned char max) // Wohin mit den Daten; Wie lang; Wo im RxdBuffer
{
cf2: 1f 93 push r17
cf4: cf 93 push r28
cf6: df 93 push r29
cf8: ec 01 movw r28, r24
cfa: 70 e0 ldi r23, 0x00 ; 0
{
a = RxdBuffer[ptrIn++] - '=';
b = RxdBuffer[ptrIn++] - '=';
c = RxdBuffer[ptrIn++] - '=';
d = RxdBuffer[ptrIn++] - '=';
if(ptrIn > max - 2) break; // nicht mehr Daten verarbeiten, als empfangen wurden
cfc: a2 2f mov r26, r18
cfe: b0 e0 ldi r27, 0x00 ; 0
d00: 11 97 sbiw r26, 0x01 ; 1
d02: 48 c0 rjmp .+144 ; 0xd94 <Decode64+0xa2>
unsigned char a,b,c,d;
unsigned char ptr = 0;
unsigned char x,y,z;
while(len)
{
a = RxdBuffer[ptrIn++] - '=';
d04: e4 2f mov r30, r20
d06: f0 e0 ldi r31, 0x00 ; 0
d08: e2 5e subi r30, 0xE2 ; 226
d0a: fc 4f sbci r31, 0xFC ; 252
d0c: 30 81 ld r19, Z
b = RxdBuffer[ptrIn++] - '=';
d0e: 4f 5f subi r20, 0xFF ; 255
d10: e4 2f mov r30, r20
d12: f0 e0 ldi r31, 0x00 ; 0
d14: e2 5e subi r30, 0xE2 ; 226
d16: fc 4f sbci r31, 0xFC ; 252
d18: 50 81 ld r21, Z
c = RxdBuffer[ptrIn++] - '=';
d1a: 4f 5f subi r20, 0xFF ; 255
d1c: e4 2f mov r30, r20
d1e: f0 e0 ldi r31, 0x00 ; 0
d20: e2 5e subi r30, 0xE2 ; 226
d22: fc 4f sbci r31, 0xFC ; 252
d24: 10 81 ld r17, Z
d = RxdBuffer[ptrIn++] - '=';
d26: 4f 5f subi r20, 0xFF ; 255
d28: e4 2f mov r30, r20
d2a: f0 e0 ldi r31, 0x00 ; 0
d2c: e2 5e subi r30, 0xE2 ; 226
d2e: fc 4f sbci r31, 0xFC ; 252
d30: 20 81 ld r18, Z
d32: 4f 5f subi r20, 0xFF ; 255
if(ptrIn > max - 2) break; // nicht mehr Daten verarbeiten, als empfangen wurden
d34: 84 2f mov r24, r20
d36: 90 e0 ldi r25, 0x00 ; 0
d38: 8a 17 cp r24, r26
d3a: 9b 07 cpc r25, r27
d3c: 74 f5 brge .+92 ; 0xd9a <Decode64+0xa8>
unsigned char ptr = 0;
unsigned char x,y,z;
while(len)
{
a = RxdBuffer[ptrIn++] - '=';
b = RxdBuffer[ptrIn++] - '=';
d3e: 5d 53 subi r21, 0x3D ; 61
 
x = (a << 2) | (b >> 4);
y = ((b & 0x0f) << 4) | (c >> 2);
z = ((c & 0x03) << 6) | d;
 
if(len--) ptrOut[ptr++] = x; else break;
d40: fe 01 movw r30, r28
d42: e7 0f add r30, r23
d44: f1 1d adc r31, r1
d46: 85 2f mov r24, r21
d48: 82 95 swap r24
d4a: 8f 70 andi r24, 0x0F ; 15
d4c: 3d 53 subi r19, 0x3D ; 61
d4e: 33 0f add r19, r19
d50: 33 0f add r19, r19
d52: 38 2b or r19, r24
d54: 30 83 st Z, r19
if(len--) ptrOut[ptr++] = y; else break;
d56: 61 30 cpi r22, 0x01 ; 1
d58: 01 f1 breq .+64 ; 0xd9a <Decode64+0xa8>
unsigned char x,y,z;
while(len)
{
a = RxdBuffer[ptrIn++] - '=';
b = RxdBuffer[ptrIn++] - '=';
c = RxdBuffer[ptrIn++] - '=';
d5a: 91 2f mov r25, r17
d5c: 9d 53 subi r25, 0x3D ; 61
x = (a << 2) | (b >> 4);
y = ((b & 0x0f) << 4) | (c >> 2);
z = ((c & 0x03) << 6) | d;
 
if(len--) ptrOut[ptr++] = x; else break;
if(len--) ptrOut[ptr++] = y; else break;
d5e: 7f 5f subi r23, 0xFF ; 255
d60: fe 01 movw r30, r28
d62: e7 0f add r30, r23
d64: f1 1d adc r31, r1
d66: 71 50 subi r23, 0x01 ; 1
d68: 52 95 swap r21
d6a: 50 7f andi r21, 0xF0 ; 240
d6c: 89 2f mov r24, r25
d6e: 86 95 lsr r24
d70: 86 95 lsr r24
d72: 58 2b or r21, r24
d74: 50 83 st Z, r21
if(len--) ptrOut[ptr++] = z; else break;
d76: 62 30 cpi r22, 0x02 ; 2
d78: 81 f0 breq .+32 ; 0xd9a <Decode64+0xa8>
d7a: 63 50 subi r22, 0x03 ; 3
d7c: 7e 5f subi r23, 0xFE ; 254
d7e: fe 01 movw r30, r28
d80: e7 0f add r30, r23
d82: f1 1d adc r31, r1
d84: 92 95 swap r25
d86: 99 0f add r25, r25
d88: 99 0f add r25, r25
d8a: 90 7c andi r25, 0xC0 ; 192
d8c: 2d 53 subi r18, 0x3D ; 61
d8e: 92 2b or r25, r18
d90: 90 83 st Z, r25
d92: 7f 5f subi r23, 0xFF ; 255
void Decode64(unsigned char *ptrOut, unsigned char len, unsigned char ptrIn,unsigned char max) // Wohin mit den Daten; Wie lang; Wo im RxdBuffer
{
unsigned char a,b,c,d;
unsigned char ptr = 0;
unsigned char x,y,z;
while(len)
d94: 66 23 and r22, r22
d96: 09 f0 breq .+2 ; 0xd9a <Decode64+0xa8>
d98: b5 cf rjmp .-150 ; 0xd04 <Decode64+0x12>
if(len--) ptrOut[ptr++] = x; else break;
if(len--) ptrOut[ptr++] = y; else break;
if(len--) ptrOut[ptr++] = z; else break;
}
 
}
d9a: df 91 pop r29
d9c: cf 91 pop r28
d9e: 1f 91 pop r17
da0: 08 95 ret
 
00000da2 <AddCRC>:
};
 
 
// --------------------------------------------------------------------------
void AddCRC(unsigned int wieviele)
{
da2: dc 01 movw r26, r24
da4: 20 e0 ldi r18, 0x00 ; 0
da6: 30 e0 ldi r19, 0x00 ; 0
da8: 40 e0 ldi r20, 0x00 ; 0
daa: 50 e0 ldi r21, 0x00 ; 0
dac: 08 c0 rjmp .+16 ; 0xdbe <AddCRC+0x1c>
unsigned int tmpCRC = 0,i;
for(i = 0; i < wieviele;i++)
{
tmpCRC += SendeBuffer[i];
dae: fa 01 movw r30, r20
db0: e8 54 subi r30, 0x48 ; 72
db2: fd 4f sbci r31, 0xFD ; 253
db4: 80 81 ld r24, Z
db6: 28 0f add r18, r24
db8: 31 1d adc r19, r1
 
// --------------------------------------------------------------------------
void AddCRC(unsigned int wieviele)
{
unsigned int tmpCRC = 0,i;
for(i = 0; i < wieviele;i++)
dba: 4f 5f subi r20, 0xFF ; 255
dbc: 5f 4f sbci r21, 0xFF ; 255
dbe: 4a 17 cp r20, r26
dc0: 5b 07 cpc r21, r27
dc2: a8 f3 brcs .-22 ; 0xdae <AddCRC+0xc>
{
tmpCRC += SendeBuffer[i];
}
tmpCRC %= 4096;
dc4: 3f 70 andi r19, 0x0F ; 15
SendeBuffer[i++] = '=' + tmpCRC / 64;
dc6: c9 01 movw r24, r18
dc8: 36 e0 ldi r19, 0x06 ; 6
dca: 96 95 lsr r25
dcc: 87 95 ror r24
dce: 3a 95 dec r19
dd0: e1 f7 brne .-8 ; 0xdca <AddCRC+0x28>
dd2: 83 5c subi r24, 0xC3 ; 195
dd4: fd 01 movw r30, r26
dd6: e8 54 subi r30, 0x48 ; 72
dd8: fd 4f sbci r31, 0xFD ; 253
dda: 80 83 st Z, r24
ddc: 11 96 adiw r26, 0x01 ; 1
SendeBuffer[i++] = '=' + tmpCRC % 64;
dde: 2f 73 andi r18, 0x3F ; 63
de0: 23 5c subi r18, 0xC3 ; 195
de2: fd 01 movw r30, r26
de4: e8 54 subi r30, 0x48 ; 72
de6: fd 4f sbci r31, 0xFD ; 253
de8: 20 83 st Z, r18
SendeBuffer[i++] = '\r';
dea: a7 54 subi r26, 0x47 ; 71
dec: bd 4f sbci r27, 0xFD ; 253
dee: 8d e0 ldi r24, 0x0D ; 13
df0: 8c 93 st X, r24
UebertragungAbgeschlossen = 0;
df2: 10 92 6f 00 sts 0x006F, r1
UDR = SendeBuffer[0];
df6: 80 91 b8 02 lds r24, 0x02B8
dfa: 8c b9 out 0x0c, r24 ; 12
}
dfc: 08 95 ret
 
00000dfe <SendOutData>:
 
 
// --------------------------------------------------------------------------
void SendOutData(unsigned char cmd,unsigned char modul, unsigned char *snd, unsigned char len)
{
dfe: cf 93 push r28
e00: df 93 push r29
e02: ea 01 movw r28, r20
e04: b2 2f mov r27, r18
unsigned int pt = 0;
unsigned char a,b,c;
unsigned char ptr = 0;
 
SendeBuffer[pt++] = '#'; // Startzeichen
e06: 93 e2 ldi r25, 0x23 ; 35
e08: 90 93 b8 02 sts 0x02B8, r25
SendeBuffer[pt++] = modul; // Adresse (a=0; b=1,...)
e0c: 60 93 b9 02 sts 0x02B9, r22
SendeBuffer[pt++] = cmd; // Commando
e10: 80 93 ba 02 sts 0x02BA, r24
e14: 63 e0 ldi r22, 0x03 ; 3
e16: 70 e0 ldi r23, 0x00 ; 0
e18: a0 e0 ldi r26, 0x00 ; 0
e1a: 4e c0 rjmp .+156 ; 0xeb8 <SendOutData+0xba>
 
while(len)
{
if(len) { a = snd[ptr++]; len--;} else a = 0;
e1c: fe 01 movw r30, r28
e1e: ea 0f add r30, r26
e20: f1 1d adc r31, r1
e22: 90 81 ld r25, Z
e24: af 5f subi r26, 0xFF ; 255
e26: b1 50 subi r27, 0x01 ; 1
if(len) { b = snd[ptr++]; len--;} else b = 0;
e28: 19 f4 brne .+6 ; 0xe30 <SendOutData+0x32>
e2a: 30 e0 ldi r19, 0x00 ; 0
e2c: 40 e0 ldi r20, 0x00 ; 0
e2e: 0f c0 rjmp .+30 ; 0xe4e <SendOutData+0x50>
e30: fe 01 movw r30, r28
e32: ea 0f add r30, r26
e34: f1 1d adc r31, r1
e36: 40 81 ld r20, Z
e38: af 5f subi r26, 0xFF ; 255
e3a: b1 50 subi r27, 0x01 ; 1
if(len) { c = snd[ptr++]; len--;} else c = 0;
e3c: 11 f4 brne .+4 ; 0xe42 <SendOutData+0x44>
e3e: 30 e0 ldi r19, 0x00 ; 0
e40: 06 c0 rjmp .+12 ; 0xe4e <SendOutData+0x50>
e42: fe 01 movw r30, r28
e44: ea 0f add r30, r26
e46: f1 1d adc r31, r1
e48: 30 81 ld r19, Z
e4a: af 5f subi r26, 0xFF ; 255
e4c: b1 50 subi r27, 0x01 ; 1
SendeBuffer[pt++] = '=' + (a >> 2);
e4e: 89 2f mov r24, r25
e50: 86 95 lsr r24
e52: 86 95 lsr r24
e54: 83 5c subi r24, 0xC3 ; 195
e56: fb 01 movw r30, r22
e58: e8 54 subi r30, 0x48 ; 72
e5a: fd 4f sbci r31, 0xFD ; 253
e5c: 80 83 st Z, r24
SendeBuffer[pt++] = '=' + (((a & 0x03) << 4) | ((b & 0xf0) >> 4));
e5e: 24 2f mov r18, r20
e60: 22 95 swap r18
e62: 2f 70 andi r18, 0x0F ; 15
e64: 89 2f mov r24, r25
e66: 90 e0 ldi r25, 0x00 ; 0
e68: 83 70 andi r24, 0x03 ; 3
e6a: 90 70 andi r25, 0x00 ; 0
e6c: 54 e0 ldi r21, 0x04 ; 4
e6e: 88 0f add r24, r24
e70: 99 1f adc r25, r25
e72: 5a 95 dec r21
e74: e1 f7 brne .-8 ; 0xe6e <SendOutData+0x70>
e76: 28 2b or r18, r24
e78: 23 5c subi r18, 0xC3 ; 195
e7a: fb 01 movw r30, r22
e7c: e7 54 subi r30, 0x47 ; 71
e7e: fd 4f sbci r31, 0xFD ; 253
e80: 20 83 st Z, r18
SendeBuffer[pt++] = '=' + (((b & 0x0f) << 2) | ((c & 0xc0) >> 6));
e82: 84 2f mov r24, r20
e84: 90 e0 ldi r25, 0x00 ; 0
e86: 8f 70 andi r24, 0x0F ; 15
e88: 90 70 andi r25, 0x00 ; 0
e8a: 88 0f add r24, r24
e8c: 99 1f adc r25, r25
e8e: 88 0f add r24, r24
e90: 99 1f adc r25, r25
e92: 23 2f mov r18, r19
e94: 22 95 swap r18
e96: 26 95 lsr r18
e98: 26 95 lsr r18
e9a: 23 70 andi r18, 0x03 ; 3
e9c: 28 2b or r18, r24
e9e: 23 5c subi r18, 0xC3 ; 195
ea0: fb 01 movw r30, r22
ea2: e6 54 subi r30, 0x46 ; 70
ea4: fd 4f sbci r31, 0xFD ; 253
ea6: 20 83 st Z, r18
SendeBuffer[pt++] = '=' + ( c & 0x3f);
ea8: 3f 73 andi r19, 0x3F ; 63
eaa: 33 5c subi r19, 0xC3 ; 195
eac: fb 01 movw r30, r22
eae: e5 54 subi r30, 0x45 ; 69
eb0: fd 4f sbci r31, 0xFD ; 253
eb2: 30 83 st Z, r19
eb4: 6c 5f subi r22, 0xFC ; 252
eb6: 7f 4f sbci r23, 0xFF ; 255
 
SendeBuffer[pt++] = '#'; // Startzeichen
SendeBuffer[pt++] = modul; // Adresse (a=0; b=1,...)
SendeBuffer[pt++] = cmd; // Commando
 
while(len)
eb8: bb 23 and r27, r27
eba: 09 f0 breq .+2 ; 0xebe <SendOutData+0xc0>
ebc: af cf rjmp .-162 ; 0xe1c <SendOutData+0x1e>
SendeBuffer[pt++] = '=' + (a >> 2);
SendeBuffer[pt++] = '=' + (((a & 0x03) << 4) | ((b & 0xf0) >> 4));
SendeBuffer[pt++] = '=' + (((b & 0x0f) << 2) | ((c & 0xc0) >> 6));
SendeBuffer[pt++] = '=' + ( c & 0x3f);
}
AddCRC(pt);
ebe: cb 01 movw r24, r22
ec0: 70 df rcall .-288 ; 0xda2 <AddCRC>
}
ec2: df 91 pop r29
ec4: cf 91 pop r28
ec6: 08 95 ret
 
00000ec8 <uart_putchar>:
 
//############################################################################
//Routine für die Serielle Ausgabe
int uart_putchar (char c)
//############################################################################
{
ec8: 1f 93 push r17
eca: 18 2f mov r17, r24
if (c == '\n')
ecc: 8a 30 cpi r24, 0x0A ; 10
ece: 11 f4 brne .+4 ; 0xed4 <uart_putchar+0xc>
uart_putchar('\r');
ed0: 8d e0 ldi r24, 0x0D ; 13
ed2: fa df rcall .-12 ; 0xec8 <uart_putchar>
//Warten solange bis Zeichen gesendet wurde
loop_until_bit_is_set(USR, UDRE);
ed4: 5d 9b sbis 0x0b, 5 ; 11
ed6: fe cf rjmp .-4 ; 0xed4 <uart_putchar+0xc>
//Ausgabe des Zeichens
UDR = c;
ed8: 1c b9 out 0x0c, r17 ; 12
return (0);
}
eda: 80 e0 ldi r24, 0x00 ; 0
edc: 90 e0 ldi r25, 0x00 ; 0
ede: 1f 91 pop r17
ee0: 08 95 ret
 
00000ee2 <__vector_11>:
 
//+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
//++ Empfangs-Part der Datenübertragung
//+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
SIGNAL(INT_VEC_RX)
{
ee2: 1f 92 push r1
ee4: 0f 92 push r0
ee6: 0f b6 in r0, 0x3f ; 63
ee8: 0f 92 push r0
eea: 11 24 eor r1, r1
eec: 2f 93 push r18
eee: 3f 93 push r19
ef0: 4f 93 push r20
ef2: 5f 93 push r21
ef4: 6f 93 push r22
ef6: 7f 93 push r23
ef8: 8f 93 push r24
efa: 9f 93 push r25
efc: af 93 push r26
efe: bf 93 push r27
f00: cf 93 push r28
f02: df 93 push r29
f04: ef 93 push r30
f06: ff 93 push r31
static unsigned int crc;
static unsigned char crc1,crc2,buf_ptr;
static unsigned char UartState = 0;
unsigned char CrcOkay = 0;
SioTmp = UDR;
f08: 8c b1 in r24, 0x0c ; 12
f0a: 80 93 91 00 sts 0x0091, r24
if(buf_ptr >= MAX_EMPFANGS_BUFF) UartState = 0;
f0e: 40 91 9b 00 lds r20, 0x009B
f12: 44 36 cpi r20, 0x64 ; 100
f14: 10 f0 brcs .+4 ; 0xf1a <__vector_11+0x38>
f16: 10 92 9a 00 sts 0x009A, r1
if(SioTmp == '\r' && UartState == 2)
f1a: 50 91 91 00 lds r21, 0x0091
f1e: 5d 30 cpi r21, 0x0D ; 13
f20: 09 f0 breq .+2 ; 0xf24 <__vector_11+0x42>
f22: 64 c0 rjmp .+200 ; 0xfec <__vector_11+0x10a>
f24: 80 91 9a 00 lds r24, 0x009A
f28: 82 30 cpi r24, 0x02 ; 2
f2a: 09 f0 breq .+2 ; 0xf2e <__vector_11+0x4c>
f2c: 5f c0 rjmp .+190 ; 0xfec <__vector_11+0x10a>
{
UartState = 0;
f2e: 10 92 9a 00 sts 0x009A, r1
crc -= RxdBuffer[buf_ptr-2];
f32: a4 2f mov r26, r20
f34: b0 e0 ldi r27, 0x00 ; 0
f36: fd 01 movw r30, r26
f38: e4 5e subi r30, 0xE4 ; 228
f3a: fc 4f sbci r31, 0xFC ; 252
f3c: 30 81 ld r19, Z
crc -= RxdBuffer[buf_ptr-1];
f3e: ed 01 movw r28, r26
f40: c3 5e subi r28, 0xE3 ; 227
f42: dc 4f sbci r29, 0xFC ; 252
f44: 28 81 ld r18, Y
crc %= 4096;
f46: 80 91 9e 00 lds r24, 0x009E
f4a: 90 91 9f 00 lds r25, 0x009F
f4e: 83 1b sub r24, r19
f50: 91 09 sbc r25, r1
f52: 82 1b sub r24, r18
f54: 91 09 sbc r25, r1
f56: 9f 70 andi r25, 0x0F ; 15
f58: 90 93 9f 00 sts 0x009F, r25
f5c: 80 93 9e 00 sts 0x009E, r24
crc1 = '=' + crc / 64;
f60: 9c 01 movw r18, r24
f62: 66 e0 ldi r22, 0x06 ; 6
f64: 36 95 lsr r19
f66: 27 95 ror r18
f68: 6a 95 dec r22
f6a: e1 f7 brne .-8 ; 0xf64 <__vector_11+0x82>
f6c: 23 5c subi r18, 0xC3 ; 195
f6e: 20 93 9d 00 sts 0x009D, r18
crc2 = '=' + crc % 64;
f72: 98 2f mov r25, r24
f74: 9f 73 andi r25, 0x3F ; 63
f76: 93 5c subi r25, 0xC3 ; 195
f78: 90 93 9c 00 sts 0x009C, r25
CrcOkay = 0;
if((crc1 == RxdBuffer[buf_ptr-2]) && (crc2 == RxdBuffer[buf_ptr-1])) CrcOkay = 1; else { CrcOkay = 0; };
f7c: 80 81 ld r24, Z
f7e: 28 17 cp r18, r24
f80: 09 f0 breq .+2 ; 0xf84 <__vector_11+0xa2>
f82: 80 c0 rjmp .+256 ; 0x1084 <__vector_11+0x1a2>
f84: 88 81 ld r24, Y
f86: 98 17 cp r25, r24
f88: 09 f0 breq .+2 ; 0xf8c <__vector_11+0xaa>
f8a: 7c c0 rjmp .+248 ; 0x1084 <__vector_11+0x1a2>
if(CrcOkay) // Datensatz schon verarbeitet
{
//NeuerDatensatzEmpfangen = 1;
AnzahlEmpfangsBytes = buf_ptr;
f8c: 40 93 99 00 sts 0x0099, r20
RxdBuffer[buf_ptr] = '\r';
f90: a2 5e subi r26, 0xE2 ; 226
f92: bc 4f sbci r27, 0xFC ; 252
f94: 5c 93 st X, r21
if(/*(RxdBuffer[1] == MeineSlaveAdresse || (RxdBuffer[1] == 'a')) && */(RxdBuffer[2] == 'R')) wdt_enable(WDTO_250MS); // Reset-Commando
f96: 80 91 20 03 lds r24, 0x0320
f9a: 82 35 cpi r24, 0x52 ; 82
f9c: 49 f4 brne .+18 ; 0xfb0 <__vector_11+0xce>
f9e: 2c e0 ldi r18, 0x0C ; 12
fa0: 88 e1 ldi r24, 0x18 ; 24
fa2: 90 e0 ldi r25, 0x00 ; 0
fa4: 0f b6 in r0, 0x3f ; 63
fa6: f8 94 cli
fa8: a8 95 wdr
faa: 81 bd out 0x21, r24 ; 33
fac: 0f be out 0x3f, r0 ; 63
fae: 21 bd out 0x21, r18 ; 33
uart_putchar(RxdBuffer[2]);
fb0: 80 91 20 03 lds r24, 0x0320
fb4: 89 df rcall .-238 ; 0xec8 <uart_putchar>
if (RxdBuffer[2] == 't') // Motortest
fb6: 80 91 20 03 lds r24, 0x0320
fba: 84 37 cpi r24, 0x74 ; 116
fbc: 09 f0 breq .+2 ; 0xfc0 <__vector_11+0xde>
fbe: 62 c0 rjmp .+196 ; 0x1084 <__vector_11+0x1a2>
{ Decode64((unsigned char *) &MotorTest[0],sizeof(MotorTest),3,AnzahlEmpfangsBytes);
fc0: 20 91 99 00 lds r18, 0x0099
fc4: 83 e9 ldi r24, 0x93 ; 147
fc6: 90 e0 ldi r25, 0x00 ; 0
fc8: 66 e0 ldi r22, 0x06 ; 6
fca: 43 e0 ldi r20, 0x03 ; 3
fcc: 92 de rcall .-732 ; 0xcf2 <Decode64>
SIO_Sollwert = MotorTest[MotorAdresse - 1];
fce: e0 91 66 00 lds r30, 0x0066
fd2: f0 e0 ldi r31, 0x00 ; 0
fd4: ee 56 subi r30, 0x6E ; 110
fd6: ff 4f sbci r31, 0xFF ; 255
fd8: 80 81 ld r24, Z
fda: 80 93 90 00 sts 0x0090, r24
SIO_Timeout = 500; // werte für 500ms gültig
fde: 84 ef ldi r24, 0xF4 ; 244
fe0: 91 e0 ldi r25, 0x01 ; 1
fe2: 90 93 83 00 sts 0x0083, r25
fe6: 80 93 82 00 sts 0x0082, r24
fea: 4c c0 rjmp .+152 ; 0x1084 <__vector_11+0x1a2>
}
}
}
else
switch(UartState)
fec: 80 91 9a 00 lds r24, 0x009A
ff0: 81 30 cpi r24, 0x01 ; 1
ff2: f9 f0 breq .+62 ; 0x1032 <__vector_11+0x150>
ff4: 81 30 cpi r24, 0x01 ; 1
ff6: 20 f0 brcs .+8 ; 0x1000 <__vector_11+0x11e>
ff8: 82 30 cpi r24, 0x02 ; 2
ffa: 09 f0 breq .+2 ; 0xffe <__vector_11+0x11c>
ffc: 41 c0 rjmp .+130 ; 0x1080 <__vector_11+0x19e>
ffe: 24 c0 rjmp .+72 ; 0x1048 <__vector_11+0x166>
{
case 0:
if(SioTmp == '#' && !NeuerDatensatzEmpfangen) UartState = 1; // Startzeichen und Daten schon verarbeitet
1000: 80 91 91 00 lds r24, 0x0091
1004: 83 32 cpi r24, 0x23 ; 35
1006: 39 f4 brne .+14 ; 0x1016 <__vector_11+0x134>
1008: 80 91 92 00 lds r24, 0x0092
100c: 88 23 and r24, r24
100e: 19 f4 brne .+6 ; 0x1016 <__vector_11+0x134>
1010: 81 e0 ldi r24, 0x01 ; 1
1012: 80 93 9a 00 sts 0x009A, r24
buf_ptr = 0;
RxdBuffer[buf_ptr++] = SioTmp;
1016: 80 91 91 00 lds r24, 0x0091
101a: 80 93 1e 03 sts 0x031E, r24
101e: 81 e0 ldi r24, 0x01 ; 1
1020: 80 93 9b 00 sts 0x009B, r24
crc = SioTmp;
1024: 80 91 91 00 lds r24, 0x0091
1028: 80 93 9e 00 sts 0x009E, r24
102c: 10 92 9f 00 sts 0x009F, r1
1030: 29 c0 rjmp .+82 ; 0x1084 <__vector_11+0x1a2>
break;
case 1: // Adresse auswerten
UartState++;
1032: 82 e0 ldi r24, 0x02 ; 2
1034: 80 93 9a 00 sts 0x009A, r24
RxdBuffer[buf_ptr++] = SioTmp;
1038: e4 2f mov r30, r20
103a: f0 e0 ldi r31, 0x00 ; 0
103c: 80 91 91 00 lds r24, 0x0091
1040: e2 5e subi r30, 0xE2 ; 226
1042: fc 4f sbci r31, 0xFC ; 252
1044: 80 83 st Z, r24
1046: 09 c0 rjmp .+18 ; 0x105a <__vector_11+0x178>
crc += SioTmp;
break;
case 2: // Eingangsdaten sammeln
RxdBuffer[buf_ptr] = SioTmp;
1048: e4 2f mov r30, r20
104a: f0 e0 ldi r31, 0x00 ; 0
104c: 80 91 91 00 lds r24, 0x0091
1050: e2 5e subi r30, 0xE2 ; 226
1052: fc 4f sbci r31, 0xFC ; 252
1054: 80 83 st Z, r24
if(buf_ptr < MAX_EMPFANGS_BUFF) buf_ptr++;
1056: 44 36 cpi r20, 0x64 ; 100
1058: 20 f4 brcc .+8 ; 0x1062 <__vector_11+0x180>
105a: 4f 5f subi r20, 0xFF ; 255
105c: 40 93 9b 00 sts 0x009B, r20
1060: 02 c0 rjmp .+4 ; 0x1066 <__vector_11+0x184>
else UartState = 0;
1062: 10 92 9a 00 sts 0x009A, r1
crc += SioTmp;
1066: 20 91 91 00 lds r18, 0x0091
106a: 80 91 9e 00 lds r24, 0x009E
106e: 90 91 9f 00 lds r25, 0x009F
1072: 82 0f add r24, r18
1074: 91 1d adc r25, r1
1076: 90 93 9f 00 sts 0x009F, r25
107a: 80 93 9e 00 sts 0x009E, r24
107e: 02 c0 rjmp .+4 ; 0x1084 <__vector_11+0x1a2>
break;
default:
UartState = 0;
1080: 10 92 9a 00 sts 0x009A, r1
break;
}
 
#endif
};
1084: ff 91 pop r31
1086: ef 91 pop r30
1088: df 91 pop r29
108a: cf 91 pop r28
108c: bf 91 pop r27
108e: af 91 pop r26
1090: 9f 91 pop r25
1092: 8f 91 pop r24
1094: 7f 91 pop r23
1096: 6f 91 pop r22
1098: 5f 91 pop r21
109a: 4f 91 pop r20
109c: 3f 91 pop r19
109e: 2f 91 pop r18
10a0: 0f 90 pop r0
10a2: 0f be out 0x3f, r0 ; 63
10a4: 0f 90 pop r0
10a6: 1f 90 pop r1
10a8: 18 95 reti
 
000010aa <WriteProgramData>:
}
 
// --------------------------------------------------------------------------
void WriteProgramData(unsigned int pos, unsigned char wert)
{
}
10aa: 08 95 ret
 
000010ac <DatenUebertragung>:
 
 
//---------------------------------------------------------------------------------------------
void DatenUebertragung(void)
{
if((CheckDelay(Debug_Timer) && UebertragungAbgeschlossen)) // im Singlestep-Betrieb in jedem Schtitt senden
10ac: 80 91 1c 03 lds r24, 0x031C
10b0: 90 91 1d 03 lds r25, 0x031D
10b4: b3 d0 rcall .+358 ; 0x121c <CheckDelay>
10b6: 88 23 and r24, r24
10b8: 91 f0 breq .+36 ; 0x10de <DatenUebertragung+0x32>
10ba: 80 91 6f 00 lds r24, 0x006F
10be: 88 23 and r24, r24
10c0: 71 f0 breq .+28 ; 0x10de <DatenUebertragung+0x32>
{
SendOutData('D',MeineSlaveAdresse,(unsigned char *) &DebugOut,sizeof(DebugOut));
10c2: 84 e4 ldi r24, 0x44 ; 68
10c4: 60 91 b7 02 lds r22, 0x02B7
10c8: 42 e8 ldi r20, 0x82 ; 130
10ca: 53 e0 ldi r21, 0x03 ; 3
10cc: 22 e1 ldi r18, 0x12 ; 18
10ce: 97 de rcall .-722 ; 0xdfe <SendOutData>
Debug_Timer = SetDelay(50); // Sendeintervall
10d0: 82 e3 ldi r24, 0x32 ; 50
10d2: 90 e0 ldi r25, 0x00 ; 0
10d4: 99 d0 rcall .+306 ; 0x1208 <SetDelay>
10d6: 90 93 1d 03 sts 0x031D, r25
10da: 80 93 1c 03 sts 0x031C, r24
10de: 08 95 ret
 
000010e0 <UART_Init>:
void UART_Init (void)
//############################################################################
{
//Enable TXEN im Register UCR TX-Data Enable & RX Enable
 
UCR=(1 << TXEN) | (1 << RXEN);
10e0: 88 e1 ldi r24, 0x18 ; 24
10e2: 8a b9 out 0x0a, r24 ; 10
// UART Double Speed (U2X)
USR |= (1<<U2X);
10e4: 59 9a sbi 0x0b, 1 ; 11
// RX-Interrupt Freigabe
 
UCSRB |= (1<<RXCIE); // serieller Empfangsinterrupt
10e6: 57 9a sbi 0x0a, 7 ; 10
 
// TX-Interrupt Freigabe
// UCSRB |= (1<<TXCIE);
 
//Teiler wird gesetzt
UBRR= (SYSCLK / (BAUD_RATE * 8L) -1 );
10e8: 80 e1 ldi r24, 0x10 ; 16
10ea: 89 b9 out 0x09, r24 ; 9
//öffnet einen Kanal für printf (STDOUT)
fdevopen (uart_putchar, NULL);
10ec: 84 e6 ldi r24, 0x64 ; 100
10ee: 97 e0 ldi r25, 0x07 ; 7
10f0: 60 e0 ldi r22, 0x00 ; 0
10f2: 70 e0 ldi r23, 0x00 ; 0
10f4: f7 d3 rcall .+2030 ; 0x18e4 <fdevopen>
Debug_Timer = SetDelay(200);
10f6: 88 ec ldi r24, 0xC8 ; 200
10f8: 90 e0 ldi r25, 0x00 ; 0
10fa: 86 d0 rcall .+268 ; 0x1208 <SetDelay>
10fc: 90 93 1d 03 sts 0x031D, r25
1100: 80 93 1c 03 sts 0x031C, r24
// Version beim Start ausgeben (nicht schön, aber geht... )
uart_putchar ('\n');uart_putchar ('B');uart_putchar ('L');uart_putchar (':');
1104: 8a e0 ldi r24, 0x0A ; 10
1106: e0 de rcall .-576 ; 0xec8 <uart_putchar>
1108: 82 e4 ldi r24, 0x42 ; 66
110a: de de rcall .-580 ; 0xec8 <uart_putchar>
110c: 8c e4 ldi r24, 0x4C ; 76
110e: dc de rcall .-584 ; 0xec8 <uart_putchar>
1110: 8a e3 ldi r24, 0x3A ; 58
1112: da de rcall .-588 ; 0xec8 <uart_putchar>
uart_putchar ('V');uart_putchar (0x30 + VERSION_HAUPTVERSION);uart_putchar ('.');uart_putchar (0x30 + VERSION_NEBENVERSION/10); uart_putchar (0x30 + VERSION_NEBENVERSION%10);
1114: 86 e5 ldi r24, 0x56 ; 86
1116: d8 de rcall .-592 ; 0xec8 <uart_putchar>
1118: 80 e3 ldi r24, 0x30 ; 48
111a: d6 de rcall .-596 ; 0xec8 <uart_putchar>
111c: 8e e2 ldi r24, 0x2E ; 46
111e: d4 de rcall .-600 ; 0xec8 <uart_putchar>
1120: 84 e3 ldi r24, 0x34 ; 52
1122: d2 de rcall .-604 ; 0xec8 <uart_putchar>
1124: 81 e3 ldi r24, 0x31 ; 49
1126: d0 de rcall .-608 ; 0xec8 <uart_putchar>
uart_putchar ('\n');uart_putchar('H');uart_putchar('W');uart_putchar (':');uart_putchar('1');uart_putchar('.');uart_putchar ((0x30-10) + HwVersion);
1128: 8a e0 ldi r24, 0x0A ; 10
112a: ce de rcall .-612 ; 0xec8 <uart_putchar>
112c: 88 e4 ldi r24, 0x48 ; 72
112e: cc de rcall .-616 ; 0xec8 <uart_putchar>
1130: 87 e5 ldi r24, 0x57 ; 87
1132: ca de rcall .-620 ; 0xec8 <uart_putchar>
1134: 8a e3 ldi r24, 0x3A ; 58
1136: c8 de rcall .-624 ; 0xec8 <uart_putchar>
1138: 81 e3 ldi r24, 0x31 ; 49
113a: c6 de rcall .-628 ; 0xec8 <uart_putchar>
113c: 8e e2 ldi r24, 0x2E ; 46
113e: c4 de rcall .-632 ; 0xec8 <uart_putchar>
1140: 80 91 b2 00 lds r24, 0x00B2
1144: 8a 5d subi r24, 0xDA ; 218
1146: c0 de rcall .-640 ; 0xec8 <uart_putchar>
uart_putchar ('\n');uart_putchar ('A');uart_putchar ('D');uart_putchar ('R'); uart_putchar (':'); uart_putchar (0x30 + MotorAdresse);
1148: 8a e0 ldi r24, 0x0A ; 10
114a: be de rcall .-644 ; 0xec8 <uart_putchar>
114c: 81 e4 ldi r24, 0x41 ; 65
114e: bc de rcall .-648 ; 0xec8 <uart_putchar>
1150: 84 e4 ldi r24, 0x44 ; 68
1152: ba de rcall .-652 ; 0xec8 <uart_putchar>
1154: 82 e5 ldi r24, 0x52 ; 82
1156: b8 de rcall .-656 ; 0xec8 <uart_putchar>
1158: 8a e3 ldi r24, 0x3A ; 58
115a: b6 de rcall .-660 ; 0xec8 <uart_putchar>
115c: 80 91 66 00 lds r24, 0x0066
1160: 80 5d subi r24, 0xD0 ; 208
1162: b2 de rcall .-668 ; 0xec8 <uart_putchar>
 
}
1164: 08 95 ret
 
00001166 <__vector_9>:
T0_RISING_EDGE = 7
};
 
 
SIGNAL(SIG_OVERFLOW0)
{
1166: 1f 92 push r1
1168: 0f 92 push r0
116a: 0f b6 in r0, 0x3f ; 63
116c: 0f 92 push r0
116e: 11 24 eor r1, r1
1170: 8f 93 push r24
1172: 9f 93 push r25
static unsigned char cnt;
Timer0Overflow++;
1174: 80 91 94 03 lds r24, 0x0394
1178: 8f 5f subi r24, 0xFF ; 255
117a: 80 93 94 03 sts 0x0394, r24
if(!cnt--)
117e: 80 91 a4 00 lds r24, 0x00A4
1182: 81 50 subi r24, 0x01 ; 1
1184: 80 93 a4 00 sts 0x00A4, r24
1188: 8f 5f subi r24, 0xFF ; 255
118a: 71 f5 brne .+92 ; 0x11e8 <__vector_9+0x82>
{
cnt = 3;
118c: 83 e0 ldi r24, 0x03 ; 3
118e: 80 93 a4 00 sts 0x00A4, r24
CountMilliseconds += 1;
1192: 80 91 a2 00 lds r24, 0x00A2
1196: 90 91 a3 00 lds r25, 0x00A3
119a: 01 96 adiw r24, 0x01 ; 1
119c: 90 93 a3 00 sts 0x00A3, r25
11a0: 80 93 a2 00 sts 0x00A2, r24
if(I2C_Timeout) I2C_Timeout--;
11a4: 80 91 80 00 lds r24, 0x0080
11a8: 90 91 81 00 lds r25, 0x0081
11ac: 00 97 sbiw r24, 0x00 ; 0
11ae: 29 f0 breq .+10 ; 0x11ba <__vector_9+0x54>
11b0: 01 97 sbiw r24, 0x01 ; 1
11b2: 90 93 81 00 sts 0x0081, r25
11b6: 80 93 80 00 sts 0x0080, r24
if(PPM_Timeout) PPM_Timeout--; else anz_ppm_werte = 0;
11ba: 80 91 a8 00 lds r24, 0x00A8
11be: 88 23 and r24, r24
11c0: 31 f0 breq .+12 ; 0x11ce <__vector_9+0x68>
11c2: 80 91 a8 00 lds r24, 0x00A8
11c6: 81 50 subi r24, 0x01 ; 1
11c8: 80 93 a8 00 sts 0x00A8, r24
11cc: 02 c0 rjmp .+4 ; 0x11d2 <__vector_9+0x6c>
11ce: 10 92 a9 00 sts 0x00A9, r1
if(SIO_Timeout) SIO_Timeout--;
11d2: 80 91 82 00 lds r24, 0x0082
11d6: 90 91 83 00 lds r25, 0x0083
11da: 00 97 sbiw r24, 0x00 ; 0
11dc: 29 f0 breq .+10 ; 0x11e8 <__vector_9+0x82>
11de: 01 97 sbiw r24, 0x01 ; 1
11e0: 90 93 83 00 sts 0x0083, r25
11e4: 80 93 82 00 sts 0x0082, r24
}
}
11e8: 9f 91 pop r25
11ea: 8f 91 pop r24
11ec: 0f 90 pop r0
11ee: 0f be out 0x3f, r0 ; 63
11f0: 0f 90 pop r0
11f2: 1f 90 pop r1
11f4: 18 95 reti
 
000011f6 <Timer0_Init>:
 
 
void Timer0_Init(void)
{
TCCR0 = TIMER_TEILER;
11f6: 82 e0 ldi r24, 0x02 ; 2
11f8: 83 bf out 0x33, r24 ; 51
// TCNT0 = -TIMER_RELOAD_VALUE; // reload
TIM0_START;
11fa: 89 b7 in r24, 0x39 ; 57
11fc: 81 60 ori r24, 0x01 ; 1
11fe: 89 bf out 0x39, r24 ; 57
TIMER2_INT_ENABLE;
1200: 89 b7 in r24, 0x39 ; 57
1202: 80 64 ori r24, 0x40 ; 64
1204: 89 bf out 0x39, r24 ; 57
}
1206: 08 95 ret
 
00001208 <SetDelay>:
 
 
unsigned int SetDelay(unsigned int t)
{
return(CountMilliseconds + t - 1);
1208: 20 91 a2 00 lds r18, 0x00A2
120c: 30 91 a3 00 lds r19, 0x00A3
1210: 21 50 subi r18, 0x01 ; 1
1212: 30 40 sbci r19, 0x00 ; 0
1214: 28 0f add r18, r24
1216: 39 1f adc r19, r25
}
1218: c9 01 movw r24, r18
121a: 08 95 ret
 
0000121c <CheckDelay>:
 
char CheckDelay (unsigned int t)
{
return(((t - CountMilliseconds) & 0x8000) >> 8);
121c: 20 91 a2 00 lds r18, 0x00A2
1220: 30 91 a3 00 lds r19, 0x00A3
1224: 82 1b sub r24, r18
1226: 93 0b sbc r25, r19
1228: 80 70 andi r24, 0x00 ; 0
122a: 90 78 andi r25, 0x80 ; 128
}
122c: 89 2f mov r24, r25
122e: 08 95 ret
 
00001230 <Delay_ms>:
}
 
 
unsigned int SetDelay(unsigned int t)
{
return(CountMilliseconds + t - 1);
1230: 20 91 a2 00 lds r18, 0x00A2
1234: 30 91 a3 00 lds r19, 0x00A3
1238: 21 50 subi r18, 0x01 ; 1
123a: 30 40 sbci r19, 0x00 ; 0
123c: 28 0f add r18, r24
123e: 39 1f adc r19, r25
}
 
char CheckDelay (unsigned int t)
{
return(((t - CountMilliseconds) & 0x8000) >> 8);
1240: 80 91 a2 00 lds r24, 0x00A2
1244: 90 91 a3 00 lds r25, 0x00A3
 
void Delay_ms(unsigned int w)
{
unsigned int akt;
akt = SetDelay(w);
while (!CheckDelay(akt));
1248: a9 01 movw r20, r18
124a: 48 1b sub r20, r24
124c: 59 0b sbc r21, r25
124e: ca 01 movw r24, r20
1250: 80 70 andi r24, 0x00 ; 0
1252: 90 78 andi r25, 0x80 ; 128
1254: 99 23 and r25, r25
1256: a1 f3 breq .-24 ; 0x1240 <Delay_ms+0x10>
}
1258: 08 95 ret
 
0000125a <ADC_Init>:
//############################################################################
//Init ADC
void ADC_Init(void)
//############################################################################
{
ADCSRA = 0xA6; // Free Run & 1MHZ
125a: 86 ea ldi r24, 0xA6 ; 166
125c: 86 b9 out 0x06, r24 ; 6
ADMUX = 7 | IntRef; // Kanal 7
125e: 80 91 8d 00 lds r24, 0x008D
1262: 87 60 ori r24, 0x07 ; 7
1264: 87 b9 out 0x07, r24 ; 7
ADCSRA |= 0x40; // Start
1266: 36 9a sbi 0x06, 6 ; 6
}
1268: 08 95 ret
 
0000126a <AdConvert>:
void AdConvert(void)
//############################################################################
{
unsigned int i=0;
unsigned char sense;
sense = ADMUX; // Sense-Kanal merken
126a: 27 b1 in r18, 0x07 ; 7
ADMUX = 0x06 | IntRef; // Kanal 6
126c: 90 91 8d 00 lds r25, 0x008D
1270: 96 60 ori r25, 0x06 ; 6
1272: 97 b9 out 0x07, r25 ; 7
SFIOR = 0x00; // Analog Comperator aus
1274: 10 be out 0x30, r1 ; 48
ADCSRA = 0xD3; // Converter ein, single
1276: 83 ed ldi r24, 0xD3 ; 211
1278: 86 b9 out 0x06, r24 ; 6
ADCSRA |= 0x10; // Ready löschen
127a: 34 9a sbi 0x06, 4 ; 6
ADMUX = 0x06 | IntRef; // Kanal 6
127c: 97 b9 out 0x07, r25 ; 7
ADCSRA |= 0x40; // Start
127e: 36 9a sbi 0x06, 6 ; 6
while (((ADCSRA & 0x10) == 0));
1280: 34 9b sbis 0x06, 4 ; 6
1282: fe cf rjmp .-4 ; 0x1280 <AdConvert+0x16>
ADMUX = sense; // zurück auf den Sense-Kanal
1284: 27 b9 out 0x07, r18 ; 7
i = ADCW * 4;
1286: 84 b1 in r24, 0x04 ; 4
1288: 95 b1 in r25, 0x05 ; 5
// if(i > 300) i = 300;
Strom = (i + Strom * 7) / 8;
128a: 20 91 7a 00 lds r18, 0x007A
128e: 30 91 7b 00 lds r19, 0x007B
1292: a9 01 movw r20, r18
1294: 63 e0 ldi r22, 0x03 ; 3
1296: 44 0f add r20, r20
1298: 55 1f adc r21, r21
129a: 6a 95 dec r22
129c: e1 f7 brne .-8 ; 0x1296 <AdConvert+0x2c>
129e: 42 1b sub r20, r18
12a0: 53 0b sbc r21, r19
12a2: 88 0f add r24, r24
12a4: 99 1f adc r25, r25
12a6: 88 0f add r24, r24
12a8: 99 1f adc r25, r25
12aa: 48 0f add r20, r24
12ac: 59 1f adc r21, r25
12ae: 83 e0 ldi r24, 0x03 ; 3
12b0: 56 95 lsr r21
12b2: 47 95 ror r20
12b4: 8a 95 dec r24
12b6: e1 f7 brne .-8 ; 0x12b0 <AdConvert+0x46>
12b8: 50 93 7b 00 sts 0x007B, r21
12bc: 40 93 7a 00 sts 0x007A, r20
if (Strom_max < Strom) Strom_max = Strom;
12c0: 80 91 7c 00 lds r24, 0x007C
12c4: 90 e0 ldi r25, 0x00 ; 0
12c6: 84 17 cp r24, r20
12c8: 95 07 cpc r25, r21
12ca: 10 f4 brcc .+4 ; 0x12d0 <AdConvert+0x66>
12cc: 40 93 7c 00 sts 0x007C, r20
ADCSRA = 0x00;
12d0: 16 b8 out 0x06, r1 ; 6
SFIOR = 0x08; // Analog Comperator ein
12d2: 88 e0 ldi r24, 0x08 ; 8
12d4: 80 bf out 0x30, r24 ; 48
}
12d6: 08 95 ret
 
000012d8 <MessAD>:
//Strom Analogwerte lesen
unsigned int MessAD(unsigned char channel)
//############################################################################
{
unsigned char sense;
sense = ADMUX; // Sense-Kanal merken
12d8: 27 b1 in r18, 0x07 ; 7
channel |= IntRef;
12da: 90 91 8d 00 lds r25, 0x008D
12de: 98 2b or r25, r24
ADMUX = channel; // Kanal 6
12e0: 97 b9 out 0x07, r25 ; 7
SFIOR = 0x00; // Analog Comperator aus
12e2: 10 be out 0x30, r1 ; 48
ADCSRA = 0xD3; // Converter ein, single
12e4: 83 ed ldi r24, 0xD3 ; 211
12e6: 86 b9 out 0x06, r24 ; 6
ADCSRA |= 0x10; // Ready löschen
12e8: 34 9a sbi 0x06, 4 ; 6
ADMUX = channel; // Kanal 6
12ea: 97 b9 out 0x07, r25 ; 7
ADCSRA |= 0x40; // Start
12ec: 36 9a sbi 0x06, 6 ; 6
while (((ADCSRA & 0x10) == 0));
12ee: 34 9b sbis 0x06, 4 ; 6
12f0: fe cf rjmp .-4 ; 0x12ee <MessAD+0x16>
ADMUX = sense; // zurück auf den Sense-Kanal
12f2: 27 b9 out 0x07, r18 ; 7
ADCSRA = 0x00;
12f4: 16 b8 out 0x06, r1 ; 6
SFIOR = 0x08; // Analog Comperator ein
12f6: 88 e0 ldi r24, 0x08 ; 8
12f8: 80 bf out 0x30, r24 ; 48
return(ADCW);
12fa: 24 b1 in r18, 0x04 ; 4
12fc: 35 b1 in r19, 0x05 ; 5
}
12fe: c9 01 movw r24, r18
1300: 08 95 ret
 
00001302 <FastADConvert>:
//Strom Analogwerte lesen
void FastADConvert(void)
//############################################################################
{
unsigned int i=0;
i = MessAD(6) * 4;
1302: 86 e0 ldi r24, 0x06 ; 6
1304: e9 df rcall .-46 ; 0x12d8 <MessAD>
1306: 9c 01 movw r18, r24
1308: 22 0f add r18, r18
130a: 33 1f adc r19, r19
130c: 22 0f add r18, r18
130e: 33 1f adc r19, r19
1310: 29 3c cpi r18, 0xC9 ; 201
1312: 31 05 cpc r19, r1
1314: 10 f0 brcs .+4 ; 0x131a <FastADConvert+0x18>
1316: 28 ec ldi r18, 0xC8 ; 200
1318: 30 e0 ldi r19, 0x00 ; 0
// i = ADCW * 4;
if(i > 200) i = 200;
Strom = i;//(i + Strom * 1) / 2;
131a: 30 93 7b 00 sts 0x007B, r19
131e: 20 93 7a 00 sts 0x007A, r18
if (Strom_max < Strom) Strom_max = Strom;
1322: 80 91 7c 00 lds r24, 0x007C
1326: 90 e0 ldi r25, 0x00 ; 0
1328: 82 17 cp r24, r18
132a: 93 07 cpc r25, r19
132c: 10 f4 brcc .+4 ; 0x1332 <FastADConvert+0x30>
132e: 20 93 7c 00 sts 0x007C, r18
ADCSRA = 0x00;
1332: 16 b8 out 0x06, r1 ; 6
SFIOR = 0x08; // Analog Comperator ein
1334: 88 e0 ldi r24, 0x08 ; 8
1336: 80 bf out 0x30, r24 ; 48
}
1338: 08 95 ret
 
0000133a <InitPPM>:
//############################################################################
//
void InitPPM(void)
//############################################################################
{
TCCR1B |= (1<<ICES1)|(1<<ICNC1);
133a: 8e b5 in r24, 0x2e ; 46
133c: 80 6c ori r24, 0xC0 ; 192
133e: 8e bd out 0x2e, r24 ; 46
ICP_POS_FLANKE;
1340: 8e b5 in r24, 0x2e ; 46
1342: 80 64 ori r24, 0x40 ; 64
1344: 8e bd out 0x2e, r24 ; 46
ICP_INT_ENABLE;
1346: 89 b7 in r24, 0x39 ; 57
1348: 80 62 ori r24, 0x20 ; 32
134a: 89 bf out 0x39, r24 ; 57
TIMER1_INT_ENABLE;
134c: 89 b7 in r24, 0x39 ; 57
134e: 84 60 ori r24, 0x04 ; 4
1350: 89 bf out 0x39, r24 ; 57
}
1352: 08 95 ret
 
00001354 <__vector_8>:
 
//############################################################################
//
SIGNAL(SIG_OVERFLOW1)
//############################################################################
{
1354: 1f 92 push r1
1356: 0f 92 push r0
1358: 0f b6 in r0, 0x3f ; 63
135a: 0f 92 push r0
135c: 11 24 eor r1, r1
135e: 8f 93 push r24
Timer1Overflow++;
1360: 80 91 a7 00 lds r24, 0x00A7
1364: 8f 5f subi r24, 0xFF ; 255
1366: 80 93 a7 00 sts 0x00A7, r24
}
136a: 8f 91 pop r24
136c: 0f 90 pop r0
136e: 0f be out 0x3f, r0 ; 63
1370: 0f 90 pop r0
1372: 1f 90 pop r1
1374: 18 95 reti
 
00001376 <__vector_5>:
 
//############################################################################
//
SIGNAL(SIG_INPUT_CAPTURE1)
//############################################################################
{
1376: 1f 92 push r1
1378: 0f 92 push r0
137a: 0f b6 in r0, 0x3f ; 63
137c: 0f 92 push r0
137e: 11 24 eor r1, r1
1380: 2f 93 push r18
1382: 3f 93 push r19
1384: 4f 93 push r20
1386: 5f 93 push r21
1388: 8f 93 push r24
138a: 9f 93 push r25
static unsigned int tim_alt;
static unsigned int ppm;
if(TCCR1B & (1<<ICES1)) // Positive Flanke
138c: 0e b4 in r0, 0x2e ; 46
138e: 06 fe sbrs r0, 6
1390: 0f c0 rjmp .+30 ; 0x13b0 <__vector_5+0x3a>
{
Timer1Overflow = 0;
1392: 10 92 a7 00 sts 0x00A7, r1
tim_alt = ICR1;
1396: 86 b5 in r24, 0x26 ; 38
1398: 97 b5 in r25, 0x27 ; 39
139a: 90 93 ad 00 sts 0x00AD, r25
139e: 80 93 ac 00 sts 0x00AC, r24
ICP_NEG_FLANKE;
13a2: 8e b5 in r24, 0x2e ; 46
13a4: 8f 7b andi r24, 0xBF ; 191
13a6: 8e bd out 0x2e, r24 ; 46
PPM_Timeout = 100;
13a8: 84 e6 ldi r24, 0x64 ; 100
13aa: 80 93 a8 00 sts 0x00A8, r24
13ae: 6f c0 rjmp .+222 ; 0x148e <__vector_5+0x118>
}
else // Negative Flanke
{
ICP_POS_FLANKE;
13b0: 8e b5 in r24, 0x2e ; 46
13b2: 80 64 ori r24, 0x40 ; 64
13b4: 8e bd out 0x2e, r24 ; 46
#ifdef _32KHZ
ppm = (ICR1 - tim_alt + (int) Timer1Overflow * 256) / 32;
#endif
#ifdef _16KHZ
ppm = (ICR1 - tim_alt + (int) Timer1Overflow * 512) / 32;
13b6: 26 b5 in r18, 0x26 ; 38
13b8: 37 b5 in r19, 0x27 ; 39
13ba: 40 91 a7 00 lds r20, 0x00A7
13be: 80 91 ac 00 lds r24, 0x00AC
13c2: 90 91 ad 00 lds r25, 0x00AD
13c6: 28 1b sub r18, r24
13c8: 39 0b sbc r19, r25
13ca: 94 2f mov r25, r20
13cc: 99 0f add r25, r25
13ce: 80 e0 ldi r24, 0x00 ; 0
13d0: 28 0f add r18, r24
13d2: 39 1f adc r19, r25
13d4: 85 e0 ldi r24, 0x05 ; 5
13d6: 36 95 lsr r19
13d8: 27 95 ror r18
13da: 8a 95 dec r24
13dc: e1 f7 brne .-8 ; 0x13d6 <__vector_5+0x60>
13de: 30 93 ab 00 sts 0x00AB, r19
13e2: 20 93 aa 00 sts 0x00AA, r18
#endif
if(ppm < 280) ppm = 280;
13e6: 28 51 subi r18, 0x18 ; 24
13e8: 31 40 sbci r19, 0x01 ; 1
13ea: 30 f4 brcc .+12 ; 0x13f8 <__vector_5+0x82>
13ec: 88 e1 ldi r24, 0x18 ; 24
13ee: 91 e0 ldi r25, 0x01 ; 1
13f0: 90 93 ab 00 sts 0x00AB, r25
13f4: 80 93 aa 00 sts 0x00AA, r24
ppm -= 280;
13f8: 40 91 aa 00 lds r20, 0x00AA
13fc: 50 91 ab 00 lds r21, 0x00AB
1400: 48 51 subi r20, 0x18 ; 24
1402: 51 40 sbci r21, 0x01 ; 1
if(PPM_Signal < ppm) PPM_Signal++;
1404: 80 91 a5 00 lds r24, 0x00A5
1408: 90 91 a6 00 lds r25, 0x00A6
140c: 84 17 cp r24, r20
140e: 95 07 cpc r25, r21
1410: 30 f4 brcc .+12 ; 0x141e <__vector_5+0xa8>
1412: 80 91 a5 00 lds r24, 0x00A5
1416: 90 91 a6 00 lds r25, 0x00A6
141a: 01 96 adiw r24, 0x01 ; 1
141c: 0c c0 rjmp .+24 ; 0x1436 <__vector_5+0xc0>
else if(PPM_Signal > ppm) PPM_Signal--;
141e: 80 91 a5 00 lds r24, 0x00A5
1422: 90 91 a6 00 lds r25, 0x00A6
1426: 48 17 cp r20, r24
1428: 59 07 cpc r21, r25
142a: 48 f4 brcc .+18 ; 0x143e <__vector_5+0xc8>
142c: 80 91 a5 00 lds r24, 0x00A5
1430: 90 91 a6 00 lds r25, 0x00A6
1434: 01 97 sbiw r24, 0x01 ; 1
1436: 90 93 a6 00 sts 0x00A6, r25
143a: 80 93 a5 00 sts 0x00A5, r24
if(FILTER_PPM) ppm = (PPM_Signal * FILTER_PPM + ppm) / (FILTER_PPM + 1); // Filtern
143e: 80 91 a5 00 lds r24, 0x00A5
1442: 90 91 a6 00 lds r25, 0x00A6
1446: 9c 01 movw r18, r24
1448: 22 0f add r18, r18
144a: 33 1f adc r19, r19
144c: 22 0f add r18, r18
144e: 33 1f adc r19, r19
1450: 22 0f add r18, r18
1452: 33 1f adc r19, r19
1454: 28 1b sub r18, r24
1456: 39 0b sbc r19, r25
1458: 24 0f add r18, r20
145a: 35 1f adc r19, r21
145c: 83 e0 ldi r24, 0x03 ; 3
145e: 36 95 lsr r19
1460: 27 95 ror r18
1462: 8a 95 dec r24
1464: e1 f7 brne .-8 ; 0x145e <__vector_5+0xe8>
1466: 30 93 ab 00 sts 0x00AB, r19
146a: 20 93 aa 00 sts 0x00AA, r18
PPM_Signal = ppm;
146e: 30 93 a6 00 sts 0x00A6, r19
1472: 20 93 a5 00 sts 0x00A5, r18
if(anz_ppm_werte < 255) anz_ppm_werte++;
1476: 80 91 a9 00 lds r24, 0x00A9
147a: 8f 3f cpi r24, 0xFF ; 255
147c: 29 f0 breq .+10 ; 0x1488 <__vector_5+0x112>
147e: 80 91 a9 00 lds r24, 0x00A9
1482: 8f 5f subi r24, 0xFF ; 255
1484: 80 93 a9 00 sts 0x00A9, r24
ZeitZumAdWandeln = 1;
1488: 81 e0 ldi r24, 0x01 ; 1
148a: 80 93 65 00 sts 0x0065, r24
}
}
148e: 9f 91 pop r25
1490: 8f 91 pop r24
1492: 5f 91 pop r21
1494: 4f 91 pop r20
1496: 3f 91 pop r19
1498: 2f 91 pop r18
149a: 0f 90 pop r0
149c: 0f be out 0x3f, r0 ; 63
149e: 0f 90 pop r0
14a0: 1f 90 pop r1
14a2: 18 95 reti
 
000014a4 <__vector_1>:
 
//############################################################################
//
SIGNAL(SIG_INTERRUPT0)
//############################################################################
{
14a4: 1f 92 push r1
14a6: 0f 92 push r0
14a8: 0f b6 in r0, 0x3f ; 63
14aa: 0f 92 push r0
14ac: 11 24 eor r1, r1
14ae: 8f 93 push r24
CLR_INT0_FLAG; // IntFlag Loeschen
14b0: 8a b7 in r24, 0x3a ; 58
14b2: 8f 7b andi r24, 0xBF ; 191
14b4: 8a bf out 0x3a, r24 ; 58
}
14b6: 8f 91 pop r24
14b8: 0f 90 pop r0
14ba: 0f be out 0x3f, r0 ; 63
14bc: 0f 90 pop r0
14be: 1f 90 pop r1
14c0: 18 95 reti
 
000014c2 <InitIC2_Slave>:
//############################################################################
//I2C (TWI) Interface Init
void InitIC2_Slave(uint8_t adr)
//############################################################################
{
TWAR = adr + (2*MotorAdresse); // Eigene Adresse setzen
14c2: 90 91 66 00 lds r25, 0x0066
14c6: 99 0f add r25, r25
14c8: 98 0f add r25, r24
14ca: 92 b9 out 0x02, r25 ; 2
TWCR = (1<<TWINT) | (1<<TWEN) | (1<<TWIE) | (1<<TWEA);
14cc: 85 ec ldi r24, 0xC5 ; 197
14ce: 86 bf out 0x36, r24 ; 54
}
14d0: 08 95 ret
 
000014d2 <__vector_17>:
//############################################################################
//ISR, die bei einem Ereignis auf dem Bus ausgelöst wird. Im Register TWSR befindet
//sich dann ein Statuscode, anhand dessen die Situation festgestellt werden kann.
ISR (TWI_vect)
//############################################################################
{
14d2: 1f 92 push r1
14d4: 0f 92 push r0
14d6: 0f b6 in r0, 0x3f ; 63
14d8: 0f 92 push r0
14da: 11 24 eor r1, r1
14dc: 8f 93 push r24
14de: 9f 93 push r25
switch (TWSR & 0xF8)
14e0: 81 b1 in r24, 0x01 ; 1
14e2: 90 e0 ldi r25, 0x00 ; 0
14e4: 88 7f andi r24, 0xF8 ; 248
14e6: 90 70 andi r25, 0x00 ; 0
14e8: 80 38 cpi r24, 0x80 ; 128
14ea: 91 05 cpc r25, r1
14ec: c9 f0 breq .+50 ; 0x1520 <__vector_17+0x4e>
14ee: 81 38 cpi r24, 0x81 ; 129
14f0: 91 05 cpc r25, r1
14f2: 34 f4 brge .+12 ; 0x1500 <__vector_17+0x2e>
14f4: 00 97 sbiw r24, 0x00 ; 0
14f6: 91 f1 breq .+100 ; 0x155c <__vector_17+0x8a>
14f8: 80 36 cpi r24, 0x60 ; 96
14fa: 91 05 cpc r25, r1
14fc: 91 f5 brne .+100 ; 0x1562 <__vector_17+0x90>
14fe: 0a c0 rjmp .+20 ; 0x1514 <__vector_17+0x42>
1500: 88 3b cpi r24, 0xB8 ; 184
1502: 91 05 cpc r25, r1
1504: b9 f0 breq .+46 ; 0x1534 <__vector_17+0x62>
1506: 88 3f cpi r24, 0xF8 ; 248
1508: 91 05 cpc r25, r1
150a: 29 f1 breq .+74 ; 0x1556 <__vector_17+0x84>
150c: 88 3a cpi r24, 0xA8 ; 168
150e: 91 05 cpc r25, r1
1510: 41 f5 brne .+80 ; 0x1562 <__vector_17+0x90>
1512: 10 c0 rjmp .+32 ; 0x1534 <__vector_17+0x62>
{
case SR_SLA_ACK:
TWCR |= (1<<TWINT);
1514: 86 b7 in r24, 0x36 ; 54
1516: 80 68 ori r24, 0x80 ; 128
1518: 86 bf out 0x36, r24 ; 54
Byte_Counter=0;
151a: 10 92 ae 00 sts 0x00AE, r1
151e: 23 c0 rjmp .+70 ; 0x1566 <__vector_17+0x94>
return;
// Daten Empfangen
case SR_PREV_ACK:
I2C_RXBuffer = TWDR;
1520: 83 b1 in r24, 0x03 ; 3
1522: 80 93 95 03 sts 0x0395, r24
I2C_Timeout = 500;
1526: 84 ef ldi r24, 0xF4 ; 244
1528: 91 e0 ldi r25, 0x01 ; 1
152a: 90 93 81 00 sts 0x0081, r25
152e: 80 93 80 00 sts 0x0080, r24
1532: 0e c0 rjmp .+28 ; 0x1550 <__vector_17+0x7e>
}
TWCR |= (1<<TWINT);
return;
// Daten Senden
case SW_DATA_ACK:
if (Byte_Counter==0)
1534: 80 91 ae 00 lds r24, 0x00AE
1538: 88 23 and r24, r24
153a: 39 f4 brne .+14 ; 0x154a <__vector_17+0x78>
{
TWDR = Mittelstrom;
153c: 80 91 7d 00 lds r24, 0x007D
1540: 83 b9 out 0x03, r24 ; 3
Byte_Counter++;
1542: 81 e0 ldi r24, 0x01 ; 1
1544: 80 93 ae 00 sts 0x00AE, r24
1548: 03 c0 rjmp .+6 ; 0x1550 <__vector_17+0x7e>
}
else
{
TWDR = MaxPWM;
154a: 80 91 64 00 lds r24, 0x0064
154e: 83 b9 out 0x03, r24 ; 3
}
TWCR |= (1<<TWINT);
1550: 86 b7 in r24, 0x36 ; 54
1552: 80 68 ori r24, 0x80 ; 128
1554: 07 c0 rjmp .+14 ; 0x1564 <__vector_17+0x92>
return;
// Bus-Fehler zurücksetzen
case TWI_BUS_ERR_2:
TWCR |=(1<<TWSTO) | (1<<TWINT);
1556: 86 b7 in r24, 0x36 ; 54
1558: 80 69 ori r24, 0x90 ; 144
155a: 86 bf out 0x36, r24 ; 54
// Bus-Fehler zurücksetzen
case TWI_BUS_ERR_1:
TWCR |=(1<<TWSTO) | (1<<TWINT);
155c: 86 b7 in r24, 0x36 ; 54
155e: 80 69 ori r24, 0x90 ; 144
1560: 86 bf out 0x36, r24 ; 54
}
TWCR =(1<<TWEA) | (1<<TWINT) | (1<<TWEN) | (1<<TWIE); // TWI Reset
1562: 85 ec ldi r24, 0xC5 ; 197
1564: 86 bf out 0x36, r24 ; 54
}
1566: 9f 91 pop r25
1568: 8f 91 pop r24
156a: 0f 90 pop r0
156c: 0f be out 0x3f, r0 ; 63
156e: 0f 90 pop r0
1570: 1f 90 pop r1
1572: 18 95 reti
 
00001574 <__vector_4>:
 
//############################################################################
//
SIGNAL(SIG_OVERFLOW2)
//############################################################################
{
1574: 1f 92 push r1
1576: 0f 92 push r0
1578: 0f b6 in r0, 0x3f ; 63
157a: 0f 92 push r0
157c: 11 24 eor r1, r1
}
157e: 0f 90 pop r0
1580: 0f be out 0x3f, r0 ; 63
1582: 0f 90 pop r0
1584: 1f 90 pop r1
1586: 18 95 reti
 
00001588 <Manuell>:
//############################################################################
//
void Manuell(void)
//############################################################################
{
switch(Phase)
1588: 80 91 af 00 lds r24, 0x00AF
158c: 82 30 cpi r24, 0x02 ; 2
158e: 69 f1 breq .+90 ; 0x15ea <Manuell+0x62>
1590: 83 30 cpi r24, 0x03 ; 3
1592: 30 f4 brcc .+12 ; 0x15a0 <Manuell+0x18>
1594: 88 23 and r24, r24
1596: 69 f0 breq .+26 ; 0x15b2 <Manuell+0x2a>
1598: 81 30 cpi r24, 0x01 ; 1
159a: 09 f0 breq .+2 ; 0x159e <Manuell+0x16>
159c: 63 c0 rjmp .+198 ; 0x1664 <Manuell+0xdc>
159e: 17 c0 rjmp .+46 ; 0x15ce <Manuell+0x46>
15a0: 84 30 cpi r24, 0x04 ; 4
15a2: 09 f4 brne .+2 ; 0x15a6 <Manuell+0x1e>
15a4: 3f c0 rjmp .+126 ; 0x1624 <Manuell+0x9c>
15a6: 84 30 cpi r24, 0x04 ; 4
15a8: 68 f1 brcs .+90 ; 0x1604 <Manuell+0x7c>
15aa: 85 30 cpi r24, 0x05 ; 5
15ac: 09 f0 breq .+2 ; 0x15b0 <Manuell+0x28>
15ae: 5a c0 rjmp .+180 ; 0x1664 <Manuell+0xdc>
15b0: 4b c0 rjmp .+150 ; 0x1648 <Manuell+0xc0>
{
case 0:
STEUER_A_H;
15b2: 81 ea ldi r24, 0xA1 ; 161
15b4: 8f bd out 0x2f, r24 ; 47
15b6: 81 e6 ldi r24, 0x61 ; 97
15b8: 85 bd out 0x25, r24 ; 37
15ba: 88 e0 ldi r24, 0x08 ; 8
15bc: 87 bb out 0x17, r24 ; 23
STEUER_B_L;
15be: 82 b3 in r24, 0x12 ; 18
15c0: 87 7d andi r24, 0xD7 ; 215
15c2: 82 bb out 0x12, r24 ; 18
15c4: 94 9a sbi 0x12, 4 ; 18
SENSE_C;
15c6: 80 91 8d 00 lds r24, 0x008D
15ca: 82 60 ori r24, 0x02 ; 2
15cc: 38 c0 rjmp .+112 ; 0x163e <Manuell+0xb6>
SENSE_RISING_INT;
break;
case 1:
STEUER_A_H;
15ce: 81 ea ldi r24, 0xA1 ; 161
15d0: 8f bd out 0x2f, r24 ; 47
15d2: 81 e6 ldi r24, 0x61 ; 97
15d4: 85 bd out 0x25, r24 ; 37
15d6: 88 e0 ldi r24, 0x08 ; 8
15d8: 87 bb out 0x17, r24 ; 23
STEUER_C_L;
15da: 82 b3 in r24, 0x12 ; 18
15dc: 87 7e andi r24, 0xE7 ; 231
15de: 82 bb out 0x12, r24 ; 18
15e0: 95 9a sbi 0x12, 5 ; 18
SENSE_B;
15e2: 80 91 8d 00 lds r24, 0x008D
15e6: 81 60 ori r24, 0x01 ; 1
15e8: 1a c0 rjmp .+52 ; 0x161e <Manuell+0x96>
SENSE_FALLING_INT;
break;
case 2:
STEUER_B_H;
15ea: 81 ea ldi r24, 0xA1 ; 161
15ec: 8f bd out 0x2f, r24 ; 47
15ee: 81 e6 ldi r24, 0x61 ; 97
15f0: 85 bd out 0x25, r24 ; 37
15f2: 84 e0 ldi r24, 0x04 ; 4
15f4: 87 bb out 0x17, r24 ; 23
STEUER_C_L;
15f6: 82 b3 in r24, 0x12 ; 18
15f8: 87 7e andi r24, 0xE7 ; 231
15fa: 82 bb out 0x12, r24 ; 18
15fc: 95 9a sbi 0x12, 5 ; 18
SENSE_A;
15fe: 80 91 8d 00 lds r24, 0x008D
1602: 1d c0 rjmp .+58 ; 0x163e <Manuell+0xb6>
SENSE_RISING_INT;
break;
case 3:
STEUER_B_H;
1604: 81 ea ldi r24, 0xA1 ; 161
1606: 8f bd out 0x2f, r24 ; 47
1608: 81 e6 ldi r24, 0x61 ; 97
160a: 85 bd out 0x25, r24 ; 37
160c: 84 e0 ldi r24, 0x04 ; 4
160e: 87 bb out 0x17, r24 ; 23
STEUER_A_L;
1610: 82 b3 in r24, 0x12 ; 18
1612: 8f 7c andi r24, 0xCF ; 207
1614: 82 bb out 0x12, r24 ; 18
1616: 93 9a sbi 0x12, 3 ; 18
SENSE_C;
1618: 80 91 8d 00 lds r24, 0x008D
161c: 82 60 ori r24, 0x02 ; 2
161e: 87 b9 out 0x07, r24 ; 7
SENSE_FALLING_INT;
1620: 40 98 cbi 0x08, 0 ; 8
1622: 08 95 ret
break;
case 4:
STEUER_C_H;
1624: 81 ea ldi r24, 0xA1 ; 161
1626: 8f bd out 0x2f, r24 ; 47
1628: 81 e6 ldi r24, 0x61 ; 97
162a: 85 bd out 0x25, r24 ; 37
162c: 82 e0 ldi r24, 0x02 ; 2
162e: 87 bb out 0x17, r24 ; 23
STEUER_A_L;
1630: 82 b3 in r24, 0x12 ; 18
1632: 8f 7c andi r24, 0xCF ; 207
1634: 82 bb out 0x12, r24 ; 18
1636: 93 9a sbi 0x12, 3 ; 18
SENSE_B;
1638: 80 91 8d 00 lds r24, 0x008D
163c: 81 60 ori r24, 0x01 ; 1
163e: 87 b9 out 0x07, r24 ; 7
SENSE_RISING_INT;
1640: 88 b1 in r24, 0x08 ; 8
1642: 83 60 ori r24, 0x03 ; 3
1644: 88 b9 out 0x08, r24 ; 8
1646: 08 95 ret
break;
case 5:
STEUER_C_H;
1648: 81 ea ldi r24, 0xA1 ; 161
164a: 8f bd out 0x2f, r24 ; 47
164c: 81 e6 ldi r24, 0x61 ; 97
164e: 85 bd out 0x25, r24 ; 37
1650: 82 e0 ldi r24, 0x02 ; 2
1652: 87 bb out 0x17, r24 ; 23
STEUER_B_L;
1654: 82 b3 in r24, 0x12 ; 18
1656: 87 7d andi r24, 0xD7 ; 215
1658: 82 bb out 0x12, r24 ; 18
165a: 94 9a sbi 0x12, 4 ; 18
SENSE_A;
165c: 80 91 8d 00 lds r24, 0x008D
1660: 87 b9 out 0x07, r24 ; 7
SENSE_FALLING_INT;
1662: 40 98 cbi 0x08, 0 ; 8
1664: 08 95 ret
 
00001666 <__vector_16>:
// + Interruptroutine
// + Wird durch den Analogkomperator ausgelöst
// + Dadurch wird das Kommutieren erzeugt
SIGNAL(SIG_COMPARATOR)
//############################################################################
{
1666: 1f 92 push r1
1668: 0f 92 push r0
166a: 0f b6 in r0, 0x3f ; 63
166c: 0f 92 push r0
166e: 11 24 eor r1, r1
1670: cf 92 push r12
1672: df 92 push r13
1674: ef 92 push r14
1676: ff 92 push r15
1678: 0f 93 push r16
167a: 1f 93 push r17
167c: 2f 93 push r18
167e: 3f 93 push r19
1680: 4f 93 push r20
1682: 5f 93 push r21
1684: 6f 93 push r22
1686: 7f 93 push r23
1688: 8f 93 push r24
168a: 9f 93 push r25
168c: af 93 push r26
168e: bf 93 push r27
1690: ef 93 push r30
1692: ff 93 push r31
}
 
break;
case 4:
STEUER_C_H;
1694: 61 ea ldi r22, 0xA1 ; 161
1696: f6 2e mov r15, r22
1698: 01 e6 ldi r16, 0x61 ; 97
169a: 52 e0 ldi r21, 0x02 ; 2
169c: c5 2e mov r12, r21
Phase++;
CntKommutierungen++;
}
else
{
STEUER_B_H;
169e: 44 e0 ldi r20, 0x04 ; 4
16a0: d4 2e mov r13, r20
break;
case 5:
STEUER_B_L;
if(!sense)
{
STEUER_A_H;
16a2: 38 e0 ldi r19, 0x08 ; 8
16a4: e3 2e mov r14, r19
//############################################################################
{
unsigned char sense = 0;
do
{
if(SENSE_H) sense = 1; else sense = 0;
16a6: 88 b1 in r24, 0x08 ; 8
16a8: 90 e0 ldi r25, 0x00 ; 0
16aa: 25 e0 ldi r18, 0x05 ; 5
16ac: 96 95 lsr r25
16ae: 87 95 ror r24
16b0: 2a 95 dec r18
16b2: e1 f7 brne .-8 ; 0x16ac <__vector_16+0x46>
16b4: 18 2f mov r17, r24
16b6: 11 70 andi r17, 0x01 ; 1
switch(Phase)
16b8: 80 91 af 00 lds r24, 0x00AF
16bc: 82 30 cpi r24, 0x02 ; 2
16be: 09 f4 brne .+2 ; 0x16c2 <__vector_16+0x5c>
16c0: 50 c0 rjmp .+160 ; 0x1762 <__vector_16+0xfc>
16c2: 83 30 cpi r24, 0x03 ; 3
16c4: 30 f4 brcc .+12 ; 0x16d2 <__vector_16+0x6c>
16c6: 88 23 and r24, r24
16c8: 71 f0 breq .+28 ; 0x16e6 <__vector_16+0x80>
16ca: 81 30 cpi r24, 0x01 ; 1
16cc: 09 f0 breq .+2 ; 0x16d0 <__vector_16+0x6a>
16ce: a5 c0 rjmp .+330 ; 0x181a <__vector_16+0x1b4>
16d0: 22 c0 rjmp .+68 ; 0x1716 <__vector_16+0xb0>
16d2: 84 30 cpi r24, 0x04 ; 4
16d4: 09 f4 brne .+2 ; 0x16d8 <__vector_16+0x72>
16d6: 70 c0 rjmp .+224 ; 0x17b8 <__vector_16+0x152>
16d8: 84 30 cpi r24, 0x04 ; 4
16da: 08 f4 brcc .+2 ; 0x16de <__vector_16+0x78>
16dc: 58 c0 rjmp .+176 ; 0x178e <__vector_16+0x128>
16de: 85 30 cpi r24, 0x05 ; 5
16e0: 09 f0 breq .+2 ; 0x16e4 <__vector_16+0x7e>
16e2: 9b c0 rjmp .+310 ; 0x181a <__vector_16+0x1b4>
16e4: 80 c0 rjmp .+256 ; 0x17e6 <__vector_16+0x180>
{
case 0:
STEUER_A_H;
16e6: ff bc out 0x2f, r15 ; 47
16e8: 05 bd out 0x25, r16 ; 37
16ea: e7 ba out 0x17, r14 ; 23
if(sense)
16ec: 11 23 and r17, r17
16ee: 71 f0 breq .+28 ; 0x170c <__vector_16+0xa6>
{
STEUER_C_L;
16f0: 82 b3 in r24, 0x12 ; 18
16f2: 87 7e andi r24, 0xE7 ; 231
16f4: 82 bb out 0x12, r24 ; 18
16f6: 95 9a sbi 0x12, 5 ; 18
if(ZeitZumAdWandeln) AdConvert();
16f8: 80 91 65 00 lds r24, 0x0065
16fc: 81 11 cpse r24, r1
16fe: b5 dd rcall .-1174 ; 0x126a <AdConvert>
SENSE_FALLING_INT;
1700: 40 98 cbi 0x08, 0 ; 8
SENSE_B;
1702: 80 91 8d 00 lds r24, 0x008D
1706: 81 60 ori r24, 0x01 ; 1
1708: 87 b9 out 0x07, r24 ; 7
170a: 18 c0 rjmp .+48 ; 0x173c <__vector_16+0xd6>
Phase++;
CntKommutierungen++;
}
else
{
STEUER_B_L;
170c: 82 b3 in r24, 0x12 ; 18
170e: 87 7d andi r24, 0xD7 ; 215
1710: 82 bb out 0x12, r24 ; 18
1712: 94 9a sbi 0x12, 4 ; 18
1714: 82 c0 rjmp .+260 ; 0x181a <__vector_16+0x1b4>
}
break;
case 1:
STEUER_C_L;
1716: 82 b3 in r24, 0x12 ; 18
1718: 87 7e andi r24, 0xE7 ; 231
171a: 82 bb out 0x12, r24 ; 18
171c: 95 9a sbi 0x12, 5 ; 18
if(!sense)
171e: 11 23 and r17, r17
1720: e1 f4 brne .+56 ; 0x175a <__vector_16+0xf4>
{
STEUER_B_H;
1722: ff bc out 0x2f, r15 ; 47
1724: 05 bd out 0x25, r16 ; 37
1726: d7 ba out 0x17, r13 ; 23
if(ZeitZumAdWandeln) AdConvert();
1728: 80 91 65 00 lds r24, 0x0065
172c: 81 11 cpse r24, r1
172e: 9d dd rcall .-1222 ; 0x126a <AdConvert>
SENSE_A;
1730: 80 91 8d 00 lds r24, 0x008D
1734: 87 b9 out 0x07, r24 ; 7
SENSE_RISING_INT;
1736: 88 b1 in r24, 0x08 ; 8
1738: 83 60 ori r24, 0x03 ; 3
173a: 88 b9 out 0x08, r24 ; 8
Phase++;
173c: 80 91 af 00 lds r24, 0x00AF
1740: 8f 5f subi r24, 0xFF ; 255
1742: 80 93 af 00 sts 0x00AF, r24
CntKommutierungen++;
1746: 80 91 89 00 lds r24, 0x0089
174a: 90 91 8a 00 lds r25, 0x008A
174e: 01 96 adiw r24, 0x01 ; 1
1750: 90 93 8a 00 sts 0x008A, r25
1754: 80 93 89 00 sts 0x0089, r24
1758: 60 c0 rjmp .+192 ; 0x181a <__vector_16+0x1b4>
}
else
{
STEUER_A_H;
175a: ff bc out 0x2f, r15 ; 47
175c: 05 bd out 0x25, r16 ; 37
175e: e7 ba out 0x17, r14 ; 23
1760: 5c c0 rjmp .+184 ; 0x181a <__vector_16+0x1b4>
}
 
break;
case 2:
STEUER_B_H;
1762: ff bc out 0x2f, r15 ; 47
1764: 05 bd out 0x25, r16 ; 37
1766: d7 ba out 0x17, r13 ; 23
if(sense)
1768: 11 23 and r17, r17
176a: 61 f0 breq .+24 ; 0x1784 <__vector_16+0x11e>
{
STEUER_A_L;
176c: 82 b3 in r24, 0x12 ; 18
176e: 8f 7c andi r24, 0xCF ; 207
1770: 82 bb out 0x12, r24 ; 18
1772: 93 9a sbi 0x12, 3 ; 18
if(ZeitZumAdWandeln) AdConvert();
1774: 80 91 65 00 lds r24, 0x0065
1778: 81 11 cpse r24, r1
177a: 77 dd rcall .-1298 ; 0x126a <AdConvert>
SENSE_C;
177c: 80 91 8d 00 lds r24, 0x008D
1780: 82 60 ori r24, 0x02 ; 2
1782: 29 c0 rjmp .+82 ; 0x17d6 <__vector_16+0x170>
Phase++;
CntKommutierungen++;
}
else
{
STEUER_C_L;
1784: 82 b3 in r24, 0x12 ; 18
1786: 87 7e andi r24, 0xE7 ; 231
1788: 82 bb out 0x12, r24 ; 18
178a: 95 9a sbi 0x12, 5 ; 18
178c: 46 c0 rjmp .+140 ; 0x181a <__vector_16+0x1b4>
}
break;
case 3:
STEUER_A_L;
178e: 82 b3 in r24, 0x12 ; 18
1790: 8f 7c andi r24, 0xCF ; 207
1792: 82 bb out 0x12, r24 ; 18
1794: 93 9a sbi 0x12, 3 ; 18
if(!sense)
1796: 11 23 and r17, r17
1798: 59 f4 brne .+22 ; 0x17b0 <__vector_16+0x14a>
{
STEUER_C_H;
179a: ff bc out 0x2f, r15 ; 47
179c: 05 bd out 0x25, r16 ; 37
179e: c7 ba out 0x17, r12 ; 23
if(ZeitZumAdWandeln) AdConvert();
17a0: 80 91 65 00 lds r24, 0x0065
17a4: 81 11 cpse r24, r1
17a6: 61 dd rcall .-1342 ; 0x126a <AdConvert>
SENSE_B;
17a8: 80 91 8d 00 lds r24, 0x008D
17ac: 81 60 ori r24, 0x01 ; 1
17ae: c2 cf rjmp .-124 ; 0x1734 <__vector_16+0xce>
Phase++;
CntKommutierungen++;
}
else
{
STEUER_B_H;
17b0: ff bc out 0x2f, r15 ; 47
17b2: 05 bd out 0x25, r16 ; 37
17b4: d7 ba out 0x17, r13 ; 23
17b6: 31 c0 rjmp .+98 ; 0x181a <__vector_16+0x1b4>
}
 
break;
case 4:
STEUER_C_H;
17b8: ff bc out 0x2f, r15 ; 47
17ba: 05 bd out 0x25, r16 ; 37
17bc: c7 ba out 0x17, r12 ; 23
if(sense)
17be: 11 23 and r17, r17
17c0: 69 f0 breq .+26 ; 0x17dc <__vector_16+0x176>
{
STEUER_B_L;
17c2: 82 b3 in r24, 0x12 ; 18
17c4: 87 7d andi r24, 0xD7 ; 215
17c6: 82 bb out 0x12, r24 ; 18
17c8: 94 9a sbi 0x12, 4 ; 18
if(ZeitZumAdWandeln) AdConvert();
17ca: 80 91 65 00 lds r24, 0x0065
17ce: 81 11 cpse r24, r1
17d0: 4c dd rcall .-1384 ; 0x126a <AdConvert>
SENSE_A;
17d2: 80 91 8d 00 lds r24, 0x008D
17d6: 87 b9 out 0x07, r24 ; 7
SENSE_FALLING_INT;
17d8: 40 98 cbi 0x08, 0 ; 8
17da: b0 cf rjmp .-160 ; 0x173c <__vector_16+0xd6>
Phase++;
CntKommutierungen++;
}
else
{
STEUER_A_L;
17dc: 82 b3 in r24, 0x12 ; 18
17de: 8f 7c andi r24, 0xCF ; 207
17e0: 82 bb out 0x12, r24 ; 18
17e2: 93 9a sbi 0x12, 3 ; 18
17e4: 1a c0 rjmp .+52 ; 0x181a <__vector_16+0x1b4>
}
break;
case 5:
STEUER_B_L;
17e6: 82 b3 in r24, 0x12 ; 18
17e8: 87 7d andi r24, 0xD7 ; 215
17ea: 82 bb out 0x12, r24 ; 18
17ec: 94 9a sbi 0x12, 4 ; 18
if(!sense)
17ee: 11 23 and r17, r17
17f0: 89 f4 brne .+34 ; 0x1814 <__vector_16+0x1ae>
{
STEUER_A_H;
17f2: ff bc out 0x2f, r15 ; 47
17f4: 05 bd out 0x25, r16 ; 37
17f6: e7 ba out 0x17, r14 ; 23
if(ZeitZumAdWandeln) AdConvert();
17f8: 80 91 65 00 lds r24, 0x0065
17fc: 81 11 cpse r24, r1
17fe: 35 dd rcall .-1430 ; 0x126a <AdConvert>
SENSE_C;
1800: 80 91 8d 00 lds r24, 0x008D
1804: 82 60 ori r24, 0x02 ; 2
1806: 87 b9 out 0x07, r24 ; 7
SENSE_RISING_INT;
1808: 88 b1 in r24, 0x08 ; 8
180a: 83 60 ori r24, 0x03 ; 3
180c: 88 b9 out 0x08, r24 ; 8
Phase = 0;
180e: 10 92 af 00 sts 0x00AF, r1
1812: 99 cf rjmp .-206 ; 0x1746 <__vector_16+0xe0>
CntKommutierungen++;
}
else
{
STEUER_C_H;
1814: ff bc out 0x2f, r15 ; 47
1816: 05 bd out 0x25, r16 ; 37
1818: c7 ba out 0x17, r12 ; 23
}
break;
}
}
while((SENSE_L && sense) || (SENSE_H && !sense));
181a: 45 99 sbic 0x08, 5 ; 8
181c: 03 c0 rjmp .+6 ; 0x1824 <__vector_16+0x1be>
181e: 11 23 and r17, r17
1820: 09 f0 breq .+2 ; 0x1824 <__vector_16+0x1be>
1822: 41 cf rjmp .-382 ; 0x16a6 <__vector_16+0x40>
1824: 45 9b sbis 0x08, 5 ; 8
1826: 03 c0 rjmp .+6 ; 0x182e <__vector_16+0x1c8>
1828: 11 23 and r17, r17
182a: 09 f4 brne .+2 ; 0x182e <__vector_16+0x1c8>
182c: 3c cf rjmp .-392 ; 0x16a6 <__vector_16+0x40>
ZeitZumAdWandeln = 0;
182e: 10 92 65 00 sts 0x0065, r1
}
1832: ff 91 pop r31
1834: ef 91 pop r30
1836: bf 91 pop r27
1838: af 91 pop r26
183a: 9f 91 pop r25
183c: 8f 91 pop r24
183e: 7f 91 pop r23
1840: 6f 91 pop r22
1842: 5f 91 pop r21
1844: 4f 91 pop r20
1846: 3f 91 pop r19
1848: 2f 91 pop r18
184a: 1f 91 pop r17
184c: 0f 91 pop r16
184e: ff 90 pop r15
1850: ef 90 pop r14
1852: df 90 pop r13
1854: cf 90 pop r12
1856: 0f 90 pop r0
1858: 0f be out 0x3f, r0 ; 63
185a: 0f 90 pop r0
185c: 1f 90 pop r1
185e: 18 95 reti
 
00001860 <__udivmodqi4>:
1860: 99 1b sub r25, r25
1862: 79 e0 ldi r23, 0x09 ; 9
1864: 04 c0 rjmp .+8 ; 0x186e <__udivmodqi4_ep>
 
00001866 <__udivmodqi4_loop>:
1866: 99 1f adc r25, r25
1868: 96 17 cp r25, r22
186a: 08 f0 brcs .+2 ; 0x186e <__udivmodqi4_ep>
186c: 96 1b sub r25, r22
 
0000186e <__udivmodqi4_ep>:
186e: 88 1f adc r24, r24
1870: 7a 95 dec r23
1872: c9 f7 brne .-14 ; 0x1866 <__udivmodqi4_loop>
1874: 80 95 com r24
1876: 08 95 ret
 
00001878 <__udivmodhi4>:
1878: aa 1b sub r26, r26
187a: bb 1b sub r27, r27
187c: 51 e1 ldi r21, 0x11 ; 17
187e: 07 c0 rjmp .+14 ; 0x188e <__udivmodhi4_ep>
 
00001880 <__udivmodhi4_loop>:
1880: aa 1f adc r26, r26
1882: bb 1f adc r27, r27
1884: a6 17 cp r26, r22
1886: b7 07 cpc r27, r23
1888: 10 f0 brcs .+4 ; 0x188e <__udivmodhi4_ep>
188a: a6 1b sub r26, r22
188c: b7 0b sbc r27, r23
 
0000188e <__udivmodhi4_ep>:
188e: 88 1f adc r24, r24
1890: 99 1f adc r25, r25
1892: 5a 95 dec r21
1894: a9 f7 brne .-22 ; 0x1880 <__udivmodhi4_loop>
1896: 80 95 com r24
1898: 90 95 com r25
189a: bc 01 movw r22, r24
189c: cd 01 movw r24, r26
189e: 08 95 ret
 
000018a0 <__udivmodsi4>:
18a0: a1 e2 ldi r26, 0x21 ; 33
18a2: 1a 2e mov r1, r26
18a4: aa 1b sub r26, r26
18a6: bb 1b sub r27, r27
18a8: fd 01 movw r30, r26
18aa: 0d c0 rjmp .+26 ; 0x18c6 <__udivmodsi4_ep>
 
000018ac <__udivmodsi4_loop>:
18ac: aa 1f adc r26, r26
18ae: bb 1f adc r27, r27
18b0: ee 1f adc r30, r30
18b2: ff 1f adc r31, r31
18b4: a2 17 cp r26, r18
18b6: b3 07 cpc r27, r19
18b8: e4 07 cpc r30, r20
18ba: f5 07 cpc r31, r21
18bc: 20 f0 brcs .+8 ; 0x18c6 <__udivmodsi4_ep>
18be: a2 1b sub r26, r18
18c0: b3 0b sbc r27, r19
18c2: e4 0b sbc r30, r20
18c4: f5 0b sbc r31, r21
 
000018c6 <__udivmodsi4_ep>:
18c6: 66 1f adc r22, r22
18c8: 77 1f adc r23, r23
18ca: 88 1f adc r24, r24
18cc: 99 1f adc r25, r25
18ce: 1a 94 dec r1
18d0: 69 f7 brne .-38 ; 0x18ac <__udivmodsi4_loop>
18d2: 60 95 com r22
18d4: 70 95 com r23
18d6: 80 95 com r24
18d8: 90 95 com r25
18da: 9b 01 movw r18, r22
18dc: ac 01 movw r20, r24
18de: bd 01 movw r22, r26
18e0: cf 01 movw r24, r30
18e2: 08 95 ret
 
000018e4 <fdevopen>:
18e4: 0f 93 push r16
18e6: 1f 93 push r17
18e8: cf 93 push r28
18ea: df 93 push r29
18ec: 8c 01 movw r16, r24
18ee: eb 01 movw r28, r22
18f0: 00 97 sbiw r24, 0x00 ; 0
18f2: 31 f4 brne .+12 ; 0x1900 <fdevopen+0x1c>
18f4: 61 15 cp r22, r1
18f6: 71 05 cpc r23, r1
18f8: 19 f4 brne .+6 ; 0x1900 <fdevopen+0x1c>
18fa: 20 e0 ldi r18, 0x00 ; 0
18fc: 30 e0 ldi r19, 0x00 ; 0
18fe: 37 c0 rjmp .+110 ; 0x196e <fdevopen+0x8a>
1900: 81 e0 ldi r24, 0x01 ; 1
1902: 90 e0 ldi r25, 0x00 ; 0
1904: 6e e0 ldi r22, 0x0E ; 14
1906: 70 e0 ldi r23, 0x00 ; 0
1908: 38 d0 rcall .+112 ; 0x197a <calloc>
190a: fc 01 movw r30, r24
190c: 9c 01 movw r18, r24
190e: 00 97 sbiw r24, 0x00 ; 0
1910: 71 f1 breq .+92 ; 0x196e <fdevopen+0x8a>
1912: 80 e8 ldi r24, 0x80 ; 128
1914: 83 83 std Z+3, r24 ; 0x03
1916: 20 97 sbiw r28, 0x00 ; 0
1918: 71 f0 breq .+28 ; 0x1936 <fdevopen+0x52>
191a: d3 87 std Z+11, r29 ; 0x0b
191c: c2 87 std Z+10, r28 ; 0x0a
191e: 81 e8 ldi r24, 0x81 ; 129
1920: 83 83 std Z+3, r24 ; 0x03
1922: 80 91 96 03 lds r24, 0x0396
1926: 90 91 97 03 lds r25, 0x0397
192a: 89 2b or r24, r25
192c: 21 f4 brne .+8 ; 0x1936 <fdevopen+0x52>
192e: f0 93 97 03 sts 0x0397, r31
1932: e0 93 96 03 sts 0x0396, r30
1936: 01 15 cp r16, r1
1938: 11 05 cpc r17, r1
193a: c9 f0 breq .+50 ; 0x196e <fdevopen+0x8a>
193c: 11 87 std Z+9, r17 ; 0x09
193e: 00 87 std Z+8, r16 ; 0x08
1940: 83 81 ldd r24, Z+3 ; 0x03
1942: 82 60 ori r24, 0x02 ; 2
1944: 83 83 std Z+3, r24 ; 0x03
1946: 80 91 98 03 lds r24, 0x0398
194a: 90 91 99 03 lds r25, 0x0399
194e: 89 2b or r24, r25
1950: 71 f4 brne .+28 ; 0x196e <fdevopen+0x8a>
1952: f0 93 99 03 sts 0x0399, r31
1956: e0 93 98 03 sts 0x0398, r30
195a: 80 91 9a 03 lds r24, 0x039A
195e: 90 91 9b 03 lds r25, 0x039B
1962: 89 2b or r24, r25
1964: 21 f4 brne .+8 ; 0x196e <fdevopen+0x8a>
1966: f0 93 9b 03 sts 0x039B, r31
196a: e0 93 9a 03 sts 0x039A, r30
196e: c9 01 movw r24, r18
1970: df 91 pop r29
1972: cf 91 pop r28
1974: 1f 91 pop r17
1976: 0f 91 pop r16
1978: 08 95 ret
 
0000197a <calloc>:
197a: 0f 93 push r16
197c: 1f 93 push r17
197e: cf 93 push r28
1980: df 93 push r29
1982: 68 9f mul r22, r24
1984: 80 01 movw r16, r0
1986: 69 9f mul r22, r25
1988: 10 0d add r17, r0
198a: 78 9f mul r23, r24
198c: 10 0d add r17, r0
198e: 11 24 eor r1, r1
1990: c8 01 movw r24, r16
1992: 0d d0 rcall .+26 ; 0x19ae <malloc>
1994: ec 01 movw r28, r24
1996: 00 97 sbiw r24, 0x00 ; 0
1998: 21 f0 breq .+8 ; 0x19a2 <calloc+0x28>
199a: 60 e0 ldi r22, 0x00 ; 0
199c: 70 e0 ldi r23, 0x00 ; 0
199e: a8 01 movw r20, r16
19a0: 0b d1 rcall .+534 ; 0x1bb8 <memset>
19a2: ce 01 movw r24, r28
19a4: df 91 pop r29
19a6: cf 91 pop r28
19a8: 1f 91 pop r17
19aa: 0f 91 pop r16
19ac: 08 95 ret
 
000019ae <malloc>:
19ae: cf 93 push r28
19b0: df 93 push r29
19b2: bc 01 movw r22, r24
19b4: 82 30 cpi r24, 0x02 ; 2
19b6: 91 05 cpc r25, r1
19b8: 10 f4 brcc .+4 ; 0x19be <malloc+0x10>
19ba: 62 e0 ldi r22, 0x02 ; 2
19bc: 70 e0 ldi r23, 0x00 ; 0
19be: a0 91 9e 03 lds r26, 0x039E
19c2: b0 91 9f 03 lds r27, 0x039F
19c6: ed 01 movw r28, r26
19c8: e0 e0 ldi r30, 0x00 ; 0
19ca: f0 e0 ldi r31, 0x00 ; 0
19cc: 40 e0 ldi r20, 0x00 ; 0
19ce: 50 e0 ldi r21, 0x00 ; 0
19d0: 21 c0 rjmp .+66 ; 0x1a14 <malloc+0x66>
19d2: 88 81 ld r24, Y
19d4: 99 81 ldd r25, Y+1 ; 0x01
19d6: 86 17 cp r24, r22
19d8: 97 07 cpc r25, r23
19da: 69 f4 brne .+26 ; 0x19f6 <malloc+0x48>
19dc: 8a 81 ldd r24, Y+2 ; 0x02
19de: 9b 81 ldd r25, Y+3 ; 0x03
19e0: 30 97 sbiw r30, 0x00 ; 0
19e2: 19 f0 breq .+6 ; 0x19ea <malloc+0x3c>
19e4: 93 83 std Z+3, r25 ; 0x03
19e6: 82 83 std Z+2, r24 ; 0x02
19e8: 04 c0 rjmp .+8 ; 0x19f2 <malloc+0x44>
19ea: 90 93 9f 03 sts 0x039F, r25
19ee: 80 93 9e 03 sts 0x039E, r24
19f2: fe 01 movw r30, r28
19f4: 34 c0 rjmp .+104 ; 0x1a5e <malloc+0xb0>
19f6: 68 17 cp r22, r24
19f8: 79 07 cpc r23, r25
19fa: 38 f4 brcc .+14 ; 0x1a0a <malloc+0x5c>
19fc: 41 15 cp r20, r1
19fe: 51 05 cpc r21, r1
1a00: 19 f0 breq .+6 ; 0x1a08 <malloc+0x5a>
1a02: 84 17 cp r24, r20
1a04: 95 07 cpc r25, r21
1a06: 08 f4 brcc .+2 ; 0x1a0a <malloc+0x5c>
1a08: ac 01 movw r20, r24
1a0a: fe 01 movw r30, r28
1a0c: 8a 81 ldd r24, Y+2 ; 0x02
1a0e: 9b 81 ldd r25, Y+3 ; 0x03
1a10: 9c 01 movw r18, r24
1a12: e9 01 movw r28, r18
1a14: 20 97 sbiw r28, 0x00 ; 0
1a16: e9 f6 brne .-70 ; 0x19d2 <malloc+0x24>
1a18: 41 15 cp r20, r1
1a1a: 51 05 cpc r21, r1
1a1c: a9 f1 breq .+106 ; 0x1a88 <malloc+0xda>
1a1e: ca 01 movw r24, r20
1a20: 86 1b sub r24, r22
1a22: 97 0b sbc r25, r23
1a24: 04 97 sbiw r24, 0x04 ; 4
1a26: 08 f4 brcc .+2 ; 0x1a2a <malloc+0x7c>
1a28: ba 01 movw r22, r20
1a2a: e0 e0 ldi r30, 0x00 ; 0
1a2c: f0 e0 ldi r31, 0x00 ; 0
1a2e: 2a c0 rjmp .+84 ; 0x1a84 <malloc+0xd6>
1a30: 8d 91 ld r24, X+
1a32: 9c 91 ld r25, X
1a34: 11 97 sbiw r26, 0x01 ; 1
1a36: 84 17 cp r24, r20
1a38: 95 07 cpc r25, r21
1a3a: f9 f4 brne .+62 ; 0x1a7a <malloc+0xcc>
1a3c: 64 17 cp r22, r20
1a3e: 75 07 cpc r23, r21
1a40: 81 f4 brne .+32 ; 0x1a62 <malloc+0xb4>
1a42: 12 96 adiw r26, 0x02 ; 2
1a44: 8d 91 ld r24, X+
1a46: 9c 91 ld r25, X
1a48: 13 97 sbiw r26, 0x03 ; 3
1a4a: 30 97 sbiw r30, 0x00 ; 0
1a4c: 19 f0 breq .+6 ; 0x1a54 <malloc+0xa6>
1a4e: 93 83 std Z+3, r25 ; 0x03
1a50: 82 83 std Z+2, r24 ; 0x02
1a52: 04 c0 rjmp .+8 ; 0x1a5c <malloc+0xae>
1a54: 90 93 9f 03 sts 0x039F, r25
1a58: 80 93 9e 03 sts 0x039E, r24
1a5c: fd 01 movw r30, r26
1a5e: 32 96 adiw r30, 0x02 ; 2
1a60: 4f c0 rjmp .+158 ; 0x1b00 <malloc+0x152>
1a62: ca 01 movw r24, r20
1a64: 86 1b sub r24, r22
1a66: 97 0b sbc r25, r23
1a68: fd 01 movw r30, r26
1a6a: e8 0f add r30, r24
1a6c: f9 1f adc r31, r25
1a6e: 61 93 st Z+, r22
1a70: 71 93 st Z+, r23
1a72: 02 97 sbiw r24, 0x02 ; 2
1a74: 8d 93 st X+, r24
1a76: 9c 93 st X, r25
1a78: 43 c0 rjmp .+134 ; 0x1b00 <malloc+0x152>
1a7a: fd 01 movw r30, r26
1a7c: 82 81 ldd r24, Z+2 ; 0x02
1a7e: 93 81 ldd r25, Z+3 ; 0x03
1a80: 9c 01 movw r18, r24
1a82: d9 01 movw r26, r18
1a84: 10 97 sbiw r26, 0x00 ; 0
1a86: a1 f6 brne .-88 ; 0x1a30 <malloc+0x82>
1a88: 80 91 9c 03 lds r24, 0x039C
1a8c: 90 91 9d 03 lds r25, 0x039D
1a90: 89 2b or r24, r25
1a92: 41 f4 brne .+16 ; 0x1aa4 <malloc+0xf6>
1a94: 80 91 73 00 lds r24, 0x0073
1a98: 90 91 74 00 lds r25, 0x0074
1a9c: 90 93 9d 03 sts 0x039D, r25
1aa0: 80 93 9c 03 sts 0x039C, r24
1aa4: 40 91 75 00 lds r20, 0x0075
1aa8: 50 91 76 00 lds r21, 0x0076
1aac: 41 15 cp r20, r1
1aae: 51 05 cpc r21, r1
1ab0: 41 f4 brne .+16 ; 0x1ac2 <malloc+0x114>
1ab2: 4d b7 in r20, 0x3d ; 61
1ab4: 5e b7 in r21, 0x3e ; 62
1ab6: 80 91 71 00 lds r24, 0x0071
1aba: 90 91 72 00 lds r25, 0x0072
1abe: 48 1b sub r20, r24
1ac0: 59 0b sbc r21, r25
1ac2: 20 91 9c 03 lds r18, 0x039C
1ac6: 30 91 9d 03 lds r19, 0x039D
1aca: 24 17 cp r18, r20
1acc: 35 07 cpc r19, r21
1ace: b0 f4 brcc .+44 ; 0x1afc <malloc+0x14e>
1ad0: ca 01 movw r24, r20
1ad2: 82 1b sub r24, r18
1ad4: 93 0b sbc r25, r19
1ad6: 86 17 cp r24, r22
1ad8: 97 07 cpc r25, r23
1ada: 80 f0 brcs .+32 ; 0x1afc <malloc+0x14e>
1adc: ab 01 movw r20, r22
1ade: 4e 5f subi r20, 0xFE ; 254
1ae0: 5f 4f sbci r21, 0xFF ; 255
1ae2: 84 17 cp r24, r20
1ae4: 95 07 cpc r25, r21
1ae6: 50 f0 brcs .+20 ; 0x1afc <malloc+0x14e>
1ae8: 42 0f add r20, r18
1aea: 53 1f adc r21, r19
1aec: 50 93 9d 03 sts 0x039D, r21
1af0: 40 93 9c 03 sts 0x039C, r20
1af4: f9 01 movw r30, r18
1af6: 61 93 st Z+, r22
1af8: 71 93 st Z+, r23
1afa: 02 c0 rjmp .+4 ; 0x1b00 <malloc+0x152>
1afc: e0 e0 ldi r30, 0x00 ; 0
1afe: f0 e0 ldi r31, 0x00 ; 0
1b00: cf 01 movw r24, r30
1b02: df 91 pop r29
1b04: cf 91 pop r28
1b06: 08 95 ret
 
00001b08 <free>:
1b08: cf 93 push r28
1b0a: df 93 push r29
1b0c: 00 97 sbiw r24, 0x00 ; 0
1b0e: 09 f4 brne .+2 ; 0x1b12 <free+0xa>
1b10: 50 c0 rjmp .+160 ; 0x1bb2 <free+0xaa>
1b12: ec 01 movw r28, r24
1b14: 22 97 sbiw r28, 0x02 ; 2
1b16: 1b 82 std Y+3, r1 ; 0x03
1b18: 1a 82 std Y+2, r1 ; 0x02
1b1a: a0 91 9e 03 lds r26, 0x039E
1b1e: b0 91 9f 03 lds r27, 0x039F
1b22: 10 97 sbiw r26, 0x00 ; 0
1b24: 09 f1 breq .+66 ; 0x1b68 <free+0x60>
1b26: 40 e0 ldi r20, 0x00 ; 0
1b28: 50 e0 ldi r21, 0x00 ; 0
1b2a: ac 17 cp r26, r28
1b2c: bd 07 cpc r27, r29
1b2e: 08 f1 brcs .+66 ; 0x1b72 <free+0x6a>
1b30: bb 83 std Y+3, r27 ; 0x03
1b32: aa 83 std Y+2, r26 ; 0x02
1b34: fe 01 movw r30, r28
1b36: 21 91 ld r18, Z+
1b38: 31 91 ld r19, Z+
1b3a: e2 0f add r30, r18
1b3c: f3 1f adc r31, r19
1b3e: ae 17 cp r26, r30
1b40: bf 07 cpc r27, r31
1b42: 79 f4 brne .+30 ; 0x1b62 <free+0x5a>
1b44: 8d 91 ld r24, X+
1b46: 9c 91 ld r25, X
1b48: 11 97 sbiw r26, 0x01 ; 1
1b4a: 28 0f add r18, r24
1b4c: 39 1f adc r19, r25
1b4e: 2e 5f subi r18, 0xFE ; 254
1b50: 3f 4f sbci r19, 0xFF ; 255
1b52: 39 83 std Y+1, r19 ; 0x01
1b54: 28 83 st Y, r18
1b56: 12 96 adiw r26, 0x02 ; 2
1b58: 8d 91 ld r24, X+
1b5a: 9c 91 ld r25, X
1b5c: 13 97 sbiw r26, 0x03 ; 3
1b5e: 9b 83 std Y+3, r25 ; 0x03
1b60: 8a 83 std Y+2, r24 ; 0x02
1b62: 41 15 cp r20, r1
1b64: 51 05 cpc r21, r1
1b66: 71 f4 brne .+28 ; 0x1b84 <free+0x7c>
1b68: d0 93 9f 03 sts 0x039F, r29
1b6c: c0 93 9e 03 sts 0x039E, r28
1b70: 20 c0 rjmp .+64 ; 0x1bb2 <free+0xaa>
1b72: 12 96 adiw r26, 0x02 ; 2
1b74: 8d 91 ld r24, X+
1b76: 9c 91 ld r25, X
1b78: 13 97 sbiw r26, 0x03 ; 3
1b7a: ad 01 movw r20, r26
1b7c: 00 97 sbiw r24, 0x00 ; 0
1b7e: 11 f0 breq .+4 ; 0x1b84 <free+0x7c>
1b80: dc 01 movw r26, r24
1b82: d3 cf rjmp .-90 ; 0x1b2a <free+0x22>
1b84: fa 01 movw r30, r20
1b86: d3 83 std Z+3, r29 ; 0x03
1b88: c2 83 std Z+2, r28 ; 0x02
1b8a: 21 91 ld r18, Z+
1b8c: 31 91 ld r19, Z+
1b8e: e2 0f add r30, r18
1b90: f3 1f adc r31, r19
1b92: ce 17 cp r28, r30
1b94: df 07 cpc r29, r31
1b96: 69 f4 brne .+26 ; 0x1bb2 <free+0xaa>
1b98: 88 81 ld r24, Y
1b9a: 99 81 ldd r25, Y+1 ; 0x01
1b9c: 28 0f add r18, r24
1b9e: 39 1f adc r19, r25
1ba0: 2e 5f subi r18, 0xFE ; 254
1ba2: 3f 4f sbci r19, 0xFF ; 255
1ba4: fa 01 movw r30, r20
1ba6: 31 83 std Z+1, r19 ; 0x01
1ba8: 20 83 st Z, r18
1baa: 8a 81 ldd r24, Y+2 ; 0x02
1bac: 9b 81 ldd r25, Y+3 ; 0x03
1bae: 93 83 std Z+3, r25 ; 0x03
1bb0: 82 83 std Z+2, r24 ; 0x02
1bb2: df 91 pop r29
1bb4: cf 91 pop r28
1bb6: 08 95 ret
 
00001bb8 <memset>:
1bb8: dc 01 movw r26, r24
1bba: 01 c0 rjmp .+2 ; 0x1bbe <memset+0x6>
1bbc: 6d 93 st X+, r22
1bbe: 41 50 subi r20, 0x01 ; 1
1bc0: 50 40 sbci r21, 0x00 ; 0
1bc2: e0 f7 brcc .-8 ; 0x1bbc <memset+0x4>
1bc4: 08 95 ret
 
00001bc6 <_exit>:
1bc6: f8 94 cli
 
00001bc8 <__stop_program>:
1bc8: ff cf rjmp .-2 ; 0x1bc8 <__stop_program>
/branches/V0.41-Hexa/BrushLess-Ctrl_V0_41_10A.sym
0,0 → 1,224
00000000 W __heap_end
00000000 a __tmp_reg__
00000000 a __tmp_reg__
00000000 a __tmp_reg__
00000000 a __tmp_reg__
00000000 a __tmp_reg__
00000000 a __tmp_reg__
00000000 a __tmp_reg__
00000000 a __tmp_reg__
00000000 a __tmp_reg__
00000000 a __tmp_reg__
00000000 a __tmp_reg__
00000000 W __vector_default
00000000 T __vectors
00000001 a __zero_reg__
00000001 a __zero_reg__
00000001 a __zero_reg__
00000001 a __zero_reg__
00000001 a __zero_reg__
00000001 a __zero_reg__
00000001 a __zero_reg__
00000001 a __zero_reg__
00000001 a __zero_reg__
00000001 a __zero_reg__
00000001 a __zero_reg__
00000026 T __ctors_end
00000026 T __ctors_start
00000026 T __dtors_end
00000026 T __dtors_start
00000026 W __init
00000026 T __trampolines_end
00000026 T __trampolines_start
00000032 T __do_copy_data
00000034 a __CCP__
00000034 a __CCP__
00000034 a __CCP__
00000034 a __CCP__
00000034 a __CCP__
00000034 a __CCP__
00000034 a __CCP__
00000034 a __CCP__
00000034 a __CCP__
00000034 a __CCP__
00000034 a __CCP__
0000003d a __SP_L__
0000003d a __SP_L__
0000003d a __SP_L__
0000003d a __SP_L__
0000003d a __SP_L__
0000003d a __SP_L__
0000003d a __SP_L__
0000003d a __SP_L__
0000003d a __SP_L__
0000003d a __SP_L__
0000003d a __SP_L__
0000003e t .do_copy_data_loop
0000003e a __SP_H__
0000003e a __SP_H__
0000003e a __SP_H__
0000003e a __SP_H__
0000003e a __SP_H__
0000003e a __SP_H__
0000003e a __SP_H__
0000003e a __SP_H__
0000003e a __SP_H__
0000003e a __SP_H__
0000003e a __SP_H__
0000003f a __SREG__
0000003f a __SREG__
0000003f a __SREG__
0000003f a __SREG__
0000003f a __SREG__
0000003f a __SREG__
0000003f a __SREG__
0000003f a __SREG__
0000003f a __SREG__
0000003f a __SREG__
0000003f a __SREG__
00000042 t .do_copy_data_start
00000048 T __do_clear_bss
00000050 t .do_clear_bss_loop
00000052 t .do_clear_bss_start
0000005c T __bad_interrupt
0000005c W __vector_10
0000005c W __vector_12
0000005c W __vector_14
0000005c W __vector_15
0000005c W __vector_18
0000005c W __vector_2
0000005c W __vector_3
0000005c W __vector_6
0000005c W __vector_7
0000005e T SetPWM
000000be T DebugAusgaben
00000106 T PWM_Init
00000126 T Wait
00000134 T Delay
00000140 T SollwertErmittlung
0000023a T DelayM
0000027c T RotBlink
000002a4 T MotorTon
0000045f W __stack
00000738 T Anwerfen
000008e6 T main
00000c90 T __vector_13
00000ca4 T SendUart
00000cf2 T Decode64
00000da2 T AddCRC
00000dfe T SendOutData
00000ec8 T uart_putchar
00000ee2 T __vector_11
000010aa T WriteProgramData
000010ac T DatenUebertragung
000010e0 T UART_Init
00001166 T __vector_9
000011f6 T Timer0_Init
00001208 T SetDelay
0000121c T CheckDelay
00001230 T Delay_ms
0000125a T ADC_Init
0000126a T AdConvert
000012d8 T MessAD
00001302 T FastADConvert
0000133a T InitPPM
00001354 T __vector_8
00001376 T __vector_5
000014a4 T __vector_1
000014c2 T InitIC2_Slave
000014d2 T __vector_17
00001574 T __vector_4
00001588 T Manuell
00001666 T __vector_16
00001860 T __udivmodqi4
00001866 t __udivmodqi4_loop
0000186e t __udivmodqi4_ep
00001878 T __udivmodhi4
00001880 t __udivmodhi4_loop
0000188e t __udivmodhi4_ep
000018a0 T __udivmodsi4
000018ac t __udivmodsi4_loop
000018c6 t __udivmodsi4_ep
000018e4 T fdevopen
0000197a T calloc
000019ae T malloc
00001b08 T free
00001bb8 T memset
00001bc6 T _exit
00001bc6 W exit
00001bc8 t __stop_program
00001bca A __data_load_start
00001bca T _etext
00001be2 A __data_load_end
00800060 D KommutierDelay
00800060 D __data_start
00800062 D ZeitFuerBerechnungen
00800063 D MotorGestoppt
00800064 D MaxPWM
00800065 D ZeitZumAdWandeln
00800066 D MotorAdresse
00800067 D PPM_Betrieb
00800068 d C.19.2035
0080006f D UebertragungAbgeschlossen
00800070 D CompFreigabeTimer
00800071 D __malloc_margin
00800073 D __malloc_heap_start
00800075 D __malloc_heap_end
00800078 B PWM
00800078 B __bss_start
00800078 D __data_end
00800078 D _edata
0080007a B Strom
0080007c B Strom_max
0080007d B Mittelstrom
0080007e B Drehzahl
00800080 B I2C_Timeout
00800082 B SIO_Timeout
00800084 B SollDrehzahl
00800086 B IstDrehzahl
00800088 B MotorAnwerfen
00800089 B CntKommutierungen
0080008b B SIO_Drehzahl
0080008d B IntRef
0080008e b sollwert.2195
00800090 B SIO_Sollwert
00800091 B SioTmp
00800092 B NeuerDatensatzEmpfangen
00800093 B MotorTest
00800099 B AnzahlEmpfangsBytes
0080009a b UartState.1915
0080009b b buf_ptr.1914
0080009c b crc2.1913
0080009d b crc1.1912
0080009e b crc.1911
008000a0 b ptr.1846
008000a2 B CountMilliseconds
008000a4 b cnt.1843
008000a5 B PPM_Signal
008000a7 B Timer1Overflow
008000a8 B PPM_Timeout
008000a9 B anz_ppm_werte
008000aa b ppm.1857
008000ac b tim_alt.1856
008000ae B Byte_Counter
008000af B Phase
008000b0 B ShadowTCCR1A
008000b1 B CompInterruptFreigabe
008000b2 B HwVersion
008000b3 B DrehZahlTabelle
008002b3 B MinUpmPulse
008002b5 B RuheStrom
008002b7 B MeineSlaveAdresse
008002b8 B SendeBuffer
0080031c B Debug_Timer
0080031e B RxdBuffer
00800382 B DebugOut
00800394 B Timer0Overflow
00800395 B I2C_RXBuffer
00800396 B __iob
0080039c B __brkval
0080039e B __flp
008003a0 B __bss_end
008003a0 N __heap_start
008003a0 N _end
00810000 N __eeprom_end
/branches/V0.41-Hexa/PPM_Decode.lst
0,0 → 1,275
1 .file "PPM_Decode.c"
2 __SREG__ = 0x3f
3 __SP_H__ = 0x3e
4 __SP_L__ = 0x3d
5 __CCP__ = 0x34
6 __tmp_reg__ = 0
7 __zero_reg__ = 1
15 .Ltext0:
16 .global InitPPM
18 InitPPM:
19 .LFB3:
20 .LM1:
21 /* prologue: function */
22 /* frame size = 0 */
23 .LM2:
24 0000 8EB5 in r24,78-32
25 0002 806C ori r24,lo8(-64)
26 0004 8EBD out 78-32,r24
27 .LM3:
28 0006 8EB5 in r24,78-32
29 0008 8064 ori r24,lo8(64)
30 000a 8EBD out 78-32,r24
31 .LM4:
32 000c 89B7 in r24,89-32
33 000e 8062 ori r24,lo8(32)
34 0010 89BF out 89-32,r24
35 .LM5:
36 0012 89B7 in r24,89-32
37 0014 8460 ori r24,lo8(4)
38 0016 89BF out 89-32,r24
39 /* epilogue start */
40 .LM6:
41 0018 0895 ret
42 .LFE3:
44 .global __vector_8
46 __vector_8:
47 .LFB4:
48 .LM7:
49 001a 1F92 push __zero_reg__
50 001c 0F92 push r0
51 001e 0FB6 in r0,__SREG__
52 0020 0F92 push r0
53 0022 1124 clr __zero_reg__
54 0024 8F93 push r24
55 /* prologue: Signal */
56 /* frame size = 0 */
57 .LM8:
58 0026 8091 0000 lds r24,Timer1Overflow
59 002a 8F5F subi r24,lo8(-(1))
60 002c 8093 0000 sts Timer1Overflow,r24
61 /* epilogue start */
62 .LM9:
63 0030 8F91 pop r24
64 0032 0F90 pop r0
65 0034 0FBE out __SREG__,r0
66 0036 0F90 pop r0
67 0038 1F90 pop __zero_reg__
68 003a 1895 reti
69 .LFE4:
71 .global __vector_5
73 __vector_5:
74 .LFB5:
75 .LM10:
76 003c 1F92 push __zero_reg__
77 003e 0F92 push r0
78 0040 0FB6 in r0,__SREG__
79 0042 0F92 push r0
80 0044 1124 clr __zero_reg__
81 0046 2F93 push r18
82 0048 3F93 push r19
83 004a 4F93 push r20
84 004c 5F93 push r21
85 004e 8F93 push r24
86 0050 9F93 push r25
87 /* prologue: Signal */
88 /* frame size = 0 */
89 .LM11:
90 0052 0EB4 in __tmp_reg__,78-32
91 0054 06FE sbrs __tmp_reg__,6
92 0056 00C0 rjmp .L6
93 .LM12:
94 0058 1092 0000 sts Timer1Overflow,__zero_reg__
95 .LM13:
96 005c 86B5 in r24,70-32
97 005e 97B5 in r25,(70)+1-32
98 0060 9093 0000 sts (tim_alt.1856)+1,r25
99 0064 8093 0000 sts tim_alt.1856,r24
100 .LM14:
101 0068 8EB5 in r24,78-32
102 006a 8F7B andi r24,lo8(-65)
103 006c 8EBD out 78-32,r24
104 .LM15:
105 006e 84E6 ldi r24,lo8(100)
106 0070 8093 0000 sts PPM_Timeout,r24
107 0074 00C0 rjmp .L12
108 .L6:
109 .LM16:
110 0076 8EB5 in r24,78-32
111 0078 8064 ori r24,lo8(64)
112 007a 8EBD out 78-32,r24
113 .LM17:
114 007c 26B5 in r18,70-32
115 007e 37B5 in r19,(70)+1-32
116 0080 4091 0000 lds r20,Timer1Overflow
117 0084 8091 0000 lds r24,tim_alt.1856
118 0088 9091 0000 lds r25,(tim_alt.1856)+1
119 008c 281B sub r18,r24
120 008e 390B sbc r19,r25
121 0090 942F mov r25,r20
122 0092 990F lsl r25
123 0094 80E0 ldi r24,lo8(0)
124 0096 280F add r18,r24
125 0098 391F adc r19,r25
126 009a 85E0 ldi r24,5
127 009c 3695 1: lsr r19
128 009e 2795 ror r18
129 00a0 8A95 dec r24
130 00a2 01F4 brne 1b
131 00a4 3093 0000 sts (ppm.1857)+1,r19
132 00a8 2093 0000 sts ppm.1857,r18
133 .LM18:
134 00ac 2851 subi r18,lo8(280)
135 00ae 3140 sbci r19,hi8(280)
136 00b0 00F4 brsh .L8
137 00b2 88E1 ldi r24,lo8(280)
138 00b4 91E0 ldi r25,hi8(280)
139 00b6 9093 0000 sts (ppm.1857)+1,r25
140 00ba 8093 0000 sts ppm.1857,r24
141 .L8:
142 .LM19:
143 00be 4091 0000 lds r20,ppm.1857
144 00c2 5091 0000 lds r21,(ppm.1857)+1
145 00c6 4851 subi r20,lo8(-(-280))
146 00c8 5140 sbci r21,hi8(-(-280))
147 .LM20:
148 00ca 8091 0000 lds r24,PPM_Signal
149 00ce 9091 0000 lds r25,(PPM_Signal)+1
150 00d2 8417 cp r24,r20
151 00d4 9507 cpc r25,r21
152 00d6 00F4 brsh .L9
153 00d8 8091 0000 lds r24,PPM_Signal
154 00dc 9091 0000 lds r25,(PPM_Signal)+1
155 00e0 0196 adiw r24,1
156 00e2 00C0 rjmp .L13
157 .L9:
158 .LM21:
159 00e4 8091 0000 lds r24,PPM_Signal
160 00e8 9091 0000 lds r25,(PPM_Signal)+1
161 00ec 4817 cp r20,r24
162 00ee 5907 cpc r21,r25
163 00f0 00F4 brsh .L10
164 00f2 8091 0000 lds r24,PPM_Signal
165 00f6 9091 0000 lds r25,(PPM_Signal)+1
166 00fa 0197 sbiw r24,1
167 .L13:
168 00fc 9093 0000 sts (PPM_Signal)+1,r25
169 0100 8093 0000 sts PPM_Signal,r24
170 .L10:
171 .LM22:
172 0104 8091 0000 lds r24,PPM_Signal
173 0108 9091 0000 lds r25,(PPM_Signal)+1
174 010c 9C01 movw r18,r24
175 010e 220F lsl r18
176 0110 331F rol r19
177 0112 220F lsl r18
178 0114 331F rol r19
179 0116 220F lsl r18
180 0118 331F rol r19
181 011a 281B sub r18,r24
182 011c 390B sbc r19,r25
183 011e 240F add r18,r20
184 0120 351F adc r19,r21
185 0122 83E0 ldi r24,3
186 0124 3695 1: lsr r19
187 0126 2795 ror r18
188 0128 8A95 dec r24
189 012a 01F4 brne 1b
190 012c 3093 0000 sts (ppm.1857)+1,r19
191 0130 2093 0000 sts ppm.1857,r18
192 .LM23:
193 0134 3093 0000 sts (PPM_Signal)+1,r19
194 0138 2093 0000 sts PPM_Signal,r18
195 .LM24:
196 013c 8091 0000 lds r24,anz_ppm_werte
197 0140 8F3F cpi r24,lo8(-1)
198 0142 01F0 breq .L11
199 0144 8091 0000 lds r24,anz_ppm_werte
200 0148 8F5F subi r24,lo8(-(1))
201 014a 8093 0000 sts anz_ppm_werte,r24
202 .L11:
203 .LM25:
204 014e 81E0 ldi r24,lo8(1)
205 0150 8093 0000 sts ZeitZumAdWandeln,r24
206 .L12:
207 /* epilogue start */
208 .LM26:
209 0154 9F91 pop r25
210 0156 8F91 pop r24
211 0158 5F91 pop r21
212 015a 4F91 pop r20
213 015c 3F91 pop r19
214 015e 2F91 pop r18
215 0160 0F90 pop r0
216 0162 0FBE out __SREG__,r0
217 0164 0F90 pop r0
218 0166 1F90 pop __zero_reg__
219 0168 1895 reti
220 .LFE5:
222 .global __vector_1
224 __vector_1:
225 .LFB6:
226 .LM27:
227 016a 1F92 push __zero_reg__
228 016c 0F92 push r0
229 016e 0FB6 in r0,__SREG__
230 0170 0F92 push r0
231 0172 1124 clr __zero_reg__
232 0174 8F93 push r24
233 /* prologue: Signal */
234 /* frame size = 0 */
235 .LM28:
236 0176 8AB7 in r24,90-32
237 0178 8F7B andi r24,lo8(-65)
238 017a 8ABF out 90-32,r24
239 /* epilogue start */
240 .LM29:
241 017c 8F91 pop r24
242 017e 0F90 pop r0
243 0180 0FBE out __SREG__,r0
244 0182 0F90 pop r0
245 0184 1F90 pop __zero_reg__
246 0186 1895 reti
247 .LFE6:
249 .global PPM_Signal
250 .global PPM_Signal
251 .section .bss
254 PPM_Signal:
255 0000 0000 .skip 2,0
256 .global Timer1Overflow
257 .global Timer1Overflow
260 Timer1Overflow:
261 0002 00 .skip 1,0
262 .global PPM_Timeout
263 .global PPM_Timeout
266 PPM_Timeout:
267 0003 00 .skip 1,0
268 .global anz_ppm_werte
269 .global anz_ppm_werte
272 anz_ppm_werte:
273 0004 00 .skip 1,0
274 .lcomm ppm.1857,2
275 .lcomm tim_alt.1856,2
324 .Letext0:
DEFINED SYMBOLS
*ABS*:00000000 PPM_Decode.c
C:\DOCUME~1\ADMINI~1\LOCALS~1\Temp/ccmt1bah.s:2 *ABS*:0000003f __SREG__
C:\DOCUME~1\ADMINI~1\LOCALS~1\Temp/ccmt1bah.s:3 *ABS*:0000003e __SP_H__
C:\DOCUME~1\ADMINI~1\LOCALS~1\Temp/ccmt1bah.s:4 *ABS*:0000003d __SP_L__
C:\DOCUME~1\ADMINI~1\LOCALS~1\Temp/ccmt1bah.s:5 *ABS*:00000034 __CCP__
C:\DOCUME~1\ADMINI~1\LOCALS~1\Temp/ccmt1bah.s:6 *ABS*:00000000 __tmp_reg__
C:\DOCUME~1\ADMINI~1\LOCALS~1\Temp/ccmt1bah.s:7 *ABS*:00000001 __zero_reg__
C:\DOCUME~1\ADMINI~1\LOCALS~1\Temp/ccmt1bah.s:18 .text:00000000 InitPPM
C:\DOCUME~1\ADMINI~1\LOCALS~1\Temp/ccmt1bah.s:46 .text:0000001a __vector_8
C:\DOCUME~1\ADMINI~1\LOCALS~1\Temp/ccmt1bah.s:260 .bss:00000002 Timer1Overflow
C:\DOCUME~1\ADMINI~1\LOCALS~1\Temp/ccmt1bah.s:73 .text:0000003c __vector_5
C:\DOCUME~1\ADMINI~1\LOCALS~1\Temp/ccmt1bah.s:274 .bss:00000007 tim_alt.1856
C:\DOCUME~1\ADMINI~1\LOCALS~1\Temp/ccmt1bah.s:266 .bss:00000003 PPM_Timeout
.bss:00000005 ppm.1857
C:\DOCUME~1\ADMINI~1\LOCALS~1\Temp/ccmt1bah.s:254 .bss:00000000 PPM_Signal
C:\DOCUME~1\ADMINI~1\LOCALS~1\Temp/ccmt1bah.s:272 .bss:00000004 anz_ppm_werte
C:\DOCUME~1\ADMINI~1\LOCALS~1\Temp/ccmt1bah.s:224 .text:0000016a __vector_1
 
UNDEFINED SYMBOLS
ZeitZumAdWandeln
__do_clear_bss
/branches/V0.41-Hexa/analog.lst
0,0 → 1,209
1 .file "analog.c"
2 __SREG__ = 0x3f
3 __SP_H__ = 0x3e
4 __SP_L__ = 0x3d
5 __CCP__ = 0x34
6 __tmp_reg__ = 0
7 __zero_reg__ = 1
15 .Ltext0:
16 .global ADC_Init
18 ADC_Init:
19 .LFB3:
20 .LM1:
21 /* prologue: function */
22 /* frame size = 0 */
23 .LM2:
24 0000 86EA ldi r24,lo8(-90)
25 0002 86B9 out 38-32,r24
26 .LM3:
27 0004 8091 0000 lds r24,IntRef
28 0008 8760 ori r24,lo8(7)
29 000a 87B9 out 39-32,r24
30 .LM4:
31 000c 369A sbi 38-32,6
32 /* epilogue start */
33 .LM5:
34 000e 0895 ret
35 .LFE3:
37 .global AdConvert
39 AdConvert:
40 .LFB4:
41 .LM6:
42 /* prologue: function */
43 /* frame size = 0 */
44 .LM7:
45 0010 27B1 in r18,39-32
46 .LVL0:
47 .LM8:
48 0012 9091 0000 lds r25,IntRef
49 0016 9660 ori r25,lo8(6)
50 0018 97B9 out 39-32,r25
51 .LM9:
52 001a 10BE out 80-32,__zero_reg__
53 .LM10:
54 001c 83ED ldi r24,lo8(-45)
55 001e 86B9 out 38-32,r24
56 .LM11:
57 0020 349A sbi 38-32,4
58 .LM12:
59 0022 97B9 out 39-32,r25
60 .LM13:
61 0024 369A sbi 38-32,6
62 .L4:
63 .LM14:
64 0026 349B sbis 38-32,4
65 0028 00C0 rjmp .L4
66 .LM15:
67 002a 27B9 out 39-32,r18
68 .LM16:
69 002c 84B1 in r24,36-32
70 002e 95B1 in r25,(36)+1-32
71 .LM17:
72 0030 2091 0000 lds r18,Strom
73 0034 3091 0000 lds r19,(Strom)+1
74 .LVL1:
75 0038 A901 movw r20,r18
76 .LVL2:
77 003a 63E0 ldi r22,3
78 003c 440F 1: lsl r20
79 003e 551F rol r21
80 0040 6A95 dec r22
81 0042 01F4 brne 1b
82 0044 421B sub r20,r18
83 0046 530B sbc r21,r19
84 0048 880F lsl r24
85 004a 991F rol r25
86 004c 880F lsl r24
87 004e 991F rol r25
88 0050 480F add r20,r24
89 0052 591F adc r21,r25
90 0054 83E0 ldi r24,3
91 0056 5695 1: lsr r21
92 0058 4795 ror r20
93 005a 8A95 dec r24
94 005c 01F4 brne 1b
95 005e 5093 0000 sts (Strom)+1,r21
96 0062 4093 0000 sts Strom,r20
97 .LM18:
98 0066 8091 0000 lds r24,Strom_max
99 006a 90E0 ldi r25,lo8(0)
100 006c 8417 cp r24,r20
101 006e 9507 cpc r25,r21
102 0070 00F4 brsh .L5
103 0072 4093 0000 sts Strom_max,r20
104 .L5:
105 .LM19:
106 0076 16B8 out 38-32,__zero_reg__
107 .LM20:
108 0078 88E0 ldi r24,lo8(8)
109 007a 80BF out 80-32,r24
110 /* epilogue start */
111 .LM21:
112 007c 0895 ret
113 .LFE4:
115 .global MessAD
117 MessAD:
118 .LFB5:
119 .LM22:
120 .LVL3:
121 /* prologue: function */
122 /* frame size = 0 */
123 .LM23:
124 007e 27B1 in r18,39-32
125 .LVL4:
126 .LM24:
127 0080 9091 0000 lds r25,IntRef
128 .LVL5:
129 0084 982B or r25,r24
130 .LM25:
131 0086 97B9 out 39-32,r25
132 .LM26:
133 0088 10BE out 80-32,__zero_reg__
134 .LM27:
135 008a 83ED ldi r24,lo8(-45)
136 008c 86B9 out 38-32,r24
137 .LM28:
138 008e 349A sbi 38-32,4
139 .LM29:
140 0090 97B9 out 39-32,r25
141 .LM30:
142 0092 369A sbi 38-32,6
143 .L9:
144 .LM31:
145 0094 349B sbis 38-32,4
146 0096 00C0 rjmp .L9
147 .LM32:
148 0098 27B9 out 39-32,r18
149 .LM33:
150 009a 16B8 out 38-32,__zero_reg__
151 .LM34:
152 009c 88E0 ldi r24,lo8(8)
153 009e 80BF out 80-32,r24
154 .LM35:
155 00a0 24B1 in r18,36-32
156 00a2 35B1 in r19,(36)+1-32
157 .LVL6:
158 .LM36:
159 00a4 C901 movw r24,r18
160 /* epilogue start */
161 00a6 0895 ret
162 .LFE5:
164 .global FastADConvert
166 FastADConvert:
167 .LFB6:
168 .LM37:
169 /* prologue: function */
170 /* frame size = 0 */
171 .LM38:
172 00a8 86E0 ldi r24,lo8(6)
173 00aa 00D0 rcall MessAD
174 00ac 9C01 movw r18,r24
175 .LVL7:
176 00ae 220F lsl r18
177 00b0 331F rol r19
178 00b2 220F lsl r18
179 00b4 331F rol r19
180 00b6 293C cpi r18,201
181 00b8 3105 cpc r19,__zero_reg__
182 00ba 00F0 brlo .L13
183 00bc 28EC ldi r18,lo8(200)
184 00be 30E0 ldi r19,hi8(200)
185 .L13:
186 .LM39:
187 00c0 3093 0000 sts (Strom)+1,r19
188 00c4 2093 0000 sts Strom,r18
189 .LM40:
190 00c8 8091 0000 lds r24,Strom_max
191 00cc 90E0 ldi r25,lo8(0)
192 00ce 8217 cp r24,r18
193 00d0 9307 cpc r25,r19
194 00d2 00F4 brsh .L14
195 00d4 2093 0000 sts Strom_max,r18
196 .L14:
197 .LM41:
198 00d8 16B8 out 38-32,__zero_reg__
199 .LM42:
200 00da 88E0 ldi r24,lo8(8)
201 00dc 80BF out 80-32,r24
202 /* epilogue start */
203 .LM43:
204 00de 0895 ret
205 .LFE6:
255 .Letext0:
DEFINED SYMBOLS
*ABS*:00000000 analog.c
C:\DOCUME~1\ADMINI~1\LOCALS~1\Temp/ccJVp2L8.s:2 *ABS*:0000003f __SREG__
C:\DOCUME~1\ADMINI~1\LOCALS~1\Temp/ccJVp2L8.s:3 *ABS*:0000003e __SP_H__
C:\DOCUME~1\ADMINI~1\LOCALS~1\Temp/ccJVp2L8.s:4 *ABS*:0000003d __SP_L__
C:\DOCUME~1\ADMINI~1\LOCALS~1\Temp/ccJVp2L8.s:5 *ABS*:00000034 __CCP__
C:\DOCUME~1\ADMINI~1\LOCALS~1\Temp/ccJVp2L8.s:6 *ABS*:00000000 __tmp_reg__
C:\DOCUME~1\ADMINI~1\LOCALS~1\Temp/ccJVp2L8.s:7 *ABS*:00000001 __zero_reg__
C:\DOCUME~1\ADMINI~1\LOCALS~1\Temp/ccJVp2L8.s:18 .text:00000000 ADC_Init
C:\DOCUME~1\ADMINI~1\LOCALS~1\Temp/ccJVp2L8.s:39 .text:00000010 AdConvert
C:\DOCUME~1\ADMINI~1\LOCALS~1\Temp/ccJVp2L8.s:117 .text:0000007e MessAD
C:\DOCUME~1\ADMINI~1\LOCALS~1\Temp/ccJVp2L8.s:166 .text:000000a8 FastADConvert
 
UNDEFINED SYMBOLS
IntRef
Strom
Strom_max
/branches/V0.41-Hexa/main.c
84,42 → 84,42
void SetPWM(void)
//############################################################################
{
unsigned char tmp_pwm;
tmp_pwm = PWM;
if(tmp_pwm > MaxPWM) // Strombegrenzung
{
tmp_pwm = MaxPWM;
PORTC |= ROT;
}
if(Strom > MAX_STROM) // Strombegrenzung
{
OCR1A = 0; OCR1B = 0; OCR2 = 0;
PORTD &= ~0x38;
PORTC |= ROT;
DebugOut.Analog[6]++;
Strom--;
}
else
{
#ifdef _32KHZ
OCR1A = tmp_pwm; OCR1B = tmp_pwm; OCR2 = tmp_pwm;
#endif
unsigned char tmp_pwm;
tmp_pwm = PWM;
if(tmp_pwm > MaxPWM) // Strombegrenzung
{
tmp_pwm = MaxPWM;
PORTC |= ROT;
}
if(Strom > MAX_STROM) // Strombegrenzung
{
OCR1A = 0; OCR1B = 0; OCR2 = 0;
PORTD &= ~0x38;
PORTC |= ROT;
DebugOut.Analog[6]++;
Strom--;
}
else
{
#ifdef _32KHZ
OCR1A = tmp_pwm; OCR1B = tmp_pwm; OCR2 = tmp_pwm;
#endif
 
#ifdef _16KHZ
//OCR1A = 2 * (int)tmp_pwm; OCR1B = 2 * (int)tmp_pwm; OCR2 = tmp_pwm;
OCR1A = tmp_pwm; OCR1B = tmp_pwm; OCR2 = tmp_pwm;
#endif
}
#ifdef _16KHZ
//OCR1A = 2 * (int)tmp_pwm; OCR1B = 2 * (int)tmp_pwm; OCR2 = tmp_pwm;
OCR1A = tmp_pwm; OCR1B = tmp_pwm; OCR2 = tmp_pwm;
#endif
}
}
 
void DebugAusgaben(void)
{
DebugOut.Analog[0] = Strom;
DebugOut.Analog[1] = Mittelstrom;
DebugOut.Analog[2] = SIO_Drehzahl;
DebugOut.Analog[3] = PPM_Signal;
DebugOut.Analog[4] = OCR2;
// DebugOut.Analog[5] = PWM;
DebugOut.Analog[0] = Strom;
DebugOut.Analog[1] = Mittelstrom;
DebugOut.Analog[2] = SIO_Drehzahl;
DebugOut.Analog[3] = PPM_Signal;
DebugOut.Analog[4] = OCR2;
// DebugOut.Analog[5] = PWM;
}
 
//############################################################################
127,12 → 127,12
void PWM_Init(void)
//############################################################################
{
PWM_OFF;
TCCR1B = (1 << CS10) | (0 << CS11) | (0 << CS12) | (0 << WGM12) |
(0 << WGM13) | (0<< ICES1) | (0 << ICNC1);
/* TCCR1B = (1 << CS10) | (0 << CS11) | (0 << CS12) | (1 << WGM12) |
(0 << WGM13) | (0<< ICES1) | (0 << ICNC1);
*/
PWM_OFF;
TCCR1B = (1 << CS10) | (0 << CS11) | (0 << CS12) | (0 << WGM12) |
(0 << WGM13) | (0<< ICES1) | (0 << ICNC1);
/* TCCR1B = (1 << CS10) | (0 << CS11) | (0 << CS12) | (1 << WGM12) |
(0 << WGM13) | (0<< ICES1) | (0 << ICNC1);
*/
}
 
//############################################################################
140,21 → 140,21
void Wait(unsigned char dauer)
//############################################################################
{
dauer = (unsigned char)TCNT0 + dauer;
while((TCNT0 - dauer) & 0x80);
dauer = (unsigned char)TCNT0 + dauer;
while((TCNT0 - dauer) & 0x80);
}
 
void RotBlink(unsigned char anz)
{
sei(); // Interrupts ein
while(anz--)
{
PORTC |= ROT;
Delay_ms(300);
PORTC &= ~ROT;
Delay_ms(300);
}
Delay_ms(1000);
sei(); // Interrupts ein
while(anz--)
{
PORTC |= ROT;
Delay_ms(300);
PORTC &= ~ROT;
Delay_ms(300);
}
Delay_ms(1000);
}
 
//############################################################################
162,54 → 162,54
char Anwerfen(unsigned char pwm)
//############################################################################
{
unsigned long timer = 300,i;
DISABLE_SENSE_INT;
PWM = 5;
SetPWM();
Manuell();
// Delay_ms(200);
MinUpmPulse = SetDelay(300);
while(!CheckDelay(MinUpmPulse))
{
FastADConvert();
if(Strom > 120)
{
STEUER_OFF; // Abschalten wegen Kurzschluss
RotBlink(10);
return(0);
}
}
PWM = pwm;
while(1)
{
for(i=0;i<timer; i++)
{
if(!UebertragungAbgeschlossen) SendUart();
else DatenUebertragung();
Wait(100); // warten
}
DebugAusgaben();
FastADConvert();
if(Strom > 60)
{
STEUER_OFF; // Abschalten wegen Kurzschluss
RotBlink(10);
return(0);
}
timer-= timer/15+1;
if(timer < 25) { if(TEST_MANUELL) timer = 25; else return(1); }
Manuell();
Phase++;
Phase %= 6;
AdConvert();
PWM = pwm;
SetPWM();
if(SENSE)
{
PORTD ^= GRUEN;
}
}
unsigned long timer = 300,i;
DISABLE_SENSE_INT;
PWM = 5;
SetPWM();
Manuell();
// Delay_ms(200);
MinUpmPulse = SetDelay(300);
while(!CheckDelay(MinUpmPulse))
{
FastADConvert();
if(Strom > 120)
{
STEUER_OFF; // Abschalten wegen Kurzschluss
RotBlink(10);
return(0);
}
}
PWM = pwm;
while(1)
{
for(i=0;i<timer; i++)
{
if(!UebertragungAbgeschlossen) SendUart();
else DatenUebertragung();
Wait(100); // warten
}
DebugAusgaben();
FastADConvert();
if(Strom > 60)
{
STEUER_OFF; // Abschalten wegen Kurzschluss
RotBlink(10);
return(0);
}
 
timer-= timer/15+1;
if(timer < 25) { if(TEST_MANUELL) timer = 25; else return(1); }
Manuell();
Phase++;
Phase %= 6;
AdConvert();
PWM = pwm;
SetPWM();
if(SENSE)
{
PORTD ^= GRUEN;
}
}
}
 
/*
227,32 → 227,32
#define TEST_STROMGRENZE 120
unsigned char DelayM(unsigned int timer)
{
while(timer--)
{
FastADConvert();
if(Strom > (TEST_STROMGRENZE + RuheStrom))
{
FETS_OFF;
return(1);
}
}
return(0);
while(timer--)
{
FastADConvert();
if(Strom > (TEST_STROMGRENZE + RuheStrom))
{
FETS_OFF;
return(1);
}
}
return(0);
}
 
unsigned char Delay(unsigned int timer)
{
while(timer--)
{
// if(SENSE_H) { PORTC |= ROT; } else { PORTC &= ~ROT;}
asm volatile("");
}
return(0);
while(timer--)
{
// if(SENSE_H) { PORTC |= ROT; } else { PORTC &= ~ROT;}
asm volatile("");
}
return(0);
}
 
/*
void ShowSense(void)
{
if(SENSE_H) { PORTC |= ROT; } else { PORTC &= ~ROT;}
if(SENSE_H) { PORTC |= ROT; } else { PORTC &= ~ROT;}
 
}
*/
266,126 → 266,126
void MotorTon(void)
//############################################################################
{
unsigned char ADR_TAB[7] = {0,0,0,1,1,2,2};
unsigned int timer = 300,i;
unsigned int t = 0;
unsigned char anz = 0,MosfetOkay = 0, grenze = 50;
unsigned char ADR_TAB[7] = {0,0,0,1,1,2,2};
unsigned int timer = 300,i;
unsigned int t = 0;
unsigned char anz = 0,MosfetOkay = 0, grenze = 50;
 
PORTC &= ~ROT;
Delay_ms(300 * ADR_TAB[MotorAdresse]);
DISABLE_SENSE_INT;
cli();//Globale Interrupts Ausschalten
uart_putchar('\n');
STEUER_OFF;
Strom_max = 0;
DelayM(50);
RuheStrom = Strom_max;
// uart_putchar(RuheStrom + 'A');
//+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
//+ High-Mosfets auf Kurzschluss testen
//+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Strom = 0;
/*
LOW_B_EIN;
HIGH_A_EIN;
if(DelayM(3))
{
anz = 1;
uart_putchar('1');
}
FETS_OFF;
Delay(1000);
Strom = 0;
LOW_A_EIN;
HIGH_B_EIN;
if(DelayM(3))
{
anz = 2;
uart_putchar('2');
}
FETS_OFF;
Delay(1000);
Strom = 0;
LOW_B_EIN; // Low C ein
HIGH_C_EIN; // High B ein
if(DelayM(3))
{
anz = 3;
uart_putchar('3');
}
FETS_OFF;
Delay(1000);
LOW_A_EIN; // Low A ein; und A gegen C
HIGH_C_EIN; // High C ein
if(DelayM(3))
{
anz = 3;
uart_putchar('7');
}
FETS_OFF;
DelayM(10000);
PORTC &= ~ROT;
Delay_ms(300 * ADR_TAB[MotorAdresse]);
DISABLE_SENSE_INT;
cli();//Globale Interrupts Ausschalten
uart_putchar('\n');
STEUER_OFF;
Strom_max = 0;
DelayM(50);
RuheStrom = Strom_max;
// uart_putchar(RuheStrom + 'A');
//+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
//+ High-Mosfets auf Kurzschluss testen
//+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Strom = 0;
/*
LOW_B_EIN;
HIGH_A_EIN;
if(DelayM(3))
{
anz = 1;
uart_putchar('1');
}
FETS_OFF;
Delay(1000);
Strom = 0;
LOW_A_EIN;
HIGH_B_EIN;
if(DelayM(3))
{
anz = 2;
uart_putchar('2');
}
FETS_OFF;
Delay(1000);
Strom = 0;
LOW_B_EIN; // Low C ein
HIGH_C_EIN; // High B ein
if(DelayM(3))
{
anz = 3;
uart_putchar('3');
}
FETS_OFF;
Delay(1000);
LOW_A_EIN; // Low A ein; und A gegen C
HIGH_C_EIN; // High C ein
if(DelayM(3))
{
anz = 3;
uart_putchar('7');
}
FETS_OFF;
DelayM(10000);
 
if(anz) while(1) RotBlink(anz); // bei Kurzschluss nicht starten
*/
//+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
//+ LOW-Mosfets auf Schalten und Kurzschluss testen
//+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
if(UDR == ' ') {t = 65535; grenze = 40; uart_putchar('_');} else t = 1000; // Ausführlicher Test
Strom = 0;
for(i=0;i<t;i++)
{
LOW_A_EIN;
DelayM(1);
FETS_OFF;
Delay(5);
HIGH_A_EIN;
DelayM(1);
FETS_OFF;
if(Strom > grenze + RuheStrom) {anz = 4; uart_putchar('4'); FETS_OFF; break;}
Delay(5);
}
Delay(10000);
if(anz) while(1) RotBlink(anz); // bei Kurzschluss nicht starten
*/
//+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
//+ LOW-Mosfets auf Schalten und Kurzschluss testen
//+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
if(UDR == ' ') {t = 65535; grenze = 40; uart_putchar('_');} else t = 1000; // Ausführlicher Test
Strom = 0;
for(i=0;i<t;i++)
{
LOW_A_EIN;
DelayM(1);
FETS_OFF;
Delay(5);
HIGH_A_EIN;
DelayM(1);
FETS_OFF;
if(Strom > grenze + RuheStrom) {anz = 4; uart_putchar('4'); FETS_OFF; break;}
Delay(5);
}
Delay(10000);
 
Strom = 0;
for(i=0;i<t;i++)
{
LOW_B_EIN;
DelayM(1);
FETS_OFF;
Delay(5);
HIGH_B_EIN;
DelayM(1);
FETS_OFF;
if(Strom > grenze + RuheStrom) {anz = 5; uart_putchar('5'); FETS_OFF;break;}
Delay(5);
}
Strom = 0;
for(i=0;i<t;i++)
{
LOW_B_EIN;
DelayM(1);
FETS_OFF;
Delay(5);
HIGH_B_EIN;
DelayM(1);
FETS_OFF;
if(Strom > grenze + RuheStrom) {anz = 5; uart_putchar('5'); FETS_OFF;break;}
Delay(5);
}
 
Strom = 0;
Delay(10000);
Strom = 0;
Delay(10000);
 
for(i=0;i<t;i++)
{
LOW_C_EIN;
DelayM(1);
FETS_OFF;
Delay(5);
HIGH_C_EIN;
DelayM(1);
FETS_OFF;
if(Strom > grenze + RuheStrom) {anz = 6; uart_putchar('6'); FETS_OFF; break;}
Delay(5);
}
for(i=0;i<t;i++)
{
LOW_C_EIN;
DelayM(1);
FETS_OFF;
Delay(5);
HIGH_C_EIN;
DelayM(1);
FETS_OFF;
if(Strom > grenze + RuheStrom) {anz = 6; uart_putchar('6'); FETS_OFF; break;}
Delay(5);
}
 
if(anz) while(1) RotBlink(anz); // bei Kurzschluss nicht starten
if(anz) while(1) RotBlink(anz); // bei Kurzschluss nicht starten
 
//+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
//+ High-Mosfets auf Schalten testen
//+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
SENSE_A;
FETS_OFF;
LOW_B_EIN; // Low B ein
LOW_C_EIN; // Low C ein
Strom = 0;
//+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
//+ High-Mosfets auf Schalten testen
//+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
SENSE_A;
FETS_OFF;
LOW_B_EIN; // Low B ein
LOW_C_EIN; // Low C ein
Strom = 0;
#define TONDAUER 40000
#define SOUND_E 1 // 1
#define SOUND1_A 300
392,104 → 392,104
#define SOUND2_A 330
#define SOUND3_A 360
 
for(i=0; i< (TONDAUER / SOUND2_A) ; i++)
{
HIGH_A_EIN; // Test A
Delay(SOUND_E);
if(MessAD(0) > 50) { MosfetOkay |= 0x01; } else { MosfetOkay &= ~0x01;};
PORTB = 0;
Delay(SOUND1_A);
}
FETS_OFF;
for(i=0; i< (TONDAUER / SOUND2_A) ; i++)
{
HIGH_A_EIN; // Test A
Delay(SOUND_E);
if(MessAD(0) > 50) { MosfetOkay |= 0x01; } else { MosfetOkay &= ~0x01;};
PORTB = 0;
Delay(SOUND1_A);
}
FETS_OFF;
 
LOW_A_EIN; // Low A ein
LOW_C_EIN; // Low C ein
for(i=0; i<(TONDAUER / SOUND1_A); i++)
{
HIGH_B_EIN; // Test B
Delay(SOUND_E);
if(MessAD(1) > 50) { MosfetOkay |= 0x02; } else { MosfetOkay &= ~0x02;};
PORTB = 0;
Delay(SOUND1_A);
}
LOW_A_EIN; // Low A ein
LOW_C_EIN; // Low C ein
for(i=0; i<(TONDAUER / SOUND1_A); i++)
{
HIGH_B_EIN; // Test B
Delay(SOUND_E);
if(MessAD(1) > 50) { MosfetOkay |= 0x02; } else { MosfetOkay &= ~0x02;};
PORTB = 0;
Delay(SOUND1_A);
}
 
FETS_OFF;
LOW_A_EIN; // Low A ein
LOW_B_EIN; // Low B ein
for(i=0; i<(TONDAUER / SOUND3_A); i++)
{
HIGH_C_EIN; // Test C
Delay(SOUND_E);
if(MessAD(2) > 50) { MosfetOkay |= 0x04; } else { MosfetOkay &= ~0x04;};
PORTB = 0;
Delay(SOUND2_A);
}
FETS_OFF;
//+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
//+ Low-Mosfets auf Schalten testen
//+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
// SENSE_B;
LOW_A_EIN; // Low A ein
for(i=0; i< (TONDAUER / SOUND2_A) ; i++)
{
HIGH_B_EIN; // Test B
Delay(SOUND_E);
if(MessAD(0) > 128) { MosfetOkay &= ~0x08;} else { MosfetOkay |= 0x08;};
PORTB = 0;
Delay(SOUND2_A);
}
FETS_OFF;
LOW_A_EIN; // Low A ein
LOW_B_EIN; // Low B ein
for(i=0; i<(TONDAUER / SOUND3_A); i++)
{
HIGH_C_EIN; // Test C
Delay(SOUND_E);
if(MessAD(2) > 50) { MosfetOkay |= 0x04; } else { MosfetOkay &= ~0x04;};
PORTB = 0;
Delay(SOUND2_A);
}
FETS_OFF;
//+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
//+ Low-Mosfets auf Schalten testen
//+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
// SENSE_B;
LOW_A_EIN; // Low A ein
for(i=0; i< (TONDAUER / SOUND2_A) ; i++)
{
HIGH_B_EIN; // Test B
Delay(SOUND_E);
if(MessAD(0) > 128) { MosfetOkay &= ~0x08;} else { MosfetOkay |= 0x08;};
PORTB = 0;
Delay(SOUND2_A);
}
 
//++++++++++++++++++++++++++++++++++++
LOW_C_EIN; // Low C ein
for(i=0; i<(TONDAUER / SOUND1_A); i++)
{
HIGH_B_EIN; // Test B
Delay(SOUND_E);
if(MessAD(2) > 128) { MosfetOkay &= ~0x20;} else { MosfetOkay |= 0x20;};
PORTB = 0;
Delay(SOUND3_A);
}
FETS_OFF;
//++++++++++++++++++++++++++++++++++++
FETS_OFF;
LOW_B_EIN; // Low B ein
for(i=0; i<(TONDAUER / SOUND3_A); i++)
{
HIGH_C_EIN; // Test C
Delay(SOUND_E);
if(MessAD(1) > 128) { MosfetOkay &= ~0x10;} else { MosfetOkay |= 0x10;};
PORTB = 0;
Delay(SOUND3_A);
}
FETS_OFF;
//++++++++++++++++++++++++++++++++++++
//++++++++++++++++++++++++++++++++++++
LOW_C_EIN; // Low C ein
for(i=0; i<(TONDAUER / SOUND1_A); i++)
{
HIGH_B_EIN; // Test B
Delay(SOUND_E);
if(MessAD(2) > 128) { MosfetOkay &= ~0x20;} else { MosfetOkay |= 0x20;};
PORTB = 0;
Delay(SOUND3_A);
}
FETS_OFF;
//++++++++++++++++++++++++++++++++++++
FETS_OFF;
LOW_B_EIN; // Low B ein
for(i=0; i<(TONDAUER / SOUND3_A); i++)
{
HIGH_C_EIN; // Test C
Delay(SOUND_E);
if(MessAD(1) > 128) { MosfetOkay &= ~0x10;} else { MosfetOkay |= 0x10;};
PORTB = 0;
Delay(SOUND3_A);
}
FETS_OFF;
//++++++++++++++++++++++++++++++++++++
 
//+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
sei();//Globale Interrupts Einschalten
// Delay_ms(250 * MotorAdresse);
/*
LOW_A_EIN; // Low B ein
#define SOUND8_A 650
for(i=0; i<(TONDAUER / SOUND8_A); i++)
{
HIGH_B_EIN; // Test B
Delay(SOUND_E);
PORTB = 0;
Delay(SOUND8_A);
}
*/
Delay_ms(300 * (3-ADR_TAB[MotorAdresse]));
if(!(MosfetOkay & 0x01)) { anz = 1; UDR='A'; } else
if(!(MosfetOkay & 0x02)) { anz = 2; UDR='B'; } else
if(!(MosfetOkay & 0x04)) { anz = 3; UDR='C'; } else
if(!(MosfetOkay & 0x08)) { anz = 4; UDR='a'; } else
if(!(MosfetOkay & 0x10)) { anz = 5; UDR='b'; } else
if(!(MosfetOkay & 0x20)) { anz = 6; UDR='c'; }
//+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
sei();//Globale Interrupts Einschalten
// Delay_ms(250 * MotorAdresse);
/*
LOW_A_EIN; // Low B ein
#define SOUND8_A 650
for(i=0; i<(TONDAUER / SOUND8_A); i++)
{
HIGH_B_EIN; // Test B
Delay(SOUND_E);
PORTB = 0;
Delay(SOUND8_A);
}
*/
Delay_ms(300 * (3-ADR_TAB[MotorAdresse]));
if(!(MosfetOkay & 0x01)) { anz = 1; UDR='A'; } else
if(!(MosfetOkay & 0x02)) { anz = 2; UDR='B'; } else
if(!(MosfetOkay & 0x04)) { anz = 3; UDR='C'; } else
if(!(MosfetOkay & 0x08)) { anz = 4; UDR='a'; } else
if(!(MosfetOkay & 0x10)) { anz = 5; UDR='b'; } else
if(!(MosfetOkay & 0x20)) { anz = 6; UDR='c'; }
 
// if(anz) Delay_ms(1000);
if(anz) while(1) RotBlink(anz); // bei Kurzschluss nicht starten
RotBlink(anz);
uart_putchar('.');
// if(anz) Delay_ms(1000);
if(anz) while(1) RotBlink(anz); // bei Kurzschluss nicht starten
RotBlink(anz);
uart_putchar('.');
}
 
//############################################################################
497,46 → 497,46
unsigned char SollwertErmittlung(void)
//############################################################################
{
static unsigned int sollwert = 0;
unsigned int ppm;
if(!I2C_Timeout) // bei Erreichen von 0 ist der Wert ungültig
{
if(SIO_Timeout) // es gibt gültige SIO-Daten
{
sollwert = (MAX_PWM * (unsigned int) SIO_Sollwert) / 200; // skalieren auf 0-200 = 0-255
PPM_Betrieb = 0;
ICP_INT_DISABLE;
PORTC &= ~ROT;
}
else
if(anz_ppm_werte > 20) // es gibt gültige PPM-Daten
{
PPM_Betrieb = 1;
ppm = PPM_Signal;
if(ppm > 300) ppm = 0; // ungültiges Signal
if(ppm > 200) ppm = 200;
if(ppm <= MIN_PPM) sollwert = 0;
else
{
sollwert = (int) MIN_PWM + ((MAX_PWM - MIN_PWM) * (ppm - MIN_PPM)) / (190 - MIN_PPM);
}
PORTC &= ~ROT;
}
else // Kein gültiger Sollwert
{
if(!TEST_SCHUB) { if(sollwert) sollwert--; }
PORTC |= ROT;
}
}
else // I2C-Daten sind gültig
{
sollwert = I2C_RXBuffer;
PPM_Betrieb = 0;
PORTC &= ~ROT;
ICP_INT_DISABLE;
}
if(sollwert > MAX_PWM) sollwert = MAX_PWM;
return(sollwert);
static unsigned int sollwert = 0;
unsigned int ppm;
if(!I2C_Timeout) // bei Erreichen von 0 ist der Wert ungültig
{
if(SIO_Timeout) // es gibt gültige SIO-Daten
{
sollwert = (MAX_PWM * (unsigned int) SIO_Sollwert) / 200; // skalieren auf 0-200 = 0-255
PPM_Betrieb = 0;
ICP_INT_DISABLE;
PORTC &= ~ROT;
}
else
if(anz_ppm_werte > 20) // es gibt gültige PPM-Daten
{
PPM_Betrieb = 1;
ppm = PPM_Signal;
if(ppm > 300) ppm = 0; // ungültiges Signal
if(ppm > 200) ppm = 200;
if(ppm <= MIN_PPM) sollwert = 0;
else
{
sollwert = (int) MIN_PWM + ((MAX_PWM - MIN_PWM) * (ppm - MIN_PPM)) / (190 - MIN_PPM);
}
PORTC &= ~ROT;
}
else // Kein gültiger Sollwert
{
if(!TEST_SCHUB) { if(sollwert) sollwert--; }
PORTC |= ROT;
}
}
else // I2C-Daten sind gültig
{
sollwert = I2C_RXBuffer;
PPM_Betrieb = 0;
PORTC &= ~ROT;
ICP_INT_DISABLE;
}
if(sollwert > MAX_PWM) sollwert = MAX_PWM;
return(sollwert);
}
 
 
546,227 → 546,227
int main (void)
//############################################################################
{
char altPhase = 0;
int test = 0;
unsigned int Blink,TestschubTimer;
unsigned int Blink2,MittelstromTimer,DrehzahlMessTimer,MotorGestopptTimer;
char altPhase = 0;
int test = 0;
unsigned int Blink,TestschubTimer;
unsigned int Blink2,MittelstromTimer,DrehzahlMessTimer,MotorGestopptTimer;
 
DDRC = 0x08;
PORTC = 0x08;
DDRD = 0x3A;
PORTD = 0x00;
DDRB = 0x0E;
PORTB = 0x31;
DDRC = 0x08;
PORTC = 0x08;
DDRD = 0x3A;
PORTD = 0x00;
DDRB = 0x0E;
PORTB = 0x31;
 
#if (MOTORADRESSE == 0)
PORTB |= (ADR1 + ADR2); // Pullups für Adresswahl
for(test=0;test<500;test++);
if(PINB & ADR1)
{
if (PINB & ADR2) MotorAdresse = 1;
else MotorAdresse = 2;
}
else
{
if (PINB & ADR2) MotorAdresse = 3;
else MotorAdresse = 4;
}
HwVersion = 11;
PORTB |= (ADR1 + ADR2); // Pullups für Adresswahl
for(test=0;test<500;test++);
if(PINB & ADR1)
{
if (PINB & ADR2) MotorAdresse = 1;
else MotorAdresse = 2;
}
else
{
if (PINB & ADR2) MotorAdresse = 3;
else MotorAdresse = 4;
}
HwVersion = 11;
#else
MotorAdresse = MOTORADRESSE;
HwVersion = 10;
MotorAdresse = MOTORADRESSE;
HwVersion = 10;
#endif
if(PIND & 0x80) {HwVersion = 12; IntRef = 0xc0;}
DDRD = 0xBA;
UART_Init();
Timer0_Init();
sei();//Globale Interrupts Einschalten
// Am Blinken erkennt man die richtige Motoradresse
/*
for(test=0;test<5;test++)
{
if(test == MotorAdresse) PORTD |= GRUEN;
Delay_ms(150);
PORTD &= ~GRUEN;
Delay_ms(250);
}
if(PIND & 0x80) {HwVersion = 12; IntRef = 0xc0;}
DDRD = 0xBA;
UART_Init();
Timer0_Init();
sei();//Globale Interrupts Einschalten
 
Delay_ms(500);
*/
// UART_Init(); // war doppelt
PWM_Init();
// Am Blinken erkennt man die richtige Motoradresse
/*
for(test=0;test<5;test++)
{
if(test == MotorAdresse) PORTD |= GRUEN;
Delay_ms(150);
PORTD &= ~GRUEN;
Delay_ms(250);
}
 
InitIC2_Slave(0x50);
InitPPM();
Delay_ms(500);
*/
// UART_Init(); // war doppelt
PWM_Init();
 
Blink = SetDelay(101);
Blink2 = SetDelay(102);
MinUpmPulse = SetDelay(103);
MittelstromTimer = SetDelay(254);
DrehzahlMessTimer = SetDelay(1005);
TestschubTimer = SetDelay(1006);
while(!CheckDelay(MinUpmPulse))
{
if(SollwertErmittlung()) break;
}
InitIC2_Slave(0x50);
InitPPM();
 
GRN_ON;
PWM = 0;
Blink = SetDelay(101);
Blink2 = SetDelay(102);
MinUpmPulse = SetDelay(103);
MittelstromTimer = SetDelay(254);
DrehzahlMessTimer = SetDelay(1005);
TestschubTimer = SetDelay(1006);
while(!CheckDelay(MinUpmPulse))
{
if(SollwertErmittlung()) break;
}
 
SetPWM();
GRN_ON;
PWM = 0;
 
SFIOR = 0x08; // Analog Comperator ein
ADMUX = 1;
SetPWM();
 
MinUpmPulse = SetDelay(10);
DebugOut.Analog[1] = 1;
PPM_Signal = 0;
SFIOR = 0x08; // Analog Comperator ein
ADMUX = 1;
 
if(!SollwertErmittlung()) MotorTon();
//MotorTon();
PORTB = 0x31; // Pullups wieder einschalten
MinUpmPulse = SetDelay(10);
DebugOut.Analog[1] = 1;
PPM_Signal = 0;
 
// zum Test der Hardware; Motor dreht mit konstanter Drehzahl ohne Regelung
if(TEST_MANUELL) Anwerfen(TEST_MANUELL); // kommt von dort nicht wieder
if(!SollwertErmittlung()) MotorTon();
//MotorTon();
PORTB = 0x31; // Pullups wieder einschalten
 
while (1)
{
//ShowSense();
// zum Test der Hardware; Motor dreht mit konstanter Drehzahl ohne Regelung
if(TEST_MANUELL) Anwerfen(TEST_MANUELL); // kommt von dort nicht wieder
 
if(!TEST_SCHUB) PWM = SollwertErmittlung();
//I2C_TXBuffer = PWM; // Antwort über I2C-Bus
if(MANUELL_PWM) PWM = MANUELL_PWM;
while (1)
{
//ShowSense();
 
// ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
if(Phase != altPhase) // es gab eine Kommutierung im Interrupt
{
MotorGestoppt = 0;
ZeitFuerBerechnungen = 0; // direkt nach einer Kommutierung ist Zeit
MinUpmPulse = SetDelay(250); // Timeout, falls ein Motor stehen bleibt
altPhase = Phase;
}
// ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
if(!PWM) // Sollwert == 0
{
MotorAnwerfen = 0; // kein Startversuch
ZeitFuerBerechnungen = 0;
// nach 1,5 Sekunden den Motor als gestoppt betrachten
if(CheckDelay(MotorGestopptTimer))
{
DISABLE_SENSE_INT;
MotorGestoppt = 1;
STEUER_OFF;
}
}
else
{
if(MotorGestoppt) MotorAnwerfen = 1; // Startversuch
MotorGestopptTimer = SetDelay(1500);
}
if(!TEST_SCHUB) PWM = SollwertErmittlung();
//I2C_TXBuffer = PWM; // Antwort über I2C-Bus
if(MANUELL_PWM) PWM = MANUELL_PWM;
 
if(MotorGestoppt && !TEST_SCHUB) PWM = 0;
SetPWM();
// +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
if(!ZeitFuerBerechnungen++)
{
if(MotorGestoppt)
{
GRN_ON;
FastADConvert();
}
if(SIO_DEBUG)
{
DebugAusgaben(); // welche Werte sollen angezeigt werden?
if(!UebertragungAbgeschlossen) SendUart();
else DatenUebertragung();
}
// Berechnen des Mittleren Stroms zur (langsamen) Strombegrenzung
if(CheckDelay(MittelstromTimer))
{
MittelstromTimer = SetDelay(50); // alle 50ms
if(Mittelstrom < Strom) Mittelstrom++;// Mittelwert des Stroms bilden
else if(Mittelstrom > Strom) Mittelstrom--;
if(Strom > MAX_STROM) MaxPWM -= MaxPWM / 32;
if((Mittelstrom > LIMIT_STROM))// Strom am Limit?
{
if(MaxPWM) MaxPWM--;// dann die Maximale PWM herunterfahren
PORTC |= ROT;
}
else
{
if(MaxPWM < MAX_PWM) MaxPWM++;
}
}
// ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
if(Phase != altPhase) // es gab eine Kommutierung im Interrupt
{
MotorGestoppt = 0;
ZeitFuerBerechnungen = 0; // direkt nach einer Kommutierung ist Zeit
MinUpmPulse = SetDelay(250); // Timeout, falls ein Motor stehen bleibt
altPhase = Phase;
}
// ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
if(!PWM) // Sollwert == 0
{
MotorAnwerfen = 0; // kein Startversuch
ZeitFuerBerechnungen = 0;
// nach 1,5 Sekunden den Motor als gestoppt betrachten
if(CheckDelay(MotorGestopptTimer))
{
DISABLE_SENSE_INT;
MotorGestoppt = 1;
STEUER_OFF;
}
}
else
{
if(MotorGestoppt) MotorAnwerfen = 1; // Startversuch
MotorGestopptTimer = SetDelay(1500);
}
 
if(CheckDelay(DrehzahlMessTimer)) // Ist-Drehzahl bestimmen
{
DrehzahlMessTimer = SetDelay(10);
SIO_Drehzahl = CntKommutierungen;//(6 * CntKommutierungen) / (POLANZAHL / 2);
CntKommutierungen = 0;
// if(PPM_Timeout == 0) // keine PPM-Signale
ZeitZumAdWandeln = 1;
}
if(MotorGestoppt && !TEST_SCHUB) PWM = 0;
SetPWM();
// +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
if(!ZeitFuerBerechnungen++)
{
if(MotorGestoppt)
{
GRN_ON;
FastADConvert();
}
if(SIO_DEBUG)
{
DebugAusgaben(); // welche Werte sollen angezeigt werden?
if(!UebertragungAbgeschlossen) SendUart();
else DatenUebertragung();
}
// Berechnen des Mittleren Stroms zur (langsamen) Strombegrenzung
if(CheckDelay(MittelstromTimer))
{
MittelstromTimer = SetDelay(50); // alle 50ms
if(Mittelstrom < Strom) Mittelstrom++;// Mittelwert des Stroms bilden
else if(Mittelstrom > Strom) Mittelstrom--;
if(Strom > MAX_STROM) MaxPWM -= MaxPWM / 32;
if((Mittelstrom > LIMIT_STROM))// Strom am Limit?
{
if(MaxPWM) MaxPWM--;// dann die Maximale PWM herunterfahren
PORTC |= ROT;
}
else
{
if(MaxPWM < MAX_PWM) MaxPWM++;
}
}
 
if(CheckDelay(DrehzahlMessTimer)) // Ist-Drehzahl bestimmen
{
DrehzahlMessTimer = SetDelay(10);
SIO_Drehzahl = CntKommutierungen;//(6 * CntKommutierungen) / (POLANZAHL / 2);
CntKommutierungen = 0;
// if(PPM_Timeout == 0) // keine PPM-Signale
ZeitZumAdWandeln = 1;
}
 
#if TEST_SCHUB == 1
{
if(CheckDelay(TestschubTimer))
{
TestschubTimer = SetDelay(1500);
switch(test)
{
case 0: PWM = 50; test++; break;
case 1: PWM = 130; test++; break;
case 2: PWM = 60; test++; break;
case 3: PWM = 140; test++; break;
case 4: PWM = 150; test = 0; break;
default: test = 0;
}
}
}
{
if(CheckDelay(TestschubTimer))
{
TestschubTimer = SetDelay(1500);
switch(test)
{
case 0: PWM = 50; test++; break;
case 1: PWM = 130; test++; break;
case 2: PWM = 60; test++; break;
case 3: PWM = 140; test++; break;
case 4: PWM = 150; test = 0; break;
default: test = 0;
}
}
}
#endif
// Motor Stehen geblieben
if((CheckDelay(MinUpmPulse) && SIO_Drehzahl == 0) || MotorAnwerfen)
{
MotorGestoppt = 1;
DISABLE_SENSE_INT;
MinUpmPulse = SetDelay(100);
if(MotorAnwerfen)
{
PORTC &= ~ROT;
Strom_max = 0;
MotorAnwerfen = 0;
if(Anwerfen(10))
{
GRN_ON;
MotorGestoppt = 0;
Phase--;
PWM = 1;
SetPWM();
SENSE_TOGGLE_INT;
ENABLE_SENSE_INT;
MinUpmPulse = SetDelay(20);
while(!CheckDelay(MinUpmPulse)); // kurz Synchronisieren
PWM = 15;
SetPWM();
MinUpmPulse = SetDelay(300);
while(!CheckDelay(MinUpmPulse)) // kurz Durchstarten
{
if(Strom > LIMIT_STROM/2)
{
STEUER_OFF; // Abschalten wegen Kurzschluss
RotBlink(10);
MotorAnwerfen = 1;
}
}
// Drehzahlmessung wieder aufsetzen
DrehzahlMessTimer = SetDelay(50);
altPhase = 7;
}
else if(SollwertErmittlung()) MotorAnwerfen = 1;
}
}
} // ZeitFuerBerechnungen
} // while(1) - Hauptschleife
// Motor Stehen geblieben
if((CheckDelay(MinUpmPulse) && SIO_Drehzahl == 0) || MotorAnwerfen)
{
MotorGestoppt = 1;
DISABLE_SENSE_INT;
MinUpmPulse = SetDelay(100);
if(MotorAnwerfen)
{
PORTC &= ~ROT;
Strom_max = 0;
MotorAnwerfen = 0;
if(Anwerfen(10))
{
GRN_ON;
MotorGestoppt = 0;
Phase--;
PWM = 1;
SetPWM();
SENSE_TOGGLE_INT;
ENABLE_SENSE_INT;
MinUpmPulse = SetDelay(20);
while(!CheckDelay(MinUpmPulse)); // kurz Synchronisieren
PWM = 15;
SetPWM();
MinUpmPulse = SetDelay(300);
while(!CheckDelay(MinUpmPulse)) // kurz Durchstarten
{
if(Strom > LIMIT_STROM/2)
{
STEUER_OFF; // Abschalten wegen Kurzschluss
RotBlink(10);
MotorAnwerfen = 1;
}
}
// Drehzahlmessung wieder aufsetzen
DrehzahlMessTimer = SetDelay(50);
altPhase = 7;
}
else if(SollwertErmittlung()) MotorAnwerfen = 1;
}
}
} // ZeitFuerBerechnungen
} // while(1) - Hauptschleife
}
 
/branches/V0.41-Hexa/main.lst
0,0 → 1,2273
1 .file "main.c"
2 __SREG__ = 0x3f
3 __SP_H__ = 0x3e
4 __SP_L__ = 0x3d
5 __CCP__ = 0x34
6 __tmp_reg__ = 0
7 __zero_reg__ = 1
15 .Ltext0:
16 .global SetPWM
18 SetPWM:
19 .LFB3:
20 .LM1:
21 /* prologue: function */
22 /* frame size = 0 */
23 .LM2:
24 0000 4091 0000 lds r20,PWM
25 .LVL0:
26 .LM3:
27 0004 8091 0000 lds r24,MaxPWM
28 .LVL1:
29 0008 8417 cp r24,r20
30 000a 00F4 brsh .L2
31 .LM4:
32 000c AB9A sbi 53-32,3
33 000e 482F mov r20,r24
34 .L2:
35 .LM5:
36 0010 2091 0000 lds r18,Strom
37 0014 3091 0000 lds r19,(Strom)+1
38 0018 293C cpi r18,201
39 001a 3105 cpc r19,__zero_reg__
40 001c 00F0 brlo .L3
41 .LM6:
42 001e 1BBC out (74)+1-32,__zero_reg__
43 0020 1ABC out 74-32,__zero_reg__
44 0022 19BC out (72)+1-32,__zero_reg__
45 0024 18BC out 72-32,__zero_reg__
46 0026 13BC out 67-32,__zero_reg__
47 .LM7:
48 0028 82B3 in r24,50-32
49 .LVL2:
50 002a 877C andi r24,lo8(-57)
51 002c 82BB out 50-32,r24
52 .LM8:
53 002e AB9A sbi 53-32,3
54 .LM9:
55 0030 8091 0000 lds r24,DebugOut+14
56 0034 9091 0000 lds r25,(DebugOut+14)+1
57 0038 0196 adiw r24,1
58 003a 9093 0000 sts (DebugOut+14)+1,r25
59 003e 8093 0000 sts DebugOut+14,r24
60 .LM10:
61 0042 2150 subi r18,lo8(-(-1))
62 0044 3040 sbci r19,hi8(-(-1))
63 0046 3093 0000 sts (Strom)+1,r19
64 004a 2093 0000 sts Strom,r18
65 004e 0895 ret
66 .LVL3:
67 .L3:
68 .LM11:
69 0050 842F mov r24,r20
70 .LVL4:
71 0052 90E0 ldi r25,lo8(0)
72 0054 9BBD out (74)+1-32,r25
73 0056 8ABD out 74-32,r24
74 0058 99BD out (72)+1-32,r25
75 005a 88BD out 72-32,r24
76 005c 43BD out 67-32,r20
77 005e 0895 ret
78 .LFE3:
80 .global DebugAusgaben
82 DebugAusgaben:
83 .LFB4:
84 .LM12:
85 /* prologue: function */
86 /* frame size = 0 */
87 .LM13:
88 0060 E0E0 ldi r30,lo8(DebugOut+2)
89 0062 F0E0 ldi r31,hi8(DebugOut+2)
90 0064 8091 0000 lds r24,Strom
91 0068 9091 0000 lds r25,(Strom)+1
92 006c 9093 0000 sts (DebugOut+2)+1,r25
93 0070 8093 0000 sts DebugOut+2,r24
94 .LM14:
95 0074 8091 0000 lds r24,Mittelstrom
96 0078 8093 0000 sts DebugOut+4,r24
97 007c 1382 std Z+3,__zero_reg__
98 .LM15:
99 007e 8091 0000 lds r24,SIO_Drehzahl
100 0082 9091 0000 lds r25,(SIO_Drehzahl)+1
101 0086 9093 0000 sts (DebugOut+6)+1,r25
102 008a 8093 0000 sts DebugOut+6,r24
103 .LM16:
104 008e 8091 0000 lds r24,PPM_Signal
105 0092 9091 0000 lds r25,(PPM_Signal)+1
106 0096 9093 0000 sts (DebugOut+8)+1,r25
107 009a 8093 0000 sts DebugOut+8,r24
108 .LM17:
109 009e 83B5 in r24,67-32
110 00a0 8093 0000 sts DebugOut+10,r24
111 00a4 1186 std Z+9,__zero_reg__
112 /* epilogue start */
113 .LM18:
114 00a6 0895 ret
115 .LFE4:
117 .global PWM_Init
119 PWM_Init:
120 .LFB5:
121 .LM19:
122 /* prologue: function */
123 /* frame size = 0 */
124 .LM20:
125 00a8 1BBC out (74)+1-32,__zero_reg__
126 00aa 1ABC out 74-32,__zero_reg__
127 00ac 19BC out (72)+1-32,__zero_reg__
128 00ae 18BC out 72-32,__zero_reg__
129 00b0 13BC out 67-32,__zero_reg__
130 00b2 91E0 ldi r25,lo8(1)
131 00b4 9FBD out 79-32,r25
132 00b6 81E4 ldi r24,lo8(65)
133 00b8 85BD out 69-32,r24
134 00ba 8EE0 ldi r24,lo8(14)
135 00bc 87BB out 55-32,r24
136 00be 88B3 in r24,56-32
137 00c0 817F andi r24,lo8(-15)
138 00c2 88BB out 56-32,r24
139 .LM21:
140 00c4 9EBD out 78-32,r25
141 /* epilogue start */
142 .LM22:
143 00c6 0895 ret
144 .LFE5:
146 .global Wait
148 Wait:
149 .LFB6:
150 .LM23:
151 .LVL5:
152 /* prologue: function */
153 /* frame size = 0 */
154 .LM24:
155 00c8 92B7 in r25,82-32
156 00ca 980F add r25,r24
157 .L11:
158 .LM25:
159 00cc 82B7 in r24,82-32
160 .LVL6:
161 00ce 891B sub r24,r25
162 .LVL7:
163 00d0 87FD sbrc r24,7
164 00d2 00C0 rjmp .L11
165 /* epilogue start */
166 .LM26:
167 00d4 0895 ret
168 .LFE6:
170 .global Delay
172 Delay:
173 .LFB10:
174 .LM27:
175 .LVL8:
176 /* prologue: function */
177 /* frame size = 0 */
178 00d6 00C0 rjmp .L15
179 .L16:
180 .LM28:
181 00d8 0197 sbiw r24,1
182 .LVL9:
183 .L15:
184 .LM29:
185 00da 0097 sbiw r24,0
186 00dc 01F4 brne .L16
187 .LM30:
188 00de 80E0 ldi r24,lo8(0)
189 .LVL10:
190 /* epilogue start */
191 00e0 0895 ret
192 .LFE10:
194 .global SollwertErmittlung
196 SollwertErmittlung:
197 .LFB12:
198 .LM31:
199 /* prologue: function */
200 /* frame size = 0 */
201 .LM32:
202 00e2 8091 0000 lds r24,I2C_Timeout
203 00e6 9091 0000 lds r25,(I2C_Timeout)+1
204 00ea 892B or r24,r25
205 00ec 01F0 breq .+2
206 00ee 00C0 rjmp .L19
207 .LM33:
208 00f0 8091 0000 lds r24,SIO_Timeout
209 00f4 9091 0000 lds r25,(SIO_Timeout)+1
210 00f8 892B or r24,r25
211 00fa 01F0 breq .L20
212 .LM34:
213 00fc 9091 0000 lds r25,SIO_Sollwert
214 0100 8FEF ldi r24,lo8(-1)
215 0102 989F mul r25,r24
216 0104 C001 movw r24,r0
217 0106 1124 clr r1
218 0108 68EC ldi r22,lo8(200)
219 010a 70E0 ldi r23,hi8(200)
220 010c 00D0 rcall __udivmodhi4
221 010e 7093 0000 sts (sollwert.2195)+1,r23
222 0112 6093 0000 sts sollwert.2195,r22
223 .LM35:
224 0116 1092 0000 sts PPM_Betrieb,__zero_reg__
225 .LM36:
226 011a 89B7 in r24,89-32
227 011c 8F7D andi r24,lo8(-33)
228 011e 89BF out 89-32,r24
229 0120 00C0 rjmp .L26
230 .L20:
231 .LM37:
232 0122 8091 0000 lds r24,anz_ppm_werte
233 0126 8531 cpi r24,lo8(21)
234 0128 00F0 brlo .L22
235 .LM38:
236 012a 81E0 ldi r24,lo8(1)
237 012c 8093 0000 sts PPM_Betrieb,r24
238 .LM39:
239 0130 2091 0000 lds r18,PPM_Signal
240 0134 3091 0000 lds r19,(PPM_Signal)+1
241 .LVL11:
242 .LM40:
243 0138 41E0 ldi r20,hi8(301)
244 013a 2D32 cpi r18,lo8(301)
245 013c 3407 cpc r19,r20
246 013e 00F4 brsh .L23
247 .LM41:
248 0140 293C cpi r18,201
249 0142 3105 cpc r19,__zero_reg__
250 0144 00F4 brsh .L24
251 .LM42:
252 0146 2B30 cpi r18,11
253 0148 3105 cpc r19,__zero_reg__
254 014a 00F4 brsh .L25
255 .L23:
256 014c 1092 0000 sts (sollwert.2195)+1,__zero_reg__
257 0150 1092 0000 sts sollwert.2195,__zero_reg__
258 0154 00C0 rjmp .L26
259 .L24:
260 0156 28EC ldi r18,lo8(200)
261 0158 30E0 ldi r19,hi8(200)
262 .L25:
263 .LM43:
264 015a 8CEF ldi r24,lo8(252)
265 015c 90E0 ldi r25,hi8(252)
266 015e AC01 movw r20,r24
267 0160 249F mul r18,r20
268 0162 C001 movw r24,r0
269 0164 259F mul r18,r21
270 0166 900D add r25,r0
271 0168 349F mul r19,r20
272 016a 900D add r25,r0
273 016c 1124 clr r1
274 016e 885D subi r24,lo8(-(-2520))
275 0170 9940 sbci r25,hi8(-(-2520))
276 0172 64EB ldi r22,lo8(180)
277 0174 70E0 ldi r23,hi8(180)
278 0176 00D0 rcall __udivmodhi4
279 0178 6D5F subi r22,lo8(-(3))
280 017a 7F4F sbci r23,hi8(-(3))
281 017c 7093 0000 sts (sollwert.2195)+1,r23
282 0180 6093 0000 sts sollwert.2195,r22
283 .L26:
284 .LM44:
285 0184 AB98 cbi 53-32,3
286 0186 00C0 rjmp .L21
287 .LVL12:
288 .L22:
289 .LM45:
290 0188 8091 0000 lds r24,sollwert.2195
291 018c 9091 0000 lds r25,(sollwert.2195)+1
292 0190 0097 sbiw r24,0
293 0192 01F0 breq .L27
294 0194 0197 sbiw r24,1
295 0196 9093 0000 sts (sollwert.2195)+1,r25
296 019a 8093 0000 sts sollwert.2195,r24
297 .L27:
298 .LM46:
299 019e AB9A sbi 53-32,3
300 01a0 00C0 rjmp .L21
301 .L19:
302 .LM47:
303 01a2 8091 0000 lds r24,I2C_RXBuffer
304 01a6 8093 0000 sts sollwert.2195,r24
305 01aa 1092 0000 sts sollwert.2195+1,__zero_reg__
306 .LM48:
307 01ae 1092 0000 sts PPM_Betrieb,__zero_reg__
308 .LM49:
309 01b2 AB98 cbi 53-32,3
310 .LM50:
311 01b4 89B7 in r24,89-32
312 01b6 8F7D andi r24,lo8(-33)
313 01b8 89BF out 89-32,r24
314 .LVL13:
315 .L21:
316 .LM51:
317 01ba 8091 0000 lds r24,sollwert.2195
318 01be 9091 0000 lds r25,(sollwert.2195)+1
319 01c2 8F3F cpi r24,255
320 01c4 9105 cpc r25,__zero_reg__
321 01c6 01F0 breq .L28
322 01c8 00F0 brlo .L28
323 01ca 8FEF ldi r24,lo8(255)
324 01cc 90E0 ldi r25,hi8(255)
325 01ce 9093 0000 sts (sollwert.2195)+1,r25
326 01d2 8093 0000 sts sollwert.2195,r24
327 .L28:
328 .LM52:
329 01d6 8091 0000 lds r24,sollwert.2195
330 /* epilogue start */
331 01da 0895 ret
332 .LFE12:
334 .global DelayM
336 DelayM:
337 .LFB9:
338 .LM53:
339 .LVL14:
340 01dc CF93 push r28
341 01de DF93 push r29
342 /* prologue: function */
343 /* frame size = 0 */
344 01e0 EC01 movw r28,r24
345 01e2 00C0 rjmp .L31
346 .LVL15:
347 .L33:
348 .LM54:
349 01e4 00D0 rcall FastADConvert
350 01e6 2197 sbiw r28,1
351 .LM55:
352 01e8 8091 0000 lds r24,RuheStrom
353 01ec 9091 0000 lds r25,(RuheStrom)+1
354 01f0 8858 subi r24,lo8(-(120))
355 01f2 9F4F sbci r25,hi8(-(120))
356 01f4 2091 0000 lds r18,Strom
357 01f8 3091 0000 lds r19,(Strom)+1
358 01fc 8217 cp r24,r18
359 01fe 9307 cpc r25,r19
360 0200 00F4 brsh .L31
361 .LM56:
362 0202 82B3 in r24,50-32
363 0204 877C andi r24,lo8(-57)
364 0206 82BB out 50-32,r24
365 0208 88B3 in r24,56-32
366 020a 817F andi r24,lo8(-15)
367 020c 88BB out 56-32,r24
368 020e 81E0 ldi r24,lo8(1)
369 0210 00C0 rjmp .L32
370 .LVL16:
371 .L31:
372 .LM57:
373 0212 2097 sbiw r28,0
374 0214 01F4 brne .L33
375 0216 80E0 ldi r24,lo8(0)
376 .L32:
377 /* epilogue start */
378 .LM58:
379 0218 DF91 pop r29
380 021a CF91 pop r28
381 .LVL17:
382 021c 0895 ret
383 .LFE9:
385 .global RotBlink
387 RotBlink:
388 .LFB7:
389 .LM59:
390 .LVL18:
391 021e 1F93 push r17
392 /* prologue: function */
393 /* frame size = 0 */
394 0220 182F mov r17,r24
395 .LM60:
396 /* #APP */
397 ; 149 "main.c" 1
398 0222 7894 sei
399 ; 0 "" 2
400 /* #NOAPP */
401 0224 00C0 rjmp .L37
402 .LVL19:
403 .L38:
404 .LM61:
405 0226 AB9A sbi 53-32,3
406 .LM62:
407 0228 8CE2 ldi r24,lo8(300)
408 022a 91E0 ldi r25,hi8(300)
409 022c 00D0 rcall Delay_ms
410 .LM63:
411 022e AB98 cbi 53-32,3
412 .LM64:
413 0230 8CE2 ldi r24,lo8(300)
414 0232 91E0 ldi r25,hi8(300)
415 0234 00D0 rcall Delay_ms
416 0236 1150 subi r17,lo8(-(-1))
417 .LVL20:
418 .L37:
419 .LM65:
420 0238 1123 tst r17
421 023a 01F4 brne .L38
422 .LM66:
423 023c 88EE ldi r24,lo8(1000)
424 023e 93E0 ldi r25,hi8(1000)
425 0240 00D0 rcall Delay_ms
426 /* epilogue start */
427 .LM67:
428 0242 1F91 pop r17
429 .LVL21:
430 0244 0895 ret
431 .LFE7:
433 .global MotorTon
435 MotorTon:
436 .LFB11:
437 .LM68:
438 0246 AF92 push r10
439 0248 BF92 push r11
440 024a DF92 push r13
441 024c EF92 push r14
442 024e FF92 push r15
443 0250 0F93 push r16
444 0252 1F93 push r17
445 0254 DF93 push r29
446 0256 CF93 push r28
447 0258 CDB7 in r28,__SP_L__
448 025a DEB7 in r29,__SP_H__
449 025c 2797 sbiw r28,7
450 025e 0FB6 in __tmp_reg__,__SREG__
451 0260 F894 cli
452 0262 DEBF out __SP_H__,r29
453 0264 0FBE out __SREG__,__tmp_reg__
454 0266 CDBF out __SP_L__,r28
455 /* prologue: function */
456 /* frame size = 7 */
457 .LM69:
458 0268 DE01 movw r26,r28
459 026a 1196 adiw r26,1
460 026c E0E0 ldi r30,lo8(C.19.2035)
461 026e F0E0 ldi r31,hi8(C.19.2035)
462 0270 87E0 ldi r24,lo8(7)
463 .L41:
464 0272 0190 ld r0,Z+
465 0274 0D92 st X+,r0
466 0276 8150 subi r24,lo8(-(-1))
467 0278 01F4 brne .L41
468 .LM70:
469 027a AB98 cbi 53-32,3
470 .LM71:
471 027c 8091 0000 lds r24,MotorAdresse
472 0280 FE01 movw r30,r28
473 0282 E80F add r30,r24
474 0284 F11D adc r31,__zero_reg__
475 0286 8181 ldd r24,Z+1
476 0288 90E0 ldi r25,lo8(0)
477 028a 2CE2 ldi r18,lo8(300)
478 028c 31E0 ldi r19,hi8(300)
479 028e AC01 movw r20,r24
480 0290 429F mul r20,r18
481 0292 C001 movw r24,r0
482 0294 439F mul r20,r19
483 0296 900D add r25,r0
484 0298 529F mul r21,r18
485 029a 900D add r25,r0
486 029c 1124 clr r1
487 029e 00D0 rcall Delay_ms
488 .LM72:
489 02a0 1092 0000 sts CompInterruptFreigabe,__zero_reg__
490 02a4 4398 cbi 40-32,3
491 .LM73:
492 /* #APP */
493 ; 277 "main.c" 1
494 02a6 F894 cli
495 ; 0 "" 2
496 .LM74:
497 /* #NOAPP */
498 02a8 8AE0 ldi r24,lo8(10)
499 02aa 00D0 rcall uart_putchar
500 .LM75:
501 02ac 82B3 in r24,50-32
502 02ae 877C andi r24,lo8(-57)
503 02b0 82BB out 50-32,r24
504 02b2 1BBC out (74)+1-32,__zero_reg__
505 02b4 1ABC out 74-32,__zero_reg__
506 02b6 19BC out (72)+1-32,__zero_reg__
507 02b8 18BC out 72-32,__zero_reg__
508 02ba 13BC out 67-32,__zero_reg__
509 02bc 81E0 ldi r24,lo8(1)
510 02be 8FBD out 79-32,r24
511 02c0 81E4 ldi r24,lo8(65)
512 02c2 85BD out 69-32,r24
513 02c4 8EE0 ldi r24,lo8(14)
514 02c6 87BB out 55-32,r24
515 02c8 88B3 in r24,56-32
516 02ca 817F andi r24,lo8(-15)
517 02cc 88BB out 56-32,r24
518 .LM76:
519 02ce 1092 0000 sts Strom_max,__zero_reg__
520 .LM77:
521 02d2 82E3 ldi r24,lo8(50)
522 02d4 90E0 ldi r25,hi8(50)
523 02d6 00D0 rcall DelayM
524 .LM78:
525 02d8 8091 0000 lds r24,Strom_max
526 02dc 8093 0000 sts RuheStrom,r24
527 02e0 1092 0000 sts RuheStrom+1,__zero_reg__
528 .LM79:
529 02e4 1092 0000 sts (Strom)+1,__zero_reg__
530 02e8 1092 0000 sts Strom,__zero_reg__
531 .LM80:
532 02ec 8CB1 in r24,44-32
533 02ee 8032 cpi r24,lo8(32)
534 02f0 01F0 breq .L42
535 02f2 38EE ldi r19,lo8(1000)
536 02f4 E32E mov r14,r19
537 02f6 33E0 ldi r19,hi8(1000)
538 02f8 F32E mov r15,r19
539 .LVL22:
540 02fa 82E3 ldi r24,lo8(50)
541 .LVL23:
542 02fc 00C0 rjmp .L43
543 .LVL24:
544 .L42:
545 02fe 8FE5 ldi r24,lo8(95)
546 0300 00D0 rcall uart_putchar
547 0302 EE24 clr r14
548 0304 EA94 dec r14
549 0306 FE2C mov r15,r14
550 .LVL25:
551 0308 88E2 ldi r24,lo8(40)
552 .LVL26:
553 .L43:
554 .LM81:
555 030a 1092 0000 sts (Strom)+1,__zero_reg__
556 030e 1092 0000 sts Strom,__zero_reg__
557 0312 00E0 ldi r16,lo8(0)
558 0314 10E0 ldi r17,hi8(0)
559 .LVL27:
560 .LM82:
561 0316 A82E mov r10,r24
562 0318 BB24 clr r11
563 .L45:
564 .LM83:
565 031a 939A sbi 50-32,3
566 .LM84:
567 031c 81E0 ldi r24,lo8(1)
568 031e 90E0 ldi r25,hi8(1)
569 .LVL28:
570 0320 00D0 rcall DelayM
571 .LM85:
572 0322 82B3 in r24,50-32
573 0324 877C andi r24,lo8(-57)
574 0326 82BB out 50-32,r24
575 0328 88B3 in r24,56-32
576 032a 817F andi r24,lo8(-15)
577 032c 88BB out 56-32,r24
578 .LBB46:
579 .LBB47:
580 .LM86:
581 .LBE47:
582 .LBE46:
583 .LM87:
584 032e C39A sbi 56-32,3
585 .LM88:
586 0330 81E0 ldi r24,lo8(1)
587 0332 90E0 ldi r25,hi8(1)
588 0334 00D0 rcall DelayM
589 .LM89:
590 0336 82B3 in r24,50-32
591 0338 877C andi r24,lo8(-57)
592 033a 82BB out 50-32,r24
593 033c 88B3 in r24,56-32
594 033e 817F andi r24,lo8(-15)
595 0340 88BB out 56-32,r24
596 .LM90:
597 0342 8091 0000 lds r24,RuheStrom
598 0346 9091 0000 lds r25,(RuheStrom)+1
599 034a 8A0D add r24,r10
600 034c 9B1D adc r25,r11
601 034e 2091 0000 lds r18,Strom
602 0352 3091 0000 lds r19,(Strom)+1
603 0356 8217 cp r24,r18
604 0358 9307 cpc r25,r19
605 035a 00F0 brlo .L44
606 .LBB48:
607 .LBB49:
608 .LM91:
609 .LBE49:
610 .LBE48:
611 .LM92:
612 035c 0F5F subi r16,lo8(-(1))
613 035e 1F4F sbci r17,hi8(-(1))
614 0360 0E15 cp r16,r14
615 0362 1F05 cpc r17,r15
616 0364 00F0 brlo .L45
617 0366 DD24 clr r13
618 .LVL29:
619 0368 00C0 rjmp .L46
620 .LVL30:
621 .L44:
622 .LM93:
623 036a 84E3 ldi r24,lo8(52)
624 036c 00D0 rcall uart_putchar
625 036e 82B3 in r24,50-32
626 0370 877C andi r24,lo8(-57)
627 0372 82BB out 50-32,r24
628 0374 88B3 in r24,56-32
629 0376 817F andi r24,lo8(-15)
630 0378 88BB out 56-32,r24
631 037a 24E0 ldi r18,lo8(4)
632 037c D22E mov r13,r18
633 .LVL31:
634 .L46:
635 037e 80E1 ldi r24,lo8(10000)
636 0380 97E2 ldi r25,hi8(10000)
637 .LVL32:
638 0382 00C0 rjmp .L47
639 .L48:
640 .LBB50:
641 .LBB51:
642 .LM94:
643 .L47:
644 .LM95:
645 0384 0197 sbiw r24,1
646 0386 5FEF ldi r21,hi8(-1)
647 0388 8F3F cpi r24,lo8(-1)
648 038a 9507 cpc r25,r21
649 038c 01F4 brne .L48
650 .LBE51:
651 .LBE50:
652 .LM96:
653 038e 1092 0000 sts (Strom)+1,__zero_reg__
654 0392 1092 0000 sts Strom,__zero_reg__
655 0396 00E0 ldi r16,lo8(0)
656 0398 10E0 ldi r17,hi8(0)
657 .LVL33:
658 .L50:
659 .LM97:
660 039a 949A sbi 50-32,4
661 .LM98:
662 039c 81E0 ldi r24,lo8(1)
663 039e 90E0 ldi r25,hi8(1)
664 .LVL34:
665 03a0 00D0 rcall DelayM
666 .LM99:
667 03a2 82B3 in r24,50-32
668 03a4 877C andi r24,lo8(-57)
669 03a6 82BB out 50-32,r24
670 03a8 88B3 in r24,56-32
671 03aa 817F andi r24,lo8(-15)
672 03ac 88BB out 56-32,r24
673 .LBB52:
674 .LBB53:
675 .LM100:
676 .LBE53:
677 .LBE52:
678 .LM101:
679 03ae C29A sbi 56-32,2
680 .LM102:
681 03b0 81E0 ldi r24,lo8(1)
682 03b2 90E0 ldi r25,hi8(1)
683 03b4 00D0 rcall DelayM
684 .LM103:
685 03b6 82B3 in r24,50-32
686 03b8 877C andi r24,lo8(-57)
687 03ba 82BB out 50-32,r24
688 03bc 88B3 in r24,56-32
689 03be 817F andi r24,lo8(-15)
690 03c0 88BB out 56-32,r24
691 .LM104:
692 03c2 8091 0000 lds r24,RuheStrom
693 03c6 9091 0000 lds r25,(RuheStrom)+1
694 03ca 8A0D add r24,r10
695 03cc 9B1D adc r25,r11
696 03ce 2091 0000 lds r18,Strom
697 03d2 3091 0000 lds r19,(Strom)+1
698 03d6 8217 cp r24,r18
699 03d8 9307 cpc r25,r19
700 03da 00F0 brlo .L49
701 .LBB54:
702 .LBB55:
703 .LM105:
704 .LBE55:
705 .LBE54:
706 .LM106:
707 03dc 0F5F subi r16,lo8(-(1))
708 03de 1F4F sbci r17,hi8(-(1))
709 03e0 0E15 cp r16,r14
710 03e2 1F05 cpc r17,r15
711 03e4 00F0 brlo .L50
712 03e6 00C0 rjmp .L51
713 .L49:
714 .LM107:
715 03e8 85E3 ldi r24,lo8(53)
716 03ea 00D0 rcall uart_putchar
717 03ec 82B3 in r24,50-32
718 03ee 877C andi r24,lo8(-57)
719 03f0 82BB out 50-32,r24
720 03f2 88B3 in r24,56-32
721 03f4 817F andi r24,lo8(-15)
722 03f6 88BB out 56-32,r24
723 03f8 95E0 ldi r25,lo8(5)
724 03fa D92E mov r13,r25
725 .L51:
726 .LM108:
727 03fc 1092 0000 sts (Strom)+1,__zero_reg__
728 0400 1092 0000 sts Strom,__zero_reg__
729 0404 80E1 ldi r24,lo8(10000)
730 0406 97E2 ldi r25,hi8(10000)
731 .LVL35:
732 0408 00C0 rjmp .L52
733 .L53:
734 .LBB56:
735 .LBB57:
736 .LM109:
737 .L52:
738 .LM110:
739 040a 0197 sbiw r24,1
740 040c 2FEF ldi r18,hi8(-1)
741 040e 8F3F cpi r24,lo8(-1)
742 0410 9207 cpc r25,r18
743 0412 01F4 brne .L53
744 0414 00E0 ldi r16,lo8(0)
745 0416 10E0 ldi r17,hi8(0)
746 .LVL36:
747 .L55:
748 .LBE57:
749 .LBE56:
750 .LM111:
751 0418 959A sbi 50-32,5
752 .LM112:
753 041a 81E0 ldi r24,lo8(1)
754 041c 90E0 ldi r25,hi8(1)
755 .LVL37:
756 041e 00D0 rcall DelayM
757 .LM113:
758 0420 82B3 in r24,50-32
759 0422 877C andi r24,lo8(-57)
760 0424 82BB out 50-32,r24
761 0426 88B3 in r24,56-32
762 0428 817F andi r24,lo8(-15)
763 042a 88BB out 56-32,r24
764 .LBB58:
765 .LBB59:
766 .LM114:
767 .LBE59:
768 .LBE58:
769 .LM115:
770 042c C19A sbi 56-32,1
771 .LM116:
772 042e 81E0 ldi r24,lo8(1)
773 0430 90E0 ldi r25,hi8(1)
774 0432 00D0 rcall DelayM
775 .LM117:
776 0434 82B3 in r24,50-32
777 0436 877C andi r24,lo8(-57)
778 0438 82BB out 50-32,r24
779 043a 88B3 in r24,56-32
780 043c 817F andi r24,lo8(-15)
781 043e 88BB out 56-32,r24
782 .LM118:
783 0440 8091 0000 lds r24,RuheStrom
784 0444 9091 0000 lds r25,(RuheStrom)+1
785 0448 8A0D add r24,r10
786 044a 9B1D adc r25,r11
787 044c 2091 0000 lds r18,Strom
788 0450 3091 0000 lds r19,(Strom)+1
789 0454 8217 cp r24,r18
790 0456 9307 cpc r25,r19
791 0458 00F0 brlo .L54
792 .LBB60:
793 .LBB61:
794 .LM119:
795 .LBE61:
796 .LBE60:
797 .LM120:
798 045a 0F5F subi r16,lo8(-(1))
799 045c 1F4F sbci r17,hi8(-(1))
800 045e 0E15 cp r16,r14
801 0460 1F05 cpc r17,r15
802 0462 00F0 brlo .L55
803 0464 00C0 rjmp .L110
804 .L54:
805 .LM121:
806 0466 86E3 ldi r24,lo8(54)
807 0468 00D0 rcall uart_putchar
808 046a 82B3 in r24,50-32
809 046c 877C andi r24,lo8(-57)
810 046e 82BB out 50-32,r24
811 0470 88B3 in r24,56-32
812 0472 817F andi r24,lo8(-15)
813 0474 88BB out 56-32,r24
814 0476 86E0 ldi r24,lo8(6)
815 0478 D82E mov r13,r24
816 047a 00C0 rjmp .L108
817 .L110:
818 .LM122:
819 047c DD20 tst r13
820 047e 01F0 breq .L58
821 .L108:
822 0480 8D2D mov r24,r13
823 0482 00D0 rcall RotBlink
824 0484 00C0 rjmp .L108
825 .L58:
826 .LM123:
827 0486 8091 0000 lds r24,IntRef
828 048a 87B9 out 39-32,r24
829 .LM124:
830 048c 82B3 in r24,50-32
831 048e 877C andi r24,lo8(-57)
832 0490 82BB out 50-32,r24
833 0492 88B3 in r24,56-32
834 0494 817F andi r24,lo8(-15)
835 0496 88BB out 56-32,r24
836 .LM125:
837 0498 949A sbi 50-32,4
838 .LM126:
839 049a 959A sbi 50-32,5
840 .LM127:
841 049c 1092 0000 sts (Strom)+1,__zero_reg__
842 04a0 1092 0000 sts Strom,__zero_reg__
843 04a4 00E0 ldi r16,lo8(0)
844 04a6 10E0 ldi r17,hi8(0)
845 .LVL38:
846 04a8 FF24 clr r15
847 .LVL39:
848 .L63:
849 .LM128:
850 04aa C39A sbi 56-32,3
851 .LBB62:
852 .LBB63:
853 .LM129:
854 .LBE63:
855 .LBE62:
856 .LM130:
857 04ac 80E0 ldi r24,lo8(0)
858 .LVL40:
859 04ae 00D0 rcall MessAD
860 04b0 C397 sbiw r24,51
861 04b2 00F0 brlo .L59
862 04b4 41E0 ldi r20,lo8(1)
863 04b6 F42A or r15,r20
864 04b8 00C0 rjmp .L60
865 .L59:
866 04ba 5EEF ldi r21,lo8(-2)
867 04bc F522 and r15,r21
868 .L60:
869 .LM131:
870 04be 18BA out 56-32,__zero_reg__
871 04c0 8CE2 ldi r24,lo8(300)
872 04c2 91E0 ldi r25,hi8(300)
873 .LVL41:
874 04c4 00C0 rjmp .L61
875 .L62:
876 .LBB64:
877 .LBB65:
878 .LM132:
879 .L61:
880 .LM133:
881 04c6 0197 sbiw r24,1
882 04c8 2FEF ldi r18,hi8(-1)
883 04ca 8F3F cpi r24,lo8(-1)
884 04cc 9207 cpc r25,r18
885 04ce 01F4 brne .L62
886 .LBE65:
887 .LBE64:
888 .LM134:
889 04d0 0F5F subi r16,lo8(-(1))
890 04d2 1F4F sbci r17,hi8(-(1))
891 04d4 0937 cpi r16,121
892 04d6 1105 cpc r17,__zero_reg__
893 04d8 01F4 brne .L63
894 .LM135:
895 04da 82B3 in r24,50-32
896 .LVL42:
897 04dc 877C andi r24,lo8(-57)
898 04de 82BB out 50-32,r24
899 04e0 88B3 in r24,56-32
900 04e2 817F andi r24,lo8(-15)
901 04e4 88BB out 56-32,r24
902 .LM136:
903 04e6 939A sbi 50-32,3
904 .LM137:
905 04e8 959A sbi 50-32,5
906 04ea 00E0 ldi r16,lo8(0)
907 04ec 10E0 ldi r17,hi8(0)
908 .LVL43:
909 .L68:
910 .LM138:
911 04ee C29A sbi 56-32,2
912 .LBB66:
913 .LBB67:
914 .LM139:
915 .LBE67:
916 .LBE66:
917 .LM140:
918 04f0 81E0 ldi r24,lo8(1)
919 .LVL44:
920 04f2 00D0 rcall MessAD
921 04f4 C397 sbiw r24,51
922 04f6 00F0 brlo .L64
923 04f8 42E0 ldi r20,lo8(2)
924 04fa F42A or r15,r20
925 04fc 00C0 rjmp .L65
926 .L64:
927 04fe 5DEF ldi r21,lo8(-3)
928 0500 F522 and r15,r21
929 .L65:
930 .LM141:
931 0502 18BA out 56-32,__zero_reg__
932 0504 8CE2 ldi r24,lo8(300)
933 0506 91E0 ldi r25,hi8(300)
934 .LVL45:
935 0508 00C0 rjmp .L66
936 .L67:
937 .LBB68:
938 .LBB69:
939 .LM142:
940 .L66:
941 .LM143:
942 050a 0197 sbiw r24,1
943 050c 2FEF ldi r18,hi8(-1)
944 050e 8F3F cpi r24,lo8(-1)
945 0510 9207 cpc r25,r18
946 0512 01F4 brne .L67
947 .LBE69:
948 .LBE68:
949 .LM144:
950 0514 0F5F subi r16,lo8(-(1))
951 0516 1F4F sbci r17,hi8(-(1))
952 0518 0538 cpi r16,133
953 051a 1105 cpc r17,__zero_reg__
954 051c 01F4 brne .L68
955 .LM145:
956 051e 82B3 in r24,50-32
957 .LVL46:
958 0520 877C andi r24,lo8(-57)
959 0522 82BB out 50-32,r24
960 0524 88B3 in r24,56-32
961 0526 817F andi r24,lo8(-15)
962 0528 88BB out 56-32,r24
963 .LM146:
964 052a 939A sbi 50-32,3
965 .LM147:
966 052c 949A sbi 50-32,4
967 052e 00E0 ldi r16,lo8(0)
968 0530 10E0 ldi r17,hi8(0)
969 .LVL47:
970 .L73:
971 .LM148:
972 0532 C19A sbi 56-32,1
973 .LBB70:
974 .LBB71:
975 .LM149:
976 .LBE71:
977 .LBE70:
978 .LM150:
979 0534 82E0 ldi r24,lo8(2)
980 .LVL48:
981 0536 00D0 rcall MessAD
982 0538 C397 sbiw r24,51
983 053a 00F0 brlo .L69
984 053c 44E0 ldi r20,lo8(4)
985 053e F42A or r15,r20
986 0540 00C0 rjmp .L70
987 .L69:
988 0542 5BEF ldi r21,lo8(-5)
989 0544 F522 and r15,r21
990 .L70:
991 .LM151:
992 0546 18BA out 56-32,__zero_reg__
993 0548 8AE4 ldi r24,lo8(330)
994 054a 91E0 ldi r25,hi8(330)
995 .LVL49:
996 054c 00C0 rjmp .L71
997 .L72:
998 .LBB72:
999 .LBB73:
1000 .LM152:
1001 .L71:
1002 .LM153:
1003 054e 0197 sbiw r24,1
1004 0550 2FEF ldi r18,hi8(-1)
1005 0552 8F3F cpi r24,lo8(-1)
1006 0554 9207 cpc r25,r18
1007 0556 01F4 brne .L72
1008 .LBE73:
1009 .LBE72:
1010 .LM154:
1011 0558 0F5F subi r16,lo8(-(1))
1012 055a 1F4F sbci r17,hi8(-(1))
1013 055c 0F36 cpi r16,111
1014 055e 1105 cpc r17,__zero_reg__
1015 0560 01F4 brne .L73
1016 .LM155:
1017 0562 82B3 in r24,50-32
1018 .LVL50:
1019 0564 877C andi r24,lo8(-57)
1020 0566 82BB out 50-32,r24
1021 0568 88B3 in r24,56-32
1022 056a 817F andi r24,lo8(-15)
1023 056c 88BB out 56-32,r24
1024 .LM156:
1025 056e 939A sbi 50-32,3
1026 0570 00E0 ldi r16,lo8(0)
1027 0572 10E0 ldi r17,hi8(0)
1028 .LVL51:
1029 .L78:
1030 .LM157:
1031 0574 C29A sbi 56-32,2
1032 .LBB74:
1033 .LBB75:
1034 .LM158:
1035 .LBE75:
1036 .LBE74:
1037 .LM159:
1038 0576 80E0 ldi r24,lo8(0)
1039 .LVL52:
1040 0578 00D0 rcall MessAD
1041 057a 8138 cpi r24,129
1042 057c 9105 cpc r25,__zero_reg__
1043 057e 00F0 brlo .L74
1044 0580 47EF ldi r20,lo8(-9)
1045 0582 F422 and r15,r20
1046 0584 00C0 rjmp .L75
1047 .L74:
1048 0586 58E0 ldi r21,lo8(8)
1049 0588 F52A or r15,r21
1050 .L75:
1051 .LM160:
1052 058a 18BA out 56-32,__zero_reg__
1053 058c 8AE4 ldi r24,lo8(330)
1054 058e 91E0 ldi r25,hi8(330)
1055 .LVL53:
1056 0590 00C0 rjmp .L76
1057 .L77:
1058 .LBB76:
1059 .LBB77:
1060 .LM161:
1061 .L76:
1062 .LM162:
1063 0592 0197 sbiw r24,1
1064 0594 2FEF ldi r18,hi8(-1)
1065 0596 8F3F cpi r24,lo8(-1)
1066 0598 9207 cpc r25,r18
1067 059a 01F4 brne .L77
1068 .LBE77:
1069 .LBE76:
1070 .LM163:
1071 059c 0F5F subi r16,lo8(-(1))
1072 059e 1F4F sbci r17,hi8(-(1))
1073 05a0 0937 cpi r16,121
1074 05a2 1105 cpc r17,__zero_reg__
1075 05a4 01F4 brne .L78
1076 .LM164:
1077 05a6 959A sbi 50-32,5
1078 05a8 00E0 ldi r16,lo8(0)
1079 05aa 10E0 ldi r17,hi8(0)
1080 .LVL54:
1081 .L83:
1082 .LM165:
1083 05ac C29A sbi 56-32,2
1084 .LBB78:
1085 .LBB79:
1086 .LM166:
1087 .LBE79:
1088 .LBE78:
1089 .LM167:
1090 05ae 82E0 ldi r24,lo8(2)
1091 .LVL55:
1092 05b0 00D0 rcall MessAD
1093 05b2 8138 cpi r24,129
1094 05b4 9105 cpc r25,__zero_reg__
1095 05b6 00F0 brlo .L79
1096 05b8 4FED ldi r20,lo8(-33)
1097 05ba F422 and r15,r20
1098 05bc 00C0 rjmp .L80
1099 .L79:
1100 05be 50E2 ldi r21,lo8(32)
1101 05c0 F52A or r15,r21
1102 .L80:
1103 .LM168:
1104 05c2 18BA out 56-32,__zero_reg__
1105 05c4 88E6 ldi r24,lo8(360)
1106 05c6 91E0 ldi r25,hi8(360)
1107 .LVL56:
1108 05c8 00C0 rjmp .L81
1109 .L82:
1110 .LBB80:
1111 .LBB81:
1112 .LM169:
1113 .L81:
1114 .LM170:
1115 05ca 0197 sbiw r24,1
1116 05cc 2FEF ldi r18,hi8(-1)
1117 05ce 8F3F cpi r24,lo8(-1)
1118 05d0 9207 cpc r25,r18
1119 05d2 01F4 brne .L82
1120 .LBE81:
1121 .LBE80:
1122 .LM171:
1123 05d4 0F5F subi r16,lo8(-(1))
1124 05d6 1F4F sbci r17,hi8(-(1))
1125 05d8 0538 cpi r16,133
1126 05da 1105 cpc r17,__zero_reg__
1127 05dc 01F4 brne .L83
1128 .LM172:
1129 05de 82B3 in r24,50-32
1130 .LVL57:
1131 05e0 877C andi r24,lo8(-57)
1132 05e2 82BB out 50-32,r24
1133 05e4 88B3 in r24,56-32
1134 05e6 817F andi r24,lo8(-15)
1135 05e8 88BB out 56-32,r24
1136 .LM173:
1137 05ea 82B3 in r24,50-32
1138 05ec 877C andi r24,lo8(-57)
1139 05ee 82BB out 50-32,r24
1140 05f0 88B3 in r24,56-32
1141 05f2 817F andi r24,lo8(-15)
1142 05f4 88BB out 56-32,r24
1143 .LM174:
1144 05f6 949A sbi 50-32,4
1145 05f8 00E0 ldi r16,lo8(0)
1146 05fa 10E0 ldi r17,hi8(0)
1147 .LVL58:
1148 .L88:
1149 .LM175:
1150 05fc C19A sbi 56-32,1
1151 .LBB82:
1152 .LBB83:
1153 .LM176:
1154 .LBE83:
1155 .LBE82:
1156 .LM177:
1157 05fe 81E0 ldi r24,lo8(1)
1158 .LVL59:
1159 0600 00D0 rcall MessAD
1160 0602 8138 cpi r24,129
1161 0604 9105 cpc r25,__zero_reg__
1162 0606 00F0 brlo .L84
1163 0608 4FEE ldi r20,lo8(-17)
1164 060a F422 and r15,r20
1165 060c 00C0 rjmp .L85
1166 .L84:
1167 060e 50E1 ldi r21,lo8(16)
1168 0610 F52A or r15,r21
1169 .L85:
1170 .LM178:
1171 0612 18BA out 56-32,__zero_reg__
1172 0614 88E6 ldi r24,lo8(360)
1173 0616 91E0 ldi r25,hi8(360)
1174 .LVL60:
1175 0618 00C0 rjmp .L86
1176 .L87:
1177 .LBB84:
1178 .LBB85:
1179 .LM179:
1180 .L86:
1181 .LM180:
1182 061a 0197 sbiw r24,1
1183 061c 2FEF ldi r18,hi8(-1)
1184 061e 8F3F cpi r24,lo8(-1)
1185 0620 9207 cpc r25,r18
1186 0622 01F4 brne .L87
1187 .LBE85:
1188 .LBE84:
1189 .LM181:
1190 0624 0F5F subi r16,lo8(-(1))
1191 0626 1F4F sbci r17,hi8(-(1))
1192 0628 0F36 cpi r16,111
1193 062a 1105 cpc r17,__zero_reg__
1194 062c 01F4 brne .L88
1195 .LM182:
1196 062e 82B3 in r24,50-32
1197 .LVL61:
1198 0630 877C andi r24,lo8(-57)
1199 0632 82BB out 50-32,r24
1200 0634 88B3 in r24,56-32
1201 0636 817F andi r24,lo8(-15)
1202 0638 88BB out 56-32,r24
1203 .LM183:
1204 /* #APP */
1205 ; 468 "main.c" 1
1206 063a 7894 sei
1207 ; 0 "" 2
1208 .LM184:
1209 /* #NOAPP */
1210 063c 8091 0000 lds r24,MotorAdresse
1211 0640 FE01 movw r30,r28
1212 0642 E80F add r30,r24
1213 0644 F11D adc r31,__zero_reg__
1214 0646 2181 ldd r18,Z+1
1215 0648 83E0 ldi r24,lo8(3)
1216 064a 90E0 ldi r25,hi8(3)
1217 064c 821B sub r24,r18
1218 064e 9109 sbc r25,__zero_reg__
1219 0650 2CE2 ldi r18,lo8(300)
1220 0652 31E0 ldi r19,hi8(300)
1221 0654 AC01 movw r20,r24
1222 0656 429F mul r20,r18
1223 0658 C001 movw r24,r0
1224 065a 439F mul r20,r19
1225 065c 900D add r25,r0
1226 065e 529F mul r21,r18
1227 0660 900D add r25,r0
1228 0662 1124 clr r1
1229 0664 00D0 rcall Delay_ms
1230 .LM185:
1231 0666 F0FC sbrc r15,0
1232 0668 00C0 rjmp .L89
1233 .LVL62:
1234 066a 81E4 ldi r24,lo8(65)
1235 066c 8CB9 out 44-32,r24
1236 066e 11E0 ldi r17,lo8(1)
1237 .LVL63:
1238 0670 00C0 rjmp .L109
1239 .LVL64:
1240 .L89:
1241 .LM186:
1242 0672 F1FC sbrc r15,1
1243 0674 00C0 rjmp .L91
1244 0676 82E4 ldi r24,lo8(66)
1245 0678 8CB9 out 44-32,r24
1246 067a 12E0 ldi r17,lo8(2)
1247 .LVL65:
1248 067c 00C0 rjmp .L109
1249 .LVL66:
1250 .L91:
1251 .LM187:
1252 067e F2FC sbrc r15,2
1253 0680 00C0 rjmp .L92
1254 0682 83E4 ldi r24,lo8(67)
1255 0684 8CB9 out 44-32,r24
1256 0686 13E0 ldi r17,lo8(3)
1257 .LVL67:
1258 0688 00C0 rjmp .L109
1259 .LVL68:
1260 .L92:
1261 .LM188:
1262 068a F3FC sbrc r15,3
1263 068c 00C0 rjmp .L93
1264 068e 81E6 ldi r24,lo8(97)
1265 0690 8CB9 out 44-32,r24
1266 0692 14E0 ldi r17,lo8(4)
1267 .LVL69:
1268 0694 00C0 rjmp .L109
1269 .LVL70:
1270 .L93:
1271 .LM189:
1272 0696 F4FC sbrc r15,4
1273 0698 00C0 rjmp .L94
1274 069a 82E6 ldi r24,lo8(98)
1275 069c 8CB9 out 44-32,r24
1276 069e 15E0 ldi r17,lo8(5)
1277 .LVL71:
1278 06a0 00C0 rjmp .L109
1279 .LVL72:
1280 .L94:
1281 .LM190:
1282 06a2 F5FC sbrc r15,5
1283 06a4 00C0 rjmp .L95
1284 06a6 83E6 ldi r24,lo8(99)
1285 06a8 8CB9 out 44-32,r24
1286 06aa 16E0 ldi r17,lo8(6)
1287 .LVL73:
1288 .L109:
1289 .LM191:
1290 06ac 812F mov r24,r17
1291 06ae 00D0 rcall RotBlink
1292 06b0 00C0 rjmp .L109
1293 .LVL74:
1294 .L95:
1295 .LM192:
1296 06b2 80E0 ldi r24,lo8(0)
1297 06b4 00D0 rcall RotBlink
1298 .LM193:
1299 06b6 8EE2 ldi r24,lo8(46)
1300 06b8 00D0 rcall uart_putchar
1301 /* epilogue start */
1302 .LM194:
1303 06ba 2796 adiw r28,7
1304 06bc 0FB6 in __tmp_reg__,__SREG__
1305 06be F894 cli
1306 06c0 DEBF out __SP_H__,r29
1307 06c2 0FBE out __SREG__,__tmp_reg__
1308 06c4 CDBF out __SP_L__,r28
1309 06c6 CF91 pop r28
1310 06c8 DF91 pop r29
1311 06ca 1F91 pop r17
1312 06cc 0F91 pop r16
1313 .LVL75:
1314 06ce FF90 pop r15
1315 06d0 EF90 pop r14
1316 .LVL76:
1317 06d2 DF90 pop r13
1318 .LVL77:
1319 06d4 BF90 pop r11
1320 06d6 AF90 pop r10
1321 06d8 0895 ret
1322 .LFE11:
1324 .global Anwerfen
1326 Anwerfen:
1327 .LFB8:
1328 .LM195:
1329 .LVL78:
1330 06da 6F92 push r6
1331 06dc 7F92 push r7
1332 06de 9F92 push r9
1333 06e0 AF92 push r10
1334 06e2 BF92 push r11
1335 06e4 CF92 push r12
1336 06e6 DF92 push r13
1337 06e8 EF92 push r14
1338 06ea FF92 push r15
1339 06ec 0F93 push r16
1340 06ee 1F93 push r17
1341 06f0 CF93 push r28
1342 06f2 DF93 push r29
1343 /* prologue: function */
1344 /* frame size = 0 */
1345 06f4 982E mov r9,r24
1346 .LM196:
1347 06f6 1092 0000 sts CompInterruptFreigabe,__zero_reg__
1348 06fa 4398 cbi 40-32,3
1349 .LM197:
1350 06fc 85E0 ldi r24,lo8(5)
1351 06fe 90E0 ldi r25,hi8(5)
1352 .LVL79:
1353 0700 9093 0000 sts (PWM)+1,r25
1354 0704 8093 0000 sts PWM,r24
1355 .LM198:
1356 0708 00D0 rcall SetPWM
1357 .LM199:
1358 070a 00D0 rcall Manuell
1359 .LM200:
1360 070c 8CE2 ldi r24,lo8(300)
1361 070e 91E0 ldi r25,hi8(300)
1362 0710 00D0 rcall SetDelay
1363 0712 9093 0000 sts (MinUpmPulse)+1,r25
1364 0716 8093 0000 sts MinUpmPulse,r24
1365 071a 00C0 rjmp .L112
1366 .L114:
1367 .LM201:
1368 071c 00D0 rcall FastADConvert
1369 .LM202:
1370 071e 8091 0000 lds r24,Strom
1371 0722 9091 0000 lds r25,(Strom)+1
1372 0726 8937 cpi r24,121
1373 0728 9105 cpc r25,__zero_reg__
1374 072a 00F0 brlo .+2
1375 072c 00C0 rjmp .L129
1376 .L112:
1377 .LM203:
1378 072e 8091 0000 lds r24,MinUpmPulse
1379 0732 9091 0000 lds r25,(MinUpmPulse)+1
1380 0736 00D0 rcall CheckDelay
1381 0738 8823 tst r24
1382 073a 01F0 breq .L114
1383 .LM204:
1384 073c 9092 0000 sts PWM,r9
1385 0740 1092 0000 sts PWM+1,__zero_reg__
1386 0744 5CE2 ldi r21,lo8(300)
1387 0746 A52E mov r10,r21
1388 0748 51E0 ldi r21,hi8(300)
1389 074a B52E mov r11,r21
1390 074c C12C mov r12,__zero_reg__
1391 074e D12C mov r13,__zero_reg__
1392 .LVL80:
1393 .LBB86:
1394 .LBB87:
1395 .LM205:
1396 0750 C0E0 ldi r28,lo8(DebugOut+4)
1397 0752 D0E0 ldi r29,hi8(DebugOut+4)
1398 .LM206:
1399 0754 46E0 ldi r20,lo8(6)
1400 0756 642E mov r6,r20
1401 0758 712C mov r7,__zero_reg__
1402 075a 6C0E add r6,r28
1403 075c 7D1E adc r7,r29
1404 .LVL81:
1405 .L128:
1406 .LBE87:
1407 .LBE86:
1408 .LM207:
1409 075e EE24 clr r14
1410 0760 FF24 clr r15
1411 0762 8701 movw r16,r14
1412 .LVL82:
1413 .L118:
1414 .LM208:
1415 0764 8091 0000 lds r24,UebertragungAbgeschlossen
1416 0768 8823 tst r24
1417 076a 01F4 brne .L115
1418 076c 00D0 rcall SendUart
1419 .LVL83:
1420 076e 00C0 rjmp .L116
1421 .LVL84:
1422 .L115:
1423 .LM209:
1424 0770 00D0 rcall DatenUebertragung
1425 .LVL85:
1426 .L116:
1427 .LBB89:
1428 .LBB90:
1429 .LM210:
1430 0772 82B7 in r24,82-32
1431 0774 8C59 subi r24,lo8(-(100))
1432 .LM211:
1433 0776 982F mov r25,r24
1434 .LVL86:
1435 .L117:
1436 0778 82B7 in r24,82-32
1437 077a 891B sub r24,r25
1438 077c 87FD sbrc r24,7
1439 077e 00C0 rjmp .L117
1440 .LBE90:
1441 .LBE89:
1442 .LM212:
1443 0780 0894 sec
1444 0782 E11C adc r14,__zero_reg__
1445 0784 F11C adc r15,__zero_reg__
1446 0786 011D adc r16,__zero_reg__
1447 0788 111D adc r17,__zero_reg__
1448 078a EA14 cp r14,r10
1449 078c FB04 cpc r15,r11
1450 078e 0C05 cpc r16,r12
1451 0790 1D05 cpc r17,r13
1452 0792 00F0 brlo .L118
1453 .LBB91:
1454 .LBB88:
1455 .LM213:
1456 0794 8091 0000 lds r24,Strom
1457 0798 9091 0000 lds r25,(Strom)+1
1458 079c 9093 0000 sts (DebugOut+2)+1,r25
1459 07a0 8093 0000 sts DebugOut+2,r24
1460 .LM214:
1461 07a4 8091 0000 lds r24,Mittelstrom
1462 07a8 8093 0000 sts DebugOut+4,r24
1463 07ac 1982 std Y+1,__zero_reg__
1464 .LM215:
1465 07ae 8091 0000 lds r24,SIO_Drehzahl
1466 07b2 9091 0000 lds r25,(SIO_Drehzahl)+1
1467 07b6 9093 0000 sts (DebugOut+6)+1,r25
1468 07ba 8093 0000 sts DebugOut+6,r24
1469 .LM216:
1470 07be 8091 0000 lds r24,PPM_Signal
1471 07c2 9091 0000 lds r25,(PPM_Signal)+1
1472 07c6 9093 0000 sts (DebugOut+8)+1,r25
1473 07ca 8093 0000 sts DebugOut+8,r24
1474 .LM217:
1475 07ce 83B5 in r24,67-32
1476 07d0 8093 0000 sts DebugOut+10,r24
1477 07d4 F301 movw r30,r6
1478 07d6 1182 std Z+1,__zero_reg__
1479 .LBE88:
1480 .LBE91:
1481 .LM218:
1482 07d8 00D0 rcall FastADConvert
1483 .LVL87:
1484 .LM219:
1485 07da 8091 0000 lds r24,Strom
1486 07de 9091 0000 lds r25,(Strom)+1
1487 07e2 CD97 sbiw r24,61
1488 07e4 00F0 brlo .L119
1489 .L129:
1490 .LM220:
1491 07e6 82B3 in r24,50-32
1492 07e8 877C andi r24,lo8(-57)
1493 07ea 82BB out 50-32,r24
1494 07ec 1BBC out (74)+1-32,__zero_reg__
1495 07ee 1ABC out 74-32,__zero_reg__
1496 07f0 19BC out (72)+1-32,__zero_reg__
1497 07f2 18BC out 72-32,__zero_reg__
1498 07f4 13BC out 67-32,__zero_reg__
1499 07f6 81E0 ldi r24,lo8(1)
1500 07f8 8FBD out 79-32,r24
1501 07fa 81E4 ldi r24,lo8(65)
1502 07fc 85BD out 69-32,r24
1503 07fe 8EE0 ldi r24,lo8(14)
1504 0800 87BB out 55-32,r24
1505 0802 88B3 in r24,56-32
1506 0804 817F andi r24,lo8(-15)
1507 0806 88BB out 56-32,r24
1508 .LM221:
1509 0808 8AE0 ldi r24,lo8(10)
1510 080a 00D0 rcall RotBlink
1511 080c 80E0 ldi r24,lo8(0)
1512 080e 00C0 rjmp .L113
1513 .L119:
1514 .LM222:
1515 0810 C601 movw r24,r12
1516 0812 B501 movw r22,r10
1517 0814 2FE0 ldi r18,lo8(15)
1518 0816 30E0 ldi r19,hi8(15)
1519 0818 40E0 ldi r20,hlo8(15)
1520 081a 50E0 ldi r21,hhi8(15)
1521 081c 00D0 rcall __udivmodsi4
1522 081e 2095 com r18
1523 0820 3095 com r19
1524 0822 4095 com r20
1525 0824 5095 com r21
1526 0826 A20E add r10,r18
1527 0828 B31E adc r11,r19
1528 082a C41E adc r12,r20
1529 082c D51E adc r13,r21
1530 .LM223:
1531 082e F9E1 ldi r31,lo8(25)
1532 0830 AF16 cp r10,r31
1533 0832 B104 cpc r11,__zero_reg__
1534 0834 C104 cpc r12,__zero_reg__
1535 0836 D104 cpc r13,__zero_reg__
1536 0838 00F0 brlo .L120
1537 .LM224:
1538 083a 00D0 rcall Manuell
1539 .LM225:
1540 083c 8091 0000 lds r24,Phase
1541 0840 8F5F subi r24,lo8(-(1))
1542 0842 8093 0000 sts Phase,r24
1543 .LM226:
1544 0846 8091 0000 lds r24,Phase
1545 084a 66E0 ldi r22,lo8(6)
1546 084c 00D0 rcall __udivmodqi4
1547 084e 9093 0000 sts Phase,r25
1548 .LM227:
1549 0852 00D0 rcall AdConvert
1550 .LM228:
1551 0854 9092 0000 sts PWM,r9
1552 0858 1092 0000 sts PWM+1,__zero_reg__
1553 .LM229:
1554 085c 00D0 rcall SetPWM
1555 .LM230:
1556 085e 449B sbis 40-32,4
1557 0860 00C0 rjmp .L128
1558 .LM231:
1559 0862 82B3 in r24,50-32
1560 0864 8058 subi r24,lo8(-(-128))
1561 0866 82BB out 50-32,r24
1562 0868 00C0 rjmp .L128
1563 .L120:
1564 086a 81E0 ldi r24,lo8(1)
1565 .L113:
1566 /* epilogue start */
1567 .LM232:
1568 086c DF91 pop r29
1569 086e CF91 pop r28
1570 0870 1F91 pop r17
1571 0872 0F91 pop r16
1572 0874 FF90 pop r15
1573 0876 EF90 pop r14
1574 .LVL88:
1575 0878 DF90 pop r13
1576 087a CF90 pop r12
1577 087c BF90 pop r11
1578 087e AF90 pop r10
1579 .LVL89:
1580 0880 9F90 pop r9
1581 .LVL90:
1582 0882 7F90 pop r7
1583 0884 6F90 pop r6
1584 0886 0895 ret
1585 .LFE8:
1587 .global main
1589 main:
1590 .LFB13:
1591 .LM233:
1592 0888 5F92 push r5
1593 088a 6F92 push r6
1594 088c 7F92 push r7
1595 088e 8F92 push r8
1596 0890 9F92 push r9
1597 0892 AF92 push r10
1598 0894 BF92 push r11
1599 0896 CF92 push r12
1600 0898 DF92 push r13
1601 089a EF92 push r14
1602 089c FF92 push r15
1603 089e 0F93 push r16
1604 08a0 1F93 push r17
1605 08a2 CF93 push r28
1606 08a4 DF93 push r29
1607 /* prologue: function */
1608 /* frame size = 0 */
1609 .LM234:
1610 08a6 88E0 ldi r24,lo8(8)
1611 08a8 84BB out 52-32,r24
1612 .LM235:
1613 08aa 85BB out 53-32,r24
1614 .LM236:
1615 08ac 8AE3 ldi r24,lo8(58)
1616 08ae 81BB out 49-32,r24
1617 .LM237:
1618 08b0 12BA out 50-32,__zero_reg__
1619 .LM238:
1620 08b2 8EE0 ldi r24,lo8(14)
1621 08b4 87BB out 55-32,r24
1622 .LM239:
1623 08b6 81E3 ldi r24,lo8(49)
1624 08b8 88BB out 56-32,r24
1625 .LM240:
1626 08ba 88B3 in r24,56-32
1627 08bc 806C ori r24,lo8(-64)
1628 08be 88BB out 56-32,r24
1629 .LM241:
1630 08c0 B69B sbis 54-32,6
1631 08c2 00C0 rjmp .L131
1632 .LM242:
1633 08c4 B79B sbis 54-32,7
1634 08c6 00C0 rjmp .L132
1635 08c8 81E0 ldi r24,lo8(1)
1636 08ca 00C0 rjmp .L172
1637 .L132:
1638 .LM243:
1639 08cc 82E0 ldi r24,lo8(2)
1640 08ce 00C0 rjmp .L172
1641 .L131:
1642 .LM244:
1643 08d0 B79B sbis 54-32,7
1644 08d2 00C0 rjmp .L134
1645 08d4 83E0 ldi r24,lo8(3)
1646 08d6 00C0 rjmp .L172
1647 .L134:
1648 .LM245:
1649 08d8 84E0 ldi r24,lo8(4)
1650 .L172:
1651 08da 8093 0000 sts MotorAdresse,r24
1652 .LM246:
1653 08de 8BE0 ldi r24,lo8(11)
1654 08e0 8093 0000 sts HwVersion,r24
1655 .LM247:
1656 08e4 879B sbis 48-32,7
1657 08e6 00C0 rjmp .L135
1658 08e8 8CE0 ldi r24,lo8(12)
1659 08ea 8093 0000 sts HwVersion,r24
1660 08ee 80EC ldi r24,lo8(-64)
1661 08f0 8093 0000 sts IntRef,r24
1662 .L135:
1663 .LM248:
1664 08f4 8AEB ldi r24,lo8(-70)
1665 08f6 81BB out 49-32,r24
1666 .LM249:
1667 08f8 00D0 rcall UART_Init
1668 .LM250:
1669 08fa 00D0 rcall Timer0_Init
1670 .LM251:
1671 /* #APP */
1672 ; 583 "main.c" 1
1673 08fc 7894 sei
1674 ; 0 "" 2
1675 .LM252:
1676 /* #NOAPP */
1677 08fe 00D0 rcall PWM_Init
1678 .LM253:
1679 0900 80E5 ldi r24,lo8(80)
1680 0902 00D0 rcall InitIC2_Slave
1681 .LM254:
1682 0904 00D0 rcall InitPPM
1683 .LM255:
1684 0906 85E6 ldi r24,lo8(101)
1685 0908 90E0 ldi r25,hi8(101)
1686 090a 00D0 rcall SetDelay
1687 .LM256:
1688 090c 86E6 ldi r24,lo8(102)
1689 090e 90E0 ldi r25,hi8(102)
1690 0910 00D0 rcall SetDelay
1691 .LM257:
1692 0912 87E6 ldi r24,lo8(103)
1693 0914 90E0 ldi r25,hi8(103)
1694 0916 00D0 rcall SetDelay
1695 0918 9093 0000 sts (MinUpmPulse)+1,r25
1696 091c 8093 0000 sts MinUpmPulse,r24
1697 .LM258:
1698 0920 8EEF ldi r24,lo8(254)
1699 0922 90E0 ldi r25,hi8(254)
1700 0924 00D0 rcall SetDelay
1701 0926 6C01 movw r12,r24
1702 .LVL91:
1703 .LM259:
1704 0928 8DEE ldi r24,lo8(1005)
1705 092a 93E0 ldi r25,hi8(1005)
1706 092c 00D0 rcall SetDelay
1707 092e EC01 movw r28,r24
1708 .LVL92:
1709 .LM260:
1710 0930 8EEE ldi r24,lo8(1006)
1711 0932 93E0 ldi r25,hi8(1006)
1712 0934 00D0 rcall SetDelay
1713 0936 00C0 rjmp .L136
1714 .L138:
1715 .LM261:
1716 0938 00D0 rcall SollwertErmittlung
1717 093a 8823 tst r24
1718 093c 01F4 brne .L137
1719 .L136:
1720 .LM262:
1721 093e 8091 0000 lds r24,MinUpmPulse
1722 0942 9091 0000 lds r25,(MinUpmPulse)+1
1723 0946 00D0 rcall CheckDelay
1724 0948 8823 tst r24
1725 094a 01F0 breq .L138
1726 .L137:
1727 .LM263:
1728 094c 8091 0000 lds r24,HwVersion
1729 0950 8C30 cpi r24,lo8(12)
1730 0952 00F4 brsh .L139
1731 0954 979A sbi 50-32,7
1732 0956 00C0 rjmp .L140
1733 .L139:
1734 0958 9798 cbi 50-32,7
1735 .L140:
1736 .LM264:
1737 095a 1092 0000 sts (PWM)+1,__zero_reg__
1738 095e 1092 0000 sts PWM,__zero_reg__
1739 .LM265:
1740 0962 00D0 rcall SetPWM
1741 .LM266:
1742 0964 88E0 ldi r24,lo8(8)
1743 0966 80BF out 80-32,r24
1744 .LM267:
1745 0968 81E0 ldi r24,lo8(1)
1746 096a 87B9 out 39-32,r24
1747 .LM268:
1748 096c 8AE0 ldi r24,lo8(10)
1749 096e 90E0 ldi r25,hi8(10)
1750 0970 00D0 rcall SetDelay
1751 0972 9093 0000 sts (MinUpmPulse)+1,r25
1752 0976 8093 0000 sts MinUpmPulse,r24
1753 .LM269:
1754 097a 81E0 ldi r24,lo8(1)
1755 097c 90E0 ldi r25,hi8(1)
1756 097e 9093 0000 sts (DebugOut+4)+1,r25
1757 0982 8093 0000 sts DebugOut+4,r24
1758 .LM270:
1759 0986 1092 0000 sts (PPM_Signal)+1,__zero_reg__
1760 098a 1092 0000 sts PPM_Signal,__zero_reg__
1761 .LM271:
1762 098e 00D0 rcall SollwertErmittlung
1763 0990 8823 tst r24
1764 0992 01F4 brne .L141
1765 0994 00D0 rcall MotorTon
1766 .L141:
1767 .LM272:
1768 0996 81E3 ldi r24,lo8(49)
1769 0998 88BB out 56-32,r24
1770 099a 10E0 ldi r17,lo8(0)
1771 .LVL93:
1772 .LM273:
1773 099c FF24 clr r15
1774 099e F394 inc r15
1775 .LM274:
1776 09a0 F1E4 ldi r31,lo8(65)
1777 09a2 EF2E mov r14,r31
1778 09a4 EEE0 ldi r30,lo8(14)
1779 09a6 5E2E mov r5,r30
1780 .LM275:
1781 09a8 71E0 ldi r23,lo8(1)
1782 09aa 672E mov r6,r23
1783 09ac 712C mov r7,__zero_reg__
1784 .LM276:
1785 09ae 6FE0 ldi r22,lo8(15)
1786 09b0 862E mov r8,r22
1787 09b2 912C mov r9,__zero_reg__
1788 09b4 00C0 rjmp .L142
1789 .LVL94:
1790 .L148:
1791 .LM277:
1792 09b6 102F mov r17,r16
1793 .LVL95:
1794 .L142:
1795 .LM278:
1796 09b8 00D0 rcall SollwertErmittlung
1797 09ba 8093 0000 sts PWM,r24
1798 09be 1092 0000 sts PWM+1,__zero_reg__
1799 .LM279:
1800 09c2 0091 0000 lds r16,Phase
1801 .LVL96:
1802 09c6 0117 cp r16,r17
1803 09c8 01F0 breq .L143
1804 .LVL97:
1805 .LM280:
1806 09ca 1092 0000 sts MotorGestoppt,__zero_reg__
1807 .LM281:
1808 09ce 1092 0000 sts ZeitFuerBerechnungen,__zero_reg__
1809 .LM282:
1810 09d2 8AEF ldi r24,lo8(250)
1811 09d4 90E0 ldi r25,hi8(250)
1812 09d6 00D0 rcall SetDelay
1813 09d8 9093 0000 sts (MinUpmPulse)+1,r25
1814 09dc 8093 0000 sts MinUpmPulse,r24
1815 .LM283:
1816 09e0 0091 0000 lds r16,Phase
1817 .LVL98:
1818 .L143:
1819 .LM284:
1820 09e4 8091 0000 lds r24,PWM
1821 09e8 9091 0000 lds r25,(PWM)+1
1822 09ec 892B or r24,r25
1823 09ee 01F4 brne .L144
1824 .LM285:
1825 09f0 1092 0000 sts MotorAnwerfen,__zero_reg__
1826 .LM286:
1827 09f4 1092 0000 sts ZeitFuerBerechnungen,__zero_reg__
1828 .LM287:
1829 09f8 C501 movw r24,r10
1830 09fa 00D0 rcall CheckDelay
1831 09fc 8823 tst r24
1832 09fe 01F0 breq .L145
1833 .LM288:
1834 0a00 1092 0000 sts CompInterruptFreigabe,__zero_reg__
1835 0a04 4398 cbi 40-32,3
1836 .LM289:
1837 0a06 F092 0000 sts MotorGestoppt,r15
1838 .LM290:
1839 0a0a 82B3 in r24,50-32
1840 0a0c 877C andi r24,lo8(-57)
1841 0a0e 82BB out 50-32,r24
1842 0a10 1BBC out (74)+1-32,__zero_reg__
1843 0a12 1ABC out 74-32,__zero_reg__
1844 0a14 19BC out (72)+1-32,__zero_reg__
1845 0a16 18BC out 72-32,__zero_reg__
1846 0a18 13BC out 67-32,__zero_reg__
1847 0a1a FFBC out 79-32,r15
1848 0a1c E5BC out 69-32,r14
1849 0a1e 57BA out 55-32,r5
1850 0a20 88B3 in r24,56-32
1851 0a22 817F andi r24,lo8(-15)
1852 0a24 88BB out 56-32,r24
1853 0a26 00C0 rjmp .L145
1854 .L144:
1855 .LM291:
1856 0a28 8091 0000 lds r24,MotorGestoppt
1857 0a2c 8823 tst r24
1858 0a2e 01F0 breq .L146
1859 0a30 F092 0000 sts MotorAnwerfen,r15
1860 .L146:
1861 .LM292:
1862 0a34 8CED ldi r24,lo8(1500)
1863 0a36 95E0 ldi r25,hi8(1500)
1864 0a38 00D0 rcall SetDelay
1865 0a3a 5C01 movw r10,r24
1866 .L145:
1867 .LM293:
1868 0a3c 8091 0000 lds r24,MotorGestoppt
1869 0a40 8823 tst r24
1870 0a42 01F0 breq .L147
1871 0a44 1092 0000 sts (PWM)+1,__zero_reg__
1872 0a48 1092 0000 sts PWM,__zero_reg__
1873 .L147:
1874 .LM294:
1875 0a4c 00D0 rcall SetPWM
1876 .LM295:
1877 0a4e 8091 0000 lds r24,ZeitFuerBerechnungen
1878 0a52 8F5F subi r24,lo8(-(1))
1879 0a54 8093 0000 sts ZeitFuerBerechnungen,r24
1880 0a58 8150 subi r24,lo8(-(-1))
1881 0a5a 01F0 breq .+2
1882 0a5c 00C0 rjmp .L148
1883 .LM296:
1884 0a5e 8091 0000 lds r24,MotorGestoppt
1885 0a62 8823 tst r24
1886 0a64 01F0 breq .L149
1887 .LM297:
1888 0a66 8091 0000 lds r24,HwVersion
1889 0a6a 8C30 cpi r24,lo8(12)
1890 0a6c 00F4 brsh .L150
1891 0a6e 979A sbi 50-32,7
1892 0a70 00C0 rjmp .L151
1893 .L150:
1894 0a72 9798 cbi 50-32,7
1895 .L151:
1896 .LM298:
1897 0a74 00D0 rcall FastADConvert
1898 .L149:
1899 .LM299:
1900 0a76 C601 movw r24,r12
1901 0a78 00D0 rcall CheckDelay
1902 0a7a 8823 tst r24
1903 0a7c 01F0 breq .L152
1904 .LM300:
1905 0a7e 82E3 ldi r24,lo8(50)
1906 0a80 90E0 ldi r25,hi8(50)
1907 0a82 00D0 rcall SetDelay
1908 0a84 6C01 movw r12,r24
1909 .LM301:
1910 0a86 8091 0000 lds r24,Mittelstrom
1911 0a8a 482F mov r20,r24
1912 0a8c 50E0 ldi r21,lo8(0)
1913 0a8e 2091 0000 lds r18,Strom
1914 0a92 3091 0000 lds r19,(Strom)+1
1915 0a96 4217 cp r20,r18
1916 0a98 5307 cpc r21,r19
1917 0a9a 00F4 brsh .L153
1918 0a9c 8F5F subi r24,lo8(-(1))
1919 0a9e 00C0 rjmp .L173
1920 .L153:
1921 .LM302:
1922 0aa0 2417 cp r18,r20
1923 0aa2 3507 cpc r19,r21
1924 0aa4 00F4 brsh .L154
1925 0aa6 8150 subi r24,lo8(-(-1))
1926 .L173:
1927 0aa8 8093 0000 sts Mittelstrom,r24
1928 .L154:
1929 .LM303:
1930 0aac 293C cpi r18,201
1931 0aae 3105 cpc r19,__zero_reg__
1932 0ab0 00F0 brlo .L155
1933 0ab2 8091 0000 lds r24,MaxPWM
1934 0ab6 982F mov r25,r24
1935 0ab8 9295 swap r25
1936 0aba 9695 lsr r25
1937 0abc 9770 andi r25,lo8(7)
1938 0abe 891B sub r24,r25
1939 0ac0 8093 0000 sts MaxPWM,r24
1940 .L155:
1941 .LM304:
1942 0ac4 8091 0000 lds r24,Mittelstrom
1943 0ac8 9091 0000 lds r25,MaxPWM
1944 0acc 8937 cpi r24,lo8(121)
1945 0ace 00F0 brlo .L156
1946 .LM305:
1947 0ad0 9923 tst r25
1948 0ad2 01F0 breq .L157
1949 0ad4 9150 subi r25,lo8(-(-1))
1950 0ad6 9093 0000 sts MaxPWM,r25
1951 .L157:
1952 .LM306:
1953 0ada AB9A sbi 53-32,3
1954 0adc 00C0 rjmp .L152
1955 .L156:
1956 .LM307:
1957 0ade 9F3F cpi r25,lo8(-1)
1958 0ae0 01F0 breq .L152
1959 0ae2 9F5F subi r25,lo8(-(1))
1960 0ae4 9093 0000 sts MaxPWM,r25
1961 .L152:
1962 .LM308:
1963 0ae8 CE01 movw r24,r28
1964 0aea 00D0 rcall CheckDelay
1965 0aec 8823 tst r24
1966 0aee 01F0 breq .L158
1967 .LM309:
1968 0af0 8AE0 ldi r24,lo8(10)
1969 0af2 90E0 ldi r25,hi8(10)
1970 0af4 00D0 rcall SetDelay
1971 0af6 EC01 movw r28,r24
1972 .LM310:
1973 0af8 8091 0000 lds r24,CntKommutierungen
1974 0afc 9091 0000 lds r25,(CntKommutierungen)+1
1975 0b00 9093 0000 sts (SIO_Drehzahl)+1,r25
1976 0b04 8093 0000 sts SIO_Drehzahl,r24
1977 .LM311:
1978 0b08 1092 0000 sts (CntKommutierungen)+1,__zero_reg__
1979 0b0c 1092 0000 sts CntKommutierungen,__zero_reg__
1980 .LM312:
1981 0b10 F092 0000 sts ZeitZumAdWandeln,r15
1982 .L158:
1983 .LM313:
1984 0b14 8091 0000 lds r24,MinUpmPulse
1985 0b18 9091 0000 lds r25,(MinUpmPulse)+1
1986 0b1c 00D0 rcall CheckDelay
1987 0b1e 8823 tst r24
1988 0b20 01F0 breq .L159
1989 0b22 8091 0000 lds r24,SIO_Drehzahl
1990 0b26 9091 0000 lds r25,(SIO_Drehzahl)+1
1991 0b2a 892B or r24,r25
1992 0b2c 01F0 breq .L160
1993 .L159:
1994 0b2e 8091 0000 lds r24,MotorAnwerfen
1995 0b32 8823 tst r24
1996 0b34 01F4 brne .+2
1997 0b36 00C0 rjmp .L148
1998 .L160:
1999 .LM314:
2000 0b38 F092 0000 sts MotorGestoppt,r15
2001 .LM315:
2002 0b3c 1092 0000 sts CompInterruptFreigabe,__zero_reg__
2003 0b40 4398 cbi 40-32,3
2004 .LM316:
2005 0b42 84E6 ldi r24,lo8(100)
2006 0b44 90E0 ldi r25,hi8(100)
2007 0b46 00D0 rcall SetDelay
2008 0b48 9093 0000 sts (MinUpmPulse)+1,r25
2009 0b4c 8093 0000 sts MinUpmPulse,r24
2010 .LM317:
2011 0b50 8091 0000 lds r24,MotorAnwerfen
2012 0b54 8823 tst r24
2013 0b56 01F4 brne .+2
2014 0b58 00C0 rjmp .L148
2015 .LM318:
2016 0b5a AB98 cbi 53-32,3
2017 .LM319:
2018 0b5c 1092 0000 sts Strom_max,__zero_reg__
2019 .LM320:
2020 0b60 1092 0000 sts MotorAnwerfen,__zero_reg__
2021 .LM321:
2022 0b64 8AE0 ldi r24,lo8(10)
2023 0b66 00D0 rcall Anwerfen
2024 0b68 8823 tst r24
2025 0b6a 01F4 brne .+2
2026 0b6c 00C0 rjmp .L161
2027 .LM322:
2028 0b6e 8091 0000 lds r24,HwVersion
2029 0b72 8C30 cpi r24,lo8(12)
2030 0b74 00F4 brsh .L162
2031 0b76 979A sbi 50-32,7
2032 0b78 00C0 rjmp .L163
2033 .L162:
2034 0b7a 9798 cbi 50-32,7
2035 .L163:
2036 .LM323:
2037 0b7c 1092 0000 sts MotorGestoppt,__zero_reg__
2038 .LM324:
2039 0b80 8091 0000 lds r24,Phase
2040 0b84 8150 subi r24,lo8(-(-1))
2041 0b86 8093 0000 sts Phase,r24
2042 .LM325:
2043 0b8a 7092 0000 sts (PWM)+1,r7
2044 0b8e 6092 0000 sts PWM,r6
2045 .LM326:
2046 0b92 00D0 rcall SetPWM
2047 .LM327:
2048 0b94 88B1 in r24,40-32
2049 0b96 8C7F andi r24,lo8(-4)
2050 0b98 88B9 out 40-32,r24
2051 .LM328:
2052 0b9a F092 0000 sts CompInterruptFreigabe,r15
2053 0b9e 88B1 in r24,40-32
2054 0ba0 8A60 ori r24,lo8(10)
2055 0ba2 88B9 out 40-32,r24
2056 .LM329:
2057 0ba4 84E1 ldi r24,lo8(20)
2058 0ba6 90E0 ldi r25,hi8(20)
2059 0ba8 00D0 rcall SetDelay
2060 0baa 9093 0000 sts (MinUpmPulse)+1,r25
2061 0bae 8093 0000 sts MinUpmPulse,r24
2062 .L164:
2063 .LM330:
2064 0bb2 8091 0000 lds r24,MinUpmPulse
2065 0bb6 9091 0000 lds r25,(MinUpmPulse)+1
2066 0bba 00D0 rcall CheckDelay
2067 0bbc 8823 tst r24
2068 0bbe 01F0 breq .L164
2069 .LM331:
2070 0bc0 9092 0000 sts (PWM)+1,r9
2071 0bc4 8092 0000 sts PWM,r8
2072 .LM332:
2073 0bc8 00D0 rcall SetPWM
2074 .LM333:
2075 0bca 8CE2 ldi r24,lo8(300)
2076 0bcc 91E0 ldi r25,hi8(300)
2077 0bce 00D0 rcall SetDelay
2078 0bd0 9093 0000 sts (MinUpmPulse)+1,r25
2079 0bd4 8093 0000 sts MinUpmPulse,r24
2080 0bd8 00C0 rjmp .L171
2081 .L166:
2082 .LM334:
2083 0bda 8091 0000 lds r24,Strom
2084 0bde 9091 0000 lds r25,(Strom)+1
2085 0be2 CD97 sbiw r24,61
2086 0be4 00F0 brlo .L171
2087 .LM335:
2088 0be6 82B3 in r24,50-32
2089 0be8 877C andi r24,lo8(-57)
2090 0bea 82BB out 50-32,r24
2091 0bec 1BBC out (74)+1-32,__zero_reg__
2092 0bee 1ABC out 74-32,__zero_reg__
2093 0bf0 19BC out (72)+1-32,__zero_reg__
2094 0bf2 18BC out 72-32,__zero_reg__
2095 0bf4 13BC out 67-32,__zero_reg__
2096 0bf6 FFBC out 79-32,r15
2097 0bf8 E5BC out 69-32,r14
2098 0bfa 57BA out 55-32,r5
2099 0bfc 88B3 in r24,56-32
2100 0bfe 817F andi r24,lo8(-15)
2101 0c00 88BB out 56-32,r24
2102 .LM336:
2103 0c02 8AE0 ldi r24,lo8(10)
2104 0c04 00D0 rcall RotBlink
2105 .LM337:
2106 0c06 F092 0000 sts MotorAnwerfen,r15
2107 .L171:
2108 .LM338:
2109 0c0a 8091 0000 lds r24,MinUpmPulse
2110 0c0e 9091 0000 lds r25,(MinUpmPulse)+1
2111 0c12 00D0 rcall CheckDelay
2112 0c14 8823 tst r24
2113 0c16 01F0 breq .L166
2114 .LM339:
2115 0c18 82E3 ldi r24,lo8(50)
2116 0c1a 90E0 ldi r25,hi8(50)
2117 0c1c 00D0 rcall SetDelay
2118 0c1e EC01 movw r28,r24
2119 0c20 07E0 ldi r16,lo8(7)
2120 0c22 00C0 rjmp .L148
2121 .LVL99:
2122 .L161:
2123 .LM340:
2124 0c24 00D0 rcall SollwertErmittlung
2125 0c26 8823 tst r24
2126 0c28 01F4 brne .+2
2127 0c2a 00C0 rjmp .L148
2128 0c2c F092 0000 sts MotorAnwerfen,r15
2129 0c30 00C0 rjmp .L148
2130 .LFE13:
2132 .global PWM
2133 .global PWM
2134 .section .bss
2137 PWM:
2138 0000 0000 .skip 2,0
2139 .global Strom
2140 .global Strom
2143 Strom:
2144 0002 0000 .skip 2,0
2145 .global Strom_max
2146 .global Strom_max
2149 Strom_max:
2150 0004 00 .skip 1,0
2151 .global Mittelstrom
2152 .global Mittelstrom
2155 Mittelstrom:
2156 0005 00 .skip 1,0
2157 .global Drehzahl
2158 .global Drehzahl
2161 Drehzahl:
2162 0006 0000 .skip 2,0
2163 .global KommutierDelay
2164 .data
2167 KommutierDelay:
2168 0000 0A00 .word 10
2169 .global I2C_Timeout
2170 .global I2C_Timeout
2171 .section .bss
2174 I2C_Timeout:
2175 0008 0000 .skip 2,0
2176 .global SIO_Timeout
2177 .global SIO_Timeout
2180 SIO_Timeout:
2181 000a 0000 .skip 2,0
2182 .global SollDrehzahl
2183 .global SollDrehzahl
2186 SollDrehzahl:
2187 000c 0000 .skip 2,0
2188 .global IstDrehzahl
2189 .global IstDrehzahl
2192 IstDrehzahl:
2193 000e 0000 .skip 2,0
2194 .global ZeitFuerBerechnungen
2195 .data
2198 ZeitFuerBerechnungen:
2199 0002 01 .byte 1
2200 .global MotorAnwerfen
2201 .global MotorAnwerfen
2202 .section .bss
2205 MotorAnwerfen:
2206 0010 00 .skip 1,0
2207 .global MotorGestoppt
2208 .data
2211 MotorGestoppt:
2212 0003 01 .byte 1
2213 .global MaxPWM
2216 MaxPWM:
2217 0004 FF .byte -1
2218 .global CntKommutierungen
2219 .global CntKommutierungen
2220 .section .bss
2223 CntKommutierungen:
2224 0011 0000 .skip 2,0
2225 .global SIO_Drehzahl
2226 .global SIO_Drehzahl
2229 SIO_Drehzahl:
2230 0013 0000 .skip 2,0
2231 .global ZeitZumAdWandeln
2232 .data
2235 ZeitZumAdWandeln:
2236 0005 01 .byte 1
2237 .global MotorAdresse
2240 MotorAdresse:
2241 0006 01 .byte 1
2242 .global PPM_Betrieb
2245 PPM_Betrieb:
2246 0007 01 .byte 1
2247 .global IntRef
2248 .global IntRef
2249 .section .bss
2252 IntRef:
2253 0015 00 .skip 1,0
2254 .lcomm sollwert.2195,2
2255 .data
2258 C.19.2035:
2259 0008 00 .byte 0
2260 0009 00 .byte 0
2261 000a 00 .byte 0
2262 000b 01 .byte 1
2263 000c 01 .byte 1
2264 000d 02 .byte 2
2265 000e 02 .byte 2
2266 .comm HwVersion,1,1
2267 .comm RuheStrom,2,1
2268 .comm DrehZahlTabelle,512,1
2269 .comm MinUpmPulse,2,1
2374 .Letext0:
DEFINED SYMBOLS
*ABS*:00000000 main.c
C:\DOCUME~1\ADMINI~1\LOCALS~1\Temp/ccInFYjF.s:2 *ABS*:0000003f __SREG__
C:\DOCUME~1\ADMINI~1\LOCALS~1\Temp/ccInFYjF.s:3 *ABS*:0000003e __SP_H__
C:\DOCUME~1\ADMINI~1\LOCALS~1\Temp/ccInFYjF.s:4 *ABS*:0000003d __SP_L__
C:\DOCUME~1\ADMINI~1\LOCALS~1\Temp/ccInFYjF.s:5 *ABS*:00000034 __CCP__
C:\DOCUME~1\ADMINI~1\LOCALS~1\Temp/ccInFYjF.s:6 *ABS*:00000000 __tmp_reg__
C:\DOCUME~1\ADMINI~1\LOCALS~1\Temp/ccInFYjF.s:7 *ABS*:00000001 __zero_reg__
C:\DOCUME~1\ADMINI~1\LOCALS~1\Temp/ccInFYjF.s:18 .text:00000000 SetPWM
C:\DOCUME~1\ADMINI~1\LOCALS~1\Temp/ccInFYjF.s:2137 .bss:00000000 PWM
C:\DOCUME~1\ADMINI~1\LOCALS~1\Temp/ccInFYjF.s:2216 .data:00000004 MaxPWM
C:\DOCUME~1\ADMINI~1\LOCALS~1\Temp/ccInFYjF.s:2143 .bss:00000002 Strom
C:\DOCUME~1\ADMINI~1\LOCALS~1\Temp/ccInFYjF.s:82 .text:00000060 DebugAusgaben
C:\DOCUME~1\ADMINI~1\LOCALS~1\Temp/ccInFYjF.s:2155 .bss:00000005 Mittelstrom
C:\DOCUME~1\ADMINI~1\LOCALS~1\Temp/ccInFYjF.s:2229 .bss:00000013 SIO_Drehzahl
C:\DOCUME~1\ADMINI~1\LOCALS~1\Temp/ccInFYjF.s:119 .text:000000a8 PWM_Init
C:\DOCUME~1\ADMINI~1\LOCALS~1\Temp/ccInFYjF.s:148 .text:000000c8 Wait
C:\DOCUME~1\ADMINI~1\LOCALS~1\Temp/ccInFYjF.s:172 .text:000000d6 Delay
C:\DOCUME~1\ADMINI~1\LOCALS~1\Temp/ccInFYjF.s:196 .text:000000e2 SollwertErmittlung
C:\DOCUME~1\ADMINI~1\LOCALS~1\Temp/ccInFYjF.s:2174 .bss:00000008 I2C_Timeout
C:\DOCUME~1\ADMINI~1\LOCALS~1\Temp/ccInFYjF.s:2180 .bss:0000000a SIO_Timeout
.bss:00000016 sollwert.2195
C:\DOCUME~1\ADMINI~1\LOCALS~1\Temp/ccInFYjF.s:2245 .data:00000007 PPM_Betrieb
C:\DOCUME~1\ADMINI~1\LOCALS~1\Temp/ccInFYjF.s:336 .text:000001dc DelayM
*COM*:00000002 RuheStrom
C:\DOCUME~1\ADMINI~1\LOCALS~1\Temp/ccInFYjF.s:387 .text:0000021e RotBlink
C:\DOCUME~1\ADMINI~1\LOCALS~1\Temp/ccInFYjF.s:435 .text:00000246 MotorTon
C:\DOCUME~1\ADMINI~1\LOCALS~1\Temp/ccInFYjF.s:2258 .data:00000008 C.19.2035
C:\DOCUME~1\ADMINI~1\LOCALS~1\Temp/ccInFYjF.s:2240 .data:00000006 MotorAdresse
C:\DOCUME~1\ADMINI~1\LOCALS~1\Temp/ccInFYjF.s:2149 .bss:00000004 Strom_max
C:\DOCUME~1\ADMINI~1\LOCALS~1\Temp/ccInFYjF.s:2252 .bss:00000015 IntRef
C:\DOCUME~1\ADMINI~1\LOCALS~1\Temp/ccInFYjF.s:1326 .text:000006da Anwerfen
*COM*:00000002 MinUpmPulse
C:\DOCUME~1\ADMINI~1\LOCALS~1\Temp/ccInFYjF.s:1589 .text:00000888 main
*COM*:00000001 HwVersion
C:\DOCUME~1\ADMINI~1\LOCALS~1\Temp/ccInFYjF.s:2211 .data:00000003 MotorGestoppt
C:\DOCUME~1\ADMINI~1\LOCALS~1\Temp/ccInFYjF.s:2198 .data:00000002 ZeitFuerBerechnungen
C:\DOCUME~1\ADMINI~1\LOCALS~1\Temp/ccInFYjF.s:2205 .bss:00000010 MotorAnwerfen
C:\DOCUME~1\ADMINI~1\LOCALS~1\Temp/ccInFYjF.s:2223 .bss:00000011 CntKommutierungen
C:\DOCUME~1\ADMINI~1\LOCALS~1\Temp/ccInFYjF.s:2235 .data:00000005 ZeitZumAdWandeln
C:\DOCUME~1\ADMINI~1\LOCALS~1\Temp/ccInFYjF.s:2161 .bss:00000006 Drehzahl
C:\DOCUME~1\ADMINI~1\LOCALS~1\Temp/ccInFYjF.s:2167 .data:00000000 KommutierDelay
C:\DOCUME~1\ADMINI~1\LOCALS~1\Temp/ccInFYjF.s:2186 .bss:0000000c SollDrehzahl
C:\DOCUME~1\ADMINI~1\LOCALS~1\Temp/ccInFYjF.s:2192 .bss:0000000e IstDrehzahl
*COM*:00000200 DrehZahlTabelle
 
UNDEFINED SYMBOLS
DebugOut
PPM_Signal
SIO_Sollwert
__udivmodhi4
anz_ppm_werte
I2C_RXBuffer
FastADConvert
Delay_ms
CompInterruptFreigabe
uart_putchar
MessAD
Manuell
SetDelay
CheckDelay
UebertragungAbgeschlossen
SendUart
DatenUebertragung
__udivmodsi4
Phase
__udivmodqi4
AdConvert
UART_Init
Timer0_Init
InitIC2_Slave
InitPPM
__do_copy_data
__do_clear_bss
/branches/V0.41-Hexa/timer0.lst
0,0 → 1,212
1 .file "timer0.c"
2 __SREG__ = 0x3f
3 __SP_H__ = 0x3e
4 __SP_L__ = 0x3d
5 __CCP__ = 0x34
6 __tmp_reg__ = 0
7 __zero_reg__ = 1
15 .Ltext0:
16 .global __vector_9
18 __vector_9:
19 .LFB3:
20 .LM1:
21 0000 1F92 push __zero_reg__
22 0002 0F92 push r0
23 0004 0FB6 in r0,__SREG__
24 0006 0F92 push r0
25 0008 1124 clr __zero_reg__
26 000a 8F93 push r24
27 000c 9F93 push r25
28 /* prologue: Signal */
29 /* frame size = 0 */
30 .LM2:
31 000e 8091 0000 lds r24,Timer0Overflow
32 0012 8F5F subi r24,lo8(-(1))
33 0014 8093 0000 sts Timer0Overflow,r24
34 .LM3:
35 0018 8091 0000 lds r24,cnt.1843
36 001c 8150 subi r24,lo8(-(-1))
37 001e 8093 0000 sts cnt.1843,r24
38 0022 8F5F subi r24,lo8(-(1))
39 0024 01F4 brne .L6
40 .LM4:
41 0026 83E0 ldi r24,lo8(3)
42 0028 8093 0000 sts cnt.1843,r24
43 .LM5:
44 002c 8091 0000 lds r24,CountMilliseconds
45 0030 9091 0000 lds r25,(CountMilliseconds)+1
46 0034 0196 adiw r24,1
47 0036 9093 0000 sts (CountMilliseconds)+1,r25
48 003a 8093 0000 sts CountMilliseconds,r24
49 .LM6:
50 003e 8091 0000 lds r24,I2C_Timeout
51 0042 9091 0000 lds r25,(I2C_Timeout)+1
52 0046 0097 sbiw r24,0
53 0048 01F0 breq .L3
54 004a 0197 sbiw r24,1
55 004c 9093 0000 sts (I2C_Timeout)+1,r25
56 0050 8093 0000 sts I2C_Timeout,r24
57 .L3:
58 .LM7:
59 0054 8091 0000 lds r24,PPM_Timeout
60 0058 8823 tst r24
61 005a 01F0 breq .L4
62 005c 8091 0000 lds r24,PPM_Timeout
63 0060 8150 subi r24,lo8(-(-1))
64 0062 8093 0000 sts PPM_Timeout,r24
65 0066 00C0 rjmp .L5
66 .L4:
67 0068 1092 0000 sts anz_ppm_werte,__zero_reg__
68 .L5:
69 .LM8:
70 006c 8091 0000 lds r24,SIO_Timeout
71 0070 9091 0000 lds r25,(SIO_Timeout)+1
72 0074 0097 sbiw r24,0
73 0076 01F0 breq .L6
74 0078 0197 sbiw r24,1
75 007a 9093 0000 sts (SIO_Timeout)+1,r25
76 007e 8093 0000 sts SIO_Timeout,r24
77 .L6:
78 /* epilogue start */
79 .LM9:
80 0082 9F91 pop r25
81 0084 8F91 pop r24
82 0086 0F90 pop r0
83 0088 0FBE out __SREG__,r0
84 008a 0F90 pop r0
85 008c 1F90 pop __zero_reg__
86 008e 1895 reti
87 .LFE3:
89 .global Timer0_Init
91 Timer0_Init:
92 .LFB4:
93 .LM10:
94 /* prologue: function */
95 /* frame size = 0 */
96 .LM11:
97 0090 82E0 ldi r24,lo8(2)
98 0092 83BF out 83-32,r24
99 .LM12:
100 0094 89B7 in r24,89-32
101 0096 8160 ori r24,lo8(1)
102 0098 89BF out 89-32,r24
103 .LM13:
104 009a 89B7 in r24,89-32
105 009c 8064 ori r24,lo8(64)
106 009e 89BF out 89-32,r24
107 /* epilogue start */
108 .LM14:
109 00a0 0895 ret
110 .LFE4:
112 .global SetDelay
114 SetDelay:
115 .LFB5:
116 .LM15:
117 .LVL0:
118 /* prologue: function */
119 /* frame size = 0 */
120 .LM16:
121 00a2 2091 0000 lds r18,CountMilliseconds
122 00a6 3091 0000 lds r19,(CountMilliseconds)+1
123 00aa 2150 subi r18,lo8(-(-1))
124 00ac 3040 sbci r19,hi8(-(-1))
125 00ae 280F add r18,r24
126 00b0 391F adc r19,r25
127 .LM17:
128 00b2 C901 movw r24,r18
129 .LVL1:
130 /* epilogue start */
131 00b4 0895 ret
132 .LFE5:
134 .global CheckDelay
136 CheckDelay:
137 .LFB6:
138 .LM18:
139 .LVL2:
140 /* prologue: function */
141 /* frame size = 0 */
142 .LM19:
143 00b6 2091 0000 lds r18,CountMilliseconds
144 00ba 3091 0000 lds r19,(CountMilliseconds)+1
145 00be 821B sub r24,r18
146 00c0 930B sbc r25,r19
147 .LVL3:
148 00c2 8070 andi r24,lo8(-32768)
149 00c4 9078 andi r25,hi8(-32768)
150 .LM20:
151 00c6 892F mov r24,r25
152 /* epilogue start */
153 00c8 0895 ret
154 .LFE6:
156 .global Delay_ms
158 Delay_ms:
159 .LFB7:
160 .LM21:
161 .LVL4:
162 /* prologue: function */
163 /* frame size = 0 */
164 .LBB6:
165 .LBB7:
166 .LM22:
167 00ca 2091 0000 lds r18,CountMilliseconds
168 00ce 3091 0000 lds r19,(CountMilliseconds)+1
169 .LVL5:
170 00d2 2150 subi r18,lo8(-(-1))
171 00d4 3040 sbci r19,hi8(-(-1))
172 00d6 280F add r18,r24
173 00d8 391F adc r19,r25
174 .L14:
175 .LBE7:
176 .LBE6:
177 .LBB8:
178 .LBB9:
179 .LM23:
180 00da 8091 0000 lds r24,CountMilliseconds
181 00de 9091 0000 lds r25,(CountMilliseconds)+1
182 .LVL6:
183 .LBE9:
184 .LBE8:
185 .LM24:
186 00e2 A901 movw r20,r18
187 00e4 481B sub r20,r24
188 00e6 590B sbc r21,r25
189 00e8 CA01 movw r24,r20
190 00ea 8070 andi r24,lo8(-32768)
191 00ec 9078 andi r25,hi8(-32768)
192 00ee 9923 tst r25
193 00f0 01F0 breq .L14
194 /* epilogue start */
195 .LM25:
196 00f2 0895 ret
197 .LFE7:
199 .global CountMilliseconds
200 .global CountMilliseconds
201 .section .bss
204 CountMilliseconds:
205 0000 0000 .skip 2,0
206 .lcomm cnt.1843,1
207 .comm Timer0Overflow,1,1
264 .Letext0:
DEFINED SYMBOLS
*ABS*:00000000 timer0.c
C:\DOCUME~1\ADMINI~1\LOCALS~1\Temp/ccL2tNpQ.s:2 *ABS*:0000003f __SREG__
C:\DOCUME~1\ADMINI~1\LOCALS~1\Temp/ccL2tNpQ.s:3 *ABS*:0000003e __SP_H__
C:\DOCUME~1\ADMINI~1\LOCALS~1\Temp/ccL2tNpQ.s:4 *ABS*:0000003d __SP_L__
C:\DOCUME~1\ADMINI~1\LOCALS~1\Temp/ccL2tNpQ.s:5 *ABS*:00000034 __CCP__
C:\DOCUME~1\ADMINI~1\LOCALS~1\Temp/ccL2tNpQ.s:6 *ABS*:00000000 __tmp_reg__
C:\DOCUME~1\ADMINI~1\LOCALS~1\Temp/ccL2tNpQ.s:7 *ABS*:00000001 __zero_reg__
C:\DOCUME~1\ADMINI~1\LOCALS~1\Temp/ccL2tNpQ.s:18 .text:00000000 __vector_9
*COM*:00000001 Timer0Overflow
.bss:00000002 cnt.1843
C:\DOCUME~1\ADMINI~1\LOCALS~1\Temp/ccL2tNpQ.s:204 .bss:00000000 CountMilliseconds
C:\DOCUME~1\ADMINI~1\LOCALS~1\Temp/ccL2tNpQ.s:91 .text:00000090 Timer0_Init
C:\DOCUME~1\ADMINI~1\LOCALS~1\Temp/ccL2tNpQ.s:114 .text:000000a2 SetDelay
C:\DOCUME~1\ADMINI~1\LOCALS~1\Temp/ccL2tNpQ.s:136 .text:000000b6 CheckDelay
C:\DOCUME~1\ADMINI~1\LOCALS~1\Temp/ccL2tNpQ.s:158 .text:000000ca Delay_ms
 
UNDEFINED SYMBOLS
I2C_Timeout
PPM_Timeout
anz_ppm_werte
SIO_Timeout
__do_clear_bss
/branches/V0.41-Hexa/twislave.lst
0,0 → 1,160
1 .file "twislave.c"
2 __SREG__ = 0x3f
3 __SP_H__ = 0x3e
4 __SP_L__ = 0x3d
5 __CCP__ = 0x34
6 __tmp_reg__ = 0
7 __zero_reg__ = 1
15 .Ltext0:
16 .global InitIC2_Slave
18 InitIC2_Slave:
19 .LFB3:
20 .LM1:
21 .LVL0:
22 /* prologue: function */
23 /* frame size = 0 */
24 .LM2:
25 0000 9091 0000 lds r25,MotorAdresse
26 0004 990F lsl r25
27 0006 980F add r25,r24
28 0008 92B9 out 34-32,r25
29 .LM3:
30 000a 85EC ldi r24,lo8(-59)
31 .LVL1:
32 000c 86BF out 86-32,r24
33 /* epilogue start */
34 .LM4:
35 000e 0895 ret
36 .LFE3:
38 .global __vector_17
40 __vector_17:
41 .LFB4:
42 .LM5:
43 0010 1F92 push __zero_reg__
44 0012 0F92 push r0
45 0014 0FB6 in r0,__SREG__
46 0016 0F92 push r0
47 0018 1124 clr __zero_reg__
48 001a 8F93 push r24
49 001c 9F93 push r25
50 /* prologue: Signal */
51 /* frame size = 0 */
52 .LM6:
53 001e 81B1 in r24,33-32
54 0020 90E0 ldi r25,lo8(0)
55 0022 887F andi r24,lo8(248)
56 0024 9070 andi r25,hi8(248)
57 0026 8038 cpi r24,128
58 0028 9105 cpc r25,__zero_reg__
59 002a 01F0 breq .L7
60 002c 8138 cpi r24,129
61 002e 9105 cpc r25,__zero_reg__
62 0030 04F4 brge .L11
63 0032 0097 sbiw r24,0
64 0034 01F0 breq .L5
65 0036 8036 cpi r24,96
66 0038 9105 cpc r25,__zero_reg__
67 003a 01F4 brne .L4
68 003c 00C0 rjmp .L21
69 .L11:
70 003e 883B cpi r24,184
71 0040 9105 cpc r25,__zero_reg__
72 0042 01F0 breq .L9
73 0044 883F cpi r24,248
74 0046 9105 cpc r25,__zero_reg__
75 0048 01F0 breq .L10
76 004a 883A cpi r24,168
77 004c 9105 cpc r25,__zero_reg__
78 004e 01F4 brne .L4
79 0050 00C0 rjmp .L9
80 .L21:
81 .LM7:
82 0052 86B7 in r24,86-32
83 0054 8068 ori r24,lo8(-128)
84 0056 86BF out 86-32,r24
85 .LM8:
86 0058 1092 0000 sts Byte_Counter,__zero_reg__
87 005c 00C0 rjmp .L17
88 .L7:
89 .LM9:
90 005e 83B1 in r24,35-32
91 0060 8093 0000 sts I2C_RXBuffer,r24
92 .LM10:
93 0064 84EF ldi r24,lo8(500)
94 0066 91E0 ldi r25,hi8(500)
95 0068 9093 0000 sts (I2C_Timeout)+1,r25
96 006c 8093 0000 sts I2C_Timeout,r24
97 0070 00C0 rjmp .L16
98 .L9:
99 .LM11:
100 0072 8091 0000 lds r24,Byte_Counter
101 0076 8823 tst r24
102 0078 01F4 brne .L15
103 .LM12:
104 007a 8091 0000 lds r24,Mittelstrom
105 007e 83B9 out 35-32,r24
106 .LM13:
107 0080 81E0 ldi r24,lo8(1)
108 0082 8093 0000 sts Byte_Counter,r24
109 0086 00C0 rjmp .L16
110 .L15:
111 .LM14:
112 0088 8091 0000 lds r24,MaxPWM
113 008c 83B9 out 35-32,r24
114 .L16:
115 .LM15:
116 008e 86B7 in r24,86-32
117 0090 8068 ori r24,lo8(-128)
118 0092 00C0 rjmp .L18
119 .L10:
120 .LM16:
121 0094 86B7 in r24,86-32
122 0096 8069 ori r24,lo8(-112)
123 0098 86BF out 86-32,r24
124 .L5:
125 .LM17:
126 009a 86B7 in r24,86-32
127 009c 8069 ori r24,lo8(-112)
128 009e 86BF out 86-32,r24
129 .L4:
130 .LM18:
131 00a0 85EC ldi r24,lo8(-59)
132 .L18:
133 00a2 86BF out 86-32,r24
134 .L17:
135 /* epilogue start */
136 .LM19:
137 00a4 9F91 pop r25
138 00a6 8F91 pop r24
139 00a8 0F90 pop r0
140 00aa 0FBE out __SREG__,r0
141 00ac 0F90 pop r0
142 00ae 1F90 pop __zero_reg__
143 00b0 1895 reti
144 .LFE4:
146 .global Byte_Counter
147 .global Byte_Counter
148 .section .bss
151 Byte_Counter:
152 0000 00 .skip 1,0
153 .comm I2C_RXBuffer,1,1
186 .Letext0:
DEFINED SYMBOLS
*ABS*:00000000 twislave.c
C:\DOCUME~1\ADMINI~1\LOCALS~1\Temp/ccyl1o1s.s:2 *ABS*:0000003f __SREG__
C:\DOCUME~1\ADMINI~1\LOCALS~1\Temp/ccyl1o1s.s:3 *ABS*:0000003e __SP_H__
C:\DOCUME~1\ADMINI~1\LOCALS~1\Temp/ccyl1o1s.s:4 *ABS*:0000003d __SP_L__
C:\DOCUME~1\ADMINI~1\LOCALS~1\Temp/ccyl1o1s.s:5 *ABS*:00000034 __CCP__
C:\DOCUME~1\ADMINI~1\LOCALS~1\Temp/ccyl1o1s.s:6 *ABS*:00000000 __tmp_reg__
C:\DOCUME~1\ADMINI~1\LOCALS~1\Temp/ccyl1o1s.s:7 *ABS*:00000001 __zero_reg__
C:\DOCUME~1\ADMINI~1\LOCALS~1\Temp/ccyl1o1s.s:18 .text:00000000 InitIC2_Slave
C:\DOCUME~1\ADMINI~1\LOCALS~1\Temp/ccyl1o1s.s:40 .text:00000010 __vector_17
C:\DOCUME~1\ADMINI~1\LOCALS~1\Temp/ccyl1o1s.s:151 .bss:00000000 Byte_Counter
*COM*:00000001 I2C_RXBuffer
 
UNDEFINED SYMBOLS
MotorAdresse
I2C_Timeout
Mittelstrom
MaxPWM
__do_clear_bss
/branches/V0.41-Hexa/uart.lst
0,0 → 1,902
1 .file "uart.c"
2 __SREG__ = 0x3f
3 __SP_H__ = 0x3e
4 __SP_L__ = 0x3d
5 __CCP__ = 0x34
6 __tmp_reg__ = 0
7 __zero_reg__ = 1
15 .Ltext0:
16 .global __vector_13
18 __vector_13:
19 .LFB3:
20 .LM1:
21 0000 1F92 push __zero_reg__
22 0002 0F92 push r0
23 0004 0FB6 in r0,__SREG__
24 0006 0F92 push r0
25 0008 1124 clr __zero_reg__
26 /* prologue: Signal */
27 /* frame size = 0 */
28 /* epilogue start */
29 .LM2:
30 000a 0F90 pop r0
31 000c 0FBE out __SREG__,r0
32 000e 0F90 pop r0
33 0010 1F90 pop __zero_reg__
34 0012 1895 reti
35 .LFE3:
37 .global SendUart
39 SendUart:
40 .LFB4:
41 .LM3:
42 /* prologue: function */
43 /* frame size = 0 */
44 .LM4:
45 0014 5E9B sbis 43-32,6
46 0016 00C0 rjmp .L8
47 .LM5:
48 0018 8091 0000 lds r24,UebertragungAbgeschlossen
49 001c 8823 tst r24
50 001e 01F4 brne .L5
51 .LM6:
52 0020 8091 0000 lds r24,ptr.1846
53 0024 9091 0000 lds r25,(ptr.1846)+1
54 0028 0196 adiw r24,1
55 002a 9093 0000 sts (ptr.1846)+1,r25
56 002e 8093 0000 sts ptr.1846,r24
57 .LM7:
58 0032 FC01 movw r30,r24
59 0034 E050 subi r30,lo8(-(SendeBuffer))
60 0036 F040 sbci r31,hi8(-(SendeBuffer))
61 0038 E081 ld r30,Z
62 .LVL0:
63 .LM8:
64 003a ED30 cpi r30,lo8(13)
65 003c 01F0 breq .L6
66 003e 8436 cpi r24,100
67 0040 9105 cpc r25,__zero_reg__
68 0042 01F4 brne .L7
69 .L6:
70 .LM9:
71 0044 1092 0000 sts (ptr.1846)+1,__zero_reg__
72 0048 1092 0000 sts ptr.1846,__zero_reg__
73 .LM10:
74 004c 81E0 ldi r24,lo8(1)
75 004e 8093 0000 sts UebertragungAbgeschlossen,r24
76 .L7:
77 .LM11:
78 0052 589A sbi 43-32,0
79 .LM12:
80 0054 ECB9 out 44-32,r30
81 0056 0895 ret
82 .LVL1:
83 .L5:
84 .LM13:
85 0058 1092 0000 sts (ptr.1846)+1,__zero_reg__
86 005c 1092 0000 sts ptr.1846,__zero_reg__
87 .L8:
88 0060 0895 ret
89 .LFE4:
91 .global Decode64
93 Decode64:
94 .LFB5:
95 .LM14:
96 .LVL2:
97 0062 1F93 push r17
98 0064 CF93 push r28
99 0066 DF93 push r29
100 /* prologue: function */
101 /* frame size = 0 */
102 0068 EC01 movw r28,r24
103 .LM15:
104 006a 70E0 ldi r23,lo8(0)
105 .LVL3:
106 .LM16:
107 006c A22F mov r26,r18
108 006e B0E0 ldi r27,lo8(0)
109 0070 1197 sbiw r26,1
110 0072 00C0 rjmp .L10
111 .LVL4:
112 .L12:
113 .LM17:
114 0074 E42F mov r30,r20
115 0076 F0E0 ldi r31,lo8(0)
116 0078 E050 subi r30,lo8(-(RxdBuffer))
117 007a F040 sbci r31,hi8(-(RxdBuffer))
118 007c 3081 ld r19,Z
119 .LM18:
120 007e 4F5F subi r20,lo8(-(1))
121 0080 E42F mov r30,r20
122 0082 F0E0 ldi r31,lo8(0)
123 0084 E050 subi r30,lo8(-(RxdBuffer))
124 0086 F040 sbci r31,hi8(-(RxdBuffer))
125 0088 5081 ld r21,Z
126 .LVL5:
127 .LM19:
128 008a 4F5F subi r20,lo8(-(1))
129 008c E42F mov r30,r20
130 008e F0E0 ldi r31,lo8(0)
131 0090 E050 subi r30,lo8(-(RxdBuffer))
132 0092 F040 sbci r31,hi8(-(RxdBuffer))
133 0094 1081 ld r17,Z
134 .LM20:
135 0096 4F5F subi r20,lo8(-(1))
136 0098 E42F mov r30,r20
137 009a F0E0 ldi r31,lo8(0)
138 009c E050 subi r30,lo8(-(RxdBuffer))
139 009e F040 sbci r31,hi8(-(RxdBuffer))
140 00a0 2081 ld r18,Z
141 .LVL6:
142 00a2 4F5F subi r20,lo8(-(1))
143 .LM21:
144 00a4 842F mov r24,r20
145 00a6 90E0 ldi r25,lo8(0)
146 .LVL7:
147 00a8 8A17 cp r24,r26
148 00aa 9B07 cpc r25,r27
149 00ac 04F4 brge .L13
150 .LVL8:
151 .LM22:
152 00ae 5D53 subi r21,lo8(-(-61))
153 .LVL9:
154 .LM23:
155 00b0 FE01 movw r30,r28
156 00b2 E70F add r30,r23
157 00b4 F11D adc r31,__zero_reg__
158 00b6 852F mov r24,r21
159 .LVL10:
160 00b8 8295 swap r24
161 00ba 8F70 andi r24,lo8(15)
162 00bc 3D53 subi r19,lo8(-(-61))
163 00be 330F lsl r19
164 00c0 330F lsl r19
165 00c2 382B or r19,r24
166 00c4 3083 st Z,r19
167 .LM24:
168 00c6 6130 cpi r22,lo8(1)
169 00c8 01F0 breq .L13
170 .LM25:
171 00ca 912F mov r25,r17
172 .LVL11:
173 00cc 9D53 subi r25,lo8(-(-61))
174 .LM26:
175 00ce 7F5F subi r23,lo8(-(1))
176 00d0 FE01 movw r30,r28
177 00d2 E70F add r30,r23
178 00d4 F11D adc r31,__zero_reg__
179 00d6 7150 subi r23,lo8(-(-1))
180 00d8 5295 swap r21
181 00da 507F andi r21,lo8(-16)
182 00dc 892F mov r24,r25
183 00de 8695 lsr r24
184 00e0 8695 lsr r24
185 00e2 582B or r21,r24
186 00e4 5083 st Z,r21
187 .LM27:
188 00e6 6230 cpi r22,lo8(2)
189 00e8 01F0 breq .L13
190 00ea 6350 subi r22,lo8(-(-3))
191 .LVL12:
192 00ec 7E5F subi r23,lo8(-(2))
193 00ee FE01 movw r30,r28
194 00f0 E70F add r30,r23
195 00f2 F11D adc r31,__zero_reg__
196 00f4 9295 swap r25
197 00f6 990F lsl r25
198 00f8 990F lsl r25
199 00fa 907C andi r25,lo8(-64)
200 00fc 2D53 subi r18,lo8(-(-61))
201 00fe 922B or r25,r18
202 0100 9083 st Z,r25
203 0102 7F5F subi r23,lo8(-(1))
204 .LVL13:
205 .L10:
206 .LM28:
207 0104 6623 tst r22
208 0106 01F0 breq .+2
209 0108 00C0 rjmp .L12
210 .LVL14:
211 .L13:
212 /* epilogue start */
213 .LM29:
214 010a DF91 pop r29
215 010c CF91 pop r28
216 .LVL15:
217 010e 1F91 pop r17
218 0110 0895 ret
219 .LFE5:
221 .global AddCRC
223 AddCRC:
224 .LFB7:
225 .LM30:
226 .LVL16:
227 /* prologue: function */
228 /* frame size = 0 */
229 0112 DC01 movw r26,r24
230 .LM31:
231 0114 20E0 ldi r18,lo8(0)
232 0116 30E0 ldi r19,hi8(0)
233 .LVL17:
234 0118 40E0 ldi r20,lo8(0)
235 011a 50E0 ldi r21,hi8(0)
236 .LVL18:
237 011c 00C0 rjmp .L15
238 .LVL19:
239 .L16:
240 .LM32:
241 011e FA01 movw r30,r20
242 0120 E050 subi r30,lo8(-(SendeBuffer))
243 0122 F040 sbci r31,hi8(-(SendeBuffer))
244 0124 8081 ld r24,Z
245 0126 280F add r18,r24
246 0128 311D adc r19,__zero_reg__
247 .LM33:
248 012a 4F5F subi r20,lo8(-(1))
249 012c 5F4F sbci r21,hi8(-(1))
250 .LVL20:
251 .L15:
252 012e 4A17 cp r20,r26
253 0130 5B07 cpc r21,r27
254 0132 00F0 brlo .L16
255 .LM34:
256 0134 3F70 andi r19,hi8(4095)
257 .LVL21:
258 .LM35:
259 0136 C901 movw r24,r18
260 0138 36E0 ldi r19,6
261 013a 9695 1: lsr r25
262 013c 8795 ror r24
263 013e 3A95 dec r19
264 0140 01F4 brne 1b
265 0142 835C subi r24,lo8(-(61))
266 0144 FD01 movw r30,r26
267 0146 E050 subi r30,lo8(-(SendeBuffer))
268 0148 F040 sbci r31,hi8(-(SendeBuffer))
269 014a 8083 st Z,r24
270 014c 1196 adiw r26,1
271 .LVL22:
272 .LM36:
273 014e 2F73 andi r18,lo8(63)
274 .LVL23:
275 0150 235C subi r18,lo8(-(61))
276 0152 FD01 movw r30,r26
277 0154 E050 subi r30,lo8(-(SendeBuffer))
278 0156 F040 sbci r31,hi8(-(SendeBuffer))
279 0158 2083 st Z,r18
280 .LM37:
281 015a A050 subi r26,lo8(-(SendeBuffer+1))
282 015c B040 sbci r27,hi8(-(SendeBuffer+1))
283 015e 8DE0 ldi r24,lo8(13)
284 0160 8C93 st X,r24
285 .LM38:
286 0162 1092 0000 sts UebertragungAbgeschlossen,__zero_reg__
287 .LM39:
288 0166 8091 0000 lds r24,SendeBuffer
289 016a 8CB9 out 44-32,r24
290 /* epilogue start */
291 .LM40:
292 016c 0895 ret
293 .LFE7:
295 .global SendOutData
297 SendOutData:
298 .LFB8:
299 .LM41:
300 .LVL24:
301 016e CF93 push r28
302 0170 DF93 push r29
303 /* prologue: function */
304 /* frame size = 0 */
305 0172 EA01 movw r28,r20
306 0174 B22F mov r27,r18
307 .LM42:
308 0176 93E2 ldi r25,lo8(35)
309 0178 9093 0000 sts SendeBuffer,r25
310 .LM43:
311 017c 6093 0000 sts SendeBuffer+1,r22
312 .LM44:
313 0180 8093 0000 sts SendeBuffer+2,r24
314 0184 63E0 ldi r22,lo8(3)
315 0186 70E0 ldi r23,hi8(3)
316 .LVL25:
317 0188 A0E0 ldi r26,lo8(0)
318 .LVL26:
319 018a 00C0 rjmp .L19
320 .LVL27:
321 .L23:
322 .LM45:
323 018c FE01 movw r30,r28
324 018e EA0F add r30,r26
325 0190 F11D adc r31,__zero_reg__
326 0192 9081 ld r25,Z
327 .LVL28:
328 0194 AF5F subi r26,lo8(-(1))
329 0196 B150 subi r27,lo8(-(-1))
330 .LM46:
331 0198 01F4 brne .L20
332 019a 30E0 ldi r19,lo8(0)
333 019c 40E0 ldi r20,lo8(0)
334 .LVL29:
335 019e 00C0 rjmp .L21
336 .LVL30:
337 .L20:
338 01a0 FE01 movw r30,r28
339 01a2 EA0F add r30,r26
340 01a4 F11D adc r31,__zero_reg__
341 01a6 4081 ld r20,Z
342 .LVL31:
343 01a8 AF5F subi r26,lo8(-(1))
344 01aa B150 subi r27,lo8(-(-1))
345 .LM47:
346 01ac 01F4 brne .L22
347 01ae 30E0 ldi r19,lo8(0)
348 01b0 00C0 rjmp .L21
349 .L22:
350 01b2 FE01 movw r30,r28
351 01b4 EA0F add r30,r26
352 01b6 F11D adc r31,__zero_reg__
353 01b8 3081 ld r19,Z
354 01ba AF5F subi r26,lo8(-(1))
355 01bc B150 subi r27,lo8(-(-1))
356 .L21:
357 .LM48:
358 01be 892F mov r24,r25
359 .LVL32:
360 01c0 8695 lsr r24
361 01c2 8695 lsr r24
362 01c4 835C subi r24,lo8(-(61))
363 01c6 FB01 movw r30,r22
364 01c8 E050 subi r30,lo8(-(SendeBuffer))
365 01ca F040 sbci r31,hi8(-(SendeBuffer))
366 01cc 8083 st Z,r24
367 .LM49:
368 01ce 242F mov r18,r20
369 01d0 2295 swap r18
370 01d2 2F70 andi r18,lo8(15)
371 01d4 892F mov r24,r25
372 01d6 90E0 ldi r25,lo8(0)
373 .LVL33:
374 01d8 8370 andi r24,lo8(3)
375 01da 9070 andi r25,hi8(3)
376 .LVL34:
377 01dc 54E0 ldi r21,4
378 01de 880F 1: lsl r24
379 01e0 991F rol r25
380 01e2 5A95 dec r21
381 01e4 01F4 brne 1b
382 .LVL35:
383 01e6 282B or r18,r24
384 01e8 235C subi r18,lo8(-(61))
385 01ea FB01 movw r30,r22
386 01ec E050 subi r30,lo8(-(SendeBuffer+1))
387 01ee F040 sbci r31,hi8(-(SendeBuffer+1))
388 01f0 2083 st Z,r18
389 .LM50:
390 01f2 842F mov r24,r20
391 .LVL36:
392 01f4 90E0 ldi r25,lo8(0)
393 .LVL37:
394 01f6 8F70 andi r24,lo8(15)
395 01f8 9070 andi r25,hi8(15)
396 .LVL38:
397 01fa 880F lsl r24
398 01fc 991F rol r25
399 01fe 880F lsl r24
400 0200 991F rol r25
401 .LVL39:
402 0202 232F mov r18,r19
403 0204 2295 swap r18
404 0206 2695 lsr r18
405 0208 2695 lsr r18
406 020a 2370 andi r18,lo8(3)
407 020c 282B or r18,r24
408 020e 235C subi r18,lo8(-(61))
409 0210 FB01 movw r30,r22
410 0212 E050 subi r30,lo8(-(SendeBuffer+2))
411 0214 F040 sbci r31,hi8(-(SendeBuffer+2))
412 0216 2083 st Z,r18
413 .LM51:
414 0218 3F73 andi r19,lo8(63)
415 021a 335C subi r19,lo8(-(61))
416 021c FB01 movw r30,r22
417 021e E050 subi r30,lo8(-(SendeBuffer+3))
418 0220 F040 sbci r31,hi8(-(SendeBuffer+3))
419 0222 3083 st Z,r19
420 0224 6C5F subi r22,lo8(-(4))
421 0226 7F4F sbci r23,hi8(-(4))
422 .LVL40:
423 .L19:
424 .LM52:
425 0228 BB23 tst r27
426 022a 01F0 breq .+2
427 022c 00C0 rjmp .L23
428 .LM53:
429 022e CB01 movw r24,r22
430 .LVL41:
431 0230 00D0 rcall AddCRC
432 .LVL42:
433 /* epilogue start */
434 .LM54:
435 0232 DF91 pop r29
436 0234 CF91 pop r28
437 .LVL43:
438 0236 0895 ret
439 .LFE8:
441 .global uart_putchar
443 uart_putchar:
444 .LFB9:
445 .LM55:
446 .LVL44:
447 0238 1F93 push r17
448 /* prologue: function */
449 /* frame size = 0 */
450 023a 182F mov r17,r24
451 .LM56:
452 023c 8A30 cpi r24,lo8(10)
453 023e 01F4 brne .L28
454 .LM57:
455 0240 8DE0 ldi r24,lo8(13)
456 .LVL45:
457 0242 00D0 rcall uart_putchar
458 .LVL46:
459 .L28:
460 .LM58:
461 0244 5D9B sbis 43-32,5
462 0246 00C0 rjmp .L28
463 .LM59:
464 0248 1CB9 out 44-32,r17
465 .LM60:
466 024a 80E0 ldi r24,lo8(0)
467 024c 90E0 ldi r25,hi8(0)
468 /* epilogue start */
469 024e 1F91 pop r17
470 .LVL47:
471 0250 0895 ret
472 .LFE9:
474 .global __vector_11
476 __vector_11:
477 .LFB6:
478 .LM61:
479 0252 1F92 push __zero_reg__
480 0254 0F92 push r0
481 0256 0FB6 in r0,__SREG__
482 0258 0F92 push r0
483 025a 1124 clr __zero_reg__
484 025c 2F93 push r18
485 025e 3F93 push r19
486 0260 4F93 push r20
487 0262 5F93 push r21
488 0264 6F93 push r22
489 0266 7F93 push r23
490 0268 8F93 push r24
491 026a 9F93 push r25
492 026c AF93 push r26
493 026e BF93 push r27
494 0270 CF93 push r28
495 0272 DF93 push r29
496 0274 EF93 push r30
497 0276 FF93 push r31
498 /* prologue: Signal */
499 /* frame size = 0 */
500 .LM62:
501 0278 8CB1 in r24,44-32
502 027a 8093 0000 sts SioTmp,r24
503 .LM63:
504 027e 4091 0000 lds r20,buf_ptr.1914
505 0282 4436 cpi r20,lo8(100)
506 0284 00F0 brlo .L31
507 0286 1092 0000 sts UartState.1915,__zero_reg__
508 .L31:
509 .LM64:
510 028a 5091 0000 lds r21,SioTmp
511 028e 5D30 cpi r21,lo8(13)
512 0290 01F0 breq .+2
513 0292 00C0 rjmp .L32
514 0294 8091 0000 lds r24,UartState.1915
515 0298 8230 cpi r24,lo8(2)
516 029a 01F0 breq .+2
517 029c 00C0 rjmp .L32
518 .LM65:
519 029e 1092 0000 sts UartState.1915,__zero_reg__
520 .LM66:
521 02a2 A42F mov r26,r20
522 02a4 B0E0 ldi r27,lo8(0)
523 02a6 FD01 movw r30,r26
524 02a8 E050 subi r30,lo8(-(RxdBuffer-2))
525 02aa F040 sbci r31,hi8(-(RxdBuffer-2))
526 02ac 3081 ld r19,Z
527 .LM67:
528 02ae ED01 movw r28,r26
529 02b0 C050 subi r28,lo8(-(RxdBuffer-1))
530 02b2 D040 sbci r29,hi8(-(RxdBuffer-1))
531 02b4 2881 ld r18,Y
532 .LM68:
533 02b6 8091 0000 lds r24,crc.1911
534 02ba 9091 0000 lds r25,(crc.1911)+1
535 02be 831B sub r24,r19
536 02c0 9109 sbc r25,__zero_reg__
537 02c2 821B sub r24,r18
538 02c4 9109 sbc r25,__zero_reg__
539 02c6 9F70 andi r25,hi8(4095)
540 02c8 9093 0000 sts (crc.1911)+1,r25
541 02cc 8093 0000 sts crc.1911,r24
542 .LM69:
543 02d0 9C01 movw r18,r24
544 02d2 66E0 ldi r22,6
545 02d4 3695 1: lsr r19
546 02d6 2795 ror r18
547 02d8 6A95 dec r22
548 02da 01F4 brne 1b
549 02dc 235C subi r18,lo8(-(61))
550 02de 2093 0000 sts crc1.1912,r18
551 .LM70:
552 02e2 982F mov r25,r24
553 02e4 9F73 andi r25,lo8(63)
554 02e6 935C subi r25,lo8(-(61))
555 02e8 9093 0000 sts crc2.1913,r25
556 .LM71:
557 02ec 8081 ld r24,Z
558 02ee 2817 cp r18,r24
559 02f0 01F0 breq .+2
560 02f2 00C0 rjmp .L42
561 02f4 8881 ld r24,Y
562 02f6 9817 cp r25,r24
563 02f8 01F0 breq .+2
564 02fa 00C0 rjmp .L42
565 .LM72:
566 02fc 4093 0000 sts AnzahlEmpfangsBytes,r20
567 .LM73:
568 0300 A050 subi r26,lo8(-(RxdBuffer))
569 0302 B040 sbci r27,hi8(-(RxdBuffer))
570 0304 5C93 st X,r21
571 .LM74:
572 0306 8091 0000 lds r24,RxdBuffer+2
573 030a 8235 cpi r24,lo8(82)
574 030c 01F4 brne .L34
575 030e 2CE0 ldi r18,lo8(12)
576 0310 88E1 ldi r24,lo8(24)
577 0312 90E0 ldi r25,hi8(24)
578 /* #APP */
579 ; 133 "uart.c" 1
580 0314 0FB6 in __tmp_reg__,__SREG__
581 0316 F894 cli
582 0318 A895 wdr
583 031a 81BD out 33,r24
584 031c 0FBE out __SREG__,__tmp_reg__
585 031e 21BD out 33,r18
586 ; 0 "" 2
587 /* #NOAPP */
588 .L34:
589 .LM75:
590 0320 8091 0000 lds r24,RxdBuffer+2
591 0324 00D0 rcall uart_putchar
592 .LM76:
593 0326 8091 0000 lds r24,RxdBuffer+2
594 032a 8437 cpi r24,lo8(116)
595 032c 01F0 breq .+2
596 032e 00C0 rjmp .L42
597 .LM77:
598 0330 2091 0000 lds r18,AnzahlEmpfangsBytes
599 0334 80E0 ldi r24,lo8(MotorTest)
600 0336 90E0 ldi r25,hi8(MotorTest)
601 0338 66E0 ldi r22,lo8(6)
602 033a 43E0 ldi r20,lo8(3)
603 033c 00D0 rcall Decode64
604 .LM78:
605 033e E091 0000 lds r30,MotorAdresse
606 0342 F0E0 ldi r31,lo8(0)
607 0344 E050 subi r30,lo8(-(MotorTest-1))
608 0346 F040 sbci r31,hi8(-(MotorTest-1))
609 0348 8081 ld r24,Z
610 034a 8093 0000 sts SIO_Sollwert,r24
611 .LM79:
612 034e 84EF ldi r24,lo8(500)
613 0350 91E0 ldi r25,hi8(500)
614 0352 9093 0000 sts (SIO_Timeout)+1,r25
615 0356 8093 0000 sts SIO_Timeout,r24
616 035a 00C0 rjmp .L42
617 .L32:
618 .LM80:
619 035c 8091 0000 lds r24,UartState.1915
620 0360 8130 cpi r24,lo8(1)
621 0362 01F0 breq .L37
622 0364 8130 cpi r24,lo8(1)
623 0366 00F0 brlo .L36
624 0368 8230 cpi r24,lo8(2)
625 036a 01F0 breq .+2
626 036c 00C0 rjmp .L43
627 036e 00C0 rjmp .L45
628 .L36:
629 .LM81:
630 0370 8091 0000 lds r24,SioTmp
631 0374 8332 cpi r24,lo8(35)
632 0376 01F4 brne .L39
633 0378 8091 0000 lds r24,NeuerDatensatzEmpfangen
634 037c 8823 tst r24
635 037e 01F4 brne .L39
636 0380 81E0 ldi r24,lo8(1)
637 0382 8093 0000 sts UartState.1915,r24
638 .L39:
639 .LM82:
640 0386 8091 0000 lds r24,SioTmp
641 038a 8093 0000 sts RxdBuffer,r24
642 038e 81E0 ldi r24,lo8(1)
643 0390 8093 0000 sts buf_ptr.1914,r24
644 .LM83:
645 0394 8091 0000 lds r24,SioTmp
646 0398 8093 0000 sts crc.1911,r24
647 039c 1092 0000 sts crc.1911+1,__zero_reg__
648 03a0 00C0 rjmp .L42
649 .L37:
650 .LM84:
651 03a2 82E0 ldi r24,lo8(2)
652 03a4 8093 0000 sts UartState.1915,r24
653 .LM85:
654 03a8 E42F mov r30,r20
655 03aa F0E0 ldi r31,lo8(0)
656 03ac 8091 0000 lds r24,SioTmp
657 03b0 E050 subi r30,lo8(-(RxdBuffer))
658 03b2 F040 sbci r31,hi8(-(RxdBuffer))
659 03b4 8083 st Z,r24
660 03b6 00C0 rjmp .L44
661 .L45:
662 .LM86:
663 03b8 E42F mov r30,r20
664 03ba F0E0 ldi r31,lo8(0)
665 03bc 8091 0000 lds r24,SioTmp
666 03c0 E050 subi r30,lo8(-(RxdBuffer))
667 03c2 F040 sbci r31,hi8(-(RxdBuffer))
668 03c4 8083 st Z,r24
669 .LM87:
670 03c6 4436 cpi r20,lo8(100)
671 03c8 00F4 brsh .L40
672 .L44:
673 03ca 4F5F subi r20,lo8(-(1))
674 03cc 4093 0000 sts buf_ptr.1914,r20
675 03d0 00C0 rjmp .L41
676 .L40:
677 .LM88:
678 03d2 1092 0000 sts UartState.1915,__zero_reg__
679 .L41:
680 .LM89:
681 03d6 2091 0000 lds r18,SioTmp
682 03da 8091 0000 lds r24,crc.1911
683 03de 9091 0000 lds r25,(crc.1911)+1
684 03e2 820F add r24,r18
685 03e4 911D adc r25,__zero_reg__
686 03e6 9093 0000 sts (crc.1911)+1,r25
687 03ea 8093 0000 sts crc.1911,r24
688 03ee 00C0 rjmp .L42
689 .L43:
690 .LM90:
691 03f0 1092 0000 sts UartState.1915,__zero_reg__
692 .L42:
693 /* epilogue start */
694 .LM91:
695 03f4 FF91 pop r31
696 03f6 EF91 pop r30
697 03f8 DF91 pop r29
698 03fa CF91 pop r28
699 03fc BF91 pop r27
700 03fe AF91 pop r26
701 0400 9F91 pop r25
702 0402 8F91 pop r24
703 0404 7F91 pop r23
704 0406 6F91 pop r22
705 0408 5F91 pop r21
706 040a 4F91 pop r20
707 040c 3F91 pop r19
708 040e 2F91 pop r18
709 0410 0F90 pop r0
710 0412 0FBE out __SREG__,r0
711 0414 0F90 pop r0
712 0416 1F90 pop __zero_reg__
713 0418 1895 reti
714 .LFE6:
716 .global WriteProgramData
718 WriteProgramData:
719 .LFB10:
720 .LM92:
721 .LVL48:
722 /* prologue: function */
723 /* frame size = 0 */
724 /* epilogue start */
725 .LM93:
726 041a 0895 ret
727 .LFE10:
729 .global DatenUebertragung
731 DatenUebertragung:
732 .LFB12:
733 .LM94:
734 /* prologue: function */
735 /* frame size = 0 */
736 .LM95:
737 041c 8091 0000 lds r24,Debug_Timer
738 0420 9091 0000 lds r25,(Debug_Timer)+1
739 0424 00D0 rcall CheckDelay
740 0426 8823 tst r24
741 0428 01F0 breq .L50
742 042a 8091 0000 lds r24,UebertragungAbgeschlossen
743 042e 8823 tst r24
744 0430 01F0 breq .L50
745 .LM96:
746 0432 84E4 ldi r24,lo8(68)
747 0434 6091 0000 lds r22,MeineSlaveAdresse
748 0438 40E0 ldi r20,lo8(DebugOut)
749 043a 50E0 ldi r21,hi8(DebugOut)
750 043c 22E1 ldi r18,lo8(18)
751 043e 00D0 rcall SendOutData
752 .LM97:
753 0440 82E3 ldi r24,lo8(50)
754 0442 90E0 ldi r25,hi8(50)
755 0444 00D0 rcall SetDelay
756 0446 9093 0000 sts (Debug_Timer)+1,r25
757 044a 8093 0000 sts Debug_Timer,r24
758 .L50:
759 044e 0895 ret
760 .LFE12:
762 .global UART_Init
764 UART_Init:
765 .LFB11:
766 .LM98:
767 /* prologue: function */
768 /* frame size = 0 */
769 .LM99:
770 0450 88E1 ldi r24,lo8(24)
771 0452 8AB9 out 42-32,r24
772 .LM100:
773 0454 599A sbi 43-32,1
774 .LM101:
775 0456 579A sbi 42-32,7
776 .LM102:
777 0458 80E1 ldi r24,lo8(16)
778 045a 89B9 out 41-32,r24
779 .LM103:
780 045c 80E0 ldi r24,lo8(gs(uart_putchar))
781 045e 90E0 ldi r25,hi8(gs(uart_putchar))
782 0460 60E0 ldi r22,lo8(0)
783 0462 70E0 ldi r23,hi8(0)
784 0464 00D0 rcall fdevopen
785 .LM104:
786 0466 88EC ldi r24,lo8(200)
787 0468 90E0 ldi r25,hi8(200)
788 046a 00D0 rcall SetDelay
789 046c 9093 0000 sts (Debug_Timer)+1,r25
790 0470 8093 0000 sts Debug_Timer,r24
791 .LM105:
792 0474 8AE0 ldi r24,lo8(10)
793 0476 00D0 rcall uart_putchar
794 0478 82E4 ldi r24,lo8(66)
795 047a 00D0 rcall uart_putchar
796 047c 8CE4 ldi r24,lo8(76)
797 047e 00D0 rcall uart_putchar
798 0480 8AE3 ldi r24,lo8(58)
799 0482 00D0 rcall uart_putchar
800 .LM106:
801 0484 86E5 ldi r24,lo8(86)
802 0486 00D0 rcall uart_putchar
803 0488 80E3 ldi r24,lo8(48)
804 048a 00D0 rcall uart_putchar
805 048c 8EE2 ldi r24,lo8(46)
806 048e 00D0 rcall uart_putchar
807 0490 84E3 ldi r24,lo8(52)
808 0492 00D0 rcall uart_putchar
809 0494 81E3 ldi r24,lo8(49)
810 0496 00D0 rcall uart_putchar
811 .LM107:
812 0498 8AE0 ldi r24,lo8(10)
813 049a 00D0 rcall uart_putchar
814 049c 88E4 ldi r24,lo8(72)
815 049e 00D0 rcall uart_putchar
816 04a0 87E5 ldi r24,lo8(87)
817 04a2 00D0 rcall uart_putchar
818 04a4 8AE3 ldi r24,lo8(58)
819 04a6 00D0 rcall uart_putchar
820 04a8 81E3 ldi r24,lo8(49)
821 04aa 00D0 rcall uart_putchar
822 04ac 8EE2 ldi r24,lo8(46)
823 04ae 00D0 rcall uart_putchar
824 04b0 8091 0000 lds r24,HwVersion
825 04b4 8A5D subi r24,lo8(-(38))
826 04b6 00D0 rcall uart_putchar
827 .LM108:
828 04b8 8AE0 ldi r24,lo8(10)
829 04ba 00D0 rcall uart_putchar
830 04bc 81E4 ldi r24,lo8(65)
831 04be 00D0 rcall uart_putchar
832 04c0 84E4 ldi r24,lo8(68)
833 04c2 00D0 rcall uart_putchar
834 04c4 82E5 ldi r24,lo8(82)
835 04c6 00D0 rcall uart_putchar
836 04c8 8AE3 ldi r24,lo8(58)
837 04ca 00D0 rcall uart_putchar
838 04cc 8091 0000 lds r24,MotorAdresse
839 04d0 805D subi r24,lo8(-(48))
840 04d2 00D0 rcall uart_putchar
841 /* epilogue start */
842 .LM109:
843 04d4 0895 ret
844 .LFE11:
846 .global SIO_Sollwert
847 .global SIO_Sollwert
848 .section .bss
851 SIO_Sollwert:
852 0000 00 .skip 1,0
853 .global SioTmp
854 .global SioTmp
857 SioTmp:
858 0001 00 .skip 1,0
859 .global NeuerDatensatzEmpfangen
860 .global NeuerDatensatzEmpfangen
863 NeuerDatensatzEmpfangen:
864 0002 00 .skip 1,0
865 .global UebertragungAbgeschlossen
866 .data
869 UebertragungAbgeschlossen:
870 0000 01 .byte 1
871 .global MotorTest
872 .global MotorTest
873 .section .bss
876 MotorTest:
877 0003 0000 0000 .skip 6,0
877 0000
878 .global AnzahlEmpfangsBytes
879 .global AnzahlEmpfangsBytes
882 AnzahlEmpfangsBytes:
883 0009 00 .skip 1,0
884 .lcomm UartState.1915,1
885 .lcomm buf_ptr.1914,1
886 .lcomm crc2.1913,1
887 .lcomm crc1.1912,1
888 .lcomm crc.1911,2
889 .lcomm ptr.1846,2
890 .comm MeineSlaveAdresse,1,1
891 .comm Debug_Timer,2,1
892 .comm DebugOut,18,1
893 .comm SendeBuffer,100,1
894 .comm RxdBuffer,100,1
991 .Letext0:
DEFINED SYMBOLS
*ABS*:00000000 uart.c
C:\DOCUME~1\ADMINI~1\LOCALS~1\Temp/ccND1o1s.s:2 *ABS*:0000003f __SREG__
C:\DOCUME~1\ADMINI~1\LOCALS~1\Temp/ccND1o1s.s:3 *ABS*:0000003e __SP_H__
C:\DOCUME~1\ADMINI~1\LOCALS~1\Temp/ccND1o1s.s:4 *ABS*:0000003d __SP_L__
C:\DOCUME~1\ADMINI~1\LOCALS~1\Temp/ccND1o1s.s:5 *ABS*:00000034 __CCP__
C:\DOCUME~1\ADMINI~1\LOCALS~1\Temp/ccND1o1s.s:6 *ABS*:00000000 __tmp_reg__
C:\DOCUME~1\ADMINI~1\LOCALS~1\Temp/ccND1o1s.s:7 *ABS*:00000001 __zero_reg__
C:\DOCUME~1\ADMINI~1\LOCALS~1\Temp/ccND1o1s.s:18 .text:00000000 __vector_13
C:\DOCUME~1\ADMINI~1\LOCALS~1\Temp/ccND1o1s.s:39 .text:00000014 SendUart
C:\DOCUME~1\ADMINI~1\LOCALS~1\Temp/ccND1o1s.s:869 .data:00000000 UebertragungAbgeschlossen
C:\DOCUME~1\ADMINI~1\LOCALS~1\Temp/ccND1o1s.s:888 .bss:00000010 ptr.1846
*COM*:00000064 SendeBuffer
C:\DOCUME~1\ADMINI~1\LOCALS~1\Temp/ccND1o1s.s:93 .text:00000062 Decode64
*COM*:00000064 RxdBuffer
C:\DOCUME~1\ADMINI~1\LOCALS~1\Temp/ccND1o1s.s:223 .text:00000112 AddCRC
C:\DOCUME~1\ADMINI~1\LOCALS~1\Temp/ccND1o1s.s:297 .text:0000016e SendOutData
C:\DOCUME~1\ADMINI~1\LOCALS~1\Temp/ccND1o1s.s:443 .text:00000238 uart_putchar
C:\DOCUME~1\ADMINI~1\LOCALS~1\Temp/ccND1o1s.s:476 .text:00000252 __vector_11
C:\DOCUME~1\ADMINI~1\LOCALS~1\Temp/ccND1o1s.s:857 .bss:00000001 SioTmp
C:\DOCUME~1\ADMINI~1\LOCALS~1\Temp/ccND1o1s.s:884 .bss:0000000b buf_ptr.1914
.bss:0000000a UartState.1915
C:\DOCUME~1\ADMINI~1\LOCALS~1\Temp/ccND1o1s.s:887 .bss:0000000e crc.1911
C:\DOCUME~1\ADMINI~1\LOCALS~1\Temp/ccND1o1s.s:886 .bss:0000000d crc1.1912
C:\DOCUME~1\ADMINI~1\LOCALS~1\Temp/ccND1o1s.s:885 .bss:0000000c crc2.1913
C:\DOCUME~1\ADMINI~1\LOCALS~1\Temp/ccND1o1s.s:882 .bss:00000009 AnzahlEmpfangsBytes
C:\DOCUME~1\ADMINI~1\LOCALS~1\Temp/ccND1o1s.s:876 .bss:00000003 MotorTest
C:\DOCUME~1\ADMINI~1\LOCALS~1\Temp/ccND1o1s.s:851 .bss:00000000 SIO_Sollwert
C:\DOCUME~1\ADMINI~1\LOCALS~1\Temp/ccND1o1s.s:863 .bss:00000002 NeuerDatensatzEmpfangen
C:\DOCUME~1\ADMINI~1\LOCALS~1\Temp/ccND1o1s.s:718 .text:0000041a WriteProgramData
C:\DOCUME~1\ADMINI~1\LOCALS~1\Temp/ccND1o1s.s:731 .text:0000041c DatenUebertragung
*COM*:00000002 Debug_Timer
*COM*:00000001 MeineSlaveAdresse
*COM*:00000012 DebugOut
C:\DOCUME~1\ADMINI~1\LOCALS~1\Temp/ccND1o1s.s:764 .text:00000450 UART_Init
 
UNDEFINED SYMBOLS
MotorAdresse
SIO_Timeout
CheckDelay
SetDelay
fdevopen
HwVersion
__do_copy_data
__do_clear_bss