Subversion Repositories FlightCtrl

Rev

Rev 2300 | Details | Compare with Previous | Last modification | View Log | RSS feed

Rev Author Line No. Line
2285 - 1
   1               		.file	"Spektrum.c"
2
   2               		.arch atmega1284p
3
   3               	__SREG__ = 0x3f
4
   4               	__SP_H__ = 0x3e
5
   5               	__SP_L__ = 0x3d
6
   6               	__tmp_reg__ = 0
7
   7               	__zero_reg__ = 1
8
   8               		.global __do_copy_data
9
   9               		.global __do_clear_bss
10
  10               	.global	s_exparity
11
  11               	.global	s_exparity
12
  12               		.section .bss
13
  15               	s_exparity:
14
  16 0000 00        		.skip 1,0
15
  17               	.global	s_excnt
16
  18               	.global	s_excnt
17
  21               	s_excnt:
18
  22 0001 00        		.skip 1,0
19
  23               	.global	SpektrumTimer
20
  24               	.global	SpektrumTimer
21
  27               	SpektrumTimer:
22
  28 0002 00        		.skip 1,0
23
  29               		.text
24
  30               	.global	s_update
25
  32               	s_update:
26
  33               	/* prologue: frame size=0 */
27
  34 0000 0F93      		push r16
28
  35 0002 1F93      		push r17
29
  36 0004 CF93      		push r28
30
  37 0006 DF93      		push r29
31
  38               	/* prologue end (size=4) */
32
  39 0008 482F      		mov r20,r24
33
  40 000a EB01      		movw r28,r22
34
  41 000c 8091 0000 		lds r24,SenderOkay
35
  42 0010 E42F      		mov r30,r20
36
  43 0012 FF27      		clr r31
37
  44 0014 843B      		cpi r24,lo8(-76)
38
  45 0016 00F0      		brlo .L2
39
  46 0018 8F01      		movw r16,r30
40
  47 001a 0E0F      		add r16,r30
41
  48 001c 1F1F      		adc r17,r31
42
  49 001e F801      		movw r30,r16
43
  50 0020 E050      		subi r30,lo8(-(PPM_in))
44
  51 0022 F040      		sbci r31,hi8(-(PPM_in))
45
  52 0024 8081      		ld r24,Z
46
  53 0026 9181      		ldd r25,Z+1
47
  54 0028 9B01      		movw r18,r22
48
  55 002a 281B      		sub r18,r24
49
  56 002c 390B      		sbc r19,r25
50
  57 002e C901      		movw r24,r18
51
  58 0030 63E0      		ldi r22,lo8(3)
52
  59 0032 70E0      		ldi r23,hi8(3)
53
  60 0034 0E94 0000 		call __divmodhi4
54
  61 0038 CB01      		movw r24,r22
55
  62 003a 880F      		lsl r24
56
  63 003c 991F      		rol r25
57
  64 003e 860F      		add r24,r22
58
  65 0040 971F      		adc r25,r23
59
  66 0042 0050      		subi r16,lo8(-(PPM_diff))
60
  67 0044 1040      		sbci r17,hi8(-(PPM_diff))
61
  68 0046 F801      		movw r30,r16
62
  69 0048 9183      		std Z+1,r25
63
  70 004a 8083      		st Z,r24
64
  71 004c 00C0      		rjmp .L3
65
  72               	.L2:
66
  73 004e EE0F      		add r30,r30
67
  74 0050 FF1F      		adc r31,r31
68
  75 0052 E050      		subi r30,lo8(-(PPM_diff))
69
  76 0054 F040      		sbci r31,hi8(-(PPM_diff))
70
  77 0056 1182      		std Z+1,__zero_reg__
71
  78 0058 1082      		st Z,__zero_reg__
72
  79               	.L3:
73
  80 005a E42F      		mov r30,r20
74
  81 005c FF27      		clr r31
75
  82 005e EE0F      		add r30,r30
76
  83 0060 FF1F      		adc r31,r31
77
  84 0062 E050      		subi r30,lo8(-(PPM_in))
78
  85 0064 F040      		sbci r31,hi8(-(PPM_in))
79
  86 0066 D183      		std Z+1,r29
80
  87 0068 C083      		st Z,r28
81
  88               	/* epilogue: frame size=0 */
82
  89 006a DF91      		pop r29
83
  90 006c CF91      		pop r28
84
  91 006e 1F91      		pop r17
85
  92 0070 0F91      		pop r16
86
  93 0072 0895      		ret
87
  94               	/* epilogue end (size=5) */
88
  95               	/* function s_update size 58 (49) */
89
  97               	.global	SpektrumUartInit
90
  99               	SpektrumUartInit:
91
 100               	/* prologue: frame size=0 */
92
 101               	/* prologue end (size=0) */
93
 102 0074 4FB7      		in r20,95-0x20
94
 103 0076 24E1      		ldi r18,lo8(20)
95
 104 0078 30E0      		ldi r19,hi8(20)
96
 105               	/* #APP */
97
 106 007a F894      		cli
98
 107               	/* #NOAPP */
99
 108 007c 8091 C900 		lds r24,201
100
 109 0080 8F77      		andi r24,lo8(127)
101
 110 0082 8093 C900 		sts 201,r24
102
 111 0086 8091 C900 		lds r24,201
103
 112 008a 8F7B      		andi r24,lo8(-65)
104
 113 008c 8093 C900 		sts 201,r24
105
 114 0090 8091 C900 		lds r24,201
106
 115 0094 8F7D      		andi r24,lo8(-33)
107
 116 0096 8093 C900 		sts 201,r24
108
 117 009a 5A9A      		sbi 43-0x20,2
109
 118 009c 5298      		cbi 42-0x20,2
110
 119 009e 5B9A      		sbi 43-0x20,3
111
 120 00a0 539A      		sbi 42-0x20,3
112
 121 00a2 832F      		mov r24,r19
113
 122 00a4 9927      		clr r25
114
 123 00a6 8093 CD00 		sts 205,r24
115
 124 00aa 2093 CC00 		sts 204,r18
116
 125 00ae 8091 C800 		lds r24,200
117
 126 00b2 8260      		ori r24,lo8(2)
118
 127 00b4 8093 C800 		sts 200,r24
119
 128 00b8 80E1      		ldi r24,lo8(16)
120
 129 00ba 8093 C900 		sts 201,r24
121
 130 00be 8091 CA00 		lds r24,202
122
 131 00c2 8F77      		andi r24,lo8(127)
123
 132 00c4 8093 CA00 		sts 202,r24
124
 133 00c8 8091 CA00 		lds r24,202
125
 134 00cc 8F7B      		andi r24,lo8(-65)
126
 135 00ce 8093 CA00 		sts 202,r24
127
 136 00d2 8091 CA00 		lds r24,202
128
 137 00d6 8F7D      		andi r24,lo8(-33)
129
 138 00d8 8093 CA00 		sts 202,r24
130
 139 00dc 8091 CA00 		lds r24,202
131
 140 00e0 8F7E      		andi r24,lo8(-17)
132
 141 00e2 8093 CA00 		sts 202,r24
133
 142 00e6 8091 CA00 		lds r24,202
134
 143 00ea 877F      		andi r24,lo8(-9)
135
 144 00ec 8093 CA00 		sts 202,r24
136
 145 00f0 8091 C900 		lds r24,201
137
 146 00f4 8B7F      		andi r24,lo8(-5)
138
 147 00f6 8093 C900 		sts 201,r24
139
 148 00fa 8091 CA00 		lds r24,202
140
 149 00fe 8460      		ori r24,lo8(4)
141
 150 0100 8093 CA00 		sts 202,r24
142
 151 0104 8091 CA00 		lds r24,202
143
 152 0108 8260      		ori r24,lo8(2)
144
 153 010a 8093 CA00 		sts 202,r24
145
 154               	.L10:
146
 155 010e 8091 C800 		lds r24,200
147
 156 0112 87FF      		sbrs r24,7
148
 157 0114 00C0      		rjmp .L9
149
 158 0116 8091 CE00 		lds r24,206
150
 159 011a 00C0      		rjmp .L10
151
 160               	.L9:
152
 161 011c 8091 C900 		lds r24,201
153
 162 0120 8068      		ori r24,lo8(-128)
154
 163 0122 8093 C900 		sts 201,r24
155
 164 0126 4FBF      		out 95-0x20,r20
156
 165               	/* epilogue: frame size=0 */
157
 166 0128 0895      		ret
158
 167               	/* epilogue end (size=1) */
159
 168               	/* function SpektrumUartInit size 92 (91) */
160
 170               		.lcomm Sync.0,1
161
 171               		.lcomm FrameCnt.1,1
162
 172               		.lcomm ByteHigh.2,1
163
 173               		.data
164
 176               	ReSync.3:
165
 177 0000 01        		.byte	1
166
 178               		.lcomm Frame2.4,1
167
 179               		.text
168
 180               	.global	SpektrumParser
169
 182               	SpektrumParser:
170
 183               	/* prologue: frame size=0 */
171
 184 012a EF92      		push r14
172
 185 012c FF92      		push r15
173
 186 012e 0F93      		push r16
174
 187 0130 1F93      		push r17
175
 188 0132 CF93      		push r28
176
 189 0134 DF93      		push r29
177
 190               	/* prologue end (size=6) */
178
 191 0136 482F      		mov r20,r24
179
 192 0138 00E0      		ldi r16,lo8(0)
180
 193 013a 10E0      		ldi r17,hi8(0)
181
 194 013c 8091 0000 		lds r24,ReSync.3
182
 195 0140 8130      		cpi r24,lo8(1)
183
 196 0142 01F4      		brne .L12
184
 197 0144 1092 0000 		sts ReSync.3,__zero_reg__
185
 198 0148 84E4      		ldi r24,lo8(68)
186
 199 014a 8093 0000 		sts SpektrumTimer,r24
187
 200 014e 1092 0000 		sts FrameCnt.1,__zero_reg__
188
 201 0152 1092 0000 		sts Sync.0,__zero_reg__
189
 202 0156 1092 0000 		sts ByteHigh.2,__zero_reg__
190
 203 015a 00C0      		rjmp .L11
191
 204               	.L12:
192
 205 015c 8091 0000 		lds r24,SpektrumTimer
193
 206 0160 8823      		tst r24
194
 207 0162 01F4      		brne .L14
195
 208 0164 21E0      		ldi r18,lo8(1)
196
 209 0166 30E0      		ldi r19,hi8(1)
197
 210 0168 00C0      		rjmp .L15
198
 211               	.L14:
199
 212 016a 9801      		movw r18,r16
200
 213               	.L15:
201
 214 016c 9091 0000 		lds r25,Sync.0
202
 215 0170 9923      		tst r25
203
 216 0172 01F4      		brne .L16
204
 217 0174 232B      		or r18,r19
205
 218 0176 01F0      		breq .L17
206
 219 0178 81E0      		ldi r24,lo8(1)
207
 220 017a 00C0      		rjmp .L87
208
 221               	.L17:
209
 222 017c 84E4      		ldi r24,lo8(68)
210
 223 017e 8093 0000 		sts SpektrumTimer,r24
211
 224 0182 9093 0000 		sts FrameCnt.1,r25
212
 225 0186 9093 0000 		sts Sync.0,r25
213
 226 018a 9093 0000 		sts ByteHigh.2,r25
214
 227 018e 00C0      		rjmp .L19
215
 228               	.L16:
216
 229 0190 9130      		cpi r25,lo8(1)
217
 230 0192 01F4      		brne .L20
218
 231 0194 232B      		or r18,r19
219
 232 0196 01F0      		breq .+2
220
 233 0198 00C0      		rjmp .L26
221
 234 019a 82E0      		ldi r24,lo8(2)
222
 235               	.L87:
223
 236 019c 8093 0000 		sts Sync.0,r24
224
 237 01a0 8091 0000 		lds r24,FrameCnt.1
225
 238 01a4 8F5F      		subi r24,lo8(-(1))
226
 239 01a6 8093 0000 		sts FrameCnt.1,r24
227
 240 01aa 83E0      		ldi r24,lo8(3)
228
 241 01ac 00C0      		rjmp .L85
229
 242               	.L20:
230
 243 01ae 9230      		cpi r25,lo8(2)
231
 244 01b0 01F4      		brne .L22
232
 245 01b2 232B      		or r18,r19
233
 246 01b4 01F0      		breq .+2
234
 247 01b6 00C0      		rjmp .L26
235
 248 01b8 83E0      		ldi r24,lo8(3)
236
 249 01ba 8093 0000 		sts SpektrumTimer,r24
237
 250 01be 4093 0000 		sts ByteHigh.2,r20
238
 251 01c2 9091 0000 		lds r25,FrameCnt.1
239
 252 01c6 9230      		cpi r25,lo8(2)
240
 253 01c8 01F4      		brne .L23
241
 254 01ca 1092 0000 		sts Frame2.4,__zero_reg__
242
 255 01ce 47FF      		sbrs r20,7
243
 256 01d0 00C0      		rjmp .L23
244
 257 01d2 81E0      		ldi r24,lo8(1)
245
 258 01d4 8093 0000 		sts Frame2.4,r24
246
 259               	.L23:
247
 260 01d8 83E0      		ldi r24,lo8(3)
248
 261 01da 8093 0000 		sts Sync.0,r24
249
 262 01de 9F5F      		subi r25,lo8(-(1))
250
 263 01e0 9093 0000 		sts FrameCnt.1,r25
251
 264 01e4 00C0      		rjmp .L19
252
 265               	.L22:
253
 266 01e6 9330      		cpi r25,lo8(3)
254
 267 01e8 01F0      		breq .+2
255
 268 01ea 00C0      		rjmp .L26
256
 269 01ec 232B      		or r18,r19
257
 270 01ee 01F0      		breq .+2
258
 271 01f0 00C0      		rjmp .L26
259
 272 01f2 9093 0000 		sts SpektrumTimer,r25
260
 273 01f6 82E0      		ldi r24,lo8(2)
261
 274 01f8 8093 0000 		sts Sync.0,r24
262
 275 01fc 8091 0000 		lds r24,FrameCnt.1
263
 276 0200 8F5F      		subi r24,lo8(-(1))
264
 277 0202 8093 0000 		sts FrameCnt.1,r24
265
 278 0206 2091 0000 		lds r18,ByteHigh.2
266
 279 020a 822F      		mov r24,r18
267
 280 020c 9927      		clr r25
268
 281 020e 782F      		mov r23,r24
269
 282 0210 6627      		clr r22
270
 283 0212 842F      		mov r24,r20
271
 284 0214 9927      		clr r25
272
 285 0216 682B      		or r22,r24
273
 286 0218 792B      		or r23,r25
274
 287 021a 8091 0000 		lds r24,EE_Parameter+39
275
 288 021e 8130      		cpi r24,lo8(1)
276
 289 0220 01F4      		brne .L27
277
 290 0222 7370      		andi r23,hi8(1023)
278
 291 0224 CB01      		movw r24,r22
279
 292 0226 8050      		subi r24,lo8(-(-512))
280
 293 0228 9240      		sbci r25,hi8(-(-512))
281
 294 022a 63E0      		ldi r22,lo8(3)
282
 295 022c 70E0      		ldi r23,hi8(3)
283
 296 022e 0E94 0000 		call __divmodhi4
284
 297 0232 EB01      		movw r28,r22
285
 298 0234 00C0      		rjmp .L86
286
 299               	.L27:
287
 300 0236 8230      		cpi r24,lo8(2)
288
 301 0238 01F4      		brne .L29
289
 302 023a 7770      		andi r23,hi8(2047)
290
 303 023c CB01      		movw r24,r22
291
 304 023e 8050      		subi r24,lo8(-(-1024))
292
 305 0240 9440      		sbci r25,hi8(-(-1024))
293
 306 0242 66E0      		ldi r22,lo8(6)
294
 307 0244 70E0      		ldi r23,hi8(6)
295
 308 0246 0E94 0000 		call __divmodhi4
296
 309 024a EB01      		movw r28,r22
297
 310 024c 2695      		lsr r18
298
 311 024e 2695      		lsr r18
299
 312 0250 2695      		lsr r18
300
 313 0252 00C0      		rjmp .L81
301
 314               	.L29:
302
 315 0254 EB01      		movw r28,r22
303
 316 0256 D370      		andi r29,hi8(1023)
304
 317 0258 C856      		subi r28,lo8(-(-360))
305
 318 025a D140      		sbci r29,hi8(-(-360))
306
 319 025c CE01      		movw r24,r28
307
 320 025e D7FD      		sbrc r29,7
308
 321 0260 0196      		adiw r24,1
309
 322               	.L31:
310
 323 0262 EC01      		movw r28,r24
311
 324 0264 D595      		asr r29
312
 325 0266 C795      		ror r28
313
 326               	.L86:
314
 327 0268 2695      		lsr r18
315
 328 026a 2695      		lsr r18
316
 329               	.L81:
317
 330 026c 022F      		mov r16,r18
318
 331 026e 1127      		clr r17
319
 332 0270 0F70      		andi r16,lo8(15)
320
 333 0272 1070      		andi r17,hi8(15)
321
 334 0274 0F5F      		subi r16,lo8(-(1))
322
 335 0276 1F4F      		sbci r17,hi8(-(1))
323
 336 0278 0D30      		cpi r16,13
324
 337 027a 1105      		cpc r17,__zero_reg__
325
 338 027c 00F0      		brlo .+2
326
 339 027e 00C0      		rjmp .L32
327
 340 0280 0230      		cpi r16,2
328
 341 0282 1105      		cpc r17,__zero_reg__
329
 342 0284 01F4      		brne .L33
330
 343 0286 04E0      		ldi r16,lo8(4)
331
 344 0288 10E0      		ldi r17,hi8(4)
332
 345 028a 00C0      		rjmp .L34
333
 346               	.L33:
334
 347 028c 0430      		cpi r16,4
335
 348 028e 1105      		cpc r17,__zero_reg__
336
 349 0290 01F4      		brne .L34
337
 350 0292 02E0      		ldi r16,lo8(2)
338
 351 0294 10E0      		ldi r17,hi8(2)
339
 352               	.L34:
340
 353 0296 D801      		movw r26,r16
341
 354 0298 A00F      		add r26,r16
342
 355 029a B11F      		adc r27,r17
343
 356 029c FD01      		movw r30,r26
344
 357 029e E050      		subi r30,lo8(-(PPM_in))
345
 358 02a0 F040      		sbci r31,hi8(-(PPM_in))
346
 359 02a2 8081      		ld r24,Z
347
 360 02a4 9181      		ldd r25,Z+1
348
 361 02a6 9E01      		movw r18,r28
349
 362 02a8 281B      		sub r18,r24
350
 363 02aa 390B      		sbc r19,r25
351
 364 02ac C901      		movw r24,r18
352
 365 02ae 37FF      		sbrs r19,7
353
 366 02b0 00C0      		rjmp .L37
354
 367 02b2 9095      		com r25
355
 368 02b4 8195      		neg r24
356
 369 02b6 9F4F      		sbci r25,lo8(-1)
357
 370               	.L37:
358
 371 02b8 0697      		sbiw r24,6
359
 372 02ba 04F4      		brge .L36
360
 373 02bc E091 0000 		lds r30,EE_Parameter+105
361
 374 02c0 EE23      		tst r30
362
 375 02c2 01F0      		breq .L39
363
 376 02c4 FF27      		clr r31
364
 377 02c6 EE0F      		add r30,r30
365
 378 02c8 FF1F      		adc r31,r31
366
 379 02ca E050      		subi r30,lo8(-(PPM_in))
367
 380 02cc F040      		sbci r31,hi8(-(PPM_in))
368
 381 02ce 8081      		ld r24,Z
369
 382 02d0 9181      		ldd r25,Z+1
370
 383 02d2 8436      		cpi r24,100
371
 384 02d4 9105      		cpc r25,__zero_reg__
372
 385 02d6 04F4      		brge .L36
373
 386               	.L39:
374
 387 02d8 8091 0000 		lds r24,SenderOkay
375
 388 02dc 883C      		cpi r24,lo8(-56)
376
 389 02de 00F4      		brsh .L40
377
 390 02e0 8091 0000 		lds r24,SenderOkay
378
 391 02e4 865F      		subi r24,lo8(-(10))
379
 392 02e6 8093 0000 		sts SenderOkay,r24
380
 393 02ea 00C0      		rjmp .L36
381
 394               	.L40:
382
 395 02ec 88EC      		ldi r24,lo8(-56)
383
 396 02ee 8093 0000 		sts SenderOkay,r24
384
 397 02f2 8091 6F00 		lds r24,111
385
 398 02f6 8F7D      		andi r24,lo8(-33)
386
 399 02f8 8093 6F00 		sts 111,r24
387
 400               	.L36:
388
 401 02fc A050      		subi r26,lo8(-(PPM_in))
389
 402 02fe B040      		sbci r27,hi8(-(PPM_in))
390
 403 0300 8D91      		ld r24,X+
391
 404 0302 9C91      		ld r25,X
392
 405 0304 BC01      		movw r22,r24
393
 406 0306 660F      		lsl r22
394
 407 0308 771F      		rol r23
395
 408 030a 680F      		add r22,r24
396
 409 030c 791F      		adc r23,r25
397
 410 030e 6C0F      		add r22,r28
398
 411 0310 7D1F      		adc r23,r29
399
 412 0312 77FF      		sbrs r23,7
400
 413 0314 00C0      		rjmp .L42
401
 414 0316 6D5F      		subi r22,lo8(-(3))
402
 415 0318 7F4F      		sbci r23,hi8(-(3))
403
 416               	.L42:
404
 417 031a 7B01      		movw r14,r22
405
 418 031c F594      		asr r15
406
 419 031e E794      		ror r14
407
 420 0320 F594      		asr r15
408
 421 0322 E794      		ror r14
409
 422 0324 CE01      		movw r24,r28
410
 423 0326 0196      		adiw r24,1
411
 424 0328 8E15      		cp r24,r14
412
 425 032a 9F05      		cpc r25,r15
413
 426 032c 04F4      		brge .L43
414
 427 032e 0894      		sec
415
 428 0330 E108      		sbc r14,__zero_reg__
416
 429 0332 F108      		sbc r15,__zero_reg__
417
 430 0334 00C0      		rjmp .L44
418
 431               	.L43:
419
 432 0336 CE01      		movw r24,r28
420
 433 0338 0197      		sbiw r24,1
421
 434 033a E816      		cp r14,r24
422
 435 033c F906      		cpc r15,r25
423
 436 033e 04F4      		brge .L44
424
 437 0340 0894      		sec
425
 438 0342 E11C      		adc r14,__zero_reg__
426
 439 0344 F11C      		adc r15,__zero_reg__
427
 440               	.L44:
428
 441 0346 0630      		cpi r16,6
429
 442 0348 1105      		cpc r17,__zero_reg__
430
 443 034a 01F0      		breq .+2
431
 444 034c 00C0      		rjmp .L46
432
 445 034e C536      		cpi r28,101
433
 446 0350 D105      		cpc r29,__zero_reg__
434
 447 0352 04F4      		brge .+2
435
 448 0354 00C0      		rjmp .L47
436
 449 0356 9091 0000 		lds r25,s_excnt
437
 450 035a E92F      		mov r30,r25
438
 451 035c FF27      		clr r31
439
 452 035e E050      		subi r30,lo8(-(s_exdata))
440
 453 0360 F040      		sbci r31,hi8(-(s_exdata))
441
 454 0362 E081      		ld r30,Z
442
 455 0364 ED37      		cpi r30,lo8(125)
443
 456 0366 01F4      		brne .L48
444
 457 0368 8091 0000 		lds r24,s_exparity
445
 458 036c 8095      		com r24
446
 459 036e 8093 0000 		sts s_exparity,r24
447
 460               	.L48:
448
 461 0372 9630      		cpi r25,lo8(6)
449
 462 0374 01F4      		brne .L51
450
 463 0376 8091 0000 		lds r24,s_exparity
451
 464 037a 8823      		tst r24
452
 465 037c 01F0      		breq .L52
453
 466 037e E338      		cpi r30,lo8(-125)
454
 467 0380 01F0      		breq .L50
455
 468               	.L52:
456
 469 0382 8823      		tst r24
457
 470 0384 01F0      		breq .+2
458
 471 0386 00C0      		rjmp .L49
459
 472 0388 ED37      		cpi r30,lo8(125)
460
 473 038a 01F0      		breq .L50
461
 474 038c 00C0      		rjmp .L49
462
 475               	.L51:
463
 476 038e 9930      		cpi r25,lo8(9)
464
 477 0390 01F0      		breq .+2
465
 478 0392 00C0      		rjmp .L49
466
 479 0394 8091 0000 		lds r24,s_exparity
467
 480 0398 8823      		tst r24
468
 481 039a 01F4      		brne .L80
469
 482 039c 8091 0000 		lds r24,s_exdata+9
470
 483 03a0 8338      		cpi r24,lo8(-125)
471
 484 03a2 01F0      		breq .L50
472
 485 03a4 00C0      		rjmp .L49
473
 486               	.L80:
474
 487 03a6 8091 0000 		lds r24,s_exdata+9
475
 488 03aa 8D37      		cpi r24,lo8(125)
476
 489 03ac 01F0      		breq .+2
477
 490 03ae 00C0      		rjmp .L49
478
 491               	.L50:
479
 492 03b0 8091 0000 		lds r24,s_exdata+1
480
 493 03b4 8D37      		cpi r24,lo8(125)
481
 494 03b6 01F4      		brne .L54
482
 495 03b8 8091 0000 		lds r24,s_exdata+2
483
 496 03bc 8338      		cpi r24,lo8(-125)
484
 497 03be 01F4      		brne .L55
485
 498 03c0 63E8      		ldi r22,lo8(-125)
486
 499 03c2 7FEF      		ldi r23,hi8(-125)
487
 500 03c4 00C0      		rjmp .L82
488
 501               	.L54:
489
 502 03c6 8338      		cpi r24,lo8(-125)
490
 503 03c8 01F4      		brne .L55
491
 504 03ca 8091 0000 		lds r24,s_exdata+2
492
 505 03ce 8338      		cpi r24,lo8(-125)
493
 506 03d0 01F4      		brne .L79
494
 507 03d2 60E0      		ldi r22,lo8(0)
495
 508 03d4 70E0      		ldi r23,hi8(0)
496
 509 03d6 00C0      		rjmp .L82
497
 510               	.L79:
498
 511 03d8 8D37      		cpi r24,lo8(125)
499
 512 03da 01F4      		brne .L55
500
 513 03dc 6DE7      		ldi r22,lo8(125)
501
 514 03de 70E0      		ldi r23,hi8(125)
502
 515               	.L82:
503
 516 03e0 85E0      		ldi r24,lo8(5)
504
 517 03e2 0E94 0000 		call s_update
505
 518               	.L55:
506
 519 03e6 8091 0000 		lds r24,s_exdata+3
507
 520 03ea 9927      		clr r25
508
 521 03ec 87FD      		sbrc r24,7
509
 522 03ee 9095      		com r25
510
 523 03f0 BC01      		movw r22,r24
511
 524 03f2 86E0      		ldi r24,lo8(6)
512
 525 03f4 0E94 0000 		call s_update
513
 526 03f8 8091 0000 		lds r24,s_exdata+4
514
 527 03fc 9927      		clr r25
515
 528 03fe 87FD      		sbrc r24,7
516
 529 0400 9095      		com r25
517
 530 0402 BC01      		movw r22,r24
518
 531 0404 8BE0      		ldi r24,lo8(11)
519
 532 0406 0E94 0000 		call s_update
520
 533 040a 8091 0000 		lds r24,s_exdata+5
521
 534 040e 9927      		clr r25
522
 535 0410 87FD      		sbrc r24,7
523
 536 0412 9095      		com r25
524
 537 0414 BC01      		movw r22,r24
525
 538 0416 8CE0      		ldi r24,lo8(12)
526
 539 0418 0E94 0000 		call s_update
527
 540 041c 8091 0000 		lds r24,s_excnt
528
 541 0420 8930      		cpi r24,lo8(9)
529
 542 0422 01F4      		brne .L49
530
 543 0424 8091 0000 		lds r24,s_exdata+7
531
 544 0428 8D37      		cpi r24,lo8(125)
532
 545 042a 01F4      		brne .L60
533
 546 042c 8091 0000 		lds r24,PPM_in+16
534
 547 0430 9091 0000 		lds r25,(PPM_in+16)+1
535
 548 0434 0596      		adiw r24,5
536
 549 0436 BC01      		movw r22,r24
537
 550 0438 88E0      		ldi r24,lo8(8)
538
 551 043a 0E94 0000 		call s_update
539
 552               	.L60:
540
 553 043e 8091 0000 		lds r24,s_exdata+8
541
 554 0442 8D37      		cpi r24,lo8(125)
542
 555 0444 01F4      		brne .L61
543
 556 0446 8091 0000 		lds r24,PPM_in+16
544
 557 044a 9091 0000 		lds r25,(PPM_in+16)+1
545
 558 044e 0597      		sbiw r24,5
546
 559 0450 BC01      		movw r22,r24
547
 560 0452 88E0      		ldi r24,lo8(8)
548
 561 0454 0E94 0000 		call s_update
549
 562               	.L61:
550
 563 0458 8091 0000 		lds r24,PPM_in+16
551
 564 045c 9091 0000 		lds r25,(PPM_in+16)+1
552
 565 0460 8358      		subi r24,lo8(-125)
553
 566 0462 9F4F      		sbci r25,hi8(-125)
554
 567 0464 04F4      		brge .L62
555
 568 0466 83E8      		ldi r24,lo8(-125)
556
 569 0468 9FEF      		ldi r25,hi8(-125)
557
 570 046a 00C0      		rjmp .L83
558
 571               	.L62:
559
 572 046c 8091 0000 		lds r24,PPM_in+16
560
 573 0470 9091 0000 		lds r25,(PPM_in+16)+1
561
 574 0474 8E37      		cpi r24,126
562
 575 0476 9105      		cpc r25,__zero_reg__
563
 576 0478 04F0      		brlt .L63
564
 577 047a 8DE7      		ldi r24,lo8(125)
565
 578 047c 90E0      		ldi r25,hi8(125)
566
 579               	.L83:
567
 580 047e 9093 0000 		sts (PPM_in+16)+1,r25
568
 581 0482 8093 0000 		sts PPM_in+16,r24
569
 582               	.L63:
570
 583 0486 8091 0000 		lds r24,s_exdata+6
571
 584 048a 9927      		clr r25
572
 585 048c 87FD      		sbrc r24,7
573
 586 048e 9095      		com r25
574
 587 0490 BC01      		movw r22,r24
575
 588 0492 8AE0      		ldi r24,lo8(10)
576
 589 0494 0E94 0000 		call s_update
577
 590               	.L49:
578
 591 0498 1092 0000 		sts s_excnt,__zero_reg__
579
 592 049c 1092 0000 		sts s_exparity,__zero_reg__
580
 593               	.L47:
581
 594 04a0 CA30      		cpi r28,10
582
 595 04a2 D105      		cpc r29,__zero_reg__
583
 596 04a4 04F4      		brge .L65
584
 597 04a6 8091 0000 		lds r24,s_excnt
585
 598 04aa 8F5F      		subi r24,lo8(-(1))
586
 599 04ac 8093 0000 		sts s_excnt,r24
587
 600 04b0 E82F      		mov r30,r24
588
 601 04b2 FF27      		clr r31
589
 602 04b4 E050      		subi r30,lo8(-(s_exdata))
590
 603 04b6 F040      		sbci r31,hi8(-(s_exdata))
591
 604 04b8 83E8      		ldi r24,lo8(-125)
592
 605 04ba 8083      		st Z,r24
593
 606               	.L65:
594
 607 04bc 8091 0000 		lds r24,s_excnt
595
 608 04c0 8A30      		cpi r24,lo8(10)
596
 609 04c2 01F4      		brne .L66
597
 610 04c4 1092 0000 		sts s_excnt,__zero_reg__
598
 611               	.L66:
599
 612 04c8 8FEF      		ldi r24,hi8(-100)
600
 613 04ca CC39      		cpi r28,lo8(-100)
601
 614 04cc D807      		cpc r29,r24
602
 615 04ce 04F4      		brge .L46
603
 616 04d0 8091 0000 		lds r24,s_excnt
604
 617 04d4 E82F      		mov r30,r24
605
 618 04d6 FF27      		clr r31
606
 619 04d8 E050      		subi r30,lo8(-(s_exdata))
607
 620 04da F040      		sbci r31,hi8(-(s_exdata))
608
 621 04dc 8DE7      		ldi r24,lo8(125)
609
 622 04de 8083      		st Z,r24
610
 623 04e0 8091 0000 		lds r24,s_exparity
611
 624 04e4 8095      		com r24
612
 625 04e6 8093 0000 		sts s_exparity,r24
613
 626               	.L46:
614
 627 04ea 0530      		cpi r16,5
615
 628 04ec 1105      		cpc r17,__zero_reg__
616
 629 04ee 00F4      		brsh .L68
617
 630 04f0 B701      		movw r22,r14
618
 631 04f2 802F      		mov r24,r16
619
 632 04f4 00C0      		rjmp .L84
620
 633               	.L68:
621
 634 04f6 0530      		cpi r16,5
622
 635 04f8 1105      		cpc r17,__zero_reg__
623
 636 04fa 01F4      		brne .L70
624
 637 04fc BE01      		movw r22,r28
625
 638 04fe 87E0      		ldi r24,lo8(7)
626
 639 0500 00C0      		rjmp .L84
627
 640               	.L70:
628
 641 0502 0730      		cpi r16,7
629
 642 0504 1105      		cpc r17,__zero_reg__
630
 643 0506 01F4      		brne .L19
631
 644 0508 BE01      		movw r22,r28
632
 645 050a 89E0      		ldi r24,lo8(9)
633
 646               	.L84:
634
 647 050c 0E94 0000 		call s_update
635
 648 0510 00C0      		rjmp .L19
636
 649               	.L32:
637
 650 0512 0231      		cpi r16,18
638
 651 0514 1105      		cpc r17,__zero_reg__
639
 652 0516 00F0      		brlo .L19
640
 653 0518 81E0      		ldi r24,lo8(1)
641
 654 051a 8093 0000 		sts ReSync.3,r24
642
 655 051e 00C0      		rjmp .L19
643
 656               	.L26:
644
 657 0520 81E0      		ldi r24,lo8(1)
645
 658 0522 8093 0000 		sts ReSync.3,r24
646
 659 0526 1092 0000 		sts FrameCnt.1,__zero_reg__
647
 660 052a 1092 0000 		sts Frame2.4,__zero_reg__
648
 661 052e 84E4      		ldi r24,lo8(68)
649
 662               	.L85:
650
 663 0530 8093 0000 		sts SpektrumTimer,r24
651
 664               	.L19:
652
 665 0534 8091 0000 		lds r24,FrameCnt.1
653
 666 0538 8031      		cpi r24,lo8(16)
654
 667 053a 00F0      		brlo .L11
655
 668 053c 8091 0000 		lds r24,Frame2.4
656
 669 0540 8823      		tst r24
657
 670 0542 01F4      		brne .L77
658
 671 0544 8091 0000 		lds r24,ReSync.3
659
 672 0548 8823      		tst r24
660
 673 054a 01F4      		brne .L77
661
 674 054c 8093 0000 		sts NewPpmData,r24
662
 675               	.L77:
663
 676 0550 1092 0000 		sts FrameCnt.1,__zero_reg__
664
 677 0554 1092 0000 		sts Frame2.4,__zero_reg__
665
 678 0558 1092 0000 		sts Sync.0,__zero_reg__
666
 679 055c 84E4      		ldi r24,lo8(68)
667
 680 055e 8093 0000 		sts SpektrumTimer,r24
668
 681               	.L11:
669
 682               	/* epilogue: frame size=0 */
670
 683 0562 E6E0      		ldi r30,6
671
 684 0564 CDB7      		in r28,__SP_L__
672
 685 0566 DEB7      		in r29,__SP_H__
673
 686 0568 0C94 0000 		jmp __epilogue_restores__+24
674
 687               	/* epilogue end (size=5) */
675
 688               	/* function SpektrumParser size 551 (540) */
676
 690               		.comm s_exdata,11,1
677
 691               	/* File "Spektrum.c": code  701 = 0x02bd ( 680), prologues  10, epilogues  11 */
678
DEFINED SYMBOLS
679
                            *ABS*:00000000 Spektrum.c
680
  C:\Temp/cc1n5H0x.s:3      *ABS*:0000003f __SREG__
681
  C:\Temp/cc1n5H0x.s:4      *ABS*:0000003e __SP_H__
682
  C:\Temp/cc1n5H0x.s:5      *ABS*:0000003d __SP_L__
683
  C:\Temp/cc1n5H0x.s:6      *ABS*:00000000 __tmp_reg__
684
  C:\Temp/cc1n5H0x.s:7      *ABS*:00000001 __zero_reg__
685
  C:\Temp/cc1n5H0x.s:15     .bss:00000000 s_exparity
686
  C:\Temp/cc1n5H0x.s:21     .bss:00000001 s_excnt
687
  C:\Temp/cc1n5H0x.s:27     .bss:00000002 SpektrumTimer
688
  C:\Temp/cc1n5H0x.s:32     .text:00000000 s_update
689
  C:\Temp/cc1n5H0x.s:99     .text:00000074 SpektrumUartInit
690
                             .bss:00000003 Sync.0
691
  C:\Temp/cc1n5H0x.s:170    .bss:00000004 FrameCnt.1
692
  C:\Temp/cc1n5H0x.s:171    .bss:00000005 ByteHigh.2
693
  C:\Temp/cc1n5H0x.s:176    .data:00000000 ReSync.3
694
  C:\Temp/cc1n5H0x.s:172    .bss:00000006 Frame2.4
695
  C:\Temp/cc1n5H0x.s:182    .text:0000012a SpektrumParser
696
                            *COM*:0000000b s_exdata
697
 
698
UNDEFINED SYMBOLS
699
__do_copy_data
700
__do_clear_bss
701
SenderOkay
702
PPM_in
703
__divmodhi4
704
PPM_diff
705
EE_Parameter
706
NewPpmData
707
__epilogue_restores__