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