-
Notifications
You must be signed in to change notification settings - Fork 6
/
Copy pathmain.lst
4427 lines (4426 loc) · 167 KB
/
main.lst
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
320
321
322
323
324
325
326
327
328
329
330
331
332
333
334
335
336
337
338
339
340
341
342
343
344
345
346
347
348
349
350
351
352
353
354
355
356
357
358
359
360
361
362
363
364
365
366
367
368
369
370
371
372
373
374
375
376
377
378
379
380
381
382
383
384
385
386
387
388
389
390
391
392
393
394
395
396
397
398
399
400
401
402
403
404
405
406
407
408
409
410
411
412
413
414
415
416
417
418
419
420
421
422
423
424
425
426
427
428
429
430
431
432
433
434
435
436
437
438
439
440
441
442
443
444
445
446
447
448
449
450
451
452
453
454
455
456
457
458
459
460
461
462
463
464
465
466
467
468
469
470
471
472
473
474
475
476
477
478
479
480
481
482
483
484
485
486
487
488
489
490
491
492
493
494
495
496
497
498
499
500
501
502
503
504
505
506
507
508
509
510
511
512
513
514
515
516
517
518
519
520
521
522
523
524
525
526
527
528
529
530
531
532
533
534
535
536
537
538
539
540
541
542
543
544
545
546
547
548
549
550
551
552
553
554
555
556
557
558
559
560
561
562
563
564
565
566
567
568
569
570
571
572
573
574
575
576
577
578
579
580
581
582
583
584
585
586
587
588
589
590
591
592
593
594
595
596
597
598
599
600
601
602
603
604
605
606
607
608
609
610
611
612
613
614
615
616
617
618
619
620
621
622
623
624
625
626
627
628
629
630
631
632
633
634
635
636
637
638
639
640
641
642
643
644
645
646
647
648
649
650
651
652
653
654
655
656
657
658
659
660
661
662
663
664
665
666
667
668
669
670
671
672
673
674
675
676
677
678
679
680
681
682
683
684
685
686
687
688
689
690
691
692
693
694
695
696
697
698
699
700
701
702
703
704
705
706
707
708
709
710
711
712
713
714
715
716
717
718
719
720
721
722
723
724
725
726
727
728
729
730
731
732
733
734
735
736
737
738
739
740
741
742
743
744
745
746
747
748
749
750
751
752
753
754
755
756
757
758
759
760
761
762
763
764
765
766
767
768
769
770
771
772
773
774
775
776
777
778
779
780
781
782
783
784
785
786
787
788
789
790
791
792
793
794
795
796
797
798
799
800
801
802
803
804
805
806
807
808
809
810
811
812
813
814
815
816
817
818
819
820
821
822
823
824
825
826
827
828
829
830
831
832
833
834
835
836
837
838
839
840
841
842
843
844
845
846
847
848
849
850
851
852
853
854
855
856
857
858
859
860
861
862
863
864
865
866
867
868
869
870
871
872
873
874
875
876
877
878
879
880
881
882
883
884
885
886
887
888
889
890
891
892
893
894
895
896
897
898
899
900
901
902
903
904
905
906
907
908
909
910
911
912
913
914
915
916
917
918
919
920
921
922
923
924
925
926
927
928
929
930
931
932
933
934
935
936
937
938
939
940
941
942
943
944
945
946
947
948
949
950
951
952
953
954
955
956
957
958
959
960
961
962
963
964
965
966
967
968
969
970
971
972
973
974
975
976
977
978
979
980
981
982
983
984
985
986
987
988
989
990
991
992
993
994
995
996
997
998
999
1000
1 .file "main.c"
2 __SREG__ = 0x3f
3 __SP_H__ = 0x3e
4 __SP_L__ = 0x3d
5 __CCP__ = 0x34
6 __tmp_reg__ = 0
7 __zero_reg__ = 1
15 .Ltext0:
16 .global config_mode
18 config_mode:
19 .LFB13:
20 .LM1:
21 0000 AF92 push r10
22 0002 BF92 push r11
23 0004 CF92 push r12
24 0006 DF92 push r13
25 0008 EF92 push r14
26 000a FF92 push r15
27 000c 0F93 push r16
28 000e 1F93 push r17
29 0010 CF93 push r28
30 0012 DF93 push r29
31 /* prologue: function */
32 /* frame size = 0 */
33 .LM2:
34 0014 A090 0000 lds r10,config_mode_throttle_percent
35 0018 B090 0000 lds r11,(config_mode_throttle_percent)+1
36 001c C090 0000 lds r12,(config_mode_throttle_percent)+2
37 0020 D090 0000 lds r13,(config_mode_throttle_percent)+3
38 0024 C601 movw r24,r12
39 0026 B501 movw r22,r10
40 0028 20E0 ldi r18,lo8(0x42480000)
41 002a 30E0 ldi r19,hi8(0x42480000)
42 002c 48E4 ldi r20,hlo8(0x42480000)
43 002e 52E4 ldi r21,hhi8(0x42480000)
44 0030 0E94 0000 call __ltsf2
45 0034 8823 tst r24
46 0036 04F0 brlt .+2
47 0038 00C0 rjmp .L2
48 .LM3:
49 003a 1092 0000 sts (flashy_led)+1,__zero_reg__
50 003e 1092 0000 sts flashy_led,__zero_reg__
51 .LM4:
52 0042 2091 0000 lds r18,leftright
53 0046 3091 0000 lds r19,(leftright)+1
54 004a 4091 0000 lds r20,(leftright)+2
55 004e 5091 0000 lds r21,(leftright)+3
56 0052 C091 0000 lds r28,heading_center
57 0056 D091 0000 lds r29,(heading_center)+1
58 005a 8091 0000 lds r24,heading_leftthresh
59 005e 9091 0000 lds r25,(heading_leftthresh)+1
60 0062 8C0F add r24,r28
61 0064 9D1F adc r25,r29
62 0066 AA27 clr r26
63 0068 97FD sbrc r25,7
64 006a A095 com r26
65 006c BA2F mov r27,r26
66 006e 8217 cp r24,r18
67 0070 9307 cpc r25,r19
68 0072 A407 cpc r26,r20
69 0074 B507 cpc r27,r21
70 0076 04F4 brge .L4
71 0078 E090 0000 lds r14,tracking_comp
72 007c F090 0000 lds r15,(tracking_comp)+1
73 0080 0091 0000 lds r16,(tracking_comp)+2
74 0084 1091 0000 lds r17,(tracking_comp)+3
75 0088 C801 movw r24,r16
76 008a B701 movw r22,r14
77 008c 26EA ldi r18,lo8(0x3b449ba6)
78 008e 3BE9 ldi r19,hi8(0x3b449ba6)
79 0090 44E4 ldi r20,hlo8(0x3b449ba6)
80 0092 5BE3 ldi r21,hhi8(0x3b449ba6)
81 0094 0E94 0000 call __mulsf3
82 0098 9B01 movw r18,r22
83 009a AC01 movw r20,r24
84 009c C801 movw r24,r16
85 009e B701 movw r22,r14
86 00a0 0E94 0000 call __addsf3
87 00a4 6093 0000 sts tracking_comp,r22
88 00a8 7093 0000 sts (tracking_comp)+1,r23
89 00ac 8093 0000 sts (tracking_comp)+2,r24
90 00b0 9093 0000 sts (tracking_comp)+3,r25
91 00b4 81E0 ldi r24,lo8(1)
92 00b6 90E0 ldi r25,hi8(1)
93 00b8 9093 0000 sts (flashy_led)+1,r25
94 00bc 8093 0000 sts flashy_led,r24
95 .L4:
96 .LM5:
97 00c0 2091 0000 lds r18,leftright
98 00c4 3091 0000 lds r19,(leftright)+1
99 00c8 4091 0000 lds r20,(leftright)+2
100 00cc 5091 0000 lds r21,(leftright)+3
101 00d0 8091 0000 lds r24,heading_rightthresh
102 00d4 9091 0000 lds r25,(heading_rightthresh)+1
103 00d8 C80F add r28,r24
104 00da D91F adc r29,r25
105 00dc CE01 movw r24,r28
106 00de AA27 clr r26
107 00e0 97FD sbrc r25,7
108 00e2 A095 com r26
109 00e4 BA2F mov r27,r26
110 00e6 2817 cp r18,r24
111 00e8 3907 cpc r19,r25
112 00ea 4A07 cpc r20,r26
113 00ec 5B07 cpc r21,r27
114 00ee 04F4 brge .L5
115 00f0 E090 0000 lds r14,tracking_comp
116 00f4 F090 0000 lds r15,(tracking_comp)+1
117 00f8 0091 0000 lds r16,(tracking_comp)+2
118 00fc 1091 0000 lds r17,(tracking_comp)+3
119 0100 C801 movw r24,r16
120 0102 B701 movw r22,r14
121 0104 26EA ldi r18,lo8(0xbb449ba6)
122 0106 3BE9 ldi r19,hi8(0xbb449ba6)
123 0108 44E4 ldi r20,hlo8(0xbb449ba6)
124 010a 5BEB ldi r21,hhi8(0xbb449ba6)
125 010c 0E94 0000 call __mulsf3
126 0110 9B01 movw r18,r22
127 0112 AC01 movw r20,r24
128 0114 C801 movw r24,r16
129 0116 B701 movw r22,r14
130 0118 0E94 0000 call __addsf3
131 011c 6093 0000 sts tracking_comp,r22
132 0120 7093 0000 sts (tracking_comp)+1,r23
133 0124 8093 0000 sts (tracking_comp)+2,r24
134 0128 9093 0000 sts (tracking_comp)+3,r25
135 012c 81E0 ldi r24,lo8(1)
136 012e 90E0 ldi r25,hi8(1)
137 0130 9093 0000 sts (flashy_led)+1,r25
138 0134 8093 0000 sts flashy_led,r24
139 .L5:
140 .LM6:
141 0138 6091 0000 lds r22,tracking_comp
142 013c 7091 0000 lds r23,(tracking_comp)+1
143 0140 8091 0000 lds r24,(tracking_comp)+2
144 0144 9091 0000 lds r25,(tracking_comp)+3
145 0148 2DEC ldi r18,lo8(0x3dcccccd)
146 014a 3CEC ldi r19,hi8(0x3dcccccd)
147 014c 4CEC ldi r20,hlo8(0x3dcccccd)
148 014e 5DE3 ldi r21,hhi8(0x3dcccccd)
149 0150 0E94 0000 call __ltsf2
150 0154 8823 tst r24
151 0156 04F4 brge .L6
152 0158 8DEC ldi r24,lo8(0x3dcccccd)
153 015a 9CEC ldi r25,hi8(0x3dcccccd)
154 015c ACEC ldi r26,hlo8(0x3dcccccd)
155 015e BDE3 ldi r27,hhi8(0x3dcccccd)
156 0160 8093 0000 sts tracking_comp,r24
157 0164 9093 0000 sts (tracking_comp)+1,r25
158 0168 A093 0000 sts (tracking_comp)+2,r26
159 016c B093 0000 sts (tracking_comp)+3,r27
160 .L6:
161 .LM7:
162 0170 6091 0000 lds r22,tracking_comp
163 0174 7091 0000 lds r23,(tracking_comp)+1
164 0178 8091 0000 lds r24,(tracking_comp)+2
165 017c 9091 0000 lds r25,(tracking_comp)+3
166 0180 20E0 ldi r18,lo8(0x41200000)
167 0182 30E0 ldi r19,hi8(0x41200000)
168 0184 40E2 ldi r20,hlo8(0x41200000)
169 0186 51E4 ldi r21,hhi8(0x41200000)
170 0188 0E94 0000 call __gtsf2
171 018c 1816 cp __zero_reg__,r24
172 018e 04F4 brge .L2
173 0190 80E0 ldi r24,lo8(0x41200000)
174 0192 90E0 ldi r25,hi8(0x41200000)
175 0194 A0E2 ldi r26,hlo8(0x41200000)
176 0196 B1E4 ldi r27,hhi8(0x41200000)
177 0198 8093 0000 sts tracking_comp,r24
178 019c 9093 0000 sts (tracking_comp)+1,r25
179 01a0 A093 0000 sts (tracking_comp)+2,r26
180 01a4 B093 0000 sts (tracking_comp)+3,r27
181 .L2:
182 .LM8:
183 01a8 C601 movw r24,r12
184 01aa B501 movw r22,r10
185 01ac 20E0 ldi r18,lo8(0x42480000)
186 01ae 30E0 ldi r19,hi8(0x42480000)
187 01b0 48E4 ldi r20,hlo8(0x42480000)
188 01b2 52E4 ldi r21,hhi8(0x42480000)
189 01b4 0E94 0000 call __gesf2
190 01b8 8823 tst r24
191 01ba 04F4 brge .+2
192 01bc 00C0 rjmp .L17
193 01be C601 movw r24,r12
194 01c0 B501 movw r22,r10
195 01c2 20E0 ldi r18,lo8(0x42b40000)
196 01c4 30E0 ldi r19,hi8(0x42b40000)
197 01c6 44EB ldi r20,hlo8(0x42b40000)
198 01c8 52E4 ldi r21,hhi8(0x42b40000)
199 01ca 0E94 0000 call __ltsf2
200 01ce 8823 tst r24
201 01d0 04F0 brlt .+2
202 01d2 00C0 rjmp .L17
203 .LM9:
204 01d4 81E0 ldi r24,lo8(1)
205 01d6 90E0 ldi r25,hi8(1)
206 01d8 9093 0000 sts (flashy_led)+1,r25
207 01dc 8093 0000 sts flashy_led,r24
208 .LM10:
209 01e0 2091 0000 lds r18,leftright
210 01e4 3091 0000 lds r19,(leftright)+1
211 01e8 4091 0000 lds r20,(leftright)+2
212 01ec 5091 0000 lds r21,(leftright)+3
213 01f0 C091 0000 lds r28,heading_center
214 01f4 D091 0000 lds r29,(heading_center)+1
215 01f8 8091 0000 lds r24,heading_leftthresh
216 01fc 9091 0000 lds r25,(heading_leftthresh)+1
217 0200 8C0F add r24,r28
218 0202 9D1F adc r25,r29
219 0204 AA27 clr r26
220 0206 97FD sbrc r25,7
221 0208 A095 com r26
222 020a BA2F mov r27,r26
223 020c 8217 cp r24,r18
224 020e 9307 cpc r25,r19
225 0210 A407 cpc r26,r20
226 0212 B507 cpc r27,r21
227 0214 04F4 brge .L12
228 0216 6091 0000 lds r22,led_adjust
229 021a 7091 0000 lds r23,(led_adjust)+1
230 021e 8091 0000 lds r24,(led_adjust)+2
231 0222 9091 0000 lds r25,(led_adjust)+3
232 0226 20E0 ldi r18,lo8(0x3f800000)
233 0228 30E0 ldi r19,hi8(0x3f800000)
234 022a 40E8 ldi r20,hlo8(0x3f800000)
235 022c 5FE3 ldi r21,hhi8(0x3f800000)
236 022e 0E94 0000 call __addsf3
237 0232 6093 0000 sts led_adjust,r22
238 0236 7093 0000 sts (led_adjust)+1,r23
239 023a 8093 0000 sts (led_adjust)+2,r24
240 023e 9093 0000 sts (led_adjust)+3,r25
241 0242 1092 0000 sts (flashy_led)+1,__zero_reg__
242 0246 1092 0000 sts flashy_led,__zero_reg__
243 .L12:
244 .LM11:
245 024a 2091 0000 lds r18,leftright
246 024e 3091 0000 lds r19,(leftright)+1
247 0252 4091 0000 lds r20,(leftright)+2
248 0256 5091 0000 lds r21,(leftright)+3
249 025a 8091 0000 lds r24,heading_rightthresh
250 025e 9091 0000 lds r25,(heading_rightthresh)+1
251 0262 C80F add r28,r24
252 0264 D91F adc r29,r25
253 0266 CE01 movw r24,r28
254 0268 AA27 clr r26
255 026a 97FD sbrc r25,7
256 026c A095 com r26
257 026e BA2F mov r27,r26
258 0270 2817 cp r18,r24
259 0272 3907 cpc r19,r25
260 0274 4A07 cpc r20,r26
261 0276 5B07 cpc r21,r27
262 0278 04F4 brge .L13
263 027a 6091 0000 lds r22,led_adjust
264 027e 7091 0000 lds r23,(led_adjust)+1
265 0282 8091 0000 lds r24,(led_adjust)+2
266 0286 9091 0000 lds r25,(led_adjust)+3
267 028a 20E0 ldi r18,lo8(0x3f800000)
268 028c 30E0 ldi r19,hi8(0x3f800000)
269 028e 40E8 ldi r20,hlo8(0x3f800000)
270 0290 5FE3 ldi r21,hhi8(0x3f800000)
271 0292 0E94 0000 call __subsf3
272 0296 6093 0000 sts led_adjust,r22
273 029a 7093 0000 sts (led_adjust)+1,r23
274 029e 8093 0000 sts (led_adjust)+2,r24
275 02a2 9093 0000 sts (led_adjust)+3,r25
276 02a6 1092 0000 sts (flashy_led)+1,__zero_reg__
277 02aa 1092 0000 sts flashy_led,__zero_reg__
278 .L13:
279 .LM12:
280 02ae 6091 0000 lds r22,led_adjust
281 02b2 7091 0000 lds r23,(led_adjust)+1
282 02b6 8091 0000 lds r24,(led_adjust)+2
283 02ba 9091 0000 lds r25,(led_adjust)+3
284 02be 20E0 ldi r18,lo8(0x0)
285 02c0 30E0 ldi r19,hi8(0x0)
286 02c2 40E0 ldi r20,hlo8(0x0)
287 02c4 50E0 ldi r21,hhi8(0x0)
288 02c6 0E94 0000 call __ltsf2
289 02ca 8823 tst r24
290 02cc 04F4 brge .L14
291 02ce 80E0 ldi r24,lo8(0x42c80000)
292 02d0 90E0 ldi r25,hi8(0x42c80000)
293 02d2 A8EC ldi r26,hlo8(0x42c80000)
294 02d4 B2E4 ldi r27,hhi8(0x42c80000)
295 02d6 8093 0000 sts led_adjust,r24
296 02da 9093 0000 sts (led_adjust)+1,r25
297 02de A093 0000 sts (led_adjust)+2,r26
298 02e2 B093 0000 sts (led_adjust)+3,r27
299 .L14:
300 .LM13:
301 02e6 6091 0000 lds r22,led_adjust
302 02ea 7091 0000 lds r23,(led_adjust)+1
303 02ee 8091 0000 lds r24,(led_adjust)+2
304 02f2 9091 0000 lds r25,(led_adjust)+3
305 02f6 20E0 ldi r18,lo8(0x42c80000)
306 02f8 30E0 ldi r19,hi8(0x42c80000)
307 02fa 48EC ldi r20,hlo8(0x42c80000)
308 02fc 52E4 ldi r21,hhi8(0x42c80000)
309 02fe 0E94 0000 call __gtsf2
310 0302 1816 cp __zero_reg__,r24
311 0304 04F4 brge .L17
312 0306 80E0 ldi r24,lo8(0x0)
313 0308 90E0 ldi r25,hi8(0x0)
314 030a A0E0 ldi r26,hlo8(0x0)
315 030c B0E0 ldi r27,hhi8(0x0)
316 030e 8093 0000 sts led_adjust,r24
317 0312 9093 0000 sts (led_adjust)+1,r25
318 0316 A093 0000 sts (led_adjust)+2,r26
319 031a B093 0000 sts (led_adjust)+3,r27
320 .L17:
321 /* epilogue start */
322 .LM14:
323 031e DF91 pop r29
324 0320 CF91 pop r28
325 0322 1F91 pop r17
326 0324 0F91 pop r16
327 0326 FF90 pop r15
328 0328 EF90 pop r14
329 032a DF90 pop r13
330 032c CF90 pop r12
331 032e BF90 pop r11
332 0330 AF90 pop r10
333 0332 0895 ret
334 .LFE13:
336 .global motors_brake
338 motors_brake:
339 .LFB18:
340 .LM15:
341 /* prologue: function */
342 /* frame size = 0 */
343 .LM16:
344 0334 8091 0000 lds r24,use_pwm_esc
345 0338 9091 0000 lds r25,(use_pwm_esc)+1
346 033c 0097 sbiw r24,0
347 033e 01F4 brne .L26
348 .LM17:
349 0340 5A98 cbi 43-32,2
350 .LM18:
351 0342 5C98 cbi 43-32,4
352 0344 0895 ret
353 .L26:
354 .LM19:
355 0346 0197 sbiw r24,1
356 0348 01F4 brne .L28
357 .LM20:
358 034a 8091 0000 lds r24,pwm_throttle_brake
359 034e 8093 B300 sts 179,r24
360 .LM21:
361 0352 8093 B400 sts 180,r24
362 .L28:
363 0356 0895 ret
364 .LFE18:
366 .global setup
368 setup:
369 .LFB14:
370 .LM22:
371 /* prologue: function */
372 /* frame size = 0 */
373 .LBB123:
374 .LBB124:
375 .LM23:
376 0358 1092 7B00 sts 123,__zero_reg__
377 .LM24:
378 035c 86E8 ldi r24,lo8(-122)
379 035e 8093 7A00 sts 122,r24
380 .LM25:
381 0362 84E0 ldi r24,lo8(4)
382 0364 8093 7C00 sts 124,r24
383 .LBE124:
384 .LBE123:
385 .LM26:
386 0368 2098 cbi 36-32,0
387 .LM27:
388 036a 2198 cbi 36-32,1
389 .LM28:
390 036c 2298 cbi 36-32,2
391 .LM29:
392 036e 3C98 cbi 39-32,4
393 .LM30:
394 0370 509A sbi 42-32,0
395 .LM31:
396 0372 589A sbi 43-32,0
397 .LM32:
398 0374 559A sbi 42-32,5
399 .LM33:
400 0376 529A sbi 42-32,2
401 .LM34:
402 0378 549A sbi 42-32,4
403 .LM35:
404 037a 5D9A sbi 43-32,5
405 .LM36:
406 037c 8FEF ldi r24,lo8(-1)
407 037e 8093 6B00 sts 107,r24
408 .LM37:
409 0382 81E0 ldi r24,lo8(1)
410 0384 8093 6800 sts 104,r24
411 .LBB125:
412 .LBB126:
413 .LM38:
414 0388 1092 8000 sts 128,__zero_reg__
415 .LM39:
416 038c 83E0 ldi r24,lo8(3)
417 038e 8093 8100 sts 129,r24
418 .LBE126:
419 .LBE125:
420 .LM40:
421 0392 8091 0000 lds r24,use_pwm_esc
422 0396 9091 0000 lds r25,(use_pwm_esc)+1
423 039a 0197 sbiw r24,1
424 039c 01F4 brne .L30
425 .LBB127:
426 .LBB128:
427 .LM41:
428 039e 87E0 ldi r24,lo8(7)
429 03a0 8093 7000 sts 112,r24
430 .LM42:
431 03a4 86E0 ldi r24,lo8(6)
432 03a6 8093 B100 sts 177,r24
433 .L30:
434 .LBE128:
435 .LBE127:
436 .LM43:
437 /* #APP */
438 ; 838 "main.c" 1
439 03aa 7894 sei
440 ; 0 "" 2
441 .LM44:
442 /* #NOAPP */
443 03ac 0E94 0000 call motors_brake
444 03b0 21E0 ldi r18,lo8(1)
445 03b2 30E0 ldi r19,hi8(1)
446 03b4 40E0 ldi r20,hlo8(1)
447 03b6 50E0 ldi r21,hhi8(1)
448 .LM45:
449 03b8 E0E2 ldi r30,lo8(32)
450 .LBB129:
451 .LBB130:
452 .LBB131:
453 .LBB132:
454 .LM46:
455 03ba 68E8 ldi r22,lo8(5000)
456 03bc 73E1 ldi r23,hi8(5000)
457 03be 00C0 rjmp .L31
458 .LVL0:
459 .L32:
460 .LBE132:
461 .LBE131:
462 .LBE130:
463 .LBE129:
464 .LM47:
465 03c0 8BB1 in r24,43-32
466 .LVL1:
467 03c2 8E27 eor r24,r30
468 03c4 8BB9 out 43-32,r24
469 .LBB136:
470 .LBB135:
471 .LBB134:
472 .LBB133:
473 .LM48:
474 03c6 CB01 movw r24,r22
475 .LVL2:
476 /* #APP */
477 ; 105 "c:/winavr-20100110/lib/gcc/../../avr/include/util/delay_basic.h" 1
478 03c8 0197 1: sbiw r24,1
479 03ca 01F4 brne 1b
480 ; 0 "" 2
481 /* #NOAPP */
482 03cc 2F5F subi r18,lo8(-(1))
483 03ce 3F4F sbci r19,hi8(-(1))
484 03d0 4F4F sbci r20,hlo8(-(1))
485 03d2 5F4F sbci r21,hhi8(-(1))
486 .L31:
487 .LBE133:
488 .LBE134:
489 .LBE135:
490 .LBE136:
491 .LM49:
492 03d4 2B3F cpi r18,lo8(251)
493 03d6 3105 cpc r19,__zero_reg__
494 03d8 4105 cpc r20,__zero_reg__
495 03da 5105 cpc r21,__zero_reg__
496 03dc 04F0 brlt .L32
497 03de 21E0 ldi r18,lo8(1)
498 03e0 30E0 ldi r19,hi8(1)
499 03e2 40E0 ldi r20,hlo8(1)
500 03e4 50E0 ldi r21,hhi8(1)
501 .LM50:
502 03e6 A0E2 ldi r26,lo8(32)
503 .LBB137:
504 .LBB138:
505 .LBB139:
506 .LBB140:
507 .LM51:
508 03e8 64EF ldi r22,lo8(500)
509 03ea 71E0 ldi r23,hi8(500)
510 03ec 00C0 rjmp .L33
511 .LVL3:
512 .L35:
513 .LBE140:
514 .LBE139:
515 .LBE138:
516 .LBE137:
517 .LM52:
518 03ee 8BB1 in r24,43-32
519 .LVL4:
520 03f0 8A27 eor r24,r26
521 03f2 8BB9 out 43-32,r24
522 03f4 80ED ldi r24,lo8(2000)
523 03f6 97E0 ldi r25,hi8(2000)
524 .LVL5:
525 .L34:
526 .LBB144:
527 .LBB143:
528 .LBB142:
529 .LBB141:
530 .LM53:
531 03f8 FB01 movw r30,r22
532 /* #APP */
533 ; 105 "c:/winavr-20100110/lib/gcc/../../avr/include/util/delay_basic.h" 1
534 03fa 3197 1: sbiw r30,1
535 03fc 01F4 brne 1b
536 ; 0 "" 2
537 /* #NOAPP */
538 .LBE141:
539 .LBE142:
540 .LM54:
541 03fe 0197 sbiw r24,1
542 .LM55:
543 0400 01F4 brne .L34
544 0402 2F5F subi r18,lo8(-(1))
545 0404 3F4F sbci r19,hi8(-(1))
546 0406 4F4F sbci r20,hlo8(-(1))
547 0408 5F4F sbci r21,hhi8(-(1))
548 .LVL6:
549 .L33:
550 .LBE143:
551 .LBE144:
552 .LM56:
553 040a 2730 cpi r18,lo8(7)
554 040c 3105 cpc r19,__zero_reg__
555 040e 4105 cpc r20,__zero_reg__
556 0410 5105 cpc r21,__zero_reg__
557 0412 04F0 brlt .L35
558 0414 2093 0000 sts x,r18
559 0418 3093 0000 sts (x)+1,r19
560 041c 4093 0000 sts (x)+2,r20
561 0420 5093 0000 sts (x)+3,r21
562 .LM57:
563 0424 1092 0000 sts throttle,__zero_reg__
564 0428 1092 0000 sts (throttle)+1,__zero_reg__
565 042c 1092 0000 sts (throttle)+2,__zero_reg__
566 0430 1092 0000 sts (throttle)+3,__zero_reg__
567 /* epilogue start */
568 .LM58:
569 0434 0895 ret
570 .LFE14:
572 .global motors_low
574 motors_low:
575 .LFB19:
576 .LM59:
577 /* prologue: function */
578 /* frame size = 0 */
579 .LM60:
580 0436 8091 0000 lds r24,use_pwm_esc
581 043a 9091 0000 lds r25,(use_pwm_esc)+1
582 043e 0097 sbiw r24,0
583 0440 01F4 brne .L39
584 .LM61:
585 0442 5A98 cbi 43-32,2
586 .LM62:
587 0444 5C98 cbi 43-32,4
588 0446 0895 ret
589 .L39:
590 .LM63:
591 0448 0197 sbiw r24,1
592 044a 01F4 brne .L41
593 .LM64:
594 044c 8091 0000 lds r24,pwm_throttle_low
595 0450 8093 B300 sts 179,r24
596 .LM65:
597 0454 8FE5 ldi r24,lo8(95)
598 0456 8093 B400 sts 180,r24
599 .L41:
600 045a 0895 ret
601 .LFE19:
603 .global motors_left
605 motors_left:
606 .LFB20:
607 .LM66:
608 /* prologue: function */
609 /* frame size = 0 */
610 .LM67:
611 045c 8091 0000 lds r24,use_pwm_esc
612 0460 9091 0000 lds r25,(use_pwm_esc)+1
613 0464 0097 sbiw r24,0
614 0466 01F4 brne .L43
615 .LM68:
616 0468 5A9A sbi 43-32,2
617 .LM69:
618 046a 5C9A sbi 43-32,4
619 046c 0895 ret
620 .L43:
621 .LM70:
622 046e 0197 sbiw r24,1
623 0470 01F4 brne .L45
624 .LM71:
625 0472 8091 0000 lds r24,pwm_throttle_high
626 0476 8093 B300 sts 179,r24
627 .LM72:
628 047a 8093 B400 sts 180,r24
629 .L45:
630 047e 0895 ret
631 .LFE20:
633 .global motor1_on
635 motor1_on:
636 .LFB21:
637 .LM73:
638 /* prologue: function */
639 /* frame size = 0 */
640 .LM74:
641 0480 8091 0000 lds r24,use_pwm_esc
642 0484 9091 0000 lds r25,(use_pwm_esc)+1
643 0488 0097 sbiw r24,0
644 048a 01F4 brne .L47
645 .LM75:
646 048c 5A9A sbi 43-32,2
647 .LM76:
648 048e 5C98 cbi 43-32,4
649 0490 0895 ret
650 .L47:
651 .LM77:
652 0492 0197 sbiw r24,1
653 0494 01F4 brne .L49
654 .LM78:
655 0496 8091 0000 lds r24,pwm_throttle_high
656 049a 8093 B300 sts 179,r24
657 .LM79:
658 049e 8FE5 ldi r24,lo8(95)
659 04a0 8093 B400 sts 180,r24
660 .L49:
661 04a4 0895 ret
662 .LFE21:
664 .global motor2_on
666 motor2_on:
667 .LFB22:
668 .LM80:
669 /* prologue: function */
670 /* frame size = 0 */
671 .LM81:
672 04a6 8091 0000 lds r24,use_pwm_esc
673 04aa 9091 0000 lds r25,(use_pwm_esc)+1
674 04ae 0097 sbiw r24,0
675 04b0 01F4 brne .L51
676 .LM82:
677 04b2 5A98 cbi 43-32,2
678 .LM83:
679 04b4 5C9A sbi 43-32,4
680 04b6 0895 ret
681 .L51:
682 .LM84:
683 04b8 0197 sbiw r24,1
684 04ba 01F4 brne .L53
685 .LM85:
686 04bc 8091 0000 lds r24,pwm_throttle_low
687 04c0 8093 B300 sts 179,r24
688 .LM86:
689 04c4 8091 0000 lds r24,pwm_throttle_high
690 04c8 8093 B400 sts 180,r24
691 .L53:
692 04cc 0895 ret
693 .LFE22:
695 .global do_spin_180
697 do_spin_180:
698 .LFB17:
699 .LM87:
700 .LVL7:
701 04ce 4F92 push r4
702 04d0 5F92 push r5
703 04d2 6F92 push r6
704 04d4 7F92 push r7
705 04d6 8F92 push r8
706 04d8 9F92 push r9
707 04da AF92 push r10
708 04dc BF92 push r11
709 04de CF92 push r12
710 04e0 DF92 push r13
711 04e2 EF92 push r14
712 04e4 FF92 push r15
713 04e6 0F93 push r16
714 04e8 1F93 push r17
715 04ea CF93 push r28
716 04ec DF93 push r29
717 /* prologue: function */
718 /* frame size = 0 */
719 04ee EC01 movw r28,r24
720 .LM88:
721 04f0 81E0 ldi r24,lo8(1)
722 04f2 482E mov r4,r24
723 04f4 512C mov r5,__zero_reg__
724 .LVL8:
725 04f6 00C0 rjmp .L106
726 .L89:
727 .LM89:
728 04f8 6091 8400 lds r22,132
729 04fc 7091 8500 lds r23,(132)+1
730 0500 80E0 ldi r24,lo8(0)
731 0502 90E0 ldi r25,hi8(0)
732 0504 0E94 0000 call __floatunsisf
733 0508 2091 0000 lds r18,begin_brake
734 050c 3091 0000 lds r19,(begin_brake)+1
735 0510 4091 0000 lds r20,(begin_brake)+2
736 0514 5091 0000 lds r21,(begin_brake)+3
737 0518 0E94 0000 call __ltsf2
738 051c 8823 tst r24
739 051e 04F4 brge .L56
740 0520 0E94 0000 call motors_left
741 .L56:
742 .LM90:
743 0524 6091 8400 lds r22,132
744 0528 7091 8500 lds r23,(132)+1
745 052c 80E0 ldi r24,lo8(0)
746 052e 90E0 ldi r25,hi8(0)
747 0530 0E94 0000 call __floatunsisf
748 0534 2091 0000 lds r18,end_brake
749 0538 3091 0000 lds r19,(end_brake)+1
750 053c 4091 0000 lds r20,(end_brake)+2
751 0540 5091 0000 lds r21,(end_brake)+3
752 0544 0E94 0000 call __gtsf2
753 0548 1816 cp __zero_reg__,r24
754 054a 04F4 brge .L58
755 054c 0E94 0000 call motors_left
756 .L58:
757 .LM91:
758 0550 6091 8400 lds r22,132
759 0554 7091 8500 lds r23,(132)+1
760 0558 80E0 ldi r24,lo8(0)
761 055a 90E0 ldi r25,hi8(0)
762 055c 2091 0000 lds r18,led_hold_over
763 0560 3091 0000 lds r19,(led_hold_over)+1
764 0564 4091 0000 lds r20,(led_hold_over)+2
765 0568 5091 0000 lds r21,(led_hold_over)+3
766 056c 620F add r22,r18
767 056e 731F adc r23,r19
768 0570 841F adc r24,r20
769 0572 951F adc r25,r21
770 0574 0E94 0000 call __floatsisf
771 0578 6093 0000 sts led_ref,r22
772 057c 7093 0000 sts (led_ref)+1,r23
773 0580 8093 0000 sts (led_ref)+2,r24
774 0584 9093 0000 sts (led_ref)+3,r25
775 .LM92:
776 0588 6091 8400 lds r22,132
777 058c 7091 8500 lds r23,(132)+1
778 0590 80E0 ldi r24,lo8(0)
779 0592 90E0 ldi r25,hi8(0)
780 0594 0E94 0000 call __floatunsisf
781 0598 2091 0000 lds r18,begin_brake
782 059c 3091 0000 lds r19,(begin_brake)+1
783 05a0 4091 0000 lds r20,(begin_brake)+2
784 05a4 5091 0000 lds r21,(begin_brake)+3
785 05a8 0E94 0000 call __gtsf2
786 05ac 1816 cp __zero_reg__,r24
787 05ae 04F0 brlt .+2
788 05b0 00C0 rjmp .L60
789 05b2 6091 8400 lds r22,132
790 05b6 7091 8500 lds r23,(132)+1
791 05ba 80E0 ldi r24,lo8(0)
792 05bc 90E0 ldi r25,hi8(0)
793 05be 0E94 0000 call __floatunsisf
794 05c2 2091 0000 lds r18,end_brake
795 05c6 3091 0000 lds r19,(end_brake)+1
796 05ca 4091 0000 lds r20,(end_brake)+2
797 05ce 5091 0000 lds r21,(end_brake)+3
798 05d2 0E94 0000 call __ltsf2
799 05d6 8823 tst r24
800 05d8 04F0 brlt .+2
801 05da 00C0 rjmp .L60
802 .LM93:
803 05dc 8091 0000 lds r24,forward
804 05e0 9091 0000 lds r25,(forward)+1
805 05e4 892B or r24,r25
806 05e6 01F4 brne .L63
807 05e8 8091 0000 lds r24,backward
808 05ec 9091 0000 lds r25,(backward)+1
809 05f0 892B or r24,r25
810 05f2 01F4 brne .L63
811 .LM94:
812 05f4 8091 0000 lds r24,alternate_motor_cycle
813 05f8 9091 0000 lds r25,(alternate_motor_cycle)+1
814 05fc 892B or r24,r25
815 05fe 01F4 brne .L64
816 .LM95:
817 0600 C130 cpi r28,1
818 0602 D105 cpc r29,__zero_reg__
819 0604 01F4 brne .L65
820 0606 0E94 0000 call motor1_on
821 060a 00C0 rjmp .L64
822 .L65:
823 .LM96:
824 060c C230 cpi r28,2
825 060e D105 cpc r29,__zero_reg__
826 0610 01F4 brne .L64
827 0612 0E94 0000 call motor2_on
828 .L64:
829 .LM97:
830 0616 8091 0000 lds r24,alternate_motor_cycle
831 061a 9091 0000 lds r25,(alternate_motor_cycle)+1
832 061e 0197 sbiw r24,1
833 0620 01F4 brne .L63
834 .LM98:
835 0622 C130 cpi r28,1
836 0624 D105 cpc r29,__zero_reg__
837 0626 01F4 brne .L66
838 0628 0E94 0000 call motor2_on
839 062c 00C0 rjmp .L63
840 .L66:
841 .LM99:
842 062e C230 cpi r28,2
843 0630 D105 cpc r29,__zero_reg__
844 0632 01F4 brne .L63
845 0634 0E94 0000 call motor1_on
846 .L63:
847 .LM100:
848 0638 8091 0000 lds r24,forward
849 063c 9091 0000 lds r25,(forward)+1
850 0640 0197 sbiw r24,1
851 0642 01F4 brne .L67
852 .LM101:
853 0644 C130 cpi r28,1
854 0646 D105 cpc r29,__zero_reg__
855 0648 01F4 brne .L68
856 064a 0E94 0000 call motor1_on
857 064e 00C0 rjmp .L67
858 .L68:
859 .LM102:
860 0650 C230 cpi r28,2
861 0652 D105 cpc r29,__zero_reg__
862 0654 01F4 brne .L67
863 0656 0E94 0000 call motor2_on
864 .L67:
865 .LM103:
866 065a 8091 0000 lds r24,backward
867 065e 9091 0000 lds r25,(backward)+1
868 0662 0197 sbiw r24,1
869 0664 01F4 brne .L60
870 .LM104:
871 0666 C130 cpi r28,1
872 0668 D105 cpc r29,__zero_reg__
873 066a 01F4 brne .L69
874 066c 0E94 0000 call motor2_on
875 0670 00C0 rjmp .L60
876 .L69:
877 .LM105:
878 0672 C230 cpi r28,2
879 0674 D105 cpc r29,__zero_reg__
880 0676 01F4 brne .L60
881 0678 0E94 0000 call motor1_on
882 .L60:
883 .LM106:
884 067c 6091 8400 lds r22,132
885 0680 7091 8500 lds r23,(132)+1
886 0684 80E0 ldi r24,lo8(0)
887 0686 90E0 ldi r25,hi8(0)
888 0688 0E94 0000 call __floatunsisf
889 068c 2091 0000 lds r18,end_brake
890 0690 3091 0000 lds r19,(end_brake)+1
891 0694 4091 0000 lds r20,(end_brake)+2
892 0698 5091 0000 lds r21,(end_brake)+3
893 069c 0E94 0000 call __gtsf2
894 06a0 1816 cp __zero_reg__,r24
895 06a2 04F4 brge .L70
896 06a4 0E94 0000 call motors_left
897 .L70:
898 .LM107:
899 06a8 6091 8400 lds r22,132
900 06ac 7091 8500 lds r23,(132)+1
901 06b0 80E0 ldi r24,lo8(0)
902 06b2 90E0 ldi r25,hi8(0)
903 06b4 0E94 0000 call __floatunsisf
904 06b8 2091 0000 lds r18,power_kill_part1
905 06bc 3091 0000 lds r19,(power_kill_part1)+1
906 06c0 4091 0000 lds r20,(power_kill_part1)+2
907 06c4 5091 0000 lds r21,(power_kill_part1)+3
908 06c8 0E94 0000 call __ltsf2
909 06cc 8823 tst r24
910 06ce 04F4 brge .L72
911 06d0 0E94 0000 call motors_low
912 .L72:
913 .LM108:
914 06d4 6091 8400 lds r22,132
915 06d8 7091 8500 lds r23,(132)+1
916 06dc 80E0 ldi r24,lo8(0)
917 06de 90E0 ldi r25,hi8(0)
918 06e0 0E94 0000 call __floatunsisf
919 06e4 2091 0000 lds r18,power_kill_part2
920 06e8 3091 0000 lds r19,(power_kill_part2)+1
921 06ec 4091 0000 lds r20,(power_kill_part2)+2
922 06f0 5091 0000 lds r21,(power_kill_part2)+3
923 06f4 0E94 0000 call __gtsf2
924 06f8 1816 cp __zero_reg__,r24
925 06fa 04F4 brge .L74
926 06fc 0E94 0000 call motors_low
927 .L74:
928 .LM109:
929 0700 A090 0000 lds r10,led_on
930 0704 B090 0000 lds r11,(led_on)+1
931 0708 C090 0000 lds r12,(led_on)+2
932 070c D090 0000 lds r13,(led_on)+3
933 0710 6090 0000 lds r6,led_off
934 0714 7090 0000 lds r7,(led_off)+1
935 0718 8090 0000 lds r8,(led_off)+2
936 071c 9090 0000 lds r9,(led_off)+3
937 0720 C601 movw r24,r12
938 0722 B501 movw r22,r10
939 0724 A401 movw r20,r8
940 0726 9301 movw r18,r6
941 0728 0E94 0000 call __gtsf2
942 072c 1816 cp __zero_reg__,r24
943 072e 04F4 brge .L76
944 .LM110:
945 0730 5092 0000 sts (led_is_on_now)+1,r5
946 0734 4092 0000 sts led_is_on_now,r4
947 .LM111:
948 0738 E090 0000 lds r14,led_ref
949 073c F090 0000 lds r15,(led_ref)+1
950 0740 0091 0000 lds r16,(led_ref)+2
951 0744 1091 0000 lds r17,(led_ref)+3
952 0748 C801 movw r24,r16
953 074a B701 movw r22,r14
954 074c A401 movw r20,r8
955 074e 9301 movw r18,r6
956 0750 0E94 0000 call __gtsf2
957 0754 1816 cp __zero_reg__,r24
958 0756 04F4 brge .L78
959 0758 1092 0000 sts (led_is_on_now)+1,__zero_reg__
960 075c 1092 0000 sts led_is_on_now,__zero_reg__
961 .L78:
962 .LM112:
963 0760 C801 movw r24,r16
964 0762 B701 movw r22,r14
965 0764 A601 movw r20,r12
966 0766 9501 movw r18,r10
967 0768 0E94 0000 call __gtsf2
968 076c 1816 cp __zero_reg__,r24
969 076e 04F4 brge .L76
970 0770 5092 0000 sts (led_is_on_now)+1,r5
971 0774 4092 0000 sts led_is_on_now,r4
972 .L76:
973 .LM113:
974 0778 C401 movw r24,r8
975 077a B301 movw r22,r6
976 077c A601 movw r20,r12
977 077e 9501 movw r18,r10
978 0780 0E94 0000 call __gtsf2
979 0784 1816 cp __zero_reg__,r24
980 0786 04F4 brge .L81
981 .LM114:
982 0788 1092 0000 sts (led_is_on_now)+1,__zero_reg__
983 078c 1092 0000 sts led_is_on_now,__zero_reg__
984 .LM115:
985 0790 E090 0000 lds r14,led_ref
986 0794 F090 0000 lds r15,(led_ref)+1
987 0798 0091 0000 lds r16,(led_ref)+2
988 079c 1091 0000 lds r17,(led_ref)+3
989 07a0 C801 movw r24,r16
990 07a2 B701 movw r22,r14
991 07a4 A601 movw r20,r12
992 07a6 9501 movw r18,r10
993 07a8 0E94 0000 call __gtsf2
994 07ac 1816 cp __zero_reg__,r24
995 07ae 04F4 brge .L83
996 07b0 5092 0000 sts (led_is_on_now)+1,r5
997 07b4 4092 0000 sts led_is_on_now,r4
998 .L83:
999 .LM116:
1000 07b8 C801 movw r24,r16
1001 07ba B701 movw r22,r14
1002 07bc A401 movw r20,r8
1003 07be 9301 movw r18,r6
1004 07c0 0E94 0000 call __gtsf2
1005 07c4 1816 cp __zero_reg__,r24
1006 07c6 04F4 brge .L81
1007 07c8 1092 0000 sts (led_is_on_now)+1,__zero_reg__
1008 07cc 1092 0000 sts led_is_on_now,__zero_reg__
1009 .L81:
1010 .LM117:
1011 07d0 8091 0000 lds r24,led_is_on_now
1012 07d4 9091 0000 lds r25,(led_is_on_now)+1
1013 07d8 8130 cpi r24,1
1014 07da 9105 cpc r25,__zero_reg__
1015 07dc 01F4 brne .L86
1016 .LM118:
1017 07de 8091 0000 lds r24,flashy_led
1018 07e2 9091 0000 lds r25,(flashy_led)+1
1019 07e6 0197 sbiw r24,1
1020 07e8 01F4 brne .L87
1021 .LM119:
1022 07ea 8091 8400 lds r24,132