Blame | Last modification | View Log | RSS feed
1 .file "spi.c"
2 __SREG__ = 0x3f
3 __SP_H__ = 0x3e
4 __SP_L__ = 0x3d
5 __tmp_reg__ = 0
6 __zero_reg__ = 1
7 .global __do_copy_data
8 .global __do_clear_bss
9 .text
10 .global SPI_MasterInit
12 SPI_MasterInit:
13 /* prologue: frame size=0 */
14 /* prologue end (size=0) */
15 0000 84B1 in r24,36-0x20
16 0002 806A ori r24,lo8(-96)
17 0004 84B9 out 36-0x20,r24
18 0006 3D9A sbi 39-0x20,5
19 0008 82E5 ldi r24,lo8(82)
20 000a 8CBD out 76-0x20,r24
21 000c 1DBC out 77-0x20,__zero_reg__
22 000e 459A sbi 40-0x20,5
23 0010 81E0 ldi r24,lo8(1)
24 0012 8093 0000 sts SPITransferCompleted,r24
25 0016 8AEA ldi r24,lo8(-86)
26 0018 8093 0000 sts ToNaviCtrl,r24
27 001c 83E8 ldi r24,lo8(-125)
28 001e 8093 0000 sts ToNaviCtrl+1,r24
29 0022 8AE0 ldi r24,lo8(10)
30 0024 8093 0000 sts ToNaviCtrl+2,r24
31 0028 1092 0000 sts (ToNaviCtrl+3)+1,__zero_reg__
32 002c 1092 0000 sts ToNaviCtrl+3,__zero_reg__
33 0030 1092 0000 sts (ToNaviCtrl+5)+1,__zero_reg__
34 0034 1092 0000 sts ToNaviCtrl+5,__zero_reg__
35 0038 1092 0000 sts FromNaviCtrl_Value+3,__zero_reg__
36 003c 1092 0000 sts SPI_RxDataValid,__zero_reg__
37 /* epilogue: frame size=0 */
38 0040 0895 ret
39 /* epilogue end (size=1) */
40 /* function SPI_MasterInit size 33 (32) */
42 .global UpdateSPI_Buffer
44 UpdateSPI_Buffer:
45 /* prologue: frame size=0 */
46 0042 EF92 push r14
47 0044 FF92 push r15
48 0046 0F93 push r16
49 0048 1F93 push r17
50 /* prologue end (size=4) */
51 004a E090 0000 lds r14,EE_Parameter+28
52 004e FF24 clr r15
53 0050 EE0C lsl r14
54 0052 FF1C rol r15
55 0054 EE0C lsl r14
56 0056 FF1C rol r15
57 0058 0027 clr r16
58 005a F7FC sbrc r15,7
59 005c 0095 com r16
60 005e 102F mov r17,r16
61 0060 6091 0000 lds r22,IntegralNick
62 0064 7091 0000 lds r23,(IntegralNick)+1
63 0068 8091 0000 lds r24,(IntegralNick)+2
64 006c 9091 0000 lds r25,(IntegralNick)+3
65 0070 A801 movw r20,r16
66 0072 9701 movw r18,r14
67 0074 0E94 0000 call __divmodsi4
68 0078 3093 0000 sts (ToNaviCtrl+3)+1,r19
69 007c 2093 0000 sts ToNaviCtrl+3,r18
70 0080 6091 0000 lds r22,IntegralRoll
71 0084 7091 0000 lds r23,(IntegralRoll)+1
72 0088 8091 0000 lds r24,(IntegralRoll)+2
73 008c 9091 0000 lds r25,(IntegralRoll)+3
74 0090 A801 movw r20,r16
75 0092 9701 movw r18,r14
76 0094 0E94 0000 call __divmodsi4
77 0098 3093 0000 sts (ToNaviCtrl+5)+1,r19
78 009c 2093 0000 sts ToNaviCtrl+5,r18
79 00a0 6091 0000 lds r22,ErsatzKompass
80 00a4 7091 0000 lds r23,(ErsatzKompass)+1
81 00a8 8091 0000 lds r24,(ErsatzKompass)+2
82 00ac 9091 0000 lds r25,(ErsatzKompass)+3
83 00b0 2AE0 ldi r18,lo8(10)
84 00b2 30E0 ldi r19,hi8(10)
85 00b4 40E0 ldi r20,hlo8(10)
86 00b6 50E0 ldi r21,hhi8(10)
87 00b8 0E94 0000 call __mulsi3
88 00bc 2091 0000 lds r18,GIER_GRAD_FAKTOR
89 00c0 3091 0000 lds r19,(GIER_GRAD_FAKTOR)+1
90 00c4 4091 0000 lds r20,(GIER_GRAD_FAKTOR)+2
91 00c8 5091 0000 lds r21,(GIER_GRAD_FAKTOR)+3
92 00cc 0E94 0000 call __divmodsi4
93 00d0 3093 0000 sts (ToNaviCtrl+11)+1,r19
94 00d4 2093 0000 sts ToNaviCtrl+11,r18
95 00d8 2091 0000 lds r18,AdWertGier
96 00dc 3091 0000 lds r19,(AdWertGier)+1
97 00e0 8091 0000 lds r24,AdNeutralGier
98 00e4 9091 0000 lds r25,(AdNeutralGier)+1
99 00e8 821B sub r24,r18
100 00ea 930B sbc r25,r19
101 00ec 9093 0000 sts (ToNaviCtrl+17)+1,r25
102 00f0 8093 0000 sts ToNaviCtrl+17,r24
103 00f4 2091 0000 lds r18,NaviCntAcc
104 00f8 3091 0000 lds r19,(NaviCntAcc)+1
105 00fc 8091 0000 lds r24,NaviAccNick
106 0100 9091 0000 lds r25,(NaviAccNick)+1
107 0104 B901 movw r22,r18
108 0106 0E94 0000 call __divmodhi4
109 010a CB01 movw r24,r22
110 010c 880F lsl r24
111 010e 991F rol r25
112 0110 860F add r24,r22
113 0112 971F adc r25,r23
114 0114 880F lsl r24
115 0116 991F rol r25
116 0118 64E0 ldi r22,lo8(4)
117 011a 70E0 ldi r23,hi8(4)
118 011c 0E94 0000 call __divmodhi4
119 0120 7093 0000 sts (ToNaviCtrl+7)+1,r23
120 0124 6093 0000 sts ToNaviCtrl+7,r22
121 0128 8091 0000 lds r24,NaviAccRoll
122 012c 9091 0000 lds r25,(NaviAccRoll)+1
123 0130 B901 movw r22,r18
124 0132 0E94 0000 call __divmodhi4
125 0136 CB01 movw r24,r22
126 0138 880F lsl r24
127 013a 991F rol r25
128 013c 860F add r24,r22
129 013e 971F adc r25,r23
130 0140 880F lsl r24
131 0142 991F rol r25
132 0144 64E0 ldi r22,lo8(4)
133 0146 70E0 ldi r23,hi8(4)
134 0148 0E94 0000 call __divmodhi4
135 014c 7093 0000 sts (ToNaviCtrl+9)+1,r23
136 0150 6093 0000 sts ToNaviCtrl+9,r22
137 0154 1092 0000 sts (NaviCntAcc)+1,__zero_reg__
138 0158 1092 0000 sts NaviCntAcc,__zero_reg__
139 015c 1092 0000 sts (NaviAccNick)+1,__zero_reg__
140 0160 1092 0000 sts NaviAccNick,__zero_reg__
141 0164 1092 0000 sts (NaviAccRoll)+1,__zero_reg__
142 0168 1092 0000 sts NaviAccRoll,__zero_reg__
143 016c 8091 0000 lds r24,ToNaviCtrl+2
144 0170 8D30 cpi r24,lo8(13)
145 0172 01F4 brne .+2
146 0174 00C0 rjmp .L8
147 0176 8E30 cpi r24,lo8(14)
148 0178 00F4 brsh .L12
149 017a 8B30 cpi r24,lo8(11)
150 017c 01F4 brne .+2
151 017e 00C0 rjmp .L6
152 0180 8C30 cpi r24,lo8(12)
153 0182 00F0 brlo .+2
154 0184 00C0 rjmp .L7
155 0186 8A30 cpi r24,lo8(10)
156 0188 01F0 breq .+2
157 018a 00C0 rjmp .L4
158 018c 00C0 rjmp .L5
159 .L12:
160 018e 8F30 cpi r24,lo8(15)
161 0190 01F4 brne .+2
162 0192 00C0 rjmp .L10
163 0194 8F30 cpi r24,lo8(15)
164 0196 00F4 brsh .+2
165 0198 00C0 rjmp .L9
166 019a 8031 cpi r24,lo8(16)
167 019c 01F0 breq .+2
168 019e 00C0 rjmp .L4
169 01a0 00C0 rjmp .L11
170 .L5:
171 01a2 8091 0000 lds r24,Parameter_UserParam1
172 01a6 8093 0000 sts ToNaviCtrl+19,r24
173 01aa 8091 0000 lds r24,Parameter_UserParam2
174 01ae 8093 0000 sts ToNaviCtrl+20,r24
175 01b2 8091 0000 lds r24,Parameter_UserParam3
176 01b6 8093 0000 sts ToNaviCtrl+21,r24
177 01ba 8091 0000 lds r24,Parameter_UserParam4
178 01be 8093 0000 sts ToNaviCtrl+22,r24
179 01c2 8091 0000 lds r24,Parameter_UserParam5
180 01c6 8093 0000 sts ToNaviCtrl+23,r24
181 01ca 8091 0000 lds r24,Parameter_UserParam6
182 01ce 8093 0000 sts ToNaviCtrl+24,r24
183 01d2 8091 0000 lds r24,Parameter_UserParam7
184 01d6 8093 0000 sts ToNaviCtrl+25,r24
185 01da 8091 0000 lds r24,Parameter_UserParam8
186 01de 8093 0000 sts ToNaviCtrl+26,r24
187 01e2 8091 0000 lds r24,FC_StatusFlags
188 01e6 8093 0000 sts ToNaviCtrl+27,r24
189 01ea 8091 0000 lds r24,FC_StatusFlags
190 01ee 837F andi r24,lo8(-13)
191 01f0 8093 0000 sts FC_StatusFlags,r24
192 01f4 0E94 0000 call GetActiveParamSet
193 01f8 8093 0000 sts ToNaviCtrl+28,r24
194 01fc 8091 0000 lds r24,ControlHeading
195 0200 8093 0000 sts ToNaviCtrl+29,r24
196 0204 00C0 rjmp .L4
197 .L11:
198 0206 8091 0000 lds r24,Capacity
199 020a 9091 0000 lds r25,(Capacity)+1
200 020e 9093 0000 sts (ToNaviCtrl+19)+1,r25
201 0212 8093 0000 sts ToNaviCtrl+19,r24
202 0216 8091 0000 lds r24,Capacity+4
203 021a 9091 0000 lds r25,(Capacity+4)+1
204 021e 9093 0000 sts (ToNaviCtrl+21)+1,r25
205 0222 8093 0000 sts ToNaviCtrl+21,r24
206 0226 8091 0000 lds r24,UBat
207 022a 9091 0000 lds r25,(UBat)+1
208 022e 8093 0000 sts ToNaviCtrl+23,r24
209 0232 8091 0000 lds r24,BattLowVoltageWarning
210 0236 8093 0000 sts ToNaviCtrl+24,r24
211 023a 00C0 rjmp .L4
212 .L8:
213 023c 8091 0000 lds r24,EE_Parameter+80
214 0240 8093 0000 sts ToNaviCtrl+19,r24
215 0244 8091 0000 lds r24,EE_Parameter+81
216 0248 8093 0000 sts ToNaviCtrl+20,r24
217 024c 8091 0000 lds r24,EE_Parameter+82
218 0250 8093 0000 sts ToNaviCtrl+21,r24
219 0254 8091 0000 lds r24,EE_Parameter+83
220 0258 8093 0000 sts ToNaviCtrl+22,r24
221 025c 8091 0000 lds r24,EE_Parameter+84
222 0260 8093 0000 sts ToNaviCtrl+23,r24
223 0264 8091 0000 lds r24,EE_Parameter+88
224 0268 8093 0000 sts ToNaviCtrl+24,r24
225 026c 8091 0000 lds r24,EE_Parameter+89
226 0270 8093 0000 sts ToNaviCtrl+25,r24
227 0274 8091 0000 lds r24,EE_Parameter+90
228 0278 8093 0000 sts ToNaviCtrl+26,r24
229 027c 8091 0000 lds r24,EE_Parameter+93
230 0280 8093 0000 sts ToNaviCtrl+27,r24
231 0284 8091 0000 lds r24,EE_Parameter+91
232 0288 8093 0000 sts ToNaviCtrl+28,r24
233 028c 8091 0000 lds r24,EE_Parameter+92
234 0290 8093 0000 sts ToNaviCtrl+29,r24
235 0294 8091 0000 lds r24,EE_Parameter+94
236 0298 00C0 rjmp .L40
237 .L6:
238 /* #APP */
239 029a F894 cli
240 /* #NOAPP */
241 029c E091 0000 lds r30,EE_Parameter+3
242 02a0 F0E0 ldi r31,lo8(0)
243 02a2 EE0F lsl r30
244 02a4 FF1F rol r31
245 02a6 E050 subi r30,lo8(-(PPM_in))
246 02a8 F040 sbci r31,hi8(-(PPM_in))
247 02aa 0190 ld __tmp_reg__,Z+
248 02ac F081 ld r31,Z
249 02ae E02D mov r30,__tmp_reg__
250 02b0 2FEF ldi r18,hi8(-127)
251 02b2 E138 cpi r30,lo8(-127)
252 02b4 F207 cpc r31,r18
253 02b6 04F4 brge .L13
254 02b8 E1E8 ldi r30,lo8(-127)
255 02ba FFEF ldi r31,hi8(-127)
256 .L13:
257 02bc E038 cpi r30,128
258 02be F105 cpc r31,__zero_reg__
259 02c0 04F0 brlt .L14
260 02c2 EFE7 ldi r30,lo8(127)
261 02c4 F0E0 ldi r31,hi8(127)
262 .L14:
263 02c6 E093 0000 sts ToNaviCtrl+19,r30
264 02ca E091 0000 lds r30,EE_Parameter+4
265 02ce F0E0 ldi r31,lo8(0)
266 02d0 EE0F lsl r30
267 02d2 FF1F rol r31
268 02d4 E050 subi r30,lo8(-(PPM_in))
269 02d6 F040 sbci r31,hi8(-(PPM_in))
270 02d8 0190 ld __tmp_reg__,Z+
271 02da F081 ld r31,Z
272 02dc E02D mov r30,__tmp_reg__
273 02de 6FEF ldi r22,hi8(-127)
274 02e0 E138 cpi r30,lo8(-127)
275 02e2 F607 cpc r31,r22
276 02e4 04F4 brge .L15
277 02e6 E1E8 ldi r30,lo8(-127)
278 02e8 FFEF ldi r31,hi8(-127)
279 .L15:
280 02ea E038 cpi r30,128
281 02ec F105 cpc r31,__zero_reg__
282 02ee 04F0 brlt .L16
283 02f0 EFE7 ldi r30,lo8(127)
284 02f2 F0E0 ldi r31,hi8(127)
285 .L16:
286 02f4 E093 0000 sts ToNaviCtrl+20,r30
287 02f8 E091 0000 lds r30,EE_Parameter+2
288 02fc F0E0 ldi r31,lo8(0)
289 02fe EE0F lsl r30
290 0300 FF1F rol r31
291 0302 E050 subi r30,lo8(-(PPM_in))
292 0304 F040 sbci r31,hi8(-(PPM_in))
293 0306 0190 ld __tmp_reg__,Z+
294 0308 F081 ld r31,Z
295 030a E02D mov r30,__tmp_reg__
296 030c 8FEF ldi r24,hi8(-127)
297 030e E138 cpi r30,lo8(-127)
298 0310 F807 cpc r31,r24
299 0312 04F4 brge .L17
300 0314 E1E8 ldi r30,lo8(-127)
301 0316 FFEF ldi r31,hi8(-127)
302 .L17:
303 0318 E038 cpi r30,128
304 031a F105 cpc r31,__zero_reg__
305 031c 04F0 brlt .L18
306 031e EFE7 ldi r30,lo8(127)
307 0320 F0E0 ldi r31,hi8(127)
308 .L18:
309 0322 E093 0000 sts ToNaviCtrl+21,r30
310 0326 E091 0000 lds r30,EE_Parameter+1
311 032a F0E0 ldi r31,lo8(0)
312 032c EE0F lsl r30
313 032e FF1F rol r31
314 0330 E050 subi r30,lo8(-(PPM_in))
315 0332 F040 sbci r31,hi8(-(PPM_in))
316 0334 0190 ld __tmp_reg__,Z+
317 0336 F081 ld r31,Z
318 0338 E02D mov r30,__tmp_reg__
319 033a 2FEF ldi r18,hi8(-127)
320 033c E138 cpi r30,lo8(-127)
321 033e F207 cpc r31,r18
322 0340 04F4 brge .L19
323 0342 E1E8 ldi r30,lo8(-127)
324 0344 FFEF ldi r31,hi8(-127)
325 .L19:
326 /* #APP */
327 0346 7894 sei
328 /* #NOAPP */
329 0348 E038 cpi r30,128
330 034a F105 cpc r31,__zero_reg__
331 034c 04F0 brlt .L20
332 034e EFE7 ldi r30,lo8(127)
333 0350 F0E0 ldi r31,hi8(127)
334 .L20:
335 0352 E093 0000 sts ToNaviCtrl+22,r30
336 0356 8091 0000 lds r24,Poti
337 035a 8093 0000 sts ToNaviCtrl+23,r24
338 035e 8091 0000 lds r24,Poti+1
339 0362 8093 0000 sts ToNaviCtrl+24,r24
340 0366 8091 0000 lds r24,Poti+2
341 036a 8093 0000 sts ToNaviCtrl+25,r24
342 036e 8091 0000 lds r24,Poti+3
343 0372 8093 0000 sts ToNaviCtrl+26,r24
344 0376 8091 0000 lds r24,Poti+4
345 037a 8093 0000 sts ToNaviCtrl+27,r24
346 037e 8091 0000 lds r24,Poti+5
347 0382 8093 0000 sts ToNaviCtrl+28,r24
348 0386 8091 0000 lds r24,Poti+6
349 038a 8093 0000 sts ToNaviCtrl+29,r24
350 038e 8091 0000 lds r24,Poti+7
351 .L40:
352 0392 8093 0000 sts ToNaviCtrl+30,r24
353 0396 00C0 rjmp .L4
354 .L7:
355 0398 8091 0000 lds r24,WinkelOut+6
356 039c 8630 cpi r24,lo8(6)
357 039e 00F0 brlo .L21
358 03a0 1092 0000 sts WinkelOut+6,__zero_reg__
359 03a4 85E0 ldi r24,lo8(5)
360 .L21:
361 03a6 8093 0000 sts ToNaviCtrl+19,r24
362 03aa 8091 0000 lds r24,EE_Parameter+95
363 03ae 8093 0000 sts ToNaviCtrl+20,r24
364 03b2 6091 0000 lds r22,HoehenWert
365 03b6 7091 0000 lds r23,(HoehenWert)+1
366 03ba 8091 0000 lds r24,(HoehenWert)+2
367 03be 9091 0000 lds r25,(HoehenWert)+3
368 03c2 25E0 ldi r18,lo8(5)
369 03c4 30E0 ldi r19,hi8(5)
370 03c6 40E0 ldi r20,hlo8(5)
371 03c8 50E0 ldi r21,hhi8(5)
372 03ca 0E94 0000 call __divmodsi4
373 03ce 3093 0000 sts (ToNaviCtrl+21)+1,r19
374 03d2 2093 0000 sts ToNaviCtrl+21,r18
375 03d6 6091 0000 lds r22,SollHoehe
376 03da 7091 0000 lds r23,(SollHoehe)+1
377 03de 8091 0000 lds r24,(SollHoehe)+2
378 03e2 9091 0000 lds r25,(SollHoehe)+3
379 03e6 25E0 ldi r18,lo8(5)
380 03e8 30E0 ldi r19,hi8(5)
381 03ea 40E0 ldi r20,hlo8(5)
382 03ec 50E0 ldi r21,hhi8(5)
383 03ee 0E94 0000 call __divmodsi4
384 03f2 3093 0000 sts (ToNaviCtrl+23)+1,r19
385 03f6 2093 0000 sts ToNaviCtrl+23,r18
386 03fa 8091 0000 lds r24,EE_Parameter+85
387 03fe 8093 0000 sts ToNaviCtrl+25,r24
388 0402 8091 0000 lds r24,EE_Parameter+86
389 0406 8093 0000 sts ToNaviCtrl+26,r24
390 040a 8091 0000 lds r24,EE_Parameter+87
391 040e 8093 0000 sts ToNaviCtrl+27,r24
392 0412 8091 0000 lds r24,SenderOkay
393 0416 8093 0000 sts ToNaviCtrl+28,r24
394 041a 8091 0000 lds r24,PPM_in
395 041e 9091 0000 lds r25,(PPM_in)+1
396 0422 8093 0000 sts ToNaviCtrl+29,r24
397 0426 8091 0000 lds r24,DebugOut+16
398 042a 9091 0000 lds r25,(DebugOut+16)+1
399 042e 64E0 ldi r22,lo8(4)
400 0430 70E0 ldi r23,hi8(4)
401 0432 0E94 0000 call __divmodhi4
402 0436 6093 0000 sts ToNaviCtrl+30,r22
403 043a 00C0 rjmp .L4
404 .L9:
405 043c 1092 0000 sts ToNaviCtrl+19,__zero_reg__
406 0440 82E5 ldi r24,lo8(82)
407 0442 8093 0000 sts ToNaviCtrl+20,r24
408 0446 1092 0000 sts ToNaviCtrl+21,__zero_reg__
409 044a 80E1 ldi r24,lo8(16)
410 044c 8093 0000 sts ToNaviCtrl+22,r24
411 0450 8091 0000 lds r24,PlatinenVersion
412 0454 8093 0000 sts ToNaviCtrl+23,r24
413 0458 8091 0000 lds r24,VersionInfo+5
414 045c 8093 0000 sts ToNaviCtrl+24,r24
415 0460 8091 0000 lds r24,VersionInfo+6
416 0464 8093 0000 sts ToNaviCtrl+25,r24
417 0468 8091 0000 lds r24,VersionInfo+7
418 046c 8093 0000 sts ToNaviCtrl+26,r24
419 0470 8091 0000 lds r24,VersionInfo+8
420 0474 8093 0000 sts ToNaviCtrl+27,r24
421 0478 8091 0000 lds r24,VersionInfo+9
422 047c 00C0 rjmp .L41
423 .L10:
424 047e 8091 0000 lds r24,EE_Parameter+53
425 0482 8093 0000 sts ToNaviCtrl+19,r24
426 0486 8091 0000 lds r24,EE_Parameter+101
427 048a 8093 0000 sts ToNaviCtrl+20,r24
428 048e 8091 0000 lds r24,Parameter_ServoNickControl
429 0492 8093 0000 sts ToNaviCtrl+21,r24
430 0496 8091 0000 lds r24,EE_Parameter+46
431 049a 8093 0000 sts ToNaviCtrl+22,r24
432 049e 8091 0000 lds r24,EE_Parameter+47
433 04a2 8093 0000 sts ToNaviCtrl+23,r24
434 04a6 8091 0000 lds r24,EE_Parameter+48
435 04aa 8093 0000 sts ToNaviCtrl+24,r24
436 04ae 8091 0000 lds r24,Parameter_ServoRollControl
437 04b2 8093 0000 sts ToNaviCtrl+25,r24
438 04b6 8091 0000 lds r24,EE_Parameter+50
439 04ba 8093 0000 sts ToNaviCtrl+26,r24
440 04be 8091 0000 lds r24,EE_Parameter+51
441 04c2 8093 0000 sts ToNaviCtrl+27,r24
442 04c6 8091 0000 lds r24,EE_Parameter+52
443 .L41:
444 04ca 8093 0000 sts ToNaviCtrl+28,r24
445 .L4:
446 04ce 8091 0000 lds r24,SPI_RxDataValid
447 04d2 8823 tst r24
448 04d4 01F4 brne .+2
449 04d6 00C0 rjmp .L24
450 04d8 8AEF ldi r24,lo8(-6)
451 04da 8093 0000 sts NaviDataOkay,r24
452 04de 4091 0000 lds r20,FromNaviCtrl+1
453 04e2 5091 0000 lds r21,(FromNaviCtrl+1)+1
454 04e6 CA01 movw r24,r20
455 04e8 8150 subi r24,lo8(-(511))
456 04ea 9E4F sbci r25,hi8(-(511))
457 04ec 8F5F subi r24,lo8(1023)
458 04ee 9340 sbci r25,hi8(1023)
459 04f0 00F4 brsh .L26
460 04f2 2091 0000 lds r18,FromNaviCtrl+3
461 04f6 3091 0000 lds r19,(FromNaviCtrl+3)+1
462 04fa C901 movw r24,r18
463 04fc 8150 subi r24,lo8(-(511))
464 04fe 9E4F sbci r25,hi8(-(511))
465 0500 8F5F subi r24,lo8(1023)
466 0502 9340 sbci r25,hi8(1023)
467 0504 00F4 brsh .L26
468 0506 8091 0000 lds r24,EE_Parameter+13
469 050a 85FF sbrs r24,5
470 050c 00C0 rjmp .L26
471 050e 5093 0000 sts (GPS_Nick)+1,r21
472 0512 4093 0000 sts GPS_Nick,r20
473 0516 3093 0000 sts (GPS_Roll)+1,r19
474 051a 2093 0000 sts GPS_Roll,r18
475 .L26:
476 051e 8091 0000 lds r24,FromNaviCtrl+7
477 0522 9091 0000 lds r25,(FromNaviCtrl+7)+1
478 0526 21E0 ldi r18,hi8(361)
479 0528 8936 cpi r24,lo8(361)
480 052a 9207 cpc r25,r18
481 052c 04F4 brge .L30
482 052e 9093 0000 sts (KompassValue)+1,r25
483 0532 8093 0000 sts KompassValue,r24
484 .L30:
485 0536 8091 0000 lds r24,KompassValue
486 053a 9091 0000 lds r25,(KompassValue)+1
487 053e 845E subi r24,lo8(-(540))
488 0540 9D4F sbci r25,hi8(-(540))
489 0542 2091 0000 lds r18,KompassStartwert
490 0546 3091 0000 lds r19,(KompassStartwert)+1
491 054a 821B sub r24,r18
492 054c 930B sbc r25,r19
493 054e 68E6 ldi r22,lo8(360)
494 0550 71E0 ldi r23,hi8(360)
495 0552 0E94 0000 call __divmodhi4
496 0556 845B subi r24,lo8(-(-180))
497 0558 9040 sbci r25,hi8(-(-180))
498 055a 9093 0000 sts (KompassRichtung)+1,r25
499 055e 8093 0000 sts KompassRichtung,r24
500 0562 2091 0000 lds r18,FromNaviCtrl+11
501 0566 3091 0000 lds r19,(FromNaviCtrl+11)+1
502 056a 8091 0000 lds r24,beeptime
503 056e 9091 0000 lds r25,(beeptime)+1
504 0572 8217 cp r24,r18
505 0574 9307 cpc r25,r19
506 0576 00F4 brsh .L32
507 0578 8091 0000 lds r24,WinkelOut+6
508 057c 8823 tst r24
509 057e 01F4 brne .L32
510 0580 3093 0000 sts (beeptime)+1,r19
511 0584 2093 0000 sts beeptime,r18
512 .L32:
513 0588 8091 0000 lds r24,FromNaviCtrl
514 058c 8836 cpi r24,lo8(104)
515 058e 01F0 breq .L37
516 0590 8936 cpi r24,lo8(105)
517 0592 01F4 brne .+2
518 0594 00C0 rjmp .L38
519 0596 8736 cpi r24,lo8(103)
520 0598 01F0 breq .+2
521 059a 00C0 rjmp .L39
522 059c 8091 0000 lds r24,FromNaviCtrl+13
523 05a0 8093 0000 sts FromNaviCtrl_Value,r24
524 05a4 8091 0000 lds r24,FromNaviCtrl+14
525 05a8 8093 0000 sts FromNaviCtrl_Value+2,r24
526 05ac 8091 0000 lds r24,FromNaviCtrl+15
527 05b0 8093 0000 sts FromNaviCtrl_Value+1,r24
528 05b4 8091 0000 lds r24,FromNaviCtrl+16
529 05b8 8093 0000 sts FromNaviCtrl_Value+3,r24
530 05bc 8091 0000 lds r24,FromNaviCtrl+17
531 05c0 8093 0000 sts FromNaviCtrl_Value+4,r24
532 05c4 8091 0000 lds r24,FromNaviCtrl+18
533 05c8 8093 0000 sts FromNC_Rotate_C,r24
534 05cc 8091 0000 lds r24,FromNaviCtrl+19
535 05d0 8093 0000 sts FromNC_Rotate_S,r24
536 05d4 00C0 rjmp .L39
537 .L37:
538 05d6 8091 0000 lds r24,FromNaviCtrl+13
539 05da 8093 0000 sts NC_Version,r24
540 05de 8091 0000 lds r24,FromNaviCtrl+14
541 05e2 8093 0000 sts NC_Version+1,r24
542 05e6 8091 0000 lds r24,FromNaviCtrl+15
543 05ea 8093 0000 sts NC_Version+2,r24
544 05ee 8091 0000 lds r24,FromNaviCtrl+16
545 05f2 8093 0000 sts NC_Version+3,r24
546 05f6 8091 0000 lds r24,FromNaviCtrl+17
547 05fa 8093 0000 sts NC_Version+4,r24
548 05fe 8091 0000 lds r24,FromNaviCtrl+18
549 0602 9091 0000 lds r25,DebugOut
550 0606 892B or r24,r25
551 0608 8093 0000 sts DebugOut,r24
552 060c 9091 0000 lds r25,FromNaviCtrl+19
553 0610 9093 0000 sts NC_ErrorCode,r25
554 0614 9C70 andi r25,lo8(12)
555 0616 8091 0000 lds r24,DebugOut+1
556 061a 8370 andi r24,lo8(3)
557 061c 982B or r25,r24
558 061e 9093 0000 sts DebugOut+1,r25
559 0622 00C0 rjmp .L39
560 .L38:
561 0624 8091 0000 lds r24,FromNaviCtrl+13
562 0628 8093 0000 sts GPSInfo,r24
563 062c 8091 0000 lds r24,FromNaviCtrl+14
564 0630 8093 0000 sts GPSInfo+1,r24
565 0634 8091 0000 lds r24,FromNaviCtrl+15
566 0638 8093 0000 sts GPSInfo+2,r24
567 063c 8091 0000 lds r24,FromNaviCtrl+16
568 0640 8093 0000 sts GPSInfo+3,r24
569 0644 8091 0000 lds r24,FromNaviCtrl+17
570 0648 9091 0000 lds r25,(FromNaviCtrl+17)+1
571 064c 9093 0000 sts (GPSInfo+4)+1,r25
572 0650 8093 0000 sts GPSInfo+4,r24
573 0654 8091 0000 lds r24,FromNaviCtrl+19
574 0658 9091 0000 lds r25,(FromNaviCtrl+19)+1
575 065c 9093 0000 sts (GPSInfo+6)+1,r25
576 0660 8093 0000 sts GPSInfo+6,r24
577 0664 8091 0000 lds r24,FromNaviCtrl+21
578 0668 9927 clr r25
579 066a 87FD sbrc r24,7
580 066c 9095 com r25
581 066e 9093 0000 sts (PPM_in+50)+1,r25
582 0672 8093 0000 sts PPM_in+50,r24
583 0676 00C0 rjmp .L39
584 .L24:
585 0678 1092 0000 sts (GPS_Nick)+1,__zero_reg__
586 067c 1092 0000 sts GPS_Nick,__zero_reg__
587 0680 1092 0000 sts (GPS_Roll)+1,__zero_reg__
588 0684 1092 0000 sts GPS_Roll,__zero_reg__
589 .L39:
590 /* epilogue: frame size=0 */
591 0688 1F91 pop r17
592 068a 0F91 pop r16
593 068c FF90 pop r15
594 068e EF90 pop r14
595 0690 0895 ret
596 /* epilogue end (size=5) */
597 /* function UpdateSPI_Buffer size 812 (803) */
599 .global SPI_StartTransmitPacket
601 SPI_StartTransmitPacket:
602 /* prologue: frame size=0 */
603 /* prologue end (size=0) */
604 0692 8091 0000 lds r24,SPITransferCompleted
605 0696 8823 tst r24
606 0698 01F4 brne .+2
607 069a 00C0 rjmp .L47
608 069c 4598 cbi 40-0x20,5
609 069e 80E0 ldi r24,lo8(ToNaviCtrl)
610 06a0 90E0 ldi r25,hi8(ToNaviCtrl)
611 06a2 9093 0000 sts (SPI_TX_Buffer)+1,r25
612 06a6 8093 0000 sts SPI_TX_Buffer,r24
613 06aa 9091 0000 lds r25,SPI_CommandCounter
614 06ae E92F mov r30,r25
615 06b0 F0E0 ldi r31,lo8(0)
616 06b2 E050 subi r30,lo8(-(SPI_CommandSequence))
617 06b4 F040 sbci r31,hi8(-(SPI_CommandSequence))
618 06b6 8081 ld r24,Z
619 06b8 8093 0000 sts ToNaviCtrl+2,r24
620 06bc 9F5F subi r25,lo8(-(1))
621 06be 9093 0000 sts SPI_CommandCounter,r25
622 06c2 9930 cpi r25,lo8(9)
623 06c4 00F0 brlo .L45
624 06c6 1092 0000 sts SPI_CommandCounter,__zero_reg__
625 .L45:
626 06ca 1092 0000 sts SPITransferCompleted,__zero_reg__
627 06ce 0E94 0000 call UpdateSPI_Buffer
628 06d2 81E0 ldi r24,lo8(1)
629 06d4 8093 0000 sts SPI_BufferIndex,r24
630 /* #APP */
631 06d8 0000 nop
632 06da 0000 nop
633 06dc 0000 nop
634 06de 0000 nop
635 06e0 0000 nop
636 06e2 0000 nop
637 06e4 0000 nop
638 06e6 0000 nop
639 06e8 0000 nop
640 06ea 0000 nop
641 06ec 0000 nop
642 06ee 0000 nop
643 06f0 0000 nop
644 06f2 0000 nop
645 06f4 0000 nop
646 06f6 0000 nop
647 06f8 0000 nop
648 06fa 0000 nop
649 06fc 0000 nop
650 06fe 0000 nop
651 0700 0000 nop
652 0702 0000 nop
653 0704 0000 nop
654 0706 0000 nop
655 /* #NOAPP */
656 0708 8091 0000 lds r24,ToNaviCtrl
657 070c 8093 0000 sts ToNaviCtrl+31,r24
658 0710 8EBD out 78-0x20,r24
659 .L47:
660 0712 0895 ret
661 /* epilogue: frame size=0 */
662 /* epilogue: noreturn */
663 /* epilogue end (size=0) */
664 /* function SPI_StartTransmitPacket size 89 (89) */
666 .global SPI_TransmitByte
668 SPI_TransmitByte:
669 /* prologue: frame size=0 */
670 /* prologue end (size=0) */
671 0714 8091 0000 lds r24,SPITransferCompleted
672 0718 8823 tst r24
673 071a 01F0 breq .+2
674 071c 00C0 rjmp .L68
675 071e 0DB4 in __tmp_reg__,77-0x20
676 0720 07FE sbrs __tmp_reg__,7
677 0722 00C0 rjmp .L68
678 0724 84E0 ldi r24,lo8(4)
679 0726 8093 0000 sts SendSPI,r24
680 072a 459A sbi 40-0x20,5
681 072c 2EB5 in r18,78-0x20
682 072e 8091 0000 lds r24,SPI_RXState.2528
683 0732 8130 cpi r24,lo8(1)
684 0734 01F0 breq .L54
685 0736 8130 cpi r24,lo8(1)
686 0738 00F0 brlo .L53
687 073a 8230 cpi r24,lo8(2)
688 073c 01F4 brne .L52
689 073e 00C0 rjmp .L55
690 .L53:
691 0740 1092 0000 sts SPI_RxBufferIndex,__zero_reg__
692 0744 2093 0000 sts rxchksum.2530,r18
693 0748 2138 cpi r18,lo8(-127)
694 074a 01F4 brne .L52
695 074c 81E0 ldi r24,lo8(1)
696 074e 00C0 rjmp .L71
697 .L54:
698 0750 2535 cpi r18,lo8(85)
699 0752 01F4 brne .L64
700 0754 8091 0000 lds r24,rxchksum.2530
701 0758 8B5A subi r24,lo8(-(85))
702 075a 8093 0000 sts rxchksum.2530,r24
703 075e 82E0 ldi r24,lo8(2)
704 .L71:
705 0760 8093 0000 sts SPI_RXState.2528,r24
706 0764 00C0 rjmp .L52
707 .L55:
708 0766 8091 0000 lds r24,SPI_RxBufferIndex
709 076a E82F mov r30,r24
710 076c F0E0 ldi r31,lo8(0)
711 076e E050 subi r30,lo8(-(SPI_Buffer))
712 0770 F040 sbci r31,hi8(-(SPI_Buffer))
713 0772 2083 st Z,r18
714 0774 8F5F subi r24,lo8(-(1))
715 0776 8093 0000 sts SPI_RxBufferIndex,r24
716 077a 9091 0000 lds r25,rxchksum.2530
717 077e 8A31 cpi r24,lo8(26)
718 0780 00F0 brlo .L59
719 0782 2917 cp r18,r25
720 0784 01F4 brne .L61
721 0786 A0E0 ldi r26,lo8(FromNaviCtrl)
722 0788 B0E0 ldi r27,hi8(FromNaviCtrl)
723 078a E0E0 ldi r30,lo8(SPI_Buffer)
724 078c F0E0 ldi r31,hi8(SPI_Buffer)
725 078e 8AE1 ldi r24,lo8(26)
726 .L63:
727 0790 0190 ld r0,Z+
728 0792 0D92 st X+,r0
729 0794 8150 subi r24,lo8(-(-1))
730 0796 01F4 brne .L63
731 0798 81E0 ldi r24,lo8(1)
732 079a 8093 0000 sts SPI_RxDataValid,r24
733 079e 00C0 rjmp .L64
734 .L61:
735 07a0 1092 0000 sts SPI_RxDataValid,__zero_reg__
736 .L64:
737 07a4 1092 0000 sts SPI_RXState.2528,__zero_reg__
738 07a8 00C0 rjmp .L52
739 .L59:
740 07aa 920F add r25,r18
741 07ac 9093 0000 sts rxchksum.2530,r25
742 .L52:
743 07b0 2091 0000 lds r18,SPI_BufferIndex
744 07b4 2032 cpi r18,lo8(32)
745 07b6 00F0 brlo .+2
746 07b8 00C0 rjmp .L65
747 07ba 4598 cbi 40-0x20,5
748 /* #APP */
749 07bc 0000 nop
750 07be 0000 nop
751 07c0 0000 nop
752 07c2 0000 nop
753 07c4 0000 nop
754 07c6 0000 nop
755 07c8 0000 nop
756 07ca 0000 nop
757 07cc 0000 nop
758 07ce 0000 nop
759 07d0 0000 nop
760 07d2 0000 nop
761 07d4 0000 nop
762 07d6 0000 nop
763 07d8 0000 nop
764 07da 0000 nop
765 07dc 0000 nop
766 07de 0000 nop
767 07e0 0000 nop
768 07e2 0000 nop
769 07e4 0000 nop
770 07e6 0000 nop
771 07e8 0000 nop
772 07ea 0000 nop
773 /* #NOAPP */
774 07ec E091 0000 lds r30,SPI_TX_Buffer
775 07f0 F091 0000 lds r31,(SPI_TX_Buffer)+1
776 07f4 E20F add r30,r18
777 07f6 F11D adc r31,__zero_reg__
778 07f8 8081 ld r24,Z
779 07fa 8EBD out 78-0x20,r24
780 07fc 8081 ld r24,Z
781 07fe 9091 0000 lds r25,ToNaviCtrl+31
782 0802 890F add r24,r25
783 0804 8093 0000 sts ToNaviCtrl+31,r24
784 0808 00C0 rjmp .L67
785 .L65:
786 080a 81E0 ldi r24,lo8(1)
787 080c 8093 0000 sts SPITransferCompleted,r24
788 .L67:
789 0810 2F5F subi r18,lo8(-(1))
790 0812 2093 0000 sts SPI_BufferIndex,r18
791 .L68:
792 0816 0895 ret
793 /* epilogue: frame size=0 */
794 /* epilogue: noreturn */
795 /* epilogue end (size=0) */
796 /* function SPI_TransmitByte size 155 (155) */
798 .global FromNC_Rotate_C
799 .data
802 FromNC_Rotate_C:
803 0000 20 .byte 32
804 .global FromNC_Rotate_S
805 .global FromNC_Rotate_S
806 .section .bss
809 FromNC_Rotate_S:
810 0000 00 .skip 1,0
811 .global NaviDataOkay
812 .data
815 NaviDataOkay:
816 0001 FA .byte -6
817 .global SPI_CommandSequence
820 SPI_CommandSequence:
821 0002 0B .byte 11
822 0003 0A .byte 10
823 0004 0D .byte 13
824 0005 0B .byte 11
825 0006 0C .byte 12
826 0007 0E .byte 14
827 0008 0B .byte 11
828 0009 0F .byte 15
829 000a 10 .byte 16
830 .global SPI_CommandCounter
831 .global SPI_CommandCounter
832 .section .bss
835 SPI_CommandCounter:
836 0001 00 .skip 1,0
837 .global NC_ErrorCode
838 .global NC_ErrorCode
841 NC_ErrorCode:
842 0002 00 .skip 1,0
843 .lcomm rxchksum.2530,1
844 .lcomm SPI_RXState.2528,1
845 .comm GPSInfo,8,1
846 .comm NC_Version,5,1
847 .comm FromNaviCtrl_Value,5,1
848 .comm ToNaviCtrl,32,1
849 .comm FromNaviCtrl,26,1
850 .comm SPI_BufferIndex,1,1
851 .comm SPI_RxBufferIndex,1,1
852 .comm SPI_Buffer,26,1
853 .comm SPI_TX_Buffer,2,1
854 .comm SPITransferCompleted,1,1
855 .comm SPI_ChkSum,1,1
856 .comm SPI_RxDataValid,1,1
857 /* File "spi.c": code 1089 = 0x0441 (1079), prologues 4, epilogues 6 */
DEFINED SYMBOLS
*ABS*:00000000 spi.c
C:\DOCUME~1\Owner\LOCALS~1\Temp/cc50rVab.s:2 *ABS*:0000003f __SREG__
C:\DOCUME~1\Owner\LOCALS~1\Temp/cc50rVab.s:3 *ABS*:0000003e __SP_H__
C:\DOCUME~1\Owner\LOCALS~1\Temp/cc50rVab.s:4 *ABS*:0000003d __SP_L__
C:\DOCUME~1\Owner\LOCALS~1\Temp/cc50rVab.s:5 *ABS*:00000000 __tmp_reg__
C:\DOCUME~1\Owner\LOCALS~1\Temp/cc50rVab.s:6 *ABS*:00000001 __zero_reg__
C:\DOCUME~1\Owner\LOCALS~1\Temp/cc50rVab.s:12 .text:00000000 SPI_MasterInit
*COM*:00000001 SPITransferCompleted
*COM*:00000020 ToNaviCtrl
*COM*:00000005 FromNaviCtrl_Value
*COM*:00000001 SPI_RxDataValid
C:\DOCUME~1\Owner\LOCALS~1\Temp/cc50rVab.s:44 .text:00000042 UpdateSPI_Buffer
C:\DOCUME~1\Owner\LOCALS~1\Temp/cc50rVab.s:815 .data:00000001 NaviDataOkay
*COM*:0000001a FromNaviCtrl
C:\DOCUME~1\Owner\LOCALS~1\Temp/cc50rVab.s:802 .data:00000000 FromNC_Rotate_C
C:\DOCUME~1\Owner\LOCALS~1\Temp/cc50rVab.s:809 .bss:00000000 FromNC_Rotate_S
*COM*:00000005 NC_Version
C:\DOCUME~1\Owner\LOCALS~1\Temp/cc50rVab.s:841 .bss:00000002 NC_ErrorCode
*COM*:00000008 GPSInfo
C:\DOCUME~1\Owner\LOCALS~1\Temp/cc50rVab.s:601 .text:00000692 SPI_StartTransmitPacket
*COM*:00000002 SPI_TX_Buffer
C:\DOCUME~1\Owner\LOCALS~1\Temp/cc50rVab.s:835 .bss:00000001 SPI_CommandCounter
C:\DOCUME~1\Owner\LOCALS~1\Temp/cc50rVab.s:820 .data:00000002 SPI_CommandSequence
*COM*:00000001 SPI_BufferIndex
C:\DOCUME~1\Owner\LOCALS~1\Temp/cc50rVab.s:668 .text:00000714 SPI_TransmitByte
C:\DOCUME~1\Owner\LOCALS~1\Temp/cc50rVab.s:843 .bss:00000004 SPI_RXState.2528
*COM*:00000001 SPI_RxBufferIndex
.bss:00000003 rxchksum.2530
*COM*:0000001a SPI_Buffer
*COM*:00000001 SPI_ChkSum
UNDEFINED SYMBOLS
__do_copy_data
__do_clear_bss
EE_Parameter
IntegralNick
__divmodsi4
IntegralRoll
ErsatzKompass
__mulsi3
GIER_GRAD_FAKTOR
AdWertGier
AdNeutralGier
NaviCntAcc
NaviAccNick
__divmodhi4
NaviAccRoll
Parameter_UserParam1
Parameter_UserParam2
Parameter_UserParam3
Parameter_UserParam4
Parameter_UserParam5
Parameter_UserParam6
Parameter_UserParam7
Parameter_UserParam8
FC_StatusFlags
GetActiveParamSet
ControlHeading
Capacity
UBat
BattLowVoltageWarning
PPM_in
Poti
WinkelOut
HoehenWert
SollHoehe
SenderOkay
DebugOut
PlatinenVersion
VersionInfo
Parameter_ServoNickControl
Parameter_ServoRollControl
GPS_Nick
GPS_Roll
KompassValue
KompassStartwert
KompassRichtung
beeptime
SendSPI