bikegenerator/display/software/powerboard_v2/src/main.lst

545 lines
20 KiB
Plaintext

1 .file "main.c"
2 __SP_H__ = 0x3e
3 __SP_L__ = 0x3d
4 __SREG__ = 0x3f
5 __tmp_reg__ = 0
6 __zero_reg__ = 1
7 .text
8 .global measure
10 measure:
11 0000 CF93 push r28
12 /* prologue: function */
13 /* frame size = 0 */
14 /* stack size = 1 */
15 .L__stack_usage = 1
16 0002 64E0 ldi r22,lo8(4)
17 0004 82E0 ldi r24,lo8(2)
18 0006 00D0 rcall adc_read_avg
19 0008 CFE0 ldi r28,lo8(15)
20 000a 9C01 movw r18,r24
21 000c C29F mul r28,r18
22 000e C001 movw r24,r0
23 0010 C39F mul r28,r19
24 0012 900D add r25,r0
25 0014 1124 clr __zero_reg__
26 0016 8A5E subi r24,-22
27 0018 9C4F sbci r25,-4
28 001a 9093 0000 sts voltage_bat+1,r25
29 001e 8093 0000 sts voltage_bat,r24
30 0022 64E0 ldi r22,lo8(4)
31 0024 80E0 ldi r24,0
32 0026 00D0 rcall adc_read_avg
33 0028 9C01 movw r18,r24
34 002a C29F mul r28,r18
35 002c C001 movw r24,r0
36 002e C39F mul r28,r19
37 0030 900D add r25,r0
38 0032 1124 clr __zero_reg__
39 0034 9093 0000 sts voltage_gen+1,r25
40 0038 8093 0000 sts voltage_gen,r24
41 003c 64E0 ldi r22,lo8(4)
42 003e 81E0 ldi r24,lo8(1)
43 0040 00D0 rcall adc_read_avg
44 0042 8F5F subi r24,-1
45 0044 9140 sbci r25,1
46 0046 97FD sbrc r25,7
47 0048 00C0 rjmp .L2
48 004a 9093 0000 sts temp.1586+1,r25
49 004e 8093 0000 sts temp.1586,r24
50 0052 00C0 rjmp .L3
51 .L2:
52 0054 1092 0000 sts temp.1586+1,__zero_reg__
53 0058 1092 0000 sts temp.1586,__zero_reg__
54 .L3:
55 005c 2091 0000 lds r18,temp.1586
56 0060 3091 0000 lds r19,temp.1586+1
57 0064 48E4 ldi r20,lo8(72)
58 0066 429F mul r20,r18
59 0068 C001 movw r24,r0
60 006a 439F mul r20,r19
61 006c 900D add r25,r0
62 006e 1124 clr __zero_reg__
63 0070 9093 0000 sts current_in+1,r25
64 0074 8093 0000 sts current_in,r24
65 /* epilogue start */
66 0078 CF91 pop r28
67 007a 0895 ret
69 .global get_power
71 get_power:
72 007c CF93 push r28
73 007e DF93 push r29
74 /* prologue: function */
75 /* frame size = 0 */
76 /* stack size = 2 */
77 .L__stack_usage = 2
78 0080 EC01 movw r28,r24
79 0082 CB01 movw r24,r22
80 0084 24E6 ldi r18,lo8(100)
81 0086 30E0 ldi r19,0
82 0088 B901 movw r22,r18
83 008a 00D0 rcall __divmodhi4
84 008c FB01 movw r30,r22
85 008e CE01 movw r24,r28
86 0090 B901 movw r22,r18
87 0092 00D0 rcall __udivmodhi4
88 0094 E69F mul r30,r22
89 0096 C001 movw r24,r0
90 0098 E79F mul r30,r23
91 009a 900D add r25,r0
92 009c F69F mul r31,r22
93 009e 900D add r25,r0
94 00a0 1124 clr r1
95 00a2 B901 movw r22,r18
96 00a4 00D0 rcall __udivmodhi4
97 00a6 CB01 movw r24,r22
98 /* epilogue start */
99 00a8 DF91 pop r29
100 00aa CF91 pop r28
101 00ac 0895 ret
103 .global pretty_print_all_values
105 pretty_print_all_values:
106 /* prologue: function */
107 /* frame size = 0 */
108 /* stack size = 0 */
109 .L__stack_usage = 0
110 00ae 80E0 ldi r24,lo8(__c.1594)
111 00b0 90E0 ldi r25,hi8(__c.1594)
112 00b2 00D0 rcall uart_puts_p
113 00b4 8091 0000 lds r24,voltage_bat
114 00b8 9091 0000 lds r25,voltage_bat+1
115 00bc 00D0 rcall uart_print_uint16
116 00be 80E0 ldi r24,lo8(__c.1596)
117 00c0 90E0 ldi r25,hi8(__c.1596)
118 00c2 00D0 rcall uart_puts_p
119 00c4 80E0 ldi r24,lo8(__c.1598)
120 00c6 90E0 ldi r25,hi8(__c.1598)
121 00c8 00D0 rcall uart_puts_p
122 00ca 8091 0000 lds r24,voltage_gen
123 00ce 9091 0000 lds r25,voltage_gen+1
124 00d2 00D0 rcall uart_print_uint16
125 00d4 80E0 ldi r24,lo8(__c.1600)
126 00d6 90E0 ldi r25,hi8(__c.1600)
127 00d8 00D0 rcall uart_puts_p
128 00da 80E0 ldi r24,lo8(__c.1602)
129 00dc 90E0 ldi r25,hi8(__c.1602)
130 00de 00D0 rcall uart_puts_p
131 00e0 8091 0000 lds r24,current_in
132 00e4 9091 0000 lds r25,current_in+1
133 00e8 00D0 rcall uart_print_uint16
134 00ea 80E0 ldi r24,lo8(__c.1604)
135 00ec 90E0 ldi r25,hi8(__c.1604)
136 00ee 00D0 rcall uart_puts_p
137 00f0 8091 0000 lds r24,current_in
138 00f4 9091 0000 lds r25,current_in+1
139 00f8 24E6 ldi r18,lo8(100)
140 00fa 30E0 ldi r19,0
141 00fc B901 movw r22,r18
142 00fe 00D0 rcall __divmodhi4
143 0100 FB01 movw r30,r22
144 0102 8091 0000 lds r24,voltage_bat
145 0106 9091 0000 lds r25,voltage_bat+1
146 010a B901 movw r22,r18
147 010c 00D0 rcall __udivmodhi4
148 010e E69F mul r30,r22
149 0110 C001 movw r24,r0
150 0112 E79F mul r30,r23
151 0114 900D add r25,r0
152 0116 F69F mul r31,r22
153 0118 900D add r25,r0
154 011a 1124 clr r1
155 011c B901 movw r22,r18
156 011e 00D0 rcall __udivmodhi4
157 0120 CB01 movw r24,r22
158 0122 00D0 rcall uart_print_uint16
159 0124 80E0 ldi r24,lo8(__c.1606)
160 0126 90E0 ldi r25,hi8(__c.1606)
161 0128 00D0 rcall uart_puts_p
162 012a 80E0 ldi r24,lo8(__c.1608)
163 012c 90E0 ldi r25,hi8(__c.1608)
164 012e 00D0 rcall uart_puts_p
165 0130 86B3 in r24,0x16
166 0132 8170 andi r24,lo8(1)
167 0134 805D subi r24,lo8(-(48))
168 0136 00D0 rcall uart_putc
169 0138 8CE2 ldi r24,lo8(44)
170 013a 00D0 rcall uart_putc
171 013c 86B3 in r24,0x16
172 013e 8695 lsr r24
173 0140 8170 andi r24,1
174 0142 805D subi r24,lo8(-(48))
175 0144 00D0 rcall uart_putc
176 0146 80E0 ldi r24,lo8(__c.1610)
177 0148 90E0 ldi r25,hi8(__c.1610)
178 014a 00C0 rjmp uart_puts_p
180 .global handle_over_and_undervoltage
182 handle_over_and_undervoltage:
183 /* prologue: function */
184 /* frame size = 0 */
185 /* stack size = 0 */
186 .L__stack_usage = 0
187 014c 8091 0000 lds r24,voltage_bat
188 0150 9091 0000 lds r25,voltage_bat+1
189 0154 803C cpi r24,-64
190 0156 9B42 sbci r25,43
191 0158 00F4 brsh .L7
192 015a 1092 0000 sts undervoltage_off_counter,__zero_reg__
193 015e 8091 0000 lds r24,undervoltage_counter
194 0162 8530 cpi r24,lo8(5)
195 0164 00F4 brsh .L9
196 0166 8F5F subi r24,lo8(-(1))
197 0168 8093 0000 sts undervoltage_counter,r24
198 016c 00C0 rjmp .L9
199 .L7:
200 016e 1092 0000 sts undervoltage_counter,__zero_reg__
201 0172 8091 0000 lds r24,undervoltage_off_counter
202 0176 8330 cpi r24,lo8(3)
203 0178 00F4 brsh .L9
204 017a 8F5F subi r24,lo8(-(1))
205 017c 8093 0000 sts undervoltage_off_counter,r24
206 .L9:
207 0180 8091 0000 lds r24,voltage_gen
208 0184 9091 0000 lds r25,voltage_gen+1
209 0188 893C cpi r24,-55
210 018a 9243 sbci r25,50
211 018c 00F0 brlo .L11
212 018e 1092 0000 sts generator_off_counter,__zero_reg__
213 0192 8091 0000 lds r24,generator_counter
214 0196 8330 cpi r24,lo8(3)
215 0198 00F4 brsh .L13
216 019a 8F5F subi r24,lo8(-(1))
217 019c 8093 0000 sts generator_counter,r24
218 01a0 00C0 rjmp .L13
219 .L11:
220 01a2 1092 0000 sts generator_counter,__zero_reg__
221 01a6 8091 0000 lds r24,generator_off_counter
222 01aa 8111 cpse r24,__zero_reg__
223 01ac 00C0 rjmp .L13
224 01ae 81E0 ldi r24,lo8(1)
225 01b0 8093 0000 sts generator_off_counter,r24
226 .L13:
227 01b4 8091 0000 lds r24,undervoltage_counter
228 01b8 8530 cpi r24,lo8(5)
229 01ba 00F0 brlo .L15
230 01bc 1092 0000 sts undervoltage_off_counter,__zero_reg__
231 01c0 00C0 rjmp .L23
232 .L15:
233 01c2 8091 0000 lds r24,undervoltage_off_counter
234 01c6 8330 cpi r24,lo8(3)
235 01c8 00F0 brlo .L6
236 01ca 1092 0000 sts undervoltage_counter,__zero_reg__
237 01ce 8091 0000 lds r24,generator_counter
238 01d2 8330 cpi r24,lo8(3)
239 01d4 00F0 brlo .L18
240 01d6 C09A sbi 0x18,0
241 01d8 0895 ret
242 .L18:
243 01da 8091 0000 lds r24,generator_off_counter
244 01de 8111 cpse r24,__zero_reg__
245 .L23:
246 01e0 C098 cbi 0x18,0
247 .L6:
248 01e2 0895 ret
250 .section .text.startup,"ax",@progbits
251 .global main
253 main:
254 /* prologue: function */
255 /* frame size = 0 */
256 /* stack size = 0 */
257 .L__stack_usage = 0
258 0000 87B3 in r24,0x17
259 0002 8360 ori r24,lo8(3)
260 0004 87BB out 0x17,r24
261 0006 88B3 in r24,0x18
262 0008 8C7F andi r24,lo8(-4)
263 000a 88BB out 0x18,r24
264 000c 00D0 rcall adc_init
265 000e 8EB5 in r24,0x2e
266 0010 8B60 ori r24,lo8(11)
267 0012 8EBD out 0x2e,r24
268 0014 82EE ldi r24,lo8(-30)
269 0016 94E0 ldi r25,lo8(4)
270 0018 9BBD out 0x2a+1,r25
271 001a 8ABD out 0x2a,r24
272 001c 80E1 ldi r24,lo8(16)
273 001e 89BF out 0x39,r24
274 /* #APP */
275 ; 27 "src/main.c" 1
276 0020 7894 sei
277 ; 0 "" 2
278 /* #NOAPP */
279 0022 89E1 ldi r24,lo8(25)
280 0024 90E0 ldi r25,0
281 0026 00D0 rcall uart_init
282 0028 C098 cbi 0x18,0
283 002a C19A sbi 0x18,1
284 002c C4E6 ldi r28,lo8(100)
285 002e D0E0 ldi r29,0
286 .L35:
287 0030 8091 0000 lds r24,syscounter
288 0034 9091 0000 lds r25,syscounter+1
289 0038 8436 cpi r24,100
290 003a 9105 cpc r25,__zero_reg__
291 003c 00F0 brlo .L27
292 003e 1092 0000 sts syscounter+1,__zero_reg__
293 0042 1092 0000 sts syscounter,__zero_reg__
294 0046 00D0 rcall measure
295 0048 00D0 rcall handle_over_and_undervoltage
296 .L27:
297 004a 00D0 rcall uart_getc
298 004c 8115 cp r24,__zero_reg__
299 004e 21E0 ldi r18,1
300 0050 9207 cpc r25,r18
301 0052 01F0 breq .L35
302 0054 9927 clr r25
303 0056 8136 cpi r24,97
304 0058 9105 cpc r25,__zero_reg__
305 005a 01F0 breq .L28
306 005c 8037 cpi r24,112
307 005e 9105 cpc r25,__zero_reg__
308 0060 01F4 brne .L35
309 0062 00D0 rcall pretty_print_all_values
310 0064 00C0 rjmp .L35
311 .L28:
312 0066 81E4 ldi r24,lo8(65)
313 0068 00D0 rcall uart_putc
314 006a 8091 0000 lds r24,voltage_bat
315 006e 9091 0000 lds r25,voltage_bat+1
316 0072 00D0 rcall uart_print_uint16
317 0074 8CE2 ldi r24,lo8(44)
318 0076 00D0 rcall uart_putc
319 0078 8091 0000 lds r24,current_in
320 007c 9091 0000 lds r25,current_in+1
321 0080 00D0 rcall uart_print_uint16
322 0082 8CE2 ldi r24,lo8(44)
323 0084 00D0 rcall uart_putc
324 0086 80E0 ldi r24,0
325 0088 90E0 ldi r25,0
326 008a 00D0 rcall uart_print_uint16
327 008c 8CE2 ldi r24,lo8(44)
328 008e 00D0 rcall uart_putc
329 0090 8091 0000 lds r24,current_in
330 0094 9091 0000 lds r25,current_in+1
331 0098 BE01 movw r22,r28
332 009a 00D0 rcall __divmodhi4
333 009c 9B01 movw r18,r22
334 009e 8091 0000 lds r24,voltage_bat
335 00a2 9091 0000 lds r25,voltage_bat+1
336 00a6 BE01 movw r22,r28
337 00a8 00D0 rcall __udivmodhi4
338 00aa 269F mul r18,r22
339 00ac C001 movw r24,r0
340 00ae 279F mul r18,r23
341 00b0 900D add r25,r0
342 00b2 369F mul r19,r22
343 00b4 900D add r25,r0
344 00b6 1124 clr r1
345 00b8 BE01 movw r22,r28
346 00ba 00D0 rcall __udivmodhi4
347 00bc CB01 movw r24,r22
348 00be 00D0 rcall uart_print_uint16
349 00c0 8CE2 ldi r24,lo8(44)
350 00c2 00D0 rcall uart_putc
351 00c4 80E0 ldi r24,0
352 00c6 90E0 ldi r25,0
353 00c8 00D0 rcall uart_print_uint16
354 00ca 8CE2 ldi r24,lo8(44)
355 00cc 00D0 rcall uart_putc
356 00ce 86B3 in r24,0x16
357 00d0 8170 andi r24,lo8(1)
358 00d2 805D subi r24,lo8(-(48))
359 00d4 00D0 rcall uart_putc
360 00d6 8CE2 ldi r24,lo8(44)
361 00d8 00D0 rcall uart_putc
362 00da 80E3 ldi r24,lo8(48)
363 00dc 00D0 rcall uart_putc
364 00de 8CE2 ldi r24,lo8(44)
365 00e0 00D0 rcall uart_putc
366 00e2 86B3 in r24,0x16
367 00e4 8695 lsr r24
368 00e6 8170 andi r24,1
369 00e8 805D subi r24,lo8(-(48))
370 00ea 00D0 rcall uart_putc
371 00ec 82E4 ldi r24,lo8(66)
372 00ee 00D0 rcall uart_putc
373 00f0 00C0 rjmp .L35
375 .text
376 .global __vector_6
378 __vector_6:
379 01e4 1F92 push r1
380 01e6 0F92 push r0
381 01e8 0FB6 in r0,__SREG__
382 01ea 0F92 push r0
383 01ec 1124 clr __zero_reg__
384 01ee 2F93 push r18
385 01f0 3F93 push r19
386 01f2 4F93 push r20
387 01f4 5F93 push r21
388 01f6 6F93 push r22
389 01f8 7F93 push r23
390 01fa 8F93 push r24
391 01fc 9F93 push r25
392 /* prologue: Signal */
393 /* frame size = 0 */
394 /* stack size = 11 */
395 .L__stack_usage = 11
396 01fe 8091 0000 lds r24,syscounter
397 0202 9091 0000 lds r25,syscounter+1
398 0206 0196 adiw r24,1
399 0208 9093 0000 sts syscounter+1,r25
400 020c 8093 0000 sts syscounter,r24
401 0210 2091 0000 lds r18,syscounter
402 0214 3091 0000 lds r19,syscounter+1
403 0218 81E0 ldi r24,lo8(1)
404 021a 90E0 ldi r25,0
405 021c 2036 cpi r18,96
406 021e 4AEE ldi r20,-22
407 0220 3407 cpc r19,r20
408 0222 00F4 brsh .L37
409 0224 80E0 ldi r24,0
410 0226 90E0 ldi r25,0
411 .L37:
412 0228 60E6 ldi r22,lo8(96)
413 022a 7AEE ldi r23,lo8(-22)
414 022c 869F mul r24,r22
415 022e A001 movw r20,r0
416 0230 879F mul r24,r23
417 0232 500D add r21,r0
418 0234 969F mul r25,r22
419 0236 500D add r21,r0
420 0238 1124 clr r1
421 023a C901 movw r24,r18
422 023c 841B sub r24,r20
423 023e 950B sbc r25,r21
424 0240 9093 0000 sts syscounter+1,r25
425 0244 8093 0000 sts syscounter,r24
426 /* epilogue start */
427 0248 9F91 pop r25
428 024a 8F91 pop r24
429 024c 7F91 pop r23
430 024e 6F91 pop r22
431 0250 5F91 pop r21
432 0252 4F91 pop r20
433 0254 3F91 pop r19
434 0256 2F91 pop r18
435 0258 0F90 pop r0
436 025a 0FBE out __SREG__,r0
437 025c 0F90 pop r0
438 025e 1F90 pop r1
439 0260 1895 reti
441 .global generator_off_counter
442 .section .bss
445 generator_off_counter:
446 0000 00 .zero 1
447 .global generator_counter
450 generator_counter:
451 0001 00 .zero 1
452 .global undervoltage_off_counter
455 undervoltage_off_counter:
456 0002 00 .zero 1
457 .global undervoltage_counter
460 undervoltage_counter:
461 0003 00 .zero 1
462 .global overvoltage_off_counter
465 overvoltage_off_counter:
466 0004 00 .zero 1
467 .global overvoltage_counter
470 overvoltage_counter:
471 0005 00 .zero 1
472 .global current_in
475 current_in:
476 0006 0000 .zero 2
477 .global voltage_gen
480 voltage_gen:
481 0008 0000 .zero 2
482 .global voltage_bat
485 voltage_bat:
486 000a 0000 .zero 2
487 .global syscounter
490 syscounter:
491 000c 0000 .zero 2
492 .local temp.1586
493 .comm temp.1586,2,1
494 .section .progmem.data,"a",@progbits
497 __c.1594:
498 0000 4261 7474 .string "Battery Voltage: "
498 6572 7920
498 566F 6C74
498 6167 653A
498 2020 2000
501 __c.1596:
502 0014 6D56 0D0A .string "mV\r\n"
502 00
505 __c.1598:
506 0019 4765 6E65 .string "Generator Voltage: "
506 7261 746F
506 7220 566F
506 6C74 6167
506 653A 2020
509 __c.1600:
510 002f 6D56 0D0A .string "mV\r\n"
510 00
513 __c.1602:
514 0034 4765 6E65 .string "Generator: "
514 7261 746F
514 723A 2000
517 __c.1604:
518 0040 6D41 2020 .string "mA "
518 00
521 __c.1606:
522 0045 570D 0A00 .string "W\r\n"
525 __c.1608:
526 0049 7377 6974 .string "switches (load, gen): "
526 6368 6573
526 2028 6C6F
526 6164 2C20
526 6765 6E29
529 __c.1610:
530 0060 0D0A 00 .string "\r\n"
531 .ident "GCC: (GNU) 4.7.2"
532 .global __do_clear_bss
DEFINED SYMBOLS
*ABS*:0000000000000000 main.c
/tmp/ccKzr9U4.s:2 *ABS*:000000000000003e __SP_H__
/tmp/ccKzr9U4.s:3 *ABS*:000000000000003d __SP_L__
/tmp/ccKzr9U4.s:4 *ABS*:000000000000003f __SREG__
/tmp/ccKzr9U4.s:5 *ABS*:0000000000000000 __tmp_reg__
/tmp/ccKzr9U4.s:6 *ABS*:0000000000000001 __zero_reg__
/tmp/ccKzr9U4.s:10 .text:0000000000000000 measure
/tmp/ccKzr9U4.s:485 .bss:000000000000000a voltage_bat
/tmp/ccKzr9U4.s:480 .bss:0000000000000008 voltage_gen
.bss:000000000000000e temp.1586
/tmp/ccKzr9U4.s:475 .bss:0000000000000006 current_in
/tmp/ccKzr9U4.s:71 .text:000000000000007c get_power
/tmp/ccKzr9U4.s:105 .text:00000000000000ae pretty_print_all_values
/tmp/ccKzr9U4.s:497 .progmem.data:0000000000000000 __c.1594
/tmp/ccKzr9U4.s:501 .progmem.data:0000000000000014 __c.1596
/tmp/ccKzr9U4.s:505 .progmem.data:0000000000000019 __c.1598
/tmp/ccKzr9U4.s:509 .progmem.data:000000000000002f __c.1600
/tmp/ccKzr9U4.s:513 .progmem.data:0000000000000034 __c.1602
/tmp/ccKzr9U4.s:517 .progmem.data:0000000000000040 __c.1604
/tmp/ccKzr9U4.s:521 .progmem.data:0000000000000045 __c.1606
/tmp/ccKzr9U4.s:525 .progmem.data:0000000000000049 __c.1608
/tmp/ccKzr9U4.s:529 .progmem.data:0000000000000060 __c.1610
/tmp/ccKzr9U4.s:182 .text:000000000000014c handle_over_and_undervoltage
/tmp/ccKzr9U4.s:455 .bss:0000000000000002 undervoltage_off_counter
/tmp/ccKzr9U4.s:460 .bss:0000000000000003 undervoltage_counter
/tmp/ccKzr9U4.s:445 .bss:0000000000000000 generator_off_counter
/tmp/ccKzr9U4.s:450 .bss:0000000000000001 generator_counter
/tmp/ccKzr9U4.s:253 .text.startup:0000000000000000 main
/tmp/ccKzr9U4.s:490 .bss:000000000000000c syscounter
/tmp/ccKzr9U4.s:378 .text:00000000000001e4 __vector_6
/tmp/ccKzr9U4.s:465 .bss:0000000000000004 overvoltage_off_counter
/tmp/ccKzr9U4.s:470 .bss:0000000000000005 overvoltage_counter
UNDEFINED SYMBOLS
adc_read_avg
__divmodhi4
__udivmodhi4
uart_puts_p
uart_print_uint16
uart_putc
adc_init
uart_init
uart_getc
__do_clear_bss