adding software

This commit is contained in:
Meydin87
2022-09-01 12:19:04 +02:00
parent edf3a713f9
commit f9ce4589b9
16 changed files with 4247 additions and 1 deletions

Binary file not shown.

Binary file not shown.

Binary file not shown.

View File

@@ -62,7 +62,7 @@
35, 35,
36 36
], ],
"visible_layers": "fff1820_7fffffff", "visible_layers": "fff1020_7fffffff",
"zone_display_mode": 0 "zone_display_mode": 0
}, },
"meta": { "meta": {

View File

@@ -0,0 +1,137 @@
#include <SPI.h>;
#include <mcp2515.h>;
struct can_frame _frame;
MCP2515 mcp2515(PIN_PA3);
typedef struct
{
int pin_id;
bool pin_state;
short pin_wait;
bool pin_send_wait;
bool is_input;
byte meyPinId;
PinState() {}
void Init(int pin_id, byte meyPinId)
{
this->pin_id = pin_id;
this->pin_state = true;
this->pin_wait = 0;
this->is_input = true;
this->meyPinId = meyPinId;
}
} PinState;
int PinCount = 8;
PinState PinPD2[8];
void setup() {
SPI.begin();
PinPD2[0] = PinState();
PinPD2[0].Init(PIN_PD2, (byte) 4);
PinPD2[1] = PinState();
PinPD2[1].Init(PIN_PC7, (byte) 1);
PinPD2[2] = PinState();
PinPD2[2].Init(PIN_PD1, (byte) 3);
PinPD2[3] = PinState();
PinPD2[3].Init(PIN_PD0, (byte) 2);
PinPD2[4] = PinState();
PinPD2[4].Init(PIN_PD6, (byte) 5);
PinPD2[5] = PinState();
PinPD2[5].Init(PIN_PD5, (byte) 6);
PinPD2[6] = PinState();
PinPD2[6].Init(PIN_PD4, (byte) 7);
PinPD2[7] = PinState();
PinPD2[7].Init(PIN_PD3, (byte) 8);
_PROTECTED_WRITE(CLKCTRL.MCLKCTRLA, CLKCTRL.MCLKCTRLA | 1 << 7);
mcp2515.reset();
mcp2515.setBitrate(CAN_500KBPS, MCP_8MHZ); //Sets CAN at speed 500KBPS and Clock 8MHz
mcp2515.setNormalMode();
for (int i = 0; i <= PinCount - 1; i++)
{
pinMode(PinPD2[i].pin_id, INPUT_PULLUP);
}
}
void loop()
{
for (int i = 0; i <= PinCount - 1; i++)
{
if (CheckPinStatus(&PinPD2[i]))
SendCanPackage(&PinPD2[i]);
}
}
void SendCanPackage(PinState *state)
{
_frame.can_id = 0x001;
_frame.can_dlc = 4;
_frame.data[0] = state->meyPinId;
_frame.data[1] = state->pin_state;
_frame.data[2] = 0x00;
_frame.data[3] = 0x00;
mcp2515.sendMessage(&_frame);
}
bool ReadPin(PinState *state)
{
if (state->pin_id == PIN_PD2)
return digitalReadFast(PIN_PD2);
else if (state->pin_id == PIN_PC7)
return digitalReadFast(PIN_PC7);
else if (state->pin_id == PIN_PD1)
return digitalReadFast(PIN_PD1);
else if (state->pin_id == PIN_PD0)
return digitalReadFast(PIN_PD0);
else if (state->pin_id == PIN_PD6)
return digitalReadFast(PIN_PD6);
else if (state->pin_id == PIN_PD5)
return digitalReadFast(PIN_PD5);
else if (state->pin_id == PIN_PD4)
return digitalReadFast(PIN_PD4);
else if (state->pin_id == PIN_PD3)
return digitalReadFast(PIN_PD3);
else
return digitalRead(state->pin_id);
}
bool CheckPinStatus(PinState *state)
{
if (!state->is_input)
return false;
bool newValue = ReadPin(state);
if (newValue != state->pin_state)
{
delay(10);
newValue = ReadPin(state);
if (newValue != state->pin_state)
{
state->pin_state = newValue;
state->pin_wait = 2048; // block this pin for 16 loops (debouncer)
state->pin_send_wait = true;
return true;
}
}
return false;
}

View File

@@ -0,0 +1,33 @@
:100000004FC000005DC000005BC0000059C0000090
:1000100057C0000055C0000053C0000051C0000090
:100020004FC000004DC000004BC0000049C00000A0
:1000300047C0000045C0000043C0000041C00000B0
:100040003FC000003DC000003BC0000039C00000C0
:1000500037C0000035C0000033C0000031C00000D0
:100060002FC000002EC000002BC0000029C00000DF
:1000700027C0000025C0000023C0000021C00000F0
:100080001FC000001DC000001BC0000019C0000000
:1000900017C0000015C0000013C0000011C0000010
:1000A00011241FBECFEFCDBFDFE3DEBF2CE3A0E006
:1000B000BCE301C01D92A430B207E1F72AD09BC077
:1000C0009FCF1F920F920FB60F9211248F939F9381
:1000D000AF93BF938091003C9091013CA091023C72
:1000E000B091033C0196A11DB11D8093003C9093FB
:1000F000013CA093023CB093033C81E08093A60AAC
:10010000BF91AF919F918F910F900FBE0F901F9055
:10011000189588ED90E084BF90936100809102066D
:1001200086608093020680910006816080930006BD
:10013000809102068F7C8065809302061092E20512
:1001400082E08093E40581E08093030A8EEF809340
:10015000270A8093260A80E880932D0A80932B0A31
:100160008093290A80932C0A80932A0A8093280A74
:100170008BE08093000A87E08093E505E0E8FAE0F1
:1001800037E02EEF90E885E03183248795878083E0
:100190007096E03C4AE0F407B9F71092A10A8FE7A5
:1001A0009EE38093AC0A9093AD0A8091A50A81608A
:1001B0008093A50A1092A00A8091A00A8160809382
:1001C000A00A789482E08093010412E0C0E0D0E0BD
:1001D0008091000481FF06C0109305042097C1F3AD
:1001E0000FDFF6CF9FB7F894809111048860809359
:0A01F00011049FBFF3CFF894FFCF76
:00000001FF

View File

@@ -0,0 +1,590 @@
C:\Users\Martin\AppData\Local\Temp\arduino_build_659813/sketch_jun30b.ino.elf: file format elf32-avr
Disassembly of section .text:
00000000 <__vectors>:
__vectors():
../../../../../crt1/gcrt1.S:61
0: 4f c0 rjmp .+158 ; 0xa0 <__ctors_end>
2: 00 00 nop
../../../../../crt1/gcrt1.S:67
4: 5d c0 rjmp .+186 ; 0xc0 <__bad_interrupt>
6: 00 00 nop
../../../../../crt1/gcrt1.S:68
8: 5b c0 rjmp .+182 ; 0xc0 <__bad_interrupt>
a: 00 00 nop
../../../../../crt1/gcrt1.S:69
c: 59 c0 rjmp .+178 ; 0xc0 <__bad_interrupt>
e: 00 00 nop
../../../../../crt1/gcrt1.S:70
10: 57 c0 rjmp .+174 ; 0xc0 <__bad_interrupt>
12: 00 00 nop
../../../../../crt1/gcrt1.S:71
14: 55 c0 rjmp .+170 ; 0xc0 <__bad_interrupt>
16: 00 00 nop
../../../../../crt1/gcrt1.S:72
18: 53 c0 rjmp .+166 ; 0xc0 <__bad_interrupt>
1a: 00 00 nop
../../../../../crt1/gcrt1.S:73
1c: 51 c0 rjmp .+162 ; 0xc0 <__bad_interrupt>
1e: 00 00 nop
../../../../../crt1/gcrt1.S:74
20: 4f c0 rjmp .+158 ; 0xc0 <__bad_interrupt>
22: 00 00 nop
../../../../../crt1/gcrt1.S:75
24: 4d c0 rjmp .+154 ; 0xc0 <__bad_interrupt>
26: 00 00 nop
../../../../../crt1/gcrt1.S:76
28: 4b c0 rjmp .+150 ; 0xc0 <__bad_interrupt>
2a: 00 00 nop
../../../../../crt1/gcrt1.S:77
2c: 49 c0 rjmp .+146 ; 0xc0 <__bad_interrupt>
2e: 00 00 nop
../../../../../crt1/gcrt1.S:78
30: 47 c0 rjmp .+142 ; 0xc0 <__bad_interrupt>
32: 00 00 nop
../../../../../crt1/gcrt1.S:79
34: 45 c0 rjmp .+138 ; 0xc0 <__bad_interrupt>
36: 00 00 nop
../../../../../crt1/gcrt1.S:80
38: 43 c0 rjmp .+134 ; 0xc0 <__bad_interrupt>
3a: 00 00 nop
../../../../../crt1/gcrt1.S:81
3c: 41 c0 rjmp .+130 ; 0xc0 <__bad_interrupt>
3e: 00 00 nop
../../../../../crt1/gcrt1.S:82
40: 3f c0 rjmp .+126 ; 0xc0 <__bad_interrupt>
42: 00 00 nop
../../../../../crt1/gcrt1.S:83
44: 3d c0 rjmp .+122 ; 0xc0 <__bad_interrupt>
46: 00 00 nop
../../../../../crt1/gcrt1.S:84
48: 3b c0 rjmp .+118 ; 0xc0 <__bad_interrupt>
4a: 00 00 nop
../../../../../crt1/gcrt1.S:85
4c: 39 c0 rjmp .+114 ; 0xc0 <__bad_interrupt>
4e: 00 00 nop
../../../../../crt1/gcrt1.S:86
50: 37 c0 rjmp .+110 ; 0xc0 <__bad_interrupt>
52: 00 00 nop
../../../../../crt1/gcrt1.S:87
54: 35 c0 rjmp .+106 ; 0xc0 <__bad_interrupt>
56: 00 00 nop
../../../../../crt1/gcrt1.S:88
58: 33 c0 rjmp .+102 ; 0xc0 <__bad_interrupt>
5a: 00 00 nop
../../../../../crt1/gcrt1.S:89
5c: 31 c0 rjmp .+98 ; 0xc0 <__bad_interrupt>
5e: 00 00 nop
../../../../../crt1/gcrt1.S:90
60: 2f c0 rjmp .+94 ; 0xc0 <__bad_interrupt>
62: 00 00 nop
../../../../../crt1/gcrt1.S:91
64: 2e c0 rjmp .+92 ; 0xc2 <__vector_25>
66: 00 00 nop
../../../../../crt1/gcrt1.S:92
68: 2b c0 rjmp .+86 ; 0xc0 <__bad_interrupt>
6a: 00 00 nop
../../../../../crt1/gcrt1.S:93
6c: 29 c0 rjmp .+82 ; 0xc0 <__bad_interrupt>
6e: 00 00 nop
../../../../../crt1/gcrt1.S:94
70: 27 c0 rjmp .+78 ; 0xc0 <__bad_interrupt>
72: 00 00 nop
../../../../../crt1/gcrt1.S:95
74: 25 c0 rjmp .+74 ; 0xc0 <__bad_interrupt>
76: 00 00 nop
../../../../../crt1/gcrt1.S:96
78: 23 c0 rjmp .+70 ; 0xc0 <__bad_interrupt>
7a: 00 00 nop
../../../../../crt1/gcrt1.S:97
7c: 21 c0 rjmp .+66 ; 0xc0 <__bad_interrupt>
7e: 00 00 nop
../../../../../crt1/gcrt1.S:98
80: 1f c0 rjmp .+62 ; 0xc0 <__bad_interrupt>
82: 00 00 nop
../../../../../crt1/gcrt1.S:99
84: 1d c0 rjmp .+58 ; 0xc0 <__bad_interrupt>
86: 00 00 nop
../../../../../crt1/gcrt1.S:100
88: 1b c0 rjmp .+54 ; 0xc0 <__bad_interrupt>
8a: 00 00 nop
../../../../../crt1/gcrt1.S:101
8c: 19 c0 rjmp .+50 ; 0xc0 <__bad_interrupt>
8e: 00 00 nop
../../../../../crt1/gcrt1.S:102
90: 17 c0 rjmp .+46 ; 0xc0 <__bad_interrupt>
92: 00 00 nop
../../../../../crt1/gcrt1.S:103
94: 15 c0 rjmp .+42 ; 0xc0 <__bad_interrupt>
96: 00 00 nop
../../../../../crt1/gcrt1.S:104
98: 13 c0 rjmp .+38 ; 0xc0 <__bad_interrupt>
9a: 00 00 nop
../../../../../crt1/gcrt1.S:105
9c: 11 c0 rjmp .+34 ; 0xc0 <__bad_interrupt>
...
000000a0 <__ctors_end>:
__trampolines_start():
../../../../../crt1/gcrt1.S:230
a0: 11 24 eor r1, r1
../../../../../crt1/gcrt1.S:231
a2: 1f be out 0x3f, r1 ; 63
../../../../../crt1/gcrt1.S:232
a4: cf ef ldi r28, 0xFF ; 255
../../../../../crt1/gcrt1.S:234
a6: cd bf out 0x3d, r28 ; 61
../../../../../crt1/gcrt1.S:236
a8: df e3 ldi r29, 0x3F ; 63
../../../../../crt1/gcrt1.S:237
aa: de bf out 0x3e, r29 ; 62
000000ac <__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
ac: 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
ae: 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
b0: 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
b2: 01 c0 rjmp .+2 ; 0xb6 <.do_clear_bss_start>
000000b4 <.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
b4: 1d 92 st X+, r1
000000b6 <.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
b6: a4 30 cpi r26, 0x04 ; 4
/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
b8: 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
ba: e1 f7 brne .-8 ; 0xb4 <.do_clear_bss_loop>
.do_clear_bss_start():
../../../../../crt1/gcrt1.S:314
bc: 2a d0 rcall .+84 ; 0x112 <main>
../../../../../crt1/gcrt1.S:315
be: 9b c0 rjmp .+310 ; 0x1f6 <_exit>
000000c0 <__bad_interrupt>:
__vector_38():
../../../../../crt1/gcrt1.S:209
c0: 9f cf rjmp .-194 ; 0x0 <__vectors>
000000c2 <__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
{
c2: 1f 92 push r1
c4: 0f 92 push r0
c6: 0f b6 in r0, 0x3f ; 63
c8: 0f 92 push r0
ca: 11 24 eor r1, r1
cc: 8f 93 push r24
ce: 9f 93 push r25
d0: af 93 push r26
d2: 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++;
d4: 80 91 00 3c lds r24, 0x3C00 ; 0x803c00 <__DATA_REGION_ORIGIN__>
d8: 90 91 01 3c lds r25, 0x3C01 ; 0x803c01 <__DATA_REGION_ORIGIN__+0x1>
dc: a0 91 02 3c lds r26, 0x3C02 ; 0x803c02 <__DATA_REGION_ORIGIN__+0x2>
e0: b0 91 03 3c lds r27, 0x3C03 ; 0x803c03 <__DATA_REGION_ORIGIN__+0x3>
e4: 01 96 adiw r24, 0x01 ; 1
e6: a1 1d adc r26, r1
e8: b1 1d adc r27, r1
ea: 80 93 00 3c sts 0x3C00, r24 ; 0x803c00 <__DATA_REGION_ORIGIN__>
ee: 90 93 01 3c sts 0x3C01, r25 ; 0x803c01 <__DATA_REGION_ORIGIN__+0x1>
f2: a0 93 02 3c sts 0x3C02, r26 ; 0x803c02 <__DATA_REGION_ORIGIN__+0x2>
f6: b0 93 03 3c sts 0x3C03, r27 ; 0x803c03 <__DATA_REGION_ORIGIN__+0x3>
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;
fa: 81 e0 ldi r24, 0x01 ; 1
fc: 80 93 a6 0a sts 0x0AA6, r24 ; 0x800aa6 <__RODATA_PM_OFFSET__+0x7fcaa6>
C:\Users\Martin\AppData\Local\Arduino15\packages\MegaCoreX\hardware\megaavr\1.0.10\cores\coreX-corefiles/wiring.c:79
}
100: bf 91 pop r27
102: af 91 pop r26
104: 9f 91 pop r25
106: 8f 91 pop r24
108: 0f 90 pop r0
10a: 0f be out 0x3f, r0 ; 63
10c: 0f 90 pop r0
10e: 1f 90 pop r1
110: 18 95 reti
00000112 <main>:
main():
C:\Users\Martin\AppData\Local\Arduino15\packages\MegaCoreX\hardware\megaavr\1.0.10\cores\coreX-corefiles/wiring.c:355
#if (F_CPU == 20000000L)
/* No division on clock */
_PROTECTED_WRITE(CLKCTRL_MCLKCTRLB, 0x00);
#elif (F_CPU == 16000000L)
/* No division on clock */
_PROTECTED_WRITE(CLKCTRL_MCLKCTRLB, 0x00);
112: 88 ed ldi r24, 0xD8 ; 216
114: 90 e0 ldi r25, 0x00 ; 0
116: 84 bf out 0x34, r24 ; 52
118: 90 93 61 00 sts 0x0061, r25 ; 0x800061 <__RODATA_PM_OFFSET__+0x7fc061>
C:\Users\Martin\AppData\Local\Arduino15\packages\MegaCoreX\hardware\megaavr\1.0.10\cores\coreX-corefiles/wiring.c:388
/* ADC clock between 50-200 kHz */
#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;
11c: 80 91 02 06 lds r24, 0x0602 ; 0x800602 <__RODATA_PM_OFFSET__+0x7fc602>
120: 86 60 ori r24, 0x06 ; 6
122: 80 93 02 06 sts 0x0602, r24 ; 0x800602 <__RODATA_PM_OFFSET__+0x7fc602>
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;
126: 80 91 00 06 lds r24, 0x0600 ; 0x800600 <__RODATA_PM_OFFSET__+0x7fc600>
12a: 81 60 ori r24, 0x01 ; 1
12c: 80 93 00 06 sts 0x0600, r24 ; 0x800600 <__RODATA_PM_OFFSET__+0x7fc600>
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...
130: 80 91 02 06 lds r24, 0x0602 ; 0x800602 <__RODATA_PM_OFFSET__+0x7fc602>
134: 8f 7c andi r24, 0xCF ; 207
136: 80 65 ori r24, 0x50 ; 80
138: 80 93 02 06 sts 0x0602, r24 ; 0x800602 <__RODATA_PM_OFFSET__+0x7fc602>
main():
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;
13c: 10 92 e2 05 sts 0x05E2, r1 ; 0x8005e2 <__RODATA_PM_OFFSET__+0x7fc5e2>
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;
140: 82 e0 ldi r24, 0x02 ; 2
142: 80 93 e4 05 sts 0x05E4, r24 ; 0x8005e4 <__RODATA_PM_OFFSET__+0x7fc5e4>
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;
146: 81 e0 ldi r24, 0x01 ; 1
148: 80 93 03 0a sts 0x0A03, r24 ; 0x800a03 <__RODATA_PM_OFFSET__+0x7fca03>
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;
14c: 8e ef ldi r24, 0xFE ; 254
14e: 80 93 27 0a sts 0x0A27, r24 ; 0x800a27 <__RODATA_PM_OFFSET__+0x7fca27>
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 =
152: 80 93 26 0a sts 0x0A26, r24 ; 0x800a26 <__RODATA_PM_OFFSET__+0x7fca26>
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;
156: 80 e8 ldi r24, 0x80 ; 128
158: 80 93 2d 0a sts 0x0A2D, r24 ; 0x800a2d <__RODATA_PM_OFFSET__+0x7fca2d>
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 =
15c: 80 93 2b 0a sts 0x0A2B, r24 ; 0x800a2b <__RODATA_PM_OFFSET__+0x7fca2b>
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 =
160: 80 93 29 0a sts 0x0A29, r24 ; 0x800a29 <__RODATA_PM_OFFSET__+0x7fca29>
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 =
164: 80 93 2c 0a sts 0x0A2C, r24 ; 0x800a2c <__RODATA_PM_OFFSET__+0x7fca2c>
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 =
168: 80 93 2a 0a sts 0x0A2A, r24 ; 0x800a2a <__RODATA_PM_OFFSET__+0x7fca2a>
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 =
16c: 80 93 28 0a sts 0x0A28, r24 ; 0x800a28 <__RODATA_PM_OFFSET__+0x7fca28>
C:\Users\Martin\AppData\Local\Arduino15\packages\MegaCoreX\hardware\megaavr\1.0.10\cores\coreX-corefiles/wiring.c:474
#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);
#else
// Use DIV64 prescaler (giving 250kHz clock on 16MHz), enable TCA timer
TCA0.SPLIT.CTRLA = (TCA_SPLIT_CLKSEL_DIV64_gc) | (TCA_SPLIT_ENABLE_bm);
170: 8b e0 ldi r24, 0x0B ; 11
172: 80 93 00 0a sts 0x0A00, r24 ; 0x800a00 <__RODATA_PM_OFFSET__+0x7fca00>
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
176: 87 e0 ldi r24, 0x07 ; 7
178: 80 93 e5 05 sts 0x05E5, r24 ; 0x8005e5 <__RODATA_PM_OFFSET__+0x7fc5e5>
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;
17c: e0 e8 ldi r30, 0x80 ; 128
17e: 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);
180: 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;
182: 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;
184: 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)
186: 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);
188: 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;
18a: 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;
18c: 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)
18e: 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++;
190: 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);
192: e0 3c cpi r30, 0xC0 ; 192
194: 4a e0 ldi r20, 0x0A ; 10
196: f4 07 cpc r31, r20
198: b9 f7 brne .-18 ; 0x188 <main+0x76>
main():
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;
19a: 10 92 a1 0a sts 0x0AA1, r1 ; 0x800aa1 <__RODATA_PM_OFFSET__+0x7fcaa1>
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;
19e: 8f e7 ldi r24, 0x7F ; 127
1a0: 9e e3 ldi r25, 0x3E ; 62
1a2: 80 93 ac 0a sts 0x0AAC, r24 ; 0x800aac <__RODATA_PM_OFFSET__+0x7fcaac>
1a6: 90 93 ad 0a sts 0x0AAD, r25 ; 0x800aad <__RODATA_PM_OFFSET__+0x7fcaad>
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;
1aa: 80 91 a5 0a lds r24, 0x0AA5 ; 0x800aa5 <__RODATA_PM_OFFSET__+0x7fcaa5>
1ae: 81 60 ori r24, 0x01 ; 1
1b0: 80 93 a5 0a sts 0x0AA5, r24 ; 0x800aa5 <__RODATA_PM_OFFSET__+0x7fcaa5>
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 */
1b4: 10 92 a0 0a sts 0x0AA0, r1 ; 0x800aa0 <__RODATA_PM_OFFSET__+0x7fcaa0>
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 */
1b8: 80 91 a0 0a lds r24, 0x0AA0 ; 0x800aa0 <__RODATA_PM_OFFSET__+0x7fcaa0>
1bc: 81 60 ori r24, 0x01 ; 1
1be: 80 93 a0 0a sts 0x0AA0, r24 ; 0x800aa0 <__RODATA_PM_OFFSET__+0x7fcaa0>
C:\Users\Martin\AppData\Local\Arduino15\packages\MegaCoreX\hardware\megaavr\1.0.10\cores\coreX-corefiles/wiring.c:438
/*************************** ENABLE GLOBAL INTERRUPTS *************************/
sei();
1c2: 78 94 sei
pinMode():
C:\Users\Martin\AppData\Local\Arduino15\packages\MegaCoreX\hardware\megaavr\1.0.10\cores\coreX-corefiles/wiring_digital.c:43
return;
if (mode == OUTPUT)
{
/* Configure direction as output */
port->DIRSET = bit_mask;
1c4: 82 e0 ldi r24, 0x02 ; 2
1c6: 80 93 01 04 sts 0x0401, r24 ; 0x800401 <__RODATA_PM_OFFSET__+0x7fc401>
digitalWrite():
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;
1ca: 12 e0 ldi r17, 0x02 ; 2
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();
1cc: c0 e0 ldi r28, 0x00 ; 0
1ce: d0 e0 ldi r29, 0x00 ; 0
digitalWrite():
C:\Users\Martin\AppData\Local\Arduino15\packages\MegaCoreX\hardware\megaavr\1.0.10\cores\coreX-corefiles/wiring_digital.c:153
/* Get port */
PORT_t *port = digitalPinToPortStruct(pin);
/* Output direction */
if (port->DIR & bit_mask)
1d0: 80 91 00 04 lds r24, 0x0400 ; 0x800400 <__RODATA_PM_OFFSET__+0x7fc400>
1d4: 81 ff sbrs r24, 1
1d6: 06 c0 rjmp .+12 ; 0x1e4 <main+0xd2>
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;
1d8: 10 93 05 04 sts 0x0405, r17 ; 0x800405 <__RODATA_PM_OFFSET__+0x7fc405>
main():
C:\Users\Martin\AppData\Local\Arduino15\packages\MegaCoreX\hardware\megaavr\1.0.10\cores\coreX-corefiles/main.cpp:43
1dc: 20 97 sbiw r28, 0x00 ; 0
1de: c1 f3 breq .-16 ; 0x1d0 <main+0xbe>
1e0: 0f df rcall .-482 ; 0x0 <__vectors>
1e2: f6 cf rjmp .-20 ; 0x1d0 <main+0xbe>
digitalWrite():
C:\Users\Martin\AppData\Local\Arduino15\packages\MegaCoreX\hardware\megaavr\1.0.10\cores\coreX-corefiles/wiring_digital.c:186
/* Calculate where pin control register is */
volatile uint8_t *pin_ctrl_reg = getPINnCTRLregister(port, bit_pos);
/* Save system status and disable interrupts */
uint8_t status = SREG;
1e4: 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();
1e6: f8 94 cli
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;
1e8: 80 91 11 04 lds r24, 0x0411 ; 0x800411 <__RODATA_PM_OFFSET__+0x7fc411>
1ec: 88 60 ori r24, 0x08 ; 8
1ee: 80 93 11 04 sts 0x0411, r24 ; 0x800411 <__RODATA_PM_OFFSET__+0x7fc411>
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;
1f2: 9f bf out 0x3f, r25 ; 63
1f4: f3 cf rjmp .-26 ; 0x1dc <main+0xca>
000001f6 <_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
1f6: f8 94 cli
000001f8 <__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
1f8: ff cf rjmp .-2 ; 0x1f8 <__stop_program>

View File

@@ -0,0 +1,221 @@
:1000000050C0000068C0000066C0000064C000006E
:1000100062C0000060C000005EC000005CC0000064
:100020005AC0000058C0000056C0000054C0000074
:1000300052C0000050C000004EC000004CC0000084
:100040004AC0000048C0000046C0000044C0000094
:1000500042C0000040C000003EC000003CC00000A4
:100060003AC0000069C3000036C0000034C0000080
:1000700032C0000030C000002EC000002CC00000C4
:100080002AC0000028C0000026C0000024C00000D4
:1000900022C0000020C000001EC000001CC00000E4
:1000A000C40311241FBECFEFCDBFDFE3DEBF2CE3BF
:1000B000A0E0BCE301C01D92A838B207E1F710E050
:1000C000C1E5D0E003C02197FE01F8D5C035D107C6
:1000D000D1F7B9D30EC694CF00008093C4088091A5
:1000E000C30887FFFCCF8091C4080895282F30E013
:1000F000F901ED57F24B40814F3F09F450C089326E
:1001000058F4F901E85FF24BE081EE2329F0E13089
:1001100099F010F0E63020F1F901E65AF24BE08157
:10012000A0E2EA9FF0011124FC5F8081842321F189
:10013000611120C046830895F901EF5CF24B5081B4
:10014000533008F05F5F7091010A81E090E001C0D8
:10015000880F5A95EAF7809587238093010ADCCFB0
:1001600080E1E89FF0011124E05AF54F81818F7EF4
:100170008183D2CF458308952F5C324BD9018C9176
:10018000309771F08F3F61F07096E80FF11D9FB7C7
:10019000F8948081611107C0877F80839FBF089595
:1001A000F0E0E0E0F4CF8860F8CF8F929F92AF92BA
:1001B000BF92CF92DF92EF92FF920F93CF93DF9394
:1001C0008091853C893210F461E090DF80911C3C85
:1001D000882319F081FF0DC07894DF91CF910F91A2
:1001E000FF90EF90DF90CF90BF90AF909F908F9057
:1001F000089580FFF2CF80901E3C90901F3CA0900D
:10020000203CB090213CC12CD12C7601E0E094013F
:10021000A501B601C701A0E045D581F1217030E00C
:1002200040E050E060E070E080E090E03BD5D1F04D
:10023000B0E0A0E0E03370F4AE2FA695A695A695A9
:1002400080E2A89FD0011124A05FBB4F8E2F877042
:10025000A80FB11DCE2FD0E0CA5ED34C88899C91E7
:10026000892B8C939401A501B601C70101E0FFD44D
:1002700049015A016B017C01EF5FC9CF8090223C9C
:100280009090233CA090243CB090253CC12CD12CD4
:100290007601E0E29401A501B601C701A0E002D514
:1002A00009F49BCF217030E040E050E060E070E066
:1002B00080E090E0F7D4D1F0B0E0A0E0E03370F45B
:1002C000AE2FA695A695A69580E2A89FD0011124F1
:1002D000A05FBB4F8E2F8770A80FB11DCE2FD0E02F
:1002E000CA5ED34C88899C91892B8C939401A5017B
:1002F000B601C70101E0BBD449015A016B017C0181
:10030000EF5FC8CFCF93DF9390E0FC01ED57F24B46
:1003100020812F3F61F0FC01E65AF24BE08130E290
:10032000E39FF0011124FC5F613021F42183DF9110
:10033000CF9108958F5C924BEC01A881AF3F69F09B
:10034000CF014096A80FB92FB11D9FB7F894228313
:100350008C9188608C939FBFEACFB0E0A0E0F5CF8E
:1003600080911B3C811117C010921C3C10921D3CC7
:1003700010921E3C10921F3C1092203C1092213C87
:100380001092223C1092233C1092243C1092253C67
:1003900081E080931B3C8091E3058C7F90911A3C17
:1003A000892B8093E305911119C061E084E0AADFF5
:1003B00061E086E0A7DF8091C10884608093C10876
:1003C0008091C00881628093C0089091143C809114
:1003D000153C9093C0088093C1080895913031F482
:1003E00061E08EE08FDF61E080E1E4CF923019F7C9
:1003F00061E08EE187DF61E080E2DCCF8FB7F894C7
:100400002091103C3091113C4091123C5091133C92
:10041000E091AA0AF091AB0A9091A60A90FF08C059
:100420002F5F3F4F4F4F5F4FE091AA0AF091AB0A09
:100430008FBFA8EEB3E00FD423E0F695E7952A9599
:10044000E1F76E0F7F1F811D911D08958F929F927E
:10045000AF92BF92CF92DF92EF92FF924B015C017D
:10046000CDDF6B017C01A8EEB3E0A5019401F3D3CD
:10047000C60ED71EE81EF91EC616D706E806F906F0
:1004800010F4BCDFF9CFBADF6C157D058E059F0532
:10049000D0F3FF90EF90DF90CF90BF90AF909F9000
:1004A0008F9008958F929F92AF92BF92CF92DF92DA
:1004B000EF92FF920F93CF93DF9380911C3C8823A0
:1004C00019F081FF19C0F89481E38093C00884E09B
:1004D0008093C1088091853C893208F098C060E023
:1004E000DF91CF910F91FF90EF90DF90CF90BF9071
:1004F000AF909F908F90FACD80FFE6CF80901E3C0A
:1005000090901F3CA090203CB090213CC12CD12C5D
:100510007601E0E09401A501B601C701A0E0C2D3D5
:1005200089F1217030E040E050E060E070E080E070
:1005300090E0B8D3D9F0B0E0A0E0E03370F4AE2F93
:10054000A695A695A69580E2A89FD0011124A05F4C
:10055000BB4F8E2F8770A80FB11DCE2FD0E08C918E
:10056000CA5ED34C888B8C91887F8C939401A501B3
:10057000B601C70101E07BD349015A016B017C013F
:10058000EF5FC8CF8090223C9090233CA090243C09
:10059000B090253CC12CD12C7601E0E29401A5015C
:1005A000B601C701A0E07ED309F48ECF217030E000
:1005B00040E050E060E070E080E090E073D3D9F07C
:1005C000B0E0A0E0E03370F4AE2FA695A695A69516
:1005D00080E2A89FD0011124A05FBB4F8E2F8770AF
:1005E000A80FB11DCE2FD0E08C91CA5ED34C888B62
:1005F0008C91887F8C939401A501B601C70101E01D
:1006000036D349015A016B017C01EF5FC7CFDF91FF
:10061000CF910F91FF90EF90DF90CF90BF90AF9070
:100620009F908F900895CF93C82F3CDF83E054DDD7
:100630008C2F52DD80E050DDC82FB7DD8C2FCF919D
:100640000895FF920F931F93CF93DF93C82FF62E39
:10065000172F042F27DF82E03FDD8C2F3DDDCF2DCC
:10066000D12F0C0F1D2F111DC017D10719F0899123
:1006700033DDFACFDF91CF911F910F91FF9095CD90
:100680001F93CF93DF93182FD62FC42F0BDF85E056
:1006900023DD812F21DD8D2F1FDD8C2F1DDDDF91CF
:1006A000CF911F9182CDCF92DF92EF92FF92CF93A5
:1006B000C82F482F60EE8FE0E3DF8FB7F894C0902B
:1006C000103CD090113CE090123CF090133C8FBF56
:1006D0008AE0C80ED11CE11CF11C2FB7F894809160
:1006E000103C9091113CA091123CB091133C2FBF53
:1006F0008C159D05AE05BF0578F48EE094DF807EF5
:10070000C813EBCF81E091E0892790E0CF91FF9073
:10071000EF90DF90CF90089580E0F5CFCF93DF93F7
:10072000D82FC62FBFDE82E0D7DC8D2FD5DC8C2FF3
:10073000D3DCDF91CF9139CD1F920F920FB60F927C
:1007400011248F939F93AF93BF938091103C90910E
:10075000113CA091123CB091133C0196A11DB11D1A
:100760008093103C9093113CA093123CB093133CA7
:1007700081E08093A60ABF91AF919F918F910F90D6
:100780000FBE0F901F901895CF93DF93E4E1FCE329
:10079000C4E0C18381E38083E6E1FCE31582148237
:1007A000DFDDD3E0D093853C61E083E0ABDDFDDCB1
:1007B000E5E5FCE385E190E080839183128213827A
:1007C00081E08483858326E130E0268337831086A9
:1007D0001186828792E0938727E130E0248735876E
:1007E00016861786808BD18B28E130E0228B338BE5
:1007F000148A158A868BC78B2CE130E0208F318FCD
:10080000128E138E848F95E0958F2BE130E0268F2A
:10081000378F10A211A282A396E093A32AE130E0C1
:1008200024A335A316A217A280A797E091A729E1D8
:1008300030E022A733A714A615A686A788E087A7CD
:10084000DF91CF910895CF93DF93CDB7DEB7A9970E
:10085000CDBFDEBF91E088ED84BF909361008091B1
:100860000206856080930206809100068160809375
:100870000006809102068F7C8065809302061092AC
:10088000E20582E08093E4059093030A8EEF809363
:10089000270A8093260A80E880932D0A80932B0AEA
:1008A0008093290A80932C0A80932A0A8093280A2D
:1008B00089E08093000A87E08093E505E0E8FAE0AC
:1008C00037E02EEF90E885E0318324879587808399
:1008D0007096E03C4AE0F407B9F71092A10A8FE362
:1008E0009FE18093AC0A9093AD0A8091A50A816044
:1008F0008093A50A1092A00A8091A00A816080933B
:10090000A00A78942DDD80916000806890E028ED49
:1009100024BF80936000C6DD80ECDEDB46DC6AE04D
:1009200070E080E090E092DDCE0101967C018EE0E7
:10093000D7011D928A95E9F74EE0B70180E381DE89
:100940004EE0B70180E47DDE4EE0B70180E579DE60
:1009500060E080E6E3DE60E080E7E0DE63EA8BE211
:10096000DDDE44E067E680E68BDE41E067E680E7B7
:1009700087DE8CE0E6EFFCE4DE011F9601900D922D
:100980008A95E1F74E01BFE08B0E911CD12CC12C52
:10099000A82C99A698E0B92EF401019111914F016C
:1009A00080E881DE892B61F40230110509F47BC0F7
:1009B000A0F501151105E1F10130110509F479C027
:1009C00080E871DE892B49F460E08AE2A7DE60E905
:1009D00089E2A4DE62E888E2A1DE80E064DE60ED08
:1009E00077E080E090E032DDA5E5CA2EACE3DA2EB8
:1009F000412C512C32014394FE017596EBA3FCA3CC
:100A0000FFE6CF16FDE3DF0609F064C000E010E06A
:100A100001151105E9F3F4DAFBCF0430110509F4EF
:100A200046C008F442C00530110551F688E101C006
:100A300080E0F1E0CF16D104F1F51E8E1D8EBC8E44
:100A40001B8E44E0BE01655E7F4FFBDD4FEFC41A95
:100A5000D40A86E0C816D10409F09ECF1F8E18A2D2
:100A600081E090E089A39AA38E01015E1F4F6E0181
:100A700093E2C90ED11C88E0B82ED8018D909D90CC
:100A80008D0180E810DE892B09F09ACF1E8E1D8E15
:100A9000BC8E1B8E8114910499F08A94892809F0E8
:100AA0008FCF84E20EC088E0C4CF80E1C2CF84E162
:100AB000C0CF84E0BECF1B8E1C8E1E8E1D8EC1CF7C
:100AC00080E244E0BE01655E7F4FBBDDC016D1060B
:100AD000A1F676CF4092003C5092013C6092023CDD
:100AE0007092033C44E04093043C87E48093083CCC
:100AF00091E19093093CA8E0A0930A3CB5E1B09342
:100B00000B3C86E0E2E0FDE4DE011F9601900D92D1
:100B10008A95E1F70A2D19A5F801819091908F012E
:100B20001401220C331CF101E80DF91DE455F24BC0
:100B3000B0808B2D78DD83FD87C01091043C193087
:100B400008F063C04091003C5091013C6091023C30
:100B50007091033CDB01CA018827B7FD8395992773
:100B6000AA27BB27282FDB01CA0188279927AA2794
:100B7000B0748DA39EA3AFA3B8A78FEF9FEFAFEF85
:100B8000BFE1211104C08FEF97E0A0E0B0E0842323
:100B90009523A623B723222309F446C08C839B8385
:100BA000CD01AA27BB27282F220F220F220F207E3C
:100BB000382F33703860232B2A8335E0969587953C
:100BC0003A95E1F789838DA19EA1AFA1B8A5892BA4
:100BD0008A2B8B2BB9F1812F80648D83412F50E0BC
:100BE00068E07CE3CE0106967BD045E0410FF10141
:100BF000E80DF91DE455F24BB701818122DD48E093
:100C000068E08B2D3DDD8B2D0EDD68EE73E080E01E
:100C100090E01CDCF6018081893210F462E072DB26
:100C2000F6E0CF0ED11CECCE9C0193E036952795D3
:100C30009A95E1F729838295880F807E8A831C82AA
:100C40001B82C1CF812FC9CFABA1BCA10A171B0743
:100C500009F062CFDACF38D0A59F900DB49F900DE8
:100C6000A49F800D911D1124089597FD1094002ECE
:100C7000083098F00850232F342F452F562F672F18
:100C8000782F892F912DF4CF159497958795779587
:100C9000679557954795379527950A95AAF7112493
:100CA000002D08950024A7FD00942A173005400563
:100CB000500560057005800590050895EE0FFF1F33
:100CC0000590F491E02D0994A29FB001B39FC0015B
:100CD000A39F01D0B29F700D811D1124911D089515
:100CE000FB01DC0102C001900D9241505040D8F749
:060CF0000895F894FFCF07
:100CF60000000100020003000400050000000100DE
:100D060002000000000000000000000000000005D6
:100D160001010101010100000000000000000000C7
:100D260000000000000000000203000001020304AE
:100D36000506070001020304050001020304050677
:100D46000700010203040506070001020300010271
:100D56000304050600000000000000000101010177
:100D66000101020202020202020203030303030359
:100D7600030304040404050505050505050102042D
:100D86000810204080010204081020010204081007
:100D9600204080010204081020408001020408015E
:0F0DA6000204081020403031364041465051566B
:00000001FF

File diff suppressed because it is too large Load Diff

Binary file not shown.

Binary file not shown.

Binary file not shown.