diff --git a/firmware/.generated_files/flags/default/14e85bf2b5c38862ce0be771f34802e5d6a15ad1 b/firmware/.generated_files/flags/default/14e85bf2b5c38862ce0be771f34802e5d6a15ad1 new file mode 100644 index 0000000..b091b6a --- /dev/null +++ b/firmware/.generated_files/flags/default/14e85bf2b5c38862ce0be771f34802e5d6a15ad1 @@ -0,0 +1 @@ + $(MP_EXTRA_CC_PRE) -mmcu=attiny45 ${PACK_COMPILER_OPTIONS} ${PACK_COMMON_OPTIONS} -x c -c -D__$(MP_PROCESSOR_OPTION)__ -funsigned-char -funsigned-bitfields -O1 -ffunction-sections -fdata-sections -fpack-struct -fshort-enums -Wall -DXPRJ_default=$(CND_CONF) $(COMPARISON_BUILD) -DF_CPU=8000000UL/home/sergeyyarkov/Documents/Projects/Firmwares/AVR/attiny45v_thermometer/firmware/tm1637.c \ No newline at end of file diff --git a/firmware/.generated_files/flags/default/4301bd1a2a4981da7b459539bb87110266e22c69 b/firmware/.generated_files/flags/default/4301bd1a2a4981da7b459539bb87110266e22c69 new file mode 100644 index 0000000..30083a7 --- /dev/null +++ b/firmware/.generated_files/flags/default/4301bd1a2a4981da7b459539bb87110266e22c69 @@ -0,0 +1 @@ + $(MP_EXTRA_CC_PRE) -mmcu=attiny45 ${PACK_COMPILER_OPTIONS} ${PACK_COMMON_OPTIONS} -x c -c -D__$(MP_PROCESSOR_OPTION)__ -funsigned-char -funsigned-bitfields -O1 -ffunction-sections -fdata-sections -fpack-struct -fshort-enums -Wall -DXPRJ_default=$(CND_CONF) $(COMPARISON_BUILD) -DF_CPU=8000000UL/home/sergeyyarkov/Documents/Projects/Firmwares/AVR/attiny45v_thermometer/firmware/twi.c \ No newline at end of file diff --git a/firmware/.generated_files/flags/default/8caab7d1f321339335cad158b786d3a8a151da8d b/firmware/.generated_files/flags/default/8caab7d1f321339335cad158b786d3a8a151da8d new file mode 100644 index 0000000..c404641 --- /dev/null +++ b/firmware/.generated_files/flags/default/8caab7d1f321339335cad158b786d3a8a151da8d @@ -0,0 +1 @@ + $(MP_EXTRA_CC_PRE) -mmcu=attiny45 ${PACK_COMPILER_OPTIONS} ${PACK_COMMON_OPTIONS} -g -DDEBUG -gdwarf-2 -x c -c -D__$(MP_PROCESSOR_OPTION)__ -funsigned-char -funsigned-bitfields -O1 -ffunction-sections -fdata-sections -fpack-struct -fshort-enums -Wall -DXPRJ_default=$(CND_CONF) $(COMPARISON_BUILD) -DF_CPU=8000000UL/home/sergeyyarkov/Documents/Projects/Firmwares/AVR/attiny45v_thermometer/firmware/tm1637.c \ No newline at end of file diff --git a/firmware/.generated_files/flags/default/d596a418b2941f91dfcb39d40e0cfd3f525afd03 b/firmware/.generated_files/flags/default/d596a418b2941f91dfcb39d40e0cfd3f525afd03 new file mode 100644 index 0000000..c0167ac --- /dev/null +++ b/firmware/.generated_files/flags/default/d596a418b2941f91dfcb39d40e0cfd3f525afd03 @@ -0,0 +1 @@ + $(MP_EXTRA_CC_PRE) -mmcu=attiny45 ${PACK_COMPILER_OPTIONS} ${PACK_COMMON_OPTIONS} -g -DDEBUG -gdwarf-2 -x c -c -D__$(MP_PROCESSOR_OPTION)__ -funsigned-char -funsigned-bitfields -O1 -ffunction-sections -fdata-sections -fpack-struct -fshort-enums -Wall -DXPRJ_default=$(CND_CONF) $(COMPARISON_BUILD) -DF_CPU=8000000UL/home/sergeyyarkov/Documents/Projects/Firmwares/AVR/attiny45v_thermometer/firmware/twi.c \ No newline at end of file diff --git a/firmware/build/default/production/dstemperature.o b/firmware/build/default/production/dstemperature.o index 740b077..0798dff 100644 Binary files a/firmware/build/default/production/dstemperature.o and b/firmware/build/default/production/dstemperature.o differ diff --git a/firmware/build/default/production/dstemperature.o.d b/firmware/build/default/production/dstemperature.o.d index 44f98c8..28177b2 100644 --- a/firmware/build/default/production/dstemperature.o.d +++ b/firmware/build/default/production/dstemperature.o.d @@ -1,10 +1,10 @@ build/default/production/dstemperature.o.d \ build/default/production/dstemperature.o: dstemperature.c \ dstemperature.h onewire.h \ - /opt/avr8-gnu-toolchain-linux_x86_64/lib/gcc/avr/7.3.0/include/stdint.h \ - /opt/avr8-gnu-toolchain-linux_x86_64/avr/include/stdint.h \ /opt/avr8-gnu-toolchain-linux_x86_64/avr/include/stdio.h \ /opt/avr8-gnu-toolchain-linux_x86_64/avr/include/inttypes.h \ + /opt/avr8-gnu-toolchain-linux_x86_64/lib/gcc/avr/7.3.0/include/stdint.h \ + /opt/avr8-gnu-toolchain-linux_x86_64/avr/include/stdint.h \ /opt/avr8-gnu-toolchain-linux_x86_64/lib/gcc/avr/7.3.0/include/stdarg.h \ /opt/avr8-gnu-toolchain-linux_x86_64/lib/gcc/avr/7.3.0/include/stddef.h \ /opt/avr8-gnu-toolchain-linux_x86_64/avr/include/avr/interrupt.h \ @@ -24,14 +24,14 @@ dstemperature.h: onewire.h: -/opt/avr8-gnu-toolchain-linux_x86_64/lib/gcc/avr/7.3.0/include/stdint.h: - -/opt/avr8-gnu-toolchain-linux_x86_64/avr/include/stdint.h: - /opt/avr8-gnu-toolchain-linux_x86_64/avr/include/stdio.h: /opt/avr8-gnu-toolchain-linux_x86_64/avr/include/inttypes.h: +/opt/avr8-gnu-toolchain-linux_x86_64/lib/gcc/avr/7.3.0/include/stdint.h: + +/opt/avr8-gnu-toolchain-linux_x86_64/avr/include/stdint.h: + /opt/avr8-gnu-toolchain-linux_x86_64/lib/gcc/avr/7.3.0/include/stdarg.h: /opt/avr8-gnu-toolchain-linux_x86_64/lib/gcc/avr/7.3.0/include/stddef.h: diff --git a/firmware/build/default/production/main.o b/firmware/build/default/production/main.o index a377e98..9d2c3aa 100644 Binary files a/firmware/build/default/production/main.o and b/firmware/build/default/production/main.o differ diff --git a/firmware/build/default/production/main.o.d b/firmware/build/default/production/main.o.d index 462cf3f..b03a1a6 100644 --- a/firmware/build/default/production/main.o.d +++ b/firmware/build/default/production/main.o.d @@ -11,14 +11,15 @@ build/default/production/main.o.d build/default/production/main.o: main.c \ /opt/avr8-gnu-toolchain-linux_x86_64/avr/include/avr/fuse.h \ /opt/avr8-gnu-toolchain-linux_x86_64/avr/include/avr/lock.h \ /opt/avr8-gnu-toolchain-linux_x86_64/avr/include/avr/interrupt.h \ - /opt/avr8-gnu-toolchain-linux_x86_64/avr/include/avr/pgmspace.h \ - /opt/avr8-gnu-toolchain-linux_x86_64/lib/gcc/avr/7.3.0/include/stddef.h \ /opt/avr8-gnu-toolchain-linux_x86_64/avr/include/avr/wdt.h \ /opt/avr8-gnu-toolchain-linux_x86_64/avr/include/util/delay.h \ /opt/avr8-gnu-toolchain-linux_x86_64/avr/include/util/delay_basic.h \ /opt/avr8-gnu-toolchain-linux_x86_64/avr/include/math.h onewire.h \ /opt/avr8-gnu-toolchain-linux_x86_64/avr/include/stdio.h \ /opt/avr8-gnu-toolchain-linux_x86_64/lib/gcc/avr/7.3.0/include/stdarg.h \ + /opt/avr8-gnu-toolchain-linux_x86_64/lib/gcc/avr/7.3.0/include/stddef.h \ + twi.h tm1637.h \ + /opt/avr8-gnu-toolchain-linux_x86_64/avr/include/avr/pgmspace.h \ dstemperature.h /opt/avr8-gnu-toolchain-linux_x86_64/avr/include/avr/io.h: @@ -45,10 +46,6 @@ build/default/production/main.o.d build/default/production/main.o: main.c \ /opt/avr8-gnu-toolchain-linux_x86_64/avr/include/avr/interrupt.h: -/opt/avr8-gnu-toolchain-linux_x86_64/avr/include/avr/pgmspace.h: - -/opt/avr8-gnu-toolchain-linux_x86_64/lib/gcc/avr/7.3.0/include/stddef.h: - /opt/avr8-gnu-toolchain-linux_x86_64/avr/include/avr/wdt.h: /opt/avr8-gnu-toolchain-linux_x86_64/avr/include/util/delay.h: @@ -63,4 +60,12 @@ onewire.h: /opt/avr8-gnu-toolchain-linux_x86_64/lib/gcc/avr/7.3.0/include/stdarg.h: +/opt/avr8-gnu-toolchain-linux_x86_64/lib/gcc/avr/7.3.0/include/stddef.h: + +twi.h: + +tm1637.h: + +/opt/avr8-gnu-toolchain-linux_x86_64/avr/include/avr/pgmspace.h: + dstemperature.h: diff --git a/firmware/build/default/production/onewire.o.d b/firmware/build/default/production/onewire.o.d index 429986b..1ae06f8 100644 --- a/firmware/build/default/production/onewire.o.d +++ b/firmware/build/default/production/onewire.o.d @@ -1,9 +1,9 @@ build/default/production/onewire.o.d build/default/production/onewire.o: \ onewire.c onewire.h \ - /opt/avr8-gnu-toolchain-linux_x86_64/lib/gcc/avr/7.3.0/include/stdint.h \ - /opt/avr8-gnu-toolchain-linux_x86_64/avr/include/stdint.h \ /opt/avr8-gnu-toolchain-linux_x86_64/avr/include/stdio.h \ /opt/avr8-gnu-toolchain-linux_x86_64/avr/include/inttypes.h \ + /opt/avr8-gnu-toolchain-linux_x86_64/lib/gcc/avr/7.3.0/include/stdint.h \ + /opt/avr8-gnu-toolchain-linux_x86_64/avr/include/stdint.h \ /opt/avr8-gnu-toolchain-linux_x86_64/lib/gcc/avr/7.3.0/include/stdarg.h \ /opt/avr8-gnu-toolchain-linux_x86_64/lib/gcc/avr/7.3.0/include/stddef.h \ /opt/avr8-gnu-toolchain-linux_x86_64/avr/include/avr/interrupt.h \ @@ -21,14 +21,14 @@ build/default/production/onewire.o.d build/default/production/onewire.o: \ onewire.h: -/opt/avr8-gnu-toolchain-linux_x86_64/lib/gcc/avr/7.3.0/include/stdint.h: - -/opt/avr8-gnu-toolchain-linux_x86_64/avr/include/stdint.h: - /opt/avr8-gnu-toolchain-linux_x86_64/avr/include/stdio.h: /opt/avr8-gnu-toolchain-linux_x86_64/avr/include/inttypes.h: +/opt/avr8-gnu-toolchain-linux_x86_64/lib/gcc/avr/7.3.0/include/stdint.h: + +/opt/avr8-gnu-toolchain-linux_x86_64/avr/include/stdint.h: + /opt/avr8-gnu-toolchain-linux_x86_64/lib/gcc/avr/7.3.0/include/stdarg.h: /opt/avr8-gnu-toolchain-linux_x86_64/lib/gcc/avr/7.3.0/include/stddef.h: diff --git a/firmware/build/default/production/tm1637.o b/firmware/build/default/production/tm1637.o new file mode 100644 index 0000000..115fc94 Binary files /dev/null and b/firmware/build/default/production/tm1637.o differ diff --git a/firmware/build/default/production/tm1637.o.d b/firmware/build/default/production/tm1637.o.d new file mode 100644 index 0000000..c797b1c --- /dev/null +++ b/firmware/build/default/production/tm1637.o.d @@ -0,0 +1,57 @@ +build/default/production/tm1637.o.d build/default/production/tm1637.o: \ + tm1637.c tm1637.h \ + /opt/avr8-gnu-toolchain-linux_x86_64/avr/include/avr/pgmspace.h \ + /opt/avr8-gnu-toolchain-linux_x86_64/avr/include/inttypes.h \ + /opt/avr8-gnu-toolchain-linux_x86_64/lib/gcc/avr/7.3.0/include/stdint.h \ + /opt/avr8-gnu-toolchain-linux_x86_64/avr/include/stdint.h \ + /opt/avr8-gnu-toolchain-linux_x86_64/lib/gcc/avr/7.3.0/include/stddef.h \ + /opt/avr8-gnu-toolchain-linux_x86_64/avr/include/avr/io.h \ + /opt/avr8-gnu-toolchain-linux_x86_64/avr/include/avr/sfr_defs.h \ + /home/sergeyyarkov/.mchp_packs/Microchip/ATtiny_DFP/3.0.151/include/avr/iotn45.h \ + /opt/avr8-gnu-toolchain-linux_x86_64/avr/include/avr/portpins.h \ + /opt/avr8-gnu-toolchain-linux_x86_64/avr/include/avr/common.h \ + /opt/avr8-gnu-toolchain-linux_x86_64/avr/include/avr/version.h \ + /opt/avr8-gnu-toolchain-linux_x86_64/avr/include/avr/fuse.h \ + /opt/avr8-gnu-toolchain-linux_x86_64/avr/include/avr/lock.h twi.h \ + /opt/avr8-gnu-toolchain-linux_x86_64/avr/include/avr/interrupt.h \ + /opt/avr8-gnu-toolchain-linux_x86_64/avr/include/util/delay.h \ + /opt/avr8-gnu-toolchain-linux_x86_64/avr/include/util/delay_basic.h \ + /opt/avr8-gnu-toolchain-linux_x86_64/avr/include/math.h + +tm1637.h: + +/opt/avr8-gnu-toolchain-linux_x86_64/avr/include/avr/pgmspace.h: + +/opt/avr8-gnu-toolchain-linux_x86_64/avr/include/inttypes.h: + +/opt/avr8-gnu-toolchain-linux_x86_64/lib/gcc/avr/7.3.0/include/stdint.h: + +/opt/avr8-gnu-toolchain-linux_x86_64/avr/include/stdint.h: + +/opt/avr8-gnu-toolchain-linux_x86_64/lib/gcc/avr/7.3.0/include/stddef.h: + +/opt/avr8-gnu-toolchain-linux_x86_64/avr/include/avr/io.h: + +/opt/avr8-gnu-toolchain-linux_x86_64/avr/include/avr/sfr_defs.h: + +/home/sergeyyarkov/.mchp_packs/Microchip/ATtiny_DFP/3.0.151/include/avr/iotn45.h: + +/opt/avr8-gnu-toolchain-linux_x86_64/avr/include/avr/portpins.h: + +/opt/avr8-gnu-toolchain-linux_x86_64/avr/include/avr/common.h: + +/opt/avr8-gnu-toolchain-linux_x86_64/avr/include/avr/version.h: + +/opt/avr8-gnu-toolchain-linux_x86_64/avr/include/avr/fuse.h: + +/opt/avr8-gnu-toolchain-linux_x86_64/avr/include/avr/lock.h: + +twi.h: + +/opt/avr8-gnu-toolchain-linux_x86_64/avr/include/avr/interrupt.h: + +/opt/avr8-gnu-toolchain-linux_x86_64/avr/include/util/delay.h: + +/opt/avr8-gnu-toolchain-linux_x86_64/avr/include/util/delay_basic.h: + +/opt/avr8-gnu-toolchain-linux_x86_64/avr/include/math.h: diff --git a/firmware/build/default/production/twi.o b/firmware/build/default/production/twi.o new file mode 100644 index 0000000..62aa19e Binary files /dev/null and b/firmware/build/default/production/twi.o differ diff --git a/firmware/build/default/production/twi.o.d b/firmware/build/default/production/twi.o.d new file mode 100644 index 0000000..a481fb4 --- /dev/null +++ b/firmware/build/default/production/twi.o.d @@ -0,0 +1,48 @@ +build/default/production/twi.o.d build/default/production/twi.o: twi.c \ + twi.h /opt/avr8-gnu-toolchain-linux_x86_64/avr/include/avr/io.h \ + /opt/avr8-gnu-toolchain-linux_x86_64/avr/include/avr/sfr_defs.h \ + /opt/avr8-gnu-toolchain-linux_x86_64/avr/include/inttypes.h \ + /opt/avr8-gnu-toolchain-linux_x86_64/lib/gcc/avr/7.3.0/include/stdint.h \ + /opt/avr8-gnu-toolchain-linux_x86_64/avr/include/stdint.h \ + /home/sergeyyarkov/.mchp_packs/Microchip/ATtiny_DFP/3.0.151/include/avr/iotn45.h \ + /opt/avr8-gnu-toolchain-linux_x86_64/avr/include/avr/portpins.h \ + /opt/avr8-gnu-toolchain-linux_x86_64/avr/include/avr/common.h \ + /opt/avr8-gnu-toolchain-linux_x86_64/avr/include/avr/version.h \ + /opt/avr8-gnu-toolchain-linux_x86_64/avr/include/avr/fuse.h \ + /opt/avr8-gnu-toolchain-linux_x86_64/avr/include/avr/lock.h \ + /opt/avr8-gnu-toolchain-linux_x86_64/avr/include/avr/interrupt.h \ + /opt/avr8-gnu-toolchain-linux_x86_64/avr/include/util/delay.h \ + /opt/avr8-gnu-toolchain-linux_x86_64/avr/include/util/delay_basic.h \ + /opt/avr8-gnu-toolchain-linux_x86_64/avr/include/math.h + +twi.h: + +/opt/avr8-gnu-toolchain-linux_x86_64/avr/include/avr/io.h: + +/opt/avr8-gnu-toolchain-linux_x86_64/avr/include/avr/sfr_defs.h: + +/opt/avr8-gnu-toolchain-linux_x86_64/avr/include/inttypes.h: + +/opt/avr8-gnu-toolchain-linux_x86_64/lib/gcc/avr/7.3.0/include/stdint.h: + +/opt/avr8-gnu-toolchain-linux_x86_64/avr/include/stdint.h: + +/home/sergeyyarkov/.mchp_packs/Microchip/ATtiny_DFP/3.0.151/include/avr/iotn45.h: + +/opt/avr8-gnu-toolchain-linux_x86_64/avr/include/avr/portpins.h: + +/opt/avr8-gnu-toolchain-linux_x86_64/avr/include/avr/common.h: + +/opt/avr8-gnu-toolchain-linux_x86_64/avr/include/avr/version.h: + +/opt/avr8-gnu-toolchain-linux_x86_64/avr/include/avr/fuse.h: + +/opt/avr8-gnu-toolchain-linux_x86_64/avr/include/avr/lock.h: + +/opt/avr8-gnu-toolchain-linux_x86_64/avr/include/avr/interrupt.h: + +/opt/avr8-gnu-toolchain-linux_x86_64/avr/include/util/delay.h: + +/opt/avr8-gnu-toolchain-linux_x86_64/avr/include/util/delay_basic.h: + +/opt/avr8-gnu-toolchain-linux_x86_64/avr/include/math.h: diff --git a/firmware/dist/default/production/firmware.production.elf b/firmware/dist/default/production/firmware.production.elf index babe418..de4ae19 100755 Binary files a/firmware/dist/default/production/firmware.production.elf and b/firmware/dist/default/production/firmware.production.elf differ diff --git a/firmware/dist/default/production/firmware.production.hex b/firmware/dist/default/production/firmware.production.hex index 57557c3..b393004 100644 --- a/firmware/dist/default/production/firmware.production.hex +++ b/firmware/dist/default/production/firmware.production.hex @@ -1,136 +1,137 @@ :1000000013C01AC019C018C017C016C015C014C03C :1000100013C012C011C010C00FC00EC00DC03F06EB :100020005B4F666D7D077F6F11241FBECFE5D1E06A -:10003000DEBFCDBFEAD115C4E3CFF894C09AC29A0F -:100040008DE08A95F1F70000C0988DE08A95F1F770 -:100050000000C29878940895F894C298C0988DE0F2 -:100060008A95F1F70000C29A8DE08A95F1F70000B9 -:10007000C09A78940895F8942DE02A95F1F700003D -:1000800098E00DC0C09886952DE02A95F1F7000004 -:10009000C29A2DE02A95F1F70000915049F0C298DC -:1000A0002DE02A95F1F7000080FFECCFC09AEBCF4E -:1000B000B898C298C09A8DE08A95F1F7000086B38F -:1000C000C29A9DE09A95F1F70000C2982DE02A951A -:1000D000F1F70000B89A7894809581700895CF93D5 -:1000E000C82FABDF8C2FC7DFB7DFCF91089597B351 -:1000F000A1E0B0E0FD0102C0EE0FFF1F8A95E2F71C -:1001000002C0AA0FBB1F6A95E2F7EA2B9E2B97BB92 -:1001100088B3E095E823E8BB842F8068822BDFDF7B -:100120000895CF93DF93C82FD62F80E4D8DF85DFE3 -:100130008D2F806CA0DF8C2F9EDF8EDFDF91CF9123 -:10014000089562E080E4EDDF61E080E4EADF60E0F2 -:1001500080E4E7DF0895BF92CF92DF92EF92FF92A3 -:100160000F931F93CF93DF938C01EC01083E83E044 -:10017000180714F0C7EED3E0112354F00F2EF3E06C -:10018000DF2EF02D0F2EFAE0EF2EF12CF02D17C000 -:10019000D195C195D10960E080E4C3DFEFCFDA9457 -:1001A000CE01B7014BD3B62EC72E825E9F4FFC0106 -:1001B00084916D2DB6DFCB2DDC2DDD2029F01123B0 -:1001C00074F7E1E0DE12EBCFDF91CF911F910F9139 -:1001D000FF90EF90DF90CF90BF900895992384F027 -:1001E00021E08A30910554F021E0EAE0F0E0BF011F -:1001F00025D3CB012F5F6A307105CCF7822F08958C -:10020000919581959109ECCF7F928F929F92AF92B9 -:10021000BF92CF92DF92EF92FF920F931F93CF93F3 -:10022000DF9300D01F92CDB7DEB7F62E942EE22ECC -:1002300099230CF44DC021E0E11001C020E06C01D5 -:10024000883E934034F00F2EF7EECF2EF3E0DF2EF2 -:10025000F02DE11008C0C601C1DFB82E52E08513B1 -:100260004CC010E04BC0E22E3FC00B2D63C0682D88 -:1002700080E457DF81E0800F1E2D96C0E3E0BE12C0 -:10028000A2C0E11081C0A1107FC065C0882DE1101F -:10029000AAC0892DA8C0872D023009F080C074C083 -:1002A000EF2DF0E0E25EFF4F8491612F3ADF0F9077 -:1002B0000F900F90DF91CF911F910F91FF90EF90D2 -:1002C000DF90CF90BF90AF909F908F907F900895D8 -:1002D0006C01883E934034F00F2EF7EECF2EF3E002 -:1002E000DF2EF02DEE24E394D194C194D108C60101 -:1002F00075DFB82E52E011E0851310E02AE030E0FF -:10030000C601B9019BD28B83CB01B90197D28A83F5 -:10031000C60164E670E092D2CB01B9018FD2A82E5B -:10032000898381E0B81609F4A0CF03E00B190330EC -:1003300008F0B6CF82E090E06C01C918D1087E2C9D -:100340006894992497F8812C33C01C151D0409F476 -:1003500095CFA11015C0202F30E0E1E0F0E0EC0FC8 -:10036000FD1FE20FF31F808181110AC042E050E0BF -:100370004C0F5D1F240F351FF901908191110FC0A3 -:10038000F1E0BF1609F487CFE1E0F0E0EC0FFD1FCC -:10039000E00FF11DE081F0E0E25EFF4F8491612FFC -:1003A000C0DE81E0800F1F5F0F5F833008F078CFE1 -:1003B000EE2059F2112309F45ACF1C151D0421F720 -:1003C00083E0B81609F3E1E0F0E0EC0FFD1FE00F69 -:1003D000F11DE081F0E0E25EFF4FE491F2E0892D53 -:1003E000BF1609F453CF8E2BDACF62D1882351F098 -:1003F000813011F081E00895C19A81E090E0ABDE98 -:1004000081E00895C19880E00895CF93DF93CDB740 -:10041000DEB766970FB6F894DEBF0FBECDBFB99AB0 -:10042000C198A89588E199E20FB6F894A89581BD86 -:100430000FBE91BD6CE0CE010196FFD028E042E0F6 -:1004400062E080E054DE7DDE2FEF80E792E0215015 -:1004500080409040E1F700C0000004E610E013C0C7 -:100460008FE19EE40197F1F700C00000CE010196F4 -:1004700039D18B899C89B801CDD12D8941E08989F9 -:100480009A89C2DEA895CE010196AFDF882341F399 -:100490002FE788E391E0215080409040E1F700C0D1 -:1004A0000000A895F0CFF894BB9A8FEB93E00197EA -:1004B000F1F700C00000BB989AEB9A95F1F700C0E5 -:1004C00086B3E3E3F3E03197F1F700C000007894DE -:1004D00083FB882780F991E08927089598E00DC073 -:1004E000BB9A20EA2A95F1F7BB982AE12A95F1F701 -:1004F00000C078948695915069F0F89480FFF0CF11 -:10050000BB9A20E12A95F1F7BB982AEA2A95F1F7E0 -:1005100000C0EFCF089598E080E007C022E92A9557 -:10052000F1F700C07894915071F0F8948695BB9AD9 -:1005300020E12A95F1F7BB9828E12A95F1F7B39BC2 -:10054000EDCF8068EBCF0895AEDF811101C0089533 -:100550008CECC4DF81E0FBCF0F931F93CF93DF932D -:100560008C01A1DF811105C0DF91CF911F910F9107 -:10057000089583E3B3DFE801085F1F4FCCDF899361 -:10058000C017D107D9F781E0EFCFFC01680F791FC1 -:1005900080E02CE80BC08695915029F080FFFBCFBE -:1005A00086958227F9CFE617F70721F091918927E1 -:1005B00098E0F4CF0895EF92FF920F931F93CF939B -:1005C000DF937C01C1DF982F811108C0892FDF9153 -:1005D000CF911F910F91FF90EF9008958EEB7EDFEA -:1005E000E7018701085F1F4F96DF8993C017D10786 -:1005F000D9F768E070E0C701C8DFC82F8CDF91E051 -:10060000C81721F390E0E2CF4EDF811101C00895B9 -:100610009BDF88E463DF81E0FACFCF93DF93EC01C7 -:1006200093DF8EE45BDF888159DF898157DF8A8120 -:1006300055DFEADFDF91CF910895FF920F931F936B -:10064000CF93DF9300D01F92CDB7DEB78C01F62E8B -:10065000B2DFF8018281898383818A83FAE0FF1601 -:10066000B9F08BE0F81689F0E9E0FE16A1F08FE70B -:100670008B83CE010196D1DF0F900F900F90DF9109 -:10068000CF911F910F91FF9008958FE58B83F1CF4C -:100690008FE38B83EECF8FE18B83EBCF04DF811170 -:1006A00001C008958CEC1ADF84E418DF81E0F9CFF3 -:1006B000CF93DF93EC01F7DE811104C081E0DF917D -:1006C000CF910895CE01089647DF8885883211F0D2 -:1006D00082E0F5CFCE016FDF882311F080E0EFCF0D -:1006E00083E0EDCFCF93DF93EC0165DF811103C091 -:1006F000DF91CF910895D2DF8823D1F32C81822F0F -:1007000090E08095909580769927892B09F055C0C7 -:100710002FE73FE482E1215030408040E1F700C004 -:100720000000CE0148DF882309F469C01D8A898151 -:1007300090E04881242F382F33230CF463C0359583 -:100740002795359527953595279535952795398B97 -:10075000288B80959095887F9927892B09F055C023 -:1007600081E08C8B4195488388818F70282F30E001 -:10077000C901880F991F82959295907F9827807F55 -:100780009827821B930B880F991F880F991F820F40 -:10079000931F880F991F880F991F880F991F9C011D -:1007A0009923ACF13595279535952795359527955E -:1007B000359527953B8B2A8B9BCF26FF0AC09FEB55 -:1007C00027E239E0915020403040E1F700C00000BE -:1007D000A8CF25FF0AC08FEF96E924E08150904012 -:1007E0002040E1F700C000009CCF3FE78BE492E09F -:1007F000315080409040E1F700C0000092CF81E08E -:100800008D8B76CF215F3F4F9ACF1C8AADCF215F72 -:100810003F4FC8CFAA1BBB1B51E107C0AA1FBB1F7C -:10082000A617B70710F0A61BB70B881F991F5A957C -:10083000A9F780959095BC01CD01089597FB072EEF -:1008400016F4009406D077FD08D0E4DF07FC05D04D -:100850003EF4909581959F4F0895709561957F4FD7 -:060860000895F894FFCF9B +:10003000DEBFCDBF12D01CC4E3CF69D1882351F0FD +:10004000813011F081E00895C19A81E090E0B5D24D +:1000500081E00895C19880E00895CF93DF93CDB7F4 +:10006000DEB766970FB6F894DEBF0FBECDBFB99A64 +:10007000C198A89588E199E20FB6F894A89581BD3A +:100080000FBE91BD6CE0CE01019606D128E042E0A2 +:1000900062E080E05ED287D22FEF80E792E02150CD +:1000A00080409040E1F700C00000789404E610E042 +:1000B00013C08FE19EE40197F1F700C00000CE016C +:1000C00001963FD18B899C89B801ABD32D8941E042 +:1000D00089899A89B5D2A895CE010196AEDF882389 +:1000E00041F32FE788E391E0215080409040E1F711 +:1000F00000C00000A895F0CFF894BB9A8FEB93E076 +:100100000197F1F700C00000BB989AEB9A95F1F7C0 +:1001100000C086B3E3E3F3E03197F1F700C00000DD +:10012000789483FB882780F991E08927089598E0E7 +:100130000DC0BB9A20EA2A95F1F7BB982AE12A95CF +:10014000F1F700C078948695915069F0F89480FF9B +:10015000F0CFBB9A20E12A95F1F7BB982AEA2A95BD +:10016000F1F700C0EFCF089598E080E007C022E9E2 +:100170002A95F1F700C07894915071F0F894869523 +:10018000BB9A20E12A95F1F7BB9828E12A95F1F76F +:10019000B39BEDCF8068EBCF0895AEDF811101C036 +:1001A00008958CECC4DF81E0FBCF0F931F93CF93B6 +:1001B000DF938C01A1DF811105C0DF91CF911F91E9 +:1001C0000F91089583E3B3DFE801085F1F4FCCDF91 +:1001D0008993C017D107D9F781E0EFCFFC01680FF1 +:1001E000791F80E02CE80BC08695915029F080FFA4 +:1001F000FBCF86958227F9CFE617F70721F091917B +:10020000892798E0F4CF0895EF92FF920F931F9300 +:10021000CF93DF937C01C1DF982F811108C0892F14 +:10022000DF91CF911F910F91FF90EF9008958EEB8A +:100230007EDFE7018701085F1F4F96DF8993C017B4 +:10024000D107D9F768E070E0C701C8DFC82F8CDF9D +:1002500091E0C81721F390E0E2CF4EDF811101C099 +:1002600008959BDF88E463DF8FE19EE40197F1F757 +:1002700000C0000081E0F4CFCF93DF93EC018DDF6D +:100280008EE455DF888153DF898151DF8A814FDF1A +:10029000E4DFDF91CF910895FF920F931F93CF93E7 +:1002A000DF9300D01F92CDB7DEB78C01F62EACDF06 +:1002B000F8018281898383818A83FAE0FF16B9F08D +:1002C0008BE0F81689F0E9E0FE16A1F08FE78B834A +:1002D000CE010196D1DF0F900F900F90DF91CF915B +:1002E0001F910F91FF9008958FE58B83F1CF8FE3DE +:1002F0008B83EECF8FE18B83EBCFFEDE811101C0CC +:1003000008958CEC14DF84E412DF81E0F9CFCF9301 +:10031000DF93EC01F1DE811104C081E0DF91CF9128 +:100320000895CE01089641DF8885883211F082E079 +:10033000F5CFCE0169DF882311F080E0EFCF83E0B5 +:10034000EDCFCF93DF93EC015FDF811103C0DF912D +:10035000CF910895D2DF8823D1F32C81822F90E0B2 +:100360008095909580769927892B09F055C02FE7C5 +:100370003FE482E1215030408040E1F700C00000BE +:10038000CE0142DF882309F469C01D8A898190E08B +:100390004881242F382F33230CF463C035952795DB +:1003A000359527953595279535952795398B288B44 +:1003B00080959095887F9927892B09F055C081E019 +:1003C0008C8B4195488388818F70282F30E0C9013C +:1003D000880F991F82959295907F9827807F982704 +:1003E000821B930B880F991F880F991F820F931FF1 +:1003F000880F991F880F991F880F991F9C019923B7 +:10040000ACF13595279535952795359527953595F3 +:1004100027953B8B2A8B9BCF26FF0AC09FEB27E2B9 +:1004200039E0915020403040E1F700C00000A8CFF3 +:1004300025FF0AC08FEF96E924E0815090402040CC +:10044000E1F700C000009CCF3FE78BE492E0315021 +:1004500080409040E1F700C0000092CF81E08D8B9A +:1004600076CF215F3F4F9ACF1C8AADCF215F3F4FA0 +:10047000C8CFF894C09AC29A8DE08A95F1F700002F +:10048000C0988DE08A95F1F70000C298789408959D +:10049000F894C298C0988DE08A95F1F70000C29A4E +:1004A0008DE08A95F1F70000C09A78940895F89449 +:1004B0002DE02A95F1F7000098E00DC0C0988695D0 +:1004C0002DE02A95F1F70000C29A2DE02A95F1F768 +:1004D0000000915049F0C2982DE02A95F1F70000F4 +:1004E00080FFECCFC09AEBCFB898C298C09A8DE04D +:1004F0008A95F1F7000086B3C29A9DE09A95F1F7CC +:100500000000C2982DE02A95F1F70000B89A78947F +:10051000809581700895992384F021E08A309105B7 +:1005200054F021E0EAE0F0E0BF018FD1CB012F5F72 +:100530006A307105CCF7822F0895919581959109C4 +:10054000ECCFCF93C82F95DF8C2FB1DFA1DFCF91F8 +:10055000089597B3A1E0B0E0FD0102C0EE0FFF1FC8 +:100560008A95E2F702C0AA0FBB1F6A95E2F7EA2B51 +:100570009E2B97BB88B3E095E823E8BB842F806867 +:10058000822BDFDF0895CF93DF93C82FD62F80E42F +:10059000D8DF6FDF8D2F806C8ADF8C2F88DF78DFCC +:1005A000DF91CF91089562E080E4EDDF61E080E4C7 +:1005B000EADF60E080E4E7DF0895BF92CF92DF9248 +:1005C000EF92FF920F931F93CF93DF938C01EC0177 +:1005D000083E83E0180714F0C7EED3E0112354F06F +:1005E0000F2EF3E0DF2EF02D0F2EFAE0EF2EF12C80 +:1005F000F02D17C0D195C195D10960E080E4C3DF2B +:10060000EFCFDA94CE01B70120D1B62EC72E825E8D +:100610009F4FFC0184916D2DB6DFCB2DDC2DDD20AD +:1006200029F0112374F7E1E0DE12EBCFDF91CF91D7 +:100630001F910F91FF90EF90DF90CF90BF900895A2 +:100640007F928F929F92AF92BF92CF92DF92EF9262 +:10065000FF920F931F93CF93DF9300D01F92CDB7DC +:10066000DEB7F62E942EE22E99230CF44DC021E035 +:10067000E11001C020E06C01883E934034F00F2E61 +:10068000F7EECF2EF3E0DF2EF02DE11008C0C6010B +:1006900042DFB82E52E085134CC010E04BC0E22E72 +:1006A0003FC00B2D63C0682D80E46DDF81E0800FBB +:1006B0001E2D96C0E3E0BE12A2C0E11081C0A110C1 +:1006C0007FC065C0882DE110AAC0892DA8C0872DE4 +:1006D000023009F080C074C0EF2DF0E0E25EFF4F01 +:1006E0008491612F50DF0F900F900F90DF91CF9189 +:1006F0001F910F91FF90EF90DF90CF90BF90AF9040 +:100700009F908F907F9008956C01883E934034F0C5 +:100710000F2EF7EECF2EF3E0DF2EF02DEE24E39434 +:10072000D194C194D108C601F6DEB82E52E011E092 +:10073000851310E02AE030E0C601B90186D08B8332 +:10074000CB01B90182D08A83C60164E670E07DD016 +:10075000CB01B9017AD0A82E898381E0B81609F4BB +:10076000A0CF03E00B19033008F0B6CF82E090E091 +:100770006C01C918D1087E2C6894992497F8812CB3 +:1007800033C01C151D0409F495CFA11015C0202FEE +:1007900030E0E1E0F0E0EC0FFD1FE20FF31F80819D +:1007A00081110AC042E050E04C0F5D1F240F351F3D +:1007B000F901908191110FC0F1E0BF1609F487CFC4 +:1007C000E1E0F0E0EC0FFD1FE00FF11DE081F0E053 +:1007D000E25EFF4F8491612FD6DE81E0800F1F5FC4 +:1007E0000F5F833008F078CFEE2059F2112309F41F +:1007F0005ACF1C151D0421F783E0B81609F3E1E078 +:10080000F0E0EC0FFD1FE00FF11DE081F0E0E25E93 +:10081000FF4FE491F2E0892DBF1609F453CF8E2BE0 +:10082000DACFAA1BBB1B51E107C0AA1FBB1FA6172B +:10083000B70710F0A61BB70B881F991F5A95A9F789 +:1008400080959095BC01CD01089597FB072E16F475 +:10085000009406D077FD08D0E4DF07FC05D03EF415 +:10086000909581959F4F0895709561957F4F08955C +:04087000F894FFCF2A :00000001FF diff --git a/firmware/dist/default/production/firmware.production.lss b/firmware/dist/default/production/firmware.production.lss index 0312965..ab053cf 100644 --- a/firmware/dist/default/production/firmware.production.lss +++ b/firmware/dist/default/production/firmware.production.lss @@ -3,21 +3,21 @@ dist/default/production/firmware.production.elf: file format elf32-avr Sections: Idx Name Size VMA LMA File off Algn - 0 .text 00000866 00000000 00000000 00000054 2**1 + 0 .text 00000874 00000000 00000000 00000054 2**1 CONTENTS, ALLOC, LOAD, READONLY, CODE - 1 .data 00000000 00800060 00800060 000008ba 2**0 + 1 .data 00000000 00800060 00800060 000008c8 2**0 CONTENTS, ALLOC, LOAD, DATA - 2 .comment 00000030 00000000 00000000 000008ba 2**0 + 2 .comment 00000030 00000000 00000000 000008c8 2**0 CONTENTS, READONLY - 3 .note.gnu.avr.deviceinfo 0000003c 00000000 00000000 000008ec 2**2 + 3 .note.gnu.avr.deviceinfo 0000003c 00000000 00000000 000008f8 2**2 CONTENTS, READONLY - 4 .debug_info 00000420 00000000 00000000 00000928 2**0 + 4 .debug_info 00000420 00000000 00000000 00000934 2**0 CONTENTS, READONLY, DEBUGGING - 5 .debug_abbrev 000003e8 00000000 00000000 00000d48 2**0 + 5 .debug_abbrev 000003e8 00000000 00000000 00000d54 2**0 CONTENTS, READONLY, DEBUGGING - 6 .debug_line 000000f2 00000000 00000000 00001130 2**0 + 6 .debug_line 000000f2 00000000 00000000 0000113c 2**0 CONTENTS, READONLY, DEBUGGING - 7 .debug_str 00000169 00000000 00000000 00001222 2**0 + 7 .debug_str 00000169 00000000 00000000 0000122e 2**0 CONTENTS, READONLY, DEBUGGING Disassembly of section .text: @@ -53,1122 +53,1129 @@ Disassembly of section .text: 2e: d1 e0 ldi r29, 0x01 ; 1 30: de bf out 0x3e, r29 ; 62 32: cd bf out 0x3d, r28 ; 61 - 34: ea d1 rcall .+980 ; 0x40a
- 36: 15 c4 rjmp .+2090 ; 0x862 <_exit> + 34: 12 d0 rcall .+36 ; 0x5a
+ 36: 1c c4 rjmp .+2104 ; 0x870 <_exit> 00000038 <__bad_interrupt>: 38: e3 cf rjmp .-58 ; 0x0 <__vectors> -0000003a : - 3a: f8 94 cli - 3c: c0 9a sbi 0x18, 0 ; 24 - 3e: c2 9a sbi 0x18, 2 ; 24 - 40: 8d e0 ldi r24, 0x0D ; 13 - 42: 8a 95 dec r24 - 44: f1 f7 brne .-4 ; 0x42 <__SREG__+0x3> - 46: 00 00 nop - 48: c0 98 cbi 0x18, 0 ; 24 - 4a: 8d e0 ldi r24, 0x0D ; 13 - 4c: 8a 95 dec r24 - 4e: f1 f7 brne .-4 ; 0x4c <__SREG__+0xd> - 50: 00 00 nop - 52: c2 98 cbi 0x18, 2 ; 24 - 54: 78 94 sei - 56: 08 95 ret +0000003a : + 3a: 69 d1 rcall .+722 ; 0x30e + 3c: 88 23 and r24, r24 + 3e: 51 f0 breq .+20 ; 0x54 <__SREG__+0x15> + 40: 81 30 cpi r24, 0x01 ; 1 + 42: 11 f0 breq .+4 ; 0x48 <__SREG__+0x9> + 44: 81 e0 ldi r24, 0x01 ; 1 + 46: 08 95 ret + 48: c1 9a sbi 0x18, 1 ; 24 + 4a: 81 e0 ldi r24, 0x01 ; 1 + 4c: 90 e0 ldi r25, 0x00 ; 0 + 4e: b5 d2 rcall .+1386 ; 0x5ba + 50: 81 e0 ldi r24, 0x01 ; 1 + 52: 08 95 ret + 54: c1 98 cbi 0x18, 1 ; 24 + 56: 80 e0 ldi r24, 0x00 ; 0 + 58: 08 95 ret -00000058 : - 58: f8 94 cli - 5a: c2 98 cbi 0x18, 2 ; 24 - 5c: c0 98 cbi 0x18, 0 ; 24 - 5e: 8d e0 ldi r24, 0x0D ; 13 - 60: 8a 95 dec r24 - 62: f1 f7 brne .-4 ; 0x60 - 64: 00 00 nop - 66: c2 9a sbi 0x18, 2 ; 24 - 68: 8d e0 ldi r24, 0x0D ; 13 - 6a: 8a 95 dec r24 - 6c: f1 f7 brne .-4 ; 0x6a - 6e: 00 00 nop - 70: c0 9a sbi 0x18, 0 ; 24 - 72: 78 94 sei - 74: 08 95 ret - -00000076 : - 76: f8 94 cli - 78: 2d e0 ldi r18, 0x0D ; 13 - 7a: 2a 95 dec r18 - 7c: f1 f7 brne .-4 ; 0x7a - 7e: 00 00 nop - 80: 98 e0 ldi r25, 0x08 ; 8 - 82: 0d c0 rjmp .+26 ; 0x9e - 84: c0 98 cbi 0x18, 0 ; 24 - 86: 86 95 lsr r24 - 88: 2d e0 ldi r18, 0x0D ; 13 - 8a: 2a 95 dec r18 - 8c: f1 f7 brne .-4 ; 0x8a - 8e: 00 00 nop - 90: c2 9a sbi 0x18, 2 ; 24 - 92: 2d e0 ldi r18, 0x0D ; 13 - 94: 2a 95 dec r18 - 96: f1 f7 brne .-4 ; 0x94 - 98: 00 00 nop - 9a: 91 50 subi r25, 0x01 ; 1 - 9c: 49 f0 breq .+18 ; 0xb0 - 9e: c2 98 cbi 0x18, 2 ; 24 - a0: 2d e0 ldi r18, 0x0D ; 13 - a2: 2a 95 dec r18 - a4: f1 f7 brne .-4 ; 0xa2 - a6: 00 00 nop - a8: 80 ff sbrs r24, 0 - aa: ec cf rjmp .-40 ; 0x84 - ac: c0 9a sbi 0x18, 0 ; 24 - ae: eb cf rjmp .-42 ; 0x86 - b0: b8 98 cbi 0x17, 0 ; 23 - b2: c2 98 cbi 0x18, 2 ; 24 - b4: c0 9a sbi 0x18, 0 ; 24 - b6: 8d e0 ldi r24, 0x0D ; 13 - b8: 8a 95 dec r24 - ba: f1 f7 brne .-4 ; 0xb8 +0000005a
: + 5a: cf 93 push r28 + 5c: df 93 push r29 + 5e: cd b7 in r28, 0x3d ; 61 + 60: de b7 in r29, 0x3e ; 62 + 62: 66 97 sbiw r28, 0x16 ; 22 + 64: 0f b6 in r0, 0x3f ; 63 + 66: f8 94 cli + 68: de bf out 0x3e, r29 ; 62 + 6a: 0f be out 0x3f, r0 ; 63 + 6c: cd bf out 0x3d, r28 ; 61 + 6e: b9 9a sbi 0x17, 1 ; 23 + 70: c1 98 cbi 0x18, 1 ; 24 + 72: a8 95 wdr + 74: 88 e1 ldi r24, 0x18 ; 24 + 76: 99 e2 ldi r25, 0x29 ; 41 + 78: 0f b6 in r0, 0x3f ; 63 + 7a: f8 94 cli + 7c: a8 95 wdr + 7e: 81 bd out 0x21, r24 ; 33 + 80: 0f be out 0x3f, r0 ; 63 + 82: 91 bd out 0x21, r25 ; 33 + 84: 6c e0 ldi r22, 0x0C ; 12 + 86: ce 01 movw r24, r28 + 88: 01 96 adiw r24, 0x01 ; 1 + 8a: 06 d1 rcall .+524 ; 0x298 + 8c: 28 e0 ldi r18, 0x08 ; 8 + 8e: 42 e0 ldi r20, 0x02 ; 2 + 90: 62 e0 ldi r22, 0x02 ; 2 + 92: 80 e0 ldi r24, 0x00 ; 0 + 94: 5e d2 rcall .+1212 ; 0x552 + 96: 87 d2 rcall .+1294 ; 0x5a6 + 98: 2f ef ldi r18, 0xFF ; 255 + 9a: 80 e7 ldi r24, 0x70 ; 112 + 9c: 92 e0 ldi r25, 0x02 ; 2 + 9e: 21 50 subi r18, 0x01 ; 1 + a0: 80 40 sbci r24, 0x00 ; 0 + a2: 90 40 sbci r25, 0x00 ; 0 + a4: e1 f7 brne .-8 ; 0x9e + a6: 00 c0 rjmp .+0 ; 0xa8 + a8: 00 00 nop + aa: 78 94 sei + ac: 04 e6 ldi r16, 0x64 ; 100 + ae: 10 e0 ldi r17, 0x00 ; 0 + b0: 13 c0 rjmp .+38 ; 0xd8 + b2: 8f e1 ldi r24, 0x1F ; 31 + b4: 9e e4 ldi r25, 0x4E ; 78 + b6: 01 97 sbiw r24, 0x01 ; 1 + b8: f1 f7 brne .-4 ; 0xb6 + ba: 00 c0 rjmp .+0 ; 0xbc bc: 00 00 nop - be: 86 b3 in r24, 0x16 ; 22 - c0: c2 9a sbi 0x18, 2 ; 24 - c2: 9d e0 ldi r25, 0x0D ; 13 - c4: 9a 95 dec r25 - c6: f1 f7 brne .-4 ; 0xc4 - c8: 00 00 nop - ca: c2 98 cbi 0x18, 2 ; 24 - cc: 2d e0 ldi r18, 0x0D ; 13 - ce: 2a 95 dec r18 - d0: f1 f7 brne .-4 ; 0xce - d2: 00 00 nop - d4: b8 9a sbi 0x17, 0 ; 23 - d6: 78 94 sei - d8: 80 95 com r24 - da: 81 70 andi r24, 0x01 ; 1 - dc: 08 95 ret + be: ce 01 movw r24, r28 + c0: 01 96 adiw r24, 0x01 ; 1 + c2: 3f d1 rcall .+638 ; 0x342 + c4: 8b 89 ldd r24, Y+19 ; 0x13 + c6: 9c 89 ldd r25, Y+20 ; 0x14 + c8: b8 01 movw r22, r16 + ca: ab d3 rcall .+1878 ; 0x822 <__udivmodhi4> + cc: 2d 89 ldd r18, Y+21 ; 0x15 + ce: 41 e0 ldi r20, 0x01 ; 1 + d0: 89 89 ldd r24, Y+17 ; 0x11 + d2: 9a 89 ldd r25, Y+18 ; 0x12 + d4: b5 d2 rcall .+1386 ; 0x640 + d6: a8 95 wdr + d8: ce 01 movw r24, r28 + da: 01 96 adiw r24, 0x01 ; 1 + dc: ae df rcall .-164 ; 0x3a + de: 88 23 and r24, r24 + e0: 41 f3 breq .-48 ; 0xb2 + e2: 2f e7 ldi r18, 0x7F ; 127 + e4: 88 e3 ldi r24, 0x38 ; 56 + e6: 91 e0 ldi r25, 0x01 ; 1 + e8: 21 50 subi r18, 0x01 ; 1 + ea: 80 40 sbci r24, 0x00 ; 0 + ec: 90 40 sbci r25, 0x00 ; 0 + ee: e1 f7 brne .-8 ; 0xe8 + f0: 00 c0 rjmp .+0 ; 0xf2 + f2: 00 00 nop + f4: a8 95 wdr + f6: f0 cf rjmp .-32 ; 0xd8 -000000de : - de: cf 93 push r28 - e0: c8 2f mov r28, r24 - e2: ab df rcall .-170 ; 0x3a - e4: 8c 2f mov r24, r28 - e6: c7 df rcall .-114 ; 0x76 - e8: b7 df rcall .-146 ; 0x58 - ea: cf 91 pop r28 - ec: 08 95 ret +000000f8 : + f8: f8 94 cli + fa: bb 9a sbi 0x17, 3 ; 23 + fc: 8f eb ldi r24, 0xBF ; 191 + fe: 93 e0 ldi r25, 0x03 ; 3 + 100: 01 97 sbiw r24, 0x01 ; 1 + 102: f1 f7 brne .-4 ; 0x100 <__DATA_REGION_LENGTH__> + 104: 00 c0 rjmp .+0 ; 0x106 <__DATA_REGION_LENGTH__+0x6> + 106: 00 00 nop + 108: bb 98 cbi 0x17, 3 ; 23 + 10a: 9a eb ldi r25, 0xBA ; 186 + 10c: 9a 95 dec r25 + 10e: f1 f7 brne .-4 ; 0x10c <__DATA_REGION_LENGTH__+0xc> + 110: 00 c0 rjmp .+0 ; 0x112 <__DATA_REGION_LENGTH__+0x12> + 112: 86 b3 in r24, 0x16 ; 22 + 114: e3 e3 ldi r30, 0x33 ; 51 + 116: f3 e0 ldi r31, 0x03 ; 3 + 118: 31 97 sbiw r30, 0x01 ; 1 + 11a: f1 f7 brne .-4 ; 0x118 <__DATA_REGION_LENGTH__+0x18> + 11c: 00 c0 rjmp .+0 ; 0x11e <__DATA_REGION_LENGTH__+0x1e> + 11e: 00 00 nop + 120: 78 94 sei + 122: 83 fb bst r24, 3 + 124: 88 27 eor r24, r24 + 126: 80 f9 bld r24, 0 + 128: 91 e0 ldi r25, 0x01 ; 1 + 12a: 89 27 eor r24, r25 + 12c: 08 95 ret -000000ee : - ee: 97 b3 in r25, 0x17 ; 23 - f0: a1 e0 ldi r26, 0x01 ; 1 - f2: b0 e0 ldi r27, 0x00 ; 0 - f4: fd 01 movw r30, r26 - f6: 02 c0 rjmp .+4 ; 0xfc - f8: ee 0f add r30, r30 - fa: ff 1f adc r31, r31 - fc: 8a 95 dec r24 - fe: e2 f7 brpl .-8 ; 0xf8 - 100: 02 c0 rjmp .+4 ; 0x106 <__DATA_REGION_LENGTH__+0x6> - 102: aa 0f add r26, r26 - 104: bb 1f adc r27, r27 - 106: 6a 95 dec r22 - 108: e2 f7 brpl .-8 ; 0x102 <__DATA_REGION_LENGTH__+0x2> - 10a: ea 2b or r30, r26 - 10c: 9e 2b or r25, r30 - 10e: 97 bb out 0x17, r25 ; 23 - 110: 88 b3 in r24, 0x18 ; 24 - 112: e0 95 com r30 - 114: e8 23 and r30, r24 - 116: e8 bb out 0x18, r30 ; 24 - 118: 84 2f mov r24, r20 - 11a: 80 68 ori r24, 0x80 ; 128 - 11c: 82 2b or r24, r18 - 11e: df df rcall .-66 ; 0xde - 120: 08 95 ret +0000012e : + 12e: 98 e0 ldi r25, 0x08 ; 8 + 130: 0d c0 rjmp .+26 ; 0x14c + 132: bb 9a sbi 0x17, 3 ; 23 + 134: 20 ea ldi r18, 0xA0 ; 160 + 136: 2a 95 dec r18 + 138: f1 f7 brne .-4 ; 0x136 + 13a: bb 98 cbi 0x17, 3 ; 23 + 13c: 2a e1 ldi r18, 0x1A ; 26 + 13e: 2a 95 dec r18 + 140: f1 f7 brne .-4 ; 0x13e + 142: 00 c0 rjmp .+0 ; 0x144 + 144: 78 94 sei + 146: 86 95 lsr r24 + 148: 91 50 subi r25, 0x01 ; 1 + 14a: 69 f0 breq .+26 ; 0x166 <__stack+0x7> + 14c: f8 94 cli + 14e: 80 ff sbrs r24, 0 + 150: f0 cf rjmp .-32 ; 0x132 + 152: bb 9a sbi 0x17, 3 ; 23 + 154: 20 e1 ldi r18, 0x10 ; 16 + 156: 2a 95 dec r18 + 158: f1 f7 brne .-4 ; 0x156 + 15a: bb 98 cbi 0x17, 3 ; 23 + 15c: 2a ea ldi r18, 0xAA ; 170 + 15e: 2a 95 dec r18 + 160: f1 f7 brne .-4 ; 0x15e + 162: 00 c0 rjmp .+0 ; 0x164 <__stack+0x5> + 164: ef cf rjmp .-34 ; 0x144 + 166: 08 95 ret -00000122 : - 122: cf 93 push r28 - 124: df 93 push r29 - 126: c8 2f mov r28, r24 - 128: d6 2f mov r29, r22 - 12a: 80 e4 ldi r24, 0x40 ; 64 - 12c: d8 df rcall .-80 ; 0xde - 12e: 85 df rcall .-246 ; 0x3a - 130: 8d 2f mov r24, r29 - 132: 80 6c ori r24, 0xC0 ; 192 - 134: a0 df rcall .-192 ; 0x76 - 136: 8c 2f mov r24, r28 - 138: 9e df rcall .-196 ; 0x76 - 13a: 8e df rcall .-228 ; 0x58 - 13c: df 91 pop r29 - 13e: cf 91 pop r28 - 140: 08 95 ret +00000168 : + 168: 98 e0 ldi r25, 0x08 ; 8 + 16a: 80 e0 ldi r24, 0x00 ; 0 + 16c: 07 c0 rjmp .+14 ; 0x17c + 16e: 22 e9 ldi r18, 0x92 ; 146 + 170: 2a 95 dec r18 + 172: f1 f7 brne .-4 ; 0x170 + 174: 00 c0 rjmp .+0 ; 0x176 + 176: 78 94 sei + 178: 91 50 subi r25, 0x01 ; 1 + 17a: 71 f0 breq .+28 ; 0x198 + 17c: f8 94 cli + 17e: 86 95 lsr r24 + 180: bb 9a sbi 0x17, 3 ; 23 + 182: 20 e1 ldi r18, 0x10 ; 16 + 184: 2a 95 dec r18 + 186: f1 f7 brne .-4 ; 0x184 + 188: bb 98 cbi 0x17, 3 ; 23 + 18a: 28 e1 ldi r18, 0x18 ; 24 + 18c: 2a 95 dec r18 + 18e: f1 f7 brne .-4 ; 0x18c + 190: b3 9b sbis 0x16, 3 ; 22 + 192: ed cf rjmp .-38 ; 0x16e + 194: 80 68 ori r24, 0x80 ; 128 + 196: eb cf rjmp .-42 ; 0x16e + 198: 08 95 ret -00000142 : - 142: 62 e0 ldi r22, 0x02 ; 2 - 144: 80 e4 ldi r24, 0x40 ; 64 - 146: ed df rcall .-38 ; 0x122 - 148: 61 e0 ldi r22, 0x01 ; 1 - 14a: 80 e4 ldi r24, 0x40 ; 64 - 14c: ea df rcall .-44 ; 0x122 - 14e: 60 e0 ldi r22, 0x00 ; 0 - 150: 80 e4 ldi r24, 0x40 ; 64 - 152: e7 df rcall .-50 ; 0x122 - 154: 08 95 ret +0000019a : + 19a: ae df rcall .-164 ; 0xf8 + 19c: 81 11 cpse r24, r1 + 19e: 01 c0 rjmp .+2 ; 0x1a2 + 1a0: 08 95 ret + 1a2: 8c ec ldi r24, 0xCC ; 204 + 1a4: c4 df rcall .-120 ; 0x12e + 1a6: 81 e0 ldi r24, 0x01 ; 1 + 1a8: fb cf rjmp .-10 ; 0x1a0 -00000156 : - 156: bf 92 push r11 - 158: cf 92 push r12 - 15a: df 92 push r13 - 15c: ef 92 push r14 - 15e: ff 92 push r15 - 160: 0f 93 push r16 - 162: 1f 93 push r17 - 164: cf 93 push r28 - 166: df 93 push r29 - 168: 8c 01 movw r16, r24 - 16a: ec 01 movw r28, r24 - 16c: 08 3e cpi r16, 0xE8 ; 232 - 16e: 83 e0 ldi r24, 0x03 ; 3 - 170: 18 07 cpc r17, r24 - 172: 14 f0 brlt .+4 ; 0x178 <__stack+0x19> - 174: c7 ee ldi r28, 0xE7 ; 231 - 176: d3 e0 ldi r29, 0x03 ; 3 - 178: 11 23 and r17, r17 - 17a: 54 f0 brlt .+20 ; 0x190 <__stack+0x31> - 17c: 0f 2e mov r0, r31 - 17e: f3 e0 ldi r31, 0x03 ; 3 - 180: df 2e mov r13, r31 - 182: f0 2d mov r31, r0 - 184: 0f 2e mov r0, r31 - 186: fa e0 ldi r31, 0x0A ; 10 - 188: ef 2e mov r14, r31 - 18a: f1 2c mov r15, r1 - 18c: f0 2d mov r31, r0 - 18e: 17 c0 rjmp .+46 ; 0x1be <__stack+0x5f> - 190: d1 95 neg r29 - 192: c1 95 neg r28 - 194: d1 09 sbc r29, r1 - 196: 60 e0 ldi r22, 0x00 ; 0 - 198: 80 e4 ldi r24, 0x40 ; 64 - 19a: c3 df rcall .-122 ; 0x122 - 19c: ef cf rjmp .-34 ; 0x17c <__stack+0x1d> - 19e: da 94 dec r13 - 1a0: ce 01 movw r24, r28 - 1a2: b7 01 movw r22, r14 - 1a4: 4b d3 rcall .+1686 ; 0x83c <__divmodhi4> - 1a6: b6 2e mov r11, r22 - 1a8: c7 2e mov r12, r23 - 1aa: 82 5e subi r24, 0xE2 ; 226 - 1ac: 9f 4f sbci r25, 0xFF ; 255 - 1ae: fc 01 movw r30, r24 - 1b0: 84 91 lpm r24, Z - 1b2: 6d 2d mov r22, r13 - 1b4: b6 df rcall .-148 ; 0x122 - 1b6: cb 2d mov r28, r11 - 1b8: dc 2d mov r29, r12 - 1ba: dd 20 and r13, r13 - 1bc: 29 f0 breq .+10 ; 0x1c8 <__stack+0x69> - 1be: 11 23 and r17, r17 - 1c0: 74 f7 brge .-36 ; 0x19e <__stack+0x3f> - 1c2: e1 e0 ldi r30, 0x01 ; 1 - 1c4: de 12 cpse r13, r30 - 1c6: eb cf rjmp .-42 ; 0x19e <__stack+0x3f> - 1c8: df 91 pop r29 - 1ca: cf 91 pop r28 - 1cc: 1f 91 pop r17 - 1ce: 0f 91 pop r16 - 1d0: ff 90 pop r15 - 1d2: ef 90 pop r14 - 1d4: df 90 pop r13 - 1d6: cf 90 pop r12 - 1d8: bf 90 pop r11 - 1da: 08 95 ret +000001aa : + 1aa: 0f 93 push r16 + 1ac: 1f 93 push r17 + 1ae: cf 93 push r28 + 1b0: df 93 push r29 + 1b2: 8c 01 movw r16, r24 + 1b4: a1 df rcall .-190 ; 0xf8 + 1b6: 81 11 cpse r24, r1 + 1b8: 05 c0 rjmp .+10 ; 0x1c4 + 1ba: df 91 pop r29 + 1bc: cf 91 pop r28 + 1be: 1f 91 pop r17 + 1c0: 0f 91 pop r16 + 1c2: 08 95 ret + 1c4: 83 e3 ldi r24, 0x33 ; 51 + 1c6: b3 df rcall .-154 ; 0x12e + 1c8: e8 01 movw r28, r16 + 1ca: 08 5f subi r16, 0xF8 ; 248 + 1cc: 1f 4f sbci r17, 0xFF ; 255 + 1ce: cc df rcall .-104 ; 0x168 + 1d0: 89 93 st Y+, r24 + 1d2: c0 17 cp r28, r16 + 1d4: d1 07 cpc r29, r17 + 1d6: d9 f7 brne .-10 ; 0x1ce + 1d8: 81 e0 ldi r24, 0x01 ; 1 + 1da: ef cf rjmp .-34 ; 0x1ba -000001dc : - 1dc: 99 23 and r25, r25 - 1de: 84 f0 brlt .+32 ; 0x200 - 1e0: 21 e0 ldi r18, 0x01 ; 1 - 1e2: 8a 30 cpi r24, 0x0A ; 10 - 1e4: 91 05 cpc r25, r1 - 1e6: 54 f0 brlt .+20 ; 0x1fc - 1e8: 21 e0 ldi r18, 0x01 ; 1 - 1ea: ea e0 ldi r30, 0x0A ; 10 - 1ec: f0 e0 ldi r31, 0x00 ; 0 - 1ee: bf 01 movw r22, r30 - 1f0: 25 d3 rcall .+1610 ; 0x83c <__divmodhi4> - 1f2: cb 01 movw r24, r22 - 1f4: 2f 5f subi r18, 0xFF ; 255 - 1f6: 6a 30 cpi r22, 0x0A ; 10 - 1f8: 71 05 cpc r23, r1 - 1fa: cc f7 brge .-14 ; 0x1ee - 1fc: 82 2f mov r24, r18 - 1fe: 08 95 ret - 200: 91 95 neg r25 - 202: 81 95 neg r24 - 204: 91 09 sbc r25, r1 - 206: ec cf rjmp .-40 ; 0x1e0 +000001dc : + 1dc: fc 01 movw r30, r24 + 1de: 68 0f add r22, r24 + 1e0: 79 1f adc r23, r25 + 1e2: 80 e0 ldi r24, 0x00 ; 0 + 1e4: 2c e8 ldi r18, 0x8C ; 140 + 1e6: 0b c0 rjmp .+22 ; 0x1fe + 1e8: 86 95 lsr r24 + 1ea: 91 50 subi r25, 0x01 ; 1 + 1ec: 29 f0 breq .+10 ; 0x1f8 + 1ee: 80 ff sbrs r24, 0 + 1f0: fb cf rjmp .-10 ; 0x1e8 + 1f2: 86 95 lsr r24 + 1f4: 82 27 eor r24, r18 + 1f6: f9 cf rjmp .-14 ; 0x1ea + 1f8: e6 17 cp r30, r22 + 1fa: f7 07 cpc r31, r23 + 1fc: 21 f0 breq .+8 ; 0x206 + 1fe: 91 91 ld r25, Z+ + 200: 89 27 eor r24, r25 + 202: 98 e0 ldi r25, 0x08 ; 8 + 204: f4 cf rjmp .-24 ; 0x1ee + 206: 08 95 ret -00000208 : - 208: 7f 92 push r7 - 20a: 8f 92 push r8 - 20c: 9f 92 push r9 - 20e: af 92 push r10 - 210: bf 92 push r11 - 212: cf 92 push r12 - 214: df 92 push r13 - 216: ef 92 push r14 - 218: ff 92 push r15 - 21a: 0f 93 push r16 - 21c: 1f 93 push r17 - 21e: cf 93 push r28 - 220: df 93 push r29 - 222: 00 d0 rcall .+0 ; 0x224 - 224: 1f 92 push r1 - 226: cd b7 in r28, 0x3d ; 61 - 228: de b7 in r29, 0x3e ; 62 - 22a: f6 2e mov r15, r22 - 22c: 94 2e mov r9, r20 - 22e: e2 2e mov r14, r18 - 230: 99 23 and r25, r25 - 232: 0c f4 brge .+2 ; 0x236 - 234: 4d c0 rjmp .+154 ; 0x2d0 - 236: 21 e0 ldi r18, 0x01 ; 1 - 238: e1 10 cpse r14, r1 - 23a: 01 c0 rjmp .+2 ; 0x23e - 23c: 20 e0 ldi r18, 0x00 ; 0 - 23e: 6c 01 movw r12, r24 - 240: 88 3e cpi r24, 0xE8 ; 232 - 242: 93 40 sbci r25, 0x03 ; 3 - 244: 34 f0 brlt .+12 ; 0x252 - 246: 0f 2e mov r0, r31 - 248: f7 ee ldi r31, 0xE7 ; 231 - 24a: cf 2e mov r12, r31 - 24c: f3 e0 ldi r31, 0x03 ; 3 - 24e: df 2e mov r13, r31 - 250: f0 2d mov r31, r0 - 252: e1 10 cpse r14, r1 - 254: 08 c0 rjmp .+16 ; 0x266 - 256: c6 01 movw r24, r12 - 258: c1 df rcall .-126 ; 0x1dc - 25a: b8 2e mov r11, r24 - 25c: 52 e0 ldi r21, 0x02 ; 2 - 25e: 85 13 cpse r24, r21 - 260: 4c c0 rjmp .+152 ; 0x2fa - 262: 10 e0 ldi r17, 0x00 ; 0 - 264: 4b c0 rjmp .+150 ; 0x2fc - 266: e2 2e mov r14, r18 - 268: 3f c0 rjmp .+126 ; 0x2e8 - 26a: 0b 2d mov r16, r11 - 26c: 63 c0 rjmp .+198 ; 0x334 - 26e: 68 2d mov r22, r8 - 270: 80 e4 ldi r24, 0x40 ; 64 - 272: 57 df rcall .-338 ; 0x122 +00000208 : + 208: ef 92 push r14 + 20a: ff 92 push r15 + 20c: 0f 93 push r16 + 20e: 1f 93 push r17 + 210: cf 93 push r28 + 212: df 93 push r29 + 214: 7c 01 movw r14, r24 + 216: c1 df rcall .-126 ; 0x19a + 218: 98 2f mov r25, r24 + 21a: 81 11 cpse r24, r1 + 21c: 08 c0 rjmp .+16 ; 0x22e + 21e: 89 2f mov r24, r25 + 220: df 91 pop r29 + 222: cf 91 pop r28 + 224: 1f 91 pop r17 + 226: 0f 91 pop r16 + 228: ff 90 pop r15 + 22a: ef 90 pop r14 + 22c: 08 95 ret + 22e: 8e eb ldi r24, 0xBE ; 190 + 230: 7e df rcall .-260 ; 0x12e + 232: e7 01 movw r28, r14 + 234: 87 01 movw r16, r14 + 236: 08 5f subi r16, 0xF8 ; 248 + 238: 1f 4f sbci r17, 0xFF ; 255 + 23a: 96 df rcall .-212 ; 0x168 + 23c: 89 93 st Y+, r24 + 23e: c0 17 cp r28, r16 + 240: d1 07 cpc r29, r17 + 242: d9 f7 brne .-10 ; 0x23a + 244: 68 e0 ldi r22, 0x08 ; 8 + 246: 70 e0 ldi r23, 0x00 ; 0 + 248: c7 01 movw r24, r14 + 24a: c8 df rcall .-112 ; 0x1dc + 24c: c8 2f mov r28, r24 + 24e: 8c df rcall .-232 ; 0x168 + 250: 91 e0 ldi r25, 0x01 ; 1 + 252: c8 17 cp r28, r24 + 254: 21 f3 breq .-56 ; 0x21e + 256: 90 e0 ldi r25, 0x00 ; 0 + 258: e2 cf rjmp .-60 ; 0x21e + +0000025a : + 25a: 4e df rcall .-356 ; 0xf8 + 25c: 81 11 cpse r24, r1 + 25e: 01 c0 rjmp .+2 ; 0x262 + 260: 08 95 ret + 262: 9b df rcall .-202 ; 0x19a + 264: 88 e4 ldi r24, 0x48 ; 72 + 266: 63 df rcall .-314 ; 0x12e + 268: 8f e1 ldi r24, 0x1F ; 31 + 26a: 9e e4 ldi r25, 0x4E ; 78 + 26c: 01 97 sbiw r24, 0x01 ; 1 + 26e: f1 f7 brne .-4 ; 0x26c + 270: 00 c0 rjmp .+0 ; 0x272 + 272: 00 00 nop 274: 81 e0 ldi r24, 0x01 ; 1 - 276: 80 0f add r24, r16 - 278: 1e 2d mov r17, r14 - 27a: 96 c0 rjmp .+300 ; 0x3a8 - 27c: e3 e0 ldi r30, 0x03 ; 3 - 27e: be 12 cpse r11, r30 - 280: a2 c0 rjmp .+324 ; 0x3c6 - 282: e1 10 cpse r14, r1 - 284: 81 c0 rjmp .+258 ; 0x388 - 286: a1 10 cpse r10, r1 - 288: 7f c0 rjmp .+254 ; 0x388 - 28a: 65 c0 rjmp .+202 ; 0x356 - 28c: 88 2d mov r24, r8 - 28e: e1 10 cpse r14, r1 - 290: aa c0 rjmp .+340 ; 0x3e6 - 292: 89 2d mov r24, r9 - 294: a8 c0 rjmp .+336 ; 0x3e6 - 296: 87 2d mov r24, r7 - 298: 02 30 cpi r16, 0x02 ; 2 - 29a: 09 f0 breq .+2 ; 0x29e - 29c: 80 c0 rjmp .+256 ; 0x39e - 29e: 74 c0 rjmp .+232 ; 0x388 - 2a0: ef 2d mov r30, r15 - 2a2: f0 e0 ldi r31, 0x00 ; 0 - 2a4: e2 5e subi r30, 0xE2 ; 226 - 2a6: ff 4f sbci r31, 0xFF ; 255 - 2a8: 84 91 lpm r24, Z - 2aa: 61 2f mov r22, r17 - 2ac: 3a df rcall .-396 ; 0x122 - 2ae: 0f 90 pop r0 - 2b0: 0f 90 pop r0 - 2b2: 0f 90 pop r0 - 2b4: df 91 pop r29 - 2b6: cf 91 pop r28 - 2b8: 1f 91 pop r17 - 2ba: 0f 91 pop r16 - 2bc: ff 90 pop r15 - 2be: ef 90 pop r14 - 2c0: df 90 pop r13 - 2c2: cf 90 pop r12 - 2c4: bf 90 pop r11 - 2c6: af 90 pop r10 - 2c8: 9f 90 pop r9 - 2ca: 8f 90 pop r8 - 2cc: 7f 90 pop r7 - 2ce: 08 95 ret - 2d0: 6c 01 movw r12, r24 - 2d2: 88 3e cpi r24, 0xE8 ; 232 - 2d4: 93 40 sbci r25, 0x03 ; 3 - 2d6: 34 f0 brlt .+12 ; 0x2e4 - 2d8: 0f 2e mov r0, r31 - 2da: f7 ee ldi r31, 0xE7 ; 231 - 2dc: cf 2e mov r12, r31 - 2de: f3 e0 ldi r31, 0x03 ; 3 - 2e0: df 2e mov r13, r31 - 2e2: f0 2d mov r31, r0 - 2e4: ee 24 eor r14, r14 - 2e6: e3 94 inc r14 - 2e8: d1 94 neg r13 - 2ea: c1 94 neg r12 - 2ec: d1 08 sbc r13, r1 - 2ee: c6 01 movw r24, r12 - 2f0: 75 df rcall .-278 ; 0x1dc - 2f2: b8 2e mov r11, r24 - 2f4: 52 e0 ldi r21, 0x02 ; 2 - 2f6: 11 e0 ldi r17, 0x01 ; 1 - 2f8: 85 13 cpse r24, r21 - 2fa: 10 e0 ldi r17, 0x00 ; 0 - 2fc: 2a e0 ldi r18, 0x0A ; 10 - 2fe: 30 e0 ldi r19, 0x00 ; 0 - 300: c6 01 movw r24, r12 - 302: b9 01 movw r22, r18 - 304: 9b d2 rcall .+1334 ; 0x83c <__divmodhi4> - 306: 8b 83 std Y+3, r24 ; 0x03 - 308: cb 01 movw r24, r22 - 30a: b9 01 movw r22, r18 - 30c: 97 d2 rcall .+1326 ; 0x83c <__divmodhi4> - 30e: 8a 83 std Y+2, r24 ; 0x02 - 310: c6 01 movw r24, r12 - 312: 64 e6 ldi r22, 0x64 ; 100 - 314: 70 e0 ldi r23, 0x00 ; 0 - 316: 92 d2 rcall .+1316 ; 0x83c <__divmodhi4> - 318: cb 01 movw r24, r22 - 31a: b9 01 movw r22, r18 - 31c: 8f d2 rcall .+1310 ; 0x83c <__divmodhi4> - 31e: a8 2e mov r10, r24 - 320: 89 83 std Y+1, r24 ; 0x01 - 322: 81 e0 ldi r24, 0x01 ; 1 - 324: b8 16 cp r11, r24 - 326: 09 f4 brne .+2 ; 0x32a - 328: a0 cf rjmp .-192 ; 0x26a - 32a: 03 e0 ldi r16, 0x03 ; 3 - 32c: 0b 19 sub r16, r11 - 32e: 03 30 cpi r16, 0x03 ; 3 - 330: 08 f0 brcs .+2 ; 0x334 - 332: b6 cf rjmp .-148 ; 0x2a0 - 334: 82 e0 ldi r24, 0x02 ; 2 - 336: 90 e0 ldi r25, 0x00 ; 0 - 338: 6c 01 movw r12, r24 - 33a: c9 18 sub r12, r9 - 33c: d1 08 sbc r13, r1 - 33e: 7e 2c mov r7, r14 - 340: 68 94 set - 342: 99 24 eor r9, r9 - 344: 97 f8 bld r9, 7 - 346: 81 2c mov r8, r1 - 348: 33 c0 rjmp .+102 ; 0x3b0 - 34a: 1c 15 cp r17, r12 - 34c: 1d 04 cpc r1, r13 - 34e: 09 f4 brne .+2 ; 0x352 - 350: 95 cf rjmp .-214 ; 0x27c - 352: a1 10 cpse r10, r1 - 354: 15 c0 rjmp .+42 ; 0x380 - 356: 20 2f mov r18, r16 - 358: 30 e0 ldi r19, 0x00 ; 0 - 35a: e1 e0 ldi r30, 0x01 ; 1 - 35c: f0 e0 ldi r31, 0x00 ; 0 - 35e: ec 0f add r30, r28 - 360: fd 1f adc r31, r29 - 362: e2 0f add r30, r18 - 364: f3 1f adc r31, r19 - 366: 80 81 ld r24, Z - 368: 81 11 cpse r24, r1 - 36a: 0a c0 rjmp .+20 ; 0x380 - 36c: 42 e0 ldi r20, 0x02 ; 2 - 36e: 50 e0 ldi r21, 0x00 ; 0 - 370: 4c 0f add r20, r28 - 372: 5d 1f adc r21, r29 - 374: 24 0f add r18, r20 - 376: 35 1f adc r19, r21 - 378: f9 01 movw r30, r18 - 37a: 90 81 ld r25, Z - 37c: 91 11 cpse r25, r1 - 37e: 0f c0 rjmp .+30 ; 0x39e - 380: f1 e0 ldi r31, 0x01 ; 1 - 382: bf 16 cp r11, r31 - 384: 09 f4 brne .+2 ; 0x388 - 386: 87 cf rjmp .-242 ; 0x296 - 388: e1 e0 ldi r30, 0x01 ; 1 - 38a: f0 e0 ldi r31, 0x00 ; 0 - 38c: ec 0f add r30, r28 - 38e: fd 1f adc r31, r29 - 390: e0 0f add r30, r16 - 392: f1 1d adc r31, r1 - 394: e0 81 ld r30, Z - 396: f0 e0 ldi r31, 0x00 ; 0 - 398: e2 5e subi r30, 0xE2 ; 226 - 39a: ff 4f sbci r31, 0xFF ; 255 - 39c: 84 91 lpm r24, Z - 39e: 61 2f mov r22, r17 - 3a0: c0 de rcall .-640 ; 0x122 - 3a2: 81 e0 ldi r24, 0x01 ; 1 - 3a4: 80 0f add r24, r16 - 3a6: 1f 5f subi r17, 0xFF ; 255 - 3a8: 0f 5f subi r16, 0xFF ; 255 - 3aa: 83 30 cpi r24, 0x03 ; 3 - 3ac: 08 f0 brcs .+2 ; 0x3b0 - 3ae: 78 cf rjmp .-272 ; 0x2a0 - 3b0: ee 20 and r14, r14 - 3b2: 59 f2 breq .-106 ; 0x34a - 3b4: 11 23 and r17, r17 - 3b6: 09 f4 brne .+2 ; 0x3ba - 3b8: 5a cf rjmp .-332 ; 0x26e - 3ba: 1c 15 cp r17, r12 - 3bc: 1d 04 cpc r1, r13 - 3be: 21 f7 brne .-56 ; 0x388 - 3c0: 83 e0 ldi r24, 0x03 ; 3 - 3c2: b8 16 cp r11, r24 - 3c4: 09 f3 breq .-62 ; 0x388 - 3c6: e1 e0 ldi r30, 0x01 ; 1 - 3c8: f0 e0 ldi r31, 0x00 ; 0 - 3ca: ec 0f add r30, r28 - 3cc: fd 1f adc r31, r29 - 3ce: e0 0f add r30, r16 - 3d0: f1 1d adc r31, r1 - 3d2: e0 81 ld r30, Z - 3d4: f0 e0 ldi r31, 0x00 ; 0 - 3d6: e2 5e subi r30, 0xE2 ; 226 - 3d8: ff 4f sbci r31, 0xFF ; 255 - 3da: e4 91 lpm r30, Z - 3dc: f2 e0 ldi r31, 0x02 ; 2 - 3de: 89 2d mov r24, r9 - 3e0: bf 16 cp r11, r31 - 3e2: 09 f4 brne .+2 ; 0x3e6 - 3e4: 53 cf rjmp .-346 ; 0x28c - 3e6: 8e 2b or r24, r30 - 3e8: da cf rjmp .-76 ; 0x39e + 276: f4 cf rjmp .-24 ; 0x260 -000003ea : - 3ea: 62 d1 rcall .+708 ; 0x6b0 - 3ec: 88 23 and r24, r24 - 3ee: 51 f0 breq .+20 ; 0x404 <__LOCK_REGION_LENGTH__+0x4> - 3f0: 81 30 cpi r24, 0x01 ; 1 - 3f2: 11 f0 breq .+4 ; 0x3f8 - 3f4: 81 e0 ldi r24, 0x01 ; 1 - 3f6: 08 95 ret - 3f8: c1 9a sbi 0x18, 1 ; 24 - 3fa: 81 e0 ldi r24, 0x01 ; 1 - 3fc: 90 e0 ldi r25, 0x00 ; 0 - 3fe: ab de rcall .-682 ; 0x156 - 400: 81 e0 ldi r24, 0x01 ; 1 - 402: 08 95 ret - 404: c1 98 cbi 0x18, 1 ; 24 - 406: 80 e0 ldi r24, 0x00 ; 0 - 408: 08 95 ret +00000278 : + 278: cf 93 push r28 + 27a: df 93 push r29 + 27c: ec 01 movw r28, r24 + 27e: 8d df rcall .-230 ; 0x19a + 280: 8e e4 ldi r24, 0x4E ; 78 + 282: 55 df rcall .-342 ; 0x12e + 284: 88 81 ld r24, Y + 286: 53 df rcall .-346 ; 0x12e + 288: 89 81 ldd r24, Y+1 ; 0x01 + 28a: 51 df rcall .-350 ; 0x12e + 28c: 8a 81 ldd r24, Y+2 ; 0x02 + 28e: 4f df rcall .-354 ; 0x12e + 290: e4 df rcall .-56 ; 0x25a + 292: df 91 pop r29 + 294: cf 91 pop r28 + 296: 08 95 ret -0000040a
: - 40a: cf 93 push r28 - 40c: df 93 push r29 - 40e: cd b7 in r28, 0x3d ; 61 - 410: de b7 in r29, 0x3e ; 62 - 412: 66 97 sbiw r28, 0x16 ; 22 - 414: 0f b6 in r0, 0x3f ; 63 - 416: f8 94 cli - 418: de bf out 0x3e, r29 ; 62 - 41a: 0f be out 0x3f, r0 ; 63 - 41c: cd bf out 0x3d, r28 ; 61 - 41e: b9 9a sbi 0x17, 1 ; 23 - 420: c1 98 cbi 0x18, 1 ; 24 - 422: a8 95 wdr - 424: 88 e1 ldi r24, 0x18 ; 24 - 426: 99 e2 ldi r25, 0x29 ; 41 - 428: 0f b6 in r0, 0x3f ; 63 - 42a: f8 94 cli - 42c: a8 95 wdr - 42e: 81 bd out 0x21, r24 ; 33 - 430: 0f be out 0x3f, r0 ; 63 - 432: 91 bd out 0x21, r25 ; 33 - 434: 6c e0 ldi r22, 0x0C ; 12 - 436: ce 01 movw r24, r28 - 438: 01 96 adiw r24, 0x01 ; 1 - 43a: ff d0 rcall .+510 ; 0x63a - 43c: 28 e0 ldi r18, 0x08 ; 8 - 43e: 42 e0 ldi r20, 0x02 ; 2 - 440: 62 e0 ldi r22, 0x02 ; 2 - 442: 80 e0 ldi r24, 0x00 ; 0 - 444: 54 de rcall .-856 ; 0xee - 446: 7d de rcall .-774 ; 0x142 - 448: 2f ef ldi r18, 0xFF ; 255 - 44a: 80 e7 ldi r24, 0x70 ; 112 +00000298 : + 298: ff 92 push r15 + 29a: 0f 93 push r16 + 29c: 1f 93 push r17 + 29e: cf 93 push r28 + 2a0: df 93 push r29 + 2a2: 00 d0 rcall .+0 ; 0x2a4 + 2a4: 1f 92 push r1 + 2a6: cd b7 in r28, 0x3d ; 61 + 2a8: de b7 in r29, 0x3e ; 62 + 2aa: 8c 01 movw r16, r24 + 2ac: f6 2e mov r15, r22 + 2ae: ac df rcall .-168 ; 0x208 + 2b0: f8 01 movw r30, r16 + 2b2: 82 81 ldd r24, Z+2 ; 0x02 + 2b4: 89 83 std Y+1, r24 ; 0x01 + 2b6: 83 81 ldd r24, Z+3 ; 0x03 + 2b8: 8a 83 std Y+2, r24 ; 0x02 + 2ba: fa e0 ldi r31, 0x0A ; 10 + 2bc: ff 16 cp r15, r31 + 2be: b9 f0 breq .+46 ; 0x2ee + 2c0: 8b e0 ldi r24, 0x0B ; 11 + 2c2: f8 16 cp r15, r24 + 2c4: 89 f0 breq .+34 ; 0x2e8 + 2c6: e9 e0 ldi r30, 0x09 ; 9 + 2c8: fe 16 cp r15, r30 + 2ca: a1 f0 breq .+40 ; 0x2f4 + 2cc: 8f e7 ldi r24, 0x7F ; 127 + 2ce: 8b 83 std Y+3, r24 ; 0x03 + 2d0: ce 01 movw r24, r28 + 2d2: 01 96 adiw r24, 0x01 ; 1 + 2d4: d1 df rcall .-94 ; 0x278 + 2d6: 0f 90 pop r0 + 2d8: 0f 90 pop r0 + 2da: 0f 90 pop r0 + 2dc: df 91 pop r29 + 2de: cf 91 pop r28 + 2e0: 1f 91 pop r17 + 2e2: 0f 91 pop r16 + 2e4: ff 90 pop r15 + 2e6: 08 95 ret + 2e8: 8f e5 ldi r24, 0x5F ; 95 + 2ea: 8b 83 std Y+3, r24 ; 0x03 + 2ec: f1 cf rjmp .-30 ; 0x2d0 + 2ee: 8f e3 ldi r24, 0x3F ; 63 + 2f0: 8b 83 std Y+3, r24 ; 0x03 + 2f2: ee cf rjmp .-36 ; 0x2d0 + 2f4: 8f e1 ldi r24, 0x1F ; 31 + 2f6: 8b 83 std Y+3, r24 ; 0x03 + 2f8: eb cf rjmp .-42 ; 0x2d0 + +000002fa : + 2fa: fe de rcall .-516 ; 0xf8 + 2fc: 81 11 cpse r24, r1 + 2fe: 01 c0 rjmp .+2 ; 0x302 + 300: 08 95 ret + 302: 8c ec ldi r24, 0xCC ; 204 + 304: 14 df rcall .-472 ; 0x12e + 306: 84 e4 ldi r24, 0x44 ; 68 + 308: 12 df rcall .-476 ; 0x12e + 30a: 81 e0 ldi r24, 0x01 ; 1 + 30c: f9 cf rjmp .-14 ; 0x300 + +0000030e : + 30e: cf 93 push r28 + 310: df 93 push r29 + 312: ec 01 movw r28, r24 + 314: f1 de rcall .-542 ; 0xf8 + 316: 81 11 cpse r24, r1 + 318: 04 c0 rjmp .+8 ; 0x322 + 31a: 81 e0 ldi r24, 0x01 ; 1 + 31c: df 91 pop r29 + 31e: cf 91 pop r28 + 320: 08 95 ret + 322: ce 01 movw r24, r28 + 324: 08 96 adiw r24, 0x08 ; 8 + 326: 41 df rcall .-382 ; 0x1aa + 328: 88 85 ldd r24, Y+8 ; 0x08 + 32a: 88 32 cpi r24, 0x28 ; 40 + 32c: 11 f0 breq .+4 ; 0x332 + 32e: 82 e0 ldi r24, 0x02 ; 2 + 330: f5 cf rjmp .-22 ; 0x31c + 332: ce 01 movw r24, r28 + 334: 69 df rcall .-302 ; 0x208 + 336: 88 23 and r24, r24 + 338: 11 f0 breq .+4 ; 0x33e + 33a: 80 e0 ldi r24, 0x00 ; 0 + 33c: ef cf rjmp .-34 ; 0x31c + 33e: 83 e0 ldi r24, 0x03 ; 3 + 340: ed cf rjmp .-38 ; 0x31c + +00000342 : + 342: cf 93 push r28 + 344: df 93 push r29 + 346: ec 01 movw r28, r24 + 348: 5f df rcall .-322 ; 0x208 + 34a: 81 11 cpse r24, r1 + 34c: 03 c0 rjmp .+6 ; 0x354 + 34e: df 91 pop r29 + 350: cf 91 pop r28 + 352: 08 95 ret + 354: d2 df rcall .-92 ; 0x2fa + 356: 88 23 and r24, r24 + 358: d1 f3 breq .-12 ; 0x34e + 35a: 2c 81 ldd r18, Y+4 ; 0x04 + 35c: 82 2f mov r24, r18 + 35e: 90 e0 ldi r25, 0x00 ; 0 + 360: 80 95 com r24 + 362: 90 95 com r25 + 364: 80 76 andi r24, 0x60 ; 96 + 366: 99 27 eor r25, r25 + 368: 89 2b or r24, r25 + 36a: 09 f0 breq .+2 ; 0x36e + 36c: 55 c0 rjmp .+170 ; 0x418 <__LOCK_REGION_LENGTH__+0x18> + 36e: 2f e7 ldi r18, 0x7F ; 127 + 370: 3f e4 ldi r19, 0x4F ; 79 + 372: 82 e1 ldi r24, 0x12 ; 18 + 374: 21 50 subi r18, 0x01 ; 1 + 376: 30 40 sbci r19, 0x00 ; 0 + 378: 80 40 sbci r24, 0x00 ; 0 + 37a: e1 f7 brne .-8 ; 0x374 + 37c: 00 c0 rjmp .+0 ; 0x37e + 37e: 00 00 nop + 380: ce 01 movw r24, r28 + 382: 42 df rcall .-380 ; 0x208 + 384: 88 23 and r24, r24 + 386: 09 f4 brne .+2 ; 0x38a + 388: 69 c0 rjmp .+210 ; 0x45c <__LOCK_REGION_LENGTH__+0x5c> + 38a: 1d 8a std Y+21, r1 ; 0x15 + 38c: 89 81 ldd r24, Y+1 ; 0x01 + 38e: 90 e0 ldi r25, 0x00 ; 0 + 390: 48 81 ld r20, Y + 392: 24 2f mov r18, r20 + 394: 38 2f mov r19, r24 + 396: 33 23 and r19, r19 + 398: 0c f4 brge .+2 ; 0x39c + 39a: 63 c0 rjmp .+198 ; 0x462 <__LOCK_REGION_LENGTH__+0x62> + 39c: 35 95 asr r19 + 39e: 27 95 ror r18 + 3a0: 35 95 asr r19 + 3a2: 27 95 ror r18 + 3a4: 35 95 asr r19 + 3a6: 27 95 ror r18 + 3a8: 35 95 asr r19 + 3aa: 27 95 ror r18 + 3ac: 39 8b std Y+17, r19 ; 0x11 + 3ae: 28 8b std Y+16, r18 ; 0x10 + 3b0: 80 95 com r24 + 3b2: 90 95 com r25 + 3b4: 88 7f andi r24, 0xF8 ; 248 + 3b6: 99 27 eor r25, r25 + 3b8: 89 2b or r24, r25 + 3ba: 09 f0 breq .+2 ; 0x3be + 3bc: 55 c0 rjmp .+170 ; 0x468 <__LOCK_REGION_LENGTH__+0x68> + 3be: 81 e0 ldi r24, 0x01 ; 1 + 3c0: 8c 8b std Y+20, r24 ; 0x14 + 3c2: 41 95 neg r20 + 3c4: 48 83 st Y, r20 + 3c6: 88 81 ld r24, Y + 3c8: 8f 70 andi r24, 0x0F ; 15 + 3ca: 28 2f mov r18, r24 + 3cc: 30 e0 ldi r19, 0x00 ; 0 + 3ce: c9 01 movw r24, r18 + 3d0: 88 0f add r24, r24 + 3d2: 99 1f adc r25, r25 + 3d4: 82 95 swap r24 + 3d6: 92 95 swap r25 + 3d8: 90 7f andi r25, 0xF0 ; 240 + 3da: 98 27 eor r25, r24 + 3dc: 80 7f andi r24, 0xF0 ; 240 + 3de: 98 27 eor r25, r24 + 3e0: 82 1b sub r24, r18 + 3e2: 93 0b sbc r25, r19 + 3e4: 88 0f add r24, r24 + 3e6: 99 1f adc r25, r25 + 3e8: 88 0f add r24, r24 + 3ea: 99 1f adc r25, r25 + 3ec: 82 0f add r24, r18 + 3ee: 93 1f adc r25, r19 + 3f0: 88 0f add r24, r24 + 3f2: 99 1f adc r25, r25 + 3f4: 88 0f add r24, r24 + 3f6: 99 1f adc r25, r25 + 3f8: 88 0f add r24, r24 + 3fa: 99 1f adc r25, r25 + 3fc: 9c 01 movw r18, r24 + 3fe: 99 23 and r25, r25 + 400: ac f1 brlt .+106 ; 0x46c <__LOCK_REGION_LENGTH__+0x6c> + 402: 35 95 asr r19 + 404: 27 95 ror r18 + 406: 35 95 asr r19 + 408: 27 95 ror r18 + 40a: 35 95 asr r19 + 40c: 27 95 ror r18 + 40e: 35 95 asr r19 + 410: 27 95 ror r18 + 412: 3b 8b std Y+19, r19 ; 0x13 + 414: 2a 8b std Y+18, r18 ; 0x12 + 416: 9b cf rjmp .-202 ; 0x34e + 418: 26 ff sbrs r18, 6 + 41a: 0a c0 rjmp .+20 ; 0x430 <__LOCK_REGION_LENGTH__+0x30> + 41c: 9f eb ldi r25, 0xBF ; 191 + 41e: 27 e2 ldi r18, 0x27 ; 39 + 420: 39 e0 ldi r19, 0x09 ; 9 + 422: 91 50 subi r25, 0x01 ; 1 + 424: 20 40 sbci r18, 0x00 ; 0 + 426: 30 40 sbci r19, 0x00 ; 0 + 428: e1 f7 brne .-8 ; 0x422 <__LOCK_REGION_LENGTH__+0x22> + 42a: 00 c0 rjmp .+0 ; 0x42c <__LOCK_REGION_LENGTH__+0x2c> + 42c: 00 00 nop + 42e: a8 cf rjmp .-176 ; 0x380 + 430: 25 ff sbrs r18, 5 + 432: 0a c0 rjmp .+20 ; 0x448 <__LOCK_REGION_LENGTH__+0x48> + 434: 8f ef ldi r24, 0xFF ; 255 + 436: 96 e9 ldi r25, 0x96 ; 150 + 438: 24 e0 ldi r18, 0x04 ; 4 + 43a: 81 50 subi r24, 0x01 ; 1 + 43c: 90 40 sbci r25, 0x00 ; 0 + 43e: 20 40 sbci r18, 0x00 ; 0 + 440: e1 f7 brne .-8 ; 0x43a <__LOCK_REGION_LENGTH__+0x3a> + 442: 00 c0 rjmp .+0 ; 0x444 <__LOCK_REGION_LENGTH__+0x44> + 444: 00 00 nop + 446: 9c cf rjmp .-200 ; 0x380 + 448: 3f e7 ldi r19, 0x7F ; 127 + 44a: 8b e4 ldi r24, 0x4B ; 75 44c: 92 e0 ldi r25, 0x02 ; 2 - 44e: 21 50 subi r18, 0x01 ; 1 + 44e: 31 50 subi r19, 0x01 ; 1 450: 80 40 sbci r24, 0x00 ; 0 452: 90 40 sbci r25, 0x00 ; 0 - 454: e1 f7 brne .-8 ; 0x44e - 456: 00 c0 rjmp .+0 ; 0x458 + 454: e1 f7 brne .-8 ; 0x44e <__LOCK_REGION_LENGTH__+0x4e> + 456: 00 c0 rjmp .+0 ; 0x458 <__LOCK_REGION_LENGTH__+0x58> 458: 00 00 nop - 45a: 04 e6 ldi r16, 0x64 ; 100 - 45c: 10 e0 ldi r17, 0x00 ; 0 - 45e: 13 c0 rjmp .+38 ; 0x486 - 460: 8f e1 ldi r24, 0x1F ; 31 - 462: 9e e4 ldi r25, 0x4E ; 78 - 464: 01 97 sbiw r24, 0x01 ; 1 - 466: f1 f7 brne .-4 ; 0x464 - 468: 00 c0 rjmp .+0 ; 0x46a - 46a: 00 00 nop - 46c: ce 01 movw r24, r28 - 46e: 01 96 adiw r24, 0x01 ; 1 - 470: 39 d1 rcall .+626 ; 0x6e4 - 472: 8b 89 ldd r24, Y+19 ; 0x13 - 474: 9c 89 ldd r25, Y+20 ; 0x14 - 476: b8 01 movw r22, r16 - 478: cd d1 rcall .+922 ; 0x814 <__udivmodhi4> - 47a: 2d 89 ldd r18, Y+21 ; 0x15 - 47c: 41 e0 ldi r20, 0x01 ; 1 - 47e: 89 89 ldd r24, Y+17 ; 0x11 - 480: 9a 89 ldd r25, Y+18 ; 0x12 - 482: c2 de rcall .-636 ; 0x208 - 484: a8 95 wdr - 486: ce 01 movw r24, r28 - 488: 01 96 adiw r24, 0x01 ; 1 - 48a: af df rcall .-162 ; 0x3ea - 48c: 88 23 and r24, r24 - 48e: 41 f3 breq .-48 ; 0x460 - 490: 2f e7 ldi r18, 0x7F ; 127 - 492: 88 e3 ldi r24, 0x38 ; 56 - 494: 91 e0 ldi r25, 0x01 ; 1 - 496: 21 50 subi r18, 0x01 ; 1 - 498: 80 40 sbci r24, 0x00 ; 0 - 49a: 90 40 sbci r25, 0x00 ; 0 - 49c: e1 f7 brne .-8 ; 0x496 - 49e: 00 c0 rjmp .+0 ; 0x4a0 - 4a0: 00 00 nop - 4a2: a8 95 wdr - 4a4: f0 cf rjmp .-32 ; 0x486 + 45a: 92 cf rjmp .-220 ; 0x380 + 45c: 81 e0 ldi r24, 0x01 ; 1 + 45e: 8d 8b std Y+21, r24 ; 0x15 + 460: 76 cf rjmp .-276 ; 0x34e + 462: 21 5f subi r18, 0xF1 ; 241 + 464: 3f 4f sbci r19, 0xFF ; 255 + 466: 9a cf rjmp .-204 ; 0x39c + 468: 1c 8a std Y+20, r1 ; 0x14 + 46a: ad cf rjmp .-166 ; 0x3c6 + 46c: 21 5f subi r18, 0xF1 ; 241 + 46e: 3f 4f sbci r19, 0xFF ; 255 + 470: c8 cf rjmp .-112 ; 0x402 <__LOCK_REGION_LENGTH__+0x2> -000004a6 : - 4a6: f8 94 cli - 4a8: bb 9a sbi 0x17, 3 ; 23 - 4aa: 8f eb ldi r24, 0xBF ; 191 - 4ac: 93 e0 ldi r25, 0x03 ; 3 - 4ae: 01 97 sbiw r24, 0x01 ; 1 - 4b0: f1 f7 brne .-4 ; 0x4ae - 4b2: 00 c0 rjmp .+0 ; 0x4b4 - 4b4: 00 00 nop - 4b6: bb 98 cbi 0x17, 3 ; 23 - 4b8: 9a eb ldi r25, 0xBA ; 186 - 4ba: 9a 95 dec r25 - 4bc: f1 f7 brne .-4 ; 0x4ba - 4be: 00 c0 rjmp .+0 ; 0x4c0 - 4c0: 86 b3 in r24, 0x16 ; 22 - 4c2: e3 e3 ldi r30, 0x33 ; 51 - 4c4: f3 e0 ldi r31, 0x03 ; 3 - 4c6: 31 97 sbiw r30, 0x01 ; 1 - 4c8: f1 f7 brne .-4 ; 0x4c6 - 4ca: 00 c0 rjmp .+0 ; 0x4cc - 4cc: 00 00 nop - 4ce: 78 94 sei - 4d0: 83 fb bst r24, 3 - 4d2: 88 27 eor r24, r24 - 4d4: 80 f9 bld r24, 0 - 4d6: 91 e0 ldi r25, 0x01 ; 1 - 4d8: 89 27 eor r24, r25 - 4da: 08 95 ret +00000472 : + 472: f8 94 cli + 474: c0 9a sbi 0x18, 0 ; 24 + 476: c2 9a sbi 0x18, 2 ; 24 + 478: 8d e0 ldi r24, 0x0D ; 13 + 47a: 8a 95 dec r24 + 47c: f1 f7 brne .-4 ; 0x47a + 47e: 00 00 nop + 480: c0 98 cbi 0x18, 0 ; 24 + 482: 8d e0 ldi r24, 0x0D ; 13 + 484: 8a 95 dec r24 + 486: f1 f7 brne .-4 ; 0x484 + 488: 00 00 nop + 48a: c2 98 cbi 0x18, 2 ; 24 + 48c: 78 94 sei + 48e: 08 95 ret -000004dc : - 4dc: 98 e0 ldi r25, 0x08 ; 8 - 4de: 0d c0 rjmp .+26 ; 0x4fa - 4e0: bb 9a sbi 0x17, 3 ; 23 - 4e2: 20 ea ldi r18, 0xA0 ; 160 - 4e4: 2a 95 dec r18 - 4e6: f1 f7 brne .-4 ; 0x4e4 - 4e8: bb 98 cbi 0x17, 3 ; 23 - 4ea: 2a e1 ldi r18, 0x1A ; 26 - 4ec: 2a 95 dec r18 - 4ee: f1 f7 brne .-4 ; 0x4ec - 4f0: 00 c0 rjmp .+0 ; 0x4f2 - 4f2: 78 94 sei - 4f4: 86 95 lsr r24 - 4f6: 91 50 subi r25, 0x01 ; 1 - 4f8: 69 f0 breq .+26 ; 0x514 - 4fa: f8 94 cli - 4fc: 80 ff sbrs r24, 0 - 4fe: f0 cf rjmp .-32 ; 0x4e0 - 500: bb 9a sbi 0x17, 3 ; 23 - 502: 20 e1 ldi r18, 0x10 ; 16 - 504: 2a 95 dec r18 - 506: f1 f7 brne .-4 ; 0x504 - 508: bb 98 cbi 0x17, 3 ; 23 - 50a: 2a ea ldi r18, 0xAA ; 170 - 50c: 2a 95 dec r18 - 50e: f1 f7 brne .-4 ; 0x50c - 510: 00 c0 rjmp .+0 ; 0x512 - 512: ef cf rjmp .-34 ; 0x4f2 +00000490 : + 490: f8 94 cli + 492: c2 98 cbi 0x18, 2 ; 24 + 494: c0 98 cbi 0x18, 0 ; 24 + 496: 8d e0 ldi r24, 0x0D ; 13 + 498: 8a 95 dec r24 + 49a: f1 f7 brne .-4 ; 0x498 + 49c: 00 00 nop + 49e: c2 9a sbi 0x18, 2 ; 24 + 4a0: 8d e0 ldi r24, 0x0D ; 13 + 4a2: 8a 95 dec r24 + 4a4: f1 f7 brne .-4 ; 0x4a2 + 4a6: 00 00 nop + 4a8: c0 9a sbi 0x18, 0 ; 24 + 4aa: 78 94 sei + 4ac: 08 95 ret + +000004ae : + 4ae: f8 94 cli + 4b0: 2d e0 ldi r18, 0x0D ; 13 + 4b2: 2a 95 dec r18 + 4b4: f1 f7 brne .-4 ; 0x4b2 + 4b6: 00 00 nop + 4b8: 98 e0 ldi r25, 0x08 ; 8 + 4ba: 0d c0 rjmp .+26 ; 0x4d6 + 4bc: c0 98 cbi 0x18, 0 ; 24 + 4be: 86 95 lsr r24 + 4c0: 2d e0 ldi r18, 0x0D ; 13 + 4c2: 2a 95 dec r18 + 4c4: f1 f7 brne .-4 ; 0x4c2 + 4c6: 00 00 nop + 4c8: c2 9a sbi 0x18, 2 ; 24 + 4ca: 2d e0 ldi r18, 0x0D ; 13 + 4cc: 2a 95 dec r18 + 4ce: f1 f7 brne .-4 ; 0x4cc + 4d0: 00 00 nop + 4d2: 91 50 subi r25, 0x01 ; 1 + 4d4: 49 f0 breq .+18 ; 0x4e8 + 4d6: c2 98 cbi 0x18, 2 ; 24 + 4d8: 2d e0 ldi r18, 0x0D ; 13 + 4da: 2a 95 dec r18 + 4dc: f1 f7 brne .-4 ; 0x4da + 4de: 00 00 nop + 4e0: 80 ff sbrs r24, 0 + 4e2: ec cf rjmp .-40 ; 0x4bc + 4e4: c0 9a sbi 0x18, 0 ; 24 + 4e6: eb cf rjmp .-42 ; 0x4be + 4e8: b8 98 cbi 0x17, 0 ; 23 + 4ea: c2 98 cbi 0x18, 2 ; 24 + 4ec: c0 9a sbi 0x18, 0 ; 24 + 4ee: 8d e0 ldi r24, 0x0D ; 13 + 4f0: 8a 95 dec r24 + 4f2: f1 f7 brne .-4 ; 0x4f0 + 4f4: 00 00 nop + 4f6: 86 b3 in r24, 0x16 ; 22 + 4f8: c2 9a sbi 0x18, 2 ; 24 + 4fa: 9d e0 ldi r25, 0x0D ; 13 + 4fc: 9a 95 dec r25 + 4fe: f1 f7 brne .-4 ; 0x4fc + 500: 00 00 nop + 502: c2 98 cbi 0x18, 2 ; 24 + 504: 2d e0 ldi r18, 0x0D ; 13 + 506: 2a 95 dec r18 + 508: f1 f7 brne .-4 ; 0x506 + 50a: 00 00 nop + 50c: b8 9a sbi 0x17, 0 ; 23 + 50e: 78 94 sei + 510: 80 95 com r24 + 512: 81 70 andi r24, 0x01 ; 1 514: 08 95 ret -00000516 : - 516: 98 e0 ldi r25, 0x08 ; 8 - 518: 80 e0 ldi r24, 0x00 ; 0 - 51a: 07 c0 rjmp .+14 ; 0x52a - 51c: 22 e9 ldi r18, 0x92 ; 146 - 51e: 2a 95 dec r18 - 520: f1 f7 brne .-4 ; 0x51e - 522: 00 c0 rjmp .+0 ; 0x524 - 524: 78 94 sei - 526: 91 50 subi r25, 0x01 ; 1 - 528: 71 f0 breq .+28 ; 0x546 - 52a: f8 94 cli - 52c: 86 95 lsr r24 - 52e: bb 9a sbi 0x17, 3 ; 23 - 530: 20 e1 ldi r18, 0x10 ; 16 - 532: 2a 95 dec r18 - 534: f1 f7 brne .-4 ; 0x532 - 536: bb 98 cbi 0x17, 3 ; 23 - 538: 28 e1 ldi r18, 0x18 ; 24 - 53a: 2a 95 dec r18 - 53c: f1 f7 brne .-4 ; 0x53a - 53e: b3 9b sbis 0x16, 3 ; 22 - 540: ed cf rjmp .-38 ; 0x51c - 542: 80 68 ori r24, 0x80 ; 128 - 544: eb cf rjmp .-42 ; 0x51c - 546: 08 95 ret +00000516 : + 516: 99 23 and r25, r25 + 518: 84 f0 brlt .+32 ; 0x53a + 51a: 21 e0 ldi r18, 0x01 ; 1 + 51c: 8a 30 cpi r24, 0x0A ; 10 + 51e: 91 05 cpc r25, r1 + 520: 54 f0 brlt .+20 ; 0x536 + 522: 21 e0 ldi r18, 0x01 ; 1 + 524: ea e0 ldi r30, 0x0A ; 10 + 526: f0 e0 ldi r31, 0x00 ; 0 + 528: bf 01 movw r22, r30 + 52a: 8f d1 rcall .+798 ; 0x84a <__divmodhi4> + 52c: cb 01 movw r24, r22 + 52e: 2f 5f subi r18, 0xFF ; 255 + 530: 6a 30 cpi r22, 0x0A ; 10 + 532: 71 05 cpc r23, r1 + 534: cc f7 brge .-14 ; 0x528 + 536: 82 2f mov r24, r18 + 538: 08 95 ret + 53a: 91 95 neg r25 + 53c: 81 95 neg r24 + 53e: 91 09 sbc r25, r1 + 540: ec cf rjmp .-40 ; 0x51a -00000548 : - 548: ae df rcall .-164 ; 0x4a6 - 54a: 81 11 cpse r24, r1 - 54c: 01 c0 rjmp .+2 ; 0x550 - 54e: 08 95 ret - 550: 8c ec ldi r24, 0xCC ; 204 - 552: c4 df rcall .-120 ; 0x4dc - 554: 81 e0 ldi r24, 0x01 ; 1 - 556: fb cf rjmp .-10 ; 0x54e +00000542 : + 542: cf 93 push r28 + 544: c8 2f mov r28, r24 + 546: 95 df rcall .-214 ; 0x472 + 548: 8c 2f mov r24, r28 + 54a: b1 df rcall .-158 ; 0x4ae + 54c: a1 df rcall .-190 ; 0x490 + 54e: cf 91 pop r28 + 550: 08 95 ret -00000558 : - 558: 0f 93 push r16 - 55a: 1f 93 push r17 - 55c: cf 93 push r28 - 55e: df 93 push r29 - 560: 8c 01 movw r16, r24 - 562: a1 df rcall .-190 ; 0x4a6 - 564: 81 11 cpse r24, r1 - 566: 05 c0 rjmp .+10 ; 0x572 - 568: df 91 pop r29 - 56a: cf 91 pop r28 - 56c: 1f 91 pop r17 - 56e: 0f 91 pop r16 - 570: 08 95 ret - 572: 83 e3 ldi r24, 0x33 ; 51 - 574: b3 df rcall .-154 ; 0x4dc - 576: e8 01 movw r28, r16 - 578: 08 5f subi r16, 0xF8 ; 248 - 57a: 1f 4f sbci r17, 0xFF ; 255 - 57c: cc df rcall .-104 ; 0x516 - 57e: 89 93 st Y+, r24 - 580: c0 17 cp r28, r16 - 582: d1 07 cpc r29, r17 - 584: d9 f7 brne .-10 ; 0x57c - 586: 81 e0 ldi r24, 0x01 ; 1 - 588: ef cf rjmp .-34 ; 0x568 +00000552 : + 552: 97 b3 in r25, 0x17 ; 23 + 554: a1 e0 ldi r26, 0x01 ; 1 + 556: b0 e0 ldi r27, 0x00 ; 0 + 558: fd 01 movw r30, r26 + 55a: 02 c0 rjmp .+4 ; 0x560 + 55c: ee 0f add r30, r30 + 55e: ff 1f adc r31, r31 + 560: 8a 95 dec r24 + 562: e2 f7 brpl .-8 ; 0x55c + 564: 02 c0 rjmp .+4 ; 0x56a + 566: aa 0f add r26, r26 + 568: bb 1f adc r27, r27 + 56a: 6a 95 dec r22 + 56c: e2 f7 brpl .-8 ; 0x566 + 56e: ea 2b or r30, r26 + 570: 9e 2b or r25, r30 + 572: 97 bb out 0x17, r25 ; 23 + 574: 88 b3 in r24, 0x18 ; 24 + 576: e0 95 com r30 + 578: e8 23 and r30, r24 + 57a: e8 bb out 0x18, r30 ; 24 + 57c: 84 2f mov r24, r20 + 57e: 80 68 ori r24, 0x80 ; 128 + 580: 82 2b or r24, r18 + 582: df df rcall .-66 ; 0x542 + 584: 08 95 ret -0000058a : - 58a: fc 01 movw r30, r24 - 58c: 68 0f add r22, r24 - 58e: 79 1f adc r23, r25 - 590: 80 e0 ldi r24, 0x00 ; 0 - 592: 2c e8 ldi r18, 0x8C ; 140 - 594: 0b c0 rjmp .+22 ; 0x5ac - 596: 86 95 lsr r24 - 598: 91 50 subi r25, 0x01 ; 1 - 59a: 29 f0 breq .+10 ; 0x5a6 - 59c: 80 ff sbrs r24, 0 - 59e: fb cf rjmp .-10 ; 0x596 - 5a0: 86 95 lsr r24 - 5a2: 82 27 eor r24, r18 - 5a4: f9 cf rjmp .-14 ; 0x598 - 5a6: e6 17 cp r30, r22 - 5a8: f7 07 cpc r31, r23 - 5aa: 21 f0 breq .+8 ; 0x5b4 - 5ac: 91 91 ld r25, Z+ - 5ae: 89 27 eor r24, r25 - 5b0: 98 e0 ldi r25, 0x08 ; 8 - 5b2: f4 cf rjmp .-24 ; 0x59c - 5b4: 08 95 ret +00000586 : + 586: cf 93 push r28 + 588: df 93 push r29 + 58a: c8 2f mov r28, r24 + 58c: d6 2f mov r29, r22 + 58e: 80 e4 ldi r24, 0x40 ; 64 + 590: d8 df rcall .-80 ; 0x542 + 592: 6f df rcall .-290 ; 0x472 + 594: 8d 2f mov r24, r29 + 596: 80 6c ori r24, 0xC0 ; 192 + 598: 8a df rcall .-236 ; 0x4ae + 59a: 8c 2f mov r24, r28 + 59c: 88 df rcall .-240 ; 0x4ae + 59e: 78 df rcall .-272 ; 0x490 + 5a0: df 91 pop r29 + 5a2: cf 91 pop r28 + 5a4: 08 95 ret -000005b6 : - 5b6: ef 92 push r14 - 5b8: ff 92 push r15 - 5ba: 0f 93 push r16 - 5bc: 1f 93 push r17 - 5be: cf 93 push r28 - 5c0: df 93 push r29 - 5c2: 7c 01 movw r14, r24 - 5c4: c1 df rcall .-126 ; 0x548 - 5c6: 98 2f mov r25, r24 - 5c8: 81 11 cpse r24, r1 - 5ca: 08 c0 rjmp .+16 ; 0x5dc - 5cc: 89 2f mov r24, r25 - 5ce: df 91 pop r29 - 5d0: cf 91 pop r28 - 5d2: 1f 91 pop r17 - 5d4: 0f 91 pop r16 - 5d6: ff 90 pop r15 - 5d8: ef 90 pop r14 - 5da: 08 95 ret - 5dc: 8e eb ldi r24, 0xBE ; 190 - 5de: 7e df rcall .-260 ; 0x4dc - 5e0: e7 01 movw r28, r14 - 5e2: 87 01 movw r16, r14 - 5e4: 08 5f subi r16, 0xF8 ; 248 - 5e6: 1f 4f sbci r17, 0xFF ; 255 - 5e8: 96 df rcall .-212 ; 0x516 - 5ea: 89 93 st Y+, r24 - 5ec: c0 17 cp r28, r16 - 5ee: d1 07 cpc r29, r17 - 5f0: d9 f7 brne .-10 ; 0x5e8 - 5f2: 68 e0 ldi r22, 0x08 ; 8 - 5f4: 70 e0 ldi r23, 0x00 ; 0 - 5f6: c7 01 movw r24, r14 - 5f8: c8 df rcall .-112 ; 0x58a - 5fa: c8 2f mov r28, r24 - 5fc: 8c df rcall .-232 ; 0x516 - 5fe: 91 e0 ldi r25, 0x01 ; 1 - 600: c8 17 cp r28, r24 - 602: 21 f3 breq .-56 ; 0x5cc - 604: 90 e0 ldi r25, 0x00 ; 0 - 606: e2 cf rjmp .-60 ; 0x5cc +000005a6 : + 5a6: 62 e0 ldi r22, 0x02 ; 2 + 5a8: 80 e4 ldi r24, 0x40 ; 64 + 5aa: ed df rcall .-38 ; 0x586 + 5ac: 61 e0 ldi r22, 0x01 ; 1 + 5ae: 80 e4 ldi r24, 0x40 ; 64 + 5b0: ea df rcall .-44 ; 0x586 + 5b2: 60 e0 ldi r22, 0x00 ; 0 + 5b4: 80 e4 ldi r24, 0x40 ; 64 + 5b6: e7 df rcall .-50 ; 0x586 + 5b8: 08 95 ret -00000608 : - 608: 4e df rcall .-356 ; 0x4a6 - 60a: 81 11 cpse r24, r1 - 60c: 01 c0 rjmp .+2 ; 0x610 - 60e: 08 95 ret - 610: 9b df rcall .-202 ; 0x548 - 612: 88 e4 ldi r24, 0x48 ; 72 - 614: 63 df rcall .-314 ; 0x4dc - 616: 81 e0 ldi r24, 0x01 ; 1 - 618: fa cf rjmp .-12 ; 0x60e +000005ba : + 5ba: bf 92 push r11 + 5bc: cf 92 push r12 + 5be: df 92 push r13 + 5c0: ef 92 push r14 + 5c2: ff 92 push r15 + 5c4: 0f 93 push r16 + 5c6: 1f 93 push r17 + 5c8: cf 93 push r28 + 5ca: df 93 push r29 + 5cc: 8c 01 movw r16, r24 + 5ce: ec 01 movw r28, r24 + 5d0: 08 3e cpi r16, 0xE8 ; 232 + 5d2: 83 e0 ldi r24, 0x03 ; 3 + 5d4: 18 07 cpc r17, r24 + 5d6: 14 f0 brlt .+4 ; 0x5dc + 5d8: c7 ee ldi r28, 0xE7 ; 231 + 5da: d3 e0 ldi r29, 0x03 ; 3 + 5dc: 11 23 and r17, r17 + 5de: 54 f0 brlt .+20 ; 0x5f4 + 5e0: 0f 2e mov r0, r31 + 5e2: f3 e0 ldi r31, 0x03 ; 3 + 5e4: df 2e mov r13, r31 + 5e6: f0 2d mov r31, r0 + 5e8: 0f 2e mov r0, r31 + 5ea: fa e0 ldi r31, 0x0A ; 10 + 5ec: ef 2e mov r14, r31 + 5ee: f1 2c mov r15, r1 + 5f0: f0 2d mov r31, r0 + 5f2: 17 c0 rjmp .+46 ; 0x622 + 5f4: d1 95 neg r29 + 5f6: c1 95 neg r28 + 5f8: d1 09 sbc r29, r1 + 5fa: 60 e0 ldi r22, 0x00 ; 0 + 5fc: 80 e4 ldi r24, 0x40 ; 64 + 5fe: c3 df rcall .-122 ; 0x586 + 600: ef cf rjmp .-34 ; 0x5e0 + 602: da 94 dec r13 + 604: ce 01 movw r24, r28 + 606: b7 01 movw r22, r14 + 608: 20 d1 rcall .+576 ; 0x84a <__divmodhi4> + 60a: b6 2e mov r11, r22 + 60c: c7 2e mov r12, r23 + 60e: 82 5e subi r24, 0xE2 ; 226 + 610: 9f 4f sbci r25, 0xFF ; 255 + 612: fc 01 movw r30, r24 + 614: 84 91 lpm r24, Z + 616: 6d 2d mov r22, r13 + 618: b6 df rcall .-148 ; 0x586 + 61a: cb 2d mov r28, r11 + 61c: dc 2d mov r29, r12 + 61e: dd 20 and r13, r13 + 620: 29 f0 breq .+10 ; 0x62c + 622: 11 23 and r17, r17 + 624: 74 f7 brge .-36 ; 0x602 + 626: e1 e0 ldi r30, 0x01 ; 1 + 628: de 12 cpse r13, r30 + 62a: eb cf rjmp .-42 ; 0x602 + 62c: df 91 pop r29 + 62e: cf 91 pop r28 + 630: 1f 91 pop r17 + 632: 0f 91 pop r16 + 634: ff 90 pop r15 + 636: ef 90 pop r14 + 638: df 90 pop r13 + 63a: cf 90 pop r12 + 63c: bf 90 pop r11 + 63e: 08 95 ret -0000061a : - 61a: cf 93 push r28 - 61c: df 93 push r29 - 61e: ec 01 movw r28, r24 - 620: 93 df rcall .-218 ; 0x548 - 622: 8e e4 ldi r24, 0x4E ; 78 - 624: 5b df rcall .-330 ; 0x4dc - 626: 88 81 ld r24, Y - 628: 59 df rcall .-334 ; 0x4dc - 62a: 89 81 ldd r24, Y+1 ; 0x01 - 62c: 57 df rcall .-338 ; 0x4dc - 62e: 8a 81 ldd r24, Y+2 ; 0x02 - 630: 55 df rcall .-342 ; 0x4dc - 632: ea df rcall .-44 ; 0x608 - 634: df 91 pop r29 - 636: cf 91 pop r28 - 638: 08 95 ret - -0000063a : - 63a: ff 92 push r15 - 63c: 0f 93 push r16 - 63e: 1f 93 push r17 - 640: cf 93 push r28 - 642: df 93 push r29 - 644: 00 d0 rcall .+0 ; 0x646 - 646: 1f 92 push r1 - 648: cd b7 in r28, 0x3d ; 61 - 64a: de b7 in r29, 0x3e ; 62 - 64c: 8c 01 movw r16, r24 - 64e: f6 2e mov r15, r22 - 650: b2 df rcall .-156 ; 0x5b6 - 652: f8 01 movw r30, r16 - 654: 82 81 ldd r24, Z+2 ; 0x02 - 656: 89 83 std Y+1, r24 ; 0x01 - 658: 83 81 ldd r24, Z+3 ; 0x03 - 65a: 8a 83 std Y+2, r24 ; 0x02 - 65c: fa e0 ldi r31, 0x0A ; 10 - 65e: ff 16 cp r15, r31 - 660: b9 f0 breq .+46 ; 0x690 - 662: 8b e0 ldi r24, 0x0B ; 11 - 664: f8 16 cp r15, r24 - 666: 89 f0 breq .+34 ; 0x68a - 668: e9 e0 ldi r30, 0x09 ; 9 - 66a: fe 16 cp r15, r30 - 66c: a1 f0 breq .+40 ; 0x696 - 66e: 8f e7 ldi r24, 0x7F ; 127 - 670: 8b 83 std Y+3, r24 ; 0x03 - 672: ce 01 movw r24, r28 - 674: 01 96 adiw r24, 0x01 ; 1 - 676: d1 df rcall .-94 ; 0x61a - 678: 0f 90 pop r0 - 67a: 0f 90 pop r0 - 67c: 0f 90 pop r0 - 67e: df 91 pop r29 - 680: cf 91 pop r28 - 682: 1f 91 pop r17 - 684: 0f 91 pop r16 - 686: ff 90 pop r15 - 688: 08 95 ret - 68a: 8f e5 ldi r24, 0x5F ; 95 - 68c: 8b 83 std Y+3, r24 ; 0x03 - 68e: f1 cf rjmp .-30 ; 0x672 - 690: 8f e3 ldi r24, 0x3F ; 63 - 692: 8b 83 std Y+3, r24 ; 0x03 - 694: ee cf rjmp .-36 ; 0x672 - 696: 8f e1 ldi r24, 0x1F ; 31 - 698: 8b 83 std Y+3, r24 ; 0x03 - 69a: eb cf rjmp .-42 ; 0x672 - -0000069c : - 69c: 04 df rcall .-504 ; 0x4a6 - 69e: 81 11 cpse r24, r1 - 6a0: 01 c0 rjmp .+2 ; 0x6a4 - 6a2: 08 95 ret - 6a4: 8c ec ldi r24, 0xCC ; 204 - 6a6: 1a df rcall .-460 ; 0x4dc - 6a8: 84 e4 ldi r24, 0x44 ; 68 - 6aa: 18 df rcall .-464 ; 0x4dc +00000640 : + 640: 7f 92 push r7 + 642: 8f 92 push r8 + 644: 9f 92 push r9 + 646: af 92 push r10 + 648: bf 92 push r11 + 64a: cf 92 push r12 + 64c: df 92 push r13 + 64e: ef 92 push r14 + 650: ff 92 push r15 + 652: 0f 93 push r16 + 654: 1f 93 push r17 + 656: cf 93 push r28 + 658: df 93 push r29 + 65a: 00 d0 rcall .+0 ; 0x65c + 65c: 1f 92 push r1 + 65e: cd b7 in r28, 0x3d ; 61 + 660: de b7 in r29, 0x3e ; 62 + 662: f6 2e mov r15, r22 + 664: 94 2e mov r9, r20 + 666: e2 2e mov r14, r18 + 668: 99 23 and r25, r25 + 66a: 0c f4 brge .+2 ; 0x66e + 66c: 4d c0 rjmp .+154 ; 0x708 + 66e: 21 e0 ldi r18, 0x01 ; 1 + 670: e1 10 cpse r14, r1 + 672: 01 c0 rjmp .+2 ; 0x676 + 674: 20 e0 ldi r18, 0x00 ; 0 + 676: 6c 01 movw r12, r24 + 678: 88 3e cpi r24, 0xE8 ; 232 + 67a: 93 40 sbci r25, 0x03 ; 3 + 67c: 34 f0 brlt .+12 ; 0x68a + 67e: 0f 2e mov r0, r31 + 680: f7 ee ldi r31, 0xE7 ; 231 + 682: cf 2e mov r12, r31 + 684: f3 e0 ldi r31, 0x03 ; 3 + 686: df 2e mov r13, r31 + 688: f0 2d mov r31, r0 + 68a: e1 10 cpse r14, r1 + 68c: 08 c0 rjmp .+16 ; 0x69e + 68e: c6 01 movw r24, r12 + 690: 42 df rcall .-380 ; 0x516 + 692: b8 2e mov r11, r24 + 694: 52 e0 ldi r21, 0x02 ; 2 + 696: 85 13 cpse r24, r21 + 698: 4c c0 rjmp .+152 ; 0x732 + 69a: 10 e0 ldi r17, 0x00 ; 0 + 69c: 4b c0 rjmp .+150 ; 0x734 + 69e: e2 2e mov r14, r18 + 6a0: 3f c0 rjmp .+126 ; 0x720 + 6a2: 0b 2d mov r16, r11 + 6a4: 63 c0 rjmp .+198 ; 0x76c + 6a6: 68 2d mov r22, r8 + 6a8: 80 e4 ldi r24, 0x40 ; 64 + 6aa: 6d df rcall .-294 ; 0x586 6ac: 81 e0 ldi r24, 0x01 ; 1 - 6ae: f9 cf rjmp .-14 ; 0x6a2 + 6ae: 80 0f add r24, r16 + 6b0: 1e 2d mov r17, r14 + 6b2: 96 c0 rjmp .+300 ; 0x7e0 + 6b4: e3 e0 ldi r30, 0x03 ; 3 + 6b6: be 12 cpse r11, r30 + 6b8: a2 c0 rjmp .+324 ; 0x7fe + 6ba: e1 10 cpse r14, r1 + 6bc: 81 c0 rjmp .+258 ; 0x7c0 + 6be: a1 10 cpse r10, r1 + 6c0: 7f c0 rjmp .+254 ; 0x7c0 + 6c2: 65 c0 rjmp .+202 ; 0x78e + 6c4: 88 2d mov r24, r8 + 6c6: e1 10 cpse r14, r1 + 6c8: aa c0 rjmp .+340 ; 0x81e + 6ca: 89 2d mov r24, r9 + 6cc: a8 c0 rjmp .+336 ; 0x81e + 6ce: 87 2d mov r24, r7 + 6d0: 02 30 cpi r16, 0x02 ; 2 + 6d2: 09 f0 breq .+2 ; 0x6d6 + 6d4: 80 c0 rjmp .+256 ; 0x7d6 + 6d6: 74 c0 rjmp .+232 ; 0x7c0 + 6d8: ef 2d mov r30, r15 + 6da: f0 e0 ldi r31, 0x00 ; 0 + 6dc: e2 5e subi r30, 0xE2 ; 226 + 6de: ff 4f sbci r31, 0xFF ; 255 + 6e0: 84 91 lpm r24, Z + 6e2: 61 2f mov r22, r17 + 6e4: 50 df rcall .-352 ; 0x586 + 6e6: 0f 90 pop r0 + 6e8: 0f 90 pop r0 + 6ea: 0f 90 pop r0 + 6ec: df 91 pop r29 + 6ee: cf 91 pop r28 + 6f0: 1f 91 pop r17 + 6f2: 0f 91 pop r16 + 6f4: ff 90 pop r15 + 6f6: ef 90 pop r14 + 6f8: df 90 pop r13 + 6fa: cf 90 pop r12 + 6fc: bf 90 pop r11 + 6fe: af 90 pop r10 + 700: 9f 90 pop r9 + 702: 8f 90 pop r8 + 704: 7f 90 pop r7 + 706: 08 95 ret + 708: 6c 01 movw r12, r24 + 70a: 88 3e cpi r24, 0xE8 ; 232 + 70c: 93 40 sbci r25, 0x03 ; 3 + 70e: 34 f0 brlt .+12 ; 0x71c + 710: 0f 2e mov r0, r31 + 712: f7 ee ldi r31, 0xE7 ; 231 + 714: cf 2e mov r12, r31 + 716: f3 e0 ldi r31, 0x03 ; 3 + 718: df 2e mov r13, r31 + 71a: f0 2d mov r31, r0 + 71c: ee 24 eor r14, r14 + 71e: e3 94 inc r14 + 720: d1 94 neg r13 + 722: c1 94 neg r12 + 724: d1 08 sbc r13, r1 + 726: c6 01 movw r24, r12 + 728: f6 de rcall .-532 ; 0x516 + 72a: b8 2e mov r11, r24 + 72c: 52 e0 ldi r21, 0x02 ; 2 + 72e: 11 e0 ldi r17, 0x01 ; 1 + 730: 85 13 cpse r24, r21 + 732: 10 e0 ldi r17, 0x00 ; 0 + 734: 2a e0 ldi r18, 0x0A ; 10 + 736: 30 e0 ldi r19, 0x00 ; 0 + 738: c6 01 movw r24, r12 + 73a: b9 01 movw r22, r18 + 73c: 86 d0 rcall .+268 ; 0x84a <__divmodhi4> + 73e: 8b 83 std Y+3, r24 ; 0x03 + 740: cb 01 movw r24, r22 + 742: b9 01 movw r22, r18 + 744: 82 d0 rcall .+260 ; 0x84a <__divmodhi4> + 746: 8a 83 std Y+2, r24 ; 0x02 + 748: c6 01 movw r24, r12 + 74a: 64 e6 ldi r22, 0x64 ; 100 + 74c: 70 e0 ldi r23, 0x00 ; 0 + 74e: 7d d0 rcall .+250 ; 0x84a <__divmodhi4> + 750: cb 01 movw r24, r22 + 752: b9 01 movw r22, r18 + 754: 7a d0 rcall .+244 ; 0x84a <__divmodhi4> + 756: a8 2e mov r10, r24 + 758: 89 83 std Y+1, r24 ; 0x01 + 75a: 81 e0 ldi r24, 0x01 ; 1 + 75c: b8 16 cp r11, r24 + 75e: 09 f4 brne .+2 ; 0x762 + 760: a0 cf rjmp .-192 ; 0x6a2 + 762: 03 e0 ldi r16, 0x03 ; 3 + 764: 0b 19 sub r16, r11 + 766: 03 30 cpi r16, 0x03 ; 3 + 768: 08 f0 brcs .+2 ; 0x76c + 76a: b6 cf rjmp .-148 ; 0x6d8 + 76c: 82 e0 ldi r24, 0x02 ; 2 + 76e: 90 e0 ldi r25, 0x00 ; 0 + 770: 6c 01 movw r12, r24 + 772: c9 18 sub r12, r9 + 774: d1 08 sbc r13, r1 + 776: 7e 2c mov r7, r14 + 778: 68 94 set + 77a: 99 24 eor r9, r9 + 77c: 97 f8 bld r9, 7 + 77e: 81 2c mov r8, r1 + 780: 33 c0 rjmp .+102 ; 0x7e8 + 782: 1c 15 cp r17, r12 + 784: 1d 04 cpc r1, r13 + 786: 09 f4 brne .+2 ; 0x78a + 788: 95 cf rjmp .-214 ; 0x6b4 + 78a: a1 10 cpse r10, r1 + 78c: 15 c0 rjmp .+42 ; 0x7b8 + 78e: 20 2f mov r18, r16 + 790: 30 e0 ldi r19, 0x00 ; 0 + 792: e1 e0 ldi r30, 0x01 ; 1 + 794: f0 e0 ldi r31, 0x00 ; 0 + 796: ec 0f add r30, r28 + 798: fd 1f adc r31, r29 + 79a: e2 0f add r30, r18 + 79c: f3 1f adc r31, r19 + 79e: 80 81 ld r24, Z + 7a0: 81 11 cpse r24, r1 + 7a2: 0a c0 rjmp .+20 ; 0x7b8 + 7a4: 42 e0 ldi r20, 0x02 ; 2 + 7a6: 50 e0 ldi r21, 0x00 ; 0 + 7a8: 4c 0f add r20, r28 + 7aa: 5d 1f adc r21, r29 + 7ac: 24 0f add r18, r20 + 7ae: 35 1f adc r19, r21 + 7b0: f9 01 movw r30, r18 + 7b2: 90 81 ld r25, Z + 7b4: 91 11 cpse r25, r1 + 7b6: 0f c0 rjmp .+30 ; 0x7d6 + 7b8: f1 e0 ldi r31, 0x01 ; 1 + 7ba: bf 16 cp r11, r31 + 7bc: 09 f4 brne .+2 ; 0x7c0 + 7be: 87 cf rjmp .-242 ; 0x6ce + 7c0: e1 e0 ldi r30, 0x01 ; 1 + 7c2: f0 e0 ldi r31, 0x00 ; 0 + 7c4: ec 0f add r30, r28 + 7c6: fd 1f adc r31, r29 + 7c8: e0 0f add r30, r16 + 7ca: f1 1d adc r31, r1 + 7cc: e0 81 ld r30, Z + 7ce: f0 e0 ldi r31, 0x00 ; 0 + 7d0: e2 5e subi r30, 0xE2 ; 226 + 7d2: ff 4f sbci r31, 0xFF ; 255 + 7d4: 84 91 lpm r24, Z + 7d6: 61 2f mov r22, r17 + 7d8: d6 de rcall .-596 ; 0x586 + 7da: 81 e0 ldi r24, 0x01 ; 1 + 7dc: 80 0f add r24, r16 + 7de: 1f 5f subi r17, 0xFF ; 255 + 7e0: 0f 5f subi r16, 0xFF ; 255 + 7e2: 83 30 cpi r24, 0x03 ; 3 + 7e4: 08 f0 brcs .+2 ; 0x7e8 + 7e6: 78 cf rjmp .-272 ; 0x6d8 + 7e8: ee 20 and r14, r14 + 7ea: 59 f2 breq .-106 ; 0x782 + 7ec: 11 23 and r17, r17 + 7ee: 09 f4 brne .+2 ; 0x7f2 + 7f0: 5a cf rjmp .-332 ; 0x6a6 + 7f2: 1c 15 cp r17, r12 + 7f4: 1d 04 cpc r1, r13 + 7f6: 21 f7 brne .-56 ; 0x7c0 + 7f8: 83 e0 ldi r24, 0x03 ; 3 + 7fa: b8 16 cp r11, r24 + 7fc: 09 f3 breq .-62 ; 0x7c0 + 7fe: e1 e0 ldi r30, 0x01 ; 1 + 800: f0 e0 ldi r31, 0x00 ; 0 + 802: ec 0f add r30, r28 + 804: fd 1f adc r31, r29 + 806: e0 0f add r30, r16 + 808: f1 1d adc r31, r1 + 80a: e0 81 ld r30, Z + 80c: f0 e0 ldi r31, 0x00 ; 0 + 80e: e2 5e subi r30, 0xE2 ; 226 + 810: ff 4f sbci r31, 0xFF ; 255 + 812: e4 91 lpm r30, Z + 814: f2 e0 ldi r31, 0x02 ; 2 + 816: 89 2d mov r24, r9 + 818: bf 16 cp r11, r31 + 81a: 09 f4 brne .+2 ; 0x81e + 81c: 53 cf rjmp .-346 ; 0x6c4 + 81e: 8e 2b or r24, r30 + 820: da cf rjmp .-76 ; 0x7d6 -000006b0 : - 6b0: cf 93 push r28 - 6b2: df 93 push r29 - 6b4: ec 01 movw r28, r24 - 6b6: f7 de rcall .-530 ; 0x4a6 - 6b8: 81 11 cpse r24, r1 - 6ba: 04 c0 rjmp .+8 ; 0x6c4 - 6bc: 81 e0 ldi r24, 0x01 ; 1 - 6be: df 91 pop r29 - 6c0: cf 91 pop r28 - 6c2: 08 95 ret - 6c4: ce 01 movw r24, r28 - 6c6: 08 96 adiw r24, 0x08 ; 8 - 6c8: 47 df rcall .-370 ; 0x558 - 6ca: 88 85 ldd r24, Y+8 ; 0x08 - 6cc: 88 32 cpi r24, 0x28 ; 40 - 6ce: 11 f0 breq .+4 ; 0x6d4 - 6d0: 82 e0 ldi r24, 0x02 ; 2 - 6d2: f5 cf rjmp .-22 ; 0x6be - 6d4: ce 01 movw r24, r28 - 6d6: 6f df rcall .-290 ; 0x5b6 - 6d8: 88 23 and r24, r24 - 6da: 11 f0 breq .+4 ; 0x6e0 - 6dc: 80 e0 ldi r24, 0x00 ; 0 - 6de: ef cf rjmp .-34 ; 0x6be - 6e0: 83 e0 ldi r24, 0x03 ; 3 - 6e2: ed cf rjmp .-38 ; 0x6be +00000822 <__udivmodhi4>: + 822: aa 1b sub r26, r26 + 824: bb 1b sub r27, r27 + 826: 51 e1 ldi r21, 0x11 ; 17 + 828: 07 c0 rjmp .+14 ; 0x838 <__udivmodhi4_ep> -000006e4 : - 6e4: cf 93 push r28 - 6e6: df 93 push r29 - 6e8: ec 01 movw r28, r24 - 6ea: 65 df rcall .-310 ; 0x5b6 - 6ec: 81 11 cpse r24, r1 - 6ee: 03 c0 rjmp .+6 ; 0x6f6 - 6f0: df 91 pop r29 - 6f2: cf 91 pop r28 - 6f4: 08 95 ret - 6f6: d2 df rcall .-92 ; 0x69c - 6f8: 88 23 and r24, r24 - 6fa: d1 f3 breq .-12 ; 0x6f0 - 6fc: 2c 81 ldd r18, Y+4 ; 0x04 - 6fe: 82 2f mov r24, r18 - 700: 90 e0 ldi r25, 0x00 ; 0 - 702: 80 95 com r24 - 704: 90 95 com r25 - 706: 80 76 andi r24, 0x60 ; 96 - 708: 99 27 eor r25, r25 - 70a: 89 2b or r24, r25 - 70c: 09 f0 breq .+2 ; 0x710 - 70e: 55 c0 rjmp .+170 ; 0x7ba - 710: 2f e7 ldi r18, 0x7F ; 127 - 712: 3f e4 ldi r19, 0x4F ; 79 - 714: 82 e1 ldi r24, 0x12 ; 18 - 716: 21 50 subi r18, 0x01 ; 1 - 718: 30 40 sbci r19, 0x00 ; 0 - 71a: 80 40 sbci r24, 0x00 ; 0 - 71c: e1 f7 brne .-8 ; 0x716 - 71e: 00 c0 rjmp .+0 ; 0x720 - 720: 00 00 nop - 722: ce 01 movw r24, r28 - 724: 48 df rcall .-368 ; 0x5b6 - 726: 88 23 and r24, r24 - 728: 09 f4 brne .+2 ; 0x72c - 72a: 69 c0 rjmp .+210 ; 0x7fe - 72c: 1d 8a std Y+21, r1 ; 0x15 - 72e: 89 81 ldd r24, Y+1 ; 0x01 - 730: 90 e0 ldi r25, 0x00 ; 0 - 732: 48 81 ld r20, Y - 734: 24 2f mov r18, r20 - 736: 38 2f mov r19, r24 - 738: 33 23 and r19, r19 - 73a: 0c f4 brge .+2 ; 0x73e - 73c: 63 c0 rjmp .+198 ; 0x804 - 73e: 35 95 asr r19 - 740: 27 95 ror r18 - 742: 35 95 asr r19 - 744: 27 95 ror r18 - 746: 35 95 asr r19 - 748: 27 95 ror r18 - 74a: 35 95 asr r19 - 74c: 27 95 ror r18 - 74e: 39 8b std Y+17, r19 ; 0x11 - 750: 28 8b std Y+16, r18 ; 0x10 - 752: 80 95 com r24 - 754: 90 95 com r25 - 756: 88 7f andi r24, 0xF8 ; 248 - 758: 99 27 eor r25, r25 - 75a: 89 2b or r24, r25 - 75c: 09 f0 breq .+2 ; 0x760 - 75e: 55 c0 rjmp .+170 ; 0x80a - 760: 81 e0 ldi r24, 0x01 ; 1 - 762: 8c 8b std Y+20, r24 ; 0x14 - 764: 41 95 neg r20 - 766: 48 83 st Y, r20 - 768: 88 81 ld r24, Y - 76a: 8f 70 andi r24, 0x0F ; 15 - 76c: 28 2f mov r18, r24 - 76e: 30 e0 ldi r19, 0x00 ; 0 - 770: c9 01 movw r24, r18 - 772: 88 0f add r24, r24 - 774: 99 1f adc r25, r25 - 776: 82 95 swap r24 - 778: 92 95 swap r25 - 77a: 90 7f andi r25, 0xF0 ; 240 - 77c: 98 27 eor r25, r24 - 77e: 80 7f andi r24, 0xF0 ; 240 - 780: 98 27 eor r25, r24 - 782: 82 1b sub r24, r18 - 784: 93 0b sbc r25, r19 - 786: 88 0f add r24, r24 - 788: 99 1f adc r25, r25 - 78a: 88 0f add r24, r24 - 78c: 99 1f adc r25, r25 - 78e: 82 0f add r24, r18 - 790: 93 1f adc r25, r19 - 792: 88 0f add r24, r24 - 794: 99 1f adc r25, r25 - 796: 88 0f add r24, r24 - 798: 99 1f adc r25, r25 - 79a: 88 0f add r24, r24 - 79c: 99 1f adc r25, r25 - 79e: 9c 01 movw r18, r24 - 7a0: 99 23 and r25, r25 - 7a2: ac f1 brlt .+106 ; 0x80e - 7a4: 35 95 asr r19 - 7a6: 27 95 ror r18 - 7a8: 35 95 asr r19 - 7aa: 27 95 ror r18 - 7ac: 35 95 asr r19 - 7ae: 27 95 ror r18 - 7b0: 35 95 asr r19 - 7b2: 27 95 ror r18 - 7b4: 3b 8b std Y+19, r19 ; 0x13 - 7b6: 2a 8b std Y+18, r18 ; 0x12 - 7b8: 9b cf rjmp .-202 ; 0x6f0 - 7ba: 26 ff sbrs r18, 6 - 7bc: 0a c0 rjmp .+20 ; 0x7d2 - 7be: 9f eb ldi r25, 0xBF ; 191 - 7c0: 27 e2 ldi r18, 0x27 ; 39 - 7c2: 39 e0 ldi r19, 0x09 ; 9 - 7c4: 91 50 subi r25, 0x01 ; 1 - 7c6: 20 40 sbci r18, 0x00 ; 0 - 7c8: 30 40 sbci r19, 0x00 ; 0 - 7ca: e1 f7 brne .-8 ; 0x7c4 - 7cc: 00 c0 rjmp .+0 ; 0x7ce - 7ce: 00 00 nop - 7d0: a8 cf rjmp .-176 ; 0x722 - 7d2: 25 ff sbrs r18, 5 - 7d4: 0a c0 rjmp .+20 ; 0x7ea - 7d6: 8f ef ldi r24, 0xFF ; 255 - 7d8: 96 e9 ldi r25, 0x96 ; 150 - 7da: 24 e0 ldi r18, 0x04 ; 4 - 7dc: 81 50 subi r24, 0x01 ; 1 - 7de: 90 40 sbci r25, 0x00 ; 0 - 7e0: 20 40 sbci r18, 0x00 ; 0 - 7e2: e1 f7 brne .-8 ; 0x7dc - 7e4: 00 c0 rjmp .+0 ; 0x7e6 - 7e6: 00 00 nop - 7e8: 9c cf rjmp .-200 ; 0x722 - 7ea: 3f e7 ldi r19, 0x7F ; 127 - 7ec: 8b e4 ldi r24, 0x4B ; 75 - 7ee: 92 e0 ldi r25, 0x02 ; 2 - 7f0: 31 50 subi r19, 0x01 ; 1 - 7f2: 80 40 sbci r24, 0x00 ; 0 - 7f4: 90 40 sbci r25, 0x00 ; 0 - 7f6: e1 f7 brne .-8 ; 0x7f0 - 7f8: 00 c0 rjmp .+0 ; 0x7fa - 7fa: 00 00 nop - 7fc: 92 cf rjmp .-220 ; 0x722 - 7fe: 81 e0 ldi r24, 0x01 ; 1 - 800: 8d 8b std Y+21, r24 ; 0x15 - 802: 76 cf rjmp .-276 ; 0x6f0 - 804: 21 5f subi r18, 0xF1 ; 241 - 806: 3f 4f sbci r19, 0xFF ; 255 - 808: 9a cf rjmp .-204 ; 0x73e - 80a: 1c 8a std Y+20, r1 ; 0x14 - 80c: ad cf rjmp .-166 ; 0x768 - 80e: 21 5f subi r18, 0xF1 ; 241 - 810: 3f 4f sbci r19, 0xFF ; 255 - 812: c8 cf rjmp .-112 ; 0x7a4 +0000082a <__udivmodhi4_loop>: + 82a: aa 1f adc r26, r26 + 82c: bb 1f adc r27, r27 + 82e: a6 17 cp r26, r22 + 830: b7 07 cpc r27, r23 + 832: 10 f0 brcs .+4 ; 0x838 <__udivmodhi4_ep> + 834: a6 1b sub r26, r22 + 836: b7 0b sbc r27, r23 -00000814 <__udivmodhi4>: - 814: aa 1b sub r26, r26 - 816: bb 1b sub r27, r27 - 818: 51 e1 ldi r21, 0x11 ; 17 - 81a: 07 c0 rjmp .+14 ; 0x82a <__udivmodhi4_ep> +00000838 <__udivmodhi4_ep>: + 838: 88 1f adc r24, r24 + 83a: 99 1f adc r25, r25 + 83c: 5a 95 dec r21 + 83e: a9 f7 brne .-22 ; 0x82a <__udivmodhi4_loop> + 840: 80 95 com r24 + 842: 90 95 com r25 + 844: bc 01 movw r22, r24 + 846: cd 01 movw r24, r26 + 848: 08 95 ret -0000081c <__udivmodhi4_loop>: - 81c: aa 1f adc r26, r26 - 81e: bb 1f adc r27, r27 - 820: a6 17 cp r26, r22 - 822: b7 07 cpc r27, r23 - 824: 10 f0 brcs .+4 ; 0x82a <__udivmodhi4_ep> - 826: a6 1b sub r26, r22 - 828: b7 0b sbc r27, r23 +0000084a <__divmodhi4>: + 84a: 97 fb bst r25, 7 + 84c: 07 2e mov r0, r23 + 84e: 16 f4 brtc .+4 ; 0x854 <__divmodhi4+0xa> + 850: 00 94 com r0 + 852: 06 d0 rcall .+12 ; 0x860 <__divmodhi4_neg1> + 854: 77 fd sbrc r23, 7 + 856: 08 d0 rcall .+16 ; 0x868 <__divmodhi4_neg2> + 858: e4 df rcall .-56 ; 0x822 <__udivmodhi4> + 85a: 07 fc sbrc r0, 7 + 85c: 05 d0 rcall .+10 ; 0x868 <__divmodhi4_neg2> + 85e: 3e f4 brtc .+14 ; 0x86e <__divmodhi4_exit> -0000082a <__udivmodhi4_ep>: - 82a: 88 1f adc r24, r24 - 82c: 99 1f adc r25, r25 - 82e: 5a 95 dec r21 - 830: a9 f7 brne .-22 ; 0x81c <__udivmodhi4_loop> - 832: 80 95 com r24 - 834: 90 95 com r25 - 836: bc 01 movw r22, r24 - 838: cd 01 movw r24, r26 - 83a: 08 95 ret +00000860 <__divmodhi4_neg1>: + 860: 90 95 com r25 + 862: 81 95 neg r24 + 864: 9f 4f sbci r25, 0xFF ; 255 + 866: 08 95 ret -0000083c <__divmodhi4>: - 83c: 97 fb bst r25, 7 - 83e: 07 2e mov r0, r23 - 840: 16 f4 brtc .+4 ; 0x846 <__divmodhi4+0xa> - 842: 00 94 com r0 - 844: 06 d0 rcall .+12 ; 0x852 <__divmodhi4_neg1> - 846: 77 fd sbrc r23, 7 - 848: 08 d0 rcall .+16 ; 0x85a <__divmodhi4_neg2> - 84a: e4 df rcall .-56 ; 0x814 <__udivmodhi4> - 84c: 07 fc sbrc r0, 7 - 84e: 05 d0 rcall .+10 ; 0x85a <__divmodhi4_neg2> - 850: 3e f4 brtc .+14 ; 0x860 <__divmodhi4_exit> +00000868 <__divmodhi4_neg2>: + 868: 70 95 com r23 + 86a: 61 95 neg r22 + 86c: 7f 4f sbci r23, 0xFF ; 255 -00000852 <__divmodhi4_neg1>: - 852: 90 95 com r25 - 854: 81 95 neg r24 - 856: 9f 4f sbci r25, 0xFF ; 255 - 858: 08 95 ret +0000086e <__divmodhi4_exit>: + 86e: 08 95 ret -0000085a <__divmodhi4_neg2>: - 85a: 70 95 com r23 - 85c: 61 95 neg r22 - 85e: 7f 4f sbci r23, 0xFF ; 255 +00000870 <_exit>: + 870: f8 94 cli -00000860 <__divmodhi4_exit>: - 860: 08 95 ret - -00000862 <_exit>: - 862: f8 94 cli - -00000864 <__stop_program>: - 864: ff cf rjmp .-2 ; 0x864 <__stop_program> +00000872 <__stop_program>: + 872: ff cf rjmp .-2 ; 0x872 <__stop_program> diff --git a/firmware/dist/default/production/firmware.production.map b/firmware/dist/default/production/firmware.production.map index 45c2e8a..fcb19e3 100644 --- a/firmware/dist/default/production/firmware.production.map +++ b/firmware/dist/default/production/firmware.production.map @@ -3,7 +3,7 @@ Archive member included to satisfy reference by file (symbol) /opt/avr8-gnu-toolchain-linux_x86_64/bin/../lib/gcc/avr/7.3.0/avr25/libgcc.a(_udivmodhi4.o) build/default/production/main.o (__udivmodhi4) /opt/avr8-gnu-toolchain-linux_x86_64/bin/../lib/gcc/avr/7.3.0/avr25/libgcc.a(_divmodhi4.o) - build/default/production/main.o (__divmodhi4) + build/default/production/tm1637.o (__divmodhi4) /opt/avr8-gnu-toolchain-linux_x86_64/bin/../lib/gcc/avr/7.3.0/avr25/libgcc.a(_exit.o) /home/sergeyyarkov/.mchp_packs/Microchip/ATtiny_DFP/3.0.151/gcc/dev/attiny45/avr25/crtattiny45.o (exit) @@ -20,6 +20,12 @@ Discarded input sections .text 0x0000000000000000 0x0 build/default/production/dstemperature.o .data 0x0000000000000000 0x0 build/default/production/dstemperature.o .bss 0x0000000000000000 0x0 build/default/production/dstemperature.o + .text 0x0000000000000000 0x0 build/default/production/twi.o + .data 0x0000000000000000 0x0 build/default/production/twi.o + .bss 0x0000000000000000 0x0 build/default/production/twi.o + .text 0x0000000000000000 0x0 build/default/production/tm1637.o + .data 0x0000000000000000 0x0 build/default/production/tm1637.o + .bss 0x0000000000000000 0x0 build/default/production/tm1637.o .text 0x0000000000000000 0x0 /opt/avr8-gnu-toolchain-linux_x86_64/bin/../lib/gcc/avr/7.3.0/avr25/libgcc.a(_udivmodhi4.o) .data 0x0000000000000000 0x0 /opt/avr8-gnu-toolchain-linux_x86_64/bin/../lib/gcc/avr/7.3.0/avr25/libgcc.a(_udivmodhi4.o) .bss 0x0000000000000000 0x0 /opt/avr8-gnu-toolchain-linux_x86_64/bin/../lib/gcc/avr/7.3.0/avr25/libgcc.a(_udivmodhi4.o) @@ -83,6 +89,8 @@ LOAD /home/sergeyyarkov/.mchp_packs/Microchip/ATtiny_DFP/3.0.151/gcc/dev/attiny4 LOAD build/default/production/main.o LOAD build/default/production/onewire.o LOAD build/default/production/dstemperature.o +LOAD build/default/production/twi.o +LOAD build/default/production/tm1637.o 0x0000000000000001 __MPLAB_BUILD = 0x1 START GROUP LOAD /opt/avr8-gnu-toolchain-linux_x86_64/bin/../lib/gcc/avr/7.3.0/../../../../avr/lib/avr25/libm.a @@ -193,7 +201,7 @@ END GROUP .rela.plt *(.rela.plt) -.text 0x0000000000000000 0x866 +.text 0x0000000000000000 0x874 *(.vectors) .vectors 0x0000000000000000 0x1e /home/sergeyyarkov/.mchp_packs/Microchip/ATtiny_DFP/3.0.151/gcc/dev/attiny45/avr25/crtattiny45.o 0x0000000000000000 __vectors @@ -210,7 +218,7 @@ END GROUP *libc.a:*(.progmem.data) *(.progmem*) .progmem.data.display_symbols - 0x000000000000001e 0xa build/default/production/main.o + 0x000000000000001e 0xa build/default/production/tm1637.o 0x0000000000000028 . = ALIGN (0x2) *(.jumptables) *(.jumptables*) @@ -267,92 +275,92 @@ END GROUP 0x0000000000000038 __vector_10 0x000000000000003a . = ALIGN (0x2) *(.text.*) - .text.TWI_Start - 0x000000000000003a 0x1e build/default/production/main.o - 0x000000000000003a TWI_Start - .text.TWI_Stop - 0x0000000000000058 0x1e build/default/production/main.o - 0x0000000000000058 TWI_Stop - .text.TWI_WriteByte - 0x0000000000000076 0x68 build/default/production/main.o - 0x0000000000000076 TWI_WriteByte - .text.TM1637_WriteByte - 0x00000000000000de 0x10 build/default/production/main.o - 0x00000000000000de TM1637_WriteByte - .text.TM1637_Init - 0x00000000000000ee 0x34 build/default/production/main.o - 0x00000000000000ee TM1637_Init - .text.TM1637_DisplaySymbol - 0x0000000000000122 0x20 build/default/production/main.o - 0x0000000000000122 TM1637_DisplaySymbol - .text.TM1637_DisplayLine - 0x0000000000000142 0x14 build/default/production/main.o - 0x0000000000000142 TM1637_DisplayLine - .text.TM1637_DisplayInt - 0x0000000000000156 0x86 build/default/production/main.o - 0x0000000000000156 TM1637_DisplayInt - .text.get_int_length - 0x00000000000001dc 0x2c build/default/production/main.o - 0x00000000000001dc get_int_length - .text.TM1637_DisplayFixedNum - 0x0000000000000208 0x1e2 build/default/production/main.o - 0x0000000000000208 TM1637_DisplayFixedNum .text.SensorErrorHandler - 0x00000000000003ea 0x20 build/default/production/main.o - 0x00000000000003ea SensorErrorHandler - .text.main 0x000000000000040a 0x9c build/default/production/main.o - 0x000000000000040a main + 0x000000000000003a 0x20 build/default/production/main.o + 0x000000000000003a SensorErrorHandler + .text.main 0x000000000000005a 0x9e build/default/production/main.o + 0x000000000000005a main .text.OneWire_Presence - 0x00000000000004a6 0x36 build/default/production/onewire.o - 0x00000000000004a6 OneWire_Presence + 0x00000000000000f8 0x36 build/default/production/onewire.o + 0x00000000000000f8 OneWire_Presence .text.OneWire_WriteByte - 0x00000000000004dc 0x3a build/default/production/onewire.o - 0x00000000000004dc OneWire_WriteByte + 0x000000000000012e 0x3a build/default/production/onewire.o + 0x000000000000012e OneWire_WriteByte .text.OneWire_ReadByte - 0x0000000000000516 0x32 build/default/production/onewire.o - 0x0000000000000516 OneWire_ReadByte + 0x0000000000000168 0x32 build/default/production/onewire.o + 0x0000000000000168 OneWire_ReadByte .text.OneWire_SkipROM - 0x0000000000000548 0x10 build/default/production/onewire.o - 0x0000000000000548 OneWire_SkipROM + 0x000000000000019a 0x10 build/default/production/onewire.o + 0x000000000000019a OneWire_SkipROM .text.OneWire_ReadROM - 0x0000000000000558 0x32 build/default/production/onewire.o - 0x0000000000000558 OneWire_ReadROM + 0x00000000000001aa 0x32 build/default/production/onewire.o + 0x00000000000001aa OneWire_ReadROM .text.OneWire_CRC8_Update - 0x000000000000058a 0x2c build/default/production/onewire.o - 0x000000000000058a OneWire_CRC8_Update + 0x00000000000001dc 0x2c build/default/production/onewire.o + 0x00000000000001dc OneWire_CRC8_Update .text.DallasTemp_ReadScratchpad - 0x00000000000005b6 0x52 build/default/production/dstemperature.o - 0x00000000000005b6 DallasTemp_ReadScratchpad + 0x0000000000000208 0x52 build/default/production/dstemperature.o + 0x0000000000000208 DallasTemp_ReadScratchpad .text.DallasTemp_CopyScratchpad - 0x0000000000000608 0x12 build/default/production/dstemperature.o - 0x0000000000000608 DallasTemp_CopyScratchpad + 0x000000000000025a 0x1e build/default/production/dstemperature.o + 0x000000000000025a DallasTemp_CopyScratchpad .text.DallasTemp_WriteScratchpad - 0x000000000000061a 0x20 build/default/production/dstemperature.o - 0x000000000000061a DallasTemp_WriteScratchpad + 0x0000000000000278 0x20 build/default/production/dstemperature.o + 0x0000000000000278 DallasTemp_WriteScratchpad .text.DallasTemp_SetResolution - 0x000000000000063a 0x62 build/default/production/dstemperature.o - 0x000000000000063a DallasTemp_SetResolution + 0x0000000000000298 0x62 build/default/production/dstemperature.o + 0x0000000000000298 DallasTemp_SetResolution .text.DallasTemp_Convert - 0x000000000000069c 0x14 build/default/production/dstemperature.o - 0x000000000000069c DallasTemp_Convert + 0x00000000000002fa 0x14 build/default/production/dstemperature.o + 0x00000000000002fa DallasTemp_Convert .text.DallasTemp_CheckError - 0x00000000000006b0 0x34 build/default/production/dstemperature.o - 0x00000000000006b0 DallasTemp_CheckError + 0x000000000000030e 0x34 build/default/production/dstemperature.o + 0x000000000000030e DallasTemp_CheckError .text.DallasTemp_GetTemperature - 0x00000000000006e4 0x130 build/default/production/dstemperature.o - 0x00000000000006e4 DallasTemp_GetTemperature + 0x0000000000000342 0x130 build/default/production/dstemperature.o + 0x0000000000000342 DallasTemp_GetTemperature + .text.TWI_Start + 0x0000000000000472 0x1e build/default/production/twi.o + 0x0000000000000472 TWI_Start + .text.TWI_Stop + 0x0000000000000490 0x1e build/default/production/twi.o + 0x0000000000000490 TWI_Stop + .text.TWI_WriteByte + 0x00000000000004ae 0x68 build/default/production/twi.o + 0x00000000000004ae TWI_WriteByte + .text.get_int_length + 0x0000000000000516 0x2c build/default/production/tm1637.o + 0x0000000000000516 get_int_length + .text.TM1637_WriteByte + 0x0000000000000542 0x10 build/default/production/tm1637.o + 0x0000000000000542 TM1637_WriteByte + .text.TM1637_Init + 0x0000000000000552 0x34 build/default/production/tm1637.o + 0x0000000000000552 TM1637_Init + .text.TM1637_DisplaySymbol + 0x0000000000000586 0x20 build/default/production/tm1637.o + 0x0000000000000586 TM1637_DisplaySymbol + .text.TM1637_DisplayLine + 0x00000000000005a6 0x14 build/default/production/tm1637.o + 0x00000000000005a6 TM1637_DisplayLine + .text.TM1637_DisplayInt + 0x00000000000005ba 0x86 build/default/production/tm1637.o + 0x00000000000005ba TM1637_DisplayInt + .text.TM1637_DisplayFixedNum + 0x0000000000000640 0x1e2 build/default/production/tm1637.o + 0x0000000000000640 TM1637_DisplayFixedNum .text.libgcc.div - 0x0000000000000814 0x28 /opt/avr8-gnu-toolchain-linux_x86_64/bin/../lib/gcc/avr/7.3.0/avr25/libgcc.a(_udivmodhi4.o) - 0x0000000000000814 __udivmodhi4 + 0x0000000000000822 0x28 /opt/avr8-gnu-toolchain-linux_x86_64/bin/../lib/gcc/avr/7.3.0/avr25/libgcc.a(_udivmodhi4.o) + 0x0000000000000822 __udivmodhi4 .text.libgcc.div - 0x000000000000083c 0x26 /opt/avr8-gnu-toolchain-linux_x86_64/bin/../lib/gcc/avr/7.3.0/avr25/libgcc.a(_divmodhi4.o) - 0x000000000000083c __divmodhi4 - 0x000000000000083c _div - 0x0000000000000862 . = ALIGN (0x2) + 0x000000000000084a 0x26 /opt/avr8-gnu-toolchain-linux_x86_64/bin/../lib/gcc/avr/7.3.0/avr25/libgcc.a(_divmodhi4.o) + 0x000000000000084a __divmodhi4 + 0x000000000000084a _div + 0x0000000000000870 . = ALIGN (0x2) *(.fini9) - .fini9 0x0000000000000862 0x0 /opt/avr8-gnu-toolchain-linux_x86_64/bin/../lib/gcc/avr/7.3.0/avr25/libgcc.a(_exit.o) - 0x0000000000000862 exit - 0x0000000000000862 _exit + .fini9 0x0000000000000870 0x0 /opt/avr8-gnu-toolchain-linux_x86_64/bin/../lib/gcc/avr/7.3.0/avr25/libgcc.a(_exit.o) + 0x0000000000000870 exit + 0x0000000000000870 _exit *(.fini9) *(.fini8) *(.fini8) @@ -371,11 +379,11 @@ END GROUP *(.fini1) *(.fini1) *(.fini0) - .fini0 0x0000000000000862 0x4 /opt/avr8-gnu-toolchain-linux_x86_64/bin/../lib/gcc/avr/7.3.0/avr25/libgcc.a(_exit.o) + .fini0 0x0000000000000870 0x4 /opt/avr8-gnu-toolchain-linux_x86_64/bin/../lib/gcc/avr/7.3.0/avr25/libgcc.a(_exit.o) *(.fini0) - 0x0000000000000866 _etext = . + 0x0000000000000874 _etext = . -.data 0x0000000000800060 0x0 load address 0x0000000000000866 +.data 0x0000000000800060 0x0 load address 0x0000000000000874 [!provide] PROVIDE (__data_start, .) *(.data) *(.data*) @@ -393,8 +401,8 @@ END GROUP *(.bss*) *(COMMON) [!provide] PROVIDE (__bss_end, .) - 0x0000000000000866 __data_load_start = LOADADDR (.data) - 0x0000000000000866 __data_load_end = (__data_load_start + SIZEOF (.data)) + 0x0000000000000874 __data_load_start = LOADADDR (.data) + 0x0000000000000874 __data_load_end = (__data_load_start + SIZEOF (.data)) .noinit 0x0000000000800060 0x0 [!provide] PROVIDE (__noinit_start, .) @@ -446,6 +454,8 @@ END GROUP 0x31 (size before relaxing) .comment 0x0000000000000030 0x31 build/default/production/onewire.o .comment 0x0000000000000030 0x31 build/default/production/dstemperature.o + .comment 0x0000000000000030 0x31 build/default/production/twi.o + .comment 0x0000000000000030 0x31 build/default/production/tm1637.o .note.gnu.avr.deviceinfo 0x0000000000000000 0x3c diff --git a/firmware/dstemperature.c b/firmware/dstemperature.c index 0f6b86b..818ba70 100644 --- a/firmware/dstemperature.c +++ b/firmware/dstemperature.c @@ -21,7 +21,7 @@ uint8_t DallasTemp_CopyScratchpad(void) { if (!OneWire_Presence()) return 0; OneWire_SkipROM(); OneWire_WriteByte(DS18B20_CMD_CPSCRATCHPAD); -// _delay_ms(10); если паразитное питание то ждем 10мс и далее делать сброс + _delay_ms(10); // если паразитное питание то далее делать сброс return 1; } diff --git a/firmware/main.c b/firmware/main.c index b766a93..f756d86 100644 --- a/firmware/main.c +++ b/firmware/main.c @@ -1,241 +1,16 @@ #include #include -#include #include #include #include "onewire.h" +#include "twi.h" +#include "tm1637.h" #include "dstemperature.h" #define ENABLE_ERROR_HANDLER 1 -#define DDR_TWI DDRB -#define PORT_TWI PORTB -#define PIN_TWI PINB -#define PORT_TWI_DIO PB0 -#define PORT_TWI_CLK PB2 -#define PIN_TWI_DIO PINB0 -#define PIN_TWI_CLK PINB2 -#define TWI_DELAY 5 // uS - #define PIN_LED_ERR PB1 -#define TM1637_DIGITS_COUNT 3 - -#define TM1637_DATA_CMD 0x40 // Data command setting -#define TM1637_DISP_CMD 0x80 // Display and control command setting -#define TM1637_ADDR_CMD 0xc0 // Address command setting - -/** - * Data write and read mode settings - */ -#define TM1637_WR_DATA 0x00 // Write data to display register -#define TM1637_RD_SCAN_DATA 0x02 // Read key scan data - -/** - * Address adding mode setting - */ -#define TM1637_ADDR_AUTO 0x00 // Automatic address adding -#define TM1637_ADDR_FIXED 0x04 // Fix address - -/** - * Test mode setting (for internal) - */ -#define TM1637_MODE_NORMAL 0x00 // Normal mode -#define TM1637_MODE_TEST 0x08 // Test mode - -#define TM1637_DISP_OFF 0x00 // Display off -#define TM1637_DISP_ON 0x08 // Display on - -#define TM1637_BRIGHTNESS_1 1 -#define TM1637_BRIGHTNESS_2 2 -#define TM1637_BRIGHTNESS_3 3 -#define TM1637_BRIGHTNESS_4 4 -#define TM1637_BRIGHTNESS_5 5 -#define TM1637_BRIGHTNESS_6 6 -#define TM1637_BRIGHTNESS_7 7 - -#define dio_high() (PORT_TWI |= (_BV(PORT_TWI_DIO))) -#define dio_low() (PORT_TWI &= (~_BV(PORT_TWI_DIO))) -#define dio_input() (DDR_TWI &= (~_BV(PORT_TWI_DIO))) -#define dio_output() (DDR_TWI |= (_BV(PORT_TWI_DIO))) -#define clk_high() (PORT_TWI |= (_BV(PORT_TWI_CLK))) -#define clk_low() (PORT_TWI &= (~_BV(PORT_TWI_CLK))) - -#define get_symbol(index) (pgm_read_byte_near(&display_symbols[index])) - -static const uint8_t display_symbols[] PROGMEM = -{ - 0x3F, // 0 - 0x06, // 1 - 0x5B, // 2 - 0x4F, // 3 - 0x66, // 4 - 0x6D, // 5 - 0x7D, // 6 - 0x07, // 7 - 0x7F, // 8 - 0x6F, // 9 -}; - -void TWI_Start(void) { - cli(); - dio_high(); - clk_high(); - _delay_us(TWI_DELAY); - dio_low(); - _delay_us(TWI_DELAY); - clk_low(); - sei(); -} - -void TWI_Stop(void) { - cli(); - clk_low(); - dio_low(); - _delay_us(TWI_DELAY); - clk_high(); - _delay_us(TWI_DELAY); - dio_high(); - sei(); -} - -uint8_t TWI_WriteByte(uint8_t byte) { - uint8_t i = 8; - uint8_t ack = 0; - - cli(); - - _delay_us(TWI_DELAY); - - do { - clk_low(); - _delay_us(TWI_DELAY); - byte & 0x01 ? dio_high() : dio_low(); - byte >>= 1; - _delay_us(TWI_DELAY); - clk_high(); - _delay_us(TWI_DELAY); - } while (--i); - - dio_input(); - clk_low(); - dio_high(); - - _delay_us(TWI_DELAY); - ack = bit_is_clear(PIN_TWI, PIN_TWI_DIO); - - clk_high(); - _delay_us(TWI_DELAY); - clk_low(); - _delay_us(TWI_DELAY); - dio_output(); - - sei(); - - return ack; -} - -void TM1637_WriteByte(uint8_t data) { - TWI_Start(); - TWI_WriteByte(data); - TWI_Stop(); -} - -void TM1637_Init(uint8_t DIO_PIN, uint8_t CLK_PIN, uint8_t brightness, uint8_t enabled) { - DDR_TWI |= _BV(DIO_PIN) | _BV(CLK_PIN); - PORT_TWI &= ~(_BV(DIO_PIN) | _BV(CLK_PIN)); - TM1637_WriteByte(TM1637_DISP_CMD | (enabled | brightness)); -} - -void TM1637_DisplaySymbol(uint8_t symbol, uint8_t pos) { - TM1637_WriteByte(TM1637_DATA_CMD); - TWI_Start(); - TWI_WriteByte(TM1637_ADDR_CMD | pos); - TWI_WriteByte(symbol); - TWI_Stop(); -} - -void TM1637_DisplayLine(void) { - uint8_t i = TM1637_DIGITS_COUNT; - do { - TM1637_DisplaySymbol(0x40, i - 1); - } while (--i); -} - -void TM1637_DisplayInt(int16_t num) { - uint8_t is_signed = num < 0; - int16_t tmp = num > 999 ? 999 : num; - uint8_t i = TM1637_DIGITS_COUNT; - - if (is_signed) { - tmp = -tmp; - TM1637_DisplaySymbol(0x40, 0); - } - - do { - if (is_signed && i == 1) break; - TM1637_DisplaySymbol(pgm_read_byte_near(&display_symbols[tmp % 10]), i - 1); - tmp /= 10; - } while (--i); -} - -uint8_t get_int_length(int16_t num) { - uint8_t l = 1; - if (num < 0) num = -num; - while (num > 9) { - num /= 10; - l++; - } - return l; -} - -void TM1637_DisplayFixedNum(int16_t num, uint8_t frac, uint8_t presicion, uint8_t sign) { - uint8_t is_signed = (num < 0) || (sign); - num = num > 999 ? 999 : num; - - if (is_signed) { - num = -num; - } - - uint8_t length = get_int_length(num); - uint8_t is_overflow = length + 1 == TM1637_DIGITS_COUNT; - uint8_t i = TM1637_DIGITS_COUNT, j = is_overflow && is_signed ? 1 : 0; - uint8_t buffer[TM1637_DIGITS_COUNT]; - - do { - buffer[i - 1] = num % 10; - num /= 10; - } while (--i); - - if (length != 1) { - i = TM1637_DIGITS_COUNT - length; - } else { - i = 1; - } - - while (i < TM1637_DIGITS_COUNT) { - if (is_signed && j == 0) { - TM1637_DisplaySymbol(0x40, 0); - i++; - j++; - continue; - } - TM1637_DisplaySymbol( - (j == TM1637_DIGITS_COUNT - 1 - presicion && TM1637_DIGITS_COUNT != length) - ? get_symbol(buffer[i]) | (is_overflow && is_signed ? 0 : 0x80) // точка - : (!is_signed && - ((buffer[0] == 0 && buffer[i] == 0 && buffer[i + 1] != 0) || (length == 1 && i != TM1637_DIGITS_COUNT - 1)) // убираем вывод нулей - ? 0x00 - : get_symbol(buffer[i]) - ), - j); - i++; - j++; - } - - TM1637_DisplaySymbol(get_symbol(frac), j); -} - /** * Обработка ошибки одного датчика * @param Sensor - датчик @@ -278,6 +53,8 @@ int main(void) { _delay_ms(100); + sei(); + while (1) { #if ENABLE_ERROR_HANDLER if (SensorErrorHandler(&Sensor_01)) { diff --git a/firmware/nbproject/Makefile-default.mk b/firmware/nbproject/Makefile-default.mk index b62094b..6fcd1a3 100644 --- a/firmware/nbproject/Makefile-default.mk +++ b/firmware/nbproject/Makefile-default.mk @@ -57,17 +57,17 @@ OBJECTDIR=build/${CND_CONF}/${IMAGE_TYPE} DISTDIR=dist/${CND_CONF}/${IMAGE_TYPE} # Source Files Quoted if spaced -SOURCEFILES_QUOTED_IF_SPACED=main.c onewire.c dstemperature.c +SOURCEFILES_QUOTED_IF_SPACED=main.c onewire.c dstemperature.c twi.c tm1637.c # Object Files Quoted if spaced -OBJECTFILES_QUOTED_IF_SPACED=${OBJECTDIR}/main.o ${OBJECTDIR}/onewire.o ${OBJECTDIR}/dstemperature.o -POSSIBLE_DEPFILES=${OBJECTDIR}/main.o.d ${OBJECTDIR}/onewire.o.d ${OBJECTDIR}/dstemperature.o.d +OBJECTFILES_QUOTED_IF_SPACED=${OBJECTDIR}/main.o ${OBJECTDIR}/onewire.o ${OBJECTDIR}/dstemperature.o ${OBJECTDIR}/twi.o ${OBJECTDIR}/tm1637.o +POSSIBLE_DEPFILES=${OBJECTDIR}/main.o.d ${OBJECTDIR}/onewire.o.d ${OBJECTDIR}/dstemperature.o.d ${OBJECTDIR}/twi.o.d ${OBJECTDIR}/tm1637.o.d # Object Files -OBJECTFILES=${OBJECTDIR}/main.o ${OBJECTDIR}/onewire.o ${OBJECTDIR}/dstemperature.o +OBJECTFILES=${OBJECTDIR}/main.o ${OBJECTDIR}/onewire.o ${OBJECTDIR}/dstemperature.o ${OBJECTDIR}/twi.o ${OBJECTDIR}/tm1637.o # Source Files -SOURCEFILES=main.c onewire.c dstemperature.c +SOURCEFILES=main.c onewire.c dstemperature.c twi.c tm1637.c # Pack Options PACK_COMPILER_OPTIONS=-I "${DFP_DIR}/include" @@ -128,6 +128,18 @@ ${OBJECTDIR}/dstemperature.o: dstemperature.c .generated_files/flags/default/69 @${RM} ${OBJECTDIR}/dstemperature.o ${MP_CC} $(MP_EXTRA_CC_PRE) -mmcu=attiny45 ${PACK_COMPILER_OPTIONS} ${PACK_COMMON_OPTIONS} -g -DDEBUG -gdwarf-2 -x c -c -D__$(MP_PROCESSOR_OPTION)__ -funsigned-char -funsigned-bitfields -O1 -ffunction-sections -fdata-sections -fpack-struct -fshort-enums -Wall -MD -MP -MF "${OBJECTDIR}/dstemperature.o.d" -MT "${OBJECTDIR}/dstemperature.o.d" -MT ${OBJECTDIR}/dstemperature.o -o ${OBJECTDIR}/dstemperature.o dstemperature.c -DXPRJ_default=$(CND_CONF) $(COMPARISON_BUILD) -DF_CPU=8000000UL +${OBJECTDIR}/twi.o: twi.c .generated_files/flags/default/d596a418b2941f91dfcb39d40e0cfd3f525afd03 .generated_files/flags/default/12c67fe6cdcd6963bda122da91f9033805394b5f + @${MKDIR} "${OBJECTDIR}" + @${RM} ${OBJECTDIR}/twi.o.d + @${RM} ${OBJECTDIR}/twi.o + ${MP_CC} $(MP_EXTRA_CC_PRE) -mmcu=attiny45 ${PACK_COMPILER_OPTIONS} ${PACK_COMMON_OPTIONS} -g -DDEBUG -gdwarf-2 -x c -c -D__$(MP_PROCESSOR_OPTION)__ -funsigned-char -funsigned-bitfields -O1 -ffunction-sections -fdata-sections -fpack-struct -fshort-enums -Wall -MD -MP -MF "${OBJECTDIR}/twi.o.d" -MT "${OBJECTDIR}/twi.o.d" -MT ${OBJECTDIR}/twi.o -o ${OBJECTDIR}/twi.o twi.c -DXPRJ_default=$(CND_CONF) $(COMPARISON_BUILD) -DF_CPU=8000000UL + +${OBJECTDIR}/tm1637.o: tm1637.c .generated_files/flags/default/8caab7d1f321339335cad158b786d3a8a151da8d .generated_files/flags/default/12c67fe6cdcd6963bda122da91f9033805394b5f + @${MKDIR} "${OBJECTDIR}" + @${RM} ${OBJECTDIR}/tm1637.o.d + @${RM} ${OBJECTDIR}/tm1637.o + ${MP_CC} $(MP_EXTRA_CC_PRE) -mmcu=attiny45 ${PACK_COMPILER_OPTIONS} ${PACK_COMMON_OPTIONS} -g -DDEBUG -gdwarf-2 -x c -c -D__$(MP_PROCESSOR_OPTION)__ -funsigned-char -funsigned-bitfields -O1 -ffunction-sections -fdata-sections -fpack-struct -fshort-enums -Wall -MD -MP -MF "${OBJECTDIR}/tm1637.o.d" -MT "${OBJECTDIR}/tm1637.o.d" -MT ${OBJECTDIR}/tm1637.o -o ${OBJECTDIR}/tm1637.o tm1637.c -DXPRJ_default=$(CND_CONF) $(COMPARISON_BUILD) -DF_CPU=8000000UL + else ${OBJECTDIR}/main.o: main.c .generated_files/flags/default/e8b0a82687c5817bdc823aa0198151107a4c0b07 .generated_files/flags/default/12c67fe6cdcd6963bda122da91f9033805394b5f @${MKDIR} "${OBJECTDIR}" @@ -147,6 +159,18 @@ ${OBJECTDIR}/dstemperature.o: dstemperature.c .generated_files/flags/default/dd @${RM} ${OBJECTDIR}/dstemperature.o ${MP_CC} $(MP_EXTRA_CC_PRE) -mmcu=attiny45 ${PACK_COMPILER_OPTIONS} ${PACK_COMMON_OPTIONS} -x c -c -D__$(MP_PROCESSOR_OPTION)__ -funsigned-char -funsigned-bitfields -O1 -ffunction-sections -fdata-sections -fpack-struct -fshort-enums -Wall -MD -MP -MF "${OBJECTDIR}/dstemperature.o.d" -MT "${OBJECTDIR}/dstemperature.o.d" -MT ${OBJECTDIR}/dstemperature.o -o ${OBJECTDIR}/dstemperature.o dstemperature.c -DXPRJ_default=$(CND_CONF) $(COMPARISON_BUILD) -DF_CPU=8000000UL +${OBJECTDIR}/twi.o: twi.c .generated_files/flags/default/4301bd1a2a4981da7b459539bb87110266e22c69 .generated_files/flags/default/12c67fe6cdcd6963bda122da91f9033805394b5f + @${MKDIR} "${OBJECTDIR}" + @${RM} ${OBJECTDIR}/twi.o.d + @${RM} ${OBJECTDIR}/twi.o + ${MP_CC} $(MP_EXTRA_CC_PRE) -mmcu=attiny45 ${PACK_COMPILER_OPTIONS} ${PACK_COMMON_OPTIONS} -x c -c -D__$(MP_PROCESSOR_OPTION)__ -funsigned-char -funsigned-bitfields -O1 -ffunction-sections -fdata-sections -fpack-struct -fshort-enums -Wall -MD -MP -MF "${OBJECTDIR}/twi.o.d" -MT "${OBJECTDIR}/twi.o.d" -MT ${OBJECTDIR}/twi.o -o ${OBJECTDIR}/twi.o twi.c -DXPRJ_default=$(CND_CONF) $(COMPARISON_BUILD) -DF_CPU=8000000UL + +${OBJECTDIR}/tm1637.o: tm1637.c .generated_files/flags/default/14e85bf2b5c38862ce0be771f34802e5d6a15ad1 .generated_files/flags/default/12c67fe6cdcd6963bda122da91f9033805394b5f + @${MKDIR} "${OBJECTDIR}" + @${RM} ${OBJECTDIR}/tm1637.o.d + @${RM} ${OBJECTDIR}/tm1637.o + ${MP_CC} $(MP_EXTRA_CC_PRE) -mmcu=attiny45 ${PACK_COMPILER_OPTIONS} ${PACK_COMMON_OPTIONS} -x c -c -D__$(MP_PROCESSOR_OPTION)__ -funsigned-char -funsigned-bitfields -O1 -ffunction-sections -fdata-sections -fpack-struct -fshort-enums -Wall -MD -MP -MF "${OBJECTDIR}/tm1637.o.d" -MT "${OBJECTDIR}/tm1637.o.d" -MT ${OBJECTDIR}/tm1637.o -o ${OBJECTDIR}/tm1637.o tm1637.c -DXPRJ_default=$(CND_CONF) $(COMPARISON_BUILD) -DF_CPU=8000000UL + endif # ------------------------------------------------------------------------------------ diff --git a/firmware/nbproject/Makefile-genesis.properties b/firmware/nbproject/Makefile-genesis.properties index 19897fe..905af69 100644 --- a/firmware/nbproject/Makefile-genesis.properties +++ b/firmware/nbproject/Makefile-genesis.properties @@ -1,12 +1,12 @@ # -#Mon Aug 07 20:30:36 MSK 2023 +#Wed Aug 09 22:08:43 MSK 2023 default.languagetoolchain.version=7.3.0 default.Pack.dfplocation=/home/sergeyyarkov/.mchp_packs/Microchip/ATtiny_DFP/3.0.151 default.com-microchip-mplab-nbide-toolchain-avr-AVRLanguageToolchain.md5=f7c8f2a9c7d7748a6cb97af5c32efadd conf.ids=default default.languagetoolchain.dir=/opt/avr8-gnu-toolchain-linux_x86_64/bin -host.id=hdtj-iuke-f -configurations-xml=d1bd56b6b541f41583a2af96dac4f51f +host.id=qc3j-gmtd-y +configurations-xml=e6919adf631f390ddd7b4242d05bcc5f default.com-microchip-mplab-mdbcore-snap-SnapToolImpl.md5=eaa336cefb7fc46db8b50b7b2b6e54ca com-microchip-mplab-nbide-embedded-makeproject-MakeProject.md5=6e02ca5e9f5042ffd365b42ab82d3a9b user-defined-mime-resolver-xml=none diff --git a/firmware/nbproject/configurations.xml b/firmware/nbproject/configurations.xml index 97541a9..6c9a0b6 100644 --- a/firmware/nbproject/configurations.xml +++ b/firmware/nbproject/configurations.xml @@ -6,6 +6,8 @@ projectFiles="true"> onewire.h dstemperature.h + twi.h + tm1637.h main.c onewire.c dstemperature.c + twi.c + tm1637.c #include #include #include diff --git a/firmware/tm1637.c b/firmware/tm1637.c new file mode 100644 index 0000000..a6005a6 --- /dev/null +++ b/firmware/tm1637.c @@ -0,0 +1,118 @@ +#include "tm1637.h" + +#define get_symbol(index) (pgm_read_byte_near(&display_symbols[index])) + +static const uint8_t display_symbols[] PROGMEM = +{ + 0x3F, // 0 + 0x06, // 1 + 0x5B, // 2 + 0x4F, // 3 + 0x66, // 4 + 0x6D, // 5 + 0x7D, // 6 + 0x07, // 7 + 0x7F, // 8 + 0x6F, // 9 +}; + +uint8_t get_int_length(int16_t num) { + uint8_t l = 1; + if (num < 0) num = -num; + while (num > 9) { + num /= 10; + l++; + } + return l; +} + +void TM1637_WriteByte(uint8_t data) { + TWI_Start(); + TWI_WriteByte(data); + TWI_Stop(); +} + +void TM1637_Init(uint8_t DIO_PIN, uint8_t CLK_PIN, uint8_t brightness, uint8_t enabled) { + DDR_TWI |= _BV(DIO_PIN) | _BV(CLK_PIN); + PORT_TWI &= ~(_BV(DIO_PIN) | _BV(CLK_PIN)); + TM1637_WriteByte(TM1637_DISP_CMD | (enabled | brightness)); +} + +void TM1637_DisplaySymbol(uint8_t symbol, uint8_t pos) { + TM1637_WriteByte(TM1637_DATA_CMD); + TWI_Start(); + TWI_WriteByte(TM1637_ADDR_CMD | pos); + TWI_WriteByte(symbol); + TWI_Stop(); +} + +void TM1637_DisplayLine(void) { + uint8_t i = TM1637_DIGITS_COUNT; + do { + TM1637_DisplaySymbol(0x40, i - 1); + } while (--i); +} + +void TM1637_DisplayInt(int16_t num) { + uint8_t is_signed = num < 0; + int16_t tmp = num > 999 ? 999 : num; + uint8_t i = TM1637_DIGITS_COUNT; + + if (is_signed) { + tmp = -tmp; + TM1637_DisplaySymbol(0x40, 0); + } + + do { + if (is_signed && i == 1) break; + TM1637_DisplaySymbol(pgm_read_byte_near(&display_symbols[tmp % 10]), i - 1); + tmp /= 10; + } while (--i); +} + +void TM1637_DisplayFixedNum(int16_t num, uint8_t frac, uint8_t presicion, uint8_t sign) { + uint8_t is_signed = (num < 0) || (sign); + num = num > 999 ? 999 : num; + + if (is_signed) { + num = -num; + } + + uint8_t length = get_int_length(num); + uint8_t is_overflow = length + 1 == TM1637_DIGITS_COUNT; + uint8_t i = TM1637_DIGITS_COUNT, j = is_overflow && is_signed ? 1 : 0; + uint8_t buffer[TM1637_DIGITS_COUNT]; + + do { + buffer[i - 1] = num % 10; + num /= 10; + } while (--i); + + if (length != 1) { + i = TM1637_DIGITS_COUNT - length; + } else { + i = 1; + } + + while (i < TM1637_DIGITS_COUNT) { + if (is_signed && j == 0) { + TM1637_DisplaySymbol(0x40, 0); + i++; + j++; + continue; + } + TM1637_DisplaySymbol( + (j == TM1637_DIGITS_COUNT - 1 - presicion && TM1637_DIGITS_COUNT != length) + ? get_symbol(buffer[i]) | (is_overflow && is_signed ? 0 : 0x80) // точка + : (!is_signed && + ((buffer[0] == 0 && buffer[i] == 0 && buffer[i + 1] != 0) || (length == 1 && i != TM1637_DIGITS_COUNT - 1)) // убираем вывод нулей + ? 0x00 + : get_symbol(buffer[i]) + ), + j); + i++; + j++; + } + + TM1637_DisplaySymbol(get_symbol(frac), j); +} diff --git a/firmware/tm1637.h b/firmware/tm1637.h new file mode 100644 index 0000000..a3f0dde --- /dev/null +++ b/firmware/tm1637.h @@ -0,0 +1,50 @@ +#include +#include "twi.h" + +#define TM1637_DIGITS_COUNT 3 + +#define TM1637_DATA_CMD 0x40 // Data command setting +#define TM1637_DISP_CMD 0x80 // Display and control command setting +#define TM1637_ADDR_CMD 0xc0 // Address command setting + +/** + * Data write and read mode settings + */ +#define TM1637_WR_DATA 0x00 // Write data to display register +#define TM1637_RD_SCAN_DATA 0x02 // Read key scan data + +/** + * Address adding mode setting + */ +#define TM1637_ADDR_AUTO 0x00 // Automatic address adding +#define TM1637_ADDR_FIXED 0x04 // Fix address + +/** + * Test mode setting (for internal) + */ +#define TM1637_MODE_NORMAL 0x00 // Normal mode +#define TM1637_MODE_TEST 0x08 // Test mode + +#define TM1637_DISP_OFF 0x00 // Display off +#define TM1637_DISP_ON 0x08 // Display on + +#define TM1637_BRIGHTNESS_1 1 +#define TM1637_BRIGHTNESS_2 2 +#define TM1637_BRIGHTNESS_3 3 +#define TM1637_BRIGHTNESS_4 4 +#define TM1637_BRIGHTNESS_5 5 +#define TM1637_BRIGHTNESS_6 6 +#define TM1637_BRIGHTNESS_7 7 + +#ifndef TM1637_H +#define TM1637_H + +void TM1637_WriteByte(uint8_t data); +void TM1637_Init(uint8_t DIO_PIN, uint8_t CLK_PIN, uint8_t brightness, uint8_t enabled); +void TM1637_DisplaySymbol(uint8_t symbol, uint8_t pos); +void TM1637_DisplayLine(void); +void TM1637_DisplayInt(int16_t num); +void TM1637_DisplayFixedNum(int16_t num, uint8_t frac, uint8_t presicion, uint8_t sign); + +#endif /* TM1637_H */ + diff --git a/firmware/twi.c b/firmware/twi.c new file mode 100644 index 0000000..6825b37 --- /dev/null +++ b/firmware/twi.c @@ -0,0 +1,59 @@ +#include "twi.h" + +void TWI_Start(void) { + cli(); + dio_high(); + clk_high(); + _delay_us(TWI_DELAY); + dio_low(); + _delay_us(TWI_DELAY); + clk_low(); + sei(); +} + +void TWI_Stop(void) { + cli(); + clk_low(); + dio_low(); + _delay_us(TWI_DELAY); + clk_high(); + _delay_us(TWI_DELAY); + dio_high(); + sei(); +} + +uint8_t TWI_WriteByte(uint8_t byte) { + uint8_t i = 8; + uint8_t ack = 0; + + cli(); + + _delay_us(TWI_DELAY); + + do { + clk_low(); + _delay_us(TWI_DELAY); + byte & 0x01 ? dio_high() : dio_low(); + byte >>= 1; + _delay_us(TWI_DELAY); + clk_high(); + _delay_us(TWI_DELAY); + } while (--i); + + dio_input(); + clk_low(); + dio_high(); + + _delay_us(TWI_DELAY); + ack = bit_is_clear(PIN_TWI, PIN_TWI_DIO); + + clk_high(); + _delay_us(TWI_DELAY); + clk_low(); + _delay_us(TWI_DELAY); + dio_output(); + + sei(); + + return ack; +} \ No newline at end of file diff --git a/firmware/twi.h b/firmware/twi.h new file mode 100644 index 0000000..c6dd65a --- /dev/null +++ b/firmware/twi.h @@ -0,0 +1,29 @@ +#include +#include +#include + +#define DDR_TWI DDRB +#define PORT_TWI PORTB +#define PIN_TWI PINB +#define PORT_TWI_DIO PB0 +#define PORT_TWI_CLK PB2 +#define PIN_TWI_DIO PINB0 +#define PIN_TWI_CLK PINB2 +#define TWI_DELAY 5 // uS + +#define dio_high() (PORT_TWI |= (_BV(PORT_TWI_DIO))) +#define dio_low() (PORT_TWI &= (~_BV(PORT_TWI_DIO))) +#define dio_input() (DDR_TWI &= (~_BV(PORT_TWI_DIO))) +#define dio_output() (DDR_TWI |= (_BV(PORT_TWI_DIO))) +#define clk_high() (PORT_TWI |= (_BV(PORT_TWI_CLK))) +#define clk_low() (PORT_TWI &= (~_BV(PORT_TWI_CLK))) + +#ifndef TWI_H +#define TWI_H + +void TWI_Start(void); +void TWI_Stop(void); +uint8_t TWI_WriteByte(uint8_t byte); + +#endif /* TWI_H */ +