Laminator/USBLaminator/USBLaminator/Debug/USBLaminator.lss

6383 lines
215 KiB
Plaintext

USBLaminator.elf: file format elf32-avr
Sections:
Idx Name Size VMA LMA File off Algn
0 .text 00001b88 00000000 00000000 00000094 2**1
CONTENTS, ALLOC, LOAD, READONLY, CODE
1 .data 00000142 00800060 00001b88 00001c1c 2**0
CONTENTS, ALLOC, LOAD, DATA
2 .bss 00000043 008001a2 008001a2 00001d5e 2**0
ALLOC
3 .stab 00003018 00000000 00000000 00001d60 2**2
CONTENTS, READONLY, DEBUGGING
4 .stabstr 00000855 00000000 00000000 00004d78 2**0
CONTENTS, READONLY, DEBUGGING
5 .comment 0000002f 00000000 00000000 000055cd 2**0
CONTENTS, READONLY
6 .debug_aranges 000000a8 00000000 00000000 000055fc 2**0
CONTENTS, READONLY, DEBUGGING
7 .debug_info 00008098 00000000 00000000 000056a4 2**0
CONTENTS, READONLY, DEBUGGING
8 .debug_abbrev 00000682 00000000 00000000 0000d73c 2**0
CONTENTS, READONLY, DEBUGGING
9 .debug_line 00000cc0 00000000 00000000 0000ddbe 2**0
CONTENTS, READONLY, DEBUGGING
10 .debug_frame 0000021c 00000000 00000000 0000ea80 2**2
CONTENTS, READONLY, DEBUGGING
11 .debug_str 00001a0c 00000000 00000000 0000ec9c 2**0
CONTENTS, READONLY, DEBUGGING
12 .debug_loc 00001e5f 00000000 00000000 000106a8 2**0
CONTENTS, READONLY, DEBUGGING
13 .debug_ranges 000000e0 00000000 00000000 00012507 2**0
CONTENTS, READONLY, DEBUGGING
Disassembly of section .text:
00000000 <__vectors>:
0: 0c 94 a8 00 jmp 0x150 ; 0x150 <__ctors_end>
4: 0c 94 e1 07 jmp 0xfc2 ; 0xfc2 <__vector_1>
8: 0c 94 d0 00 jmp 0x1a0 ; 0x1a0 <__bad_interrupt>
c: 0c 94 d0 00 jmp 0x1a0 ; 0x1a0 <__bad_interrupt>
10: 0c 94 d0 00 jmp 0x1a0 ; 0x1a0 <__bad_interrupt>
14: 0c 94 d0 00 jmp 0x1a0 ; 0x1a0 <__bad_interrupt>
18: 0c 94 5d 07 jmp 0xeba ; 0xeba <__vector_6>
1c: 0c 94 d0 00 jmp 0x1a0 ; 0x1a0 <__bad_interrupt>
20: 0c 94 d0 00 jmp 0x1a0 ; 0x1a0 <__bad_interrupt>
24: 0c 94 d0 00 jmp 0x1a0 ; 0x1a0 <__bad_interrupt>
28: 0c 94 d0 00 jmp 0x1a0 ; 0x1a0 <__bad_interrupt>
2c: 0c 94 ef 07 jmp 0xfde ; 0xfde <__vector_11>
30: 0c 94 d0 00 jmp 0x1a0 ; 0x1a0 <__bad_interrupt>
34: 0c 94 d0 00 jmp 0x1a0 ; 0x1a0 <__bad_interrupt>
38: 0c 94 d0 00 jmp 0x1a0 ; 0x1a0 <__bad_interrupt>
3c: 0c 94 d0 00 jmp 0x1a0 ; 0x1a0 <__bad_interrupt>
40: 0c 94 d0 00 jmp 0x1a0 ; 0x1a0 <__bad_interrupt>
44: 0c 94 d0 00 jmp 0x1a0 ; 0x1a0 <__bad_interrupt>
48: 0c 94 d0 00 jmp 0x1a0 ; 0x1a0 <__bad_interrupt>
4c: 0c 94 d0 00 jmp 0x1a0 ; 0x1a0 <__bad_interrupt>
50: 0c 94 d0 00 jmp 0x1a0 ; 0x1a0 <__bad_interrupt>
54: 00 40 sbci r16, 0x00 ; 0
56: 7a 10 cpse r7, r10
58: f3 5a subi r31, 0xA3 ; 163
5a: 00 a0 ldd r0, Z+32 ; 0x20
5c: 72 4e sbci r23, 0xE2 ; 226
5e: 18 09 sbc r17, r8
60: 00 10 cpse r0, r0
62: a5 d4 rcall .+2378 ; 0x9ae <__stack+0x54f>
64: e8 00 .word 0x00e8 ; ????
66: 00 e8 ldi r16, 0x80 ; 128
68: 76 48 sbci r23, 0x86 ; 134
6a: 17 00 .word 0x0017 ; ????
6c: 00 e4 ldi r16, 0x40 ; 64
6e: 0b 54 subi r16, 0x4B ; 75
70: 02 00 .word 0x0002 ; ????
72: 00 ca rjmp .-3072 ; 0xfffff474 <__eeprom_end+0xff7ef474>
74: 9a 3b cpi r25, 0xBA ; 186
76: 00 00 nop
78: 00 e1 ldi r16, 0x10 ; 16
7a: f5 05 cpc r31, r5
7c: 00 00 nop
7e: 80 96 adiw r24, 0x20 ; 32
80: 98 00 .word 0x0098 ; ????
82: 00 00 nop
84: 40 42 sbci r20, 0x20 ; 32
86: 0f 00 .word 0x000f ; ????
88: 00 00 nop
8a: a0 86 std Z+8, r10 ; 0x08
8c: 01 00 .word 0x0001 ; ????
8e: 00 00 nop
90: 10 27 eor r17, r16
92: 00 00 nop
94: 00 00 nop
96: e8 03 fmulsu r22, r16
98: 00 00 nop
9a: 00 00 nop
9c: 64 00 .word 0x0064 ; ????
9e: 00 00 nop
a0: 00 00 nop
a2: 0a 00 .word 0x000a ; ????
a4: 00 00 nop
a6: 00 00 nop
a8: 01 00 .word 0x0001 ; ????
aa: 00 00 nop
ac: 00 00 nop
ae: 2c 76 andi r18, 0x6C ; 108
b0: d8 88 ldd r13, Y+16 ; 0x10
b2: dc 67 ori r29, 0x7C ; 124
b4: 4f 08 sbc r4, r15
b6: 23 df rcall .-442 ; 0xfffffefe <__eeprom_end+0xff7efefe>
b8: c1 df rcall .-126 ; 0x3c <__zero_reg__+0x3b>
ba: ae 59 subi r26, 0x9E ; 158
bc: e1 b1 in r30, 0x01 ; 1
be: b7 96 adiw r30, 0x27 ; 39
c0: e5 e3 ldi r30, 0x35 ; 53
c2: e4 53 subi r30, 0x34 ; 52
c4: c6 3a cpi r28, 0xA6 ; 166
c6: e6 51 subi r30, 0x16 ; 22
c8: 99 76 andi r25, 0x69 ; 105
ca: 96 e8 ldi r25, 0x86 ; 134
cc: e6 c2 rjmp .+1484 ; 0x69a <__stack+0x23b>
ce: 84 26 eor r8, r20
d0: eb 89 ldd r30, Y+19 ; 0x13
d2: 8c 9b sbis 0x11, 4 ; 17
d4: 62 ed ldi r22, 0xD2 ; 210
d6: 40 7c andi r20, 0xC0 ; 192
d8: 6f fc .word 0xfc6f ; ????
da: ef bc out 0x2f, r14 ; 47
dc: 9c 9f mul r25, r28
de: 40 f2 brcs .-112 ; 0x70 <__SREG__+0x31>
e0: ba a5 ldd r27, Y+42 ; 0x2a
e2: 6f a5 ldd r22, Y+47 ; 0x2f
e4: f4 90 lpm r15, Z
e6: 05 5a subi r16, 0xA5 ; 165
e8: 2a f7 brpl .-54 ; 0xb4 <__SREG__+0x75>
ea: 5c 93 st X, r21
ec: 6b 6c ori r22, 0xCB ; 203
ee: f9 67 ori r31, 0x79 ; 121
f0: 6d c1 rjmp .+730 ; 0x3cc <main+0x12>
f2: 1b fc .word 0xfc1b ; ????
f4: e0 e4 ldi r30, 0x40 ; 64
f6: 0d 47 sbci r16, 0x7D ; 125
f8: fe f5 brtc .+126 ; 0x178 <__do_clear_bss+0x6>
fa: 20 e6 ldi r18, 0x60 ; 96
fc: b5 00 .word 0x00b5 ; ????
fe: d0 ed ldi r29, 0xD0 ; 208
100: 90 2e mov r9, r16
102: 03 00 .word 0x0003 ; ????
104: 94 35 cpi r25, 0x54 ; 84
106: 77 05 cpc r23, r7
108: 00 80 ld r0, Z
10a: 84 1e adc r8, r20
10c: 08 00 .word 0x0008 ; ????
10e: 00 20 and r0, r0
110: 4e 0a sbc r4, r30
112: 00 00 nop
114: 00 c8 rjmp .-4096 ; 0xfffff116 <__eeprom_end+0xff7ef116>
116: 0c 33 cpi r16, 0x3C ; 60
118: 33 33 cpi r19, 0x33 ; 51
11a: 33 0f add r19, r19
11c: 98 6e ori r25, 0xE8 ; 232
11e: 12 83 std Z+2, r17 ; 0x02
120: 11 41 sbci r17, 0x11 ; 17
122: ef 8d ldd r30, Y+31 ; 0x1f
124: 21 14 cp r2, r1
126: 89 3b cpi r24, 0xB9 ; 185
128: e6 55 subi r30, 0x56 ; 86
12a: 16 cf rjmp .-468 ; 0xffffff58 <__eeprom_end+0xff7eff58>
12c: fe e6 ldi r31, 0x6E ; 110
12e: db 18 sub r13, r11
130: d1 84 ldd r13, Z+9 ; 0x09
132: 4b 38 cpi r20, 0x8B ; 139
134: 1b f7 brvc .-58 ; 0xfc <__SREG__+0xbd>
136: 7c 1d adc r23, r12
138: 90 1d adc r25, r0
13a: a4 bb out 0x14, r26 ; 20
13c: e4 24 eor r14, r4
13e: 20 32 cpi r18, 0x20 ; 32
140: 84 72 andi r24, 0x24 ; 36
142: 5e 22 and r5, r30
144: 81 00 .word 0x0081 ; ????
146: c9 f1 breq .+114 ; 0x1ba <_Z5setupv+0x16>
148: 24 ec ldi r18, 0xC4 ; 196
14a: a1 e5 ldi r26, 0x51 ; 81
14c: 3d 27 eor r19, r29
0000014e <__ctors_start>:
14e: b7 08 sbc r11, r7
00000150 <__ctors_end>:
150: 11 24 eor r1, r1
152: 1f be out 0x3f, r1 ; 63
154: cf e5 ldi r28, 0x5F ; 95
156: d4 e0 ldi r29, 0x04 ; 4
158: de bf out 0x3e, r29 ; 62
15a: cd bf out 0x3d, r28 ; 61
0000015c <__do_copy_data>:
15c: 11 e0 ldi r17, 0x01 ; 1
15e: a0 e6 ldi r26, 0x60 ; 96
160: b0 e0 ldi r27, 0x00 ; 0
162: e8 e8 ldi r30, 0x88 ; 136
164: fb e1 ldi r31, 0x1B ; 27
166: 02 c0 rjmp .+4 ; 0x16c <__do_copy_data+0x10>
168: 05 90 lpm r0, Z+
16a: 0d 92 st X+, r0
16c: a2 3a cpi r26, 0xA2 ; 162
16e: b1 07 cpc r27, r17
170: d9 f7 brne .-10 ; 0x168 <__do_copy_data+0xc>
00000172 <__do_clear_bss>:
172: 21 e0 ldi r18, 0x01 ; 1
174: a2 ea ldi r26, 0xA2 ; 162
176: b1 e0 ldi r27, 0x01 ; 1
178: 01 c0 rjmp .+2 ; 0x17c <.do_clear_bss_start>
0000017a <.do_clear_bss_loop>:
17a: 1d 92 st X+, r1
0000017c <.do_clear_bss_start>:
17c: a5 3e cpi r26, 0xE5 ; 229
17e: b2 07 cpc r27, r18
180: e1 f7 brne .-8 ; 0x17a <.do_clear_bss_loop>
00000182 <__do_global_ctors>:
182: 11 e0 ldi r17, 0x01 ; 1
184: c0 e5 ldi r28, 0x50 ; 80
186: d1 e0 ldi r29, 0x01 ; 1
188: 04 c0 rjmp .+8 ; 0x192 <__do_global_ctors+0x10>
18a: 22 97 sbiw r28, 0x02 ; 2
18c: fe 01 movw r30, r28
18e: 0e 94 22 0b call 0x1644 ; 0x1644 <__tablejump__>
192: ce 34 cpi r28, 0x4E ; 78
194: d1 07 cpc r29, r17
196: c9 f7 brne .-14 ; 0x18a <__do_global_ctors+0x8>
198: 0e 94 dd 01 call 0x3ba ; 0x3ba <main>
19c: 0c 94 c2 0d jmp 0x1b84 ; 0x1b84 <_exit>
000001a0 <__bad_interrupt>:
1a0: 0c 94 00 00 jmp 0 ; 0x0 <__vectors>
000001a4 <_Z5setupv>:
usartclass r(l);
adcclass a;
buttonclass b(l);
void setup()
{
1a4: cf 93 push r28
namespace avrlib {
struct portb
{
static uint8_t port() { return PORTB; }
static void port(uint8_t v) { PORTB = v; }
1a6: c4 9a sbi 0x18, 4 ; 24
static uint8_t pin() { return PINB; }
static void pin(uint8_t v) { PINB = v; }
static uint8_t dir() { return DDRB; }
static void dir(uint8_t v) { DDRB = v; }
1a8: bc 9a sbi 0x17, 4 ; 23
namespace avrlib {
struct portc
{
static uint8_t port() { return PORTC; }
static void port(uint8_t v) { PORTC = v; }
1aa: aa 98 cbi 0x15, 2 ; 21
static uint8_t pin() { return PINC; }
static void pin(uint8_t v) { PINC = v; }
static uint8_t dir() { return DDRC; }
static void dir(uint8_t v) { DDRC = v; }
1ac: a2 9a sbi 0x14, 2 ; 20
namespace avrlib {
struct portc
{
static uint8_t port() { return PORTC; }
static void port(uint8_t v) { PORTC = v; }
1ae: ab 98 cbi 0x15, 3 ; 21
static uint8_t pin() { return PINC; }
static void pin(uint8_t v) { PINC = v; }
static uint8_t dir() { return DDRC; }
static void dir(uint8_t v) { DDRC = v; }
1b0: a3 9a sbi 0x14, 3 ; 20
namespace avrlib {
struct portc
{
static uint8_t port() { return PORTC; }
static void port(uint8_t v) { PORTC = v; }
1b2: ac 98 cbi 0x15, 4 ; 21
static uint8_t pin() { return PINC; }
static void pin(uint8_t v) { PINC = v; }
static uint8_t dir() { return DDRC; }
static void dir(uint8_t v) { DDRC = v; }
1b4: a4 9a sbi 0x14, 4 ; 20
namespace avrlib {
struct portc
{
static uint8_t port() { return PORTC; }
static void port(uint8_t v) { PORTC = v; }
1b6: ad 98 cbi 0x15, 5 ; 21
static uint8_t pin() { return PINC; }
static void pin(uint8_t v) { PINC = v; }
static uint8_t dir() { return DDRC; }
static void dir(uint8_t v) { DDRC = v; }
1b8: a5 9a sbi 0x14, 5 ; 20
namespace avrlib {
struct portc
{
static uint8_t port() { return PORTC; }
static void port(uint8_t v) { PORTC = v; }
1ba: ae 98 cbi 0x15, 6 ; 21
static uint8_t pin() { return PINC; }
static void pin(uint8_t v) { PINC = v; }
static uint8_t dir() { return DDRC; }
static void dir(uint8_t v) { DDRC = v; }
1bc: a6 9a sbi 0x14, 6 ; 20
namespace avrlib {
struct portc
{
static uint8_t port() { return PORTC; }
static void port(uint8_t v) { PORTC = v; }
1be: af 98 cbi 0x15, 7 ; 21
static uint8_t pin() { return PINC; }
static void pin(uint8_t v) { PINC = v; }
static uint8_t dir() { return DDRC; }
static void dir(uint8_t v) { DDRC = v; }
1c0: a7 9a sbi 0x14, 7 ; 20
1c2: e1 e9 ldi r30, 0x91 ; 145
1c4: f0 e0 ldi r31, 0x00 ; 0
init();
this->led = l;
send("Uart done!\n");
}
void send(const char *text) {
while (*text)
1c6: 83 e2 ldi r24, 0x23 ; 35
namespace avrlib {
struct portb
{
static uint8_t port() { return PORTB; }
static void port(uint8_t v) { PORTB = v; }
1c8: c3 9a sbi 0x18, 3 ; 24
static uint8_t pin() { return PINB; }
static void pin(uint8_t v) { PINB = v; }
static uint8_t dir() { return DDRB; }
static void dir(uint8_t v) { DDRB = v; }
1ca: bb 9a sbi 0x17, 3 ; 23
UBRRL = (F_CPU / (baudrate * 16L) - 1);
sei();
}
uint8_t uart_putchar(uint8_t c) {
led.on(led.YELLOW);
loop_until_bit_is_set(UCSRA, UDRE); //Ausgabe des Zeichens
1cc: 5d 9b sbis 0x0b, 5 ; 11
1ce: fe cf rjmp .-4 ; 0x1cc <_Z5setupv+0x28>
UDR = c;
1d0: 8c b9 out 0x0c, r24 ; 12
namespace avrlib {
struct portb
{
static uint8_t port() { return PORTB; }
static void port(uint8_t v) { PORTB = v; }
1d2: c3 98 cbi 0x18, 3 ; 24
static uint8_t pin() { return PINB; }
static void pin(uint8_t v) { PINB = v; }
static uint8_t dir() { return DDRB; }
static void dir(uint8_t v) { DDRB = v; }
1d4: bb 9a sbi 0x17, 3 ; 23
init();
this->led = l;
send("Uart done!\n");
}
void send(const char *text) {
while (*text)
1d6: 81 91 ld r24, Z+
1d8: 81 11 cpse r24, r1
1da: f6 cf rjmp .-20 ; 0x1c8 <_Z5setupv+0x24>
1dc: ee ec ldi r30, 0xCE ; 206
1de: f0 e0 ldi r31, 0x00 ; 0
1e0: 83 e2 ldi r24, 0x23 ; 35
namespace avrlib {
struct portb
{
static uint8_t port() { return PORTB; }
static void port(uint8_t v) { PORTB = v; }
1e2: c3 9a sbi 0x18, 3 ; 24
static uint8_t pin() { return PINB; }
static void pin(uint8_t v) { PINB = v; }
static uint8_t dir() { return DDRB; }
static void dir(uint8_t v) { DDRB = v; }
1e4: bb 9a sbi 0x17, 3 ; 23
UBRRL = (F_CPU / (baudrate * 16L) - 1);
sei();
}
uint8_t uart_putchar(uint8_t c) {
led.on(led.YELLOW);
loop_until_bit_is_set(UCSRA, UDRE); //Ausgabe des Zeichens
1e6: 5d 9b sbis 0x0b, 5 ; 11
1e8: fe cf rjmp .-4 ; 0x1e6 <_Z5setupv+0x42>
UDR = c;
1ea: 8c b9 out 0x0c, r24 ; 12
namespace avrlib {
struct portb
{
static uint8_t port() { return PORTB; }
static void port(uint8_t v) { PORTB = v; }
1ec: c3 98 cbi 0x18, 3 ; 24
static uint8_t pin() { return PINB; }
static void pin(uint8_t v) { PINB = v; }
static uint8_t dir() { return DDRB; }
static void dir(uint8_t v) { DDRB = v; }
1ee: bb 9a sbi 0x17, 3 ; 23
init();
this->led = l;
send("Uart done!\n");
}
void send(const char *text) {
while (*text)
1f0: 81 91 ld r24, Z+
1f2: 81 11 cpse r24, r1
1f4: f6 cf rjmp .-20 ; 0x1e2 <_Z5setupv+0x3e>
namespace avrlib {
struct portc
{
static uint8_t port() { return PORTC; }
static void port(uint8_t v) { PORTC = v; }
1f6: aa 98 cbi 0x15, 2 ; 21
static uint8_t pin() { return PINC; }
static void pin(uint8_t v) { PINC = v; }
static uint8_t dir() { return DDRC; }
static void dir(uint8_t v) { DDRC = v; }
1f8: a2 9a sbi 0x14, 2 ; 20
namespace avrlib {
struct portc
{
static uint8_t port() { return PORTC; }
static void port(uint8_t v) { PORTC = v; }
1fa: ab 98 cbi 0x15, 3 ; 21
static uint8_t pin() { return PINC; }
static void pin(uint8_t v) { PINC = v; }
static uint8_t dir() { return DDRC; }
static void dir(uint8_t v) { DDRC = v; }
1fc: a3 9a sbi 0x14, 3 ; 20
namespace avrlib {
struct portc
{
static uint8_t port() { return PORTC; }
static void port(uint8_t v) { PORTC = v; }
1fe: ac 98 cbi 0x15, 4 ; 21
static uint8_t pin() { return PINC; }
static void pin(uint8_t v) { PINC = v; }
static uint8_t dir() { return DDRC; }
static void dir(uint8_t v) { DDRC = v; }
200: a4 9a sbi 0x14, 4 ; 20
namespace avrlib {
struct portc
{
static uint8_t port() { return PORTC; }
static void port(uint8_t v) { PORTC = v; }
202: ad 98 cbi 0x15, 5 ; 21
static uint8_t pin() { return PINC; }
static void pin(uint8_t v) { PINC = v; }
static uint8_t dir() { return DDRC; }
static void dir(uint8_t v) { DDRC = v; }
204: a5 9a sbi 0x14, 5 ; 20
namespace avrlib {
struct portc
{
static uint8_t port() { return PORTC; }
static void port(uint8_t v) { PORTC = v; }
206: ae 98 cbi 0x15, 6 ; 21
static uint8_t pin() { return PINC; }
static void pin(uint8_t v) { PINC = v; }
static uint8_t dir() { return DDRC; }
static void dir(uint8_t v) { DDRC = v; }
208: a6 9a sbi 0x14, 6 ; 20
namespace avrlib {
struct portc
{
static uint8_t port() { return PORTC; }
static void port(uint8_t v) { PORTC = v; }
20a: af 98 cbi 0x15, 7 ; 21
static uint8_t pin() { return PINC; }
static void pin(uint8_t v) { PINC = v; }
static uint8_t dir() { return DDRC; }
static void dir(uint8_t v) { DDRC = v; }
20c: a7 9a sbi 0x14, 7 ; 20
20e: 20 e0 ldi r18, 0x00 ; 0
210: 30 e0 ldi r19, 0x00 ; 0
return 0;
}
void test() {
off();
for (uint8_t i=0;i<6;i++) {
on((1<<i));
212: 41 e0 ldi r20, 0x01 ; 1
214: 50 e0 ldi r21, 0x00 ; 0
216: ca 01 movw r24, r20
218: 02 2e mov r0, r18
21a: 02 c0 rjmp .+4 ; 0x220 <_Z5setupv+0x7c>
21c: 88 0f add r24, r24
21e: 99 1f adc r25, r25
220: 0a 94 dec r0
222: e2 f7 brpl .-8 ; 0x21c <_Z5setupv+0x78>
if(ausg & OUT6) {
out6::make_low();
}
}
void on(uint8_t ausg = 255) {
if(ausg & OUT1) {
224: a8 2f mov r26, r24
226: a1 70 andi r26, 0x01 ; 1
228: 80 ff sbrs r24, 0
22a: 02 c0 rjmp .+4 ; 0x230 <_Z5setupv+0x8c>
namespace avrlib {
struct portc
{
static uint8_t port() { return PORTC; }
static void port(uint8_t v) { PORTC = v; }
22c: aa 9a sbi 0x15, 2 ; 21
static uint8_t pin() { return PINC; }
static void pin(uint8_t v) { PINC = v; }
static uint8_t dir() { return DDRC; }
static void dir(uint8_t v) { DDRC = v; }
22e: a2 9a sbi 0x14, 2 ; 20
out1::make_high();
}
if(ausg & OUT2) {
230: f8 2f mov r31, r24
232: f2 70 andi r31, 0x02 ; 2
234: 81 ff sbrs r24, 1
236: 02 c0 rjmp .+4 ; 0x23c <_Z5setupv+0x98>
namespace avrlib {
struct portc
{
static uint8_t port() { return PORTC; }
static void port(uint8_t v) { PORTC = v; }
238: ab 9a sbi 0x15, 3 ; 21
static uint8_t pin() { return PINC; }
static void pin(uint8_t v) { PINC = v; }
static uint8_t dir() { return DDRC; }
static void dir(uint8_t v) { DDRC = v; }
23a: a3 9a sbi 0x14, 3 ; 20
out2::make_high();
}
if(ausg & OUT3) {
23c: e8 2f mov r30, r24
23e: e4 70 andi r30, 0x04 ; 4
240: 82 ff sbrs r24, 2
242: 02 c0 rjmp .+4 ; 0x248 <_Z5setupv+0xa4>
namespace avrlib {
struct portc
{
static uint8_t port() { return PORTC; }
static void port(uint8_t v) { PORTC = v; }
244: ac 9a sbi 0x15, 4 ; 21
static uint8_t pin() { return PINC; }
static void pin(uint8_t v) { PINC = v; }
static uint8_t dir() { return DDRC; }
static void dir(uint8_t v) { DDRC = v; }
246: a4 9a sbi 0x14, 4 ; 20
out3::make_high();
}
if(ausg & OUT4) {
248: 78 2f mov r23, r24
24a: 78 70 andi r23, 0x08 ; 8
24c: 83 ff sbrs r24, 3
24e: 02 c0 rjmp .+4 ; 0x254 <_Z5setupv+0xb0>
namespace avrlib {
struct portc
{
static uint8_t port() { return PORTC; }
static void port(uint8_t v) { PORTC = v; }
250: ad 9a sbi 0x15, 5 ; 21
static uint8_t pin() { return PINC; }
static void pin(uint8_t v) { PINC = v; }
static uint8_t dir() { return DDRC; }
static void dir(uint8_t v) { DDRC = v; }
252: a5 9a sbi 0x14, 5 ; 20
out4::make_high();
}
if(ausg & OUT5) {
254: 68 2f mov r22, r24
256: 60 71 andi r22, 0x10 ; 16
258: 84 ff sbrs r24, 4
25a: 02 c0 rjmp .+4 ; 0x260 <_Z5setupv+0xbc>
namespace avrlib {
struct portc
{
static uint8_t port() { return PORTC; }
static void port(uint8_t v) { PORTC = v; }
25c: ae 9a sbi 0x15, 6 ; 21
static uint8_t pin() { return PINC; }
static void pin(uint8_t v) { PINC = v; }
static uint8_t dir() { return DDRC; }
static void dir(uint8_t v) { DDRC = v; }
25e: a6 9a sbi 0x14, 6 ; 20
out5::make_high();
}
if(ausg & OUT6) {
260: 98 2f mov r25, r24
262: 90 72 andi r25, 0x20 ; 32
264: 85 ff sbrs r24, 5
266: 02 c0 rjmp .+4 ; 0x26c <_Z5setupv+0xc8>
namespace avrlib {
struct portc
{
static uint8_t port() { return PORTC; }
static void port(uint8_t v) { PORTC = v; }
268: af 9a sbi 0x15, 7 ; 21
static uint8_t pin() { return PINC; }
static void pin(uint8_t v) { PINC = v; }
static uint8_t dir() { return DDRC; }
static void dir(uint8_t v) { DDRC = v; }
26a: a7 9a sbi 0x14, 7 ; 20
#else
//round up by default
__ticks_dc = (uint32_t)(ceil(fabs(__tmp)));
#endif
__builtin_avr_delay_cycles(__ticks_dc);
26c: 8f ef ldi r24, 0xFF ; 255
26e: b1 ee ldi r27, 0xE1 ; 225
270: c4 e0 ldi r28, 0x04 ; 4
272: 81 50 subi r24, 0x01 ; 1
274: b0 40 sbci r27, 0x00 ; 0
276: c0 40 sbci r28, 0x00 ; 0
278: e1 f7 brne .-8 ; 0x272 <_Z5setupv+0xce>
27a: 00 c0 rjmp .+0 ; 0x27c <_Z5setupv+0xd8>
27c: 00 00 nop
public:
SSR() {
init();
}
void off(uint8_t ausg = 255) {
if(ausg & OUT1) {
27e: aa 23 and r26, r26
280: 11 f0 breq .+4 ; 0x286 <_Z5setupv+0xe2>
namespace avrlib {
struct portc
{
static uint8_t port() { return PORTC; }
static void port(uint8_t v) { PORTC = v; }
282: aa 98 cbi 0x15, 2 ; 21
static uint8_t pin() { return PINC; }
static void pin(uint8_t v) { PINC = v; }
static uint8_t dir() { return DDRC; }
static void dir(uint8_t v) { DDRC = v; }
284: a2 9a sbi 0x14, 2 ; 20
out1::make_low();
}
if(ausg & OUT2) {
286: ff 23 and r31, r31
288: 11 f0 breq .+4 ; 0x28e <_Z5setupv+0xea>
namespace avrlib {
struct portc
{
static uint8_t port() { return PORTC; }
static void port(uint8_t v) { PORTC = v; }
28a: ab 98 cbi 0x15, 3 ; 21
static uint8_t pin() { return PINC; }
static void pin(uint8_t v) { PINC = v; }
static uint8_t dir() { return DDRC; }
static void dir(uint8_t v) { DDRC = v; }
28c: a3 9a sbi 0x14, 3 ; 20
out2::make_low();
}
if(ausg & OUT3) {
28e: ee 23 and r30, r30
290: 11 f0 breq .+4 ; 0x296 <_Z5setupv+0xf2>
namespace avrlib {
struct portc
{
static uint8_t port() { return PORTC; }
static void port(uint8_t v) { PORTC = v; }
292: ac 98 cbi 0x15, 4 ; 21
static uint8_t pin() { return PINC; }
static void pin(uint8_t v) { PINC = v; }
static uint8_t dir() { return DDRC; }
static void dir(uint8_t v) { DDRC = v; }
294: a4 9a sbi 0x14, 4 ; 20
out3::make_low();
}
if(ausg & OUT4) {
296: 77 23 and r23, r23
298: 11 f0 breq .+4 ; 0x29e <_Z5setupv+0xfa>
namespace avrlib {
struct portc
{
static uint8_t port() { return PORTC; }
static void port(uint8_t v) { PORTC = v; }
29a: ad 98 cbi 0x15, 5 ; 21
static uint8_t pin() { return PINC; }
static void pin(uint8_t v) { PINC = v; }
static uint8_t dir() { return DDRC; }
static void dir(uint8_t v) { DDRC = v; }
29c: a5 9a sbi 0x14, 5 ; 20
out4::make_low();
}
if(ausg & OUT5) {
29e: 66 23 and r22, r22
2a0: 11 f0 breq .+4 ; 0x2a6 <_Z5setupv+0x102>
namespace avrlib {
struct portc
{
static uint8_t port() { return PORTC; }
static void port(uint8_t v) { PORTC = v; }
2a2: ae 98 cbi 0x15, 6 ; 21
static uint8_t pin() { return PINC; }
static void pin(uint8_t v) { PINC = v; }
static uint8_t dir() { return DDRC; }
static void dir(uint8_t v) { DDRC = v; }
2a4: a6 9a sbi 0x14, 6 ; 20
out5::make_low();
}
if(ausg & OUT6) {
2a6: 99 23 and r25, r25
2a8: 11 f0 breq .+4 ; 0x2ae <_Z5setupv+0x10a>
namespace avrlib {
struct portc
{
static uint8_t port() { return PORTC; }
static void port(uint8_t v) { PORTC = v; }
2aa: af 98 cbi 0x15, 7 ; 21
static uint8_t pin() { return PINC; }
static void pin(uint8_t v) { PINC = v; }
static uint8_t dir() { return DDRC; }
static void dir(uint8_t v) { DDRC = v; }
2ac: a7 9a sbi 0x14, 7 ; 20
2ae: 2f 5f subi r18, 0xFF ; 255
2b0: 3f 4f sbci r19, 0xFF ; 255
}
return 0;
}
void test() {
off();
for (uint8_t i=0;i<6;i++) {
2b2: 26 30 cpi r18, 0x06 ; 6
2b4: 31 05 cpc r19, r1
2b6: 09 f0 breq .+2 ; 0x2ba <_Z5setupv+0x116>
2b8: ae cf rjmp .-164 ; 0x216 <_Z5setupv+0x72>
namespace avrlib {
struct portc
{
static uint8_t port() { return PORTC; }
static void port(uint8_t v) { PORTC = v; }
2ba: aa 98 cbi 0x15, 2 ; 21
static uint8_t pin() { return PINC; }
static void pin(uint8_t v) { PINC = v; }
static uint8_t dir() { return DDRC; }
static void dir(uint8_t v) { DDRC = v; }
2bc: a2 9a sbi 0x14, 2 ; 20
namespace avrlib {
struct portc
{
static uint8_t port() { return PORTC; }
static void port(uint8_t v) { PORTC = v; }
2be: ab 98 cbi 0x15, 3 ; 21
static uint8_t pin() { return PINC; }
static void pin(uint8_t v) { PINC = v; }
static uint8_t dir() { return DDRC; }
static void dir(uint8_t v) { DDRC = v; }
2c0: a3 9a sbi 0x14, 3 ; 20
namespace avrlib {
struct portc
{
static uint8_t port() { return PORTC; }
static void port(uint8_t v) { PORTC = v; }
2c2: ac 98 cbi 0x15, 4 ; 21
static uint8_t pin() { return PINC; }
static void pin(uint8_t v) { PINC = v; }
static uint8_t dir() { return DDRC; }
static void dir(uint8_t v) { DDRC = v; }
2c4: a4 9a sbi 0x14, 4 ; 20
namespace avrlib {
struct portc
{
static uint8_t port() { return PORTC; }
static void port(uint8_t v) { PORTC = v; }
2c6: ad 98 cbi 0x15, 5 ; 21
static uint8_t pin() { return PINC; }
static void pin(uint8_t v) { PINC = v; }
static uint8_t dir() { return DDRC; }
static void dir(uint8_t v) { DDRC = v; }
2c8: a5 9a sbi 0x14, 5 ; 20
namespace avrlib {
struct portc
{
static uint8_t port() { return PORTC; }
static void port(uint8_t v) { PORTC = v; }
2ca: ae 98 cbi 0x15, 6 ; 21
static uint8_t pin() { return PINC; }
static void pin(uint8_t v) { PINC = v; }
static uint8_t dir() { return DDRC; }
static void dir(uint8_t v) { DDRC = v; }
2cc: a6 9a sbi 0x14, 6 ; 20
namespace avrlib {
struct portc
{
static uint8_t port() { return PORTC; }
static void port(uint8_t v) { PORTC = v; }
2ce: af 98 cbi 0x15, 7 ; 21
static uint8_t pin() { return PINC; }
static void pin(uint8_t v) { PINC = v; }
static uint8_t dir() { return DDRC; }
static void dir(uint8_t v) { DDRC = v; }
2d0: a7 9a sbi 0x14, 7 ; 20
2d2: ed ed ldi r30, 0xDD ; 221
2d4: f0 e0 ldi r31, 0x00 ; 0
2d6: 83 e2 ldi r24, 0x23 ; 35
namespace avrlib {
struct portb
{
static uint8_t port() { return PORTB; }
static void port(uint8_t v) { PORTB = v; }
2d8: c3 9a sbi 0x18, 3 ; 24
static uint8_t pin() { return PINB; }
static void pin(uint8_t v) { PINB = v; }
static uint8_t dir() { return DDRB; }
static void dir(uint8_t v) { DDRB = v; }
2da: bb 9a sbi 0x17, 3 ; 23
UBRRL = (F_CPU / (baudrate * 16L) - 1);
sei();
}
uint8_t uart_putchar(uint8_t c) {
led.on(led.YELLOW);
loop_until_bit_is_set(UCSRA, UDRE); //Ausgabe des Zeichens
2dc: 5d 9b sbis 0x0b, 5 ; 11
2de: fe cf rjmp .-4 ; 0x2dc <_Z5setupv+0x138>
UDR = c;
2e0: 8c b9 out 0x0c, r24 ; 12
namespace avrlib {
struct portb
{
static uint8_t port() { return PORTB; }
static void port(uint8_t v) { PORTB = v; }
2e2: c3 98 cbi 0x18, 3 ; 24
static uint8_t pin() { return PINB; }
static void pin(uint8_t v) { PINB = v; }
static uint8_t dir() { return DDRB; }
static void dir(uint8_t v) { DDRB = v; }
2e4: bb 9a sbi 0x17, 3 ; 23
init();
this->led = l;
send("Uart done!\n");
}
void send(const char *text) {
while (*text)
2e6: 81 91 ld r24, Z+
2e8: 81 11 cpse r24, r1
2ea: f6 cf rjmp .-20 ; 0x2d8 <_Z5setupv+0x134>
// Timer Period: 0,1 s
// Timer1 Overflow Interrupt: Off
// Input Capture Interrupt: Off
// Compare A Match Interrupt: On
// Compare B Match Interrupt: Off
TCCR1A = 0;
2ec: 1f bc out 0x2f, r1 ; 47
TCCR1B |= (1<<WGM12) | (1<<CS11) | (1<<CS10);
2ee: 8e b5 in r24, 0x2e ; 46
2f0: 8b 60 ori r24, 0x0B ; 11
2f2: 8e bd out 0x2e, r24 ; 46
TCNT1H = 0;
2f4: 1d bc out 0x2d, r1 ; 45
TCNT1L = 0;
2f6: 1c bc out 0x2c, r1 ; 44
ICR1H = 0;
2f8: 17 bc out 0x27, r1 ; 39
ICR1L = 0;
2fa: 16 bc out 0x26, r1 ; 38
OCR1AH = 0x61;
2fc: 81 e6 ldi r24, 0x61 ; 97
2fe: 8b bd out 0x2b, r24 ; 43
OCR1AL = 0xA8;
300: 88 ea ldi r24, 0xA8 ; 168
302: 8a bd out 0x2a, r24 ; 42
OCR1BH = 0;
304: 19 bc out 0x29, r1 ; 41
OCR1BL = 0;
306: 18 bc out 0x28, r1 ; 40
// Timer(s)/Counter(s) Interrupt(s) initialization
TIMSK |= (1<<OCIE1A);
308: 89 b7 in r24, 0x39 ; 57
30a: 80 61 ori r24, 0x10 ; 16
30c: 89 bf out 0x39, r24 ; 57
sei();
30e: 78 94 sei
310: ec ee ldi r30, 0xEC ; 236
312: f0 e0 ldi r31, 0x00 ; 0
314: 83 e2 ldi r24, 0x23 ; 35
namespace avrlib {
struct portb
{
static uint8_t port() { return PORTB; }
static void port(uint8_t v) { PORTB = v; }
316: c3 9a sbi 0x18, 3 ; 24
static uint8_t pin() { return PINB; }
static void pin(uint8_t v) { PINB = v; }
static uint8_t dir() { return DDRB; }
static void dir(uint8_t v) { DDRB = v; }
318: bb 9a sbi 0x17, 3 ; 23
UBRRL = (F_CPU / (baudrate * 16L) - 1);
sei();
}
uint8_t uart_putchar(uint8_t c) {
led.on(led.YELLOW);
loop_until_bit_is_set(UCSRA, UDRE); //Ausgabe des Zeichens
31a: 5d 9b sbis 0x0b, 5 ; 11
31c: fe cf rjmp .-4 ; 0x31a <_Z5setupv+0x176>
UDR = c;
31e: 8c b9 out 0x0c, r24 ; 12
namespace avrlib {
struct portb
{
static uint8_t port() { return PORTB; }
static void port(uint8_t v) { PORTB = v; }
320: c3 98 cbi 0x18, 3 ; 24
static uint8_t pin() { return PINB; }
static void pin(uint8_t v) { PINB = v; }
static uint8_t dir() { return DDRB; }
static void dir(uint8_t v) { DDRB = v; }
322: bb 9a sbi 0x17, 3 ; 23
init();
this->led = l;
send("Uart done!\n");
}
void send(const char *text) {
while (*text)
324: 81 91 ld r24, Z+
326: 81 11 cpse r24, r1
328: f6 cf rjmp .-20 ; 0x316 <_Z5setupv+0x172>
32a: 2f c0 rjmp .+94 ; 0x38a <_Z5setupv+0x1e6>
namespace avrlib {
struct portb
{
static uint8_t port() { return PORTB; }
static void port(uint8_t v) { PORTB = v; }
32c: c3 9a sbi 0x18, 3 ; 24
static uint8_t pin() { return PINB; }
static void pin(uint8_t v) { PINB = v; }
static uint8_t dir() { return DDRB; }
static void dir(uint8_t v) { DDRB = v; }
32e: bb 9a sbi 0x17, 3 ; 23
UBRRL = (F_CPU / (baudrate * 16L) - 1);
sei();
}
uint8_t uart_putchar(uint8_t c) {
led.on(led.YELLOW);
loop_until_bit_is_set(UCSRA, UDRE); //Ausgabe des Zeichens
330: 5d 9b sbis 0x0b, 5 ; 11
332: fe cf rjmp .-4 ; 0x330 <_Z5setupv+0x18c>
UDR = c;
334: 8c b9 out 0x0c, r24 ; 12
namespace avrlib {
struct portb
{
static uint8_t port() { return PORTB; }
static void port(uint8_t v) { PORTB = v; }
336: c3 98 cbi 0x18, 3 ; 24
static uint8_t pin() { return PINB; }
static void pin(uint8_t v) { PINB = v; }
static uint8_t dir() { return DDRB; }
static void dir(uint8_t v) { DDRB = v; }
338: bb 9a sbi 0x17, 3 ; 23
init();
this->led = l;
send("Uart done!\n");
}
void send(const char *text) {
while (*text)
33a: 81 91 ld r24, Z+
33c: 81 11 cpse r24, r1
33e: f6 cf rjmp .-20 ; 0x32c <_Z5setupv+0x188>
340: 2c c0 rjmp .+88 ; 0x39a <_Z5setupv+0x1f6>
namespace avrlib {
struct portb
{
static uint8_t port() { return PORTB; }
static void port(uint8_t v) { PORTB = v; }
342: c3 9a sbi 0x18, 3 ; 24
static uint8_t pin() { return PINB; }
static void pin(uint8_t v) { PINB = v; }
static uint8_t dir() { return DDRB; }
static void dir(uint8_t v) { DDRB = v; }
344: bb 9a sbi 0x17, 3 ; 23
UBRRL = (F_CPU / (baudrate * 16L) - 1);
sei();
}
uint8_t uart_putchar(uint8_t c) {
led.on(led.YELLOW);
loop_until_bit_is_set(UCSRA, UDRE); //Ausgabe des Zeichens
346: 5d 9b sbis 0x0b, 5 ; 11
348: fe cf rjmp .-4 ; 0x346 <_Z5setupv+0x1a2>
UDR = c;
34a: 8c b9 out 0x0c, r24 ; 12
namespace avrlib {
struct portb
{
static uint8_t port() { return PORTB; }
static void port(uint8_t v) { PORTB = v; }
34c: c3 98 cbi 0x18, 3 ; 24
static uint8_t pin() { return PINB; }
static void pin(uint8_t v) { PINB = v; }
static uint8_t dir() { return DDRB; }
static void dir(uint8_t v) { DDRB = v; }
34e: bb 9a sbi 0x17, 3 ; 23
init();
this->led = l;
send("Uart done!\n");
}
void send(const char *text) {
while (*text)
350: 81 91 ld r24, Z+
352: 81 11 cpse r24, r1
354: f6 cf rjmp .-20 ; 0x342 <_Z5setupv+0x19e>
Button(ledclass l) {
init();
this->led = l;
}
void setup_intr() {
GICR |= (1<<INT0);
356: 8b b7 in r24, 0x3b ; 59
358: 80 64 ori r24, 0x40 ; 64
35a: 8b bf out 0x3b, r24 ; 59
MCUCR = (1<<ISC01);
35c: 82 e0 ldi r24, 0x02 ; 2
35e: 85 bf out 0x35, r24 ; 53
//MCUCSR = 0;
GIFR = (1<<INTF0);
360: 80 e4 ldi r24, 0x40 ; 64
362: 8a bf out 0x3a, r24 ; 58
sei();
364: 78 94 sei
namespace avrlib {
struct portb
{
static uint8_t port() { return PORTB; }
static void port(uint8_t v) { PORTB = v; }
366: c3 98 cbi 0x18, 3 ; 24
static uint8_t pin() { return PINB; }
static void pin(uint8_t v) { PINB = v; }
static uint8_t dir() { return DDRB; }
static void dir(uint8_t v) { DDRB = v; }
368: bb 9a sbi 0x17, 3 ; 23
36a: e2 e0 ldi r30, 0x02 ; 2
36c: f1 e0 ldi r31, 0x01 ; 1
36e: 83 e2 ldi r24, 0x23 ; 35
namespace avrlib {
struct portb
{
static uint8_t port() { return PORTB; }
static void port(uint8_t v) { PORTB = v; }
370: c3 9a sbi 0x18, 3 ; 24
static uint8_t pin() { return PINB; }
static void pin(uint8_t v) { PINB = v; }
static uint8_t dir() { return DDRB; }
static void dir(uint8_t v) { DDRB = v; }
372: bb 9a sbi 0x17, 3 ; 23
UBRRL = (F_CPU / (baudrate * 16L) - 1);
sei();
}
uint8_t uart_putchar(uint8_t c) {
led.on(led.YELLOW);
loop_until_bit_is_set(UCSRA, UDRE); //Ausgabe des Zeichens
374: 5d 9b sbis 0x0b, 5 ; 11
376: fe cf rjmp .-4 ; 0x374 <_Z5setupv+0x1d0>
UDR = c;
378: 8c b9 out 0x0c, r24 ; 12
namespace avrlib {
struct portb
{
static uint8_t port() { return PORTB; }
static void port(uint8_t v) { PORTB = v; }
37a: c3 98 cbi 0x18, 3 ; 24
static uint8_t pin() { return PINB; }
static void pin(uint8_t v) { PINB = v; }
static uint8_t dir() { return DDRB; }
static void dir(uint8_t v) { DDRB = v; }
37c: bb 9a sbi 0x17, 3 ; 23
init();
this->led = l;
send("Uart done!\n");
}
void send(const char *text) {
while (*text)
37e: 81 91 ld r24, Z+
380: 81 11 cpse r24, r1
382: f6 cf rjmp .-20 ; 0x370 <_Z5setupv+0x1cc>
namespace avrlib {
struct portb
{
static uint8_t port() { return PORTB; }
static void port(uint8_t v) { PORTB = v; }
384: c2 9a sbi 0x18, 2 ; 24
static uint8_t pin() { return PINB; }
static void pin(uint8_t v) { PINB = v; }
static uint8_t dir() { return DDRB; }
static void dir(uint8_t v) { DDRB = v; }
386: ba 9a sbi 0x17, 2 ; 23
388: 16 c0 rjmp .+44 ; 0x3b6 <_Z5setupv+0x212>
namespace avrlib {
struct portb
{
static uint8_t port() { return PORTB; }
static void port(uint8_t v) { PORTB = v; }
38a: c4 98 cbi 0x18, 4 ; 24
static uint8_t pin() { return PINB; }
static void pin(uint8_t v) { PINB = v; }
static uint8_t dir() { return DDRB; }
static void dir(uint8_t v) { DDRB = v; }
38c: bc 9a sbi 0x17, 4 ; 23
namespace avrlib {
struct portb
{
static uint8_t port() { return PORTB; }
static void port(uint8_t v) { PORTB = v; }
38e: c3 9a sbi 0x18, 3 ; 24
static uint8_t pin() { return PINB; }
static void pin(uint8_t v) { PINB = v; }
static uint8_t dir() { return DDRB; }
static void dir(uint8_t v) { DDRB = v; }
390: bb 9a sbi 0x17, 3 ; 23
392: ef e3 ldi r30, 0x3F ; 63
394: f1 e0 ldi r31, 0x01 ; 1
396: 83 e2 ldi r24, 0x23 ; 35
398: c9 cf rjmp .-110 ; 0x32c <_Z5setupv+0x188>
public:
Adc() {
init();
}
void on() {
ADCSRA |= (1<<ADEN);
39a: 37 9a sbi 0x06, 7 ; 6
39c: 2f ef ldi r18, 0xFF ; 255
39e: 81 ee ldi r24, 0xE1 ; 225
3a0: 94 e0 ldi r25, 0x04 ; 4
3a2: 21 50 subi r18, 0x01 ; 1
3a4: 80 40 sbci r24, 0x00 ; 0
3a6: 90 40 sbci r25, 0x00 ; 0
3a8: e1 f7 brne .-8 ; 0x3a2 <_Z5setupv+0x1fe>
3aa: 00 c0 rjmp .+0 ; 0x3ac <_Z5setupv+0x208>
3ac: 00 00 nop
3ae: ec e4 ldi r30, 0x4C ; 76
3b0: f1 e0 ldi r31, 0x01 ; 1
3b2: 83 e2 ldi r24, 0x23 ; 35
3b4: c6 cf rjmp .-116 ; 0x342 <_Z5setupv+0x19e>
r.send("# Setup Button\n");
b.setup_intr();
l.off(l.YELLOW);
r.send("#### End Bootup ###########################################\n");
l.on(l.GREEN);
}
3b6: cf 91 pop r28
3b8: 08 95 ret
000003ba <main>:
int main(void)
{
3ba: cf 93 push r28
3bc: df 93 push r29
3be: cd b7 in r28, 0x3d ; 61
3c0: de b7 in r29, 0x3e ; 62
3c2: c3 5a subi r28, 0xA3 ; 163
3c4: d1 09 sbc r29, r1
3c6: 0f b6 in r0, 0x3f ; 63
3c8: f8 94 cli
3ca: de bf out 0x3e, r29 ; 62
3cc: 0f be out 0x3f, r0 ; 63
3ce: cd bf out 0x3d, r28 ; 61
setup();
3d0: 0e 94 d2 00 call 0x1a4 ; 0x1a4 <_Z5setupv>
int16_t target_temp = 20;
int8_t target_motor = 20;
float pwm_value = 0;
uint16_t v0a[20] = {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0};
3d4: 88 e2 ldi r24, 0x28 ; 40
3d6: fe 01 movw r30, r28
3d8: b9 96 adiw r30, 0x29 ; 41
3da: df 01 movw r26, r30
3dc: 28 2f mov r18, r24
3de: 1d 92 st X+, r1
3e0: 2a 95 dec r18
3e2: e9 f7 brne .-6 ; 0x3de <main+0x24>
uint16_t v1a[20] = {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0};
3e4: fe 01 movw r30, r28
3e6: 31 96 adiw r30, 0x01 ; 1
3e8: df 01 movw r26, r30
3ea: 1d 92 st X+, r1
3ec: 8a 95 dec r24
3ee: e9 f7 brne .-6 ; 0x3ea <main+0x30>
uint8_t p = 0;
3f0: c9 56 subi r28, 0x69 ; 105
3f2: df 4f sbci r29, 0xFF ; 255
3f4: 18 82 st Y, r1
3f6: c7 59 subi r28, 0x97 ; 151
3f8: d0 40 sbci r29, 0x00 ; 0
int main(void)
{
setup();
int16_t target_temp = 20;
int8_t target_motor = 20;
3fa: b4 e1 ldi r27, 0x14 ; 20
3fc: ca 56 subi r28, 0x6A ; 106
3fe: df 4f sbci r29, 0xFF ; 255
400: b8 83 st Y, r27
402: c6 59 subi r28, 0x96 ; 150
404: d0 40 sbci r29, 0x00 ; 0
}
int main(void)
{
setup();
int16_t target_temp = 20;
406: e4 e1 ldi r30, 0x14 ; 20
408: f0 e0 ldi r31, 0x00 ; 0
40a: cc 56 subi r28, 0x6C ; 108
40c: df 4f sbci r29, 0xFF ; 255
40e: f9 83 std Y+1, r31 ; 0x01
410: e8 83 st Y, r30
412: c4 59 subi r28, 0x94 ; 148
414: d0 40 sbci r29, 0x00 ; 0
uint16_t v0a[20] = {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0};
uint16_t v1a[20] = {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0};
uint8_t p = 0;
while(1)
{
v0a[p] = a.get(0);
416: 9e 01 movw r18, r28
418: 2f 5f subi r18, 0xFF ; 255
41a: 3f 4f sbci r19, 0xFF ; 255
41c: c8 57 subi r28, 0x78 ; 120
41e: df 4f sbci r29, 0xFF ; 255
420: 39 83 std Y+1, r19 ; 0x01
422: 28 83 st Y, r18
424: c8 58 subi r28, 0x88 ; 136
426: d0 40 sbci r29, 0x00 ; 0
428: ce 55 subi r28, 0x5E ; 94
42a: df 4f sbci r29, 0xFF ; 255
42c: 28 83 st Y, r18
42e: c2 5a subi r28, 0xA2 ; 162
430: d0 40 sbci r29, 0x00 ; 0
432: cd 55 subi r28, 0x5D ; 93
434: df 4f sbci r29, 0xFF ; 255
436: 38 83 st Y, r19
438: c3 5a subi r28, 0xA3 ; 163
43a: d0 40 sbci r29, 0x00 ; 0
l.off(l.YELLOW);
r.send("#### End Bootup ###########################################\n");
l.on(l.GREEN);
}
int main(void)
43c: 0f 2e mov r0, r31
43e: f9 e2 ldi r31, 0x29 ; 41
440: af 2e mov r10, r31
442: b1 2c mov r11, r1
444: f0 2d mov r31, r0
446: ac 0e add r10, r28
448: bd 1e adc r11, r29
44a: 38 e2 ldi r19, 0x28 ; 40
44c: a3 0e add r10, r19
44e: b1 1c adc r11, r1
uint16_t v0a[20] = {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0};
uint16_t v1a[20] = {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0};
uint8_t p = 0;
while(1)
{
v0a[p] = a.get(0);
450: c9 56 subi r28, 0x69 ; 105
452: df 4f sbci r29, 0xFF ; 255
454: 88 81 ld r24, Y
456: c7 59 subi r28, 0x97 ; 151
458: d0 40 sbci r29, 0x00 ; 0
45a: 48 2f mov r20, r24
45c: 50 e0 ldi r21, 0x00 ; 0
_delay_ms(100);
}
uint16_t get(uint8_t pin) {
ADMUX &= ~((1<<MUX2) | (1<<MUX1) | (1<<MUX0));
45e: 87 b1 in r24, 0x07 ; 7
460: 88 7f andi r24, 0xF8 ; 248
462: 87 b9 out 0x07, r24 ; 7
ADMUX |= pin;
464: 87 b1 in r24, 0x07 ; 7
466: 87 b9 out 0x07, r24 ; 7
#else
//round up by default
__ticks_dc = (uint32_t)(ceil(fabs(__tmp)));
#endif
__builtin_avr_delay_cycles(__ticks_dc);
468: 95 e3 ldi r25, 0x35 ; 53
46a: 9a 95 dec r25
46c: f1 f7 brne .-4 ; 0x46a <__stack+0xb>
46e: 00 00 nop
//ADMUX = 0;
_delay_us(10);
ADCSRA |= (1<<ADSC);
470: 36 9a sbi 0x06, 6 ; 6
loop_until_bit_is_set(ADCSRA, ADIF);
472: 34 9b sbis 0x06, 4 ; 6
474: fe cf rjmp .-4 ; 0x472 <__stack+0x13>
//ADCSRA |= (1<<ADIF);
return ADCW;
476: 84 b1 in r24, 0x04 ; 4
478: 95 b1 in r25, 0x05 ; 5
47a: fa 01 movw r30, r20
47c: ee 0f add r30, r30
47e: ff 1f adc r31, r31
480: a1 e0 ldi r26, 0x01 ; 1
482: b0 e0 ldi r27, 0x00 ; 0
484: ac 0f add r26, r28
486: bd 1f adc r27, r29
488: ea 0f add r30, r26
48a: fb 1f adc r31, r27
48c: 91 a7 std Z+41, r25 ; 0x29
48e: 80 a7 std Z+40, r24 ; 0x28
void on() {
ADCSRA |= (1<<ADEN);
_delay_ms(100);
}
uint16_t get(uint8_t pin) {
ADMUX &= ~((1<<MUX2) | (1<<MUX1) | (1<<MUX0));
490: 87 b1 in r24, 0x07 ; 7
492: 88 7f andi r24, 0xF8 ; 248
494: 87 b9 out 0x07, r24 ; 7
ADMUX |= pin;
496: 38 9a sbi 0x07, 0 ; 7
498: b5 e3 ldi r27, 0x35 ; 53
49a: ba 95 dec r27
49c: f1 f7 brne .-4 ; 0x49a <__stack+0x3b>
49e: 00 00 nop
//ADMUX = 0;
_delay_us(10);
ADCSRA |= (1<<ADSC);
4a0: 36 9a sbi 0x06, 6 ; 6
loop_until_bit_is_set(ADCSRA, ADIF);
4a2: 34 9b sbis 0x06, 4 ; 6
4a4: fe cf rjmp .-4 ; 0x4a2 <__stack+0x43>
//ADCSRA |= (1<<ADIF);
return ADCW;
4a6: 84 b1 in r24, 0x04 ; 4
4a8: 95 b1 in r25, 0x05 ; 5
v1a[p] = a.get(1);
4aa: fa 01 movw r30, r20
4ac: ee 0f add r30, r30
4ae: ff 1f adc r31, r31
4b0: 21 e0 ldi r18, 0x01 ; 1
4b2: 30 e0 ldi r19, 0x00 ; 0
4b4: 2c 0f add r18, r28
4b6: 3d 1f adc r19, r29
4b8: e2 0f add r30, r18
4ba: f3 1f adc r31, r19
4bc: 91 83 std Z+1, r25 ; 0x01
4be: 80 83 st Z, r24
4c0: fe 01 movw r30, r28
4c2: b9 96 adiw r30, 0x29 ; 41
4c4: ce 55 subi r28, 0x5E ; 94
4c6: df 4f sbci r29, 0xFF ; 255
4c8: a8 81 ld r26, Y
4ca: c2 5a subi r28, 0xA2 ; 162
4cc: d0 40 sbci r29, 0x00 ; 0
4ce: cd 55 subi r28, 0x5D ; 93
4d0: df 4f sbci r29, 0xFF ; 255
4d2: b8 81 ld r27, Y
4d4: c3 5a subi r28, 0xA3 ; 163
4d6: d0 40 sbci r29, 0x00 ; 0
uint16_t v0s = 0;
uint16_t v1s = 0;
4d8: 00 e0 ldi r16, 0x00 ; 0
4da: 10 e0 ldi r17, 0x00 ; 0
uint8_t p = 0;
while(1)
{
v0a[p] = a.get(0);
v1a[p] = a.get(1);
uint16_t v0s = 0;
4dc: 20 e0 ldi r18, 0x00 ; 0
4de: 30 e0 ldi r19, 0x00 ; 0
uint16_t v1s = 0;
for (uint8_t i = 0; i < 20; i++)
{
v0s += v0a[i];
4e0: 81 91 ld r24, Z+
4e2: 91 91 ld r25, Z+
4e4: 28 0f add r18, r24
4e6: 39 1f adc r19, r25
v1s += v1a[i];
4e8: 8d 91 ld r24, X+
4ea: 9d 91 ld r25, X+
4ec: 08 0f add r16, r24
4ee: 19 1f adc r17, r25
{
v0a[p] = a.get(0);
v1a[p] = a.get(1);
uint16_t v0s = 0;
uint16_t v1s = 0;
for (uint8_t i = 0; i < 20; i++)
4f0: ea 15 cp r30, r10
4f2: fb 05 cpc r31, r11
4f4: a9 f7 brne .-22 ; 0x4e0 <__stack+0x81>
{
v0s += v0a[i];
v1s += v1a[i];
}
uint16_t v0 = v0s/20;
4f6: ad ec ldi r26, 0xCD ; 205
4f8: bc ec ldi r27, 0xCC ; 204
4fa: 0e 94 00 0b call 0x1600 ; 0x1600 <__umulhisi3>
4fe: 7c 01 movw r14, r24
500: f6 94 lsr r15
502: e7 94 ror r14
504: f6 94 lsr r15
506: e7 94 ror r14
508: f6 94 lsr r15
50a: e7 94 ror r14
50c: f6 94 lsr r15
50e: e7 94 ror r14
uint16_t v1 = v1s/20;
510: 98 01 movw r18, r16
512: 0e 94 00 0b call 0x1600 ; 0x1600 <__umulhisi3>
516: 6c 01 movw r12, r24
518: d6 94 lsr r13
51a: c7 94 ror r12
51c: d6 94 lsr r13
51e: c7 94 ror r12
520: d6 94 lsr r13
522: c7 94 ror r12
524: d6 94 lsr r13
526: c7 94 ror r12
p = (p + 1) % 20;
528: ca 01 movw r24, r20
52a: 01 96 adiw r24, 0x01 ; 1
52c: 64 e1 ldi r22, 0x14 ; 20
52e: 70 e0 ldi r23, 0x00 ; 0
530: 0e 94 ec 0a call 0x15d8 ; 0x15d8 <__divmodhi4>
534: c9 56 subi r28, 0x69 ; 105
536: df 4f sbci r29, 0xFF ; 255
538: 88 83 st Y, r24
53a: c7 59 subi r28, 0x97 ; 151
53c: d0 40 sbci r29, 0x00 ; 0
if(v0 > 1000 || v1 > 1000 || v0 < 5 || v1 < 5) {
53e: 39 ee ldi r19, 0xE9 ; 233
540: e3 16 cp r14, r19
542: 33 e0 ldi r19, 0x03 ; 3
544: f3 06 cpc r15, r19
546: 68 f4 brcc .+26 ; 0x562 <__stack+0x103>
548: 89 ee ldi r24, 0xE9 ; 233
54a: c8 16 cp r12, r24
54c: 83 e0 ldi r24, 0x03 ; 3
54e: d8 06 cpc r13, r24
550: 40 f4 brcc .+16 ; 0x562 <__stack+0x103>
552: 95 e0 ldi r25, 0x05 ; 5
554: e9 16 cp r14, r25
556: f1 04 cpc r15, r1
558: 20 f0 brcs .+8 ; 0x562 <__stack+0x103>
55a: a5 e0 ldi r26, 0x05 ; 5
55c: ca 16 cp r12, r26
55e: d1 04 cpc r13, r1
560: 68 f4 brcc .+26 ; 0x57c <__stack+0x11d>
namespace avrlib {
struct portb
{
static uint8_t port() { return PORTB; }
static void port(uint8_t v) { PORTB = v; }
562: c4 9a sbi 0x18, 4 ; 24
static uint8_t pin() { return PINB; }
static void pin(uint8_t v) { PINB = v; }
static uint8_t dir() { return DDRB; }
static void dir(uint8_t v) { DDRB = v; }
564: bc 9a sbi 0x17, 4 ; 23
}
}
//out1::toggle();
}
void stop() {
pwm[0] = 0; pwm[1] = 0; pwm[2] = 0; pwm[3] = 0; pwm[4] = 0; pwm[5] = 0; pwm[6] = 0;
566: 10 92 e0 01 sts 0x01E0, r1
56a: 10 92 e1 01 sts 0x01E1, r1
56e: 10 92 e2 01 sts 0x01E2, r1
572: 10 92 e3 01 sts 0x01E3, r1
576: 10 92 e4 01 sts 0x01E4, r1
57a: ff cf rjmp .-2 ; 0x57a <__stack+0x11b>
}
float convert(uint16_t v, uint8_t pin) {
float c1 = this->table[pin][0];
57c: e3 ea ldi r30, 0xA3 ; 163
57e: f1 e0 ldi r31, 0x01 ; 1
580: 60 81 ld r22, Z
582: 71 81 ldd r23, Z+1 ; 0x01
584: 80 e0 ldi r24, 0x00 ; 0
586: 90 e0 ldi r25, 0x00 ; 0
588: 0e 94 d3 09 call 0x13a6 ; 0x13a6 <__floatunsisf>
58c: 36 2e mov r3, r22
58e: 27 2e mov r2, r23
590: c6 57 subi r28, 0x76 ; 118
592: df 4f sbci r29, 0xFF ; 255
594: 88 83 st Y, r24
596: ca 58 subi r28, 0x8A ; 138
598: d0 40 sbci r29, 0x00 ; 0
59a: c5 57 subi r28, 0x75 ; 117
59c: df 4f sbci r29, 0xFF ; 255
59e: 98 83 st Y, r25
5a0: cb 58 subi r28, 0x8B ; 139
5a2: d0 40 sbci r29, 0x00 ; 0
float v1 = this->table[pin][1];
5a4: a5 ea ldi r26, 0xA5 ; 165
5a6: b1 e0 ldi r27, 0x01 ; 1
5a8: 6d 91 ld r22, X+
5aa: 7c 91 ld r23, X
5ac: 80 e0 ldi r24, 0x00 ; 0
5ae: 90 e0 ldi r25, 0x00 ; 0
5b0: 0e 94 d3 09 call 0x13a6 ; 0x13a6 <__floatunsisf>
5b4: 06 2f mov r16, r22
5b6: 17 2f mov r17, r23
5b8: 98 2e mov r9, r24
5ba: 89 2e mov r8, r25
float c2 = this->table[pin][2];
5bc: e7 ea ldi r30, 0xA7 ; 167
5be: f1 e0 ldi r31, 0x01 ; 1
5c0: 60 81 ld r22, Z
5c2: 71 81 ldd r23, Z+1 ; 0x01
5c4: 80 e0 ldi r24, 0x00 ; 0
5c6: 90 e0 ldi r25, 0x00 ; 0
5c8: 0e 94 d3 09 call 0x13a6 ; 0x13a6 <__floatunsisf>
5cc: 9b 01 movw r18, r22
5ce: ac 01 movw r20, r24
float v2 = this->table[pin][3];
float m = ((c1 - c2) / (v1 - v2));
5d0: c6 57 subi r28, 0x76 ; 118
5d2: df 4f sbci r29, 0xFF ; 255
5d4: f8 81 ld r31, Y
5d6: ca 58 subi r28, 0x8A ; 138
5d8: d0 40 sbci r29, 0x00 ; 0
5da: c5 57 subi r28, 0x75 ; 117
5dc: df 4f sbci r29, 0xFF ; 255
5de: e8 81 ld r30, Y
5e0: cb 58 subi r28, 0x8B ; 139
5e2: d0 40 sbci r29, 0x00 ; 0
5e4: 63 2d mov r22, r3
5e6: 72 2d mov r23, r2
5e8: 8f 2f mov r24, r31
5ea: 9e 2f mov r25, r30
5ec: 0e 94 d6 08 call 0x11ac ; 0x11ac <__subsf3>
5f0: 2b 01 movw r4, r22
5f2: 3c 01 movw r6, r24
float convert(uint16_t v, uint8_t pin) {
float c1 = this->table[pin][0];
float v1 = this->table[pin][1];
float c2 = this->table[pin][2];
float v2 = this->table[pin][3];
5f4: 60 91 a9 01 lds r22, 0x01A9
5f8: 70 91 aa 01 lds r23, 0x01AA
5fc: 80 e0 ldi r24, 0x00 ; 0
5fe: 90 e0 ldi r25, 0x00 ; 0
600: 0e 94 d3 09 call 0x13a6 ; 0x13a6 <__floatunsisf>
604: 9b 01 movw r18, r22
606: ac 01 movw r20, r24
float m = ((c1 - c2) / (v1 - v2));
608: 60 2f mov r22, r16
60a: 71 2f mov r23, r17
60c: 89 2d mov r24, r9
60e: 98 2d mov r25, r8
610: 0e 94 d6 08 call 0x11ac ; 0x11ac <__subsf3>
614: 9b 01 movw r18, r22
616: ac 01 movw r20, r24
618: c3 01 movw r24, r6
61a: b2 01 movw r22, r4
61c: 0e 94 3f 09 call 0x127e ; 0x127e <__divsf3>
620: 56 2e mov r5, r22
622: 47 2e mov r4, r23
624: 68 2e mov r6, r24
626: 79 2e mov r7, r25
628: 86 2f mov r24, r22
62a: 94 2d mov r25, r4
62c: a6 2d mov r26, r6
62e: b7 2d mov r27, r7
630: c4 57 subi r28, 0x74 ; 116
632: df 4f sbci r29, 0xFF ; 255
634: 88 83 st Y, r24
636: 99 83 std Y+1, r25 ; 0x01
638: aa 83 std Y+2, r26 ; 0x02
63a: bb 83 std Y+3, r27 ; 0x03
63c: cc 58 subi r28, 0x8C ; 140
63e: d0 40 sbci r29, 0x00 ; 0
return (m * (float)v) + (-m * v1) + c1;
640: b7 01 movw r22, r14
642: 80 e0 ldi r24, 0x00 ; 0
644: 90 e0 ldi r25, 0x00 ; 0
646: 0e 94 d3 09 call 0x13a6 ; 0x13a6 <__floatunsisf>
64a: 9b 01 movw r18, r22
64c: ac 01 movw r20, r24
64e: 65 2d mov r22, r5
650: 74 2d mov r23, r4
652: 86 2d mov r24, r6
654: 97 2d mov r25, r7
656: 0e 94 89 0a call 0x1512 ; 0x1512 <__mulsf3>
65a: 2b 01 movw r4, r22
65c: 3c 01 movw r6, r24
65e: c4 57 subi r28, 0x74 ; 116
660: df 4f sbci r29, 0xFF ; 255
662: 28 81 ld r18, Y
664: 39 81 ldd r19, Y+1 ; 0x01
666: 4a 81 ldd r20, Y+2 ; 0x02
668: 5b 81 ldd r21, Y+3 ; 0x03
66a: cc 58 subi r28, 0x8C ; 140
66c: d0 40 sbci r29, 0x00 ; 0
66e: 50 58 subi r21, 0x80 ; 128
670: 60 2f mov r22, r16
672: 71 2f mov r23, r17
674: 89 2d mov r24, r9
676: 98 2d mov r25, r8
678: 0e 94 89 0a call 0x1512 ; 0x1512 <__mulsf3>
67c: 9b 01 movw r18, r22
67e: ac 01 movw r20, r24
680: c3 01 movw r24, r6
682: b2 01 movw r22, r4
684: 0e 94 d7 08 call 0x11ae ; 0x11ae <__addsf3>
688: 9b 01 movw r18, r22
68a: ac 01 movw r20, r24
68c: c6 57 subi r28, 0x76 ; 118
68e: df 4f sbci r29, 0xFF ; 255
690: f8 81 ld r31, Y
692: ca 58 subi r28, 0x8A ; 138
694: d0 40 sbci r29, 0x00 ; 0
696: c5 57 subi r28, 0x75 ; 117
698: df 4f sbci r29, 0xFF ; 255
69a: e8 81 ld r30, Y
69c: cb 58 subi r28, 0x8B ; 139
69e: d0 40 sbci r29, 0x00 ; 0
6a0: 63 2d mov r22, r3
6a2: 72 2d mov r23, r2
6a4: 8f 2f mov r24, r31
6a6: 9e 2f mov r25, r30
6a8: 0e 94 d7 08 call 0x11ae ; 0x11ae <__addsf3>
6ac: c4 57 subi r28, 0x74 ; 116
6ae: df 4f sbci r29, 0xFF ; 255
6b0: 68 83 st Y, r22
6b2: cc 58 subi r28, 0x8C ; 140
6b4: d0 40 sbci r29, 0x00 ; 0
6b6: c8 56 subi r28, 0x68 ; 104
6b8: df 4f sbci r29, 0xFF ; 255
6ba: 78 83 st Y, r23
6bc: c8 59 subi r28, 0x98 ; 152
6be: d0 40 sbci r29, 0x00 ; 0
6c0: c7 56 subi r28, 0x67 ; 103
6c2: df 4f sbci r29, 0xFF ; 255
6c4: 88 83 st Y, r24
6c6: c9 59 subi r28, 0x99 ; 153
6c8: d0 40 sbci r29, 0x00 ; 0
6ca: c6 56 subi r28, 0x66 ; 102
6cc: df 4f sbci r29, 0xFF ; 255
6ce: 98 83 st Y, r25
6d0: ca 59 subi r28, 0x9A ; 154
6d2: d0 40 sbci r29, 0x00 ; 0
loop_until_bit_is_set(ADCSRA, ADIF);
//ADCSRA |= (1<<ADIF);
return ADCW;
}
float convert(uint16_t v, uint8_t pin) {
float c1 = this->table[pin][0];
6d4: 60 91 ab 01 lds r22, 0x01AB
6d8: 70 91 ac 01 lds r23, 0x01AC
6dc: 80 e0 ldi r24, 0x00 ; 0
6de: 90 e0 ldi r25, 0x00 ; 0
6e0: 0e 94 d3 09 call 0x13a6 ; 0x13a6 <__floatunsisf>
6e4: 36 2e mov r3, r22
6e6: 27 2e mov r2, r23
6e8: c6 57 subi r28, 0x76 ; 118
6ea: df 4f sbci r29, 0xFF ; 255
6ec: 88 83 st Y, r24
6ee: ca 58 subi r28, 0x8A ; 138
6f0: d0 40 sbci r29, 0x00 ; 0
6f2: c5 57 subi r28, 0x75 ; 117
6f4: df 4f sbci r29, 0xFF ; 255
6f6: 98 83 st Y, r25
6f8: cb 58 subi r28, 0x8B ; 139
6fa: d0 40 sbci r29, 0x00 ; 0
float v1 = this->table[pin][1];
6fc: 60 91 ad 01 lds r22, 0x01AD
700: 70 91 ae 01 lds r23, 0x01AE
704: 80 e0 ldi r24, 0x00 ; 0
706: 90 e0 ldi r25, 0x00 ; 0
708: 0e 94 d3 09 call 0x13a6 ; 0x13a6 <__floatunsisf>
70c: 06 2f mov r16, r22
70e: 17 2f mov r17, r23
710: 98 2e mov r9, r24
712: 89 2e mov r8, r25
float c2 = this->table[pin][2];
714: 60 91 af 01 lds r22, 0x01AF
718: 70 91 b0 01 lds r23, 0x01B0
71c: 80 e0 ldi r24, 0x00 ; 0
71e: 90 e0 ldi r25, 0x00 ; 0
720: 0e 94 d3 09 call 0x13a6 ; 0x13a6 <__floatunsisf>
724: 9b 01 movw r18, r22
726: ac 01 movw r20, r24
float v2 = this->table[pin][3];
float m = ((c1 - c2) / (v1 - v2));
728: c6 57 subi r28, 0x76 ; 118
72a: df 4f sbci r29, 0xFF ; 255
72c: f8 81 ld r31, Y
72e: ca 58 subi r28, 0x8A ; 138
730: d0 40 sbci r29, 0x00 ; 0
732: c5 57 subi r28, 0x75 ; 117
734: df 4f sbci r29, 0xFF ; 255
736: e8 81 ld r30, Y
738: cb 58 subi r28, 0x8B ; 139
73a: d0 40 sbci r29, 0x00 ; 0
73c: 63 2d mov r22, r3
73e: 72 2d mov r23, r2
740: 8f 2f mov r24, r31
742: 9e 2f mov r25, r30
744: 0e 94 d6 08 call 0x11ac ; 0x11ac <__subsf3>
748: 2b 01 movw r4, r22
74a: 3c 01 movw r6, r24
float convert(uint16_t v, uint8_t pin) {
float c1 = this->table[pin][0];
float v1 = this->table[pin][1];
float c2 = this->table[pin][2];
float v2 = this->table[pin][3];
74c: 60 91 b1 01 lds r22, 0x01B1
750: 70 91 b2 01 lds r23, 0x01B2
754: 80 e0 ldi r24, 0x00 ; 0
756: 90 e0 ldi r25, 0x00 ; 0
758: 0e 94 d3 09 call 0x13a6 ; 0x13a6 <__floatunsisf>
75c: 9b 01 movw r18, r22
75e: ac 01 movw r20, r24
float m = ((c1 - c2) / (v1 - v2));
760: 60 2f mov r22, r16
762: 71 2f mov r23, r17
764: 89 2d mov r24, r9
766: 98 2d mov r25, r8
768: 0e 94 d6 08 call 0x11ac ; 0x11ac <__subsf3>
76c: 9b 01 movw r18, r22
76e: ac 01 movw r20, r24
770: c3 01 movw r24, r6
772: b2 01 movw r22, r4
774: 0e 94 3f 09 call 0x127e ; 0x127e <__divsf3>
778: 56 2e mov r5, r22
77a: 47 2e mov r4, r23
77c: 68 2e mov r6, r24
77e: 79 2e mov r7, r25
780: 86 2f mov r24, r22
782: 94 2d mov r25, r4
784: a6 2d mov r26, r6
786: b7 2d mov r27, r7
788: c0 57 subi r28, 0x70 ; 112
78a: df 4f sbci r29, 0xFF ; 255
78c: 88 83 st Y, r24
78e: 99 83 std Y+1, r25 ; 0x01
790: aa 83 std Y+2, r26 ; 0x02
792: bb 83 std Y+3, r27 ; 0x03
794: c0 59 subi r28, 0x90 ; 144
796: d0 40 sbci r29, 0x00 ; 0
return (m * (float)v) + (-m * v1) + c1;
798: b6 01 movw r22, r12
79a: 80 e0 ldi r24, 0x00 ; 0
79c: 90 e0 ldi r25, 0x00 ; 0
79e: 0e 94 d3 09 call 0x13a6 ; 0x13a6 <__floatunsisf>
7a2: 9b 01 movw r18, r22
7a4: ac 01 movw r20, r24
7a6: 65 2d mov r22, r5
7a8: 74 2d mov r23, r4
7aa: 86 2d mov r24, r6
7ac: 97 2d mov r25, r7
7ae: 0e 94 89 0a call 0x1512 ; 0x1512 <__mulsf3>
7b2: 2b 01 movw r4, r22
7b4: 3c 01 movw r6, r24
7b6: c0 57 subi r28, 0x70 ; 112
7b8: df 4f sbci r29, 0xFF ; 255
7ba: 28 81 ld r18, Y
7bc: 39 81 ldd r19, Y+1 ; 0x01
7be: 4a 81 ldd r20, Y+2 ; 0x02
7c0: 5b 81 ldd r21, Y+3 ; 0x03
7c2: c0 59 subi r28, 0x90 ; 144
7c4: d0 40 sbci r29, 0x00 ; 0
7c6: 50 58 subi r21, 0x80 ; 128
7c8: 60 2f mov r22, r16
7ca: 71 2f mov r23, r17
7cc: 89 2d mov r24, r9
7ce: 98 2d mov r25, r8
7d0: 0e 94 89 0a call 0x1512 ; 0x1512 <__mulsf3>
7d4: 9b 01 movw r18, r22
7d6: ac 01 movw r20, r24
7d8: c3 01 movw r24, r6
7da: b2 01 movw r22, r4
7dc: 0e 94 d7 08 call 0x11ae ; 0x11ae <__addsf3>
7e0: 9b 01 movw r18, r22
7e2: ac 01 movw r20, r24
7e4: c6 57 subi r28, 0x76 ; 118
7e6: df 4f sbci r29, 0xFF ; 255
7e8: f8 81 ld r31, Y
7ea: ca 58 subi r28, 0x8A ; 138
7ec: d0 40 sbci r29, 0x00 ; 0
7ee: c5 57 subi r28, 0x75 ; 117
7f0: df 4f sbci r29, 0xFF ; 255
7f2: e8 81 ld r30, Y
7f4: cb 58 subi r28, 0x8B ; 139
7f6: d0 40 sbci r29, 0x00 ; 0
7f8: 63 2d mov r22, r3
7fa: 72 2d mov r23, r2
7fc: 8f 2f mov r24, r31
7fe: 9e 2f mov r25, r30
800: 0e 94 d7 08 call 0x11ae ; 0x11ae <__addsf3>
804: c0 57 subi r28, 0x70 ; 112
806: df 4f sbci r29, 0xFF ; 255
808: 68 83 st Y, r22
80a: c0 59 subi r28, 0x90 ; 144
80c: d0 40 sbci r29, 0x00 ; 0
80e: c5 56 subi r28, 0x65 ; 101
810: df 4f sbci r29, 0xFF ; 255
812: 78 83 st Y, r23
814: cb 59 subi r28, 0x9B ; 155
816: d0 40 sbci r29, 0x00 ; 0
818: c4 56 subi r28, 0x64 ; 100
81a: df 4f sbci r29, 0xFF ; 255
81c: 88 83 st Y, r24
81e: cc 59 subi r28, 0x9C ; 156
820: d0 40 sbci r29, 0x00 ; 0
822: c3 56 subi r28, 0x63 ; 99
824: df 4f sbci r29, 0xFF ; 255
826: 98 83 st Y, r25
828: cd 59 subi r28, 0x9D ; 157
82a: d0 40 sbci r29, 0x00 ; 0
o.stop();
while(true) {};
}
float t0 = a.convert(v0, 0);
float t1 = a.convert(v1, 1);
float tm = (t0+t1)/2;
82c: 76 2f mov r23, r22
82e: c5 56 subi r28, 0x65 ; 101
830: df 4f sbci r29, 0xFF ; 255
832: 68 81 ld r22, Y
834: cb 59 subi r28, 0x9B ; 155
836: d0 40 sbci r29, 0x00 ; 0
838: 98 2f mov r25, r24
83a: c3 56 subi r28, 0x63 ; 99
83c: df 4f sbci r29, 0xFF ; 255
83e: 88 81 ld r24, Y
840: cd 59 subi r28, 0x9D ; 157
842: d0 40 sbci r29, 0x00 ; 0
844: 27 2f mov r18, r23
846: 36 2f mov r19, r22
848: 49 2f mov r20, r25
84a: 58 2f mov r21, r24
84c: c4 57 subi r28, 0x74 ; 116
84e: df 4f sbci r29, 0xFF ; 255
850: b8 81 ld r27, Y
852: cc 58 subi r28, 0x8C ; 140
854: d0 40 sbci r29, 0x00 ; 0
856: c8 56 subi r28, 0x68 ; 104
858: df 4f sbci r29, 0xFF ; 255
85a: a8 81 ld r26, Y
85c: c8 59 subi r28, 0x98 ; 152
85e: d0 40 sbci r29, 0x00 ; 0
860: c7 56 subi r28, 0x67 ; 103
862: df 4f sbci r29, 0xFF ; 255
864: f8 81 ld r31, Y
866: c9 59 subi r28, 0x99 ; 153
868: d0 40 sbci r29, 0x00 ; 0
86a: c6 56 subi r28, 0x66 ; 102
86c: df 4f sbci r29, 0xFF ; 255
86e: e8 81 ld r30, Y
870: ca 59 subi r28, 0x9A ; 154
872: d0 40 sbci r29, 0x00 ; 0
874: 6b 2f mov r22, r27
876: 7a 2f mov r23, r26
878: 8f 2f mov r24, r31
87a: 9e 2f mov r25, r30
87c: 0e 94 d7 08 call 0x11ae ; 0x11ae <__addsf3>
880: 20 e0 ldi r18, 0x00 ; 0
882: 30 e0 ldi r19, 0x00 ; 0
884: 40 e0 ldi r20, 0x00 ; 0
886: 5f e3 ldi r21, 0x3F ; 63
888: 0e 94 89 0a call 0x1512 ; 0x1512 <__mulsf3>
88c: c2 56 subi r28, 0x62 ; 98
88e: df 4f sbci r29, 0xFF ; 255
890: 68 83 st Y, r22
892: ce 59 subi r28, 0x9E ; 158
894: d0 40 sbci r29, 0x00 ; 0
896: c1 56 subi r28, 0x61 ; 97
898: df 4f sbci r29, 0xFF ; 255
89a: 78 83 st Y, r23
89c: cf 59 subi r28, 0x9F ; 159
89e: d0 40 sbci r29, 0x00 ; 0
8a0: c0 56 subi r28, 0x60 ; 96
8a2: df 4f sbci r29, 0xFF ; 255
8a4: 88 83 st Y, r24
8a6: c0 5a subi r28, 0xA0 ; 160
8a8: d0 40 sbci r29, 0x00 ; 0
8aa: cf 55 subi r28, 0x5F ; 95
8ac: df 4f sbci r29, 0xFF ; 255
8ae: 98 83 st Y, r25
8b0: c1 5a subi r28, 0xA1 ; 161
8b2: d0 40 sbci r29, 0x00 ; 0
}
void send(uint8_t wert) {
uart_putchar(wert);
}
int16_t readTemp() {
int16_t t = this->temp;
8b4: e4 ed ldi r30, 0xD4 ; 212
8b6: f1 e0 ldi r31, 0x01 ; 1
8b8: 80 81 ld r24, Z
8ba: 91 81 ldd r25, Z+1 ; 0x01
this->temp = -1;
8bc: 2f ef ldi r18, 0xFF ; 255
8be: 3f ef ldi r19, 0xFF ; 255
8c0: 31 83 std Z+1, r19 ; 0x01
8c2: 20 83 st Z, r18
int16_t temp = r.readTemp();
if(temp != -1) {
8c4: 8f 3f cpi r24, 0xFF ; 255
8c6: ff ef ldi r31, 0xFF ; 255
8c8: 9f 07 cpc r25, r31
8ca: 31 f0 breq .+12 ; 0x8d8 <__stack+0x479>
target_temp = temp;
8cc: cc 56 subi r28, 0x6C ; 108
8ce: df 4f sbci r29, 0xFF ; 255
8d0: 99 83 std Y+1, r25 ; 0x01
8d2: 88 83 st Y, r24
8d4: c4 59 subi r28, 0x94 ; 148
8d6: d0 40 sbci r29, 0x00 ; 0
return t;
}
int8_t readMotor() {
int8_t m = this->motor;
8d8: e6 ed ldi r30, 0xD6 ; 214
8da: f1 e0 ldi r31, 0x01 ; 1
8dc: 80 81 ld r24, Z
this->motor = -1;
8de: 9f ef ldi r25, 0xFF ; 255
8e0: 90 83 st Z, r25
}
int8_t motor = r.readMotor();
if(motor != -1) {
8e2: 8f 3f cpi r24, 0xFF ; 255
8e4: 29 f0 breq .+10 ; 0x8f0 <__stack+0x491>
target_motor = motor;
8e6: ca 56 subi r28, 0x6A ; 106
8e8: df 4f sbci r29, 0xFF ; 255
8ea: 88 83 st Y, r24
8ec: c6 59 subi r28, 0x96 ; 150
8ee: d0 40 sbci r29, 0x00 ; 0
}
pwm_value = (target_temp+5) - tm;
8f0: cc 56 subi r28, 0x6C ; 108
8f2: df 4f sbci r29, 0xFF ; 255
8f4: 68 81 ld r22, Y
8f6: 79 81 ldd r23, Y+1 ; 0x01
8f8: c4 59 subi r28, 0x94 ; 148
8fa: d0 40 sbci r29, 0x00 ; 0
8fc: 6b 5f subi r22, 0xFB ; 251
8fe: 7f 4f sbci r23, 0xFF ; 255
900: 88 27 eor r24, r24
902: 77 fd sbrc r23, 7
904: 80 95 com r24
906: 98 2f mov r25, r24
908: 0e 94 d5 09 call 0x13aa ; 0x13aa <__floatsisf>
90c: c2 56 subi r28, 0x62 ; 98
90e: df 4f sbci r29, 0xFF ; 255
910: b8 81 ld r27, Y
912: ce 59 subi r28, 0x9E ; 158
914: d0 40 sbci r29, 0x00 ; 0
916: c1 56 subi r28, 0x61 ; 97
918: df 4f sbci r29, 0xFF ; 255
91a: a8 81 ld r26, Y
91c: cf 59 subi r28, 0x9F ; 159
91e: d0 40 sbci r29, 0x00 ; 0
920: c0 56 subi r28, 0x60 ; 96
922: df 4f sbci r29, 0xFF ; 255
924: f8 81 ld r31, Y
926: c0 5a subi r28, 0xA0 ; 160
928: d0 40 sbci r29, 0x00 ; 0
92a: cf 55 subi r28, 0x5F ; 95
92c: df 4f sbci r29, 0xFF ; 255
92e: e8 81 ld r30, Y
930: c1 5a subi r28, 0xA1 ; 161
932: d0 40 sbci r29, 0x00 ; 0
934: 2b 2f mov r18, r27
936: 3a 2f mov r19, r26
938: 4f 2f mov r20, r31
93a: 5e 2f mov r21, r30
93c: 0e 94 d6 08 call 0x11ac ; 0x11ac <__subsf3>
940: 96 2e mov r9, r22
942: 87 2e mov r8, r23
944: 78 2e mov r7, r24
946: 69 2e mov r6, r25
void setPwm(uint8_t ausg, float val) {
if(ausg < 0)
ausg = 0;
if(ausg > 5)
ausg = 5;
if(val < 0)
948: 20 e0 ldi r18, 0x00 ; 0
94a: 30 e0 ldi r19, 0x00 ; 0
94c: a9 01 movw r20, r18
94e: 0e 94 3b 09 call 0x1276 ; 0x1276 <__cmpsf2>
952: 88 23 and r24, r24
954: 8c f0 brlt .+34 ; 0x978 <__stack+0x519>
val = 0;
if(val > 20)
956: 20 e0 ldi r18, 0x00 ; 0
958: 30 e0 ldi r19, 0x00 ; 0
95a: 40 ea ldi r20, 0xA0 ; 160
95c: 51 e4 ldi r21, 0x41 ; 65
95e: 69 2d mov r22, r9
960: 78 2d mov r23, r8
962: 87 2d mov r24, r7
964: 96 2d mov r25, r6
966: 0e 94 85 0a call 0x150a ; 0x150a <__gesf2>
96a: 18 16 cp r1, r24
96c: 54 f0 brlt .+20 ; 0x982 <__stack+0x523>
96e: 39 2d mov r19, r9
970: 28 2d mov r18, r8
972: 97 2d mov r25, r7
974: 86 2d mov r24, r6
976: 09 c0 rjmp .+18 ; 0x98a <__stack+0x52b>
if(ausg < 0)
ausg = 0;
if(ausg > 5)
ausg = 5;
if(val < 0)
val = 0;
978: 30 e0 ldi r19, 0x00 ; 0
97a: 20 e0 ldi r18, 0x00 ; 0
97c: 90 e0 ldi r25, 0x00 ; 0
97e: 80 e0 ldi r24, 0x00 ; 0
980: 04 c0 rjmp .+8 ; 0x98a <__stack+0x52b>
if(val > 20)
val = 20;
982: 30 e0 ldi r19, 0x00 ; 0
984: 20 e0 ldi r18, 0x00 ; 0
986: 90 ea ldi r25, 0xA0 ; 160
988: 81 e4 ldi r24, 0x41 ; 65
this->pwm[ausg] = (uint8_t)val;
98a: 48 2f mov r20, r24
98c: 63 2f mov r22, r19
98e: 72 2f mov r23, r18
990: 89 2f mov r24, r25
992: 94 2f mov r25, r20
994: 0e 94 a7 09 call 0x134e ; 0x134e <__fixunssfsi>
998: 60 93 de 01 sts 0x01DE, r22
o.setPwm(0, pwm_value);
o.setPwm(1, target_motor);
99c: ca 56 subi r28, 0x6A ; 106
99e: df 4f sbci r29, 0xFF ; 255
9a0: 28 81 ld r18, Y
9a2: c6 59 subi r28, 0x96 ; 150
9a4: d0 40 sbci r29, 0x00 ; 0
9a6: 62 2f mov r22, r18
9a8: 77 27 eor r23, r23
9aa: 67 fd sbrc r22, 7
9ac: 70 95 com r23
9ae: 87 2f mov r24, r23
9b0: 97 2f mov r25, r23
9b2: 0e 94 d5 09 call 0x13aa ; 0x13aa <__floatsisf>
9b6: 26 2e mov r2, r22
9b8: 37 2e mov r3, r23
9ba: 08 2f mov r16, r24
9bc: 19 2f mov r17, r25
9be: 46 2e mov r4, r22
9c0: 57 2e mov r5, r23
9c2: c6 57 subi r28, 0x76 ; 118
9c4: df 4f sbci r29, 0xFF ; 255
9c6: 88 83 st Y, r24
9c8: ca 58 subi r28, 0x8A ; 138
9ca: d0 40 sbci r29, 0x00 ; 0
9cc: c5 57 subi r28, 0x75 ; 117
9ce: df 4f sbci r29, 0xFF ; 255
9d0: 98 83 st Y, r25
9d2: cb 58 subi r28, 0x8B ; 139
9d4: d0 40 sbci r29, 0x00 ; 0
void setPwm(uint8_t ausg, float val) {
if(ausg < 0)
ausg = 0;
if(ausg > 5)
ausg = 5;
if(val < 0)
9d6: 20 e0 ldi r18, 0x00 ; 0
9d8: 30 e0 ldi r19, 0x00 ; 0
9da: a9 01 movw r20, r18
9dc: 0e 94 3b 09 call 0x1276 ; 0x1276 <__cmpsf2>
9e0: 88 23 and r24, r24
9e2: 0c f4 brge .+2 ; 0x9e6 <__stack+0x587>
9e4: 39 c2 rjmp .+1138 ; 0xe58 <__stack+0x9f9>
val = 0;
if(val > 20)
9e6: 20 e0 ldi r18, 0x00 ; 0
9e8: 30 e0 ldi r19, 0x00 ; 0
9ea: 40 ea ldi r20, 0xA0 ; 160
9ec: 51 e4 ldi r21, 0x41 ; 65
9ee: 62 2d mov r22, r2
9f0: 73 2d mov r23, r3
9f2: 80 2f mov r24, r16
9f4: 91 2f mov r25, r17
9f6: 0e 94 85 0a call 0x150a ; 0x150a <__gesf2>
9fa: 18 16 cp r1, r24
9fc: 0c f4 brge .+2 ; 0xa00 <__stack+0x5a1>
9fe: 39 c2 rjmp .+1138 ; 0xe72 <__stack+0xa13>
a00: 46 c2 rjmp .+1164 ; 0xe8e <__stack+0xa2f>
namespace avrlib {
struct portb
{
static uint8_t port() { return PORTB; }
static void port(uint8_t v) { PORTB = v; }
a02: c3 9a sbi 0x18, 3 ; 24
static uint8_t pin() { return PINB; }
static void pin(uint8_t v) { PINB = v; }
static uint8_t dir() { return DDRB; }
static void dir(uint8_t v) { DDRB = v; }
a04: bb 9a sbi 0x17, 3 ; 23
UBRRL = (F_CPU / (baudrate * 16L) - 1);
sei();
}
uint8_t uart_putchar(uint8_t c) {
led.on(led.YELLOW);
loop_until_bit_is_set(UCSRA, UDRE); //Ausgabe des Zeichens
a06: 5d 9b sbis 0x0b, 5 ; 11
a08: fe cf rjmp .-4 ; 0xa06 <__stack+0x5a7>
UDR = c;
a0a: 8c b9 out 0x0c, r24 ; 12
namespace avrlib {
struct portb
{
static uint8_t port() { return PORTB; }
static void port(uint8_t v) { PORTB = v; }
a0c: c3 98 cbi 0x18, 3 ; 24
static uint8_t pin() { return PINB; }
static void pin(uint8_t v) { PINB = v; }
static uint8_t dir() { return DDRB; }
static void dir(uint8_t v) { DDRB = v; }
a0e: bb 9a sbi 0x17, 3 ; 23
init();
this->led = l;
send("Uart done!\n");
}
void send(const char *text) {
while (*text)
a10: 81 91 ld r24, Z+
a12: 81 11 cpse r24, r1
a14: f6 cf rjmp .-20 ; 0xa02 <__stack+0x5a3>
char pw[11]; r.send("pwm="); r.send(dtostrf(pwm_value, 10, 2, pw)); r.send(";");
a16: 8e 01 movw r16, r28
a18: 03 58 subi r16, 0x83 ; 131
a1a: 1f 4f sbci r17, 0xFF ; 255
a1c: 22 e0 ldi r18, 0x02 ; 2
a1e: 4a e0 ldi r20, 0x0A ; 10
a20: 69 2d mov r22, r9
a22: 78 2d mov r23, r8
a24: 87 2d mov r24, r7
a26: 96 2d mov r25, r6
a28: 0e 94 26 0b call 0x164c ; 0x164c <dtostrf>
a2c: dc 01 movw r26, r24
a2e: 2c 91 ld r18, X
a30: 22 23 and r18, r18
a32: 61 f0 breq .+24 ; 0xa4c <__stack+0x5ed>
l.off(l.YELLOW);
r.send("#### End Bootup ###########################################\n");
l.on(l.GREEN);
}
int main(void)
a34: fc 01 movw r30, r24
a36: 31 96 adiw r30, 0x01 ; 1
namespace avrlib {
struct portb
{
static uint8_t port() { return PORTB; }
static void port(uint8_t v) { PORTB = v; }
a38: c3 9a sbi 0x18, 3 ; 24
static uint8_t pin() { return PINB; }
static void pin(uint8_t v) { PINB = v; }
static uint8_t dir() { return DDRB; }
static void dir(uint8_t v) { DDRB = v; }
a3a: bb 9a sbi 0x17, 3 ; 23
UBRRL = (F_CPU / (baudrate * 16L) - 1);
sei();
}
uint8_t uart_putchar(uint8_t c) {
led.on(led.YELLOW);
loop_until_bit_is_set(UCSRA, UDRE); //Ausgabe des Zeichens
a3c: 5d 9b sbis 0x0b, 5 ; 11
a3e: fe cf rjmp .-4 ; 0xa3c <__stack+0x5dd>
UDR = c;
a40: 2c b9 out 0x0c, r18 ; 12
namespace avrlib {
struct portb
{
static uint8_t port() { return PORTB; }
static void port(uint8_t v) { PORTB = v; }
a42: c3 98 cbi 0x18, 3 ; 24
static uint8_t pin() { return PINB; }
static void pin(uint8_t v) { PINB = v; }
static uint8_t dir() { return DDRB; }
static void dir(uint8_t v) { DDRB = v; }
a44: bb 9a sbi 0x17, 3 ; 23
init();
this->led = l;
send("Uart done!\n");
}
void send(const char *text) {
while (*text)
a46: 21 91 ld r18, Z+
a48: 21 11 cpse r18, r1
a4a: f6 cf rjmp .-20 ; 0xa38 <__stack+0x5d9>
namespace avrlib {
struct portb
{
static uint8_t port() { return PORTB; }
static void port(uint8_t v) { PORTB = v; }
a4c: c3 9a sbi 0x18, 3 ; 24
static uint8_t pin() { return PINB; }
static void pin(uint8_t v) { PINB = v; }
static uint8_t dir() { return DDRB; }
static void dir(uint8_t v) { DDRB = v; }
a4e: bb 9a sbi 0x17, 3 ; 23
UBRRL = (F_CPU / (baudrate * 16L) - 1);
sei();
}
uint8_t uart_putchar(uint8_t c) {
led.on(led.YELLOW);
loop_until_bit_is_set(UCSRA, UDRE); //Ausgabe des Zeichens
a50: 5d 9b sbis 0x0b, 5 ; 11
a52: fe cf rjmp .-4 ; 0xa50 <__stack+0x5f1>
UDR = c;
a54: 8b e3 ldi r24, 0x3B ; 59
a56: 8c b9 out 0x0c, r24 ; 12
namespace avrlib {
struct portb
{
static uint8_t port() { return PORTB; }
static void port(uint8_t v) { PORTB = v; }
a58: c3 98 cbi 0x18, 3 ; 24
static uint8_t pin() { return PINB; }
static void pin(uint8_t v) { PINB = v; }
static uint8_t dir() { return DDRB; }
static void dir(uint8_t v) { DDRB = v; }
a5a: bb 9a sbi 0x17, 3 ; 23
a5c: e6 e7 ldi r30, 0x76 ; 118
a5e: f1 e0 ldi r31, 0x01 ; 1
init();
this->led = l;
send("Uart done!\n");
}
void send(const char *text) {
while (*text)
a60: 86 e7 ldi r24, 0x76 ; 118
namespace avrlib {
struct portb
{
static uint8_t port() { return PORTB; }
static void port(uint8_t v) { PORTB = v; }
a62: c3 9a sbi 0x18, 3 ; 24
static uint8_t pin() { return PINB; }
static void pin(uint8_t v) { PINB = v; }
static uint8_t dir() { return DDRB; }
static void dir(uint8_t v) { DDRB = v; }
a64: bb 9a sbi 0x17, 3 ; 23
UBRRL = (F_CPU / (baudrate * 16L) - 1);
sei();
}
uint8_t uart_putchar(uint8_t c) {
led.on(led.YELLOW);
loop_until_bit_is_set(UCSRA, UDRE); //Ausgabe des Zeichens
a66: 5d 9b sbis 0x0b, 5 ; 11
a68: fe cf rjmp .-4 ; 0xa66 <__stack+0x607>
UDR = c;
a6a: 8c b9 out 0x0c, r24 ; 12
namespace avrlib {
struct portb
{
static uint8_t port() { return PORTB; }
static void port(uint8_t v) { PORTB = v; }
a6c: c3 98 cbi 0x18, 3 ; 24
static uint8_t pin() { return PINB; }
static void pin(uint8_t v) { PINB = v; }
static uint8_t dir() { return DDRB; }
static void dir(uint8_t v) { DDRB = v; }
a6e: bb 9a sbi 0x17, 3 ; 23
init();
this->led = l;
send("Uart done!\n");
}
void send(const char *text) {
while (*text)
a70: 81 91 ld r24, Z+
a72: 81 11 cpse r24, r1
a74: f6 cf rjmp .-20 ; 0xa62 <__stack+0x603>
}
pwm_value = (target_temp+5) - tm;
o.setPwm(0, pwm_value);
o.setPwm(1, target_motor);
char pw[11]; r.send("pwm="); r.send(dtostrf(pwm_value, 10, 2, pw)); r.send(";");
char vs[11]; r.send("vm="); r.send(dtostrf((((float)(v0+v1))/2), 10, 2, vs)); r.send(";");
a76: b6 01 movw r22, r12
a78: 6e 0d add r22, r14
a7a: 7f 1d adc r23, r15
a7c: 80 e0 ldi r24, 0x00 ; 0
a7e: 90 e0 ldi r25, 0x00 ; 0
a80: 0e 94 d3 09 call 0x13a6 ; 0x13a6 <__floatunsisf>
a84: 20 e0 ldi r18, 0x00 ; 0
a86: 30 e0 ldi r19, 0x00 ; 0
a88: 40 e0 ldi r20, 0x00 ; 0
a8a: 5f e3 ldi r21, 0x3F ; 63
a8c: 0e 94 89 0a call 0x1512 ; 0x1512 <__mulsf3>
a90: 8e 01 movw r16, r28
a92: 0e 58 subi r16, 0x8E ; 142
a94: 1f 4f sbci r17, 0xFF ; 255
a96: 22 e0 ldi r18, 0x02 ; 2
a98: 4a e0 ldi r20, 0x0A ; 10
a9a: 0e 94 26 0b call 0x164c ; 0x164c <dtostrf>
a9e: fc 01 movw r30, r24
aa0: 20 81 ld r18, Z
aa2: 22 23 and r18, r18
aa4: 59 f0 breq .+22 ; 0xabc <__stack+0x65d>
l.off(l.YELLOW);
r.send("#### End Bootup ###########################################\n");
l.on(l.GREEN);
}
int main(void)
aa6: 31 96 adiw r30, 0x01 ; 1
namespace avrlib {
struct portb
{
static uint8_t port() { return PORTB; }
static void port(uint8_t v) { PORTB = v; }
aa8: c3 9a sbi 0x18, 3 ; 24
static uint8_t pin() { return PINB; }
static void pin(uint8_t v) { PINB = v; }
static uint8_t dir() { return DDRB; }
static void dir(uint8_t v) { DDRB = v; }
aaa: bb 9a sbi 0x17, 3 ; 23
UBRRL = (F_CPU / (baudrate * 16L) - 1);
sei();
}
uint8_t uart_putchar(uint8_t c) {
led.on(led.YELLOW);
loop_until_bit_is_set(UCSRA, UDRE); //Ausgabe des Zeichens
aac: 5d 9b sbis 0x0b, 5 ; 11
aae: fe cf rjmp .-4 ; 0xaac <__stack+0x64d>
UDR = c;
ab0: 2c b9 out 0x0c, r18 ; 12
namespace avrlib {
struct portb
{
static uint8_t port() { return PORTB; }
static void port(uint8_t v) { PORTB = v; }
ab2: c3 98 cbi 0x18, 3 ; 24
static uint8_t pin() { return PINB; }
static void pin(uint8_t v) { PINB = v; }
static uint8_t dir() { return DDRB; }
static void dir(uint8_t v) { DDRB = v; }
ab4: bb 9a sbi 0x17, 3 ; 23
init();
this->led = l;
send("Uart done!\n");
}
void send(const char *text) {
while (*text)
ab6: 21 91 ld r18, Z+
ab8: 21 11 cpse r18, r1
aba: f6 cf rjmp .-20 ; 0xaa8 <__stack+0x649>
namespace avrlib {
struct portb
{
static uint8_t port() { return PORTB; }
static void port(uint8_t v) { PORTB = v; }
abc: c3 9a sbi 0x18, 3 ; 24
static uint8_t pin() { return PINB; }
static void pin(uint8_t v) { PINB = v; }
static uint8_t dir() { return DDRB; }
static void dir(uint8_t v) { DDRB = v; }
abe: bb 9a sbi 0x17, 3 ; 23
UBRRL = (F_CPU / (baudrate * 16L) - 1);
sei();
}
uint8_t uart_putchar(uint8_t c) {
led.on(led.YELLOW);
loop_until_bit_is_set(UCSRA, UDRE); //Ausgabe des Zeichens
ac0: 5d 9b sbis 0x0b, 5 ; 11
ac2: fe cf rjmp .-4 ; 0xac0 <__stack+0x661>
UDR = c;
ac4: 8b e3 ldi r24, 0x3B ; 59
ac6: 8c b9 out 0x0c, r24 ; 12
namespace avrlib {
struct portb
{
static uint8_t port() { return PORTB; }
static void port(uint8_t v) { PORTB = v; }
ac8: c3 98 cbi 0x18, 3 ; 24
static uint8_t pin() { return PINB; }
static void pin(uint8_t v) { PINB = v; }
static uint8_t dir() { return DDRB; }
static void dir(uint8_t v) { DDRB = v; }
aca: bb 9a sbi 0x17, 3 ; 23
acc: ea e7 ldi r30, 0x7A ; 122
ace: f1 e0 ldi r31, 0x01 ; 1
init();
this->led = l;
send("Uart done!\n");
}
void send(const char *text) {
while (*text)
ad0: 86 e7 ldi r24, 0x76 ; 118
namespace avrlib {
struct portb
{
static uint8_t port() { return PORTB; }
static void port(uint8_t v) { PORTB = v; }
ad2: c3 9a sbi 0x18, 3 ; 24
static uint8_t pin() { return PINB; }
static void pin(uint8_t v) { PINB = v; }
static uint8_t dir() { return DDRB; }
static void dir(uint8_t v) { DDRB = v; }
ad4: bb 9a sbi 0x17, 3 ; 23
UBRRL = (F_CPU / (baudrate * 16L) - 1);
sei();
}
uint8_t uart_putchar(uint8_t c) {
led.on(led.YELLOW);
loop_until_bit_is_set(UCSRA, UDRE); //Ausgabe des Zeichens
ad6: 5d 9b sbis 0x0b, 5 ; 11
ad8: fe cf rjmp .-4 ; 0xad6 <__stack+0x677>
UDR = c;
ada: 8c b9 out 0x0c, r24 ; 12
namespace avrlib {
struct portb
{
static uint8_t port() { return PORTB; }
static void port(uint8_t v) { PORTB = v; }
adc: c3 98 cbi 0x18, 3 ; 24
static uint8_t pin() { return PINB; }
static void pin(uint8_t v) { PINB = v; }
static uint8_t dir() { return DDRB; }
static void dir(uint8_t v) { DDRB = v; }
ade: bb 9a sbi 0x17, 3 ; 23
init();
this->led = l;
send("Uart done!\n");
}
void send(const char *text) {
while (*text)
ae0: 81 91 ld r24, Z+
ae2: 81 11 cpse r24, r1
ae4: f6 cf rjmp .-20 ; 0xad2 <__stack+0x673>
pwm_value = (target_temp+5) - tm;
o.setPwm(0, pwm_value);
o.setPwm(1, target_motor);
char pw[11]; r.send("pwm="); r.send(dtostrf(pwm_value, 10, 2, pw)); r.send(";");
char vs[11]; r.send("vm="); r.send(dtostrf((((float)(v0+v1))/2), 10, 2, vs)); r.send(";");
r.send("v0="); r.send(utoa(v0, vs, 10)); r.send(";");
ae6: 4a e0 ldi r20, 0x0A ; 10
ae8: 50 e0 ldi r21, 0x00 ; 0
aea: be 01 movw r22, r28
aec: 6e 58 subi r22, 0x8E ; 142
aee: 7f 4f sbci r23, 0xFF ; 255
af0: c7 01 movw r24, r14
af2: 0e 94 47 0b call 0x168e ; 0x168e <utoa>
af6: dc 01 movw r26, r24
af8: 2c 91 ld r18, X
afa: 22 23 and r18, r18
afc: 61 f0 breq .+24 ; 0xb16 <__stack+0x6b7>
l.off(l.YELLOW);
r.send("#### End Bootup ###########################################\n");
l.on(l.GREEN);
}
int main(void)
afe: fc 01 movw r30, r24
b00: 31 96 adiw r30, 0x01 ; 1
namespace avrlib {
struct portb
{
static uint8_t port() { return PORTB; }
static void port(uint8_t v) { PORTB = v; }
b02: c3 9a sbi 0x18, 3 ; 24
static uint8_t pin() { return PINB; }
static void pin(uint8_t v) { PINB = v; }
static uint8_t dir() { return DDRB; }
static void dir(uint8_t v) { DDRB = v; }
b04: bb 9a sbi 0x17, 3 ; 23
UBRRL = (F_CPU / (baudrate * 16L) - 1);
sei();
}
uint8_t uart_putchar(uint8_t c) {
led.on(led.YELLOW);
loop_until_bit_is_set(UCSRA, UDRE); //Ausgabe des Zeichens
b06: 5d 9b sbis 0x0b, 5 ; 11
b08: fe cf rjmp .-4 ; 0xb06 <__stack+0x6a7>
UDR = c;
b0a: 2c b9 out 0x0c, r18 ; 12
namespace avrlib {
struct portb
{
static uint8_t port() { return PORTB; }
static void port(uint8_t v) { PORTB = v; }
b0c: c3 98 cbi 0x18, 3 ; 24
static uint8_t pin() { return PINB; }
static void pin(uint8_t v) { PINB = v; }
static uint8_t dir() { return DDRB; }
static void dir(uint8_t v) { DDRB = v; }
b0e: bb 9a sbi 0x17, 3 ; 23
init();
this->led = l;
send("Uart done!\n");
}
void send(const char *text) {
while (*text)
b10: 21 91 ld r18, Z+
b12: 21 11 cpse r18, r1
b14: f6 cf rjmp .-20 ; 0xb02 <__stack+0x6a3>
namespace avrlib {
struct portb
{
static uint8_t port() { return PORTB; }
static void port(uint8_t v) { PORTB = v; }
b16: c3 9a sbi 0x18, 3 ; 24
static uint8_t pin() { return PINB; }
static void pin(uint8_t v) { PINB = v; }
static uint8_t dir() { return DDRB; }
static void dir(uint8_t v) { DDRB = v; }
b18: bb 9a sbi 0x17, 3 ; 23
UBRRL = (F_CPU / (baudrate * 16L) - 1);
sei();
}
uint8_t uart_putchar(uint8_t c) {
led.on(led.YELLOW);
loop_until_bit_is_set(UCSRA, UDRE); //Ausgabe des Zeichens
b1a: 5d 9b sbis 0x0b, 5 ; 11
b1c: fe cf rjmp .-4 ; 0xb1a <__stack+0x6bb>
UDR = c;
b1e: 8b e3 ldi r24, 0x3B ; 59
b20: 8c b9 out 0x0c, r24 ; 12
namespace avrlib {
struct portb
{
static uint8_t port() { return PORTB; }
static void port(uint8_t v) { PORTB = v; }
b22: c3 98 cbi 0x18, 3 ; 24
static uint8_t pin() { return PINB; }
static void pin(uint8_t v) { PINB = v; }
static uint8_t dir() { return DDRB; }
static void dir(uint8_t v) { DDRB = v; }
b24: bb 9a sbi 0x17, 3 ; 23
b26: ee e7 ldi r30, 0x7E ; 126
b28: f1 e0 ldi r31, 0x01 ; 1
init();
this->led = l;
send("Uart done!\n");
}
void send(const char *text) {
while (*text)
b2a: 86 e7 ldi r24, 0x76 ; 118
namespace avrlib {
struct portb
{
static uint8_t port() { return PORTB; }
static void port(uint8_t v) { PORTB = v; }
b2c: c3 9a sbi 0x18, 3 ; 24
static uint8_t pin() { return PINB; }
static void pin(uint8_t v) { PINB = v; }
static uint8_t dir() { return DDRB; }
static void dir(uint8_t v) { DDRB = v; }
b2e: bb 9a sbi 0x17, 3 ; 23
UBRRL = (F_CPU / (baudrate * 16L) - 1);
sei();
}
uint8_t uart_putchar(uint8_t c) {
led.on(led.YELLOW);
loop_until_bit_is_set(UCSRA, UDRE); //Ausgabe des Zeichens
b30: 5d 9b sbis 0x0b, 5 ; 11
b32: fe cf rjmp .-4 ; 0xb30 <__stack+0x6d1>
UDR = c;
b34: 8c b9 out 0x0c, r24 ; 12
namespace avrlib {
struct portb
{
static uint8_t port() { return PORTB; }
static void port(uint8_t v) { PORTB = v; }
b36: c3 98 cbi 0x18, 3 ; 24
static uint8_t pin() { return PINB; }
static void pin(uint8_t v) { PINB = v; }
static uint8_t dir() { return DDRB; }
static void dir(uint8_t v) { DDRB = v; }
b38: bb 9a sbi 0x17, 3 ; 23
init();
this->led = l;
send("Uart done!\n");
}
void send(const char *text) {
while (*text)
b3a: 81 91 ld r24, Z+
b3c: 81 11 cpse r24, r1
b3e: f6 cf rjmp .-20 ; 0xb2c <__stack+0x6cd>
o.setPwm(0, pwm_value);
o.setPwm(1, target_motor);
char pw[11]; r.send("pwm="); r.send(dtostrf(pwm_value, 10, 2, pw)); r.send(";");
char vs[11]; r.send("vm="); r.send(dtostrf((((float)(v0+v1))/2), 10, 2, vs)); r.send(";");
r.send("v0="); r.send(utoa(v0, vs, 10)); r.send(";");
r.send("v1="); r.send(utoa(v1, vs, 10)); r.send(";");
b40: 4a e0 ldi r20, 0x0A ; 10
b42: 50 e0 ldi r21, 0x00 ; 0
b44: be 01 movw r22, r28
b46: 6e 58 subi r22, 0x8E ; 142
b48: 7f 4f sbci r23, 0xFF ; 255
b4a: c6 01 movw r24, r12
b4c: 0e 94 47 0b call 0x168e ; 0x168e <utoa>
b50: fc 01 movw r30, r24
b52: 20 81 ld r18, Z
b54: 22 23 and r18, r18
b56: 59 f0 breq .+22 ; 0xb6e <__stack+0x70f>
l.off(l.YELLOW);
r.send("#### End Bootup ###########################################\n");
l.on(l.GREEN);
}
int main(void)
b58: 31 96 adiw r30, 0x01 ; 1
namespace avrlib {
struct portb
{
static uint8_t port() { return PORTB; }
static void port(uint8_t v) { PORTB = v; }
b5a: c3 9a sbi 0x18, 3 ; 24
static uint8_t pin() { return PINB; }
static void pin(uint8_t v) { PINB = v; }
static uint8_t dir() { return DDRB; }
static void dir(uint8_t v) { DDRB = v; }
b5c: bb 9a sbi 0x17, 3 ; 23
UBRRL = (F_CPU / (baudrate * 16L) - 1);
sei();
}
uint8_t uart_putchar(uint8_t c) {
led.on(led.YELLOW);
loop_until_bit_is_set(UCSRA, UDRE); //Ausgabe des Zeichens
b5e: 5d 9b sbis 0x0b, 5 ; 11
b60: fe cf rjmp .-4 ; 0xb5e <__stack+0x6ff>
UDR = c;
b62: 2c b9 out 0x0c, r18 ; 12
namespace avrlib {
struct portb
{
static uint8_t port() { return PORTB; }
static void port(uint8_t v) { PORTB = v; }
b64: c3 98 cbi 0x18, 3 ; 24
static uint8_t pin() { return PINB; }
static void pin(uint8_t v) { PINB = v; }
static uint8_t dir() { return DDRB; }
static void dir(uint8_t v) { DDRB = v; }
b66: bb 9a sbi 0x17, 3 ; 23
init();
this->led = l;
send("Uart done!\n");
}
void send(const char *text) {
while (*text)
b68: 21 91 ld r18, Z+
b6a: 21 11 cpse r18, r1
b6c: f6 cf rjmp .-20 ; 0xb5a <__stack+0x6fb>
namespace avrlib {
struct portb
{
static uint8_t port() { return PORTB; }
static void port(uint8_t v) { PORTB = v; }
b6e: c3 9a sbi 0x18, 3 ; 24
static uint8_t pin() { return PINB; }
static void pin(uint8_t v) { PINB = v; }
static uint8_t dir() { return DDRB; }
static void dir(uint8_t v) { DDRB = v; }
b70: bb 9a sbi 0x17, 3 ; 23
UBRRL = (F_CPU / (baudrate * 16L) - 1);
sei();
}
uint8_t uart_putchar(uint8_t c) {
led.on(led.YELLOW);
loop_until_bit_is_set(UCSRA, UDRE); //Ausgabe des Zeichens
b72: 5d 9b sbis 0x0b, 5 ; 11
b74: fe cf rjmp .-4 ; 0xb72 <__stack+0x713>
UDR = c;
b76: 8b e3 ldi r24, 0x3B ; 59
b78: 8c b9 out 0x0c, r24 ; 12
namespace avrlib {
struct portb
{
static uint8_t port() { return PORTB; }
static void port(uint8_t v) { PORTB = v; }
b7a: c3 98 cbi 0x18, 3 ; 24
static uint8_t pin() { return PINB; }
static void pin(uint8_t v) { PINB = v; }
static uint8_t dir() { return DDRB; }
static void dir(uint8_t v) { DDRB = v; }
b7c: bb 9a sbi 0x17, 3 ; 23
b7e: e2 e8 ldi r30, 0x82 ; 130
b80: f1 e0 ldi r31, 0x01 ; 1
init();
this->led = l;
send("Uart done!\n");
}
void send(const char *text) {
while (*text)
b82: 83 e6 ldi r24, 0x63 ; 99
namespace avrlib {
struct portb
{
static uint8_t port() { return PORTB; }
static void port(uint8_t v) { PORTB = v; }
b84: c3 9a sbi 0x18, 3 ; 24
static uint8_t pin() { return PINB; }
static void pin(uint8_t v) { PINB = v; }
static uint8_t dir() { return DDRB; }
static void dir(uint8_t v) { DDRB = v; }
b86: bb 9a sbi 0x17, 3 ; 23
UBRRL = (F_CPU / (baudrate * 16L) - 1);
sei();
}
uint8_t uart_putchar(uint8_t c) {
led.on(led.YELLOW);
loop_until_bit_is_set(UCSRA, UDRE); //Ausgabe des Zeichens
b88: 5d 9b sbis 0x0b, 5 ; 11
b8a: fe cf rjmp .-4 ; 0xb88 <__stack+0x729>
UDR = c;
b8c: 8c b9 out 0x0c, r24 ; 12
namespace avrlib {
struct portb
{
static uint8_t port() { return PORTB; }
static void port(uint8_t v) { PORTB = v; }
b8e: c3 98 cbi 0x18, 3 ; 24
static uint8_t pin() { return PINB; }
static void pin(uint8_t v) { PINB = v; }
static uint8_t dir() { return DDRB; }
static void dir(uint8_t v) { DDRB = v; }
b90: bb 9a sbi 0x17, 3 ; 23
init();
this->led = l;
send("Uart done!\n");
}
void send(const char *text) {
while (*text)
b92: 81 91 ld r24, Z+
b94: 81 11 cpse r24, r1
b96: f6 cf rjmp .-20 ; 0xb84 <__stack+0x725>
o.setPwm(1, target_motor);
char pw[11]; r.send("pwm="); r.send(dtostrf(pwm_value, 10, 2, pw)); r.send(";");
char vs[11]; r.send("vm="); r.send(dtostrf((((float)(v0+v1))/2), 10, 2, vs)); r.send(";");
r.send("v0="); r.send(utoa(v0, vs, 10)); r.send(";");
r.send("v1="); r.send(utoa(v1, vs, 10)); r.send(";");
char cs[11]; r.send("cm="); r.send(dtostrf(tm, 10, 2, cs)); r.send(";");
b98: 8e 01 movw r16, r28
b9a: 09 59 subi r16, 0x99 ; 153
b9c: 1f 4f sbci r17, 0xFF ; 255
b9e: 22 e0 ldi r18, 0x02 ; 2
ba0: 4a e0 ldi r20, 0x0A ; 10
ba2: c2 56 subi r28, 0x62 ; 98
ba4: df 4f sbci r29, 0xFF ; 255
ba6: f8 81 ld r31, Y
ba8: ce 59 subi r28, 0x9E ; 158
baa: d0 40 sbci r29, 0x00 ; 0
bac: c1 56 subi r28, 0x61 ; 97
bae: df 4f sbci r29, 0xFF ; 255
bb0: e8 81 ld r30, Y
bb2: cf 59 subi r28, 0x9F ; 159
bb4: d0 40 sbci r29, 0x00 ; 0
bb6: c0 56 subi r28, 0x60 ; 96
bb8: df 4f sbci r29, 0xFF ; 255
bba: 58 81 ld r21, Y
bbc: c0 5a subi r28, 0xA0 ; 160
bbe: d0 40 sbci r29, 0x00 ; 0
bc0: cf 55 subi r28, 0x5F ; 95
bc2: df 4f sbci r29, 0xFF ; 255
bc4: 38 81 ld r19, Y
bc6: c1 5a subi r28, 0xA1 ; 161
bc8: d0 40 sbci r29, 0x00 ; 0
bca: 6f 2f mov r22, r31
bcc: 7e 2f mov r23, r30
bce: 85 2f mov r24, r21
bd0: 93 2f mov r25, r19
bd2: 0e 94 26 0b call 0x164c ; 0x164c <dtostrf>
bd6: dc 01 movw r26, r24
bd8: 2c 91 ld r18, X
bda: 22 23 and r18, r18
bdc: 61 f0 breq .+24 ; 0xbf6 <__stack+0x797>
l.off(l.YELLOW);
r.send("#### End Bootup ###########################################\n");
l.on(l.GREEN);
}
int main(void)
bde: fc 01 movw r30, r24
be0: 31 96 adiw r30, 0x01 ; 1
namespace avrlib {
struct portb
{
static uint8_t port() { return PORTB; }
static void port(uint8_t v) { PORTB = v; }
be2: c3 9a sbi 0x18, 3 ; 24
static uint8_t pin() { return PINB; }
static void pin(uint8_t v) { PINB = v; }
static uint8_t dir() { return DDRB; }
static void dir(uint8_t v) { DDRB = v; }
be4: bb 9a sbi 0x17, 3 ; 23
UBRRL = (F_CPU / (baudrate * 16L) - 1);
sei();
}
uint8_t uart_putchar(uint8_t c) {
led.on(led.YELLOW);
loop_until_bit_is_set(UCSRA, UDRE); //Ausgabe des Zeichens
be6: 5d 9b sbis 0x0b, 5 ; 11
be8: fe cf rjmp .-4 ; 0xbe6 <__stack+0x787>
UDR = c;
bea: 2c b9 out 0x0c, r18 ; 12
namespace avrlib {
struct portb
{
static uint8_t port() { return PORTB; }
static void port(uint8_t v) { PORTB = v; }
bec: c3 98 cbi 0x18, 3 ; 24
static uint8_t pin() { return PINB; }
static void pin(uint8_t v) { PINB = v; }
static uint8_t dir() { return DDRB; }
static void dir(uint8_t v) { DDRB = v; }
bee: bb 9a sbi 0x17, 3 ; 23
init();
this->led = l;
send("Uart done!\n");
}
void send(const char *text) {
while (*text)
bf0: 21 91 ld r18, Z+
bf2: 21 11 cpse r18, r1
bf4: f6 cf rjmp .-20 ; 0xbe2 <__stack+0x783>
namespace avrlib {
struct portb
{
static uint8_t port() { return PORTB; }
static void port(uint8_t v) { PORTB = v; }
bf6: c3 9a sbi 0x18, 3 ; 24
static uint8_t pin() { return PINB; }
static void pin(uint8_t v) { PINB = v; }
static uint8_t dir() { return DDRB; }
static void dir(uint8_t v) { DDRB = v; }
bf8: bb 9a sbi 0x17, 3 ; 23
UBRRL = (F_CPU / (baudrate * 16L) - 1);
sei();
}
uint8_t uart_putchar(uint8_t c) {
led.on(led.YELLOW);
loop_until_bit_is_set(UCSRA, UDRE); //Ausgabe des Zeichens
bfa: 5d 9b sbis 0x0b, 5 ; 11
bfc: fe cf rjmp .-4 ; 0xbfa <__stack+0x79b>
UDR = c;
bfe: 8b e3 ldi r24, 0x3B ; 59
c00: 8c b9 out 0x0c, r24 ; 12
namespace avrlib {
struct portb
{
static uint8_t port() { return PORTB; }
static void port(uint8_t v) { PORTB = v; }
c02: c3 98 cbi 0x18, 3 ; 24
static uint8_t pin() { return PINB; }
static void pin(uint8_t v) { PINB = v; }
static uint8_t dir() { return DDRB; }
static void dir(uint8_t v) { DDRB = v; }
c04: bb 9a sbi 0x17, 3 ; 23
c06: e6 e8 ldi r30, 0x86 ; 134
c08: f1 e0 ldi r31, 0x01 ; 1
init();
this->led = l;
send("Uart done!\n");
}
void send(const char *text) {
while (*text)
c0a: 83 e6 ldi r24, 0x63 ; 99
namespace avrlib {
struct portb
{
static uint8_t port() { return PORTB; }
static void port(uint8_t v) { PORTB = v; }
c0c: c3 9a sbi 0x18, 3 ; 24
static uint8_t pin() { return PINB; }
static void pin(uint8_t v) { PINB = v; }
static uint8_t dir() { return DDRB; }
static void dir(uint8_t v) { DDRB = v; }
c0e: bb 9a sbi 0x17, 3 ; 23
UBRRL = (F_CPU / (baudrate * 16L) - 1);
sei();
}
uint8_t uart_putchar(uint8_t c) {
led.on(led.YELLOW);
loop_until_bit_is_set(UCSRA, UDRE); //Ausgabe des Zeichens
c10: 5d 9b sbis 0x0b, 5 ; 11
c12: fe cf rjmp .-4 ; 0xc10 <__stack+0x7b1>
UDR = c;
c14: 8c b9 out 0x0c, r24 ; 12
namespace avrlib {
struct portb
{
static uint8_t port() { return PORTB; }
static void port(uint8_t v) { PORTB = v; }
c16: c3 98 cbi 0x18, 3 ; 24
static uint8_t pin() { return PINB; }
static void pin(uint8_t v) { PINB = v; }
static uint8_t dir() { return DDRB; }
static void dir(uint8_t v) { DDRB = v; }
c18: bb 9a sbi 0x17, 3 ; 23
init();
this->led = l;
send("Uart done!\n");
}
void send(const char *text) {
while (*text)
c1a: 81 91 ld r24, Z+
c1c: 81 11 cpse r24, r1
c1e: f6 cf rjmp .-20 ; 0xc0c <__stack+0x7ad>
char pw[11]; r.send("pwm="); r.send(dtostrf(pwm_value, 10, 2, pw)); r.send(";");
char vs[11]; r.send("vm="); r.send(dtostrf((((float)(v0+v1))/2), 10, 2, vs)); r.send(";");
r.send("v0="); r.send(utoa(v0, vs, 10)); r.send(";");
r.send("v1="); r.send(utoa(v1, vs, 10)); r.send(";");
char cs[11]; r.send("cm="); r.send(dtostrf(tm, 10, 2, cs)); r.send(";");
r.send("c0="); r.send(dtostrf(t0, 10, 2, cs)); r.send(";");
c20: 8e 01 movw r16, r28
c22: 09 59 subi r16, 0x99 ; 153
c24: 1f 4f sbci r17, 0xFF ; 255
c26: 22 e0 ldi r18, 0x02 ; 2
c28: 4a e0 ldi r20, 0x0A ; 10
c2a: c4 57 subi r28, 0x74 ; 116
c2c: df 4f sbci r29, 0xFF ; 255
c2e: f8 81 ld r31, Y
c30: cc 58 subi r28, 0x8C ; 140
c32: d0 40 sbci r29, 0x00 ; 0
c34: c8 56 subi r28, 0x68 ; 104
c36: df 4f sbci r29, 0xFF ; 255
c38: e8 81 ld r30, Y
c3a: c8 59 subi r28, 0x98 ; 152
c3c: d0 40 sbci r29, 0x00 ; 0
c3e: c7 56 subi r28, 0x67 ; 103
c40: df 4f sbci r29, 0xFF ; 255
c42: 58 81 ld r21, Y
c44: c9 59 subi r28, 0x99 ; 153
c46: d0 40 sbci r29, 0x00 ; 0
c48: c6 56 subi r28, 0x66 ; 102
c4a: df 4f sbci r29, 0xFF ; 255
c4c: 38 81 ld r19, Y
c4e: ca 59 subi r28, 0x9A ; 154
c50: d0 40 sbci r29, 0x00 ; 0
c52: 6f 2f mov r22, r31
c54: 7e 2f mov r23, r30
c56: 85 2f mov r24, r21
c58: 93 2f mov r25, r19
c5a: 0e 94 26 0b call 0x164c ; 0x164c <dtostrf>
c5e: fc 01 movw r30, r24
c60: 20 81 ld r18, Z
c62: 22 23 and r18, r18
c64: 59 f0 breq .+22 ; 0xc7c <__stack+0x81d>
l.off(l.YELLOW);
r.send("#### End Bootup ###########################################\n");
l.on(l.GREEN);
}
int main(void)
c66: 31 96 adiw r30, 0x01 ; 1
namespace avrlib {
struct portb
{
static uint8_t port() { return PORTB; }
static void port(uint8_t v) { PORTB = v; }
c68: c3 9a sbi 0x18, 3 ; 24
static uint8_t pin() { return PINB; }
static void pin(uint8_t v) { PINB = v; }
static uint8_t dir() { return DDRB; }
static void dir(uint8_t v) { DDRB = v; }
c6a: bb 9a sbi 0x17, 3 ; 23
UBRRL = (F_CPU / (baudrate * 16L) - 1);
sei();
}
uint8_t uart_putchar(uint8_t c) {
led.on(led.YELLOW);
loop_until_bit_is_set(UCSRA, UDRE); //Ausgabe des Zeichens
c6c: 5d 9b sbis 0x0b, 5 ; 11
c6e: fe cf rjmp .-4 ; 0xc6c <__stack+0x80d>
UDR = c;
c70: 2c b9 out 0x0c, r18 ; 12
namespace avrlib {
struct portb
{
static uint8_t port() { return PORTB; }
static void port(uint8_t v) { PORTB = v; }
c72: c3 98 cbi 0x18, 3 ; 24
static uint8_t pin() { return PINB; }
static void pin(uint8_t v) { PINB = v; }
static uint8_t dir() { return DDRB; }
static void dir(uint8_t v) { DDRB = v; }
c74: bb 9a sbi 0x17, 3 ; 23
init();
this->led = l;
send("Uart done!\n");
}
void send(const char *text) {
while (*text)
c76: 21 91 ld r18, Z+
c78: 21 11 cpse r18, r1
c7a: f6 cf rjmp .-20 ; 0xc68 <__stack+0x809>
namespace avrlib {
struct portb
{
static uint8_t port() { return PORTB; }
static void port(uint8_t v) { PORTB = v; }
c7c: c3 9a sbi 0x18, 3 ; 24
static uint8_t pin() { return PINB; }
static void pin(uint8_t v) { PINB = v; }
static uint8_t dir() { return DDRB; }
static void dir(uint8_t v) { DDRB = v; }
c7e: bb 9a sbi 0x17, 3 ; 23
UBRRL = (F_CPU / (baudrate * 16L) - 1);
sei();
}
uint8_t uart_putchar(uint8_t c) {
led.on(led.YELLOW);
loop_until_bit_is_set(UCSRA, UDRE); //Ausgabe des Zeichens
c80: 5d 9b sbis 0x0b, 5 ; 11
c82: fe cf rjmp .-4 ; 0xc80 <__stack+0x821>
UDR = c;
c84: 8b e3 ldi r24, 0x3B ; 59
c86: 8c b9 out 0x0c, r24 ; 12
namespace avrlib {
struct portb
{
static uint8_t port() { return PORTB; }
static void port(uint8_t v) { PORTB = v; }
c88: c3 98 cbi 0x18, 3 ; 24
static uint8_t pin() { return PINB; }
static void pin(uint8_t v) { PINB = v; }
static uint8_t dir() { return DDRB; }
static void dir(uint8_t v) { DDRB = v; }
c8a: bb 9a sbi 0x17, 3 ; 23
c8c: ea e8 ldi r30, 0x8A ; 138
c8e: f1 e0 ldi r31, 0x01 ; 1
init();
this->led = l;
send("Uart done!\n");
}
void send(const char *text) {
while (*text)
c90: 83 e6 ldi r24, 0x63 ; 99
namespace avrlib {
struct portb
{
static uint8_t port() { return PORTB; }
static void port(uint8_t v) { PORTB = v; }
c92: c3 9a sbi 0x18, 3 ; 24
static uint8_t pin() { return PINB; }
static void pin(uint8_t v) { PINB = v; }
static uint8_t dir() { return DDRB; }
static void dir(uint8_t v) { DDRB = v; }
c94: bb 9a sbi 0x17, 3 ; 23
UBRRL = (F_CPU / (baudrate * 16L) - 1);
sei();
}
uint8_t uart_putchar(uint8_t c) {
led.on(led.YELLOW);
loop_until_bit_is_set(UCSRA, UDRE); //Ausgabe des Zeichens
c96: 5d 9b sbis 0x0b, 5 ; 11
c98: fe cf rjmp .-4 ; 0xc96 <__stack+0x837>
UDR = c;
c9a: 8c b9 out 0x0c, r24 ; 12
namespace avrlib {
struct portb
{
static uint8_t port() { return PORTB; }
static void port(uint8_t v) { PORTB = v; }
c9c: c3 98 cbi 0x18, 3 ; 24
static uint8_t pin() { return PINB; }
static void pin(uint8_t v) { PINB = v; }
static uint8_t dir() { return DDRB; }
static void dir(uint8_t v) { DDRB = v; }
c9e: bb 9a sbi 0x17, 3 ; 23
init();
this->led = l;
send("Uart done!\n");
}
void send(const char *text) {
while (*text)
ca0: 81 91 ld r24, Z+
ca2: 81 11 cpse r24, r1
ca4: f6 cf rjmp .-20 ; 0xc92 <__stack+0x833>
char vs[11]; r.send("vm="); r.send(dtostrf((((float)(v0+v1))/2), 10, 2, vs)); r.send(";");
r.send("v0="); r.send(utoa(v0, vs, 10)); r.send(";");
r.send("v1="); r.send(utoa(v1, vs, 10)); r.send(";");
char cs[11]; r.send("cm="); r.send(dtostrf(tm, 10, 2, cs)); r.send(";");
r.send("c0="); r.send(dtostrf(t0, 10, 2, cs)); r.send(";");
r.send("c1="); r.send(dtostrf(t1, 10, 2, cs)); r.send(";");
ca6: 8e 01 movw r16, r28
ca8: 09 59 subi r16, 0x99 ; 153
caa: 1f 4f sbci r17, 0xFF ; 255
cac: 22 e0 ldi r18, 0x02 ; 2
cae: 4a e0 ldi r20, 0x0A ; 10
cb0: c0 57 subi r28, 0x70 ; 112
cb2: df 4f sbci r29, 0xFF ; 255
cb4: f8 81 ld r31, Y
cb6: c0 59 subi r28, 0x90 ; 144
cb8: d0 40 sbci r29, 0x00 ; 0
cba: c5 56 subi r28, 0x65 ; 101
cbc: df 4f sbci r29, 0xFF ; 255
cbe: e8 81 ld r30, Y
cc0: cb 59 subi r28, 0x9B ; 155
cc2: d0 40 sbci r29, 0x00 ; 0
cc4: c4 56 subi r28, 0x64 ; 100
cc6: df 4f sbci r29, 0xFF ; 255
cc8: 58 81 ld r21, Y
cca: cc 59 subi r28, 0x9C ; 156
ccc: d0 40 sbci r29, 0x00 ; 0
cce: c3 56 subi r28, 0x63 ; 99
cd0: df 4f sbci r29, 0xFF ; 255
cd2: 38 81 ld r19, Y
cd4: cd 59 subi r28, 0x9D ; 157
cd6: d0 40 sbci r29, 0x00 ; 0
cd8: 6f 2f mov r22, r31
cda: 7e 2f mov r23, r30
cdc: 85 2f mov r24, r21
cde: 93 2f mov r25, r19
ce0: 0e 94 26 0b call 0x164c ; 0x164c <dtostrf>
ce4: dc 01 movw r26, r24
ce6: 2c 91 ld r18, X
ce8: 22 23 and r18, r18
cea: 61 f0 breq .+24 ; 0xd04 <__stack+0x8a5>
l.off(l.YELLOW);
r.send("#### End Bootup ###########################################\n");
l.on(l.GREEN);
}
int main(void)
cec: fc 01 movw r30, r24
cee: 31 96 adiw r30, 0x01 ; 1
namespace avrlib {
struct portb
{
static uint8_t port() { return PORTB; }
static void port(uint8_t v) { PORTB = v; }
cf0: c3 9a sbi 0x18, 3 ; 24
static uint8_t pin() { return PINB; }
static void pin(uint8_t v) { PINB = v; }
static uint8_t dir() { return DDRB; }
static void dir(uint8_t v) { DDRB = v; }
cf2: bb 9a sbi 0x17, 3 ; 23
UBRRL = (F_CPU / (baudrate * 16L) - 1);
sei();
}
uint8_t uart_putchar(uint8_t c) {
led.on(led.YELLOW);
loop_until_bit_is_set(UCSRA, UDRE); //Ausgabe des Zeichens
cf4: 5d 9b sbis 0x0b, 5 ; 11
cf6: fe cf rjmp .-4 ; 0xcf4 <__stack+0x895>
UDR = c;
cf8: 2c b9 out 0x0c, r18 ; 12
namespace avrlib {
struct portb
{
static uint8_t port() { return PORTB; }
static void port(uint8_t v) { PORTB = v; }
cfa: c3 98 cbi 0x18, 3 ; 24
static uint8_t pin() { return PINB; }
static void pin(uint8_t v) { PINB = v; }
static uint8_t dir() { return DDRB; }
static void dir(uint8_t v) { DDRB = v; }
cfc: bb 9a sbi 0x17, 3 ; 23
init();
this->led = l;
send("Uart done!\n");
}
void send(const char *text) {
while (*text)
cfe: 21 91 ld r18, Z+
d00: 21 11 cpse r18, r1
d02: f6 cf rjmp .-20 ; 0xcf0 <__stack+0x891>
namespace avrlib {
struct portb
{
static uint8_t port() { return PORTB; }
static void port(uint8_t v) { PORTB = v; }
d04: c3 9a sbi 0x18, 3 ; 24
static uint8_t pin() { return PINB; }
static void pin(uint8_t v) { PINB = v; }
static uint8_t dir() { return DDRB; }
static void dir(uint8_t v) { DDRB = v; }
d06: bb 9a sbi 0x17, 3 ; 23
UBRRL = (F_CPU / (baudrate * 16L) - 1);
sei();
}
uint8_t uart_putchar(uint8_t c) {
led.on(led.YELLOW);
loop_until_bit_is_set(UCSRA, UDRE); //Ausgabe des Zeichens
d08: 5d 9b sbis 0x0b, 5 ; 11
d0a: fe cf rjmp .-4 ; 0xd08 <__stack+0x8a9>
UDR = c;
d0c: 8b e3 ldi r24, 0x3B ; 59
d0e: 8c b9 out 0x0c, r24 ; 12
namespace avrlib {
struct portb
{
static uint8_t port() { return PORTB; }
static void port(uint8_t v) { PORTB = v; }
d10: c3 98 cbi 0x18, 3 ; 24
static uint8_t pin() { return PINB; }
static void pin(uint8_t v) { PINB = v; }
static uint8_t dir() { return DDRB; }
static void dir(uint8_t v) { DDRB = v; }
d12: bb 9a sbi 0x17, 3 ; 23
d14: ee e8 ldi r30, 0x8E ; 142
d16: f1 e0 ldi r31, 0x01 ; 1
init();
this->led = l;
send("Uart done!\n");
}
void send(const char *text) {
while (*text)
d18: 84 e7 ldi r24, 0x74 ; 116
namespace avrlib {
struct portb
{
static uint8_t port() { return PORTB; }
static void port(uint8_t v) { PORTB = v; }
d1a: c3 9a sbi 0x18, 3 ; 24
static uint8_t pin() { return PINB; }
static void pin(uint8_t v) { PINB = v; }
static uint8_t dir() { return DDRB; }
static void dir(uint8_t v) { DDRB = v; }
d1c: bb 9a sbi 0x17, 3 ; 23
UBRRL = (F_CPU / (baudrate * 16L) - 1);
sei();
}
uint8_t uart_putchar(uint8_t c) {
led.on(led.YELLOW);
loop_until_bit_is_set(UCSRA, UDRE); //Ausgabe des Zeichens
d1e: 5d 9b sbis 0x0b, 5 ; 11
d20: fe cf rjmp .-4 ; 0xd1e <__stack+0x8bf>
UDR = c;
d22: 8c b9 out 0x0c, r24 ; 12
namespace avrlib {
struct portb
{
static uint8_t port() { return PORTB; }
static void port(uint8_t v) { PORTB = v; }
d24: c3 98 cbi 0x18, 3 ; 24
static uint8_t pin() { return PINB; }
static void pin(uint8_t v) { PINB = v; }
static uint8_t dir() { return DDRB; }
static void dir(uint8_t v) { DDRB = v; }
d26: bb 9a sbi 0x17, 3 ; 23
init();
this->led = l;
send("Uart done!\n");
}
void send(const char *text) {
while (*text)
d28: 81 91 ld r24, Z+
d2a: 81 11 cpse r24, r1
d2c: f6 cf rjmp .-20 ; 0xd1a <__stack+0x8bb>
r.send("v0="); r.send(utoa(v0, vs, 10)); r.send(";");
r.send("v1="); r.send(utoa(v1, vs, 10)); r.send(";");
char cs[11]; r.send("cm="); r.send(dtostrf(tm, 10, 2, cs)); r.send(";");
r.send("c0="); r.send(dtostrf(t0, 10, 2, cs)); r.send(";");
r.send("c1="); r.send(dtostrf(t1, 10, 2, cs)); r.send(";");
char ts[11]; r.send("t="); r.send(utoa(target_temp, ts, 10)); r.send(";");
d2e: 4a e0 ldi r20, 0x0A ; 10
d30: 50 e0 ldi r21, 0x00 ; 0
d32: be 01 movw r22, r28
d34: 64 5a subi r22, 0xA4 ; 164
d36: 7f 4f sbci r23, 0xFF ; 255
d38: cc 56 subi r28, 0x6C ; 108
d3a: df 4f sbci r29, 0xFF ; 255
d3c: 88 81 ld r24, Y
d3e: 99 81 ldd r25, Y+1 ; 0x01
d40: c4 59 subi r28, 0x94 ; 148
d42: d0 40 sbci r29, 0x00 ; 0
d44: 0e 94 47 0b call 0x168e ; 0x168e <utoa>
d48: fc 01 movw r30, r24
d4a: 20 81 ld r18, Z
d4c: 22 23 and r18, r18
d4e: 59 f0 breq .+22 ; 0xd66 <__stack+0x907>
l.off(l.YELLOW);
r.send("#### End Bootup ###########################################\n");
l.on(l.GREEN);
}
int main(void)
d50: 31 96 adiw r30, 0x01 ; 1
namespace avrlib {
struct portb
{
static uint8_t port() { return PORTB; }
static void port(uint8_t v) { PORTB = v; }
d52: c3 9a sbi 0x18, 3 ; 24
static uint8_t pin() { return PINB; }
static void pin(uint8_t v) { PINB = v; }
static uint8_t dir() { return DDRB; }
static void dir(uint8_t v) { DDRB = v; }
d54: bb 9a sbi 0x17, 3 ; 23
UBRRL = (F_CPU / (baudrate * 16L) - 1);
sei();
}
uint8_t uart_putchar(uint8_t c) {
led.on(led.YELLOW);
loop_until_bit_is_set(UCSRA, UDRE); //Ausgabe des Zeichens
d56: 5d 9b sbis 0x0b, 5 ; 11
d58: fe cf rjmp .-4 ; 0xd56 <__stack+0x8f7>
UDR = c;
d5a: 2c b9 out 0x0c, r18 ; 12
namespace avrlib {
struct portb
{
static uint8_t port() { return PORTB; }
static void port(uint8_t v) { PORTB = v; }
d5c: c3 98 cbi 0x18, 3 ; 24
static uint8_t pin() { return PINB; }
static void pin(uint8_t v) { PINB = v; }
static uint8_t dir() { return DDRB; }
static void dir(uint8_t v) { DDRB = v; }
d5e: bb 9a sbi 0x17, 3 ; 23
init();
this->led = l;
send("Uart done!\n");
}
void send(const char *text) {
while (*text)
d60: 21 91 ld r18, Z+
d62: 21 11 cpse r18, r1
d64: f6 cf rjmp .-20 ; 0xd52 <__stack+0x8f3>
namespace avrlib {
struct portb
{
static uint8_t port() { return PORTB; }
static void port(uint8_t v) { PORTB = v; }
d66: c3 9a sbi 0x18, 3 ; 24
static uint8_t pin() { return PINB; }
static void pin(uint8_t v) { PINB = v; }
static uint8_t dir() { return DDRB; }
static void dir(uint8_t v) { DDRB = v; }
d68: bb 9a sbi 0x17, 3 ; 23
UBRRL = (F_CPU / (baudrate * 16L) - 1);
sei();
}
uint8_t uart_putchar(uint8_t c) {
led.on(led.YELLOW);
loop_until_bit_is_set(UCSRA, UDRE); //Ausgabe des Zeichens
d6a: 5d 9b sbis 0x0b, 5 ; 11
d6c: fe cf rjmp .-4 ; 0xd6a <__stack+0x90b>
UDR = c;
d6e: 8b e3 ldi r24, 0x3B ; 59
d70: 8c b9 out 0x0c, r24 ; 12
namespace avrlib {
struct portb
{
static uint8_t port() { return PORTB; }
static void port(uint8_t v) { PORTB = v; }
d72: c3 98 cbi 0x18, 3 ; 24
static uint8_t pin() { return PINB; }
static void pin(uint8_t v) { PINB = v; }
static uint8_t dir() { return DDRB; }
static void dir(uint8_t v) { DDRB = v; }
d74: bb 9a sbi 0x17, 3 ; 23
d76: e3 e8 ldi r30, 0x83 ; 131
d78: f1 e0 ldi r31, 0x01 ; 1
init();
this->led = l;
send("Uart done!\n");
}
void send(const char *text) {
while (*text)
d7a: 8d e6 ldi r24, 0x6D ; 109
namespace avrlib {
struct portb
{
static uint8_t port() { return PORTB; }
static void port(uint8_t v) { PORTB = v; }
d7c: c3 9a sbi 0x18, 3 ; 24
static uint8_t pin() { return PINB; }
static void pin(uint8_t v) { PINB = v; }
static uint8_t dir() { return DDRB; }
static void dir(uint8_t v) { DDRB = v; }
d7e: bb 9a sbi 0x17, 3 ; 23
UBRRL = (F_CPU / (baudrate * 16L) - 1);
sei();
}
uint8_t uart_putchar(uint8_t c) {
led.on(led.YELLOW);
loop_until_bit_is_set(UCSRA, UDRE); //Ausgabe des Zeichens
d80: 5d 9b sbis 0x0b, 5 ; 11
d82: fe cf rjmp .-4 ; 0xd80 <__stack+0x921>
UDR = c;
d84: 8c b9 out 0x0c, r24 ; 12
namespace avrlib {
struct portb
{
static uint8_t port() { return PORTB; }
static void port(uint8_t v) { PORTB = v; }
d86: c3 98 cbi 0x18, 3 ; 24
static uint8_t pin() { return PINB; }
static void pin(uint8_t v) { PINB = v; }
static uint8_t dir() { return DDRB; }
static void dir(uint8_t v) { DDRB = v; }
d88: bb 9a sbi 0x17, 3 ; 23
init();
this->led = l;
send("Uart done!\n");
}
void send(const char *text) {
while (*text)
d8a: 81 91 ld r24, Z+
d8c: 81 11 cpse r24, r1
d8e: f6 cf rjmp .-20 ; 0xd7c <__stack+0x91d>
r.send("v1="); r.send(utoa(v1, vs, 10)); r.send(";");
char cs[11]; r.send("cm="); r.send(dtostrf(tm, 10, 2, cs)); r.send(";");
r.send("c0="); r.send(dtostrf(t0, 10, 2, cs)); r.send(";");
r.send("c1="); r.send(dtostrf(t1, 10, 2, cs)); r.send(";");
char ts[11]; r.send("t="); r.send(utoa(target_temp, ts, 10)); r.send(";");
char ms[11]; r.send("m="); r.send(utoa(target_motor, ms, 10)); r.send(";");
d90: 4a e0 ldi r20, 0x0A ; 10
d92: 50 e0 ldi r21, 0x00 ; 0
d94: be 01 movw r22, r28
d96: 6f 5a subi r22, 0xAF ; 175
d98: 7f 4f sbci r23, 0xFF ; 255
d9a: ca 56 subi r28, 0x6A ; 106
d9c: df 4f sbci r29, 0xFF ; 255
d9e: f8 81 ld r31, Y
da0: c6 59 subi r28, 0x96 ; 150
da2: d0 40 sbci r29, 0x00 ; 0
da4: 8f 2f mov r24, r31
da6: 99 27 eor r25, r25
da8: 87 fd sbrc r24, 7
daa: 90 95 com r25
dac: 0e 94 47 0b call 0x168e ; 0x168e <utoa>
db0: dc 01 movw r26, r24
db2: 2c 91 ld r18, X
db4: 22 23 and r18, r18
db6: 61 f0 breq .+24 ; 0xdd0 <__stack+0x971>
l.off(l.YELLOW);
r.send("#### End Bootup ###########################################\n");
l.on(l.GREEN);
}
int main(void)
db8: fc 01 movw r30, r24
dba: 31 96 adiw r30, 0x01 ; 1
namespace avrlib {
struct portb
{
static uint8_t port() { return PORTB; }
static void port(uint8_t v) { PORTB = v; }
dbc: c3 9a sbi 0x18, 3 ; 24
static uint8_t pin() { return PINB; }
static void pin(uint8_t v) { PINB = v; }
static uint8_t dir() { return DDRB; }
static void dir(uint8_t v) { DDRB = v; }
dbe: bb 9a sbi 0x17, 3 ; 23
UBRRL = (F_CPU / (baudrate * 16L) - 1);
sei();
}
uint8_t uart_putchar(uint8_t c) {
led.on(led.YELLOW);
loop_until_bit_is_set(UCSRA, UDRE); //Ausgabe des Zeichens
dc0: 5d 9b sbis 0x0b, 5 ; 11
dc2: fe cf rjmp .-4 ; 0xdc0 <__stack+0x961>
UDR = c;
dc4: 2c b9 out 0x0c, r18 ; 12
namespace avrlib {
struct portb
{
static uint8_t port() { return PORTB; }
static void port(uint8_t v) { PORTB = v; }
dc6: c3 98 cbi 0x18, 3 ; 24
static uint8_t pin() { return PINB; }
static void pin(uint8_t v) { PINB = v; }
static uint8_t dir() { return DDRB; }
static void dir(uint8_t v) { DDRB = v; }
dc8: bb 9a sbi 0x17, 3 ; 23
init();
this->led = l;
send("Uart done!\n");
}
void send(const char *text) {
while (*text)
dca: 21 91 ld r18, Z+
dcc: 21 11 cpse r18, r1
dce: f6 cf rjmp .-20 ; 0xdbc <__stack+0x95d>
namespace avrlib {
struct portb
{
static uint8_t port() { return PORTB; }
static void port(uint8_t v) { PORTB = v; }
dd0: c3 9a sbi 0x18, 3 ; 24
static uint8_t pin() { return PINB; }
static void pin(uint8_t v) { PINB = v; }
static uint8_t dir() { return DDRB; }
static void dir(uint8_t v) { DDRB = v; }
dd2: bb 9a sbi 0x17, 3 ; 23
UBRRL = (F_CPU / (baudrate * 16L) - 1);
sei();
}
uint8_t uart_putchar(uint8_t c) {
led.on(led.YELLOW);
loop_until_bit_is_set(UCSRA, UDRE); //Ausgabe des Zeichens
dd4: 5d 9b sbis 0x0b, 5 ; 11
dd6: fe cf rjmp .-4 ; 0xdd4 <__stack+0x975>
UDR = c;
dd8: 8b e3 ldi r24, 0x3B ; 59
dda: 8c b9 out 0x0c, r24 ; 12
namespace avrlib {
struct portb
{
static uint8_t port() { return PORTB; }
static void port(uint8_t v) { PORTB = v; }
ddc: c3 98 cbi 0x18, 3 ; 24
static uint8_t pin() { return PINB; }
static void pin(uint8_t v) { PINB = v; }
static uint8_t dir() { return DDRB; }
static void dir(uint8_t v) { DDRB = v; }
dde: bb 9a sbi 0x17, 3 ; 23
char cs[11]; r.send("cm="); r.send(dtostrf(tm, 10, 2, cs)); r.send(";");
r.send("c0="); r.send(dtostrf(t0, 10, 2, cs)); r.send(";");
r.send("c1="); r.send(dtostrf(t1, 10, 2, cs)); r.send(";");
char ts[11]; r.send("t="); r.send(utoa(target_temp, ts, 10)); r.send(";");
char ms[11]; r.send("m="); r.send(utoa(target_motor, ms, 10)); r.send(";");
r.send((o.isOn(o.OUT1)==1)?"hon=1;":"hon=0;");
de0: 9a 9b sbis 0x13, 2 ; 19
de2: 03 c0 rjmp .+6 ; 0xdea <__stack+0x98b>
de4: e2 e6 ldi r30, 0x62 ; 98
de6: f1 e0 ldi r31, 0x01 ; 1
de8: 02 c0 rjmp .+4 ; 0xdee <__stack+0x98f>
dea: eb e5 ldi r30, 0x5B ; 91
dec: f1 e0 ldi r31, 0x01 ; 1
init();
this->led = l;
send("Uart done!\n");
}
void send(const char *text) {
while (*text)
dee: 80 81 ld r24, Z
df0: 88 23 and r24, r24
df2: 59 f0 breq .+22 ; 0xe0a <__stack+0x9ab>
l.off(l.YELLOW);
r.send("#### End Bootup ###########################################\n");
l.on(l.GREEN);
}
int main(void)
df4: 31 96 adiw r30, 0x01 ; 1
namespace avrlib {
struct portb
{
static uint8_t port() { return PORTB; }
static void port(uint8_t v) { PORTB = v; }
df6: c3 9a sbi 0x18, 3 ; 24
static uint8_t pin() { return PINB; }
static void pin(uint8_t v) { PINB = v; }
static uint8_t dir() { return DDRB; }
static void dir(uint8_t v) { DDRB = v; }
df8: bb 9a sbi 0x17, 3 ; 23
UBRRL = (F_CPU / (baudrate * 16L) - 1);
sei();
}
uint8_t uart_putchar(uint8_t c) {
led.on(led.YELLOW);
loop_until_bit_is_set(UCSRA, UDRE); //Ausgabe des Zeichens
dfa: 5d 9b sbis 0x0b, 5 ; 11
dfc: fe cf rjmp .-4 ; 0xdfa <__stack+0x99b>
UDR = c;
dfe: 8c b9 out 0x0c, r24 ; 12
namespace avrlib {
struct portb
{
static uint8_t port() { return PORTB; }
static void port(uint8_t v) { PORTB = v; }
e00: c3 98 cbi 0x18, 3 ; 24
static uint8_t pin() { return PINB; }
static void pin(uint8_t v) { PINB = v; }
static uint8_t dir() { return DDRB; }
static void dir(uint8_t v) { DDRB = v; }
e02: bb 9a sbi 0x17, 3 ; 23
init();
this->led = l;
send("Uart done!\n");
}
void send(const char *text) {
while (*text)
e04: 81 91 ld r24, Z+
e06: 81 11 cpse r24, r1
e08: f6 cf rjmp .-20 ; 0xdf6 <__stack+0x997>
r.send("c0="); r.send(dtostrf(t0, 10, 2, cs)); r.send(";");
r.send("c1="); r.send(dtostrf(t1, 10, 2, cs)); r.send(";");
char ts[11]; r.send("t="); r.send(utoa(target_temp, ts, 10)); r.send(";");
char ms[11]; r.send("m="); r.send(utoa(target_motor, ms, 10)); r.send(";");
r.send((o.isOn(o.OUT1)==1)?"hon=1;":"hon=0;");
r.send((o.isOn(o.OUT2)==1)?"mon=1":"mon=0");
e0a: 9b 9b sbis 0x13, 3 ; 19
e0c: 03 c0 rjmp .+6 ; 0xe14 <__stack+0x9b5>
e0e: ef e6 ldi r30, 0x6F ; 111
e10: f1 e0 ldi r31, 0x01 ; 1
e12: 02 c0 rjmp .+4 ; 0xe18 <__stack+0x9b9>
e14: e9 e6 ldi r30, 0x69 ; 105
e16: f1 e0 ldi r31, 0x01 ; 1
e18: 80 81 ld r24, Z
e1a: 88 23 and r24, r24
e1c: 59 f0 breq .+22 ; 0xe34 <__stack+0x9d5>
l.off(l.YELLOW);
r.send("#### End Bootup ###########################################\n");
l.on(l.GREEN);
}
int main(void)
e1e: 31 96 adiw r30, 0x01 ; 1
namespace avrlib {
struct portb
{
static uint8_t port() { return PORTB; }
static void port(uint8_t v) { PORTB = v; }
e20: c3 9a sbi 0x18, 3 ; 24
static uint8_t pin() { return PINB; }
static void pin(uint8_t v) { PINB = v; }
static uint8_t dir() { return DDRB; }
static void dir(uint8_t v) { DDRB = v; }
e22: bb 9a sbi 0x17, 3 ; 23
UBRRL = (F_CPU / (baudrate * 16L) - 1);
sei();
}
uint8_t uart_putchar(uint8_t c) {
led.on(led.YELLOW);
loop_until_bit_is_set(UCSRA, UDRE); //Ausgabe des Zeichens
e24: 5d 9b sbis 0x0b, 5 ; 11
e26: fe cf rjmp .-4 ; 0xe24 <__stack+0x9c5>
UDR = c;
e28: 8c b9 out 0x0c, r24 ; 12
namespace avrlib {
struct portb
{
static uint8_t port() { return PORTB; }
static void port(uint8_t v) { PORTB = v; }
e2a: c3 98 cbi 0x18, 3 ; 24
static uint8_t pin() { return PINB; }
static void pin(uint8_t v) { PINB = v; }
static uint8_t dir() { return DDRB; }
static void dir(uint8_t v) { DDRB = v; }
e2c: bb 9a sbi 0x17, 3 ; 23
init();
this->led = l;
send("Uart done!\n");
}
void send(const char *text) {
while (*text)
e2e: 81 91 ld r24, Z+
e30: 81 11 cpse r24, r1
e32: f6 cf rjmp .-20 ; 0xe20 <__stack+0x9c1>
namespace avrlib {
struct portb
{
static uint8_t port() { return PORTB; }
static void port(uint8_t v) { PORTB = v; }
e34: c3 9a sbi 0x18, 3 ; 24
static uint8_t pin() { return PINB; }
static void pin(uint8_t v) { PINB = v; }
static uint8_t dir() { return DDRB; }
static void dir(uint8_t v) { DDRB = v; }
e36: bb 9a sbi 0x17, 3 ; 23
UBRRL = (F_CPU / (baudrate * 16L) - 1);
sei();
}
uint8_t uart_putchar(uint8_t c) {
led.on(led.YELLOW);
loop_until_bit_is_set(UCSRA, UDRE); //Ausgabe des Zeichens
e38: 5d 9b sbis 0x0b, 5 ; 11
e3a: fe cf rjmp .-4 ; 0xe38 <__stack+0x9d9>
UDR = c;
e3c: 8a e0 ldi r24, 0x0A ; 10
e3e: 8c b9 out 0x0c, r24 ; 12
namespace avrlib {
struct portb
{
static uint8_t port() { return PORTB; }
static void port(uint8_t v) { PORTB = v; }
e40: c3 98 cbi 0x18, 3 ; 24
static uint8_t pin() { return PINB; }
static void pin(uint8_t v) { PINB = v; }
static uint8_t dir() { return DDRB; }
static void dir(uint8_t v) { DDRB = v; }
e42: bb 9a sbi 0x17, 3 ; 23
#else
//round up by default
__ticks_dc = (uint32_t)(ceil(fabs(__tmp)));
#endif
__builtin_avr_delay_cycles(__ticks_dc);
e44: bf ef ldi r27, 0xFF ; 255
e46: e0 e7 ldi r30, 0x70 ; 112
e48: f2 e0 ldi r31, 0x02 ; 2
e4a: b1 50 subi r27, 0x01 ; 1
e4c: e0 40 sbci r30, 0x00 ; 0
e4e: f0 40 sbci r31, 0x00 ; 0
e50: e1 f7 brne .-8 ; 0xe4a <__stack+0x9eb>
e52: 00 c0 rjmp .+0 ; 0xe54 <__stack+0x9f5>
e54: 00 00 nop
int8_t target_motor = 20;
float pwm_value = 0;
uint16_t v0a[20] = {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0};
uint16_t v1a[20] = {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0};
uint8_t p = 0;
while(1)
e56: fc ca rjmp .-2568 ; 0x450 <main+0x96>
if(ausg < 0)
ausg = 0;
if(ausg > 5)
ausg = 5;
if(val < 0)
val = 0;
e58: 41 2c mov r4, r1
e5a: 51 2c mov r5, r1
e5c: c6 57 subi r28, 0x76 ; 118
e5e: df 4f sbci r29, 0xFF ; 255
e60: 18 82 st Y, r1
e62: ca 58 subi r28, 0x8A ; 138
e64: d0 40 sbci r29, 0x00 ; 0
e66: c5 57 subi r28, 0x75 ; 117
e68: df 4f sbci r29, 0xFF ; 255
e6a: 18 82 st Y, r1
e6c: cb 58 subi r28, 0x8B ; 139
e6e: d0 40 sbci r29, 0x00 ; 0
e70: 0e c0 rjmp .+28 ; 0xe8e <__stack+0xa2f>
if(val > 20)
val = 20;
e72: 41 2c mov r4, r1
e74: 51 2c mov r5, r1
e76: 20 ea ldi r18, 0xA0 ; 160
e78: c6 57 subi r28, 0x76 ; 118
e7a: df 4f sbci r29, 0xFF ; 255
e7c: 28 83 st Y, r18
e7e: ca 58 subi r28, 0x8A ; 138
e80: d0 40 sbci r29, 0x00 ; 0
e82: 31 e4 ldi r19, 0x41 ; 65
e84: c5 57 subi r28, 0x75 ; 117
e86: df 4f sbci r29, 0xFF ; 255
e88: 38 83 st Y, r19
e8a: cb 58 subi r28, 0x8B ; 139
e8c: d0 40 sbci r29, 0x00 ; 0
this->pwm[ausg] = (uint8_t)val;
e8e: c6 57 subi r28, 0x76 ; 118
e90: df 4f sbci r29, 0xFF ; 255
e92: 38 81 ld r19, Y
e94: ca 58 subi r28, 0x8A ; 138
e96: d0 40 sbci r29, 0x00 ; 0
e98: c5 57 subi r28, 0x75 ; 117
e9a: df 4f sbci r29, 0xFF ; 255
e9c: 28 81 ld r18, Y
e9e: cb 58 subi r28, 0x8B ; 139
ea0: d0 40 sbci r29, 0x00 ; 0
ea2: 64 2d mov r22, r4
ea4: 75 2d mov r23, r5
ea6: 83 2f mov r24, r19
ea8: 92 2f mov r25, r18
eaa: 0e 94 a7 09 call 0x134e ; 0x134e <__fixunssfsi>
eae: 60 93 df 01 sts 0x01DF, r22
eb2: e1 e9 ldi r30, 0x91 ; 145
eb4: f1 e0 ldi r31, 0x01 ; 1
init();
this->led = l;
send("Uart done!\n");
}
void send(const char *text) {
while (*text)
eb6: 80 e7 ldi r24, 0x70 ; 112
eb8: a4 cd rjmp .-1208 ; 0xa02 <__stack+0x5a3>
00000eba <__vector_6>:
r.send("\n");
_delay_ms(50);
}
}
ISR(TIMER1_COMPA_vect) {
eba: 1f 92 push r1
ebc: 0f 92 push r0
ebe: 0f b6 in r0, 0x3f ; 63
ec0: 0f 92 push r0
ec2: 11 24 eor r1, r1
ec4: 2f 93 push r18
ec6: 3f 93 push r19
ec8: 4f 93 push r20
eca: 5f 93 push r21
ecc: 6f 93 push r22
ece: 7f 93 push r23
ed0: 8f 93 push r24
ed2: 9f 93 push r25
ed4: af 93 push r26
ed6: bf 93 push r27
ed8: ef 93 push r30
eda: ff 93 push r31
if(ausg > 5)
ausg = 5;
return this->pwm[ausg];
}
void timer() {
if (this->pct++ >= 20) {
edc: 80 91 dd 01 lds r24, 0x01DD
ee0: 84 31 cpi r24, 0x14 ; 20
ee2: 08 f4 brcc .+2 ; 0xee6 <__vector_6+0x2c>
ee4: 51 c0 rjmp .+162 ; 0xf88 <__vector_6+0xce>
this->pct=0;
ee6: 10 92 dd 01 sts 0x01DD, r1
eea: 51 c0 rjmp .+162 ; 0xf8e <__vector_6+0xd4>
}
for(uint8_t i = 0; i < 6; i++) {
if(this->pwm[i] >= this->pct && this->pwm[i] != 0) {
eec: 82 2f mov r24, r18
eee: 91 91 ld r25, Z+
ef0: 6c 91 ld r22, X
ef2: 96 17 cp r25, r22
ef4: 18 f1 brcs .+70 ; 0xf3c <__vector_6+0x82>
ef6: 99 23 and r25, r25
ef8: 09 f1 breq .+66 ; 0xf3c <__vector_6+0x82>
this->on((1<<i));
efa: ba 01 movw r22, r20
efc: 02 2e mov r0, r18
efe: 02 c0 rjmp .+4 ; 0xf04 <__vector_6+0x4a>
f00: 66 0f add r22, r22
f02: 77 1f adc r23, r23
f04: 0a 94 dec r0
f06: e2 f7 brpl .-8 ; 0xf00 <__vector_6+0x46>
f08: cb 01 movw r24, r22
if(ausg & OUT6) {
out6::make_low();
}
}
void on(uint8_t ausg = 255) {
if(ausg & OUT1) {
f0a: 60 ff sbrs r22, 0
f0c: 02 c0 rjmp .+4 ; 0xf12 <__vector_6+0x58>
namespace avrlib {
struct portc
{
static uint8_t port() { return PORTC; }
static void port(uint8_t v) { PORTC = v; }
f0e: aa 9a sbi 0x15, 2 ; 21
static uint8_t pin() { return PINC; }
static void pin(uint8_t v) { PINC = v; }
static uint8_t dir() { return DDRC; }
static void dir(uint8_t v) { DDRC = v; }
f10: a2 9a sbi 0x14, 2 ; 20
out1::make_high();
}
if(ausg & OUT2) {
f12: 81 ff sbrs r24, 1
f14: 02 c0 rjmp .+4 ; 0xf1a <__vector_6+0x60>
namespace avrlib {
struct portc
{
static uint8_t port() { return PORTC; }
static void port(uint8_t v) { PORTC = v; }
f16: ab 9a sbi 0x15, 3 ; 21
static uint8_t pin() { return PINC; }
static void pin(uint8_t v) { PINC = v; }
static uint8_t dir() { return DDRC; }
static void dir(uint8_t v) { DDRC = v; }
f18: a3 9a sbi 0x14, 3 ; 20
out2::make_high();
}
if(ausg & OUT3) {
f1a: 82 ff sbrs r24, 2
f1c: 02 c0 rjmp .+4 ; 0xf22 <__vector_6+0x68>
namespace avrlib {
struct portc
{
static uint8_t port() { return PORTC; }
static void port(uint8_t v) { PORTC = v; }
f1e: ac 9a sbi 0x15, 4 ; 21
static uint8_t pin() { return PINC; }
static void pin(uint8_t v) { PINC = v; }
static uint8_t dir() { return DDRC; }
static void dir(uint8_t v) { DDRC = v; }
f20: a4 9a sbi 0x14, 4 ; 20
out3::make_high();
}
if(ausg & OUT4) {
f22: 83 ff sbrs r24, 3
f24: 02 c0 rjmp .+4 ; 0xf2a <__vector_6+0x70>
namespace avrlib {
struct portc
{
static uint8_t port() { return PORTC; }
static void port(uint8_t v) { PORTC = v; }
f26: ad 9a sbi 0x15, 5 ; 21
static uint8_t pin() { return PINC; }
static void pin(uint8_t v) { PINC = v; }
static uint8_t dir() { return DDRC; }
static void dir(uint8_t v) { DDRC = v; }
f28: a5 9a sbi 0x14, 5 ; 20
out4::make_high();
}
if(ausg & OUT5) {
f2a: 84 ff sbrs r24, 4
f2c: 02 c0 rjmp .+4 ; 0xf32 <__vector_6+0x78>
namespace avrlib {
struct portc
{
static uint8_t port() { return PORTC; }
static void port(uint8_t v) { PORTC = v; }
f2e: ae 9a sbi 0x15, 6 ; 21
static uint8_t pin() { return PINC; }
static void pin(uint8_t v) { PINC = v; }
static uint8_t dir() { return DDRC; }
static void dir(uint8_t v) { DDRC = v; }
f30: a6 9a sbi 0x14, 6 ; 20
out5::make_high();
}
if(ausg & OUT6) {
f32: 85 ff sbrs r24, 5
f34: 22 c0 rjmp .+68 ; 0xf7a <__vector_6+0xc0>
namespace avrlib {
struct portc
{
static uint8_t port() { return PORTC; }
static void port(uint8_t v) { PORTC = v; }
f36: af 9a sbi 0x15, 7 ; 21
static uint8_t pin() { return PINC; }
static void pin(uint8_t v) { PINC = v; }
static uint8_t dir() { return DDRC; }
static void dir(uint8_t v) { DDRC = v; }
f38: a7 9a sbi 0x14, 7 ; 20
f3a: 1f c0 rjmp .+62 ; 0xf7a <__vector_6+0xc0>
}
for(uint8_t i = 0; i < 6; i++) {
if(this->pwm[i] >= this->pct && this->pwm[i] != 0) {
this->on((1<<i));
} else {
this->off((1<<i));
f3c: ba 01 movw r22, r20
f3e: 02 c0 rjmp .+4 ; 0xf44 <__vector_6+0x8a>
f40: 66 0f add r22, r22
f42: 77 1f adc r23, r23
f44: 8a 95 dec r24
f46: e2 f7 brpl .-8 ; 0xf40 <__vector_6+0x86>
f48: cb 01 movw r24, r22
public:
SSR() {
init();
}
void off(uint8_t ausg = 255) {
if(ausg & OUT1) {
f4a: 60 ff sbrs r22, 0
f4c: 02 c0 rjmp .+4 ; 0xf52 <__vector_6+0x98>
namespace avrlib {
struct portc
{
static uint8_t port() { return PORTC; }
static void port(uint8_t v) { PORTC = v; }
f4e: aa 98 cbi 0x15, 2 ; 21
static uint8_t pin() { return PINC; }
static void pin(uint8_t v) { PINC = v; }
static uint8_t dir() { return DDRC; }
static void dir(uint8_t v) { DDRC = v; }
f50: a2 9a sbi 0x14, 2 ; 20
out1::make_low();
}
if(ausg & OUT2) {
f52: 81 ff sbrs r24, 1
f54: 02 c0 rjmp .+4 ; 0xf5a <__vector_6+0xa0>
namespace avrlib {
struct portc
{
static uint8_t port() { return PORTC; }
static void port(uint8_t v) { PORTC = v; }
f56: ab 98 cbi 0x15, 3 ; 21
static uint8_t pin() { return PINC; }
static void pin(uint8_t v) { PINC = v; }
static uint8_t dir() { return DDRC; }
static void dir(uint8_t v) { DDRC = v; }
f58: a3 9a sbi 0x14, 3 ; 20
out2::make_low();
}
if(ausg & OUT3) {
f5a: 82 ff sbrs r24, 2
f5c: 02 c0 rjmp .+4 ; 0xf62 <__vector_6+0xa8>
namespace avrlib {
struct portc
{
static uint8_t port() { return PORTC; }
static void port(uint8_t v) { PORTC = v; }
f5e: ac 98 cbi 0x15, 4 ; 21
static uint8_t pin() { return PINC; }
static void pin(uint8_t v) { PINC = v; }
static uint8_t dir() { return DDRC; }
static void dir(uint8_t v) { DDRC = v; }
f60: a4 9a sbi 0x14, 4 ; 20
out3::make_low();
}
if(ausg & OUT4) {
f62: 83 ff sbrs r24, 3
f64: 02 c0 rjmp .+4 ; 0xf6a <__vector_6+0xb0>
namespace avrlib {
struct portc
{
static uint8_t port() { return PORTC; }
static void port(uint8_t v) { PORTC = v; }
f66: ad 98 cbi 0x15, 5 ; 21
static uint8_t pin() { return PINC; }
static void pin(uint8_t v) { PINC = v; }
static uint8_t dir() { return DDRC; }
static void dir(uint8_t v) { DDRC = v; }
f68: a5 9a sbi 0x14, 5 ; 20
out4::make_low();
}
if(ausg & OUT5) {
f6a: 84 ff sbrs r24, 4
f6c: 02 c0 rjmp .+4 ; 0xf72 <__vector_6+0xb8>
namespace avrlib {
struct portc
{
static uint8_t port() { return PORTC; }
static void port(uint8_t v) { PORTC = v; }
f6e: ae 98 cbi 0x15, 6 ; 21
static uint8_t pin() { return PINC; }
static void pin(uint8_t v) { PINC = v; }
static uint8_t dir() { return DDRC; }
static void dir(uint8_t v) { DDRC = v; }
f70: a6 9a sbi 0x14, 6 ; 20
out5::make_low();
}
if(ausg & OUT6) {
f72: 85 ff sbrs r24, 5
f74: 02 c0 rjmp .+4 ; 0xf7a <__vector_6+0xc0>
namespace avrlib {
struct portc
{
static uint8_t port() { return PORTC; }
static void port(uint8_t v) { PORTC = v; }
f76: af 98 cbi 0x15, 7 ; 21
static uint8_t pin() { return PINC; }
static void pin(uint8_t v) { PINC = v; }
static uint8_t dir() { return DDRC; }
static void dir(uint8_t v) { DDRC = v; }
f78: a7 9a sbi 0x14, 7 ; 20
f7a: 2f 5f subi r18, 0xFF ; 255
f7c: 3f 4f sbci r19, 0xFF ; 255
}
void timer() {
if (this->pct++ >= 20) {
this->pct=0;
}
for(uint8_t i = 0; i < 6; i++) {
f7e: 26 30 cpi r18, 0x06 ; 6
f80: 31 05 cpc r19, r1
f82: 09 f0 breq .+2 ; 0xf86 <__vector_6+0xcc>
f84: b3 cf rjmp .-154 ; 0xeec <__vector_6+0x32>
f86: 0c c0 rjmp .+24 ; 0xfa0 <__vector_6+0xe6>
if(ausg > 5)
ausg = 5;
return this->pwm[ausg];
}
void timer() {
if (this->pct++ >= 20) {
f88: 8f 5f subi r24, 0xFF ; 255
f8a: 80 93 dd 01 sts 0x01DD, r24
f8e: ee ed ldi r30, 0xDE ; 222
f90: f1 e0 ldi r31, 0x01 ; 1
f92: 20 e0 ldi r18, 0x00 ; 0
f94: 30 e0 ldi r19, 0x00 ; 0
this->pct=0;
}
for(uint8_t i = 0; i < 6; i++) {
if(this->pwm[i] >= this->pct && this->pwm[i] != 0) {
f96: ad ed ldi r26, 0xDD ; 221
f98: b1 e0 ldi r27, 0x01 ; 1
this->on((1<<i));
} else {
this->off((1<<i));
f9a: 41 e0 ldi r20, 0x01 ; 1
f9c: 50 e0 ldi r21, 0x00 ; 0
f9e: a6 cf rjmp .-180 ; 0xeec <__vector_6+0x32>
o.timer();
}
fa0: ff 91 pop r31
fa2: ef 91 pop r30
fa4: bf 91 pop r27
fa6: af 91 pop r26
fa8: 9f 91 pop r25
faa: 8f 91 pop r24
fac: 7f 91 pop r23
fae: 6f 91 pop r22
fb0: 5f 91 pop r21
fb2: 4f 91 pop r20
fb4: 3f 91 pop r19
fb6: 2f 91 pop r18
fb8: 0f 90 pop r0
fba: 0f be out 0x3f, r0 ; 63
fbc: 0f 90 pop r0
fbe: 1f 90 pop r1
fc0: 18 95 reti
00000fc2 <__vector_1>:
ISR(INT0_vect) {
fc2: 1f 92 push r1
fc4: 0f 92 push r0
fc6: 0f b6 in r0, 0x3f ; 63
fc8: 0f 92 push r0
fca: 11 24 eor r1, r1
fcc: 8f 93 push r24
}
void intr() {
GIFR = (1<<INTF0);
fce: 80 e4 ldi r24, 0x40 ; 64
fd0: 8a bf out 0x3a, r24 ; 58
b.intr();
}
fd2: 8f 91 pop r24
fd4: 0f 90 pop r0
fd6: 0f be out 0x3f, r0 ; 63
fd8: 0f 90 pop r0
fda: 1f 90 pop r1
fdc: 18 95 reti
00000fde <__vector_11>:
ISR(USART_RXC_vect) {
fde: 1f 92 push r1
fe0: 0f 92 push r0
fe2: 0f b6 in r0, 0x3f ; 63
fe4: 0f 92 push r0
fe6: 11 24 eor r1, r1
fe8: 2f 93 push r18
fea: 3f 93 push r19
fec: 4f 93 push r20
fee: 8f 93 push r24
ff0: 9f 93 push r25
ff2: ef 93 push r30
ff4: ff 93 push r31
int8_t m = this->motor;
this->motor = -1;
return m;
}
void intr() {
uint8_t nextChar = UDR;
ff6: 8c b1 in r24, 0x0c ; 12
//uart_putchar(nextChar);
if( nextChar != '\n' && nextChar != '\r' && this->uart_str_count < this->UART_MAXSTRLEN ) {
ff8: 8a 30 cpi r24, 0x0A ; 10
ffa: 79 f0 breq .+30 ; 0x101a <__vector_11+0x3c>
ffc: 8d 30 cpi r24, 0x0D ; 13
ffe: 69 f0 breq .+26 ; 0x101a <__vector_11+0x3c>
1000: 90 91 d7 01 lds r25, 0x01D7
1004: 95 30 cpi r25, 0x05 ; 5
1006: 48 f4 brcc .+18 ; 0x101a <__vector_11+0x3c>
this->uart_string[this->uart_str_count] = nextChar;
1008: e9 2f mov r30, r25
100a: f0 e0 ldi r31, 0x00 ; 0
100c: ed 52 subi r30, 0x2D ; 45
100e: fe 4f sbci r31, 0xFE ; 254
1010: 85 83 std Z+5, r24 ; 0x05
this->uart_str_count++;
1012: 9f 5f subi r25, 0xFF ; 255
1014: 90 93 d7 01 sts 0x01D7, r25
1018: 33 c0 rjmp .+102 ; 0x1080 <__vector_11+0xa2>
} else {
if(this->uart_string[0] == 't') {
101a: 80 91 d8 01 lds r24, 0x01D8
101e: 84 37 cpi r24, 0x74 ; 116
1020: f1 f4 brne .+60 ; 0x105e <__vector_11+0x80>
this->temp = (this->uart_string[1]-48)*100+(this->uart_string[2]-48)*10+(this->uart_string[3]-48);
1022: 40 91 d9 01 lds r20, 0x01D9
1026: 80 91 da 01 lds r24, 0x01DA
102a: 90 e0 ldi r25, 0x00 ; 0
102c: 88 0f add r24, r24
102e: 99 1f adc r25, r25
1030: 9c 01 movw r18, r24
1032: 22 0f add r18, r18
1034: 33 1f adc r19, r19
1036: 22 0f add r18, r18
1038: 33 1f adc r19, r19
103a: 82 0f add r24, r18
103c: 93 1f adc r25, r19
103e: 24 e6 ldi r18, 0x64 ; 100
1040: 42 9f mul r20, r18
1042: 80 0d add r24, r0
1044: 91 1d adc r25, r1
1046: 11 24 eor r1, r1
1048: 20 91 db 01 lds r18, 0x01DB
104c: 82 0f add r24, r18
104e: 91 1d adc r25, r1
1050: 80 5d subi r24, 0xD0 ; 208
1052: 94 41 sbci r25, 0x14 ; 20
1054: 90 93 d5 01 sts 0x01D5, r25
1058: 80 93 d4 01 sts 0x01D4, r24
105c: 0f c0 rjmp .+30 ; 0x107c <__vector_11+0x9e>
}
if(uart_string[0] == 'm') {
105e: 8d 36 cpi r24, 0x6D ; 109
1060: 69 f4 brne .+26 ; 0x107c <__vector_11+0x9e>
this->motor = (this->uart_string[1]-48)*10+(this->uart_string[2]-48);
1062: 90 91 da 01 lds r25, 0x01DA
1066: 90 51 subi r25, 0x10 ; 16
1068: 80 91 d9 01 lds r24, 0x01D9
106c: 88 0f add r24, r24
106e: 28 2f mov r18, r24
1070: 22 0f add r18, r18
1072: 22 0f add r18, r18
1074: 82 0f add r24, r18
1076: 89 0f add r24, r25
1078: 80 93 d6 01 sts 0x01D6, r24
}
this->uart_str_count = 0;
107c: 10 92 d7 01 sts 0x01D7, r1
r.intr();
1080: ff 91 pop r31
1082: ef 91 pop r30
1084: 9f 91 pop r25
1086: 8f 91 pop r24
1088: 4f 91 pop r20
108a: 3f 91 pop r19
108c: 2f 91 pop r18
108e: 0f 90 pop r0
1090: 0f be out 0x3f, r0 ; 63
1092: 0f 90 pop r0
1094: 1f 90 pop r1
1096: 18 95 reti
00001098 <_ZN3SSRIN6avrlib5portcELi2ELi3ELi4ELi5ELi6ELi7EEC1Ev>:
#include "hardware/pin.hpp"
template <typename Port, int pin_out1, int pin_out2, int pin_out3, int pin_out4, int pin_out5, int pin_out6>
class SSR {
public:
SSR() {
1098: fc 01 movw r30, r24
109a: 11 92 st Z+, r1
109c: 86 e0 ldi r24, 0x06 ; 6
109e: df 01 movw r26, r30
10a0: 1d 92 st X+, r1
10a2: 8a 95 dec r24
10a4: e9 f7 brne .-6 ; 0x10a0 <_ZN3SSRIN6avrlib5portcELi2ELi3ELi4ELi5ELi6ELi7EEC1Ev+0x8>
10a6: a2 9a sbi 0x14, 2 ; 20
10a8: a3 9a sbi 0x14, 3 ; 20
10aa: a4 9a sbi 0x14, 4 ; 20
10ac: a5 9a sbi 0x14, 5 ; 20
10ae: a6 9a sbi 0x14, 6 ; 20
10b0: a7 9a sbi 0x14, 7 ; 20
namespace avrlib {
struct portc
{
static uint8_t port() { return PORTC; }
static void port(uint8_t v) { PORTC = v; }
10b2: aa 98 cbi 0x15, 2 ; 21
static uint8_t pin() { return PINC; }
static void pin(uint8_t v) { PINC = v; }
static uint8_t dir() { return DDRC; }
static void dir(uint8_t v) { DDRC = v; }
10b4: a2 9a sbi 0x14, 2 ; 20
namespace avrlib {
struct portc
{
static uint8_t port() { return PORTC; }
static void port(uint8_t v) { PORTC = v; }
10b6: ab 98 cbi 0x15, 3 ; 21
static uint8_t pin() { return PINC; }
static void pin(uint8_t v) { PINC = v; }
static uint8_t dir() { return DDRC; }
static void dir(uint8_t v) { DDRC = v; }
10b8: a3 9a sbi 0x14, 3 ; 20
namespace avrlib {
struct portc
{
static uint8_t port() { return PORTC; }
static void port(uint8_t v) { PORTC = v; }
10ba: ac 98 cbi 0x15, 4 ; 21
static uint8_t pin() { return PINC; }
static void pin(uint8_t v) { PINC = v; }
static uint8_t dir() { return DDRC; }
static void dir(uint8_t v) { DDRC = v; }
10bc: a4 9a sbi 0x14, 4 ; 20
namespace avrlib {
struct portc
{
static uint8_t port() { return PORTC; }
static void port(uint8_t v) { PORTC = v; }
10be: ad 98 cbi 0x15, 5 ; 21
static uint8_t pin() { return PINC; }
static void pin(uint8_t v) { PINC = v; }
static uint8_t dir() { return DDRC; }
static void dir(uint8_t v) { DDRC = v; }
10c0: a5 9a sbi 0x14, 5 ; 20
namespace avrlib {
struct portc
{
static uint8_t port() { return PORTC; }
static void port(uint8_t v) { PORTC = v; }
10c2: ae 98 cbi 0x15, 6 ; 21
static uint8_t pin() { return PINC; }
static void pin(uint8_t v) { PINC = v; }
static uint8_t dir() { return DDRC; }
static void dir(uint8_t v) { DDRC = v; }
10c4: a6 9a sbi 0x14, 6 ; 20
namespace avrlib {
struct portc
{
static uint8_t port() { return PORTC; }
static void port(uint8_t v) { PORTC = v; }
10c6: af 98 cbi 0x15, 7 ; 21
static uint8_t pin() { return PINC; }
static void pin(uint8_t v) { PINC = v; }
static uint8_t dir() { return DDRC; }
static void dir(uint8_t v) { DDRC = v; }
10c8: a7 9a sbi 0x14, 7 ; 20
10ca: 08 95 ret
000010cc <_ZN5UsartILm38400EN6avrlib5portdELi5ELi4ELi3EEC1E3LedINS0_5portbELi4ELi3ELi2EE>:
#define USART_H_
template <uint32_t baudrate, typename RSPort, int pin_rts, int pin_cts, int pin_pwren>
class Usart {
public:
Usart(ledclass l) {
10cc: cf 93 push r28
10ce: df 93 push r29
10d0: 1f 92 push r1
10d2: cd b7 in r28, 0x3d ; 61
10d4: de b7 in r29, 0x3e ; 62
10d6: fc 01 movw r30, r24
10d8: 69 83 std Y+1, r22 ; 0x01
10da: bc 9a sbi 0x17, 4 ; 23
10dc: bb 9a sbi 0x17, 3 ; 23
10de: ba 9a sbi 0x17, 2 ; 23
namespace avrlib {
struct portb
{
static uint8_t port() { return PORTB; }
static void port(uint8_t v) { PORTB = v; }
10e0: c4 98 cbi 0x18, 4 ; 24
static uint8_t pin() { return PINB; }
static void pin(uint8_t v) { PINB = v; }
static uint8_t dir() { return DDRB; }
static void dir(uint8_t v) { DDRB = v; }
10e2: bc 9a sbi 0x17, 4 ; 23
namespace avrlib {
struct portb
{
static uint8_t port() { return PORTB; }
static void port(uint8_t v) { PORTB = v; }
10e4: c3 98 cbi 0x18, 3 ; 24
static uint8_t pin() { return PINB; }
static void pin(uint8_t v) { PINB = v; }
static uint8_t dir() { return DDRB; }
static void dir(uint8_t v) { DDRB = v; }
10e6: bb 9a sbi 0x17, 3 ; 23
namespace avrlib {
struct portb
{
static uint8_t port() { return PORTB; }
static void port(uint8_t v) { PORTB = v; }
10e8: c2 98 cbi 0x18, 2 ; 24
static uint8_t pin() { return PINB; }
static void pin(uint8_t v) { PINB = v; }
static uint8_t dir() { return DDRB; }
static void dir(uint8_t v) { DDRB = v; }
10ea: ba 9a sbi 0x17, 2 ; 23
10ec: 8f ef ldi r24, 0xFF ; 255
10ee: 9f ef ldi r25, 0xFF ; 255
10f0: 92 83 std Z+2, r25 ; 0x02
10f2: 81 83 std Z+1, r24 ; 0x01
10f4: 8f ef ldi r24, 0xFF ; 255
10f6: 83 83 std Z+3, r24 ; 0x03
10f8: 14 82 std Z+4, r1 ; 0x04
this->uart_str_count = 0;
}
}
private:
void init() {
UCSRA = 0;
10fa: 1b b8 out 0x0b, r1 ; 11
UCSRB = (1<<TXEN) | (1<<RXEN) | (1<<RXCIE);
10fc: 88 e9 ldi r24, 0x98 ; 152
10fe: 8a b9 out 0x0a, r24 ; 10
UCSRC = (1<<URSEL) | (1<<UPM1) | (1<<UCSZ1) | (1<<UCSZ0); //8E1
1100: 86 ea ldi r24, 0xA6 ; 166
1102: 80 bd out 0x20, r24 ; 32
UBRRH = 0;
1104: 10 bc out 0x20, r1 ; 32
UBRRL = (F_CPU / (baudrate * 16L) - 1);
1106: 89 e1 ldi r24, 0x19 ; 25
1108: 89 b9 out 0x09, r24 ; 9
sei();
110a: 78 94 sei
110c: e6 e9 ldi r30, 0x96 ; 150
110e: f1 e0 ldi r31, 0x01 ; 1
init();
this->led = l;
send("Uart done!\n");
}
void send(const char *text) {
while (*text)
1110: 85 e5 ldi r24, 0x55 ; 85
namespace avrlib {
struct portb
{
static uint8_t port() { return PORTB; }
static void port(uint8_t v) { PORTB = v; }
1112: c3 9a sbi 0x18, 3 ; 24
static uint8_t pin() { return PINB; }
static void pin(uint8_t v) { PINB = v; }
static uint8_t dir() { return DDRB; }
static void dir(uint8_t v) { DDRB = v; }
1114: bb 9a sbi 0x17, 3 ; 23
UBRRL = (F_CPU / (baudrate * 16L) - 1);
sei();
}
uint8_t uart_putchar(uint8_t c) {
led.on(led.YELLOW);
loop_until_bit_is_set(UCSRA, UDRE); //Ausgabe des Zeichens
1116: 5d 9b sbis 0x0b, 5 ; 11
1118: fe cf rjmp .-4 ; 0x1116 <_ZN5UsartILm38400EN6avrlib5portdELi5ELi4ELi3EEC1E3LedINS0_5portbELi4ELi3ELi2EE+0x4a>
UDR = c;
111a: 8c b9 out 0x0c, r24 ; 12
namespace avrlib {
struct portb
{
static uint8_t port() { return PORTB; }
static void port(uint8_t v) { PORTB = v; }
111c: c3 98 cbi 0x18, 3 ; 24
static uint8_t pin() { return PINB; }
static void pin(uint8_t v) { PINB = v; }
static uint8_t dir() { return DDRB; }
static void dir(uint8_t v) { DDRB = v; }
111e: bb 9a sbi 0x17, 3 ; 23
init();
this->led = l;
send("Uart done!\n");
}
void send(const char *text) {
while (*text)
1120: 81 91 ld r24, Z+
1122: 81 11 cpse r24, r1
1124: f6 cf rjmp .-20 ; 0x1112 <_ZN5UsartILm38400EN6avrlib5portdELi5ELi4ELi3EEC1E3LedINS0_5portbELi4ELi3ELi2EE+0x46>
public:
Usart(ledclass l) {
init();
this->led = l;
send("Uart done!\n");
}
1126: 0f 90 pop r0
1128: df 91 pop r29
112a: cf 91 pop r28
112c: 08 95 ret
0000112e <_ZN6ButtonIN6avrlib5portdELi2EEC1E3LedINS0_5portbELi4ELi3ELi2EE>:
template <typename BPort, int pin_bt1>
class Button {
public:
Button(ledclass l) {
112e: cf 93 push r28
1130: df 93 push r29
1132: 1f 92 push r1
1134: cd b7 in r28, 0x3d ; 61
1136: de b7 in r29, 0x3e ; 62
1138: 69 83 std Y+1, r22 ; 0x01
113a: bc 9a sbi 0x17, 4 ; 23
113c: bb 9a sbi 0x17, 3 ; 23
113e: ba 9a sbi 0x17, 2 ; 23
namespace avrlib {
struct portb
{
static uint8_t port() { return PORTB; }
static void port(uint8_t v) { PORTB = v; }
1140: c4 98 cbi 0x18, 4 ; 24
static uint8_t pin() { return PINB; }
static void pin(uint8_t v) { PINB = v; }
static uint8_t dir() { return DDRB; }
static void dir(uint8_t v) { DDRB = v; }
1142: bc 9a sbi 0x17, 4 ; 23
namespace avrlib {
struct portb
{
static uint8_t port() { return PORTB; }
static void port(uint8_t v) { PORTB = v; }
1144: c3 98 cbi 0x18, 3 ; 24
static uint8_t pin() { return PINB; }
static void pin(uint8_t v) { PINB = v; }
static uint8_t dir() { return DDRB; }
static void dir(uint8_t v) { DDRB = v; }
1146: bb 9a sbi 0x17, 3 ; 23
namespace avrlib {
struct portb
{
static uint8_t port() { return PORTB; }
static void port(uint8_t v) { PORTB = v; }
1148: c2 98 cbi 0x18, 2 ; 24
static uint8_t pin() { return PINB; }
static void pin(uint8_t v) { PINB = v; }
static uint8_t dir() { return DDRB; }
static void dir(uint8_t v) { DDRB = v; }
114a: ba 9a sbi 0x17, 2 ; 23
static uint8_t pin() { return PIND; }
static void pin(uint8_t v) { PIND = v; }
static uint8_t dir() { return DDRD; }
static void dir(uint8_t v) { DDRD = v; }
114c: 8a 98 cbi 0x11, 2 ; 17
namespace avrlib {
struct portd
{
static uint8_t port() { return PORTD; }
static void port(uint8_t v) { PORTD = v; }
114e: 92 98 cbi 0x12, 2 ; 18
1150: 92 9a sbi 0x12, 2 ; 18
init();
this->led = l;
}
1152: 0f 90 pop r0
1154: df 91 pop r29
1156: cf 91 pop r28
1158: 08 95 ret
0000115a <_ZN3LedIN6avrlib5portbELi4ELi3ELi2EE4initEv>:
115a: bc 9a sbi 0x17, 4 ; 23
115c: bb 9a sbi 0x17, 3 ; 23
115e: ba 9a sbi 0x17, 2 ; 23
namespace avrlib {
struct portb
{
static uint8_t port() { return PORTB; }
static void port(uint8_t v) { PORTB = v; }
1160: c4 98 cbi 0x18, 4 ; 24
static uint8_t pin() { return PINB; }
static void pin(uint8_t v) { PINB = v; }
static uint8_t dir() { return DDRB; }
static void dir(uint8_t v) { DDRB = v; }
1162: bc 9a sbi 0x17, 4 ; 23
namespace avrlib {
struct portb
{
static uint8_t port() { return PORTB; }
static void port(uint8_t v) { PORTB = v; }
1164: c3 98 cbi 0x18, 3 ; 24
static uint8_t pin() { return PINB; }
static void pin(uint8_t v) { PINB = v; }
static uint8_t dir() { return DDRB; }
static void dir(uint8_t v) { DDRB = v; }
1166: bb 9a sbi 0x17, 3 ; 23
namespace avrlib {
struct portb
{
static uint8_t port() { return PORTB; }
static void port(uint8_t v) { PORTB = v; }
1168: c2 98 cbi 0x18, 2 ; 24
static uint8_t pin() { return PINB; }
static void pin(uint8_t v) { PINB = v; }
static uint8_t dir() { return DDRB; }
static void dir(uint8_t v) { DDRB = v; }
116a: ba 9a sbi 0x17, 2 ; 23
116c: 08 95 ret
0000116e <_GLOBAL__sub_I_l>:
template <typename Port, int pin_red, int pin_yellow, int pin_green>
class Led {
public:
Led() {
init();
116e: 84 ee ldi r24, 0xE4 ; 228
1170: 91 e0 ldi r25, 0x01 ; 1
1172: 0e 94 ad 08 call 0x115a ; 0x115a <_ZN3LedIN6avrlib5portbELi4ELi3ELi2EE4initEv>
#include "peripheral.h"
#include <stdlib.h>
ledclass l;
ssrclass o;
1176: 8d ed ldi r24, 0xDD ; 221
1178: 91 e0 ldi r25, 0x01 ; 1
117a: 0e 94 4c 08 call 0x1098 ; 0x1098 <_ZN3SSRIN6avrlib5portcELi2ELi3ELi4ELi5ELi6ELi7EEC1Ev>
usartclass r(l);
117e: 60 e0 ldi r22, 0x00 ; 0
1180: 83 ed ldi r24, 0xD3 ; 211
1182: 91 e0 ldi r25, 0x01 ; 1
1184: 0e 94 66 08 call 0x10cc ; 0x10cc <_ZN5UsartILm38400EN6avrlib5portdELi5ELi4ELi3EEC1E3LedINS0_5portbELi4ELi3ELi2EE>
#include <util/delay.h>
template <bool avcc>
class Adc {
public:
Adc() {
1188: 80 e3 ldi r24, 0x30 ; 48
118a: e0 e6 ldi r30, 0x60 ; 96
118c: f0 e0 ldi r31, 0x00 ; 0
118e: a3 ea ldi r26, 0xA3 ; 163
1190: b1 e0 ldi r27, 0x01 ; 1
1192: 01 90 ld r0, Z+
1194: 0d 92 st X+, r0
1196: 8a 95 dec r24
1198: e1 f7 brne .-8 ; 0x1192 <_GLOBAL__sub_I_l+0x24>
return (m * (float)v) + (-m * v1) + c1;
}
private:
void init() {
ADCSRA = (1<<ADPS2);
119a: 84 e0 ldi r24, 0x04 ; 4
119c: 86 b9 out 0x06, r24 ; 6
if(avcc) {
ADMUX = (1<<REFS0);
} else {
ADMUX = 0;
119e: 17 b8 out 0x07, r1 ; 7
adcclass a;
buttonclass b(l);
11a0: 60 e0 ldi r22, 0x00 ; 0
11a2: 82 ea ldi r24, 0xA2 ; 162
11a4: 91 e0 ldi r25, 0x01 ; 1
11a6: 0e 94 97 08 call 0x112e ; 0x112e <_ZN6ButtonIN6avrlib5portdELi2EEC1E3LedINS0_5portbELi4ELi3ELi2EE>
11aa: 08 95 ret
000011ac <__subsf3>:
11ac: 50 58 subi r21, 0x80 ; 128
000011ae <__addsf3>:
11ae: bb 27 eor r27, r27
11b0: aa 27 eor r26, r26
11b2: 0e d0 rcall .+28 ; 0x11d0 <__addsf3x>
11b4: 70 c1 rjmp .+736 ; 0x1496 <__fp_round>
11b6: 61 d1 rcall .+706 ; 0x147a <__fp_pscA>
11b8: 30 f0 brcs .+12 ; 0x11c6 <__addsf3+0x18>
11ba: 66 d1 rcall .+716 ; 0x1488 <__fp_pscB>
11bc: 20 f0 brcs .+8 ; 0x11c6 <__addsf3+0x18>
11be: 31 f4 brne .+12 ; 0x11cc <__addsf3+0x1e>
11c0: 9f 3f cpi r25, 0xFF ; 255
11c2: 11 f4 brne .+4 ; 0x11c8 <__addsf3+0x1a>
11c4: 1e f4 brtc .+6 ; 0x11cc <__addsf3+0x1e>
11c6: 56 c1 rjmp .+684 ; 0x1474 <__fp_nan>
11c8: 0e f4 brtc .+2 ; 0x11cc <__addsf3+0x1e>
11ca: e0 95 com r30
11cc: e7 fb bst r30, 7
11ce: 4c c1 rjmp .+664 ; 0x1468 <__fp_inf>
000011d0 <__addsf3x>:
11d0: e9 2f mov r30, r25
11d2: 72 d1 rcall .+740 ; 0x14b8 <__fp_split3>
11d4: 80 f3 brcs .-32 ; 0x11b6 <__addsf3+0x8>
11d6: ba 17 cp r27, r26
11d8: 62 07 cpc r22, r18
11da: 73 07 cpc r23, r19
11dc: 84 07 cpc r24, r20
11de: 95 07 cpc r25, r21
11e0: 18 f0 brcs .+6 ; 0x11e8 <__addsf3x+0x18>
11e2: 71 f4 brne .+28 ; 0x1200 <__addsf3x+0x30>
11e4: 9e f5 brtc .+102 ; 0x124c <__addsf3x+0x7c>
11e6: 8a c1 rjmp .+788 ; 0x14fc <__fp_zero>
11e8: 0e f4 brtc .+2 ; 0x11ec <__addsf3x+0x1c>
11ea: e0 95 com r30
11ec: 0b 2e mov r0, r27
11ee: ba 2f mov r27, r26
11f0: a0 2d mov r26, r0
11f2: 0b 01 movw r0, r22
11f4: b9 01 movw r22, r18
11f6: 90 01 movw r18, r0
11f8: 0c 01 movw r0, r24
11fa: ca 01 movw r24, r20
11fc: a0 01 movw r20, r0
11fe: 11 24 eor r1, r1
1200: ff 27 eor r31, r31
1202: 59 1b sub r21, r25
1204: 99 f0 breq .+38 ; 0x122c <__addsf3x+0x5c>
1206: 59 3f cpi r21, 0xF9 ; 249
1208: 50 f4 brcc .+20 ; 0x121e <__addsf3x+0x4e>
120a: 50 3e cpi r21, 0xE0 ; 224
120c: 68 f1 brcs .+90 ; 0x1268 <__addsf3x+0x98>
120e: 1a 16 cp r1, r26
1210: f0 40 sbci r31, 0x00 ; 0
1212: a2 2f mov r26, r18
1214: 23 2f mov r18, r19
1216: 34 2f mov r19, r20
1218: 44 27 eor r20, r20
121a: 58 5f subi r21, 0xF8 ; 248
121c: f3 cf rjmp .-26 ; 0x1204 <__addsf3x+0x34>
121e: 46 95 lsr r20
1220: 37 95 ror r19
1222: 27 95 ror r18
1224: a7 95 ror r26
1226: f0 40 sbci r31, 0x00 ; 0
1228: 53 95 inc r21
122a: c9 f7 brne .-14 ; 0x121e <__addsf3x+0x4e>
122c: 7e f4 brtc .+30 ; 0x124c <__addsf3x+0x7c>
122e: 1f 16 cp r1, r31
1230: ba 0b sbc r27, r26
1232: 62 0b sbc r22, r18
1234: 73 0b sbc r23, r19
1236: 84 0b sbc r24, r20
1238: ba f0 brmi .+46 ; 0x1268 <__addsf3x+0x98>
123a: 91 50 subi r25, 0x01 ; 1
123c: a1 f0 breq .+40 ; 0x1266 <__addsf3x+0x96>
123e: ff 0f add r31, r31
1240: bb 1f adc r27, r27
1242: 66 1f adc r22, r22
1244: 77 1f adc r23, r23
1246: 88 1f adc r24, r24
1248: c2 f7 brpl .-16 ; 0x123a <__addsf3x+0x6a>
124a: 0e c0 rjmp .+28 ; 0x1268 <__addsf3x+0x98>
124c: ba 0f add r27, r26
124e: 62 1f adc r22, r18
1250: 73 1f adc r23, r19
1252: 84 1f adc r24, r20
1254: 48 f4 brcc .+18 ; 0x1268 <__addsf3x+0x98>
1256: 87 95 ror r24
1258: 77 95 ror r23
125a: 67 95 ror r22
125c: b7 95 ror r27
125e: f7 95 ror r31
1260: 9e 3f cpi r25, 0xFE ; 254
1262: 08 f0 brcs .+2 ; 0x1266 <__addsf3x+0x96>
1264: b3 cf rjmp .-154 ; 0x11cc <__addsf3+0x1e>
1266: 93 95 inc r25
1268: 88 0f add r24, r24
126a: 08 f0 brcs .+2 ; 0x126e <__addsf3x+0x9e>
126c: 99 27 eor r25, r25
126e: ee 0f add r30, r30
1270: 97 95 ror r25
1272: 87 95 ror r24
1274: 08 95 ret
00001276 <__cmpsf2>:
1276: d4 d0 rcall .+424 ; 0x1420 <__fp_cmp>
1278: 08 f4 brcc .+2 ; 0x127c <__cmpsf2+0x6>
127a: 81 e0 ldi r24, 0x01 ; 1
127c: 08 95 ret
0000127e <__divsf3>:
127e: 0c d0 rcall .+24 ; 0x1298 <__divsf3x>
1280: 0a c1 rjmp .+532 ; 0x1496 <__fp_round>
1282: 02 d1 rcall .+516 ; 0x1488 <__fp_pscB>
1284: 40 f0 brcs .+16 ; 0x1296 <__divsf3+0x18>
1286: f9 d0 rcall .+498 ; 0x147a <__fp_pscA>
1288: 30 f0 brcs .+12 ; 0x1296 <__divsf3+0x18>
128a: 21 f4 brne .+8 ; 0x1294 <__divsf3+0x16>
128c: 5f 3f cpi r21, 0xFF ; 255
128e: 19 f0 breq .+6 ; 0x1296 <__divsf3+0x18>
1290: eb c0 rjmp .+470 ; 0x1468 <__fp_inf>
1292: 51 11 cpse r21, r1
1294: 34 c1 rjmp .+616 ; 0x14fe <__fp_szero>
1296: ee c0 rjmp .+476 ; 0x1474 <__fp_nan>
00001298 <__divsf3x>:
1298: 0f d1 rcall .+542 ; 0x14b8 <__fp_split3>
129a: 98 f3 brcs .-26 ; 0x1282 <__divsf3+0x4>
0000129c <__divsf3_pse>:
129c: 99 23 and r25, r25
129e: c9 f3 breq .-14 ; 0x1292 <__divsf3+0x14>
12a0: 55 23 and r21, r21
12a2: b1 f3 breq .-20 ; 0x1290 <__divsf3+0x12>
12a4: 95 1b sub r25, r21
12a6: 55 0b sbc r21, r21
12a8: bb 27 eor r27, r27
12aa: aa 27 eor r26, r26
12ac: 62 17 cp r22, r18
12ae: 73 07 cpc r23, r19
12b0: 84 07 cpc r24, r20
12b2: 38 f0 brcs .+14 ; 0x12c2 <__divsf3_pse+0x26>
12b4: 9f 5f subi r25, 0xFF ; 255
12b6: 5f 4f sbci r21, 0xFF ; 255
12b8: 22 0f add r18, r18
12ba: 33 1f adc r19, r19
12bc: 44 1f adc r20, r20
12be: aa 1f adc r26, r26
12c0: a9 f3 breq .-22 ; 0x12ac <__divsf3_pse+0x10>
12c2: 33 d0 rcall .+102 ; 0x132a <__divsf3_pse+0x8e>
12c4: 0e 2e mov r0, r30
12c6: 3a f0 brmi .+14 ; 0x12d6 <__divsf3_pse+0x3a>
12c8: e0 e8 ldi r30, 0x80 ; 128
12ca: 30 d0 rcall .+96 ; 0x132c <__divsf3_pse+0x90>
12cc: 91 50 subi r25, 0x01 ; 1
12ce: 50 40 sbci r21, 0x00 ; 0
12d0: e6 95 lsr r30
12d2: 00 1c adc r0, r0
12d4: ca f7 brpl .-14 ; 0x12c8 <__divsf3_pse+0x2c>
12d6: 29 d0 rcall .+82 ; 0x132a <__divsf3_pse+0x8e>
12d8: fe 2f mov r31, r30
12da: 27 d0 rcall .+78 ; 0x132a <__divsf3_pse+0x8e>
12dc: 66 0f add r22, r22
12de: 77 1f adc r23, r23
12e0: 88 1f adc r24, r24
12e2: bb 1f adc r27, r27
12e4: 26 17 cp r18, r22
12e6: 37 07 cpc r19, r23
12e8: 48 07 cpc r20, r24
12ea: ab 07 cpc r26, r27
12ec: b0 e8 ldi r27, 0x80 ; 128
12ee: 09 f0 breq .+2 ; 0x12f2 <__divsf3_pse+0x56>
12f0: bb 0b sbc r27, r27
12f2: 80 2d mov r24, r0
12f4: bf 01 movw r22, r30
12f6: ff 27 eor r31, r31
12f8: 93 58 subi r25, 0x83 ; 131
12fa: 5f 4f sbci r21, 0xFF ; 255
12fc: 2a f0 brmi .+10 ; 0x1308 <__divsf3_pse+0x6c>
12fe: 9e 3f cpi r25, 0xFE ; 254
1300: 51 05 cpc r21, r1
1302: 68 f0 brcs .+26 ; 0x131e <__divsf3_pse+0x82>
1304: b1 c0 rjmp .+354 ; 0x1468 <__fp_inf>
1306: fb c0 rjmp .+502 ; 0x14fe <__fp_szero>
1308: 5f 3f cpi r21, 0xFF ; 255
130a: ec f3 brlt .-6 ; 0x1306 <__divsf3_pse+0x6a>
130c: 98 3e cpi r25, 0xE8 ; 232
130e: dc f3 brlt .-10 ; 0x1306 <__divsf3_pse+0x6a>
1310: 86 95 lsr r24
1312: 77 95 ror r23
1314: 67 95 ror r22
1316: b7 95 ror r27
1318: f7 95 ror r31
131a: 9f 5f subi r25, 0xFF ; 255
131c: c9 f7 brne .-14 ; 0x1310 <__divsf3_pse+0x74>
131e: 88 0f add r24, r24
1320: 91 1d adc r25, r1
1322: 96 95 lsr r25
1324: 87 95 ror r24
1326: 97 f9 bld r25, 7
1328: 08 95 ret
132a: e1 e0 ldi r30, 0x01 ; 1
132c: 66 0f add r22, r22
132e: 77 1f adc r23, r23
1330: 88 1f adc r24, r24
1332: bb 1f adc r27, r27
1334: 62 17 cp r22, r18
1336: 73 07 cpc r23, r19
1338: 84 07 cpc r24, r20
133a: ba 07 cpc r27, r26
133c: 20 f0 brcs .+8 ; 0x1346 <__divsf3_pse+0xaa>
133e: 62 1b sub r22, r18
1340: 73 0b sbc r23, r19
1342: 84 0b sbc r24, r20
1344: ba 0b sbc r27, r26
1346: ee 1f adc r30, r30
1348: 88 f7 brcc .-30 ; 0x132c <__divsf3_pse+0x90>
134a: e0 95 com r30
134c: 08 95 ret
0000134e <__fixunssfsi>:
134e: bc d0 rcall .+376 ; 0x14c8 <__fp_splitA>
1350: 88 f0 brcs .+34 ; 0x1374 <__fixunssfsi+0x26>
1352: 9f 57 subi r25, 0x7F ; 127
1354: 90 f0 brcs .+36 ; 0x137a <__fixunssfsi+0x2c>
1356: b9 2f mov r27, r25
1358: 99 27 eor r25, r25
135a: b7 51 subi r27, 0x17 ; 23
135c: a0 f0 brcs .+40 ; 0x1386 <__fixunssfsi+0x38>
135e: d1 f0 breq .+52 ; 0x1394 <__fixunssfsi+0x46>
1360: 66 0f add r22, r22
1362: 77 1f adc r23, r23
1364: 88 1f adc r24, r24
1366: 99 1f adc r25, r25
1368: 1a f0 brmi .+6 ; 0x1370 <__fixunssfsi+0x22>
136a: ba 95 dec r27
136c: c9 f7 brne .-14 ; 0x1360 <__fixunssfsi+0x12>
136e: 12 c0 rjmp .+36 ; 0x1394 <__fixunssfsi+0x46>
1370: b1 30 cpi r27, 0x01 ; 1
1372: 81 f0 breq .+32 ; 0x1394 <__fixunssfsi+0x46>
1374: c3 d0 rcall .+390 ; 0x14fc <__fp_zero>
1376: b1 e0 ldi r27, 0x01 ; 1
1378: 08 95 ret
137a: c0 c0 rjmp .+384 ; 0x14fc <__fp_zero>
137c: 67 2f mov r22, r23
137e: 78 2f mov r23, r24
1380: 88 27 eor r24, r24
1382: b8 5f subi r27, 0xF8 ; 248
1384: 39 f0 breq .+14 ; 0x1394 <__fixunssfsi+0x46>
1386: b9 3f cpi r27, 0xF9 ; 249
1388: cc f3 brlt .-14 ; 0x137c <__fixunssfsi+0x2e>
138a: 86 95 lsr r24
138c: 77 95 ror r23
138e: 67 95 ror r22
1390: b3 95 inc r27
1392: d9 f7 brne .-10 ; 0x138a <__fixunssfsi+0x3c>
1394: 3e f4 brtc .+14 ; 0x13a4 <__fixunssfsi+0x56>
1396: 90 95 com r25
1398: 80 95 com r24
139a: 70 95 com r23
139c: 61 95 neg r22
139e: 7f 4f sbci r23, 0xFF ; 255
13a0: 8f 4f sbci r24, 0xFF ; 255
13a2: 9f 4f sbci r25, 0xFF ; 255
13a4: 08 95 ret
000013a6 <__floatunsisf>:
13a6: e8 94 clt
13a8: 09 c0 rjmp .+18 ; 0x13bc <__floatsisf+0x12>
000013aa <__floatsisf>:
13aa: 97 fb bst r25, 7
13ac: 3e f4 brtc .+14 ; 0x13bc <__floatsisf+0x12>
13ae: 90 95 com r25
13b0: 80 95 com r24
13b2: 70 95 com r23
13b4: 61 95 neg r22
13b6: 7f 4f sbci r23, 0xFF ; 255
13b8: 8f 4f sbci r24, 0xFF ; 255
13ba: 9f 4f sbci r25, 0xFF ; 255
13bc: 99 23 and r25, r25
13be: a9 f0 breq .+42 ; 0x13ea <__floatsisf+0x40>
13c0: f9 2f mov r31, r25
13c2: 96 e9 ldi r25, 0x96 ; 150
13c4: bb 27 eor r27, r27
13c6: 93 95 inc r25
13c8: f6 95 lsr r31
13ca: 87 95 ror r24
13cc: 77 95 ror r23
13ce: 67 95 ror r22
13d0: b7 95 ror r27
13d2: f1 11 cpse r31, r1
13d4: f8 cf rjmp .-16 ; 0x13c6 <__floatsisf+0x1c>
13d6: fa f4 brpl .+62 ; 0x1416 <__floatsisf+0x6c>
13d8: bb 0f add r27, r27
13da: 11 f4 brne .+4 ; 0x13e0 <__floatsisf+0x36>
13dc: 60 ff sbrs r22, 0
13de: 1b c0 rjmp .+54 ; 0x1416 <__floatsisf+0x6c>
13e0: 6f 5f subi r22, 0xFF ; 255
13e2: 7f 4f sbci r23, 0xFF ; 255
13e4: 8f 4f sbci r24, 0xFF ; 255
13e6: 9f 4f sbci r25, 0xFF ; 255
13e8: 16 c0 rjmp .+44 ; 0x1416 <__floatsisf+0x6c>
13ea: 88 23 and r24, r24
13ec: 11 f0 breq .+4 ; 0x13f2 <__floatsisf+0x48>
13ee: 96 e9 ldi r25, 0x96 ; 150
13f0: 11 c0 rjmp .+34 ; 0x1414 <__floatsisf+0x6a>
13f2: 77 23 and r23, r23
13f4: 21 f0 breq .+8 ; 0x13fe <__floatsisf+0x54>
13f6: 9e e8 ldi r25, 0x8E ; 142
13f8: 87 2f mov r24, r23
13fa: 76 2f mov r23, r22
13fc: 05 c0 rjmp .+10 ; 0x1408 <__floatsisf+0x5e>
13fe: 66 23 and r22, r22
1400: 71 f0 breq .+28 ; 0x141e <__floatsisf+0x74>
1402: 96 e8 ldi r25, 0x86 ; 134
1404: 86 2f mov r24, r22
1406: 70 e0 ldi r23, 0x00 ; 0
1408: 60 e0 ldi r22, 0x00 ; 0
140a: 2a f0 brmi .+10 ; 0x1416 <__floatsisf+0x6c>
140c: 9a 95 dec r25
140e: 66 0f add r22, r22
1410: 77 1f adc r23, r23
1412: 88 1f adc r24, r24
1414: da f7 brpl .-10 ; 0x140c <__floatsisf+0x62>
1416: 88 0f add r24, r24
1418: 96 95 lsr r25
141a: 87 95 ror r24
141c: 97 f9 bld r25, 7
141e: 08 95 ret
00001420 <__fp_cmp>:
1420: 99 0f add r25, r25
1422: 00 08 sbc r0, r0
1424: 55 0f add r21, r21
1426: aa 0b sbc r26, r26
1428: e0 e8 ldi r30, 0x80 ; 128
142a: fe ef ldi r31, 0xFE ; 254
142c: 16 16 cp r1, r22
142e: 17 06 cpc r1, r23
1430: e8 07 cpc r30, r24
1432: f9 07 cpc r31, r25
1434: c0 f0 brcs .+48 ; 0x1466 <__fp_cmp+0x46>
1436: 12 16 cp r1, r18
1438: 13 06 cpc r1, r19
143a: e4 07 cpc r30, r20
143c: f5 07 cpc r31, r21
143e: 98 f0 brcs .+38 ; 0x1466 <__fp_cmp+0x46>
1440: 62 1b sub r22, r18
1442: 73 0b sbc r23, r19
1444: 84 0b sbc r24, r20
1446: 95 0b sbc r25, r21
1448: 39 f4 brne .+14 ; 0x1458 <__fp_cmp+0x38>
144a: 0a 26 eor r0, r26
144c: 61 f0 breq .+24 ; 0x1466 <__fp_cmp+0x46>
144e: 23 2b or r18, r19
1450: 24 2b or r18, r20
1452: 25 2b or r18, r21
1454: 21 f4 brne .+8 ; 0x145e <__fp_cmp+0x3e>
1456: 08 95 ret
1458: 0a 26 eor r0, r26
145a: 09 f4 brne .+2 ; 0x145e <__fp_cmp+0x3e>
145c: a1 40 sbci r26, 0x01 ; 1
145e: a6 95 lsr r26
1460: 8f ef ldi r24, 0xFF ; 255
1462: 81 1d adc r24, r1
1464: 81 1d adc r24, r1
1466: 08 95 ret
00001468 <__fp_inf>:
1468: 97 f9 bld r25, 7
146a: 9f 67 ori r25, 0x7F ; 127
146c: 80 e8 ldi r24, 0x80 ; 128
146e: 70 e0 ldi r23, 0x00 ; 0
1470: 60 e0 ldi r22, 0x00 ; 0
1472: 08 95 ret
00001474 <__fp_nan>:
1474: 9f ef ldi r25, 0xFF ; 255
1476: 80 ec ldi r24, 0xC0 ; 192
1478: 08 95 ret
0000147a <__fp_pscA>:
147a: 00 24 eor r0, r0
147c: 0a 94 dec r0
147e: 16 16 cp r1, r22
1480: 17 06 cpc r1, r23
1482: 18 06 cpc r1, r24
1484: 09 06 cpc r0, r25
1486: 08 95 ret
00001488 <__fp_pscB>:
1488: 00 24 eor r0, r0
148a: 0a 94 dec r0
148c: 12 16 cp r1, r18
148e: 13 06 cpc r1, r19
1490: 14 06 cpc r1, r20
1492: 05 06 cpc r0, r21
1494: 08 95 ret
00001496 <__fp_round>:
1496: 09 2e mov r0, r25
1498: 03 94 inc r0
149a: 00 0c add r0, r0
149c: 11 f4 brne .+4 ; 0x14a2 <__fp_round+0xc>
149e: 88 23 and r24, r24
14a0: 52 f0 brmi .+20 ; 0x14b6 <__fp_round+0x20>
14a2: bb 0f add r27, r27
14a4: 40 f4 brcc .+16 ; 0x14b6 <__fp_round+0x20>
14a6: bf 2b or r27, r31
14a8: 11 f4 brne .+4 ; 0x14ae <__fp_round+0x18>
14aa: 60 ff sbrs r22, 0
14ac: 04 c0 rjmp .+8 ; 0x14b6 <__fp_round+0x20>
14ae: 6f 5f subi r22, 0xFF ; 255
14b0: 7f 4f sbci r23, 0xFF ; 255
14b2: 8f 4f sbci r24, 0xFF ; 255
14b4: 9f 4f sbci r25, 0xFF ; 255
14b6: 08 95 ret
000014b8 <__fp_split3>:
14b8: 57 fd sbrc r21, 7
14ba: 90 58 subi r25, 0x80 ; 128
14bc: 44 0f add r20, r20
14be: 55 1f adc r21, r21
14c0: 59 f0 breq .+22 ; 0x14d8 <__fp_splitA+0x10>
14c2: 5f 3f cpi r21, 0xFF ; 255
14c4: 71 f0 breq .+28 ; 0x14e2 <__fp_splitA+0x1a>
14c6: 47 95 ror r20
000014c8 <__fp_splitA>:
14c8: 88 0f add r24, r24
14ca: 97 fb bst r25, 7
14cc: 99 1f adc r25, r25
14ce: 61 f0 breq .+24 ; 0x14e8 <__fp_splitA+0x20>
14d0: 9f 3f cpi r25, 0xFF ; 255
14d2: 79 f0 breq .+30 ; 0x14f2 <__fp_splitA+0x2a>
14d4: 87 95 ror r24
14d6: 08 95 ret
14d8: 12 16 cp r1, r18
14da: 13 06 cpc r1, r19
14dc: 14 06 cpc r1, r20
14de: 55 1f adc r21, r21
14e0: f2 cf rjmp .-28 ; 0x14c6 <__fp_split3+0xe>
14e2: 46 95 lsr r20
14e4: f1 df rcall .-30 ; 0x14c8 <__fp_splitA>
14e6: 08 c0 rjmp .+16 ; 0x14f8 <__fp_splitA+0x30>
14e8: 16 16 cp r1, r22
14ea: 17 06 cpc r1, r23
14ec: 18 06 cpc r1, r24
14ee: 99 1f adc r25, r25
14f0: f1 cf rjmp .-30 ; 0x14d4 <__fp_splitA+0xc>
14f2: 86 95 lsr r24
14f4: 71 05 cpc r23, r1
14f6: 61 05 cpc r22, r1
14f8: 08 94 sec
14fa: 08 95 ret
000014fc <__fp_zero>:
14fc: e8 94 clt
000014fe <__fp_szero>:
14fe: bb 27 eor r27, r27
1500: 66 27 eor r22, r22
1502: 77 27 eor r23, r23
1504: cb 01 movw r24, r22
1506: 97 f9 bld r25, 7
1508: 08 95 ret
0000150a <__gesf2>:
150a: 8a df rcall .-236 ; 0x1420 <__fp_cmp>
150c: 08 f4 brcc .+2 ; 0x1510 <__gesf2+0x6>
150e: 8f ef ldi r24, 0xFF ; 255
1510: 08 95 ret
00001512 <__mulsf3>:
1512: 0b d0 rcall .+22 ; 0x152a <__mulsf3x>
1514: c0 cf rjmp .-128 ; 0x1496 <__fp_round>
1516: b1 df rcall .-158 ; 0x147a <__fp_pscA>
1518: 28 f0 brcs .+10 ; 0x1524 <__mulsf3+0x12>
151a: b6 df rcall .-148 ; 0x1488 <__fp_pscB>
151c: 18 f0 brcs .+6 ; 0x1524 <__mulsf3+0x12>
151e: 95 23 and r25, r21
1520: 09 f0 breq .+2 ; 0x1524 <__mulsf3+0x12>
1522: a2 cf rjmp .-188 ; 0x1468 <__fp_inf>
1524: a7 cf rjmp .-178 ; 0x1474 <__fp_nan>
1526: 11 24 eor r1, r1
1528: ea cf rjmp .-44 ; 0x14fe <__fp_szero>
0000152a <__mulsf3x>:
152a: c6 df rcall .-116 ; 0x14b8 <__fp_split3>
152c: a0 f3 brcs .-24 ; 0x1516 <__mulsf3+0x4>
0000152e <__mulsf3_pse>:
152e: 95 9f mul r25, r21
1530: d1 f3 breq .-12 ; 0x1526 <__mulsf3+0x14>
1532: 95 0f add r25, r21
1534: 50 e0 ldi r21, 0x00 ; 0
1536: 55 1f adc r21, r21
1538: 62 9f mul r22, r18
153a: f0 01 movw r30, r0
153c: 72 9f mul r23, r18
153e: bb 27 eor r27, r27
1540: f0 0d add r31, r0
1542: b1 1d adc r27, r1
1544: 63 9f mul r22, r19
1546: aa 27 eor r26, r26
1548: f0 0d add r31, r0
154a: b1 1d adc r27, r1
154c: aa 1f adc r26, r26
154e: 64 9f mul r22, r20
1550: 66 27 eor r22, r22
1552: b0 0d add r27, r0
1554: a1 1d adc r26, r1
1556: 66 1f adc r22, r22
1558: 82 9f mul r24, r18
155a: 22 27 eor r18, r18
155c: b0 0d add r27, r0
155e: a1 1d adc r26, r1
1560: 62 1f adc r22, r18
1562: 73 9f mul r23, r19
1564: b0 0d add r27, r0
1566: a1 1d adc r26, r1
1568: 62 1f adc r22, r18
156a: 83 9f mul r24, r19
156c: a0 0d add r26, r0
156e: 61 1d adc r22, r1
1570: 22 1f adc r18, r18
1572: 74 9f mul r23, r20
1574: 33 27 eor r19, r19
1576: a0 0d add r26, r0
1578: 61 1d adc r22, r1
157a: 23 1f adc r18, r19
157c: 84 9f mul r24, r20
157e: 60 0d add r22, r0
1580: 21 1d adc r18, r1
1582: 82 2f mov r24, r18
1584: 76 2f mov r23, r22
1586: 6a 2f mov r22, r26
1588: 11 24 eor r1, r1
158a: 9f 57 subi r25, 0x7F ; 127
158c: 50 40 sbci r21, 0x00 ; 0
158e: 8a f0 brmi .+34 ; 0x15b2 <__mulsf3_pse+0x84>
1590: e1 f0 breq .+56 ; 0x15ca <__mulsf3_pse+0x9c>
1592: 88 23 and r24, r24
1594: 4a f0 brmi .+18 ; 0x15a8 <__mulsf3_pse+0x7a>
1596: ee 0f add r30, r30
1598: ff 1f adc r31, r31
159a: bb 1f adc r27, r27
159c: 66 1f adc r22, r22
159e: 77 1f adc r23, r23
15a0: 88 1f adc r24, r24
15a2: 91 50 subi r25, 0x01 ; 1
15a4: 50 40 sbci r21, 0x00 ; 0
15a6: a9 f7 brne .-22 ; 0x1592 <__mulsf3_pse+0x64>
15a8: 9e 3f cpi r25, 0xFE ; 254
15aa: 51 05 cpc r21, r1
15ac: 70 f0 brcs .+28 ; 0x15ca <__mulsf3_pse+0x9c>
15ae: 5c cf rjmp .-328 ; 0x1468 <__fp_inf>
15b0: a6 cf rjmp .-180 ; 0x14fe <__fp_szero>
15b2: 5f 3f cpi r21, 0xFF ; 255
15b4: ec f3 brlt .-6 ; 0x15b0 <__mulsf3_pse+0x82>
15b6: 98 3e cpi r25, 0xE8 ; 232
15b8: dc f3 brlt .-10 ; 0x15b0 <__mulsf3_pse+0x82>
15ba: 86 95 lsr r24
15bc: 77 95 ror r23
15be: 67 95 ror r22
15c0: b7 95 ror r27
15c2: f7 95 ror r31
15c4: e7 95 ror r30
15c6: 9f 5f subi r25, 0xFF ; 255
15c8: c1 f7 brne .-16 ; 0x15ba <__mulsf3_pse+0x8c>
15ca: fe 2b or r31, r30
15cc: 88 0f add r24, r24
15ce: 91 1d adc r25, r1
15d0: 96 95 lsr r25
15d2: 87 95 ror r24
15d4: 97 f9 bld r25, 7
15d6: 08 95 ret
000015d8 <__divmodhi4>:
15d8: 97 fb bst r25, 7
15da: 07 2e mov r0, r23
15dc: 16 f4 brtc .+4 ; 0x15e2 <__divmodhi4+0xa>
15de: 00 94 com r0
15e0: 07 d0 rcall .+14 ; 0x15f0 <__divmodhi4_neg1>
15e2: 77 fd sbrc r23, 7
15e4: 09 d0 rcall .+18 ; 0x15f8 <__divmodhi4_neg2>
15e6: 0e 94 0c 0b call 0x1618 ; 0x1618 <__udivmodhi4>
15ea: 07 fc sbrc r0, 7
15ec: 05 d0 rcall .+10 ; 0x15f8 <__divmodhi4_neg2>
15ee: 3e f4 brtc .+14 ; 0x15fe <__divmodhi4_exit>
000015f0 <__divmodhi4_neg1>:
15f0: 90 95 com r25
15f2: 81 95 neg r24
15f4: 9f 4f sbci r25, 0xFF ; 255
15f6: 08 95 ret
000015f8 <__divmodhi4_neg2>:
15f8: 70 95 com r23
15fa: 61 95 neg r22
15fc: 7f 4f sbci r23, 0xFF ; 255
000015fe <__divmodhi4_exit>:
15fe: 08 95 ret
00001600 <__umulhisi3>:
1600: a2 9f mul r26, r18
1602: b0 01 movw r22, r0
1604: b3 9f mul r27, r19
1606: c0 01 movw r24, r0
1608: a3 9f mul r26, r19
160a: 01 d0 rcall .+2 ; 0x160e <__umulhisi3+0xe>
160c: b2 9f mul r27, r18
160e: 70 0d add r23, r0
1610: 81 1d adc r24, r1
1612: 11 24 eor r1, r1
1614: 91 1d adc r25, r1
1616: 08 95 ret
00001618 <__udivmodhi4>:
1618: aa 1b sub r26, r26
161a: bb 1b sub r27, r27
161c: 51 e1 ldi r21, 0x11 ; 17
161e: 07 c0 rjmp .+14 ; 0x162e <__udivmodhi4_ep>
00001620 <__udivmodhi4_loop>:
1620: aa 1f adc r26, r26
1622: bb 1f adc r27, r27
1624: a6 17 cp r26, r22
1626: b7 07 cpc r27, r23
1628: 10 f0 brcs .+4 ; 0x162e <__udivmodhi4_ep>
162a: a6 1b sub r26, r22
162c: b7 0b sbc r27, r23
0000162e <__udivmodhi4_ep>:
162e: 88 1f adc r24, r24
1630: 99 1f adc r25, r25
1632: 5a 95 dec r21
1634: a9 f7 brne .-22 ; 0x1620 <__udivmodhi4_loop>
1636: 80 95 com r24
1638: 90 95 com r25
163a: bc 01 movw r22, r24
163c: cd 01 movw r24, r26
163e: 08 95 ret
00001640 <__tablejump2__>:
1640: ee 0f add r30, r30
1642: ff 1f adc r31, r31
00001644 <__tablejump__>:
1644: 05 90 lpm r0, Z+
1646: f4 91 lpm r31, Z
1648: e0 2d mov r30, r0
164a: 09 94 ijmp
0000164c <dtostrf>:
164c: ef 92 push r14
164e: 0f 93 push r16
1650: 1f 93 push r17
1652: cf 93 push r28
1654: c0 2f mov r28, r16
1656: 47 ff sbrs r20, 7
1658: 02 c0 rjmp .+4 ; 0x165e <dtostrf+0x12>
165a: 34 e1 ldi r19, 0x14 ; 20
165c: 01 c0 rjmp .+2 ; 0x1660 <dtostrf+0x14>
165e: 34 e0 ldi r19, 0x04 ; 4
1660: e4 2f mov r30, r20
1662: ff 27 eor r31, r31
1664: e7 fd sbrc r30, 7
1666: f0 95 com r31
1668: f7 ff sbrs r31, 7
166a: 03 c0 rjmp .+6 ; 0x1672 <dtostrf+0x26>
166c: f1 95 neg r31
166e: e1 95 neg r30
1670: f1 09 sbc r31, r1
1672: e3 2e mov r14, r19
1674: 02 2f mov r16, r18
1676: 2e 2f mov r18, r30
1678: 4c 2f mov r20, r28
167a: 51 2f mov r21, r17
167c: 0e 94 5d 0b call 0x16ba ; 0x16ba <dtoa_prf>
1680: 8c 2f mov r24, r28
1682: 91 2f mov r25, r17
1684: cf 91 pop r28
1686: 1f 91 pop r17
1688: 0f 91 pop r16
168a: ef 90 pop r14
168c: 08 95 ret
0000168e <utoa>:
168e: fb 01 movw r30, r22
1690: 9f 01 movw r18, r30
1692: 42 30 cpi r20, 0x02 ; 2
1694: 74 f0 brlt .+28 ; 0x16b2 <utoa+0x24>
1696: 45 32 cpi r20, 0x25 ; 37
1698: 64 f4 brge .+24 ; 0x16b2 <utoa+0x24>
169a: 64 2f mov r22, r20
169c: 77 27 eor r23, r23
169e: 0e 94 0c 0b call 0x1618 ; 0x1618 <__udivmodhi4>
16a2: 80 5d subi r24, 0xD0 ; 208
16a4: 8a 33 cpi r24, 0x3A ; 58
16a6: 0c f0 brlt .+2 ; 0x16aa <utoa+0x1c>
16a8: 89 5d subi r24, 0xD9 ; 217
16aa: 81 93 st Z+, r24
16ac: cb 01 movw r24, r22
16ae: 00 97 sbiw r24, 0x00 ; 0
16b0: a1 f7 brne .-24 ; 0x169a <utoa+0xc>
16b2: 10 82 st Z, r1
16b4: c9 01 movw r24, r18
16b6: 0c 94 b2 0d jmp 0x1b64 ; 0x1b64 <strrev>
000016ba <dtoa_prf>:
16ba: 6f 92 push r6
16bc: 7f 92 push r7
16be: 9f 92 push r9
16c0: af 92 push r10
16c2: bf 92 push r11
16c4: cf 92 push r12
16c6: df 92 push r13
16c8: ef 92 push r14
16ca: ff 92 push r15
16cc: 0f 93 push r16
16ce: 1f 93 push r17
16d0: cf 93 push r28
16d2: df 93 push r29
16d4: cd b7 in r28, 0x3d ; 61
16d6: de b7 in r29, 0x3e ; 62
16d8: 29 97 sbiw r28, 0x09 ; 9
16da: 0f b6 in r0, 0x3f ; 63
16dc: f8 94 cli
16de: de bf out 0x3e, r29 ; 62
16e0: 0f be out 0x3f, r0 ; 63
16e2: cd bf out 0x3d, r28 ; 61
16e4: 6a 01 movw r12, r20
16e6: b2 2e mov r11, r18
16e8: 10 2f mov r17, r16
16ea: 0c 33 cpi r16, 0x3C ; 60
16ec: 18 f4 brcc .+6 ; 0x16f4 <dtoa_prf+0x3a>
16ee: f0 2e mov r15, r16
16f0: f3 94 inc r15
16f2: 02 c0 rjmp .+4 ; 0x16f8 <dtoa_prf+0x3e>
16f4: 5c e3 ldi r21, 0x3C ; 60
16f6: f5 2e mov r15, r21
16f8: 0f 2d mov r16, r15
16fa: 27 e0 ldi r18, 0x07 ; 7
16fc: ae 01 movw r20, r28
16fe: 4f 5f subi r20, 0xFF ; 255
1700: 5f 4f sbci r21, 0xFF ; 255
1702: 0e 94 da 0c call 0x19b4 ; 0x19b4 <__ftoa_engine>
1706: 79 81 ldd r23, Y+1 ; 0x01
1708: 27 2f mov r18, r23
170a: 29 70 andi r18, 0x09 ; 9
170c: 21 30 cpi r18, 0x01 ; 1
170e: 31 f0 breq .+12 ; 0x171c <dtoa_prf+0x62>
1710: e1 fc sbrc r14, 1
1712: 06 c0 rjmp .+12 ; 0x1720 <dtoa_prf+0x66>
1714: e0 fe sbrs r14, 0
1716: 06 c0 rjmp .+12 ; 0x1724 <dtoa_prf+0x6a>
1718: 60 e2 ldi r22, 0x20 ; 32
171a: 05 c0 rjmp .+10 ; 0x1726 <dtoa_prf+0x6c>
171c: 6d e2 ldi r22, 0x2D ; 45
171e: 03 c0 rjmp .+6 ; 0x1726 <dtoa_prf+0x6c>
1720: 6b e2 ldi r22, 0x2B ; 43
1722: 01 c0 rjmp .+2 ; 0x1726 <dtoa_prf+0x6c>
1724: 60 e0 ldi r22, 0x00 ; 0
1726: 73 ff sbrs r23, 3
1728: 3d c0 rjmp .+122 ; 0x17a4 <dtoa_prf+0xea>
172a: 66 23 and r22, r22
172c: 11 f0 breq .+4 ; 0x1732 <dtoa_prf+0x78>
172e: 84 e0 ldi r24, 0x04 ; 4
1730: 01 c0 rjmp .+2 ; 0x1734 <dtoa_prf+0x7a>
1732: 83 e0 ldi r24, 0x03 ; 3
1734: 8b 15 cp r24, r11
1736: 10 f4 brcc .+4 ; 0x173c <dtoa_prf+0x82>
1738: b8 1a sub r11, r24
173a: 01 c0 rjmp .+2 ; 0x173e <dtoa_prf+0x84>
173c: b1 2c mov r11, r1
173e: e4 fc sbrc r14, 4
1740: 0b c0 rjmp .+22 ; 0x1758 <dtoa_prf+0x9e>
1742: 8b 2d mov r24, r11
1744: f6 01 movw r30, r12
1746: 90 e2 ldi r25, 0x20 ; 32
1748: 02 c0 rjmp .+4 ; 0x174e <dtoa_prf+0x94>
174a: 91 93 st Z+, r25
174c: 81 50 subi r24, 0x01 ; 1
174e: 81 11 cpse r24, r1
1750: fc cf rjmp .-8 ; 0x174a <dtoa_prf+0x90>
1752: cb 0c add r12, r11
1754: d1 1c adc r13, r1
1756: b1 2c mov r11, r1
1758: 66 23 and r22, r22
175a: 19 f0 breq .+6 ; 0x1762 <dtoa_prf+0xa8>
175c: d6 01 movw r26, r12
175e: 6d 93 st X+, r22
1760: 6d 01 movw r12, r26
1762: e2 fe sbrs r14, 2
1764: 0a c0 rjmp .+20 ; 0x177a <dtoa_prf+0xc0>
1766: 8e e4 ldi r24, 0x4E ; 78
1768: f6 01 movw r30, r12
176a: 80 83 st Z, r24
176c: 91 e4 ldi r25, 0x41 ; 65
176e: 91 83 std Z+1, r25 ; 0x01
1770: 82 83 std Z+2, r24 ; 0x02
1772: f3 e0 ldi r31, 0x03 ; 3
1774: cf 0e add r12, r31
1776: d1 1c adc r13, r1
1778: 0c c0 rjmp .+24 ; 0x1792 <dtoa_prf+0xd8>
177a: 8e e6 ldi r24, 0x6E ; 110
177c: d6 01 movw r26, r12
177e: 8c 93 st X, r24
1780: 91 e6 ldi r25, 0x61 ; 97
1782: 11 96 adiw r26, 0x01 ; 1
1784: 9c 93 st X, r25
1786: 11 97 sbiw r26, 0x01 ; 1
1788: 12 96 adiw r26, 0x02 ; 2
178a: 8c 93 st X, r24
178c: b3 e0 ldi r27, 0x03 ; 3
178e: cb 0e add r12, r27
1790: d1 1c adc r13, r1
1792: 8b 2d mov r24, r11
1794: f6 01 movw r30, r12
1796: 90 e2 ldi r25, 0x20 ; 32
1798: 02 c0 rjmp .+4 ; 0x179e <dtoa_prf+0xe4>
179a: 91 93 st Z+, r25
179c: 81 50 subi r24, 0x01 ; 1
179e: 81 11 cpse r24, r1
17a0: fc cf rjmp .-8 ; 0x179a <dtoa_prf+0xe0>
17a2: 40 c0 rjmp .+128 ; 0x1824 <dtoa_prf+0x16a>
17a4: 72 ff sbrs r23, 2
17a6: 45 c0 rjmp .+138 ; 0x1832 <dtoa_prf+0x178>
17a8: 66 23 and r22, r22
17aa: 11 f0 breq .+4 ; 0x17b0 <dtoa_prf+0xf6>
17ac: 84 e0 ldi r24, 0x04 ; 4
17ae: 01 c0 rjmp .+2 ; 0x17b2 <dtoa_prf+0xf8>
17b0: 83 e0 ldi r24, 0x03 ; 3
17b2: 8b 15 cp r24, r11
17b4: 10 f4 brcc .+4 ; 0x17ba <dtoa_prf+0x100>
17b6: b8 1a sub r11, r24
17b8: 01 c0 rjmp .+2 ; 0x17bc <dtoa_prf+0x102>
17ba: b1 2c mov r11, r1
17bc: e4 fc sbrc r14, 4
17be: 0b c0 rjmp .+22 ; 0x17d6 <dtoa_prf+0x11c>
17c0: 8b 2d mov r24, r11
17c2: f6 01 movw r30, r12
17c4: 90 e2 ldi r25, 0x20 ; 32
17c6: 02 c0 rjmp .+4 ; 0x17cc <dtoa_prf+0x112>
17c8: 91 93 st Z+, r25
17ca: 81 50 subi r24, 0x01 ; 1
17cc: 81 11 cpse r24, r1
17ce: fc cf rjmp .-8 ; 0x17c8 <dtoa_prf+0x10e>
17d0: cb 0c add r12, r11
17d2: d1 1c adc r13, r1
17d4: b1 2c mov r11, r1
17d6: 66 23 and r22, r22
17d8: 19 f0 breq .+6 ; 0x17e0 <dtoa_prf+0x126>
17da: f6 01 movw r30, r12
17dc: 61 93 st Z+, r22
17de: 6f 01 movw r12, r30
17e0: e2 fe sbrs r14, 2
17e2: 0e c0 rjmp .+28 ; 0x1800 <dtoa_prf+0x146>
17e4: 89 e4 ldi r24, 0x49 ; 73
17e6: d6 01 movw r26, r12
17e8: 8c 93 st X, r24
17ea: 8e e4 ldi r24, 0x4E ; 78
17ec: 11 96 adiw r26, 0x01 ; 1
17ee: 8c 93 st X, r24
17f0: 11 97 sbiw r26, 0x01 ; 1
17f2: 86 e4 ldi r24, 0x46 ; 70
17f4: 12 96 adiw r26, 0x02 ; 2
17f6: 8c 93 st X, r24
17f8: b3 e0 ldi r27, 0x03 ; 3
17fa: cb 0e add r12, r27
17fc: d1 1c adc r13, r1
17fe: 0a c0 rjmp .+20 ; 0x1814 <dtoa_prf+0x15a>
1800: 89 e6 ldi r24, 0x69 ; 105
1802: f6 01 movw r30, r12
1804: 80 83 st Z, r24
1806: 8e e6 ldi r24, 0x6E ; 110
1808: 81 83 std Z+1, r24 ; 0x01
180a: 86 e6 ldi r24, 0x66 ; 102
180c: 82 83 std Z+2, r24 ; 0x02
180e: f3 e0 ldi r31, 0x03 ; 3
1810: cf 0e add r12, r31
1812: d1 1c adc r13, r1
1814: 8b 2d mov r24, r11
1816: f6 01 movw r30, r12
1818: 90 e2 ldi r25, 0x20 ; 32
181a: 02 c0 rjmp .+4 ; 0x1820 <dtoa_prf+0x166>
181c: 91 93 st Z+, r25
181e: 81 50 subi r24, 0x01 ; 1
1820: 81 11 cpse r24, r1
1822: fc cf rjmp .-8 ; 0x181c <dtoa_prf+0x162>
1824: f6 01 movw r30, r12
1826: eb 0d add r30, r11
1828: f1 1d adc r31, r1
182a: 10 82 st Z, r1
182c: 2e ef ldi r18, 0xFE ; 254
182e: 3f ef ldi r19, 0xFF ; 255
1830: ac c0 rjmp .+344 ; 0x198a <dtoa_prf+0x2d0>
1832: a1 e0 ldi r26, 0x01 ; 1
1834: 61 11 cpse r22, r1
1836: 01 c0 rjmp .+2 ; 0x183a <dtoa_prf+0x180>
1838: a0 e0 ldi r26, 0x00 ; 0
183a: 4a 2f mov r20, r26
183c: 50 e0 ldi r21, 0x00 ; 0
183e: 18 16 cp r1, r24
1840: 19 06 cpc r1, r25
1842: 24 f4 brge .+8 ; 0x184c <dtoa_prf+0x192>
1844: 9c 01 movw r18, r24
1846: 2f 5f subi r18, 0xFF ; 255
1848: 3f 4f sbci r19, 0xFF ; 255
184a: 02 c0 rjmp .+4 ; 0x1850 <dtoa_prf+0x196>
184c: 21 e0 ldi r18, 0x01 ; 1
184e: 30 e0 ldi r19, 0x00 ; 0
1850: 24 0f add r18, r20
1852: 35 1f adc r19, r21
1854: 11 23 and r17, r17
1856: 29 f0 breq .+10 ; 0x1862 <dtoa_prf+0x1a8>
1858: 41 2f mov r20, r17
185a: 50 e0 ldi r21, 0x00 ; 0
185c: 4f 5f subi r20, 0xFF ; 255
185e: 5f 4f sbci r21, 0xFF ; 255
1860: 02 c0 rjmp .+4 ; 0x1866 <dtoa_prf+0x1ac>
1862: 40 e0 ldi r20, 0x00 ; 0
1864: 50 e0 ldi r21, 0x00 ; 0
1866: 42 0f add r20, r18
1868: 53 1f adc r21, r19
186a: 2b 2d mov r18, r11
186c: 30 e0 ldi r19, 0x00 ; 0
186e: 42 17 cp r20, r18
1870: 53 07 cpc r21, r19
1872: 14 f4 brge .+4 ; 0x1878 <dtoa_prf+0x1be>
1874: b4 1a sub r11, r20
1876: 01 c0 rjmp .+2 ; 0x187a <dtoa_prf+0x1c0>
1878: b1 2c mov r11, r1
187a: 3e 2d mov r19, r14
187c: 30 71 andi r19, 0x10 ; 16
187e: e4 fc sbrc r14, 4
1880: 0d c0 rjmp .+26 ; 0x189c <dtoa_prf+0x1e2>
1882: e3 fc sbrc r14, 3
1884: 0b c0 rjmp .+22 ; 0x189c <dtoa_prf+0x1e2>
1886: 2b 2d mov r18, r11
1888: f6 01 movw r30, r12
188a: 40 e2 ldi r20, 0x20 ; 32
188c: 02 c0 rjmp .+4 ; 0x1892 <dtoa_prf+0x1d8>
188e: 41 93 st Z+, r20
1890: 21 50 subi r18, 0x01 ; 1
1892: 21 11 cpse r18, r1
1894: fc cf rjmp .-8 ; 0x188e <dtoa_prf+0x1d4>
1896: cb 0c add r12, r11
1898: d1 1c adc r13, r1
189a: b1 2c mov r11, r1
189c: aa 23 and r26, r26
189e: 19 f0 breq .+6 ; 0x18a6 <dtoa_prf+0x1ec>
18a0: d6 01 movw r26, r12
18a2: 6d 93 st X+, r22
18a4: 6d 01 movw r12, r26
18a6: 31 11 cpse r19, r1
18a8: 0b c0 rjmp .+22 ; 0x18c0 <dtoa_prf+0x206>
18aa: 2b 2d mov r18, r11
18ac: f6 01 movw r30, r12
18ae: 30 e3 ldi r19, 0x30 ; 48
18b0: 02 c0 rjmp .+4 ; 0x18b6 <dtoa_prf+0x1fc>
18b2: 31 93 st Z+, r19
18b4: 21 50 subi r18, 0x01 ; 1
18b6: 21 11 cpse r18, r1
18b8: fc cf rjmp .-8 ; 0x18b2 <dtoa_prf+0x1f8>
18ba: cb 0c add r12, r11
18bc: d1 1c adc r13, r1
18be: b1 2c mov r11, r1
18c0: f8 0e add r15, r24
18c2: 0a 81 ldd r16, Y+2 ; 0x02
18c4: 40 e1 ldi r20, 0x10 ; 16
18c6: a4 2e mov r10, r20
18c8: a7 22 and r10, r23
18ca: 74 ff sbrs r23, 4
18cc: 03 c0 rjmp .+6 ; 0x18d4 <dtoa_prf+0x21a>
18ce: 01 33 cpi r16, 0x31 ; 49
18d0: 09 f4 brne .+2 ; 0x18d4 <dtoa_prf+0x21a>
18d2: fa 94 dec r15
18d4: 1f 14 cp r1, r15
18d6: 2c f4 brge .+10 ; 0x18e2 <dtoa_prf+0x228>
18d8: 2f 2d mov r18, r15
18da: 29 30 cpi r18, 0x09 ; 9
18dc: 18 f0 brcs .+6 ; 0x18e4 <dtoa_prf+0x22a>
18de: 28 e0 ldi r18, 0x08 ; 8
18e0: 01 c0 rjmp .+2 ; 0x18e4 <dtoa_prf+0x22a>
18e2: 21 e0 ldi r18, 0x01 ; 1
18e4: ac 01 movw r20, r24
18e6: 97 ff sbrs r25, 7
18e8: 02 c0 rjmp .+4 ; 0x18ee <dtoa_prf+0x234>
18ea: 40 e0 ldi r20, 0x00 ; 0
18ec: 50 e0 ldi r21, 0x00 ; 0
18ee: 60 e0 ldi r22, 0x00 ; 0
18f0: 70 e0 ldi r23, 0x00 ; 0
18f2: 3e e2 ldi r19, 0x2E ; 46
18f4: 93 2e mov r9, r19
18f6: fc 01 movw r30, r24
18f8: e2 1b sub r30, r18
18fa: f1 09 sbc r31, r1
18fc: 9f 01 movw r18, r30
18fe: dc 01 movw r26, r24
1900: a4 1b sub r26, r20
1902: b5 0b sbc r27, r21
1904: fe 01 movw r30, r28
1906: 31 96 adiw r30, 0x01 ; 1
1908: ea 0f add r30, r26
190a: fb 1f adc r31, r27
190c: a1 2f mov r26, r17
190e: b0 e0 ldi r27, 0x00 ; 0
1910: 66 24 eor r6, r6
1912: 77 24 eor r7, r7
1914: 6a 1a sub r6, r26
1916: 7b 0a sbc r7, r27
1918: 4f 3f cpi r20, 0xFF ; 255
191a: 1f ef ldi r17, 0xFF ; 255
191c: 51 07 cpc r21, r17
191e: 19 f4 brne .+6 ; 0x1926 <dtoa_prf+0x26c>
1920: d6 01 movw r26, r12
1922: 9d 92 st X+, r9
1924: 6d 01 movw r12, r26
1926: 84 17 cp r24, r20
1928: 95 07 cpc r25, r21
192a: 54 f0 brlt .+20 ; 0x1940 <dtoa_prf+0x286>
192c: 24 17 cp r18, r20
192e: 35 07 cpc r19, r21
1930: 3c f4 brge .+14 ; 0x1940 <dtoa_prf+0x286>
1932: 7f 01 movw r14, r30
1934: e6 0e add r14, r22
1936: f7 1e adc r15, r23
1938: d7 01 movw r26, r14
193a: 11 96 adiw r26, 0x01 ; 1
193c: 1c 91 ld r17, X
193e: 01 c0 rjmp .+2 ; 0x1942 <dtoa_prf+0x288>
1940: 10 e3 ldi r17, 0x30 ; 48
1942: 41 50 subi r20, 0x01 ; 1
1944: 51 09 sbc r21, r1
1946: 6f 5f subi r22, 0xFF ; 255
1948: 7f 4f sbci r23, 0xFF ; 255
194a: 46 15 cp r20, r6
194c: 57 05 cpc r21, r7
194e: 24 f0 brlt .+8 ; 0x1958 <dtoa_prf+0x29e>
1950: d6 01 movw r26, r12
1952: 1d 93 st X+, r17
1954: 6d 01 movw r12, r26
1956: e0 cf rjmp .-64 ; 0x1918 <dtoa_prf+0x25e>
1958: 48 17 cp r20, r24
195a: 59 07 cpc r21, r25
195c: 39 f4 brne .+14 ; 0x196c <dtoa_prf+0x2b2>
195e: 06 33 cpi r16, 0x36 ; 54
1960: 20 f4 brcc .+8 ; 0x196a <dtoa_prf+0x2b0>
1962: 05 33 cpi r16, 0x35 ; 53
1964: 19 f4 brne .+6 ; 0x196c <dtoa_prf+0x2b2>
1966: a1 10 cpse r10, r1
1968: 01 c0 rjmp .+2 ; 0x196c <dtoa_prf+0x2b2>
196a: 11 e3 ldi r17, 0x31 ; 49
196c: f6 01 movw r30, r12
196e: 11 93 st Z+, r17
1970: 8b 2d mov r24, r11
1972: df 01 movw r26, r30
1974: 90 e2 ldi r25, 0x20 ; 32
1976: 02 c0 rjmp .+4 ; 0x197c <dtoa_prf+0x2c2>
1978: 9d 93 st X+, r25
197a: 81 50 subi r24, 0x01 ; 1
197c: 81 11 cpse r24, r1
197e: fc cf rjmp .-8 ; 0x1978 <dtoa_prf+0x2be>
1980: eb 0d add r30, r11
1982: f1 1d adc r31, r1
1984: 10 82 st Z, r1
1986: 20 e0 ldi r18, 0x00 ; 0
1988: 30 e0 ldi r19, 0x00 ; 0
198a: c9 01 movw r24, r18
198c: 29 96 adiw r28, 0x09 ; 9
198e: 0f b6 in r0, 0x3f ; 63
1990: f8 94 cli
1992: de bf out 0x3e, r29 ; 62
1994: 0f be out 0x3f, r0 ; 63
1996: cd bf out 0x3d, r28 ; 61
1998: df 91 pop r29
199a: cf 91 pop r28
199c: 1f 91 pop r17
199e: 0f 91 pop r16
19a0: ff 90 pop r15
19a2: ef 90 pop r14
19a4: df 90 pop r13
19a6: cf 90 pop r12
19a8: bf 90 pop r11
19aa: af 90 pop r10
19ac: 9f 90 pop r9
19ae: 7f 90 pop r7
19b0: 6f 90 pop r6
19b2: 08 95 ret
000019b4 <__ftoa_engine>:
19b4: 28 30 cpi r18, 0x08 ; 8
19b6: 08 f0 brcs .+2 ; 0x19ba <__ftoa_engine+0x6>
19b8: 27 e0 ldi r18, 0x07 ; 7
19ba: 33 27 eor r19, r19
19bc: da 01 movw r26, r20
19be: 99 0f add r25, r25
19c0: 31 1d adc r19, r1
19c2: 87 fd sbrc r24, 7
19c4: 91 60 ori r25, 0x01 ; 1
19c6: 00 96 adiw r24, 0x00 ; 0
19c8: 61 05 cpc r22, r1
19ca: 71 05 cpc r23, r1
19cc: 39 f4 brne .+14 ; 0x19dc <__ftoa_engine+0x28>
19ce: 32 60 ori r19, 0x02 ; 2
19d0: 2e 5f subi r18, 0xFE ; 254
19d2: 3d 93 st X+, r19
19d4: 30 e3 ldi r19, 0x30 ; 48
19d6: 2a 95 dec r18
19d8: e1 f7 brne .-8 ; 0x19d2 <__ftoa_engine+0x1e>
19da: 08 95 ret
19dc: 9f 3f cpi r25, 0xFF ; 255
19de: 30 f0 brcs .+12 ; 0x19ec <__ftoa_engine+0x38>
19e0: 80 38 cpi r24, 0x80 ; 128
19e2: 71 05 cpc r23, r1
19e4: 61 05 cpc r22, r1
19e6: 09 f0 breq .+2 ; 0x19ea <__ftoa_engine+0x36>
19e8: 3c 5f subi r19, 0xFC ; 252
19ea: 3c 5f subi r19, 0xFC ; 252
19ec: 3d 93 st X+, r19
19ee: 91 30 cpi r25, 0x01 ; 1
19f0: 08 f0 brcs .+2 ; 0x19f4 <__ftoa_engine+0x40>
19f2: 80 68 ori r24, 0x80 ; 128
19f4: 91 1d adc r25, r1
19f6: df 93 push r29
19f8: cf 93 push r28
19fa: 1f 93 push r17
19fc: 0f 93 push r16
19fe: ff 92 push r15
1a00: ef 92 push r14
1a02: 19 2f mov r17, r25
1a04: 98 7f andi r25, 0xF8 ; 248
1a06: 96 95 lsr r25
1a08: e9 2f mov r30, r25
1a0a: 96 95 lsr r25
1a0c: 96 95 lsr r25
1a0e: e9 0f add r30, r25
1a10: ff 27 eor r31, r31
1a12: e2 55 subi r30, 0x52 ; 82
1a14: ff 4f sbci r31, 0xFF ; 255
1a16: 99 27 eor r25, r25
1a18: 33 27 eor r19, r19
1a1a: ee 24 eor r14, r14
1a1c: ff 24 eor r15, r15
1a1e: a7 01 movw r20, r14
1a20: e7 01 movw r28, r14
1a22: 05 90 lpm r0, Z+
1a24: 08 94 sec
1a26: 07 94 ror r0
1a28: 28 f4 brcc .+10 ; 0x1a34 <__ftoa_engine+0x80>
1a2a: 36 0f add r19, r22
1a2c: e7 1e adc r14, r23
1a2e: f8 1e adc r15, r24
1a30: 49 1f adc r20, r25
1a32: 51 1d adc r21, r1
1a34: 66 0f add r22, r22
1a36: 77 1f adc r23, r23
1a38: 88 1f adc r24, r24
1a3a: 99 1f adc r25, r25
1a3c: 06 94 lsr r0
1a3e: a1 f7 brne .-24 ; 0x1a28 <__ftoa_engine+0x74>
1a40: 05 90 lpm r0, Z+
1a42: 07 94 ror r0
1a44: 28 f4 brcc .+10 ; 0x1a50 <__ftoa_engine+0x9c>
1a46: e7 0e add r14, r23
1a48: f8 1e adc r15, r24
1a4a: 49 1f adc r20, r25
1a4c: 56 1f adc r21, r22
1a4e: c1 1d adc r28, r1
1a50: 77 0f add r23, r23
1a52: 88 1f adc r24, r24
1a54: 99 1f adc r25, r25
1a56: 66 1f adc r22, r22
1a58: 06 94 lsr r0
1a5a: a1 f7 brne .-24 ; 0x1a44 <__ftoa_engine+0x90>
1a5c: 05 90 lpm r0, Z+
1a5e: 07 94 ror r0
1a60: 28 f4 brcc .+10 ; 0x1a6c <__ftoa_engine+0xb8>
1a62: f8 0e add r15, r24
1a64: 49 1f adc r20, r25
1a66: 56 1f adc r21, r22
1a68: c7 1f adc r28, r23
1a6a: d1 1d adc r29, r1
1a6c: 88 0f add r24, r24
1a6e: 99 1f adc r25, r25
1a70: 66 1f adc r22, r22
1a72: 77 1f adc r23, r23
1a74: 06 94 lsr r0
1a76: a1 f7 brne .-24 ; 0x1a60 <__ftoa_engine+0xac>
1a78: 05 90 lpm r0, Z+
1a7a: 07 94 ror r0
1a7c: 20 f4 brcc .+8 ; 0x1a86 <__ftoa_engine+0xd2>
1a7e: 49 0f add r20, r25
1a80: 56 1f adc r21, r22
1a82: c7 1f adc r28, r23
1a84: d8 1f adc r29, r24
1a86: 99 0f add r25, r25
1a88: 66 1f adc r22, r22
1a8a: 77 1f adc r23, r23
1a8c: 88 1f adc r24, r24
1a8e: 06 94 lsr r0
1a90: a9 f7 brne .-22 ; 0x1a7c <__ftoa_engine+0xc8>
1a92: 84 91 lpm r24, Z
1a94: 10 95 com r17
1a96: 17 70 andi r17, 0x07 ; 7
1a98: 41 f0 breq .+16 ; 0x1aaa <__ftoa_engine+0xf6>
1a9a: d6 95 lsr r29
1a9c: c7 95 ror r28
1a9e: 57 95 ror r21
1aa0: 47 95 ror r20
1aa2: f7 94 ror r15
1aa4: e7 94 ror r14
1aa6: 1a 95 dec r17
1aa8: c1 f7 brne .-16 ; 0x1a9a <__ftoa_engine+0xe6>
1aaa: e4 e5 ldi r30, 0x54 ; 84
1aac: f0 e0 ldi r31, 0x00 ; 0
1aae: 68 94 set
1ab0: 15 90 lpm r1, Z+
1ab2: 15 91 lpm r17, Z+
1ab4: 35 91 lpm r19, Z+
1ab6: 65 91 lpm r22, Z+
1ab8: 95 91 lpm r25, Z+
1aba: 05 90 lpm r0, Z+
1abc: 7f e2 ldi r23, 0x2F ; 47
1abe: 73 95 inc r23
1ac0: e1 18 sub r14, r1
1ac2: f1 0a sbc r15, r17
1ac4: 43 0b sbc r20, r19
1ac6: 56 0b sbc r21, r22
1ac8: c9 0b sbc r28, r25
1aca: d0 09 sbc r29, r0
1acc: c0 f7 brcc .-16 ; 0x1abe <__ftoa_engine+0x10a>
1ace: e1 0c add r14, r1
1ad0: f1 1e adc r15, r17
1ad2: 43 1f adc r20, r19
1ad4: 56 1f adc r21, r22
1ad6: c9 1f adc r28, r25
1ad8: d0 1d adc r29, r0
1ada: 7e f4 brtc .+30 ; 0x1afa <__ftoa_engine+0x146>
1adc: 70 33 cpi r23, 0x30 ; 48
1ade: 11 f4 brne .+4 ; 0x1ae4 <__ftoa_engine+0x130>
1ae0: 8a 95 dec r24
1ae2: e6 cf rjmp .-52 ; 0x1ab0 <__ftoa_engine+0xfc>
1ae4: e8 94 clt
1ae6: 01 50 subi r16, 0x01 ; 1
1ae8: 30 f0 brcs .+12 ; 0x1af6 <__ftoa_engine+0x142>
1aea: 08 0f add r16, r24
1aec: 0a f4 brpl .+2 ; 0x1af0 <__ftoa_engine+0x13c>
1aee: 00 27 eor r16, r16
1af0: 02 17 cp r16, r18
1af2: 08 f4 brcc .+2 ; 0x1af6 <__ftoa_engine+0x142>
1af4: 20 2f mov r18, r16
1af6: 23 95 inc r18
1af8: 02 2f mov r16, r18
1afa: 7a 33 cpi r23, 0x3A ; 58
1afc: 28 f0 brcs .+10 ; 0x1b08 <__ftoa_engine+0x154>
1afe: 79 e3 ldi r23, 0x39 ; 57
1b00: 7d 93 st X+, r23
1b02: 2a 95 dec r18
1b04: e9 f7 brne .-6 ; 0x1b00 <__ftoa_engine+0x14c>
1b06: 10 c0 rjmp .+32 ; 0x1b28 <__ftoa_engine+0x174>
1b08: 7d 93 st X+, r23
1b0a: 2a 95 dec r18
1b0c: 89 f6 brne .-94 ; 0x1ab0 <__ftoa_engine+0xfc>
1b0e: 06 94 lsr r0
1b10: 97 95 ror r25
1b12: 67 95 ror r22
1b14: 37 95 ror r19
1b16: 17 95 ror r17
1b18: 17 94 ror r1
1b1a: e1 18 sub r14, r1
1b1c: f1 0a sbc r15, r17
1b1e: 43 0b sbc r20, r19
1b20: 56 0b sbc r21, r22
1b22: c9 0b sbc r28, r25
1b24: d0 09 sbc r29, r0
1b26: 98 f0 brcs .+38 ; 0x1b4e <__ftoa_engine+0x19a>
1b28: 23 95 inc r18
1b2a: 7e 91 ld r23, -X
1b2c: 73 95 inc r23
1b2e: 7a 33 cpi r23, 0x3A ; 58
1b30: 08 f0 brcs .+2 ; 0x1b34 <__ftoa_engine+0x180>
1b32: 70 e3 ldi r23, 0x30 ; 48
1b34: 7c 93 st X, r23
1b36: 20 13 cpse r18, r16
1b38: b8 f7 brcc .-18 ; 0x1b28 <__ftoa_engine+0x174>
1b3a: 7e 91 ld r23, -X
1b3c: 70 61 ori r23, 0x10 ; 16
1b3e: 7d 93 st X+, r23
1b40: 30 f0 brcs .+12 ; 0x1b4e <__ftoa_engine+0x19a>
1b42: 83 95 inc r24
1b44: 71 e3 ldi r23, 0x31 ; 49
1b46: 7d 93 st X+, r23
1b48: 70 e3 ldi r23, 0x30 ; 48
1b4a: 2a 95 dec r18
1b4c: e1 f7 brne .-8 ; 0x1b46 <__ftoa_engine+0x192>
1b4e: 11 24 eor r1, r1
1b50: ef 90 pop r14
1b52: ff 90 pop r15
1b54: 0f 91 pop r16
1b56: 1f 91 pop r17
1b58: cf 91 pop r28
1b5a: df 91 pop r29
1b5c: 99 27 eor r25, r25
1b5e: 87 fd sbrc r24, 7
1b60: 90 95 com r25
1b62: 08 95 ret
00001b64 <strrev>:
1b64: dc 01 movw r26, r24
1b66: fc 01 movw r30, r24
1b68: 67 2f mov r22, r23
1b6a: 71 91 ld r23, Z+
1b6c: 77 23 and r23, r23
1b6e: e1 f7 brne .-8 ; 0x1b68 <strrev+0x4>
1b70: 32 97 sbiw r30, 0x02 ; 2
1b72: 04 c0 rjmp .+8 ; 0x1b7c <strrev+0x18>
1b74: 7c 91 ld r23, X
1b76: 6d 93 st X+, r22
1b78: 70 83 st Z, r23
1b7a: 62 91 ld r22, -Z
1b7c: ae 17 cp r26, r30
1b7e: bf 07 cpc r27, r31
1b80: c8 f3 brcs .-14 ; 0x1b74 <strrev+0x10>
1b82: 08 95 ret
00001b84 <_exit>:
1b84: f8 94 cli
00001b86 <__stop_program>:
1b86: ff cf rjmp .-2 ; 0x1b86 <__stop_program>