diff --git a/storno_cqp6xx_digital_xtal/Debug/Makefile b/storno_cqp6xx_digital_xtal/Debug/Makefile index 64661ba..798c562 100644 --- a/storno_cqp6xx_digital_xtal/Debug/Makefile +++ b/storno_cqp6xx_digital_xtal/Debug/Makefile @@ -117,56 +117,56 @@ LINKER_SCRIPT_DEP+= avr_eeprom_driver/avr_eeprom_driver.o: ../avr_eeprom_driver/avr_eeprom_driver.c @echo Building file: $< @echo Invoking: AVR/GNU C Compiler : 5.4.0 - $(QUOTE)C:\Program Files (x86)\Atmel\Studio\7.0\toolchain\avr8\avr8-gnu-toolchain\bin\avr-gcc.exe$(QUOTE) -x c -funsigned-char -funsigned-bitfields -DDEBUG -I"C:\Program Files (x86)\Atmel\Studio\7.0\Packs\atmel\ATtiny_DFP\1.10.348\include" -O2 -ffunction-sections -fdata-sections -fpack-struct -fshort-enums -g2 -Wall -mmcu=attiny402 -B "C:\Program Files (x86)\Atmel\Studio\7.0\Packs\atmel\ATtiny_DFP\1.10.348\gcc\dev\attiny402" -c -std=gnu99 -MD -MP -MF "$(@:%.o=%.d)" -MT"$(@:%.o=%.d)" -MT"$(@:%.o=%.o)" -o "$@" "$<" + $(QUOTE)C:\Program Files (x86)\Atmel\Studio\7.0\toolchain\avr8\avr8-gnu-toolchain\bin\avr-gcc.exe$(QUOTE) -x c -funsigned-char -funsigned-bitfields -DDEBUG -I"C:\Program Files (x86)\Atmel\Studio\7.0\Packs\atmel\ATtiny_DFP\1.10.348\include" -Os -ffunction-sections -fdata-sections -fpack-struct -fshort-enums -g2 -Wall -mmcu=attiny402 -B "C:\Program Files (x86)\Atmel\Studio\7.0\Packs\atmel\ATtiny_DFP\1.10.348\gcc\dev\attiny402" -c -std=gnu99 -MD -MP -MF "$(@:%.o=%.d)" -MT"$(@:%.o=%.d)" -MT"$(@:%.o=%.o)" -o "$@" "$<" @echo Finished building: $< avr_gpio_driver/avr_gpio.o: ../avr_gpio_driver/avr_gpio.c @echo Building file: $< @echo Invoking: AVR/GNU C Compiler : 5.4.0 - $(QUOTE)C:\Program Files (x86)\Atmel\Studio\7.0\toolchain\avr8\avr8-gnu-toolchain\bin\avr-gcc.exe$(QUOTE) -x c -funsigned-char -funsigned-bitfields -DDEBUG -I"C:\Program Files (x86)\Atmel\Studio\7.0\Packs\atmel\ATtiny_DFP\1.10.348\include" -O2 -ffunction-sections -fdata-sections -fpack-struct -fshort-enums -g2 -Wall -mmcu=attiny402 -B "C:\Program Files (x86)\Atmel\Studio\7.0\Packs\atmel\ATtiny_DFP\1.10.348\gcc\dev\attiny402" -c -std=gnu99 -MD -MP -MF "$(@:%.o=%.d)" -MT"$(@:%.o=%.d)" -MT"$(@:%.o=%.o)" -o "$@" "$<" + $(QUOTE)C:\Program Files (x86)\Atmel\Studio\7.0\toolchain\avr8\avr8-gnu-toolchain\bin\avr-gcc.exe$(QUOTE) -x c -funsigned-char -funsigned-bitfields -DDEBUG -I"C:\Program Files (x86)\Atmel\Studio\7.0\Packs\atmel\ATtiny_DFP\1.10.348\include" -Os -ffunction-sections -fdata-sections -fpack-struct -fshort-enums -g2 -Wall -mmcu=attiny402 -B "C:\Program Files (x86)\Atmel\Studio\7.0\Packs\atmel\ATtiny_DFP\1.10.348\gcc\dev\attiny402" -c -std=gnu99 -MD -MP -MF "$(@:%.o=%.d)" -MT"$(@:%.o=%.d)" -MT"$(@:%.o=%.o)" -o "$@" "$<" @echo Finished building: $< avr_i2c_driver/avr_i2c.o: ../avr_i2c_driver/avr_i2c.c @echo Building file: $< @echo Invoking: AVR/GNU C Compiler : 5.4.0 - $(QUOTE)C:\Program Files (x86)\Atmel\Studio\7.0\toolchain\avr8\avr8-gnu-toolchain\bin\avr-gcc.exe$(QUOTE) -x c -funsigned-char -funsigned-bitfields -DDEBUG -I"C:\Program Files (x86)\Atmel\Studio\7.0\Packs\atmel\ATtiny_DFP\1.10.348\include" -O2 -ffunction-sections -fdata-sections -fpack-struct -fshort-enums -g2 -Wall -mmcu=attiny402 -B "C:\Program Files (x86)\Atmel\Studio\7.0\Packs\atmel\ATtiny_DFP\1.10.348\gcc\dev\attiny402" -c -std=gnu99 -MD -MP -MF "$(@:%.o=%.d)" -MT"$(@:%.o=%.d)" -MT"$(@:%.o=%.o)" -o "$@" "$<" + $(QUOTE)C:\Program Files (x86)\Atmel\Studio\7.0\toolchain\avr8\avr8-gnu-toolchain\bin\avr-gcc.exe$(QUOTE) -x c -funsigned-char -funsigned-bitfields -DDEBUG -I"C:\Program Files (x86)\Atmel\Studio\7.0\Packs\atmel\ATtiny_DFP\1.10.348\include" -Os -ffunction-sections -fdata-sections -fpack-struct -fshort-enums -g2 -Wall -mmcu=attiny402 -B "C:\Program Files (x86)\Atmel\Studio\7.0\Packs\atmel\ATtiny_DFP\1.10.348\gcc\dev\attiny402" -c -std=gnu99 -MD -MP -MF "$(@:%.o=%.d)" -MT"$(@:%.o=%.d)" -MT"$(@:%.o=%.o)" -o "$@" "$<" @echo Finished building: $< avr_uart_driver/avr_uart.o: ../avr_uart_driver/avr_uart.c @echo Building file: $< @echo Invoking: AVR/GNU C Compiler : 5.4.0 - $(QUOTE)C:\Program Files (x86)\Atmel\Studio\7.0\toolchain\avr8\avr8-gnu-toolchain\bin\avr-gcc.exe$(QUOTE) -x c -funsigned-char -funsigned-bitfields -DDEBUG -I"C:\Program Files (x86)\Atmel\Studio\7.0\Packs\atmel\ATtiny_DFP\1.10.348\include" -O2 -ffunction-sections -fdata-sections -fpack-struct -fshort-enums -g2 -Wall -mmcu=attiny402 -B "C:\Program Files (x86)\Atmel\Studio\7.0\Packs\atmel\ATtiny_DFP\1.10.348\gcc\dev\attiny402" -c -std=gnu99 -MD -MP -MF "$(@:%.o=%.d)" -MT"$(@:%.o=%.d)" -MT"$(@:%.o=%.o)" -o "$@" "$<" + $(QUOTE)C:\Program Files (x86)\Atmel\Studio\7.0\toolchain\avr8\avr8-gnu-toolchain\bin\avr-gcc.exe$(QUOTE) -x c -funsigned-char -funsigned-bitfields -DDEBUG -I"C:\Program Files (x86)\Atmel\Studio\7.0\Packs\atmel\ATtiny_DFP\1.10.348\include" -Os -ffunction-sections -fdata-sections -fpack-struct -fshort-enums -g2 -Wall -mmcu=attiny402 -B "C:\Program Files (x86)\Atmel\Studio\7.0\Packs\atmel\ATtiny_DFP\1.10.348\gcc\dev\attiny402" -c -std=gnu99 -MD -MP -MF "$(@:%.o=%.d)" -MT"$(@:%.o=%.d)" -MT"$(@:%.o=%.o)" -o "$@" "$<" @echo Finished building: $< cm_msg/cm_msg.o: ../cm_msg/cm_msg.c @echo Building file: $< @echo Invoking: AVR/GNU C Compiler : 5.4.0 - $(QUOTE)C:\Program Files (x86)\Atmel\Studio\7.0\toolchain\avr8\avr8-gnu-toolchain\bin\avr-gcc.exe$(QUOTE) -x c -funsigned-char -funsigned-bitfields -DDEBUG -I"C:\Program Files (x86)\Atmel\Studio\7.0\Packs\atmel\ATtiny_DFP\1.10.348\include" -O2 -ffunction-sections -fdata-sections -fpack-struct -fshort-enums -g2 -Wall -mmcu=attiny402 -B "C:\Program Files (x86)\Atmel\Studio\7.0\Packs\atmel\ATtiny_DFP\1.10.348\gcc\dev\attiny402" -c -std=gnu99 -MD -MP -MF "$(@:%.o=%.d)" -MT"$(@:%.o=%.d)" -MT"$(@:%.o=%.o)" -o "$@" "$<" + $(QUOTE)C:\Program Files (x86)\Atmel\Studio\7.0\toolchain\avr8\avr8-gnu-toolchain\bin\avr-gcc.exe$(QUOTE) -x c -funsigned-char -funsigned-bitfields -DDEBUG -I"C:\Program Files (x86)\Atmel\Studio\7.0\Packs\atmel\ATtiny_DFP\1.10.348\include" -Os -ffunction-sections -fdata-sections -fpack-struct -fshort-enums -g2 -Wall -mmcu=attiny402 -B "C:\Program Files (x86)\Atmel\Studio\7.0\Packs\atmel\ATtiny_DFP\1.10.348\gcc\dev\attiny402" -c -std=gnu99 -MD -MP -MF "$(@:%.o=%.d)" -MT"$(@:%.o=%.d)" -MT"$(@:%.o=%.o)" -o "$@" "$<" @echo Finished building: $< ./cqm6xx_app.o: .././cqm6xx_app.c @echo Building file: $< @echo Invoking: AVR/GNU C Compiler : 5.4.0 - $(QUOTE)C:\Program Files (x86)\Atmel\Studio\7.0\toolchain\avr8\avr8-gnu-toolchain\bin\avr-gcc.exe$(QUOTE) -x c -funsigned-char -funsigned-bitfields -DDEBUG -I"C:\Program Files (x86)\Atmel\Studio\7.0\Packs\atmel\ATtiny_DFP\1.10.348\include" -O2 -ffunction-sections -fdata-sections -fpack-struct -fshort-enums -g2 -Wall -mmcu=attiny402 -B "C:\Program Files (x86)\Atmel\Studio\7.0\Packs\atmel\ATtiny_DFP\1.10.348\gcc\dev\attiny402" -c -std=gnu99 -MD -MP -MF "$(@:%.o=%.d)" -MT"$(@:%.o=%.d)" -MT"$(@:%.o=%.o)" -o "$@" "$<" + $(QUOTE)C:\Program Files (x86)\Atmel\Studio\7.0\toolchain\avr8\avr8-gnu-toolchain\bin\avr-gcc.exe$(QUOTE) -x c -funsigned-char -funsigned-bitfields -DDEBUG -I"C:\Program Files (x86)\Atmel\Studio\7.0\Packs\atmel\ATtiny_DFP\1.10.348\include" -Os -ffunction-sections -fdata-sections -fpack-struct -fshort-enums -g2 -Wall -mmcu=attiny402 -B "C:\Program Files (x86)\Atmel\Studio\7.0\Packs\atmel\ATtiny_DFP\1.10.348\gcc\dev\attiny402" -c -std=gnu99 -MD -MP -MF "$(@:%.o=%.d)" -MT"$(@:%.o=%.d)" -MT"$(@:%.o=%.o)" -o "$@" "$<" @echo Finished building: $< ./main.o: .././main.c @echo Building file: $< @echo Invoking: AVR/GNU C Compiler : 5.4.0 - $(QUOTE)C:\Program Files (x86)\Atmel\Studio\7.0\toolchain\avr8\avr8-gnu-toolchain\bin\avr-gcc.exe$(QUOTE) -x c -funsigned-char -funsigned-bitfields -DDEBUG -I"C:\Program Files (x86)\Atmel\Studio\7.0\Packs\atmel\ATtiny_DFP\1.10.348\include" -O2 -ffunction-sections -fdata-sections -fpack-struct -fshort-enums -g2 -Wall -mmcu=attiny402 -B "C:\Program Files (x86)\Atmel\Studio\7.0\Packs\atmel\ATtiny_DFP\1.10.348\gcc\dev\attiny402" -c -std=gnu99 -MD -MP -MF "$(@:%.o=%.d)" -MT"$(@:%.o=%.d)" -MT"$(@:%.o=%.o)" -o "$@" "$<" + $(QUOTE)C:\Program Files (x86)\Atmel\Studio\7.0\toolchain\avr8\avr8-gnu-toolchain\bin\avr-gcc.exe$(QUOTE) -x c -funsigned-char -funsigned-bitfields -DDEBUG -I"C:\Program Files (x86)\Atmel\Studio\7.0\Packs\atmel\ATtiny_DFP\1.10.348\include" -Os -ffunction-sections -fdata-sections -fpack-struct -fshort-enums -g2 -Wall -mmcu=attiny402 -B "C:\Program Files (x86)\Atmel\Studio\7.0\Packs\atmel\ATtiny_DFP\1.10.348\gcc\dev\attiny402" -c -std=gnu99 -MD -MP -MF "$(@:%.o=%.d)" -MT"$(@:%.o=%.d)" -MT"$(@:%.o=%.o)" -o "$@" "$<" @echo Finished building: $< si5351_driver/si5351_driver.o: ../si5351_driver/si5351_driver.c @echo Building file: $< @echo Invoking: AVR/GNU C Compiler : 5.4.0 - $(QUOTE)C:\Program Files (x86)\Atmel\Studio\7.0\toolchain\avr8\avr8-gnu-toolchain\bin\avr-gcc.exe$(QUOTE) -x c -funsigned-char -funsigned-bitfields -DDEBUG -I"C:\Program Files (x86)\Atmel\Studio\7.0\Packs\atmel\ATtiny_DFP\1.10.348\include" -O2 -ffunction-sections -fdata-sections -fpack-struct -fshort-enums -g2 -Wall -mmcu=attiny402 -B "C:\Program Files (x86)\Atmel\Studio\7.0\Packs\atmel\ATtiny_DFP\1.10.348\gcc\dev\attiny402" -c -std=gnu99 -MD -MP -MF "$(@:%.o=%.d)" -MT"$(@:%.o=%.d)" -MT"$(@:%.o=%.o)" -o "$@" "$<" + $(QUOTE)C:\Program Files (x86)\Atmel\Studio\7.0\toolchain\avr8\avr8-gnu-toolchain\bin\avr-gcc.exe$(QUOTE) -x c -funsigned-char -funsigned-bitfields -DDEBUG -I"C:\Program Files (x86)\Atmel\Studio\7.0\Packs\atmel\ATtiny_DFP\1.10.348\include" -Os -ffunction-sections -fdata-sections -fpack-struct -fshort-enums -g2 -Wall -mmcu=attiny402 -B "C:\Program Files (x86)\Atmel\Studio\7.0\Packs\atmel\ATtiny_DFP\1.10.348\gcc\dev\attiny402" -c -std=gnu99 -MD -MP -MF "$(@:%.o=%.d)" -MT"$(@:%.o=%.d)" -MT"$(@:%.o=%.o)" -o "$@" "$<" @echo Finished building: $< diff --git a/storno_cqp6xx_digital_xtal/Debug/avr_i2c_driver/avr_i2c.o b/storno_cqp6xx_digital_xtal/Debug/avr_i2c_driver/avr_i2c.o index 1417051..788535a 100644 Binary files a/storno_cqp6xx_digital_xtal/Debug/avr_i2c_driver/avr_i2c.o and b/storno_cqp6xx_digital_xtal/Debug/avr_i2c_driver/avr_i2c.o differ diff --git a/storno_cqp6xx_digital_xtal/Debug/cqm6xx_app.o b/storno_cqp6xx_digital_xtal/Debug/cqm6xx_app.o index 085cb0b..a06e4e7 100644 Binary files a/storno_cqp6xx_digital_xtal/Debug/cqm6xx_app.o and b/storno_cqp6xx_digital_xtal/Debug/cqm6xx_app.o differ diff --git a/storno_cqp6xx_digital_xtal/Debug/main.o b/storno_cqp6xx_digital_xtal/Debug/main.o index 68abe1e..395c48a 100644 Binary files a/storno_cqp6xx_digital_xtal/Debug/main.o and b/storno_cqp6xx_digital_xtal/Debug/main.o differ diff --git a/storno_cqp6xx_digital_xtal/Debug/si5351_driver/si5351_driver.o b/storno_cqp6xx_digital_xtal/Debug/si5351_driver/si5351_driver.o index 59965f3..3fee05b 100644 Binary files a/storno_cqp6xx_digital_xtal/Debug/si5351_driver/si5351_driver.o and b/storno_cqp6xx_digital_xtal/Debug/si5351_driver/si5351_driver.o differ diff --git a/storno_cqp6xx_digital_xtal/Debug/storno_cqp6xx_digital_xtal.elf b/storno_cqp6xx_digital_xtal/Debug/storno_cqp6xx_digital_xtal.elf index b806fe2..0a424a7 100644 Binary files a/storno_cqp6xx_digital_xtal/Debug/storno_cqp6xx_digital_xtal.elf and b/storno_cqp6xx_digital_xtal/Debug/storno_cqp6xx_digital_xtal.elf differ diff --git a/storno_cqp6xx_digital_xtal/Debug/storno_cqp6xx_digital_xtal.hex b/storno_cqp6xx_digital_xtal/Debug/storno_cqp6xx_digital_xtal.hex index 813e37a..1e8514d 100644 --- a/storno_cqp6xx_digital_xtal/Debug/storno_cqp6xx_digital_xtal.hex +++ b/storno_cqp6xx_digital_xtal/Debug/storno_cqp6xx_digital_xtal.hex @@ -1,258 +1,255 @@ :1000000019C033C032C031C030C02FC02EC02DC087 :100010002CC02BC02AC029C028C027C026C025C09C -:1000200024C023C022C021C020C01FC04FC11DC09A +:1000200024C023C022C021C020C01FC069C11DC080 :100030001CC01BC011241FBECFEFCDBFDFE3DEBF4E -:100040002FE3A6E0BFE301C01D92A736B207E1F798 -:100050001FE3A0E0BFE3E4EFFFE002C005900D92D4 -:10006000A630B107D9F7C1D3C3C7CACFEF92FF9269 -:100070000F931F93CF93DF93442391F0EB018C01F7 -:100080004150E42EF12C8FEFE81AF80AE60EF71E25 -:100090006991C80199D70F5F1F4FCE15DF05C1F7D2 -:1000A000DF91CF911F910F91FF90EF900895EF9204 -:1000B000FF920F931F93CF93DF93442391F08C0112 -:1000C000EB014150E42EF12C8FEFE81AF80AE60E0E -:1000D000F71EC80171D789930F5F1F4FCE15DF053B -:1000E000C1F7DF91CF911F910F91FF90EF9008958D -:1000F00081110BC08091080490E002C0959587950E -:100100006A95E2F781709927089580E090E008955C -:1001100020911508207CE1F32091150824FD1FC0D3 -:10012000FC018191809318088091150886FFFCCF0F -:100130008091150884FD24C0809115088C70A9F465 -:100140008091150884FD05C041505109610971096C -:1001500041F783E08093140880E090E0089583E005 -:10016000809314088FEF9FEF0895809114088860A2 -:100170008093140881E08093150881E090E0089551 -:1001800083E08093140881E090E00895A62F972FD4 -:10019000211531054105510569F1816080931708EA -:1001A00080911508807CE1F38091150884FD1CC0C6 -:1001B000BA01A9014150510961097109EA2FF92FCA -:1001C00092E080911508807CE1F38091180881937A -:1001D000411551056105710581F090931408415056 -:1001E000510961097109EDCF83E0809314088FEF05 -:1001F0009FEF089581E090E0089584E080931408D3 -:1002000083E08093140880E090E00895E0E0F4E05B -:1002100080818B7F80838081877F8083A0E1B8E0AD -:100220008BE016968C93169781E013968C93139718 -:1002300015968C9388E0828B838B80E090E0089504 -:10024000FC01842F880F809317089091150896FF62 -:10025000FCCF8091150884FF06C083E080931408CA -:100260008EEF9FEF089583E080931408608371837D -:1002700050E0440F551F428380E090E008950F93B3 -:10028000009709F1FB01DC010023B1F0013021F0FE -:1002900080E090E00F910895211531054105510549 -:1002A000B9F312968C9180931708BA01A901CF0176 -:1002B0002FDF80E090E0EECF12968C9167DF80E038 -:1002C00090E00F9108958FEF9FEFE4CF1F920F9270 -:1002D0000FB60F9211242F933F934F935F936F9319 -:1002E0007F938F939F93AF93BF93EF93FF93E0918F -:1002F000063FF091073F309719F08091000809956B -:10030000FF91EF91BF91AF919F918F917F916F91ED -:100310005F914F913F912F910F900FBE0F901F90C3 -:100320001895CF93DF931F92CDB7DEB7AC01F89449 -:100330002CE635E0209308083093090893E0909369 -:10034000070890EC9093060861157105D1F080E8DC -:10035000809305086093063F7093073F80910408DF -:1003600087FF04C0809100088983898180E480939D -:10037000010480E88093020478940F90DF91CF917C -:100380000895452B21F7EACF9091413F923041F1FA -:1003900060F49923E1F0913089F48A3529F180E005 -:1003A0008093413F81E090E00895933061F0943074 -:1003B00029F41092413F80E090E008951092413F6F -:1003C00081E090E00895833451F784E0E9CF91E033 -:1003D0008F3409F090E09093413F81E090E00895E0 -:1003E0008133E9F683E0DCCF82E0DACF9091403FC1 -:1003F000933009F44BC068F4992309F440C091305C -:1004000029F48093083F83E08093403F80E090E0B0 -:100410000895943019F19530C9F790913F3FE92F35 -:10042000F0E0E85FF04C838381E0890F80933F3FE9 -:100430009091083F891750F3E091443FF091453F78 -:100440006BE07FE38091423F9091433F099510928A -:10045000403F10923F3F80E090E008952091093F97 -:1004600030910A3FA901482BCA018093093F90931C -:100470000A3F85E08093403F80E090E0089584DF6C -:10048000892B39F781E08093403FE3CF1092093FF9 -:1004900080930A3F84E08093403F80E090E008959D -:1004A000009759F06115710541F08093423F909398 -:1004B000433F6093443F7093453F08959F92AF92AE -:1004C000BF92CF92DF92EF92FF920F931F93CF9341 -:1004D000DF93EC01942EAD84BE84CF84D888E98468 -:1004E000FA840B851C852D813E814F8158858A8138 -:1004F0009B81EBD181E493E00197F1F70000A98C97 -:10050000BA8CCB8CDC8CED88FE880F89188D2989FC -:100510003A894B895C89692D8A819B8151D281E41A -:1005200093E00197F1F7000040E0692D8A819B81FB -:10053000DF91CF911F910F91FF90EF90DF90CF90BF -:10054000BF90AF909F90FDC2CF93DF93FC0182815B -:100550009381892B09F13097F9F081819081891776 -:10056000D9F0EF018130D9F08230B1F481E493E029 -:100570000197F1F7000041E060E082819381B4D2FD -:1005800081E493E00197F1F7000040E061E08A81A7 -:100590009B81DF91CF91A8C2DF91CF91089581E433 -:1005A00093E00197F1F7000040E060E082819381E1 -:1005B0009BD281E493E00197F1F7000041E061E014 -:1005C0008A819B81DF91CF918FC20F931F93CF932D -:1005D000DF93FC0122813381232BA9F0009799F04E -:1005E000EC018181813009F45BC090F0823059F4D4 -:1005F000CE01AADF8981888363E080E079DD892BE1 -:1006000011F481E08983DF91CF911F910F910895BB -:1006100018828E010C5F1F4F49E1B80180E090E025 -:1006200046DD81E493E00197F1F7000060E08A8104 -:100630009B81DDD2E1E4F3E03197F1F7000040E087 -:1006400060E0CE013BDF81E493E00197F1F7000029 -:1006500049E1B80180E290E02ADDE1E4F3E031977E -:10066000F1F7000041E061E0CE0128DF42E061E007 -:10067000CE0124DF40E062E08A819B8162D281E486 -:1006800093E00197F1F7000040E062E08A819B81EE -:100690002BD281E08983DF91CF911F910F91089533 -:1006A000CE0152DF8981888363E080E021DD0197FC -:1006B00009F0A9CF82E08983A6CFCF93DF93EC0125 -:1006C0008C81882369F0813039F449E1BE016C5F87 -:1006D0007F4F80E290E0CADC1982DF91CF910895CC -:1006E00049E1BE016C5F7F4F80E090E0BFDC198282 -:1006F000DF91CF910895DC01149629E1FB0101906F -:100700000D922A95E1F7D9DF80E090E008950F93EC -:100710001F93CF93DF936115710511F1009701F1DC -:10072000EC01198218826A837B836BE773E0B8DE81 -:1007300066EF71E0CE01F5DD8E010C5F1F4F49E1E0 -:10074000B80180E090E0B3DCF8019E01235E3F4FEA -:1007500003C0E217F30749F0919191509E3FC8F70B -:10076000DF91CF911F910F9108951C8283E49DE04A -:10077000A0E0B0E08D839E83AF83B88786EF9CE2D4 -:10078000A0E0B0E089879A87AB87BC878BE598E4C7 -:10079000A0E1B0E08D879E87AF87B88B82E190E0C3 -:1007A000A0E0B0E0898B9A8BAB8BBC8B1D8A1E8A34 -:1007B0001F8A188E81E090E0A0E0B0E0898F9A8FC8 -:1007C000AB8FBC8F49E1B80180E090E04FDC81E461 -:1007D00093E00197F1F7000049E1B80180E290E071 -:1007E000DF91CF911F910F9141CCCF93DF93CDB784 -:1007F000DEB7CB55D109CDBFDEBF80E090E006DD8E -:1008000040E660E070E0CE01875A9F4F19DD4FE36C -:1008100051E0BE01675A7F4FCE0101960DD2BE0155 -:100820006F5F7F4F86E49FE372DF86E49FE3CDDE58 -:100830002AE684E091E0215080409040E1F700C03A -:10084000F4CF4F925F926F927F929F92AF92BF923E -:10085000CF92DF92EF92FF920F931F93CF93DF938C -:10086000EC016B01942E590127013801C701019653 -:1008700079D2F82E192FDC019D92CD01A201B5018C -:1008800092D3A30192012F5F3F4F4F4F5F4FD6018D -:10089000ED91FC9101E06F2D712F8881998109956F -:1008A0008F2D912FF7D280E090E0DF91CF911F91B3 -:1008B0000F91FF90EF90DF90CF90BF90AF909F90FF -:1008C0007F906F905F904F900895AF92BF92CF92BC -:1008D000DF92EF92FF920F931F93CF93DF93EC0180 -:1008E000662309F448C0613009F16C0182E0C80E4A -:1008F000D11C9E01295A3F4FF90180818062806896 -:100900008083E12CF12C8701E39441EBB601CE0109 -:1009100098DF80E090E0DF91CF911F910F91FF90E1 -:10092000EF90DF90CF90BF90AF90089542708E8D82 -:100930008C7F482B4E8F3F8F28A3D801C701882773 -:100940009927AF70BB27FAA2EBA28A2F8F7089A3D9 -:10095000BC8EAD8E6E01F2E0CF0ED11C18E0E12E00 -:10096000F12C00E010E09E01245E3F4F42E2B60110 -:10097000CE0167DFBECF42708E898C7F482B4E8BB5 -:100980003F8B288FD801C70188279927AF70BB27D5 -:10099000FA8EEB8E8A2F8F70898FBC8AAD8A6E019A -:1009A000E2E0CE0ED11C18E0E12EF12C00E010E0C8 -:1009B0009E012C5E3F4F4AE1B601CE0142DF99CF46 -:1009C000AF92BF92CF92DF92EF92FF920F931F935D -:1009D000FC01613009F45FC0A8F1623041F5437059 -:1009E00056A9507837AB20AFF2AEE3AED601C501C1 -:1009F0002CE0B695A795979587952A95D1F78370A2 -:100A00008295807F0370082B01AFB4AAA5AA452B5D -:100A100046AB9F012C5C3F4FBF016E5F7F4F18E0DC -:100A2000E12EF12C00E010E04AE3CF010ADF80E084 -:100A300090E01F910F91FF90EF90DF90CF90BF90CB -:100A4000AF900895437056A1507837A320A7F2A61F -:100A5000E3A6D601C5011CE0B695A79597958795A5 -:100A60001A95D1F783708295807F0370802B81A7C0 -:100A7000B4A2A5A2452B46A39F012C5D3F4FBF0109 -:100A80006E5F7F4F18E0E12EF12C00E010E04AE2AB -:100A9000CF01D7DECCCF437056A5507837A720AB17 -:100AA000F2AAE3AAD601C5016CE0B695A795979581 -:100AB00087956A95D1F783708295807F0370802B2C -:100AC00081ABB4A6A5A6452B46A79F01245D3F4F49 -:100AD000BF016E5F7F4F18E0E12EF12C00E010E0C7 -:100AE00042E3CF01AEDEA3CFEF92FF920F931F93AD -:100AF000613009F1D0F0623029F4FC01278140FB1C -:100B000022F927839C01295F3F4FBC016E5F7F4F15 -:100B1000E12CF12C8701E39443E093DE80E090E048 -:100B20001F910F91FF90EF900895FC01278140FBEA -:100B300020F92783E7CFFC01278140FB21F9278398 -:100B4000E1CFEF92FF920F931F936130B9F1E0F084 -:100B5000623099F4FC01248540FB27F92379236650 -:100B600024879C01245F3F4FBC016E5F7F4FE12CC7 -:100B7000F12C8701E39442E164DE80E090E01F9174 -:100B80000F91FF90EF900895FC01228540FB27F91B -:100B900020792F6422879C01265F3F4FBC016E5F46 -:100BA0007F4FE12CF12C8701E39440E14ADE80E0A5 -:100BB00090E01F910F91FF90EF900895FC01238525 -:100BC00040FB27F92F6623879C01255F3F4FBC011F -:100BD0006E5F7F4FE12CF12C8701E39441E131DE20 -:100BE00080E090E01F910F91FF90EF900895EF92B9 -:100BF000FF920F931F936623C9F0613021F4FC012B -:100C00002185246021879C01275F3F4FBC016E5FD7 -:100C10007F4FE12CF12C8701E39440EF12DE80E05E -:100C200090E01F910F91FF90EF900895FC012185B6 -:100C30002B7F277F2187E7CFAF92BF92CF92DF92A2 -:100C4000EF92FF920F931F93CF93DF931F92CDB735 -:100C5000DEB7009709F483C06115710509F47FC000 -:100C60004115510509F47BC06C01DC016D937C9347 -:100C7000119712964D935C931397FC01349684E57B -:100C8000DF011D928A95E9F78FEF89835601B2E063 -:100C9000AB0EB11CE12CF12C8701E3949E012F5F78 -:100CA0003F4F43E0B501C601CCDD80E889839E015A -:100CB0002F5F3F4F40E1B501C601C3DD9E012F5FAD -:100CC0003F4F41E1B501C601BCDD9E012F5F3F4FA3 -:100CD00042E1B501C601B5DD9E012F5F3F4F43E103 -:100CE000B501C601AEDD9E012F5F3F4F44E1B50166 -:100CF000C601A7DD9E012F5F3F4F45E1B501C6014B -:100D0000A0DD9E012F5F3F4F46E1B501C60199DD91 -:100D10009E012F5F3F4F47E1B501C60192DD80EC98 -:100D200089839E012F5F3F4F47EBB501C60189DDE7 -:100D300080E489839E012F5F3F4F4BEBB501C601D5 -:100D400080DD80E090E00F90DF91CF911F910F91B7 -:100D5000FF90EF90DF90CF90BF90AF9008958FEF0E -:100D60009FEFF1CF0F931F93CF93DF9382309105C5 -:100D700010F482E090E0E091653FF091663F20E062 -:100D800030E0A0E0B0E0309719F14081518102815C -:100D9000138148175907C8F08417950769F410970D -:100DA00031F012960C93129713961C9327C0009360 -:100DB000653F1093663F22C02115310519F0421797 -:100DC000530718F49A01BD01EF01DF01F801DBCFF1 -:100DD00021153105F9F0281B390B2430310580F439 -:100DE0008A819B816115710521F0FB0182839383C8 -:100DF00004C08093653F9093663FFE01329644C0E5 -:100E0000FE01E20FF31F8193919322503109288351 -:100E100039833AC02091633F3091643F232B41F4E2 -:100E20002091023F3091033F2093633F3093643F12 -:100E30002091003F3091013F2115310541F42DB73C -:100E40003EB74091043F5091053F241B350BE09184 -:100E5000633FF091643FE217F307A0F42E1B3F0BB2 -:100E60002817390778F0AC014E5F5F4F241735071C -:100E700048F04E0F5F1F4093633F5093643F819350 -:100E8000919302C0E0E0F0E0CF01DF91CF911F919C -:100E90000F910895CF93DF93009709F481C0FC016F -:100EA000329712821382A091653FB091663F1097EE -:100EB00081F420813181820F931F2091633F309113 -:100EC000643F2817390751F5E093633FF093643F7F -:100ED00067C0ED0120E030E0CE17DF0740F44A8123 -:100EE0005B819E0141155105F1F0EA01F5CFC28306 -:100EF000D38340815181840F951FC817D90759F4B6 -:100F000088819981840F951F0296808391838A81BD -:100F10009B81828393832115310529F4E093653FFA -:100F2000F093663F3DC0E901EA83FB834991599103 -:100F3000C40FD51FEC17FD0761F480819181840FE8 -:100F4000951F0296E90188839983828193818A8320 -:100F50009B83E0E0F0E012968D919C9113970097AF -:100F600019F0FD01DC01F7CF8D919C9111979D0146 -:100F70002E5F3F4F820F931F2091633F3091643F5C -:100F80002817390769F4309729F41092653F1092B9 -:100F9000663F02C012821382A093633FB093643F06 -:100FA000DF91CF910895FB01DC0102C001900D9209 -:100FB00041505040D8F7089503D080819927089573 -:100FC000FC01E050FC4E0895262FAF93BF93E0E064 -:100FD000F0E1328131FDFDCFDC01A050BC4E2C93FD -:100FE0002DE924BF23E020830196BF91AF9108959E -:040FF000F894FFCFA3 -:060FF4000000673F200031 +:100040002FE3A6E0BFE301C01D92AB36B207E1F794 +:100050001FE3A0E0BFE3E4ECFFE002C005900D92D7 +:10006000A630B107D9F7DBD3ABC7CACFEF92FF9267 +:100070000F931F93CF93DF93EB018C017B01E40E71 +:10008000F11CCE15DF0531F06991C80185D70F5FEE +:100090001F4FF7CFDF91CF911F910F91FF90EF90FE +:1000A0000895EF92FF920F931F93CF93DF938C01EC +:1000B000EB017B01E40EF11CCE15DF0531F0C80128 +:1000C00063D789930F5F1F4FF7CFDF91CF911F91B8 +:1000D0000F91FF90EF90089581110BC0809108045B +:1000E00090E002C0959587956A95E2F7817099270F +:1000F000089580E090E00895809317088091150896 +:10010000807CE1F390911508892F807194FF04C0E1 +:1001100083E08093140881E00895CF92DF92EF92FC +:10012000FF92CF93DF93D62FC72F69017A01232B3C +:10013000242B252B19F48FEF9FEF32C0DDDF8111C7 +:10014000FACFED2FFC2F819180931808809115082C +:1001500086FFFCCF8091150884FF04C083E0809364 +:1001600014080CC0809115088C7059F08091140807 +:1001700088608093140881E08093150881E090E006 +:100180000FC08091150884FD06C081E0C81AD1080F +:10019000E108F108C1F683E08093140880E090E064 +:1001A000DF91CF91FF90EF90DF90CF900895CF92A5 +:1001B000DF92EF92FF92CF93DF93D62FC72F690183 +:1001C0007A01232B242B252B61F1816095DF81118E +:1001D0002BC0ED2FFC2F92E024E0B701A601415087 +:1001E000510961097109CD28CE28CF28A1F080914D +:1001F0001508807CE1F38091180881934115510521 +:100200006105710519F42093140802C09093140835 +:100210006A017B01E2CF83E08093140880E090E0E4 +:1002200005C081E090E002C08FEF9FEFDF91CF919A +:10023000FF90EF90DF90CF90089580931708809102 +:10024000150886FFFCCF8091150884FF06C083E067 +:100250008093140881E090E0089583E0809314086F +:1002600080E090E00895E0E0F4E080818B7F80837F +:100270008081877F8083A0E1B8E08BE016968C9325 +:10028000169781E013968C93139715968C9388E0BC +:10029000828B838B80E090E00895EF92FF920F9322 +:1002A0001F93CF938C017B01C42F842F880FC5DF50 +:1002B000009749F4F801E082F1824C2F50E0440F9E +:1002C000551F428302C08EEF9FEFCF911F910F9178 +:1002D000FF90EF9008950F93009759F0FC010023D1 +:1002E00029F0013049F4828118DF06C082815FDF86 +:1002F00003C08FEF9FEF02C080E090E00F91089560 +:100300001F920F920FB60F9211242F933F934F938A +:100310005F936F937F938F939F93AF93BF93EF936D +:10032000FF93E091063FF091073F309719F08091DD +:1003300000080995FF91EF91BF91AF919F918F9127 +:100340007F916F915F914F913F912F910F900FBED1 +:100350000F901F901895CF93DF931F92CDB7DEB704 +:10036000F8942CE635E0209308083093090823E040 +:100370002093070820EC209306086115710511F4FD +:10038000892B39F080E8809305086093063F7093CD +:10039000073F8091040887FF04C08091000889838B +:1003A000898180E48093010480E88093020478943A +:1003B0000F90DF91CF9108959091413F9230D1F00D +:1003C00028F4992361F0913089F020C09330B1F086 +:1003D0009430E1F41092413F80E090E0089591E084 +:1003E0008F3409F090E09093413F12C08A3541F478 +:1003F00082E009C0813321F483E005C0833411F029 +:1004000080E001C084E08093413F02C01092413FF0 +:1004100081E090E008959091403F9330B1F048F42E +:10042000992361F0913009F043C08093083F83E045 +:100430001EC0943081F09530E9F03AC0BDDF892BC1 +:10044000A9F581E08093403F31C01092093F80932D +:100450000A3F84E00CC02091093F30910A3FA90176 +:10046000482BCA018093093F90930A3F85E080930F +:10047000403F1EC090913F3FE92FF0E0E85FF04C15 +:10048000838381E0890F80933F3F9091083F8917D4 +:1004900078F0E091443FF091453F6BE07FE380913D +:1004A000423F9091433F09951092403F10923F3F49 +:1004B00080E090E00895009759F06115710541F0D2 +:1004C0008093423F9093433F6093443F7093453FF6 +:1004D00008959F92AF92BF92CF92DF92EF92FF92D8 +:1004E0000F931F93CF93DF93EC01942EAD84BE84C2 +:1004F000CF84D888E984FA840B851C852D813E81C0 +:100500004F8158858A819B8113D381E493E00197C1 +:10051000F1F70000A98CBA8CCB8CDC8CED88FE88BE +:100520000F89188D29893A894B895C89692D8A81BF +:100530009B81DDD181E493E00197F1F7000040E079 +:10054000692D8A819B81DF91CF911F910F91FF903F +:10055000EF90DF90CF90BF90AF909F9070C2CF93FD +:10056000DF93FC0182819381892B91F1309781F196 +:1005700081819081891761F1EF01813099F082309A +:1005800039F581E493E00197F1F7000041E060E084 +:100590008281938131D281E493E00197F1F70000E9 +:1005A00040E010C081E493E00197F1F7000040E0E3 +:1005B00060E08281938120D281E493E00197F1F79A +:1005C000000041E061E08A819B81DF91CF9114C2FC +:1005D000DF91CF9108950F931F93CF93DF93FC0189 +:1005E00022813381232B09F465C0009709F462C08E +:1005F000EC018181813061F4CE01B1DF8981888392 +:1006000063E080E069DD019709F054C082E045C0F5 +:10061000813008F044C018828E010C5F1F4F4DE1FD +:10062000B80180E090E03DDD81E493E00197F1F7CF +:10063000000060E08A819B813DD2E1E4F3E03197E4 +:10064000F1F7000040E060E0CE0143DF81E493E099 +:100650000197F1F700004DE1B80180E290E021DD63 +:10066000E1E4F3E03197F1F7000041E061E0CE0111 +:1006700030DF42E061E0CE012CDF40E062E08A81C1 +:100680009B81DDD181E493E00197F1F7000040E028 +:1006900062E08A819B81B0D181E089830BC0823086 +:1006A00049F4CE015CDF8981888363E080E014DD5A +:1006B000892B91F3DF91CF911F910F910895CF93E3 +:1006C000DF93EC018C81813099F058F08E3FC1F0BE +:1006D0008F3FE9F44DE1BE016C5F7F4F80E290E017 +:1006E00015C04DE1BE016C5F7F4F80E090E006C019 +:1006F0004DE1BE016C5F7F4F80E290E0B7DC07C048 +:100700004DE1BE016C5F7F4F80E090E0CADC198252 +:10071000DF91CF910895DC0114962DE1FB0101904A +:100720000D922A95E1F7CBDF80E090E008950F93DA +:100730001F93CF93DF936115710509F46BC0009788 +:1007400009F468C0EC01198218826A837B836BE824 +:1007500073E0B1DE6BE072E0CE01FDDD8E010C5F77 +:100760001F4F4DE1B80180E090E09BDCF8019E0155 +:100770002F5D3F4F819181508E3F08F44BC0E217AF +:10078000F307C1F71C8283E49DE0A0E0B0E08D8315 +:100790009E83AF83B88786EF9CE2A0E0B0E08987B4 +:1007A0009A87AB87BC878BE598E4A0E1B0E08D87A2 +:1007B0009E87AF87B88B82E190E0A0E0B0E0898BA4 +:1007C0009A8BAB8BBC8B1D8A1E8A1F8A188E81E088 +:1007D00090E0A0E0B0E0898F9A8FAB8FBC8F80E46F +:1007E00098E7ADE7B1E08D8F9E8FAF8FB8A34DE155 +:1007F000B80180E090E03ADC81E493E00197F1F702 +:1008000000004DE1B80180E290E0DF91CF911F91AF +:100810000F912CCCDF91CF911F910F910895CF9321 +:10082000DF93CDB7DEB7CB55D109CDBFDEBF80E0BA +:1008300090E019DD40E660E070E0CE01875A9F4FFE +:100840002CDD4BE651E0BE01675A7F4FCE01019689 +:10085000CAD1BE016F5F7F4F86E49FE368DF86E405 +:100860009FE3B9DE2AE684E091E021508040904089 +:10087000E1F700C0F4CF8F929F92AF92BF92CF92D8 +:10088000DF92EF92FF920F931F93CF93DF93EC01D0 +:10089000862E5A0168017901C80101964BD2982E23 +:1008A000192FFC018192CF01A601B50164D3A701E4 +:1008B00096012F5F3F4F4F4F5F4FEA81FB8101E071 +:1008C000692D712F888199810995892D912FCAD21F +:1008D00080E090E0DF91CF911F910F91FF90EF901A +:1008E000DF90CF90BF90AF909F908F900895AF9280 +:1008F000BF92CF92DF92EF92FF920F931F93FC0172 +:10090000613009F44AC030F1623009F06AC04370C6 +:1009100056A9507837AB20AFF2AEE3AED601C50191 +:100920002CE0B695A795979587952A95D1F7837072 +:100930008295807F0370802B81AFB4AAA5AA452B36 +:1009400046ABAF014C5C5F4F08E010E020E030E0C8 +:100950006AE345C0437056A1507837A320A7F2A69A +:10096000E3A6D601C5016CE0B695A7959795879546 +:100970006A95D1F783708295807F0370802B81A761 +:10098000B4A2A5A2452B46A3AF014C5D5F4F08E082 +:1009900010E020E030E06AE222C0437056A55078B3 +:1009A00037A720ABF2AAE3AAD601C5013CE0B69571 +:1009B000A795979587953A95D1F783708295807F13 +:1009C0000370802B81ABB4A6A5A6452B46A7AF012B +:1009D000445D5F4F08E010E020E030E062E3CF01CB +:1009E0004ADF80E090E01F910F91FF90EF90DF9041 +:1009F000CF90BF90AF9008950F931F93FC0161308B +:100A000059F030F0623061F4878140FB82F907C011 +:100A1000878140FB80F903C0878140FB81F9878390 +:100A2000AF01495F5F4F01E010E020E030E063E09C +:100A3000CF0121DF80E090E01F910F9108950F9387 +:100A40001F93613019F190F0623079F5FC01248533 +:100A500040FB27F9237923662487AC01445F5F4F6D +:100A600001E010E020E030E062E11EC0FC012285E0 +:100A700040FB27F920792F642287AC01465F5F4F46 +:100A800001E010E020E030E060E10EC0FC012385D1 +:100A900040FB27F92F662387AC01455F5F4F01E0DC +:100AA00010E020E030E061E1E6DE80E090E01F91C0 +:100AB0000F9108950F931F93662331F0613049F42D +:100AC000FC012185246004C0FC0121852B7F277F48 +:100AD0002187AC01475F5F4F01E010E020E030E08C +:100AE00060EFC9DE80E090E01F910F9108950F93B1 +:100AF0001F9331E0611101C030E0FC01E95AFF4F62 +:100B0000208130FB25F9208331E0411101C030E024 +:100B1000208130FB27F9208301E010E020E030E065 +:100B2000AF0161EBA8DE80E090E01F910F91089586 +:100B3000AF92BF92CF92DF92EF92FF920F931F93EB +:100B4000CF93DF93EC016623F9F06130D9F5427061 +:100B50008E8D8C7F482B4E8F3F8F28A3D801C701E5 +:100B600088279927AF70BB27FAA2EBA28A2F8F7034 +:100B700089A3BC8EAD8E08E010E020E030E0AE012D +:100B8000445E5F4F62E21CC042708E898C7F482BAE +:100B90004E8B3F8B288FD801C70188279927AF70CC +:100BA000BB27FA8EEB8E8A2F8F70898FBC8AAD8A15 +:100BB00008E010E020E030E0AE014C5E5F4F6AE1FB +:100BC000CE0159DE41E061E0CE0191DF80E090E0AE +:100BD000DF91CF911F910F91FF90EF90DF90CF9019 +:100BE000BF90AF900895EF92FF920F931F93CF9312 +:100BF000DF931F92CDB7DEB7009709F491C061155E +:100C0000710509F48DC04115510509F489C07C01B5 +:100C1000DC016D937C93119712964D935C9313971F +:100C2000FC01349684E5DF011D928A95E9F78FEF88 +:100C3000898301E010E020E030E0AE014F5F5F4FBC +:100C400063E0C70118DE80E8898301E010E020E05E +:100C500030E0AE014F5F5F4F60E1C7010CDE01E0A5 +:100C600010E020E030E0AE014F5F5F4F61E1C7016F +:100C700002DE01E010E020E030E0AE014F5F5F4FA8 +:100C800062E1C701F8DD01E010E020E030E0AE01F4 +:100C90004F5F5F4F63E1C701EEDD01E010E020E050 +:100CA00030E0AE014F5F5F4F64E1C701E4DD01E07A +:100CB00010E020E030E0AE014F5F5F4F65E1C7011B +:100CC000DADD01E010E020E030E0AE014F5F5F4F81 +:100CD00066E1C701D0DD01E010E020E030E0AE01C8 +:100CE0004F5F5F4F67E1C701C6DD80EC898301E09C +:100CF00010E020E030E0AE014F5F5F4F67EBC701CF +:100D0000BADD80E4898301E010E020E030E0AE014C +:100D10004F5F5F4F6BEBC701AEDD80E090E002C03C +:100D20008FEF9FEF0F90DF91CF911F910F91FF9069 +:100D3000EF9008950F931F93CF93DF938230910527 +:100D400010F482E090E0E091693FF0916A3F20E08A +:100D500030E0A0E0B0E0309719F14081518102818C +:100D6000138148175907C8F08417950769F410973D +:100D700031F012960C93129713961C9327C0009390 +:100D8000693F10936A3F22C02115310519F04217BF +:100D9000530718F49A01BD01EF01DF01F801DBCF21 +:100DA00021153105F9F0281B390B2430310580F469 +:100DB0008A819B816115710521F0FB0182839383F8 +:100DC00004C08093693F90936A3FFE01329644C00D +:100DD000FE01E20FF31F8193919322503109288382 +:100DE00039833AC02091673F3091683F232B41F40B +:100DF0002091023F3091033F2093673F3093683F3B +:100E00002091003F3091013F2115310541F42DB76C +:100E10003EB74091043F5091053F241B350BE091B4 +:100E2000673FF091683FE217F307A0F42E1B3F0BDA +:100E30002817390778F0AC014E5F5F4F241735074C +:100E400048F04E0F5F1F4093673F5093683F819378 +:100E5000919302C0E0E0F0E0CF01DF91CF911F91CC +:100E60000F910895CF93DF93009709F481C0FC019F +:100E7000329712821382A091693FB0916A3F109716 +:100E800081F420813181820F931F2091673F30913F +:100E9000683F2817390751F5E093673FF093683FA3 +:100EA00067C0ED0120E030E0CE17DF0740F44A8153 +:100EB0005B819E0141155105F1F0EA01F5CFC28336 +:100EC000D38340815181840F951FC817D90759F4E6 +:100ED00088819981840F951F0296808391838A81EE +:100EE0009B81828393832115310529F4E093693F27 +:100EF000F0936A3F3DC0E901EA83FB834991599130 +:100F0000C40FD51FEC17FD0761F480819181840F18 +:100F1000951F0296E90188839983828193818A8350 +:100F20009B83E0E0F0E012968D919C9113970097DF +:100F300019F0FD01DC01F7CF8D919C9111979D0176 +:100F40002E5F3F4F820F931F2091673F3091683F84 +:100F50002817390769F4309729F41092693F1092E5 +:100F60006A3F02C012821382A093673FB093683F2A +:100F7000DF91CF910895FB01DC0102C001900D9239 +:100F800041505040D8F7089503D0808199270895A3 +:100F9000FC01E050FC4E0895262FAF93BF93E0E094 +:100FA000F0E1328131FDFDCFDC01A050BC4E2C932D +:100FB0002DE924BF23E020830196BF91AF910895CE +:040FC000F894FFCFD3 +:060FC40000006B3F20005D :00000001FF diff --git a/storno_cqp6xx_digital_xtal/Debug/storno_cqp6xx_digital_xtal.lss b/storno_cqp6xx_digital_xtal/Debug/storno_cqp6xx_digital_xtal.lss index afc99e3..d917ac6 100644 --- a/storno_cqp6xx_digital_xtal/Debug/storno_cqp6xx_digital_xtal.lss +++ b/storno_cqp6xx_digital_xtal/Debug/storno_cqp6xx_digital_xtal.lss @@ -3,31 +3,31 @@ storno_cqp6xx_digital_xtal.elf: file format elf32-avr Sections: Idx Name Size VMA LMA File off Algn - 0 .data 00000006 00803f00 00000ff4 00001088 2**0 + 0 .data 00000006 00803f00 00000fc4 00001058 2**0 CONTENTS, ALLOC, LOAD, DATA - 1 .text 00000ff4 00000000 00000000 00000094 2**1 + 1 .text 00000fc4 00000000 00000000 00000094 2**1 CONTENTS, ALLOC, LOAD, READONLY, CODE - 2 .bss 00000061 00803f06 00803f06 0000108e 2**0 + 2 .bss 00000065 00803f06 00803f06 0000105e 2**0 ALLOC - 3 .comment 00000030 00000000 00000000 0000108e 2**0 + 3 .comment 00000030 00000000 00000000 0000105e 2**0 CONTENTS, READONLY - 4 .note.gnu.avr.deviceinfo 0000003c 00000000 00000000 000010c0 2**2 + 4 .note.gnu.avr.deviceinfo 0000003c 00000000 00000000 00001090 2**2 CONTENTS, READONLY - 5 .debug_aranges 00000248 00000000 00000000 00001100 2**3 + 5 .debug_aranges 00000240 00000000 00000000 000010d0 2**3 CONTENTS, READONLY, DEBUGGING - 6 .debug_info 00005ba3 00000000 00000000 00001348 2**0 + 6 .debug_info 00005484 00000000 00000000 00001310 2**0 CONTENTS, READONLY, DEBUGGING - 7 .debug_abbrev 00001f08 00000000 00000000 00006eeb 2**0 + 7 .debug_abbrev 00001ebe 00000000 00000000 00006794 2**0 CONTENTS, READONLY, DEBUGGING - 8 .debug_line 00001984 00000000 00000000 00008df3 2**0 + 8 .debug_line 00001876 00000000 00000000 00008652 2**0 CONTENTS, READONLY, DEBUGGING - 9 .debug_frame 0000061c 00000000 00000000 0000a778 2**2 + 9 .debug_frame 00000630 00000000 00000000 00009ec8 2**2 CONTENTS, READONLY, DEBUGGING - 10 .debug_str 000022c6 00000000 00000000 0000ad94 2**0 + 10 .debug_str 000022f5 00000000 00000000 0000a4f8 2**0 CONTENTS, READONLY, DEBUGGING - 11 .debug_loc 00002855 00000000 00000000 0000d05a 2**0 + 11 .debug_loc 000023e8 00000000 00000000 0000c7ed 2**0 CONTENTS, READONLY, DEBUGGING - 12 .debug_ranges 00000230 00000000 00000000 0000f8af 2**0 + 12 .debug_ranges 000001c8 00000000 00000000 0000ebd5 2**0 CONTENTS, READONLY, DEBUGGING Disassembly of section .text: @@ -55,7 +55,7 @@ Disassembly of section .text: 26: 21 c0 rjmp .+66 ; 0x6a <__bad_interrupt> 28: 20 c0 rjmp .+64 ; 0x6a <__bad_interrupt> 2a: 1f c0 rjmp .+62 ; 0x6a <__bad_interrupt> - 2c: 4f c1 rjmp .+670 ; 0x2cc <__vector_22> + 2c: 69 c1 rjmp .+722 ; 0x300 <__vector_22> 2e: 1d c0 rjmp .+58 ; 0x6a <__bad_interrupt> 30: 1c c0 rjmp .+56 ; 0x6a <__bad_interrupt> 32: 1b c0 rjmp .+54 ; 0x6a <__bad_interrupt> @@ -78,7 +78,7 @@ Disassembly of section .text: 48: 1d 92 st X+, r1 0000004a <.do_clear_bss_start>: - 4a: a7 36 cpi r26, 0x67 ; 103 + 4a: ab 36 cpi r26, 0x6B ; 107 4c: b2 07 cpc r27, r18 4e: e1 f7 brne .-8 ; 0x48 <.do_clear_bss_loop> @@ -86,7 +86,7 @@ Disassembly of section .text: 50: 1f e3 ldi r17, 0x3F ; 63 52: a0 e0 ldi r26, 0x00 ; 0 54: bf e3 ldi r27, 0x3F ; 63 - 56: e4 ef ldi r30, 0xF4 ; 244 + 56: e4 ec ldi r30, 0xC4 ; 196 58: ff e0 ldi r31, 0x0F ; 15 5a: 02 c0 rjmp .+4 ; 0x60 <__do_copy_data+0x10> 5c: 05 90 lpm r0, Z+ @@ -94,8 +94,8 @@ Disassembly of section .text: 60: a6 30 cpi r26, 0x06 ; 6 62: b1 07 cpc r27, r17 64: d9 f7 brne .-10 ; 0x5c <__do_copy_data+0xc> - 66: c1 d3 rcall .+1922 ; 0x7ea
- 68: c3 c7 rjmp .+3974 ; 0xff0 <_exit> + 66: db d3 rcall .+1974 ; 0x81e
+ 68: ab c7 rjmp .+3926 ; 0xfc0 <_exit> 0000006a <__bad_interrupt>: 6a: ca cf rjmp .-108 ; 0x0 <__vectors> @@ -113,2746 +113,2733 @@ void cm_EEPROM_write(uint8_t *address, uint8_t *data, uint8_t length) { 72: 1f 93 push r17 74: cf 93 push r28 76: df 93 push r29 + 78: eb 01 movw r28, r22 + 7a: 8c 01 movw r16, r24 + 7c: 7b 01 movw r14, r22 + 7e: e4 0e add r14, r20 + 80: f1 1c adc r15, r1 for (uint8_t i = 0; i < length; i++) { - 78: 44 23 and r20, r20 - 7a: 91 f0 breq .+36 ; 0xa0 <__EEPROM_REGION_LENGTH__+0x20> - 7c: eb 01 movw r28, r22 - 7e: 8c 01 movw r16, r24 - 80: 41 50 subi r20, 0x01 ; 1 - 82: e4 2e mov r14, r20 - 84: f1 2c mov r15, r1 - 86: 8f ef ldi r24, 0xFF ; 255 - 88: e8 1a sub r14, r24 - 8a: f8 0a sbc r15, r24 - 8c: e6 0e add r14, r22 - 8e: f7 1e adc r15, r23 - - // Write data to address + i.. - eeprom_write_byte(address+i,data[i]); - 90: 69 91 ld r22, Y+ - 92: c8 01 movw r24, r16 - 94: 99 d7 rcall .+3890 ; 0xfc8 - 96: 0f 5f subi r16, 0xFF ; 255 - 98: 1f 4f sbci r17, 0xFF ; 255 -#include - -void cm_EEPROM_write(uint8_t *address, uint8_t *data, uint8_t length) { - - - for (uint8_t i = 0; i < length; i++) { - 9a: ce 15 cp r28, r14 - 9c: df 05 cpc r29, r15 - 9e: c1 f7 brne .-16 ; 0x90 <__EEPROM_REGION_LENGTH__+0x10> + 82: ce 15 cp r28, r14 + 84: df 05 cpc r29, r15 + 86: 31 f0 breq .+12 ; 0x94 <__EEPROM_REGION_LENGTH__+0x14> // Write data to address + i.. eeprom_write_byte(address+i,data[i]); + 88: 69 91 ld r22, Y+ + 8a: c8 01 movw r24, r16 + 8c: 85 d7 rcall .+3850 ; 0xf98 + 8e: 0f 5f subi r16, 0xFF ; 255 + 90: 1f 4f sbci r17, 0xFF ; 255 + 92: f7 cf rjmp .-18 ; 0x82 <__EEPROM_REGION_LENGTH__+0x2> } } - a0: df 91 pop r29 - a2: cf 91 pop r28 - a4: 1f 91 pop r17 - a6: 0f 91 pop r16 - a8: ff 90 pop r15 - aa: ef 90 pop r14 - ac: 08 95 ret + 94: df 91 pop r29 + 96: cf 91 pop r28 + 98: 1f 91 pop r17 + 9a: 0f 91 pop r16 + 9c: ff 90 pop r15 + 9e: ef 90 pop r14 + a0: 08 95 ret -000000ae : +000000a2 : void cm_EEPROM_read(uint8_t* address, uint8_t *data, uint8_t length) { - ae: ef 92 push r14 - b0: ff 92 push r15 - b2: 0f 93 push r16 - b4: 1f 93 push r17 - b6: cf 93 push r28 - b8: df 93 push r29 + a2: ef 92 push r14 + a4: ff 92 push r15 + a6: 0f 93 push r16 + a8: 1f 93 push r17 + aa: cf 93 push r28 + ac: df 93 push r29 + ae: 8c 01 movw r16, r24 + b0: eb 01 movw r28, r22 + b2: 7b 01 movw r14, r22 + b4: e4 0e add r14, r20 + b6: f1 1c adc r15, r1 for (uint8_t i = 0; i < length; i++) { - ba: 44 23 and r20, r20 - bc: 91 f0 breq .+36 ; 0xe2 - be: 8c 01 movw r16, r24 - c0: eb 01 movw r28, r22 - c2: 41 50 subi r20, 0x01 ; 1 - c4: e4 2e mov r14, r20 - c6: f1 2c mov r15, r1 - c8: 8f ef ldi r24, 0xFF ; 255 - ca: e8 1a sub r14, r24 - cc: f8 0a sbc r15, r24 - ce: e6 0e add r14, r22 - d0: f7 1e adc r15, r23 - data[i] = eeprom_read_byte(address+i); - d2: c8 01 movw r24, r16 - d4: 71 d7 rcall .+3810 ; 0xfb8 - d6: 89 93 st Y+, r24 - d8: 0f 5f subi r16, 0xFF ; 255 - da: 1f 4f sbci r17, 0xFF ; 255 - - -void cm_EEPROM_read(uint8_t* address, uint8_t *data, uint8_t length) { - - - for (uint8_t i = 0; i < length; i++) { - dc: ce 15 cp r28, r14 - de: df 05 cpc r29, r15 - e0: c1 f7 brne .-16 ; 0xd2 + b8: ce 15 cp r28, r14 + ba: df 05 cpc r29, r15 + bc: 31 f0 breq .+12 ; 0xca data[i] = eeprom_read_byte(address+i); + be: c8 01 movw r24, r16 + c0: 63 d7 rcall .+3782 ; 0xf88 + c2: 89 93 st Y+, r24 + c4: 0f 5f subi r16, 0xFF ; 255 + c6: 1f 4f sbci r17, 0xFF ; 255 + c8: f7 cf rjmp .-18 ; 0xb8 } } - e2: df 91 pop r29 - e4: cf 91 pop r28 - e6: 1f 91 pop r17 - e8: 0f 91 pop r16 - ea: ff 90 pop r15 - ec: ef 90 pop r14 - ee: 08 95 ret + ca: df 91 pop r29 + cc: cf 91 pop r28 + ce: 1f 91 pop r17 + d0: 0f 91 pop r16 + d2: ff 90 pop r15 + d4: ef 90 pop r14 + d6: 08 95 ret -000000f0 : +000000d8 : return 0; } int gpio_get_level(avr_gpio_ports port, uint8_t pin){ switch (port) - f0: 81 11 cpse r24, r1 - f2: 0b c0 rjmp .+22 ; 0x10a <__DATA_REGION_LENGTH__+0xa> + d8: 81 11 cpse r24, r1 + da: 0b c0 rjmp .+22 ; 0xf2 { case GPIO_PORTA: return (PORTA.IN & (1 << pin)) ? 1 : 0; - f4: 80 91 08 04 lds r24, 0x0408 ; 0x800408 <__RODATA_PM_OFFSET__+0x7f8408> - f8: 90 e0 ldi r25, 0x00 ; 0 - fa: 02 c0 rjmp .+4 ; 0x100 <__DATA_REGION_LENGTH__> - fc: 95 95 asr r25 - fe: 87 95 ror r24 - 100: 6a 95 dec r22 - 102: e2 f7 brpl .-8 ; 0xfc - 104: 81 70 andi r24, 0x01 ; 1 - 106: 99 27 eor r25, r25 - 108: 08 95 ret + dc: 80 91 08 04 lds r24, 0x0408 ; 0x800408 <__RODATA_PM_OFFSET__+0x7f8408> + e0: 90 e0 ldi r25, 0x00 ; 0 + e2: 02 c0 rjmp .+4 ; 0xe8 + e4: 95 95 asr r25 + e6: 87 95 ror r24 + e8: 6a 95 dec r22 + ea: e2 f7 brpl .-8 ; 0xe4 + ec: 81 70 andi r24, 0x01 ; 1 + ee: 99 27 eor r25, r25 + f0: 08 95 ret break; default: break; } return 0; - 10a: 80 e0 ldi r24, 0x00 ; 0 - 10c: 90 e0 ldi r25, 0x00 ; 0 + f2: 80 e0 ldi r24, 0x00 ; 0 + f4: 90 e0 ldi r25, 0x00 ; 0 } - 10e: 08 95 ret + f6: 08 95 ret -00000110 : - while (!(TWI0.MSTATUS & TWI_WIF_bm)); +000000f8 : + *data = TWI0.MDATA; - if (TWI0.MSTATUS & TWI_RXACK_bm) { - // NACK received - TWI0.MCTRLB = TWI_MCMD_STOP_gc; // Send stop condition - return 1; // Error: NACK received - 110: 20 91 15 08 lds r18, 0x0815 ; 0x800815 <__RODATA_PM_OFFSET__+0x7f8815> - 114: 20 7c andi r18, 0xC0 ; 192 - 116: e1 f3 breq .-8 ; 0x110 - 118: 20 91 15 08 lds r18, 0x0815 ; 0x800815 <__RODATA_PM_OFFSET__+0x7f8815> - 11c: 24 fd sbrc r18, 4 - 11e: 1f c0 rjmp .+62 ; 0x15e - 120: fc 01 movw r30, r24 - 122: 81 91 ld r24, Z+ - 124: 80 93 18 08 sts 0x0818, r24 ; 0x800818 <__RODATA_PM_OFFSET__+0x7f8818> - 128: 80 91 15 08 lds r24, 0x0815 ; 0x800815 <__RODATA_PM_OFFSET__+0x7f8815> - 12c: 86 ff sbrs r24, 6 - 12e: fc cf rjmp .-8 ; 0x128 - 130: 80 91 15 08 lds r24, 0x0815 ; 0x800815 <__RODATA_PM_OFFSET__+0x7f8815> - 134: 84 fd sbrc r24, 4 - 136: 24 c0 rjmp .+72 ; 0x180 - 138: 80 91 15 08 lds r24, 0x0815 ; 0x800815 <__RODATA_PM_OFFSET__+0x7f8815> - 13c: 8c 70 andi r24, 0x0C ; 12 - 13e: a9 f4 brne .+42 ; 0x16a - 140: 80 91 15 08 lds r24, 0x0815 ; 0x800815 <__RODATA_PM_OFFSET__+0x7f8815> - 144: 84 fd sbrc r24, 4 - 146: 05 c0 rjmp .+10 ; 0x152 - 148: 41 50 subi r20, 0x01 ; 1 - 14a: 51 09 sbc r21, r1 - 14c: 61 09 sbc r22, r1 - 14e: 71 09 sbc r23, r1 - 150: 41 f7 brne .-48 ; 0x122 - 152: 83 e0 ldi r24, 0x03 ; 3 - 154: 80 93 14 08 sts 0x0814, r24 ; 0x800814 <__RODATA_PM_OFFSET__+0x7f8814> - 158: 80 e0 ldi r24, 0x00 ; 0 - 15a: 90 e0 ldi r25, 0x00 ; 0 - 15c: 08 95 ret - 15e: 83 e0 ldi r24, 0x03 ; 3 - 160: 80 93 14 08 sts 0x0814, r24 ; 0x800814 <__RODATA_PM_OFFSET__+0x7f8814> - 164: 8f ef ldi r24, 0xFF ; 255 - 166: 9f ef ldi r25, 0xFF ; 255 - 168: 08 95 ret - 16a: 80 91 14 08 lds r24, 0x0814 ; 0x800814 <__RODATA_PM_OFFSET__+0x7f8814> - 16e: 88 60 ori r24, 0x08 ; 8 - 170: 80 93 14 08 sts 0x0814, r24 ; 0x800814 <__RODATA_PM_OFFSET__+0x7f8814> - 174: 81 e0 ldi r24, 0x01 ; 1 - 176: 80 93 15 08 sts 0x0815, r24 ; 0x800815 <__RODATA_PM_OFFSET__+0x7f8815> - 17a: 81 e0 ldi r24, 0x01 ; 1 - 17c: 90 e0 ldi r25, 0x00 ; 0 - 17e: 08 95 ret - 180: 83 e0 ldi r24, 0x03 ; 3 - 182: 80 93 14 08 sts 0x0814, r24 ; 0x800814 <__RODATA_PM_OFFSET__+0x7f8814> - 186: 81 e0 ldi r24, 0x01 ; 1 - 188: 90 e0 ldi r25, 0x00 ; 0 - 18a: 08 95 ret + // Send stop condition + TWI0.MCTRLB = TWI_MCMD_STOP_gc; + return 0; // Success +} + f8: 80 93 17 08 sts 0x0817, r24 ; 0x800817 <__RODATA_PM_OFFSET__+0x7f8817> + fc: 80 91 15 08 lds r24, 0x0815 ; 0x800815 <__RODATA_PM_OFFSET__+0x7f8815> + 100: 80 7c andi r24, 0xC0 ; 192 + 102: e1 f3 breq .-8 ; 0xfc + 104: 90 91 15 08 lds r25, 0x0815 ; 0x800815 <__RODATA_PM_OFFSET__+0x7f8815> + 108: 89 2f mov r24, r25 + 10a: 80 71 andi r24, 0x10 ; 16 + 10c: 94 ff sbrs r25, 4 + 10e: 04 c0 rjmp .+8 ; 0x118 <__DATA_REGION_LENGTH__+0x18> + 110: 83 e0 ldi r24, 0x03 ; 3 + 112: 80 93 14 08 sts 0x0814, r24 ; 0x800814 <__RODATA_PM_OFFSET__+0x7f8814> + 116: 81 e0 ldi r24, 0x01 ; 1 + 118: 08 95 ret -0000018c : - 18c: a6 2f mov r26, r22 - 18e: 97 2f mov r25, r23 - 190: 21 15 cp r18, r1 - 192: 31 05 cpc r19, r1 - 194: 41 05 cpc r20, r1 - 196: 51 05 cpc r21, r1 - 198: 69 f1 breq .+90 ; 0x1f4 - 19a: 81 60 ori r24, 0x01 ; 1 - 19c: 80 93 17 08 sts 0x0817, r24 ; 0x800817 <__RODATA_PM_OFFSET__+0x7f8817> - 1a0: 80 91 15 08 lds r24, 0x0815 ; 0x800815 <__RODATA_PM_OFFSET__+0x7f8815> - 1a4: 80 7c andi r24, 0xC0 ; 192 - 1a6: e1 f3 breq .-8 ; 0x1a0 - 1a8: 80 91 15 08 lds r24, 0x0815 ; 0x800815 <__RODATA_PM_OFFSET__+0x7f8815> - 1ac: 84 fd sbrc r24, 4 - 1ae: 1c c0 rjmp .+56 ; 0x1e8 - 1b0: ba 01 movw r22, r20 - 1b2: a9 01 movw r20, r18 - 1b4: 41 50 subi r20, 0x01 ; 1 - 1b6: 51 09 sbc r21, r1 - 1b8: 61 09 sbc r22, r1 - 1ba: 71 09 sbc r23, r1 - 1bc: ea 2f mov r30, r26 - 1be: f9 2f mov r31, r25 - 1c0: 92 e0 ldi r25, 0x02 ; 2 - 1c2: 80 91 15 08 lds r24, 0x0815 ; 0x800815 <__RODATA_PM_OFFSET__+0x7f8815> - 1c6: 80 7c andi r24, 0xC0 ; 192 - 1c8: e1 f3 breq .-8 ; 0x1c2 - 1ca: 80 91 18 08 lds r24, 0x0818 ; 0x800818 <__RODATA_PM_OFFSET__+0x7f8818> - 1ce: 81 93 st Z+, r24 - 1d0: 41 15 cp r20, r1 - 1d2: 51 05 cpc r21, r1 - 1d4: 61 05 cpc r22, r1 - 1d6: 71 05 cpc r23, r1 - 1d8: 81 f0 breq .+32 ; 0x1fa - 1da: 90 93 14 08 sts 0x0814, r25 ; 0x800814 <__RODATA_PM_OFFSET__+0x7f8814> +0000011a : + +int i2c_write(uint8_t dev_addr, void *data, uint32_t len){ + 11a: cf 92 push r12 + 11c: df 92 push r13 + 11e: ef 92 push r14 + 120: ff 92 push r15 + 122: cf 93 push r28 + 124: df 93 push r29 + 126: d6 2f mov r29, r22 + 128: c7 2f mov r28, r23 + 12a: 69 01 movw r12, r18 + 12c: 7a 01 movw r14, r20 + + // Check length + if(len == 0) return CM_I2C_NOK; + 12e: 23 2b or r18, r19 + 130: 24 2b or r18, r20 + 132: 25 2b or r18, r21 + 134: 19 f4 brne .+6 ; 0x13c + 136: 8f ef ldi r24, 0xFF ; 255 + 138: 9f ef ldi r25, 0xFF ; 255 + 13a: 32 c0 rjmp .+100 ; 0x1a0 + + // Make a pointer to data + uint8_t *dp = data; + + // Send register address to I2C device, we would like to read from.. + if(i2c_write_devAddr(dev_addr) != CM_I2C_OK)return CM_I2C_NOK; + 13c: dd df rcall .-70 ; 0xf8 + 13e: 81 11 cpse r24, r1 + 140: fa cf rjmp .-12 ; 0x136 + 142: ed 2f mov r30, r29 + 144: fc 2f mov r31, r28 + + do + { + // Prepare and send new data. + TWI0.MDATA = *dp++; + 146: 81 91 ld r24, Z+ + 148: 80 93 18 08 sts 0x0818, r24 ; 0x800818 <__RODATA_PM_OFFSET__+0x7f8818> + + while (!(TWI0.MSTATUS & TWI_WIF_bm)); + 14c: 80 91 15 08 lds r24, 0x0815 ; 0x800815 <__RODATA_PM_OFFSET__+0x7f8815> + 150: 86 ff sbrs r24, 6 + 152: fc cf rjmp .-8 ; 0x14c + + if (TWI0.MSTATUS & TWI_RXACK_bm) { + 154: 80 91 15 08 lds r24, 0x0815 ; 0x800815 <__RODATA_PM_OFFSET__+0x7f8815> + 158: 84 ff sbrs r24, 4 + 15a: 04 c0 rjmp .+8 ; 0x164 + // NACK received + TWI0.MCTRLB = TWI_MCMD_STOP_gc; // Send stop condition + 15c: 83 e0 ldi r24, 0x03 ; 3 + 15e: 80 93 14 08 sts 0x0814, r24 ; 0x800814 <__RODATA_PM_OFFSET__+0x7f8814> + 162: 0c c0 rjmp .+24 ; 0x17c + return 1; // Error: NACK received + } + + // Check for bus error and reset if it happens.. + if (TWI0.MSTATUS & (TWI_ARBLOST_bm | TWI_BUSERR_bm)) { + 164: 80 91 15 08 lds r24, 0x0815 ; 0x800815 <__RODATA_PM_OFFSET__+0x7f8815> + 168: 8c 70 andi r24, 0x0C ; 12 + 16a: 59 f0 breq .+22 ; 0x182 + return 0; +} + +static void i2c_reset() +{ + TWI0.MCTRLB |= TWI_FLUSH_bm; + 16c: 80 91 14 08 lds r24, 0x0814 ; 0x800814 <__RODATA_PM_OFFSET__+0x7f8814> + 170: 88 60 ori r24, 0x08 ; 8 + 172: 80 93 14 08 sts 0x0814, r24 ; 0x800814 <__RODATA_PM_OFFSET__+0x7f8814> + TWI0.MSTATUS = TWI_BUSSTATE_IDLE_gc; + 176: 81 e0 ldi r24, 0x01 ; 1 + 178: 80 93 15 08 sts 0x0815, r24 ; 0x800815 <__RODATA_PM_OFFSET__+0x7f8815> + } + + // Check for bus error and reset if it happens.. + if (TWI0.MSTATUS & (TWI_ARBLOST_bm | TWI_BUSERR_bm)) { + i2c_reset(); + return 1; + 17c: 81 e0 ldi r24, 0x01 ; 1 + 17e: 90 e0 ldi r25, 0x00 ; 0 + 180: 0f c0 rjmp .+30 ; 0x1a0 + } + + if (TWI0.MSTATUS & TWI_RXACK_bm) + 182: 80 91 15 08 lds r24, 0x0815 ; 0x800815 <__RODATA_PM_OFFSET__+0x7f8815> + 186: 84 fd sbrc r24, 4 + 188: 06 c0 rjmp .+12 ; 0x196 + break; + + }while(--len); + 18a: 81 e0 ldi r24, 0x01 ; 1 + 18c: c8 1a sub r12, r24 + 18e: d1 08 sbc r13, r1 + 190: e1 08 sbc r14, r1 + 192: f1 08 sbc r15, r1 + 194: c1 f6 brne .-80 ; 0x146 + + // Send stop condition + TWI0.MCTRLB = TWI_MCMD_STOP_gc; + 196: 83 e0 ldi r24, 0x03 ; 3 + 198: 80 93 14 08 sts 0x0814, r24 ; 0x800814 <__RODATA_PM_OFFSET__+0x7f8814> + + + return CM_I2C_OK; + 19c: 80 e0 ldi r24, 0x00 ; 0 + 19e: 90 e0 ldi r25, 0x00 ; 0 +} + 1a0: df 91 pop r29 + 1a2: cf 91 pop r28 + 1a4: ff 90 pop r15 + 1a6: ef 90 pop r14 + 1a8: df 90 pop r13 + 1aa: cf 90 pop r12 + 1ac: 08 95 ret + +000001ae : + +int i2c_read(uint8_t dev_addr, void *data, uint32_t len){ + 1ae: cf 92 push r12 + 1b0: df 92 push r13 + 1b2: ef 92 push r14 + 1b4: ff 92 push r15 + 1b6: cf 93 push r28 + 1b8: df 93 push r29 + 1ba: d6 2f mov r29, r22 + 1bc: c7 2f mov r28, r23 + 1be: 69 01 movw r12, r18 + 1c0: 7a 01 movw r14, r20 + + uint8_t *dp = data; + + if (len == 0) + 1c2: 23 2b or r18, r19 + 1c4: 24 2b or r18, r20 + 1c6: 25 2b or r18, r21 + 1c8: 61 f1 breq .+88 ; 0x222 + return 1; + + // Send register address to I2C device, we would like to read from.. + if(i2c_write_devAddr(dev_addr | 1) != CM_I2C_OK)return CM_I2C_NOK; + 1ca: 81 60 ori r24, 0x01 ; 1 + 1cc: 95 df rcall .-214 ; 0xf8 + 1ce: 81 11 cpse r24, r1 + 1d0: 2b c0 rjmp .+86 ; 0x228 + 1d2: ed 2f mov r30, r29 + 1d4: fc 2f mov r31, r28 + + *dp++ = TWI0.MDATA; + if (len == 0) { + TWI0.MCTRLB = TWI_ACKACT_NACK_gc; + } else { + TWI0.MCTRLB = TWI_ACKACT_ACK_gc | TWI_MCMD_RECVTRANS_gc; + 1d6: 92 e0 ldi r25, 0x02 ; 2 + + while (!(TWI0.MSTATUS & (TWI_WIF_bm | TWI_RIF_bm))); + + *dp++ = TWI0.MDATA; + if (len == 0) { + TWI0.MCTRLB = TWI_ACKACT_NACK_gc; + 1d8: 24 e0 ldi r18, 0x04 ; 4 + return 1; + + // Send register address to I2C device, we would like to read from.. + if(i2c_write_devAddr(dev_addr | 1) != CM_I2C_OK)return CM_I2C_NOK; + + while (len--) { + 1da: b7 01 movw r22, r14 + 1dc: a6 01 movw r20, r12 1de: 41 50 subi r20, 0x01 ; 1 1e0: 51 09 sbc r21, r1 1e2: 61 09 sbc r22, r1 1e4: 71 09 sbc r23, r1 - 1e6: ed cf rjmp .-38 ; 0x1c2 - 1e8: 83 e0 ldi r24, 0x03 ; 3 - 1ea: 80 93 14 08 sts 0x0814, r24 ; 0x800814 <__RODATA_PM_OFFSET__+0x7f8814> - 1ee: 8f ef ldi r24, 0xFF ; 255 - 1f0: 9f ef ldi r25, 0xFF ; 255 - 1f2: 08 95 ret - 1f4: 81 e0 ldi r24, 0x01 ; 1 - 1f6: 90 e0 ldi r25, 0x00 ; 0 - 1f8: 08 95 ret - 1fa: 84 e0 ldi r24, 0x04 ; 4 - 1fc: 80 93 14 08 sts 0x0814, r24 ; 0x800814 <__RODATA_PM_OFFSET__+0x7f8814> - 200: 83 e0 ldi r24, 0x03 ; 3 - 202: 80 93 14 08 sts 0x0814, r24 ; 0x800814 <__RODATA_PM_OFFSET__+0x7f8814> - 206: 80 e0 ldi r24, 0x00 ; 0 - 208: 90 e0 ldi r25, 0x00 ; 0 - 20a: 08 95 ret - -0000020c : + 1e6: cd 28 or r12, r13 + 1e8: ce 28 or r12, r14 + 1ea: cf 28 or r12, r15 + 1ec: a1 f0 breq .+40 ; 0x216 + + while (!(TWI0.MSTATUS & (TWI_WIF_bm | TWI_RIF_bm))); + 1ee: 80 91 15 08 lds r24, 0x0815 ; 0x800815 <__RODATA_PM_OFFSET__+0x7f8815> + 1f2: 80 7c andi r24, 0xC0 ; 192 + 1f4: e1 f3 breq .-8 ; 0x1ee + + *dp++ = TWI0.MDATA; + 1f6: 80 91 18 08 lds r24, 0x0818 ; 0x800818 <__RODATA_PM_OFFSET__+0x7f8818> + 1fa: 81 93 st Z+, r24 + if (len == 0) { + 1fc: 41 15 cp r20, r1 + 1fe: 51 05 cpc r21, r1 + 200: 61 05 cpc r22, r1 + 202: 71 05 cpc r23, r1 + 204: 19 f4 brne .+6 ; 0x20c + TWI0.MCTRLB = TWI_ACKACT_NACK_gc; + 206: 20 93 14 08 sts 0x0814, r18 ; 0x800814 <__RODATA_PM_OFFSET__+0x7f8814> + 20a: 02 c0 rjmp .+4 ; 0x210 + } else { + TWI0.MCTRLB = TWI_ACKACT_ACK_gc | TWI_MCMD_RECVTRANS_gc; + 20c: 90 93 14 08 sts 0x0814, r25 ; 0x800814 <__RODATA_PM_OFFSET__+0x7f8814> + + + return CM_I2C_OK; } +int i2c_read(uint8_t dev_addr, void *data, uint32_t len){ + 210: 6a 01 movw r12, r20 + 212: 7b 01 movw r14, r22 + 214: e2 cf rjmp .-60 ; 0x1da + TWI0.MCTRLB = TWI_ACKACT_ACK_gc | TWI_MCMD_RECVTRANS_gc; + } + } + + // Send stop condition + TWI0.MCTRLB = TWI_MCMD_STOP_gc; + 216: 83 e0 ldi r24, 0x03 ; 3 + 218: 80 93 14 08 sts 0x0814, r24 ; 0x800814 <__RODATA_PM_OFFSET__+0x7f8814> + 21c: 80 e0 ldi r24, 0x00 ; 0 + 21e: 90 e0 ldi r25, 0x00 ; 0 + 220: 05 c0 rjmp .+10 ; 0x22c +int i2c_read(uint8_t dev_addr, void *data, uint32_t len){ + + uint8_t *dp = data; + + if (len == 0) + return 1; + 222: 81 e0 ldi r24, 0x01 ; 1 + 224: 90 e0 ldi r25, 0x00 ; 0 + 226: 02 c0 rjmp .+4 ; 0x22c + + // Send register address to I2C device, we would like to read from.. + if(i2c_write_devAddr(dev_addr | 1) != CM_I2C_OK)return CM_I2C_NOK; + 228: 8f ef ldi r24, 0xFF ; 255 + 22a: 9f ef ldi r25, 0xFF ; 255 + TWI0.MCTRLB = TWI_MCMD_STOP_gc; + + return 0; + + +} + 22c: df 91 pop r29 + 22e: cf 91 pop r28 + 230: ff 90 pop r15 + 232: ef 90 pop r14 + 234: df 90 pop r13 + 236: cf 90 pop r12 + 238: 08 95 ret + +0000023a : + +int i2c_IsDeviceReady(uint8_t dev_addr){ + + TWI0.MADDR = dev_addr | 0; + 23a: 80 93 17 08 sts 0x0817, r24 ; 0x800817 <__RODATA_PM_OFFSET__+0x7f8817> + + // Wait for acknowledgment + while (!(TWI0.MSTATUS & TWI_WIF_bm)); + 23e: 80 91 15 08 lds r24, 0x0815 ; 0x800815 <__RODATA_PM_OFFSET__+0x7f8815> + 242: 86 ff sbrs r24, 6 + 244: fc cf rjmp .-8 ; 0x23e + + if (TWI0.MSTATUS & TWI_RXACK_bm) { + 246: 80 91 15 08 lds r24, 0x0815 ; 0x800815 <__RODATA_PM_OFFSET__+0x7f8815> + 24a: 84 ff sbrs r24, 4 + 24c: 06 c0 rjmp .+12 ; 0x25a + // NACK received + TWI0.MCTRLB = TWI_MCMD_STOP_gc; // Send stop condition + 24e: 83 e0 ldi r24, 0x03 ; 3 + 250: 80 93 14 08 sts 0x0814, r24 ; 0x800814 <__RODATA_PM_OFFSET__+0x7f8814> + return 1; // Error: NACK received + 254: 81 e0 ldi r24, 0x01 ; 1 + 256: 90 e0 ldi r25, 0x00 ; 0 + 258: 08 95 ret + } + + // Send stop condition + TWI0.MCTRLB = TWI_MCMD_STOP_gc; + 25a: 83 e0 ldi r24, 0x03 ; 3 + 25c: 80 93 14 08 sts 0x0814, r24 ; 0x800814 <__RODATA_PM_OFFSET__+0x7f8814> + return CM_I2C_OK; // Success + 260: 80 e0 ldi r24, 0x00 ; 0 + 262: 90 e0 ldi r25, 0x00 ; 0 + +} + 264: 08 95 ret + +00000266 : + int cm_i2c_init(void *i2c_inst){ PORTA.DIR &= ~(1 << 2); // Clear bit 2 (PA2) - 20c: e0 e0 ldi r30, 0x00 ; 0 - 20e: f4 e0 ldi r31, 0x04 ; 4 - 210: 80 81 ld r24, Z - 212: 8b 7f andi r24, 0xFB ; 251 - 214: 80 83 st Z, r24 + 266: e0 e0 ldi r30, 0x00 ; 0 + 268: f4 e0 ldi r31, 0x04 ; 4 + 26a: 80 81 ld r24, Z + 26c: 8b 7f andi r24, 0xFB ; 251 + 26e: 80 83 st Z, r24 PORTA.DIR &= ~(1 << 3); // Clear bit 3 (PA3) - 216: 80 81 ld r24, Z - 218: 87 7f andi r24, 0xF7 ; 247 - 21a: 80 83 st Z, r24 + 270: 80 81 ld r24, Z + 272: 87 7f andi r24, 0xF7 ; 247 + 274: 80 83 st Z, r24 // Set the baud rate for 100kHz with a typical rise time of 300 ns TWI0.MBAUD = 11; - 21c: a0 e1 ldi r26, 0x10 ; 16 - 21e: b8 e0 ldi r27, 0x08 ; 8 - 220: 8b e0 ldi r24, 0x0B ; 11 - 222: 16 96 adiw r26, 0x06 ; 6 - 224: 8c 93 st X, r24 - 226: 16 97 sbiw r26, 0x06 ; 6 + 276: a0 e1 ldi r26, 0x10 ; 16 + 278: b8 e0 ldi r27, 0x08 ; 8 + 27a: 8b e0 ldi r24, 0x0B ; 11 + 27c: 16 96 adiw r26, 0x06 ; 6 + 27e: 8c 93 st X, r24 + 280: 16 97 sbiw r26, 0x06 ; 6 // Enable the TWI master and set it to enable operation TWI0.MCTRLA = TWI_ENABLE_bm; - 228: 81 e0 ldi r24, 0x01 ; 1 - 22a: 13 96 adiw r26, 0x03 ; 3 - 22c: 8c 93 st X, r24 - 22e: 13 97 sbiw r26, 0x03 ; 3 + 282: 81 e0 ldi r24, 0x01 ; 1 + 284: 13 96 adiw r26, 0x03 ; 3 + 286: 8c 93 st X, r24 + 288: 13 97 sbiw r26, 0x03 ; 3 /* Set bus state idle */ TWI0.MSTATUS = TWI_BUSSTATE_IDLE_gc; - 230: 15 96 adiw r26, 0x05 ; 5 - 232: 8c 93 st X, r24 + 28a: 15 96 adiw r26, 0x05 ; 5 + 28c: 8c 93 st X, r24 // Enable the internal pull-ups for PA2 (SDA) and PA3 (SCL) PORTA.PIN2CTRL = PORT_PULLUPEN_bm; - 234: 88 e0 ldi r24, 0x08 ; 8 - 236: 82 8b std Z+18, r24 ; 0x12 + 28e: 88 e0 ldi r24, 0x08 ; 8 + 290: 82 8b std Z+18, r24 ; 0x12 PORTA.PIN3CTRL = PORT_PULLUPEN_bm; - 238: 83 8b std Z+19, r24 ; 0x13 + 292: 83 8b std Z+19, r24 ; 0x13 return CM_I2C_OK; } - 23a: 80 e0 ldi r24, 0x00 ; 0 - 23c: 90 e0 ldi r25, 0x00 ; 0 - 23e: 08 95 ret + 294: 80 e0 ldi r24, 0x00 ; 0 + 296: 90 e0 ldi r25, 0x00 ; 0 + 298: 08 95 ret -00000240 : +0000029a : int cm_i2c_addDev(cm_i2c_device_t *inst, void *i2c_inst, uint8_t dev_addr){ - 240: fc 01 movw r30, r24 + 29a: ef 92 push r14 + 29c: ff 92 push r15 + 29e: 0f 93 push r16 + 2a0: 1f 93 push r17 + 2a2: cf 93 push r28 + 2a4: 8c 01 movw r16, r24 + 2a6: 7b 01 movw r14, r22 + 2a8: c4 2f mov r28, r20 //if(i2c_inst == NULL) return CM_I2C_NOK; // Check if device responds! if(i2c_IsDeviceReady((dev_addr << 1)) != CM_I2C_OK)return CM_I2C_NO_DEVICE; - 242: 84 2f mov r24, r20 - 244: 88 0f add r24, r24 - -} - -int i2c_IsDeviceReady(uint8_t dev_addr){ - - TWI0.MADDR = dev_addr | 0; - 246: 80 93 17 08 sts 0x0817, r24 ; 0x800817 <__RODATA_PM_OFFSET__+0x7f8817> - - // Wait for acknowledgment - while (!(TWI0.MSTATUS & TWI_WIF_bm)); - 24a: 90 91 15 08 lds r25, 0x0815 ; 0x800815 <__RODATA_PM_OFFSET__+0x7f8815> - 24e: 96 ff sbrs r25, 6 - 250: fc cf rjmp .-8 ; 0x24a - - if (TWI0.MSTATUS & TWI_RXACK_bm) { - 252: 80 91 15 08 lds r24, 0x0815 ; 0x800815 <__RODATA_PM_OFFSET__+0x7f8815> - 256: 84 ff sbrs r24, 4 - 258: 06 c0 rjmp .+12 ; 0x266 - // NACK received - TWI0.MCTRLB = TWI_MCMD_STOP_gc; // Send stop condition - 25a: 83 e0 ldi r24, 0x03 ; 3 - 25c: 80 93 14 08 sts 0x0814, r24 ; 0x800814 <__RODATA_PM_OFFSET__+0x7f8814> -int cm_i2c_addDev(cm_i2c_device_t *inst, void *i2c_inst, uint8_t dev_addr){ - - //if(i2c_inst == NULL) return CM_I2C_NOK; - - // Check if device responds! - if(i2c_IsDeviceReady((dev_addr << 1)) != CM_I2C_OK)return CM_I2C_NO_DEVICE; - 260: 8e ef ldi r24, 0xFE ; 254 - 262: 9f ef ldi r25, 0xFF ; 255 - 264: 08 95 ret - TWI0.MCTRLB = TWI_MCMD_STOP_gc; // Send stop condition - return 1; // Error: NACK received - } - - // Send stop condition - TWI0.MCTRLB = TWI_MCMD_STOP_gc; - 266: 83 e0 ldi r24, 0x03 ; 3 - 268: 80 93 14 08 sts 0x0814, r24 ; 0x800814 <__RODATA_PM_OFFSET__+0x7f8814> - - // Check if device responds! - if(i2c_IsDeviceReady((dev_addr << 1)) != CM_I2C_OK)return CM_I2C_NO_DEVICE; + 2aa: 84 2f mov r24, r20 + 2ac: 88 0f add r24, r24 + 2ae: c5 df rcall .-118 ; 0x23a + 2b0: 00 97 sbiw r24, 0x00 ; 0 + 2b2: 49 f4 brne .+18 ; 0x2c6 // add device info if device responds! inst->i2c_transfer_inst = i2c_inst; - 26c: 60 83 st Z, r22 - 26e: 71 83 std Z+1, r23 ; 0x01 + 2b4: f8 01 movw r30, r16 + 2b6: e0 82 st Z, r14 + 2b8: f1 82 std Z+1, r15 ; 0x01 inst->dev_addr = (dev_addr << 1) & 0b11111110; - 270: 50 e0 ldi r21, 0x00 ; 0 - 272: 44 0f add r20, r20 - 274: 55 1f adc r21, r21 - 276: 42 83 std Z+2, r20 ; 0x02 + 2ba: 4c 2f mov r20, r28 + 2bc: 50 e0 ldi r21, 0x00 ; 0 + 2be: 44 0f add r20, r20 + 2c0: 55 1f adc r21, r21 + 2c2: 42 83 std Z+2, r20 ; 0x02 return CM_I2C_OK; - 278: 80 e0 ldi r24, 0x00 ; 0 - 27a: 90 e0 ldi r25, 0x00 ; 0 -} - 27c: 08 95 ret + 2c4: 02 c0 rjmp .+4 ; 0x2ca +int cm_i2c_addDev(cm_i2c_device_t *inst, void *i2c_inst, uint8_t dev_addr){ -0000027e : + //if(i2c_inst == NULL) return CM_I2C_NOK; + + // Check if device responds! + if(i2c_IsDeviceReady((dev_addr << 1)) != CM_I2C_OK)return CM_I2C_NO_DEVICE; + 2c6: 8e ef ldi r24, 0xFE ; 254 + 2c8: 9f ef ldi r25, 0xFF ; 255 + // add device info if device responds! + inst->i2c_transfer_inst = i2c_inst; + inst->dev_addr = (dev_addr << 1) & 0b11111110; + + return CM_I2C_OK; +} + 2ca: cf 91 pop r28 + 2cc: 1f 91 pop r17 + 2ce: 0f 91 pop r16 + 2d0: ff 90 pop r15 + 2d2: ef 90 pop r14 + 2d4: 08 95 ret + +000002d6 : int cm_i2c_transfer(cm_i2c_device_t *inst, uint8_t *data, uint32_t len, i2c_setget_cm_t set_get){ - 27e: 0f 93 push r16 + 2d6: 0f 93 push r16 if(inst == NULL) return CM_I2C_NOK; - 280: 00 97 sbiw r24, 0x00 ; 0 - 282: 09 f1 breq .+66 ; 0x2c6 - 284: fb 01 movw r30, r22 - 286: dc 01 movw r26, r24 + 2d8: 00 97 sbiw r24, 0x00 ; 0 + 2da: 59 f0 breq .+22 ; 0x2f2 + 2dc: fc 01 movw r30, r24 // Check if device responds! //if(i2c_IsDeviceReady(inst->dev_addr) != CM_I2C_OK)return CM_I2C_NO_DEVICE; switch(set_get){ - 288: 00 23 and r16, r16 - 28a: b1 f0 breq .+44 ; 0x2b8 - 28c: 01 30 cpi r16, 0x01 ; 1 - 28e: 21 f0 breq .+8 ; 0x298 - break; - - - } - - return CM_I2C_OK; - 290: 80 e0 ldi r24, 0x00 ; 0 - 292: 90 e0 ldi r25, 0x00 ; 0 - -} - 294: 0f 91 pop r16 - 296: 08 95 ret -} - -int i2c_write(uint8_t dev_addr, void *data, uint32_t len){ - - // Check length - if(len == 0) return CM_I2C_NOK; - 298: 21 15 cp r18, r1 - 29a: 31 05 cpc r19, r1 - 29c: 41 05 cpc r20, r1 - 29e: 51 05 cpc r21, r1 - 2a0: b9 f3 breq .-18 ; 0x290 + 2de: 00 23 and r16, r16 + 2e0: 29 f0 breq .+10 ; 0x2ec + 2e2: 01 30 cpi r16, 0x01 ; 1 + 2e4: 49 f4 brne .+18 ; 0x2f8 i2c_read(inst->dev_addr, data, len); break; case I2C_CM_SET: //HAL_I2C_Master_Transmit(inst->i2c_transfer_inst, inst->dev_addr, data, len, 1); i2c_write(inst->dev_addr, data, len); - 2a2: 12 96 adiw r26, 0x02 ; 2 - 2a4: 8c 91 ld r24, X - -#ifdef AVR_ATTINY_402 - -uint8_t i2c_write_devAddr(uint8_t dev_addr){ - - TWI0.MADDR = dev_addr; - 2a6: 80 93 17 08 sts 0x0817, r24 ; 0x800817 <__RODATA_PM_OFFSET__+0x7f8817> - 2aa: ba 01 movw r22, r20 - 2ac: a9 01 movw r20, r18 - 2ae: cf 01 movw r24, r30 - 2b0: 2f df rcall .-418 ; 0x110 - break; - - - } - - return CM_I2C_OK; - 2b2: 80 e0 ldi r24, 0x00 ; 0 - 2b4: 90 e0 ldi r25, 0x00 ; 0 - 2b6: ee cf rjmp .-36 ; 0x294 + 2e6: 82 81 ldd r24, Z+2 ; 0x02 + 2e8: 18 df rcall .-464 ; 0x11a + 2ea: 06 c0 rjmp .+12 ; 0x2f8 switch(set_get){ case I2C_CM_GET: //HAL_I2C_Master_Receive(inst->i2c_transfer_inst, inst->dev_addr, data, len, 1); i2c_read(inst->dev_addr, data, len); - 2b8: 12 96 adiw r26, 0x02 ; 2 - 2ba: 8c 91 ld r24, X - 2bc: 67 df rcall .-306 ; 0x18c - break; - - - } - - return CM_I2C_OK; - 2be: 80 e0 ldi r24, 0x00 ; 0 - 2c0: 90 e0 ldi r25, 0x00 ; 0 - -} - 2c2: 0f 91 pop r16 - 2c4: 08 95 ret + 2ec: 82 81 ldd r24, Z+2 ; 0x02 + 2ee: 5f df rcall .-322 ; 0x1ae + 2f0: 03 c0 rjmp .+6 ; 0x2f8 } int cm_i2c_transfer(cm_i2c_device_t *inst, uint8_t *data, uint32_t len, i2c_setget_cm_t set_get){ if(inst == NULL) return CM_I2C_NOK; - 2c6: 8f ef ldi r24, 0xFF ; 255 - 2c8: 9f ef ldi r25, 0xFF ; 255 - 2ca: e4 cf rjmp .-56 ; 0x294 + 2f2: 8f ef ldi r24, 0xFF ; 255 + 2f4: 9f ef ldi r25, 0xFF ; 255 + 2f6: 02 c0 rjmp .+4 ; 0x2fc + break; -000002cc <__vector_22>: + + } + + return CM_I2C_OK; + 2f8: 80 e0 ldi r24, 0x00 ; 0 + 2fa: 90 e0 ldi r25, 0x00 ; 0 + +} + 2fc: 0f 91 pop r16 + 2fe: 08 95 ret + +00000300 <__vector_22>: #define BAUD_RATE 9600 static void *s_inst = NULL; get_UART_Event_fpt uart_rx_evt_fpt = NULL; ISR(USART0_RXC_vect) { - 2cc: 1f 92 push r1 - 2ce: 0f 92 push r0 - 2d0: 0f b6 in r0, 0x3f ; 63 - 2d2: 0f 92 push r0 - 2d4: 11 24 eor r1, r1 - 2d6: 2f 93 push r18 - 2d8: 3f 93 push r19 - 2da: 4f 93 push r20 - 2dc: 5f 93 push r21 - 2de: 6f 93 push r22 - 2e0: 7f 93 push r23 - 2e2: 8f 93 push r24 - 2e4: 9f 93 push r25 - 2e6: af 93 push r26 - 2e8: bf 93 push r27 - 2ea: ef 93 push r30 - 2ec: ff 93 push r31 + 300: 1f 92 push r1 + 302: 0f 92 push r0 + 304: 0f b6 in r0, 0x3f ; 63 + 306: 0f 92 push r0 + 308: 11 24 eor r1, r1 + 30a: 2f 93 push r18 + 30c: 3f 93 push r19 + 30e: 4f 93 push r20 + 310: 5f 93 push r21 + 312: 6f 93 push r22 + 314: 7f 93 push r23 + 316: 8f 93 push r24 + 318: 9f 93 push r25 + 31a: af 93 push r26 + 31c: bf 93 push r27 + 31e: ef 93 push r30 + 320: ff 93 push r31 // Read received data if(uart_rx_evt_fpt != NULL) uart_rx_evt_fpt(USART0.RXDATAL); - 2ee: e0 91 06 3f lds r30, 0x3F06 ; 0x803f06 <__data_end> - 2f2: f0 91 07 3f lds r31, 0x3F07 ; 0x803f07 <__data_end+0x1> - 2f6: 30 97 sbiw r30, 0x00 ; 0 - 2f8: 19 f0 breq .+6 ; 0x300 <__vector_22+0x34> - 2fa: 80 91 00 08 lds r24, 0x0800 ; 0x800800 <__RODATA_PM_OFFSET__+0x7f8800> - 2fe: 09 95 icall + 322: e0 91 06 3f lds r30, 0x3F06 ; 0x803f06 <__data_end> + 326: f0 91 07 3f lds r31, 0x3F07 ; 0x803f07 <__data_end+0x1> + 32a: 30 97 sbiw r30, 0x00 ; 0 + 32c: 19 f0 breq .+6 ; 0x334 <__vector_22+0x34> + 32e: 80 91 00 08 lds r24, 0x0800 ; 0x800800 <__RODATA_PM_OFFSET__+0x7f8800> + 332: 09 95 icall //cm_uart_send(USART0.RXDATAL); } - 300: ff 91 pop r31 - 302: ef 91 pop r30 - 304: bf 91 pop r27 - 306: af 91 pop r26 - 308: 9f 91 pop r25 - 30a: 8f 91 pop r24 - 30c: 7f 91 pop r23 - 30e: 6f 91 pop r22 - 310: 5f 91 pop r21 - 312: 4f 91 pop r20 - 314: 3f 91 pop r19 - 316: 2f 91 pop r18 - 318: 0f 90 pop r0 - 31a: 0f be out 0x3f, r0 ; 63 - 31c: 0f 90 pop r0 - 31e: 1f 90 pop r1 - 320: 18 95 reti + 334: ff 91 pop r31 + 336: ef 91 pop r30 + 338: bf 91 pop r27 + 33a: af 91 pop r26 + 33c: 9f 91 pop r25 + 33e: 8f 91 pop r24 + 340: 7f 91 pop r23 + 342: 6f 91 pop r22 + 344: 5f 91 pop r21 + 346: 4f 91 pop r20 + 348: 3f 91 pop r19 + 34a: 2f 91 pop r18 + 34c: 0f 90 pop r0 + 34e: 0f be out 0x3f, r0 ; 63 + 350: 0f 90 pop r0 + 352: 1f 90 pop r1 + 354: 18 95 reti -00000322 : +00000356 : void cm_uart_init(void *rtx_inst, get_UART_Event_fpt uart_rx_evt_fp){ - 322: cf 93 push r28 - 324: df 93 push r29 - 326: 1f 92 push r1 - 328: cd b7 in r28, 0x3d ; 61 - 32a: de b7 in r29, 0x3e ; 62 - 32c: ac 01 movw r20, r24 + 356: cf 93 push r28 + 358: df 93 push r29 + 35a: 1f 92 push r1 + 35c: cd b7 in r28, 0x3d ; 61 + 35e: de b7 in r29, 0x3e ; 62 //For interrupt-driven USART operation, global interrupts must be disabled during the initialization cli(); - 32e: f8 94 cli + 360: f8 94 cli // Calculate and set baud rate register (3.33 MHz / (16 * 9600) - 1) uint16_t baud = 1388;//(F_CPU / (16 * BAUD_RATE)) - 1; USART0.BAUD = baud; - 330: 2c e6 ldi r18, 0x6C ; 108 - 332: 35 e0 ldi r19, 0x05 ; 5 - 334: 20 93 08 08 sts 0x0808, r18 ; 0x800808 <__RODATA_PM_OFFSET__+0x7f8808> - 338: 30 93 09 08 sts 0x0809, r19 ; 0x800809 <__RODATA_PM_OFFSET__+0x7f8809> + 362: 2c e6 ldi r18, 0x6C ; 108 + 364: 35 e0 ldi r19, 0x05 ; 5 + 366: 20 93 08 08 sts 0x0808, r18 ; 0x800808 <__RODATA_PM_OFFSET__+0x7f8808> + 36a: 30 93 09 08 sts 0x0809, r19 ; 0x800809 <__RODATA_PM_OFFSET__+0x7f8809> // Configure USART0 for 8-bit data, no parity, 1 stop bit USART0.CTRLC = USART_CMODE_ASYNCHRONOUS_gc | // Asynchronous mode - 33c: 93 e0 ldi r25, 0x03 ; 3 - 33e: 90 93 07 08 sts 0x0807, r25 ; 0x800807 <__RODATA_PM_OFFSET__+0x7f8807> + 36e: 23 e0 ldi r18, 0x03 ; 3 + 370: 20 93 07 08 sts 0x0807, r18 ; 0x800807 <__RODATA_PM_OFFSET__+0x7f8807> USART_CHSIZE_8BIT_gc | // 8-bit character size USART_PMODE_DISABLED_gc; // No parity // Enable receiver, transmitter, and receive complete interrupt USART0.CTRLB = USART_RXEN_bm | // Enable receiver - 342: 90 ec ldi r25, 0xC0 ; 192 - 344: 90 93 06 08 sts 0x0806, r25 ; 0x800806 <__RODATA_PM_OFFSET__+0x7f8806> + 374: 20 ec ldi r18, 0xC0 ; 192 + 376: 20 93 06 08 sts 0x0806, r18 ; 0x800806 <__RODATA_PM_OFFSET__+0x7f8806> USART_TXEN_bm; // Enable transmitter if((uart_rx_evt_fp != NULL) || (rtx_inst != NULL)){ - 348: 61 15 cp r22, r1 - 34a: 71 05 cpc r23, r1 - 34c: d1 f0 breq .+52 ; 0x382 + 37a: 61 15 cp r22, r1 + 37c: 71 05 cpc r23, r1 + 37e: 11 f4 brne .+4 ; 0x384 + 380: 89 2b or r24, r25 + 382: 39 f0 breq .+14 ; 0x392 // Enable RX interrupt USART0.CTRLA = USART_RXCIE_bm; // Enable receive interrupt - 34e: 80 e8 ldi r24, 0x80 ; 128 - 350: 80 93 05 08 sts 0x0805, r24 ; 0x800805 <__RODATA_PM_OFFSET__+0x7f8805> + 384: 80 e8 ldi r24, 0x80 ; 128 + 386: 80 93 05 08 sts 0x0805, r24 ; 0x800805 <__RODATA_PM_OFFSET__+0x7f8805> s_inst = rtx_inst; uart_rx_evt_fpt = uart_rx_evt_fp; - 354: 60 93 06 3f sts 0x3F06, r22 ; 0x803f06 <__data_end> - 358: 70 93 07 3f sts 0x3F07, r23 ; 0x803f07 <__data_end+0x1> + 38a: 60 93 06 3f sts 0x3F06, r22 ; 0x803f06 <__data_end> + 38e: 70 93 07 3f sts 0x3F07, r23 ; 0x803f07 <__data_end+0x1> } // Clear any existing receive complete interrupt flag by reading RXDATAL if (USART0.STATUS & USART_RXCIF_bm) { - 35c: 80 91 04 08 lds r24, 0x0804 ; 0x800804 <__RODATA_PM_OFFSET__+0x7f8804> - 360: 87 ff sbrs r24, 7 - 362: 04 c0 rjmp .+8 ; 0x36c + 392: 80 91 04 08 lds r24, 0x0804 ; 0x800804 <__RODATA_PM_OFFSET__+0x7f8804> + 396: 87 ff sbrs r24, 7 + 398: 04 c0 rjmp .+8 ; 0x3a2 volatile uint8_t dummy = USART0.RXDATAL; // Read RXDATAL to clear the flag - 364: 80 91 00 08 lds r24, 0x0800 ; 0x800800 <__RODATA_PM_OFFSET__+0x7f8800> - 368: 89 83 std Y+1, r24 ; 0x01 + 39a: 80 91 00 08 lds r24, 0x0800 ; 0x800800 <__RODATA_PM_OFFSET__+0x7f8800> + 39e: 89 83 std Y+1, r24 ; 0x01 (void)dummy; // Silence unused variable warning - 36a: 89 81 ldd r24, Y+1 ; 0x01 + 3a0: 89 81 ldd r24, Y+1 ; 0x01 } PORTA.DIRSET = (1 << 6); // Set PA1 (TX) as output - 36c: 80 e4 ldi r24, 0x40 ; 64 - 36e: 80 93 01 04 sts 0x0401, r24 ; 0x800401 <__RODATA_PM_OFFSET__+0x7f8401> + 3a2: 80 e4 ldi r24, 0x40 ; 64 + 3a4: 80 93 01 04 sts 0x0401, r24 ; 0x800401 <__RODATA_PM_OFFSET__+0x7f8401> PORTA.DIRCLR = (1 << 7); // Set PA2 (RX) as input - 372: 80 e8 ldi r24, 0x80 ; 128 - 374: 80 93 02 04 sts 0x0402, r24 ; 0x800402 <__RODATA_PM_OFFSET__+0x7f8402> + 3a8: 80 e8 ldi r24, 0x80 ; 128 + 3aa: 80 93 02 04 sts 0x0402, r24 ; 0x800402 <__RODATA_PM_OFFSET__+0x7f8402> // Enable global interrupts sei(); - 378: 78 94 sei + 3ae: 78 94 sei } - 37a: 0f 90 pop r0 - 37c: df 91 pop r29 - 37e: cf 91 pop r28 - 380: 08 95 ret + 3b0: 0f 90 pop r0 + 3b2: df 91 pop r29 + 3b4: cf 91 pop r28 + 3b6: 08 95 ret - // Enable receiver, transmitter, and receive complete interrupt - USART0.CTRLB = USART_RXEN_bm | // Enable receiver - USART_TXEN_bm; // Enable transmitter - - if((uart_rx_evt_fp != NULL) || (rtx_inst != NULL)){ - 382: 45 2b or r20, r21 - 384: 21 f7 brne .-56 ; 0x34e - 386: ea cf rjmp .-44 ; 0x35c - -00000388 : +000003b8 : int cm_msgSync_Byte_DecodeSC(uint8_t rx_byte){ static cm_msg_startcode_states_t state = CM_MSGSYNC_STATE_INIT; switch (state) - 388: 90 91 41 3f lds r25, 0x3F41 ; 0x803f41 - 38c: 92 30 cpi r25, 0x02 ; 2 - 38e: 41 f1 breq .+80 ; 0x3e0 - 390: 60 f4 brcc .+24 ; 0x3aa - 392: 99 23 and r25, r25 - 394: e1 f0 breq .+56 ; 0x3ce - 396: 91 30 cpi r25, 0x01 ; 1 - 398: 89 f4 brne .+34 ; 0x3bc - case CM_MSGSYNC_STATE_INIT: - state = (rx_byte == startCode[state])? CM_MSGSYNC_STATE_2 : CM_MSGSYNC_STATE_INIT; - break; - - case CM_MSGSYNC_STATE_2: - state = (rx_byte == startCode[state])? CM_MSGSYNC_STATE_3 : CM_MSGSYNC_STATE_INIT; - 39a: 8a 35 cpi r24, 0x5A ; 90 - 39c: 29 f1 breq .+74 ; 0x3e8 - case CM_MSGSYNC_STATE_3: - state = (rx_byte == startCode[state])? CM_MSGSYNC_STATE_4 : CM_MSGSYNC_STATE_INIT; - break; - - case CM_MSGSYNC_STATE_4: - state = (rx_byte == startCode[state])? CM_MSGSYNC_STATE_5 : CM_MSGSYNC_STATE_INIT; - 39e: 80 e0 ldi r24, 0x00 ; 0 - 3a0: 80 93 41 3f sts 0x3F41, r24 ; 0x803f41 - default: - state = CM_MSGSYNC_STATE_INIT; - break; - } - - return 1; - 3a4: 81 e0 ldi r24, 0x01 ; 1 - 3a6: 90 e0 ldi r25, 0x00 ; 0 - state = (rx_byte == startCode[state])? CM_MSGSYNC_STATE_4 : CM_MSGSYNC_STATE_INIT; - break; - - case CM_MSGSYNC_STATE_4: - state = (rx_byte == startCode[state])? CM_MSGSYNC_STATE_5 : CM_MSGSYNC_STATE_INIT; - break; - 3a8: 08 95 ret - -int cm_msgSync_Byte_DecodeSC(uint8_t rx_byte){ - - static cm_msg_startcode_states_t state = CM_MSGSYNC_STATE_INIT; - - switch (state) - 3aa: 93 30 cpi r25, 0x03 ; 3 - 3ac: 61 f0 breq .+24 ; 0x3c6 - 3ae: 94 30 cpi r25, 0x04 ; 4 - 3b0: 29 f4 brne .+10 ; 0x3bc + 3b8: 90 91 41 3f lds r25, 0x3F41 ; 0x803f41 + 3bc: 92 30 cpi r25, 0x02 ; 2 + 3be: d1 f0 breq .+52 ; 0x3f4 + 3c0: 28 f4 brcc .+10 ; 0x3cc + 3c2: 99 23 and r25, r25 + 3c4: 61 f0 breq .+24 ; 0x3de + 3c6: 91 30 cpi r25, 0x01 ; 1 + 3c8: 89 f0 breq .+34 ; 0x3ec + 3ca: 20 c0 rjmp .+64 ; 0x40c <__LOCK_REGION_LENGTH__+0xc> + 3cc: 93 30 cpi r25, 0x03 ; 3 + 3ce: b1 f0 breq .+44 ; 0x3fc + 3d0: 94 30 cpi r25, 0x04 ; 4 + 3d2: e1 f4 brne .+56 ; 0x40c <__LOCK_REGION_LENGTH__+0xc> case CM_MSGSYNC_STATE_4: state = (rx_byte == startCode[state])? CM_MSGSYNC_STATE_5 : CM_MSGSYNC_STATE_INIT; break; case CM_MSGSYNC_STATE_5: state = CM_MSGSYNC_STATE_INIT; - 3b2: 10 92 41 3f sts 0x3F41, r1 ; 0x803f41 + 3d4: 10 92 41 3f sts 0x3F41, r1 ; 0x803f41 return 0; - 3b6: 80 e0 ldi r24, 0x00 ; 0 - 3b8: 90 e0 ldi r25, 0x00 ; 0 - 3ba: 08 95 ret - break; - - default: - state = CM_MSGSYNC_STATE_INIT; - 3bc: 10 92 41 3f sts 0x3F41, r1 ; 0x803f41 - break; - } - - return 1; - 3c0: 81 e0 ldi r24, 0x01 ; 1 - 3c2: 90 e0 ldi r25, 0x00 ; 0 - - -} - 3c4: 08 95 ret - case CM_MSGSYNC_STATE_3: - state = (rx_byte == startCode[state])? CM_MSGSYNC_STATE_4 : CM_MSGSYNC_STATE_INIT; - break; - - case CM_MSGSYNC_STATE_4: - state = (rx_byte == startCode[state])? CM_MSGSYNC_STATE_5 : CM_MSGSYNC_STATE_INIT; - 3c6: 83 34 cpi r24, 0x43 ; 67 - 3c8: 51 f7 brne .-44 ; 0x39e - 3ca: 84 e0 ldi r24, 0x04 ; 4 - 3cc: e9 cf rjmp .-46 ; 0x3a0 + 3d8: 80 e0 ldi r24, 0x00 ; 0 + 3da: 90 e0 ldi r25, 0x00 ; 0 + 3dc: 08 95 ret static cm_msg_startcode_states_t state = CM_MSGSYNC_STATE_INIT; switch (state) { case CM_MSGSYNC_STATE_INIT: state = (rx_byte == startCode[state])? CM_MSGSYNC_STATE_2 : CM_MSGSYNC_STATE_INIT; - 3ce: 91 e0 ldi r25, 0x01 ; 1 - 3d0: 8f 34 cpi r24, 0x4F ; 79 - 3d2: 09 f0 breq .+2 ; 0x3d6 - 3d4: 90 e0 ldi r25, 0x00 ; 0 - 3d6: 90 93 41 3f sts 0x3F41, r25 ; 0x803f41 - default: - state = CM_MSGSYNC_STATE_INIT; + 3de: 91 e0 ldi r25, 0x01 ; 1 + 3e0: 8f 34 cpi r24, 0x4F ; 79 + 3e2: 09 f0 breq .+2 ; 0x3e6 + 3e4: 90 e0 ldi r25, 0x00 ; 0 + 3e6: 90 93 41 3f sts 0x3F41, r25 ; 0x803f41 + 3ea: 12 c0 rjmp .+36 ; 0x410 <__LOCK_REGION_LENGTH__+0x10> break; - } - - return 1; - 3da: 81 e0 ldi r24, 0x01 ; 1 - 3dc: 90 e0 ldi r25, 0x00 ; 0 - - switch (state) - { - case CM_MSGSYNC_STATE_INIT: - state = (rx_byte == startCode[state])? CM_MSGSYNC_STATE_2 : CM_MSGSYNC_STATE_INIT; - break; - 3de: 08 95 ret + case CM_MSGSYNC_STATE_2: state = (rx_byte == startCode[state])? CM_MSGSYNC_STATE_3 : CM_MSGSYNC_STATE_INIT; + 3ec: 8a 35 cpi r24, 0x5A ; 90 + 3ee: 41 f4 brne .+16 ; 0x400 <__LOCK_REGION_LENGTH__> + 3f0: 82 e0 ldi r24, 0x02 ; 2 + 3f2: 09 c0 rjmp .+18 ; 0x406 <__LOCK_REGION_LENGTH__+0x6> break; case CM_MSGSYNC_STATE_3: state = (rx_byte == startCode[state])? CM_MSGSYNC_STATE_4 : CM_MSGSYNC_STATE_INIT; - 3e0: 81 33 cpi r24, 0x31 ; 49 - 3e2: e9 f6 brne .-70 ; 0x39e - 3e4: 83 e0 ldi r24, 0x03 ; 3 - 3e6: dc cf rjmp .-72 ; 0x3a0 - case CM_MSGSYNC_STATE_INIT: - state = (rx_byte == startCode[state])? CM_MSGSYNC_STATE_2 : CM_MSGSYNC_STATE_INIT; + 3f4: 81 33 cpi r24, 0x31 ; 49 + 3f6: 21 f4 brne .+8 ; 0x400 <__LOCK_REGION_LENGTH__> + 3f8: 83 e0 ldi r24, 0x03 ; 3 + 3fa: 05 c0 rjmp .+10 ; 0x406 <__LOCK_REGION_LENGTH__+0x6> break; - case CM_MSGSYNC_STATE_2: - state = (rx_byte == startCode[state])? CM_MSGSYNC_STATE_3 : CM_MSGSYNC_STATE_INIT; - 3e8: 82 e0 ldi r24, 0x02 ; 2 - 3ea: da cf rjmp .-76 ; 0x3a0 + case CM_MSGSYNC_STATE_4: + state = (rx_byte == startCode[state])? CM_MSGSYNC_STATE_5 : CM_MSGSYNC_STATE_INIT; + 3fc: 83 34 cpi r24, 0x43 ; 67 + 3fe: 11 f0 breq .+4 ; 0x404 <__LOCK_REGION_LENGTH__+0x4> + 400: 80 e0 ldi r24, 0x00 ; 0 + 402: 01 c0 rjmp .+2 ; 0x406 <__LOCK_REGION_LENGTH__+0x6> + 404: 84 e0 ldi r24, 0x04 ; 4 + 406: 80 93 41 3f sts 0x3F41, r24 ; 0x803f41 + 40a: 02 c0 rjmp .+4 ; 0x410 <__LOCK_REGION_LENGTH__+0x10> + state = CM_MSGSYNC_STATE_INIT; + return 0; + break; + + default: + state = CM_MSGSYNC_STATE_INIT; + 40c: 10 92 41 3f sts 0x3F41, r1 ; 0x803f41 + break; + } + + return 1; + 410: 81 e0 ldi r24, 0x01 ; 1 + 412: 90 e0 ldi r25, 0x00 ; 0 + + +} + 414: 08 95 ret -000003ec : +00000416 : static cm_msg_decode_states_t state = CM_MSG_WAIT_FOR_STARTCODE; static cm_data_msg_t msg; static uint8_t data_bytes_idx = 0; switch (state) - 3ec: 90 91 40 3f lds r25, 0x3F40 ; 0x803f40 - 3f0: 93 30 cpi r25, 0x03 ; 3 - 3f2: 09 f4 brne .+2 ; 0x3f6 - 3f4: 4b c0 rjmp .+150 ; 0x48c <__LOCK_REGION_LENGTH__+0x8c> - 3f6: 68 f4 brcc .+26 ; 0x412 <__LOCK_REGION_LENGTH__+0x12> - 3f8: 99 23 and r25, r25 - 3fa: 09 f4 brne .+2 ; 0x3fe - 3fc: 40 c0 rjmp .+128 ; 0x47e <__LOCK_REGION_LENGTH__+0x7e> - 3fe: 91 30 cpi r25, 0x01 ; 1 - 400: 29 f4 brne .+10 ; 0x40c <__LOCK_REGION_LENGTH__+0xc> + 416: 90 91 40 3f lds r25, 0x3F40 ; 0x803f40 + 41a: 93 30 cpi r25, 0x03 ; 3 + 41c: b1 f0 breq .+44 ; 0x44a + 41e: 48 f4 brcc .+18 ; 0x432 + 420: 99 23 and r25, r25 + 422: 61 f0 breq .+24 ; 0x43c + 424: 91 30 cpi r25, 0x01 ; 1 + 426: 09 f0 breq .+2 ; 0x42a + 428: 43 c0 rjmp .+134 ; 0x4b0 if(!cm_msgSync_Byte_DecodeSC(rx_byte)) state = CM_MSG_DECODE_STATE_GET_SIZE_BYTE; data_bytes_idx = 0; break; case CM_MSG_DECODE_STATE_GET_SIZE_BYTE: msg.msg_data_size = rx_byte; - 402: 80 93 08 3f sts 0x3F08, r24 ; 0x803f08 + 42a: 80 93 08 3f sts 0x3F08, r24 ; 0x803f08 state = CM_MSG_DECODE_STATE_GET_CRC_BYTE1; - 406: 83 e0 ldi r24, 0x03 ; 3 - 408: 80 93 40 3f sts 0x3F40, r24 ; 0x803f40 - - } - break; - } - return 0; -} - 40c: 80 e0 ldi r24, 0x00 ; 0 - 40e: 90 e0 ldi r25, 0x00 ; 0 - 410: 08 95 ret + 42e: 83 e0 ldi r24, 0x03 ; 3 + 430: 1e c0 rjmp .+60 ; 0x46e static cm_msg_decode_states_t state = CM_MSG_WAIT_FOR_STARTCODE; static cm_data_msg_t msg; static uint8_t data_bytes_idx = 0; switch (state) - 412: 94 30 cpi r25, 0x04 ; 4 - 414: 19 f1 breq .+70 ; 0x45c <__LOCK_REGION_LENGTH__+0x5c> - 416: 95 30 cpi r25, 0x05 ; 5 - 418: c9 f7 brne .-14 ; 0x40c <__LOCK_REGION_LENGTH__+0xc> - msg.msg_data_crc |= rx_byte & 0xff; - state = CM_MSG_DECODE_STATE_GET_DATA; - break; - - case CM_MSG_DECODE_STATE_GET_DATA: - msg.msg_data[data_bytes_idx] = rx_byte; - 41a: 90 91 3f 3f lds r25, 0x3F3F ; 0x803f3f - 41e: e9 2f mov r30, r25 - 420: f0 e0 ldi r31, 0x00 ; 0 - 422: e8 5f subi r30, 0xF8 ; 248 - 424: f0 4c sbci r31, 0xC0 ; 192 - 426: 83 83 std Z+3, r24 ; 0x03 - data_bytes_idx++; - 428: 81 e0 ldi r24, 0x01 ; 1 - 42a: 89 0f add r24, r25 - 42c: 80 93 3f 3f sts 0x3F3F, r24 ; 0x803f3f - if(data_bytes_idx >= msg.msg_data_size){ - 430: 90 91 08 3f lds r25, 0x3F08 ; 0x803f08 - 434: 89 17 cp r24, r25 - 436: 50 f3 brcs .-44 ; 0x40c <__LOCK_REGION_LENGTH__+0xc> - // calculate CRC.. - - // Run function pointer msg evt.. - s_msg_cmplete_evt_fpt(s_msg_cmplete_evt_inst,&(msg.msg_data[0])); - 438: e0 91 44 3f lds r30, 0x3F44 ; 0x803f44 - 43c: f0 91 45 3f lds r31, 0x3F45 ; 0x803f45 - 440: 6b e0 ldi r22, 0x0B ; 11 - 442: 7f e3 ldi r23, 0x3F ; 63 - 444: 80 91 42 3f lds r24, 0x3F42 ; 0x803f42 - 448: 90 91 43 3f lds r25, 0x3F43 ; 0x803f43 - 44c: 09 95 icall - state = CM_MSG_WAIT_FOR_STARTCODE; - 44e: 10 92 40 3f sts 0x3F40, r1 ; 0x803f40 - data_bytes_idx = 0; - 452: 10 92 3f 3f sts 0x3F3F, r1 ; 0x803f3f - - } - break; - } - return 0; -} - 456: 80 e0 ldi r24, 0x00 ; 0 - 458: 90 e0 ldi r25, 0x00 ; 0 - 45a: 08 95 ret - msg.msg_data_crc = (rx_byte << 8) & 0xff00; - state = CM_MSG_DECODE_STATE_GET_CRC_BYTE2; - break; - - case CM_MSG_DECODE_STATE_GET_CRC_BYTE2: - msg.msg_data_crc |= rx_byte & 0xff; - 45c: 20 91 09 3f lds r18, 0x3F09 ; 0x803f09 - 460: 30 91 0a 3f lds r19, 0x3F0A ; 0x803f0a - 464: a9 01 movw r20, r18 - 466: 48 2b or r20, r24 - 468: ca 01 movw r24, r20 - 46a: 80 93 09 3f sts 0x3F09, r24 ; 0x803f09 - 46e: 90 93 0a 3f sts 0x3F0A, r25 ; 0x803f0a - state = CM_MSG_DECODE_STATE_GET_DATA; - 472: 85 e0 ldi r24, 0x05 ; 5 - 474: 80 93 40 3f sts 0x3F40, r24 ; 0x803f40 - - } - break; - } - return 0; -} - 478: 80 e0 ldi r24, 0x00 ; 0 - 47a: 90 e0 ldi r25, 0x00 ; 0 - 47c: 08 95 ret - static uint8_t data_bytes_idx = 0; - - switch (state) + 432: 94 30 cpi r25, 0x04 ; 4 + 434: 81 f0 breq .+32 ; 0x456 + 436: 95 30 cpi r25, 0x05 ; 5 + 438: e9 f0 breq .+58 ; 0x474 + 43a: 3a c0 rjmp .+116 ; 0x4b0 { case CM_MSG_WAIT_FOR_STARTCODE: if(!cm_msgSync_Byte_DecodeSC(rx_byte)) state = CM_MSG_DECODE_STATE_GET_SIZE_BYTE; - 47e: 84 df rcall .-248 ; 0x388 - 480: 89 2b or r24, r25 - 482: 39 f7 brne .-50 ; 0x452 <__LOCK_REGION_LENGTH__+0x52> - 484: 81 e0 ldi r24, 0x01 ; 1 - 486: 80 93 40 3f sts 0x3F40, r24 ; 0x803f40 - 48a: e3 cf rjmp .-58 ; 0x452 <__LOCK_REGION_LENGTH__+0x52> + 43c: bd df rcall .-134 ; 0x3b8 + 43e: 89 2b or r24, r25 + 440: a9 f5 brne .+106 ; 0x4ac + 442: 81 e0 ldi r24, 0x01 ; 1 + 444: 80 93 40 3f sts 0x3F40, r24 ; 0x803f40 + 448: 31 c0 rjmp .+98 ; 0x4ac state = CM_MSG_DECODE_STATE_GET_CRC_BYTE1; break; case CM_MSG_DECODE_STATE_GET_CRC_BYTE1: msg.msg_data_crc = (rx_byte << 8) & 0xff00; - 48c: 10 92 09 3f sts 0x3F09, r1 ; 0x803f09 - 490: 80 93 0a 3f sts 0x3F0A, r24 ; 0x803f0a + 44a: 10 92 09 3f sts 0x3F09, r1 ; 0x803f09 + 44e: 80 93 0a 3f sts 0x3F0A, r24 ; 0x803f0a state = CM_MSG_DECODE_STATE_GET_CRC_BYTE2; - 494: 84 e0 ldi r24, 0x04 ; 4 - 496: 80 93 40 3f sts 0x3F40, r24 ; 0x803f40 + 452: 84 e0 ldi r24, 0x04 ; 4 + 454: 0c c0 rjmp .+24 ; 0x46e + break; + + case CM_MSG_DECODE_STATE_GET_CRC_BYTE2: + msg.msg_data_crc |= rx_byte & 0xff; + 456: 20 91 09 3f lds r18, 0x3F09 ; 0x803f09 + 45a: 30 91 0a 3f lds r19, 0x3F0A ; 0x803f0a + 45e: a9 01 movw r20, r18 + 460: 48 2b or r20, r24 + 462: ca 01 movw r24, r20 + 464: 80 93 09 3f sts 0x3F09, r24 ; 0x803f09 + 468: 90 93 0a 3f sts 0x3F0A, r25 ; 0x803f0a + state = CM_MSG_DECODE_STATE_GET_DATA; + 46c: 85 e0 ldi r24, 0x05 ; 5 + 46e: 80 93 40 3f sts 0x3F40, r24 ; 0x803f40 + break; + 472: 1e c0 rjmp .+60 ; 0x4b0 + + case CM_MSG_DECODE_STATE_GET_DATA: + msg.msg_data[data_bytes_idx] = rx_byte; + 474: 90 91 3f 3f lds r25, 0x3F3F ; 0x803f3f + 478: e9 2f mov r30, r25 + 47a: f0 e0 ldi r31, 0x00 ; 0 + 47c: e8 5f subi r30, 0xF8 ; 248 + 47e: f0 4c sbci r31, 0xC0 ; 192 + 480: 83 83 std Z+3, r24 ; 0x03 + data_bytes_idx++; + 482: 81 e0 ldi r24, 0x01 ; 1 + 484: 89 0f add r24, r25 + 486: 80 93 3f 3f sts 0x3F3F, r24 ; 0x803f3f + if(data_bytes_idx >= msg.msg_data_size){ + 48a: 90 91 08 3f lds r25, 0x3F08 ; 0x803f08 + 48e: 89 17 cp r24, r25 + 490: 78 f0 brcs .+30 ; 0x4b0 + // calculate CRC.. + + // Run function pointer msg evt.. + s_msg_cmplete_evt_fpt(s_msg_cmplete_evt_inst,&(msg.msg_data[0])); + 492: e0 91 44 3f lds r30, 0x3F44 ; 0x803f44 + 496: f0 91 45 3f lds r31, 0x3F45 ; 0x803f45 + 49a: 6b e0 ldi r22, 0x0B ; 11 + 49c: 7f e3 ldi r23, 0x3F ; 63 + 49e: 80 91 42 3f lds r24, 0x3F42 ; 0x803f42 + 4a2: 90 91 43 3f lds r25, 0x3F43 ; 0x803f43 + 4a6: 09 95 icall + state = CM_MSG_WAIT_FOR_STARTCODE; + 4a8: 10 92 40 3f sts 0x3F40, r1 ; 0x803f40 + data_bytes_idx = 0; + 4ac: 10 92 3f 3f sts 0x3F3F, r1 ; 0x803f3f } break; } return 0; } - 49a: 80 e0 ldi r24, 0x00 ; 0 - 49c: 90 e0 ldi r25, 0x00 ; 0 - 49e: 08 95 ret + 4b0: 80 e0 ldi r24, 0x00 ; 0 + 4b2: 90 e0 ldi r25, 0x00 ; 0 + 4b4: 08 95 ret -000004a0 : +000004b6 : void cm_MsgCompleteEvt_Register(void *msg_cmplete_evt_inst, Get_msgComplete_Event_fpt msg_cmplete_evt_fp){ if((msg_cmplete_evt_inst == NULL) || (msg_cmplete_evt_fp == NULL))return; - 4a0: 00 97 sbiw r24, 0x00 ; 0 - 4a2: 59 f0 breq .+22 ; 0x4ba - 4a4: 61 15 cp r22, r1 - 4a6: 71 05 cpc r23, r1 - 4a8: 41 f0 breq .+16 ; 0x4ba + 4b6: 00 97 sbiw r24, 0x00 ; 0 + 4b8: 59 f0 breq .+22 ; 0x4d0 + 4ba: 61 15 cp r22, r1 + 4bc: 71 05 cpc r23, r1 + 4be: 41 f0 breq .+16 ; 0x4d0 s_msg_cmplete_evt_inst = msg_cmplete_evt_inst; - 4aa: 80 93 42 3f sts 0x3F42, r24 ; 0x803f42 - 4ae: 90 93 43 3f sts 0x3F43, r25 ; 0x803f43 + 4c0: 80 93 42 3f sts 0x3F42, r24 ; 0x803f42 + 4c4: 90 93 43 3f sts 0x3F43, r25 ; 0x803f43 s_msg_cmplete_evt_fpt = msg_cmplete_evt_fp; - 4b2: 60 93 44 3f sts 0x3F44, r22 ; 0x803f44 - 4b6: 70 93 45 3f sts 0x3F45, r23 ; 0x803f45 - 4ba: 08 95 ret + 4c8: 60 93 44 3f sts 0x3F44, r22 ; 0x803f44 + 4cc: 70 93 45 3f sts 0x3F45, r23 ; 0x803f45 + 4d0: 08 95 ret -000004bc : +000004d2 : } } static void cqm_setPLLParam(storno_xtal_app_t *inst, si5351_PLLs pll_num, si5351_Outputs output){ - 4bc: 9f 92 push r9 - 4be: af 92 push r10 - 4c0: bf 92 push r11 - 4c2: cf 92 push r12 - 4c4: df 92 push r13 - 4c6: ef 92 push r14 - 4c8: ff 92 push r15 - 4ca: 0f 93 push r16 - 4cc: 1f 93 push r17 - 4ce: cf 93 push r28 - 4d0: df 93 push r29 - 4d2: ec 01 movw r28, r24 - 4d4: 94 2e mov r9, r20 + 4d2: 9f 92 push r9 + 4d4: af 92 push r10 + 4d6: bf 92 push r11 + 4d8: cf 92 push r12 + 4da: df 92 push r13 + 4dc: ef 92 push r14 + 4de: ff 92 push r15 + 4e0: 0f 93 push r16 + 4e2: 1f 93 push r17 + 4e4: cf 93 push r28 + 4e6: df 93 push r29 + 4e8: ec 01 movw r28, r24 + 4ea: 94 2e mov r9, r20 cm_setPllParamRaw(inst->si5351_dev,pll_num, inst->pll_param_data.MSNx_P1, inst->pll_param_data.MSNx_P2, inst->pll_param_data.MSNx_P3); - 4d6: ad 84 ldd r10, Y+13 ; 0x0d - 4d8: be 84 ldd r11, Y+14 ; 0x0e - 4da: cf 84 ldd r12, Y+15 ; 0x0f - 4dc: d8 88 ldd r13, Y+16 ; 0x10 - 4de: e9 84 ldd r14, Y+9 ; 0x09 - 4e0: fa 84 ldd r15, Y+10 ; 0x0a - 4e2: 0b 85 ldd r16, Y+11 ; 0x0b - 4e4: 1c 85 ldd r17, Y+12 ; 0x0c - 4e6: 2d 81 ldd r18, Y+5 ; 0x05 - 4e8: 3e 81 ldd r19, Y+6 ; 0x06 - 4ea: 4f 81 ldd r20, Y+7 ; 0x07 - 4ec: 58 85 ldd r21, Y+8 ; 0x08 - 4ee: 8a 81 ldd r24, Y+2 ; 0x02 - 4f0: 9b 81 ldd r25, Y+3 ; 0x03 - 4f2: eb d1 rcall .+982 ; 0x8ca + 4ec: ad 84 ldd r10, Y+13 ; 0x0d + 4ee: be 84 ldd r11, Y+14 ; 0x0e + 4f0: cf 84 ldd r12, Y+15 ; 0x0f + 4f2: d8 88 ldd r13, Y+16 ; 0x10 + 4f4: e9 84 ldd r14, Y+9 ; 0x09 + 4f6: fa 84 ldd r15, Y+10 ; 0x0a + 4f8: 0b 85 ldd r16, Y+11 ; 0x0b + 4fa: 1c 85 ldd r17, Y+12 ; 0x0c + 4fc: 2d 81 ldd r18, Y+5 ; 0x05 + 4fe: 3e 81 ldd r19, Y+6 ; 0x06 + 500: 4f 81 ldd r20, Y+7 ; 0x07 + 502: 58 85 ldd r21, Y+8 ; 0x08 + 504: 8a 81 ldd r24, Y+2 ; 0x02 + 506: 9b 81 ldd r25, Y+3 ; 0x03 + 508: 13 d3 rcall .+1574 ; 0xb30 #else //round up by default __ticks_dc = (uint32_t)(ceil(fabs(__tmp))); #endif __builtin_avr_delay_cycles(__ticks_dc); - 4f4: 81 e4 ldi r24, 0x41 ; 65 - 4f6: 93 e0 ldi r25, 0x03 ; 3 - 4f8: 01 97 sbiw r24, 0x01 ; 1 - 4fa: f1 f7 brne .-4 ; 0x4f8 - 4fc: 00 00 nop + 50a: 81 e4 ldi r24, 0x41 ; 65 + 50c: 93 e0 ldi r25, 0x03 ; 3 + 50e: 01 97 sbiw r24, 0x01 ; 1 + 510: f1 f7 brne .-4 ; 0x50e + 512: 00 00 nop _delay_ms(1); cm_setOutputMultiSynthRaw(inst->si5351_dev,output, inst->pll_param_data.MSx_P1, inst->pll_param_data.MSx_P2, inst->pll_param_data.MSx_P3); - 4fe: a9 8c ldd r10, Y+25 ; 0x19 - 500: ba 8c ldd r11, Y+26 ; 0x1a - 502: cb 8c ldd r12, Y+27 ; 0x1b - 504: dc 8c ldd r13, Y+28 ; 0x1c - 506: ed 88 ldd r14, Y+21 ; 0x15 - 508: fe 88 ldd r15, Y+22 ; 0x16 - 50a: 0f 89 ldd r16, Y+23 ; 0x17 - 50c: 18 8d ldd r17, Y+24 ; 0x18 - 50e: 29 89 ldd r18, Y+17 ; 0x11 - 510: 3a 89 ldd r19, Y+18 ; 0x12 - 512: 4b 89 ldd r20, Y+19 ; 0x13 - 514: 5c 89 ldd r21, Y+20 ; 0x14 - 516: 69 2d mov r22, r9 - 518: 8a 81 ldd r24, Y+2 ; 0x02 - 51a: 9b 81 ldd r25, Y+3 ; 0x03 - 51c: 51 d2 rcall .+1186 ; 0x9c0 - 51e: 81 e4 ldi r24, 0x41 ; 65 - 520: 93 e0 ldi r25, 0x03 ; 3 - 522: 01 97 sbiw r24, 0x01 ; 1 - 524: f1 f7 brne .-4 ; 0x522 - 526: 00 00 nop + 514: a9 8c ldd r10, Y+25 ; 0x19 + 516: ba 8c ldd r11, Y+26 ; 0x1a + 518: cb 8c ldd r12, Y+27 ; 0x1b + 51a: dc 8c ldd r13, Y+28 ; 0x1c + 51c: ed 88 ldd r14, Y+21 ; 0x15 + 51e: fe 88 ldd r15, Y+22 ; 0x16 + 520: 0f 89 ldd r16, Y+23 ; 0x17 + 522: 18 8d ldd r17, Y+24 ; 0x18 + 524: 29 89 ldd r18, Y+17 ; 0x11 + 526: 3a 89 ldd r19, Y+18 ; 0x12 + 528: 4b 89 ldd r20, Y+19 ; 0x13 + 52a: 5c 89 ldd r21, Y+20 ; 0x14 + 52c: 69 2d mov r22, r9 + 52e: 8a 81 ldd r24, Y+2 ; 0x02 + 530: 9b 81 ldd r25, Y+3 ; 0x03 + 532: dd d1 rcall .+954 ; 0x8ee + 534: 81 e4 ldi r24, 0x41 ; 65 + 536: 93 e0 ldi r25, 0x03 ; 3 + 538: 01 97 sbiw r24, 0x01 ; 1 + 53a: f1 f7 brne .-4 ; 0x538 + 53c: 00 00 nop _delay_ms(1); cm_setCLKControl(inst->si5351_dev,output,SI5351_CLK_POWER_UP); - 528: 40 e0 ldi r20, 0x00 ; 0 - 52a: 69 2d mov r22, r9 - 52c: 8a 81 ldd r24, Y+2 ; 0x02 - 52e: 9b 81 ldd r25, Y+3 ; 0x03 + 53e: 40 e0 ldi r20, 0x00 ; 0 + 540: 69 2d mov r22, r9 + 542: 8a 81 ldd r24, Y+2 ; 0x02 + 544: 9b 81 ldd r25, Y+3 ; 0x03 } - 530: df 91 pop r29 - 532: cf 91 pop r28 - 534: 1f 91 pop r17 - 536: 0f 91 pop r16 - 538: ff 90 pop r15 - 53a: ef 90 pop r14 - 53c: df 90 pop r13 - 53e: cf 90 pop r12 - 540: bf 90 pop r11 - 542: af 90 pop r10 - 544: 9f 90 pop r9 + 546: df 91 pop r29 + 548: cf 91 pop r28 + 54a: 1f 91 pop r17 + 54c: 0f 91 pop r16 + 54e: ff 90 pop r15 + 550: ef 90 pop r14 + 552: df 90 pop r13 + 554: cf 90 pop r12 + 556: bf 90 pop r11 + 558: af 90 pop r10 + 55a: 9f 90 pop r9 cm_setPllParamRaw(inst->si5351_dev,pll_num, inst->pll_param_data.MSNx_P1, inst->pll_param_data.MSNx_P2, inst->pll_param_data.MSNx_P3); _delay_ms(1); cm_setOutputMultiSynthRaw(inst->si5351_dev,output, inst->pll_param_data.MSx_P1, inst->pll_param_data.MSx_P2, inst->pll_param_data.MSx_P3); _delay_ms(1); cm_setCLKControl(inst->si5351_dev,output,SI5351_CLK_POWER_UP); - 546: fd c2 rjmp .+1530 ; 0xb42 + 55c: 70 c2 rjmp .+1248 ; 0xa3e -00000548 : +0000055e : if(inst == NULL)return 1; return 0; } static void cqm6xx_app_updateOsc(storno_xtal_app_t *inst){ - 548: cf 93 push r28 - 54a: df 93 push r29 - 54c: fc 01 movw r30, r24 + 55e: cf 93 push r28 + 560: df 93 push r29 + 562: fc 01 movw r30, r24 #define PLLA_SETTINGS_EEPROM_ADDR 0x00 // addr 0 #define PLLB_SETTINGS_EEPROM_ADDR 0x20 // addr 32 (64 bytes total memory) static uint8_t isStructValid(storno_xtal_app_t *inst){ if(inst->si5351_dev == NULL) return 1; - 54e: 82 81 ldd r24, Z+2 ; 0x02 - 550: 93 81 ldd r25, Z+3 ; 0x03 - 552: 89 2b or r24, r25 - 554: 09 f1 breq .+66 ; 0x598 + 564: 82 81 ldd r24, Z+2 ; 0x02 + 566: 93 81 ldd r25, Z+3 ; 0x03 + 568: 89 2b or r24, r25 + 56a: 91 f1 breq .+100 ; 0x5d0 if(inst == NULL)return 1; - 556: 30 97 sbiw r30, 0x00 ; 0 - 558: f9 f0 breq .+62 ; 0x598 + 56c: 30 97 sbiw r30, 0x00 ; 0 + 56e: 81 f1 breq .+96 ; 0x5d0 // Check Struct if(isStructValid(inst) != 0)return; // We will only do this once, aka when transisioning from RX to TX and TX to RX.. if(inst->state_next == inst->state_now)return; - 55a: 81 81 ldd r24, Z+1 ; 0x01 - 55c: 90 81 ld r25, Z - 55e: 89 17 cp r24, r25 - 560: d9 f0 breq .+54 ; 0x598 - 562: ef 01 movw r28, r30 + 570: 81 81 ldd r24, Z+1 ; 0x01 + 572: 90 81 ld r25, Z + 574: 89 17 cp r24, r25 + 576: 61 f1 breq .+88 ; 0x5d0 + 578: ef 01 movw r28, r30 switch(inst->state_next){ - 564: 81 30 cpi r24, 0x01 ; 1 - 566: d9 f0 breq .+54 ; 0x59e - 568: 82 30 cpi r24, 0x02 ; 2 - 56a: b1 f4 brne .+44 ; 0x598 - 56c: 81 e4 ldi r24, 0x41 ; 65 - 56e: 93 e0 ldi r25, 0x03 ; 3 - 570: 01 97 sbiw r24, 0x01 ; 1 - 572: f1 f7 brne .-4 ; 0x570 - 574: 00 00 nop + 57a: 81 30 cpi r24, 0x01 ; 1 + 57c: 99 f0 breq .+38 ; 0x5a4 + 57e: 82 30 cpi r24, 0x02 ; 2 + 580: 39 f5 brne .+78 ; 0x5d0 + 582: 81 e4 ldi r24, 0x41 ; 65 + 584: 93 e0 ldi r25, 0x03 ; 3 + 586: 01 97 sbiw r24, 0x01 ; 1 + 588: f1 f7 brne .-4 ; 0x586 + 58a: 00 00 nop break; case STORNO_APP_TX_MODE: _delay_ms(1); cm_setOutputEnable(inst->si5351_dev,SI5351_OUTPUT_0,SI5351_OUTPUT_DISABLE); // RX - 576: 41 e0 ldi r20, 0x01 ; 1 - 578: 60 e0 ldi r22, 0x00 ; 0 - 57a: 82 81 ldd r24, Z+2 ; 0x02 - 57c: 93 81 ldd r25, Z+3 ; 0x03 - 57e: b4 d2 rcall .+1384 ; 0xae8 - 580: 81 e4 ldi r24, 0x41 ; 65 - 582: 93 e0 ldi r25, 0x03 ; 3 - 584: 01 97 sbiw r24, 0x01 ; 1 - 586: f1 f7 brne .-4 ; 0x584 - 588: 00 00 nop + 58c: 41 e0 ldi r20, 0x01 ; 1 + 58e: 60 e0 ldi r22, 0x00 ; 0 + 590: 82 81 ldd r24, Z+2 ; 0x02 + 592: 93 81 ldd r25, Z+3 ; 0x03 + 594: 31 d2 rcall .+1122 ; 0x9f8 + 596: 81 e4 ldi r24, 0x41 ; 65 + 598: 93 e0 ldi r25, 0x03 ; 3 + 59a: 01 97 sbiw r24, 0x01 ; 1 + 59c: f1 f7 brne .-4 ; 0x59a + 59e: 00 00 nop _delay_ms(1); cm_setOutputEnable(inst->si5351_dev,SI5351_OUTPUT_1,SI5351_OUTPUT_ENABLE); // TX - 58a: 40 e0 ldi r20, 0x00 ; 0 - 58c: 61 e0 ldi r22, 0x01 ; 1 - 58e: 8a 81 ldd r24, Y+2 ; 0x02 - 590: 9b 81 ldd r25, Y+3 ; 0x03 - break; - - } - - -} - 592: df 91 pop r29 - 594: cf 91 pop r28 - - case STORNO_APP_TX_MODE: - _delay_ms(1); - cm_setOutputEnable(inst->si5351_dev,SI5351_OUTPUT_0,SI5351_OUTPUT_DISABLE); // RX - _delay_ms(1); - cm_setOutputEnable(inst->si5351_dev,SI5351_OUTPUT_1,SI5351_OUTPUT_ENABLE); // TX - 596: a8 c2 rjmp .+1360 ; 0xae8 - break; - - } - - -} - 598: df 91 pop r29 - 59a: cf 91 pop r28 - 59c: 08 95 ret - 59e: 81 e4 ldi r24, 0x41 ; 65 - 5a0: 93 e0 ldi r25, 0x03 ; 3 - 5a2: 01 97 sbiw r24, 0x01 ; 1 - 5a4: f1 f7 brne .-4 ; 0x5a2 - 5a6: 00 00 nop + 5a0: 40 e0 ldi r20, 0x00 ; 0 + 5a2: 10 c0 rjmp .+32 ; 0x5c4 + 5a4: 81 e4 ldi r24, 0x41 ; 65 + 5a6: 93 e0 ldi r25, 0x03 ; 3 + 5a8: 01 97 sbiw r24, 0x01 ; 1 + 5aa: f1 f7 brne .-4 ; 0x5a8 + 5ac: 00 00 nop switch(inst->state_next){ case STORNO_APP_RX_MODE: _delay_ms(1); cm_setOutputEnable(inst->si5351_dev,SI5351_OUTPUT_0,SI5351_OUTPUT_ENABLE); // RX - 5a8: 40 e0 ldi r20, 0x00 ; 0 - 5aa: 60 e0 ldi r22, 0x00 ; 0 - 5ac: 82 81 ldd r24, Z+2 ; 0x02 - 5ae: 93 81 ldd r25, Z+3 ; 0x03 - 5b0: 9b d2 rcall .+1334 ; 0xae8 - 5b2: 81 e4 ldi r24, 0x41 ; 65 - 5b4: 93 e0 ldi r25, 0x03 ; 3 - 5b6: 01 97 sbiw r24, 0x01 ; 1 - 5b8: f1 f7 brne .-4 ; 0x5b6 - 5ba: 00 00 nop + 5ae: 40 e0 ldi r20, 0x00 ; 0 + 5b0: 60 e0 ldi r22, 0x00 ; 0 + 5b2: 82 81 ldd r24, Z+2 ; 0x02 + 5b4: 93 81 ldd r25, Z+3 ; 0x03 + 5b6: 20 d2 rcall .+1088 ; 0x9f8 + 5b8: 81 e4 ldi r24, 0x41 ; 65 + 5ba: 93 e0 ldi r25, 0x03 ; 3 + 5bc: 01 97 sbiw r24, 0x01 ; 1 + 5be: f1 f7 brne .-4 ; 0x5bc + 5c0: 00 00 nop _delay_ms(1); cm_setOutputEnable(inst->si5351_dev,SI5351_OUTPUT_1,SI5351_OUTPUT_DISABLE); // TX - 5bc: 41 e0 ldi r20, 0x01 ; 1 + 5c2: 41 e0 ldi r20, 0x01 ; 1 case STORNO_APP_TX_MODE: _delay_ms(1); cm_setOutputEnable(inst->si5351_dev,SI5351_OUTPUT_0,SI5351_OUTPUT_DISABLE); // RX _delay_ms(1); cm_setOutputEnable(inst->si5351_dev,SI5351_OUTPUT_1,SI5351_OUTPUT_ENABLE); // TX - 5be: 61 e0 ldi r22, 0x01 ; 1 - 5c0: 8a 81 ldd r24, Y+2 ; 0x02 - 5c2: 9b 81 ldd r25, Y+3 ; 0x03 + 5c4: 61 e0 ldi r22, 0x01 ; 1 + 5c6: 8a 81 ldd r24, Y+2 ; 0x02 + 5c8: 9b 81 ldd r25, Y+3 ; 0x03 break; } } - 5c4: df 91 pop r29 - 5c6: cf 91 pop r28 + 5ca: df 91 pop r29 + 5cc: cf 91 pop r28 case STORNO_APP_TX_MODE: _delay_ms(1); cm_setOutputEnable(inst->si5351_dev,SI5351_OUTPUT_0,SI5351_OUTPUT_DISABLE); // RX _delay_ms(1); cm_setOutputEnable(inst->si5351_dev,SI5351_OUTPUT_1,SI5351_OUTPUT_ENABLE); // TX - 5c8: 8f c2 rjmp .+1310 ; 0xae8 + 5ce: 14 c2 rjmp .+1064 ; 0x9f8 + break; + + } + + +} + 5d0: df 91 pop r29 + 5d2: cf 91 pop r28 + 5d4: 08 95 ret -000005ca : +000005d6 : } void cqm6xx_app_statemachine(storno_xtal_app_t *inst){ - 5ca: 0f 93 push r16 - 5cc: 1f 93 push r17 - 5ce: cf 93 push r28 - 5d0: df 93 push r29 + 5d6: 0f 93 push r16 + 5d8: 1f 93 push r17 + 5da: cf 93 push r28 + 5dc: df 93 push r29 #define PLLA_SETTINGS_EEPROM_ADDR 0x00 // addr 0 #define PLLB_SETTINGS_EEPROM_ADDR 0x20 // addr 32 (64 bytes total memory) static uint8_t isStructValid(storno_xtal_app_t *inst){ if(inst->si5351_dev == NULL) return 1; - 5d2: fc 01 movw r30, r24 - 5d4: 22 81 ldd r18, Z+2 ; 0x02 - 5d6: 33 81 ldd r19, Z+3 ; 0x03 - 5d8: 23 2b or r18, r19 - 5da: a9 f0 breq .+42 ; 0x606 + 5de: fc 01 movw r30, r24 + 5e0: 22 81 ldd r18, Z+2 ; 0x02 + 5e2: 33 81 ldd r19, Z+3 ; 0x03 + 5e4: 23 2b or r18, r19 + 5e6: 09 f4 brne .+2 ; 0x5ea + 5e8: 65 c0 rjmp .+202 ; 0x6b4 if(inst == NULL)return 1; - 5dc: 00 97 sbiw r24, 0x00 ; 0 - 5de: 99 f0 breq .+38 ; 0x606 - 5e0: ec 01 movw r28, r24 + 5ea: 00 97 sbiw r24, 0x00 ; 0 + 5ec: 09 f4 brne .+2 ; 0x5f0 + 5ee: 62 c0 rjmp .+196 ; 0x6b4 + 5f0: ec 01 movw r28, r24 void cqm6xx_app_statemachine(storno_xtal_app_t *inst){ // Check Struct if(isStructValid(inst) != 0)return; switch (inst->state_next) - 5e2: 81 81 ldd r24, Z+1 ; 0x01 - 5e4: 81 30 cpi r24, 0x01 ; 1 - 5e6: 09 f4 brne .+2 ; 0x5ea - 5e8: 5b c0 rjmp .+182 ; 0x6a0 - 5ea: 90 f0 brcs .+36 ; 0x610 - 5ec: 82 30 cpi r24, 0x02 ; 2 - 5ee: 59 f4 brne .+22 ; 0x606 - - break; - - case STORNO_APP_TX_MODE: - // If we just came from another state, then Enable TX osc here.. - cqm6xx_app_updateOsc(inst); - 5f0: ce 01 movw r24, r28 - 5f2: aa df rcall .-172 ; 0x548 - - // Update state now.. - inst->state_now = inst->state_next; - 5f4: 89 81 ldd r24, Y+1 ; 0x01 - 5f6: 88 83 st Y, r24 - - // If PTT is released, then disable TX osc, and go to STORNO_APP_RX_MODE, to enable rx osc. - if(gpio_get_level(GPIO_PORTA,GPIO_PIN_PTT) == GPIO_LEVEL_RESET) inst->state_next = STORNO_APP_RX_MODE; - 5f8: 63 e0 ldi r22, 0x03 ; 3 - 5fa: 80 e0 ldi r24, 0x00 ; 0 - 5fc: 79 dd rcall .-1294 ; 0xf0 - 5fe: 89 2b or r24, r25 - 600: 11 f4 brne .+4 ; 0x606 - 602: 81 e0 ldi r24, 0x01 ; 1 - 604: 89 83 std Y+1, r24 ; 0x01 - default: - break; - } - - -} - 606: df 91 pop r29 - 608: cf 91 pop r28 - 60a: 1f 91 pop r17 - 60c: 0f 91 pop r16 - 60e: 08 95 ret - - switch (inst->state_next) - { - case STORNO_APP_PROGRAM_OSC: - // Read PLL parameters from EEPROM and Program PLL values here: - inst->state_now = inst->state_next; - 610: 18 82 st Y, r1 - -} -static void cqm6xx_app_loadPLLParam(storno_xtal_app_t *inst){ - - // Read settings for PLLA first - cm_EEPROM_read((uint8_t*)PLLA_SETTINGS_EEPROM_ADDR,(uint8_t *)&inst->pll_param_data,sizeof(storno_pll_param_msg)); - 612: 8e 01 movw r16, r28 - 614: 0c 5f subi r16, 0xFC ; 252 - 616: 1f 4f sbci r17, 0xFF ; 255 - 618: 49 e1 ldi r20, 0x19 ; 25 - 61a: b8 01 movw r22, r16 - 61c: 80 e0 ldi r24, 0x00 ; 0 - 61e: 90 e0 ldi r25, 0x00 ; 0 - 620: 46 dd rcall .-1396 ; 0xae - 622: 81 e4 ldi r24, 0x41 ; 65 - 624: 93 e0 ldi r25, 0x03 ; 3 - 626: 01 97 sbiw r24, 0x01 ; 1 - 628: f1 f7 brne .-4 ; 0x626 - 62a: 00 00 nop - _delay_ms(1); - cm_setInputSource(inst->si5351_dev, SI5351_CLK_SOURCE_XTAL); - 62c: 60 e0 ldi r22, 0x00 ; 0 - 62e: 8a 81 ldd r24, Y+2 ; 0x02 - 630: 9b 81 ldd r25, Y+3 ; 0x03 - 632: dd d2 rcall .+1466 ; 0xbee - 634: e1 e4 ldi r30, 0x41 ; 65 - 636: f3 e0 ldi r31, 0x03 ; 3 - 638: 31 97 sbiw r30, 0x01 ; 1 - 63a: f1 f7 brne .-4 ; 0x638 - 63c: 00 00 nop - _delay_ms(1); - - - cqm_setPLLParam(inst, SI5351_PLL_A, SI5351_OUTPUT_0); - 63e: 40 e0 ldi r20, 0x00 ; 0 - 640: 60 e0 ldi r22, 0x00 ; 0 - 642: ce 01 movw r24, r28 - 644: 3b df rcall .-394 ; 0x4bc - 646: 81 e4 ldi r24, 0x41 ; 65 - 648: 93 e0 ldi r25, 0x03 ; 3 - 64a: 01 97 sbiw r24, 0x01 ; 1 - 64c: f1 f7 brne .-4 ; 0x64a - 64e: 00 00 nop - _delay_ms(1); - - - cm_EEPROM_read((uint8_t*)PLLB_SETTINGS_EEPROM_ADDR,(uint8_t *)&inst->pll_param_data,sizeof(storno_pll_param_msg)); - 650: 49 e1 ldi r20, 0x19 ; 25 - 652: b8 01 movw r22, r16 - 654: 80 e2 ldi r24, 0x20 ; 32 - 656: 90 e0 ldi r25, 0x00 ; 0 - 658: 2a dd rcall .-1452 ; 0xae - 65a: e1 e4 ldi r30, 0x41 ; 65 - 65c: f3 e0 ldi r31, 0x03 ; 3 - 65e: 31 97 sbiw r30, 0x01 ; 1 - 660: f1 f7 brne .-4 ; 0x65e - 662: 00 00 nop - _delay_ms(1); - cqm_setPLLParam(inst, SI5351_PLL_B, SI5351_OUTPUT_1); - 664: 41 e0 ldi r20, 0x01 ; 1 - 666: 61 e0 ldi r22, 0x01 ; 1 - 668: ce 01 movw r24, r28 - 66a: 28 df rcall .-432 ; 0x4bc - - - // Set third output to crystal freq for calibration! - cqm_setPLLParam(inst, SI5351_PLL_B, SI5351_OUTPUT_2); - 66c: 42 e0 ldi r20, 0x02 ; 2 - 66e: 61 e0 ldi r22, 0x01 ; 1 - 670: ce 01 movw r24, r28 - 672: 24 df rcall .-440 ; 0x4bc - cm_setCLKControl(inst->si5351_dev, SI5351_OUTPUT_2,SI5351_CLK_POWER_UP); - 674: 40 e0 ldi r20, 0x00 ; 0 - 676: 62 e0 ldi r22, 0x02 ; 2 - 678: 8a 81 ldd r24, Y+2 ; 0x02 - 67a: 9b 81 ldd r25, Y+3 ; 0x03 - 67c: 62 d2 rcall .+1220 ; 0xb42 - 67e: 81 e4 ldi r24, 0x41 ; 65 - 680: 93 e0 ldi r25, 0x03 ; 3 - 682: 01 97 sbiw r24, 0x01 ; 1 - 684: f1 f7 brne .-4 ; 0x682 - 686: 00 00 nop - _delay_ms(1); - cm_setOutputEnable(inst->si5351_dev,SI5351_OUTPUT_2,SI5351_OUTPUT_ENABLE); - 688: 40 e0 ldi r20, 0x00 ; 0 - 68a: 62 e0 ldi r22, 0x02 ; 2 - 68c: 8a 81 ldd r24, Y+2 ; 0x02 - 68e: 9b 81 ldd r25, Y+3 ; 0x03 - 690: 2b d2 rcall .+1110 ; 0xae8 - - cqm6xx_app_loadPLLParam(inst); - - - // if ok, then go to RX mode: - inst->state_next = STORNO_APP_RX_MODE; - 692: 81 e0 ldi r24, 0x01 ; 1 - 694: 89 83 std Y+1, r24 ; 0x01 - default: - break; - } - - -} - 696: df 91 pop r29 - 698: cf 91 pop r28 - 69a: 1f 91 pop r17 - 69c: 0f 91 pop r16 - 69e: 08 95 ret + 5f2: 81 81 ldd r24, Z+1 ; 0x01 + 5f4: 81 30 cpi r24, 0x01 ; 1 + 5f6: 61 f4 brne .+24 ; 0x610 break; case STORNO_APP_RX_MODE: // If we just came from another state, then Enable RX osc here.. cqm6xx_app_updateOsc(inst); - 6a0: ce 01 movw r24, r28 - 6a2: 52 df rcall .-348 ; 0x548 + 5f8: ce 01 movw r24, r28 + 5fa: b1 df rcall .-158 ; 0x55e // Update state now.. inst->state_now = inst->state_next; - 6a4: 89 81 ldd r24, Y+1 ; 0x01 - 6a6: 88 83 st Y, r24 + 5fc: 89 81 ldd r24, Y+1 ; 0x01 + 5fe: 88 83 st Y, r24 // If PTT is hold, then disable RX osc, and go to STORNO_APP_TX_MODE, to enable tx osc. if(gpio_get_level(GPIO_PORTA,GPIO_PIN_PTT) == GPIO_LEVEL_SET) inst->state_next = STORNO_APP_TX_MODE; - 6a8: 63 e0 ldi r22, 0x03 ; 3 - 6aa: 80 e0 ldi r24, 0x00 ; 0 - 6ac: 21 dd rcall .-1470 ; 0xf0 - 6ae: 01 97 sbiw r24, 0x01 ; 1 - 6b0: 09 f0 breq .+2 ; 0x6b4 - 6b2: a9 cf rjmp .-174 ; 0x606 - 6b4: 82 e0 ldi r24, 0x02 ; 2 - 6b6: 89 83 std Y+1, r24 ; 0x01 - 6b8: a6 cf rjmp .-180 ; 0x606 - -000006ba : + 600: 63 e0 ldi r22, 0x03 ; 3 + 602: 80 e0 ldi r24, 0x00 ; 0 + 604: 69 dd rcall .-1326 ; 0xd8 + 606: 01 97 sbiw r24, 0x01 ; 1 + 608: 09 f0 breq .+2 ; 0x60c + 60a: 54 c0 rjmp .+168 ; 0x6b4 + 60c: 82 e0 ldi r24, 0x02 ; 2 + 60e: 45 c0 rjmp .+138 ; 0x69a +void cqm6xx_app_statemachine(storno_xtal_app_t *inst){ + + // Check Struct + if(isStructValid(inst) != 0)return; + + switch (inst->state_next) + 610: 81 30 cpi r24, 0x01 ; 1 + 612: 08 f0 brcs .+2 ; 0x616 + 614: 44 c0 rjmp .+136 ; 0x69e + { + case STORNO_APP_PROGRAM_OSC: + // Read PLL parameters from EEPROM and Program PLL values here: + inst->state_now = inst->state_next; + 616: 18 82 st Y, r1 + +} +static void cqm6xx_app_loadPLLParam(storno_xtal_app_t *inst){ + + // Read settings for PLLA first + cm_EEPROM_read((uint8_t*)PLLA_SETTINGS_EEPROM_ADDR,(uint8_t *)&inst->pll_param_data,sizeof(storno_pll_param_msg)); + 618: 8e 01 movw r16, r28 + 61a: 0c 5f subi r16, 0xFC ; 252 + 61c: 1f 4f sbci r17, 0xFF ; 255 + 61e: 4d e1 ldi r20, 0x1D ; 29 + 620: b8 01 movw r22, r16 + 622: 80 e0 ldi r24, 0x00 ; 0 + 624: 90 e0 ldi r25, 0x00 ; 0 + 626: 3d dd rcall .-1414 ; 0xa2 + 628: 81 e4 ldi r24, 0x41 ; 65 + 62a: 93 e0 ldi r25, 0x03 ; 3 + 62c: 01 97 sbiw r24, 0x01 ; 1 + 62e: f1 f7 brne .-4 ; 0x62c + 630: 00 00 nop + _delay_ms(1); + cm_setInputSource(inst->si5351_dev, SI5351_CLK_SOURCE_XTAL); + 632: 60 e0 ldi r22, 0x00 ; 0 + 634: 8a 81 ldd r24, Y+2 ; 0x02 + 636: 9b 81 ldd r25, Y+3 ; 0x03 + 638: 3d d2 rcall .+1146 ; 0xab4 + 63a: e1 e4 ldi r30, 0x41 ; 65 + 63c: f3 e0 ldi r31, 0x03 ; 3 + 63e: 31 97 sbiw r30, 0x01 ; 1 + 640: f1 f7 brne .-4 ; 0x63e + 642: 00 00 nop + _delay_ms(1); + + + cqm_setPLLParam(inst, SI5351_PLL_A, SI5351_OUTPUT_0); + 644: 40 e0 ldi r20, 0x00 ; 0 + 646: 60 e0 ldi r22, 0x00 ; 0 + 648: ce 01 movw r24, r28 + 64a: 43 df rcall .-378 ; 0x4d2 + 64c: 81 e4 ldi r24, 0x41 ; 65 + 64e: 93 e0 ldi r25, 0x03 ; 3 + 650: 01 97 sbiw r24, 0x01 ; 1 + 652: f1 f7 brne .-4 ; 0x650 + 654: 00 00 nop + _delay_ms(1); + + + cm_EEPROM_read((uint8_t*)PLLB_SETTINGS_EEPROM_ADDR,(uint8_t *)&inst->pll_param_data,sizeof(storno_pll_param_msg)); + 656: 4d e1 ldi r20, 0x1D ; 29 + 658: b8 01 movw r22, r16 + 65a: 80 e2 ldi r24, 0x20 ; 32 + 65c: 90 e0 ldi r25, 0x00 ; 0 + 65e: 21 dd rcall .-1470 ; 0xa2 + 660: e1 e4 ldi r30, 0x41 ; 65 + 662: f3 e0 ldi r31, 0x03 ; 3 + 664: 31 97 sbiw r30, 0x01 ; 1 + 666: f1 f7 brne .-4 ; 0x664 + 668: 00 00 nop + _delay_ms(1); + cqm_setPLLParam(inst, SI5351_PLL_B, SI5351_OUTPUT_1); + 66a: 41 e0 ldi r20, 0x01 ; 1 + 66c: 61 e0 ldi r22, 0x01 ; 1 + 66e: ce 01 movw r24, r28 + 670: 30 df rcall .-416 ; 0x4d2 + + + // Set third output to crystal freq for calibration! + cqm_setPLLParam(inst, SI5351_PLL_B, SI5351_OUTPUT_2); + 672: 42 e0 ldi r20, 0x02 ; 2 + 674: 61 e0 ldi r22, 0x01 ; 1 + 676: ce 01 movw r24, r28 + 678: 2c df rcall .-424 ; 0x4d2 + cm_setCLKControl(inst->si5351_dev, SI5351_OUTPUT_2,SI5351_CLK_POWER_UP); + 67a: 40 e0 ldi r20, 0x00 ; 0 + 67c: 62 e0 ldi r22, 0x02 ; 2 + 67e: 8a 81 ldd r24, Y+2 ; 0x02 + 680: 9b 81 ldd r25, Y+3 ; 0x03 + 682: dd d1 rcall .+954 ; 0xa3e + 684: 81 e4 ldi r24, 0x41 ; 65 + 686: 93 e0 ldi r25, 0x03 ; 3 + 688: 01 97 sbiw r24, 0x01 ; 1 + 68a: f1 f7 brne .-4 ; 0x688 + 68c: 00 00 nop + _delay_ms(1); + cm_setOutputEnable(inst->si5351_dev,SI5351_OUTPUT_2,SI5351_OUTPUT_ENABLE); + 68e: 40 e0 ldi r20, 0x00 ; 0 + 690: 62 e0 ldi r22, 0x02 ; 2 + 692: 8a 81 ldd r24, Y+2 ; 0x02 + 694: 9b 81 ldd r25, Y+3 ; 0x03 + 696: b0 d1 rcall .+864 ; 0x9f8 + + // Update state now.. + inst->state_now = inst->state_next; + + // If PTT is released, then disable TX osc, and go to STORNO_APP_RX_MODE, to enable rx osc. + if(gpio_get_level(GPIO_PORTA,GPIO_PIN_PTT) == GPIO_LEVEL_RESET) inst->state_next = STORNO_APP_RX_MODE; + 698: 81 e0 ldi r24, 0x01 ; 1 + 69a: 89 83 std Y+1, r24 ; 0x01 + 69c: 0b c0 rjmp .+22 ; 0x6b4 +void cqm6xx_app_statemachine(storno_xtal_app_t *inst){ + + // Check Struct + if(isStructValid(inst) != 0)return; + + switch (inst->state_next) + 69e: 82 30 cpi r24, 0x02 ; 2 + 6a0: 49 f4 brne .+18 ; 0x6b4 + + break; + + case STORNO_APP_TX_MODE: + // If we just came from another state, then Enable TX osc here.. + cqm6xx_app_updateOsc(inst); + 6a2: ce 01 movw r24, r28 + 6a4: 5c df rcall .-328 ; 0x55e + + // Update state now.. + inst->state_now = inst->state_next; + 6a6: 89 81 ldd r24, Y+1 ; 0x01 + 6a8: 88 83 st Y, r24 + + // If PTT is released, then disable TX osc, and go to STORNO_APP_RX_MODE, to enable rx osc. + if(gpio_get_level(GPIO_PORTA,GPIO_PIN_PTT) == GPIO_LEVEL_RESET) inst->state_next = STORNO_APP_RX_MODE; + 6aa: 63 e0 ldi r22, 0x03 ; 3 + 6ac: 80 e0 ldi r24, 0x00 ; 0 + 6ae: 14 dd rcall .-1496 ; 0xd8 + 6b0: 89 2b or r24, r25 + 6b2: 91 f3 breq .-28 ; 0x698 + default: + break; } } + 6b4: df 91 pop r29 + 6b6: cf 91 pop r28 + 6b8: 1f 91 pop r17 + 6ba: 0f 91 pop r16 + 6bc: 08 95 ret + +000006be : void programPLL_Parameters(storno_xtal_app_t *inst){ - 6ba: cf 93 push r28 - 6bc: df 93 push r29 - 6be: ec 01 movw r28, r24 + 6be: cf 93 push r28 + 6c0: df 93 push r29 + 6c2: ec 01 movw r28, r24 + + uint8_t *data_ptr = (void *)&inst->pll_param_data; //Burn settings into eeprom here: switch(inst->pll_param_data.PLL_Ident){ - 6c0: 8c 81 ldd r24, Y+4 ; 0x04 - 6c2: 88 23 and r24, r24 - 6c4: 69 f0 breq .+26 ; 0x6e0 + 6c4: 8c 81 ldd r24, Y+4 ; 0x04 6c6: 81 30 cpi r24, 0x01 ; 1 - 6c8: 39 f4 brne .+14 ; 0x6d8 + 6c8: 99 f0 breq .+38 ; 0x6f0 + 6ca: 58 f0 brcs .+22 ; 0x6e2 + 6cc: 8e 3f cpi r24, 0xFE ; 254 + 6ce: c1 f0 breq .+48 ; 0x700 + 6d0: 8f 3f cpi r24, 0xFF ; 255 + 6d2: e9 f4 brne .+58 ; 0x70e + case MSG_GET_PLLA_PARAM: + cm_EEPROM_read((uint8_t*)PLLA_SETTINGS_EEPROM_ADDR,(uint8_t *)&inst->pll_param_data,sizeof(storno_pll_param_msg)); + break; + + case MSG_GET_PLLB_PARAM: + cm_EEPROM_read((uint8_t*)PLLB_SETTINGS_EEPROM_ADDR,(uint8_t *)&inst->pll_param_data,sizeof(storno_pll_param_msg)); + 6d4: 4d e1 ldi r20, 0x1D ; 29 + 6d6: be 01 movw r22, r28 + 6d8: 6c 5f subi r22, 0xFC ; 252 + 6da: 7f 4f sbci r23, 0xFF ; 255 + 6dc: 80 e2 ldi r24, 0x20 ; 32 + 6de: 90 e0 ldi r25, 0x00 ; 0 + 6e0: 15 c0 rjmp .+42 ; 0x70c + + //Burn settings into eeprom here: + switch(inst->pll_param_data.PLL_Ident){ + case MSG_PLLA_PARAM: cm_EEPROM_write((uint8_t*)PLLA_SETTINGS_EEPROM_ADDR,(uint8_t*)&(inst->pll_param_data), sizeof(storno_pll_param_msg)); + 6e2: 4d e1 ldi r20, 0x1D ; 29 + 6e4: be 01 movw r22, r28 + 6e6: 6c 5f subi r22, 0xFC ; 252 + 6e8: 7f 4f sbci r23, 0xFF ; 255 + 6ea: 80 e0 ldi r24, 0x00 ; 0 + 6ec: 90 e0 ldi r25, 0x00 ; 0 + 6ee: 06 c0 rjmp .+12 ; 0x6fc break; case MSG_PLLB_PARAM: cm_EEPROM_write((uint8_t*)PLLB_SETTINGS_EEPROM_ADDR,(uint8_t*)&(inst->pll_param_data), sizeof(storno_pll_param_msg)); - 6ca: 49 e1 ldi r20, 0x19 ; 25 - 6cc: be 01 movw r22, r28 - 6ce: 6c 5f subi r22, 0xFC ; 252 - 6d0: 7f 4f sbci r23, 0xFF ; 255 - 6d2: 80 e2 ldi r24, 0x20 ; 32 - 6d4: 90 e0 ldi r25, 0x00 ; 0 - 6d6: ca dc rcall .-1644 ; 0x6c - } - - // Send status back maybe.. - - //Force state machine to load new settings from eeprom: - inst->state_next = STORNO_APP_PROGRAM_OSC; - 6d8: 19 82 std Y+1, r1 ; 0x01 - -} - 6da: df 91 pop r29 - 6dc: cf 91 pop r28 - 6de: 08 95 ret - - //Burn settings into eeprom here: - switch(inst->pll_param_data.PLL_Ident){ + 6f0: 4d e1 ldi r20, 0x1D ; 29 + 6f2: be 01 movw r22, r28 + 6f4: 6c 5f subi r22, 0xFC ; 252 + 6f6: 7f 4f sbci r23, 0xFF ; 255 + 6f8: 80 e2 ldi r24, 0x20 ; 32 + 6fa: 90 e0 ldi r25, 0x00 ; 0 + 6fc: b7 dc rcall .-1682 ; 0x6c + break; + 6fe: 07 c0 rjmp .+14 ; 0x70e - case MSG_PLLA_PARAM: - cm_EEPROM_write((uint8_t*)PLLA_SETTINGS_EEPROM_ADDR,(uint8_t*)&(inst->pll_param_data), sizeof(storno_pll_param_msg)); - 6e0: 49 e1 ldi r20, 0x19 ; 25 - 6e2: be 01 movw r22, r28 - 6e4: 6c 5f subi r22, 0xFC ; 252 - 6e6: 7f 4f sbci r23, 0xFF ; 255 - 6e8: 80 e0 ldi r24, 0x00 ; 0 - 6ea: 90 e0 ldi r25, 0x00 ; 0 - 6ec: bf dc rcall .-1666 ; 0x6c + case MSG_GET_PLLA_PARAM: + cm_EEPROM_read((uint8_t*)PLLA_SETTINGS_EEPROM_ADDR,(uint8_t *)&inst->pll_param_data,sizeof(storno_pll_param_msg)); + 700: 4d e1 ldi r20, 0x1D ; 29 + 702: be 01 movw r22, r28 + 704: 6c 5f subi r22, 0xFC ; 252 + 706: 7f 4f sbci r23, 0xFF ; 255 + 708: 80 e0 ldi r24, 0x00 ; 0 + 70a: 90 e0 ldi r25, 0x00 ; 0 + break; + + case MSG_GET_PLLB_PARAM: + cm_EEPROM_read((uint8_t*)PLLB_SETTINGS_EEPROM_ADDR,(uint8_t *)&inst->pll_param_data,sizeof(storno_pll_param_msg)); + 70c: ca dc rcall .-1644 ; 0xa2 } // Send status back maybe.. //Force state machine to load new settings from eeprom: inst->state_next = STORNO_APP_PROGRAM_OSC; - 6ee: 19 82 std Y+1, r1 ; 0x01 + 70e: 19 82 std Y+1, r1 ; 0x01 } - 6f0: df 91 pop r29 - 6f2: cf 91 pop r28 - 6f4: 08 95 ret + 710: df 91 pop r29 + 712: cf 91 pop r28 + 714: 08 95 ret -000006f6 : +00000716 : } int uart_rx_event(storno_xtal_app_t *inst, void *rxData){ memcpy(&inst->pll_param_data,rxData,sizeof(storno_pll_param_msg)); - 6f6: dc 01 movw r26, r24 - 6f8: 14 96 adiw r26, 0x04 ; 4 - 6fa: 29 e1 ldi r18, 0x19 ; 25 - 6fc: fb 01 movw r30, r22 - 6fe: 01 90 ld r0, Z+ - 700: 0d 92 st X+, r0 - 702: 2a 95 dec r18 - 704: e1 f7 brne .-8 ; 0x6fe + 716: dc 01 movw r26, r24 + 718: 14 96 adiw r26, 0x04 ; 4 + 71a: 2d e1 ldi r18, 0x1D ; 29 + 71c: fb 01 movw r30, r22 + 71e: 01 90 ld r0, Z+ + 720: 0d 92 st X+, r0 + 722: 2a 95 dec r18 + 724: e1 f7 brne .-8 ; 0x71e programPLL_Parameters(inst); - 706: d9 df rcall .-78 ; 0x6ba + 726: cb df rcall .-106 ; 0x6be return 0; } - 708: 80 e0 ldi r24, 0x00 ; 0 - 70a: 90 e0 ldi r25, 0x00 ; 0 - 70c: 08 95 ret + 728: 80 e0 ldi r24, 0x00 ; 0 + 72a: 90 e0 ldi r25, 0x00 ; 0 + 72c: 08 95 ret -0000070e : +0000072e : void cqm6xx_app_init(storno_xtal_app_t *inst, void *si5351_dev){ - 70e: 0f 93 push r16 - 710: 1f 93 push r17 - 712: cf 93 push r28 - 714: df 93 push r29 + 72e: 0f 93 push r16 + 730: 1f 93 push r17 + 732: cf 93 push r28 + 734: df 93 push r29 if(si5351_dev == NULL) return; - 716: 61 15 cp r22, r1 - 718: 71 05 cpc r23, r1 - 71a: 11 f1 breq .+68 ; 0x760 + 736: 61 15 cp r22, r1 + 738: 71 05 cpc r23, r1 + 73a: 09 f4 brne .+2 ; 0x73e + 73c: 6b c0 rjmp .+214 ; 0x814 if(inst == NULL)return; - 71c: 00 97 sbiw r24, 0x00 ; 0 - 71e: 01 f1 breq .+64 ; 0x760 - 720: ec 01 movw r28, r24 + 73e: 00 97 sbiw r24, 0x00 ; 0 + 740: 09 f4 brne .+2 ; 0x744 + 742: 68 c0 rjmp .+208 ; 0x814 + 744: ec 01 movw r28, r24 inst->state_next = STORNO_APP_PROGRAM_OSC; - 722: 19 82 std Y+1, r1 ; 0x01 + 746: 19 82 std Y+1, r1 ; 0x01 inst->state_now = STORNO_APP_PROGRAM_OSC; - 724: 18 82 st Y, r1 + 748: 18 82 st Y, r1 inst->si5351_dev = si5351_dev; - 726: 6a 83 std Y+2, r22 ; 0x02 - 728: 7b 83 std Y+3, r23 ; 0x03 + 74a: 6a 83 std Y+2, r22 ; 0x02 + 74c: 7b 83 std Y+3, r23 ; 0x03 cm_MsgCompleteEvt_Register(inst,(Get_msgComplete_Event_fpt)uart_rx_event); - 72a: 6b e7 ldi r22, 0x7B ; 123 - 72c: 73 e0 ldi r23, 0x03 ; 3 - 72e: b8 de rcall .-656 ; 0x4a0 + 74e: 6b e8 ldi r22, 0x8B ; 139 + 750: 73 e0 ldi r23, 0x03 ; 3 + 752: b1 de rcall .-670 ; 0x4b6 cm_uart_init(inst,(get_UART_Event_fpt)cm_msg_DecodeMsg_Byte); - 730: 66 ef ldi r22, 0xF6 ; 246 - 732: 71 e0 ldi r23, 0x01 ; 1 - 734: ce 01 movw r24, r28 - 736: f5 dd rcall .-1046 ; 0x322 + 754: 6b e0 ldi r22, 0x0B ; 11 + 756: 72 e0 ldi r23, 0x02 ; 2 + 758: ce 01 movw r24, r28 + 75a: fd dd rcall .-1030 ; 0x356 } static int isEEPROMValid(storno_xtal_app_t *inst){ cm_EEPROM_read((uint8_t*)PLLA_SETTINGS_EEPROM_ADDR,(uint8_t *)&inst->pll_param_data,sizeof(storno_pll_param_msg)); - 738: 8e 01 movw r16, r28 - 73a: 0c 5f subi r16, 0xFC ; 252 - 73c: 1f 4f sbci r17, 0xFF ; 255 - 73e: 49 e1 ldi r20, 0x19 ; 25 - 740: b8 01 movw r22, r16 - 742: 80 e0 ldi r24, 0x00 ; 0 - 744: 90 e0 ldi r25, 0x00 ; 0 - 746: b3 dc rcall .-1690 ; 0xae - 748: f8 01 movw r30, r16 - 74a: 9e 01 movw r18, r28 - 74c: 23 5e subi r18, 0xE3 ; 227 - 74e: 3f 4f sbci r19, 0xFF ; 255 - 750: 03 c0 rjmp .+6 ; 0x758 + 75c: 8e 01 movw r16, r28 + 75e: 0c 5f subi r16, 0xFC ; 252 + 760: 1f 4f sbci r17, 0xFF ; 255 + 762: 4d e1 ldi r20, 0x1D ; 29 + 764: b8 01 movw r22, r16 + 766: 80 e0 ldi r24, 0x00 ; 0 + 768: 90 e0 ldi r25, 0x00 ; 0 + 76a: 9b dc rcall .-1738 ; 0xa2 + 76c: f8 01 movw r30, r16 + 76e: 9e 01 movw r18, r28 + 770: 2f 5d subi r18, 0xDF ; 223 + 772: 3f 4f sbci r19, 0xFF ; 255 uint8_t *ptr = (void*)&inst->pll_param_data; for (uint32_t idx = 0; idx < sizeof(storno_pll_param_msg); idx++ ) - 752: e2 17 cp r30, r18 - 754: f3 07 cpc r31, r19 - 756: 49 f0 breq .+18 ; 0x76a { if ((*ptr != 0xff) && (*ptr != 0x00)) - 758: 91 91 ld r25, Z+ - 75a: 91 50 subi r25, 0x01 ; 1 - 75c: 9e 3f cpi r25, 0xFE ; 254 - 75e: c8 f7 brcc .-14 ; 0x752 - if(!isEEPROMValid(inst)){ - // If settings are somehow unvalid, then write default settings.. - writeDefaultSettingsEEprom(inst); - } + 774: 81 91 ld r24, Z+ + 776: 81 50 subi r24, 0x01 ; 1 + 778: 8e 3f cpi r24, 0xFE ; 254 + 77a: 08 f4 brcc .+2 ; 0x77e + 77c: 4b c0 rjmp .+150 ; 0x814 - 760: df 91 pop r29 - 762: cf 91 pop r28 - 764: 1f 91 pop r17 - 766: 0f 91 pop r16 - 768: 08 95 ret + cm_EEPROM_read((uint8_t*)PLLA_SETTINGS_EEPROM_ADDR,(uint8_t *)&inst->pll_param_data,sizeof(storno_pll_param_msg)); + + uint8_t *ptr = (void*)&inst->pll_param_data; + + for (uint32_t idx = 0; idx < sizeof(storno_pll_param_msg); idx++ ) + 77e: e2 17 cp r30, r18 + 780: f3 07 cpc r31, r19 + 782: c1 f7 brne .-16 ; 0x774 } static int writeDefaultSettingsEEprom(storno_xtal_app_t *inst){ inst->pll_param_data.PLL_Ident = 0; - 76a: 1c 82 std Y+4, r1 ; 0x04 + 784: 1c 82 std Y+4, r1 ; 0x04 inst->pll_param_data.MSNx_P1 = 3395; - 76c: 83 e4 ldi r24, 0x43 ; 67 - 76e: 9d e0 ldi r25, 0x0D ; 13 - 770: a0 e0 ldi r26, 0x00 ; 0 - 772: b0 e0 ldi r27, 0x00 ; 0 - 774: 8d 83 std Y+5, r24 ; 0x05 - 776: 9e 83 std Y+6, r25 ; 0x06 - 778: af 83 std Y+7, r26 ; 0x07 - 77a: b8 87 std Y+8, r27 ; 0x08 + 786: 83 e4 ldi r24, 0x43 ; 67 + 788: 9d e0 ldi r25, 0x0D ; 13 + 78a: a0 e0 ldi r26, 0x00 ; 0 + 78c: b0 e0 ldi r27, 0x00 ; 0 + 78e: 8d 83 std Y+5, r24 ; 0x05 + 790: 9e 83 std Y+6, r25 ; 0x06 + 792: af 83 std Y+7, r26 ; 0x07 + 794: b8 87 std Y+8, r27 ; 0x08 inst->pll_param_data.MSNx_P2 = 11510; - 77c: 86 ef ldi r24, 0xF6 ; 246 - 77e: 9c e2 ldi r25, 0x2C ; 44 - 780: a0 e0 ldi r26, 0x00 ; 0 - 782: b0 e0 ldi r27, 0x00 ; 0 - 784: 89 87 std Y+9, r24 ; 0x09 - 786: 9a 87 std Y+10, r25 ; 0x0a - 788: ab 87 std Y+11, r26 ; 0x0b - 78a: bc 87 std Y+12, r27 ; 0x0c + 796: 86 ef ldi r24, 0xF6 ; 246 + 798: 9c e2 ldi r25, 0x2C ; 44 + 79a: a0 e0 ldi r26, 0x00 ; 0 + 79c: b0 e0 ldi r27, 0x00 ; 0 + 79e: 89 87 std Y+9, r24 ; 0x09 + 7a0: 9a 87 std Y+10, r25 ; 0x0a + 7a2: ab 87 std Y+11, r26 ; 0x0b + 7a4: bc 87 std Y+12, r27 ; 0x0c inst->pll_param_data.MSNx_P3 = 1067099; - 78c: 8b e5 ldi r24, 0x5B ; 91 - 78e: 98 e4 ldi r25, 0x48 ; 72 - 790: a0 e1 ldi r26, 0x10 ; 16 - 792: b0 e0 ldi r27, 0x00 ; 0 - 794: 8d 87 std Y+13, r24 ; 0x0d - 796: 9e 87 std Y+14, r25 ; 0x0e - 798: af 87 std Y+15, r26 ; 0x0f - 79a: b8 8b std Y+16, r27 ; 0x10 + 7a6: 8b e5 ldi r24, 0x5B ; 91 + 7a8: 98 e4 ldi r25, 0x48 ; 72 + 7aa: a0 e1 ldi r26, 0x10 ; 16 + 7ac: b0 e0 ldi r27, 0x00 ; 0 + 7ae: 8d 87 std Y+13, r24 ; 0x0d + 7b0: 9e 87 std Y+14, r25 ; 0x0e + 7b2: af 87 std Y+15, r26 ; 0x0f + 7b4: b8 8b std Y+16, r27 ; 0x10 inst->pll_param_data.MSx_P1 = 18; - 79c: 82 e1 ldi r24, 0x12 ; 18 - 79e: 90 e0 ldi r25, 0x00 ; 0 - 7a0: a0 e0 ldi r26, 0x00 ; 0 - 7a2: b0 e0 ldi r27, 0x00 ; 0 - 7a4: 89 8b std Y+17, r24 ; 0x11 - 7a6: 9a 8b std Y+18, r25 ; 0x12 - 7a8: ab 8b std Y+19, r26 ; 0x13 - 7aa: bc 8b std Y+20, r27 ; 0x14 + 7b6: 82 e1 ldi r24, 0x12 ; 18 + 7b8: 90 e0 ldi r25, 0x00 ; 0 + 7ba: a0 e0 ldi r26, 0x00 ; 0 + 7bc: b0 e0 ldi r27, 0x00 ; 0 + 7be: 89 8b std Y+17, r24 ; 0x11 + 7c0: 9a 8b std Y+18, r25 ; 0x12 + 7c2: ab 8b std Y+19, r26 ; 0x13 + 7c4: bc 8b std Y+20, r27 ; 0x14 inst->pll_param_data.MSx_P2 = 0; - 7ac: 1d 8a std Y+21, r1 ; 0x15 - 7ae: 1e 8a std Y+22, r1 ; 0x16 - 7b0: 1f 8a std Y+23, r1 ; 0x17 - 7b2: 18 8e std Y+24, r1 ; 0x18 + 7c6: 1d 8a std Y+21, r1 ; 0x15 + 7c8: 1e 8a std Y+22, r1 ; 0x16 + 7ca: 1f 8a std Y+23, r1 ; 0x17 + 7cc: 18 8e std Y+24, r1 ; 0x18 inst->pll_param_data.MSx_P3 = 1; - 7b4: 81 e0 ldi r24, 0x01 ; 1 - 7b6: 90 e0 ldi r25, 0x00 ; 0 - 7b8: a0 e0 ldi r26, 0x00 ; 0 - 7ba: b0 e0 ldi r27, 0x00 ; 0 - 7bc: 89 8f std Y+25, r24 ; 0x19 - 7be: 9a 8f std Y+26, r25 ; 0x1a - 7c0: ab 8f std Y+27, r26 ; 0x1b - 7c2: bc 8f std Y+28, r27 ; 0x1c + 7ce: 81 e0 ldi r24, 0x01 ; 1 + 7d0: 90 e0 ldi r25, 0x00 ; 0 + 7d2: a0 e0 ldi r26, 0x00 ; 0 + 7d4: b0 e0 ldi r27, 0x00 ; 0 + 7d6: 89 8f std Y+25, r24 ; 0x19 + 7d8: 9a 8f std Y+26, r25 ; 0x1a + 7da: ab 8f std Y+27, r26 ; 0x1b + 7dc: bc 8f std Y+28, r27 ; 0x1c + inst->pll_param_data.XtalFreq = 25000000; + 7de: 80 e4 ldi r24, 0x40 ; 64 + 7e0: 98 e7 ldi r25, 0x78 ; 120 + 7e2: ad e7 ldi r26, 0x7D ; 125 + 7e4: b1 e0 ldi r27, 0x01 ; 1 + 7e6: 8d 8f std Y+29, r24 ; 0x1d + 7e8: 9e 8f std Y+30, r25 ; 0x1e + 7ea: af 8f std Y+31, r26 ; 0x1f + 7ec: b8 a3 std Y+32, r27 ; 0x20 cm_EEPROM_write((uint8_t*)PLLA_SETTINGS_EEPROM_ADDR,(uint8_t*)&(inst->pll_param_data), sizeof(storno_pll_param_msg)); - 7c4: 49 e1 ldi r20, 0x19 ; 25 - 7c6: b8 01 movw r22, r16 - 7c8: 80 e0 ldi r24, 0x00 ; 0 - 7ca: 90 e0 ldi r25, 0x00 ; 0 - 7cc: 4f dc rcall .-1890 ; 0x6c - 7ce: 81 e4 ldi r24, 0x41 ; 65 - 7d0: 93 e0 ldi r25, 0x03 ; 3 - 7d2: 01 97 sbiw r24, 0x01 ; 1 - 7d4: f1 f7 brne .-4 ; 0x7d2 - 7d6: 00 00 nop + 7ee: 4d e1 ldi r20, 0x1D ; 29 + 7f0: b8 01 movw r22, r16 + 7f2: 80 e0 ldi r24, 0x00 ; 0 + 7f4: 90 e0 ldi r25, 0x00 ; 0 + 7f6: 3a dc rcall .-1932 ; 0x6c + 7f8: 81 e4 ldi r24, 0x41 ; 65 + 7fa: 93 e0 ldi r25, 0x03 ; 3 + 7fc: 01 97 sbiw r24, 0x01 ; 1 + 7fe: f1 f7 brne .-4 ; 0x7fc + 800: 00 00 nop _delay_ms(1); cm_EEPROM_write((uint8_t*)PLLB_SETTINGS_EEPROM_ADDR,(uint8_t*)&(inst->pll_param_data), sizeof(storno_pll_param_msg)); - 7d8: 49 e1 ldi r20, 0x19 ; 25 - 7da: b8 01 movw r22, r16 - 7dc: 80 e2 ldi r24, 0x20 ; 32 - 7de: 90 e0 ldi r25, 0x00 ; 0 + 802: 4d e1 ldi r20, 0x1D ; 29 + 804: b8 01 movw r22, r16 + 806: 80 e2 ldi r24, 0x20 ; 32 + 808: 90 e0 ldi r25, 0x00 ; 0 if(!isEEPROMValid(inst)){ // If settings are somehow unvalid, then write default settings.. writeDefaultSettingsEEprom(inst); } - 7e0: df 91 pop r29 - 7e2: cf 91 pop r28 - 7e4: 1f 91 pop r17 - 7e6: 0f 91 pop r16 - inst->pll_param_data.MSx_P2 = 0; + 80a: df 91 pop r29 + 80c: cf 91 pop r28 + 80e: 1f 91 pop r17 + 810: 0f 91 pop r16 inst->pll_param_data.MSx_P3 = 1; + inst->pll_param_data.XtalFreq = 25000000; cm_EEPROM_write((uint8_t*)PLLA_SETTINGS_EEPROM_ADDR,(uint8_t*)&(inst->pll_param_data), sizeof(storno_pll_param_msg)); _delay_ms(1); cm_EEPROM_write((uint8_t*)PLLB_SETTINGS_EEPROM_ADDR,(uint8_t*)&(inst->pll_param_data), sizeof(storno_pll_param_msg)); - 7e8: 41 cc rjmp .-1918 ; 0x6c + 812: 2c cc rjmp .-1960 ; 0x6c + if(!isEEPROMValid(inst)){ + // If settings are somehow unvalid, then write default settings.. + writeDefaultSettingsEEprom(inst); + } + + 814: df 91 pop r29 + 816: cf 91 pop r28 + 818: 1f 91 pop r17 + 81a: 0f 91 pop r16 + 81c: 08 95 ret -000007ea
: +0000081e
: #include "avr_eeprom_driver/avr_eeprom_driver.h" storno_xtal_app_t storno_xtal_app; int main(void) { - 7ea: cf 93 push r28 - 7ec: df 93 push r29 - 7ee: cd b7 in r28, 0x3d ; 61 - 7f0: de b7 in r29, 0x3e ; 62 - 7f2: cb 55 subi r28, 0x5B ; 91 - 7f4: d1 09 sbc r29, r1 - 7f6: cd bf out 0x3d, r28 ; 61 - 7f8: de bf out 0x3e, r29 ; 62 + 81e: cf 93 push r28 + 820: df 93 push r29 + 822: cd b7 in r28, 0x3d ; 61 + 824: de b7 in r29, 0x3e ; 62 + 826: cb 55 subi r28, 0x5B ; 91 + 828: d1 09 sbc r29, r1 + 82a: cd bf out 0x3d, r28 ; 61 + 82c: de bf out 0x3e, r29 ; 62 /* Replace with your application code */ // Init Periphials cm_i2c_init(NULL); - 7fa: 80 e0 ldi r24, 0x00 ; 0 - 7fc: 90 e0 ldi r25, 0x00 ; 0 - 7fe: 06 dd rcall .-1524 ; 0x20c + 82e: 80 e0 ldi r24, 0x00 ; 0 + 830: 90 e0 ldi r25, 0x00 ; 0 + 832: 19 dd rcall .-1486 ; 0x266 // Add devices cm_i2c_device_t si5351_i2c; cm_i2c_addDev(&si5351_i2c,NULL,0x60); - 800: 40 e6 ldi r20, 0x60 ; 96 - 802: 60 e0 ldi r22, 0x00 ; 0 - 804: 70 e0 ldi r23, 0x00 ; 0 - 806: ce 01 movw r24, r28 - 808: 87 5a subi r24, 0xA7 ; 167 - 80a: 9f 4f sbci r25, 0xFF ; 255 - 80c: 19 dd rcall .-1486 ; 0x240 + 834: 40 e6 ldi r20, 0x60 ; 96 + 836: 60 e0 ldi r22, 0x00 ; 0 + 838: 70 e0 ldi r23, 0x00 ; 0 + 83a: ce 01 movw r24, r28 + 83c: 87 5a subi r24, 0xA7 ; 167 + 83e: 9f 4f sbci r25, 0xFF ; 255 + 840: 2c dd rcall .-1448 ; 0x29a // Init Devices: si5351_driver si5351_dev; - cm_si5351_init(&si5351_dev,&si5351_i2c,(setGet_I2C_Event_fpt)cm_i2c_transfer); - 80e: 4f e3 ldi r20, 0x3F ; 63 - 810: 51 e0 ldi r21, 0x01 ; 1 - 812: be 01 movw r22, r28 - 814: 67 5a subi r22, 0xA7 ; 167 - 816: 7f 4f sbci r23, 0xFF ; 255 - 818: ce 01 movw r24, r28 - 81a: 01 96 adiw r24, 0x01 ; 1 - 81c: 0d d2 rcall .+1050 ; 0xc38 - + cm_si5351_init(&si5351_dev,&si5351_i2c,(setGet_I2C_Event_fpt)cm_i2c_transfer); + 842: 4b e6 ldi r20, 0x6B ; 107 + 844: 51 e0 ldi r21, 0x01 ; 1 + 846: be 01 movw r22, r28 + 848: 67 5a subi r22, 0xA7 ; 167 + 84a: 7f 4f sbci r23, 0xFF ; 255 + 84c: ce 01 movw r24, r28 + 84e: 01 96 adiw r24, 0x01 ; 1 + 850: ca d1 rcall .+916 ; 0xbe6 cqm6xx_app_init(&storno_xtal_app, &si5351_dev); - 81e: be 01 movw r22, r28 - 820: 6f 5f subi r22, 0xFF ; 255 - 822: 7f 4f sbci r23, 0xFF ; 255 - 824: 86 e4 ldi r24, 0x46 ; 70 - 826: 9f e3 ldi r25, 0x3F ; 63 - 828: 72 df rcall .-284 ; 0x70e - + 852: be 01 movw r22, r28 + 854: 6f 5f subi r22, 0xFF ; 255 + 856: 7f 4f sbci r23, 0xFF ; 255 + 858: 86 e4 ldi r24, 0x46 ; 70 + 85a: 9f e3 ldi r25, 0x3F ; 63 + 85c: 68 df rcall .-304 ; 0x72e while (1) { cqm6xx_app_statemachine(&storno_xtal_app); - 82a: 86 e4 ldi r24, 0x46 ; 70 - 82c: 9f e3 ldi r25, 0x3F ; 63 - 82e: cd de rcall .-614 ; 0x5ca - 830: 2a e6 ldi r18, 0x6A ; 106 - 832: 84 e0 ldi r24, 0x04 ; 4 - 834: 91 e0 ldi r25, 0x01 ; 1 - 836: 21 50 subi r18, 0x01 ; 1 - 838: 80 40 sbci r24, 0x00 ; 0 - 83a: 90 40 sbci r25, 0x00 ; 0 - 83c: e1 f7 brne .-8 ; 0x836 - 83e: 00 c0 rjmp .+0 ; 0x840 - 840: f4 cf rjmp .-24 ; 0x82a + 85e: 86 e4 ldi r24, 0x46 ; 70 + 860: 9f e3 ldi r25, 0x3F ; 63 + 862: b9 de rcall .-654 ; 0x5d6 + 864: 2a e6 ldi r18, 0x6A ; 106 + 866: 84 e0 ldi r24, 0x04 ; 4 + 868: 91 e0 ldi r25, 0x01 ; 1 + 86a: 21 50 subi r18, 0x01 ; 1 + 86c: 80 40 sbci r24, 0x00 ; 0 + 86e: 90 40 sbci r25, 0x00 ; 0 + 870: e1 f7 brne .-8 ; 0x86a + 872: 00 c0 rjmp .+0 ; 0x874 + 874: f4 cf rjmp .-24 ; 0x85e -00000842 : +00000876 : // Read Device Status register: readRegister(inst,0x00, (uint8_t *) &inst->device_data.deviceStatus, sizeof(si5351_deviceStat_t)); return inst->device_data.deviceStatus.REVID; } - 842: 4f 92 push r4 - 844: 5f 92 push r5 - 846: 6f 92 push r6 - 848: 7f 92 push r7 - 84a: 9f 92 push r9 - 84c: af 92 push r10 - 84e: bf 92 push r11 - 850: cf 92 push r12 - 852: df 92 push r13 - 854: ef 92 push r14 - 856: ff 92 push r15 - 858: 0f 93 push r16 - 85a: 1f 93 push r17 - 85c: cf 93 push r28 - 85e: df 93 push r29 - 860: ec 01 movw r28, r24 - 862: 6b 01 movw r12, r22 - 864: 94 2e mov r9, r20 - 866: 59 01 movw r10, r18 - 868: 27 01 movw r4, r14 - 86a: 38 01 movw r6, r16 - 86c: c7 01 movw r24, r14 - 86e: 01 96 adiw r24, 0x01 ; 1 - 870: 79 d2 rcall .+1266 ; 0xd64 - 872: f8 2e mov r15, r24 - 874: 19 2f mov r17, r25 - 876: dc 01 movw r26, r24 - 878: 9d 92 st X+, r9 - 87a: cd 01 movw r24, r26 - 87c: a2 01 movw r20, r4 - 87e: b5 01 movw r22, r10 - 880: 92 d3 rcall .+1828 ; 0xfa6 - 882: a3 01 movw r20, r6 - 884: 92 01 movw r18, r4 - 886: 2f 5f subi r18, 0xFF ; 255 - 888: 3f 4f sbci r19, 0xFF ; 255 - 88a: 4f 4f sbci r20, 0xFF ; 255 - 88c: 5f 4f sbci r21, 0xFF ; 255 - 88e: d6 01 movw r26, r12 - 890: ed 91 ld r30, X+ - 892: fc 91 ld r31, X - 894: 01 e0 ldi r16, 0x01 ; 1 - 896: 6f 2d mov r22, r15 - 898: 71 2f mov r23, r17 - 89a: 88 81 ld r24, Y - 89c: 99 81 ldd r25, Y+1 ; 0x01 - 89e: 09 95 icall - 8a0: 8f 2d mov r24, r15 - 8a2: 91 2f mov r25, r17 - 8a4: f7 d2 rcall .+1518 ; 0xe94 - 8a6: 80 e0 ldi r24, 0x00 ; 0 - 8a8: 90 e0 ldi r25, 0x00 ; 0 - 8aa: df 91 pop r29 - 8ac: cf 91 pop r28 - 8ae: 1f 91 pop r17 - 8b0: 0f 91 pop r16 - 8b2: ff 90 pop r15 - 8b4: ef 90 pop r14 - 8b6: df 90 pop r13 - 8b8: cf 90 pop r12 - 8ba: bf 90 pop r11 - 8bc: af 90 pop r10 - 8be: 9f 90 pop r9 - 8c0: 7f 90 pop r7 - 8c2: 6f 90 pop r6 - 8c4: 5f 90 pop r5 - 8c6: 4f 90 pop r4 - 8c8: 08 95 ret + 876: 8f 92 push r8 + 878: 9f 92 push r9 + 87a: af 92 push r10 + 87c: bf 92 push r11 + 87e: cf 92 push r12 + 880: df 92 push r13 + 882: ef 92 push r14 + 884: ff 92 push r15 + 886: 0f 93 push r16 + 888: 1f 93 push r17 + 88a: cf 93 push r28 + 88c: df 93 push r29 + 88e: ec 01 movw r28, r24 + 890: 86 2e mov r8, r22 + 892: 5a 01 movw r10, r20 + 894: 68 01 movw r12, r16 + 896: 79 01 movw r14, r18 + 898: c8 01 movw r24, r16 + 89a: 01 96 adiw r24, 0x01 ; 1 + 89c: 4b d2 rcall .+1174 ; 0xd34 + 89e: 98 2e mov r9, r24 + 8a0: 19 2f mov r17, r25 + 8a2: fc 01 movw r30, r24 + 8a4: 81 92 st Z+, r8 + 8a6: cf 01 movw r24, r30 + 8a8: a6 01 movw r20, r12 + 8aa: b5 01 movw r22, r10 + 8ac: 64 d3 rcall .+1736 ; 0xf76 + 8ae: a7 01 movw r20, r14 + 8b0: 96 01 movw r18, r12 + 8b2: 2f 5f subi r18, 0xFF ; 255 + 8b4: 3f 4f sbci r19, 0xFF ; 255 + 8b6: 4f 4f sbci r20, 0xFF ; 255 + 8b8: 5f 4f sbci r21, 0xFF ; 255 + 8ba: ea 81 ldd r30, Y+2 ; 0x02 + 8bc: fb 81 ldd r31, Y+3 ; 0x03 + 8be: 01 e0 ldi r16, 0x01 ; 1 + 8c0: 69 2d mov r22, r9 + 8c2: 71 2f mov r23, r17 + 8c4: 88 81 ld r24, Y + 8c6: 99 81 ldd r25, Y+1 ; 0x01 + 8c8: 09 95 icall + 8ca: 89 2d mov r24, r9 + 8cc: 91 2f mov r25, r17 + 8ce: ca d2 rcall .+1428 ; 0xe64 + 8d0: 80 e0 ldi r24, 0x00 ; 0 + 8d2: 90 e0 ldi r25, 0x00 ; 0 + 8d4: df 91 pop r29 + 8d6: cf 91 pop r28 + 8d8: 1f 91 pop r17 + 8da: 0f 91 pop r16 + 8dc: ff 90 pop r15 + 8de: ef 90 pop r14 + 8e0: df 90 pop r13 + 8e2: cf 90 pop r12 + 8e4: bf 90 pop r11 + 8e6: af 90 pop r10 + 8e8: 9f 90 pop r9 + 8ea: 8f 90 pop r8 + 8ec: 08 95 ret -000008ca : - 8ca: af 92 push r10 - 8cc: bf 92 push r11 - 8ce: cf 92 push r12 - 8d0: df 92 push r13 - 8d2: ef 92 push r14 - 8d4: ff 92 push r15 - 8d6: 0f 93 push r16 - 8d8: 1f 93 push r17 - 8da: cf 93 push r28 - 8dc: df 93 push r29 - 8de: ec 01 movw r28, r24 - 8e0: 66 23 and r22, r22 - 8e2: 09 f4 brne .+2 ; 0x8e6 - 8e4: 48 c0 rjmp .+144 ; 0x976 - 8e6: 61 30 cpi r22, 0x01 ; 1 - 8e8: 09 f1 breq .+66 ; 0x92c - 8ea: 6c 01 movw r12, r24 - 8ec: 82 e0 ldi r24, 0x02 ; 2 - 8ee: c8 0e add r12, r24 - 8f0: d1 1c adc r13, r1 - 8f2: 9e 01 movw r18, r28 - 8f4: 29 5a subi r18, 0xA9 ; 169 - 8f6: 3f 4f sbci r19, 0xFF ; 255 - 8f8: f9 01 movw r30, r18 - 8fa: 80 81 ld r24, Z - 8fc: 80 62 ori r24, 0x20 ; 32 - 8fe: 80 68 ori r24, 0x80 ; 128 - 900: 80 83 st Z, r24 - 902: e1 2c mov r14, r1 - 904: f1 2c mov r15, r1 - 906: 87 01 movw r16, r14 - 908: e3 94 inc r14 - 90a: 41 eb ldi r20, 0xB1 ; 177 - 90c: b6 01 movw r22, r12 - 90e: ce 01 movw r24, r28 - 910: 98 df rcall .-208 ; 0x842 - 912: 80 e0 ldi r24, 0x00 ; 0 - 914: 90 e0 ldi r25, 0x00 ; 0 - 916: df 91 pop r29 - 918: cf 91 pop r28 - 91a: 1f 91 pop r17 - 91c: 0f 91 pop r16 - 91e: ff 90 pop r15 - 920: ef 90 pop r14 - 922: df 90 pop r13 - 924: cf 90 pop r12 - 926: bf 90 pop r11 - 928: af 90 pop r10 - 92a: 08 95 ret - 92c: 42 70 andi r20, 0x02 ; 2 - 92e: 8e 8d ldd r24, Y+30 ; 0x1e - 930: 8c 7f andi r24, 0xFC ; 252 - 932: 48 2b or r20, r24 - 934: 4e 8f std Y+30, r20 ; 0x1e - 936: 3f 8f std Y+31, r19 ; 0x1f - 938: 28 a3 std Y+32, r18 ; 0x20 - 93a: d8 01 movw r26, r16 - 93c: c7 01 movw r24, r14 - 93e: 88 27 eor r24, r24 - 940: 99 27 eor r25, r25 - 942: af 70 andi r26, 0x0F ; 15 - 944: bb 27 eor r27, r27 - 946: fa a2 std Y+34, r15 ; 0x22 - 948: eb a2 std Y+35, r14 ; 0x23 - 94a: 8a 2f mov r24, r26 - 94c: 8f 70 andi r24, 0x0F ; 15 - 94e: 89 a3 std Y+33, r24 ; 0x21 - 950: bc 8e std Y+28, r11 ; 0x1c - 952: ad 8e std Y+29, r10 ; 0x1d - 954: 6e 01 movw r12, r28 - 956: f2 e0 ldi r31, 0x02 ; 2 - 958: cf 0e add r12, r31 - 95a: d1 1c adc r13, r1 - 95c: 18 e0 ldi r17, 0x08 ; 8 - 95e: e1 2e mov r14, r17 - 960: f1 2c mov r15, r1 - 962: 00 e0 ldi r16, 0x00 ; 0 - 964: 10 e0 ldi r17, 0x00 ; 0 - 966: 9e 01 movw r18, r28 - 968: 24 5e subi r18, 0xE4 ; 228 - 96a: 3f 4f sbci r19, 0xFF ; 255 - 96c: 42 e2 ldi r20, 0x22 ; 34 - 96e: b6 01 movw r22, r12 - 970: ce 01 movw r24, r28 - 972: 67 df rcall .-306 ; 0x842 - 974: be cf rjmp .-132 ; 0x8f2 - 976: 42 70 andi r20, 0x02 ; 2 - 978: 8e 89 ldd r24, Y+22 ; 0x16 - 97a: 8c 7f andi r24, 0xFC ; 252 - 97c: 48 2b or r20, r24 - 97e: 4e 8b std Y+22, r20 ; 0x16 - 980: 3f 8b std Y+23, r19 ; 0x17 - 982: 28 8f std Y+24, r18 ; 0x18 - 984: d8 01 movw r26, r16 - 986: c7 01 movw r24, r14 - 988: 88 27 eor r24, r24 - 98a: 99 27 eor r25, r25 - 98c: af 70 andi r26, 0x0F ; 15 - 98e: bb 27 eor r27, r27 - 990: fa 8e std Y+26, r15 ; 0x1a - 992: eb 8e std Y+27, r14 ; 0x1b - 994: 8a 2f mov r24, r26 - 996: 8f 70 andi r24, 0x0F ; 15 - 998: 89 8f std Y+25, r24 ; 0x19 - 99a: bc 8a std Y+20, r11 ; 0x14 - 99c: ad 8a std Y+21, r10 ; 0x15 - 99e: 6e 01 movw r12, r28 - 9a0: e2 e0 ldi r30, 0x02 ; 2 - 9a2: ce 0e add r12, r30 - 9a4: d1 1c adc r13, r1 - 9a6: 18 e0 ldi r17, 0x08 ; 8 - 9a8: e1 2e mov r14, r17 - 9aa: f1 2c mov r15, r1 - 9ac: 00 e0 ldi r16, 0x00 ; 0 - 9ae: 10 e0 ldi r17, 0x00 ; 0 - 9b0: 9e 01 movw r18, r28 - 9b2: 2c 5e subi r18, 0xEC ; 236 - 9b4: 3f 4f sbci r19, 0xFF ; 255 - 9b6: 4a e1 ldi r20, 0x1A ; 26 - 9b8: b6 01 movw r22, r12 - 9ba: ce 01 movw r24, r28 - 9bc: 42 df rcall .-380 ; 0x842 - 9be: 99 cf rjmp .-206 ; 0x8f2 +000008ee : + 8ee: af 92 push r10 + 8f0: bf 92 push r11 + 8f2: cf 92 push r12 + 8f4: df 92 push r13 + 8f6: ef 92 push r14 + 8f8: ff 92 push r15 + 8fa: 0f 93 push r16 + 8fc: 1f 93 push r17 + 8fe: fc 01 movw r30, r24 + 900: 61 30 cpi r22, 0x01 ; 1 + 902: 09 f4 brne .+2 ; 0x906 + 904: 4a c0 rjmp .+148 ; 0x99a + 906: 30 f1 brcs .+76 ; 0x954 + 908: 62 30 cpi r22, 0x02 ; 2 + 90a: 09 f0 breq .+2 ; 0x90e + 90c: 6a c0 rjmp .+212 ; 0x9e2 + 90e: 43 70 andi r20, 0x03 ; 3 + 910: 56 a9 ldd r21, Z+54 ; 0x36 + 912: 50 78 andi r21, 0x80 ; 128 + 914: 37 ab std Z+55, r19 ; 0x37 + 916: 20 af std Z+56, r18 ; 0x38 + 918: f2 ae std Z+58, r15 ; 0x3a + 91a: e3 ae std Z+59, r14 ; 0x3b + 91c: d6 01 movw r26, r12 + 91e: c5 01 movw r24, r10 + 920: 2c e0 ldi r18, 0x0C ; 12 + 922: b6 95 lsr r27 + 924: a7 95 ror r26 + 926: 97 95 ror r25 + 928: 87 95 ror r24 + 92a: 2a 95 dec r18 + 92c: d1 f7 brne .-12 ; 0x922 + 92e: 83 70 andi r24, 0x03 ; 3 + 930: 82 95 swap r24 + 932: 80 7f andi r24, 0xF0 ; 240 + 934: 03 70 andi r16, 0x03 ; 3 + 936: 80 2b or r24, r16 + 938: 81 af std Z+57, r24 ; 0x39 + 93a: b4 aa std Z+52, r11 ; 0x34 + 93c: a5 aa std Z+53, r10 ; 0x35 + 93e: 45 2b or r20, r21 + 940: 46 ab std Z+54, r20 ; 0x36 + 942: af 01 movw r20, r30 + 944: 4c 5c subi r20, 0xCC ; 204 + 946: 5f 4f sbci r21, 0xFF ; 255 + 948: 08 e0 ldi r16, 0x08 ; 8 + 94a: 10 e0 ldi r17, 0x00 ; 0 + 94c: 20 e0 ldi r18, 0x00 ; 0 + 94e: 30 e0 ldi r19, 0x00 ; 0 + 950: 6a e3 ldi r22, 0x3A ; 58 + 952: 45 c0 rjmp .+138 ; 0x9de + 954: 43 70 andi r20, 0x03 ; 3 + 956: 56 a1 ldd r21, Z+38 ; 0x26 + 958: 50 78 andi r21, 0x80 ; 128 + 95a: 37 a3 std Z+39, r19 ; 0x27 + 95c: 20 a7 std Z+40, r18 ; 0x28 + 95e: f2 a6 std Z+42, r15 ; 0x2a + 960: e3 a6 std Z+43, r14 ; 0x2b + 962: d6 01 movw r26, r12 + 964: c5 01 movw r24, r10 + 966: 6c e0 ldi r22, 0x0C ; 12 + 968: b6 95 lsr r27 + 96a: a7 95 ror r26 + 96c: 97 95 ror r25 + 96e: 87 95 ror r24 + 970: 6a 95 dec r22 + 972: d1 f7 brne .-12 ; 0x968 + 974: 83 70 andi r24, 0x03 ; 3 + 976: 82 95 swap r24 + 978: 80 7f andi r24, 0xF0 ; 240 + 97a: 03 70 andi r16, 0x03 ; 3 + 97c: 80 2b or r24, r16 + 97e: 81 a7 std Z+41, r24 ; 0x29 + 980: b4 a2 std Z+36, r11 ; 0x24 + 982: a5 a2 std Z+37, r10 ; 0x25 + 984: 45 2b or r20, r21 + 986: 46 a3 std Z+38, r20 ; 0x26 + 988: af 01 movw r20, r30 + 98a: 4c 5d subi r20, 0xDC ; 220 + 98c: 5f 4f sbci r21, 0xFF ; 255 + 98e: 08 e0 ldi r16, 0x08 ; 8 + 990: 10 e0 ldi r17, 0x00 ; 0 + 992: 20 e0 ldi r18, 0x00 ; 0 + 994: 30 e0 ldi r19, 0x00 ; 0 + 996: 6a e2 ldi r22, 0x2A ; 42 + 998: 22 c0 rjmp .+68 ; 0x9de + 99a: 43 70 andi r20, 0x03 ; 3 + 99c: 56 a5 ldd r21, Z+46 ; 0x2e + 99e: 50 78 andi r21, 0x80 ; 128 + 9a0: 37 a7 std Z+47, r19 ; 0x2f + 9a2: 20 ab std Z+48, r18 ; 0x30 + 9a4: f2 aa std Z+50, r15 ; 0x32 + 9a6: e3 aa std Z+51, r14 ; 0x33 + 9a8: d6 01 movw r26, r12 + 9aa: c5 01 movw r24, r10 + 9ac: 3c e0 ldi r19, 0x0C ; 12 + 9ae: b6 95 lsr r27 + 9b0: a7 95 ror r26 + 9b2: 97 95 ror r25 + 9b4: 87 95 ror r24 + 9b6: 3a 95 dec r19 + 9b8: d1 f7 brne .-12 ; 0x9ae + 9ba: 83 70 andi r24, 0x03 ; 3 + 9bc: 82 95 swap r24 + 9be: 80 7f andi r24, 0xF0 ; 240 + 9c0: 03 70 andi r16, 0x03 ; 3 + 9c2: 80 2b or r24, r16 + 9c4: 81 ab std Z+49, r24 ; 0x31 + 9c6: b4 a6 std Z+44, r11 ; 0x2c + 9c8: a5 a6 std Z+45, r10 ; 0x2d + 9ca: 45 2b or r20, r21 + 9cc: 46 a7 std Z+46, r20 ; 0x2e + 9ce: af 01 movw r20, r30 + 9d0: 44 5d subi r20, 0xD4 ; 212 + 9d2: 5f 4f sbci r21, 0xFF ; 255 + 9d4: 08 e0 ldi r16, 0x08 ; 8 + 9d6: 10 e0 ldi r17, 0x00 ; 0 + 9d8: 20 e0 ldi r18, 0x00 ; 0 + 9da: 30 e0 ldi r19, 0x00 ; 0 + 9dc: 62 e3 ldi r22, 0x32 ; 50 + 9de: cf 01 movw r24, r30 + 9e0: 4a df rcall .-364 ; 0x876 + 9e2: 80 e0 ldi r24, 0x00 ; 0 + 9e4: 90 e0 ldi r25, 0x00 ; 0 + 9e6: 1f 91 pop r17 + 9e8: 0f 91 pop r16 + 9ea: ff 90 pop r15 + 9ec: ef 90 pop r14 + 9ee: df 90 pop r13 + 9f0: cf 90 pop r12 + 9f2: bf 90 pop r11 + 9f4: af 90 pop r10 + 9f6: 08 95 ret -000009c0 : - 9c0: af 92 push r10 - 9c2: bf 92 push r11 - 9c4: cf 92 push r12 - 9c6: df 92 push r13 - 9c8: ef 92 push r14 - 9ca: ff 92 push r15 - 9cc: 0f 93 push r16 - 9ce: 1f 93 push r17 - 9d0: fc 01 movw r30, r24 - 9d2: 61 30 cpi r22, 0x01 ; 1 - 9d4: 09 f4 brne .+2 ; 0x9d8 - 9d6: 5f c0 rjmp .+190 ; 0xa96 - 9d8: a8 f1 brcs .+106 ; 0xa44 - 9da: 62 30 cpi r22, 0x02 ; 2 - 9dc: 41 f5 brne .+80 ; 0xa2e - 9de: 43 70 andi r20, 0x03 ; 3 - 9e0: 56 a9 ldd r21, Z+54 ; 0x36 - 9e2: 50 78 andi r21, 0x80 ; 128 - 9e4: 37 ab std Z+55, r19 ; 0x37 - 9e6: 20 af std Z+56, r18 ; 0x38 - 9e8: f2 ae std Z+58, r15 ; 0x3a - 9ea: e3 ae std Z+59, r14 ; 0x3b - 9ec: d6 01 movw r26, r12 - 9ee: c5 01 movw r24, r10 - 9f0: 2c e0 ldi r18, 0x0C ; 12 - 9f2: b6 95 lsr r27 - 9f4: a7 95 ror r26 - 9f6: 97 95 ror r25 - 9f8: 87 95 ror r24 - 9fa: 2a 95 dec r18 - 9fc: d1 f7 brne .-12 ; 0x9f2 - 9fe: 83 70 andi r24, 0x03 ; 3 - a00: 82 95 swap r24 - a02: 80 7f andi r24, 0xF0 ; 240 - a04: 03 70 andi r16, 0x03 ; 3 - a06: 08 2b or r16, r24 - a08: 01 af std Z+57, r16 ; 0x39 - a0a: b4 aa std Z+52, r11 ; 0x34 - a0c: a5 aa std Z+53, r10 ; 0x35 - a0e: 45 2b or r20, r21 - a10: 46 ab std Z+54, r20 ; 0x36 - a12: 9f 01 movw r18, r30 - a14: 2c 5c subi r18, 0xCC ; 204 - a16: 3f 4f sbci r19, 0xFF ; 255 - a18: bf 01 movw r22, r30 - a1a: 6e 5f subi r22, 0xFE ; 254 - a1c: 7f 4f sbci r23, 0xFF ; 255 - a1e: 18 e0 ldi r17, 0x08 ; 8 - a20: e1 2e mov r14, r17 - a22: f1 2c mov r15, r1 - a24: 00 e0 ldi r16, 0x00 ; 0 - a26: 10 e0 ldi r17, 0x00 ; 0 - a28: 4a e3 ldi r20, 0x3A ; 58 - a2a: cf 01 movw r24, r30 - a2c: 0a df rcall .-492 ; 0x842 - a2e: 80 e0 ldi r24, 0x00 ; 0 - a30: 90 e0 ldi r25, 0x00 ; 0 - a32: 1f 91 pop r17 - a34: 0f 91 pop r16 - a36: ff 90 pop r15 - a38: ef 90 pop r14 - a3a: df 90 pop r13 - a3c: cf 90 pop r12 - a3e: bf 90 pop r11 - a40: af 90 pop r10 - a42: 08 95 ret - a44: 43 70 andi r20, 0x03 ; 3 - a46: 56 a1 ldd r21, Z+38 ; 0x26 - a48: 50 78 andi r21, 0x80 ; 128 - a4a: 37 a3 std Z+39, r19 ; 0x27 - a4c: 20 a7 std Z+40, r18 ; 0x28 - a4e: f2 a6 std Z+42, r15 ; 0x2a - a50: e3 a6 std Z+43, r14 ; 0x2b - a52: d6 01 movw r26, r12 - a54: c5 01 movw r24, r10 - a56: 1c e0 ldi r17, 0x0C ; 12 - a58: b6 95 lsr r27 - a5a: a7 95 ror r26 - a5c: 97 95 ror r25 - a5e: 87 95 ror r24 - a60: 1a 95 dec r17 - a62: d1 f7 brne .-12 ; 0xa58 - a64: 83 70 andi r24, 0x03 ; 3 - a66: 82 95 swap r24 - a68: 80 7f andi r24, 0xF0 ; 240 - a6a: 03 70 andi r16, 0x03 ; 3 - a6c: 80 2b or r24, r16 - a6e: 81 a7 std Z+41, r24 ; 0x29 - a70: b4 a2 std Z+36, r11 ; 0x24 - a72: a5 a2 std Z+37, r10 ; 0x25 - a74: 45 2b or r20, r21 - a76: 46 a3 std Z+38, r20 ; 0x26 - a78: 9f 01 movw r18, r30 - a7a: 2c 5d subi r18, 0xDC ; 220 - a7c: 3f 4f sbci r19, 0xFF ; 255 - a7e: bf 01 movw r22, r30 - a80: 6e 5f subi r22, 0xFE ; 254 - a82: 7f 4f sbci r23, 0xFF ; 255 - a84: 18 e0 ldi r17, 0x08 ; 8 - a86: e1 2e mov r14, r17 - a88: f1 2c mov r15, r1 - a8a: 00 e0 ldi r16, 0x00 ; 0 - a8c: 10 e0 ldi r17, 0x00 ; 0 - a8e: 4a e2 ldi r20, 0x2A ; 42 - a90: cf 01 movw r24, r30 - a92: d7 de rcall .-594 ; 0x842 - a94: cc cf rjmp .-104 ; 0xa2e - a96: 43 70 andi r20, 0x03 ; 3 - a98: 56 a5 ldd r21, Z+46 ; 0x2e - a9a: 50 78 andi r21, 0x80 ; 128 - a9c: 37 a7 std Z+47, r19 ; 0x2f - a9e: 20 ab std Z+48, r18 ; 0x30 - aa0: f2 aa std Z+50, r15 ; 0x32 - aa2: e3 aa std Z+51, r14 ; 0x33 - aa4: d6 01 movw r26, r12 - aa6: c5 01 movw r24, r10 - aa8: 6c e0 ldi r22, 0x0C ; 12 - aaa: b6 95 lsr r27 - aac: a7 95 ror r26 - aae: 97 95 ror r25 - ab0: 87 95 ror r24 - ab2: 6a 95 dec r22 - ab4: d1 f7 brne .-12 ; 0xaaa - ab6: 83 70 andi r24, 0x03 ; 3 - ab8: 82 95 swap r24 - aba: 80 7f andi r24, 0xF0 ; 240 - abc: 03 70 andi r16, 0x03 ; 3 - abe: 80 2b or r24, r16 - ac0: 81 ab std Z+49, r24 ; 0x31 - ac2: b4 a6 std Z+44, r11 ; 0x2c - ac4: a5 a6 std Z+45, r10 ; 0x2d - ac6: 45 2b or r20, r21 - ac8: 46 a7 std Z+46, r20 ; 0x2e - aca: 9f 01 movw r18, r30 - acc: 24 5d subi r18, 0xD4 ; 212 - ace: 3f 4f sbci r19, 0xFF ; 255 - ad0: bf 01 movw r22, r30 - ad2: 6e 5f subi r22, 0xFE ; 254 - ad4: 7f 4f sbci r23, 0xFF ; 255 - ad6: 18 e0 ldi r17, 0x08 ; 8 - ad8: e1 2e mov r14, r17 - ada: f1 2c mov r15, r1 - adc: 00 e0 ldi r16, 0x00 ; 0 - ade: 10 e0 ldi r17, 0x00 ; 0 - ae0: 42 e3 ldi r20, 0x32 ; 50 - ae2: cf 01 movw r24, r30 - ae4: ae de rcall .-676 ; 0x842 - ae6: a3 cf rjmp .-186 ; 0xa2e +000009f8 : + 9f8: 0f 93 push r16 + 9fa: 1f 93 push r17 + 9fc: fc 01 movw r30, r24 + 9fe: 61 30 cpi r22, 0x01 ; 1 + a00: 59 f0 breq .+22 ; 0xa18 + a02: 30 f0 brcs .+12 ; 0xa10 + a04: 62 30 cpi r22, 0x02 ; 2 + a06: 61 f4 brne .+24 ; 0xa20 + a08: 87 81 ldd r24, Z+7 ; 0x07 + a0a: 40 fb bst r20, 0 + a0c: 82 f9 bld r24, 2 + a0e: 07 c0 rjmp .+14 ; 0xa1e + a10: 87 81 ldd r24, Z+7 ; 0x07 + a12: 40 fb bst r20, 0 + a14: 80 f9 bld r24, 0 + a16: 03 c0 rjmp .+6 ; 0xa1e + a18: 87 81 ldd r24, Z+7 ; 0x07 + a1a: 40 fb bst r20, 0 + a1c: 81 f9 bld r24, 1 + a1e: 87 83 std Z+7, r24 ; 0x07 + a20: af 01 movw r20, r30 + a22: 49 5f subi r20, 0xF9 ; 249 + a24: 5f 4f sbci r21, 0xFF ; 255 + a26: 01 e0 ldi r16, 0x01 ; 1 + a28: 10 e0 ldi r17, 0x00 ; 0 + a2a: 20 e0 ldi r18, 0x00 ; 0 + a2c: 30 e0 ldi r19, 0x00 ; 0 + a2e: 63 e0 ldi r22, 0x03 ; 3 + a30: cf 01 movw r24, r30 + a32: 21 df rcall .-446 ; 0x876 + a34: 80 e0 ldi r24, 0x00 ; 0 + a36: 90 e0 ldi r25, 0x00 ; 0 + a38: 1f 91 pop r17 + a3a: 0f 91 pop r16 + a3c: 08 95 ret -00000ae8 : - ae8: ef 92 push r14 - aea: ff 92 push r15 - aec: 0f 93 push r16 - aee: 1f 93 push r17 - af0: 61 30 cpi r22, 0x01 ; 1 - af2: 09 f1 breq .+66 ; 0xb36 - af4: d0 f0 brcs .+52 ; 0xb2a - af6: 62 30 cpi r22, 0x02 ; 2 - af8: 29 f4 brne .+10 ; 0xb04 +00000a3e : + a3e: 0f 93 push r16 + a40: 1f 93 push r17 + a42: 61 30 cpi r22, 0x01 ; 1 + a44: 19 f1 breq .+70 ; 0xa8c + a46: 90 f0 brcs .+36 ; 0xa6c + a48: 62 30 cpi r22, 0x02 ; 2 + a4a: 79 f5 brne .+94 ; 0xaaa + a4c: fc 01 movw r30, r24 + a4e: 24 85 ldd r18, Z+12 ; 0x0c + a50: 40 fb bst r20, 0 + a52: 27 f9 bld r18, 7 + a54: 23 79 andi r18, 0x93 ; 147 + a56: 23 66 ori r18, 0x63 ; 99 + a58: 24 87 std Z+12, r18 ; 0x0c + a5a: ac 01 movw r20, r24 + a5c: 44 5f subi r20, 0xF4 ; 244 + a5e: 5f 4f sbci r21, 0xFF ; 255 + a60: 01 e0 ldi r16, 0x01 ; 1 + a62: 10 e0 ldi r17, 0x00 ; 0 + a64: 20 e0 ldi r18, 0x00 ; 0 + a66: 30 e0 ldi r19, 0x00 ; 0 + a68: 62 e1 ldi r22, 0x12 ; 18 + a6a: 1e c0 rjmp .+60 ; 0xaa8 + a6c: fc 01 movw r30, r24 + a6e: 22 85 ldd r18, Z+10 ; 0x0a + a70: 40 fb bst r20, 0 + a72: 27 f9 bld r18, 7 + a74: 20 79 andi r18, 0x90 ; 144 + a76: 2f 64 ori r18, 0x4F ; 79 + a78: 22 87 std Z+10, r18 ; 0x0a + a7a: ac 01 movw r20, r24 + a7c: 46 5f subi r20, 0xF6 ; 246 + a7e: 5f 4f sbci r21, 0xFF ; 255 + a80: 01 e0 ldi r16, 0x01 ; 1 + a82: 10 e0 ldi r17, 0x00 ; 0 + a84: 20 e0 ldi r18, 0x00 ; 0 + a86: 30 e0 ldi r19, 0x00 ; 0 + a88: 60 e1 ldi r22, 0x10 ; 16 + a8a: 0e c0 rjmp .+28 ; 0xaa8 + a8c: fc 01 movw r30, r24 + a8e: 23 85 ldd r18, Z+11 ; 0x0b + a90: 40 fb bst r20, 0 + a92: 27 f9 bld r18, 7 + a94: 2f 66 ori r18, 0x6F ; 111 + a96: 23 87 std Z+11, r18 ; 0x0b + a98: ac 01 movw r20, r24 + a9a: 45 5f subi r20, 0xF5 ; 245 + a9c: 5f 4f sbci r21, 0xFF ; 255 + a9e: 01 e0 ldi r16, 0x01 ; 1 + aa0: 10 e0 ldi r17, 0x00 ; 0 + aa2: 20 e0 ldi r18, 0x00 ; 0 + aa4: 30 e0 ldi r19, 0x00 ; 0 + aa6: 61 e1 ldi r22, 0x11 ; 17 + aa8: e6 de rcall .-564 ; 0x876 + aaa: 80 e0 ldi r24, 0x00 ; 0 + aac: 90 e0 ldi r25, 0x00 ; 0 + aae: 1f 91 pop r17 + ab0: 0f 91 pop r16 + ab2: 08 95 ret + +00000ab4 : + ab4: 0f 93 push r16 + ab6: 1f 93 push r17 + ab8: 66 23 and r22, r22 + aba: 31 f0 breq .+12 ; 0xac8 + abc: 61 30 cpi r22, 0x01 ; 1 + abe: 49 f4 brne .+18 ; 0xad2 + ac0: fc 01 movw r30, r24 + ac2: 21 85 ldd r18, Z+9 ; 0x09 + ac4: 24 60 ori r18, 0x04 ; 4 + ac6: 04 c0 rjmp .+8 ; 0xad0 + ac8: fc 01 movw r30, r24 + aca: 21 85 ldd r18, Z+9 ; 0x09 + acc: 2b 7f andi r18, 0xFB ; 251 + ace: 27 7f andi r18, 0xF7 ; 247 + ad0: 21 87 std Z+9, r18 ; 0x09 + ad2: ac 01 movw r20, r24 + ad4: 47 5f subi r20, 0xF7 ; 247 + ad6: 5f 4f sbci r21, 0xFF ; 255 + ad8: 01 e0 ldi r16, 0x01 ; 1 + ada: 10 e0 ldi r17, 0x00 ; 0 + adc: 20 e0 ldi r18, 0x00 ; 0 + ade: 30 e0 ldi r19, 0x00 ; 0 + ae0: 60 ef ldi r22, 0xF0 ; 240 + ae2: c9 de rcall .-622 ; 0x876 + ae4: 80 e0 ldi r24, 0x00 ; 0 + ae6: 90 e0 ldi r25, 0x00 ; 0 + ae8: 1f 91 pop r17 + aea: 0f 91 pop r16 + aec: 08 95 ret + +00000aee : + aee: 0f 93 push r16 + af0: 1f 93 push r17 + af2: 31 e0 ldi r19, 0x01 ; 1 + af4: 61 11 cpse r22, r1 + af6: 01 c0 rjmp .+2 ; 0xafa + af8: 30 e0 ldi r19, 0x00 ; 0 afa: fc 01 movw r30, r24 - afc: 27 81 ldd r18, Z+7 ; 0x07 - afe: 40 fb bst r20, 0 - b00: 22 f9 bld r18, 2 - b02: 27 83 std Z+7, r18 ; 0x07 - b04: 9c 01 movw r18, r24 - b06: 29 5f subi r18, 0xF9 ; 249 - b08: 3f 4f sbci r19, 0xFF ; 255 - b0a: bc 01 movw r22, r24 - b0c: 6e 5f subi r22, 0xFE ; 254 - b0e: 7f 4f sbci r23, 0xFF ; 255 - b10: e1 2c mov r14, r1 - b12: f1 2c mov r15, r1 - b14: 87 01 movw r16, r14 - b16: e3 94 inc r14 - b18: 43 e0 ldi r20, 0x03 ; 3 - b1a: 93 de rcall .-730 ; 0x842 - b1c: 80 e0 ldi r24, 0x00 ; 0 - b1e: 90 e0 ldi r25, 0x00 ; 0 - b20: 1f 91 pop r17 - b22: 0f 91 pop r16 - b24: ff 90 pop r15 - b26: ef 90 pop r14 - b28: 08 95 ret - b2a: fc 01 movw r30, r24 - b2c: 27 81 ldd r18, Z+7 ; 0x07 - b2e: 40 fb bst r20, 0 - b30: 20 f9 bld r18, 0 - b32: 27 83 std Z+7, r18 ; 0x07 - b34: e7 cf rjmp .-50 ; 0xb04 - b36: fc 01 movw r30, r24 - b38: 27 81 ldd r18, Z+7 ; 0x07 - b3a: 40 fb bst r20, 0 - b3c: 21 f9 bld r18, 1 - b3e: 27 83 std Z+7, r18 ; 0x07 - b40: e1 cf rjmp .-62 ; 0xb04 + afc: e9 5a subi r30, 0xA9 ; 169 + afe: ff 4f sbci r31, 0xFF ; 255 + b00: 20 81 ld r18, Z + b02: 30 fb bst r19, 0 + b04: 25 f9 bld r18, 5 + b06: 20 83 st Z, r18 + b08: 31 e0 ldi r19, 0x01 ; 1 + b0a: 41 11 cpse r20, r1 + b0c: 01 c0 rjmp .+2 ; 0xb10 + b0e: 30 e0 ldi r19, 0x00 ; 0 + b10: 20 81 ld r18, Z + b12: 30 fb bst r19, 0 + b14: 27 f9 bld r18, 7 + b16: 20 83 st Z, r18 + b18: 01 e0 ldi r16, 0x01 ; 1 + b1a: 10 e0 ldi r17, 0x00 ; 0 + b1c: 20 e0 ldi r18, 0x00 ; 0 + b1e: 30 e0 ldi r19, 0x00 ; 0 + b20: af 01 movw r20, r30 + b22: 61 eb ldi r22, 0xB1 ; 177 + b24: a8 de rcall .-688 ; 0x876 + b26: 80 e0 ldi r24, 0x00 ; 0 + b28: 90 e0 ldi r25, 0x00 ; 0 + b2a: 1f 91 pop r17 + b2c: 0f 91 pop r16 + b2e: 08 95 ret -00000b42 : - b42: ef 92 push r14 - b44: ff 92 push r15 - b46: 0f 93 push r16 - b48: 1f 93 push r17 +00000b30 : + b30: af 92 push r10 + b32: bf 92 push r11 + b34: cf 92 push r12 + b36: df 92 push r13 + b38: ef 92 push r14 + b3a: ff 92 push r15 + b3c: 0f 93 push r16 + b3e: 1f 93 push r17 + b40: cf 93 push r28 + b42: df 93 push r29 + b44: ec 01 movw r28, r24 + b46: 66 23 and r22, r22 + b48: f9 f0 breq .+62 ; 0xb88 b4a: 61 30 cpi r22, 0x01 ; 1 - b4c: b9 f1 breq .+110 ; 0xbbc - b4e: e0 f0 brcs .+56 ; 0xb88 - b50: 62 30 cpi r22, 0x02 ; 2 - b52: 99 f4 brne .+38 ; 0xb7a - b54: fc 01 movw r30, r24 - b56: 24 85 ldd r18, Z+12 ; 0x0c - b58: 40 fb bst r20, 0 - b5a: 27 f9 bld r18, 7 - b5c: 23 79 andi r18, 0x93 ; 147 - b5e: 23 66 ori r18, 0x63 ; 99 - b60: 24 87 std Z+12, r18 ; 0x0c - b62: 9c 01 movw r18, r24 - b64: 24 5f subi r18, 0xF4 ; 244 - b66: 3f 4f sbci r19, 0xFF ; 255 - b68: bc 01 movw r22, r24 - b6a: 6e 5f subi r22, 0xFE ; 254 - b6c: 7f 4f sbci r23, 0xFF ; 255 - b6e: e1 2c mov r14, r1 - b70: f1 2c mov r15, r1 - b72: 87 01 movw r16, r14 - b74: e3 94 inc r14 - b76: 42 e1 ldi r20, 0x12 ; 18 - b78: 64 de rcall .-824 ; 0x842 - b7a: 80 e0 ldi r24, 0x00 ; 0 - b7c: 90 e0 ldi r25, 0x00 ; 0 - b7e: 1f 91 pop r17 - b80: 0f 91 pop r16 - b82: ff 90 pop r15 - b84: ef 90 pop r14 - b86: 08 95 ret - b88: fc 01 movw r30, r24 - b8a: 22 85 ldd r18, Z+10 ; 0x0a - b8c: 40 fb bst r20, 0 - b8e: 27 f9 bld r18, 7 - b90: 20 79 andi r18, 0x90 ; 144 - b92: 2f 64 ori r18, 0x4F ; 79 - b94: 22 87 std Z+10, r18 ; 0x0a - b96: 9c 01 movw r18, r24 - b98: 26 5f subi r18, 0xF6 ; 246 - b9a: 3f 4f sbci r19, 0xFF ; 255 - b9c: bc 01 movw r22, r24 - b9e: 6e 5f subi r22, 0xFE ; 254 - ba0: 7f 4f sbci r23, 0xFF ; 255 - ba2: e1 2c mov r14, r1 - ba4: f1 2c mov r15, r1 - ba6: 87 01 movw r16, r14 - ba8: e3 94 inc r14 - baa: 40 e1 ldi r20, 0x10 ; 16 - bac: 4a de rcall .-876 ; 0x842 - bae: 80 e0 ldi r24, 0x00 ; 0 - bb0: 90 e0 ldi r25, 0x00 ; 0 - bb2: 1f 91 pop r17 - bb4: 0f 91 pop r16 - bb6: ff 90 pop r15 - bb8: ef 90 pop r14 - bba: 08 95 ret - bbc: fc 01 movw r30, r24 - bbe: 23 85 ldd r18, Z+11 ; 0x0b - bc0: 40 fb bst r20, 0 - bc2: 27 f9 bld r18, 7 - bc4: 2f 66 ori r18, 0x6F ; 111 - bc6: 23 87 std Z+11, r18 ; 0x0b - bc8: 9c 01 movw r18, r24 - bca: 25 5f subi r18, 0xF5 ; 245 - bcc: 3f 4f sbci r19, 0xFF ; 255 - bce: bc 01 movw r22, r24 - bd0: 6e 5f subi r22, 0xFE ; 254 - bd2: 7f 4f sbci r23, 0xFF ; 255 - bd4: e1 2c mov r14, r1 - bd6: f1 2c mov r15, r1 - bd8: 87 01 movw r16, r14 - bda: e3 94 inc r14 - bdc: 41 e1 ldi r20, 0x11 ; 17 - bde: 31 de rcall .-926 ; 0x842 - be0: 80 e0 ldi r24, 0x00 ; 0 - be2: 90 e0 ldi r25, 0x00 ; 0 - be4: 1f 91 pop r17 - be6: 0f 91 pop r16 - be8: ff 90 pop r15 - bea: ef 90 pop r14 - bec: 08 95 ret + b4c: d9 f5 brne .+118 ; 0xbc4 + b4e: 42 70 andi r20, 0x02 ; 2 + b50: 8e 8d ldd r24, Y+30 ; 0x1e + b52: 8c 7f andi r24, 0xFC ; 252 + b54: 48 2b or r20, r24 + b56: 4e 8f std Y+30, r20 ; 0x1e + b58: 3f 8f std Y+31, r19 ; 0x1f + b5a: 28 a3 std Y+32, r18 ; 0x20 + b5c: d8 01 movw r26, r16 + b5e: c7 01 movw r24, r14 + b60: 88 27 eor r24, r24 + b62: 99 27 eor r25, r25 + b64: af 70 andi r26, 0x0F ; 15 + b66: bb 27 eor r27, r27 + b68: fa a2 std Y+34, r15 ; 0x22 + b6a: eb a2 std Y+35, r14 ; 0x23 + b6c: 8a 2f mov r24, r26 + b6e: 8f 70 andi r24, 0x0F ; 15 + b70: 89 a3 std Y+33, r24 ; 0x21 + b72: bc 8e std Y+28, r11 ; 0x1c + b74: ad 8e std Y+29, r10 ; 0x1d + b76: 08 e0 ldi r16, 0x08 ; 8 + b78: 10 e0 ldi r17, 0x00 ; 0 + b7a: 20 e0 ldi r18, 0x00 ; 0 + b7c: 30 e0 ldi r19, 0x00 ; 0 + b7e: ae 01 movw r20, r28 + b80: 44 5e subi r20, 0xE4 ; 228 + b82: 5f 4f sbci r21, 0xFF ; 255 + b84: 62 e2 ldi r22, 0x22 ; 34 + b86: 1c c0 rjmp .+56 ; 0xbc0 + b88: 42 70 andi r20, 0x02 ; 2 + b8a: 8e 89 ldd r24, Y+22 ; 0x16 + b8c: 8c 7f andi r24, 0xFC ; 252 + b8e: 48 2b or r20, r24 + b90: 4e 8b std Y+22, r20 ; 0x16 + b92: 3f 8b std Y+23, r19 ; 0x17 + b94: 28 8f std Y+24, r18 ; 0x18 + b96: d8 01 movw r26, r16 + b98: c7 01 movw r24, r14 + b9a: 88 27 eor r24, r24 + b9c: 99 27 eor r25, r25 + b9e: af 70 andi r26, 0x0F ; 15 + ba0: bb 27 eor r27, r27 + ba2: fa 8e std Y+26, r15 ; 0x1a + ba4: eb 8e std Y+27, r14 ; 0x1b + ba6: 8a 2f mov r24, r26 + ba8: 8f 70 andi r24, 0x0F ; 15 + baa: 89 8f std Y+25, r24 ; 0x19 + bac: bc 8a std Y+20, r11 ; 0x14 + bae: ad 8a std Y+21, r10 ; 0x15 + bb0: 08 e0 ldi r16, 0x08 ; 8 + bb2: 10 e0 ldi r17, 0x00 ; 0 + bb4: 20 e0 ldi r18, 0x00 ; 0 + bb6: 30 e0 ldi r19, 0x00 ; 0 + bb8: ae 01 movw r20, r28 + bba: 4c 5e subi r20, 0xEC ; 236 + bbc: 5f 4f sbci r21, 0xFF ; 255 + bbe: 6a e1 ldi r22, 0x1A ; 26 + bc0: ce 01 movw r24, r28 + bc2: 59 de rcall .-846 ; 0x876 + bc4: 41 e0 ldi r20, 0x01 ; 1 + bc6: 61 e0 ldi r22, 0x01 ; 1 + bc8: ce 01 movw r24, r28 + bca: 91 df rcall .-222 ; 0xaee + bcc: 80 e0 ldi r24, 0x00 ; 0 + bce: 90 e0 ldi r25, 0x00 ; 0 + bd0: df 91 pop r29 + bd2: cf 91 pop r28 + bd4: 1f 91 pop r17 + bd6: 0f 91 pop r16 + bd8: ff 90 pop r15 + bda: ef 90 pop r14 + bdc: df 90 pop r13 + bde: cf 90 pop r12 + be0: bf 90 pop r11 + be2: af 90 pop r10 + be4: 08 95 ret -00000bee : - bee: ef 92 push r14 - bf0: ff 92 push r15 - bf2: 0f 93 push r16 - bf4: 1f 93 push r17 - bf6: 66 23 and r22, r22 - bf8: c9 f0 breq .+50 ; 0xc2c - bfa: 61 30 cpi r22, 0x01 ; 1 - bfc: 21 f4 brne .+8 ; 0xc06 - bfe: fc 01 movw r30, r24 - c00: 21 85 ldd r18, Z+9 ; 0x09 - c02: 24 60 ori r18, 0x04 ; 4 - c04: 21 87 std Z+9, r18 ; 0x09 - c06: 9c 01 movw r18, r24 - c08: 27 5f subi r18, 0xF7 ; 247 - c0a: 3f 4f sbci r19, 0xFF ; 255 - c0c: bc 01 movw r22, r24 - c0e: 6e 5f subi r22, 0xFE ; 254 - c10: 7f 4f sbci r23, 0xFF ; 255 - c12: e1 2c mov r14, r1 - c14: f1 2c mov r15, r1 - c16: 87 01 movw r16, r14 - c18: e3 94 inc r14 - c1a: 40 ef ldi r20, 0xF0 ; 240 - c1c: 12 de rcall .-988 ; 0x842 - c1e: 80 e0 ldi r24, 0x00 ; 0 - c20: 90 e0 ldi r25, 0x00 ; 0 - c22: 1f 91 pop r17 - c24: 0f 91 pop r16 - c26: ff 90 pop r15 - c28: ef 90 pop r14 - c2a: 08 95 ret - c2c: fc 01 movw r30, r24 - c2e: 21 85 ldd r18, Z+9 ; 0x09 - c30: 2b 7f andi r18, 0xFB ; 251 - c32: 27 7f andi r18, 0xF7 ; 247 - c34: 21 87 std Z+9, r18 ; 0x09 - c36: e7 cf rjmp .-50 ; 0xc06 - -00000c38 : +00000be6 : int cm_si5351_init(si5351_driver *inst, void *i2c_transfer_inst, setGet_I2C_Event_fpt i2c_transfer_evt){ - c38: af 92 push r10 - c3a: bf 92 push r11 - c3c: cf 92 push r12 - c3e: df 92 push r13 - c40: ef 92 push r14 - c42: ff 92 push r15 - c44: 0f 93 push r16 - c46: 1f 93 push r17 - c48: cf 93 push r28 - c4a: df 93 push r29 - c4c: 1f 92 push r1 - c4e: cd b7 in r28, 0x3d ; 61 - c50: de b7 in r29, 0x3e ; 62 + be6: ef 92 push r14 + be8: ff 92 push r15 + bea: 0f 93 push r16 + bec: 1f 93 push r17 + bee: cf 93 push r28 + bf0: df 93 push r29 + bf2: 1f 92 push r1 + bf4: cd b7 in r28, 0x3d ; 61 + bf6: de b7 in r29, 0x3e ; 62 if(inst == NULL)return -1; - c52: 00 97 sbiw r24, 0x00 ; 0 - c54: 09 f4 brne .+2 ; 0xc58 - c56: 83 c0 rjmp .+262 ; 0xd5e + bf8: 00 97 sbiw r24, 0x00 ; 0 + bfa: 09 f4 brne .+2 ; 0xbfe + bfc: 91 c0 rjmp .+290 ; 0xd20 if(i2c_transfer_inst == NULL)return -1; - c58: 61 15 cp r22, r1 - c5a: 71 05 cpc r23, r1 - c5c: 09 f4 brne .+2 ; 0xc60 - c5e: 7f c0 rjmp .+254 ; 0xd5e + bfe: 61 15 cp r22, r1 + c00: 71 05 cpc r23, r1 + c02: 09 f4 brne .+2 ; 0xc06 + c04: 8d c0 rjmp .+282 ; 0xd20 if(i2c_transfer_evt == NULL)return -1; - c60: 41 15 cp r20, r1 - c62: 51 05 cpc r21, r1 - c64: 09 f4 brne .+2 ; 0xc68 - c66: 7b c0 rjmp .+246 ; 0xd5e - c68: 6c 01 movw r12, r24 + c06: 41 15 cp r20, r1 + c08: 51 05 cpc r21, r1 + c0a: 09 f4 brne .+2 ; 0xc0e + c0c: 89 c0 rjmp .+274 ; 0xd20 + c0e: 7c 01 movw r14, r24 inst->i2c_transfer_inst = i2c_transfer_inst; - c6a: dc 01 movw r26, r24 - c6c: 6d 93 st X+, r22 - c6e: 7c 93 st X, r23 - c70: 11 97 sbiw r26, 0x01 ; 1 + c10: dc 01 movw r26, r24 + c12: 6d 93 st X+, r22 + c14: 7c 93 st X, r23 + c16: 11 97 sbiw r26, 0x01 ; 1 inst->i2c_transfer_evt = i2c_transfer_evt; - c72: 12 96 adiw r26, 0x02 ; 2 - c74: 4d 93 st X+, r20 - c76: 5c 93 st X, r21 - c78: 13 97 sbiw r26, 0x03 ; 3 + c18: 12 96 adiw r26, 0x02 ; 2 + c1a: 4d 93 st X+, r20 + c1c: 5c 93 st X, r21 + c1e: 13 97 sbiw r26, 0x03 ; 3 int ret = 0; memset(&(inst->device_data),0x00,sizeof(si5351_data)); - c7a: fc 01 movw r30, r24 - c7c: 34 96 adiw r30, 0x04 ; 4 - c7e: 84 e5 ldi r24, 0x54 ; 84 - c80: df 01 movw r26, r30 - c82: 1d 92 st X+, r1 - c84: 8a 95 dec r24 - c86: e9 f7 brne .-6 ; 0xc82 + c20: fc 01 movw r30, r24 + c22: 34 96 adiw r30, 0x04 ; 4 + c24: 84 e5 ldi r24, 0x54 ; 84 + c26: df 01 movw r26, r30 + c28: 1d 92 st X+, r1 + c2a: 8a 95 dec r24 + c2c: e9 f7 brne .-6 ; 0xc28 /* Disable all outputs setting CLKx_DIS high */ uint8_t temp = 0xff; - c88: 8f ef ldi r24, 0xFF ; 255 - c8a: 89 83 std Y+1, r24 ; 0x01 - c8c: 56 01 movw r10, r12 - c8e: b2 e0 ldi r27, 0x02 ; 2 - c90: ab 0e add r10, r27 - c92: b1 1c adc r11, r1 + c2e: 8f ef ldi r24, 0xFF ; 255 + c30: 89 83 std Y+1, r24 ; 0x01 writeRegister(inst,SI5351_REG_OUTPUT_ENABLE_CONTROL,&temp,1); - c94: e1 2c mov r14, r1 - c96: f1 2c mov r15, r1 - c98: 87 01 movw r16, r14 - c9a: e3 94 inc r14 - c9c: 9e 01 movw r18, r28 - c9e: 2f 5f subi r18, 0xFF ; 255 - ca0: 3f 4f sbci r19, 0xFF ; 255 - ca2: 43 e0 ldi r20, 0x03 ; 3 - ca4: b5 01 movw r22, r10 - ca6: c6 01 movw r24, r12 - ca8: cc dd rcall .-1128 ; 0x842 + c32: 01 e0 ldi r16, 0x01 ; 1 + c34: 10 e0 ldi r17, 0x00 ; 0 + c36: 20 e0 ldi r18, 0x00 ; 0 + c38: 30 e0 ldi r19, 0x00 ; 0 + c3a: ae 01 movw r20, r28 + c3c: 4f 5f subi r20, 0xFF ; 255 + c3e: 5f 4f sbci r21, 0xFF ; 255 + c40: 63 e0 ldi r22, 0x03 ; 3 + c42: c7 01 movw r24, r14 + c44: 18 de rcall .-976 ; 0x876 /* Power down all output drivers */ temp = 0x80; - caa: 80 e8 ldi r24, 0x80 ; 128 - cac: 89 83 std Y+1, r24 ; 0x01 + c46: 80 e8 ldi r24, 0x80 ; 128 + c48: 89 83 std Y+1, r24 ; 0x01 writeRegister(inst,SI5351_REG_CLK_0_CONTROL,&temp,1); - cae: 9e 01 movw r18, r28 - cb0: 2f 5f subi r18, 0xFF ; 255 - cb2: 3f 4f sbci r19, 0xFF ; 255 - cb4: 40 e1 ldi r20, 0x10 ; 16 - cb6: b5 01 movw r22, r10 - cb8: c6 01 movw r24, r12 - cba: c3 dd rcall .-1146 ; 0x842 + c4a: 01 e0 ldi r16, 0x01 ; 1 + c4c: 10 e0 ldi r17, 0x00 ; 0 + c4e: 20 e0 ldi r18, 0x00 ; 0 + c50: 30 e0 ldi r19, 0x00 ; 0 + c52: ae 01 movw r20, r28 + c54: 4f 5f subi r20, 0xFF ; 255 + c56: 5f 4f sbci r21, 0xFF ; 255 + c58: 60 e1 ldi r22, 0x10 ; 16 + c5a: c7 01 movw r24, r14 + c5c: 0c de rcall .-1000 ; 0x876 writeRegister(inst,SI5351_REG_CLK_1_CONTROL,&temp,1); - cbc: 9e 01 movw r18, r28 - cbe: 2f 5f subi r18, 0xFF ; 255 - cc0: 3f 4f sbci r19, 0xFF ; 255 - cc2: 41 e1 ldi r20, 0x11 ; 17 - cc4: b5 01 movw r22, r10 - cc6: c6 01 movw r24, r12 - cc8: bc dd rcall .-1160 ; 0x842 + c5e: 01 e0 ldi r16, 0x01 ; 1 + c60: 10 e0 ldi r17, 0x00 ; 0 + c62: 20 e0 ldi r18, 0x00 ; 0 + c64: 30 e0 ldi r19, 0x00 ; 0 + c66: ae 01 movw r20, r28 + c68: 4f 5f subi r20, 0xFF ; 255 + c6a: 5f 4f sbci r21, 0xFF ; 255 + c6c: 61 e1 ldi r22, 0x11 ; 17 + c6e: c7 01 movw r24, r14 + c70: 02 de rcall .-1020 ; 0x876 writeRegister(inst,SI5351_REG_CLK_2_CONTROL,&temp,1); - cca: 9e 01 movw r18, r28 - ccc: 2f 5f subi r18, 0xFF ; 255 - cce: 3f 4f sbci r19, 0xFF ; 255 - cd0: 42 e1 ldi r20, 0x12 ; 18 - cd2: b5 01 movw r22, r10 - cd4: c6 01 movw r24, r12 - cd6: b5 dd rcall .-1174 ; 0x842 + c72: 01 e0 ldi r16, 0x01 ; 1 + c74: 10 e0 ldi r17, 0x00 ; 0 + c76: 20 e0 ldi r18, 0x00 ; 0 + c78: 30 e0 ldi r19, 0x00 ; 0 + c7a: ae 01 movw r20, r28 + c7c: 4f 5f subi r20, 0xFF ; 255 + c7e: 5f 4f sbci r21, 0xFF ; 255 + c80: 62 e1 ldi r22, 0x12 ; 18 + c82: c7 01 movw r24, r14 + c84: f8 dd rcall .-1040 ; 0x876 writeRegister(inst,SI5351_REG_CLK_3_CONTROL,&temp,1); - cd8: 9e 01 movw r18, r28 - cda: 2f 5f subi r18, 0xFF ; 255 - cdc: 3f 4f sbci r19, 0xFF ; 255 - cde: 43 e1 ldi r20, 0x13 ; 19 - ce0: b5 01 movw r22, r10 - ce2: c6 01 movw r24, r12 - ce4: ae dd rcall .-1188 ; 0x842 + c86: 01 e0 ldi r16, 0x01 ; 1 + c88: 10 e0 ldi r17, 0x00 ; 0 + c8a: 20 e0 ldi r18, 0x00 ; 0 + c8c: 30 e0 ldi r19, 0x00 ; 0 + c8e: ae 01 movw r20, r28 + c90: 4f 5f subi r20, 0xFF ; 255 + c92: 5f 4f sbci r21, 0xFF ; 255 + c94: 63 e1 ldi r22, 0x13 ; 19 + c96: c7 01 movw r24, r14 + c98: ee dd rcall .-1060 ; 0x876 writeRegister(inst,SI5351_REG_CLK_4_CONTROL,&temp,1); - ce6: 9e 01 movw r18, r28 - ce8: 2f 5f subi r18, 0xFF ; 255 - cea: 3f 4f sbci r19, 0xFF ; 255 - cec: 44 e1 ldi r20, 0x14 ; 20 - cee: b5 01 movw r22, r10 - cf0: c6 01 movw r24, r12 - cf2: a7 dd rcall .-1202 ; 0x842 + c9a: 01 e0 ldi r16, 0x01 ; 1 + c9c: 10 e0 ldi r17, 0x00 ; 0 + c9e: 20 e0 ldi r18, 0x00 ; 0 + ca0: 30 e0 ldi r19, 0x00 ; 0 + ca2: ae 01 movw r20, r28 + ca4: 4f 5f subi r20, 0xFF ; 255 + ca6: 5f 4f sbci r21, 0xFF ; 255 + ca8: 64 e1 ldi r22, 0x14 ; 20 + caa: c7 01 movw r24, r14 + cac: e4 dd rcall .-1080 ; 0x876 writeRegister(inst,SI5351_REG_CLK_5_CONTROL,&temp,1); - cf4: 9e 01 movw r18, r28 - cf6: 2f 5f subi r18, 0xFF ; 255 - cf8: 3f 4f sbci r19, 0xFF ; 255 - cfa: 45 e1 ldi r20, 0x15 ; 21 - cfc: b5 01 movw r22, r10 - cfe: c6 01 movw r24, r12 - d00: a0 dd rcall .-1216 ; 0x842 + cae: 01 e0 ldi r16, 0x01 ; 1 + cb0: 10 e0 ldi r17, 0x00 ; 0 + cb2: 20 e0 ldi r18, 0x00 ; 0 + cb4: 30 e0 ldi r19, 0x00 ; 0 + cb6: ae 01 movw r20, r28 + cb8: 4f 5f subi r20, 0xFF ; 255 + cba: 5f 4f sbci r21, 0xFF ; 255 + cbc: 65 e1 ldi r22, 0x15 ; 21 + cbe: c7 01 movw r24, r14 + cc0: da dd rcall .-1100 ; 0x876 writeRegister(inst,SI5351_REG_CLK_6_CONTROL,&temp,1); - d02: 9e 01 movw r18, r28 - d04: 2f 5f subi r18, 0xFF ; 255 - d06: 3f 4f sbci r19, 0xFF ; 255 - d08: 46 e1 ldi r20, 0x16 ; 22 - d0a: b5 01 movw r22, r10 - d0c: c6 01 movw r24, r12 - d0e: 99 dd rcall .-1230 ; 0x842 + cc2: 01 e0 ldi r16, 0x01 ; 1 + cc4: 10 e0 ldi r17, 0x00 ; 0 + cc6: 20 e0 ldi r18, 0x00 ; 0 + cc8: 30 e0 ldi r19, 0x00 ; 0 + cca: ae 01 movw r20, r28 + ccc: 4f 5f subi r20, 0xFF ; 255 + cce: 5f 4f sbci r21, 0xFF ; 255 + cd0: 66 e1 ldi r22, 0x16 ; 22 + cd2: c7 01 movw r24, r14 + cd4: d0 dd rcall .-1120 ; 0x876 writeRegister(inst,SI5351_REG_CLK_7_CONTROL,&temp,1); - d10: 9e 01 movw r18, r28 - d12: 2f 5f subi r18, 0xFF ; 255 - d14: 3f 4f sbci r19, 0xFF ; 255 - d16: 47 e1 ldi r20, 0x17 ; 23 - d18: b5 01 movw r22, r10 - d1a: c6 01 movw r24, r12 - d1c: 92 dd rcall .-1244 ; 0x842 + cd6: 01 e0 ldi r16, 0x01 ; 1 + cd8: 10 e0 ldi r17, 0x00 ; 0 + cda: 20 e0 ldi r18, 0x00 ; 0 + cdc: 30 e0 ldi r19, 0x00 ; 0 + cde: ae 01 movw r20, r28 + ce0: 4f 5f subi r20, 0xFF ; 255 + ce2: 5f 4f sbci r21, 0xFF ; 255 + ce4: 67 e1 ldi r22, 0x17 ; 23 + ce6: c7 01 movw r24, r14 + ce8: c6 dd rcall .-1140 ; 0x876 temp = SI5351_CRYSTAL_LOAD_10PF; - d1e: 80 ec ldi r24, 0xC0 ; 192 - d20: 89 83 std Y+1, r24 ; 0x01 + cea: 80 ec ldi r24, 0xC0 ; 192 + cec: 89 83 std Y+1, r24 ; 0x01 writeRegister(inst,SI5351_REG_CRYSTAL_LOAD_CAPACITANCE,&temp,1); - d22: 9e 01 movw r18, r28 - d24: 2f 5f subi r18, 0xFF ; 255 - d26: 3f 4f sbci r19, 0xFF ; 255 - d28: 47 eb ldi r20, 0xB7 ; 183 - d2a: b5 01 movw r22, r10 - d2c: c6 01 movw r24, r12 - d2e: 89 dd rcall .-1262 ; 0x842 + cee: 01 e0 ldi r16, 0x01 ; 1 + cf0: 10 e0 ldi r17, 0x00 ; 0 + cf2: 20 e0 ldi r18, 0x00 ; 0 + cf4: 30 e0 ldi r19, 0x00 ; 0 + cf6: ae 01 movw r20, r28 + cf8: 4f 5f subi r20, 0xFF ; 255 + cfa: 5f 4f sbci r21, 0xFF ; 255 + cfc: 67 eb ldi r22, 0xB7 ; 183 + cfe: c7 01 movw r24, r14 + d00: ba dd rcall .-1164 ; 0x876 // Enable xtal clk.. temp = 0b01000000; - d30: 80 e4 ldi r24, 0x40 ; 64 - d32: 89 83 std Y+1, r24 ; 0x01 + d02: 80 e4 ldi r24, 0x40 ; 64 + d04: 89 83 std Y+1, r24 ; 0x01 writeRegister(inst,SI5351_REG_FANOUT_ENABLE,&temp,1); - d34: 9e 01 movw r18, r28 - d36: 2f 5f subi r18, 0xFF ; 255 - d38: 3f 4f sbci r19, 0xFF ; 255 - d3a: 4b eb ldi r20, 0xBB ; 187 - d3c: b5 01 movw r22, r10 - d3e: c6 01 movw r24, r12 - d40: 80 dd rcall .-1280 ; 0x842 + d06: 01 e0 ldi r16, 0x01 ; 1 + d08: 10 e0 ldi r17, 0x00 ; 0 + d0a: 20 e0 ldi r18, 0x00 ; 0 + d0c: 30 e0 ldi r19, 0x00 ; 0 + d0e: ae 01 movw r20, r28 + d10: 4f 5f subi r20, 0xFF ; 255 + d12: 5f 4f sbci r21, 0xFF ; 255 + d14: 6b eb ldi r22, 0xBB ; 187 + d16: c7 01 movw r24, r14 + d18: ae dd rcall .-1188 ; 0x876 return ret; - d42: 80 e0 ldi r24, 0x00 ; 0 - d44: 90 e0 ldi r25, 0x00 ; 0 - - - -} - d46: 0f 90 pop r0 - d48: df 91 pop r29 - d4a: cf 91 pop r28 - d4c: 1f 91 pop r17 - d4e: 0f 91 pop r16 - d50: ff 90 pop r15 - d52: ef 90 pop r14 - d54: df 90 pop r13 - d56: cf 90 pop r12 - d58: bf 90 pop r11 - d5a: af 90 pop r10 - d5c: 08 95 ret + d1a: 80 e0 ldi r24, 0x00 ; 0 + d1c: 90 e0 ldi r25, 0x00 ; 0 + d1e: 02 c0 rjmp .+4 ; 0xd24 return inst->device_data.deviceStatus.REVID; } int cm_si5351_init(si5351_driver *inst, void *i2c_transfer_inst, setGet_I2C_Event_fpt i2c_transfer_evt){ if(inst == NULL)return -1; - d5e: 8f ef ldi r24, 0xFF ; 255 - d60: 9f ef ldi r25, 0xFF ; 255 - d62: f1 cf rjmp .-30 ; 0xd46 + d20: 8f ef ldi r24, 0xFF ; 255 + d22: 9f ef ldi r25, 0xFF ; 255 + writeRegister(inst,SI5351_REG_FANOUT_ENABLE,&temp,1); + return ret; -00000d64 : - d64: 0f 93 push r16 - d66: 1f 93 push r17 - d68: cf 93 push r28 - d6a: df 93 push r29 - d6c: 82 30 cpi r24, 0x02 ; 2 - d6e: 91 05 cpc r25, r1 - d70: 10 f4 brcc .+4 ; 0xd76 - d72: 82 e0 ldi r24, 0x02 ; 2 - d74: 90 e0 ldi r25, 0x00 ; 0 - d76: e0 91 65 3f lds r30, 0x3F65 ; 0x803f65 <__flp> - d7a: f0 91 66 3f lds r31, 0x3F66 ; 0x803f66 <__flp+0x1> - d7e: 20 e0 ldi r18, 0x00 ; 0 - d80: 30 e0 ldi r19, 0x00 ; 0 - d82: a0 e0 ldi r26, 0x00 ; 0 - d84: b0 e0 ldi r27, 0x00 ; 0 - d86: 30 97 sbiw r30, 0x00 ; 0 - d88: 19 f1 breq .+70 ; 0xdd0 - d8a: 40 81 ld r20, Z - d8c: 51 81 ldd r21, Z+1 ; 0x01 - d8e: 02 81 ldd r16, Z+2 ; 0x02 - d90: 13 81 ldd r17, Z+3 ; 0x03 - d92: 48 17 cp r20, r24 - d94: 59 07 cpc r21, r25 - d96: c8 f0 brcs .+50 ; 0xdca - d98: 84 17 cp r24, r20 - d9a: 95 07 cpc r25, r21 - d9c: 69 f4 brne .+26 ; 0xdb8 - d9e: 10 97 sbiw r26, 0x00 ; 0 - da0: 31 f0 breq .+12 ; 0xdae - da2: 12 96 adiw r26, 0x02 ; 2 - da4: 0c 93 st X, r16 - da6: 12 97 sbiw r26, 0x02 ; 2 - da8: 13 96 adiw r26, 0x03 ; 3 - daa: 1c 93 st X, r17 - dac: 27 c0 rjmp .+78 ; 0xdfc - dae: 00 93 65 3f sts 0x3F65, r16 ; 0x803f65 <__flp> - db2: 10 93 66 3f sts 0x3F66, r17 ; 0x803f66 <__flp+0x1> - db6: 22 c0 rjmp .+68 ; 0xdfc - db8: 21 15 cp r18, r1 - dba: 31 05 cpc r19, r1 - dbc: 19 f0 breq .+6 ; 0xdc4 - dbe: 42 17 cp r20, r18 - dc0: 53 07 cpc r21, r19 - dc2: 18 f4 brcc .+6 ; 0xdca - dc4: 9a 01 movw r18, r20 - dc6: bd 01 movw r22, r26 - dc8: ef 01 movw r28, r30 - dca: df 01 movw r26, r30 - dcc: f8 01 movw r30, r16 - dce: db cf rjmp .-74 ; 0xd86 - dd0: 21 15 cp r18, r1 - dd2: 31 05 cpc r19, r1 - dd4: f9 f0 breq .+62 ; 0xe14 - dd6: 28 1b sub r18, r24 - dd8: 39 0b sbc r19, r25 - dda: 24 30 cpi r18, 0x04 ; 4 - ddc: 31 05 cpc r19, r1 - dde: 80 f4 brcc .+32 ; 0xe00 - de0: 8a 81 ldd r24, Y+2 ; 0x02 - de2: 9b 81 ldd r25, Y+3 ; 0x03 - de4: 61 15 cp r22, r1 - de6: 71 05 cpc r23, r1 - de8: 21 f0 breq .+8 ; 0xdf2 - dea: fb 01 movw r30, r22 - dec: 82 83 std Z+2, r24 ; 0x02 - dee: 93 83 std Z+3, r25 ; 0x03 - df0: 04 c0 rjmp .+8 ; 0xdfa - df2: 80 93 65 3f sts 0x3F65, r24 ; 0x803f65 <__flp> - df6: 90 93 66 3f sts 0x3F66, r25 ; 0x803f66 <__flp+0x1> - dfa: fe 01 movw r30, r28 - dfc: 32 96 adiw r30, 0x02 ; 2 - dfe: 44 c0 rjmp .+136 ; 0xe88 - e00: fe 01 movw r30, r28 - e02: e2 0f add r30, r18 - e04: f3 1f adc r31, r19 - e06: 81 93 st Z+, r24 - e08: 91 93 st Z+, r25 - e0a: 22 50 subi r18, 0x02 ; 2 - e0c: 31 09 sbc r19, r1 - e0e: 28 83 st Y, r18 - e10: 39 83 std Y+1, r19 ; 0x01 - e12: 3a c0 rjmp .+116 ; 0xe88 - e14: 20 91 63 3f lds r18, 0x3F63 ; 0x803f63 <__brkval> - e18: 30 91 64 3f lds r19, 0x3F64 ; 0x803f64 <__brkval+0x1> - e1c: 23 2b or r18, r19 - e1e: 41 f4 brne .+16 ; 0xe30 - e20: 20 91 02 3f lds r18, 0x3F02 ; 0x803f02 <__malloc_heap_start> - e24: 30 91 03 3f lds r19, 0x3F03 ; 0x803f03 <__malloc_heap_start+0x1> - e28: 20 93 63 3f sts 0x3F63, r18 ; 0x803f63 <__brkval> - e2c: 30 93 64 3f sts 0x3F64, r19 ; 0x803f64 <__brkval+0x1> - e30: 20 91 00 3f lds r18, 0x3F00 ; 0x803f00 <__DATA_REGION_ORIGIN__> - e34: 30 91 01 3f lds r19, 0x3F01 ; 0x803f01 <__DATA_REGION_ORIGIN__+0x1> - e38: 21 15 cp r18, r1 - e3a: 31 05 cpc r19, r1 - e3c: 41 f4 brne .+16 ; 0xe4e - e3e: 2d b7 in r18, 0x3d ; 61 - e40: 3e b7 in r19, 0x3e ; 62 - e42: 40 91 04 3f lds r20, 0x3F04 ; 0x803f04 <__malloc_margin> - e46: 50 91 05 3f lds r21, 0x3F05 ; 0x803f05 <__malloc_margin+0x1> - e4a: 24 1b sub r18, r20 - e4c: 35 0b sbc r19, r21 - e4e: e0 91 63 3f lds r30, 0x3F63 ; 0x803f63 <__brkval> - e52: f0 91 64 3f lds r31, 0x3F64 ; 0x803f64 <__brkval+0x1> - e56: e2 17 cp r30, r18 - e58: f3 07 cpc r31, r19 - e5a: a0 f4 brcc .+40 ; 0xe84 - e5c: 2e 1b sub r18, r30 - e5e: 3f 0b sbc r19, r31 - e60: 28 17 cp r18, r24 - e62: 39 07 cpc r19, r25 - e64: 78 f0 brcs .+30 ; 0xe84 - e66: ac 01 movw r20, r24 - e68: 4e 5f subi r20, 0xFE ; 254 - e6a: 5f 4f sbci r21, 0xFF ; 255 - e6c: 24 17 cp r18, r20 - e6e: 35 07 cpc r19, r21 - e70: 48 f0 brcs .+18 ; 0xe84 - e72: 4e 0f add r20, r30 - e74: 5f 1f adc r21, r31 - e76: 40 93 63 3f sts 0x3F63, r20 ; 0x803f63 <__brkval> - e7a: 50 93 64 3f sts 0x3F64, r21 ; 0x803f64 <__brkval+0x1> - e7e: 81 93 st Z+, r24 - e80: 91 93 st Z+, r25 - e82: 02 c0 rjmp .+4 ; 0xe88 - e84: e0 e0 ldi r30, 0x00 ; 0 - e86: f0 e0 ldi r31, 0x00 ; 0 - e88: cf 01 movw r24, r30 - e8a: df 91 pop r29 - e8c: cf 91 pop r28 - e8e: 1f 91 pop r17 - e90: 0f 91 pop r16 - e92: 08 95 ret -00000e94 : - e94: cf 93 push r28 - e96: df 93 push r29 - e98: 00 97 sbiw r24, 0x00 ; 0 - e9a: 09 f4 brne .+2 ; 0xe9e - e9c: 81 c0 rjmp .+258 ; 0xfa0 - e9e: fc 01 movw r30, r24 - ea0: 32 97 sbiw r30, 0x02 ; 2 - ea2: 12 82 std Z+2, r1 ; 0x02 - ea4: 13 82 std Z+3, r1 ; 0x03 - ea6: a0 91 65 3f lds r26, 0x3F65 ; 0x803f65 <__flp> - eaa: b0 91 66 3f lds r27, 0x3F66 ; 0x803f66 <__flp+0x1> - eae: 10 97 sbiw r26, 0x00 ; 0 - eb0: 81 f4 brne .+32 ; 0xed2 - eb2: 20 81 ld r18, Z - eb4: 31 81 ldd r19, Z+1 ; 0x01 - eb6: 82 0f add r24, r18 - eb8: 93 1f adc r25, r19 - eba: 20 91 63 3f lds r18, 0x3F63 ; 0x803f63 <__brkval> - ebe: 30 91 64 3f lds r19, 0x3F64 ; 0x803f64 <__brkval+0x1> - ec2: 28 17 cp r18, r24 - ec4: 39 07 cpc r19, r25 - ec6: 51 f5 brne .+84 ; 0xf1c - ec8: e0 93 63 3f sts 0x3F63, r30 ; 0x803f63 <__brkval> - ecc: f0 93 64 3f sts 0x3F64, r31 ; 0x803f64 <__brkval+0x1> - ed0: 67 c0 rjmp .+206 ; 0xfa0 - ed2: ed 01 movw r28, r26 - ed4: 20 e0 ldi r18, 0x00 ; 0 - ed6: 30 e0 ldi r19, 0x00 ; 0 - ed8: ce 17 cp r28, r30 - eda: df 07 cpc r29, r31 - edc: 40 f4 brcc .+16 ; 0xeee - ede: 4a 81 ldd r20, Y+2 ; 0x02 - ee0: 5b 81 ldd r21, Y+3 ; 0x03 - ee2: 9e 01 movw r18, r28 - ee4: 41 15 cp r20, r1 - ee6: 51 05 cpc r21, r1 - ee8: f1 f0 breq .+60 ; 0xf26 - eea: ea 01 movw r28, r20 - eec: f5 cf rjmp .-22 ; 0xed8 - eee: c2 83 std Z+2, r28 ; 0x02 - ef0: d3 83 std Z+3, r29 ; 0x03 - ef2: 40 81 ld r20, Z - ef4: 51 81 ldd r21, Z+1 ; 0x01 - ef6: 84 0f add r24, r20 - ef8: 95 1f adc r25, r21 - efa: c8 17 cp r28, r24 - efc: d9 07 cpc r29, r25 - efe: 59 f4 brne .+22 ; 0xf16 - f00: 88 81 ld r24, Y - f02: 99 81 ldd r25, Y+1 ; 0x01 - f04: 84 0f add r24, r20 - f06: 95 1f adc r25, r21 - f08: 02 96 adiw r24, 0x02 ; 2 - f0a: 80 83 st Z, r24 - f0c: 91 83 std Z+1, r25 ; 0x01 - f0e: 8a 81 ldd r24, Y+2 ; 0x02 - f10: 9b 81 ldd r25, Y+3 ; 0x03 - f12: 82 83 std Z+2, r24 ; 0x02 - f14: 93 83 std Z+3, r25 ; 0x03 - f16: 21 15 cp r18, r1 - f18: 31 05 cpc r19, r1 - f1a: 29 f4 brne .+10 ; 0xf26 - f1c: e0 93 65 3f sts 0x3F65, r30 ; 0x803f65 <__flp> - f20: f0 93 66 3f sts 0x3F66, r31 ; 0x803f66 <__flp+0x1> - f24: 3d c0 rjmp .+122 ; 0xfa0 - f26: e9 01 movw r28, r18 - f28: ea 83 std Y+2, r30 ; 0x02 - f2a: fb 83 std Y+3, r31 ; 0x03 - f2c: 49 91 ld r20, Y+ - f2e: 59 91 ld r21, Y+ - f30: c4 0f add r28, r20 - f32: d5 1f adc r29, r21 - f34: ec 17 cp r30, r28 - f36: fd 07 cpc r31, r29 - f38: 61 f4 brne .+24 ; 0xf52 - f3a: 80 81 ld r24, Z - f3c: 91 81 ldd r25, Z+1 ; 0x01 - f3e: 84 0f add r24, r20 - f40: 95 1f adc r25, r21 - f42: 02 96 adiw r24, 0x02 ; 2 - f44: e9 01 movw r28, r18 - f46: 88 83 st Y, r24 - f48: 99 83 std Y+1, r25 ; 0x01 - f4a: 82 81 ldd r24, Z+2 ; 0x02 - f4c: 93 81 ldd r25, Z+3 ; 0x03 - f4e: 8a 83 std Y+2, r24 ; 0x02 - f50: 9b 83 std Y+3, r25 ; 0x03 - f52: e0 e0 ldi r30, 0x00 ; 0 - f54: f0 e0 ldi r31, 0x00 ; 0 - f56: 12 96 adiw r26, 0x02 ; 2 - f58: 8d 91 ld r24, X+ - f5a: 9c 91 ld r25, X - f5c: 13 97 sbiw r26, 0x03 ; 3 - f5e: 00 97 sbiw r24, 0x00 ; 0 - f60: 19 f0 breq .+6 ; 0xf68 - f62: fd 01 movw r30, r26 - f64: dc 01 movw r26, r24 - f66: f7 cf rjmp .-18 ; 0xf56 - f68: 8d 91 ld r24, X+ - f6a: 9c 91 ld r25, X - f6c: 11 97 sbiw r26, 0x01 ; 1 - f6e: 9d 01 movw r18, r26 - f70: 2e 5f subi r18, 0xFE ; 254 - f72: 3f 4f sbci r19, 0xFF ; 255 - f74: 82 0f add r24, r18 - f76: 93 1f adc r25, r19 - f78: 20 91 63 3f lds r18, 0x3F63 ; 0x803f63 <__brkval> - f7c: 30 91 64 3f lds r19, 0x3F64 ; 0x803f64 <__brkval+0x1> - f80: 28 17 cp r18, r24 - f82: 39 07 cpc r19, r25 - f84: 69 f4 brne .+26 ; 0xfa0 - f86: 30 97 sbiw r30, 0x00 ; 0 - f88: 29 f4 brne .+10 ; 0xf94 - f8a: 10 92 65 3f sts 0x3F65, r1 ; 0x803f65 <__flp> - f8e: 10 92 66 3f sts 0x3F66, r1 ; 0x803f66 <__flp+0x1> - f92: 02 c0 rjmp .+4 ; 0xf98 - f94: 12 82 std Z+2, r1 ; 0x02 - f96: 13 82 std Z+3, r1 ; 0x03 - f98: a0 93 63 3f sts 0x3F63, r26 ; 0x803f63 <__brkval> - f9c: b0 93 64 3f sts 0x3F64, r27 ; 0x803f64 <__brkval+0x1> - fa0: df 91 pop r29 - fa2: cf 91 pop r28 - fa4: 08 95 ret -00000fa6 : - fa6: fb 01 movw r30, r22 +} + d24: 0f 90 pop r0 + d26: df 91 pop r29 + d28: cf 91 pop r28 + d2a: 1f 91 pop r17 + d2c: 0f 91 pop r16 + d2e: ff 90 pop r15 + d30: ef 90 pop r14 + d32: 08 95 ret + +00000d34 : + d34: 0f 93 push r16 + d36: 1f 93 push r17 + d38: cf 93 push r28 + d3a: df 93 push r29 + d3c: 82 30 cpi r24, 0x02 ; 2 + d3e: 91 05 cpc r25, r1 + d40: 10 f4 brcc .+4 ; 0xd46 + d42: 82 e0 ldi r24, 0x02 ; 2 + d44: 90 e0 ldi r25, 0x00 ; 0 + d46: e0 91 69 3f lds r30, 0x3F69 ; 0x803f69 <__flp> + d4a: f0 91 6a 3f lds r31, 0x3F6A ; 0x803f6a <__flp+0x1> + d4e: 20 e0 ldi r18, 0x00 ; 0 + d50: 30 e0 ldi r19, 0x00 ; 0 + d52: a0 e0 ldi r26, 0x00 ; 0 + d54: b0 e0 ldi r27, 0x00 ; 0 + d56: 30 97 sbiw r30, 0x00 ; 0 + d58: 19 f1 breq .+70 ; 0xda0 + d5a: 40 81 ld r20, Z + d5c: 51 81 ldd r21, Z+1 ; 0x01 + d5e: 02 81 ldd r16, Z+2 ; 0x02 + d60: 13 81 ldd r17, Z+3 ; 0x03 + d62: 48 17 cp r20, r24 + d64: 59 07 cpc r21, r25 + d66: c8 f0 brcs .+50 ; 0xd9a + d68: 84 17 cp r24, r20 + d6a: 95 07 cpc r25, r21 + d6c: 69 f4 brne .+26 ; 0xd88 + d6e: 10 97 sbiw r26, 0x00 ; 0 + d70: 31 f0 breq .+12 ; 0xd7e + d72: 12 96 adiw r26, 0x02 ; 2 + d74: 0c 93 st X, r16 + d76: 12 97 sbiw r26, 0x02 ; 2 + d78: 13 96 adiw r26, 0x03 ; 3 + d7a: 1c 93 st X, r17 + d7c: 27 c0 rjmp .+78 ; 0xdcc + d7e: 00 93 69 3f sts 0x3F69, r16 ; 0x803f69 <__flp> + d82: 10 93 6a 3f sts 0x3F6A, r17 ; 0x803f6a <__flp+0x1> + d86: 22 c0 rjmp .+68 ; 0xdcc + d88: 21 15 cp r18, r1 + d8a: 31 05 cpc r19, r1 + d8c: 19 f0 breq .+6 ; 0xd94 + d8e: 42 17 cp r20, r18 + d90: 53 07 cpc r21, r19 + d92: 18 f4 brcc .+6 ; 0xd9a + d94: 9a 01 movw r18, r20 + d96: bd 01 movw r22, r26 + d98: ef 01 movw r28, r30 + d9a: df 01 movw r26, r30 + d9c: f8 01 movw r30, r16 + d9e: db cf rjmp .-74 ; 0xd56 + da0: 21 15 cp r18, r1 + da2: 31 05 cpc r19, r1 + da4: f9 f0 breq .+62 ; 0xde4 + da6: 28 1b sub r18, r24 + da8: 39 0b sbc r19, r25 + daa: 24 30 cpi r18, 0x04 ; 4 + dac: 31 05 cpc r19, r1 + dae: 80 f4 brcc .+32 ; 0xdd0 + db0: 8a 81 ldd r24, Y+2 ; 0x02 + db2: 9b 81 ldd r25, Y+3 ; 0x03 + db4: 61 15 cp r22, r1 + db6: 71 05 cpc r23, r1 + db8: 21 f0 breq .+8 ; 0xdc2 + dba: fb 01 movw r30, r22 + dbc: 82 83 std Z+2, r24 ; 0x02 + dbe: 93 83 std Z+3, r25 ; 0x03 + dc0: 04 c0 rjmp .+8 ; 0xdca + dc2: 80 93 69 3f sts 0x3F69, r24 ; 0x803f69 <__flp> + dc6: 90 93 6a 3f sts 0x3F6A, r25 ; 0x803f6a <__flp+0x1> + dca: fe 01 movw r30, r28 + dcc: 32 96 adiw r30, 0x02 ; 2 + dce: 44 c0 rjmp .+136 ; 0xe58 + dd0: fe 01 movw r30, r28 + dd2: e2 0f add r30, r18 + dd4: f3 1f adc r31, r19 + dd6: 81 93 st Z+, r24 + dd8: 91 93 st Z+, r25 + dda: 22 50 subi r18, 0x02 ; 2 + ddc: 31 09 sbc r19, r1 + dde: 28 83 st Y, r18 + de0: 39 83 std Y+1, r19 ; 0x01 + de2: 3a c0 rjmp .+116 ; 0xe58 + de4: 20 91 67 3f lds r18, 0x3F67 ; 0x803f67 <__brkval> + de8: 30 91 68 3f lds r19, 0x3F68 ; 0x803f68 <__brkval+0x1> + dec: 23 2b or r18, r19 + dee: 41 f4 brne .+16 ; 0xe00 + df0: 20 91 02 3f lds r18, 0x3F02 ; 0x803f02 <__malloc_heap_start> + df4: 30 91 03 3f lds r19, 0x3F03 ; 0x803f03 <__malloc_heap_start+0x1> + df8: 20 93 67 3f sts 0x3F67, r18 ; 0x803f67 <__brkval> + dfc: 30 93 68 3f sts 0x3F68, r19 ; 0x803f68 <__brkval+0x1> + e00: 20 91 00 3f lds r18, 0x3F00 ; 0x803f00 <__data_start> + e04: 30 91 01 3f lds r19, 0x3F01 ; 0x803f01 <__data_start+0x1> + e08: 21 15 cp r18, r1 + e0a: 31 05 cpc r19, r1 + e0c: 41 f4 brne .+16 ; 0xe1e + e0e: 2d b7 in r18, 0x3d ; 61 + e10: 3e b7 in r19, 0x3e ; 62 + e12: 40 91 04 3f lds r20, 0x3F04 ; 0x803f04 <__malloc_margin> + e16: 50 91 05 3f lds r21, 0x3F05 ; 0x803f05 <__malloc_margin+0x1> + e1a: 24 1b sub r18, r20 + e1c: 35 0b sbc r19, r21 + e1e: e0 91 67 3f lds r30, 0x3F67 ; 0x803f67 <__brkval> + e22: f0 91 68 3f lds r31, 0x3F68 ; 0x803f68 <__brkval+0x1> + e26: e2 17 cp r30, r18 + e28: f3 07 cpc r31, r19 + e2a: a0 f4 brcc .+40 ; 0xe54 + e2c: 2e 1b sub r18, r30 + e2e: 3f 0b sbc r19, r31 + e30: 28 17 cp r18, r24 + e32: 39 07 cpc r19, r25 + e34: 78 f0 brcs .+30 ; 0xe54 + e36: ac 01 movw r20, r24 + e38: 4e 5f subi r20, 0xFE ; 254 + e3a: 5f 4f sbci r21, 0xFF ; 255 + e3c: 24 17 cp r18, r20 + e3e: 35 07 cpc r19, r21 + e40: 48 f0 brcs .+18 ; 0xe54 + e42: 4e 0f add r20, r30 + e44: 5f 1f adc r21, r31 + e46: 40 93 67 3f sts 0x3F67, r20 ; 0x803f67 <__brkval> + e4a: 50 93 68 3f sts 0x3F68, r21 ; 0x803f68 <__brkval+0x1> + e4e: 81 93 st Z+, r24 + e50: 91 93 st Z+, r25 + e52: 02 c0 rjmp .+4 ; 0xe58 + e54: e0 e0 ldi r30, 0x00 ; 0 + e56: f0 e0 ldi r31, 0x00 ; 0 + e58: cf 01 movw r24, r30 + e5a: df 91 pop r29 + e5c: cf 91 pop r28 + e5e: 1f 91 pop r17 + e60: 0f 91 pop r16 + e62: 08 95 ret + +00000e64 : + e64: cf 93 push r28 + e66: df 93 push r29 + e68: 00 97 sbiw r24, 0x00 ; 0 + e6a: 09 f4 brne .+2 ; 0xe6e + e6c: 81 c0 rjmp .+258 ; 0xf70 + e6e: fc 01 movw r30, r24 + e70: 32 97 sbiw r30, 0x02 ; 2 + e72: 12 82 std Z+2, r1 ; 0x02 + e74: 13 82 std Z+3, r1 ; 0x03 + e76: a0 91 69 3f lds r26, 0x3F69 ; 0x803f69 <__flp> + e7a: b0 91 6a 3f lds r27, 0x3F6A ; 0x803f6a <__flp+0x1> + e7e: 10 97 sbiw r26, 0x00 ; 0 + e80: 81 f4 brne .+32 ; 0xea2 + e82: 20 81 ld r18, Z + e84: 31 81 ldd r19, Z+1 ; 0x01 + e86: 82 0f add r24, r18 + e88: 93 1f adc r25, r19 + e8a: 20 91 67 3f lds r18, 0x3F67 ; 0x803f67 <__brkval> + e8e: 30 91 68 3f lds r19, 0x3F68 ; 0x803f68 <__brkval+0x1> + e92: 28 17 cp r18, r24 + e94: 39 07 cpc r19, r25 + e96: 51 f5 brne .+84 ; 0xeec + e98: e0 93 67 3f sts 0x3F67, r30 ; 0x803f67 <__brkval> + e9c: f0 93 68 3f sts 0x3F68, r31 ; 0x803f68 <__brkval+0x1> + ea0: 67 c0 rjmp .+206 ; 0xf70 + ea2: ed 01 movw r28, r26 + ea4: 20 e0 ldi r18, 0x00 ; 0 + ea6: 30 e0 ldi r19, 0x00 ; 0 + ea8: ce 17 cp r28, r30 + eaa: df 07 cpc r29, r31 + eac: 40 f4 brcc .+16 ; 0xebe + eae: 4a 81 ldd r20, Y+2 ; 0x02 + eb0: 5b 81 ldd r21, Y+3 ; 0x03 + eb2: 9e 01 movw r18, r28 + eb4: 41 15 cp r20, r1 + eb6: 51 05 cpc r21, r1 + eb8: f1 f0 breq .+60 ; 0xef6 + eba: ea 01 movw r28, r20 + ebc: f5 cf rjmp .-22 ; 0xea8 + ebe: c2 83 std Z+2, r28 ; 0x02 + ec0: d3 83 std Z+3, r29 ; 0x03 + ec2: 40 81 ld r20, Z + ec4: 51 81 ldd r21, Z+1 ; 0x01 + ec6: 84 0f add r24, r20 + ec8: 95 1f adc r25, r21 + eca: c8 17 cp r28, r24 + ecc: d9 07 cpc r29, r25 + ece: 59 f4 brne .+22 ; 0xee6 + ed0: 88 81 ld r24, Y + ed2: 99 81 ldd r25, Y+1 ; 0x01 + ed4: 84 0f add r24, r20 + ed6: 95 1f adc r25, r21 + ed8: 02 96 adiw r24, 0x02 ; 2 + eda: 80 83 st Z, r24 + edc: 91 83 std Z+1, r25 ; 0x01 + ede: 8a 81 ldd r24, Y+2 ; 0x02 + ee0: 9b 81 ldd r25, Y+3 ; 0x03 + ee2: 82 83 std Z+2, r24 ; 0x02 + ee4: 93 83 std Z+3, r25 ; 0x03 + ee6: 21 15 cp r18, r1 + ee8: 31 05 cpc r19, r1 + eea: 29 f4 brne .+10 ; 0xef6 + eec: e0 93 69 3f sts 0x3F69, r30 ; 0x803f69 <__flp> + ef0: f0 93 6a 3f sts 0x3F6A, r31 ; 0x803f6a <__flp+0x1> + ef4: 3d c0 rjmp .+122 ; 0xf70 + ef6: e9 01 movw r28, r18 + ef8: ea 83 std Y+2, r30 ; 0x02 + efa: fb 83 std Y+3, r31 ; 0x03 + efc: 49 91 ld r20, Y+ + efe: 59 91 ld r21, Y+ + f00: c4 0f add r28, r20 + f02: d5 1f adc r29, r21 + f04: ec 17 cp r30, r28 + f06: fd 07 cpc r31, r29 + f08: 61 f4 brne .+24 ; 0xf22 + f0a: 80 81 ld r24, Z + f0c: 91 81 ldd r25, Z+1 ; 0x01 + f0e: 84 0f add r24, r20 + f10: 95 1f adc r25, r21 + f12: 02 96 adiw r24, 0x02 ; 2 + f14: e9 01 movw r28, r18 + f16: 88 83 st Y, r24 + f18: 99 83 std Y+1, r25 ; 0x01 + f1a: 82 81 ldd r24, Z+2 ; 0x02 + f1c: 93 81 ldd r25, Z+3 ; 0x03 + f1e: 8a 83 std Y+2, r24 ; 0x02 + f20: 9b 83 std Y+3, r25 ; 0x03 + f22: e0 e0 ldi r30, 0x00 ; 0 + f24: f0 e0 ldi r31, 0x00 ; 0 + f26: 12 96 adiw r26, 0x02 ; 2 + f28: 8d 91 ld r24, X+ + f2a: 9c 91 ld r25, X + f2c: 13 97 sbiw r26, 0x03 ; 3 + f2e: 00 97 sbiw r24, 0x00 ; 0 + f30: 19 f0 breq .+6 ; 0xf38 + f32: fd 01 movw r30, r26 + f34: dc 01 movw r26, r24 + f36: f7 cf rjmp .-18 ; 0xf26 + f38: 8d 91 ld r24, X+ + f3a: 9c 91 ld r25, X + f3c: 11 97 sbiw r26, 0x01 ; 1 + f3e: 9d 01 movw r18, r26 + f40: 2e 5f subi r18, 0xFE ; 254 + f42: 3f 4f sbci r19, 0xFF ; 255 + f44: 82 0f add r24, r18 + f46: 93 1f adc r25, r19 + f48: 20 91 67 3f lds r18, 0x3F67 ; 0x803f67 <__brkval> + f4c: 30 91 68 3f lds r19, 0x3F68 ; 0x803f68 <__brkval+0x1> + f50: 28 17 cp r18, r24 + f52: 39 07 cpc r19, r25 + f54: 69 f4 brne .+26 ; 0xf70 + f56: 30 97 sbiw r30, 0x00 ; 0 + f58: 29 f4 brne .+10 ; 0xf64 + f5a: 10 92 69 3f sts 0x3F69, r1 ; 0x803f69 <__flp> + f5e: 10 92 6a 3f sts 0x3F6A, r1 ; 0x803f6a <__flp+0x1> + f62: 02 c0 rjmp .+4 ; 0xf68 + f64: 12 82 std Z+2, r1 ; 0x02 + f66: 13 82 std Z+3, r1 ; 0x03 + f68: a0 93 67 3f sts 0x3F67, r26 ; 0x803f67 <__brkval> + f6c: b0 93 68 3f sts 0x3F68, r27 ; 0x803f68 <__brkval+0x1> + f70: df 91 pop r29 + f72: cf 91 pop r28 + f74: 08 95 ret + +00000f76 : + f76: fb 01 movw r30, r22 + f78: dc 01 movw r26, r24 + f7a: 02 c0 rjmp .+4 ; 0xf80 + f7c: 01 90 ld r0, Z+ + f7e: 0d 92 st X+, r0 + f80: 41 50 subi r20, 0x01 ; 1 + f82: 50 40 sbci r21, 0x00 ; 0 + f84: d8 f7 brcc .-10 ; 0xf7c + f86: 08 95 ret + +00000f88 : + f88: 03 d0 rcall .+6 ; 0xf90 + f8a: 80 81 ld r24, Z + f8c: 99 27 eor r25, r25 + f8e: 08 95 ret + +00000f90 : + f90: fc 01 movw r30, r24 + f92: e0 50 subi r30, 0x00 ; 0 + f94: fc 4e sbci r31, 0xEC ; 236 + f96: 08 95 ret + +00000f98 : + f98: 26 2f mov r18, r22 + +00000f9a : + f9a: af 93 push r26 + f9c: bf 93 push r27 + f9e: e0 e0 ldi r30, 0x00 ; 0 + fa0: f0 e1 ldi r31, 0x10 ; 16 + fa2: 32 81 ldd r19, Z+2 ; 0x02 + fa4: 31 fd sbrc r19, 1 + fa6: fd cf rjmp .-6 ; 0xfa2 fa8: dc 01 movw r26, r24 - faa: 02 c0 rjmp .+4 ; 0xfb0 - fac: 01 90 ld r0, Z+ - fae: 0d 92 st X+, r0 - fb0: 41 50 subi r20, 0x01 ; 1 - fb2: 50 40 sbci r21, 0x00 ; 0 - fb4: d8 f7 brcc .-10 ; 0xfac - fb6: 08 95 ret - -00000fb8 : - fb8: 03 d0 rcall .+6 ; 0xfc0 - fba: 80 81 ld r24, Z - fbc: 99 27 eor r25, r25 + faa: a0 50 subi r26, 0x00 ; 0 + fac: bc 4e sbci r27, 0xEC ; 236 + fae: 2c 93 st X, r18 + fb0: 2d e9 ldi r18, 0x9D ; 157 + fb2: 24 bf out 0x34, r18 ; 52 + fb4: 23 e0 ldi r18, 0x03 ; 3 + fb6: 20 83 st Z, r18 + fb8: 01 96 adiw r24, 0x01 ; 1 + fba: bf 91 pop r27 + fbc: af 91 pop r26 fbe: 08 95 ret -00000fc0 : - fc0: fc 01 movw r30, r24 - fc2: e0 50 subi r30, 0x00 ; 0 - fc4: fc 4e sbci r31, 0xEC ; 236 - fc6: 08 95 ret +00000fc0 <_exit>: + fc0: f8 94 cli -00000fc8 : - fc8: 26 2f mov r18, r22 - -00000fca : - fca: af 93 push r26 - fcc: bf 93 push r27 - fce: e0 e0 ldi r30, 0x00 ; 0 - fd0: f0 e1 ldi r31, 0x10 ; 16 - fd2: 32 81 ldd r19, Z+2 ; 0x02 - fd4: 31 fd sbrc r19, 1 - fd6: fd cf rjmp .-6 ; 0xfd2 - fd8: dc 01 movw r26, r24 - fda: a0 50 subi r26, 0x00 ; 0 - fdc: bc 4e sbci r27, 0xEC ; 236 - fde: 2c 93 st X, r18 - fe0: 2d e9 ldi r18, 0x9D ; 157 - fe2: 24 bf out 0x34, r18 ; 52 - fe4: 23 e0 ldi r18, 0x03 ; 3 - fe6: 20 83 st Z, r18 - fe8: 01 96 adiw r24, 0x01 ; 1 - fea: bf 91 pop r27 - fec: af 91 pop r26 - fee: 08 95 ret - -00000ff0 <_exit>: - ff0: f8 94 cli - -00000ff2 <__stop_program>: - ff2: ff cf rjmp .-2 ; 0xff2 <__stop_program> +00000fc2 <__stop_program>: + fc2: ff cf rjmp .-2 ; 0xfc2 <__stop_program> diff --git a/storno_cqp6xx_digital_xtal/Debug/storno_cqp6xx_digital_xtal.map b/storno_cqp6xx_digital_xtal/Debug/storno_cqp6xx_digital_xtal.map index 1bef047..56698f8 100644 --- a/storno_cqp6xx_digital_xtal/Debug/storno_cqp6xx_digital_xtal.map +++ b/storno_cqp6xx_digital_xtal/Debug/storno_cqp6xx_digital_xtal.map @@ -58,7 +58,7 @@ c:/program files (x86)/atmel/studio/7.0/toolchain/avr8/avr8-gnu-toolchain/bin/.. Allocating common symbols Common symbol size file -storno_xtal_app 0x1d main.o +storno_xtal_app 0x21 main.o __brkval 0x2 c:/program files (x86)/atmel/studio/7.0/toolchain/avr8/avr8-gnu-toolchain/bin/../lib/gcc/avr/5.4.0/../../../../avr/lib/avrxmega3/short-calls\libc.a(malloc.o) __flp 0x2 c:/program files (x86)/atmel/studio/7.0/toolchain/avr8/avr8-gnu-toolchain/bin/../lib/gcc/avr/5.4.0/../../../../avr/lib/avrxmega3/short-calls\libc.a(malloc.o) @@ -73,22 +73,16 @@ Discarded input sections .data 0x00000000 0x0 avr_gpio_driver/avr_gpio.o .bss 0x00000000 0x0 avr_gpio_driver/avr_gpio.o .text.gpio_set_level - 0x00000000 0x28 avr_gpio_driver/avr_gpio.o + 0x00000000 0x24 avr_gpio_driver/avr_gpio.o .text.gpio_init - 0x00000000 0x28 avr_gpio_driver/avr_gpio.o + 0x00000000 0x24 avr_gpio_driver/avr_gpio.o .text 0x00000000 0x0 avr_i2c_driver/avr_i2c.o .data 0x00000000 0x0 avr_i2c_driver/avr_i2c.o .bss 0x00000000 0x0 avr_i2c_driver/avr_i2c.o - .text.i2c_write_devAddr - 0x00000000 0x22 avr_i2c_driver/avr_i2c.o .text.i2c_byte_write 0x00000000 0x3e avr_i2c_driver/avr_i2c.o .text.i2c_byte_read 0x00000000 0x34 avr_i2c_driver/avr_i2c.o - .text.i2c_write - 0x00000000 0x1e avr_i2c_driver/avr_i2c.o - .text.i2c_IsDeviceReady - 0x00000000 0x2c avr_i2c_driver/avr_i2c.o .text 0x00000000 0x0 avr_uart_driver/avr_uart.o .data 0x00000000 0x0 avr_uart_driver/avr_uart.o .bss 0x00000000 0x0 avr_uart_driver/avr_uart.o @@ -110,12 +104,10 @@ Discarded input sections .text 0x00000000 0x0 si5351_driver/si5351_driver.o .data 0x00000000 0x0 si5351_driver/si5351_driver.o .bss 0x00000000 0x0 si5351_driver/si5351_driver.o - .text.cm_setPLLParameters - 0x00000000 0x2f6 si5351_driver/si5351_driver.o .text.cm_setOutputMultiSynth - 0x00000000 0x11c si5351_driver/si5351_driver.o - .text.cm_resetPLLs - 0x00000000 0x50 si5351_driver/si5351_driver.o + 0x00000000 0xdc si5351_driver/si5351_driver.o + .text.cm_setPLLParameters + 0x00000000 0x20c si5351_driver/si5351_driver.o .text.cm_si5351_getRevisionNumber 0x00000000 0x68 si5351_driver/si5351_driver.o .text 0x00000000 0x0 c:/program files (x86)/atmel/studio/7.0/toolchain/avr8/avr8-gnu-toolchain/bin/../lib/gcc/avr/5.4.0/../../../../avr/lib/avrxmega3/short-calls\libm.a(addsf3.o) @@ -424,7 +416,7 @@ END GROUP .rela.plt *(.rela.plt) -.text 0x00000000 0xff4 +.text 0x00000000 0xfc4 *(.vectors) .vectors 0x00000000 0x34 C:/Program Files (x86)/Atmel/Studio/7.0/Packs/atmel/ATtiny_DFP/1.10.348/gcc/dev/attiny402/avrxmega3/short-calls/crtattiny402.o 0x00000000 __vector_default @@ -511,102 +503,112 @@ END GROUP 0x0000006c . = ALIGN (0x2) *(.text.*) .text.cm_EEPROM_write - 0x0000006c 0x42 avr_eeprom_driver/avr_eeprom_driver.o + 0x0000006c 0x36 avr_eeprom_driver/avr_eeprom_driver.o 0x0000006c cm_EEPROM_write .text.cm_EEPROM_read - 0x000000ae 0x42 avr_eeprom_driver/avr_eeprom_driver.o - 0x000000ae cm_EEPROM_read + 0x000000a2 0x36 avr_eeprom_driver/avr_eeprom_driver.o + 0x000000a2 cm_EEPROM_read .text.gpio_get_level - 0x000000f0 0x20 avr_gpio_driver/avr_gpio.o - 0x000000f0 gpio_get_level - .text.i2c_write.part.0 - 0x00000110 0x7c avr_i2c_driver/avr_i2c.o + 0x000000d8 0x20 avr_gpio_driver/avr_gpio.o + 0x000000d8 gpio_get_level + .text.i2c_write_devAddr + 0x000000f8 0x22 avr_i2c_driver/avr_i2c.o + 0x000000f8 i2c_write_devAddr + .text.i2c_write + 0x0000011a 0x94 avr_i2c_driver/avr_i2c.o + 0x0000011a i2c_write .text.i2c_read - 0x0000018c 0x80 avr_i2c_driver/avr_i2c.o - 0x0000018c i2c_read + 0x000001ae 0x8c avr_i2c_driver/avr_i2c.o + 0x000001ae i2c_read + .text.i2c_IsDeviceReady + 0x0000023a 0x2c avr_i2c_driver/avr_i2c.o + 0x0000023a i2c_IsDeviceReady .text.cm_i2c_init - 0x0000020c 0x34 avr_i2c_driver/avr_i2c.o - 0x0000020c cm_i2c_init + 0x00000266 0x34 avr_i2c_driver/avr_i2c.o + 0x00000266 cm_i2c_init .text.cm_i2c_addDev - 0x00000240 0x3e avr_i2c_driver/avr_i2c.o - 0x00000240 cm_i2c_addDev + 0x0000029a 0x3c avr_i2c_driver/avr_i2c.o + 0x0000029a cm_i2c_addDev .text.cm_i2c_transfer - 0x0000027e 0x4e avr_i2c_driver/avr_i2c.o - 0x0000027e cm_i2c_transfer + 0x000002d6 0x2a avr_i2c_driver/avr_i2c.o + 0x000002d6 cm_i2c_transfer .text.__vector_22 - 0x000002cc 0x56 avr_uart_driver/avr_uart.o - 0x000002cc __vector_22 + 0x00000300 0x56 avr_uart_driver/avr_uart.o + 0x00000300 __vector_22 .text.cm_uart_init - 0x00000322 0x66 avr_uart_driver/avr_uart.o - 0x00000322 cm_uart_init + 0x00000356 0x62 avr_uart_driver/avr_uart.o + 0x00000356 cm_uart_init .text.cm_msgSync_Byte_DecodeSC - 0x00000388 0x64 cm_msg/cm_msg.o - 0x00000388 cm_msgSync_Byte_DecodeSC + 0x000003b8 0x5e cm_msg/cm_msg.o + 0x000003b8 cm_msgSync_Byte_DecodeSC .text.cm_msg_DecodeMsg_Byte - 0x000003ec 0xb4 cm_msg/cm_msg.o - 0x000003ec cm_msg_DecodeMsg_Byte + 0x00000416 0xa0 cm_msg/cm_msg.o + 0x00000416 cm_msg_DecodeMsg_Byte .text.cm_MsgCompleteEvt_Register - 0x000004a0 0x1c cm_msg/cm_msg.o - 0x000004a0 cm_MsgCompleteEvt_Register + 0x000004b6 0x1c cm_msg/cm_msg.o + 0x000004b6 cm_MsgCompleteEvt_Register .text.cqm_setPLLParam - 0x000004bc 0x8c cqm6xx_app.o + 0x000004d2 0x8c cqm6xx_app.o .text.cqm6xx_app_updateOsc - 0x00000548 0x82 cqm6xx_app.o + 0x0000055e 0x78 cqm6xx_app.o .text.cqm6xx_app_statemachine - 0x000005ca 0xf0 cqm6xx_app.o - 0x000005ca cqm6xx_app_statemachine + 0x000005d6 0xe8 cqm6xx_app.o + 0x000005d6 cqm6xx_app_statemachine .text.programPLL_Parameters - 0x000006ba 0x3c cqm6xx_app.o - 0x000006ba programPLL_Parameters + 0x000006be 0x58 cqm6xx_app.o + 0x000006be programPLL_Parameters .text.uart_rx_event - 0x000006f6 0x18 cqm6xx_app.o - 0x000006f6 uart_rx_event + 0x00000716 0x18 cqm6xx_app.o + 0x00000716 uart_rx_event .text.cqm6xx_app_init - 0x0000070e 0xdc cqm6xx_app.o - 0x0000070e cqm6xx_app_init + 0x0000072e 0xf0 cqm6xx_app.o + 0x0000072e cqm6xx_app_init .text.startup.main - 0x000007ea 0x58 main.o - 0x000007ea main - .text.writeRegister.isra.1 - 0x00000842 0x88 si5351_driver/si5351_driver.o - .text.cm_setPllParamRaw - 0x000008ca 0xf6 si5351_driver/si5351_driver.o - 0x000008ca cm_setPllParamRaw + 0x0000081e 0x58 main.o + 0x0000081e main + .text.writeRegister + 0x00000876 0x78 si5351_driver/si5351_driver.o .text.cm_setOutputMultiSynthRaw - 0x000009c0 0x128 si5351_driver/si5351_driver.o - 0x000009c0 cm_setOutputMultiSynthRaw + 0x000008ee 0x10a si5351_driver/si5351_driver.o + 0x000008ee cm_setOutputMultiSynthRaw .text.cm_setOutputEnable - 0x00000ae8 0x5a si5351_driver/si5351_driver.o - 0x00000ae8 cm_setOutputEnable + 0x000009f8 0x46 si5351_driver/si5351_driver.o + 0x000009f8 cm_setOutputEnable .text.cm_setCLKControl - 0x00000b42 0xac si5351_driver/si5351_driver.o - 0x00000b42 cm_setCLKControl + 0x00000a3e 0x76 si5351_driver/si5351_driver.o + 0x00000a3e cm_setCLKControl .text.cm_setInputSource - 0x00000bee 0x4a si5351_driver/si5351_driver.o - 0x00000bee cm_setInputSource + 0x00000ab4 0x3a si5351_driver/si5351_driver.o + 0x00000ab4 cm_setInputSource + .text.cm_resetPLLs + 0x00000aee 0x42 si5351_driver/si5351_driver.o + 0x00000aee cm_resetPLLs + .text.cm_setPllParamRaw + 0x00000b30 0xb6 si5351_driver/si5351_driver.o + 0x00000b30 cm_setPllParamRaw .text.cm_si5351_init - 0x00000c38 0x12c si5351_driver/si5351_driver.o - 0x00000c38 cm_si5351_init + 0x00000be6 0x14e si5351_driver/si5351_driver.o + 0x00000be6 cm_si5351_init .text.avr-libc - 0x00000d64 0x242 c:/program files (x86)/atmel/studio/7.0/toolchain/avr8/avr8-gnu-toolchain/bin/../lib/gcc/avr/5.4.0/../../../../avr/lib/avrxmega3/short-calls\libc.a(malloc.o) - 0x00000d64 malloc - 0x00000e94 free + 0x00000d34 0x242 c:/program files (x86)/atmel/studio/7.0/toolchain/avr8/avr8-gnu-toolchain/bin/../lib/gcc/avr/5.4.0/../../../../avr/lib/avrxmega3/short-calls\libc.a(malloc.o) + 0x00000d34 malloc + 0x00000e64 free .text.avr-libc - 0x00000fa6 0x12 c:/program files (x86)/atmel/studio/7.0/toolchain/avr8/avr8-gnu-toolchain/bin/../lib/gcc/avr/5.4.0/../../../../avr/lib/avrxmega3/short-calls\libc.a(memcpy.o) - 0x00000fa6 memcpy + 0x00000f76 0x12 c:/program files (x86)/atmel/studio/7.0/toolchain/avr8/avr8-gnu-toolchain/bin/../lib/gcc/avr/5.4.0/../../../../avr/lib/avrxmega3/short-calls\libc.a(memcpy.o) + 0x00000f76 memcpy .text.avr-libc - 0x00000fb8 0x10 C:/Program Files (x86)/Atmel/Studio/7.0/Packs/atmel/ATtiny_DFP/1.10.348/gcc/dev/attiny402/avrxmega3/short-calls\libattiny402.a(eerd_byte.o) - 0x00000fb8 eeprom_read_byte - 0x00000fc0 eeprom_mapen + 0x00000f88 0x10 C:/Program Files (x86)/Atmel/Studio/7.0/Packs/atmel/ATtiny_DFP/1.10.348/gcc/dev/attiny402/avrxmega3/short-calls\libattiny402.a(eerd_byte.o) + 0x00000f88 eeprom_read_byte + 0x00000f90 eeprom_mapen .text.avr-libc - 0x00000fc8 0x28 C:/Program Files (x86)/Atmel/Studio/7.0/Packs/atmel/ATtiny_DFP/1.10.348/gcc/dev/attiny402/avrxmega3/short-calls\libattiny402.a(eewr_byte.o) - 0x00000fc8 eeprom_write_byte - 0x00000fca eeprom_write_r18 - 0x00000ff0 . = ALIGN (0x2) + 0x00000f98 0x28 C:/Program Files (x86)/Atmel/Studio/7.0/Packs/atmel/ATtiny_DFP/1.10.348/gcc/dev/attiny402/avrxmega3/short-calls\libattiny402.a(eewr_byte.o) + 0x00000f98 eeprom_write_byte + 0x00000f9a eeprom_write_r18 + 0x00000fc0 . = ALIGN (0x2) *(.fini9) - .fini9 0x00000ff0 0x0 c:/program files (x86)/atmel/studio/7.0/toolchain/avr8/avr8-gnu-toolchain/bin/../lib/gcc/avr/5.4.0/avrxmega3/short-calls\libgcc.a(_exit.o) - 0x00000ff0 _exit - 0x00000ff0 exit + .fini9 0x00000fc0 0x0 c:/program files (x86)/atmel/studio/7.0/toolchain/avr8/avr8-gnu-toolchain/bin/../lib/gcc/avr/5.4.0/avrxmega3/short-calls\libgcc.a(_exit.o) + 0x00000fc0 _exit + 0x00000fc0 exit *(.fini9) *(.fini8) *(.fini8) @@ -625,16 +627,16 @@ END GROUP *(.fini1) *(.fini1) *(.fini0) - .fini0 0x00000ff0 0x4 c:/program files (x86)/atmel/studio/7.0/toolchain/avr8/avr8-gnu-toolchain/bin/../lib/gcc/avr/5.4.0/avrxmega3/short-calls\libgcc.a(_exit.o) + .fini0 0x00000fc0 0x4 c:/program files (x86)/atmel/studio/7.0/toolchain/avr8/avr8-gnu-toolchain/bin/../lib/gcc/avr/5.4.0/avrxmega3/short-calls\libgcc.a(_exit.o) *(.fini0) - 0x00000ff4 _etext = . + 0x00000fc4 _etext = . .rodata *(.rodata) *(.rodata*) *(.gnu.linkonce.r*) -.data 0x00803f00 0x6 load address 0x00000ff4 +.data 0x00803f00 0x6 load address 0x00000fc4 0x00803f00 PROVIDE (__data_start, .) *(.data) .data 0x00803f00 0x6 c:/program files (x86)/atmel/studio/7.0/toolchain/avr8/avr8-gnu-toolchain/bin/../lib/gcc/avr/5.4.0/../../../../avr/lib/avrxmega3/short-calls\libc.a(malloc.o) @@ -647,7 +649,7 @@ END GROUP 0x00803f06 _edata = . 0x00803f06 PROVIDE (__data_end, .) -.bss 0x00803f06 0x61 +.bss 0x00803f06 0x65 0x00803f06 PROVIDE (__bss_start, .) *(.bss) *(.bss*) @@ -668,21 +670,21 @@ END GROUP 0x00803f44 0x2 cm_msg/cm_msg.o 0x00803f44 s_msg_cmplete_evt_fpt *(COMMON) - COMMON 0x00803f46 0x1d main.o + COMMON 0x00803f46 0x21 main.o 0x00803f46 storno_xtal_app - COMMON 0x00803f63 0x4 c:/program files (x86)/atmel/studio/7.0/toolchain/avr8/avr8-gnu-toolchain/bin/../lib/gcc/avr/5.4.0/../../../../avr/lib/avrxmega3/short-calls\libc.a(malloc.o) - 0x00803f63 __brkval - 0x00803f65 __flp - 0x00803f67 PROVIDE (__bss_end, .) - 0x00000ff4 __data_load_start = LOADADDR (.data) - 0x00000ffa __data_load_end = (__data_load_start + SIZEOF (.data)) + COMMON 0x00803f67 0x4 c:/program files (x86)/atmel/studio/7.0/toolchain/avr8/avr8-gnu-toolchain/bin/../lib/gcc/avr/5.4.0/../../../../avr/lib/avrxmega3/short-calls\libc.a(malloc.o) + 0x00803f67 __brkval + 0x00803f69 __flp + 0x00803f6b PROVIDE (__bss_end, .) + 0x00000fc4 __data_load_start = LOADADDR (.data) + 0x00000fca __data_load_end = (__data_load_start + SIZEOF (.data)) -.noinit 0x00803f67 0x0 +.noinit 0x00803f6b 0x0 [!provide] PROVIDE (__noinit_start, .) *(.noinit*) [!provide] PROVIDE (__noinit_end, .) - 0x00803f67 _end = . - 0x00803f67 PROVIDE (__heap_start, .) + 0x00803f6b _end = . + 0x00803f6b PROVIDE (__heap_start, .) .eeprom 0x00810000 0x0 *(.eeprom*) @@ -754,86 +756,86 @@ END GROUP .debug_sfnames *(.debug_sfnames) -.debug_aranges 0x00000000 0x248 +.debug_aranges 0x00000000 0x240 *(.debug_aranges) .debug_aranges 0x00000000 0x28 avr_eeprom_driver/avr_eeprom_driver.o .debug_aranges 0x00000028 0x30 avr_gpio_driver/avr_gpio.o .debug_aranges - 0x00000058 0x68 avr_i2c_driver/avr_i2c.o + 0x00000058 0x60 avr_i2c_driver/avr_i2c.o .debug_aranges - 0x000000c0 0x40 avr_uart_driver/avr_uart.o + 0x000000b8 0x40 avr_uart_driver/avr_uart.o .debug_aranges - 0x00000100 0x30 cm_msg/cm_msg.o + 0x000000f8 0x30 cm_msg/cm_msg.o .debug_aranges - 0x00000130 0x48 cqm6xx_app.o + 0x00000128 0x48 cqm6xx_app.o .debug_aranges - 0x00000178 0x20 main.o + 0x00000170 0x20 main.o .debug_aranges - 0x00000198 0x70 si5351_driver/si5351_driver.o + 0x00000190 0x70 si5351_driver/si5351_driver.o .debug_aranges - 0x00000208 0x20 C:/Program Files (x86)/Atmel/Studio/7.0/Packs/atmel/ATtiny_DFP/1.10.348/gcc/dev/attiny402/avrxmega3/short-calls\libattiny402.a(eerd_byte.o) + 0x00000200 0x20 C:/Program Files (x86)/Atmel/Studio/7.0/Packs/atmel/ATtiny_DFP/1.10.348/gcc/dev/attiny402/avrxmega3/short-calls\libattiny402.a(eerd_byte.o) .debug_aranges - 0x00000228 0x20 C:/Program Files (x86)/Atmel/Studio/7.0/Packs/atmel/ATtiny_DFP/1.10.348/gcc/dev/attiny402/avrxmega3/short-calls\libattiny402.a(eewr_byte.o) + 0x00000220 0x20 C:/Program Files (x86)/Atmel/Studio/7.0/Packs/atmel/ATtiny_DFP/1.10.348/gcc/dev/attiny402/avrxmega3/short-calls\libattiny402.a(eewr_byte.o) .debug_pubnames *(.debug_pubnames) -.debug_info 0x00000000 0x5ba3 +.debug_info 0x00000000 0x5484 *(.debug_info .gnu.linkonce.wi.*) .debug_info 0x00000000 0x11d6 C:/Program Files (x86)/Atmel/Studio/7.0/Packs/atmel/ATtiny_DFP/1.10.348/gcc/dev/attiny402/avrxmega3/short-calls/crtattiny402.o .debug_info 0x000011d6 0x183 avr_eeprom_driver/avr_eeprom_driver.o .debug_info 0x00001359 0x320 avr_gpio_driver/avr_gpio.o - .debug_info 0x00001679 0x881 avr_i2c_driver/avr_i2c.o - .debug_info 0x00001efa 0x4fc avr_uart_driver/avr_uart.o - .debug_info 0x000023f6 0x2b8 cm_msg/cm_msg.o - .debug_info 0x000026ae 0xc29 cqm6xx_app.o - .debug_info 0x000032d7 0xcdf main.o - .debug_info 0x00003fb6 0x1a93 si5351_driver/si5351_driver.o - .debug_info 0x00005a49 0xad C:/Program Files (x86)/Atmel/Studio/7.0/Packs/atmel/ATtiny_DFP/1.10.348/gcc/dev/attiny402/avrxmega3/short-calls\libattiny402.a(eerd_byte.o) - .debug_info 0x00005af6 0xad C:/Program Files (x86)/Atmel/Studio/7.0/Packs/atmel/ATtiny_DFP/1.10.348/gcc/dev/attiny402/avrxmega3/short-calls\libattiny402.a(eewr_byte.o) + .debug_info 0x00001679 0x736 avr_i2c_driver/avr_i2c.o + .debug_info 0x00001daf 0x4fc avr_uart_driver/avr_uart.o + .debug_info 0x000022ab 0x2b4 cm_msg/cm_msg.o + .debug_info 0x0000255f 0xbfb cqm6xx_app.o + .debug_info 0x0000315a 0xced main.o + .debug_info 0x00003e47 0x14e3 si5351_driver/si5351_driver.o + .debug_info 0x0000532a 0xad C:/Program Files (x86)/Atmel/Studio/7.0/Packs/atmel/ATtiny_DFP/1.10.348/gcc/dev/attiny402/avrxmega3/short-calls\libattiny402.a(eerd_byte.o) + .debug_info 0x000053d7 0xad C:/Program Files (x86)/Atmel/Studio/7.0/Packs/atmel/ATtiny_DFP/1.10.348/gcc/dev/attiny402/avrxmega3/short-calls\libattiny402.a(eewr_byte.o) -.debug_abbrev 0x00000000 0x1f08 +.debug_abbrev 0x00000000 0x1ebe *(.debug_abbrev) .debug_abbrev 0x00000000 0x10de C:/Program Files (x86)/Atmel/Studio/7.0/Packs/atmel/ATtiny_DFP/1.10.348/gcc/dev/attiny402/avrxmega3/short-calls/crtattiny402.o .debug_abbrev 0x000010de 0xac avr_eeprom_driver/avr_eeprom_driver.o .debug_abbrev 0x0000118a 0x107 avr_gpio_driver/avr_gpio.o - .debug_abbrev 0x00001291 0x256 avr_i2c_driver/avr_i2c.o - .debug_abbrev 0x000014e7 0x1e0 avr_uart_driver/avr_uart.o - .debug_abbrev 0x000016c7 0x15c cm_msg/cm_msg.o - .debug_abbrev 0x00001823 0x20d cqm6xx_app.o - .debug_abbrev 0x00001a30 0x1da main.o - .debug_abbrev 0x00001c0a 0x2d6 si5351_driver/si5351_driver.o - .debug_abbrev 0x00001ee0 0x14 C:/Program Files (x86)/Atmel/Studio/7.0/Packs/atmel/ATtiny_DFP/1.10.348/gcc/dev/attiny402/avrxmega3/short-calls\libattiny402.a(eerd_byte.o) - .debug_abbrev 0x00001ef4 0x14 C:/Program Files (x86)/Atmel/Studio/7.0/Packs/atmel/ATtiny_DFP/1.10.348/gcc/dev/attiny402/avrxmega3/short-calls\libattiny402.a(eewr_byte.o) + .debug_abbrev 0x00001291 0x23a avr_i2c_driver/avr_i2c.o + .debug_abbrev 0x000014cb 0x1e0 avr_uart_driver/avr_uart.o + .debug_abbrev 0x000016ab 0x15a cm_msg/cm_msg.o + .debug_abbrev 0x00001805 0x228 cqm6xx_app.o + .debug_abbrev 0x00001a2d 0x1da main.o + .debug_abbrev 0x00001c07 0x28f si5351_driver/si5351_driver.o + .debug_abbrev 0x00001e96 0x14 C:/Program Files (x86)/Atmel/Studio/7.0/Packs/atmel/ATtiny_DFP/1.10.348/gcc/dev/attiny402/avrxmega3/short-calls\libattiny402.a(eerd_byte.o) + .debug_abbrev 0x00001eaa 0x14 C:/Program Files (x86)/Atmel/Studio/7.0/Packs/atmel/ATtiny_DFP/1.10.348/gcc/dev/attiny402/avrxmega3/short-calls\libattiny402.a(eewr_byte.o) -.debug_line 0x00000000 0x1984 +.debug_line 0x00000000 0x1876 *(.debug_line .debug_line.* .debug_line_end) .debug_line 0x00000000 0x136 C:/Program Files (x86)/Atmel/Studio/7.0/Packs/atmel/ATtiny_DFP/1.10.348/gcc/dev/attiny402/avrxmega3/short-calls/crtattiny402.o - .debug_line 0x00000136 0x16e avr_eeprom_driver/avr_eeprom_driver.o - .debug_line 0x000002a4 0x1a8 avr_gpio_driver/avr_gpio.o - .debug_line 0x0000044c 0x42b avr_i2c_driver/avr_i2c.o - .debug_line 0x00000877 0x217 avr_uart_driver/avr_uart.o - .debug_line 0x00000a8e 0x1e6 cm_msg/cm_msg.o - .debug_line 0x00000c74 0x475 cqm6xx_app.o - .debug_line 0x000010e9 0x187 main.o - .debug_line 0x00001270 0x5d4 si5351_driver/si5351_driver.o - .debug_line 0x00001844 0x7c C:/Program Files (x86)/Atmel/Studio/7.0/Packs/atmel/ATtiny_DFP/1.10.348/gcc/dev/attiny402/avrxmega3/short-calls\libattiny402.a(eerd_byte.o) - .debug_line 0x000018c0 0xc4 C:/Program Files (x86)/Atmel/Studio/7.0/Packs/atmel/ATtiny_DFP/1.10.348/gcc/dev/attiny402/avrxmega3/short-calls\libattiny402.a(eewr_byte.o) + .debug_line 0x00000136 0x162 avr_eeprom_driver/avr_eeprom_driver.o + .debug_line 0x00000298 0x1a2 avr_gpio_driver/avr_gpio.o + .debug_line 0x0000043a 0x3ab avr_i2c_driver/avr_i2c.o + .debug_line 0x000007e5 0x21b avr_uart_driver/avr_uart.o + .debug_line 0x00000a00 0x1a8 cm_msg/cm_msg.o + .debug_line 0x00000ba8 0x479 cqm6xx_app.o + .debug_line 0x00001021 0x187 main.o + .debug_line 0x000011a8 0x58e si5351_driver/si5351_driver.o + .debug_line 0x00001736 0x7c C:/Program Files (x86)/Atmel/Studio/7.0/Packs/atmel/ATtiny_DFP/1.10.348/gcc/dev/attiny402/avrxmega3/short-calls\libattiny402.a(eerd_byte.o) + .debug_line 0x000017b2 0xc4 C:/Program Files (x86)/Atmel/Studio/7.0/Packs/atmel/ATtiny_DFP/1.10.348/gcc/dev/attiny402/avrxmega3/short-calls\libattiny402.a(eewr_byte.o) -.debug_frame 0x00000000 0x61c +.debug_frame 0x00000000 0x630 *(.debug_frame) .debug_frame 0x00000000 0x74 avr_eeprom_driver/avr_eeprom_driver.o .debug_frame 0x00000074 0x44 avr_gpio_driver/avr_gpio.o - .debug_frame 0x000000b8 0xbc avr_i2c_driver/avr_i2c.o - .debug_frame 0x00000174 0xbc avr_uart_driver/avr_uart.o - .debug_frame 0x00000230 0x44 cm_msg/cm_msg.o - .debug_frame 0x00000274 0xec cqm6xx_app.o - .debug_frame 0x00000360 0x34 main.o - .debug_frame 0x00000394 0x288 si5351_driver/si5351_driver.o + .debug_frame 0x000000b8 0x108 avr_i2c_driver/avr_i2c.o + .debug_frame 0x000001c0 0xbc avr_uart_driver/avr_uart.o + .debug_frame 0x0000027c 0x44 cm_msg/cm_msg.o + .debug_frame 0x000002c0 0xec cqm6xx_app.o + .debug_frame 0x000003ac 0x34 main.o + .debug_frame 0x000003e0 0x250 si5351_driver/si5351_driver.o -.debug_str 0x00000000 0x22c6 +.debug_str 0x00000000 0x22f5 *(.debug_str) .debug_str 0x00000000 0x7a9 C:/Program Files (x86)/Atmel/Studio/7.0/Packs/atmel/ATtiny_DFP/1.10.348/gcc/dev/attiny402/avrxmega3/short-calls/crtattiny402.o .debug_str 0x000007a9 0x1d9 avr_eeprom_driver/avr_eeprom_driver.o @@ -846,23 +848,23 @@ END GROUP 0x4f8 (size before relaxing) .debug_str 0x0000101e 0x23a cm_msg/cm_msg.o 0x3fe (size before relaxing) - .debug_str 0x00001258 0x3da cqm6xx_app.o - 0x63d (size before relaxing) - .debug_str 0x00001632 0x8ff main.o - 0xc58 (size before relaxing) - .debug_str 0x00001f31 0x395 si5351_driver/si5351_driver.o + .debug_str 0x00001258 0x412 cqm6xx_app.o + 0x675 (size before relaxing) + .debug_str 0x0000166a 0x8ff main.o + 0xc61 (size before relaxing) + .debug_str 0x00001f69 0x38c si5351_driver/si5351_driver.o 0xff9 (size before relaxing) -.debug_loc 0x00000000 0x2855 +.debug_loc 0x00000000 0x23e8 *(.debug_loc) - .debug_loc 0x00000000 0x26b avr_eeprom_driver/avr_eeprom_driver.o - .debug_loc 0x0000026b 0x7c avr_gpio_driver/avr_gpio.o - .debug_loc 0x000002e7 0x6e6 avr_i2c_driver/avr_i2c.o - .debug_loc 0x000009cd 0x13b avr_uart_driver/avr_uart.o - .debug_loc 0x00000b08 0x158 cm_msg/cm_msg.o - .debug_loc 0x00000c60 0x8ae cqm6xx_app.o - .debug_loc 0x0000150e 0x48 main.o - .debug_loc 0x00001556 0x12ff si5351_driver/si5351_driver.o + .debug_loc 0x00000000 0x20d avr_eeprom_driver/avr_eeprom_driver.o + .debug_loc 0x0000020d 0x7c avr_gpio_driver/avr_gpio.o + .debug_loc 0x00000289 0x6a7 avr_i2c_driver/avr_i2c.o + .debug_loc 0x00000930 0x139 avr_uart_driver/avr_uart.o + .debug_loc 0x00000a69 0x131 cm_msg/cm_msg.o + .debug_loc 0x00000b9a 0x86a cqm6xx_app.o + .debug_loc 0x00001404 0x48 main.o + .debug_loc 0x0000144c 0xf9c si5351_driver/si5351_driver.o .debug_macinfo *(.debug_macinfo) @@ -882,16 +884,16 @@ END GROUP .debug_pubtypes *(.debug_pubtypes) -.debug_ranges 0x00000000 0x230 +.debug_ranges 0x00000000 0x1c8 *(.debug_ranges) .debug_ranges 0x00000000 0x18 avr_eeprom_driver/avr_eeprom_driver.o .debug_ranges 0x00000018 0x20 avr_gpio_driver/avr_gpio.o - .debug_ranges 0x00000038 0xd0 avr_i2c_driver/avr_i2c.o - .debug_ranges 0x00000108 0x30 avr_uart_driver/avr_uart.o - .debug_ranges 0x00000138 0x20 cm_msg/cm_msg.o - .debug_ranges 0x00000158 0x50 cqm6xx_app.o - .debug_ranges 0x000001a8 0x10 main.o - .debug_ranges 0x000001b8 0x78 si5351_driver/si5351_driver.o + .debug_ranges 0x00000038 0x68 avr_i2c_driver/avr_i2c.o + .debug_ranges 0x000000a0 0x30 avr_uart_driver/avr_uart.o + .debug_ranges 0x000000d0 0x20 cm_msg/cm_msg.o + .debug_ranges 0x000000f0 0x50 cqm6xx_app.o + .debug_ranges 0x00000140 0x10 main.o + .debug_ranges 0x00000150 0x78 si5351_driver/si5351_driver.o .debug_macro *(.debug_macro) diff --git a/storno_cqp6xx_digital_xtal/Debug/storno_cqp6xx_digital_xtal.srec b/storno_cqp6xx_digital_xtal/Debug/storno_cqp6xx_digital_xtal.srec index 6e082e5..5c38bcb 100644 --- a/storno_cqp6xx_digital_xtal/Debug/storno_cqp6xx_digital_xtal.srec +++ b/storno_cqp6xx_digital_xtal/Debug/storno_cqp6xx_digital_xtal.srec @@ -1,259 +1,256 @@ S022000073746F726E6F5F6371703678785F6469676974616C5F7874616C2E737265633F S113000019C033C032C031C030C02FC02EC02DC083 S11300102CC02BC02AC029C028C027C026C025C098 -S113002024C023C022C021C020C01FC04FC11DC096 +S113002024C023C022C021C020C01FC069C11DC07C S11300301CC01BC011241FBECFEFCDBFDFE3DEBF4A -S11300402FE3A6E0BFE301C01D92A736B207E1F794 -S11300501FE3A0E0BFE3E4EFFFE002C005900D92D0 -S1130060A630B107D9F7C1D3C3C7CACFEF92FF9265 -S11300700F931F93CF93DF93442391F0EB018C01F3 -S11300804150E42EF12C8FEFE81AF80AE60EF71E21 -S11300906991C80199D70F5F1F4FCE15DF05C1F7CE -S11300A0DF91CF911F910F91FF90EF900895EF9200 -S11300B0FF920F931F93CF93DF93442391F08C010E -S11300C0EB014150E42EF12C8FEFE81AF80AE60E0A -S11300D0F71EC80171D789930F5F1F4FCE15DF0537 -S11300E0C1F7DF91CF911F910F91FF90EF90089589 -S11300F081110BC08091080490E002C0959587950A -S11301006A95E2F781709927089580E090E0089558 -S113011020911508207CE1F32091150824FD1FC0CF -S1130120FC018191809318088091150886FFFCCF0B -S11301308091150884FD24C0809115088C70A9F461 -S11301408091150884FD05C0415051096109710968 -S113015041F783E08093140880E090E0089583E001 -S1130160809314088FEF9FEF08958091140888609E -S11301708093140881E08093150881E090E008954D -S113018083E08093140881E090E00895A62F972FD0 -S1130190211531054105510569F1816080931708E6 -S11301A080911508807CE1F38091150884FD1CC0C2 -S11301B0BA01A9014150510961097109EA2FF92FC6 -S11301C092E080911508807CE1F380911808819376 -S11301D0411551056105710581F090931408415052 -S11301E0510961097109EDCF83E0809314088FEF01 -S11301F09FEF089581E090E0089584E080931408CF -S113020083E08093140880E090E00895E0E0F4E057 -S113021080818B7F80838081877F8083A0E1B8E0A9 -S11302208BE016968C93169781E013968C93139714 -S113023015968C9388E0828B838B80E090E0089500 -S1130240FC01842F880F809317089091150896FF5E -S1130250FCCF8091150884FF06C083E080931408C6 -S11302608EEF9FEF089583E0809314086083718379 -S113027050E0440F551F428380E090E008950F93AF -S1130280009709F1FB01DC010023B1F0013021F0FA -S113029080E090E00F910895211531054105510545 -S11302A0B9F312968C9180931708BA01A901CF0172 -S11302B02FDF80E090E0EECF12968C9167DF80E034 -S11302C090E00F9108958FEF9FEFE4CF1F920F926C -S11302D00FB60F9211242F933F934F935F936F9315 -S11302E07F938F939F93AF93BF93EF93FF93E0918B -S11302F0063FF091073F309719F080910008099567 -S1130300FF91EF91BF91AF919F918F917F916F91E9 -S11303105F914F913F912F910F900FBE0F901F90BF -S11303201895CF93DF931F92CDB7DEB7AC01F89445 -S11303302CE635E0209308083093090893E0909365 -S1130340070890EC9093060861157105D1F080E8D8 -S1130350809305086093063F7093073F80910408DB -S113036087FF04C0809100088983898180E4809399 -S1130370010480E88093020478940F90DF91CF9178 -S11303800895452B21F7EACF9091413F923041F1F6 -S113039060F49923E1F0913089F48A3529F180E001 -S11303A08093413F81E090E00895933061F0943070 -S11303B029F41092413F80E090E008951092413F6B -S11303C081E090E00895833451F784E0E9CF91E02F -S11303D08F3409F090E09093413F81E090E00895DC -S11303E08133E9F683E0DCCF82E0DACF9091403FBD -S11303F0933009F44BC068F4992309F440C0913058 -S113040029F48093083F83E08093403F80E090E0AC -S11304100895943019F19530C9F790913F3FE92F31 -S1130420F0E0E85FF04C838381E0890F80933F3FE5 -S11304309091083F891750F3E091443FF091453F74 -S11304406BE07FE38091423F9091433F0995109286 -S1130450403F10923F3F80E090E008952091093F93 -S113046030910A3FA901482BCA018093093F909318 -S11304700A3F85E08093403F80E090E0089584DF68 -S1130480892B39F781E08093403FE3CF1092093FF5 -S113049080930A3F84E08093403F80E090E0089599 -S11304A0009759F06115710541F08093423F909394 -S11304B0433F6093443F7093453F08959F92AF92AA -S11304C0BF92CF92DF92EF92FF920F931F93CF933D -S11304D0DF93EC01942EAD84BE84CF84D888E98464 -S11304E0FA840B851C852D813E814F8158858A8134 -S11304F09B81EBD181E493E00197F1F70000A98C93 -S1130500BA8CCB8CDC8CED88FE880F89188D2989F8 -S11305103A894B895C89692D8A819B8151D281E416 -S113052093E00197F1F7000040E0692D8A819B81F7 -S1130530DF91CF911F910F91FF90EF90DF90CF90BB -S1130540BF90AF909F90FDC2CF93DF93FC01828157 -S11305509381892B09F13097F9F081819081891772 -S1130560D9F0EF018130D9F08230B1F481E493E025 -S11305700197F1F7000041E060E082819381B4D2F9 -S113058081E493E00197F1F7000040E061E08A81A3 -S11305909B81DF91CF91A8C2DF91CF91089581E42F -S11305A093E00197F1F7000040E060E082819381DD -S11305B09BD281E493E00197F1F7000041E061E010 -S11305C08A819B81DF91CF918FC20F931F93CF9329 -S11305D0DF93FC0122813381232BA9F0009799F04A -S11305E0EC018181813009F45BC090F0823059F4D0 -S11305F0CE01AADF8981888363E080E079DD892BDD -S113060011F481E08983DF91CF911F910F910895B7 -S113061018828E010C5F1F4F49E1B80180E090E021 -S113062046DD81E493E00197F1F7000060E08A8100 -S11306309B81DDD2E1E4F3E03197F1F7000040E083 -S113064060E0CE013BDF81E493E00197F1F7000025 -S113065049E1B80180E290E02ADDE1E4F3E031977A -S1130660F1F7000041E061E0CE0128DF42E061E003 -S1130670CE0124DF40E062E08A819B8162D281E482 -S113068093E00197F1F7000040E062E08A819B81EA -S11306902BD281E08983DF91CF911F910F9108952F -S11306A0CE0152DF8981888363E080E021DD0197F8 -S11306B009F0A9CF82E08983A6CFCF93DF93EC0121 -S11306C08C81882369F0813039F449E1BE016C5F83 -S11306D07F4F80E290E0CADC1982DF91CF910895C8 -S11306E049E1BE016C5F7F4F80E090E0BFDC19827E -S11306F0DF91CF910895DC01149629E1FB0101906B -S11307000D922A95E1F7D9DF80E090E008950F93E8 -S11307101F93CF93DF936115710511F1009701F1D8 -S1130720EC01198218826A837B836BE773E0B8DE7D -S113073066EF71E0CE01F5DD8E010C5F1F4F49E1DC -S1130740B80180E090E0B3DCF8019E01235E3F4FE6 -S113075003C0E217F30749F0919191509E3FC8F707 -S1130760DF91CF911F910F9108951C8283E49DE046 -S1130770A0E0B0E08D839E83AF83B88786EF9CE2D0 -S1130780A0E0B0E089879A87AB87BC878BE598E4C3 -S1130790A0E1B0E08D879E87AF87B88B82E190E0BF -S11307A0A0E0B0E0898B9A8BAB8BBC8B1D8A1E8A30 -S11307B01F8A188E81E090E0A0E0B0E0898F9A8FC4 -S11307C0AB8FBC8F49E1B80180E090E04FDC81E45D -S11307D093E00197F1F7000049E1B80180E290E06D -S11307E0DF91CF911F910F9141CCCF93DF93CDB780 -S11307F0DEB7CB55D109CDBFDEBF80E090E006DD8A -S113080040E660E070E0CE01875A9F4F19DD4FE368 -S113081051E0BE01675A7F4FCE0101960DD2BE0151 -S11308206F5F7F4F86E49FE372DF86E49FE3CDDE54 -S11308302AE684E091E0215080409040E1F700C036 -S1130840F4CF4F925F926F927F929F92AF92BF923A -S1130850CF92DF92EF92FF920F931F93CF93DF9388 -S1130860EC016B01942E590127013801C70101964F -S113087079D2F82E192FDC019D92CD01A201B50188 -S113088092D3A30192012F5F3F4F4F4F5F4FD60189 -S1130890ED91FC9101E06F2D712F8881998109956B -S11308A08F2D912FF7D280E090E0DF91CF911F91AF -S11308B00F91FF90EF90DF90CF90BF90AF909F90FB -S11308C07F906F905F904F900895AF92BF92CF92B8 -S11308D0DF92EF92FF920F931F93CF93DF93EC017C -S11308E0662309F448C0613009F16C0182E0C80E46 -S11308F0D11C9E01295A3F4FF90180818062806892 -S11309008083E12CF12C8701E39441EBB601CE0105 -S113091098DF80E090E0DF91CF911F910F91FF90DD -S1130920EF90DF90CF90BF90AF90089542708E8D7E -S11309308C7F482B4E8F3F8F28A3D801C70188276F -S11309409927AF70BB27FAA2EBA28A2F8F7089A3D5 -S1130950BC8EAD8E6E01F2E0CF0ED11C18E0E12EFC -S1130960F12C00E010E09E01245E3F4F42E2B6010C -S1130970CE0167DFBECF42708E898C7F482B4E8BB1 -S11309803F8B288FD801C70188279927AF70BB27D1 -S1130990FA8EEB8E8A2F8F70898FBC8AAD8A6E0196 -S11309A0E2E0CE0ED11C18E0E12EF12C00E010E0C4 -S11309B09E012C5E3F4F4AE1B601CE0142DF99CF42 -S11309C0AF92BF92CF92DF92EF92FF920F931F9359 -S11309D0FC01613009F45FC0A8F1623041F5437055 -S11309E056A9507837AB20AFF2AEE3AED601C501BD -S11309F02CE0B695A795979587952A95D1F783709E -S1130A008295807F0370082B01AFB4AAA5AA452B59 -S1130A1046AB9F012C5C3F4FBF016E5F7F4F18E0D8 -S1130A20E12EF12C00E010E04AE3CF010ADF80E080 -S1130A3090E01F910F91FF90EF90DF90CF90BF90C7 -S1130A40AF900895437056A1507837A320A7F2A61B -S1130A50E3A6D601C5011CE0B695A79597958795A1 -S1130A601A95D1F783708295807F0370802B81A7BC -S1130A70B4A2A5A2452B46A39F012C5D3F4FBF0105 -S1130A806E5F7F4F18E0E12EF12C00E010E04AE2A7 -S1130A90CF01D7DECCCF437056A5507837A720AB13 -S1130AA0F2AAE3AAD601C5016CE0B695A79597957D -S1130AB087956A95D1F783708295807F0370802B28 -S1130AC081ABB4A6A5A6452B46A79F01245D3F4F45 -S1130AD0BF016E5F7F4F18E0E12EF12C00E010E0C3 -S1130AE042E3CF01AEDEA3CFEF92FF920F931F93A9 -S1130AF0613009F1D0F0623029F4FC01278140FB18 -S1130B0022F927839C01295F3F4FBC016E5F7F4F11 -S1130B10E12CF12C8701E39443E093DE80E090E044 -S1130B201F910F91FF90EF900895FC01278140FBE6 -S1130B3020F92783E7CFFC01278140FB21F9278394 -S1130B40E1CFEF92FF920F931F936130B9F1E0F080 -S1130B50623099F4FC01248540FB27F9237923664C -S1130B6024879C01245F3F4FBC016E5F7F4FE12CC3 -S1130B70F12C8701E39442E164DE80E090E01F9170 -S1130B800F91FF90EF900895FC01228540FB27F917 -S1130B9020792F6422879C01265F3F4FBC016E5F42 -S1130BA07F4FE12CF12C8701E39440E14ADE80E0A1 -S1130BB090E01F910F91FF90EF900895FC01238521 -S1130BC040FB27F92F6623879C01255F3F4FBC011B -S1130BD06E5F7F4FE12CF12C8701E39441E131DE1C -S1130BE080E090E01F910F91FF90EF900895EF92B5 -S1130BF0FF920F931F936623C9F0613021F4FC0127 -S1130C002185246021879C01275F3F4FBC016E5FD3 -S1130C107F4FE12CF12C8701E39440EF12DE80E05A -S1130C2090E01F910F91FF90EF900895FC012185B2 -S1130C302B7F277F2187E7CFAF92BF92CF92DF929E -S1130C40EF92FF920F931F93CF93DF931F92CDB731 -S1130C50DEB7009709F483C06115710509F47FC0FC -S1130C604115510509F47BC06C01DC016D937C9343 -S1130C70119712964D935C931397FC01349684E577 -S1130C80DF011D928A95E9F78FEF89835601B2E05F -S1130C90AB0EB11CE12CF12C8701E3949E012F5F74 -S1130CA03F4F43E0B501C601CCDD80E889839E0156 -S1130CB02F5F3F4F40E1B501C601C3DD9E012F5FA9 -S1130CC03F4F41E1B501C601BCDD9E012F5F3F4F9F -S1130CD042E1B501C601B5DD9E012F5F3F4F43E1FF -S1130CE0B501C601AEDD9E012F5F3F4F44E1B50162 -S1130CF0C601A7DD9E012F5F3F4F45E1B501C60147 -S1130D00A0DD9E012F5F3F4F46E1B501C60199DD8D -S1130D109E012F5F3F4F47E1B501C60192DD80EC94 -S1130D2089839E012F5F3F4F47EBB501C60189DDE3 -S1130D3080E489839E012F5F3F4F4BEBB501C601D1 -S1130D4080DD80E090E00F90DF91CF911F910F91B3 -S1130D50FF90EF90DF90CF90BF90AF9008958FEF0A -S1130D609FEFF1CF0F931F93CF93DF9382309105C1 -S1130D7010F482E090E0E091653FF091663F20E05E -S1130D8030E0A0E0B0E0309719F140815181028158 -S1130D90138148175907C8F08417950769F4109709 -S1130DA031F012960C93129713961C9327C000935C -S1130DB0653F1093663F22C02115310519F0421793 -S1130DC0530718F49A01BD01EF01DF01F801DBCFED -S1130DD021153105F9F0281B390B2430310580F435 -S1130DE08A819B816115710521F0FB0182839383C4 -S1130DF004C08093653F9093663FFE01329644C0E1 -S1130E00FE01E20FF31F819391932250310928834D -S1130E1039833AC02091633F3091643F232B41F4DE -S1130E202091023F3091033F2093633F3093643F0E -S1130E302091003F3091013F2115310541F42DB738 -S1130E403EB74091043F5091053F241B350BE09180 -S1130E50633FF091643FE217F307A0F42E1B3F0BAE -S1130E602817390778F0AC014E5F5F4F2417350718 -S1130E7048F04E0F5F1F4093633F5093643F81934C -S1130E80919302C0E0E0F0E0CF01DF91CF911F9198 -S1130E900F910895CF93DF93009709F481C0FC016B -S1130EA0329712821382A091653FB091663F1097EA -S1130EB081F420813181820F931F2091633F30910F -S1130EC0643F2817390751F5E093633FF093643F7B -S1130ED067C0ED0120E030E0CE17DF0740F44A811F -S1130EE05B819E0141155105F1F0EA01F5CFC28302 -S1130EF0D38340815181840F951FC817D90759F4B2 -S1130F0088819981840F951F0296808391838A81B9 -S1130F109B81828393832115310529F4E093653FF6 -S1130F20F093663F3DC0E901EA83FB8349915991FF -S1130F30C40FD51FEC17FD0761F480819181840FE4 -S1130F40951F0296E90188839983828193818A831C -S1130F509B83E0E0F0E012968D919C9113970097AB -S1130F6019F0FD01DC01F7CF8D919C9111979D0142 -S1130F702E5F3F4F820F931F2091633F3091643F58 -S1130F802817390769F4309729F41092653F1092B5 -S1130F90663F02C012821382A093633FB093643F02 -S1130FA0DF91CF910895FB01DC0102C001900D9205 -S1130FB041505040D8F7089503D08081992708956F -S1130FC0FC01E050FC4E0895262FAF93BF93E0E060 -S1130FD0F0E1328131FDFDCFDC01A050BC4E2C93F9 -S1130FE02DE924BF23E020830196BF91AF9108959A -S1070FF0F894FFCF9F -S1090FF40000673F20002D +S11300402FE3A6E0BFE301C01D92AB36B207E1F790 +S11300501FE3A0E0BFE3E4ECFFE002C005900D92D3 +S1130060A630B107D9F7DBD3ABC7CACFEF92FF9263 +S11300700F931F93CF93DF93EB018C017B01E40E6D +S1130080F11CCE15DF0531F06991C80185D70F5FEA +S11300901F4FF7CFDF91CF911F910F91FF90EF90FA +S11300A00895EF92FF920F931F93CF93DF938C01E8 +S11300B0EB017B01E40EF11CCE15DF0531F0C80124 +S11300C063D789930F5F1F4FF7CFDF91CF911F91B4 +S11300D00F91FF90EF90089581110BC08091080457 +S11300E090E002C0959587956A95E2F7817099270B +S11300F0089580E090E00895809317088091150892 +S1130100807CE1F390911508892F807194FF04C0DD +S113011083E08093140881E00895CF92DF92EF92F8 +S1130120FF92CF93DF93D62FC72F69017A01232B38 +S1130130242B252B19F48FEF9FEF32C0DDDF8111C3 +S1130140FACFED2FFC2F8191809318088091150828 +S113015086FFFCCF8091150884FF04C083E0809360 +S113016014080CC0809115088C7059F08091140803 +S113017088608093140881E08093150881E090E002 +S11301800FC08091150884FD06C081E0C81AD1080B +S1130190E108F108C1F683E08093140880E090E060 +S11301A0DF91CF91FF90EF90DF90CF900895CF92A1 +S11301B0DF92EF92FF92CF93DF93D62FC72F69017F +S11301C07A01232B242B252B61F1816095DF81118A +S11301D02BC0ED2FFC2F92E024E0B701A601415083 +S11301E0510961097109CD28CE28CF28A1F0809149 +S11301F01508807CE1F3809118088193411551051D +S11302006105710519F42093140802C09093140831 +S11302106A017B01E2CF83E08093140880E090E0E0 +S113022005C081E090E002C08FEF9FEFDF91CF9196 +S1130230FF90EF90DF90CF900895809317088091FE +S1130240150886FFFCCF8091150884FF06C083E063 +S11302508093140881E090E0089583E0809314086B +S113026080E090E00895E0E0F4E080818B7F80837B +S11302708081877F8083A0E1B8E08BE016968C9321 +S1130280169781E013968C93139715968C9388E0B8 +S1130290828B838B80E090E00895EF92FF920F931E +S11302A01F93CF938C017B01C42F842F880FC5DF4C +S11302B0009749F4F801E082F1824C2F50E0440F9A +S11302C0551F428302C08EEF9FEFCF911F910F9174 +S11302D0FF90EF9008950F93009759F0FC010023CD +S11302E029F0013049F4828118DF06C082815FDF82 +S11302F003C08FEF9FEF02C080E090E00F9108955C +S11303001F920F920FB60F9211242F933F934F9386 +S11303105F936F937F938F939F93AF93BF93EF9369 +S1130320FF93E091063FF091073F309719F08091D9 +S113033000080995FF91EF91BF91AF919F918F9123 +S11303407F916F915F914F913F912F910F900FBECD +S11303500F901F901895CF93DF931F92CDB7DEB700 +S1130360F8942CE635E0209308083093090823E03C +S11303702093070820EC209306086115710511F4F9 +S1130380892B39F080E8809305086093063F7093C9 +S1130390073F8091040887FF04C080910008898387 +S11303A0898180E48093010480E880930204789436 +S11303B00F90DF91CF9108959091413F9230D1F009 +S11303C028F4992361F0913089F020C09330B1F082 +S11303D09430E1F41092413F80E090E0089591E080 +S11303E08F3409F090E09093413F12C08A3541F474 +S11303F082E009C0813321F483E005C0833411F025 +S113040080E001C084E08093413F02C01092413FEC +S113041081E090E008959091403F9330B1F048F42A +S1130420992361F0913009F043C08093083F83E041 +S11304301EC0943081F09530E9F03AC0BDDF892BBD +S1130440A9F581E08093403F31C01092093F809329 +S11304500A3F84E00CC02091093F30910A3FA90172 +S1130460482BCA018093093F90930A3F85E080930B +S1130470403F1EC090913F3FE92FF0E0E85FF04C11 +S1130480838381E0890F80933F3F9091083F8917D0 +S113049078F0E091443FF091453F6BE07FE3809139 +S11304A0423F9091433F09951092403F10923F3F45 +S11304B080E090E00895009759F06115710541F0CE +S11304C08093423F9093433F6093443F7093453FF2 +S11304D008959F92AF92BF92CF92DF92EF92FF92D4 +S11304E00F931F93CF93DF93EC01942EAD84BE84BE +S11304F0CF84D888E984FA840B851C852D813E81BC +S11305004F8158858A819B8113D381E493E00197BD +S1130510F1F70000A98CBA8CCB8CDC8CED88FE88BA +S11305200F89188D29893A894B895C89692D8A81BB +S11305309B81DDD181E493E00197F1F7000040E075 +S1130540692D8A819B81DF91CF911F910F91FF903B +S1130550EF90DF90CF90BF90AF909F9070C2CF93F9 +S1130560DF93FC0182819381892B91F1309781F192 +S113057081819081891761F1EF01813099F0823096 +S113058039F581E493E00197F1F7000041E060E080 +S11305908281938131D281E493E00197F1F70000E5 +S11305A040E010C081E493E00197F1F7000040E0DF +S11305B060E08281938120D281E493E00197F1F796 +S11305C0000041E061E08A819B81DF91CF9114C2F8 +S11305D0DF91CF9108950F931F93CF93DF93FC0185 +S11305E022813381232B09F465C0009709F462C08A +S11305F0EC018181813061F4CE01B1DF898188838E +S113060063E080E069DD019709F054C082E045C0F1 +S1130610813008F044C018828E010C5F1F4F4DE1F9 +S1130620B80180E090E03DDD81E493E00197F1F7CB +S1130630000060E08A819B813DD2E1E4F3E03197E0 +S1130640F1F7000040E060E0CE0143DF81E493E095 +S11306500197F1F700004DE1B80180E290E021DD5F +S1130660E1E4F3E03197F1F7000041E061E0CE010D +S113067030DF42E061E0CE012CDF40E062E08A81BD +S11306809B81DDD181E493E00197F1F7000040E024 +S113069062E08A819B81B0D181E089830BC0823082 +S11306A049F4CE015CDF8981888363E080E014DD56 +S11306B0892B91F3DF91CF911F910F910895CF93DF +S11306C0DF93EC018C81813099F058F08E3FC1F0BA +S11306D08F3FE9F44DE1BE016C5F7F4F80E290E013 +S11306E015C04DE1BE016C5F7F4F80E090E006C015 +S11306F04DE1BE016C5F7F4F80E290E0B7DC07C044 +S11307004DE1BE016C5F7F4F80E090E0CADC19824E +S1130710DF91CF910895DC0114962DE1FB01019046 +S11307200D922A95E1F7CBDF80E090E008950F93D6 +S11307301F93CF93DF936115710509F46BC0009784 +S113074009F468C0EC01198218826A837B836BE820 +S113075073E0B1DE6BE072E0CE01FDDD8E010C5F73 +S11307601F4F4DE1B80180E090E09BDCF8019E0151 +S11307702F5D3F4F819181508E3F08F44BC0E217AB +S1130780F307C1F71C8283E49DE0A0E0B0E08D8311 +S11307909E83AF83B88786EF9CE2A0E0B0E08987B0 +S11307A09A87AB87BC878BE598E4A0E1B0E08D879E +S11307B09E87AF87B88B82E190E0A0E0B0E0898BA0 +S11307C09A8BAB8BBC8B1D8A1E8A1F8A188E81E084 +S11307D090E0A0E0B0E0898F9A8FAB8FBC8F80E46B +S11307E098E7ADE7B1E08D8F9E8FAF8FB8A34DE151 +S11307F0B80180E090E03ADC81E493E00197F1F7FE +S113080000004DE1B80180E290E0DF91CF911F91AB +S11308100F912CCCDF91CF911F910F910895CF931D +S1130820DF93CDB7DEB7CB55D109CDBFDEBF80E0B6 +S113083090E019DD40E660E070E0CE01875A9F4FFA +S11308402CDD4BE651E0BE01675A7F4FCE01019685 +S1130850CAD1BE016F5F7F4F86E49FE368DF86E401 +S11308609FE3B9DE2AE684E091E021508040904085 +S1130870E1F700C0F4CF8F929F92AF92BF92CF92D4 +S1130880DF92EF92FF920F931F93CF93DF93EC01CC +S1130890862E5A0168017901C80101964BD2982E1F +S11308A0192FFC018192CF01A601B50164D3A701E0 +S11308B096012F5F3F4F4F4F5F4FEA81FB8101E06D +S11308C0692D712F888199810995892D912FCAD21B +S11308D080E090E0DF91CF911F910F91FF90EF9016 +S11308E0DF90CF90BF90AF909F908F900895AF927C +S11308F0BF92CF92DF92EF92FF920F931F93FC016E +S1130900613009F44AC030F1623009F06AC04370C2 +S113091056A9507837AB20AFF2AEE3AED601C5018D +S11309202CE0B695A795979587952A95D1F783706E +S11309308295807F0370802B81AFB4AAA5AA452B32 +S113094046ABAF014C5C5F4F08E010E020E030E0C4 +S11309506AE345C0437056A1507837A320A7F2A696 +S1130960E3A6D601C5016CE0B695A7959795879542 +S11309706A95D1F783708295807F0370802B81A75D +S1130980B4A2A5A2452B46A3AF014C5D5F4F08E07E +S113099010E020E030E06AE222C0437056A55078AF +S11309A037A720ABF2AAE3AAD601C5013CE0B6956D +S11309B0A795979587953A95D1F783708295807F0F +S11309C00370802B81ABB4A6A5A6452B46A7AF0127 +S11309D0445D5F4F08E010E020E030E062E3CF01C7 +S11309E04ADF80E090E01F910F91FF90EF90DF903D +S11309F0CF90BF90AF9008950F931F93FC01613087 +S1130A0059F030F0623061F4878140FB82F907C00D +S1130A10878140FB80F903C0878140FB81F987838C +S1130A20AF01495F5F4F01E010E020E030E063E098 +S1130A30CF0121DF80E090E01F910F9108950F9383 +S1130A401F93613019F190F0623079F5FC0124852F +S1130A5040FB27F9237923662487AC01445F5F4F69 +S1130A6001E010E020E030E062E11EC0FC012285DC +S1130A7040FB27F920792F642287AC01465F5F4F42 +S1130A8001E010E020E030E060E10EC0FC012385CD +S1130A9040FB27F92F662387AC01455F5F4F01E0D8 +S1130AA010E020E030E061E1E6DE80E090E01F91BC +S1130AB00F9108950F931F93662331F0613049F429 +S1130AC0FC012185246004C0FC0121852B7F277F44 +S1130AD02187AC01475F5F4F01E010E020E030E088 +S1130AE060EFC9DE80E090E01F910F9108950F93AD +S1130AF01F9331E0611101C030E0FC01E95AFF4F5E +S1130B00208130FB25F9208331E0411101C030E020 +S1130B10208130FB27F9208301E010E020E030E061 +S1130B20AF0161EBA8DE80E090E01F910F91089582 +S1130B30AF92BF92CF92DF92EF92FF920F931F93E7 +S1130B40CF93DF93EC016623F9F06130D9F542705D +S1130B508E8D8C7F482B4E8F3F8F28A3D801C701E1 +S1130B6088279927AF70BB27FAA2EBA28A2F8F7030 +S1130B7089A3BC8EAD8E08E010E020E030E0AE0129 +S1130B80445E5F4F62E21CC042708E898C7F482BAA +S1130B904E8B3F8B288FD801C70188279927AF70C8 +S1130BA0BB27FA8EEB8E8A2F8F70898FBC8AAD8A11 +S1130BB008E010E020E030E0AE014C5E5F4F6AE1F7 +S1130BC0CE0159DE41E061E0CE0191DF80E090E0AA +S1130BD0DF91CF911F910F91FF90EF90DF90CF9015 +S1130BE0BF90AF900895EF92FF920F931F93CF930E +S1130BF0DF931F92CDB7DEB7009709F491C061155A +S1130C00710509F48DC04115510509F489C07C01B1 +S1130C10DC016D937C93119712964D935C9313971B +S1130C20FC01349684E5DF011D928A95E9F78FEF84 +S1130C30898301E010E020E030E0AE014F5F5F4FB8 +S1130C4063E0C70118DE80E8898301E010E020E05A +S1130C5030E0AE014F5F5F4F60E1C7010CDE01E0A1 +S1130C6010E020E030E0AE014F5F5F4F61E1C7016B +S1130C7002DE01E010E020E030E0AE014F5F5F4FA4 +S1130C8062E1C701F8DD01E010E020E030E0AE01F0 +S1130C904F5F5F4F63E1C701EEDD01E010E020E04C +S1130CA030E0AE014F5F5F4F64E1C701E4DD01E076 +S1130CB010E020E030E0AE014F5F5F4F65E1C70117 +S1130CC0DADD01E010E020E030E0AE014F5F5F4F7D +S1130CD066E1C701D0DD01E010E020E030E0AE01C4 +S1130CE04F5F5F4F67E1C701C6DD80EC898301E098 +S1130CF010E020E030E0AE014F5F5F4F67EBC701CB +S1130D00BADD80E4898301E010E020E030E0AE0148 +S1130D104F5F5F4F6BEBC701AEDD80E090E002C038 +S1130D208FEF9FEF0F90DF91CF911F910F91FF9065 +S1130D30EF9008950F931F93CF93DF938230910523 +S1130D4010F482E090E0E091693FF0916A3F20E086 +S1130D5030E0A0E0B0E0309719F140815181028188 +S1130D60138148175907C8F08417950769F4109739 +S1130D7031F012960C93129713961C9327C000938C +S1130D80693F10936A3F22C02115310519F04217BB +S1130D90530718F49A01BD01EF01DF01F801DBCF1D +S1130DA021153105F9F0281B390B2430310580F465 +S1130DB08A819B816115710521F0FB0182839383F4 +S1130DC004C08093693F90936A3FFE01329644C009 +S1130DD0FE01E20FF31F819391932250310928837E +S1130DE039833AC02091673F3091683F232B41F407 +S1130DF02091023F3091033F2093673F3093683F37 +S1130E002091003F3091013F2115310541F42DB768 +S1130E103EB74091043F5091053F241B350BE091B0 +S1130E20673FF091683FE217F307A0F42E1B3F0BD6 +S1130E302817390778F0AC014E5F5F4F2417350748 +S1130E4048F04E0F5F1F4093673F5093683F819374 +S1130E50919302C0E0E0F0E0CF01DF91CF911F91C8 +S1130E600F910895CF93DF93009709F481C0FC019B +S1130E70329712821382A091693FB0916A3F109712 +S1130E8081F420813181820F931F2091673F30913B +S1130E90683F2817390751F5E093673FF093683F9F +S1130EA067C0ED0120E030E0CE17DF0740F44A814F +S1130EB05B819E0141155105F1F0EA01F5CFC28332 +S1130EC0D38340815181840F951FC817D90759F4E2 +S1130ED088819981840F951F0296808391838A81EA +S1130EE09B81828393832115310529F4E093693F23 +S1130EF0F0936A3F3DC0E901EA83FB83499159912C +S1130F00C40FD51FEC17FD0761F480819181840F14 +S1130F10951F0296E90188839983828193818A834C +S1130F209B83E0E0F0E012968D919C9113970097DB +S1130F3019F0FD01DC01F7CF8D919C9111979D0172 +S1130F402E5F3F4F820F931F2091673F3091683F80 +S1130F502817390769F4309729F41092693F1092E1 +S1130F606A3F02C012821382A093673FB093683F26 +S1130F70DF91CF910895FB01DC0102C001900D9235 +S1130F8041505040D8F7089503D08081992708959F +S1130F90FC01E050FC4E0895262FAF93BF93E0E090 +S1130FA0F0E1328131FDFDCFDC01A050BC4E2C9329 +S1130FB02DE924BF23E020830196BF91AF910895CA +S1070FC0F894FFCFCF +S1090FC400006B3F200059 S9030000FC diff --git a/storno_cqp6xx_digital_xtal/cqm6xx_app.c b/storno_cqp6xx_digital_xtal/cqm6xx_app.c index 1a36978..32b2c80 100644 --- a/storno_cqp6xx_digital_xtal/cqm6xx_app.c +++ b/storno_cqp6xx_digital_xtal/cqm6xx_app.c @@ -153,6 +153,8 @@ void cqm6xx_app_statemachine(storno_xtal_app_t *inst){ void programPLL_Parameters(storno_xtal_app_t *inst){ + uint8_t *data_ptr = (void *)&inst->pll_param_data; + //Burn settings into eeprom here: switch(inst->pll_param_data.PLL_Ident){ @@ -164,6 +166,32 @@ void programPLL_Parameters(storno_xtal_app_t *inst){ cm_EEPROM_write((uint8_t*)PLLB_SETTINGS_EEPROM_ADDR,(uint8_t*)&(inst->pll_param_data), sizeof(storno_pll_param_msg)); break; + case MSG_GET_PLLA_PARAM: + cm_EEPROM_read((uint8_t*)PLLA_SETTINGS_EEPROM_ADDR,(uint8_t *)&inst->pll_param_data,sizeof(storno_pll_param_msg)); + break; + + case MSG_GET_PLLB_PARAM: + cm_EEPROM_read((uint8_t*)PLLB_SETTINGS_EEPROM_ADDR,(uint8_t *)&inst->pll_param_data,sizeof(storno_pll_param_msg)); + break; + + default: + break; + + + } + + if((inst->pll_param_data.PLL_Ident == MSG_GET_PLLA_PARAM) && (inst->pll_param_data.PLL_Ident == MSG_GET_PLLB_PARAM)){ + + cm_uart_send('O'); + cm_uart_send('Z'); + cm_uart_send('1'); + cm_uart_send('C'); + cm_uart_send('M'); + + + for(uint8_t idx = 0; idx < sizeof(storno_pll_param_msg);idx++){ + cm_uart_send(data_ptr[idx]); + } } // Send status back maybe.. @@ -184,6 +212,7 @@ static int writeDefaultSettingsEEprom(storno_xtal_app_t *inst){ inst->pll_param_data.MSx_P1 = 18; inst->pll_param_data.MSx_P2 = 0; inst->pll_param_data.MSx_P3 = 1; + inst->pll_param_data.XtalFreq = 25000000; cm_EEPROM_write((uint8_t*)PLLA_SETTINGS_EEPROM_ADDR,(uint8_t*)&(inst->pll_param_data), sizeof(storno_pll_param_msg)); _delay_ms(1); diff --git a/storno_cqp6xx_digital_xtal/cqm6xx_app.h b/storno_cqp6xx_digital_xtal/cqm6xx_app.h index a97d830..e03e0e6 100644 --- a/storno_cqp6xx_digital_xtal/cqm6xx_app.h +++ b/storno_cqp6xx_digital_xtal/cqm6xx_app.h @@ -15,6 +15,8 @@ enum{ MSG_PLLA_PARAM = 0, MSG_PLLB_PARAM = 1, + MSG_GET_PLLA_PARAM = 254, + MSG_GET_PLLB_PARAM = 255, }; @@ -29,6 +31,7 @@ typedef struct { uint32_t MSx_P1; uint32_t MSx_P2; uint32_t MSx_P3; + uint32_t XtalFreq; diff --git a/storno_cqp6xx_digital_xtal/main.c b/storno_cqp6xx_digital_xtal/main.c index 469bf17..1be7825 100644 --- a/storno_cqp6xx_digital_xtal/main.c +++ b/storno_cqp6xx_digital_xtal/main.c @@ -28,12 +28,8 @@ int main(void) // Init Devices: si5351_driver si5351_dev; - cm_si5351_init(&si5351_dev,&si5351_i2c,(setGet_I2C_Event_fpt)cm_i2c_transfer); - + cm_si5351_init(&si5351_dev,&si5351_i2c,(setGet_I2C_Event_fpt)cm_i2c_transfer); cqm6xx_app_init(&storno_xtal_app, &si5351_dev); - - - while (1) { diff --git a/storno_cqp6xx_digital_xtal/storno_cqp6xx_digital_xtal.cproj b/storno_cqp6xx_digital_xtal/storno_cqp6xx_digital_xtal.cproj index c629999..1ee5812 100644 --- a/storno_cqp6xx_digital_xtal/storno_cqp6xx_digital_xtal.cproj +++ b/storno_cqp6xx_digital_xtal/storno_cqp6xx_digital_xtal.cproj @@ -121,7 +121,7 @@ %24(PackRepoDir)\atmel\ATtiny_DFP\1.10.348\include\ - Optimize more (-O2) + Optimize for size (-Os) True True Default (-g2)