C:\Users\Martin\AppData\Local\Temp\arduino_build_23468/sketch_jun30b.ino.elf: file format elf32-avr Disassembly of section .text: 00000000 <__vectors>: __vectors(): ../../../../../crt1/gcrt1.S:61 0: 50 c0 rjmp .+160 ; 0xa2 <__ctors_end> 2: 00 00 nop ../../../../../crt1/gcrt1.S:67 4: 68 c0 rjmp .+208 ; 0xd6 <__bad_interrupt> 6: 00 00 nop ../../../../../crt1/gcrt1.S:68 8: 66 c0 rjmp .+204 ; 0xd6 <__bad_interrupt> a: 00 00 nop ../../../../../crt1/gcrt1.S:69 c: 64 c0 rjmp .+200 ; 0xd6 <__bad_interrupt> e: 00 00 nop ../../../../../crt1/gcrt1.S:70 10: 62 c0 rjmp .+196 ; 0xd6 <__bad_interrupt> 12: 00 00 nop ../../../../../crt1/gcrt1.S:71 14: 60 c0 rjmp .+192 ; 0xd6 <__bad_interrupt> 16: 00 00 nop ../../../../../crt1/gcrt1.S:72 18: 5e c0 rjmp .+188 ; 0xd6 <__bad_interrupt> 1a: 00 00 nop ../../../../../crt1/gcrt1.S:73 1c: 5c c0 rjmp .+184 ; 0xd6 <__bad_interrupt> 1e: 00 00 nop ../../../../../crt1/gcrt1.S:74 20: 5a c0 rjmp .+180 ; 0xd6 <__bad_interrupt> 22: 00 00 nop ../../../../../crt1/gcrt1.S:75 24: 58 c0 rjmp .+176 ; 0xd6 <__bad_interrupt> 26: 00 00 nop ../../../../../crt1/gcrt1.S:76 28: 56 c0 rjmp .+172 ; 0xd6 <__bad_interrupt> 2a: 00 00 nop ../../../../../crt1/gcrt1.S:77 2c: 54 c0 rjmp .+168 ; 0xd6 <__bad_interrupt> 2e: 00 00 nop ../../../../../crt1/gcrt1.S:78 30: 52 c0 rjmp .+164 ; 0xd6 <__bad_interrupt> 32: 00 00 nop ../../../../../crt1/gcrt1.S:79 34: 50 c0 rjmp .+160 ; 0xd6 <__bad_interrupt> 36: 00 00 nop ../../../../../crt1/gcrt1.S:80 38: 4e c0 rjmp .+156 ; 0xd6 <__bad_interrupt> 3a: 00 00 nop ../../../../../crt1/gcrt1.S:81 3c: 4c c0 rjmp .+152 ; 0xd6 <__bad_interrupt> 3e: 00 00 nop ../../../../../crt1/gcrt1.S:82 40: 4a c0 rjmp .+148 ; 0xd6 <__bad_interrupt> 42: 00 00 nop ../../../../../crt1/gcrt1.S:83 44: 48 c0 rjmp .+144 ; 0xd6 <__bad_interrupt> 46: 00 00 nop ../../../../../crt1/gcrt1.S:84 48: 46 c0 rjmp .+140 ; 0xd6 <__bad_interrupt> 4a: 00 00 nop ../../../../../crt1/gcrt1.S:85 4c: 44 c0 rjmp .+136 ; 0xd6 <__bad_interrupt> 4e: 00 00 nop ../../../../../crt1/gcrt1.S:86 50: 42 c0 rjmp .+132 ; 0xd6 <__bad_interrupt> 52: 00 00 nop ../../../../../crt1/gcrt1.S:87 54: 40 c0 rjmp .+128 ; 0xd6 <__bad_interrupt> 56: 00 00 nop ../../../../../crt1/gcrt1.S:88 58: 3e c0 rjmp .+124 ; 0xd6 <__bad_interrupt> 5a: 00 00 nop ../../../../../crt1/gcrt1.S:89 5c: 3c c0 rjmp .+120 ; 0xd6 <__bad_interrupt> 5e: 00 00 nop ../../../../../crt1/gcrt1.S:90 60: 3a c0 rjmp .+116 ; 0xd6 <__bad_interrupt> 62: 00 00 nop ../../../../../crt1/gcrt1.S:91 64: 69 c3 rjmp .+1746 ; 0x738 <__vector_25> 66: 00 00 nop ../../../../../crt1/gcrt1.S:92 68: 36 c0 rjmp .+108 ; 0xd6 <__bad_interrupt> 6a: 00 00 nop ../../../../../crt1/gcrt1.S:93 6c: 34 c0 rjmp .+104 ; 0xd6 <__bad_interrupt> 6e: 00 00 nop ../../../../../crt1/gcrt1.S:94 70: 32 c0 rjmp .+100 ; 0xd6 <__bad_interrupt> 72: 00 00 nop ../../../../../crt1/gcrt1.S:95 74: 30 c0 rjmp .+96 ; 0xd6 <__bad_interrupt> 76: 00 00 nop ../../../../../crt1/gcrt1.S:96 78: 2e c0 rjmp .+92 ; 0xd6 <__bad_interrupt> 7a: 00 00 nop ../../../../../crt1/gcrt1.S:97 7c: 2c c0 rjmp .+88 ; 0xd6 <__bad_interrupt> 7e: 00 00 nop ../../../../../crt1/gcrt1.S:98 80: 2a c0 rjmp .+84 ; 0xd6 <__bad_interrupt> 82: 00 00 nop ../../../../../crt1/gcrt1.S:99 84: 28 c0 rjmp .+80 ; 0xd6 <__bad_interrupt> 86: 00 00 nop ../../../../../crt1/gcrt1.S:100 88: 26 c0 rjmp .+76 ; 0xd6 <__bad_interrupt> 8a: 00 00 nop ../../../../../crt1/gcrt1.S:101 8c: 24 c0 rjmp .+72 ; 0xd6 <__bad_interrupt> 8e: 00 00 nop ../../../../../crt1/gcrt1.S:102 90: 22 c0 rjmp .+68 ; 0xd6 <__bad_interrupt> 92: 00 00 nop ../../../../../crt1/gcrt1.S:103 94: 20 c0 rjmp .+64 ; 0xd6 <__bad_interrupt> 96: 00 00 nop ../../../../../crt1/gcrt1.S:104 98: 1e c0 rjmp .+60 ; 0xd6 <__bad_interrupt> 9a: 00 00 nop ../../../../../crt1/gcrt1.S:105 9c: 1c c0 rjmp .+56 ; 0xd6 <__bad_interrupt> ... 000000a0 <__ctors_start>: __trampolines_start(): a0: c4 03 fmuls r20, r20 000000a2 <__ctors_end>: __dtors_end(): ../../../../../crt1/gcrt1.S:230 a2: 11 24 eor r1, r1 ../../../../../crt1/gcrt1.S:231 a4: 1f be out 0x3f, r1 ; 63 ../../../../../crt1/gcrt1.S:232 a6: cf ef ldi r28, 0xFF ; 255 ../../../../../crt1/gcrt1.S:234 a8: cd bf out 0x3d, r28 ; 61 ../../../../../crt1/gcrt1.S:236 aa: df e3 ldi r29, 0x3F ; 63 ../../../../../crt1/gcrt1.S:237 ac: de bf out 0x3e, r29 ; 62 000000ae <__do_clear_bss>: __do_clear_bss(): /home/jenkins-mingw32/workspace/avr-gcc-staging/label/Ubuntu14.04x64-mingw32/gcc-build/avr/avrxmega3/short-calls/libgcc/../../../../../gcc/libgcc/config/avr/lib1funcs.S:2441 ae: 2c e3 ldi r18, 0x3C ; 60 /home/jenkins-mingw32/workspace/avr-gcc-staging/label/Ubuntu14.04x64-mingw32/gcc-build/avr/avrxmega3/short-calls/libgcc/../../../../../gcc/libgcc/config/avr/lib1funcs.S:2442 b0: a0 e0 ldi r26, 0x00 ; 0 /home/jenkins-mingw32/workspace/avr-gcc-staging/label/Ubuntu14.04x64-mingw32/gcc-build/avr/avrxmega3/short-calls/libgcc/../../../../../gcc/libgcc/config/avr/lib1funcs.S:2443 b2: bc e3 ldi r27, 0x3C ; 60 /home/jenkins-mingw32/workspace/avr-gcc-staging/label/Ubuntu14.04x64-mingw32/gcc-build/avr/avrxmega3/short-calls/libgcc/../../../../../gcc/libgcc/config/avr/lib1funcs.S:2444 b4: 01 c0 rjmp .+2 ; 0xb8 <.do_clear_bss_start> 000000b6 <.do_clear_bss_loop>: /home/jenkins-mingw32/workspace/avr-gcc-staging/label/Ubuntu14.04x64-mingw32/gcc-build/avr/avrxmega3/short-calls/libgcc/../../../../../gcc/libgcc/config/avr/lib1funcs.S:2446 b6: 1d 92 st X+, r1 000000b8 <.do_clear_bss_start>: /home/jenkins-mingw32/workspace/avr-gcc-staging/label/Ubuntu14.04x64-mingw32/gcc-build/avr/avrxmega3/short-calls/libgcc/../../../../../gcc/libgcc/config/avr/lib1funcs.S:2448 b8: a8 38 cpi r26, 0x88 ; 136 /home/jenkins-mingw32/workspace/avr-gcc-staging/label/Ubuntu14.04x64-mingw32/gcc-build/avr/avrxmega3/short-calls/libgcc/../../../../../gcc/libgcc/config/avr/lib1funcs.S:2449 ba: b2 07 cpc r27, r18 /home/jenkins-mingw32/workspace/avr-gcc-staging/label/Ubuntu14.04x64-mingw32/gcc-build/avr/avrxmega3/short-calls/libgcc/../../../../../gcc/libgcc/config/avr/lib1funcs.S:2450 bc: e1 f7 brne .-8 ; 0xb6 <.do_clear_bss_loop> 000000be <__do_global_ctors>: __do_global_ctors(): /home/jenkins-mingw32/workspace/avr-gcc-staging/label/Ubuntu14.04x64-mingw32/gcc-build/avr/avrxmega3/short-calls/libgcc/../../../../../gcc/libgcc/config/avr/lib1funcs.S:2466 be: 10 e0 ldi r17, 0x00 ; 0 /home/jenkins-mingw32/workspace/avr-gcc-staging/label/Ubuntu14.04x64-mingw32/gcc-build/avr/avrxmega3/short-calls/libgcc/../../../../../gcc/libgcc/config/avr/lib1funcs.S:2467 c0: c1 e5 ldi r28, 0x51 ; 81 /home/jenkins-mingw32/workspace/avr-gcc-staging/label/Ubuntu14.04x64-mingw32/gcc-build/avr/avrxmega3/short-calls/libgcc/../../../../../gcc/libgcc/config/avr/lib1funcs.S:2468 c2: d0 e0 ldi r29, 0x00 ; 0 /home/jenkins-mingw32/workspace/avr-gcc-staging/label/Ubuntu14.04x64-mingw32/gcc-build/avr/avrxmega3/short-calls/libgcc/../../../../../gcc/libgcc/config/avr/lib1funcs.S:2472 c4: 03 c0 rjmp .+6 ; 0xcc <__do_global_ctors+0xe> /home/jenkins-mingw32/workspace/avr-gcc-staging/label/Ubuntu14.04x64-mingw32/gcc-build/avr/avrxmega3/short-calls/libgcc/../../../../../gcc/libgcc/config/avr/lib1funcs.S:2474 c6: 21 97 sbiw r28, 0x01 ; 1 /home/jenkins-mingw32/workspace/avr-gcc-staging/label/Ubuntu14.04x64-mingw32/gcc-build/avr/avrxmega3/short-calls/libgcc/../../../../../gcc/libgcc/config/avr/lib1funcs.S:2480 c8: fe 01 movw r30, r28 /home/jenkins-mingw32/workspace/avr-gcc-staging/label/Ubuntu14.04x64-mingw32/gcc-build/avr/avrxmega3/short-calls/libgcc/../../../../../gcc/libgcc/config/avr/lib1funcs.S:2481 ca: f8 d5 rcall .+3056 ; 0xcbc <__tablejump2__> /home/jenkins-mingw32/workspace/avr-gcc-staging/label/Ubuntu14.04x64-mingw32/gcc-build/avr/avrxmega3/short-calls/libgcc/../../../../../gcc/libgcc/config/avr/lib1funcs.S:2483 cc: c0 35 cpi r28, 0x50 ; 80 /home/jenkins-mingw32/workspace/avr-gcc-staging/label/Ubuntu14.04x64-mingw32/gcc-build/avr/avrxmega3/short-calls/libgcc/../../../../../gcc/libgcc/config/avr/lib1funcs.S:2484 ce: d1 07 cpc r29, r17 /home/jenkins-mingw32/workspace/avr-gcc-staging/label/Ubuntu14.04x64-mingw32/gcc-build/avr/avrxmega3/short-calls/libgcc/../../../../../gcc/libgcc/config/avr/lib1funcs.S:2489 d0: d1 f7 brne .-12 ; 0xc6 <__do_global_ctors+0x8> ../../../../../crt1/gcrt1.S:314 d2: b9 d3 rcall .+1906 ; 0x846
../../../../../crt1/gcrt1.S:315 d4: 0e c6 rjmp .+3100 ; 0xcf2 <_exit> 000000d6 <__bad_interrupt>: __vector_38(): ../../../../../crt1/gcrt1.S:209 d6: 94 cf rjmp .-216 ; 0x0 <__vectors> 000000d8 : _ZN8SPIClass8transferEh.constprop.25(): C:\Users\Martin\AppData\Local\Arduino15\packages\MegaCoreX\hardware\megaavr\1.0.10\libraries\SPI\src/SPI.cpp:304 * The following NOP introduces a small delay that can prevent the wait * loop from iterating when running at the maximum speed. This gives * about 10% more speed, even if it seems counter-intuitive. At lower * speeds it is unnoticed. */ asm volatile("nop"); d8: 00 00 nop C:\Users\Martin\AppData\Local\Arduino15\packages\MegaCoreX\hardware\megaavr\1.0.10\libraries\SPI\src/SPI.cpp:306 SPI0.DATA = data; da: 80 93 c4 08 sts 0x08C4, r24 ; 0x8008c4 C:\Users\Martin\AppData\Local\Arduino15\packages\MegaCoreX\hardware\megaavr\1.0.10\libraries\SPI\src/SPI.cpp:307 while ((SPI0.INTFLAGS & SPI_RXCIF_bm) == 0); // wait for complete send de: 80 91 c3 08 lds r24, 0x08C3 ; 0x8008c3 e2: 87 ff sbrs r24, 7 e4: fc cf rjmp .-8 ; 0xde C:\Users\Martin\AppData\Local\Arduino15\packages\MegaCoreX\hardware\megaavr\1.0.10\libraries\SPI\src/SPI.cpp:308 return SPI0.DATA; // read data back e6: 80 91 c4 08 lds r24, 0x08C4 ; 0x8008c4 C:\Users\Martin\AppData\Local\Arduino15\packages\MegaCoreX\hardware\megaavr\1.0.10\libraries\SPI\src/SPI.cpp:309 } ea: 08 95 ret 000000ec : digitalWrite.part.2(): C:\Users\Martin\AppData\Local\Arduino15\packages\MegaCoreX\hardware\megaavr\1.0.10\cores\coreX-corefiles/wiring_digital.c:137 } void digitalWrite(uint8_t pin, uint8_t val) { /* Get bit mask for pin */ uint8_t bit_mask = digitalPinToBitMask(pin); ec: 28 2f mov r18, r24 ee: 30 e0 ldi r19, 0x00 ; 0 f0: f9 01 movw r30, r18 f2: ed 57 subi r30, 0x7D ; 125 f4: f2 4b sbci r31, 0xB2 ; 178 f6: 40 81 ld r20, Z C:\Users\Martin\AppData\Local\Arduino15\packages\MegaCoreX\hardware\megaavr\1.0.10\cores\coreX-corefiles/wiring_digital.c:138 if (bit_mask == NOT_A_PIN) f8: 4f 3f cpi r20, 0xFF ; 255 fa: 09 f4 brne .+2 ; 0xfe fc: 50 c0 rjmp .+160 ; 0x19e <__EEPROM_REGION_LENGTH__+0x9e> turnOffPWM(): C:\Users\Martin\AppData\Local\Arduino15\packages\MegaCoreX\hardware\megaavr\1.0.10\cores\coreX-corefiles/wiring_digital.c:97 static void turnOffPWM(uint8_t pin) { /* Actually turn off compare channel, not the timer */ /* Get pin's timer */ uint8_t timer = digitalPinToTimer(pin); fe: 89 32 cpi r24, 0x29 ; 41 100: 58 f4 brcc .+22 ; 0x118 <__EEPROM_REGION_LENGTH__+0x18> 102: f9 01 movw r30, r18 104: e8 5f subi r30, 0xF8 ; 248 106: f2 4b sbci r31, 0xB2 ; 178 108: e0 81 ld r30, Z C:\Users\Martin\AppData\Local\Arduino15\packages\MegaCoreX\hardware\megaavr\1.0.10\cores\coreX-corefiles/wiring_digital.c:98 if (timer == NOT_ON_TIMER) 10a: ee 23 and r30, r30 10c: 29 f0 breq .+10 ; 0x118 <__EEPROM_REGION_LENGTH__+0x18> C:\Users\Martin\AppData\Local\Arduino15\packages\MegaCoreX\hardware\megaavr\1.0.10\cores\coreX-corefiles/wiring_digital.c:104 return; uint8_t bit_pos; TCB_t *timerB; switch (timer) 10e: e1 30 cpi r30, 0x01 ; 1 110: 99 f0 breq .+38 ; 0x138 <__EEPROM_REGION_LENGTH__+0x38> 112: 10 f0 brcs .+4 ; 0x118 <__EEPROM_REGION_LENGTH__+0x18> 114: e6 30 cpi r30, 0x06 ; 6 116: 20 f1 brcs .+72 ; 0x160 <__EEPROM_REGION_LENGTH__+0x60> digitalWrite.part.2(): C:\Users\Martin\AppData\Local\Arduino15\packages\MegaCoreX\hardware\megaavr\1.0.10\cores\coreX-corefiles/wiring_digital.c:150 turnOffPWM(pin); /* Assuming the direction is already output !! */ /* Get port */ PORT_t *port = digitalPinToPortStruct(pin); 118: f9 01 movw r30, r18 11a: e6 5a subi r30, 0xA6 ; 166 11c: f2 4b sbci r31, 0xB2 ; 178 11e: e0 81 ld r30, Z 120: a0 e2 ldi r26, 0x20 ; 32 122: ea 9f mul r30, r26 124: f0 01 movw r30, r0 126: 11 24 eor r1, r1 128: fc 5f subi r31, 0xFC ; 252 C:\Users\Martin\AppData\Local\Arduino15\packages\MegaCoreX\hardware\megaavr\1.0.10\cores\coreX-corefiles/wiring_digital.c:153 /* Output direction */ if (port->DIR & bit_mask) 12a: 80 81 ld r24, Z 12c: 84 23 and r24, r20 12e: 21 f1 breq .+72 ; 0x178 <__EEPROM_REGION_LENGTH__+0x78> C:\Users\Martin\AppData\Local\Arduino15\packages\MegaCoreX\hardware\megaavr\1.0.10\cores\coreX-corefiles/wiring_digital.c:156 { /* Set output to value */ if (val == LOW) 130: 61 11 cpse r22, r1 132: 20 c0 rjmp .+64 ; 0x174 <__EEPROM_REGION_LENGTH__+0x74> C:\Users\Martin\AppData\Local\Arduino15\packages\MegaCoreX\hardware\megaavr\1.0.10\cores\coreX-corefiles/wiring_digital.c:158 { /* If LOW */ port->OUTCLR = bit_mask; 134: 46 83 std Z+6, r20 ; 0x06 136: 08 95 ret turnOffPWM(): C:\Users\Martin\AppData\Local\Arduino15\packages\MegaCoreX\hardware\megaavr\1.0.10\cores\coreX-corefiles/wiring_digital.c:109 switch (timer) { /* TCA0 */ case TIMERA0: /* Bit position will give output channel */ bit_pos = digitalPinToBitPosition(pin); 138: f9 01 movw r30, r18 13a: ef 5c subi r30, 0xCF ; 207 13c: f2 4b sbci r31, 0xB2 ; 178 13e: 50 81 ld r21, Z C:\Users\Martin\AppData\Local\Arduino15\packages\MegaCoreX\hardware\megaavr\1.0.10\cores\coreX-corefiles/wiring_digital.c:112 /* Disable corresponding channel */ if (bit_pos >= 3) ++bit_pos; /* Upper 3 bits are shifted by 1 */ 140: 53 30 cpi r21, 0x03 ; 3 142: 08 f0 brcs .+2 ; 0x146 <__EEPROM_REGION_LENGTH__+0x46> 144: 5f 5f subi r21, 0xFF ; 255 C:\Users\Martin\AppData\Local\Arduino15\packages\MegaCoreX\hardware\megaavr\1.0.10\cores\coreX-corefiles/wiring_digital.c:113 TCA0.SPLIT.CTRLB &= ~(1 << (TCA_SPLIT_LCMP0EN_bp + bit_pos)); 146: 70 91 01 0a lds r23, 0x0A01 ; 0x800a01 14a: 81 e0 ldi r24, 0x01 ; 1 14c: 90 e0 ldi r25, 0x00 ; 0 14e: 01 c0 rjmp .+2 ; 0x152 <__EEPROM_REGION_LENGTH__+0x52> 150: 88 0f add r24, r24 152: 5a 95 dec r21 154: ea f7 brpl .-6 ; 0x150 <__EEPROM_REGION_LENGTH__+0x50> 156: 80 95 com r24 158: 87 23 and r24, r23 15a: 80 93 01 0a sts 0x0A01, r24 ; 0x800a01 15e: dc cf rjmp .-72 ; 0x118 <__EEPROM_REGION_LENGTH__+0x18> C:\Users\Martin\AppData\Local\Arduino15\packages\MegaCoreX\hardware\megaavr\1.0.10\cores\coreX-corefiles/wiring_digital.c:123 case TIMERB0: case TIMERB1: case TIMERB2: case TIMERB3: timerB = (TCB_t *)&TCB0 + (timer - TIMERB0); 160: 80 e1 ldi r24, 0x10 ; 16 162: e8 9f mul r30, r24 164: f0 01 movw r30, r0 166: 11 24 eor r1, r1 168: e0 5a subi r30, 0xA0 ; 160 16a: f5 4f sbci r31, 0xF5 ; 245 C:\Users\Martin\AppData\Local\Arduino15\packages\MegaCoreX\hardware\megaavr\1.0.10\cores\coreX-corefiles/wiring_digital.c:126 /* Disable TCB compare channel */ timerB->CTRLB &= ~(TCB_CCMPEN_bm); 16c: 81 81 ldd r24, Z+1 ; 0x01 16e: 8f 7e andi r24, 0xEF ; 239 170: 81 83 std Z+1, r24 ; 0x01 172: d2 cf rjmp .-92 ; 0x118 <__EEPROM_REGION_LENGTH__+0x18> digitalWrite.part.2(): C:\Users\Martin\AppData\Local\Arduino15\packages\MegaCoreX\hardware\megaavr\1.0.10\cores\coreX-corefiles/wiring_digital.c:167 port->OUTTGL = bit_mask; /* If HIGH OR > TOGGLE */ } else { port->OUTSET = bit_mask; 174: 45 83 std Z+5, r20 ; 0x05 176: 08 95 ret C:\Users\Martin\AppData\Local\Arduino15\packages\MegaCoreX\hardware\megaavr\1.0.10\cores\coreX-corefiles/wiring_digital.c:180 pull up is enabled if this function is called. Should we purposely implement this side effect? */ /* Get bit position for getting pin ctrl reg */ uint8_t bit_pos = digitalPinToBitPosition(pin); 178: 2f 5c subi r18, 0xCF ; 207 17a: 32 4b sbci r19, 0xB2 ; 178 17c: d9 01 movw r26, r18 17e: 8c 91 ld r24, X C:\Users\Martin\AppData\Local\Arduino15\packages\MegaCoreX\hardware\megaavr\1.0.10\cores\coreX-corefiles/wiring_digital.c:183 /* Calculate where pin control register is */ volatile uint8_t *pin_ctrl_reg = getPINnCTRLregister(port, bit_pos); 180: 30 97 sbiw r30, 0x00 ; 0 182: 71 f0 breq .+28 ; 0x1a0 <__EEPROM_REGION_LENGTH__+0xa0> 184: 8f 3f cpi r24, 0xFF ; 255 186: 61 f0 breq .+24 ; 0x1a0 <__EEPROM_REGION_LENGTH__+0xa0> 188: 70 96 adiw r30, 0x10 ; 16 18a: e8 0f add r30, r24 18c: f1 1d adc r31, r1 C:\Users\Martin\AppData\Local\Arduino15\packages\MegaCoreX\hardware\megaavr\1.0.10\cores\coreX-corefiles/wiring_digital.c:186 /* Save system status and disable interrupts */ uint8_t status = SREG; 18e: 9f b7 in r25, 0x3f ; 63 C:\Users\Martin\AppData\Local\Arduino15\packages\MegaCoreX\hardware\megaavr\1.0.10\cores\coreX-corefiles/wiring_digital.c:187 cli(); 190: f8 94 cli C:\Users\Martin\AppData\Local\Arduino15\packages\MegaCoreX\hardware\megaavr\1.0.10\cores\coreX-corefiles/wiring_digital.c:192 if (val == LOW) { /* Disable pullup */ *pin_ctrl_reg &= ~PORT_PULLUPEN_bm; 192: 80 81 ld r24, Z C:\Users\Martin\AppData\Local\Arduino15\packages\MegaCoreX\hardware\megaavr\1.0.10\cores\coreX-corefiles/wiring_digital.c:189 /* Save system status and disable interrupts */ uint8_t status = SREG; cli(); if (val == LOW) 194: 61 11 cpse r22, r1 196: 07 c0 rjmp .+14 ; 0x1a6 <__EEPROM_REGION_LENGTH__+0xa6> C:\Users\Martin\AppData\Local\Arduino15\packages\MegaCoreX\hardware\megaavr\1.0.10\cores\coreX-corefiles/wiring_digital.c:192 { /* Disable pullup */ *pin_ctrl_reg &= ~PORT_PULLUPEN_bm; 198: 87 7f andi r24, 0xF7 ; 247 C:\Users\Martin\AppData\Local\Arduino15\packages\MegaCoreX\hardware\megaavr\1.0.10\cores\coreX-corefiles/wiring_digital.c:197 } else { /* Enable pull-up */ *pin_ctrl_reg |= PORT_PULLUPEN_bm; 19a: 80 83 st Z, r24 C:\Users\Martin\AppData\Local\Arduino15\packages\MegaCoreX\hardware\megaavr\1.0.10\cores\coreX-corefiles/wiring_digital.c:201 } /* Restore system status */ SREG = status; 19c: 9f bf out 0x3f, r25 ; 63 C:\Users\Martin\AppData\Local\Arduino15\packages\MegaCoreX\hardware\megaavr\1.0.10\cores\coreX-corefiles/wiring_digital.c:203 } } 19e: 08 95 ret C:\Users\Martin\AppData\Local\Arduino15\packages\MegaCoreX\hardware\megaavr\1.0.10\cores\coreX-corefiles/wiring_digital.c:183 /* Get bit position for getting pin ctrl reg */ uint8_t bit_pos = digitalPinToBitPosition(pin); /* Calculate where pin control register is */ volatile uint8_t *pin_ctrl_reg = getPINnCTRLregister(port, bit_pos); 1a0: f0 e0 ldi r31, 0x00 ; 0 1a2: e0 e0 ldi r30, 0x00 ; 0 1a4: f4 cf rjmp .-24 ; 0x18e <__EEPROM_REGION_LENGTH__+0x8e> C:\Users\Martin\AppData\Local\Arduino15\packages\MegaCoreX\hardware\megaavr\1.0.10\cores\coreX-corefiles/wiring_digital.c:197 *pin_ctrl_reg &= ~PORT_PULLUPEN_bm; } else { /* Enable pull-up */ *pin_ctrl_reg |= PORT_PULLUPEN_bm; 1a6: 88 60 ori r24, 0x08 ; 8 1a8: f8 cf rjmp .-16 ; 0x19a <__EEPROM_REGION_LENGTH__+0x9a> 000001aa : _ZN7MCP25156endSPIEv.constprop.31(): C:\Users\Martin\Documents\Arduino\libraries\autowp-mcp2515/mcp2515.cpp:29 void MCP2515::startSPI() { SPI.beginTransaction(SPISettings(SPI_CLOCK, MSBFIRST, SPI_MODE0)); digitalWrite(SPICS, LOW); } void MCP2515::endSPI() { 1aa: 8f 92 push r8 1ac: 9f 92 push r9 1ae: af 92 push r10 1b0: bf 92 push r11 1b2: cf 92 push r12 1b4: df 92 push r13 1b6: ef 92 push r14 1b8: ff 92 push r15 1ba: 0f 93 push r16 1bc: cf 93 push r28 1be: df 93 push r29 C:\Users\Martin\Documents\Arduino\libraries\autowp-mcp2515/mcp2515.cpp:30 digitalWrite(SPICS, HIGH); 1c0: 80 91 85 3c lds r24, 0x3C85 ; 0x803c85 digitalWrite(): C:\Users\Martin\AppData\Local\Arduino15\packages\MegaCoreX\hardware\megaavr\1.0.10\cores\coreX-corefiles/wiring_digital.c:137 } void digitalWrite(uint8_t pin, uint8_t val) { /* Get bit mask for pin */ uint8_t bit_mask = digitalPinToBitMask(pin); 1c4: 89 32 cpi r24, 0x29 ; 41 1c6: 10 f4 brcc .+4 ; 0x1cc 1c8: 61 e0 ldi r22, 0x01 ; 1 1ca: 90 df rcall .-224 ; 0xec endTransaction(): C:\Users\Martin\AppData\Local\Arduino15\packages\MegaCoreX\hardware\megaavr\1.0.10\libraries\SPI\src/SPI.cpp:265 config(settings); } void SPIClass::endTransaction(void) { if (interruptMode != SPI_IMODE_NONE) 1cc: 80 91 1c 3c lds r24, 0x3C1C ; 0x803c1c 1d0: 88 23 and r24, r24 1d2: 19 f0 breq .+6 ; 0x1da C:\Users\Martin\AppData\Local\Arduino15\packages\MegaCoreX\hardware\megaavr\1.0.10\libraries\SPI\src/SPI.cpp:267 { if (interruptMode & SPI_IMODE_GLOBAL) 1d4: 81 ff sbrs r24, 1 1d6: 0d c0 rjmp .+26 ; 0x1f2 C:\Users\Martin\AppData\Local\Arduino15\packages\MegaCoreX\hardware\megaavr\1.0.10\libraries\SPI\src/SPI.cpp:269 { interrupts(); 1d8: 78 94 sei _ZN7MCP25156endSPIEv.constprop.31(): C:\Users\Martin\Documents\Arduino\libraries\autowp-mcp2515/mcp2515.cpp:32 SPI.endTransaction(); } 1da: df 91 pop r29 1dc: cf 91 pop r28 1de: 0f 91 pop r16 1e0: ff 90 pop r15 1e2: ef 90 pop r14 1e4: df 90 pop r13 1e6: cf 90 pop r12 1e8: bf 90 pop r11 1ea: af 90 pop r10 1ec: 9f 90 pop r9 1ee: 8f 90 pop r8 1f0: 08 95 ret endTransaction(): C:\Users\Martin\AppData\Local\Arduino15\packages\MegaCoreX\hardware\megaavr\1.0.10\libraries\SPI\src/SPI.cpp:271 } else if (interruptMode & SPI_IMODE_EXTINT) 1f2: 80 ff sbrs r24, 0 1f4: f2 cf rjmp .-28 ; 0x1da reattachMaskedInterrupts(): C:\Users\Martin\AppData\Local\Arduino15\packages\MegaCoreX\hardware\megaavr\1.0.10\libraries\SPI\src/SPI.cpp:225 shift++; } } void SPIClass::reattachMaskedInterrupts() { uint64_t temp = interruptMask_lo; 1f6: 80 90 1e 3c lds r8, 0x3C1E ; 0x803c1e 1fa: 90 90 1f 3c lds r9, 0x3C1F ; 0x803c1f 1fe: a0 90 20 3c lds r10, 0x3C20 ; 0x803c20 202: b0 90 21 3c lds r11, 0x3C21 ; 0x803c21 206: c1 2c mov r12, r1 208: d1 2c mov r13, r1 20a: 76 01 movw r14, r12 _ZN7MCP25156endSPIEv.constprop.31(): C:\Users\Martin\AppData\Local\Arduino15\packages\MegaCoreX\hardware\megaavr\1.0.10\libraries\SPI\src/SPI.cpp:226 uint8_t shift = 0; 20c: e0 e0 ldi r30, 0x00 ; 0 reattachMaskedInterrupts(): C:\Users\Martin\AppData\Local\Arduino15\packages\MegaCoreX\hardware\megaavr\1.0.10\libraries\SPI\src/SPI.cpp:227 while (temp != 0) { 20e: 94 01 movw r18, r8 210: a5 01 movw r20, r10 212: b6 01 movw r22, r12 214: c7 01 movw r24, r14 216: a0 e0 ldi r26, 0x00 ; 0 218: 45 d5 rcall .+2698 ; 0xca4 <__cmpdi2_s8> 21a: 81 f1 breq .+96 ; 0x27c C:\Users\Martin\AppData\Local\Arduino15\packages\MegaCoreX\hardware\megaavr\1.0.10\libraries\SPI\src/SPI.cpp:228 if (temp & 1) { 21c: 21 70 andi r18, 0x01 ; 1 21e: 30 e0 ldi r19, 0x00 ; 0 220: 40 e0 ldi r20, 0x00 ; 0 222: 50 e0 ldi r21, 0x00 ; 0 224: 60 e0 ldi r22, 0x00 ; 0 226: 70 e0 ldi r23, 0x00 ; 0 228: 80 e0 ldi r24, 0x00 ; 0 22a: 90 e0 ldi r25, 0x00 ; 0 22c: 3b d5 rcall .+2678 ; 0xca4 <__cmpdi2_s8> 22e: d1 f0 breq .+52 ; 0x264 _ZN7MCP25156endSPIEv.constprop.31(): C:\Users\Martin\AppData\Local\Arduino15\packages\MegaCoreX\hardware\megaavr\1.0.10\libraries\SPI\src/SPI.cpp:229 volatile uint8_t* pin_ctrl_reg = getPINnCTRLregister(portToPortStruct(shift/8), shift%8); 230: b0 e0 ldi r27, 0x00 ; 0 232: a0 e0 ldi r26, 0x00 ; 0 reattachMaskedInterrupts(): 234: e0 33 cpi r30, 0x30 ; 48 236: 70 f4 brcc .+28 ; 0x254 238: ae 2f mov r26, r30 23a: a6 95 lsr r26 23c: a6 95 lsr r26 23e: a6 95 lsr r26 240: 80 e2 ldi r24, 0x20 ; 32 242: a8 9f mul r26, r24 244: d0 01 movw r26, r0 246: 11 24 eor r1, r1 248: a0 5f subi r26, 0xF0 ; 240 24a: bb 4f sbci r27, 0xFB ; 251 24c: 8e 2f mov r24, r30 24e: 87 70 andi r24, 0x07 ; 7 250: a8 0f add r26, r24 252: b1 1d adc r27, r1 C:\Users\Martin\AppData\Local\Arduino15\packages\MegaCoreX\hardware\megaavr\1.0.10\libraries\SPI\src/SPI.cpp:230 *pin_ctrl_reg |= irqMap[shift]; 254: ce 2f mov r28, r30 256: d0 e0 ldi r29, 0x00 ; 0 258: ca 5e subi r28, 0xEA ; 234 25a: d3 4c sbci r29, 0xC3 ; 195 25c: 88 89 ldd r24, Y+16 ; 0x10 25e: 9c 91 ld r25, X 260: 89 2b or r24, r25 262: 8c 93 st X, r24 C:\Users\Martin\AppData\Local\Arduino15\packages\MegaCoreX\hardware\megaavr\1.0.10\libraries\SPI\src/SPI.cpp:232 } temp = temp >> 1; 264: 94 01 movw r18, r8 266: a5 01 movw r20, r10 268: b6 01 movw r22, r12 26a: c7 01 movw r24, r14 26c: 01 e0 ldi r16, 0x01 ; 1 26e: ff d4 rcall .+2558 ; 0xc6e <__lshrdi3> 270: 49 01 movw r8, r18 272: 5a 01 movw r10, r20 274: 6b 01 movw r12, r22 276: 7c 01 movw r14, r24 C:\Users\Martin\AppData\Local\Arduino15\packages\MegaCoreX\hardware\megaavr\1.0.10\libraries\SPI\src/SPI.cpp:233 shift++; 278: ef 5f subi r30, 0xFF ; 255 27a: c9 cf rjmp .-110 ; 0x20e C:\Users\Martin\AppData\Local\Arduino15\packages\MegaCoreX\hardware\megaavr\1.0.10\libraries\SPI\src/SPI.cpp:235 } temp = interruptMask_hi; 27c: 80 90 22 3c lds r8, 0x3C22 ; 0x803c22 280: 90 90 23 3c lds r9, 0x3C23 ; 0x803c23 284: a0 90 24 3c lds r10, 0x3C24 ; 0x803c24 288: b0 90 25 3c lds r11, 0x3C25 ; 0x803c25 28c: c1 2c mov r12, r1 28e: d1 2c mov r13, r1 290: 76 01 movw r14, r12 _ZN7MCP25156endSPIEv.constprop.31(): C:\Users\Martin\AppData\Local\Arduino15\packages\MegaCoreX\hardware\megaavr\1.0.10\libraries\SPI\src/SPI.cpp:236 shift = 32; 292: e0 e2 ldi r30, 0x20 ; 32 reattachMaskedInterrupts(): C:\Users\Martin\AppData\Local\Arduino15\packages\MegaCoreX\hardware\megaavr\1.0.10\libraries\SPI\src/SPI.cpp:237 while (temp != 0) { 294: 94 01 movw r18, r8 296: a5 01 movw r20, r10 298: b6 01 movw r22, r12 29a: c7 01 movw r24, r14 29c: a0 e0 ldi r26, 0x00 ; 0 29e: 02 d5 rcall .+2564 ; 0xca4 <__cmpdi2_s8> 2a0: 09 f4 brne .+2 ; 0x2a4 2a2: 9b cf rjmp .-202 ; 0x1da C:\Users\Martin\AppData\Local\Arduino15\packages\MegaCoreX\hardware\megaavr\1.0.10\libraries\SPI\src/SPI.cpp:238 if (temp & 1) { 2a4: 21 70 andi r18, 0x01 ; 1 2a6: 30 e0 ldi r19, 0x00 ; 0 2a8: 40 e0 ldi r20, 0x00 ; 0 2aa: 50 e0 ldi r21, 0x00 ; 0 2ac: 60 e0 ldi r22, 0x00 ; 0 2ae: 70 e0 ldi r23, 0x00 ; 0 2b0: 80 e0 ldi r24, 0x00 ; 0 2b2: 90 e0 ldi r25, 0x00 ; 0 2b4: f7 d4 rcall .+2542 ; 0xca4 <__cmpdi2_s8> 2b6: d1 f0 breq .+52 ; 0x2ec _ZN7MCP25156endSPIEv.constprop.31(): C:\Users\Martin\AppData\Local\Arduino15\packages\MegaCoreX\hardware\megaavr\1.0.10\libraries\SPI\src/SPI.cpp:239 volatile uint8_t* pin_ctrl_reg = getPINnCTRLregister(portToPortStruct(shift/8), shift%8); 2b8: b0 e0 ldi r27, 0x00 ; 0 2ba: a0 e0 ldi r26, 0x00 ; 0 reattachMaskedInterrupts(): 2bc: e0 33 cpi r30, 0x30 ; 48 2be: 70 f4 brcc .+28 ; 0x2dc 2c0: ae 2f mov r26, r30 2c2: a6 95 lsr r26 2c4: a6 95 lsr r26 2c6: a6 95 lsr r26 2c8: 80 e2 ldi r24, 0x20 ; 32 2ca: a8 9f mul r26, r24 2cc: d0 01 movw r26, r0 2ce: 11 24 eor r1, r1 2d0: a0 5f subi r26, 0xF0 ; 240 2d2: bb 4f sbci r27, 0xFB ; 251 2d4: 8e 2f mov r24, r30 2d6: 87 70 andi r24, 0x07 ; 7 2d8: a8 0f add r26, r24 2da: b1 1d adc r27, r1 C:\Users\Martin\AppData\Local\Arduino15\packages\MegaCoreX\hardware\megaavr\1.0.10\libraries\SPI\src/SPI.cpp:240 *pin_ctrl_reg |= irqMap[shift]; 2dc: ce 2f mov r28, r30 2de: d0 e0 ldi r29, 0x00 ; 0 2e0: ca 5e subi r28, 0xEA ; 234 2e2: d3 4c sbci r29, 0xC3 ; 195 2e4: 88 89 ldd r24, Y+16 ; 0x10 2e6: 9c 91 ld r25, X 2e8: 89 2b or r24, r25 2ea: 8c 93 st X, r24 C:\Users\Martin\AppData\Local\Arduino15\packages\MegaCoreX\hardware\megaavr\1.0.10\libraries\SPI\src/SPI.cpp:242 } temp = temp >> 1; 2ec: 94 01 movw r18, r8 2ee: a5 01 movw r20, r10 2f0: b6 01 movw r22, r12 2f2: c7 01 movw r24, r14 2f4: 01 e0 ldi r16, 0x01 ; 1 2f6: bb d4 rcall .+2422 ; 0xc6e <__lshrdi3> 2f8: 49 01 movw r8, r18 2fa: 5a 01 movw r10, r20 2fc: 6b 01 movw r12, r22 2fe: 7c 01 movw r14, r24 C:\Users\Martin\AppData\Local\Arduino15\packages\MegaCoreX\hardware\megaavr\1.0.10\libraries\SPI\src/SPI.cpp:243 shift++; 300: ef 5f subi r30, 0xFF ; 255 302: c8 cf rjmp .-112 ; 0x294 00000304 : pinMode.part.1(): C:\Users\Martin\AppData\Local\Arduino15\packages\MegaCoreX\hardware\megaavr\1.0.10\cores\coreX-corefiles/wiring_digital.c:29 #define ARDUINO_MAIN #include "wiring_private.h" #include "pins_arduino.h" void pinMode(uint8_t pin, uint8_t mode) 304: cf 93 push r28 306: df 93 push r29 C:\Users\Martin\AppData\Local\Arduino15\packages\MegaCoreX\hardware\megaavr\1.0.10\cores\coreX-corefiles/wiring_digital.c:31 { uint8_t bit_mask = digitalPinToBitMask(pin); 308: 90 e0 ldi r25, 0x00 ; 0 30a: fc 01 movw r30, r24 30c: ed 57 subi r30, 0x7D ; 125 30e: f2 4b sbci r31, 0xB2 ; 178 310: 20 81 ld r18, Z C:\Users\Martin\AppData\Local\Arduino15\packages\MegaCoreX\hardware\megaavr\1.0.10\cores\coreX-corefiles/wiring_digital.c:33 if ((bit_mask == NOT_A_PIN) || (mode > INPUT_PULLUP)) 312: 2f 3f cpi r18, 0xFF ; 255 314: 61 f0 breq .+24 ; 0x32e C:\Users\Martin\AppData\Local\Arduino15\packages\MegaCoreX\hardware\megaavr\1.0.10\cores\coreX-corefiles/wiring_digital.c:36 return; PORT_t *port = digitalPinToPortStruct(pin); 316: fc 01 movw r30, r24 318: e6 5a subi r30, 0xA6 ; 166 31a: f2 4b sbci r31, 0xB2 ; 178 31c: e0 81 ld r30, Z 31e: 30 e2 ldi r19, 0x20 ; 32 320: e3 9f mul r30, r19 322: f0 01 movw r30, r0 324: 11 24 eor r1, r1 326: fc 5f subi r31, 0xFC ; 252 C:\Users\Martin\AppData\Local\Arduino15\packages\MegaCoreX\hardware\megaavr\1.0.10\cores\coreX-corefiles/wiring_digital.c:40 if (port == NULL) return; if (mode == OUTPUT) 328: 61 30 cpi r22, 0x01 ; 1 32a: 21 f4 brne .+8 ; 0x334 C:\Users\Martin\AppData\Local\Arduino15\packages\MegaCoreX\hardware\megaavr\1.0.10\cores\coreX-corefiles/wiring_digital.c:43 { /* Configure direction as output */ port->DIRSET = bit_mask; 32c: 21 83 std Z+1, r18 ; 0x01 C:\Users\Martin\AppData\Local\Arduino15\packages\MegaCoreX\hardware\megaavr\1.0.10\cores\coreX-corefiles/wiring_digital.c:75 } /* Restore state */ SREG = status; } } 32e: df 91 pop r29 330: cf 91 pop r28 332: 08 95 ret C:\Users\Martin\AppData\Local\Arduino15\packages\MegaCoreX\hardware\megaavr\1.0.10\cores\coreX-corefiles/wiring_digital.c:48 port->DIRSET = bit_mask; } else { /* mode == INPUT or INPUT_PULLUP */ uint8_t bit_pos = digitalPinToBitPosition(pin); 334: 8f 5c subi r24, 0xCF ; 207 336: 92 4b sbci r25, 0xB2 ; 178 338: ec 01 movw r28, r24 33a: a8 81 ld r26, Y C:\Users\Martin\AppData\Local\Arduino15\packages\MegaCoreX\hardware\megaavr\1.0.10\cores\coreX-corefiles/wiring_digital.c:50 /* Calculate where pin control register is */ volatile uint8_t *pin_ctrl_reg = getPINnCTRLregister(port, bit_pos); 33c: af 3f cpi r26, 0xFF ; 255 33e: 69 f0 breq .+26 ; 0x35a 340: cf 01 movw r24, r30 342: 40 96 adiw r24, 0x10 ; 16 344: a8 0f add r26, r24 346: b9 2f mov r27, r25 348: b1 1d adc r27, r1 C:\Users\Martin\AppData\Local\Arduino15\packages\MegaCoreX\hardware\megaavr\1.0.10\cores\coreX-corefiles/wiring_digital.c:53 /* Save state */ uint8_t status = SREG; 34a: 9f b7 in r25, 0x3f ; 63 C:\Users\Martin\AppData\Local\Arduino15\packages\MegaCoreX\hardware\megaavr\1.0.10\cores\coreX-corefiles/wiring_digital.c:54 cli(); 34c: f8 94 cli C:\Users\Martin\AppData\Local\Arduino15\packages\MegaCoreX\hardware\megaavr\1.0.10\cores\coreX-corefiles/wiring_digital.c:57 /* Configure direction as input */ port->DIRCLR = bit_mask; 34e: 22 83 std Z+2, r18 ; 0x02 C:\Users\Martin\AppData\Local\Arduino15\packages\MegaCoreX\hardware\megaavr\1.0.10\cores\coreX-corefiles/wiring_digital.c:63 /* Configure pull-up resistor */ if (mode == INPUT_PULLUP) { /* Enable pull-up */ *pin_ctrl_reg |= PORT_PULLUPEN_bm; 350: 8c 91 ld r24, X 352: 88 60 ori r24, 0x08 ; 8 354: 8c 93 st X, r24 C:\Users\Martin\AppData\Local\Arduino15\packages\MegaCoreX\hardware\megaavr\1.0.10\cores\coreX-corefiles/wiring_digital.c:73 /* Disable pull-up */ *pin_ctrl_reg &= ~(PORT_PULLUPEN_bm); } /* Restore state */ SREG = status; 356: 9f bf out 0x3f, r25 ; 63 358: ea cf rjmp .-44 ; 0x32e C:\Users\Martin\AppData\Local\Arduino15\packages\MegaCoreX\hardware\megaavr\1.0.10\cores\coreX-corefiles/wiring_digital.c:50 else { /* mode == INPUT or INPUT_PULLUP */ uint8_t bit_pos = digitalPinToBitPosition(pin); /* Calculate where pin control register is */ volatile uint8_t *pin_ctrl_reg = getPINnCTRLregister(port, bit_pos); 35a: b0 e0 ldi r27, 0x00 ; 0 35c: a0 e0 ldi r26, 0x00 ; 0 35e: f5 cf rjmp .-22 ; 0x34a 00000360 : _ZN8SPIClass5beginEv.constprop.28(): C:\Users\Martin\AppData\Local\Arduino15\packages\MegaCoreX\hardware\megaavr\1.0.10\libraries\SPI\src/SPI.cpp:131 config(DEFAULT_SPI_SETTINGS); } void SPIClass::init() { if (initialized) 360: 80 91 1b 3c lds r24, 0x3C1B ; 0x803c1b 364: 81 11 cpse r24, r1 366: 17 c0 rjmp .+46 ; 0x396 C:\Users\Martin\AppData\Local\Arduino15\packages\MegaCoreX\hardware\megaavr\1.0.10\libraries\SPI\src/SPI.cpp:133 return; interruptMode = SPI_IMODE_NONE; 368: 10 92 1c 3c sts 0x3C1C, r1 ; 0x803c1c C:\Users\Martin\AppData\Local\Arduino15\packages\MegaCoreX\hardware\megaavr\1.0.10\libraries\SPI\src/SPI.cpp:134 interruptSave = 0; 36c: 10 92 1d 3c sts 0x3C1D, r1 ; 0x803c1d C:\Users\Martin\AppData\Local\Arduino15\packages\MegaCoreX\hardware\megaavr\1.0.10\libraries\SPI\src/SPI.cpp:135 interruptMask_lo = 0; 370: 10 92 1e 3c sts 0x3C1E, r1 ; 0x803c1e 374: 10 92 1f 3c sts 0x3C1F, r1 ; 0x803c1f 378: 10 92 20 3c sts 0x3C20, r1 ; 0x803c20 37c: 10 92 21 3c sts 0x3C21, r1 ; 0x803c21 C:\Users\Martin\AppData\Local\Arduino15\packages\MegaCoreX\hardware\megaavr\1.0.10\libraries\SPI\src/SPI.cpp:136 interruptMask_hi = 0; 380: 10 92 22 3c sts 0x3C22, r1 ; 0x803c22 384: 10 92 23 3c sts 0x3C23, r1 ; 0x803c23 388: 10 92 24 3c sts 0x3C24, r1 ; 0x803c24 38c: 10 92 25 3c sts 0x3C25, r1 ; 0x803c25 C:\Users\Martin\AppData\Local\Arduino15\packages\MegaCoreX\hardware\megaavr\1.0.10\libraries\SPI\src/SPI.cpp:137 initialized = true; 390: 81 e0 ldi r24, 0x01 ; 1 392: 80 93 1b 3c sts 0x3C1B, r24 ; 0x803c1b C:\Users\Martin\AppData\Local\Arduino15\packages\MegaCoreX\hardware\megaavr\1.0.10\libraries\SPI\src/SPI.cpp:99 void SPIClass::begin() { init(); PORTMUX.TWISPIROUTEA = _uc_mux | (PORTMUX.TWISPIROUTEA & ~3); 396: 80 91 e3 05 lds r24, 0x05E3 ; 0x8005e3 39a: 8c 7f andi r24, 0xFC ; 252 39c: 90 91 1a 3c lds r25, 0x3C1A ; 0x803c1a 3a0: 89 2b or r24, r25 3a2: 80 93 e3 05 sts 0x05E3, r24 ; 0x8005e3 C:\Users\Martin\AppData\Local\Arduino15\packages\MegaCoreX\hardware\megaavr\1.0.10\libraries\SPI\src/SPI.cpp:102 // MISO is set to input by the controller if(_uc_mux == SPI_MUX) 3a6: 91 11 cpse r25, r1 3a8: 19 c0 rjmp .+50 ; 0x3dc pinMode(): 3aa: 61 e0 ldi r22, 0x01 ; 1 3ac: 84 e0 ldi r24, 0x04 ; 4 3ae: aa df rcall .-172 ; 0x304 3b0: 61 e0 ldi r22, 0x01 ; 1 3b2: 86 e0 ldi r24, 0x06 ; 6 3b4: a7 df rcall .-178 ; 0x304 _ZN8SPIClass5beginEv.constprop.28(): C:\Users\Martin\AppData\Local\Arduino15\packages\MegaCoreX\hardware\megaavr\1.0.10\libraries\SPI\src/SPI.cpp:123 pinMode(PIN_SPI_SCK_PINSWAP_2, OUTPUT); } #endif // We don't need HW SS since salve/master mode is selected via registers SPI0.CTRLB |= (SPI_SSD_bm); 3b6: 80 91 c1 08 lds r24, 0x08C1 ; 0x8008c1 3ba: 84 60 ori r24, 0x04 ; 4 3bc: 80 93 c1 08 sts 0x08C1, r24 ; 0x8008c1 C:\Users\Martin\AppData\Local\Arduino15\packages\MegaCoreX\hardware\megaavr\1.0.10\libraries\SPI\src/SPI.cpp:124 SPI0.CTRLA |= (SPI_ENABLE_bm | SPI_MASTER_bm); 3c0: 80 91 c0 08 lds r24, 0x08C0 ; 0x8008c0 3c4: 81 62 ori r24, 0x21 ; 33 3c6: 80 93 c0 08 sts 0x08C0, r24 ; 0x8008c0 3ca: 90 91 14 3c lds r25, 0x3C14 ; 0x803c14 3ce: 80 91 15 3c lds r24, 0x3C15 ; 0x803c15 config(): C:\Users\Martin\AppData\Local\Arduino15\packages\MegaCoreX\hardware\megaavr\1.0.10\libraries\SPI\src/SPI.cpp:142 initialized = true; } void SPIClass::config(SPISettings settings) { SPI0.CTRLA = settings.ctrla; 3d2: 90 93 c0 08 sts 0x08C0, r25 ; 0x8008c0 C:\Users\Martin\AppData\Local\Arduino15\packages\MegaCoreX\hardware\megaavr\1.0.10\libraries\SPI\src/SPI.cpp:143 SPI0.CTRLB = settings.ctrlb; 3d6: 80 93 c1 08 sts 0x08C1, r24 ; 0x8008c1 _ZN8SPIClass5beginEv.constprop.28(): C:\Users\Martin\AppData\Local\Arduino15\packages\MegaCoreX\hardware\megaavr\1.0.10\libraries\SPI\src/SPI.cpp:127 // We don't need HW SS since salve/master mode is selected via registers SPI0.CTRLB |= (SPI_SSD_bm); SPI0.CTRLA |= (SPI_ENABLE_bm | SPI_MASTER_bm); config(DEFAULT_SPI_SETTINGS); } 3da: 08 95 ret C:\Users\Martin\AppData\Local\Arduino15\packages\MegaCoreX\hardware\megaavr\1.0.10\libraries\SPI\src/SPI.cpp:108 { pinMode(PIN_SPI_MOSI, OUTPUT); pinMode(PIN_SPI_SCK, OUTPUT); } #if defined(SPI_MUX_PINSWAP_1) else if(_uc_mux == SPI_MUX_PINSWAP_1) 3dc: 91 30 cpi r25, 0x01 ; 1 3de: 31 f4 brne .+12 ; 0x3ec pinMode(): 3e0: 61 e0 ldi r22, 0x01 ; 1 3e2: 8e e0 ldi r24, 0x0E ; 14 3e4: 8f df rcall .-226 ; 0x304 3e6: 61 e0 ldi r22, 0x01 ; 1 3e8: 80 e1 ldi r24, 0x10 ; 16 3ea: e4 cf rjmp .-56 ; 0x3b4 _ZN8SPIClass5beginEv.constprop.28(): C:\Users\Martin\AppData\Local\Arduino15\packages\MegaCoreX\hardware\megaavr\1.0.10\libraries\SPI\src/SPI.cpp:115 pinMode(PIN_SPI_MOSI_PINSWAP_1, OUTPUT); pinMode(PIN_SPI_SCK_PINSWAP_1, OUTPUT); } #endif #if defined(SPI_MUX_PINSWAP_2) else if(_uc_mux == SPI_MUX_PINSWAP_2) 3ec: 92 30 cpi r25, 0x02 ; 2 3ee: 19 f7 brne .-58 ; 0x3b6 pinMode(): 3f0: 61 e0 ldi r22, 0x01 ; 1 3f2: 8e e1 ldi r24, 0x1E ; 30 3f4: 87 df rcall .-242 ; 0x304 3f6: 61 e0 ldi r22, 0x01 ; 1 3f8: 80 e2 ldi r24, 0x20 ; 32 3fa: dc cf rjmp .-72 ; 0x3b4 000003fc : micros(): C:\Users\Martin\AppData\Local\Arduino15\packages\MegaCoreX\hardware\megaavr\1.0.10\cores\coreX-corefiles/wiring.c:103 { uint32_t m; uint16_t t; /* Save current state and disable interrupts */ uint8_t status = SREG; 3fc: 8f b7 in r24, 0x3f ; 63 C:\Users\Martin\AppData\Local\Arduino15\packages\MegaCoreX\hardware\megaavr\1.0.10\cores\coreX-corefiles/wiring.c:104 cli(); 3fe: f8 94 cli C:\Users\Martin\AppData\Local\Arduino15\packages\MegaCoreX\hardware\megaavr\1.0.10\cores\coreX-corefiles/wiring.c:107 /* Get current number of millis (i.e. overflows) and timer count */ m = timer_millis; 400: 20 91 10 3c lds r18, 0x3C10 ; 0x803c10 404: 30 91 11 3c lds r19, 0x3C11 ; 0x803c11 408: 40 91 12 3c lds r20, 0x3C12 ; 0x803c12 40c: 50 91 13 3c lds r21, 0x3C13 ; 0x803c13 C:\Users\Martin\AppData\Local\Arduino15\packages\MegaCoreX\hardware\megaavr\1.0.10\cores\coreX-corefiles/wiring.c:108 t = _timer->CNT; 410: e0 91 aa 0a lds r30, 0x0AAA ; 0x800aaa 414: f0 91 ab 0a lds r31, 0x0AAB ; 0x800aab C:\Users\Martin\AppData\Local\Arduino15\packages\MegaCoreX\hardware\megaavr\1.0.10\cores\coreX-corefiles/wiring.c:112 /* If the timer overflow flag is raised, we just missed it, increment to account for it, & read new ticks */ if (_timer->INTFLAGS & TCB_CAPT_bm) 418: 90 91 a6 0a lds r25, 0x0AA6 ; 0x800aa6 41c: 90 ff sbrs r25, 0 41e: 08 c0 rjmp .+16 ; 0x430 <__DATA_REGION_LENGTH__+0x30> C:\Users\Martin\AppData\Local\Arduino15\packages\MegaCoreX\hardware\megaavr\1.0.10\cores\coreX-corefiles/wiring.c:114 { m++; 420: 2f 5f subi r18, 0xFF ; 255 422: 3f 4f sbci r19, 0xFF ; 255 424: 4f 4f sbci r20, 0xFF ; 255 426: 5f 4f sbci r21, 0xFF ; 255 C:\Users\Martin\AppData\Local\Arduino15\packages\MegaCoreX\hardware\megaavr\1.0.10\cores\coreX-corefiles/wiring.c:115 t = _timer->CNT; 428: e0 91 aa 0a lds r30, 0x0AAA ; 0x800aaa 42c: f0 91 ab 0a lds r31, 0x0AAB ; 0x800aab C:\Users\Martin\AppData\Local\Arduino15\packages\MegaCoreX\hardware\megaavr\1.0.10\cores\coreX-corefiles/wiring.c:119 } // Restore SREG SREG = status; 430: 8f bf out 0x3f, r24 ; 63 C:\Users\Martin\AppData\Local\Arduino15\packages\MegaCoreX\hardware\megaavr\1.0.10\cores\coreX-corefiles/wiring.c:130 return m * 1000 + (t >> 4); #elif (F_CPU == 10000000L) t = t >> 3; return m * 1000 + (t - (t >> 2) + (t >> 4) - (t >> 6)); #elif (F_CPU == 8000000L) return m * 1000 + (t >> 3); 432: a8 ee ldi r26, 0xE8 ; 232 434: b3 e0 ldi r27, 0x03 ; 3 436: 0f d4 rcall .+2078 ; 0xc56 <__muluhisi3> 438: 23 e0 ldi r18, 0x03 ; 3 43a: f6 95 lsr r31 43c: e7 95 ror r30 43e: 2a 95 dec r18 440: e1 f7 brne .-8 ; 0x43a <__DATA_REGION_LENGTH__+0x3a> 442: 6e 0f add r22, r30 444: 7f 1f adc r23, r31 446: 81 1d adc r24, r1 448: 91 1d adc r25, r1 C:\Users\Martin\AppData\Local\Arduino15\packages\MegaCoreX\hardware\megaavr\1.0.10\cores\coreX-corefiles/wiring.c:143 #elif (F_CPU == 1000000L) return m * 1000 + t; #else return 0; #endif } 44a: 08 95 ret 0000044c : delay(): C:\Users\Martin\AppData\Local\Arduino15\packages\MegaCoreX\hardware\megaavr\1.0.10\cores\coreX-corefiles/wiring.c:146 void delay(unsigned long ms) { 44c: 8f 92 push r8 44e: 9f 92 push r9 450: af 92 push r10 452: bf 92 push r11 454: cf 92 push r12 456: df 92 push r13 458: ef 92 push r14 45a: ff 92 push r15 45c: 4b 01 movw r8, r22 45e: 5c 01 movw r10, r24 C:\Users\Martin\AppData\Local\Arduino15\packages\MegaCoreX\hardware\megaavr\1.0.10\cores\coreX-corefiles/wiring.c:147 uint32_t start_time = micros(), delay_time = 1000 * ms; 460: cd df rcall .-102 ; 0x3fc 462: 6b 01 movw r12, r22 464: 7c 01 movw r14, r24 466: a8 ee ldi r26, 0xE8 ; 232 468: b3 e0 ldi r27, 0x03 ; 3 46a: a5 01 movw r20, r10 46c: 94 01 movw r18, r8 46e: f3 d3 rcall .+2022 ; 0xc56 <__muluhisi3> C:\Users\Martin\AppData\Local\Arduino15\packages\MegaCoreX\hardware\megaavr\1.0.10\cores\coreX-corefiles/wiring.c:150 /* Calculate future time to return */ uint32_t return_time = start_time + delay_time; 470: c6 0e add r12, r22 472: d7 1e adc r13, r23 474: e8 1e adc r14, r24 476: f9 1e adc r15, r25 C:\Users\Martin\AppData\Local\Arduino15\packages\MegaCoreX\hardware\megaavr\1.0.10\cores\coreX-corefiles/wiring.c:153 /* If return time overflows */ if (return_time < delay_time) 478: c6 16 cp r12, r22 47a: d7 06 cpc r13, r23 47c: e8 06 cpc r14, r24 47e: f9 06 cpc r15, r25 480: 10 f4 brcc .+4 ; 0x486 C:\Users\Martin\AppData\Local\Arduino15\packages\MegaCoreX\hardware\megaavr\1.0.10\cores\coreX-corefiles/wiring.c:156 { /* Wait until micros overflows */ while (micros() > return_time) 482: bc df rcall .-136 ; 0x3fc 484: f9 cf rjmp .-14 ; 0x478 C:\Users\Martin\AppData\Local\Arduino15\packages\MegaCoreX\hardware\megaavr\1.0.10\cores\coreX-corefiles/wiring.c:161 ; } /* Wait until return time */ while (micros() < return_time) 486: ba df rcall .-140 ; 0x3fc 488: 6c 15 cp r22, r12 48a: 7d 05 cpc r23, r13 48c: 8e 05 cpc r24, r14 48e: 9f 05 cpc r25, r15 490: d0 f3 brcs .-12 ; 0x486 C:\Users\Martin\AppData\Local\Arduino15\packages\MegaCoreX\hardware\megaavr\1.0.10\cores\coreX-corefiles/wiring.c:163 ; } 492: ff 90 pop r15 494: ef 90 pop r14 496: df 90 pop r13 498: cf 90 pop r12 49a: bf 90 pop r11 49c: af 90 pop r10 49e: 9f 90 pop r9 4a0: 8f 90 pop r8 4a2: 08 95 ret 000004a4 : _ZN7MCP25158startSPIEv.constprop.20(): C:\Users\Martin\Documents\Arduino\libraries\autowp-mcp2515/mcp2515.cpp:24 SPICS = _CS; pinMode(SPICS, OUTPUT); endSPI(); } void MCP2515::startSPI() { 4a4: 8f 92 push r8 4a6: 9f 92 push r9 4a8: af 92 push r10 4aa: bf 92 push r11 4ac: cf 92 push r12 4ae: df 92 push r13 4b0: ef 92 push r14 4b2: ff 92 push r15 4b4: 0f 93 push r16 4b6: cf 93 push r28 4b8: df 93 push r29 beginTransaction(): C:\Users\Martin\AppData\Local\Arduino15\packages\MegaCoreX\hardware\megaavr\1.0.10\libraries\SPI\src/SPI.cpp:249 } } void SPIClass::beginTransaction(SPISettings settings) { if (interruptMode != SPI_IMODE_NONE) 4ba: 80 91 1c 3c lds r24, 0x3C1C ; 0x803c1c 4be: 88 23 and r24, r24 4c0: 19 f0 breq .+6 ; 0x4c8 C:\Users\Martin\AppData\Local\Arduino15\packages\MegaCoreX\hardware\megaavr\1.0.10\libraries\SPI\src/SPI.cpp:251 { if (interruptMode & SPI_IMODE_GLOBAL) 4c2: 81 ff sbrs r24, 1 4c4: 19 c0 rjmp .+50 ; 0x4f8 C:\Users\Martin\AppData\Local\Arduino15\packages\MegaCoreX\hardware\megaavr\1.0.10\libraries\SPI\src/SPI.cpp:253 { noInterrupts(); 4c6: f8 94 cli config(): C:\Users\Martin\AppData\Local\Arduino15\packages\MegaCoreX\hardware\megaavr\1.0.10\libraries\SPI\src/SPI.cpp:142 initialized = true; } void SPIClass::config(SPISettings settings) { SPI0.CTRLA = settings.ctrla; 4c8: 81 e3 ldi r24, 0x31 ; 49 4ca: 80 93 c0 08 sts 0x08C0, r24 ; 0x8008c0 C:\Users\Martin\AppData\Local\Arduino15\packages\MegaCoreX\hardware\megaavr\1.0.10\libraries\SPI\src/SPI.cpp:143 SPI0.CTRLB = settings.ctrlb; 4ce: 84 e0 ldi r24, 0x04 ; 4 4d0: 80 93 c1 08 sts 0x08C1, r24 ; 0x8008c1 _ZN7MCP25158startSPIEv.constprop.20(): C:\Users\Martin\Documents\Arduino\libraries\autowp-mcp2515/mcp2515.cpp:26 SPI.beginTransaction(SPISettings(SPI_CLOCK, MSBFIRST, SPI_MODE0)); digitalWrite(SPICS, LOW); 4d4: 80 91 85 3c lds r24, 0x3C85 ; 0x803c85 digitalWrite(): C:\Users\Martin\AppData\Local\Arduino15\packages\MegaCoreX\hardware\megaavr\1.0.10\cores\coreX-corefiles/wiring_digital.c:137 } void digitalWrite(uint8_t pin, uint8_t val) { /* Get bit mask for pin */ uint8_t bit_mask = digitalPinToBitMask(pin); 4d8: 89 32 cpi r24, 0x29 ; 41 4da: 08 f0 brcs .+2 ; 0x4de 4dc: 98 c0 rjmp .+304 ; 0x60e 4de: 60 e0 ldi r22, 0x00 ; 0 _ZN7MCP25158startSPIEv.constprop.20(): C:\Users\Martin\Documents\Arduino\libraries\autowp-mcp2515/mcp2515.cpp:27 } 4e0: df 91 pop r29 4e2: cf 91 pop r28 4e4: 0f 91 pop r16 4e6: ff 90 pop r15 4e8: ef 90 pop r14 4ea: df 90 pop r13 4ec: cf 90 pop r12 4ee: bf 90 pop r11 4f0: af 90 pop r10 4f2: 9f 90 pop r9 4f4: 8f 90 pop r8 digitalWrite(): 4f6: fa cd rjmp .-1036 ; 0xec beginTransaction(): C:\Users\Martin\AppData\Local\Arduino15\packages\MegaCoreX\hardware\megaavr\1.0.10\libraries\SPI\src/SPI.cpp:255 { if (interruptMode & SPI_IMODE_GLOBAL) { noInterrupts(); } else if (interruptMode & SPI_IMODE_EXTINT) 4f8: 80 ff sbrs r24, 0 4fa: e6 cf rjmp .-52 ; 0x4c8 detachMaskedInterrupts(): C:\Users\Martin\AppData\Local\Arduino15\packages\MegaCoreX\hardware\megaavr\1.0.10\libraries\SPI\src/SPI.cpp:200 #endif } } void SPIClass::detachMaskedInterrupts() { uint64_t temp = interruptMask_lo; 4fc: 80 90 1e 3c lds r8, 0x3C1E ; 0x803c1e 500: 90 90 1f 3c lds r9, 0x3C1F ; 0x803c1f 504: a0 90 20 3c lds r10, 0x3C20 ; 0x803c20 508: b0 90 21 3c lds r11, 0x3C21 ; 0x803c21 50c: c1 2c mov r12, r1 50e: d1 2c mov r13, r1 510: 76 01 movw r14, r12 _ZN7MCP25158startSPIEv.constprop.20(): C:\Users\Martin\AppData\Local\Arduino15\packages\MegaCoreX\hardware\megaavr\1.0.10\libraries\SPI\src/SPI.cpp:201 uint8_t shift = 0; 512: e0 e0 ldi r30, 0x00 ; 0 detachMaskedInterrupts(): C:\Users\Martin\AppData\Local\Arduino15\packages\MegaCoreX\hardware\megaavr\1.0.10\libraries\SPI\src/SPI.cpp:202 while (temp != 0) { 514: 94 01 movw r18, r8 516: a5 01 movw r20, r10 518: b6 01 movw r22, r12 51a: c7 01 movw r24, r14 51c: a0 e0 ldi r26, 0x00 ; 0 51e: c2 d3 rcall .+1924 ; 0xca4 <__cmpdi2_s8> 520: 89 f1 breq .+98 ; 0x584 C:\Users\Martin\AppData\Local\Arduino15\packages\MegaCoreX\hardware\megaavr\1.0.10\libraries\SPI\src/SPI.cpp:203 if (temp & 1) { 522: 21 70 andi r18, 0x01 ; 1 524: 30 e0 ldi r19, 0x00 ; 0 526: 40 e0 ldi r20, 0x00 ; 0 528: 50 e0 ldi r21, 0x00 ; 0 52a: 60 e0 ldi r22, 0x00 ; 0 52c: 70 e0 ldi r23, 0x00 ; 0 52e: 80 e0 ldi r24, 0x00 ; 0 530: 90 e0 ldi r25, 0x00 ; 0 532: b8 d3 rcall .+1904 ; 0xca4 <__cmpdi2_s8> 534: d9 f0 breq .+54 ; 0x56c _ZN7MCP25158startSPIEv.constprop.20(): C:\Users\Martin\AppData\Local\Arduino15\packages\MegaCoreX\hardware\megaavr\1.0.10\libraries\SPI\src/SPI.cpp:204 volatile uint8_t* pin_ctrl_reg = getPINnCTRLregister(portToPortStruct(shift/8), shift%8); 536: b0 e0 ldi r27, 0x00 ; 0 538: a0 e0 ldi r26, 0x00 ; 0 detachMaskedInterrupts(): 53a: e0 33 cpi r30, 0x30 ; 48 53c: 70 f4 brcc .+28 ; 0x55a 53e: ae 2f mov r26, r30 540: a6 95 lsr r26 542: a6 95 lsr r26 544: a6 95 lsr r26 546: 80 e2 ldi r24, 0x20 ; 32 548: a8 9f mul r26, r24 54a: d0 01 movw r26, r0 54c: 11 24 eor r1, r1 54e: a0 5f subi r26, 0xF0 ; 240 550: bb 4f sbci r27, 0xFB ; 251 552: 8e 2f mov r24, r30 554: 87 70 andi r24, 0x07 ; 7 556: a8 0f add r26, r24 558: b1 1d adc r27, r1 C:\Users\Martin\AppData\Local\Arduino15\packages\MegaCoreX\hardware\megaavr\1.0.10\libraries\SPI\src/SPI.cpp:205 irqMap[shift] = *pin_ctrl_reg; 55a: ce 2f mov r28, r30 55c: d0 e0 ldi r29, 0x00 ; 0 55e: 8c 91 ld r24, X 560: ca 5e subi r28, 0xEA ; 234 562: d3 4c sbci r29, 0xC3 ; 195 564: 88 8b std Y+16, r24 ; 0x10 C:\Users\Martin\AppData\Local\Arduino15\packages\MegaCoreX\hardware\megaavr\1.0.10\libraries\SPI\src/SPI.cpp:206 *pin_ctrl_reg &= ~(PORT_ISC_gm); 566: 8c 91 ld r24, X 568: 88 7f andi r24, 0xF8 ; 248 56a: 8c 93 st X, r24 C:\Users\Martin\AppData\Local\Arduino15\packages\MegaCoreX\hardware\megaavr\1.0.10\libraries\SPI\src/SPI.cpp:208 } temp = temp >> 1; 56c: 94 01 movw r18, r8 56e: a5 01 movw r20, r10 570: b6 01 movw r22, r12 572: c7 01 movw r24, r14 574: 01 e0 ldi r16, 0x01 ; 1 576: 7b d3 rcall .+1782 ; 0xc6e <__lshrdi3> 578: 49 01 movw r8, r18 57a: 5a 01 movw r10, r20 57c: 6b 01 movw r12, r22 57e: 7c 01 movw r14, r24 C:\Users\Martin\AppData\Local\Arduino15\packages\MegaCoreX\hardware\megaavr\1.0.10\libraries\SPI\src/SPI.cpp:209 shift++; 580: ef 5f subi r30, 0xFF ; 255 582: c8 cf rjmp .-112 ; 0x514 C:\Users\Martin\AppData\Local\Arduino15\packages\MegaCoreX\hardware\megaavr\1.0.10\libraries\SPI\src/SPI.cpp:211 } temp = interruptMask_hi; 584: 80 90 22 3c lds r8, 0x3C22 ; 0x803c22 588: 90 90 23 3c lds r9, 0x3C23 ; 0x803c23 58c: a0 90 24 3c lds r10, 0x3C24 ; 0x803c24 590: b0 90 25 3c lds r11, 0x3C25 ; 0x803c25 594: c1 2c mov r12, r1 596: d1 2c mov r13, r1 598: 76 01 movw r14, r12 _ZN7MCP25158startSPIEv.constprop.20(): C:\Users\Martin\AppData\Local\Arduino15\packages\MegaCoreX\hardware\megaavr\1.0.10\libraries\SPI\src/SPI.cpp:212 shift = 32; 59a: e0 e2 ldi r30, 0x20 ; 32 detachMaskedInterrupts(): C:\Users\Martin\AppData\Local\Arduino15\packages\MegaCoreX\hardware\megaavr\1.0.10\libraries\SPI\src/SPI.cpp:213 while (temp != 0) { 59c: 94 01 movw r18, r8 59e: a5 01 movw r20, r10 5a0: b6 01 movw r22, r12 5a2: c7 01 movw r24, r14 5a4: a0 e0 ldi r26, 0x00 ; 0 5a6: 7e d3 rcall .+1788 ; 0xca4 <__cmpdi2_s8> 5a8: 09 f4 brne .+2 ; 0x5ac 5aa: 8e cf rjmp .-228 ; 0x4c8 C:\Users\Martin\AppData\Local\Arduino15\packages\MegaCoreX\hardware\megaavr\1.0.10\libraries\SPI\src/SPI.cpp:214 if (temp & 1) { 5ac: 21 70 andi r18, 0x01 ; 1 5ae: 30 e0 ldi r19, 0x00 ; 0 5b0: 40 e0 ldi r20, 0x00 ; 0 5b2: 50 e0 ldi r21, 0x00 ; 0 5b4: 60 e0 ldi r22, 0x00 ; 0 5b6: 70 e0 ldi r23, 0x00 ; 0 5b8: 80 e0 ldi r24, 0x00 ; 0 5ba: 90 e0 ldi r25, 0x00 ; 0 5bc: 73 d3 rcall .+1766 ; 0xca4 <__cmpdi2_s8> 5be: d9 f0 breq .+54 ; 0x5f6 _ZN7MCP25158startSPIEv.constprop.20(): C:\Users\Martin\AppData\Local\Arduino15\packages\MegaCoreX\hardware\megaavr\1.0.10\libraries\SPI\src/SPI.cpp:215 volatile uint8_t* pin_ctrl_reg = getPINnCTRLregister(portToPortStruct(shift/8), shift%8); 5c0: b0 e0 ldi r27, 0x00 ; 0 5c2: a0 e0 ldi r26, 0x00 ; 0 detachMaskedInterrupts(): 5c4: e0 33 cpi r30, 0x30 ; 48 5c6: 70 f4 brcc .+28 ; 0x5e4 5c8: ae 2f mov r26, r30 5ca: a6 95 lsr r26 5cc: a6 95 lsr r26 5ce: a6 95 lsr r26 5d0: 80 e2 ldi r24, 0x20 ; 32 5d2: a8 9f mul r26, r24 5d4: d0 01 movw r26, r0 5d6: 11 24 eor r1, r1 5d8: a0 5f subi r26, 0xF0 ; 240 5da: bb 4f sbci r27, 0xFB ; 251 5dc: 8e 2f mov r24, r30 5de: 87 70 andi r24, 0x07 ; 7 5e0: a8 0f add r26, r24 5e2: b1 1d adc r27, r1 C:\Users\Martin\AppData\Local\Arduino15\packages\MegaCoreX\hardware\megaavr\1.0.10\libraries\SPI\src/SPI.cpp:216 irqMap[shift] = *pin_ctrl_reg; 5e4: ce 2f mov r28, r30 5e6: d0 e0 ldi r29, 0x00 ; 0 5e8: 8c 91 ld r24, X 5ea: ca 5e subi r28, 0xEA ; 234 5ec: d3 4c sbci r29, 0xC3 ; 195 5ee: 88 8b std Y+16, r24 ; 0x10 C:\Users\Martin\AppData\Local\Arduino15\packages\MegaCoreX\hardware\megaavr\1.0.10\libraries\SPI\src/SPI.cpp:217 *pin_ctrl_reg &= ~(PORT_ISC_gm); 5f0: 8c 91 ld r24, X 5f2: 88 7f andi r24, 0xF8 ; 248 5f4: 8c 93 st X, r24 C:\Users\Martin\AppData\Local\Arduino15\packages\MegaCoreX\hardware\megaavr\1.0.10\libraries\SPI\src/SPI.cpp:219 } temp = temp >> 1; 5f6: 94 01 movw r18, r8 5f8: a5 01 movw r20, r10 5fa: b6 01 movw r22, r12 5fc: c7 01 movw r24, r14 5fe: 01 e0 ldi r16, 0x01 ; 1 600: 36 d3 rcall .+1644 ; 0xc6e <__lshrdi3> 602: 49 01 movw r8, r18 604: 5a 01 movw r10, r20 606: 6b 01 movw r12, r22 608: 7c 01 movw r14, r24 C:\Users\Martin\AppData\Local\Arduino15\packages\MegaCoreX\hardware\megaavr\1.0.10\libraries\SPI\src/SPI.cpp:220 shift++; 60a: ef 5f subi r30, 0xFF ; 255 60c: c7 cf rjmp .-114 ; 0x59c _ZN7MCP25158startSPIEv.constprop.20(): C:\Users\Martin\Documents\Arduino\libraries\autowp-mcp2515/mcp2515.cpp:27 60e: df 91 pop r29 610: cf 91 pop r28 612: 0f 91 pop r16 614: ff 90 pop r15 616: ef 90 pop r14 618: df 90 pop r13 61a: cf 90 pop r12 61c: bf 90 pop r11 61e: af 90 pop r10 620: 9f 90 pop r9 622: 8f 90 pop r8 624: 08 95 ret 00000626 : _ZN7MCP251512readRegisterENS_8REGISTERE.constprop.19(): C:\Users\Martin\Documents\Arduino\libraries\autowp-mcp2515/mcp2515.cpp:85 } return ERROR_OK; } uint8_t MCP2515::readRegister(const REGISTER reg) 626: cf 93 push r28 628: c8 2f mov r28, r24 C:\Users\Martin\Documents\Arduino\libraries\autowp-mcp2515/mcp2515.cpp:87 { startSPI(); 62a: 3c df rcall .-392 ; 0x4a4 C:\Users\Martin\Documents\Arduino\libraries\autowp-mcp2515/mcp2515.cpp:88 SPI.transfer(INSTRUCTION_READ); 62c: 83 e0 ldi r24, 0x03 ; 3 62e: 54 dd rcall .-1368 ; 0xd8 C:\Users\Martin\Documents\Arduino\libraries\autowp-mcp2515/mcp2515.cpp:89 SPI.transfer(reg); 630: 8c 2f mov r24, r28 632: 52 dd rcall .-1372 ; 0xd8 C:\Users\Martin\Documents\Arduino\libraries\autowp-mcp2515/mcp2515.cpp:90 uint8_t ret = SPI.transfer(0x00); 634: 80 e0 ldi r24, 0x00 ; 0 636: 50 dd rcall .-1376 ; 0xd8 638: c8 2f mov r28, r24 C:\Users\Martin\Documents\Arduino\libraries\autowp-mcp2515/mcp2515.cpp:91 endSPI(); 63a: b7 dd rcall .-1170 ; 0x1aa C:\Users\Martin\Documents\Arduino\libraries\autowp-mcp2515/mcp2515.cpp:94 return ret; } 63c: 8c 2f mov r24, r28 63e: cf 91 pop r28 640: 08 95 ret 00000642 : _ZN7MCP251512setRegistersENS_8REGISTEREPKhh.constprop.17(): C:\Users\Martin\Documents\Arduino\libraries\autowp-mcp2515/mcp2515.cpp:117 SPI.transfer(reg); SPI.transfer(value); endSPI(); } void MCP2515::setRegisters(const REGISTER reg, const uint8_t values[], const uint8_t n) 642: ff 92 push r15 644: 0f 93 push r16 646: 1f 93 push r17 648: cf 93 push r28 64a: df 93 push r29 64c: c8 2f mov r28, r24 64e: f6 2e mov r15, r22 650: 17 2f mov r17, r23 652: 04 2f mov r16, r20 C:\Users\Martin\Documents\Arduino\libraries\autowp-mcp2515/mcp2515.cpp:119 { startSPI(); 654: 27 df rcall .-434 ; 0x4a4 C:\Users\Martin\Documents\Arduino\libraries\autowp-mcp2515/mcp2515.cpp:120 SPI.transfer(INSTRUCTION_WRITE); 656: 82 e0 ldi r24, 0x02 ; 2 658: 3f dd rcall .-1410 ; 0xd8 C:\Users\Martin\Documents\Arduino\libraries\autowp-mcp2515/mcp2515.cpp:121 SPI.transfer(reg); 65a: 8c 2f mov r24, r28 65c: 3d dd rcall .-1414 ; 0xd8 65e: cf 2d mov r28, r15 660: d1 2f mov r29, r17 662: 0c 0f add r16, r28 664: 1d 2f mov r17, r29 666: 11 1d adc r17, r1 C:\Users\Martin\Documents\Arduino\libraries\autowp-mcp2515/mcp2515.cpp:122 for (uint8_t i=0; i C:\Users\Martin\Documents\Arduino\libraries\autowp-mcp2515/mcp2515.cpp:123 SPI.transfer(values[i]); 66e: 89 91 ld r24, Y+ 670: 33 dd rcall .-1434 ; 0xd8 672: fa cf rjmp .-12 ; 0x668 C:\Users\Martin\Documents\Arduino\libraries\autowp-mcp2515/mcp2515.cpp:126 } endSPI(); } 674: df 91 pop r29 676: cf 91 pop r28 678: 1f 91 pop r17 67a: 0f 91 pop r16 67c: ff 90 pop r15 C:\Users\Martin\Documents\Arduino\libraries\autowp-mcp2515/mcp2515.cpp:125 SPI.transfer(INSTRUCTION_WRITE); SPI.transfer(reg); for (uint8_t i=0; i 00000680 : _ZN7MCP251514modifyRegisterENS_8REGISTEREhh.constprop.16(): C:\Users\Martin\Documents\Arduino\libraries\autowp-mcp2515/mcp2515.cpp:128 } void MCP2515::modifyRegister(const REGISTER reg, const uint8_t mask, const uint8_t data) 680: 1f 93 push r17 682: cf 93 push r28 684: df 93 push r29 686: 18 2f mov r17, r24 688: d6 2f mov r29, r22 68a: c4 2f mov r28, r20 C:\Users\Martin\Documents\Arduino\libraries\autowp-mcp2515/mcp2515.cpp:130 { startSPI(); 68c: 0b df rcall .-490 ; 0x4a4 C:\Users\Martin\Documents\Arduino\libraries\autowp-mcp2515/mcp2515.cpp:131 SPI.transfer(INSTRUCTION_BITMOD); 68e: 85 e0 ldi r24, 0x05 ; 5 690: 23 dd rcall .-1466 ; 0xd8 C:\Users\Martin\Documents\Arduino\libraries\autowp-mcp2515/mcp2515.cpp:132 SPI.transfer(reg); 692: 81 2f mov r24, r17 694: 21 dd rcall .-1470 ; 0xd8 C:\Users\Martin\Documents\Arduino\libraries\autowp-mcp2515/mcp2515.cpp:133 SPI.transfer(mask); 696: 8d 2f mov r24, r29 698: 1f dd rcall .-1474 ; 0xd8 C:\Users\Martin\Documents\Arduino\libraries\autowp-mcp2515/mcp2515.cpp:134 SPI.transfer(data); 69a: 8c 2f mov r24, r28 69c: 1d dd rcall .-1478 ; 0xd8 C:\Users\Martin\Documents\Arduino\libraries\autowp-mcp2515/mcp2515.cpp:136 endSPI(); } 69e: df 91 pop r29 6a0: cf 91 pop r28 6a2: 1f 91 pop r17 C:\Users\Martin\Documents\Arduino\libraries\autowp-mcp2515/mcp2515.cpp:135 startSPI(); SPI.transfer(INSTRUCTION_BITMOD); SPI.transfer(reg); SPI.transfer(mask); SPI.transfer(data); endSPI(); 6a4: 82 cd rjmp .-1276 ; 0x1aa 000006a6 : _ZN7MCP25157setModeENS_18CANCTRL_REQOP_MODEE.constprop.11(): C:\Users\Martin\Documents\Arduino\libraries\autowp-mcp2515/mcp2515.cpp:173 MCP2515::ERROR MCP2515::setNormalMode() { return setMode(CANCTRL_REQOP_NORMAL); } MCP2515::ERROR MCP2515::setMode(const CANCTRL_REQOP_MODE mode) 6a6: cf 92 push r12 6a8: df 92 push r13 6aa: ef 92 push r14 6ac: ff 92 push r15 6ae: cf 93 push r28 6b0: c8 2f mov r28, r24 C:\Users\Martin\Documents\Arduino\libraries\autowp-mcp2515/mcp2515.cpp:175 { modifyRegister(MCP_CANCTRL, CANCTRL_REQOP, mode); 6b2: 48 2f mov r20, r24 6b4: 60 ee ldi r22, 0xE0 ; 224 6b6: 8f e0 ldi r24, 0x0F ; 15 6b8: e3 df rcall .-58 ; 0x680 millis(): C:\Users\Martin\AppData\Local\Arduino15\packages\MegaCoreX\hardware\megaavr\1.0.10\cores\coreX-corefiles/wiring.c:87 { unsigned long m; // disable interrupts while we read timer0_millis or we might get an // inconsistent value (e.g. in the middle of a write to timer_millis) uint8_t status = SREG; 6ba: 8f b7 in r24, 0x3f ; 63 C:\Users\Martin\AppData\Local\Arduino15\packages\MegaCoreX\hardware\megaavr\1.0.10\cores\coreX-corefiles/wiring.c:88 cli(); 6bc: f8 94 cli C:\Users\Martin\AppData\Local\Arduino15\packages\MegaCoreX\hardware\megaavr\1.0.10\cores\coreX-corefiles/wiring.c:90 m = timer_millis; 6be: c0 90 10 3c lds r12, 0x3C10 ; 0x803c10 6c2: d0 90 11 3c lds r13, 0x3C11 ; 0x803c11 6c6: e0 90 12 3c lds r14, 0x3C12 ; 0x803c12 6ca: f0 90 13 3c lds r15, 0x3C13 ; 0x803c13 C:\Users\Martin\AppData\Local\Arduino15\packages\MegaCoreX\hardware\megaavr\1.0.10\cores\coreX-corefiles/wiring.c:92 SREG = status; 6ce: 8f bf out 0x3f, r24 ; 63 _ZN7MCP25157setModeENS_18CANCTRL_REQOP_MODEE.constprop.11(): C:\Users\Martin\Documents\Arduino\libraries\autowp-mcp2515/mcp2515.cpp:177 unsigned long endTime = millis() + 10; 6d0: 8a e0 ldi r24, 0x0A ; 10 6d2: c8 0e add r12, r24 6d4: d1 1c adc r13, r1 6d6: e1 1c adc r14, r1 6d8: f1 1c adc r15, r1 millis(): C:\Users\Martin\AppData\Local\Arduino15\packages\MegaCoreX\hardware\megaavr\1.0.10\cores\coreX-corefiles/wiring.c:87 { unsigned long m; // disable interrupts while we read timer0_millis or we might get an // inconsistent value (e.g. in the middle of a write to timer_millis) uint8_t status = SREG; 6da: 2f b7 in r18, 0x3f ; 63 C:\Users\Martin\AppData\Local\Arduino15\packages\MegaCoreX\hardware\megaavr\1.0.10\cores\coreX-corefiles/wiring.c:88 cli(); 6dc: f8 94 cli C:\Users\Martin\AppData\Local\Arduino15\packages\MegaCoreX\hardware\megaavr\1.0.10\cores\coreX-corefiles/wiring.c:90 m = timer_millis; 6de: 80 91 10 3c lds r24, 0x3C10 ; 0x803c10 6e2: 90 91 11 3c lds r25, 0x3C11 ; 0x803c11 6e6: a0 91 12 3c lds r26, 0x3C12 ; 0x803c12 6ea: b0 91 13 3c lds r27, 0x3C13 ; 0x803c13 C:\Users\Martin\AppData\Local\Arduino15\packages\MegaCoreX\hardware\megaavr\1.0.10\cores\coreX-corefiles/wiring.c:92 SREG = status; 6ee: 2f bf out 0x3f, r18 ; 63 _ZN7MCP25157setModeENS_18CANCTRL_REQOP_MODEE.constprop.11(): C:\Users\Martin\Documents\Arduino\libraries\autowp-mcp2515/mcp2515.cpp:179 bool modeMatch = false; while (millis() < endTime) { 6f0: 8c 15 cp r24, r12 6f2: 9d 05 cpc r25, r13 6f4: ae 05 cpc r26, r14 6f6: bf 05 cpc r27, r15 6f8: 78 f4 brcc .+30 ; 0x718 C:\Users\Martin\Documents\Arduino\libraries\autowp-mcp2515/mcp2515.cpp:180 uint8_t newmode = readRegister(MCP_CANSTAT); 6fa: 8e e0 ldi r24, 0x0E ; 14 6fc: 94 df rcall .-216 ; 0x626 C:\Users\Martin\Documents\Arduino\libraries\autowp-mcp2515/mcp2515.cpp:181 newmode &= CANSTAT_OPMOD; 6fe: 80 7e andi r24, 0xE0 ; 224 C:\Users\Martin\Documents\Arduino\libraries\autowp-mcp2515/mcp2515.cpp:185 modeMatch = newmode == mode; if (modeMatch) { 700: c8 13 cpse r28, r24 702: eb cf rjmp .-42 ; 0x6da C:\Users\Martin\Documents\Arduino\libraries\autowp-mcp2515/mcp2515.cpp:183 bool modeMatch = false; while (millis() < endTime) { uint8_t newmode = readRegister(MCP_CANSTAT); newmode &= CANSTAT_OPMOD; modeMatch = newmode == mode; 704: 81 e0 ldi r24, 0x01 ; 1 C:\Users\Martin\Documents\Arduino\libraries\autowp-mcp2515/mcp2515.cpp:190 if (modeMatch) { break; } } return modeMatch ? ERROR_OK : ERROR_FAIL; 706: 91 e0 ldi r25, 0x01 ; 1 708: 89 27 eor r24, r25 C:\Users\Martin\Documents\Arduino\libraries\autowp-mcp2515/mcp2515.cpp:192 } 70a: 90 e0 ldi r25, 0x00 ; 0 70c: cf 91 pop r28 70e: ff 90 pop r15 710: ef 90 pop r14 712: df 90 pop r13 714: cf 90 pop r12 716: 08 95 ret C:\Users\Martin\Documents\Arduino\libraries\autowp-mcp2515/mcp2515.cpp:179 { modifyRegister(MCP_CANCTRL, CANCTRL_REQOP, mode); unsigned long endTime = millis() + 10; bool modeMatch = false; while (millis() < endTime) { 718: 80 e0 ldi r24, 0x00 ; 0 71a: f5 cf rjmp .-22 ; 0x706 0000071c : _ZN7MCP251511setRegisterENS_8REGISTEREh.constprop.9(): C:\Users\Martin\Documents\Arduino\libraries\autowp-mcp2515/mcp2515.cpp:108 values[i] = SPI.transfer(0x00); } endSPI(); } void MCP2515::setRegister(const REGISTER reg, const uint8_t value) 71c: cf 93 push r28 71e: df 93 push r29 720: d8 2f mov r29, r24 722: c6 2f mov r28, r22 C:\Users\Martin\Documents\Arduino\libraries\autowp-mcp2515/mcp2515.cpp:110 { startSPI(); 724: bf de rcall .-642 ; 0x4a4 C:\Users\Martin\Documents\Arduino\libraries\autowp-mcp2515/mcp2515.cpp:111 SPI.transfer(INSTRUCTION_WRITE); 726: 82 e0 ldi r24, 0x02 ; 2 728: d7 dc rcall .-1618 ; 0xd8 C:\Users\Martin\Documents\Arduino\libraries\autowp-mcp2515/mcp2515.cpp:112 SPI.transfer(reg); 72a: 8d 2f mov r24, r29 72c: d5 dc rcall .-1622 ; 0xd8 C:\Users\Martin\Documents\Arduino\libraries\autowp-mcp2515/mcp2515.cpp:113 SPI.transfer(value); 72e: 8c 2f mov r24, r28 730: d3 dc rcall .-1626 ; 0xd8 C:\Users\Martin\Documents\Arduino\libraries\autowp-mcp2515/mcp2515.cpp:115 endSPI(); } 732: df 91 pop r29 734: cf 91 pop r28 C:\Users\Martin\Documents\Arduino\libraries\autowp-mcp2515/mcp2515.cpp:114 { startSPI(); SPI.transfer(INSTRUCTION_WRITE); SPI.transfer(reg); SPI.transfer(value); endSPI(); 736: 39 cd rjmp .-1422 ; 0x1aa 00000738 <__vector_25>: __vector_25(): C:\Users\Martin\AppData\Local\Arduino15\packages\MegaCoreX\hardware\megaavr\1.0.10\cores\coreX-corefiles/wiring.c:74 #elif defined(MILLIS_USE_TIMERB2) ISR(TCB2_INT_vect) #else // fallback or defined(MILLIS_USE_TIMERB3) ISR(TCB3_INT_vect) #endif { 738: 1f 92 push r1 73a: 0f 92 push r0 73c: 0f b6 in r0, 0x3f ; 63 73e: 0f 92 push r0 740: 11 24 eor r1, r1 742: 8f 93 push r24 744: 9f 93 push r25 746: af 93 push r26 748: bf 93 push r27 C:\Users\Martin\AppData\Local\Arduino15\packages\MegaCoreX\hardware\megaavr\1.0.10\cores\coreX-corefiles/wiring.c:75 timer_millis++; 74a: 80 91 10 3c lds r24, 0x3C10 ; 0x803c10 74e: 90 91 11 3c lds r25, 0x3C11 ; 0x803c11 752: a0 91 12 3c lds r26, 0x3C12 ; 0x803c12 756: b0 91 13 3c lds r27, 0x3C13 ; 0x803c13 75a: 01 96 adiw r24, 0x01 ; 1 75c: a1 1d adc r26, r1 75e: b1 1d adc r27, r1 760: 80 93 10 3c sts 0x3C10, r24 ; 0x803c10 764: 90 93 11 3c sts 0x3C11, r25 ; 0x803c11 768: a0 93 12 3c sts 0x3C12, r26 ; 0x803c12 76c: b0 93 13 3c sts 0x3C13, r27 ; 0x803c13 C:\Users\Martin\AppData\Local\Arduino15\packages\MegaCoreX\hardware\megaavr\1.0.10\cores\coreX-corefiles/wiring.c:78 /* Clear flag */ _timer->INTFLAGS = TCB_CAPT_bm; 770: 81 e0 ldi r24, 0x01 ; 1 772: 80 93 a6 0a sts 0x0AA6, r24 ; 0x800aa6 C:\Users\Martin\AppData\Local\Arduino15\packages\MegaCoreX\hardware\megaavr\1.0.10\cores\coreX-corefiles/wiring.c:79 } 776: bf 91 pop r27 778: af 91 pop r26 77a: 9f 91 pop r25 77c: 8f 91 pop r24 77e: 0f 90 pop r0 780: 0f be out 0x3f, r0 ; 63 782: 0f 90 pop r0 784: 1f 90 pop r1 786: 18 95 reti 00000788 : _GLOBAL__I_65535_0_sketch_jun30b.ino.cpp.o.2661(): 788: cf 93 push r28 78a: df 93 push r29 78c: e4 e1 ldi r30, 0x14 ; 20 78e: fc e3 ldi r31, 0x3C ; 60 790: c4 e0 ldi r28, 0x04 ; 4 792: c1 83 std Z+1, r28 ; 0x01 794: 81 e3 ldi r24, 0x31 ; 49 796: 80 83 st Z, r24 798: e6 e1 ldi r30, 0x16 ; 22 79a: fc e3 ldi r31, 0x3C ; 60 79c: 15 82 std Z+5, r1 ; 0x05 79e: 14 82 std Z+4, r1 ; 0x04 7a0: df dd rcall .-1090 ; 0x360 7a2: d3 e0 ldi r29, 0x03 ; 3 7a4: d0 93 85 3c sts 0x3C85, r29 ; 0x803c85 7a8: 61 e0 ldi r22, 0x01 ; 1 7aa: 83 e0 ldi r24, 0x03 ; 3 7ac: ab dd rcall .-1194 ; 0x304 7ae: fd dc rcall .-1542 ; 0x1aa 7b0: e5 e5 ldi r30, 0x55 ; 85 7b2: fc e3 ldi r31, 0x3C ; 60 7b4: 85 e1 ldi r24, 0x15 ; 21 7b6: 90 e0 ldi r25, 0x00 ; 0 7b8: 80 83 st Z, r24 7ba: 91 83 std Z+1, r25 ; 0x01 7bc: 12 82 std Z+2, r1 ; 0x02 7be: 13 82 std Z+3, r1 ; 0x03 7c0: 81 e0 ldi r24, 0x01 ; 1 7c2: 84 83 std Z+4, r24 ; 0x04 7c4: 85 83 std Z+5, r24 ; 0x05 7c6: 26 e1 ldi r18, 0x16 ; 22 7c8: 30 e0 ldi r19, 0x00 ; 0 7ca: 26 83 std Z+6, r18 ; 0x06 7cc: 37 83 std Z+7, r19 ; 0x07 7ce: 10 86 std Z+8, r1 ; 0x08 7d0: 11 86 std Z+9, r1 ; 0x09 7d2: 82 87 std Z+10, r24 ; 0x0a 7d4: 92 e0 ldi r25, 0x02 ; 2 7d6: 93 87 std Z+11, r25 ; 0x0b 7d8: 27 e1 ldi r18, 0x17 ; 23 7da: 30 e0 ldi r19, 0x00 ; 0 7dc: 24 87 std Z+12, r18 ; 0x0c 7de: 35 87 std Z+13, r19 ; 0x0d 7e0: 16 86 std Z+14, r1 ; 0x0e 7e2: 17 86 std Z+15, r1 ; 0x0f 7e4: 80 8b std Z+16, r24 ; 0x10 7e6: d1 8b std Z+17, r29 ; 0x11 7e8: 28 e1 ldi r18, 0x18 ; 24 7ea: 30 e0 ldi r19, 0x00 ; 0 7ec: 22 8b std Z+18, r18 ; 0x12 7ee: 33 8b std Z+19, r19 ; 0x13 7f0: 14 8a std Z+20, r1 ; 0x14 7f2: 15 8a std Z+21, r1 ; 0x15 7f4: 86 8b std Z+22, r24 ; 0x16 7f6: c7 8b std Z+23, r28 ; 0x17 7f8: 2c e1 ldi r18, 0x1C ; 28 7fa: 30 e0 ldi r19, 0x00 ; 0 7fc: 20 8f std Z+24, r18 ; 0x18 7fe: 31 8f std Z+25, r19 ; 0x19 800: 12 8e std Z+26, r1 ; 0x1a 802: 13 8e std Z+27, r1 ; 0x1b 804: 84 8f std Z+28, r24 ; 0x1c 806: 95 e0 ldi r25, 0x05 ; 5 808: 95 8f std Z+29, r25 ; 0x1d 80a: 2b e1 ldi r18, 0x1B ; 27 80c: 30 e0 ldi r19, 0x00 ; 0 80e: 26 8f std Z+30, r18 ; 0x1e 810: 37 8f std Z+31, r19 ; 0x1f 812: 10 a2 std Z+32, r1 ; 0x20 814: 11 a2 std Z+33, r1 ; 0x21 816: 82 a3 std Z+34, r24 ; 0x22 818: 96 e0 ldi r25, 0x06 ; 6 81a: 93 a3 std Z+35, r25 ; 0x23 81c: 2a e1 ldi r18, 0x1A ; 26 81e: 30 e0 ldi r19, 0x00 ; 0 820: 24 a3 std Z+36, r18 ; 0x24 822: 35 a3 std Z+37, r19 ; 0x25 824: 16 a2 std Z+38, r1 ; 0x26 826: 17 a2 std Z+39, r1 ; 0x27 828: 80 a7 std Z+40, r24 ; 0x28 82a: 97 e0 ldi r25, 0x07 ; 7 82c: 91 a7 std Z+41, r25 ; 0x29 82e: 29 e1 ldi r18, 0x19 ; 25 830: 30 e0 ldi r19, 0x00 ; 0 832: 22 a7 std Z+42, r18 ; 0x2a 834: 33 a7 std Z+43, r19 ; 0x2b 836: 14 a6 std Z+44, r1 ; 0x2c 838: 15 a6 std Z+45, r1 ; 0x2d 83a: 86 a7 std Z+46, r24 ; 0x2e 83c: 88 e0 ldi r24, 0x08 ; 8 83e: 87 a7 std Z+47, r24 ; 0x2f 840: df 91 pop r29 842: cf 91 pop r28 844: 08 95 ret 00000846
: main(): C:\Users\Martin\AppData\Local\Arduino15\packages\MegaCoreX\hardware\megaavr\1.0.10\cores\coreX-corefiles/main.cpp:29 void setupUSB() __attribute__((weak)); void setupUSB() {} int main(void) { 846: cf 93 push r28 848: df 93 push r29 84a: cd b7 in r28, 0x3d ; 61 84c: de b7 in r29, 0x3e ; 62 84e: a9 97 sbiw r28, 0x29 ; 41 850: cd bf out 0x3d, r28 ; 61 852: de bf out 0x3e, r29 ; 62 init(): C:\Users\Martin\AppData\Local\Arduino15\packages\MegaCoreX\hardware\megaavr\1.0.10\cores\coreX-corefiles/wiring.c:361 #elif (F_CPU == 10000000L) /* Clock DIV2 */ _PROTECTED_WRITE(CLKCTRL_MCLKCTRLB, (CLKCTRL_PEN_bm | CLKCTRL_PDIV_2X_gc)); #elif (F_CPU == 8000000L) /* Clock DIV2 */ _PROTECTED_WRITE(CLKCTRL_MCLKCTRLB, (CLKCTRL_PEN_bm | CLKCTRL_PDIV_2X_gc)); 854: 91 e0 ldi r25, 0x01 ; 1 856: 88 ed ldi r24, 0xD8 ; 216 858: 84 bf out 0x34, r24 ; 52 85a: 90 93 61 00 sts 0x0061, r25 ; 0x800061 C:\Users\Martin\AppData\Local\Arduino15\packages\MegaCoreX\hardware\megaavr\1.0.10\cores\coreX-corefiles/wiring.c:390 #if (F_CPU >= 20000000L) // 20 MHz / 128 = 156.250 kHz ADC0.CTRLC |= ADC_PRESC_DIV128_gc; #elif (F_CPU >= 16000000L) // 16 MHz / 128 = 125 kHz ADC0.CTRLC |= ADC_PRESC_DIV128_gc; #elif (F_CPU >= 8000000L) // 8 MHz / 64 = 125 kHz ADC0.CTRLC |= ADC_PRESC_DIV64_gc; 85e: 80 91 02 06 lds r24, 0x0602 ; 0x800602 862: 85 60 ori r24, 0x05 ; 5 864: 80 93 02 06 sts 0x0602, r24 ; 0x800602 C:\Users\Martin\AppData\Local\Arduino15\packages\MegaCoreX\hardware\megaavr\1.0.10\cores\coreX-corefiles/wiring.c:402 #else // 128 kHz / 2 = 64 kHz -> This is the closest you can get, the prescaler is 2 ADC0.CTRLC |= ADC_PRESC_DIV2_gc; #endif /* Enable ADC */ ADC0.CTRLA |= ADC_ENABLE_bm; 868: 80 91 00 06 lds r24, 0x0600 ; 0x800600 86c: 81 60 ori r24, 0x01 ; 1 86e: 80 93 00 06 sts 0x0600, r24 ; 0x800600 analogReference(): C:\Users\Martin\AppData\Local\Arduino15\packages\MegaCoreX\hardware\megaavr\1.0.10\cores\coreX-corefiles/wiring_analog.c:35 { switch (mode) { case EXTERNAL: case VDD: ADC0.CTRLC = (ADC0.CTRLC & ~(ADC_REFSEL_gm)) | mode | ADC_SAMPCAP_bm; // Per datasheet, recommended SAMPCAP=1 at ref > 1v - we don't *KNOW* the external reference will be >1v, but it's probably more likely... 872: 80 91 02 06 lds r24, 0x0602 ; 0x800602 876: 8f 7c andi r24, 0xCF ; 207 878: 80 65 ori r24, 0x50 ; 80 87a: 80 93 02 06 sts 0x0602, r24 ; 0x800602 init(): C:\Users\Martin\AppData\Local\Arduino15\packages\MegaCoreX\hardware\megaavr\1.0.10\cores\coreX-corefiles/wiring.c:407 analogReference(VDD); #endif PORTMUX.USARTROUTEA = 0; 87e: 10 92 e2 05 sts 0x05E2, r1 ; 0x8005e2 setup_timers(): C:\Users\Martin\AppData\Local\Arduino15\packages\MegaCoreX\hardware\megaavr\1.0.10\cores\coreX-corefiles/wiring.c:446 void setup_timers() { // TYPE A TIMER // PORTMUX setting for TCA (defined in pins_arduino.h) PORTMUX.TCAROUTEA = TCA0_PINS; 882: 82 e0 ldi r24, 0x02 ; 2 884: 80 93 e4 05 sts 0x05E4, r24 ; 0x8005e4 C:\Users\Martin\AppData\Local\Arduino15\packages\MegaCoreX\hardware\megaavr\1.0.10\cores\coreX-corefiles/wiring.c:449 // Enable split mode before anything else TCA0.SPLIT.CTRLD = TCA_SINGLE_SPLITM_bm; 888: 90 93 03 0a sts 0x0A03, r25 ; 0x800a03 C:\Users\Martin\AppData\Local\Arduino15\packages\MegaCoreX\hardware\megaavr\1.0.10\cores\coreX-corefiles/wiring.c:453 // Period setting, two 8 bit registers TCA0.SPLIT.LPER = TCA0.SPLIT.HPER = PWM_TIMER_PERIOD; 88c: 8e ef ldi r24, 0xFE ; 254 88e: 80 93 27 0a sts 0x0A27, r24 ; 0x800a27 C:\Users\Martin\AppData\Local\Arduino15\packages\MegaCoreX\hardware\megaavr\1.0.10\cores\coreX-corefiles/wiring.c:452 // Enable split mode before anything else TCA0.SPLIT.CTRLD = TCA_SINGLE_SPLITM_bm; // Period setting, two 8 bit registers TCA0.SPLIT.LPER = 892: 80 93 26 0a sts 0x0A26, r24 ; 0x800a26 C:\Users\Martin\AppData\Local\Arduino15\packages\MegaCoreX\hardware\megaavr\1.0.10\cores\coreX-corefiles/wiring.c:461 TCA0.SPLIT.LCMP0 = TCA0.SPLIT.LCMP1 = TCA0.SPLIT.LCMP2 = TCA0.SPLIT.HCMP0 = TCA0.SPLIT.HCMP1 = TCA0.SPLIT.HCMP2 = PWM_TIMER_COMPARE; 896: 80 e8 ldi r24, 0x80 ; 128 898: 80 93 2d 0a sts 0x0A2D, r24 ; 0x800a2d C:\Users\Martin\AppData\Local\Arduino15\packages\MegaCoreX\hardware\megaavr\1.0.10\cores\coreX-corefiles/wiring.c:460 // Default duty 50%, will re-assign in analogWrite() TCA0.SPLIT.LCMP0 = TCA0.SPLIT.LCMP1 = TCA0.SPLIT.LCMP2 = TCA0.SPLIT.HCMP0 = TCA0.SPLIT.HCMP1 = 89c: 80 93 2b 0a sts 0x0A2B, r24 ; 0x800a2b C:\Users\Martin\AppData\Local\Arduino15\packages\MegaCoreX\hardware\megaavr\1.0.10\cores\coreX-corefiles/wiring.c:459 // Default duty 50%, will re-assign in analogWrite() TCA0.SPLIT.LCMP0 = TCA0.SPLIT.LCMP1 = TCA0.SPLIT.LCMP2 = TCA0.SPLIT.HCMP0 = 8a0: 80 93 29 0a sts 0x0A29, r24 ; 0x800a29 C:\Users\Martin\AppData\Local\Arduino15\packages\MegaCoreX\hardware\megaavr\1.0.10\cores\coreX-corefiles/wiring.c:458 TCA0.SPLIT.HPER = PWM_TIMER_PERIOD; // Default duty 50%, will re-assign in analogWrite() TCA0.SPLIT.LCMP0 = TCA0.SPLIT.LCMP1 = TCA0.SPLIT.LCMP2 = 8a4: 80 93 2c 0a sts 0x0A2C, r24 ; 0x800a2c C:\Users\Martin\AppData\Local\Arduino15\packages\MegaCoreX\hardware\megaavr\1.0.10\cores\coreX-corefiles/wiring.c:457 TCA0.SPLIT.LPER = TCA0.SPLIT.HPER = PWM_TIMER_PERIOD; // Default duty 50%, will re-assign in analogWrite() TCA0.SPLIT.LCMP0 = TCA0.SPLIT.LCMP1 = 8a8: 80 93 2a 0a sts 0x0A2A, r24 ; 0x800a2a C:\Users\Martin\AppData\Local\Arduino15\packages\MegaCoreX\hardware\megaavr\1.0.10\cores\coreX-corefiles/wiring.c:456 // Period setting, two 8 bit registers TCA0.SPLIT.LPER = TCA0.SPLIT.HPER = PWM_TIMER_PERIOD; // Default duty 50%, will re-assign in analogWrite() TCA0.SPLIT.LCMP0 = 8ac: 80 93 28 0a sts 0x0A28, r24 ; 0x800a28 C:\Users\Martin\AppData\Local\Arduino15\packages\MegaCoreX\hardware\megaavr\1.0.10\cores\coreX-corefiles/wiring.c:471 #elif F_CPU <= 2000000L // Use DIV8 prescaler (giving 250kHz clock on 2MHz), enable TCA timer TCA0.SPLIT.CTRLA = (TCA_SPLIT_CLKSEL_DIV8_gc) | (TCA_SPLIT_ENABLE_bm); #elif F_CPU <= 8000000L // Use DIV16 prescaler (giving 250kHz clocke on 4MHz, 500kHz clock on 8MHz), enable TCA timer TCA0.SPLIT.CTRLA = (TCA_SPLIT_CLKSEL_DIV16_gc) | (TCA_SPLIT_ENABLE_bm); 8b0: 89 e0 ldi r24, 0x09 ; 9 8b2: 80 93 00 0a sts 0x0A00, r24 ; 0x800a00 C:\Users\Martin\AppData\Local\Arduino15\packages\MegaCoreX\hardware\megaavr\1.0.10\cores\coreX-corefiles/wiring.c:480 #endif // TYPE B TIMERS // Set up routing (defined in pins_arduino.h) PORTMUX.TCBROUTEA = 0 8b6: 87 e0 ldi r24, 0x07 ; 7 8b8: 80 93 e5 05 sts 0x05E5, r24 ; 0x8005e5 main(): C:\Users\Martin\AppData\Local\Arduino15\packages\MegaCoreX\hardware\megaavr\1.0.10\cores\coreX-corefiles/wiring.c:496 | TCB3_PINS #endif ; // Start with TCB0 TCB_t *timer_B = (TCB_t *)&TCB0; 8bc: e0 e8 ldi r30, 0x80 ; 128 8be: fa e0 ldi r31, 0x0A ; 10 setup_timers(): C:\Users\Martin\AppData\Local\Arduino15\packages\MegaCoreX\hardware\megaavr\1.0.10\cores\coreX-corefiles/wiring.c:513 // Timer B Setup loop for TCB[0:end] do { // 8 bit PWM mode, but do not enable output yet, will do in analogWrite() timer_B->CTRLB = (TCB_CNTMODE_PWM8_gc); 8c0: 37 e0 ldi r19, 0x07 ; 7 C:\Users\Martin\AppData\Local\Arduino15\packages\MegaCoreX\hardware\megaavr\1.0.10\cores\coreX-corefiles/wiring.c:516 // Assign 8-bit period timer_B->CCMPL = PWM_TIMER_PERIOD; 8c2: 2e ef ldi r18, 0xFE ; 254 C:\Users\Martin\AppData\Local\Arduino15\packages\MegaCoreX\hardware\megaavr\1.0.10\cores\coreX-corefiles/wiring.c:519 // default duty 50%, set when output enabled timer_B->CCMPH = PWM_TIMER_COMPARE; 8c4: 90 e8 ldi r25, 0x80 ; 128 C:\Users\Martin\AppData\Local\Arduino15\packages\MegaCoreX\hardware\megaavr\1.0.10\cores\coreX-corefiles/wiring.c:523 // Use TCA clock (250kHz) and enable // (sync update commented out, might try to synchronize later timer_B->CTRLA = (TCB_CLKSEL_CLKTCA_gc) 8c6: 85 e0 ldi r24, 0x05 ; 5 C:\Users\Martin\AppData\Local\Arduino15\packages\MegaCoreX\hardware\megaavr\1.0.10\cores\coreX-corefiles/wiring.c:513 // Timer B Setup loop for TCB[0:end] do { // 8 bit PWM mode, but do not enable output yet, will do in analogWrite() timer_B->CTRLB = (TCB_CNTMODE_PWM8_gc); 8c8: 31 83 std Z+1, r19 ; 0x01 C:\Users\Martin\AppData\Local\Arduino15\packages\MegaCoreX\hardware\megaavr\1.0.10\cores\coreX-corefiles/wiring.c:516 // Assign 8-bit period timer_B->CCMPL = PWM_TIMER_PERIOD; 8ca: 24 87 std Z+12, r18 ; 0x0c C:\Users\Martin\AppData\Local\Arduino15\packages\MegaCoreX\hardware\megaavr\1.0.10\cores\coreX-corefiles/wiring.c:519 // default duty 50%, set when output enabled timer_B->CCMPH = PWM_TIMER_COMPARE; 8cc: 95 87 std Z+13, r25 ; 0x0d C:\Users\Martin\AppData\Local\Arduino15\packages\MegaCoreX\hardware\megaavr\1.0.10\cores\coreX-corefiles/wiring.c:523 // Use TCA clock (250kHz) and enable // (sync update commented out, might try to synchronize later timer_B->CTRLA = (TCB_CLKSEL_CLKTCA_gc) 8ce: 80 83 st Z, r24 C:\Users\Martin\AppData\Local\Arduino15\packages\MegaCoreX\hardware\megaavr\1.0.10\cores\coreX-corefiles/wiring.c:528 //|(TCB_SYNCUPD_bm) | (TCB_ENABLE_bm); // Increment pointer to next TCB instance timer_B++; 8d0: 70 96 adiw r30, 0x10 ; 16 C:\Users\Martin\AppData\Local\Arduino15\packages\MegaCoreX\hardware\megaavr\1.0.10\cores\coreX-corefiles/wiring.c:531 // Stop when pointing to TCB3 } while (timer_B <= timer_B_end); 8d2: e0 3c cpi r30, 0xC0 ; 192 8d4: 4a e0 ldi r20, 0x0A ; 10 8d6: f4 07 cpc r31, r20 8d8: b9 f7 brne .-18 ; 0x8c8 init(): C:\Users\Martin\AppData\Local\Arduino15\packages\MegaCoreX\hardware\megaavr\1.0.10\cores\coreX-corefiles/wiring.c:416 /********************* TCB for system time tracking **************************/ // BUG: we can compensate for F_CPU by fine tuning value of TIME_TRACKING_TIMER_COUNT /* Select vanilla 16 bit periodic interrupt mode */ _timer->CTRLB = TCB_CNTMODE_INT_gc; 8da: 10 92 a1 0a sts 0x0AA1, r1 ; 0x800aa1 C:\Users\Martin\AppData\Local\Arduino15\packages\MegaCoreX\hardware\megaavr\1.0.10\cores\coreX-corefiles/wiring.c:419 /* TOP value for overflow every N clock cycles */ _timer->CCMP = TIME_TRACKING_TIMER_COUNT - 1; 8de: 8f e3 ldi r24, 0x3F ; 63 8e0: 9f e1 ldi r25, 0x1F ; 31 8e2: 80 93 ac 0a sts 0x0AAC, r24 ; 0x800aac 8e6: 90 93 ad 0a sts 0x0AAD, r25 ; 0x800aad C:\Users\Martin\AppData\Local\Arduino15\packages\MegaCoreX\hardware\megaavr\1.0.10\cores\coreX-corefiles/wiring.c:422 /* Enable TCB interrupt */ _timer->INTCTRL |= TCB_CAPT_bm; 8ea: 80 91 a5 0a lds r24, 0x0AA5 ; 0x800aa5 8ee: 81 60 ori r24, 0x01 ; 1 8f0: 80 93 a5 0a sts 0x0AA5, r24 ; 0x800aa5 C:\Users\Martin\AppData\Local\Arduino15\packages\MegaCoreX\hardware\megaavr\1.0.10\cores\coreX-corefiles/wiring.c:426 /* Clock selection is F_CPU/N -- which is independent of TCA */ #if TIME_TRACKING_TIMER_DIVIDER == 1 _timer->CTRLA = TCB_CLKSEL_CLKDIV1_gc; /* F_CPU */ 8f4: 10 92 a0 0a sts 0x0AA0, r1 ; 0x800aa0 C:\Users\Martin\AppData\Local\Arduino15\packages\MegaCoreX\hardware\megaavr\1.0.10\cores\coreX-corefiles/wiring.c:434 #else #assert "TIME_TRACKING_TIMER_DIVIDER not supported" #endif /* Enable & start */ _timer->CTRLA |= TCB_ENABLE_bm; /* Keep this last before enabling interrupts to ensure tracking as accurate as possible */ 8f8: 80 91 a0 0a lds r24, 0x0AA0 ; 0x800aa0 8fc: 81 60 ori r24, 0x01 ; 1 8fe: 80 93 a0 0a sts 0x0AA0, r24 ; 0x800aa0 C:\Users\Martin\AppData\Local\Arduino15\packages\MegaCoreX\hardware\megaavr\1.0.10\cores\coreX-corefiles/wiring.c:438 /*************************** ENABLE GLOBAL INTERRUPTS *************************/ sei(); 902: 78 94 sei setup(): C:\Users\Martin\Documents\Arduino\sketch_jun30b/sketch_jun30b.ino:50 PinState(PIN_PD3, 8) }; void setup() { SPI.begin(); 904: 2d dd rcall .-1446 ; 0x360 C:\Users\Martin\Documents\Arduino\sketch_jun30b/sketch_jun30b.ino:52 _PROTECTED_WRITE(CLKCTRL.MCLKCTRLA, CLKCTRL.MCLKCTRLA | 1 << 7); 906: 80 91 60 00 lds r24, 0x0060 ; 0x800060 90a: 80 68 ori r24, 0x80 ; 128 90c: 90 e0 ldi r25, 0x00 ; 0 90e: 28 ed ldi r18, 0xD8 ; 216 910: 24 bf out 0x34, r18 ; 52 912: 80 93 60 00 sts 0x0060, r24 ; 0x800060 reset(): C:\Users\Martin\Documents\Arduino\libraries\autowp-mcp2515/mcp2515.cpp:36 SPI.endTransaction(); } MCP2515::ERROR MCP2515::reset(void) { startSPI(); 916: c6 dd rcall .-1140 ; 0x4a4 C:\Users\Martin\Documents\Arduino\libraries\autowp-mcp2515/mcp2515.cpp:37 SPI.transfer(INSTRUCTION_RESET); 918: 80 ec ldi r24, 0xC0 ; 192 91a: de db rcall .-2116 ; 0xd8 C:\Users\Martin\Documents\Arduino\libraries\autowp-mcp2515/mcp2515.cpp:38 endSPI(); 91c: 46 dc rcall .-1908 ; 0x1aa C:\Users\Martin\Documents\Arduino\libraries\autowp-mcp2515/mcp2515.cpp:40 delay(10); 91e: 6a e0 ldi r22, 0x0A ; 10 920: 70 e0 ldi r23, 0x00 ; 0 922: 80 e0 ldi r24, 0x00 ; 0 924: 90 e0 ldi r25, 0x00 ; 0 926: 92 dd rcall .-1244 ; 0x44c C:\Users\Martin\Documents\Arduino\libraries\autowp-mcp2515/mcp2515.cpp:43 uint8_t zeros[14]; memset(zeros, 0, sizeof(zeros)); 928: ce 01 movw r24, r28 92a: 01 96 adiw r24, 0x01 ; 1 92c: 7c 01 movw r14, r24 92e: 8e e0 ldi r24, 0x0E ; 14 930: d7 01 movw r26, r14 932: 1d 92 st X+, r1 934: 8a 95 dec r24 936: e9 f7 brne .-6 ; 0x932 C:\Users\Martin\Documents\Arduino\libraries\autowp-mcp2515/mcp2515.cpp:44 setRegisters(MCP_TXB0CTRL, zeros, 14); 938: 4e e0 ldi r20, 0x0E ; 14 93a: b7 01 movw r22, r14 93c: 80 e3 ldi r24, 0x30 ; 48 93e: 81 de rcall .-766 ; 0x642 C:\Users\Martin\Documents\Arduino\libraries\autowp-mcp2515/mcp2515.cpp:45 setRegisters(MCP_TXB1CTRL, zeros, 14); 940: 4e e0 ldi r20, 0x0E ; 14 942: b7 01 movw r22, r14 944: 80 e4 ldi r24, 0x40 ; 64 946: 7d de rcall .-774 ; 0x642 C:\Users\Martin\Documents\Arduino\libraries\autowp-mcp2515/mcp2515.cpp:46 setRegisters(MCP_TXB2CTRL, zeros, 14); 948: 4e e0 ldi r20, 0x0E ; 14 94a: b7 01 movw r22, r14 94c: 80 e5 ldi r24, 0x50 ; 80 94e: 79 de rcall .-782 ; 0x642 C:\Users\Martin\Documents\Arduino\libraries\autowp-mcp2515/mcp2515.cpp:48 setRegister(MCP_RXB0CTRL, 0); 950: 60 e0 ldi r22, 0x00 ; 0 952: 80 e6 ldi r24, 0x60 ; 96 954: e3 de rcall .-570 ; 0x71c C:\Users\Martin\Documents\Arduino\libraries\autowp-mcp2515/mcp2515.cpp:49 setRegister(MCP_RXB1CTRL, 0); 956: 60 e0 ldi r22, 0x00 ; 0 958: 80 e7 ldi r24, 0x70 ; 112 95a: e0 de rcall .-576 ; 0x71c C:\Users\Martin\Documents\Arduino\libraries\autowp-mcp2515/mcp2515.cpp:51 setRegister(MCP_CANINTE, CANINTF_RX0IF | CANINTF_RX1IF | CANINTF_ERRIF | CANINTF_MERRF); 95c: 63 ea ldi r22, 0xA3 ; 163 95e: 8b e2 ldi r24, 0x2B ; 43 960: dd de rcall .-582 ; 0x71c C:\Users\Martin\Documents\Arduino\libraries\autowp-mcp2515/mcp2515.cpp:55 // receives all valid messages using either Standard or Extended Identifiers that // meet filter criteria. RXF0 is applied for RXB0, RXF1 is applied for RXB1 modifyRegister(MCP_RXB0CTRL, 962: 44 e0 ldi r20, 0x04 ; 4 964: 67 e6 ldi r22, 0x67 ; 103 966: 80 e6 ldi r24, 0x60 ; 96 968: 8b de rcall .-746 ; 0x680 C:\Users\Martin\Documents\Arduino\libraries\autowp-mcp2515/mcp2515.cpp:58 RXBnCTRL_RXM_MASK | RXB0CTRL_BUKT | RXB0CTRL_FILHIT_MASK, RXBnCTRL_RXM_STDEXT | RXB0CTRL_BUKT | RXB0CTRL_FILHIT); modifyRegister(MCP_RXB1CTRL, 96a: 41 e0 ldi r20, 0x01 ; 1 96c: 67 e6 ldi r22, 0x67 ; 103 96e: 80 e7 ldi r24, 0x70 ; 112 970: 87 de rcall .-754 ; 0x680 C:\Users\Martin\Documents\Arduino\libraries\autowp-mcp2515/mcp2515.cpp:65 RXBnCTRL_RXM_STDEXT | RXB1CTRL_FILHIT); // clear filters and masks // do not filter any standard frames for RXF0 used by RXB0 // do not filter any extended frames for RXF1 used by RXB1 RXF filters[] = {RXF0, RXF1, RXF2, RXF3, RXF4, RXF5}; 972: 8c e0 ldi r24, 0x0C ; 12 974: e6 ef ldi r30, 0xF6 ; 246 976: fc e4 ldi r31, 0x4C ; 76 978: de 01 movw r26, r28 97a: 1f 96 adiw r26, 0x0f ; 15 97c: 01 90 ld r0, Z+ 97e: 0d 92 st X+, r0 980: 8a 95 dec r24 982: e1 f7 brne .-8 ; 0x97c 984: 4e 01 movw r8, r28 986: bf e0 ldi r27, 0x0F ; 15 988: 8b 0e add r8, r27 98a: 91 1c adc r9, r1 main(): C:\Users\Martin\Documents\Arduino\libraries\autowp-mcp2515/mcp2515.cpp:66 for (int i=0; i<6; i++) { 98c: d1 2c mov r13, r1 98e: c1 2c mov r12, r1 990: a8 2c mov r10, r8 992: 99 a6 std Y+41, r9 ; 0x29 C:\Users\Martin\Documents\Arduino\libraries\autowp-mcp2515/mcp2515.cpp:564 REGISTER reg; switch (num) { case RXF0: reg = MCP_RXF0SIDH; break; case RXF1: reg = MCP_RXF1SIDH; break; case RXF2: reg = MCP_RXF2SIDH; break; 994: 98 e0 ldi r25, 0x08 ; 8 996: b9 2e mov r11, r25 reset(): C:\Users\Martin\Documents\Arduino\libraries\autowp-mcp2515/mcp2515.cpp:68 // do not filter any standard frames for RXF0 used by RXB0 // do not filter any extended frames for RXF1 used by RXB1 RXF filters[] = {RXF0, RXF1, RXF2, RXF3, RXF4, RXF5}; for (int i=0; i<6; i++) { bool ext = (i == 1); ERROR result = setFilter(filters[i], ext, 0); 998: f4 01 movw r30, r8 99a: 01 91 ld r16, Z+ 99c: 11 91 ld r17, Z+ 99e: 4f 01 movw r8, r30 setConfigMode(): C:\Users\Martin\Documents\Arduino\libraries\autowp-mcp2515/mcp2515.cpp:150 return i; } MCP2515::ERROR MCP2515::setConfigMode() { return setMode(CANCTRL_REQOP_CONFIG); 9a0: 80 e8 ldi r24, 0x80 ; 128 9a2: 81 de rcall .-766 ; 0x6a6 setFilter(): C:\Users\Martin\Documents\Arduino\libraries\autowp-mcp2515/mcp2515.cpp:555 } MCP2515::ERROR MCP2515::setFilter(const RXF num, const bool ext, const uint32_t ulData) { ERROR res = setConfigMode(); if (res != ERROR_OK) { 9a4: 89 2b or r24, r25 9a6: 61 f4 brne .+24 ; 0x9c0 C:\Users\Martin\Documents\Arduino\libraries\autowp-mcp2515/mcp2515.cpp:561 return res; } REGISTER reg; switch (num) { 9a8: 02 30 cpi r16, 0x02 ; 2 9aa: 11 05 cpc r17, r1 9ac: 09 f4 brne .+2 ; 0x9b0 9ae: 7b c0 rjmp .+246 ; 0xaa6 9b0: a0 f5 brcc .+104 ; 0xa1a 9b2: 01 15 cp r16, r1 9b4: 11 05 cpc r17, r1 9b6: e1 f1 breq .+120 ; 0xa30 9b8: 01 30 cpi r16, 0x01 ; 1 9ba: 11 05 cpc r17, r1 9bc: 09 f4 brne .+2 ; 0x9c0 9be: 79 c0 rjmp .+242 ; 0xab2 setConfigMode(): C:\Users\Martin\Documents\Arduino\libraries\autowp-mcp2515/mcp2515.cpp:150 return i; } MCP2515::ERROR MCP2515::setConfigMode() { return setMode(CANCTRL_REQOP_CONFIG); 9c0: 80 e8 ldi r24, 0x80 ; 128 9c2: 71 de rcall .-798 ; 0x6a6 setBitrate(): C:\Users\Martin\Documents\Arduino\libraries\autowp-mcp2515/mcp2515.cpp:202 } MCP2515::ERROR MCP2515::setBitrate(const CAN_SPEED canSpeed, CAN_CLOCK canClock) { ERROR error = setConfigMode(); if (error != ERROR_OK) { 9c4: 89 2b or r24, r25 9c6: 49 f4 brne .+18 ; 0x9da C:\Users\Martin\Documents\Arduino\libraries\autowp-mcp2515/mcp2515.cpp:477 set = 0; break; } if (set) { setRegister(MCP_CNF1, cfg1); 9c8: 60 e0 ldi r22, 0x00 ; 0 9ca: 8a e2 ldi r24, 0x2A ; 42 9cc: a7 de rcall .-690 ; 0x71c C:\Users\Martin\Documents\Arduino\libraries\autowp-mcp2515/mcp2515.cpp:478 setRegister(MCP_CNF2, cfg2); 9ce: 60 e9 ldi r22, 0x90 ; 144 9d0: 89 e2 ldi r24, 0x29 ; 41 9d2: a4 de rcall .-696 ; 0x71c C:\Users\Martin\Documents\Arduino\libraries\autowp-mcp2515/mcp2515.cpp:479 setRegister(MCP_CNF3, cfg3); 9d4: 62 e8 ldi r22, 0x82 ; 130 9d6: 88 e2 ldi r24, 0x28 ; 40 9d8: a1 de rcall .-702 ; 0x71c setNormalMode(): C:\Users\Martin\Documents\Arduino\libraries\autowp-mcp2515/mcp2515.cpp:170 return setMode(CANCTRL_REQOP_LOOPBACK); } MCP2515::ERROR MCP2515::setNormalMode() { return setMode(CANCTRL_REQOP_NORMAL); 9da: 80 e0 ldi r24, 0x00 ; 0 9dc: 64 de rcall .-824 ; 0x6a6 setup(): C:\Users\Martin\Documents\Arduino\sketch_jun30b/sketch_jun30b.ino:58 mcp2515.reset(); mcp2515.setBitrate(CAN_500KBPS, MCP_8MHZ); //Sets CAN at speed 500KBPS and Clock 8MHz mcp2515.setNormalMode(); delay(2000); 9de: 60 ed ldi r22, 0xD0 ; 208 9e0: 77 e0 ldi r23, 0x07 ; 7 9e2: 80 e0 ldi r24, 0x00 ; 0 9e4: 90 e0 ldi r25, 0x00 ; 0 9e6: 32 dd rcall .-1436 ; 0x44c 9e8: a5 e5 ldi r26, 0x55 ; 85 9ea: ca 2e mov r12, r26 9ec: ac e3 ldi r26, 0x3C ; 60 9ee: da 2e mov r13, r26 SendDebugPkg(): C:\Users\Martin\Documents\Arduino\sketch_jun30b/sketch_jun30b.ino:107 } void SendDebugPkg() { _frame.can_id = 0x001; 9f0: 41 2c mov r4, r1 9f2: 51 2c mov r5, r1 9f4: 32 01 movw r6, r4 9f6: 43 94 inc r4 9f8: fe 01 movw r30, r28 9fa: 75 96 adiw r30, 0x15 ; 21 9fc: eb a3 std Y+35, r30 ; 0x23 9fe: fc a3 std Y+36, r31 ; 0x24 setup(): C:\Users\Martin\Documents\Arduino\sketch_jun30b/sketch_jun30b.ino:59 mcp2515.setBitrate(CAN_500KBPS, MCP_8MHZ); //Sets CAN at speed 500KBPS and Clock 8MHz mcp2515.setNormalMode(); delay(2000); for (int i = 0; i < sizeof(PinStates) - 1; i++) a00: ff e6 ldi r31, 0x6F ; 111 a02: cf 16 cp r12, r31 a04: fd e3 ldi r31, 0x3D ; 61 a06: df 06 cpc r13, r31 a08: 09 f0 breq .+2 ; 0xa0c a0a: 64 c0 rjmp .+200 ; 0xad4 main(): C:\Users\Martin\AppData\Local\Arduino15\packages\MegaCoreX\hardware\megaavr\1.0.10\cores\coreX-corefiles/main.cpp:43 setup(); for (;;) { loop(); if (serialEventRun) serialEventRun(); a0c: 00 e0 ldi r16, 0x00 ; 0 a0e: 10 e0 ldi r17, 0x00 ; 0 a10: 01 15 cp r16, r1 a12: 11 05 cpc r17, r1 a14: e9 f3 breq .-6 ; 0xa10 a16: f4 da rcall .-2584 ; 0x0 <__vectors> a18: fb cf rjmp .-10 ; 0xa10 setFilter(): C:\Users\Martin\Documents\Arduino\libraries\autowp-mcp2515/mcp2515.cpp:561 return res; } REGISTER reg; switch (num) { a1a: 04 30 cpi r16, 0x04 ; 4 a1c: 11 05 cpc r17, r1 a1e: 09 f4 brne .+2 ; 0xa22 a20: 46 c0 rjmp .+140 ; 0xaae a22: 08 f4 brcc .+2 ; 0xa26 a24: 42 c0 rjmp .+132 ; 0xaaa a26: 05 30 cpi r16, 0x05 ; 5 a28: 11 05 cpc r17, r1 a2a: 51 f6 brne .-108 ; 0x9c0 main(): C:\Users\Martin\Documents\Arduino\libraries\autowp-mcp2515/mcp2515.cpp:567 case RXF0: reg = MCP_RXF0SIDH; break; case RXF1: reg = MCP_RXF1SIDH; break; case RXF2: reg = MCP_RXF2SIDH; break; case RXF3: reg = MCP_RXF3SIDH; break; case RXF4: reg = MCP_RXF4SIDH; break; case RXF5: reg = MCP_RXF5SIDH; break; a2c: 88 e1 ldi r24, 0x18 ; 24 a2e: 01 c0 rjmp .+2 ; 0xa32 C:\Users\Martin\Documents\Arduino\libraries\autowp-mcp2515/mcp2515.cpp:562 } REGISTER reg; switch (num) { case RXF0: reg = MCP_RXF0SIDH; break; a30: 80 e0 ldi r24, 0x00 ; 0 prepareId(): C:\Users\Martin\Documents\Arduino\libraries\autowp-mcp2515/mcp2515.cpp:513 void MCP2515::prepareId(uint8_t *buffer, const bool ext, const uint32_t id) { uint16_t canid = (uint16_t)(id & 0x0FFFF); if (ext) { a32: f1 e0 ldi r31, 0x01 ; 1 a34: cf 16 cp r12, r31 a36: d1 04 cpc r13, r1 a38: f1 f5 brne .+124 ; 0xab6 C:\Users\Martin\Documents\Arduino\libraries\autowp-mcp2515/mcp2515.cpp:514 buffer[MCP_EID0] = (uint8_t) (canid & 0xFF); a3a: 1e 8e std Y+30, r1 ; 0x1e C:\Users\Martin\Documents\Arduino\libraries\autowp-mcp2515/mcp2515.cpp:515 buffer[MCP_EID8] = (uint8_t) (canid >> 8); a3c: 1d 8e std Y+29, r1 ; 0x1d C:\Users\Martin\Documents\Arduino\libraries\autowp-mcp2515/mcp2515.cpp:519 canid = (uint16_t)(id >> 16); buffer[MCP_SIDL] = (uint8_t) (canid & 0x03); buffer[MCP_SIDL] += (uint8_t) ((canid & 0x1C) << 3); buffer[MCP_SIDL] |= TXB_EXIDE_MASK; a3e: bc 8e std Y+28, r11 ; 0x1c C:\Users\Martin\Documents\Arduino\libraries\autowp-mcp2515/mcp2515.cpp:520 buffer[MCP_SIDH] = (uint8_t) (canid >> 5); a40: 1b 8e std Y+27, r1 ; 0x1b setFilter(): C:\Users\Martin\Documents\Arduino\libraries\autowp-mcp2515/mcp2515.cpp:574 return ERROR_FAIL; } uint8_t tbufdata[4]; prepareId(tbufdata, ext, ulData); setRegisters(reg, tbufdata, 4); a42: 44 e0 ldi r20, 0x04 ; 4 a44: be 01 movw r22, r28 a46: 65 5e subi r22, 0xE5 ; 229 a48: 7f 4f sbci r23, 0xFF ; 255 a4a: fb dd rcall .-1034 ; 0x642 reset(): C:\Users\Martin\Documents\Arduino\libraries\autowp-mcp2515/mcp2515.cpp:66 // clear filters and masks // do not filter any standard frames for RXF0 used by RXB0 // do not filter any extended frames for RXF1 used by RXB1 RXF filters[] = {RXF0, RXF1, RXF2, RXF3, RXF4, RXF5}; for (int i=0; i<6; i++) { a4c: 4f ef ldi r20, 0xFF ; 255 a4e: c4 1a sub r12, r20 a50: d4 0a sbc r13, r20 a52: 86 e0 ldi r24, 0x06 ; 6 a54: c8 16 cp r12, r24 a56: d1 04 cpc r13, r1 a58: 09 f0 breq .+2 ; 0xa5c a5a: 9e cf rjmp .-196 ; 0x998 C:\Users\Martin\Documents\Arduino\libraries\autowp-mcp2515/mcp2515.cpp:74 if (result != ERROR_OK) { return result; } } MASK masks[] = {MASK0, MASK1}; a5c: 1f 8e std Y+31, r1 ; 0x1f a5e: 18 a2 std Y+32, r1 ; 0x20 a60: 81 e0 ldi r24, 0x01 ; 1 a62: 90 e0 ldi r25, 0x00 ; 0 a64: 89 a3 std Y+33, r24 ; 0x21 a66: 9a a3 std Y+34, r25 ; 0x22 a68: 8e 01 movw r16, r28 a6a: 01 5e subi r16, 0xE1 ; 225 a6c: 1f 4f sbci r17, 0xFF ; 255 a6e: 6e 01 movw r12, r28 a70: 93 e2 ldi r25, 0x23 ; 35 a72: c9 0e add r12, r25 a74: d1 1c adc r13, r1 prepareId(): C:\Users\Martin\Documents\Arduino\libraries\autowp-mcp2515/mcp2515.cpp:519 buffer[MCP_EID0] = (uint8_t) (canid & 0xFF); buffer[MCP_EID8] = (uint8_t) (canid >> 8); canid = (uint16_t)(id >> 16); buffer[MCP_SIDL] = (uint8_t) (canid & 0x03); buffer[MCP_SIDL] += (uint8_t) ((canid & 0x1C) << 3); buffer[MCP_SIDL] |= TXB_EXIDE_MASK; a76: 88 e0 ldi r24, 0x08 ; 8 a78: b8 2e mov r11, r24 reset(): C:\Users\Martin\Documents\Arduino\libraries\autowp-mcp2515/mcp2515.cpp:76 } } MASK masks[] = {MASK0, MASK1}; for (int i=0; i<2; i++) { ERROR result = setFilterMask(masks[i], true, 0); a7a: d8 01 movw r26, r16 a7c: 8d 90 ld r8, X+ a7e: 9d 90 ld r9, X+ a80: 8d 01 movw r16, r26 setConfigMode(): C:\Users\Martin\Documents\Arduino\libraries\autowp-mcp2515/mcp2515.cpp:150 return i; } MCP2515::ERROR MCP2515::setConfigMode() { return setMode(CANCTRL_REQOP_CONFIG); a82: 80 e8 ldi r24, 0x80 ; 128 a84: 10 de rcall .-992 ; 0x6a6 setFilterMask(): C:\Users\Martin\Documents\Arduino\libraries\autowp-mcp2515/mcp2515.cpp:532 } MCP2515::ERROR MCP2515::setFilterMask(const MASK mask, const bool ext, const uint32_t ulData) { ERROR res = setConfigMode(); if (res != ERROR_OK) { a86: 89 2b or r24, r25 a88: 09 f0 breq .+2 ; 0xa8c a8a: 9a cf rjmp .-204 ; 0x9c0 prepareId(): C:\Users\Martin\Documents\Arduino\libraries\autowp-mcp2515/mcp2515.cpp:514 void MCP2515::prepareId(uint8_t *buffer, const bool ext, const uint32_t id) { uint16_t canid = (uint16_t)(id & 0x0FFFF); if (ext) { buffer[MCP_EID0] = (uint8_t) (canid & 0xFF); a8c: 1e 8e std Y+30, r1 ; 0x1e C:\Users\Martin\Documents\Arduino\libraries\autowp-mcp2515/mcp2515.cpp:515 buffer[MCP_EID8] = (uint8_t) (canid >> 8); a8e: 1d 8e std Y+29, r1 ; 0x1d C:\Users\Martin\Documents\Arduino\libraries\autowp-mcp2515/mcp2515.cpp:519 canid = (uint16_t)(id >> 16); buffer[MCP_SIDL] = (uint8_t) (canid & 0x03); buffer[MCP_SIDL] += (uint8_t) ((canid & 0x1C) << 3); buffer[MCP_SIDL] |= TXB_EXIDE_MASK; a90: bc 8e std Y+28, r11 ; 0x1c C:\Users\Martin\Documents\Arduino\libraries\autowp-mcp2515/mcp2515.cpp:520 buffer[MCP_SIDH] = (uint8_t) (canid >> 5); a92: 1b 8e std Y+27, r1 ; 0x1b setFilterMask(): C:\Users\Martin\Documents\Arduino\libraries\autowp-mcp2515/mcp2515.cpp:540 uint8_t tbufdata[4]; prepareId(tbufdata, ext, ulData); REGISTER reg; switch (mask) { a94: 81 14 cp r8, r1 a96: 91 04 cpc r9, r1 a98: 99 f0 breq .+38 ; 0xac0 a9a: 8a 94 dec r8 a9c: 89 28 or r8, r9 a9e: 09 f0 breq .+2 ; 0xaa2 aa0: 8f cf rjmp .-226 ; 0x9c0 main(): C:\Users\Martin\Documents\Arduino\libraries\autowp-mcp2515/mcp2515.cpp:542 case MASK0: reg = MCP_RXM0SIDH; break; case MASK1: reg = MCP_RXM1SIDH; break; aa2: 84 e2 ldi r24, 0x24 ; 36 aa4: 0e c0 rjmp .+28 ; 0xac2 C:\Users\Martin\Documents\Arduino\libraries\autowp-mcp2515/mcp2515.cpp:564 REGISTER reg; switch (num) { case RXF0: reg = MCP_RXF0SIDH; break; case RXF1: reg = MCP_RXF1SIDH; break; case RXF2: reg = MCP_RXF2SIDH; break; aa6: 88 e0 ldi r24, 0x08 ; 8 aa8: c4 cf rjmp .-120 ; 0xa32 C:\Users\Martin\Documents\Arduino\libraries\autowp-mcp2515/mcp2515.cpp:565 case RXF3: reg = MCP_RXF3SIDH; break; aaa: 80 e1 ldi r24, 0x10 ; 16 aac: c2 cf rjmp .-124 ; 0xa32 C:\Users\Martin\Documents\Arduino\libraries\autowp-mcp2515/mcp2515.cpp:566 case RXF4: reg = MCP_RXF4SIDH; break; aae: 84 e1 ldi r24, 0x14 ; 20 ab0: c0 cf rjmp .-128 ; 0xa32 C:\Users\Martin\Documents\Arduino\libraries\autowp-mcp2515/mcp2515.cpp:563 REGISTER reg; switch (num) { case RXF0: reg = MCP_RXF0SIDH; break; case RXF1: reg = MCP_RXF1SIDH; break; ab2: 84 e0 ldi r24, 0x04 ; 4 ab4: be cf rjmp .-132 ; 0xa32 prepareId(): C:\Users\Martin\Documents\Arduino\libraries\autowp-mcp2515/mcp2515.cpp:522 buffer[MCP_SIDL] = (uint8_t) (canid & 0x03); buffer[MCP_SIDL] += (uint8_t) ((canid & 0x1C) << 3); buffer[MCP_SIDL] |= TXB_EXIDE_MASK; buffer[MCP_SIDH] = (uint8_t) (canid >> 5); } else { buffer[MCP_SIDH] = (uint8_t) (canid >> 3); ab6: 1b 8e std Y+27, r1 ; 0x1b C:\Users\Martin\Documents\Arduino\libraries\autowp-mcp2515/mcp2515.cpp:523 buffer[MCP_SIDL] = (uint8_t) ((canid & 0x07 ) << 5); ab8: 1c 8e std Y+28, r1 ; 0x1c C:\Users\Martin\Documents\Arduino\libraries\autowp-mcp2515/mcp2515.cpp:524 buffer[MCP_EID0] = 0; aba: 1e 8e std Y+30, r1 ; 0x1e C:\Users\Martin\Documents\Arduino\libraries\autowp-mcp2515/mcp2515.cpp:525 buffer[MCP_EID8] = 0; abc: 1d 8e std Y+29, r1 ; 0x1d abe: c1 cf rjmp .-126 ; 0xa42 main(): C:\Users\Martin\Documents\Arduino\libraries\autowp-mcp2515/mcp2515.cpp:541 uint8_t tbufdata[4]; prepareId(tbufdata, ext, ulData); REGISTER reg; switch (mask) { case MASK0: reg = MCP_RXM0SIDH; break; ac0: 80 e2 ldi r24, 0x20 ; 32 setFilterMask(): C:\Users\Martin\Documents\Arduino\libraries\autowp-mcp2515/mcp2515.cpp:547 case MASK1: reg = MCP_RXM1SIDH; break; default: return ERROR_FAIL; } setRegisters(reg, tbufdata, 4); ac2: 44 e0 ldi r20, 0x04 ; 4 ac4: be 01 movw r22, r28 ac6: 65 5e subi r22, 0xE5 ; 229 ac8: 7f 4f sbci r23, 0xFF ; 255 aca: bb dd rcall .-1162 ; 0x642 reset(): C:\Users\Martin\Documents\Arduino\libraries\autowp-mcp2515/mcp2515.cpp:75 return result; } } MASK masks[] = {MASK0, MASK1}; for (int i=0; i<2; i++) { acc: c0 16 cp r12, r16 ace: d1 06 cpc r13, r17 ad0: a1 f6 brne .-88 ; 0xa7a ad2: 76 cf rjmp .-276 ; 0x9c0 SendDebugPkg(): C:\Users\Martin\Documents\Arduino\sketch_jun30b/sketch_jun30b.ino:107 } void SendDebugPkg() { _frame.can_id = 0x001; ad4: 40 92 00 3c sts 0x3C00, r4 ; 0x803c00 <__DATA_REGION_ORIGIN__> ad8: 50 92 01 3c sts 0x3C01, r5 ; 0x803c01 <__DATA_REGION_ORIGIN__+0x1> adc: 60 92 02 3c sts 0x3C02, r6 ; 0x803c02 <__DATA_REGION_ORIGIN__+0x2> ae0: 70 92 03 3c sts 0x3C03, r7 ; 0x803c03 <__DATA_REGION_ORIGIN__+0x3> C:\Users\Martin\Documents\Arduino\sketch_jun30b/sketch_jun30b.ino:108 _frame.can_dlc = 4; ae4: 44 e0 ldi r20, 0x04 ; 4 ae6: 40 93 04 3c sts 0x3C04, r20 ; 0x803c04 <__DATA_REGION_ORIGIN__+0x4> C:\Users\Martin\Documents\Arduino\sketch_jun30b/sketch_jun30b.ino:109 _frame.data[0] = 0x47; aea: 87 e4 ldi r24, 0x47 ; 71 aec: 80 93 08 3c sts 0x3C08, r24 ; 0x803c08 <__DATA_REGION_ORIGIN__+0x8> C:\Users\Martin\Documents\Arduino\sketch_jun30b/sketch_jun30b.ino:110 _frame.data[1] = 0x11; af0: 91 e1 ldi r25, 0x11 ; 17 af2: 90 93 09 3c sts 0x3C09, r25 ; 0x803c09 <__DATA_REGION_ORIGIN__+0x9> C:\Users\Martin\Documents\Arduino\sketch_jun30b/sketch_jun30b.ino:111 _frame.data[2] = 0x08; af6: a8 e0 ldi r26, 0x08 ; 8 af8: a0 93 0a 3c sts 0x3C0A, r26 ; 0x803c0a <__DATA_REGION_ORIGIN__+0xa> C:\Users\Martin\Documents\Arduino\sketch_jun30b/sketch_jun30b.ino:112 _frame.data[3] = 0x15; afc: b5 e1 ldi r27, 0x15 ; 21 afe: b0 93 0b 3c sts 0x3C0B, r27 ; 0x803c0b <__DATA_REGION_ORIGIN__+0xb> sendMessage(): C:\Users\Martin\Documents\Arduino\libraries\autowp-mcp2515/mcp2515.cpp:616 { if (frame->can_dlc > CAN_MAX_DLEN) { return ERROR_FAILTX; } TXBn txBuffers[N_TXBUFFERS] = {TXB0, TXB1, TXB2}; b02: 86 e0 ldi r24, 0x06 ; 6 b04: e2 e0 ldi r30, 0x02 ; 2 b06: fd e4 ldi r31, 0x4D ; 77 b08: de 01 movw r26, r28 b0a: 1f 96 adiw r26, 0x0f ; 15 b0c: 01 90 ld r0, Z+ b0e: 0d 92 st X+, r0 b10: 8a 95 dec r24 b12: e1 f7 brne .-8 ; 0xb0c b14: 0a 2d mov r16, r10 b16: 19 a5 ldd r17, Y+41 ; 0x29 C:\Users\Martin\Documents\Arduino\libraries\autowp-mcp2515/mcp2515.cpp:619 for (int i=0; iCTRL); b20: 14 01 movw r2, r8 b22: 22 0c add r2, r2 b24: 33 1c adc r3, r3 b26: f1 01 movw r30, r2 b28: e8 0d add r30, r8 b2a: f9 1d adc r31, r9 b2c: e4 55 subi r30, 0x54 ; 84 b2e: f2 4b sbci r31, 0xB2 ; 178 b30: b0 80 ld r11, Z b32: 8b 2d mov r24, r11 b34: 78 dd rcall .-1296 ; 0x626 C:\Users\Martin\Documents\Arduino\libraries\autowp-mcp2515/mcp2515.cpp:621 if ( (ctrlval & TXB_TXREQ) == 0 ) { b36: 83 fd sbrc r24, 3 b38: 87 c0 rjmp .+270 ; 0xc48 C:\Users\Martin\Documents\Arduino\libraries\autowp-mcp2515/mcp2515.cpp:581 return ERROR_OK; } MCP2515::ERROR MCP2515::sendMessage(const TXBn txbn, const struct can_frame *frame) { if (frame->can_dlc > CAN_MAX_DLEN) { b3a: 10 91 04 3c lds r17, 0x3C04 ; 0x803c04 <__DATA_REGION_ORIGIN__+0x4> b3e: 19 30 cpi r17, 0x09 ; 9 b40: 08 f0 brcs .+2 ; 0xb44 b42: 63 c0 rjmp .+198 ; 0xc0a C:\Users\Martin\Documents\Arduino\libraries\autowp-mcp2515/mcp2515.cpp:589 const struct TXBn_REGS *txbuf = &TXB[txbn]; uint8_t data[13]; bool ext = (frame->can_id & CAN_EFF_FLAG); b44: 40 91 00 3c lds r20, 0x3C00 ; 0x803c00 <__DATA_REGION_ORIGIN__> b48: 50 91 01 3c lds r21, 0x3C01 ; 0x803c01 <__DATA_REGION_ORIGIN__+0x1> b4c: 60 91 02 3c lds r22, 0x3C02 ; 0x803c02 <__DATA_REGION_ORIGIN__+0x2> b50: 70 91 03 3c lds r23, 0x3C03 ; 0x803c03 <__DATA_REGION_ORIGIN__+0x3> b54: db 01 movw r26, r22 b56: ca 01 movw r24, r20 b58: 88 27 eor r24, r24 b5a: b7 fd sbrc r27, 7 b5c: 83 95 inc r24 b5e: 99 27 eor r25, r25 b60: aa 27 eor r26, r26 b62: bb 27 eor r27, r27 b64: 28 2f mov r18, r24 C:\Users\Martin\Documents\Arduino\libraries\autowp-mcp2515/mcp2515.cpp:590 bool rtr = (frame->can_id & CAN_RTR_FLAG); b66: db 01 movw r26, r22 b68: ca 01 movw r24, r20 b6a: 88 27 eor r24, r24 b6c: 99 27 eor r25, r25 b6e: aa 27 eor r26, r26 b70: b0 74 andi r27, 0x40 ; 64 b72: 8d a3 std Y+37, r24 ; 0x25 b74: 9e a3 std Y+38, r25 ; 0x26 b76: af a3 std Y+39, r26 ; 0x27 b78: b8 a7 std Y+40, r27 ; 0x28 main(): C:\Users\Martin\Documents\Arduino\libraries\autowp-mcp2515/mcp2515.cpp:591 uint32_t id = (frame->can_id & (ext ? CAN_EFF_MASK : CAN_SFF_MASK)); b7a: 8f ef ldi r24, 0xFF ; 255 b7c: 9f ef ldi r25, 0xFF ; 255 b7e: af ef ldi r26, 0xFF ; 255 b80: bf e1 ldi r27, 0x1F ; 31 sendMessage(): b82: 21 11 cpse r18, r1 b84: 04 c0 rjmp .+8 ; 0xb8e main(): b86: 8f ef ldi r24, 0xFF ; 255 b88: 97 e0 ldi r25, 0x07 ; 7 b8a: a0 e0 ldi r26, 0x00 ; 0 b8c: b0 e0 ldi r27, 0x00 ; 0 sendMessage(): b8e: 84 23 and r24, r20 b90: 95 23 and r25, r21 b92: a6 23 and r26, r22 b94: b7 23 and r27, r23 prepareId(): C:\Users\Martin\Documents\Arduino\libraries\autowp-mcp2515/mcp2515.cpp:513 void MCP2515::prepareId(uint8_t *buffer, const bool ext, const uint32_t id) { uint16_t canid = (uint16_t)(id & 0x0FFFF); if (ext) { b96: 22 23 and r18, r18 b98: 09 f4 brne .+2 ; 0xb9c b9a: 46 c0 rjmp .+140 ; 0xc28 C:\Users\Martin\Documents\Arduino\libraries\autowp-mcp2515/mcp2515.cpp:514 buffer[MCP_EID0] = (uint8_t) (canid & 0xFF); b9c: 8c 83 std Y+4, r24 ; 0x04 C:\Users\Martin\Documents\Arduino\libraries\autowp-mcp2515/mcp2515.cpp:515 buffer[MCP_EID8] = (uint8_t) (canid >> 8); b9e: 9b 83 std Y+3, r25 ; 0x03 C:\Users\Martin\Documents\Arduino\libraries\autowp-mcp2515/mcp2515.cpp:516 canid = (uint16_t)(id >> 16); ba0: cd 01 movw r24, r26 ba2: aa 27 eor r26, r26 ba4: bb 27 eor r27, r27 C:\Users\Martin\Documents\Arduino\libraries\autowp-mcp2515/mcp2515.cpp:518 buffer[MCP_SIDL] = (uint8_t) (canid & 0x03); buffer[MCP_SIDL] += (uint8_t) ((canid & 0x1C) << 3); ba6: 28 2f mov r18, r24 ba8: 22 0f add r18, r18 baa: 22 0f add r18, r18 bac: 22 0f add r18, r18 bae: 20 7e andi r18, 0xE0 ; 224 C:\Users\Martin\Documents\Arduino\libraries\autowp-mcp2515/mcp2515.cpp:517 if (ext) { buffer[MCP_EID0] = (uint8_t) (canid & 0xFF); buffer[MCP_EID8] = (uint8_t) (canid >> 8); canid = (uint16_t)(id >> 16); buffer[MCP_SIDL] = (uint8_t) (canid & 0x03); bb0: 38 2f mov r19, r24 bb2: 33 70 andi r19, 0x03 ; 3 C:\Users\Martin\Documents\Arduino\libraries\autowp-mcp2515/mcp2515.cpp:519 buffer[MCP_SIDL] += (uint8_t) ((canid & 0x1C) << 3); buffer[MCP_SIDL] |= TXB_EXIDE_MASK; bb4: 38 60 ori r19, 0x08 ; 8 bb6: 23 2b or r18, r19 bb8: 2a 83 std Y+2, r18 ; 0x02 C:\Users\Martin\Documents\Arduino\libraries\autowp-mcp2515/mcp2515.cpp:520 buffer[MCP_SIDH] = (uint8_t) (canid >> 5); bba: 35 e0 ldi r19, 0x05 ; 5 bbc: 96 95 lsr r25 bbe: 87 95 ror r24 bc0: 3a 95 dec r19 bc2: e1 f7 brne .-8 ; 0xbbc bc4: 89 83 std Y+1, r24 ; 0x01 sendMessage(): C:\Users\Martin\Documents\Arduino\libraries\autowp-mcp2515/mcp2515.cpp:595 bool rtr = (frame->can_id & CAN_RTR_FLAG); uint32_t id = (frame->can_id & (ext ? CAN_EFF_MASK : CAN_SFF_MASK)); prepareId(data, ext, id); data[MCP_DLC] = rtr ? (frame->can_dlc | RTR_MASK) : frame->can_dlc; bc6: 8d a1 ldd r24, Y+37 ; 0x25 bc8: 9e a1 ldd r25, Y+38 ; 0x26 bca: af a1 ldd r26, Y+39 ; 0x27 bcc: b8 a5 ldd r27, Y+40 ; 0x28 bce: 89 2b or r24, r25 bd0: 8a 2b or r24, r26 bd2: 8b 2b or r24, r27 bd4: b9 f1 breq .+110 ; 0xc44 bd6: 81 2f mov r24, r17 bd8: 80 64 ori r24, 0x40 ; 64 bda: 8d 83 std Y+5, r24 ; 0x05 C:\Users\Martin\Documents\Arduino\libraries\autowp-mcp2515/mcp2515.cpp:597 memcpy(&data[MCP_DATA], frame->data, frame->can_dlc); bdc: 41 2f mov r20, r17 bde: 50 e0 ldi r21, 0x00 ; 0 be0: 68 e0 ldi r22, 0x08 ; 8 be2: 7c e3 ldi r23, 0x3C ; 60 be4: ce 01 movw r24, r28 be6: 06 96 adiw r24, 0x06 ; 6 be8: 7b d0 rcall .+246 ; 0xce0 C:\Users\Martin\Documents\Arduino\libraries\autowp-mcp2515/mcp2515.cpp:599 setRegisters(txbuf->SIDH, data, 5 + frame->can_dlc); bea: 45 e0 ldi r20, 0x05 ; 5 bec: 41 0f add r20, r17 bee: f1 01 movw r30, r2 bf0: e8 0d add r30, r8 bf2: f9 1d adc r31, r9 bf4: e4 55 subi r30, 0x54 ; 84 bf6: f2 4b sbci r31, 0xB2 ; 178 bf8: b7 01 movw r22, r14 bfa: 81 81 ldd r24, Z+1 ; 0x01 bfc: 22 dd rcall .-1468 ; 0x642 C:\Users\Martin\Documents\Arduino\libraries\autowp-mcp2515/mcp2515.cpp:601 modifyRegister(txbuf->CTRL, TXB_TXREQ, TXB_TXREQ); bfe: 48 e0 ldi r20, 0x08 ; 8 c00: 68 e0 ldi r22, 0x08 ; 8 c02: 8b 2d mov r24, r11 c04: 3d dd rcall .-1414 ; 0x680 C:\Users\Martin\Documents\Arduino\libraries\autowp-mcp2515/mcp2515.cpp:603 uint8_t ctrl = readRegister(txbuf->CTRL); c06: 8b 2d mov r24, r11 c08: 0e dd rcall .-1508 ; 0x626 setup(): C:\Users\Martin\Documents\Arduino\sketch_jun30b/sketch_jun30b.ino:63 delay(2000); for (int i = 0; i < sizeof(PinStates) - 1; i++) { SendDebugPkg(); delay(1000); c0a: 68 ee ldi r22, 0xE8 ; 232 c0c: 73 e0 ldi r23, 0x03 ; 3 c0e: 80 e0 ldi r24, 0x00 ; 0 c10: 90 e0 ldi r25, 0x00 ; 0 c12: 1c dc rcall .-1992 ; 0x44c C:\Users\Martin\Documents\Arduino\sketch_jun30b/sketch_jun30b.ino:65 pinMode(PinStates[i].pin_id, INPUT_PULLUP); c14: f6 01 movw r30, r12 c16: 80 81 ld r24, Z pinMode(): C:\Users\Martin\AppData\Local\Arduino15\packages\MegaCoreX\hardware\megaavr\1.0.10\cores\coreX-corefiles/wiring_digital.c:31 #include "wiring_private.h" #include "pins_arduino.h" void pinMode(uint8_t pin, uint8_t mode) { uint8_t bit_mask = digitalPinToBitMask(pin); c18: 89 32 cpi r24, 0x29 ; 41 c1a: 10 f4 brcc .+4 ; 0xc20 c1c: 62 e0 ldi r22, 0x02 ; 2 c1e: 72 db rcall .-2332 ; 0x304 c20: f6 e0 ldi r31, 0x06 ; 6 c22: cf 0e add r12, r31 c24: d1 1c adc r13, r1 c26: ec ce rjmp .-552 ; 0xa00 prepareId(): C:\Users\Martin\Documents\Arduino\libraries\autowp-mcp2515/mcp2515.cpp:522 buffer[MCP_SIDL] = (uint8_t) (canid & 0x03); buffer[MCP_SIDL] += (uint8_t) ((canid & 0x1C) << 3); buffer[MCP_SIDL] |= TXB_EXIDE_MASK; buffer[MCP_SIDH] = (uint8_t) (canid >> 5); } else { buffer[MCP_SIDH] = (uint8_t) (canid >> 3); c28: 9c 01 movw r18, r24 c2a: 93 e0 ldi r25, 0x03 ; 3 c2c: 36 95 lsr r19 c2e: 27 95 ror r18 c30: 9a 95 dec r25 c32: e1 f7 brne .-8 ; 0xc2c c34: 29 83 std Y+1, r18 ; 0x01 C:\Users\Martin\Documents\Arduino\libraries\autowp-mcp2515/mcp2515.cpp:523 buffer[MCP_SIDL] = (uint8_t) ((canid & 0x07 ) << 5); c36: 82 95 swap r24 c38: 88 0f add r24, r24 c3a: 80 7e andi r24, 0xE0 ; 224 c3c: 8a 83 std Y+2, r24 ; 0x02 C:\Users\Martin\Documents\Arduino\libraries\autowp-mcp2515/mcp2515.cpp:524 buffer[MCP_EID0] = 0; c3e: 1c 82 std Y+4, r1 ; 0x04 C:\Users\Martin\Documents\Arduino\libraries\autowp-mcp2515/mcp2515.cpp:525 buffer[MCP_EID8] = 0; c40: 1b 82 std Y+3, r1 ; 0x03 c42: c1 cf rjmp .-126 ; 0xbc6 sendMessage(): C:\Users\Martin\Documents\Arduino\libraries\autowp-mcp2515/mcp2515.cpp:595 bool rtr = (frame->can_id & CAN_RTR_FLAG); uint32_t id = (frame->can_id & (ext ? CAN_EFF_MASK : CAN_SFF_MASK)); prepareId(data, ext, id); data[MCP_DLC] = rtr ? (frame->can_dlc | RTR_MASK) : frame->can_dlc; c44: 81 2f mov r24, r17 c46: c9 cf rjmp .-110 ; 0xbda C:\Users\Martin\Documents\Arduino\libraries\autowp-mcp2515/mcp2515.cpp:618 return ERROR_FAILTX; } TXBn txBuffers[N_TXBUFFERS] = {TXB0, TXB1, TXB2}; for (int i=0; i c52: 62 cf rjmp .-316 ; 0xb18 c54: da cf rjmp .-76 ; 0xc0a 00000c56 <__muluhisi3>: __muluhisi3(): /home/jenkins-mingw32/workspace/avr-gcc-staging/label/Ubuntu14.04x64-mingw32/gcc-build/avr/avrxmega3/short-calls/libgcc/../../../../../gcc/libgcc/config/avr/lib1funcs.S:626 c56: 38 d0 rcall .+112 ; 0xcc8 <__umulhisi3> /home/jenkins-mingw32/workspace/avr-gcc-staging/label/Ubuntu14.04x64-mingw32/gcc-build/avr/avrxmega3/short-calls/libgcc/../../../../../gcc/libgcc/config/avr/lib1funcs.S:627 c58: a5 9f mul r26, r21 /home/jenkins-mingw32/workspace/avr-gcc-staging/label/Ubuntu14.04x64-mingw32/gcc-build/avr/avrxmega3/short-calls/libgcc/../../../../../gcc/libgcc/config/avr/lib1funcs.S:628 c5a: 90 0d add r25, r0 /home/jenkins-mingw32/workspace/avr-gcc-staging/label/Ubuntu14.04x64-mingw32/gcc-build/avr/avrxmega3/short-calls/libgcc/../../../../../gcc/libgcc/config/avr/lib1funcs.S:629 c5c: b4 9f mul r27, r20 /home/jenkins-mingw32/workspace/avr-gcc-staging/label/Ubuntu14.04x64-mingw32/gcc-build/avr/avrxmega3/short-calls/libgcc/../../../../../gcc/libgcc/config/avr/lib1funcs.S:630 c5e: 90 0d add r25, r0 /home/jenkins-mingw32/workspace/avr-gcc-staging/label/Ubuntu14.04x64-mingw32/gcc-build/avr/avrxmega3/short-calls/libgcc/../../../../../gcc/libgcc/config/avr/lib1funcs.S:631 c60: a4 9f mul r26, r20 /home/jenkins-mingw32/workspace/avr-gcc-staging/label/Ubuntu14.04x64-mingw32/gcc-build/avr/avrxmega3/short-calls/libgcc/../../../../../gcc/libgcc/config/avr/lib1funcs.S:632 c62: 80 0d add r24, r0 /home/jenkins-mingw32/workspace/avr-gcc-staging/label/Ubuntu14.04x64-mingw32/gcc-build/avr/avrxmega3/short-calls/libgcc/../../../../../gcc/libgcc/config/avr/lib1funcs.S:633 c64: 91 1d adc r25, r1 /home/jenkins-mingw32/workspace/avr-gcc-staging/label/Ubuntu14.04x64-mingw32/gcc-build/avr/avrxmega3/short-calls/libgcc/../../../../../gcc/libgcc/config/avr/lib1funcs.S:634 c66: 11 24 eor r1, r1 /home/jenkins-mingw32/workspace/avr-gcc-staging/label/Ubuntu14.04x64-mingw32/gcc-build/avr/avrxmega3/short-calls/libgcc/../../../../../gcc/libgcc/config/avr/lib1funcs.S:635 c68: 08 95 ret 00000c6a <__ashrdi3>: __ashrdi3(): /home/jenkins-mingw32/workspace/avr-gcc-staging/label/Ubuntu14.04x64-mingw32/gcc-build/avr/avrxmega3/short-calls/libgcc/../../../../../gcc/libgcc/config/avr/lib1funcs.S:3122 c6a: 97 fd sbrc r25, 7 /home/jenkins-mingw32/workspace/avr-gcc-staging/label/Ubuntu14.04x64-mingw32/gcc-build/avr/avrxmega3/short-calls/libgcc/../../../../../gcc/libgcc/config/avr/lib1funcs.S:3123 c6c: 10 94 com r1 00000c6e <__lshrdi3>: __lshrdi3(): /home/jenkins-mingw32/workspace/avr-gcc-staging/label/Ubuntu14.04x64-mingw32/gcc-build/avr/avrxmega3/short-calls/libgcc/../../../../../gcc/libgcc/config/avr/lib1funcs.S:3131 c6e: 00 2e mov r0, r16 /home/jenkins-mingw32/workspace/avr-gcc-staging/label/Ubuntu14.04x64-mingw32/gcc-build/avr/avrxmega3/short-calls/libgcc/../../../../../gcc/libgcc/config/avr/lib1funcs.S:3132 c70: 08 30 cpi r16, 0x08 ; 8 /home/jenkins-mingw32/workspace/avr-gcc-staging/label/Ubuntu14.04x64-mingw32/gcc-build/avr/avrxmega3/short-calls/libgcc/../../../../../gcc/libgcc/config/avr/lib1funcs.S:3133 c72: 98 f0 brcs .+38 ; 0xc9a <__lshrdi3+0x2c> /home/jenkins-mingw32/workspace/avr-gcc-staging/label/Ubuntu14.04x64-mingw32/gcc-build/avr/avrxmega3/short-calls/libgcc/../../../../../gcc/libgcc/config/avr/lib1funcs.S:3134 c74: 08 50 subi r16, 0x08 ; 8 /home/jenkins-mingw32/workspace/avr-gcc-staging/label/Ubuntu14.04x64-mingw32/gcc-build/avr/avrxmega3/short-calls/libgcc/../../../../../gcc/libgcc/config/avr/lib1funcs.S:3135 c76: 23 2f mov r18, r19 /home/jenkins-mingw32/workspace/avr-gcc-staging/label/Ubuntu14.04x64-mingw32/gcc-build/avr/avrxmega3/short-calls/libgcc/../../../../../gcc/libgcc/config/avr/lib1funcs.S:3136 c78: 34 2f mov r19, r20 /home/jenkins-mingw32/workspace/avr-gcc-staging/label/Ubuntu14.04x64-mingw32/gcc-build/avr/avrxmega3/short-calls/libgcc/../../../../../gcc/libgcc/config/avr/lib1funcs.S:3137 c7a: 45 2f mov r20, r21 /home/jenkins-mingw32/workspace/avr-gcc-staging/label/Ubuntu14.04x64-mingw32/gcc-build/avr/avrxmega3/short-calls/libgcc/../../../../../gcc/libgcc/config/avr/lib1funcs.S:3138 c7c: 56 2f mov r21, r22 /home/jenkins-mingw32/workspace/avr-gcc-staging/label/Ubuntu14.04x64-mingw32/gcc-build/avr/avrxmega3/short-calls/libgcc/../../../../../gcc/libgcc/config/avr/lib1funcs.S:3139 c7e: 67 2f mov r22, r23 /home/jenkins-mingw32/workspace/avr-gcc-staging/label/Ubuntu14.04x64-mingw32/gcc-build/avr/avrxmega3/short-calls/libgcc/../../../../../gcc/libgcc/config/avr/lib1funcs.S:3140 c80: 78 2f mov r23, r24 /home/jenkins-mingw32/workspace/avr-gcc-staging/label/Ubuntu14.04x64-mingw32/gcc-build/avr/avrxmega3/short-calls/libgcc/../../../../../gcc/libgcc/config/avr/lib1funcs.S:3141 c82: 89 2f mov r24, r25 /home/jenkins-mingw32/workspace/avr-gcc-staging/label/Ubuntu14.04x64-mingw32/gcc-build/avr/avrxmega3/short-calls/libgcc/../../../../../gcc/libgcc/config/avr/lib1funcs.S:3142 c84: 91 2d mov r25, r1 /home/jenkins-mingw32/workspace/avr-gcc-staging/label/Ubuntu14.04x64-mingw32/gcc-build/avr/avrxmega3/short-calls/libgcc/../../../../../gcc/libgcc/config/avr/lib1funcs.S:3143 c86: f4 cf rjmp .-24 ; 0xc70 <__lshrdi3+0x2> /home/jenkins-mingw32/workspace/avr-gcc-staging/label/Ubuntu14.04x64-mingw32/gcc-build/avr/avrxmega3/short-calls/libgcc/../../../../../gcc/libgcc/config/avr/lib1funcs.S:3144 c88: 15 94 asr r1 /home/jenkins-mingw32/workspace/avr-gcc-staging/label/Ubuntu14.04x64-mingw32/gcc-build/avr/avrxmega3/short-calls/libgcc/../../../../../gcc/libgcc/config/avr/lib1funcs.S:3145 c8a: 97 95 ror r25 /home/jenkins-mingw32/workspace/avr-gcc-staging/label/Ubuntu14.04x64-mingw32/gcc-build/avr/avrxmega3/short-calls/libgcc/../../../../../gcc/libgcc/config/avr/lib1funcs.S:3146 c8c: 87 95 ror r24 /home/jenkins-mingw32/workspace/avr-gcc-staging/label/Ubuntu14.04x64-mingw32/gcc-build/avr/avrxmega3/short-calls/libgcc/../../../../../gcc/libgcc/config/avr/lib1funcs.S:3147 c8e: 77 95 ror r23 /home/jenkins-mingw32/workspace/avr-gcc-staging/label/Ubuntu14.04x64-mingw32/gcc-build/avr/avrxmega3/short-calls/libgcc/../../../../../gcc/libgcc/config/avr/lib1funcs.S:3148 c90: 67 95 ror r22 /home/jenkins-mingw32/workspace/avr-gcc-staging/label/Ubuntu14.04x64-mingw32/gcc-build/avr/avrxmega3/short-calls/libgcc/../../../../../gcc/libgcc/config/avr/lib1funcs.S:3149 c92: 57 95 ror r21 /home/jenkins-mingw32/workspace/avr-gcc-staging/label/Ubuntu14.04x64-mingw32/gcc-build/avr/avrxmega3/short-calls/libgcc/../../../../../gcc/libgcc/config/avr/lib1funcs.S:3150 c94: 47 95 ror r20 /home/jenkins-mingw32/workspace/avr-gcc-staging/label/Ubuntu14.04x64-mingw32/gcc-build/avr/avrxmega3/short-calls/libgcc/../../../../../gcc/libgcc/config/avr/lib1funcs.S:3151 c96: 37 95 ror r19 /home/jenkins-mingw32/workspace/avr-gcc-staging/label/Ubuntu14.04x64-mingw32/gcc-build/avr/avrxmega3/short-calls/libgcc/../../../../../gcc/libgcc/config/avr/lib1funcs.S:3152 c98: 27 95 ror r18 /home/jenkins-mingw32/workspace/avr-gcc-staging/label/Ubuntu14.04x64-mingw32/gcc-build/avr/avrxmega3/short-calls/libgcc/../../../../../gcc/libgcc/config/avr/lib1funcs.S:3153 c9a: 0a 95 dec r16 /home/jenkins-mingw32/workspace/avr-gcc-staging/label/Ubuntu14.04x64-mingw32/gcc-build/avr/avrxmega3/short-calls/libgcc/../../../../../gcc/libgcc/config/avr/lib1funcs.S:3154 c9c: aa f7 brpl .-22 ; 0xc88 <__lshrdi3+0x1a> /home/jenkins-mingw32/workspace/avr-gcc-staging/label/Ubuntu14.04x64-mingw32/gcc-build/avr/avrxmega3/short-calls/libgcc/../../../../../gcc/libgcc/config/avr/lib1funcs.S:3155 c9e: 11 24 eor r1, r1 /home/jenkins-mingw32/workspace/avr-gcc-staging/label/Ubuntu14.04x64-mingw32/gcc-build/avr/avrxmega3/short-calls/libgcc/../../../../../gcc/libgcc/config/avr/lib1funcs.S:3156 ca0: 00 2d mov r16, r0 /home/jenkins-mingw32/workspace/avr-gcc-staging/label/Ubuntu14.04x64-mingw32/gcc-build/avr/avrxmega3/short-calls/libgcc/../../../../../gcc/libgcc/config/avr/lib1funcs.S:3157 ca2: 08 95 ret 00000ca4 <__cmpdi2_s8>: __cmpdi2_s8(): /home/jenkins-mingw32/workspace/avr-gcc-staging/label/Ubuntu14.04x64-mingw32/gcc-build/avr/avrxmega3/short-calls/libgcc/../../../../../gcc/libgcc/config/avr/lib1funcs.S:2102 ca4: 00 24 eor r0, r0 /home/jenkins-mingw32/workspace/avr-gcc-staging/label/Ubuntu14.04x64-mingw32/gcc-build/avr/avrxmega3/short-calls/libgcc/../../../../../gcc/libgcc/config/avr/lib1funcs.S:2103 ca6: a7 fd sbrc r26, 7 /home/jenkins-mingw32/workspace/avr-gcc-staging/label/Ubuntu14.04x64-mingw32/gcc-build/avr/avrxmega3/short-calls/libgcc/../../../../../gcc/libgcc/config/avr/lib1funcs.S:2104 ca8: 00 94 com r0 /home/jenkins-mingw32/workspace/avr-gcc-staging/label/Ubuntu14.04x64-mingw32/gcc-build/avr/avrxmega3/short-calls/libgcc/../../../../../gcc/libgcc/config/avr/lib1funcs.S:2105 caa: 2a 17 cp r18, r26 cac: 30 05 cpc r19, r0 cae: 40 05 cpc r20, r0 cb0: 50 05 cpc r21, r0 /home/jenkins-mingw32/workspace/avr-gcc-staging/label/Ubuntu14.04x64-mingw32/gcc-build/avr/avrxmega3/short-calls/libgcc/../../../../../gcc/libgcc/config/avr/lib1funcs.S:2106 cb2: 60 05 cpc r22, r0 cb4: 70 05 cpc r23, r0 cb6: 80 05 cpc r24, r0 cb8: 90 05 cpc r25, r0 /home/jenkins-mingw32/workspace/avr-gcc-staging/label/Ubuntu14.04x64-mingw32/gcc-build/avr/avrxmega3/short-calls/libgcc/../../../../../gcc/libgcc/config/avr/lib1funcs.S:2107 cba: 08 95 ret 00000cbc <__tablejump2__>: __tablejump2__(): /home/jenkins-mingw32/workspace/avr-gcc-staging/label/Ubuntu14.04x64-mingw32/gcc-build/avr/avrxmega3/short-calls/libgcc/../../../../../gcc/libgcc/config/avr/lib1funcs.S:2296 cbc: ee 0f add r30, r30 /home/jenkins-mingw32/workspace/avr-gcc-staging/label/Ubuntu14.04x64-mingw32/gcc-build/avr/avrxmega3/short-calls/libgcc/../../../../../gcc/libgcc/config/avr/lib1funcs.S:2297 cbe: ff 1f adc r31, r31 /home/jenkins-mingw32/workspace/avr-gcc-staging/label/Ubuntu14.04x64-mingw32/gcc-build/avr/avrxmega3/short-calls/libgcc/../../../../../gcc/libgcc/config/avr/lib1funcs.S:2328 cc0: 05 90 lpm r0, Z+ /home/jenkins-mingw32/workspace/avr-gcc-staging/label/Ubuntu14.04x64-mingw32/gcc-build/avr/avrxmega3/short-calls/libgcc/../../../../../gcc/libgcc/config/avr/lib1funcs.S:2329 cc2: f4 91 lpm r31, Z /home/jenkins-mingw32/workspace/avr-gcc-staging/label/Ubuntu14.04x64-mingw32/gcc-build/avr/avrxmega3/short-calls/libgcc/../../../../../gcc/libgcc/config/avr/lib1funcs.S:2330 cc4: e0 2d mov r30, r0 /home/jenkins-mingw32/workspace/avr-gcc-staging/label/Ubuntu14.04x64-mingw32/gcc-build/avr/avrxmega3/short-calls/libgcc/../../../../../gcc/libgcc/config/avr/lib1funcs.S:2331 cc6: 09 94 ijmp 00000cc8 <__umulhisi3>: __umulhisi3(): /home/jenkins-mingw32/workspace/avr-gcc-staging/label/Ubuntu14.04x64-mingw32/gcc-build/avr/avrxmega3/short-calls/libgcc/../../../../../gcc/libgcc/config/avr/lib1funcs.S:564 cc8: a2 9f mul r26, r18 /home/jenkins-mingw32/workspace/avr-gcc-staging/label/Ubuntu14.04x64-mingw32/gcc-build/avr/avrxmega3/short-calls/libgcc/../../../../../gcc/libgcc/config/avr/lib1funcs.S:565 cca: b0 01 movw r22, r0 /home/jenkins-mingw32/workspace/avr-gcc-staging/label/Ubuntu14.04x64-mingw32/gcc-build/avr/avrxmega3/short-calls/libgcc/../../../../../gcc/libgcc/config/avr/lib1funcs.S:566 ccc: b3 9f mul r27, r19 /home/jenkins-mingw32/workspace/avr-gcc-staging/label/Ubuntu14.04x64-mingw32/gcc-build/avr/avrxmega3/short-calls/libgcc/../../../../../gcc/libgcc/config/avr/lib1funcs.S:567 cce: c0 01 movw r24, r0 /home/jenkins-mingw32/workspace/avr-gcc-staging/label/Ubuntu14.04x64-mingw32/gcc-build/avr/avrxmega3/short-calls/libgcc/../../../../../gcc/libgcc/config/avr/lib1funcs.S:568 cd0: a3 9f mul r26, r19 /home/jenkins-mingw32/workspace/avr-gcc-staging/label/Ubuntu14.04x64-mingw32/gcc-build/avr/avrxmega3/short-calls/libgcc/../../../../../gcc/libgcc/config/avr/lib1funcs.S:578 cd2: 01 d0 rcall .+2 ; 0xcd6 <__umulhisi3+0xe> /home/jenkins-mingw32/workspace/avr-gcc-staging/label/Ubuntu14.04x64-mingw32/gcc-build/avr/avrxmega3/short-calls/libgcc/../../../../../gcc/libgcc/config/avr/lib1funcs.S:580 cd4: b2 9f mul r27, r18 /home/jenkins-mingw32/workspace/avr-gcc-staging/label/Ubuntu14.04x64-mingw32/gcc-build/avr/avrxmega3/short-calls/libgcc/../../../../../gcc/libgcc/config/avr/lib1funcs.S:581 cd6: 70 0d add r23, r0 /home/jenkins-mingw32/workspace/avr-gcc-staging/label/Ubuntu14.04x64-mingw32/gcc-build/avr/avrxmega3/short-calls/libgcc/../../../../../gcc/libgcc/config/avr/lib1funcs.S:582 cd8: 81 1d adc r24, r1 /home/jenkins-mingw32/workspace/avr-gcc-staging/label/Ubuntu14.04x64-mingw32/gcc-build/avr/avrxmega3/short-calls/libgcc/../../../../../gcc/libgcc/config/avr/lib1funcs.S:583 cda: 11 24 eor r1, r1 /home/jenkins-mingw32/workspace/avr-gcc-staging/label/Ubuntu14.04x64-mingw32/gcc-build/avr/avrxmega3/short-calls/libgcc/../../../../../gcc/libgcc/config/avr/lib1funcs.S:584 cdc: 91 1d adc r25, r1 /home/jenkins-mingw32/workspace/avr-gcc-staging/label/Ubuntu14.04x64-mingw32/gcc-build/avr/avrxmega3/short-calls/libgcc/../../../../../gcc/libgcc/config/avr/lib1funcs.S:585 cde: 08 95 ret 00000ce0 : memcpy(): ce0: fb 01 movw r30, r22 ce2: dc 01 movw r26, r24 ce4: 02 c0 rjmp .+4 ; 0xcea ce6: 01 90 ld r0, Z+ ce8: 0d 92 st X+, r0 cea: 41 50 subi r20, 0x01 ; 1 cec: 50 40 sbci r21, 0x00 ; 0 cee: d8 f7 brcc .-10 ; 0xce6 cf0: 08 95 ret 00000cf2 <_exit>: exit(): /home/jenkins-mingw32/workspace/avr-gcc-staging/label/Ubuntu14.04x64-mingw32/gcc-build/avr/avrxmega3/short-calls/libgcc/../../../../../gcc/libgcc/config/avr/lib1funcs.S:2278 cf2: f8 94 cli 00000cf4 <__stop_program>: __stop_program(): /home/jenkins-mingw32/workspace/avr-gcc-staging/label/Ubuntu14.04x64-mingw32/gcc-build/avr/avrxmega3/short-calls/libgcc/../../../../../gcc/libgcc/config/avr/lib1funcs.S:2280 cf4: ff cf rjmp .-2 ; 0xcf4 <__stop_program>