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