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 80E0 ldi r24,lo8(ToNaviCtrl) 23 0012 90E0 ldi r25,hi8(ToNaviCtrl) 24 0014 9093 0000 sts (SPI_TxBuffer)+1,r25 25 0018 8093 0000 sts SPI_TxBuffer,r24 26 001c 81E0 ldi r24,lo8(1) 27 001e 8093 0000 sts SPITransferCompleted,r24 28 0022 8AEA ldi r24,lo8(-86) 29 0024 8093 0000 sts ToNaviCtrl,r24 30 0028 83E8 ldi r24,lo8(-125) 31 002a 8093 0000 sts ToNaviCtrl+1,r24 32 002e 9AE0 ldi r25,lo8(10) 33 0030 9093 0000 sts ToNaviCtrl+2,r25 34 0034 1092 0000 sts (ToNaviCtrl+3)+1,__zero_reg__ 35 0038 1092 0000 sts ToNaviCtrl+3,__zero_reg__ 36 003c 1092 0000 sts (ToNaviCtrl+5)+1,__zero_reg__ 37 0040 1092 0000 sts ToNaviCtrl+5,__zero_reg__ 38 0044 1092 0000 sts NCSerialDataOkay,__zero_reg__ 39 0048 1092 0000 sts NCDataOkay,__zero_reg__ 40 004c 1092 0000 sts SPI_RxDataValid,__zero_reg__ 41 0050 1092 0000 sts SPI_VersionInfo,__zero_reg__ 42 0054 8CE4 ldi r24,lo8(76) 43 0056 8093 0000 sts SPI_VersionInfo+1,r24 44 005a 86E0 ldi r24,lo8(6) 45 005c 8093 0000 sts SPI_VersionInfo+2,r24 46 0060 9093 0000 sts SPI_VersionInfo+3,r25 47 /* epilogue start */ 48 0064 0895 ret 50 .global SPI_TransmitByte 52 SPI_TransmitByte: 53 /* prologue: function */ 54 /* frame size = 0 */ 55 0066 8091 0000 lds r24,SPITransferCompleted 56 006a 8823 tst r24 57 006c 01F4 brne .L15 58 006e 0DB4 in __tmp_reg__,77-32 59 0070 07FE sbrs __tmp_reg__,7 60 .L15: 61 0072 0895 ret 62 .L18: 63 0074 84E0 ldi r24,lo8(4) 64 0076 8093 0000 sts SendSPI,r24 65 007a 459A sbi 40-32,5 66 007c 9EB5 in r25,78-32 67 007e 8091 0000 lds r24,SPI_RXState.2020 68 0082 8130 cpi r24,lo8(1) 69 0084 01F4 brne .+2 70 0086 00C0 rjmp .L7 71 0088 8130 cpi r24,lo8(1) 72 008a 00F0 brlo .+2 73 008c 00C0 rjmp .L19 74 008e 1092 0000 sts SPI_RxBufferIndex,__zero_reg__ 75 0092 9093 0000 sts rxchksum.2022,r25 76 0096 9138 cpi r25,lo8(-127) 77 0098 01F4 brne .+2 78 009a 00C0 rjmp .L20 79 .L5: 80 009c 2091 0000 lds r18,SPI_TxBufferIndex 81 00a0 2032 cpi r18,lo8(32) 82 00a2 00F0 brlo .L21 83 00a4 81E0 ldi r24,lo8(1) 84 00a6 8093 0000 sts SPITransferCompleted,r24 85 00aa 0895 ret 86 .L21: 87 00ac 4598 cbi 40-32,5 88 /* #APP */ 89 ; 460 "spi.c" 1 90 00ae 0000 nop 91 ; 0 "" 2 92 ; 460 "spi.c" 1 93 00b0 0000 nop 94 ; 0 "" 2 95 ; 460 "spi.c" 1 96 00b2 0000 nop 97 ; 0 "" 2 98 ; 460 "spi.c" 1 99 00b4 0000 nop 100 ; 0 "" 2 101 ; 460 "spi.c" 1 102 00b6 0000 nop 103 ; 0 "" 2 104 ; 460 "spi.c" 1 105 00b8 0000 nop 106 ; 0 "" 2 107 ; 460 "spi.c" 1 108 00ba 0000 nop 109 ; 0 "" 2 110 ; 460 "spi.c" 1 111 00bc 0000 nop 112 ; 0 "" 2 113 ; 461 "spi.c" 1 114 00be 0000 nop 115 ; 0 "" 2 116 ; 461 "spi.c" 1 117 00c0 0000 nop 118 ; 0 "" 2 119 ; 461 "spi.c" 1 120 00c2 0000 nop 121 ; 0 "" 2 122 ; 461 "spi.c" 1 123 00c4 0000 nop 124 ; 0 "" 2 125 ; 461 "spi.c" 1 126 00c6 0000 nop 127 ; 0 "" 2 128 ; 461 "spi.c" 1 129 00c8 0000 nop 130 ; 0 "" 2 131 ; 461 "spi.c" 1 132 00ca 0000 nop 133 ; 0 "" 2 134 ; 461 "spi.c" 1 135 00cc 0000 nop 136 ; 0 "" 2 137 ; 462 "spi.c" 1 138 00ce 0000 nop 139 ; 0 "" 2 140 ; 462 "spi.c" 1 141 00d0 0000 nop 142 ; 0 "" 2 143 ; 462 "spi.c" 1 144 00d2 0000 nop 145 ; 0 "" 2 146 ; 462 "spi.c" 1 147 00d4 0000 nop 148 ; 0 "" 2 149 ; 462 "spi.c" 1 150 00d6 0000 nop 151 ; 0 "" 2 152 ; 462 "spi.c" 1 153 00d8 0000 nop 154 ; 0 "" 2 155 ; 462 "spi.c" 1 156 00da 0000 nop 157 ; 0 "" 2 158 ; 462 "spi.c" 1 159 00dc 0000 nop 160 ; 0 "" 2 161 /* #NOAPP */ 162 00de E091 0000 lds r30,SPI_TxBuffer 163 00e2 F091 0000 lds r31,(SPI_TxBuffer)+1 164 00e6 E20F add r30,r18 165 00e8 F11D adc r31,__zero_reg__ 166 00ea 8081 ld r24,Z 167 00ec 8EBD out 78-32,r24 168 00ee 9091 0000 lds r25,ToNaviCtrl+31 169 00f2 890F add r24,r25 170 00f4 8093 0000 sts ToNaviCtrl+31,r24 171 00f8 2F5F subi r18,lo8(-(1)) 172 00fa 2093 0000 sts SPI_TxBufferIndex,r18 173 00fe 0895 ret 174 .L19: 175 0100 8230 cpi r24,lo8(2) 176 0102 01F0 breq .+2 177 0104 00C0 rjmp .L5 178 0106 8091 0000 lds r24,SPI_RxBufferIndex 179 010a E82F mov r30,r24 180 010c F0E0 ldi r31,lo8(0) 181 010e E050 subi r30,lo8(-(SPI_RxBuffer)) 182 0110 F040 sbci r31,hi8(-(SPI_RxBuffer)) 183 0112 9083 st Z,r25 184 0114 8F5F subi r24,lo8(-(1)) 185 0116 8093 0000 sts SPI_RxBufferIndex,r24 186 011a 8A31 cpi r24,lo8(26) 187 011c 00F0 brlo .L10 188 011e 8091 0000 lds r24,rxchksum.2022 189 0122 9817 cp r25,r24 190 0124 01F0 breq .L22 191 0126 1092 0000 sts SPI_RxDataValid,__zero_reg__ 192 .L13: 193 012a 1092 0000 sts SPI_RXState.2020,__zero_reg__ 194 012e 00C0 rjmp .L5 195 .L20: 196 0130 81E0 ldi r24,lo8(1) 197 0132 8093 0000 sts SPI_RXState.2020,r24 198 0136 00C0 rjmp .L5 199 .L7: 200 0138 9535 cpi r25,lo8(85) 201 013a 01F4 brne .L13 202 013c 8091 0000 lds r24,rxchksum.2022 203 0140 8B5A subi r24,lo8(-(85)) 204 0142 8093 0000 sts rxchksum.2022,r24 205 0146 82E0 ldi r24,lo8(2) 206 0148 8093 0000 sts SPI_RXState.2020,r24 207 014c 00C0 rjmp .L5 208 .L10: 209 014e 8091 0000 lds r24,rxchksum.2022 210 0152 890F add r24,r25 211 0154 8093 0000 sts rxchksum.2022,r24 212 0158 00C0 rjmp .L5 213 .L22: 214 /* #APP */ 215 ; 436 "spi.c" 1 216 015a F894 cli 217 ; 0 "" 2 218 /* #NOAPP */ 219 015c A0E0 ldi r26,lo8(FromNaviCtrl) 220 015e B0E0 ldi r27,hi8(FromNaviCtrl) 221 0160 E0E0 ldi r30,lo8(SPI_RxBuffer) 222 0162 F0E0 ldi r31,hi8(SPI_RxBuffer) 223 0164 8AE1 ldi r24,lo8(26) 224 .L12: 225 0166 0190 ld r0,Z+ 226 0168 0D92 st X+,r0 227 016a 8150 subi r24,lo8(-(-1)) 228 016c 01F4 brne .L12 229 /* #APP */ 230 ; 438 "spi.c" 1 231 016e 7894 sei 232 ; 0 "" 2 233 /* #NOAPP */ 234 0170 81E0 ldi r24,lo8(1) 235 0172 8093 0000 sts SPI_RxDataValid,r24 236 0176 00C0 rjmp .L13 238 .global UpdateSPI_Buffer 240 UpdateSPI_Buffer: 241 0178 EF92 push r14 242 017a FF92 push r15 243 017c 0F93 push r16 244 017e 1F93 push r17 245 /* prologue: function */ 246 /* frame size = 0 */ 247 0180 E090 0000 lds r14,ParamSet+23 248 0184 8AE2 ldi r24,lo8(42) 249 0186 E89E mul r14,r24 250 0188 7001 movw r14,r0 251 018a 1124 clr r1 252 018c 0027 clr r16 253 018e F7FC sbrc r15,7 254 0190 0095 com r16 255 0192 102F mov r17,r16 256 0194 6091 0000 lds r22,IntegralGyroNick 257 0198 7091 0000 lds r23,(IntegralGyroNick)+1 258 019c 8091 0000 lds r24,(IntegralGyroNick)+2 259 01a0 9091 0000 lds r25,(IntegralGyroNick)+3 260 01a4 2AE0 ldi r18,lo8(10) 261 01a6 30E0 ldi r19,hi8(10) 262 01a8 40E0 ldi r20,hlo8(10) 263 01aa 50E0 ldi r21,hhi8(10) 264 01ac 0E94 0000 call __mulsi3 265 01b0 A801 movw r20,r16 266 01b2 9701 movw r18,r14 267 01b4 0E94 0000 call __divmodsi4 268 01b8 3093 0000 sts (ToNaviCtrl+3)+1,r19 269 01bc 2093 0000 sts ToNaviCtrl+3,r18 270 01c0 6091 0000 lds r22,IntegralGyroRoll 271 01c4 7091 0000 lds r23,(IntegralGyroRoll)+1 272 01c8 8091 0000 lds r24,(IntegralGyroRoll)+2 273 01cc 9091 0000 lds r25,(IntegralGyroRoll)+3 274 01d0 2AE0 ldi r18,lo8(10) 275 01d2 30E0 ldi r19,hi8(10) 276 01d4 40E0 ldi r20,hlo8(10) 277 01d6 50E0 ldi r21,hhi8(10) 278 01d8 0E94 0000 call __mulsi3 279 01dc A801 movw r20,r16 280 01de 9701 movw r18,r14 281 01e0 0E94 0000 call __divmodsi4 282 01e4 3093 0000 sts (ToNaviCtrl+5)+1,r19 283 01e8 2093 0000 sts ToNaviCtrl+5,r18 284 01ec 6091 0000 lds r22,YawGyroHeading 285 01f0 7091 0000 lds r23,(YawGyroHeading)+1 286 01f4 8091 0000 lds r24,(YawGyroHeading)+2 287 01f8 9091 0000 lds r25,(YawGyroHeading)+3 288 01fc 2AE0 ldi r18,lo8(10) 289 01fe 30E0 ldi r19,hi8(10) 290 0200 40E0 ldi r20,hlo8(10) 291 0202 50E0 ldi r21,hhi8(10) 292 0204 0E94 0000 call __mulsi3 293 0208 A801 movw r20,r16 294 020a 9701 movw r18,r14 295 020c 0E94 0000 call __divmodsi4 296 0210 3093 0000 sts (ToNaviCtrl+11)+1,r19 297 0214 2093 0000 sts ToNaviCtrl+11,r18 298 0218 8091 0000 lds r24,GyroNick 299 021c 9091 0000 lds r25,(GyroNick)+1 300 0220 9093 0000 sts (ToNaviCtrl+13)+1,r25 301 0224 8093 0000 sts ToNaviCtrl+13,r24 302 0228 8091 0000 lds r24,GyroRoll 303 022c 9091 0000 lds r25,(GyroRoll)+1 304 0230 9093 0000 sts (ToNaviCtrl+15)+1,r25 305 0234 8093 0000 sts ToNaviCtrl+15,r24 306 0238 8091 0000 lds r24,GyroYaw 307 023c 9091 0000 lds r25,(GyroYaw)+1 308 0240 9093 0000 sts (ToNaviCtrl+17)+1,r25 309 0244 8093 0000 sts ToNaviCtrl+17,r24 310 0248 E091 0000 lds r30,NaviCntAcc 311 024c F091 0000 lds r31,(NaviCntAcc)+1 312 0250 8091 0000 lds r24,NaviAccNick 313 0254 9091 0000 lds r25,(NaviAccNick)+1 314 0258 BF01 movw r22,r30 315 025a 0E94 0000 call __divmodhi4 316 025e 2CE3 ldi r18,lo8(60) 317 0260 30E0 ldi r19,hi8(60) 318 0262 629F mul r22,r18 319 0264 C001 movw r24,r0 320 0266 639F mul r22,r19 321 0268 900D add r25,r0 322 026a 729F mul r23,r18 323 026c 900D add r25,r0 324 026e 1124 clr r1 325 0270 6AE2 ldi r22,lo8(42) 326 0272 70E0 ldi r23,hi8(42) 327 0274 0E94 0000 call __divmodhi4 328 0278 7093 0000 sts (ToNaviCtrl+7)+1,r23 329 027c 6093 0000 sts ToNaviCtrl+7,r22 330 0280 8091 0000 lds r24,NaviAccRoll 331 0284 9091 0000 lds r25,(NaviAccRoll)+1 332 0288 BF01 movw r22,r30 333 028a 0E94 0000 call __divmodhi4 334 028e 629F mul r22,r18 335 0290 C001 movw r24,r0 336 0292 639F mul r22,r19 337 0294 900D add r25,r0 338 0296 729F mul r23,r18 339 0298 900D add r25,r0 340 029a 1124 clr r1 341 029c 6AE2 ldi r22,lo8(42) 342 029e 70E0 ldi r23,hi8(42) 343 02a0 0E94 0000 call __divmodhi4 344 02a4 7093 0000 sts (ToNaviCtrl+9)+1,r23 345 02a8 6093 0000 sts ToNaviCtrl+9,r22 346 02ac 1092 0000 sts (NaviCntAcc)+1,__zero_reg__ 347 02b0 1092 0000 sts NaviCntAcc,__zero_reg__ 348 02b4 1092 0000 sts (NaviAccNick)+1,__zero_reg__ 349 02b8 1092 0000 sts NaviAccNick,__zero_reg__ 350 02bc 1092 0000 sts (NaviAccRoll)+1,__zero_reg__ 351 02c0 1092 0000 sts NaviAccRoll,__zero_reg__ 352 02c4 8091 0000 lds r24,ToNaviCtrl+2 353 02c8 8C30 cpi r24,lo8(12) 354 02ca 01F4 brne .+2 355 02cc 00C0 rjmp .L27 356 02ce 8D30 cpi r24,lo8(13) 357 02d0 00F4 brsh .+2 358 02d2 00C0 rjmp .L50 359 02d4 8E30 cpi r24,lo8(14) 360 02d6 01F4 brne .+2 361 02d8 00C0 rjmp .L29 362 02da 8E30 cpi r24,lo8(14) 363 02dc 00F0 brlo .+2 364 02de 00C0 rjmp .L51 365 02e0 8091 0000 lds r24,ParamSet+69 366 02e4 8093 0000 sts ToNaviCtrl+19,r24 367 02e8 8091 0000 lds r24,ParamSet+70 368 02ec 8093 0000 sts ToNaviCtrl+20,r24 369 02f0 8091 0000 lds r24,ParamSet+71 370 02f4 8093 0000 sts ToNaviCtrl+21,r24 371 02f8 8091 0000 lds r24,ParamSet+72 372 02fc 8093 0000 sts ToNaviCtrl+22,r24 373 0300 8091 0000 lds r24,ParamSet+73 374 0304 8093 0000 sts ToNaviCtrl+23,r24 375 0308 8091 0000 lds r24,ParamSet+77 376 030c 8093 0000 sts ToNaviCtrl+24,r24 377 0310 8091 0000 lds r24,ParamSet+78 378 0314 8093 0000 sts ToNaviCtrl+25,r24 379 0318 8091 0000 lds r24,ParamSet+79 380 031c 8093 0000 sts ToNaviCtrl+26,r24 381 0320 8091 0000 lds r24,ParamSet+82 382 0324 8093 0000 sts ToNaviCtrl+27,r24 383 0328 8091 0000 lds r24,ParamSet+80 384 032c 8093 0000 sts ToNaviCtrl+28,r24 385 0330 8091 0000 lds r24,ParamSet+81 386 0334 8093 0000 sts ToNaviCtrl+29,r24 387 0338 8091 0000 lds r24,ParamSet+83 388 033c 8093 0000 sts ToNaviCtrl+30,r24 389 .L24: 390 0340 8091 0000 lds r24,SPI_RxDataValid 391 0344 8823 tst r24 392 0346 01F4 brne .+2 393 0348 00C0 rjmp .L41 394 .L55: 395 034a 2091 0000 lds r18,FromNaviCtrl+1 396 034e 3091 0000 lds r19,(FromNaviCtrl+1)+1 397 0352 C901 movw r24,r18 398 0354 8150 subi r24,lo8(-(511)) 399 0356 9E4F sbci r25,hi8(-(511)) 400 0358 8F5F subi r24,lo8(1023) 401 035a 9340 sbci r25,hi8(1023) 402 035c 00F4 brsh .L42 403 035e 4091 0000 lds r20,FromNaviCtrl+3 404 0362 5091 0000 lds r21,(FromNaviCtrl+3)+1 405 0366 CA01 movw r24,r20 406 0368 8150 subi r24,lo8(-(511)) 407 036a 9E4F sbci r25,hi8(-(511)) 408 036c 8F5F subi r24,lo8(1023) 409 036e 9340 sbci r25,hi8(1023) 410 0370 00F4 brsh .+2 411 0372 00C0 rjmp .L52 412 .L42: 413 0374 8091 0000 lds r24,FromNaviCtrl+7 414 0378 9091 0000 lds r25,(FromNaviCtrl+7)+1 415 037c 21E0 ldi r18,hi8(361) 416 037e 8936 cpi r24,lo8(361) 417 0380 9207 cpc r25,r18 418 0382 04F4 brge .L43 419 0384 9093 0000 sts (CompassHeading)+1,r25 420 0388 8093 0000 sts CompassHeading,r24 421 .L43: 422 038c 2091 0000 lds r18,CompassHeading 423 0390 3091 0000 lds r19,(CompassHeading)+1 424 0394 37FD sbrc r19,7 425 0396 00C0 rjmp .L53 426 0398 245E subi r18,lo8(-(540)) 427 039a 3D4F sbci r19,hi8(-(540)) 428 039c 8091 0000 lds r24,CompassCourse 429 03a0 9091 0000 lds r25,(CompassCourse)+1 430 03a4 A901 movw r20,r18 431 03a6 481B sub r20,r24 432 03a8 590B sbc r21,r25 433 03aa CA01 movw r24,r20 434 03ac 68E6 ldi r22,lo8(360) 435 03ae 71E0 ldi r23,hi8(360) 436 03b0 0E94 0000 call __divmodhi4 437 03b4 845B subi r24,lo8(-(-180)) 438 03b6 9040 sbci r25,hi8(-(-180)) 439 03b8 9093 0000 sts (CompassOffCourse)+1,r25 440 03bc 8093 0000 sts CompassOffCourse,r24 441 .L45: 442 03c0 2091 0000 lds r18,FromNaviCtrl+11 443 03c4 3091 0000 lds r19,(FromNaviCtrl+11)+1 444 03c8 8091 0000 lds r24,BeepTime 445 03cc 9091 0000 lds r25,(BeepTime)+1 446 03d0 8217 cp r24,r18 447 03d2 9307 cpc r25,r19 448 03d4 00F4 brsh .L46 449 03d6 8091 0000 lds r24,CompassCalState 450 03da 8823 tst r24 451 03dc 01F4 brne .+2 452 03de 00C0 rjmp .L54 453 .L46: 454 03e0 8091 0000 lds r24,FromNaviCtrl 455 03e4 8736 cpi r24,lo8(103) 456 03e6 01F4 brne .L49 457 03e8 8091 0000 lds r24,FromNaviCtrl+13 458 03ec 8093 0000 sts FCParam+31,r24 459 03f0 8091 0000 lds r24,FromNaviCtrl+14 460 03f4 8093 0000 sts FCParam+33,r24 461 03f8 8091 0000 lds r24,FromNaviCtrl+15 462 03fc 8093 0000 sts FCParam+32,r24 463 0400 8091 0000 lds r24,FromNaviCtrl+16 464 0404 8093 0000 sts NCSerialDataOkay,r24 465 0408 8091 0000 lds r24,FromNaviCtrl+17 466 040c 8093 0000 sts NCGpsZ,r24 467 .L49: 468 /* epilogue start */ 469 0410 1F91 pop r17 470 0412 0F91 pop r16 471 0414 FF90 pop r15 472 0416 EF90 pop r14 473 0418 0895 ret 474 .L50: 475 041a 8A30 cpi r24,lo8(10) 476 041c 01F4 brne .+2 477 041e 00C0 rjmp .L25 478 0420 8B30 cpi r24,lo8(11) 479 0422 01F0 breq .+2 480 0424 00C0 rjmp .L24 481 /* #APP */ 482 ; 251 "spi.c" 1 483 0426 F894 cli 484 ; 0 "" 2 485 /* #NOAPP */ 486 0428 E091 0000 lds r30,ParamSet+2 487 042c F0E0 ldi r31,lo8(0) 488 042e EE0F lsl r30 489 0430 FF1F rol r31 490 0432 E050 subi r30,lo8(-(PPM_in)) 491 0434 F040 sbci r31,hi8(-(PPM_in)) 492 0436 0190 ld __tmp_reg__,Z+ 493 0438 F081 ld r31,Z 494 043a E02D mov r30,__tmp_reg__ 495 043c 2FEF ldi r18,hi8(-128) 496 043e E038 cpi r30,lo8(-128) 497 0440 F207 cpc r31,r18 498 0442 04F4 brge .L32 499 0444 E0E8 ldi r30,lo8(-128) 500 0446 FFEF ldi r31,hi8(-128) 501 .L32: 502 0448 E038 cpi r30,128 503 044a F105 cpc r31,__zero_reg__ 504 044c 04F0 brlt .L33 505 044e EFE7 ldi r30,lo8(127) 506 0450 F0E0 ldi r31,hi8(127) 507 .L33: 508 0452 E093 0000 sts ToNaviCtrl+19,r30 509 0456 E091 0000 lds r30,ParamSet+3 510 045a F0E0 ldi r31,lo8(0) 511 045c EE0F lsl r30 512 045e FF1F rol r31 513 0460 E050 subi r30,lo8(-(PPM_in)) 514 0462 F040 sbci r31,hi8(-(PPM_in)) 515 0464 0190 ld __tmp_reg__,Z+ 516 0466 F081 ld r31,Z 517 0468 E02D mov r30,__tmp_reg__ 518 046a 4FEF ldi r20,hi8(-128) 519 046c E038 cpi r30,lo8(-128) 520 046e F407 cpc r31,r20 521 0470 04F4 brge .L34 522 0472 E0E8 ldi r30,lo8(-128) 523 0474 FFEF ldi r31,hi8(-128) 524 .L34: 525 0476 E038 cpi r30,128 526 0478 F105 cpc r31,__zero_reg__ 527 047a 04F0 brlt .L35 528 047c EFE7 ldi r30,lo8(127) 529 047e F0E0 ldi r31,hi8(127) 530 .L35: 531 0480 E093 0000 sts ToNaviCtrl+20,r30 532 0484 E091 0000 lds r30,ParamSet+1 533 0488 F0E0 ldi r31,lo8(0) 534 048a EE0F lsl r30 535 048c FF1F rol r31 536 048e E050 subi r30,lo8(-(PPM_in)) 537 0490 F040 sbci r31,hi8(-(PPM_in)) 538 0492 0190 ld __tmp_reg__,Z+ 539 0494 F081 ld r31,Z 540 0496 E02D mov r30,__tmp_reg__ 541 0498 5FEF ldi r21,hi8(-128) 542 049a E038 cpi r30,lo8(-128) 543 049c F507 cpc r31,r21 544 049e 04F4 brge .L36 545 04a0 E0E8 ldi r30,lo8(-128) 546 04a2 FFEF ldi r31,hi8(-128) 547 .L36: 548 04a4 E038 cpi r30,128 549 04a6 F105 cpc r31,__zero_reg__ 550 04a8 04F0 brlt .L37 551 04aa EFE7 ldi r30,lo8(127) 552 04ac F0E0 ldi r31,hi8(127) 553 .L37: 554 04ae E093 0000 sts ToNaviCtrl+21,r30 555 04b2 E091 0000 lds r30,ParamSet 556 04b6 F0E0 ldi r31,lo8(0) 557 04b8 EE0F lsl r30 558 04ba FF1F rol r31 559 04bc E050 subi r30,lo8(-(PPM_in)) 560 04be F040 sbci r31,hi8(-(PPM_in)) 561 04c0 0190 ld __tmp_reg__,Z+ 562 04c2 F081 ld r31,Z 563 04c4 E02D mov r30,__tmp_reg__ 564 04c6 6FEF ldi r22,hi8(-128) 565 04c8 E038 cpi r30,lo8(-128) 566 04ca F607 cpc r31,r22 567 04cc 04F4 brge .L38 568 04ce E0E8 ldi r30,lo8(-128) 569 04d0 FFEF ldi r31,hi8(-128) 570 .L38: 571 04d2 E038 cpi r30,128 572 04d4 F105 cpc r31,__zero_reg__ 573 04d6 04F0 brlt .L39 574 04d8 EFE7 ldi r30,lo8(127) 575 04da F0E0 ldi r31,hi8(127) 576 .L39: 577 04dc E093 0000 sts ToNaviCtrl+22,r30 578 /* #APP */ 579 ; 260 "spi.c" 1 580 04e0 7894 sei 581 ; 0 "" 2 582 /* #NOAPP */ 583 04e2 8091 0000 lds r24,Poti1 584 04e6 8093 0000 sts ToNaviCtrl+23,r24 585 04ea 8091 0000 lds r24,Poti2 586 04ee 8093 0000 sts ToNaviCtrl+24,r24 587 04f2 8091 0000 lds r24,Poti3 588 04f6 8093 0000 sts ToNaviCtrl+25,r24 589 04fa 8091 0000 lds r24,Poti4 590 04fe 8093 0000 sts ToNaviCtrl+26,r24 591 0502 8091 0000 lds r24,RC_Quality 592 0506 8093 0000 sts ToNaviCtrl+27,r24 593 050a 8091 0000 lds r24,RC_RSSI 594 050e 8093 0000 sts ToNaviCtrl+28,r24 595 0512 8091 0000 lds r24,DebugOut+16 596 0516 9091 0000 lds r25,(DebugOut+16)+1 597 051a 9695 lsr r25 598 051c 8795 ror r24 599 051e 9695 lsr r25 600 0520 8795 ror r24 601 0522 8093 0000 sts ToNaviCtrl+29,r24 602 0526 8091 0000 lds r24,SPI_RxDataValid 603 052a 8823 tst r24 604 052c 01F0 breq .+2 605 052e 00C0 rjmp .L55 606 .L41: 607 0530 1092 0000 sts (GPSStickNick)+1,__zero_reg__ 608 0534 1092 0000 sts GPSStickNick,__zero_reg__ 609 0538 1092 0000 sts (GPSStickRoll)+1,__zero_reg__ 610 053c 1092 0000 sts GPSStickRoll,__zero_reg__ 611 0540 1092 0000 sts NCGpsZ,__zero_reg__ 612 0544 1F91 pop r17 613 0546 0F91 pop r16 614 0548 FF90 pop r15 615 054a EF90 pop r14 616 054c 0895 ret 617 .L51: 618 054e 8F30 cpi r24,lo8(15) 619 0550 01F0 breq .+2 620 0552 00C0 rjmp .L24 621 0554 8091 0000 lds r24,ParamSet+47 622 0558 8093 0000 sts ToNaviCtrl+19,r24 623 055c 8091 0000 lds r24,ParamSet+87 624 0560 8093 0000 sts ToNaviCtrl+20,r24 625 0564 8091 0000 lds r24,FCParam+21 626 0568 8093 0000 sts ToNaviCtrl+21,r24 627 056c 8091 0000 lds r24,ParamSet+40 628 0570 8093 0000 sts ToNaviCtrl+22,r24 629 0574 8091 0000 lds r24,ParamSet+41 630 0578 8093 0000 sts ToNaviCtrl+23,r24 631 057c 8091 0000 lds r24,ParamSet+42 632 0580 8093 0000 sts ToNaviCtrl+24,r24 633 0584 8091 0000 lds r24,FCParam+22 634 0588 8093 0000 sts ToNaviCtrl+25,r24 635 058c 8091 0000 lds r24,ParamSet+44 636 0590 8093 0000 sts ToNaviCtrl+26,r24 637 0594 8091 0000 lds r24,ParamSet+45 638 0598 8093 0000 sts ToNaviCtrl+27,r24 639 059c 8091 0000 lds r24,ParamSet+46 640 05a0 8093 0000 sts ToNaviCtrl+28,r24 641 05a4 00C0 rjmp .L24 642 .L52: 643 05a6 8091 0000 lds r24,ParamSet+8 644 05aa 85FF sbrs r24,5 645 05ac 00C0 rjmp .L42 646 05ae 3093 0000 sts (GPSStickNick)+1,r19 647 05b2 2093 0000 sts GPSStickNick,r18 648 05b6 5093 0000 sts (GPSStickRoll)+1,r21 649 05ba 4093 0000 sts GPSStickRoll,r20 650 05be 8AEF ldi r24,lo8(-6) 651 05c0 8093 0000 sts NCDataOkay,r24 652 05c4 00C0 rjmp .L42 653 .L54: 654 05c6 3093 0000 sts (BeepTime)+1,r19 655 05ca 2093 0000 sts BeepTime,r18 656 05ce 00C0 rjmp .L46 657 .L53: 658 05d0 1092 0000 sts (CompassOffCourse)+1,__zero_reg__ 659 05d4 1092 0000 sts CompassOffCourse,__zero_reg__ 660 05d8 00C0 rjmp .L45 661 .L29: 662 05da 8091 0000 lds r24,SPI_VersionInfo 663 05de 8093 0000 sts ToNaviCtrl+19,r24 664 05e2 8091 0000 lds r24,SPI_VersionInfo+1 665 05e6 8093 0000 sts ToNaviCtrl+20,r24 666 05ea 8091 0000 lds r24,SPI_VersionInfo+2 667 05ee 8093 0000 sts ToNaviCtrl+21,r24 668 05f2 8091 0000 lds r24,SPI_VersionInfo+3 669 05f6 8093 0000 sts ToNaviCtrl+22,r24 670 05fa 8091 0000 lds r24,BoardRelease 671 05fe 8093 0000 sts ToNaviCtrl+23,r24 672 0602 00C0 rjmp .L24 673 .L25: 674 0604 8091 0000 lds r24,FCParam+13 675 0608 8093 0000 sts ToNaviCtrl+19,r24 676 060c 8091 0000 lds r24,FCParam+14 677 0610 8093 0000 sts ToNaviCtrl+20,r24 678 0614 8091 0000 lds r24,FCParam+15 679 0618 8093 0000 sts ToNaviCtrl+21,r24 680 061c 8091 0000 lds r24,FCParam+16 681 0620 8093 0000 sts ToNaviCtrl+22,r24 682 0624 8091 0000 lds r24,FCParam+17 683 0628 8093 0000 sts ToNaviCtrl+23,r24 684 062c 8091 0000 lds r24,FCParam+18 685 0630 8093 0000 sts ToNaviCtrl+24,r24 686 0634 8091 0000 lds r24,FCParam+19 687 0638 8093 0000 sts ToNaviCtrl+25,r24 688 063c 8091 0000 lds r24,FCParam+20 689 0640 8093 0000 sts ToNaviCtrl+26,r24 690 0644 8091 0000 lds r24,MKFlags 691 0648 8093 0000 sts ToNaviCtrl+27,r24 692 064c 8091 0000 lds r24,MKFlags 693 0650 837F andi r24,lo8(-13) 694 0652 8093 0000 sts MKFlags,r24 695 0656 8091 0000 lds r24,UBat 696 065a 9091 0000 lds r25,(UBat)+1 697 065e 8093 0000 sts ToNaviCtrl+28,r24 698 0662 8091 0000 lds r24,LowVoltageWarning 699 0666 8093 0000 sts ToNaviCtrl+29,r24 700 066a 0E94 0000 call GetActiveParamSet 701 066e 8093 0000 sts ToNaviCtrl+30,r24 702 0672 00C0 rjmp .L24 703 .L27: 704 0674 8091 0000 lds r24,CompassCalState 705 0678 8093 0000 sts ToNaviCtrl+19,r24 706 067c 8530 cpi r24,lo8(5) 707 067e 00F0 brlo .L40 708 0680 1092 0000 sts CompassCalState,__zero_reg__ 709 .L40: 710 0684 8091 0000 lds r24,ParamSet+84 711 0688 8093 0000 sts ToNaviCtrl+20,r24 712 068c 6091 0000 lds r22,ReadingHeight 713 0690 7091 0000 lds r23,(ReadingHeight)+1 714 0694 8091 0000 lds r24,(ReadingHeight)+2 715 0698 9091 0000 lds r25,(ReadingHeight)+3 716 069c 25E0 ldi r18,lo8(5) 717 069e 30E0 ldi r19,hi8(5) 718 06a0 40E0 ldi r20,hlo8(5) 719 06a2 50E0 ldi r21,hhi8(5) 720 06a4 0E94 0000 call __divmodsi4 721 06a8 3093 0000 sts (ToNaviCtrl+21)+1,r19 722 06ac 2093 0000 sts ToNaviCtrl+21,r18 723 06b0 6091 0000 lds r22,SetPointHeight 724 06b4 7091 0000 lds r23,(SetPointHeight)+1 725 06b8 8091 0000 lds r24,(SetPointHeight)+2 726 06bc 9091 0000 lds r25,(SetPointHeight)+3 727 06c0 25E0 ldi r18,lo8(5) 728 06c2 30E0 ldi r19,hi8(5) 729 06c4 40E0 ldi r20,hlo8(5) 730 06c6 50E0 ldi r21,hhi8(5) 731 06c8 0E94 0000 call __divmodsi4 732 06cc 3093 0000 sts (ToNaviCtrl+23)+1,r19 733 06d0 2093 0000 sts ToNaviCtrl+23,r18 734 06d4 8091 0000 lds r24,ParamSet+74 735 06d8 8093 0000 sts ToNaviCtrl+25,r24 736 06dc 8091 0000 lds r24,ParamSet+75 737 06e0 8093 0000 sts ToNaviCtrl+26,r24 738 06e4 8091 0000 lds r24,ParamSet+76 739 06e8 8093 0000 sts ToNaviCtrl+27,r24 740 06ec 00C0 rjmp .L24 742 .global SPI_StartTransmitPacket 744 SPI_StartTransmitPacket: 745 /* prologue: function */ 746 /* frame size = 0 */ 747 06ee 8091 0000 lds r24,SPITransferCompleted 748 06f2 8823 tst r24 749 06f4 01F4 brne .+2 750 06f6 00C0 rjmp .L59 751 06f8 4598 cbi 40-32,5 752 06fa 8091 0000 lds r24,SPI_CommandCounter 753 06fe E82F mov r30,r24 754 0700 F0E0 ldi r31,lo8(0) 755 0702 E050 subi r30,lo8(-(SPI_CommandSequence)) 756 0704 F040 sbci r31,hi8(-(SPI_CommandSequence)) 757 0706 9081 ld r25,Z 758 0708 9093 0000 sts ToNaviCtrl+2,r25 759 070c 8F5F subi r24,lo8(-(1)) 760 070e 8093 0000 sts SPI_CommandCounter,r24 761 0712 8730 cpi r24,lo8(7) 762 0714 00F0 brlo .L58 763 0716 1092 0000 sts SPI_CommandCounter,__zero_reg__ 764 .L58: 765 071a 1092 0000 sts SPITransferCompleted,__zero_reg__ 766 071e 0E94 0000 call UpdateSPI_Buffer 767 0722 81E0 ldi r24,lo8(1) 768 0724 8093 0000 sts SPI_TxBufferIndex,r24 769 /* #APP */ 770 ; 377 "spi.c" 1 771 0728 0000 nop 772 ; 0 "" 2 773 ; 377 "spi.c" 1 774 072a 0000 nop 775 ; 0 "" 2 776 ; 377 "spi.c" 1 777 072c 0000 nop 778 ; 0 "" 2 779 ; 377 "spi.c" 1 780 072e 0000 nop 781 ; 0 "" 2 782 ; 377 "spi.c" 1 783 0730 0000 nop 784 ; 0 "" 2 785 ; 377 "spi.c" 1 786 0732 0000 nop 787 ; 0 "" 2 788 ; 377 "spi.c" 1 789 0734 0000 nop 790 ; 0 "" 2 791 ; 377 "spi.c" 1 792 0736 0000 nop 793 ; 0 "" 2 794 ; 378 "spi.c" 1 795 0738 0000 nop 796 ; 0 "" 2 797 ; 378 "spi.c" 1 798 073a 0000 nop 799 ; 0 "" 2 800 ; 378 "spi.c" 1 801 073c 0000 nop 802 ; 0 "" 2 803 ; 378 "spi.c" 1 804 073e 0000 nop 805 ; 0 "" 2 806 ; 378 "spi.c" 1 807 0740 0000 nop 808 ; 0 "" 2 809 ; 378 "spi.c" 1 810 0742 0000 nop 811 ; 0 "" 2 812 ; 378 "spi.c" 1 813 0744 0000 nop 814 ; 0 "" 2 815 ; 378 "spi.c" 1 816 0746 0000 nop 817 ; 0 "" 2 818 ; 379 "spi.c" 1 819 0748 0000 nop 820 ; 0 "" 2 821 ; 379 "spi.c" 1 822 074a 0000 nop 823 ; 0 "" 2 824 ; 379 "spi.c" 1 825 074c 0000 nop 826 ; 0 "" 2 827 ; 379 "spi.c" 1 828 074e 0000 nop 829 ; 0 "" 2 830 ; 379 "spi.c" 1 831 0750 0000 nop 832 ; 0 "" 2 833 ; 379 "spi.c" 1 834 0752 0000 nop 835 ; 0 "" 2 836 ; 379 "spi.c" 1 837 0754 0000 nop 838 ; 0 "" 2 839 ; 379 "spi.c" 1 840 0756 0000 nop 841 ; 0 "" 2 842 /* #NOAPP */ 843 0758 8091 0000 lds r24,ToNaviCtrl 844 075c 8093 0000 sts ToNaviCtrl+31,r24 845 0760 8EBD out 78-32,r24 846 .L59: 847 0762 0895 ret 849 .global SPI_RxBufferIndex 850 .global SPI_RxBufferIndex 851 .section .bss 854 SPI_RxBufferIndex: 855 0000 00 .skip 1,0 856 .global SPI_RxBuffer_Request 857 .global SPI_RxBuffer_Request 860 SPI_RxBuffer_Request: 861 0001 00 .skip 1,0 862 .global SPI_TxBufferIndex 863 .global SPI_TxBufferIndex 866 SPI_TxBufferIndex: 867 0002 00 .skip 1,0 868 .global SPI_RxDataValid 869 .global SPI_RxDataValid 872 SPI_RxDataValid: 873 0003 00 .skip 1,0 874 .global NCDataOkay 875 .global NCDataOkay 878 NCDataOkay: 879 0004 00 .skip 1,0 880 .global NCSerialDataOkay 881 .global NCSerialDataOkay 884 NCSerialDataOkay: 885 0005 00 .skip 1,0 886 .global NCGpsZ 887 .global NCGpsZ 890 NCGpsZ: 891 0006 00 .skip 1,0 892 .global SPI_CommandSequence 893 .data 896 SPI_CommandSequence: 897 0000 0A .byte 10 898 0001 0B .byte 11 899 0002 0D .byte 13 900 0003 0B .byte 11 901 0004 0C .byte 12 902 0005 0E .byte 14 903 0006 0F .byte 15 904 .global SPI_CommandCounter 905 .global SPI_CommandCounter 906 .section .bss 909 SPI_CommandCounter: 910 0007 00 .skip 1,0 911 .lcomm rxchksum.2022,1 912 .lcomm SPI_RXState.2020,1 913 .comm ToNaviCtrl,32,1 914 .comm FromNaviCtrl,26,1 915 .comm SPI_VersionInfo,4,1 916 .comm SPI_RxBuffer,26,1 917 .comm SPI_TxBuffer,2,1 918 .comm SPITransferCompleted,1,1 919 .comm SPI_ChkSum,1,1 920 .global __do_copy_data 921 .global __do_clear_bss DEFINED SYMBOLS *ABS*:00000000 spi.c C:\DOKUME~1\LUKEPA~1\LOKALE~1\Temp/ccXYPMr9.s:2 *ABS*:0000003f __SREG__ C:\DOKUME~1\LUKEPA~1\LOKALE~1\Temp/ccXYPMr9.s:3 *ABS*:0000003e __SP_H__ C:\DOKUME~1\LUKEPA~1\LOKALE~1\Temp/ccXYPMr9.s:4 *ABS*:0000003d __SP_L__ C:\DOKUME~1\LUKEPA~1\LOKALE~1\Temp/ccXYPMr9.s:5 *ABS*:00000034 __CCP__ C:\DOKUME~1\LUKEPA~1\LOKALE~1\Temp/ccXYPMr9.s:6 *ABS*:00000000 __tmp_reg__ C:\DOKUME~1\LUKEPA~1\LOKALE~1\Temp/ccXYPMr9.s:7 *ABS*:00000001 __zero_reg__ C:\DOKUME~1\LUKEPA~1\LOKALE~1\Temp/ccXYPMr9.s:11 .text:00000000 SPI_MasterInit *COM*:00000020 ToNaviCtrl *COM*:00000002 SPI_TxBuffer *COM*:00000001 SPITransferCompleted C:\DOKUME~1\LUKEPA~1\LOKALE~1\Temp/ccXYPMr9.s:884 .bss:00000005 NCSerialDataOkay C:\DOKUME~1\LUKEPA~1\LOKALE~1\Temp/ccXYPMr9.s:878 .bss:00000004 NCDataOkay C:\DOKUME~1\LUKEPA~1\LOKALE~1\Temp/ccXYPMr9.s:872 .bss:00000003 SPI_RxDataValid *COM*:00000004 SPI_VersionInfo C:\DOKUME~1\LUKEPA~1\LOKALE~1\Temp/ccXYPMr9.s:52 .text:00000066 SPI_TransmitByte C:\DOKUME~1\LUKEPA~1\LOKALE~1\Temp/ccXYPMr9.s:911 .bss:00000009 SPI_RXState.2020 C:\DOKUME~1\LUKEPA~1\LOKALE~1\Temp/ccXYPMr9.s:854 .bss:00000000 SPI_RxBufferIndex .bss:00000008 rxchksum.2022 C:\DOKUME~1\LUKEPA~1\LOKALE~1\Temp/ccXYPMr9.s:866 .bss:00000002 SPI_TxBufferIndex *COM*:0000001a SPI_RxBuffer *COM*:0000001a FromNaviCtrl C:\DOKUME~1\LUKEPA~1\LOKALE~1\Temp/ccXYPMr9.s:240 .text:00000178 UpdateSPI_Buffer C:\DOKUME~1\LUKEPA~1\LOKALE~1\Temp/ccXYPMr9.s:890 .bss:00000006 NCGpsZ C:\DOKUME~1\LUKEPA~1\LOKALE~1\Temp/ccXYPMr9.s:744 .text:000006ee SPI_StartTransmitPacket C:\DOKUME~1\LUKEPA~1\LOKALE~1\Temp/ccXYPMr9.s:909 .bss:00000007 SPI_CommandCounter C:\DOKUME~1\LUKEPA~1\LOKALE~1\Temp/ccXYPMr9.s:896 .data:00000000 SPI_CommandSequence C:\DOKUME~1\LUKEPA~1\LOKALE~1\Temp/ccXYPMr9.s:860 .bss:00000001 SPI_RxBuffer_Request *COM*:00000001 SPI_ChkSum UNDEFINED SYMBOLS SendSPI ParamSet IntegralGyroNick __mulsi3 __divmodsi4 IntegralGyroRoll YawGyroHeading GyroNick GyroRoll GyroYaw NaviCntAcc NaviAccNick __divmodhi4 NaviAccRoll CompassHeading CompassCourse CompassOffCourse BeepTime CompassCalState FCParam PPM_in Poti1 Poti2 Poti3 Poti4 RC_Quality RC_RSSI DebugOut GPSStickNick GPSStickRoll BoardRelease MKFlags UBat LowVoltageWarning GetActiveParamSet ReadingHeight SetPointHeight __do_copy_data __do_clear_bss