diff --git a/.vs/storno_cqp6xx_digital_xtal/v14/.atsuo b/.vs/storno_cqp6xx_digital_xtal/v14/.atsuo index 68435d2..d2540d2 100644 Binary files a/.vs/storno_cqp6xx_digital_xtal/v14/.atsuo and b/.vs/storno_cqp6xx_digital_xtal/v14/.atsuo differ diff --git a/storno_cqp6xx_digital_xtal/Debug/Makefile b/storno_cqp6xx_digital_xtal/Debug/Makefile index a8622dd..a211d0f 100644 --- a/storno_cqp6xx_digital_xtal/Debug/Makefile +++ b/storno_cqp6xx_digital_xtal/Debug/Makefile @@ -38,8 +38,7 @@ SUBDIRS := \ ../avr_i2c_driver/ \ ../avr_uart_driver/ \ ../cm_msg/ \ -../si5351_driver/ \ -../si5351_driver/include/ +../si5351_driver/ # Add inputs and outputs from these tool invocations to the build variables @@ -117,56 +116,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)E:\cm_programs\microchip_studio\7.0\toolchain\avr8\avr8-gnu-toolchain\bin\avr-gcc.exe$(QUOTE) -x c -funsigned-char -funsigned-bitfields -DDEBUG -I"E:\cm_programs\microchip_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 "E:\cm_programs\microchip_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)E:\cm_programs\microchip_studio\7.0\toolchain\avr8\avr8-gnu-toolchain\bin\avr-gcc.exe$(QUOTE) -x c -funsigned-char -funsigned-bitfields -DDEBUG -I"E:\cm_programs\microchip_studio\7.0\Packs\atmel\ATtiny_DFP\1.10.348\include" -O1 -ffunction-sections -fdata-sections -fpack-struct -fshort-enums -g2 -Wall -mmcu=attiny402 -B "E:\cm_programs\microchip_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)E:\cm_programs\microchip_studio\7.0\toolchain\avr8\avr8-gnu-toolchain\bin\avr-gcc.exe$(QUOTE) -x c -funsigned-char -funsigned-bitfields -DDEBUG -I"E:\cm_programs\microchip_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 "E:\cm_programs\microchip_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)E:\cm_programs\microchip_studio\7.0\toolchain\avr8\avr8-gnu-toolchain\bin\avr-gcc.exe$(QUOTE) -x c -funsigned-char -funsigned-bitfields -DDEBUG -I"E:\cm_programs\microchip_studio\7.0\Packs\atmel\ATtiny_DFP\1.10.348\include" -O1 -ffunction-sections -fdata-sections -fpack-struct -fshort-enums -g2 -Wall -mmcu=attiny402 -B "E:\cm_programs\microchip_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)E:\cm_programs\microchip_studio\7.0\toolchain\avr8\avr8-gnu-toolchain\bin\avr-gcc.exe$(QUOTE) -x c -funsigned-char -funsigned-bitfields -DDEBUG -I"E:\cm_programs\microchip_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 "E:\cm_programs\microchip_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)E:\cm_programs\microchip_studio\7.0\toolchain\avr8\avr8-gnu-toolchain\bin\avr-gcc.exe$(QUOTE) -x c -funsigned-char -funsigned-bitfields -DDEBUG -I"E:\cm_programs\microchip_studio\7.0\Packs\atmel\ATtiny_DFP\1.10.348\include" -O1 -ffunction-sections -fdata-sections -fpack-struct -fshort-enums -g2 -Wall -mmcu=attiny402 -B "E:\cm_programs\microchip_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)E:\cm_programs\microchip_studio\7.0\toolchain\avr8\avr8-gnu-toolchain\bin\avr-gcc.exe$(QUOTE) -x c -funsigned-char -funsigned-bitfields -DDEBUG -I"E:\cm_programs\microchip_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 "E:\cm_programs\microchip_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)E:\cm_programs\microchip_studio\7.0\toolchain\avr8\avr8-gnu-toolchain\bin\avr-gcc.exe$(QUOTE) -x c -funsigned-char -funsigned-bitfields -DDEBUG -I"E:\cm_programs\microchip_studio\7.0\Packs\atmel\ATtiny_DFP\1.10.348\include" -O1 -ffunction-sections -fdata-sections -fpack-struct -fshort-enums -g2 -Wall -mmcu=attiny402 -B "E:\cm_programs\microchip_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)E:\cm_programs\microchip_studio\7.0\toolchain\avr8\avr8-gnu-toolchain\bin\avr-gcc.exe$(QUOTE) -x c -funsigned-char -funsigned-bitfields -DDEBUG -I"E:\cm_programs\microchip_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 "E:\cm_programs\microchip_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)E:\cm_programs\microchip_studio\7.0\toolchain\avr8\avr8-gnu-toolchain\bin\avr-gcc.exe$(QUOTE) -x c -funsigned-char -funsigned-bitfields -DDEBUG -I"E:\cm_programs\microchip_studio\7.0\Packs\atmel\ATtiny_DFP\1.10.348\include" -O1 -ffunction-sections -fdata-sections -fpack-struct -fshort-enums -g2 -Wall -mmcu=attiny402 -B "E:\cm_programs\microchip_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)E:\cm_programs\microchip_studio\7.0\toolchain\avr8\avr8-gnu-toolchain\bin\avr-gcc.exe$(QUOTE) -x c -funsigned-char -funsigned-bitfields -DDEBUG -I"E:\cm_programs\microchip_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 "E:\cm_programs\microchip_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)E:\cm_programs\microchip_studio\7.0\toolchain\avr8\avr8-gnu-toolchain\bin\avr-gcc.exe$(QUOTE) -x c -funsigned-char -funsigned-bitfields -DDEBUG -I"E:\cm_programs\microchip_studio\7.0\Packs\atmel\ATtiny_DFP\1.10.348\include" -O1 -ffunction-sections -fdata-sections -fpack-struct -fshort-enums -g2 -Wall -mmcu=attiny402 -B "E:\cm_programs\microchip_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)E:\cm_programs\microchip_studio\7.0\toolchain\avr8\avr8-gnu-toolchain\bin\avr-gcc.exe$(QUOTE) -x c -funsigned-char -funsigned-bitfields -DDEBUG -I"E:\cm_programs\microchip_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 "E:\cm_programs\microchip_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)E:\cm_programs\microchip_studio\7.0\toolchain\avr8\avr8-gnu-toolchain\bin\avr-gcc.exe$(QUOTE) -x c -funsigned-char -funsigned-bitfields -DDEBUG -I"E:\cm_programs\microchip_studio\7.0\Packs\atmel\ATtiny_DFP\1.10.348\include" -O1 -ffunction-sections -fdata-sections -fpack-struct -fshort-enums -g2 -Wall -mmcu=attiny402 -B "E:\cm_programs\microchip_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)E:\cm_programs\microchip_studio\7.0\toolchain\avr8\avr8-gnu-toolchain\bin\avr-gcc.exe$(QUOTE) -x c -funsigned-char -funsigned-bitfields -DDEBUG -I"E:\cm_programs\microchip_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 "E:\cm_programs\microchip_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)E:\cm_programs\microchip_studio\7.0\toolchain\avr8\avr8-gnu-toolchain\bin\avr-gcc.exe$(QUOTE) -x c -funsigned-char -funsigned-bitfields -DDEBUG -I"E:\cm_programs\microchip_studio\7.0\Packs\atmel\ATtiny_DFP\1.10.348\include" -O1 -ffunction-sections -fdata-sections -fpack-struct -fshort-enums -g2 -Wall -mmcu=attiny402 -B "E:\cm_programs\microchip_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_eeprom_driver/avr_eeprom_driver.o b/storno_cqp6xx_digital_xtal/Debug/avr_eeprom_driver/avr_eeprom_driver.o index e7c55c8..330ff44 100644 Binary files a/storno_cqp6xx_digital_xtal/Debug/avr_eeprom_driver/avr_eeprom_driver.o and b/storno_cqp6xx_digital_xtal/Debug/avr_eeprom_driver/avr_eeprom_driver.o differ diff --git a/storno_cqp6xx_digital_xtal/Debug/avr_gpio_driver/avr_gpio.o b/storno_cqp6xx_digital_xtal/Debug/avr_gpio_driver/avr_gpio.o index 98f8529..039c5d8 100644 Binary files a/storno_cqp6xx_digital_xtal/Debug/avr_gpio_driver/avr_gpio.o and b/storno_cqp6xx_digital_xtal/Debug/avr_gpio_driver/avr_gpio.o differ 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 c575c41..98525c8 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/avr_uart_driver/avr_uart.o b/storno_cqp6xx_digital_xtal/Debug/avr_uart_driver/avr_uart.o index 62225ae..2e9a100 100644 Binary files a/storno_cqp6xx_digital_xtal/Debug/avr_uart_driver/avr_uart.o and b/storno_cqp6xx_digital_xtal/Debug/avr_uart_driver/avr_uart.o differ diff --git a/storno_cqp6xx_digital_xtal/Debug/cm_msg/cm_msg.o b/storno_cqp6xx_digital_xtal/Debug/cm_msg/cm_msg.o index 0c18454..3595b88 100644 Binary files a/storno_cqp6xx_digital_xtal/Debug/cm_msg/cm_msg.o and b/storno_cqp6xx_digital_xtal/Debug/cm_msg/cm_msg.o differ diff --git a/storno_cqp6xx_digital_xtal/Debug/cqm6xx_app.o b/storno_cqp6xx_digital_xtal/Debug/cqm6xx_app.o index 0c4c947..f51da2e 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 660bb9f..c372dad 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 efa0d23..71fcf0c 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 ceb5be1..2269b8e 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 4f579d4..be5797a 100644 --- a/storno_cqp6xx_digital_xtal/Debug/storno_cqp6xx_digital_xtal.hex +++ b/storno_cqp6xx_digital_xtal/Debug/storno_cqp6xx_digital_xtal.hex @@ -1,256 +1,249 @@ :1000000019C033C032C031C030C02FC02EC02DC087 :100010002CC02BC02AC029C028C027C026C025C09C -:1000200024C023C022C021C020C01FC05CC11DC08D +:1000200024C023C022C021C020C01FC094C11DC055 :100030001CC01BC011241FBECFEFCDBFDFE3DEBF4E -:100040002FE3A6E0BFE301C01D92AC36B207E1F793 -:100050001FE3A0E0BFE3E2EDFFE002C005900D92D8 -:10006000A630B107D9F7B8D3B2C7CACFEF92FF9283 -:100070000F931F93CF93DF93442391F0EB018C01F7 -:100080004150E42EF12C8FEFE81AF80AE60EF71E25 -:100090006991C80188D70F5F1F4FCE15DF05C1F7E3 -:1000A000DF91CF911F910F91FF90EF900895EF9204 -:1000B000FF920F931F93CF93DF93442391F08C0112 -:1000C000EB014150E42EF12C8FEFE81AF80AE60E0E -:1000D000F71EC80160D789930F5F1F4FCE15DF054C -:1000E000C1F7DF91CF911F910F91FF90EF9008958D -:1000F00081110BC08091080490E002C0959587950E -:100100006A95E2F781709927089580E090E008955C -:1001100020911508207CE1F32091150824FD1FC0D3 -:10012000FC018191809318088091150886FFFCCF0F -:100130008091150884FD24C0809115088C70A9F465 -:100140008091150884FD05C041505109610971096C -:1001500041F783E08093140880E090E0089583E005 -:10016000809314088FEF9FEF0895809114088860A2 -:100170008093140881E08093150881E090E0089551 -:1001800083E08093140881E090E00895B62FA72FB4 -:100190009091150893709130D9F7211531054105DB -:1001A000510569F181608093170880911508807C62 -:1001B000E1F38091150884FD1CC0BA01A9014150EA -:1001C000510961097109EB2FFA2F92E0809115080E -:1001D000807CE1F3809118088193411551056105F8 -:1001E000710581F09093140841505109610971091A -:1001F000EDCF83E0809314088FEF9FEF089581E0A7 -:1002000090E0089584E08093140883E080931408BC -:1002100080E090E00895E0E0F4E080818B7F8083CF -:100220008081877F8083A0E1B8E08BE016968C9375 -:10023000169781E013968C93139715968C9388E00C -:10024000828B838B80E090E00895FC01842F880FDF -:100250009091150893709130D9F780931708909179 -:10026000150896FFFCCF8091150884FF06C083E037 -:10027000809314088EEF9FEF089583E08093140815 -:100280006083718350E0440F551F428380E090E00B -:1002900008950F93009721F1DB01FC010023D1F0B9 -:1002A000013021F080E090E00F91089590911508C1 -:1002B00093709130D9F7211531054105510591F31E -:1002C000828180931708BA01A901CD0121DF80E066 -:1002D00090E0EACF82815ADF80E090E00F910895AC -:1002E0008FEF9FEFE1CF1F920F920FB60F92112465 -:1002F0002F933F934F935F936F937F938F939F932E -:10030000AF93BF93EF93FF93CF93DF931F92CDB73C -:10031000DEB7E091063FF091073F809100083097EB -:10032000A9F009950F90DF91CF91FF91EF91BF91C7 -:10033000AF919F918F917F916F915F914F913F917D -:100340002F910F900FBE0F901F9018958983EACFC1 -:10035000CF93DF931F92CDB7DEB7AC01F8942CE6B4 -:1003600035E0209308083093090893E0909307083C -:1003700090EC9093060861157105D1F080E88093A8 -:1003800005086093063F7093073F8091040887FF3C -:1003900004C0809100088983898180E480930104EE -:1003A00080E88093020478940F90DF91CF910895B4 -:1003B000452B21F7EACF9091413F923041F160F413 -:1003C0009923E1F0913089F48A3529F180E0809316 -:1003D000413F81E090E00895933061F0943029F43A -:1003E0001092413F80E090E008951092413F81E0FB -:1003F00090E00895833451F784E0E9CF91E08F34A1 -:1004000009F090E09093413F81E090E008958133BE -:10041000E9F683E0DCCF82E0DACF9091403F933081 -:1004200009F44BC068F4992309F440C0913029F4D1 -:100430008093083F83E08093403F80E090E0089500 -:10044000943019F19530C9F790913F3FE92FF0E0D2 -:10045000E85FF04C838381E0890F80933F3F909168 -:10046000083F891750F3E091443FF091453F6BE01E -:100470007FE38091423F9091433F09951092403F26 -:1004800010923F3F80E090E008952091093F309125 -:100490000A3FA901482BCA018093093F90930A3F64 -:1004A00085E08093403F80E090E0089584DF892BD1 -:1004B00039F781E08093403FE3CF1092093F80936A -:1004C0000A3F84E08093403F80E090E008950097E9 -:1004D00059F06115710541F08093423F9093433F7D -:1004E0006093443F7093453F0895CF93DF93FC01A1 -:1004F000828193810097A9F0309799F02181308112 -:10050000231779F0EF01213079F0223051F441E0E6 -:1005100060E0D9D240E061E08A819B81DF91CF9198 -:10052000D2C2DF91CF91089540E060E0CCD241E0AB -:1005300061E08A819B81DF91CF91C5C29F92AF928A -:10054000BF92CF92DF92EF92FF920F931F93CF93C0 -:10055000DF93EC01942EAD84BE84CF84D888E984E7 -:10056000FA840B851C852D813E814F8158858A81B7 -:100570009B819AD1A98CBA8CCB8CDC8CED88FE88BF -:100580000F89188D29893A894B895C89692D8A815F -:100590009B8105D240E0692D8A819B81DF91CF91BB -:1005A0001F910F91FF90EF90DF90CF90BF90AF9091 -:1005B0009F90B6C20F931F93CF93DF93FC012281CC -:1005C0003381232BA9F0009799F0EC0181818130D0 -:1005D00009F442C090F0823059F4CE0186DF89815F -:1005E000888363E080E084DD892B11F481E08983D6 -:1005F000DF91CF911F910F91089518828E010C5FAA -:100600001F4F4EE1B80180E090E051DD60E08A814B -:100610009B81DCD240E060E0CE0190DF4EE1B8018A -:1006200080E290E044DD41E061E0CE0187DF42E01E -:1006300061E0CE0183DF40E062E08A819B8170D27D -:1006400040E062E08A819B813ED281E08983DF9134 -:10065000CF911F910F910895CE0147DF8981888343 -:1006600063E080E045DD019719F682E08983C0CF21 -:10067000CF93DF93EC018C81813031F1D0F08E3F4C -:1006800069F08F3F39F44EE1BE016C5F7F4F80E22D -:1006900090E00DDD1982DF91CF9108954EE1BE010A -:1006A0006C5F7F4F80E090E002DD1982DF91CF9197 -:1006B00008954EE1BE016C5F7F4F80E090E0D6DC94 -:1006C0001982DF91CF9108954EE1BE016C5F7F4F9B -:1006D00080E290E0CBDC1982DF91CF910895DC01BC -:1006E00014962EE1FB0101900D922A95E1F7C0DFEF -:1006F00080E090E008950F931F93CF93DF936115EF -:10070000710511F1009701F1EC01198218826A83D9 -:100710007B836FE673E0DBDE6DE072E0CE0118DE16 -:100720008E010C5F1F4F4EE1B80180E090E0BFDC0E -:10073000F8019E012E5D3F4F03C0E217F30749F019 -:10074000919191509E3FC8F7DF91CF911F910F91EA -:1007500008951C8283E49DE0A0E0B0E08D839E8339 -:10076000AF83B88786EF9CE2A0E0B0E089879A87E4 -:10077000AB87BC878BE598E4A0E1B0E08D879E87CE -:10078000AF87B88B82E190E0A0E0B0E0898B9A8BD4 -:10079000AB8BBC8B1D8A1E8A1F8A188E81E090E06D -:1007A000A0E0B0E0898F9A8FAB8FBC8F80E498E790 -:1007B000ADE7B1E08E8F9F8FA8A3B9A34EE1B8013A -:1007C00080E090E053DC4EE1B80180E290E0DF9100 -:1007D000CF911F910F914ACCCF93DF93CDB7DEB766 -:1007E000CB55D109CDBFDEBF80E090E014DD40E6FF -:1007F00060E070E0CE01875A9F4F27DD49E451E069 -:10080000BE01675A7F4FCE01019605D2BE016F5FD0 -:100810007F4F86E49FE36FDF86E49FE3CBDEFCCF70 -:100820004F925F926F927F929F92AF92BF92CF92C0 -:10083000DF92EF92FF920F931F93CF93DF93EC0120 -:100840006B01942E590127013801C701019679D215 -:10085000F82E192FDC019D92CD01A201B50192D392 -:10086000A30192012F5F3F4F4F4F5F4FD601ED9194 -:10087000FC9101E06F2D712F8881998109958F2D51 -:10088000912FF7D280E090E0DF91CF911F910F91EF -:10089000FF90EF90DF90CF90BF90AF909F907F90B0 -:1008A0006F905F904F900895AF92BF92CF92DF927A -:1008B000EF92FF920F931F93CF93DF93EC01662388 -:1008C00009F448C0613009F16C0182E0C80ED11C06 -:1008D0009E01295A3F4FF9018081806280688083A0 -:1008E000E12CF12C8701E39441EBB601CE0198DFB6 -:1008F00080E090E0DF91CF911F910F91FF90EF90FA -:10090000DF90CF90BF90AF90089542708E8D8C7F16 -:10091000482B4E8F3F8F28A3D801C70188279927DE -:10092000AF70BB27FAA2EBA28A2F8F7089A3BC8E6F -:10093000AD8E6E01F2E0CF0ED11C18E0E12EF12C4D -:1009400000E010E09E01245E3F4F42E2B601CE017E -:1009500067DFBECF42708E898C7F482B4E8B3F8BDA -:10096000288FD801C70188279927AF70BB27FA8E37 -:10097000EB8E8A2F8F70898FBC8AAD8A6E01E2E080 -:10098000CE0ED11C18E0E12EF12C00E010E09E010B -:100990002C5E3F4F4AE1B601CE0142DF99CFAF92C4 -:1009A000BF92CF92DF92EF92FF920F931F93FC01C1 -:1009B000613009F45FC0A8F1623041F5437056A977 -:1009C000507837AB20AFF2AEE3AED601C5012CE0D4 -:1009D000B695A795979587952A95D1F783708295B7 -:1009E000807F0370082B01AFB4AAA5AA452B46ABA4 -:1009F0009F012C5C3F4FBF016E5F7F4F18E0E12EDF -:100A0000F12C00E010E04AE3CF010ADF80E090E043 -:100A10001F910F91FF90EF90DF90CF90BF90AF901C -:100A20000895437056A1507837A320A7F2A6E3A6F5 -:100A3000D601C5011CE0B695A795979587951A959F -:100A4000D1F783708295807F0370802B81A7B4A239 -:100A5000A5A2452B46A39F012C5D3F4FBF016E5FB2 -:100A60007F4F18E0E12EF12C00E010E04AE2CF01C8 -:100A7000D7DECCCF437056A5507837A720ABF2AA6B -:100A8000E3AAD601C5016CE0B695A7959795879521 -:100A90006A95D1F783708295807F0370802B81AB3C -:100AA000B4A6A5A6452B46A79F01245D3F4FBF01D5 -:100AB0006E5F7F4F18E0E12EF12C00E010E042E382 -:100AC000CF01AEDEA3CFEF92FF920F931F93613061 -:100AD00009F1D0F0623029F4FC01278140FB22F9B2 -:100AE00027839C01295F3F4FBC016E5F7F4FE12C44 -:100AF000F12C8701E39443E093DE80E090E01F91C6 -:100B00000F91FF90EF900895FC01278140FB20F9A1 -:100B10002783E7CFFC01278140FB21F92783E1CF21 -:100B2000EF92FF920F931F936130B9F1E0F06230C2 -:100B300099F4FC01248540FB27F923792366248757 -:100B40009C01245F3F4FBC016E5F7F4FE12CF12C75 -:100B50008701E39442E164DE80E090E01F910F9111 -:100B6000FF90EF900895FC01228540FB27F9207942 -:100B70002F6422879C01265F3F4FBC016E5F7F4F31 -:100B8000E12CF12C8701E39440E14ADE80E090E023 -:100B90001F910F91FF90EF900895FC01238540FB7A -:100BA00027F92F6623879C01255F3F4FBC016E5FAD -:100BB0007F4FE12CF12C8701E39441E131DE80E0AD -:100BC00090E01F910F91FF90EF900895EF92FF92A8 -:100BD0000F931F936623C9F0613021F4FC01218536 -:100BE000246021879C01275F3F4FBC016E5F7F4FD0 -:100BF000E12CF12C8701E39440EF12DE80E090E0DD -:100C00001F910F91FF90EF900895FC0121852B7F9C -:100C1000277F2187E7CFAF92BF92CF92DF92EF92EB -:100C2000FF920F931F93CF93DF931F92CDB7DEB741 -:100C3000009709F483C06115710509F47FC041155F -:100C4000510509F47BC06C01DC016D937C93119715 -:100C500012964D935C931397FC01349684E5DF0163 -:100C60001D928A95E9F78FEF89835601B2E0AB0EAA -:100C7000B11CE12CF12C8701E3949E012F5F3F4FC3 -:100C800043E0B501C601CCDD80E889839E012F5F7A -:100C90003F4F40E1B501C601C3DD9E012F5F3F4FCD -:100CA00041E1B501C601BCDD9E012F5F3F4F42E12E -:100CB000B501C601B5DD9E012F5F3F4F43E1B50190 -:100CC000C601AEDD9E012F5F3F4F44E1B501C60175 -:100CD000A7DD9E012F5F3F4F45E1B501C601A0DDB5 -:100CE0009E012F5F3F4F46E1B501C60199DD9E0190 -:100CF0002F5F3F4F47E1B501C60192DD80EC89834C -:100D00009E012F5F3F4F47EBB501C60189DD80E4AF -:100D100089839E012F5F3F4F4BEBB501C60180DDFC -:100D200080E090E00F90DF91CF911F910F91FF90A5 -:100D3000EF90DF90CF90BF90AF9008958FEF9FEF2F -:100D4000F1CF0F931F93CF93DF938230910510F46F -:100D500082E090E0E0916A3FF0916B3F20E030E06C -:100D6000A0E0B0E0309719F14081518102811381F8 -:100D700048175907C8F08417950769F4109731F0A0 -:100D800012960C93129713961C9327C000936A3FF8 -:100D900010936B3F22C02115310519F042175307FC -:100DA00018F49A01BD01EF01DF01F801DBCF211535 -:100DB0003105F9F0281B390B2430310580F48A8184 -:100DC0009B816115710521F0FB018283938304C02F -:100DD00080936A3F90936B3FFE01329644C0FE01C0 -:100DE000E20FF31F819391932250310928833983B5 -:100DF0003AC02091683F3091693F232B41F4209104 -:100E0000023F3091033F2093683F3093693F209128 -:100E1000003F3091013F2115310541F42DB73EB718 -:100E20004091043F5091053F241B350BE091683FF2 -:100E3000F091693FE217F307A0F42E1B3F0B281730 -:100E4000390778F0AC014E5F5F4F2417350748F043 -:100E50004E0F5F1F4093683F5093693F819391937A -:100E600002C0E0E0F0E0CF01DF91CF911F910F9140 -:100E70000895CF93DF93009709F481C0FC01329766 -:100E800012821382A0916A3FB0916B3F109781F458 -:100E900020813181820F931F2091683F3091693FFB -:100EA0002817390751F5E093683FF093693F67C011 -:100EB000ED0120E030E0CE17DF0740F44A815B818E -:100EC0009E0141155105F1F0EA01F5CFC283D383AC -:100ED00040815181840F951FC817D90759F4888123 -:100EE0009981840F951F0296808391838A819B81CB -:100EF000828393832115310529F4E0936A3FF093AF -:100F00006B3F3DC0E901EA83FB8349915991C40FCE -:100F1000D51FEC17FD0761F480819181840F951F27 -:100F20000296E90188839983828193818A839B83D6 -:100F3000E0E0F0E012968D919C911397009719F0E4 -:100F4000FD01DC01F7CF8D919C9111979D012E5FE2 -:100F50003F4F820F931F2091683F3091693F2817C0 -:100F6000390769F4309729F410926A3F10926B3F69 -:100F700002C012821382A093683FB093693FDF9151 -:100F8000CF910895FB01DC0102C001900D92415008 -:100F90005040D8F7089503D0808199270895FC0127 -:100FA000E050FC4E0895262FAF93BF93E0E0F0E1B0 -:100FB000328131FDFDCFDC01A050BC4E2C932DE9D8 -:100FC00024BF23E020830196BF91AF910895F89448 -:020FD000FFCF51 -:060FD20000006C3F20004E +:100040002FE3A6E0BFE301C01D92AA38B207E1F793 +:100050001FE3A0E0BFE3E6E6FFE002C005900D92DB +:10006000A630B107D9F7F0D37CC7CACFEF92FF9281 +:100070000F931F93CF93DF934423A1F08B01C82FDD +:10008000D92F4150E42EF12C8FEFE81AF80AE60E32 +:10009000F71EF80161918F01CE014FD721960E1501 +:1000A0001F05B9F7DF91CF911F910F91FF90EF904E +:1000B0000895EF92FF920F931F93CF93DF93442302 +:1000C000A1F0C82FD92F8B014150E42EF12C8FEFD6 +:1000D000E81AF80AE60EF71ECE0127D7F801819339 +:1000E0008F012196EE15FF05B9F7DF91CF911F9192 +:1000F0000F91FF90EF90089581110BC0809108043B +:1001000090E002C0959587956A95E2F781709927EE +:10011000089580E090E0089580931708E0E1F8E00A +:100120008581807CE9F390911508892F807194FF77 +:1001300004C083E08093140881E00895CF92DF9299 +:10014000EF92FF92CF93DF93D62FC72F69017A01E9 +:10015000E0E1F8E0958193709130E1F7C114D104AA +:10016000E104F10489F1D8DF811131C0AD2FBC2F3A +:10017000E0E1F8E08D918087858186FFFDCF858164 +:1001800084FF06C083E08093140881E090E021C0E2 +:1001900085818C7051F0E0E1F8E08481886084838F +:1001A00081E0858381E090E014C0858184FD06C0F4 +:1001B00081E0C81AD108E108F108E1F683E08093F4 +:1001C000140880E090E005C08FEF9FEF02C08FEF32 +:1001D0009FEFDF91CF91FF90EF90DF90CF90089548 +:1001E000CF92DF92EF92FF92CF93DF93E0E1F8E0BE +:1001F000958193709130E1F7211531054105510545 +:1002000011F169017A01C72FD62F816085DF88231C +:1002100001F11CC08581807CE9F380858D934115B7 +:1002200051056105710549F4E0E1F8E084E084835B +:1002300083E0848380E090E018C0948341505109AA +:1002400061097109E7CF81E090E00FC08FEF9FEF68 +:100250000CC0B701A6014150510961097109AD2FC8 +:10026000BC2FE0E1F8E092E0D5CFDF91CF91FF9095 +:10027000EF90DF90CF900895E0E1F8E095819370E2 +:100280009130E1F780931708E0E1F8E0858186FF7F +:10029000FDCF8091150884FF06C083E08093140889 +:1002A00081E090E0089583E08093140880E090E07E +:1002B0000895E0E0F4E080818B7F80838081877FF8 +:1002C0008083A0E1B8E08BE016968C93169781E0CE +:1002D00013968C93139715968C9388E0828B838B5F +:1002E00080E090E00895EF92FF920F931F93CF93D9 +:1002F0008C017B01C42F842F880FBEDF009749F447 +:10030000F801E082F1824C2F50E0440F551F4283E8 +:1003100002C08EEF9FEFCF911F910F91FF90EF9052 +:1003200008950F93009781F0FC01002319F001302C +:1003300031F00DC0828154DF80E090E00AC08281FC +:10034000FDDE80E090E005C08FEF9FEF02C080E00F +:1003500090E00F9108951F920F920FB60F92112403 +:100360002F933F934F935F936F937F938F939F93BD +:10037000AF93BF93EF93FF93CF93DF931F92CDB7CC +:10038000DEB7E091063FF091073F309721F0809172 +:100390000008099503C08091000889830F90DF91C0 +:1003A000CF91FF91EF91BF91AF919F918F917F91ED +:1003B0006F915F914F913F912F910F900FBE0F90D2 +:1003C0001F901895CF93DF931F92CDB7DEB7AC0186 +:1003D000F894E0E0F8E02CE635E02087318793E000 +:1003E000978390EC96836115710511F4452B39F0D4 +:1003F00080E8809305086093063F7093073F8091E3 +:100400000408882324F48091000889838981E0E02E +:10041000F4E080E4818380E8828378940F90DF9118 +:10042000CF9108959091413F9230F1F028F49923B3 +:1004300041F0913079F031C0933001F1943041F1C5 +:100440002CC091E08F3409F090E09093413F81E01F +:1004500090E008958A3511F080E001C082E0809339 +:10046000413F81E090E00895813311F080E001C0C8 +:1004700083E08093413F81E090E00895833411F060 +:1004800080E001C084E08093413F81E090E00895E6 +:100490001092413F80E090E008951092413F81E04A +:1004A00090E008959091403F9330D1F028F4992343 +:1004B00041F0913079F047C09430D1F0953029F176 +:1004C00042C0B0DF892B19F481E08093403F109245 +:1004D0003F3F39C08093083F83E08093403F33C063 +:1004E000E8E0FFE31182828384E08093403F2BC0E9 +:1004F000E8E0FFE321813281A901482BCA01818311 +:10050000928385E08093403F1EC090913F3FE92F4A +:10051000F0E0E85FF04C838381E0890F80933F3FF8 +:100520009091083F891778F0E091443FF091453F62 +:100530006BE07FE38091423F9091433F0995109299 +:10054000403F10923F3F80E090E00895009759F0BF +:100550006115710541F08093423F9093433F609352 +:10056000443F7093453F0895CF93DF93FC01828110 +:1005700093810097E9F03097D9F0218130812317DA +:10058000B9F0EF01213019F0223051F011C040E0F4 +:1005900060E00ED241E061E08A819B8109D208C00F +:1005A00041E060E005D240E061E08A819B8100D2B9 +:1005B000DF91CF9108959F92AF92BF92CF92DF9239 +:1005C000EF92FF920F931F93CF93DF93EC01942E42 +:1005D000AD84BE84CF84D888E984FA840B851C85D9 +:1005E0002D813E814F8158858A819B817DD2A98C46 +:1005F000BA8CCB8CDC8CED88FE880F89188D29890C +:100600003A894B895C89692D8A819B817BD140E045 +:10061000692D8A819B81F3D1DF91CF911F910F9139 +:10062000FF90EF90DF90CF90BF90AF909F90089594 +:10063000FB012081222319F0213051F011C0DC018F +:1006400014968EE1FB0101900D928A95E1F708C0A6 +:10065000DC0192968EE1FB0101900D928A95E1F703 +:1006600080E090E008950F931F93CF93DF93FC01F8 +:1006700022813381232B09F44DC0009709F44AC02D +:10068000EC018181813079F118F08230C1F142C0F2 +:1006900010828F010C5F1F4F4EE1B80180E090E0A7 +:1006A00008DD60E08A819B81DED140E060E0CE0120 +:1006B00082DF4EE1B80180E290E0FBDC41E061E0E6 +:1006C000CE0179DF42E061E0CE0175DF40E062E01B +:1006D0008A819B8194D140E062E08A819B8168D1CC +:1006E00081E0898317C0CF013FDF8981888363E080 +:1006F00080E002DD019771F482E089830BC0CF01B5 +:1007000033DF8981888363E080E0F6DC892B11F494 +:1007100081E08983DF91CF911F910F9108950F930D +:100720001F93CF93DF936115710509F488C000977B +:1007300009F485C0EC01198218826A837B8368E121 +:1007400073E004DF62E572E0CE013CDE8E010E5DF7 +:100750001F4F4EE1B80180E090E0ABDC8AA18150F0 +:100760008E3F08F066C06BC0919191509E3F08F497 +:1007700066C02E173F07C1F783E49DE0A0E0B0E01C +:100780008D839E83AF83B8878BA39CA3ADA3BEA3A9 +:1007900086EF9CE2A0E0B0E089879A87AB87BC87B0 +:1007A0008FA398A7A9A7BAA78BE598E4A0E1B0E02A +:1007B0008D879E87AF87B88B8BA79CA7ADA7BEA759 +:1007C00082E190E0A0E0B0E0898B9A8BAB8BBC8B90 +:1007D0008FA798ABA9ABBAAB1D8A1E8A1F8A188E49 +:1007E0001BAA1CAA1DAA1EAA81E090E0A0E0B0E00E +:1007F000898F9A8FAB8FBC8F8FAB98AFA9AFBAAFF1 +:1008000080E498E7ADE7B1E08E8F9F8FA8A3B9A3EE +:100810008CAF9DAFAEAFBFAFBE016C5F7F4F4EE1FF +:1008200080E090E023DC4EE1B80180E290E01EDC45 +:1008300006C0FE01B3969E01205C3F4F95CFDF912D +:10084000CF911F910F910895CF93DF93CDB7DEB76E +:10085000A297CDBFDEBF80E090E02BDD40E660E0F8 +:1008600070E0CE0101963FDD41E951E0BE016F5FCE +:100870007F4FCE01049682D1BE016C5F7F4F86E42C +:100880009FE34DDF86E49FE3EEDEFCCF8F929F92E5 +:10089000AF92BF92CF92DF92EF92FF920F931F938E +:1008A000CF93DF93EC01862E5A0168017901C801CC +:1008B000019611D2982E192FFC018192CF01A60129 +:1008C000B5012AD3A70196012F5F3F4F4F4F5F4FCE +:1008D000EA81FB8101E0692D712F88819981099559 +:1008E000892D912F90D280E090E0DF91CF911F91E0 +:1008F0000F91FF90EF90DF90CF90BF90AF909F90BF +:100900008F900895AF92BF92CF92DF92EF92FF92B5 +:100910000F931F93FC01437056895078378B208FBB +:10092000F28EE38ED601C501072E7CE0B695A79521 +:10093000979587957A95D1F7702D83708295807FF2 +:100940000370802B818FB48AA58A452B468B61303A +:1009500079F018F06230B9F020C0AF014C5E5F4F03 +:1009600008E010E020E030E06AE2CF018FDF15C040 +:10097000AF014C5E5F4F08E010E020E030E062E342 +:10098000CF0184DF0AC0AF014C5E5F4F08E010E08A +:1009900020E030E06AE3CF0179DF80E090E01F9152 +:1009A0000F91FF90EF90DF90CF90BF90AF900895A0 +:1009B0000F931F93613051F018F0623069F011C04D +:1009C000FC01278140FB20F927830BC0FC01278114 +:1009D00040FB21F9278305C0FC01278140FB22F958 +:1009E0002783AC01495F5F4F01E010E020E030E079 +:1009F00063E04CDF80E090E01F910F9108950F932A +:100A00001F93FC01928540FB97F990799F64928730 +:100A1000613079F018F06230B9F020C0AF01465F64 +:100A20005F4F01E010E020E030E060E1CF012EDF19 +:100A300015C0AF01465F5F4F01E010E020E030E0FD +:100A400061E1CF0123DF0AC0AF01465F5F4F01E0E4 +:100A500010E020E030E062E1CF0118DF80E090E0BC +:100A60001F910F9108950F931F93662319F0613022 +:100A700039F00AC0FC0121852B7F277F218704C024 +:100A8000FC01218524602187AC01475F5F4F01E0B5 +:100A900010E020E030E060EFF9DE80E090E01F91B0 +:100AA0000F9108950F931F9331E0611101C030E061 +:100AB000FC01268D30FB25F9268F31E0411101C064 +:100AC00030E0FC01268D30FB27F9268FAC01425E19 +:100AD0005F4F01E010E020E030E061EBD7DE80E026 +:100AE00090E01F910F910895AF92BF92CF92DF9245 +:100AF000EF92FF920F931F93CF93DF93EC0142701D +:100B00008E858C7F482B4E873F87288BD801C70165 +:100B100088279927AF70BB27FA8AEB8A8A2F8F70B4 +:100B2000898BBC86AD86662319F0613061F015C0F3 +:100B300008E010E020E030E0AE01445F5F4F6AE182 +:100B4000CE01A4DE0AC008E010E020E030E0AE01F3 +:100B5000445F5F4F62E2CE0199DE41E061E0CE0189 +:100B6000A1DF80E090E0DF91CF911F910F91FF9086 +:100B7000EF90DF90CF90BF90AF900895EF92FF92EB +:100B80000F931F93CF93DF931F92CDB7DEB70097DC +:100B900009F491C06115710509F490C04115510522 +:100BA00009F48FC07C01DC016D937C931197129640 +:100BB0004D935C931397FC0134968BE1DF011D92FA +:100BC0008A95E9F78FEF898301E010E020E030E0BB +:100BD000AE014F5F5F4F63E0C70158DE80E8898355 +:100BE00001E010E020E030E0AE014F5F5F4F60E1D8 +:100BF000C7014CDE01E010E020E030E0AE014F5FC5 +:100C00005F4F61E1C70142DE01E010E020E030E02B +:100C1000AE014F5F5F4F62E1C70138DE01E010E0D7 +:100C200020E030E0AE014F5F5F4F63E1C7012EDE91 +:100C300001E010E020E030E0AE014F5F5F4F64E183 +:100C4000C70124DE01E010E020E030E0AE014F5F9C +:100C50005F4F65E1C7011ADE01E010E020E030E0FF +:100C6000AE014F5F5F4F66E1C70110DE01E010E0AB +:100C700020E030E0AE014F5F5F4F67E1C70106DE65 +:100C800080EC898301E010E020E030E0AE014F5FAE +:100C90005F4F67EBC701FADD80E4898301E010E074 +:100CA00020E030E0AE014F5F5F4F6BEBC701EEDD40 +:100CB00080E090E008C08FEF9FEF05C08FEF9FEFBF +:100CC00002C08FEF9FEF0F90DF91CF911F910F9197 +:100CD000FF90EF9008950F931F93CF93DF9382308F +:100CE000910510F482E090E0E091883FF091893F17 +:100CF00020E030E0A0E0B0E0309719F14081518170 +:100D00000281138148175907C8F08417950769F4C1 +:100D1000109731F012960C93129713961C9327C0DC +:100D20000093883F1093893F22C02115310519F0A7 +:100D30004217530718F49A01BD01EF01DF01F801D2 +:100D4000DBCF21153105F9F0281B390B2430310593 +:100D500080F48A819B816115710521F0FB018283FA +:100D6000938304C08093883F9093893FFE0132961D +:100D700044C0FE01E20FF31F819391932250310989 +:100D8000288339833AC02091863F3091873F232BB7 +:100D900041F42091023F3091033F2093863F3093EE +:100DA000873F2091003F3091013F2115310541F4EB +:100DB0002DB73EB74091043F5091053F241B350BA2 +:100DC000E091863FF091873FE217F307A0F42E1BD6 +:100DD0003F0B2817390778F0AC014E5F5F4F24179F +:100DE000350748F04E0F5F1F4093863F5093873F73 +:100DF0008193919302C0E0E0F0E0CF01DF91CF91C9 +:100E00001F910F910895CF93DF93009709F481C04C +:100E1000FC01329712821382A091883FB091893FE2 +:100E2000109781F420813181820F931F2091863F9A +:100E30003091873F2817390751F5E093863FF093AB +:100E4000873F67C0ED0120E030E0CE17DF0740F4B8 +:100E50004A815B819E0141155105F1F0EA01F5CF10 +:100E6000C283D38340815181840F951FC817D9074E +:100E700059F488819981840F951F0296808391830C +:100E80008A819B81828393832115310529F4E09324 +:100E9000883FF093893F3DC0E901EA83FB83499194 +:100EA0005991C40FD51FEC17FD0761F48081918122 +:100EB000840F951F0296E90188839983828193812B +:100EC0008A839B83E0E0F0E012968D919C911397CA +:100ED000009719F0FD01DC01F7CF8D919C911197DE +:100EE0009D012E5F3F4F820F931F2091863F3091CF +:100EF000873F2817390769F4309729F41092883F03 +:100F00001092893F02C012821382A093863FB09351 +:100F1000873FDF91CF910895FB01DC0102C0019072 +:100F20000D9241505040D8F7089503D08081992701 +:100F30000895FC01E050FC4E0895262FAF93BF9317 +:100F4000E0E0F0E1328131FDFDCFDC01A050BC4E8C +:100F50002C932DE924BF23E020830196BF91AF910C +:060F60000895F894FFCF94 +:060F660000008A3F20009C :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 215d4eb..b9a181c 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 00000fd2 00001066 2**0 + 0 .data 00000006 00803f00 00000f66 00000ffa 2**0 CONTENTS, ALLOC, LOAD, DATA - 1 .text 00000fd2 00000000 00000000 00000094 2**1 + 1 .text 00000f66 00000000 00000000 00000094 2**1 CONTENTS, ALLOC, LOAD, READONLY, CODE - 2 .bss 00000066 00803f06 00803f06 0000106c 2**0 + 2 .bss 00000084 00803f06 00803f06 00001000 2**0 ALLOC - 3 .comment 00000030 00000000 00000000 0000106c 2**0 + 3 .comment 00000030 00000000 00000000 00001000 2**0 CONTENTS, READONLY - 4 .note.gnu.avr.deviceinfo 0000003c 00000000 00000000 0000109c 2**2 + 4 .note.gnu.avr.deviceinfo 0000003c 00000000 00000000 00001030 2**2 CONTENTS, READONLY - 5 .debug_aranges 00000248 00000000 00000000 000010d8 2**3 + 5 .debug_aranges 00000238 00000000 00000000 00001070 2**3 CONTENTS, READONLY, DEBUGGING - 6 .debug_info 000058ba 00000000 00000000 00001320 2**0 + 6 .debug_info 00004ff6 00000000 00000000 000012a8 2**0 CONTENTS, READONLY, DEBUGGING - 7 .debug_abbrev 00001e89 00000000 00000000 00006bda 2**0 + 7 .debug_abbrev 00001d79 00000000 00000000 0000629e 2**0 CONTENTS, READONLY, DEBUGGING - 8 .debug_line 00001854 00000000 00000000 00008a63 2**0 + 8 .debug_line 00001678 00000000 00000000 00008017 2**0 CONTENTS, READONLY, DEBUGGING - 9 .debug_frame 0000062c 00000000 00000000 0000a2b8 2**2 + 9 .debug_frame 000005d8 00000000 00000000 00009690 2**2 CONTENTS, READONLY, DEBUGGING - 10 .debug_str 000022b9 00000000 00000000 0000a8e4 2**0 + 10 .debug_str 00002145 00000000 00000000 00009c68 2**0 CONTENTS, READONLY, DEBUGGING - 11 .debug_loc 0000257b 00000000 00000000 0000cb9d 2**0 + 11 .debug_loc 00001f43 00000000 00000000 0000bdad 2**0 CONTENTS, READONLY, DEBUGGING - 12 .debug_ranges 00000230 00000000 00000000 0000f118 2**0 + 12 .debug_ranges 000001c0 00000000 00000000 0000dcf0 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: 5c c1 rjmp .+696 ; 0x2e6 <__vector_22> + 2c: 94 c1 rjmp .+808 ; 0x356 <__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: ac 36 cpi r26, 0x6C ; 108 + 4a: aa 38 cpi r26, 0x8A ; 138 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: e2 ed ldi r30, 0xD2 ; 210 + 56: e6 e6 ldi r30, 0x66 ; 102 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: b8 d3 rcall .+1904 ; 0x7d8
- 68: b2 c7 rjmp .+3940 ; 0xfce <_exit> + 66: f0 d3 rcall .+2016 ; 0x848
+ 68: 7c c7 rjmp .+3832 ; 0xf62 <_exit> 0000006a <__bad_interrupt>: 6a: ca cf rjmp .-108 ; 0x0 <__vectors> @@ -117,2771 +117,2567 @@ void cm_EEPROM_write(uint8_t *address, uint8_t *data, uint8_t length) { 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 + 7a: a1 f0 breq .+40 ; 0xa4 <__EEPROM_REGION_LENGTH__+0x24> + 7c: 8b 01 movw r16, r22 + 7e: c8 2f mov r28, r24 + 80: d9 2f mov r29, r25 + 82: 41 50 subi r20, 0x01 ; 1 + 84: e4 2e mov r14, r20 + 86: f1 2c mov r15, r1 + 88: 8f ef ldi r24, 0xFF ; 255 + 8a: e8 1a sub r14, r24 + 8c: f8 0a sbc r15, r24 + 8e: e6 0e add r14, r22 + 90: 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: 88 d7 rcall .+3856 ; 0xfa6 - 96: 0f 5f subi r16, 0xFF ; 255 - 98: 1f 4f sbci r17, 0xFF ; 255 + 92: f8 01 movw r30, r16 + 94: 61 91 ld r22, Z+ + 96: 8f 01 movw r16, r30 + 98: ce 01 movw r24, r28 + 9a: 4f d7 rcall .+3742 ; 0xf3a + 9c: 21 96 adiw r28, 0x01 ; 1 #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> + 9e: 0e 15 cp r16, r14 + a0: 1f 05 cpc r17, r15 + a2: b9 f7 brne .-18 ; 0x92 <__EEPROM_REGION_LENGTH__+0x12> // Write data to address + i.. eeprom_write_byte(address+i,data[i]); } } - 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 + a4: df 91 pop r29 + a6: cf 91 pop r28 + a8: 1f 91 pop r17 + aa: 0f 91 pop r16 + ac: ff 90 pop r15 + ae: ef 90 pop r14 + b0: 08 95 ret -000000ae : +000000b2 : 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 + b2: ef 92 push r14 + b4: ff 92 push r15 + b6: 0f 93 push r16 + b8: 1f 93 push r17 + ba: cf 93 push r28 + bc: df 93 push r29 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 + be: 44 23 and r20, r20 + c0: a1 f0 breq .+40 ; 0xea + c2: c8 2f mov r28, r24 + c4: d9 2f mov r29, r25 + c6: 8b 01 movw r16, r22 + c8: 41 50 subi r20, 0x01 ; 1 + ca: e4 2e mov r14, r20 + cc: f1 2c mov r15, r1 + ce: 8f ef ldi r24, 0xFF ; 255 + d0: e8 1a sub r14, r24 + d2: f8 0a sbc r15, r24 + d4: e6 0e add r14, r22 + d6: f7 1e adc r15, r23 data[i] = eeprom_read_byte(address+i); - d2: c8 01 movw r24, r16 - d4: 60 d7 rcall .+3776 ; 0xf96 - d6: 89 93 st Y+, r24 - d8: 0f 5f subi r16, 0xFF ; 255 - da: 1f 4f sbci r17, 0xFF ; 255 + d8: ce 01 movw r24, r28 + da: 27 d7 rcall .+3662 ; 0xf2a + dc: f8 01 movw r30, r16 + de: 81 93 st Z+, r24 + e0: 8f 01 movw r16, r30 + e2: 21 96 adiw r28, 0x01 ; 1 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 + e4: ee 15 cp r30, r14 + e6: ff 05 cpc r31, r15 + e8: b9 f7 brne .-18 ; 0xd8 data[i] = eeprom_read_byte(address+i); } } - 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 + ea: df 91 pop r29 + ec: cf 91 pop r28 + ee: 1f 91 pop r17 + f0: 0f 91 pop r16 + f2: ff 90 pop r15 + f4: ef 90 pop r14 + f6: 08 95 ret -000000f0 : +000000f8 : 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> + f8: 81 11 cpse r24, r1 + fa: 0b c0 rjmp .+22 ; 0x112 <__DATA_REGION_LENGTH__+0x12> { 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 + fc: 80 91 08 04 lds r24, 0x0408 ; 0x800408 <__RODATA_PM_OFFSET__+0x7f8408> + 100: 90 e0 ldi r25, 0x00 ; 0 + 102: 02 c0 rjmp .+4 ; 0x108 <__DATA_REGION_LENGTH__+0x8> + 104: 95 95 asr r25 + 106: 87 95 ror r24 + 108: 6a 95 dec r22 + 10a: e2 f7 brpl .-8 ; 0x104 <__DATA_REGION_LENGTH__+0x4> + 10c: 81 70 andi r24, 0x01 ; 1 + 10e: 99 27 eor r25, r25 + 110: 08 95 ret break; default: break; } return 0; - 10a: 80 e0 ldi r24, 0x00 ; 0 - 10c: 90 e0 ldi r25, 0x00 ; 0 + 112: 80 e0 ldi r24, 0x00 ; 0 + 114: 90 e0 ldi r25, 0x00 ; 0 } - 10e: 08 95 ret + 116: 08 95 ret -00000110 : - while (!(TWI0.MSTATUS & TWI_WIF_bm)); +00000118 : + *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 +} + 118: 80 93 17 08 sts 0x0817, r24 ; 0x800817 <__RODATA_PM_OFFSET__+0x7f8817> + 11c: e0 e1 ldi r30, 0x10 ; 16 + 11e: f8 e0 ldi r31, 0x08 ; 8 + 120: 85 81 ldd r24, Z+5 ; 0x05 + 122: 80 7c andi r24, 0xC0 ; 192 + 124: e9 f3 breq .-6 ; 0x120 + 126: 90 91 15 08 lds r25, 0x0815 ; 0x800815 <__RODATA_PM_OFFSET__+0x7f8815> + 12a: 89 2f mov r24, r25 + 12c: 80 71 andi r24, 0x10 ; 16 + 12e: 94 ff sbrs r25, 4 + 130: 04 c0 rjmp .+8 ; 0x13a + 132: 83 e0 ldi r24, 0x03 ; 3 + 134: 80 93 14 08 sts 0x0814, r24 ; 0x800814 <__RODATA_PM_OFFSET__+0x7f8814> + 138: 81 e0 ldi r24, 0x01 ; 1 + 13a: 08 95 ret -0000018c : - 18c: b6 2f mov r27, r22 - 18e: a7 2f mov r26, r23 - 190: 90 91 15 08 lds r25, 0x0815 ; 0x800815 <__RODATA_PM_OFFSET__+0x7f8815> - 194: 93 70 andi r25, 0x03 ; 3 - 196: 91 30 cpi r25, 0x01 ; 1 - 198: d9 f7 brne .-10 ; 0x190 - 19a: 21 15 cp r18, r1 - 19c: 31 05 cpc r19, r1 - 19e: 41 05 cpc r20, r1 - 1a0: 51 05 cpc r21, r1 - 1a2: 69 f1 breq .+90 ; 0x1fe - 1a4: 81 60 ori r24, 0x01 ; 1 - 1a6: 80 93 17 08 sts 0x0817, r24 ; 0x800817 <__RODATA_PM_OFFSET__+0x7f8817> - 1aa: 80 91 15 08 lds r24, 0x0815 ; 0x800815 <__RODATA_PM_OFFSET__+0x7f8815> - 1ae: 80 7c andi r24, 0xC0 ; 192 - 1b0: e1 f3 breq .-8 ; 0x1aa - 1b2: 80 91 15 08 lds r24, 0x0815 ; 0x800815 <__RODATA_PM_OFFSET__+0x7f8815> - 1b6: 84 fd sbrc r24, 4 - 1b8: 1c c0 rjmp .+56 ; 0x1f2 - 1ba: ba 01 movw r22, r20 - 1bc: a9 01 movw r20, r18 - 1be: 41 50 subi r20, 0x01 ; 1 - 1c0: 51 09 sbc r21, r1 - 1c2: 61 09 sbc r22, r1 - 1c4: 71 09 sbc r23, r1 - 1c6: eb 2f mov r30, r27 - 1c8: fa 2f mov r31, r26 - 1ca: 92 e0 ldi r25, 0x02 ; 2 - 1cc: 80 91 15 08 lds r24, 0x0815 ; 0x800815 <__RODATA_PM_OFFSET__+0x7f8815> - 1d0: 80 7c andi r24, 0xC0 ; 192 - 1d2: e1 f3 breq .-8 ; 0x1cc - 1d4: 80 91 18 08 lds r24, 0x0818 ; 0x800818 <__RODATA_PM_OFFSET__+0x7f8818> - 1d8: 81 93 st Z+, r24 - 1da: 41 15 cp r20, r1 - 1dc: 51 05 cpc r21, r1 - 1de: 61 05 cpc r22, r1 - 1e0: 71 05 cpc r23, r1 - 1e2: 81 f0 breq .+32 ; 0x204 - 1e4: 90 93 14 08 sts 0x0814, r25 ; 0x800814 <__RODATA_PM_OFFSET__+0x7f8814> - 1e8: 41 50 subi r20, 0x01 ; 1 - 1ea: 51 09 sbc r21, r1 - 1ec: 61 09 sbc r22, r1 - 1ee: 71 09 sbc r23, r1 - 1f0: ed cf rjmp .-38 ; 0x1cc - 1f2: 83 e0 ldi r24, 0x03 ; 3 - 1f4: 80 93 14 08 sts 0x0814, r24 ; 0x800814 <__RODATA_PM_OFFSET__+0x7f8814> - 1f8: 8f ef ldi r24, 0xFF ; 255 - 1fa: 9f ef ldi r25, 0xFF ; 255 - 1fc: 08 95 ret - 1fe: 81 e0 ldi r24, 0x01 ; 1 - 200: 90 e0 ldi r25, 0x00 ; 0 - 202: 08 95 ret - 204: 84 e0 ldi r24, 0x04 ; 4 - 206: 80 93 14 08 sts 0x0814, r24 ; 0x800814 <__RODATA_PM_OFFSET__+0x7f8814> - 20a: 83 e0 ldi r24, 0x03 ; 3 - 20c: 80 93 14 08 sts 0x0814, r24 ; 0x800814 <__RODATA_PM_OFFSET__+0x7f8814> - 210: 80 e0 ldi r24, 0x00 ; 0 - 212: 90 e0 ldi r25, 0x00 ; 0 - 214: 08 95 ret +0000013c : -00000216 : +int i2c_write(uint8_t dev_addr, void *data, uint32_t len){ + 13c: cf 92 push r12 + 13e: df 92 push r13 + 140: ef 92 push r14 + 142: ff 92 push r15 + 144: cf 93 push r28 + 146: df 93 push r29 + 148: d6 2f mov r29, r22 + 14a: c7 2f mov r28, r23 + 14c: 69 01 movw r12, r18 + 14e: 7a 01 movw r14, r20 + + // Wait for the bus to become idle or we already own it + while ((TWI0.MSTATUS & TWI_BUSSTATE_gm) != TWI_BUSSTATE_IDLE_gc); + 150: e0 e1 ldi r30, 0x10 ; 16 + 152: f8 e0 ldi r31, 0x08 ; 8 + 154: 95 81 ldd r25, Z+5 ; 0x05 + 156: 93 70 andi r25, 0x03 ; 3 + 158: 91 30 cpi r25, 0x01 ; 1 + 15a: e1 f7 brne .-8 ; 0x154 + + // Check length + if(len == 0) return CM_I2C_NOK; + 15c: c1 14 cp r12, r1 + 15e: d1 04 cpc r13, r1 + 160: e1 04 cpc r14, r1 + 162: f1 04 cpc r15, r1 + 164: 89 f1 breq .+98 ; 0x1c8 + + // 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; + 166: d8 df rcall .-80 ; 0x118 + 168: 81 11 cpse r24, r1 + 16a: 31 c0 rjmp .+98 ; 0x1ce + 16c: ad 2f mov r26, r29 + 16e: bc 2f mov r27, r28 + + do + { + // Prepare and send new data. + TWI0.MDATA = *dp++; + 170: e0 e1 ldi r30, 0x10 ; 16 + 172: f8 e0 ldi r31, 0x08 ; 8 + 174: 8d 91 ld r24, X+ + 176: 80 87 std Z+8, r24 ; 0x08 + + while (!(TWI0.MSTATUS & TWI_WIF_bm)); + 178: 85 81 ldd r24, Z+5 ; 0x05 + 17a: 86 ff sbrs r24, 6 + 17c: fd cf rjmp .-6 ; 0x178 + + if (TWI0.MSTATUS & TWI_RXACK_bm) { + 17e: 85 81 ldd r24, Z+5 ; 0x05 + 180: 84 ff sbrs r24, 4 + 182: 06 c0 rjmp .+12 ; 0x190 + // NACK received + TWI0.MCTRLB = TWI_MCMD_STOP_gc; // Send stop condition + 184: 83 e0 ldi r24, 0x03 ; 3 + 186: 80 93 14 08 sts 0x0814, r24 ; 0x800814 <__RODATA_PM_OFFSET__+0x7f8814> + return 1; // Error: NACK received + 18a: 81 e0 ldi r24, 0x01 ; 1 + 18c: 90 e0 ldi r25, 0x00 ; 0 + 18e: 21 c0 rjmp .+66 ; 0x1d2 + } + + // Check for bus error and reset if it happens.. + if (TWI0.MSTATUS & (TWI_ARBLOST_bm | TWI_BUSERR_bm)) { + 190: 85 81 ldd r24, Z+5 ; 0x05 + 192: 8c 70 andi r24, 0x0C ; 12 + 194: 51 f0 breq .+20 ; 0x1aa + return 0; } +static void i2c_reset() +{ + TWI0.MCTRLB |= TWI_FLUSH_bm; + 196: e0 e1 ldi r30, 0x10 ; 16 + 198: f8 e0 ldi r31, 0x08 ; 8 + 19a: 84 81 ldd r24, Z+4 ; 0x04 + 19c: 88 60 ori r24, 0x08 ; 8 + 19e: 84 83 std Z+4, r24 ; 0x04 + TWI0.MSTATUS = TWI_BUSSTATE_IDLE_gc; + 1a0: 81 e0 ldi r24, 0x01 ; 1 + 1a2: 85 83 std Z+5, r24 ; 0x05 + } + + // Check for bus error and reset if it happens.. + if (TWI0.MSTATUS & (TWI_ARBLOST_bm | TWI_BUSERR_bm)) { + i2c_reset(); + return 1; + 1a4: 81 e0 ldi r24, 0x01 ; 1 + 1a6: 90 e0 ldi r25, 0x00 ; 0 + 1a8: 14 c0 rjmp .+40 ; 0x1d2 + } -int cm_i2c_init(void *i2c_inst){ + if (TWI0.MSTATUS & TWI_RXACK_bm) + 1aa: 85 81 ldd r24, Z+5 ; 0x05 + 1ac: 84 fd sbrc r24, 4 + 1ae: 06 c0 rjmp .+12 ; 0x1bc + break; + + }while(--len); + 1b0: 81 e0 ldi r24, 0x01 ; 1 + 1b2: c8 1a sub r12, r24 + 1b4: d1 08 sbc r13, r1 + 1b6: e1 08 sbc r14, r1 + 1b8: f1 08 sbc r15, r1 + 1ba: e1 f6 brne .-72 ; 0x174 + + // Send stop condition + TWI0.MCTRLB = TWI_MCMD_STOP_gc; + 1bc: 83 e0 ldi r24, 0x03 ; 3 + 1be: 80 93 14 08 sts 0x0814, r24 ; 0x800814 <__RODATA_PM_OFFSET__+0x7f8814> + + + return CM_I2C_OK; + 1c2: 80 e0 ldi r24, 0x00 ; 0 + 1c4: 90 e0 ldi r25, 0x00 ; 0 + 1c6: 05 c0 rjmp .+10 ; 0x1d2 + + // Wait for the bus to become idle or we already own it + while ((TWI0.MSTATUS & TWI_BUSSTATE_gm) != TWI_BUSSTATE_IDLE_gc); + + // Check length + if(len == 0) return CM_I2C_NOK; + 1c8: 8f ef ldi r24, 0xFF ; 255 + 1ca: 9f ef ldi r25, 0xFF ; 255 + 1cc: 02 c0 rjmp .+4 ; 0x1d2 + + // 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; + 1ce: 8f ef ldi r24, 0xFF ; 255 + 1d0: 9f ef ldi r25, 0xFF ; 255 + // Send stop condition + TWI0.MCTRLB = TWI_MCMD_STOP_gc; + - PORTA.DIR &= ~(1 << 2); // Clear bit 2 (PA2) - 216: e0 e0 ldi r30, 0x00 ; 0 - 218: f4 e0 ldi r31, 0x04 ; 4 - 21a: 80 81 ld r24, Z - 21c: 8b 7f andi r24, 0xFB ; 251 - 21e: 80 83 st Z, r24 - PORTA.DIR &= ~(1 << 3); // Clear bit 3 (PA3) - 220: 80 81 ld r24, Z - 222: 87 7f andi r24, 0xF7 ; 247 - 224: 80 83 st Z, r24 - - // Set the baud rate for 100kHz with a typical rise time of 300 ns - TWI0.MBAUD = 11; - 226: a0 e1 ldi r26, 0x10 ; 16 - 228: b8 e0 ldi r27, 0x08 ; 8 - 22a: 8b e0 ldi r24, 0x0B ; 11 - 22c: 16 96 adiw r26, 0x06 ; 6 - 22e: 8c 93 st X, r24 - 230: 16 97 sbiw r26, 0x06 ; 6 - - // Enable the TWI master and set it to enable operation - TWI0.MCTRLA = TWI_ENABLE_bm; - 232: 81 e0 ldi r24, 0x01 ; 1 - 234: 13 96 adiw r26, 0x03 ; 3 - 236: 8c 93 st X, r24 - 238: 13 97 sbiw r26, 0x03 ; 3 - - /* Set bus state idle */ - TWI0.MSTATUS = TWI_BUSSTATE_IDLE_gc; - 23a: 15 96 adiw r26, 0x05 ; 5 - 23c: 8c 93 st X, r24 - - // Enable the internal pull-ups for PA2 (SDA) and PA3 (SCL) - PORTA.PIN2CTRL = PORT_PULLUPEN_bm; - 23e: 88 e0 ldi r24, 0x08 ; 8 - 240: 82 8b std Z+18, r24 ; 0x12 - PORTA.PIN3CTRL = PORT_PULLUPEN_bm; - 242: 83 8b std Z+19, r24 ; 0x13 return CM_I2C_OK; } - 244: 80 e0 ldi r24, 0x00 ; 0 - 246: 90 e0 ldi r25, 0x00 ; 0 - 248: 08 95 ret + 1d2: df 91 pop r29 + 1d4: cf 91 pop r28 + 1d6: ff 90 pop r15 + 1d8: ef 90 pop r14 + 1da: df 90 pop r13 + 1dc: cf 90 pop r12 + 1de: 08 95 ret -0000024a : +000001e0 : +int i2c_read(uint8_t dev_addr, void *data, uint32_t len){ + 1e0: cf 92 push r12 + 1e2: df 92 push r13 + 1e4: ef 92 push r14 + 1e6: ff 92 push r15 + 1e8: cf 93 push r28 + 1ea: df 93 push r29 + + // Wait for the bus to become idle or we already own it + while ((TWI0.MSTATUS & TWI_BUSSTATE_gm) != TWI_BUSSTATE_IDLE_gc); + 1ec: e0 e1 ldi r30, 0x10 ; 16 + 1ee: f8 e0 ldi r31, 0x08 ; 8 + 1f0: 95 81 ldd r25, Z+5 ; 0x05 + 1f2: 93 70 andi r25, 0x03 ; 3 + 1f4: 91 30 cpi r25, 0x01 ; 1 + 1f6: e1 f7 brne .-8 ; 0x1f0 + + uint8_t *dp = data; + if (len == 0) + 1f8: 21 15 cp r18, r1 + 1fa: 31 05 cpc r19, r1 + 1fc: 41 05 cpc r20, r1 + 1fe: 51 05 cpc r21, r1 + 200: 11 f1 breq .+68 ; 0x246 + 202: 69 01 movw r12, r18 + 204: 7a 01 movw r14, r20 + 206: c7 2f mov r28, r23 + 208: d6 2f mov r29, r22 + return 1; -int cm_i2c_addDev(cm_i2c_device_t *inst, void *i2c_inst, uint8_t dev_addr){ - 24a: fc 01 movw r30, r24 + // 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; + 20a: 81 60 ori r24, 0x01 ; 1 + 20c: 85 df rcall .-246 ; 0x118 + 20e: 88 23 and r24, r24 + 210: 01 f1 breq .+64 ; 0x252 + 212: 1c c0 rjmp .+56 ; 0x24c - //if(i2c_inst == NULL) return CM_I2C_NOK; + while (len--) { + + while (!(TWI0.MSTATUS & (TWI_WIF_bm | TWI_RIF_bm))); + 214: 85 81 ldd r24, Z+5 ; 0x05 + 216: 80 7c andi r24, 0xC0 ; 192 + 218: e9 f3 breq .-6 ; 0x214 + + *dp++ = TWI0.MDATA; + 21a: 80 85 ldd r24, Z+8 ; 0x08 + 21c: 8d 93 st X+, r24 + if (len == 0) { + 21e: 41 15 cp r20, r1 + 220: 51 05 cpc r21, r1 + 222: 61 05 cpc r22, r1 + 224: 71 05 cpc r23, r1 + 226: 49 f4 brne .+18 ; 0x23a + TWI0.MCTRLB = TWI_ACKACT_NACK_gc; + 228: e0 e1 ldi r30, 0x10 ; 16 + 22a: f8 e0 ldi r31, 0x08 ; 8 + 22c: 84 e0 ldi r24, 0x04 ; 4 + 22e: 84 83 std Z+4, r24 ; 0x04 + TWI0.MCTRLB = TWI_ACKACT_ACK_gc | TWI_MCMD_RECVTRANS_gc; + } + } + + // Send stop condition + TWI0.MCTRLB = TWI_MCMD_STOP_gc; + 230: 83 e0 ldi r24, 0x03 ; 3 + 232: 84 83 std Z+4, r24 ; 0x04 - // Check if device responds! - if(i2c_IsDeviceReady((dev_addr << 1)) != CM_I2C_OK)return CM_I2C_NO_DEVICE; - 24c: 84 2f mov r24, r20 - 24e: 88 0f add r24, r24 + return 0; + 234: 80 e0 ldi r24, 0x00 ; 0 + 236: 90 e0 ldi r25, 0x00 ; 0 + 238: 18 c0 rjmp .+48 ; 0x26a + + *dp++ = TWI0.MDATA; + if (len == 0) { + TWI0.MCTRLB = TWI_ACKACT_NACK_gc; + } else { + TWI0.MCTRLB = TWI_ACKACT_ACK_gc | TWI_MCMD_RECVTRANS_gc; + 23a: 94 83 std Z+4, r25 ; 0x04 + 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--) { + 23c: 41 50 subi r20, 0x01 ; 1 + 23e: 51 09 sbc r21, r1 + 240: 61 09 sbc r22, r1 + 242: 71 09 sbc r23, r1 + 244: e7 cf rjmp .-50 ; 0x214 + while ((TWI0.MSTATUS & TWI_BUSSTATE_gm) != TWI_BUSSTATE_IDLE_gc); + + uint8_t *dp = data; + + if (len == 0) + return 1; + 246: 81 e0 ldi r24, 0x01 ; 1 + 248: 90 e0 ldi r25, 0x00 ; 0 + 24a: 0f c0 rjmp .+30 ; 0x26a + + // 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; + 24c: 8f ef ldi r24, 0xFF ; 255 + 24e: 9f ef ldi r25, 0xFF ; 255 + 250: 0c c0 rjmp .+24 ; 0x26a + + while (len--) { + 252: b7 01 movw r22, r14 + 254: a6 01 movw r20, r12 + 256: 41 50 subi r20, 0x01 ; 1 + 258: 51 09 sbc r21, r1 + 25a: 61 09 sbc r22, r1 + 25c: 71 09 sbc r23, r1 + 25e: ad 2f mov r26, r29 + 260: bc 2f mov r27, r28 + + while (!(TWI0.MSTATUS & (TWI_WIF_bm | TWI_RIF_bm))); + 262: e0 e1 ldi r30, 0x10 ; 16 + 264: f8 e0 ldi r31, 0x08 ; 8 + + *dp++ = TWI0.MDATA; + if (len == 0) { + TWI0.MCTRLB = TWI_ACKACT_NACK_gc; + } else { + TWI0.MCTRLB = TWI_ACKACT_ACK_gc | TWI_MCMD_RECVTRANS_gc; + 266: 92 e0 ldi r25, 0x02 ; 2 + 268: d5 cf rjmp .-86 ; 0x214 + TWI0.MCTRLB = TWI_MCMD_STOP_gc; + + return 0; + + } + 26a: df 91 pop r29 + 26c: cf 91 pop r28 + 26e: ff 90 pop r15 + 270: ef 90 pop r14 + 272: df 90 pop r13 + 274: cf 90 pop r12 + 276: 08 95 ret + +00000278 : int i2c_IsDeviceReady(uint8_t dev_addr){ // Wait for the bus to become idle or we already own it while ((TWI0.MSTATUS & TWI_BUSSTATE_gm) != TWI_BUSSTATE_IDLE_gc); - 250: 90 91 15 08 lds r25, 0x0815 ; 0x800815 <__RODATA_PM_OFFSET__+0x7f8815> - 254: 93 70 andi r25, 0x03 ; 3 - 256: 91 30 cpi r25, 0x01 ; 1 - 258: d9 f7 brne .-10 ; 0x250 + 278: e0 e1 ldi r30, 0x10 ; 16 + 27a: f8 e0 ldi r31, 0x08 ; 8 + 27c: 95 81 ldd r25, Z+5 ; 0x05 + 27e: 93 70 andi r25, 0x03 ; 3 + 280: 91 30 cpi r25, 0x01 ; 1 + 282: e1 f7 brne .-8 ; 0x27c TWI0.MADDR = dev_addr | 0; - 25a: 80 93 17 08 sts 0x0817, r24 ; 0x800817 <__RODATA_PM_OFFSET__+0x7f8817> + 284: 80 93 17 08 sts 0x0817, r24 ; 0x800817 <__RODATA_PM_OFFSET__+0x7f8817> // Wait for acknowledgment while (!(TWI0.MSTATUS & TWI_WIF_bm)); - 25e: 90 91 15 08 lds r25, 0x0815 ; 0x800815 <__RODATA_PM_OFFSET__+0x7f8815> - 262: 96 ff sbrs r25, 6 - 264: fc cf rjmp .-8 ; 0x25e + 288: e0 e1 ldi r30, 0x10 ; 16 + 28a: f8 e0 ldi r31, 0x08 ; 8 + 28c: 85 81 ldd r24, Z+5 ; 0x05 + 28e: 86 ff sbrs r24, 6 + 290: fd cf rjmp .-6 ; 0x28c if (TWI0.MSTATUS & TWI_RXACK_bm) { - 266: 80 91 15 08 lds r24, 0x0815 ; 0x800815 <__RODATA_PM_OFFSET__+0x7f8815> - 26a: 84 ff sbrs r24, 4 - 26c: 06 c0 rjmp .+12 ; 0x27a + 292: 80 91 15 08 lds r24, 0x0815 ; 0x800815 <__RODATA_PM_OFFSET__+0x7f8815> + 296: 84 ff sbrs r24, 4 + 298: 06 c0 rjmp .+12 ; 0x2a6 // NACK received TWI0.MCTRLB = TWI_MCMD_STOP_gc; // Send stop condition - 26e: 83 e0 ldi r24, 0x03 ; 3 - 270: 80 93 14 08 sts 0x0814, r24 ; 0x800814 <__RODATA_PM_OFFSET__+0x7f8814> + 29a: 83 e0 ldi r24, 0x03 ; 3 + 29c: 80 93 14 08 sts 0x0814, r24 ; 0x800814 <__RODATA_PM_OFFSET__+0x7f8814> + return 1; // Error: NACK received + 2a0: 81 e0 ldi r24, 0x01 ; 1 + 2a2: 90 e0 ldi r25, 0x00 ; 0 + 2a4: 08 95 ret + } + + // Send stop condition + TWI0.MCTRLB = TWI_MCMD_STOP_gc; + 2a6: 83 e0 ldi r24, 0x03 ; 3 + 2a8: 80 93 14 08 sts 0x0814, r24 ; 0x800814 <__RODATA_PM_OFFSET__+0x7f8814> + return CM_I2C_OK; // Success + 2ac: 80 e0 ldi r24, 0x00 ; 0 + 2ae: 90 e0 ldi r25, 0x00 ; 0 + +} + 2b0: 08 95 ret + +000002b2 : + + +int cm_i2c_init(void *i2c_inst){ + + PORTA.DIR &= ~(1 << 2); // Clear bit 2 (PA2) + 2b2: e0 e0 ldi r30, 0x00 ; 0 + 2b4: f4 e0 ldi r31, 0x04 ; 4 + 2b6: 80 81 ld r24, Z + 2b8: 8b 7f andi r24, 0xFB ; 251 + 2ba: 80 83 st Z, r24 + PORTA.DIR &= ~(1 << 3); // Clear bit 3 (PA3) + 2bc: 80 81 ld r24, Z + 2be: 87 7f andi r24, 0xF7 ; 247 + 2c0: 80 83 st Z, r24 + + // Set the baud rate for 100kHz with a typical rise time of 300 ns + TWI0.MBAUD = 11; + 2c2: a0 e1 ldi r26, 0x10 ; 16 + 2c4: b8 e0 ldi r27, 0x08 ; 8 + 2c6: 8b e0 ldi r24, 0x0B ; 11 + 2c8: 16 96 adiw r26, 0x06 ; 6 + 2ca: 8c 93 st X, r24 + 2cc: 16 97 sbiw r26, 0x06 ; 6 + + // Enable the TWI master and set it to enable operation + TWI0.MCTRLA = TWI_ENABLE_bm; + 2ce: 81 e0 ldi r24, 0x01 ; 1 + 2d0: 13 96 adiw r26, 0x03 ; 3 + 2d2: 8c 93 st X, r24 + 2d4: 13 97 sbiw r26, 0x03 ; 3 + + /* Set bus state idle */ + TWI0.MSTATUS = TWI_BUSSTATE_IDLE_gc; + 2d6: 15 96 adiw r26, 0x05 ; 5 + 2d8: 8c 93 st X, r24 + + // Enable the internal pull-ups for PA2 (SDA) and PA3 (SCL) + PORTA.PIN2CTRL = PORT_PULLUPEN_bm; + 2da: 88 e0 ldi r24, 0x08 ; 8 + 2dc: 82 8b std Z+18, r24 ; 0x12 + PORTA.PIN3CTRL = PORT_PULLUPEN_bm; + 2de: 83 8b std Z+19, r24 ; 0x13 + return CM_I2C_OK; +} + 2e0: 80 e0 ldi r24, 0x00 ; 0 + 2e2: 90 e0 ldi r25, 0x00 ; 0 + 2e4: 08 95 ret + +000002e6 : + + + +int cm_i2c_addDev(cm_i2c_device_t *inst, void *i2c_inst, uint8_t dev_addr){ + 2e6: ef 92 push r14 + 2e8: ff 92 push r15 + 2ea: 0f 93 push r16 + 2ec: 1f 93 push r17 + 2ee: cf 93 push r28 + 2f0: 8c 01 movw r16, r24 + 2f2: 7b 01 movw r14, r22 + 2f4: 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; + 2f6: 84 2f mov r24, r20 + 2f8: 88 0f add r24, r24 + 2fa: be df rcall .-132 ; 0x278 + 2fc: 00 97 sbiw r24, 0x00 ; 0 + 2fe: 49 f4 brne .+18 ; 0x312 + + // add device info if device responds! + inst->i2c_transfer_inst = i2c_inst; + 300: f8 01 movw r30, r16 + 302: e0 82 st Z, r14 + 304: f1 82 std Z+1, r15 ; 0x01 + inst->dev_addr = (dev_addr << 1) & 0b11111110; + 306: 4c 2f mov r20, r28 + 308: 50 e0 ldi r21, 0x00 ; 0 + 30a: 44 0f add r20, r20 + 30c: 55 1f adc r21, r21 + 30e: 42 83 std Z+2, r20 ; 0x02 + + return CM_I2C_OK; + 310: 02 c0 rjmp .+4 ; 0x316 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; - 274: 8e ef ldi r24, 0xFE ; 254 - 276: 9f ef ldi r25, 0xFF ; 255 - 278: 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; - 27a: 83 e0 ldi r24, 0x03 ; 3 - 27c: 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; - + 312: 8e ef ldi r24, 0xFE ; 254 + 314: 9f ef ldi r25, 0xFF ; 255 // add device info if device responds! inst->i2c_transfer_inst = i2c_inst; - 280: 60 83 st Z, r22 - 282: 71 83 std Z+1, r23 ; 0x01 inst->dev_addr = (dev_addr << 1) & 0b11111110; - 284: 50 e0 ldi r21, 0x00 ; 0 - 286: 44 0f add r20, r20 - 288: 55 1f adc r21, r21 - 28a: 42 83 std Z+2, r20 ; 0x02 return CM_I2C_OK; - 28c: 80 e0 ldi r24, 0x00 ; 0 - 28e: 90 e0 ldi r25, 0x00 ; 0 } - 290: 08 95 ret + 316: cf 91 pop r28 + 318: 1f 91 pop r17 + 31a: 0f 91 pop r16 + 31c: ff 90 pop r15 + 31e: ef 90 pop r14 + 320: 08 95 ret -00000292 : +00000322 : int cm_i2c_transfer(cm_i2c_device_t *inst, uint8_t *data, uint32_t len, i2c_setget_cm_t set_get){ - 292: 0f 93 push r16 + 322: 0f 93 push r16 if(inst == NULL) return CM_I2C_NOK; - 294: 00 97 sbiw r24, 0x00 ; 0 - 296: 21 f1 breq .+72 ; 0x2e0 - 298: db 01 movw r26, r22 - 29a: fc 01 movw r30, r24 + 324: 00 97 sbiw r24, 0x00 ; 0 + 326: 81 f0 breq .+32 ; 0x348 + 328: 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){ - 29c: 00 23 and r16, r16 - 29e: d1 f0 breq .+52 ; 0x2d4 - 2a0: 01 30 cpi r16, 0x01 ; 1 - 2a2: 21 f0 breq .+8 ; 0x2ac - break; + 32a: 00 23 and r16, r16 + 32c: 19 f0 breq .+6 ; 0x334 + 32e: 01 30 cpi r16, 0x01 ; 1 + 330: 31 f0 breq .+12 ; 0x33e + 332: 0d c0 rjmp .+26 ; 0x34e - - } - - return CM_I2C_OK; - 2a4: 80 e0 ldi r24, 0x00 ; 0 - 2a6: 90 e0 ldi r25, 0x00 ; 0 - -} - 2a8: 0f 91 pop r16 - 2aa: 08 95 ret -} - -int i2c_write(uint8_t dev_addr, void *data, uint32_t len){ - - // Wait for the bus to become idle or we already own it - while ((TWI0.MSTATUS & TWI_BUSSTATE_gm) != TWI_BUSSTATE_IDLE_gc); - 2ac: 90 91 15 08 lds r25, 0x0815 ; 0x800815 <__RODATA_PM_OFFSET__+0x7f8815> - 2b0: 93 70 andi r25, 0x03 ; 3 - 2b2: 91 30 cpi r25, 0x01 ; 1 - 2b4: d9 f7 brne .-10 ; 0x2ac - - // Check length - if(len == 0) return CM_I2C_NOK; - 2b6: 21 15 cp r18, r1 - 2b8: 31 05 cpc r19, r1 - 2ba: 41 05 cpc r20, r1 - 2bc: 51 05 cpc r21, r1 - 2be: 91 f3 breq .-28 ; 0x2a4 + 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); - 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); - 2c0: 82 81 ldd r24, Z+2 ; 0x02 - -#ifdef AVR_ATTINY_402 - -uint8_t i2c_write_devAddr(uint8_t dev_addr){ - - TWI0.MADDR = dev_addr; - 2c2: 80 93 17 08 sts 0x0817, r24 ; 0x800817 <__RODATA_PM_OFFSET__+0x7f8817> - 2c6: ba 01 movw r22, r20 - 2c8: a9 01 movw r20, r18 - 2ca: cd 01 movw r24, r26 - 2cc: 21 df rcall .-446 ; 0x110 + 334: 82 81 ldd r24, Z+2 ; 0x02 + 336: 54 df rcall .-344 ; 0x1e0 break; } return CM_I2C_OK; - 2ce: 80 e0 ldi r24, 0x00 ; 0 - 2d0: 90 e0 ldi r25, 0x00 ; 0 - 2d2: ea cf rjmp .-44 ; 0x2a8 - + 338: 80 e0 ldi r24, 0x00 ; 0 + 33a: 90 e0 ldi r25, 0x00 ; 0 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); - 2d4: 82 81 ldd r24, Z+2 ; 0x02 - 2d6: 5a df rcall .-332 ; 0x18c + break; + 33c: 0a c0 rjmp .+20 ; 0x352 + + 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); + 33e: 82 81 ldd r24, Z+2 ; 0x02 + 340: fd de rcall .-518 ; 0x13c break; } return CM_I2C_OK; - 2d8: 80 e0 ldi r24, 0x00 ; 0 - 2da: 90 e0 ldi r25, 0x00 ; 0 + 342: 80 e0 ldi r24, 0x00 ; 0 + 344: 90 e0 ldi r25, 0x00 ; 0 + break; -} - 2dc: 0f 91 pop r16 - 2de: 08 95 ret + 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); + break; + 346: 05 c0 rjmp .+10 ; 0x352 } 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; - 2e0: 8f ef ldi r24, 0xFF ; 255 - 2e2: 9f ef ldi r25, 0xFF ; 255 - 2e4: e1 cf rjmp .-62 ; 0x2a8 + 348: 8f ef ldi r24, 0xFF ; 255 + 34a: 9f ef ldi r25, 0xFF ; 255 + 34c: 02 c0 rjmp .+4 ; 0x352 + break; -000002e6 <__vector_22>: + + } + + return CM_I2C_OK; + 34e: 80 e0 ldi r24, 0x00 ; 0 + 350: 90 e0 ldi r25, 0x00 ; 0 + +} + 352: 0f 91 pop r16 + 354: 08 95 ret + +00000356 <__vector_22>: #define BAUD_RATE 9600 static void *s_inst = NULL; get_UART_Event_fpt uart_rx_evt_fpt = NULL; ISR(USART0_RXC_vect) { - 2e6: 1f 92 push r1 - 2e8: 0f 92 push r0 - 2ea: 0f b6 in r0, 0x3f ; 63 - 2ec: 0f 92 push r0 - 2ee: 11 24 eor r1, r1 - 2f0: 2f 93 push r18 - 2f2: 3f 93 push r19 - 2f4: 4f 93 push r20 - 2f6: 5f 93 push r21 - 2f8: 6f 93 push r22 - 2fa: 7f 93 push r23 - 2fc: 8f 93 push r24 - 2fe: 9f 93 push r25 - 300: af 93 push r26 - 302: bf 93 push r27 - 304: ef 93 push r30 - 306: ff 93 push r31 - 308: cf 93 push r28 - 30a: df 93 push r29 - 30c: 1f 92 push r1 - 30e: cd b7 in r28, 0x3d ; 61 - 310: de b7 in r29, 0x3e ; 62 - // Read received data - if(uart_rx_evt_fpt != NULL){ - 312: e0 91 06 3f lds r30, 0x3F06 ; 0x803f06 <__data_end> - 316: f0 91 07 3f lds r31, 0x3F07 ; 0x803f07 <__data_end+0x1> - uart_rx_evt_fpt(USART0.RXDATAL); - 31a: 80 91 00 08 lds r24, 0x0800 ; 0x800800 <__RODATA_PM_OFFSET__+0x7f8800> -static void *s_inst = NULL; - get_UART_Event_fpt uart_rx_evt_fpt = NULL; - -ISR(USART0_RXC_vect) { - // Read received data - if(uart_rx_evt_fpt != NULL){ - 31e: 30 97 sbiw r30, 0x00 ; 0 - 320: a9 f0 breq .+42 ; 0x34c <__vector_22+0x66> - uart_rx_evt_fpt(USART0.RXDATAL); - 322: 09 95 icall - // Dummy read!! - volatile uint8_t dummy = USART0.RXDATAL; - - } - -} - 324: 0f 90 pop r0 - 326: df 91 pop r29 - 328: cf 91 pop r28 - 32a: ff 91 pop r31 - 32c: ef 91 pop r30 - 32e: bf 91 pop r27 - 330: af 91 pop r26 - 332: 9f 91 pop r25 - 334: 8f 91 pop r24 - 336: 7f 91 pop r23 - 338: 6f 91 pop r22 - 33a: 5f 91 pop r21 - 33c: 4f 91 pop r20 - 33e: 3f 91 pop r19 - 340: 2f 91 pop r18 - 342: 0f 90 pop r0 - 344: 0f be out 0x3f, r0 ; 63 - 346: 0f 90 pop r0 - 348: 1f 90 pop r1 - 34a: 18 95 reti + 356: 1f 92 push r1 + 358: 0f 92 push r0 + 35a: 0f b6 in r0, 0x3f ; 63 + 35c: 0f 92 push r0 + 35e: 11 24 eor r1, r1 + 360: 2f 93 push r18 + 362: 3f 93 push r19 + 364: 4f 93 push r20 + 366: 5f 93 push r21 + 368: 6f 93 push r22 + 36a: 7f 93 push r23 + 36c: 8f 93 push r24 + 36e: 9f 93 push r25 + 370: af 93 push r26 + 372: bf 93 push r27 + 374: ef 93 push r30 + 376: ff 93 push r31 + 378: cf 93 push r28 + 37a: df 93 push r29 + 37c: 1f 92 push r1 + 37e: cd b7 in r28, 0x3d ; 61 + 380: de b7 in r29, 0x3e ; 62 // Read received data if(uart_rx_evt_fpt != NULL){ + 382: e0 91 06 3f lds r30, 0x3F06 ; 0x803f06 <__data_end> + 386: f0 91 07 3f lds r31, 0x3F07 ; 0x803f07 <__data_end+0x1> + 38a: 30 97 sbiw r30, 0x00 ; 0 + 38c: 21 f0 breq .+8 ; 0x396 <__vector_22+0x40> uart_rx_evt_fpt(USART0.RXDATAL); + 38e: 80 91 00 08 lds r24, 0x0800 ; 0x800800 <__RODATA_PM_OFFSET__+0x7f8800> + 392: 09 95 icall + 394: 03 c0 rjmp .+6 ; 0x39c <__vector_22+0x46> } else { // Dummy read!! volatile uint8_t dummy = USART0.RXDATAL; - 34c: 89 83 std Y+1, r24 ; 0x01 + 396: 80 91 00 08 lds r24, 0x0800 ; 0x800800 <__RODATA_PM_OFFSET__+0x7f8800> + 39a: 89 83 std Y+1, r24 ; 0x01 } } - 34e: ea cf rjmp .-44 ; 0x324 <__vector_22+0x3e> + 39c: 0f 90 pop r0 + 39e: df 91 pop r29 + 3a0: cf 91 pop r28 + 3a2: ff 91 pop r31 + 3a4: ef 91 pop r30 + 3a6: bf 91 pop r27 + 3a8: af 91 pop r26 + 3aa: 9f 91 pop r25 + 3ac: 8f 91 pop r24 + 3ae: 7f 91 pop r23 + 3b0: 6f 91 pop r22 + 3b2: 5f 91 pop r21 + 3b4: 4f 91 pop r20 + 3b6: 3f 91 pop r19 + 3b8: 2f 91 pop r18 + 3ba: 0f 90 pop r0 + 3bc: 0f be out 0x3f, r0 ; 63 + 3be: 0f 90 pop r0 + 3c0: 1f 90 pop r1 + 3c2: 18 95 reti -00000350 : +000003c4 : void cm_uart_init(void *rtx_inst, get_UART_Event_fpt uart_rx_evt_fp){ - 350: cf 93 push r28 - 352: df 93 push r29 - 354: 1f 92 push r1 - 356: cd b7 in r28, 0x3d ; 61 - 358: de b7 in r29, 0x3e ; 62 - 35a: ac 01 movw r20, r24 + 3c4: cf 93 push r28 + 3c6: df 93 push r29 + 3c8: 1f 92 push r1 + 3ca: cd b7 in r28, 0x3d ; 61 + 3cc: de b7 in r29, 0x3e ; 62 + 3ce: ac 01 movw r20, r24 //For interrupt-driven USART operation, global interrupts must be disabled during the initialization cli(); - 35c: f8 94 cli + 3d0: 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; - 35e: 2c e6 ldi r18, 0x6C ; 108 - 360: 35 e0 ldi r19, 0x05 ; 5 - 362: 20 93 08 08 sts 0x0808, r18 ; 0x800808 <__RODATA_PM_OFFSET__+0x7f8808> - 366: 30 93 09 08 sts 0x0809, r19 ; 0x800809 <__RODATA_PM_OFFSET__+0x7f8809> + 3d2: e0 e0 ldi r30, 0x00 ; 0 + 3d4: f8 e0 ldi r31, 0x08 ; 8 + 3d6: 2c e6 ldi r18, 0x6C ; 108 + 3d8: 35 e0 ldi r19, 0x05 ; 5 + 3da: 20 87 std Z+8, r18 ; 0x08 + 3dc: 31 87 std Z+9, r19 ; 0x09 // Configure USART0 for 8-bit data, no parity, 1 stop bit USART0.CTRLC = USART_CMODE_ASYNCHRONOUS_gc | // Asynchronous mode - 36a: 93 e0 ldi r25, 0x03 ; 3 - 36c: 90 93 07 08 sts 0x0807, r25 ; 0x800807 <__RODATA_PM_OFFSET__+0x7f8807> + 3de: 93 e0 ldi r25, 0x03 ; 3 + 3e0: 97 83 std Z+7, r25 ; 0x07 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 - 370: 90 ec ldi r25, 0xC0 ; 192 - 372: 90 93 06 08 sts 0x0806, r25 ; 0x800806 <__RODATA_PM_OFFSET__+0x7f8806> + 3e2: 90 ec ldi r25, 0xC0 ; 192 + 3e4: 96 83 std Z+6, r25 ; 0x06 USART_TXEN_bm; // Enable transmitter if((uart_rx_evt_fp != NULL) || (rtx_inst != NULL)){ - 376: 61 15 cp r22, r1 - 378: 71 05 cpc r23, r1 - 37a: d1 f0 breq .+52 ; 0x3b0 + 3e6: 61 15 cp r22, r1 + 3e8: 71 05 cpc r23, r1 + 3ea: 11 f4 brne .+4 ; 0x3f0 + 3ec: 45 2b or r20, r21 + 3ee: 39 f0 breq .+14 ; 0x3fe // Enable RX interrupt USART0.CTRLA = USART_RXCIE_bm; // Enable receive interrupt - 37c: 80 e8 ldi r24, 0x80 ; 128 - 37e: 80 93 05 08 sts 0x0805, r24 ; 0x800805 <__RODATA_PM_OFFSET__+0x7f8805> + 3f0: 80 e8 ldi r24, 0x80 ; 128 + 3f2: 80 93 05 08 sts 0x0805, r24 ; 0x800805 <__RODATA_PM_OFFSET__+0x7f8805> s_inst = rtx_inst; uart_rx_evt_fpt = uart_rx_evt_fp; - 382: 60 93 06 3f sts 0x3F06, r22 ; 0x803f06 <__data_end> - 386: 70 93 07 3f sts 0x3F07, r23 ; 0x803f07 <__data_end+0x1> + 3f6: 60 93 06 3f sts 0x3F06, r22 ; 0x803f06 <__data_end> + 3fa: 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) { - 38a: 80 91 04 08 lds r24, 0x0804 ; 0x800804 <__RODATA_PM_OFFSET__+0x7f8804> - 38e: 87 ff sbrs r24, 7 - 390: 04 c0 rjmp .+8 ; 0x39a + 3fe: 80 91 04 08 lds r24, 0x0804 ; 0x800804 <__RODATA_PM_OFFSET__+0x7f8804> + 402: 88 23 and r24, r24 + 404: 24 f4 brge .+8 ; 0x40e <__LOCK_REGION_LENGTH__+0xe> volatile uint8_t dummy = USART0.RXDATAL; // Read RXDATAL to clear the flag - 392: 80 91 00 08 lds r24, 0x0800 ; 0x800800 <__RODATA_PM_OFFSET__+0x7f8800> - 396: 89 83 std Y+1, r24 ; 0x01 + 406: 80 91 00 08 lds r24, 0x0800 ; 0x800800 <__RODATA_PM_OFFSET__+0x7f8800> + 40a: 89 83 std Y+1, r24 ; 0x01 (void)dummy; // Silence unused variable warning - 398: 89 81 ldd r24, Y+1 ; 0x01 + 40c: 89 81 ldd r24, Y+1 ; 0x01 } PORTA.DIRSET = (1 << 6); // Set PA1 (TX) as output - 39a: 80 e4 ldi r24, 0x40 ; 64 - 39c: 80 93 01 04 sts 0x0401, r24 ; 0x800401 <__RODATA_PM_OFFSET__+0x7f8401> + 40e: e0 e0 ldi r30, 0x00 ; 0 + 410: f4 e0 ldi r31, 0x04 ; 4 + 412: 80 e4 ldi r24, 0x40 ; 64 + 414: 81 83 std Z+1, r24 ; 0x01 PORTA.DIRCLR = (1 << 7); // Set PA2 (RX) as input - 3a0: 80 e8 ldi r24, 0x80 ; 128 - 3a2: 80 93 02 04 sts 0x0402, r24 ; 0x800402 <__RODATA_PM_OFFSET__+0x7f8402> + 416: 80 e8 ldi r24, 0x80 ; 128 + 418: 82 83 std Z+2, r24 ; 0x02 // Enable global interrupts sei(); - 3a6: 78 94 sei + 41a: 78 94 sei } - 3a8: 0f 90 pop r0 - 3aa: df 91 pop r29 - 3ac: cf 91 pop r28 - 3ae: 08 95 ret + 41c: 0f 90 pop r0 + 41e: df 91 pop r29 + 420: cf 91 pop r28 + 422: 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)){ - 3b0: 45 2b or r20, r21 - 3b2: 21 f7 brne .-56 ; 0x37c - 3b4: ea cf rjmp .-44 ; 0x38a - -000003b6 : +00000424 : int cm_msgSync_Byte_DecodeSC(uint8_t rx_byte){ static cm_msg_startcode_states_t state = CM_MSGSYNC_STATE_INIT; switch (state) - 3b6: 90 91 41 3f lds r25, 0x3F41 ; 0x803f41 - 3ba: 92 30 cpi r25, 0x02 ; 2 - 3bc: 41 f1 breq .+80 ; 0x40e <__LOCK_REGION_LENGTH__+0xe> - 3be: 60 f4 brcc .+24 ; 0x3d8 - 3c0: 99 23 and r25, r25 - 3c2: e1 f0 breq .+56 ; 0x3fc - 3c4: 91 30 cpi r25, 0x01 ; 1 - 3c6: 89 f4 brne .+34 ; 0x3ea + 424: 90 91 41 3f lds r25, 0x3F41 ; 0x803f41 + 428: 92 30 cpi r25, 0x02 ; 2 + 42a: f1 f0 breq .+60 ; 0x468 + 42c: 28 f4 brcc .+10 ; 0x438 + 42e: 99 23 and r25, r25 + 430: 41 f0 breq .+16 ; 0x442 + 432: 91 30 cpi r25, 0x01 ; 1 + 434: 79 f0 breq .+30 ; 0x454 + 436: 31 c0 rjmp .+98 ; 0x49a + 438: 93 30 cpi r25, 0x03 ; 3 + 43a: 01 f1 breq .+64 ; 0x47c + 43c: 94 30 cpi r25, 0x04 ; 4 + 43e: 41 f1 breq .+80 ; 0x490 + 440: 2c c0 rjmp .+88 ; 0x49a + { 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; - 3c8: 8a 35 cpi r24, 0x5A ; 90 - 3ca: 29 f1 breq .+74 ; 0x416 <__LOCK_REGION_LENGTH__+0x16> - 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; - 3cc: 80 e0 ldi r24, 0x00 ; 0 - 3ce: 80 93 41 3f sts 0x3F41, r24 ; 0x803f41 + 442: 91 e0 ldi r25, 0x01 ; 1 + 444: 8f 34 cpi r24, 0x4F ; 79 + 446: 09 f0 breq .+2 ; 0x44a + 448: 90 e0 ldi r25, 0x00 ; 0 + 44a: 90 93 41 3f sts 0x3F41, r25 ; 0x803f41 default: state = CM_MSGSYNC_STATE_INIT; break; } return 1; - 3d2: 81 e0 ldi r24, 0x01 ; 1 - 3d4: 90 e0 ldi r25, 0x00 ; 0 + 44e: 81 e0 ldi r24, 0x01 ; 1 + 450: 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; + 452: 08 95 ret + + case CM_MSGSYNC_STATE_2: + state = (rx_byte == startCode[state])? CM_MSGSYNC_STATE_3 : CM_MSGSYNC_STATE_INIT; + 454: 8a 35 cpi r24, 0x5A ; 90 + 456: 11 f0 breq .+4 ; 0x45c + 458: 80 e0 ldi r24, 0x00 ; 0 + 45a: 01 c0 rjmp .+2 ; 0x45e + 45c: 82 e0 ldi r24, 0x02 ; 2 + 45e: 80 93 41 3f sts 0x3F41, r24 ; 0x803f41 + default: + state = CM_MSGSYNC_STATE_INIT; + break; + } + + return 1; + 462: 81 e0 ldi r24, 0x01 ; 1 + 464: 90 e0 ldi r25, 0x00 ; 0 + 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; + break; + 466: 08 95 ret + + case CM_MSGSYNC_STATE_3: + state = (rx_byte == startCode[state])? CM_MSGSYNC_STATE_4 : CM_MSGSYNC_STATE_INIT; + 468: 81 33 cpi r24, 0x31 ; 49 + 46a: 11 f0 breq .+4 ; 0x470 + 46c: 80 e0 ldi r24, 0x00 ; 0 + 46e: 01 c0 rjmp .+2 ; 0x472 + 470: 83 e0 ldi r24, 0x03 ; 3 + 472: 80 93 41 3f sts 0x3F41, r24 ; 0x803f41 + default: + state = CM_MSGSYNC_STATE_INIT; + break; + } + + return 1; + 476: 81 e0 ldi r24, 0x01 ; 1 + 478: 90 e0 ldi r25, 0x00 ; 0 + state = (rx_byte == startCode[state])? CM_MSGSYNC_STATE_3 : CM_MSGSYNC_STATE_INIT; + break; + + case CM_MSGSYNC_STATE_3: + state = (rx_byte == startCode[state])? CM_MSGSYNC_STATE_4 : CM_MSGSYNC_STATE_INIT; + break; + 47a: 08 95 ret + + case CM_MSGSYNC_STATE_4: + state = (rx_byte == startCode[state])? CM_MSGSYNC_STATE_5 : CM_MSGSYNC_STATE_INIT; + 47c: 83 34 cpi r24, 0x43 ; 67 + 47e: 11 f0 breq .+4 ; 0x484 + 480: 80 e0 ldi r24, 0x00 ; 0 + 482: 01 c0 rjmp .+2 ; 0x486 + 484: 84 e0 ldi r24, 0x04 ; 4 + 486: 80 93 41 3f sts 0x3F41, r24 ; 0x803f41 + default: + state = CM_MSGSYNC_STATE_INIT; + break; + } + + return 1; + 48a: 81 e0 ldi r24, 0x01 ; 1 + 48c: 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; - 3d6: 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) - 3d8: 93 30 cpi r25, 0x03 ; 3 - 3da: 61 f0 breq .+24 ; 0x3f4 - 3dc: 94 30 cpi r25, 0x04 ; 4 - 3de: 29 f4 brne .+10 ; 0x3ea - case CM_MSGSYNC_STATE_4: - state = (rx_byte == startCode[state])? CM_MSGSYNC_STATE_5 : CM_MSGSYNC_STATE_INIT; - break; + 48e: 08 95 ret case CM_MSGSYNC_STATE_5: state = CM_MSGSYNC_STATE_INIT; - 3e0: 10 92 41 3f sts 0x3F41, r1 ; 0x803f41 + 490: 10 92 41 3f sts 0x3F41, r1 ; 0x803f41 return 0; - 3e4: 80 e0 ldi r24, 0x00 ; 0 - 3e6: 90 e0 ldi r25, 0x00 ; 0 - 3e8: 08 95 ret + 494: 80 e0 ldi r24, 0x00 ; 0 + 496: 90 e0 ldi r25, 0x00 ; 0 + 498: 08 95 ret break; default: state = CM_MSGSYNC_STATE_INIT; - 3ea: 10 92 41 3f sts 0x3F41, r1 ; 0x803f41 + 49a: 10 92 41 3f sts 0x3F41, r1 ; 0x803f41 break; } return 1; - 3ee: 81 e0 ldi r24, 0x01 ; 1 - 3f0: 90 e0 ldi r25, 0x00 ; 0 + 49e: 81 e0 ldi r24, 0x01 ; 1 + 4a0: 90 e0 ldi r25, 0x00 ; 0 } - 3f2: 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; - 3f4: 83 34 cpi r24, 0x43 ; 67 - 3f6: 51 f7 brne .-44 ; 0x3cc - 3f8: 84 e0 ldi r24, 0x04 ; 4 - 3fa: e9 cf rjmp .-46 ; 0x3ce - 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; - 3fc: 91 e0 ldi r25, 0x01 ; 1 - 3fe: 8f 34 cpi r24, 0x4F ; 79 - 400: 09 f0 breq .+2 ; 0x404 <__LOCK_REGION_LENGTH__+0x4> - 402: 90 e0 ldi r25, 0x00 ; 0 - 404: 90 93 41 3f sts 0x3F41, r25 ; 0x803f41 - default: - state = CM_MSGSYNC_STATE_INIT; - break; - } - - return 1; - 408: 81 e0 ldi r24, 0x01 ; 1 - 40a: 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; - 40c: 08 95 ret - case CM_MSGSYNC_STATE_2: - state = (rx_byte == startCode[state])? CM_MSGSYNC_STATE_3 : CM_MSGSYNC_STATE_INIT; - break; - - case CM_MSGSYNC_STATE_3: - state = (rx_byte == startCode[state])? CM_MSGSYNC_STATE_4 : CM_MSGSYNC_STATE_INIT; - 40e: 81 33 cpi r24, 0x31 ; 49 - 410: e9 f6 brne .-70 ; 0x3cc - 412: 83 e0 ldi r24, 0x03 ; 3 - 414: dc cf rjmp .-72 ; 0x3ce - 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; - 416: 82 e0 ldi r24, 0x02 ; 2 - 418: da cf rjmp .-76 ; 0x3ce + 4a2: 08 95 ret -0000041a : +000004a4 : 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) - 41a: 90 91 40 3f lds r25, 0x3F40 ; 0x803f40 - 41e: 93 30 cpi r25, 0x03 ; 3 - 420: 09 f4 brne .+2 ; 0x424 - 422: 4b c0 rjmp .+150 ; 0x4ba - 424: 68 f4 brcc .+26 ; 0x440 - 426: 99 23 and r25, r25 - 428: 09 f4 brne .+2 ; 0x42c - 42a: 40 c0 rjmp .+128 ; 0x4ac - 42c: 91 30 cpi r25, 0x01 ; 1 - 42e: 29 f4 brne .+10 ; 0x43a + 4a4: 90 91 40 3f lds r25, 0x3F40 ; 0x803f40 + 4a8: 93 30 cpi r25, 0x03 ; 3 + 4aa: d1 f0 breq .+52 ; 0x4e0 + 4ac: 28 f4 brcc .+10 ; 0x4b8 + 4ae: 99 23 and r25, r25 + 4b0: 41 f0 breq .+16 ; 0x4c2 + 4b2: 91 30 cpi r25, 0x01 ; 1 + 4b4: 79 f0 breq .+30 ; 0x4d4 + 4b6: 47 c0 rjmp .+142 ; 0x546 + 4b8: 94 30 cpi r25, 0x04 ; 4 + 4ba: d1 f0 breq .+52 ; 0x4f0 + 4bc: 95 30 cpi r25, 0x05 ; 5 + 4be: 29 f1 breq .+74 ; 0x50a + 4c0: 42 c0 rjmp .+132 ; 0x546 + { + case CM_MSG_WAIT_FOR_STARTCODE: if(!cm_msgSync_Byte_DecodeSC(rx_byte)) state = CM_MSG_DECODE_STATE_GET_SIZE_BYTE; + 4c2: b0 df rcall .-160 ; 0x424 + 4c4: 89 2b or r24, r25 + 4c6: 19 f4 brne .+6 ; 0x4ce + 4c8: 81 e0 ldi r24, 0x01 ; 1 + 4ca: 80 93 40 3f sts 0x3F40, r24 ; 0x803f40 data_bytes_idx = 0; + 4ce: 10 92 3f 3f sts 0x3F3F, r1 ; 0x803f3f break; + 4d2: 39 c0 rjmp .+114 ; 0x546 case CM_MSG_DECODE_STATE_GET_SIZE_BYTE: msg.msg_data_size = rx_byte; - 430: 80 93 08 3f sts 0x3F08, r24 ; 0x803f08 + 4d4: 80 93 08 3f sts 0x3F08, r24 ; 0x803f08 state = CM_MSG_DECODE_STATE_GET_CRC_BYTE1; - 434: 83 e0 ldi r24, 0x03 ; 3 - 436: 80 93 40 3f sts 0x3F40, r24 ; 0x803f40 - - } + 4d8: 83 e0 ldi r24, 0x03 ; 3 + 4da: 80 93 40 3f sts 0x3F40, r24 ; 0x803f40 + break; - } - return 0; -} - 43a: 80 e0 ldi r24, 0x00 ; 0 - 43c: 90 e0 ldi r25, 0x00 ; 0 - 43e: 08 95 ret - - 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) - 440: 94 30 cpi r25, 0x04 ; 4 - 442: 19 f1 breq .+70 ; 0x48a - 444: 95 30 cpi r25, 0x05 ; 5 - 446: c9 f7 brne .-14 ; 0x43a + 4de: 33 c0 rjmp .+102 ; 0x546 + + case CM_MSG_DECODE_STATE_GET_CRC_BYTE1: + msg.msg_data_crc = (rx_byte << 8) & 0xff00; + 4e0: e8 e0 ldi r30, 0x08 ; 8 + 4e2: ff e3 ldi r31, 0x3F ; 63 + 4e4: 11 82 std Z+1, r1 ; 0x01 + 4e6: 82 83 std Z+2, r24 ; 0x02 + state = CM_MSG_DECODE_STATE_GET_CRC_BYTE2; + 4e8: 84 e0 ldi r24, 0x04 ; 4 + 4ea: 80 93 40 3f sts 0x3F40, r24 ; 0x803f40 + break; + 4ee: 2b c0 rjmp .+86 ; 0x546 + + case CM_MSG_DECODE_STATE_GET_CRC_BYTE2: msg.msg_data_crc |= rx_byte & 0xff; + 4f0: e8 e0 ldi r30, 0x08 ; 8 + 4f2: ff e3 ldi r31, 0x3F ; 63 + 4f4: 21 81 ldd r18, Z+1 ; 0x01 + 4f6: 32 81 ldd r19, Z+2 ; 0x02 + 4f8: a9 01 movw r20, r18 + 4fa: 48 2b or r20, r24 + 4fc: ca 01 movw r24, r20 + 4fe: 81 83 std Z+1, r24 ; 0x01 + 500: 92 83 std Z+2, r25 ; 0x02 state = CM_MSG_DECODE_STATE_GET_DATA; + 502: 85 e0 ldi r24, 0x05 ; 5 + 504: 80 93 40 3f sts 0x3F40, r24 ; 0x803f40 break; + 508: 1e c0 rjmp .+60 ; 0x546 case CM_MSG_DECODE_STATE_GET_DATA: msg.msg_data[data_bytes_idx] = rx_byte; - 448: 90 91 3f 3f lds r25, 0x3F3F ; 0x803f3f - 44c: e9 2f mov r30, r25 - 44e: f0 e0 ldi r31, 0x00 ; 0 - 450: e8 5f subi r30, 0xF8 ; 248 - 452: f0 4c sbci r31, 0xC0 ; 192 - 454: 83 83 std Z+3, r24 ; 0x03 + 50a: 90 91 3f 3f lds r25, 0x3F3F ; 0x803f3f + 50e: e9 2f mov r30, r25 + 510: f0 e0 ldi r31, 0x00 ; 0 + 512: e8 5f subi r30, 0xF8 ; 248 + 514: f0 4c sbci r31, 0xC0 ; 192 + 516: 83 83 std Z+3, r24 ; 0x03 data_bytes_idx++; - 456: 81 e0 ldi r24, 0x01 ; 1 - 458: 89 0f add r24, r25 - 45a: 80 93 3f 3f sts 0x3F3F, r24 ; 0x803f3f + 518: 81 e0 ldi r24, 0x01 ; 1 + 51a: 89 0f add r24, r25 + 51c: 80 93 3f 3f sts 0x3F3F, r24 ; 0x803f3f if(data_bytes_idx >= msg.msg_data_size){ - 45e: 90 91 08 3f lds r25, 0x3F08 ; 0x803f08 - 462: 89 17 cp r24, r25 - 464: 50 f3 brcs .-44 ; 0x43a + 520: 90 91 08 3f lds r25, 0x3F08 ; 0x803f08 + 524: 89 17 cp r24, r25 + 526: 78 f0 brcs .+30 ; 0x546 // calculate CRC.. // Run function pointer msg evt.. s_msg_cmplete_evt_fpt(s_msg_cmplete_evt_inst,&(msg.msg_data[0])); - 466: e0 91 44 3f lds r30, 0x3F44 ; 0x803f44 - 46a: f0 91 45 3f lds r31, 0x3F45 ; 0x803f45 - 46e: 6b e0 ldi r22, 0x0B ; 11 - 470: 7f e3 ldi r23, 0x3F ; 63 - 472: 80 91 42 3f lds r24, 0x3F42 ; 0x803f42 - 476: 90 91 43 3f lds r25, 0x3F43 ; 0x803f43 - 47a: 09 95 icall + 528: e0 91 44 3f lds r30, 0x3F44 ; 0x803f44 + 52c: f0 91 45 3f lds r31, 0x3F45 ; 0x803f45 + 530: 6b e0 ldi r22, 0x0B ; 11 + 532: 7f e3 ldi r23, 0x3F ; 63 + 534: 80 91 42 3f lds r24, 0x3F42 ; 0x803f42 + 538: 90 91 43 3f lds r25, 0x3F43 ; 0x803f43 + 53c: 09 95 icall state = CM_MSG_WAIT_FOR_STARTCODE; - 47c: 10 92 40 3f sts 0x3F40, r1 ; 0x803f40 + 53e: 10 92 40 3f sts 0x3F40, r1 ; 0x803f40 data_bytes_idx = 0; - 480: 10 92 3f 3f sts 0x3F3F, r1 ; 0x803f3f + 542: 10 92 3f 3f sts 0x3F3F, r1 ; 0x803f3f } break; } return 0; } - 484: 80 e0 ldi r24, 0x00 ; 0 - 486: 90 e0 ldi r25, 0x00 ; 0 - 488: 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; - 48a: 20 91 09 3f lds r18, 0x3F09 ; 0x803f09 - 48e: 30 91 0a 3f lds r19, 0x3F0A ; 0x803f0a - 492: a9 01 movw r20, r18 - 494: 48 2b or r20, r24 - 496: ca 01 movw r24, r20 - 498: 80 93 09 3f sts 0x3F09, r24 ; 0x803f09 - 49c: 90 93 0a 3f sts 0x3F0A, r25 ; 0x803f0a - state = CM_MSG_DECODE_STATE_GET_DATA; - 4a0: 85 e0 ldi r24, 0x05 ; 5 - 4a2: 80 93 40 3f sts 0x3F40, r24 ; 0x803f40 - - } - break; - } - return 0; -} - 4a6: 80 e0 ldi r24, 0x00 ; 0 - 4a8: 90 e0 ldi r25, 0x00 ; 0 - 4aa: 08 95 ret - static uint8_t data_bytes_idx = 0; - - switch (state) - { - case CM_MSG_WAIT_FOR_STARTCODE: - if(!cm_msgSync_Byte_DecodeSC(rx_byte)) state = CM_MSG_DECODE_STATE_GET_SIZE_BYTE; - 4ac: 84 df rcall .-248 ; 0x3b6 - 4ae: 89 2b or r24, r25 - 4b0: 39 f7 brne .-50 ; 0x480 - 4b2: 81 e0 ldi r24, 0x01 ; 1 - 4b4: 80 93 40 3f sts 0x3F40, r24 ; 0x803f40 - 4b8: e3 cf rjmp .-58 ; 0x480 - 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; - 4ba: 10 92 09 3f sts 0x3F09, r1 ; 0x803f09 - 4be: 80 93 0a 3f sts 0x3F0A, r24 ; 0x803f0a - state = CM_MSG_DECODE_STATE_GET_CRC_BYTE2; - 4c2: 84 e0 ldi r24, 0x04 ; 4 - 4c4: 80 93 40 3f sts 0x3F40, r24 ; 0x803f40 - - } - break; - } - return 0; -} - 4c8: 80 e0 ldi r24, 0x00 ; 0 - 4ca: 90 e0 ldi r25, 0x00 ; 0 - 4cc: 08 95 ret + 546: 80 e0 ldi r24, 0x00 ; 0 + 548: 90 e0 ldi r25, 0x00 ; 0 + 54a: 08 95 ret -000004ce : +0000054c : 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; - 4ce: 00 97 sbiw r24, 0x00 ; 0 - 4d0: 59 f0 breq .+22 ; 0x4e8 - 4d2: 61 15 cp r22, r1 - 4d4: 71 05 cpc r23, r1 - 4d6: 41 f0 breq .+16 ; 0x4e8 + 54c: 00 97 sbiw r24, 0x00 ; 0 + 54e: 59 f0 breq .+22 ; 0x566 + 550: 61 15 cp r22, r1 + 552: 71 05 cpc r23, r1 + 554: 41 f0 breq .+16 ; 0x566 s_msg_cmplete_evt_inst = msg_cmplete_evt_inst; - 4d8: 80 93 42 3f sts 0x3F42, r24 ; 0x803f42 - 4dc: 90 93 43 3f sts 0x3F43, r25 ; 0x803f43 + 556: 80 93 42 3f sts 0x3F42, r24 ; 0x803f42 + 55a: 90 93 43 3f sts 0x3F43, r25 ; 0x803f43 s_msg_cmplete_evt_fpt = msg_cmplete_evt_fp; - 4e0: 60 93 44 3f sts 0x3F44, r22 ; 0x803f44 - 4e4: 70 93 45 3f sts 0x3F45, r23 ; 0x803f45 - 4e8: 08 95 ret + 55e: 60 93 44 3f sts 0x3F44, r22 ; 0x803f44 + 562: 70 93 45 3f sts 0x3F45, r23 ; 0x803f45 + 566: 08 95 ret -000004ea : - if(inst == NULL)return 1; - - return 0; -} - -static void cqm6xx_app_updateOsc(storno_xtal_app_t *inst){ - 4ea: cf 93 push r28 - 4ec: df 93 push r29 - 4ee: 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; - 4f0: 82 81 ldd r24, Z+2 ; 0x02 - 4f2: 93 81 ldd r25, Z+3 ; 0x03 - 4f4: 00 97 sbiw r24, 0x00 ; 0 - 4f6: a9 f0 breq .+42 ; 0x522 - if(inst == NULL)return 1; - 4f8: 30 97 sbiw r30, 0x00 ; 0 - 4fa: 99 f0 breq .+38 ; 0x522 - - // 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; - 4fc: 21 81 ldd r18, Z+1 ; 0x01 - 4fe: 30 81 ld r19, Z - 500: 23 17 cp r18, r19 - 502: 79 f0 breq .+30 ; 0x522 - 504: ef 01 movw r28, r30 - - switch(inst->state_next){ - 506: 21 30 cpi r18, 0x01 ; 1 - 508: 79 f0 breq .+30 ; 0x528 - 50a: 22 30 cpi r18, 0x02 ; 2 - 50c: 51 f4 brne .+20 ; 0x522 - - break; - - case STORNO_APP_TX_MODE: - //_delay_ms(1); - cm_setOutputEnable(inst->si5351_dev,SI5351_OUTPUT_0,SI5351_OUTPUT_DISABLE); // RX - 50e: 41 e0 ldi r20, 0x01 ; 1 - 510: 60 e0 ldi r22, 0x00 ; 0 - 512: d9 d2 rcall .+1458 ; 0xac6 - //_delay_ms(1); - cm_setOutputEnable(inst->si5351_dev,SI5351_OUTPUT_1,SI5351_OUTPUT_ENABLE); // TX - 514: 40 e0 ldi r20, 0x00 ; 0 - 516: 61 e0 ldi r22, 0x01 ; 1 - 518: 8a 81 ldd r24, Y+2 ; 0x02 - 51a: 9b 81 ldd r25, Y+3 ; 0x03 - break; - - } +00000568 : + // Send status back maybe.. + //Force state machine to load new settings from eeprom: + inst->state_next = STORNO_APP_PROGRAM_OSC; } - 51c: df 91 pop r29 - 51e: 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 - 520: d2 c2 rjmp .+1444 ; 0xac6 - break; - - } - - -} - 522: df 91 pop r29 - 524: cf 91 pop r28 - 526: 08 95 ret - - switch(inst->state_next){ - - case STORNO_APP_RX_MODE: - //_delay_ms(1); - cm_setOutputEnable(inst->si5351_dev,SI5351_OUTPUT_0,SI5351_OUTPUT_ENABLE); // RX - 528: 40 e0 ldi r20, 0x00 ; 0 - 52a: 60 e0 ldi r22, 0x00 ; 0 - 52c: cc d2 rcall .+1432 ; 0xac6 - //_delay_ms(1); - cm_setOutputEnable(inst->si5351_dev,SI5351_OUTPUT_1,SI5351_OUTPUT_DISABLE); // TX - 52e: 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 - 530: 61 e0 ldi r22, 0x01 ; 1 - 532: 8a 81 ldd r24, Y+2 ; 0x02 - 534: 9b 81 ldd r25, Y+3 ; 0x03 - break; - - } - - -} - 536: df 91 pop r29 - 538: 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 - 53a: c5 c2 rjmp .+1418 ; 0xac6 - -0000053c : - } - - -} - -static void cqm_setPLLParam(storno_xtal_app_t *inst, si5351_PLLs pll_num, si5351_Outputs output){ - 53c: 9f 92 push r9 - 53e: af 92 push r10 - 540: bf 92 push r11 - 542: cf 92 push r12 - 544: df 92 push r13 - 546: ef 92 push r14 - 548: ff 92 push r15 - 54a: 0f 93 push r16 - 54c: 1f 93 push r17 - 54e: cf 93 push r28 - 550: df 93 push r29 - 552: ec 01 movw r28, r24 - 554: 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); - 556: ad 84 ldd r10, Y+13 ; 0x0d - 558: be 84 ldd r11, Y+14 ; 0x0e - 55a: cf 84 ldd r12, Y+15 ; 0x0f - 55c: d8 88 ldd r13, Y+16 ; 0x10 - 55e: e9 84 ldd r14, Y+9 ; 0x09 - 560: fa 84 ldd r15, Y+10 ; 0x0a - 562: 0b 85 ldd r16, Y+11 ; 0x0b - 564: 1c 85 ldd r17, Y+12 ; 0x0c - 566: 2d 81 ldd r18, Y+5 ; 0x05 - 568: 3e 81 ldd r19, Y+6 ; 0x06 - 56a: 4f 81 ldd r20, Y+7 ; 0x07 - 56c: 58 85 ldd r21, Y+8 ; 0x08 - 56e: 8a 81 ldd r24, Y+2 ; 0x02 - 570: 9b 81 ldd r25, Y+3 ; 0x03 - 572: 9a d1 rcall .+820 ; 0x8a8 - //_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); - 574: a9 8c ldd r10, Y+25 ; 0x19 - 576: ba 8c ldd r11, Y+26 ; 0x1a - 578: cb 8c ldd r12, Y+27 ; 0x1b - 57a: dc 8c ldd r13, Y+28 ; 0x1c - 57c: ed 88 ldd r14, Y+21 ; 0x15 - 57e: fe 88 ldd r15, Y+22 ; 0x16 - 580: 0f 89 ldd r16, Y+23 ; 0x17 - 582: 18 8d ldd r17, Y+24 ; 0x18 - 584: 29 89 ldd r18, Y+17 ; 0x11 - 586: 3a 89 ldd r19, Y+18 ; 0x12 - 588: 4b 89 ldd r20, Y+19 ; 0x13 - 58a: 5c 89 ldd r21, Y+20 ; 0x14 - 58c: 69 2d mov r22, r9 - 58e: 8a 81 ldd r24, Y+2 ; 0x02 - 590: 9b 81 ldd r25, Y+3 ; 0x03 - 592: 05 d2 rcall .+1034 ; 0x99e - //_delay_ms(1); - cm_setCLKControl(inst->si5351_dev,output,SI5351_CLK_POWER_UP); - 594: 40 e0 ldi r20, 0x00 ; 0 - 596: 69 2d mov r22, r9 + 568: cf 93 push r28 + 56a: df 93 push r29 + 56c: fc 01 movw r30, r24 + 56e: 82 81 ldd r24, Z+2 ; 0x02 + 570: 93 81 ldd r25, Z+3 ; 0x03 + 572: 00 97 sbiw r24, 0x00 ; 0 + 574: e9 f0 breq .+58 ; 0x5b0 + 576: 30 97 sbiw r30, 0x00 ; 0 + 578: d9 f0 breq .+54 ; 0x5b0 + 57a: 21 81 ldd r18, Z+1 ; 0x01 + 57c: 30 81 ld r19, Z + 57e: 23 17 cp r18, r19 + 580: b9 f0 breq .+46 ; 0x5b0 + 582: ef 01 movw r28, r30 + 584: 21 30 cpi r18, 0x01 ; 1 + 586: 19 f0 breq .+6 ; 0x58e + 588: 22 30 cpi r18, 0x02 ; 2 + 58a: 51 f0 breq .+20 ; 0x5a0 + 58c: 11 c0 rjmp .+34 ; 0x5b0 + 58e: 40 e0 ldi r20, 0x00 ; 0 + 590: 60 e0 ldi r22, 0x00 ; 0 + 592: 0e d2 rcall .+1052 ; 0x9b0 + 594: 41 e0 ldi r20, 0x01 ; 1 + 596: 61 e0 ldi r22, 0x01 ; 1 598: 8a 81 ldd r24, Y+2 ; 0x02 59a: 9b 81 ldd r25, Y+3 ; 0x03 - - -} - 59c: df 91 pop r29 - 59e: cf 91 pop r28 - 5a0: 1f 91 pop r17 - 5a2: 0f 91 pop r16 - 5a4: ff 90 pop r15 - 5a6: ef 90 pop r14 - 5a8: df 90 pop r13 - 5aa: cf 90 pop r12 - 5ac: bf 90 pop r11 - 5ae: af 90 pop r10 - 5b0: 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); - 5b2: b6 c2 rjmp .+1388 ; 0xb20 + 59c: 09 d2 rcall .+1042 ; 0x9b0 + 59e: 08 c0 rjmp .+16 ; 0x5b0 + 5a0: 41 e0 ldi r20, 0x01 ; 1 + 5a2: 60 e0 ldi r22, 0x00 ; 0 + 5a4: 05 d2 rcall .+1034 ; 0x9b0 + 5a6: 40 e0 ldi r20, 0x00 ; 0 + 5a8: 61 e0 ldi r22, 0x01 ; 1 + 5aa: 8a 81 ldd r24, Y+2 ; 0x02 + 5ac: 9b 81 ldd r25, Y+3 ; 0x03 + 5ae: 00 d2 rcall .+1024 ; 0x9b0 + 5b0: df 91 pop r29 + 5b2: cf 91 pop r28 + 5b4: 08 95 ret -000005b4 : +000005b6 : + 5b6: 9f 92 push r9 + 5b8: af 92 push r10 + 5ba: bf 92 push r11 + 5bc: cf 92 push r12 + 5be: df 92 push r13 + 5c0: ef 92 push r14 + 5c2: ff 92 push r15 + 5c4: 0f 93 push r16 + 5c6: 1f 93 push r17 + 5c8: cf 93 push r28 + 5ca: df 93 push r29 + 5cc: ec 01 movw r28, r24 + 5ce: 94 2e mov r9, r20 + 5d0: ad 84 ldd r10, Y+13 ; 0x0d + 5d2: be 84 ldd r11, Y+14 ; 0x0e + 5d4: cf 84 ldd r12, Y+15 ; 0x0f + 5d6: d8 88 ldd r13, Y+16 ; 0x10 + 5d8: e9 84 ldd r14, Y+9 ; 0x09 + 5da: fa 84 ldd r15, Y+10 ; 0x0a + 5dc: 0b 85 ldd r16, Y+11 ; 0x0b + 5de: 1c 85 ldd r17, Y+12 ; 0x0c + 5e0: 2d 81 ldd r18, Y+5 ; 0x05 + 5e2: 3e 81 ldd r19, Y+6 ; 0x06 + 5e4: 4f 81 ldd r20, Y+7 ; 0x07 + 5e6: 58 85 ldd r21, Y+8 ; 0x08 + 5e8: 8a 81 ldd r24, Y+2 ; 0x02 + 5ea: 9b 81 ldd r25, Y+3 ; 0x03 + 5ec: 7d d2 rcall .+1274 ; 0xae8 + 5ee: a9 8c ldd r10, Y+25 ; 0x19 + 5f0: ba 8c ldd r11, Y+26 ; 0x1a + 5f2: cb 8c ldd r12, Y+27 ; 0x1b + 5f4: dc 8c ldd r13, Y+28 ; 0x1c + 5f6: ed 88 ldd r14, Y+21 ; 0x15 + 5f8: fe 88 ldd r15, Y+22 ; 0x16 + 5fa: 0f 89 ldd r16, Y+23 ; 0x17 + 5fc: 18 8d ldd r17, Y+24 ; 0x18 + 5fe: 29 89 ldd r18, Y+17 ; 0x11 + 600: 3a 89 ldd r19, Y+18 ; 0x12 + 602: 4b 89 ldd r20, Y+19 ; 0x13 + 604: 5c 89 ldd r21, Y+20 ; 0x14 + 606: 69 2d mov r22, r9 + 608: 8a 81 ldd r24, Y+2 ; 0x02 + 60a: 9b 81 ldd r25, Y+3 ; 0x03 + 60c: 7b d1 rcall .+758 ; 0x904 + 60e: 40 e0 ldi r20, 0x00 ; 0 + 610: 69 2d mov r22, r9 + 612: 8a 81 ldd r24, Y+2 ; 0x02 + 614: 9b 81 ldd r25, Y+3 ; 0x03 + 616: f3 d1 rcall .+998 ; 0x9fe + 618: df 91 pop r29 + 61a: cf 91 pop r28 + 61c: 1f 91 pop r17 + 61e: 0f 91 pop r16 + 620: ff 90 pop r15 + 622: ef 90 pop r14 + 624: df 90 pop r13 + 626: cf 90 pop r12 + 628: bf 90 pop r11 + 62a: af 90 pop r10 + 62c: 9f 90 pop r9 + 62e: 08 95 ret - - -} +00000630 : + 630: fb 01 movw r30, r22 + 632: 20 81 ld r18, Z + 634: 22 23 and r18, r18 + 636: 19 f0 breq .+6 ; 0x63e + 638: 21 30 cpi r18, 0x01 ; 1 + 63a: 51 f0 breq .+20 ; 0x650 + 63c: 11 c0 rjmp .+34 ; 0x660 + 63e: dc 01 movw r26, r24 + 640: 14 96 adiw r26, 0x04 ; 4 + 642: 8e e1 ldi r24, 0x1E ; 30 + 644: fb 01 movw r30, r22 + 646: 01 90 ld r0, Z+ + 648: 0d 92 st X+, r0 + 64a: 8a 95 dec r24 + 64c: e1 f7 brne .-8 ; 0x646 + 64e: 08 c0 rjmp .+16 ; 0x660 + 650: dc 01 movw r26, r24 + 652: 92 96 adiw r26, 0x22 ; 34 + 654: 8e e1 ldi r24, 0x1E ; 30 + 656: fb 01 movw r30, r22 + 658: 01 90 ld r0, Z+ + 65a: 0d 92 st X+, r0 + 65c: 8a 95 dec r24 + 65e: e1 f7 brne .-8 ; 0x658 + 660: 80 e0 ldi r24, 0x00 ; 0 + 662: 90 e0 ldi r25, 0x00 ; 0 + 664: 08 95 ret -void cqm6xx_app_statemachine(storno_xtal_app_t *inst){ - 5b4: 0f 93 push r16 - 5b6: 1f 93 push r17 - 5b8: cf 93 push r28 - 5ba: 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; - 5bc: fc 01 movw r30, r24 - 5be: 22 81 ldd r18, Z+2 ; 0x02 - 5c0: 33 81 ldd r19, Z+3 ; 0x03 - 5c2: 23 2b or r18, r19 - 5c4: a9 f0 breq .+42 ; 0x5f0 - if(inst == NULL)return 1; - 5c6: 00 97 sbiw r24, 0x00 ; 0 - 5c8: 99 f0 breq .+38 ; 0x5f0 - 5ca: 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) - 5cc: 81 81 ldd r24, Z+1 ; 0x01 - 5ce: 81 30 cpi r24, 0x01 ; 1 - 5d0: 09 f4 brne .+2 ; 0x5d4 - 5d2: 42 c0 rjmp .+132 ; 0x658 - 5d4: 90 f0 brcs .+36 ; 0x5fa - 5d6: 82 30 cpi r24, 0x02 ; 2 - 5d8: 59 f4 brne .+22 ; 0x5f0 - - break; - - case STORNO_APP_TX_MODE: - // If we just came from another state, then Enable TX osc here.. - cqm6xx_app_updateOsc(inst); - 5da: ce 01 movw r24, r28 - 5dc: 86 df rcall .-244 ; 0x4ea - - // Update state now.. - inst->state_now = inst->state_next; - 5de: 89 81 ldd r24, Y+1 ; 0x01 - 5e0: 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; - 5e2: 63 e0 ldi r22, 0x03 ; 3 - 5e4: 80 e0 ldi r24, 0x00 ; 0 - 5e6: 84 dd rcall .-1272 ; 0xf0 - 5e8: 89 2b or r24, r25 - 5ea: 11 f4 brne .+4 ; 0x5f0 - 5ec: 81 e0 ldi r24, 0x01 ; 1 - 5ee: 89 83 std Y+1, r24 ; 0x01 - default: - break; - } - - -} - 5f0: df 91 pop r29 - 5f2: cf 91 pop r28 - 5f4: 1f 91 pop r17 - 5f6: 0f 91 pop r16 - 5f8: 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; - 5fa: 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)); - 5fc: 8e 01 movw r16, r28 - 5fe: 0c 5f subi r16, 0xFC ; 252 - 600: 1f 4f sbci r17, 0xFF ; 255 - 602: 4e e1 ldi r20, 0x1E ; 30 - 604: b8 01 movw r22, r16 - 606: 80 e0 ldi r24, 0x00 ; 0 - 608: 90 e0 ldi r25, 0x00 ; 0 - 60a: 51 dd rcall .-1374 ; 0xae - //_delay_ms(1); - cm_setInputSource(inst->si5351_dev, SI5351_CLK_SOURCE_XTAL); - 60c: 60 e0 ldi r22, 0x00 ; 0 - 60e: 8a 81 ldd r24, Y+2 ; 0x02 - 610: 9b 81 ldd r25, Y+3 ; 0x03 - 612: dc d2 rcall .+1464 ; 0xbcc - //_delay_ms(1); - - - cqm_setPLLParam(inst, SI5351_PLL_A, SI5351_OUTPUT_0); - 614: 40 e0 ldi r20, 0x00 ; 0 - 616: 60 e0 ldi r22, 0x00 ; 0 - 618: ce 01 movw r24, r28 - 61a: 90 df rcall .-224 ; 0x53c - //_delay_ms(1); - - - cm_EEPROM_read((uint8_t*)PLLB_SETTINGS_EEPROM_ADDR,(uint8_t *)&inst->pll_param_data,sizeof(storno_pll_param_msg)); - 61c: 4e e1 ldi r20, 0x1E ; 30 - 61e: b8 01 movw r22, r16 - 620: 80 e2 ldi r24, 0x20 ; 32 - 622: 90 e0 ldi r25, 0x00 ; 0 - 624: 44 dd rcall .-1400 ; 0xae - //_delay_ms(1); - cqm_setPLLParam(inst, SI5351_PLL_B, SI5351_OUTPUT_1); - 626: 41 e0 ldi r20, 0x01 ; 1 - 628: 61 e0 ldi r22, 0x01 ; 1 - 62a: ce 01 movw r24, r28 - 62c: 87 df rcall .-242 ; 0x53c - - - // Set third output to crystal freq for calibration! - cqm_setPLLParam(inst, SI5351_PLL_B, SI5351_OUTPUT_2); - 62e: 42 e0 ldi r20, 0x02 ; 2 - 630: 61 e0 ldi r22, 0x01 ; 1 - 632: ce 01 movw r24, r28 - 634: 83 df rcall .-250 ; 0x53c - cm_setCLKControl(inst->si5351_dev, SI5351_OUTPUT_2,SI5351_CLK_POWER_UP); - 636: 40 e0 ldi r20, 0x00 ; 0 - 638: 62 e0 ldi r22, 0x02 ; 2 - 63a: 8a 81 ldd r24, Y+2 ; 0x02 - 63c: 9b 81 ldd r25, Y+3 ; 0x03 - 63e: 70 d2 rcall .+1248 ; 0xb20 - //_delay_ms(1); - cm_setOutputEnable(inst->si5351_dev,SI5351_OUTPUT_2,SI5351_OUTPUT_ENABLE); - 640: 40 e0 ldi r20, 0x00 ; 0 - 642: 62 e0 ldi r22, 0x02 ; 2 - 644: 8a 81 ldd r24, Y+2 ; 0x02 - 646: 9b 81 ldd r25, Y+3 ; 0x03 - 648: 3e d2 rcall .+1148 ; 0xac6 - - cqm6xx_app_loadPLLParam(inst); - - - // if ok, then go to RX mode: - inst->state_next = STORNO_APP_RX_MODE; - 64a: 81 e0 ldi r24, 0x01 ; 1 - 64c: 89 83 std Y+1, r24 ; 0x01 - default: - break; - } - - -} - 64e: df 91 pop r29 - 650: cf 91 pop r28 - 652: 1f 91 pop r17 - 654: 0f 91 pop r16 - 656: 08 95 ret - break; - - - case STORNO_APP_RX_MODE: - // If we just came from another state, then Enable RX osc here.. - cqm6xx_app_updateOsc(inst); - 658: ce 01 movw r24, r28 - 65a: 47 df rcall .-370 ; 0x4ea - - // Update state now.. - inst->state_now = inst->state_next; - 65c: 89 81 ldd r24, Y+1 ; 0x01 - 65e: 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; - 660: 63 e0 ldi r22, 0x03 ; 3 - 662: 80 e0 ldi r24, 0x00 ; 0 - 664: 45 dd rcall .-1398 ; 0xf0 - 666: 01 97 sbiw r24, 0x01 ; 1 - 668: 19 f6 brne .-122 ; 0x5f0 - 66a: 82 e0 ldi r24, 0x02 ; 2 - 66c: 89 83 std Y+1, r24 ; 0x01 - 66e: c0 cf rjmp .-128 ; 0x5f0 - -00000670 : - } - - -} - -void programPLL_Parameters(storno_xtal_app_t *inst){ - 670: cf 93 push r28 - 672: df 93 push r29 - 674: 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){ - 676: 8c 81 ldd r24, Y+4 ; 0x04 - 678: 81 30 cpi r24, 0x01 ; 1 - 67a: 31 f1 breq .+76 ; 0x6c8 - 67c: d0 f0 brcs .+52 ; 0x6b2 - 67e: 8e 3f cpi r24, 0xFE ; 254 - 680: 69 f0 breq .+26 ; 0x69c - 682: 8f 3f cpi r24, 0xFF ; 255 - 684: 39 f4 brne .+14 ; 0x694 - 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)); - 686: 4e e1 ldi r20, 0x1E ; 30 - 688: be 01 movw r22, r28 - 68a: 6c 5f subi r22, 0xFC ; 252 - 68c: 7f 4f sbci r23, 0xFF ; 255 - 68e: 80 e2 ldi r24, 0x20 ; 32 - 690: 90 e0 ldi r25, 0x00 ; 0 - 692: 0d dd rcall .-1510 ; 0xae - } - - // Send status back maybe.. - - //Force state machine to load new settings from eeprom: - inst->state_next = STORNO_APP_PROGRAM_OSC; - 694: 19 82 std Y+1, r1 ; 0x01 - -} - 696: df 91 pop r29 - 698: cf 91 pop r28 - 69a: 08 95 ret - case MSG_PLLB_PARAM: - 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)); - 69c: 4e e1 ldi r20, 0x1E ; 30 - 69e: be 01 movw r22, r28 - 6a0: 6c 5f subi r22, 0xFC ; 252 - 6a2: 7f 4f sbci r23, 0xFF ; 255 - 6a4: 80 e0 ldi r24, 0x00 ; 0 - 6a6: 90 e0 ldi r25, 0x00 ; 0 - 6a8: 02 dd rcall .-1532 ; 0xae - } - - // Send status back maybe.. - - //Force state machine to load new settings from eeprom: - inst->state_next = STORNO_APP_PROGRAM_OSC; - 6aa: 19 82 std Y+1, r1 ; 0x01 - -} - 6ac: df 91 pop r29 - 6ae: cf 91 pop r28 - 6b0: 08 95 ret - - //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)); +00000666 : + 666: 0f 93 push r16 + 668: 1f 93 push r17 + 66a: cf 93 push r28 + 66c: df 93 push r29 + 66e: fc 01 movw r30, r24 + 670: 22 81 ldd r18, Z+2 ; 0x02 + 672: 33 81 ldd r19, Z+3 ; 0x03 + 674: 23 2b or r18, r19 + 676: 09 f4 brne .+2 ; 0x67a + 678: 4d c0 rjmp .+154 ; 0x714 + 67a: 00 97 sbiw r24, 0x00 ; 0 + 67c: 09 f4 brne .+2 ; 0x680 + 67e: 4a c0 rjmp .+148 ; 0x714 + 680: ec 01 movw r28, r24 + 682: 81 81 ldd r24, Z+1 ; 0x01 + 684: 81 30 cpi r24, 0x01 ; 1 + 686: 79 f1 breq .+94 ; 0x6e6 + 688: 18 f0 brcs .+6 ; 0x690 + 68a: 82 30 cpi r24, 0x02 ; 2 + 68c: c1 f1 breq .+112 ; 0x6fe + 68e: 42 c0 rjmp .+132 ; 0x714 + 690: 10 82 st Z, r1 + 692: 8f 01 movw r16, r30 + 694: 0c 5f subi r16, 0xFC ; 252 + 696: 1f 4f sbci r17, 0xFF ; 255 + 698: 4e e1 ldi r20, 0x1E ; 30 + 69a: b8 01 movw r22, r16 + 69c: 80 e0 ldi r24, 0x00 ; 0 + 69e: 90 e0 ldi r25, 0x00 ; 0 + 6a0: 08 dd rcall .-1520 ; 0xb2 + 6a2: 60 e0 ldi r22, 0x00 ; 0 + 6a4: 8a 81 ldd r24, Y+2 ; 0x02 + 6a6: 9b 81 ldd r25, Y+3 ; 0x03 + 6a8: de d1 rcall .+956 ; 0xa66 + 6aa: 40 e0 ldi r20, 0x00 ; 0 + 6ac: 60 e0 ldi r22, 0x00 ; 0 + 6ae: ce 01 movw r24, r28 + 6b0: 82 df rcall .-252 ; 0x5b6 6b2: 4e e1 ldi r20, 0x1E ; 30 - 6b4: be 01 movw r22, r28 - 6b6: 6c 5f subi r22, 0xFC ; 252 - 6b8: 7f 4f sbci r23, 0xFF ; 255 - 6ba: 80 e0 ldi r24, 0x00 ; 0 - 6bc: 90 e0 ldi r25, 0x00 ; 0 - 6be: d6 dc rcall .-1620 ; 0x6c - } - - // Send status back maybe.. - - //Force state machine to load new settings from eeprom: - inst->state_next = STORNO_APP_PROGRAM_OSC; - 6c0: 19 82 std Y+1, r1 ; 0x01 - -} - 6c2: df 91 pop r29 - 6c4: cf 91 pop r28 - 6c6: 08 95 ret - case MSG_PLLA_PARAM: - cm_EEPROM_write((uint8_t*)PLLA_SETTINGS_EEPROM_ADDR,(uint8_t*)&(inst->pll_param_data), sizeof(storno_pll_param_msg)); - 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)); - 6c8: 4e e1 ldi r20, 0x1E ; 30 - 6ca: be 01 movw r22, r28 - 6cc: 6c 5f subi r22, 0xFC ; 252 - 6ce: 7f 4f sbci r23, 0xFF ; 255 - 6d0: 80 e2 ldi r24, 0x20 ; 32 - 6d2: 90 e0 ldi r25, 0x00 ; 0 - 6d4: cb dc rcall .-1642 ; 0x6c - } - - // Send status back maybe.. - - //Force state machine to load new settings from eeprom: - inst->state_next = STORNO_APP_PROGRAM_OSC; - 6d6: 19 82 std Y+1, r1 ; 0x01 - -} - 6d8: df 91 pop r29 - 6da: cf 91 pop r28 - 6dc: 08 95 ret + 6b4: b8 01 movw r22, r16 + 6b6: 80 e2 ldi r24, 0x20 ; 32 + 6b8: 90 e0 ldi r25, 0x00 ; 0 + 6ba: fb dc rcall .-1546 ; 0xb2 + 6bc: 41 e0 ldi r20, 0x01 ; 1 + 6be: 61 e0 ldi r22, 0x01 ; 1 + 6c0: ce 01 movw r24, r28 + 6c2: 79 df rcall .-270 ; 0x5b6 + 6c4: 42 e0 ldi r20, 0x02 ; 2 + 6c6: 61 e0 ldi r22, 0x01 ; 1 + 6c8: ce 01 movw r24, r28 + 6ca: 75 df rcall .-278 ; 0x5b6 + 6cc: 40 e0 ldi r20, 0x00 ; 0 + 6ce: 62 e0 ldi r22, 0x02 ; 2 + 6d0: 8a 81 ldd r24, Y+2 ; 0x02 + 6d2: 9b 81 ldd r25, Y+3 ; 0x03 + 6d4: 94 d1 rcall .+808 ; 0x9fe + 6d6: 40 e0 ldi r20, 0x00 ; 0 + 6d8: 62 e0 ldi r22, 0x02 ; 2 + 6da: 8a 81 ldd r24, Y+2 ; 0x02 + 6dc: 9b 81 ldd r25, Y+3 ; 0x03 + 6de: 68 d1 rcall .+720 ; 0x9b0 + 6e0: 81 e0 ldi r24, 0x01 ; 1 + 6e2: 89 83 std Y+1, r24 ; 0x01 + 6e4: 17 c0 rjmp .+46 ; 0x714 + 6e6: cf 01 movw r24, r30 + 6e8: 3f df rcall .-386 ; 0x568 + 6ea: 89 81 ldd r24, Y+1 ; 0x01 + 6ec: 88 83 st Y, r24 + 6ee: 63 e0 ldi r22, 0x03 ; 3 + 6f0: 80 e0 ldi r24, 0x00 ; 0 + 6f2: 02 dd rcall .-1532 ; 0xf8 + 6f4: 01 97 sbiw r24, 0x01 ; 1 + 6f6: 71 f4 brne .+28 ; 0x714 + 6f8: 82 e0 ldi r24, 0x02 ; 2 + 6fa: 89 83 std Y+1, r24 ; 0x01 + 6fc: 0b c0 rjmp .+22 ; 0x714 + 6fe: cf 01 movw r24, r30 + 700: 33 df rcall .-410 ; 0x568 + 702: 89 81 ldd r24, Y+1 ; 0x01 + 704: 88 83 st Y, r24 + 706: 63 e0 ldi r22, 0x03 ; 3 + 708: 80 e0 ldi r24, 0x00 ; 0 + 70a: f6 dc rcall .-1556 ; 0xf8 + 70c: 89 2b or r24, r25 + 70e: 11 f4 brne .+4 ; 0x714 + 710: 81 e0 ldi r24, 0x01 ; 1 + 712: 89 83 std Y+1, r24 ; 0x01 + 714: df 91 pop r29 + 716: cf 91 pop r28 + 718: 1f 91 pop r17 + 71a: 0f 91 pop r16 + 71c: 08 95 ret -000006de : -} - -int uart_rx_event(storno_xtal_app_t *inst, void *rxData){ - - - memcpy(&inst->pll_param_data,rxData,sizeof(storno_pll_param_msg)); - 6de: dc 01 movw r26, r24 - 6e0: 14 96 adiw r26, 0x04 ; 4 - 6e2: 2e e1 ldi r18, 0x1E ; 30 - 6e4: fb 01 movw r30, r22 - 6e6: 01 90 ld r0, Z+ - 6e8: 0d 92 st X+, r0 - 6ea: 2a 95 dec r18 - 6ec: e1 f7 brne .-8 ; 0x6e6 - - programPLL_Parameters(inst); - 6ee: c0 df rcall .-128 ; 0x670 +0000071e : return 0; } - 6f0: 80 e0 ldi r24, 0x00 ; 0 - 6f2: 90 e0 ldi r25, 0x00 ; 0 - 6f4: 08 95 ret - -000006f6 : void cqm6xx_app_init(storno_xtal_app_t *inst, void *si5351_dev){ - 6f6: 0f 93 push r16 - 6f8: 1f 93 push r17 - 6fa: cf 93 push r28 - 6fc: df 93 push r29 + 71e: 0f 93 push r16 + 720: 1f 93 push r17 + 722: cf 93 push r28 + 724: df 93 push r29 if(si5351_dev == NULL) return; - 6fe: 61 15 cp r22, r1 - 700: 71 05 cpc r23, r1 - 702: 11 f1 breq .+68 ; 0x748 + 726: 61 15 cp r22, r1 + 728: 71 05 cpc r23, r1 + 72a: 09 f4 brne .+2 ; 0x72e + 72c: 88 c0 rjmp .+272 ; 0x83e if(inst == NULL)return; - 704: 00 97 sbiw r24, 0x00 ; 0 - 706: 01 f1 breq .+64 ; 0x748 - 708: ec 01 movw r28, r24 + 72e: 00 97 sbiw r24, 0x00 ; 0 + 730: 09 f4 brne .+2 ; 0x734 + 732: 85 c0 rjmp .+266 ; 0x83e + 734: ec 01 movw r28, r24 inst->state_next = STORNO_APP_PROGRAM_OSC; - 70a: 19 82 std Y+1, r1 ; 0x01 + 736: 19 82 std Y+1, r1 ; 0x01 inst->state_now = STORNO_APP_PROGRAM_OSC; - 70c: 18 82 st Y, r1 + 738: 18 82 st Y, r1 inst->si5351_dev = si5351_dev; - 70e: 6a 83 std Y+2, r22 ; 0x02 - 710: 7b 83 std Y+3, r23 ; 0x03 + 73a: 6a 83 std Y+2, r22 ; 0x02 + 73c: 7b 83 std Y+3, r23 ; 0x03 cm_MsgCompleteEvt_Register(inst,(Get_msgComplete_Event_fpt)uart_rx_event); - 712: 6f e6 ldi r22, 0x6F ; 111 - 714: 73 e0 ldi r23, 0x03 ; 3 - 716: db de rcall .-586 ; 0x4ce + 73e: 68 e1 ldi r22, 0x18 ; 24 + 740: 73 e0 ldi r23, 0x03 ; 3 + 742: 04 df rcall .-504 ; 0x54c cm_uart_init(inst,(get_UART_Event_fpt)cm_msg_DecodeMsg_Byte); - 718: 6d e0 ldi r22, 0x0D ; 13 - 71a: 72 e0 ldi r23, 0x02 ; 2 - 71c: ce 01 movw r24, r28 - 71e: 18 de rcall .-976 ; 0x350 + 744: 62 e5 ldi r22, 0x52 ; 82 + 746: 72 e0 ldi r23, 0x02 ; 2 + 748: ce 01 movw r24, r28 + 74a: 3c de rcall .-904 ; 0x3c4 } 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)); - 720: 8e 01 movw r16, r28 - 722: 0c 5f subi r16, 0xFC ; 252 - 724: 1f 4f sbci r17, 0xFF ; 255 - 726: 4e e1 ldi r20, 0x1E ; 30 - 728: b8 01 movw r22, r16 - 72a: 80 e0 ldi r24, 0x00 ; 0 - 72c: 90 e0 ldi r25, 0x00 ; 0 - 72e: bf dc rcall .-1666 ; 0xae - 730: f8 01 movw r30, r16 - 732: 9e 01 movw r18, r28 - 734: 2e 5d subi r18, 0xDE ; 222 - 736: 3f 4f sbci r19, 0xFF ; 255 - 738: 03 c0 rjmp .+6 ; 0x740 + cm_EEPROM_read((uint8_t*)PLLA_SETTINGS_EEPROM_ADDR,(uint8_t *)&inst->pllb_param_data,sizeof(storno_pll_param_msg)); + 74c: 8e 01 movw r16, r28 + 74e: 0e 5d subi r16, 0xDE ; 222 + 750: 1f 4f sbci r17, 0xFF ; 255 + 752: 4e e1 ldi r20, 0x1E ; 30 + 754: b8 01 movw r22, r16 + 756: 80 e0 ldi r24, 0x00 ; 0 + 758: 90 e0 ldi r25, 0x00 ; 0 + 75a: ab dc rcall .-1706 ; 0xb2 - uint8_t *ptr = (void*)&inst->pll_param_data; + uint8_t *ptr = (void*)&inst->pllb_param_data; for (uint32_t idx = 0; idx < sizeof(storno_pll_param_msg); idx++ ) - 73a: e2 17 cp r30, r18 - 73c: f3 07 cpc r31, r19 - 73e: 49 f0 breq .+18 ; 0x752 { if ((*ptr != 0xff) && (*ptr != 0x00)) - 740: 91 91 ld r25, Z+ - 742: 91 50 subi r25, 0x01 ; 1 - 744: 9e 3f cpi r25, 0xFE ; 254 - 746: c8 f7 brcc .-14 ; 0x73a - if(!isEEPROMValid(inst)){ - // If settings are somehow unvalid, then write default settings.. - writeDefaultSettingsEEprom(inst); - } + 75c: 8a a1 ldd r24, Y+34 ; 0x22 + 75e: 81 50 subi r24, 0x01 ; 1 + 760: 8e 3f cpi r24, 0xFE ; 254 + 762: 08 f0 brcs .+2 ; 0x766 + 764: 66 c0 rjmp .+204 ; 0x832 + 766: 6b c0 rjmp .+214 ; 0x83e + 768: 91 91 ld r25, Z+ + 76a: 91 50 subi r25, 0x01 ; 1 + 76c: 9e 3f cpi r25, 0xFE ; 254 + 76e: 08 f4 brcc .+2 ; 0x772 + 770: 66 c0 rjmp .+204 ; 0x83e - 748: df 91 pop r29 - 74a: cf 91 pop r28 - 74c: 1f 91 pop r17 - 74e: 0f 91 pop r16 - 750: 08 95 ret -} + cm_EEPROM_read((uint8_t*)PLLA_SETTINGS_EEPROM_ADDR,(uint8_t *)&inst->pllb_param_data,sizeof(storno_pll_param_msg)); + + uint8_t *ptr = (void*)&inst->pllb_param_data; + + for (uint32_t idx = 0; idx < sizeof(storno_pll_param_msg); idx++ ) + 772: 2e 17 cp r18, r30 + 774: 3f 07 cpc r19, r31 + 776: c1 f7 brne .-16 ; 0x768 static int writeDefaultSettingsEEprom(storno_xtal_app_t *inst){ - inst->pll_param_data.PLL_Ident = 0; - 752: 1c 82 std Y+4, r1 ; 0x04 - inst->pll_param_data.MSNx_P1 = 3395; - 754: 83 e4 ldi r24, 0x43 ; 67 - 756: 9d e0 ldi r25, 0x0D ; 13 - 758: a0 e0 ldi r26, 0x00 ; 0 - 75a: b0 e0 ldi r27, 0x00 ; 0 - 75c: 8d 83 std Y+5, r24 ; 0x05 - 75e: 9e 83 std Y+6, r25 ; 0x06 - 760: af 83 std Y+7, r26 ; 0x07 - 762: b8 87 std Y+8, r27 ; 0x08 - inst->pll_param_data.MSNx_P2 = 11510; - 764: 86 ef ldi r24, 0xF6 ; 246 - 766: 9c e2 ldi r25, 0x2C ; 44 - 768: a0 e0 ldi r26, 0x00 ; 0 - 76a: b0 e0 ldi r27, 0x00 ; 0 - 76c: 89 87 std Y+9, r24 ; 0x09 - 76e: 9a 87 std Y+10, r25 ; 0x0a - 770: ab 87 std Y+11, r26 ; 0x0b - 772: bc 87 std Y+12, r27 ; 0x0c - inst->pll_param_data.MSNx_P3 = 1067099; - 774: 8b e5 ldi r24, 0x5B ; 91 - 776: 98 e4 ldi r25, 0x48 ; 72 - 778: a0 e1 ldi r26, 0x10 ; 16 - 77a: b0 e0 ldi r27, 0x00 ; 0 - 77c: 8d 87 std Y+13, r24 ; 0x0d - 77e: 9e 87 std Y+14, r25 ; 0x0e - 780: af 87 std Y+15, r26 ; 0x0f - 782: b8 8b std Y+16, r27 ; 0x10 + //inst->pllb_param_data.PLL_Ident = inst->plla_param_data.PLL_Ident = 0; + inst->pllb_param_data.MSNx_P1 = inst->plla_param_data.MSNx_P1 = 3395; + 778: 83 e4 ldi r24, 0x43 ; 67 + 77a: 9d e0 ldi r25, 0x0D ; 13 + 77c: a0 e0 ldi r26, 0x00 ; 0 + 77e: b0 e0 ldi r27, 0x00 ; 0 + 780: 8d 83 std Y+5, r24 ; 0x05 + 782: 9e 83 std Y+6, r25 ; 0x06 + 784: af 83 std Y+7, r26 ; 0x07 + 786: b8 87 std Y+8, r27 ; 0x08 + 788: 8b a3 std Y+35, r24 ; 0x23 + 78a: 9c a3 std Y+36, r25 ; 0x24 + 78c: ad a3 std Y+37, r26 ; 0x25 + 78e: be a3 std Y+38, r27 ; 0x26 + inst->pllb_param_data.MSNx_P2 = inst->plla_param_data.MSNx_P2 = 11510; + 790: 86 ef ldi r24, 0xF6 ; 246 + 792: 9c e2 ldi r25, 0x2C ; 44 + 794: a0 e0 ldi r26, 0x00 ; 0 + 796: b0 e0 ldi r27, 0x00 ; 0 + 798: 89 87 std Y+9, r24 ; 0x09 + 79a: 9a 87 std Y+10, r25 ; 0x0a + 79c: ab 87 std Y+11, r26 ; 0x0b + 79e: bc 87 std Y+12, r27 ; 0x0c + 7a0: 8f a3 std Y+39, r24 ; 0x27 + 7a2: 98 a7 std Y+40, r25 ; 0x28 + 7a4: a9 a7 std Y+41, r26 ; 0x29 + 7a6: ba a7 std Y+42, r27 ; 0x2a + inst->pllb_param_data.MSNx_P3 = inst->plla_param_data.MSNx_P3 = 1067099; + 7a8: 8b e5 ldi r24, 0x5B ; 91 + 7aa: 98 e4 ldi r25, 0x48 ; 72 + 7ac: a0 e1 ldi r26, 0x10 ; 16 + 7ae: b0 e0 ldi r27, 0x00 ; 0 + 7b0: 8d 87 std Y+13, r24 ; 0x0d + 7b2: 9e 87 std Y+14, r25 ; 0x0e + 7b4: af 87 std Y+15, r26 ; 0x0f + 7b6: b8 8b std Y+16, r27 ; 0x10 + 7b8: 8b a7 std Y+43, r24 ; 0x2b + 7ba: 9c a7 std Y+44, r25 ; 0x2c + 7bc: ad a7 std Y+45, r26 ; 0x2d + 7be: be a7 std Y+46, r27 ; 0x2e - inst->pll_param_data.MSx_P1 = 18; - 784: 82 e1 ldi r24, 0x12 ; 18 - 786: 90 e0 ldi r25, 0x00 ; 0 - 788: a0 e0 ldi r26, 0x00 ; 0 - 78a: b0 e0 ldi r27, 0x00 ; 0 - 78c: 89 8b std Y+17, r24 ; 0x11 - 78e: 9a 8b std Y+18, r25 ; 0x12 - 790: ab 8b std Y+19, r26 ; 0x13 - 792: bc 8b std Y+20, r27 ; 0x14 - inst->pll_param_data.MSx_P2 = 0; - 794: 1d 8a std Y+21, r1 ; 0x15 - 796: 1e 8a std Y+22, r1 ; 0x16 - 798: 1f 8a std Y+23, r1 ; 0x17 - 79a: 18 8e std Y+24, r1 ; 0x18 - inst->pll_param_data.MSx_P3 = 1; - 79c: 81 e0 ldi r24, 0x01 ; 1 - 79e: 90 e0 ldi r25, 0x00 ; 0 - 7a0: a0 e0 ldi r26, 0x00 ; 0 - 7a2: b0 e0 ldi r27, 0x00 ; 0 - 7a4: 89 8f std Y+25, r24 ; 0x19 - 7a6: 9a 8f std Y+26, r25 ; 0x1a - 7a8: ab 8f std Y+27, r26 ; 0x1b - 7aa: bc 8f std Y+28, r27 ; 0x1c - inst->pll_param_data.XtalFreq = 25000000; - 7ac: 80 e4 ldi r24, 0x40 ; 64 - 7ae: 98 e7 ldi r25, 0x78 ; 120 - 7b0: ad e7 ldi r26, 0x7D ; 125 - 7b2: b1 e0 ldi r27, 0x01 ; 1 - 7b4: 8e 8f std Y+30, r24 ; 0x1e - 7b6: 9f 8f std Y+31, r25 ; 0x1f - 7b8: a8 a3 std Y+32, r26 ; 0x20 - 7ba: b9 a3 std Y+33, r27 ; 0x21 - - cm_EEPROM_write((uint8_t*)PLLA_SETTINGS_EEPROM_ADDR,(uint8_t*)&(inst->pll_param_data), sizeof(storno_pll_param_msg)); - 7bc: 4e e1 ldi r20, 0x1E ; 30 - 7be: b8 01 movw r22, r16 - 7c0: 80 e0 ldi r24, 0x00 ; 0 + inst->pllb_param_data.MSx_P1 = inst->plla_param_data.MSx_P1 = 18; + 7c0: 82 e1 ldi r24, 0x12 ; 18 7c2: 90 e0 ldi r25, 0x00 ; 0 - 7c4: 53 dc rcall .-1882 ; 0x6c + 7c4: a0 e0 ldi r26, 0x00 ; 0 + 7c6: b0 e0 ldi r27, 0x00 ; 0 + 7c8: 89 8b std Y+17, r24 ; 0x11 + 7ca: 9a 8b std Y+18, r25 ; 0x12 + 7cc: ab 8b std Y+19, r26 ; 0x13 + 7ce: bc 8b std Y+20, r27 ; 0x14 + 7d0: 8f a7 std Y+47, r24 ; 0x2f + 7d2: 98 ab std Y+48, r25 ; 0x30 + 7d4: a9 ab std Y+49, r26 ; 0x31 + 7d6: ba ab std Y+50, r27 ; 0x32 + inst->pllb_param_data.MSx_P2 = inst->plla_param_data.MSx_P2 = 0; + 7d8: 1d 8a std Y+21, r1 ; 0x15 + 7da: 1e 8a std Y+22, r1 ; 0x16 + 7dc: 1f 8a std Y+23, r1 ; 0x17 + 7de: 18 8e std Y+24, r1 ; 0x18 + 7e0: 1b aa std Y+51, r1 ; 0x33 + 7e2: 1c aa std Y+52, r1 ; 0x34 + 7e4: 1d aa std Y+53, r1 ; 0x35 + 7e6: 1e aa std Y+54, r1 ; 0x36 + inst->pllb_param_data.MSx_P3 = inst->plla_param_data.MSx_P3 = 1; + 7e8: 81 e0 ldi r24, 0x01 ; 1 + 7ea: 90 e0 ldi r25, 0x00 ; 0 + 7ec: a0 e0 ldi r26, 0x00 ; 0 + 7ee: b0 e0 ldi r27, 0x00 ; 0 + 7f0: 89 8f std Y+25, r24 ; 0x19 + 7f2: 9a 8f std Y+26, r25 ; 0x1a + 7f4: ab 8f std Y+27, r26 ; 0x1b + 7f6: bc 8f std Y+28, r27 ; 0x1c + 7f8: 8f ab std Y+55, r24 ; 0x37 + 7fa: 98 af std Y+56, r25 ; 0x38 + 7fc: a9 af std Y+57, r26 ; 0x39 + 7fe: ba af std Y+58, r27 ; 0x3a + inst->pllb_param_data.XtalFreq = inst->plla_param_data.XtalFreq = 25000000; + 800: 80 e4 ldi r24, 0x40 ; 64 + 802: 98 e7 ldi r25, 0x78 ; 120 + 804: ad e7 ldi r26, 0x7D ; 125 + 806: b1 e0 ldi r27, 0x01 ; 1 + 808: 8e 8f std Y+30, r24 ; 0x1e + 80a: 9f 8f std Y+31, r25 ; 0x1f + 80c: a8 a3 std Y+32, r26 ; 0x20 + 80e: b9 a3 std Y+33, r27 ; 0x21 + 810: 8c af std Y+60, r24 ; 0x3c + 812: 9d af std Y+61, r25 ; 0x3d + 814: ae af std Y+62, r26 ; 0x3e + 816: bf af std Y+63, r27 ; 0x3f + + cm_EEPROM_write((uint8_t*)PLLA_SETTINGS_EEPROM_ADDR,(uint8_t*)&(inst->plla_param_data), sizeof(storno_pll_param_msg)); + 818: be 01 movw r22, r28 + 81a: 6c 5f subi r22, 0xFC ; 252 + 81c: 7f 4f sbci r23, 0xFF ; 255 + 81e: 4e e1 ldi r20, 0x1E ; 30 + 820: 80 e0 ldi r24, 0x00 ; 0 + 822: 90 e0 ldi r25, 0x00 ; 0 + 824: 23 dc rcall .-1978 ; 0x6c //_delay_ms(1); - cm_EEPROM_write((uint8_t*)PLLB_SETTINGS_EEPROM_ADDR,(uint8_t*)&(inst->pll_param_data), sizeof(storno_pll_param_msg)); - 7c6: 4e e1 ldi r20, 0x1E ; 30 - 7c8: b8 01 movw r22, r16 - 7ca: 80 e2 ldi r24, 0x20 ; 32 - 7cc: 90 e0 ldi r25, 0x00 ; 0 + cm_EEPROM_write((uint8_t*)PLLB_SETTINGS_EEPROM_ADDR,(uint8_t*)&(inst->pllb_param_data), sizeof(storno_pll_param_msg)); + 826: 4e e1 ldi r20, 0x1E ; 30 + 828: b8 01 movw r22, r16 + 82a: 80 e2 ldi r24, 0x20 ; 32 + 82c: 90 e0 ldi r25, 0x00 ; 0 + 82e: 1e dc rcall .-1988 ; 0x6c + 830: 06 c0 rjmp .+12 ; 0x83e + { + if ((*ptr != 0xff) && (*ptr != 0x00)) + { + return 1; + } + ptr++; + 832: fe 01 movw r30, r28 + 834: b3 96 adiw r30, 0x23 ; 35 + 836: 9e 01 movw r18, r28 + 838: 20 5c subi r18, 0xC0 ; 192 + 83a: 3f 4f sbci r19, 0xFF ; 255 + 83c: 95 cf rjmp .-214 ; 0x768 if(!isEEPROMValid(inst)){ // If settings are somehow unvalid, then write default settings.. writeDefaultSettingsEEprom(inst); } - 7ce: df 91 pop r29 - 7d0: cf 91 pop r28 - 7d2: 1f 91 pop r17 - 7d4: 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)); - 7d6: 4a cc rjmp .-1900 ; 0x6c + 83e: df 91 pop r29 + 840: cf 91 pop r28 + 842: 1f 91 pop r17 + 844: 0f 91 pop r16 + 846: 08 95 ret -000007d8
: +00000848
: #include "avr_eeprom_driver/avr_eeprom_driver.h" storno_xtal_app_t storno_xtal_app; int main(void) { - 7d8: cf 93 push r28 - 7da: df 93 push r29 - 7dc: cd b7 in r28, 0x3d ; 61 - 7de: de b7 in r29, 0x3e ; 62 - 7e0: cb 55 subi r28, 0x5B ; 91 - 7e2: d1 09 sbc r29, r1 - 7e4: cd bf out 0x3d, r28 ; 61 - 7e6: de bf out 0x3e, r29 ; 62 + 848: cf 93 push r28 + 84a: df 93 push r29 + 84c: cd b7 in r28, 0x3d ; 61 + 84e: de b7 in r29, 0x3e ; 62 + 850: a2 97 sbiw r28, 0x22 ; 34 + 852: cd bf out 0x3d, r28 ; 61 + 854: de bf out 0x3e, r29 ; 62 /* Replace with your application code */ // Init Periphials cm_i2c_init(NULL); - 7e8: 80 e0 ldi r24, 0x00 ; 0 - 7ea: 90 e0 ldi r25, 0x00 ; 0 - 7ec: 14 dd rcall .-1496 ; 0x216 + 856: 80 e0 ldi r24, 0x00 ; 0 + 858: 90 e0 ldi r25, 0x00 ; 0 + 85a: 2b dd rcall .-1450 ; 0x2b2 // Add devices cm_i2c_device_t si5351_i2c; cm_i2c_addDev(&si5351_i2c,NULL,0x60); - 7ee: 40 e6 ldi r20, 0x60 ; 96 - 7f0: 60 e0 ldi r22, 0x00 ; 0 - 7f2: 70 e0 ldi r23, 0x00 ; 0 - 7f4: ce 01 movw r24, r28 - 7f6: 87 5a subi r24, 0xA7 ; 167 - 7f8: 9f 4f sbci r25, 0xFF ; 255 - 7fa: 27 dd rcall .-1458 ; 0x24a + 85c: 40 e6 ldi r20, 0x60 ; 96 + 85e: 60 e0 ldi r22, 0x00 ; 0 + 860: 70 e0 ldi r23, 0x00 ; 0 + 862: ce 01 movw r24, r28 + 864: 01 96 adiw r24, 0x01 ; 1 + 866: 3f dd rcall .-1410 ; 0x2e6 // Init Devices: si5351_driver si5351_dev; cm_si5351_init(&si5351_dev,&si5351_i2c,(setGet_I2C_Event_fpt)cm_i2c_transfer); - 7fc: 49 e4 ldi r20, 0x49 ; 73 - 7fe: 51 e0 ldi r21, 0x01 ; 1 - 800: be 01 movw r22, r28 - 802: 67 5a subi r22, 0xA7 ; 167 - 804: 7f 4f sbci r23, 0xFF ; 255 - 806: ce 01 movw r24, r28 - 808: 01 96 adiw r24, 0x01 ; 1 - 80a: 05 d2 rcall .+1034 ; 0xc16 + 868: 41 e9 ldi r20, 0x91 ; 145 + 86a: 51 e0 ldi r21, 0x01 ; 1 + 86c: be 01 movw r22, r28 + 86e: 6f 5f subi r22, 0xFF ; 255 + 870: 7f 4f sbci r23, 0xFF ; 255 + 872: ce 01 movw r24, r28 + 874: 04 96 adiw r24, 0x04 ; 4 + 876: 82 d1 rcall .+772 ; 0xb7c cqm6xx_app_init(&storno_xtal_app, &si5351_dev); - 80c: be 01 movw r22, r28 - 80e: 6f 5f subi r22, 0xFF ; 255 - 810: 7f 4f sbci r23, 0xFF ; 255 - 812: 86 e4 ldi r24, 0x46 ; 70 - 814: 9f e3 ldi r25, 0x3F ; 63 - 816: 6f df rcall .-290 ; 0x6f6 + 878: be 01 movw r22, r28 + 87a: 6c 5f subi r22, 0xFC ; 252 + 87c: 7f 4f sbci r23, 0xFF ; 255 + 87e: 86 e4 ldi r24, 0x46 ; 70 + 880: 9f e3 ldi r25, 0x3F ; 63 + 882: 4d df rcall .-358 ; 0x71e while (1) { cqm6xx_app_statemachine(&storno_xtal_app); - 818: 86 e4 ldi r24, 0x46 ; 70 - 81a: 9f e3 ldi r25, 0x3F ; 63 - 81c: cb de rcall .-618 ; 0x5b4 - 81e: fc cf rjmp .-8 ; 0x818 + 884: 86 e4 ldi r24, 0x46 ; 70 + 886: 9f e3 ldi r25, 0x3F ; 63 + 888: ee de rcall .-548 ; 0x666 + 88a: fc cf rjmp .-8 ; 0x884 -00000820 : +0000088c : // Read Device Status register: readRegister(inst,0x00, (uint8_t *) &inst->device_data.deviceStatus, sizeof(si5351_deviceStat_t)); return inst->device_data.deviceStatus.REVID; } - 820: 4f 92 push r4 - 822: 5f 92 push r5 - 824: 6f 92 push r6 - 826: 7f 92 push r7 - 828: 9f 92 push r9 - 82a: af 92 push r10 - 82c: bf 92 push r11 - 82e: cf 92 push r12 - 830: df 92 push r13 - 832: ef 92 push r14 - 834: ff 92 push r15 - 836: 0f 93 push r16 - 838: 1f 93 push r17 - 83a: cf 93 push r28 - 83c: df 93 push r29 - 83e: ec 01 movw r28, r24 - 840: 6b 01 movw r12, r22 - 842: 94 2e mov r9, r20 - 844: 59 01 movw r10, r18 - 846: 27 01 movw r4, r14 - 848: 38 01 movw r6, r16 - 84a: c7 01 movw r24, r14 - 84c: 01 96 adiw r24, 0x01 ; 1 - 84e: 79 d2 rcall .+1266 ; 0xd42 - 850: f8 2e mov r15, r24 - 852: 19 2f mov r17, r25 - 854: dc 01 movw r26, r24 - 856: 9d 92 st X+, r9 - 858: cd 01 movw r24, r26 - 85a: a2 01 movw r20, r4 - 85c: b5 01 movw r22, r10 - 85e: 92 d3 rcall .+1828 ; 0xf84 - 860: a3 01 movw r20, r6 - 862: 92 01 movw r18, r4 - 864: 2f 5f subi r18, 0xFF ; 255 - 866: 3f 4f sbci r19, 0xFF ; 255 - 868: 4f 4f sbci r20, 0xFF ; 255 - 86a: 5f 4f sbci r21, 0xFF ; 255 - 86c: d6 01 movw r26, r12 - 86e: ed 91 ld r30, X+ - 870: fc 91 ld r31, X - 872: 01 e0 ldi r16, 0x01 ; 1 - 874: 6f 2d mov r22, r15 - 876: 71 2f mov r23, r17 - 878: 88 81 ld r24, Y - 87a: 99 81 ldd r25, Y+1 ; 0x01 - 87c: 09 95 icall - 87e: 8f 2d mov r24, r15 - 880: 91 2f mov r25, r17 - 882: f7 d2 rcall .+1518 ; 0xe72 - 884: 80 e0 ldi r24, 0x00 ; 0 - 886: 90 e0 ldi r25, 0x00 ; 0 - 888: df 91 pop r29 - 88a: cf 91 pop r28 - 88c: 1f 91 pop r17 - 88e: 0f 91 pop r16 - 890: ff 90 pop r15 - 892: ef 90 pop r14 - 894: df 90 pop r13 - 896: cf 90 pop r12 - 898: bf 90 pop r11 - 89a: af 90 pop r10 - 89c: 9f 90 pop r9 - 89e: 7f 90 pop r7 - 8a0: 6f 90 pop r6 - 8a2: 5f 90 pop r5 - 8a4: 4f 90 pop r4 - 8a6: 08 95 ret + 88c: 8f 92 push r8 + 88e: 9f 92 push r9 + 890: af 92 push r10 + 892: bf 92 push r11 + 894: cf 92 push r12 + 896: df 92 push r13 + 898: ef 92 push r14 + 89a: ff 92 push r15 + 89c: 0f 93 push r16 + 89e: 1f 93 push r17 + 8a0: cf 93 push r28 + 8a2: df 93 push r29 + 8a4: ec 01 movw r28, r24 + 8a6: 86 2e mov r8, r22 + 8a8: 5a 01 movw r10, r20 + 8aa: 68 01 movw r12, r16 + 8ac: 79 01 movw r14, r18 + 8ae: c8 01 movw r24, r16 + 8b0: 01 96 adiw r24, 0x01 ; 1 + 8b2: 11 d2 rcall .+1058 ; 0xcd6 + 8b4: 98 2e mov r9, r24 + 8b6: 19 2f mov r17, r25 + 8b8: fc 01 movw r30, r24 + 8ba: 81 92 st Z+, r8 + 8bc: cf 01 movw r24, r30 + 8be: a6 01 movw r20, r12 + 8c0: b5 01 movw r22, r10 + 8c2: 2a d3 rcall .+1620 ; 0xf18 + 8c4: a7 01 movw r20, r14 + 8c6: 96 01 movw r18, r12 + 8c8: 2f 5f subi r18, 0xFF ; 255 + 8ca: 3f 4f sbci r19, 0xFF ; 255 + 8cc: 4f 4f sbci r20, 0xFF ; 255 + 8ce: 5f 4f sbci r21, 0xFF ; 255 + 8d0: ea 81 ldd r30, Y+2 ; 0x02 + 8d2: fb 81 ldd r31, Y+3 ; 0x03 + 8d4: 01 e0 ldi r16, 0x01 ; 1 + 8d6: 69 2d mov r22, r9 + 8d8: 71 2f mov r23, r17 + 8da: 88 81 ld r24, Y + 8dc: 99 81 ldd r25, Y+1 ; 0x01 + 8de: 09 95 icall + 8e0: 89 2d mov r24, r9 + 8e2: 91 2f mov r25, r17 + 8e4: 90 d2 rcall .+1312 ; 0xe06 + 8e6: 80 e0 ldi r24, 0x00 ; 0 + 8e8: 90 e0 ldi r25, 0x00 ; 0 + 8ea: df 91 pop r29 + 8ec: cf 91 pop r28 + 8ee: 1f 91 pop r17 + 8f0: 0f 91 pop r16 + 8f2: ff 90 pop r15 + 8f4: ef 90 pop r14 + 8f6: df 90 pop r13 + 8f8: cf 90 pop r12 + 8fa: bf 90 pop r11 + 8fc: af 90 pop r10 + 8fe: 9f 90 pop r9 + 900: 8f 90 pop r8 + 902: 08 95 ret -000008a8 : - 8a8: af 92 push r10 - 8aa: bf 92 push r11 - 8ac: cf 92 push r12 - 8ae: df 92 push r13 - 8b0: ef 92 push r14 - 8b2: ff 92 push r15 - 8b4: 0f 93 push r16 - 8b6: 1f 93 push r17 - 8b8: cf 93 push r28 - 8ba: df 93 push r29 - 8bc: ec 01 movw r28, r24 - 8be: 66 23 and r22, r22 - 8c0: 09 f4 brne .+2 ; 0x8c4 - 8c2: 48 c0 rjmp .+144 ; 0x954 - 8c4: 61 30 cpi r22, 0x01 ; 1 - 8c6: 09 f1 breq .+66 ; 0x90a - 8c8: 6c 01 movw r12, r24 - 8ca: 82 e0 ldi r24, 0x02 ; 2 - 8cc: c8 0e add r12, r24 - 8ce: d1 1c adc r13, r1 - 8d0: 9e 01 movw r18, r28 - 8d2: 29 5a subi r18, 0xA9 ; 169 - 8d4: 3f 4f sbci r19, 0xFF ; 255 - 8d6: f9 01 movw r30, r18 - 8d8: 80 81 ld r24, Z - 8da: 80 62 ori r24, 0x20 ; 32 - 8dc: 80 68 ori r24, 0x80 ; 128 - 8de: 80 83 st Z, r24 - 8e0: e1 2c mov r14, r1 - 8e2: f1 2c mov r15, r1 - 8e4: 87 01 movw r16, r14 - 8e6: e3 94 inc r14 - 8e8: 41 eb ldi r20, 0xB1 ; 177 - 8ea: b6 01 movw r22, r12 - 8ec: ce 01 movw r24, r28 - 8ee: 98 df rcall .-208 ; 0x820 - 8f0: 80 e0 ldi r24, 0x00 ; 0 - 8f2: 90 e0 ldi r25, 0x00 ; 0 - 8f4: df 91 pop r29 - 8f6: cf 91 pop r28 - 8f8: 1f 91 pop r17 - 8fa: 0f 91 pop r16 - 8fc: ff 90 pop r15 - 8fe: ef 90 pop r14 - 900: df 90 pop r13 - 902: cf 90 pop r12 - 904: bf 90 pop r11 - 906: af 90 pop r10 - 908: 08 95 ret - 90a: 42 70 andi r20, 0x02 ; 2 - 90c: 8e 8d ldd r24, Y+30 ; 0x1e - 90e: 8c 7f andi r24, 0xFC ; 252 - 910: 48 2b or r20, r24 - 912: 4e 8f std Y+30, r20 ; 0x1e - 914: 3f 8f std Y+31, r19 ; 0x1f - 916: 28 a3 std Y+32, r18 ; 0x20 - 918: d8 01 movw r26, r16 - 91a: c7 01 movw r24, r14 - 91c: 88 27 eor r24, r24 - 91e: 99 27 eor r25, r25 - 920: af 70 andi r26, 0x0F ; 15 - 922: bb 27 eor r27, r27 - 924: fa a2 std Y+34, r15 ; 0x22 - 926: eb a2 std Y+35, r14 ; 0x23 - 928: 8a 2f mov r24, r26 - 92a: 8f 70 andi r24, 0x0F ; 15 - 92c: 89 a3 std Y+33, r24 ; 0x21 - 92e: bc 8e std Y+28, r11 ; 0x1c - 930: ad 8e std Y+29, r10 ; 0x1d - 932: 6e 01 movw r12, r28 - 934: f2 e0 ldi r31, 0x02 ; 2 - 936: cf 0e add r12, r31 - 938: d1 1c adc r13, r1 - 93a: 18 e0 ldi r17, 0x08 ; 8 - 93c: e1 2e mov r14, r17 - 93e: f1 2c mov r15, r1 - 940: 00 e0 ldi r16, 0x00 ; 0 - 942: 10 e0 ldi r17, 0x00 ; 0 - 944: 9e 01 movw r18, r28 - 946: 24 5e subi r18, 0xE4 ; 228 - 948: 3f 4f sbci r19, 0xFF ; 255 - 94a: 42 e2 ldi r20, 0x22 ; 34 - 94c: b6 01 movw r22, r12 - 94e: ce 01 movw r24, r28 - 950: 67 df rcall .-306 ; 0x820 - 952: be cf rjmp .-132 ; 0x8d0 - 954: 42 70 andi r20, 0x02 ; 2 - 956: 8e 89 ldd r24, Y+22 ; 0x16 - 958: 8c 7f andi r24, 0xFC ; 252 - 95a: 48 2b or r20, r24 - 95c: 4e 8b std Y+22, r20 ; 0x16 - 95e: 3f 8b std Y+23, r19 ; 0x17 - 960: 28 8f std Y+24, r18 ; 0x18 - 962: d8 01 movw r26, r16 - 964: c7 01 movw r24, r14 - 966: 88 27 eor r24, r24 - 968: 99 27 eor r25, r25 - 96a: af 70 andi r26, 0x0F ; 15 - 96c: bb 27 eor r27, r27 - 96e: fa 8e std Y+26, r15 ; 0x1a - 970: eb 8e std Y+27, r14 ; 0x1b - 972: 8a 2f mov r24, r26 - 974: 8f 70 andi r24, 0x0F ; 15 - 976: 89 8f std Y+25, r24 ; 0x19 - 978: bc 8a std Y+20, r11 ; 0x14 - 97a: ad 8a std Y+21, r10 ; 0x15 - 97c: 6e 01 movw r12, r28 - 97e: e2 e0 ldi r30, 0x02 ; 2 - 980: ce 0e add r12, r30 - 982: d1 1c adc r13, r1 - 984: 18 e0 ldi r17, 0x08 ; 8 - 986: e1 2e mov r14, r17 - 988: f1 2c mov r15, r1 - 98a: 00 e0 ldi r16, 0x00 ; 0 - 98c: 10 e0 ldi r17, 0x00 ; 0 - 98e: 9e 01 movw r18, r28 - 990: 2c 5e subi r18, 0xEC ; 236 - 992: 3f 4f sbci r19, 0xFF ; 255 - 994: 4a e1 ldi r20, 0x1A ; 26 - 996: b6 01 movw r22, r12 - 998: ce 01 movw r24, r28 - 99a: 42 df rcall .-380 ; 0x820 - 99c: 99 cf rjmp .-206 ; 0x8d0 +00000904 : + 904: af 92 push r10 + 906: bf 92 push r11 + 908: cf 92 push r12 + 90a: df 92 push r13 + 90c: ef 92 push r14 + 90e: ff 92 push r15 + 910: 0f 93 push r16 + 912: 1f 93 push r17 + 914: fc 01 movw r30, r24 + 916: 43 70 andi r20, 0x03 ; 3 + 918: 56 89 ldd r21, Z+22 ; 0x16 + 91a: 50 78 andi r21, 0x80 ; 128 + 91c: 37 8b std Z+23, r19 ; 0x17 + 91e: 20 8f std Z+24, r18 ; 0x18 + 920: f2 8e std Z+26, r15 ; 0x1a + 922: e3 8e std Z+27, r14 ; 0x1b + 924: d6 01 movw r26, r12 + 926: c5 01 movw r24, r10 + 928: 07 2e mov r0, r23 + 92a: 7c e0 ldi r23, 0x0C ; 12 + 92c: b6 95 lsr r27 + 92e: a7 95 ror r26 + 930: 97 95 ror r25 + 932: 87 95 ror r24 + 934: 7a 95 dec r23 + 936: d1 f7 brne .-12 ; 0x92c + 938: 70 2d mov r23, r0 + 93a: 83 70 andi r24, 0x03 ; 3 + 93c: 82 95 swap r24 + 93e: 80 7f andi r24, 0xF0 ; 240 + 940: 03 70 andi r16, 0x03 ; 3 + 942: 80 2b or r24, r16 + 944: 81 8f std Z+25, r24 ; 0x19 + 946: b4 8a std Z+20, r11 ; 0x14 + 948: a5 8a std Z+21, r10 ; 0x15 + 94a: 45 2b or r20, r21 + 94c: 46 8b std Z+22, r20 ; 0x16 + 94e: 61 30 cpi r22, 0x01 ; 1 + 950: 79 f0 breq .+30 ; 0x970 + 952: 18 f0 brcs .+6 ; 0x95a + 954: 62 30 cpi r22, 0x02 ; 2 + 956: b9 f0 breq .+46 ; 0x986 + 958: 20 c0 rjmp .+64 ; 0x99a + 95a: af 01 movw r20, r30 + 95c: 4c 5e subi r20, 0xEC ; 236 + 95e: 5f 4f sbci r21, 0xFF ; 255 + 960: 08 e0 ldi r16, 0x08 ; 8 + 962: 10 e0 ldi r17, 0x00 ; 0 + 964: 20 e0 ldi r18, 0x00 ; 0 + 966: 30 e0 ldi r19, 0x00 ; 0 + 968: 6a e2 ldi r22, 0x2A ; 42 + 96a: cf 01 movw r24, r30 + 96c: 8f df rcall .-226 ; 0x88c + 96e: 15 c0 rjmp .+42 ; 0x99a + 970: af 01 movw r20, r30 + 972: 4c 5e subi r20, 0xEC ; 236 + 974: 5f 4f sbci r21, 0xFF ; 255 + 976: 08 e0 ldi r16, 0x08 ; 8 + 978: 10 e0 ldi r17, 0x00 ; 0 + 97a: 20 e0 ldi r18, 0x00 ; 0 + 97c: 30 e0 ldi r19, 0x00 ; 0 + 97e: 62 e3 ldi r22, 0x32 ; 50 + 980: cf 01 movw r24, r30 + 982: 84 df rcall .-248 ; 0x88c + 984: 0a c0 rjmp .+20 ; 0x99a + 986: af 01 movw r20, r30 + 988: 4c 5e subi r20, 0xEC ; 236 + 98a: 5f 4f sbci r21, 0xFF ; 255 + 98c: 08 e0 ldi r16, 0x08 ; 8 + 98e: 10 e0 ldi r17, 0x00 ; 0 + 990: 20 e0 ldi r18, 0x00 ; 0 + 992: 30 e0 ldi r19, 0x00 ; 0 + 994: 6a e3 ldi r22, 0x3A ; 58 + 996: cf 01 movw r24, r30 + 998: 79 df rcall .-270 ; 0x88c + 99a: 80 e0 ldi r24, 0x00 ; 0 + 99c: 90 e0 ldi r25, 0x00 ; 0 + 99e: 1f 91 pop r17 + 9a0: 0f 91 pop r16 + 9a2: ff 90 pop r15 + 9a4: ef 90 pop r14 + 9a6: df 90 pop r13 + 9a8: cf 90 pop r12 + 9aa: bf 90 pop r11 + 9ac: af 90 pop r10 + 9ae: 08 95 ret -0000099e : - 99e: af 92 push r10 - 9a0: bf 92 push r11 - 9a2: cf 92 push r12 - 9a4: df 92 push r13 - 9a6: ef 92 push r14 - 9a8: ff 92 push r15 - 9aa: 0f 93 push r16 - 9ac: 1f 93 push r17 - 9ae: fc 01 movw r30, r24 - 9b0: 61 30 cpi r22, 0x01 ; 1 - 9b2: 09 f4 brne .+2 ; 0x9b6 - 9b4: 5f c0 rjmp .+190 ; 0xa74 - 9b6: a8 f1 brcs .+106 ; 0xa22 - 9b8: 62 30 cpi r22, 0x02 ; 2 - 9ba: 41 f5 brne .+80 ; 0xa0c - 9bc: 43 70 andi r20, 0x03 ; 3 - 9be: 56 a9 ldd r21, Z+54 ; 0x36 - 9c0: 50 78 andi r21, 0x80 ; 128 - 9c2: 37 ab std Z+55, r19 ; 0x37 - 9c4: 20 af std Z+56, r18 ; 0x38 - 9c6: f2 ae std Z+58, r15 ; 0x3a - 9c8: e3 ae std Z+59, r14 ; 0x3b - 9ca: d6 01 movw r26, r12 - 9cc: c5 01 movw r24, r10 - 9ce: 2c e0 ldi r18, 0x0C ; 12 - 9d0: b6 95 lsr r27 - 9d2: a7 95 ror r26 - 9d4: 97 95 ror r25 - 9d6: 87 95 ror r24 - 9d8: 2a 95 dec r18 - 9da: d1 f7 brne .-12 ; 0x9d0 - 9dc: 83 70 andi r24, 0x03 ; 3 - 9de: 82 95 swap r24 - 9e0: 80 7f andi r24, 0xF0 ; 240 - 9e2: 03 70 andi r16, 0x03 ; 3 - 9e4: 08 2b or r16, r24 - 9e6: 01 af std Z+57, r16 ; 0x39 - 9e8: b4 aa std Z+52, r11 ; 0x34 - 9ea: a5 aa std Z+53, r10 ; 0x35 - 9ec: 45 2b or r20, r21 - 9ee: 46 ab std Z+54, r20 ; 0x36 - 9f0: 9f 01 movw r18, r30 - 9f2: 2c 5c subi r18, 0xCC ; 204 - 9f4: 3f 4f sbci r19, 0xFF ; 255 - 9f6: bf 01 movw r22, r30 - 9f8: 6e 5f subi r22, 0xFE ; 254 - 9fa: 7f 4f sbci r23, 0xFF ; 255 - 9fc: 18 e0 ldi r17, 0x08 ; 8 - 9fe: e1 2e mov r14, r17 - a00: f1 2c mov r15, r1 - a02: 00 e0 ldi r16, 0x00 ; 0 - a04: 10 e0 ldi r17, 0x00 ; 0 - a06: 4a e3 ldi r20, 0x3A ; 58 - a08: cf 01 movw r24, r30 - a0a: 0a df rcall .-492 ; 0x820 - a0c: 80 e0 ldi r24, 0x00 ; 0 - a0e: 90 e0 ldi r25, 0x00 ; 0 - a10: 1f 91 pop r17 - a12: 0f 91 pop r16 - a14: ff 90 pop r15 - a16: ef 90 pop r14 - a18: df 90 pop r13 - a1a: cf 90 pop r12 - a1c: bf 90 pop r11 - a1e: af 90 pop r10 - a20: 08 95 ret - a22: 43 70 andi r20, 0x03 ; 3 - a24: 56 a1 ldd r21, Z+38 ; 0x26 - a26: 50 78 andi r21, 0x80 ; 128 - a28: 37 a3 std Z+39, r19 ; 0x27 - a2a: 20 a7 std Z+40, r18 ; 0x28 - a2c: f2 a6 std Z+42, r15 ; 0x2a - a2e: e3 a6 std Z+43, r14 ; 0x2b - a30: d6 01 movw r26, r12 - a32: c5 01 movw r24, r10 - a34: 1c e0 ldi r17, 0x0C ; 12 - a36: b6 95 lsr r27 - a38: a7 95 ror r26 - a3a: 97 95 ror r25 - a3c: 87 95 ror r24 - a3e: 1a 95 dec r17 - a40: d1 f7 brne .-12 ; 0xa36 - a42: 83 70 andi r24, 0x03 ; 3 - a44: 82 95 swap r24 - a46: 80 7f andi r24, 0xF0 ; 240 - a48: 03 70 andi r16, 0x03 ; 3 - a4a: 80 2b or r24, r16 - a4c: 81 a7 std Z+41, r24 ; 0x29 - a4e: b4 a2 std Z+36, r11 ; 0x24 - a50: a5 a2 std Z+37, r10 ; 0x25 - a52: 45 2b or r20, r21 - a54: 46 a3 std Z+38, r20 ; 0x26 - a56: 9f 01 movw r18, r30 - a58: 2c 5d subi r18, 0xDC ; 220 - a5a: 3f 4f sbci r19, 0xFF ; 255 - a5c: bf 01 movw r22, r30 - a5e: 6e 5f subi r22, 0xFE ; 254 - a60: 7f 4f sbci r23, 0xFF ; 255 - a62: 18 e0 ldi r17, 0x08 ; 8 - a64: e1 2e mov r14, r17 - a66: f1 2c mov r15, r1 - a68: 00 e0 ldi r16, 0x00 ; 0 - a6a: 10 e0 ldi r17, 0x00 ; 0 - a6c: 4a e2 ldi r20, 0x2A ; 42 - a6e: cf 01 movw r24, r30 - a70: d7 de rcall .-594 ; 0x820 - a72: cc cf rjmp .-104 ; 0xa0c - a74: 43 70 andi r20, 0x03 ; 3 - a76: 56 a5 ldd r21, Z+46 ; 0x2e - a78: 50 78 andi r21, 0x80 ; 128 - a7a: 37 a7 std Z+47, r19 ; 0x2f - a7c: 20 ab std Z+48, r18 ; 0x30 - a7e: f2 aa std Z+50, r15 ; 0x32 - a80: e3 aa std Z+51, r14 ; 0x33 - a82: d6 01 movw r26, r12 - a84: c5 01 movw r24, r10 - a86: 6c e0 ldi r22, 0x0C ; 12 - a88: b6 95 lsr r27 - a8a: a7 95 ror r26 - a8c: 97 95 ror r25 - a8e: 87 95 ror r24 - a90: 6a 95 dec r22 - a92: d1 f7 brne .-12 ; 0xa88 - a94: 83 70 andi r24, 0x03 ; 3 - a96: 82 95 swap r24 - a98: 80 7f andi r24, 0xF0 ; 240 - a9a: 03 70 andi r16, 0x03 ; 3 - a9c: 80 2b or r24, r16 - a9e: 81 ab std Z+49, r24 ; 0x31 - aa0: b4 a6 std Z+44, r11 ; 0x2c - aa2: a5 a6 std Z+45, r10 ; 0x2d - aa4: 45 2b or r20, r21 - aa6: 46 a7 std Z+46, r20 ; 0x2e - aa8: 9f 01 movw r18, r30 - aaa: 24 5d subi r18, 0xD4 ; 212 - aac: 3f 4f sbci r19, 0xFF ; 255 - aae: bf 01 movw r22, r30 - ab0: 6e 5f subi r22, 0xFE ; 254 - ab2: 7f 4f sbci r23, 0xFF ; 255 - ab4: 18 e0 ldi r17, 0x08 ; 8 - ab6: e1 2e mov r14, r17 - ab8: f1 2c mov r15, r1 - aba: 00 e0 ldi r16, 0x00 ; 0 - abc: 10 e0 ldi r17, 0x00 ; 0 - abe: 42 e3 ldi r20, 0x32 ; 50 - ac0: cf 01 movw r24, r30 - ac2: ae de rcall .-676 ; 0x820 - ac4: a3 cf rjmp .-186 ; 0xa0c +000009b0 : + 9b0: 0f 93 push r16 + 9b2: 1f 93 push r17 + 9b4: 61 30 cpi r22, 0x01 ; 1 + 9b6: 51 f0 breq .+20 ; 0x9cc + 9b8: 18 f0 brcs .+6 ; 0x9c0 + 9ba: 62 30 cpi r22, 0x02 ; 2 + 9bc: 69 f0 breq .+26 ; 0x9d8 + 9be: 11 c0 rjmp .+34 ; 0x9e2 + 9c0: fc 01 movw r30, r24 + 9c2: 27 81 ldd r18, Z+7 ; 0x07 + 9c4: 40 fb bst r20, 0 + 9c6: 20 f9 bld r18, 0 + 9c8: 27 83 std Z+7, r18 ; 0x07 + 9ca: 0b c0 rjmp .+22 ; 0x9e2 + 9cc: fc 01 movw r30, r24 + 9ce: 27 81 ldd r18, Z+7 ; 0x07 + 9d0: 40 fb bst r20, 0 + 9d2: 21 f9 bld r18, 1 + 9d4: 27 83 std Z+7, r18 ; 0x07 + 9d6: 05 c0 rjmp .+10 ; 0x9e2 + 9d8: fc 01 movw r30, r24 + 9da: 27 81 ldd r18, Z+7 ; 0x07 + 9dc: 40 fb bst r20, 0 + 9de: 22 f9 bld r18, 2 + 9e0: 27 83 std Z+7, r18 ; 0x07 + 9e2: ac 01 movw r20, r24 + 9e4: 49 5f subi r20, 0xF9 ; 249 + 9e6: 5f 4f sbci r21, 0xFF ; 255 + 9e8: 01 e0 ldi r16, 0x01 ; 1 + 9ea: 10 e0 ldi r17, 0x00 ; 0 + 9ec: 20 e0 ldi r18, 0x00 ; 0 + 9ee: 30 e0 ldi r19, 0x00 ; 0 + 9f0: 63 e0 ldi r22, 0x03 ; 3 + 9f2: 4c df rcall .-360 ; 0x88c + 9f4: 80 e0 ldi r24, 0x00 ; 0 + 9f6: 90 e0 ldi r25, 0x00 ; 0 + 9f8: 1f 91 pop r17 + 9fa: 0f 91 pop r16 + 9fc: 08 95 ret -00000ac6 : - ac6: ef 92 push r14 - ac8: ff 92 push r15 - aca: 0f 93 push r16 - acc: 1f 93 push r17 - ace: 61 30 cpi r22, 0x01 ; 1 - ad0: 09 f1 breq .+66 ; 0xb14 - ad2: d0 f0 brcs .+52 ; 0xb08 - ad4: 62 30 cpi r22, 0x02 ; 2 - ad6: 29 f4 brne .+10 ; 0xae2 - ad8: fc 01 movw r30, r24 - ada: 27 81 ldd r18, Z+7 ; 0x07 - adc: 40 fb bst r20, 0 - ade: 22 f9 bld r18, 2 - ae0: 27 83 std Z+7, r18 ; 0x07 - ae2: 9c 01 movw r18, r24 - ae4: 29 5f subi r18, 0xF9 ; 249 - ae6: 3f 4f sbci r19, 0xFF ; 255 - ae8: bc 01 movw r22, r24 - aea: 6e 5f subi r22, 0xFE ; 254 - aec: 7f 4f sbci r23, 0xFF ; 255 - aee: e1 2c mov r14, r1 - af0: f1 2c mov r15, r1 - af2: 87 01 movw r16, r14 - af4: e3 94 inc r14 - af6: 43 e0 ldi r20, 0x03 ; 3 - af8: 93 de rcall .-730 ; 0x820 - afa: 80 e0 ldi r24, 0x00 ; 0 - afc: 90 e0 ldi r25, 0x00 ; 0 - afe: 1f 91 pop r17 - b00: 0f 91 pop r16 - b02: ff 90 pop r15 - b04: ef 90 pop r14 - b06: 08 95 ret - b08: fc 01 movw r30, r24 - b0a: 27 81 ldd r18, Z+7 ; 0x07 - b0c: 40 fb bst r20, 0 - b0e: 20 f9 bld r18, 0 - b10: 27 83 std Z+7, r18 ; 0x07 - b12: e7 cf rjmp .-50 ; 0xae2 - b14: fc 01 movw r30, r24 - b16: 27 81 ldd r18, Z+7 ; 0x07 - b18: 40 fb bst r20, 0 - b1a: 21 f9 bld r18, 1 - b1c: 27 83 std Z+7, r18 ; 0x07 - b1e: e1 cf rjmp .-62 ; 0xae2 +000009fe : + 9fe: 0f 93 push r16 + a00: 1f 93 push r17 + a02: fc 01 movw r30, r24 + a04: 92 85 ldd r25, Z+10 ; 0x0a + a06: 40 fb bst r20, 0 + a08: 97 f9 bld r25, 7 + a0a: 90 79 andi r25, 0x90 ; 144 + a0c: 9f 64 ori r25, 0x4F ; 79 + a0e: 92 87 std Z+10, r25 ; 0x0a + a10: 61 30 cpi r22, 0x01 ; 1 + a12: 79 f0 breq .+30 ; 0xa32 + a14: 18 f0 brcs .+6 ; 0xa1c + a16: 62 30 cpi r22, 0x02 ; 2 + a18: b9 f0 breq .+46 ; 0xa48 + a1a: 20 c0 rjmp .+64 ; 0xa5c + a1c: af 01 movw r20, r30 + a1e: 46 5f subi r20, 0xF6 ; 246 + a20: 5f 4f sbci r21, 0xFF ; 255 + a22: 01 e0 ldi r16, 0x01 ; 1 + a24: 10 e0 ldi r17, 0x00 ; 0 + a26: 20 e0 ldi r18, 0x00 ; 0 + a28: 30 e0 ldi r19, 0x00 ; 0 + a2a: 60 e1 ldi r22, 0x10 ; 16 + a2c: cf 01 movw r24, r30 + a2e: 2e df rcall .-420 ; 0x88c + a30: 15 c0 rjmp .+42 ; 0xa5c + a32: af 01 movw r20, r30 + a34: 46 5f subi r20, 0xF6 ; 246 + a36: 5f 4f sbci r21, 0xFF ; 255 + a38: 01 e0 ldi r16, 0x01 ; 1 + a3a: 10 e0 ldi r17, 0x00 ; 0 + a3c: 20 e0 ldi r18, 0x00 ; 0 + a3e: 30 e0 ldi r19, 0x00 ; 0 + a40: 61 e1 ldi r22, 0x11 ; 17 + a42: cf 01 movw r24, r30 + a44: 23 df rcall .-442 ; 0x88c + a46: 0a c0 rjmp .+20 ; 0xa5c + a48: af 01 movw r20, r30 + a4a: 46 5f subi r20, 0xF6 ; 246 + a4c: 5f 4f sbci r21, 0xFF ; 255 + a4e: 01 e0 ldi r16, 0x01 ; 1 + a50: 10 e0 ldi r17, 0x00 ; 0 + a52: 20 e0 ldi r18, 0x00 ; 0 + a54: 30 e0 ldi r19, 0x00 ; 0 + a56: 62 e1 ldi r22, 0x12 ; 18 + a58: cf 01 movw r24, r30 + a5a: 18 df rcall .-464 ; 0x88c + a5c: 80 e0 ldi r24, 0x00 ; 0 + a5e: 90 e0 ldi r25, 0x00 ; 0 + a60: 1f 91 pop r17 + a62: 0f 91 pop r16 + a64: 08 95 ret -00000b20 : - b20: ef 92 push r14 - b22: ff 92 push r15 - b24: 0f 93 push r16 - b26: 1f 93 push r17 - b28: 61 30 cpi r22, 0x01 ; 1 - b2a: b9 f1 breq .+110 ; 0xb9a - b2c: e0 f0 brcs .+56 ; 0xb66 - b2e: 62 30 cpi r22, 0x02 ; 2 - b30: 99 f4 brne .+38 ; 0xb58 - b32: fc 01 movw r30, r24 - b34: 24 85 ldd r18, Z+12 ; 0x0c - b36: 40 fb bst r20, 0 - b38: 27 f9 bld r18, 7 - b3a: 23 79 andi r18, 0x93 ; 147 - b3c: 23 66 ori r18, 0x63 ; 99 - b3e: 24 87 std Z+12, r18 ; 0x0c - b40: 9c 01 movw r18, r24 - b42: 24 5f subi r18, 0xF4 ; 244 - b44: 3f 4f sbci r19, 0xFF ; 255 - b46: bc 01 movw r22, r24 - b48: 6e 5f subi r22, 0xFE ; 254 - b4a: 7f 4f sbci r23, 0xFF ; 255 - b4c: e1 2c mov r14, r1 - b4e: f1 2c mov r15, r1 - b50: 87 01 movw r16, r14 - b52: e3 94 inc r14 - b54: 42 e1 ldi r20, 0x12 ; 18 - b56: 64 de rcall .-824 ; 0x820 - b58: 80 e0 ldi r24, 0x00 ; 0 - b5a: 90 e0 ldi r25, 0x00 ; 0 - b5c: 1f 91 pop r17 - b5e: 0f 91 pop r16 - b60: ff 90 pop r15 - b62: ef 90 pop r14 - b64: 08 95 ret - b66: fc 01 movw r30, r24 - b68: 22 85 ldd r18, Z+10 ; 0x0a - b6a: 40 fb bst r20, 0 - b6c: 27 f9 bld r18, 7 - b6e: 20 79 andi r18, 0x90 ; 144 - b70: 2f 64 ori r18, 0x4F ; 79 - b72: 22 87 std Z+10, r18 ; 0x0a - b74: 9c 01 movw r18, r24 - b76: 26 5f subi r18, 0xF6 ; 246 - b78: 3f 4f sbci r19, 0xFF ; 255 - b7a: bc 01 movw r22, r24 - b7c: 6e 5f subi r22, 0xFE ; 254 - b7e: 7f 4f sbci r23, 0xFF ; 255 - b80: e1 2c mov r14, r1 - b82: f1 2c mov r15, r1 - b84: 87 01 movw r16, r14 - b86: e3 94 inc r14 - b88: 40 e1 ldi r20, 0x10 ; 16 - b8a: 4a de rcall .-876 ; 0x820 - b8c: 80 e0 ldi r24, 0x00 ; 0 - b8e: 90 e0 ldi r25, 0x00 ; 0 - b90: 1f 91 pop r17 - b92: 0f 91 pop r16 - b94: ff 90 pop r15 - b96: ef 90 pop r14 - b98: 08 95 ret - b9a: fc 01 movw r30, r24 - b9c: 23 85 ldd r18, Z+11 ; 0x0b - b9e: 40 fb bst r20, 0 - ba0: 27 f9 bld r18, 7 - ba2: 2f 66 ori r18, 0x6F ; 111 - ba4: 23 87 std Z+11, r18 ; 0x0b - ba6: 9c 01 movw r18, r24 - ba8: 25 5f subi r18, 0xF5 ; 245 - baa: 3f 4f sbci r19, 0xFF ; 255 - bac: bc 01 movw r22, r24 - bae: 6e 5f subi r22, 0xFE ; 254 - bb0: 7f 4f sbci r23, 0xFF ; 255 - bb2: e1 2c mov r14, r1 - bb4: f1 2c mov r15, r1 - bb6: 87 01 movw r16, r14 - bb8: e3 94 inc r14 - bba: 41 e1 ldi r20, 0x11 ; 17 - bbc: 31 de rcall .-926 ; 0x820 - bbe: 80 e0 ldi r24, 0x00 ; 0 - bc0: 90 e0 ldi r25, 0x00 ; 0 - bc2: 1f 91 pop r17 - bc4: 0f 91 pop r16 - bc6: ff 90 pop r15 - bc8: ef 90 pop r14 - bca: 08 95 ret +00000a66 : + a66: 0f 93 push r16 + a68: 1f 93 push r17 + a6a: 66 23 and r22, r22 + a6c: 19 f0 breq .+6 ; 0xa74 + a6e: 61 30 cpi r22, 0x01 ; 1 + a70: 39 f0 breq .+14 ; 0xa80 + a72: 0a c0 rjmp .+20 ; 0xa88 + a74: fc 01 movw r30, r24 + a76: 21 85 ldd r18, Z+9 ; 0x09 + a78: 2b 7f andi r18, 0xFB ; 251 + a7a: 27 7f andi r18, 0xF7 ; 247 + a7c: 21 87 std Z+9, r18 ; 0x09 + a7e: 04 c0 rjmp .+8 ; 0xa88 + a80: fc 01 movw r30, r24 + a82: 21 85 ldd r18, Z+9 ; 0x09 + a84: 24 60 ori r18, 0x04 ; 4 + a86: 21 87 std Z+9, r18 ; 0x09 + a88: ac 01 movw r20, r24 + a8a: 47 5f subi r20, 0xF7 ; 247 + a8c: 5f 4f sbci r21, 0xFF ; 255 + a8e: 01 e0 ldi r16, 0x01 ; 1 + a90: 10 e0 ldi r17, 0x00 ; 0 + a92: 20 e0 ldi r18, 0x00 ; 0 + a94: 30 e0 ldi r19, 0x00 ; 0 + a96: 60 ef ldi r22, 0xF0 ; 240 + a98: f9 de rcall .-526 ; 0x88c + a9a: 80 e0 ldi r24, 0x00 ; 0 + a9c: 90 e0 ldi r25, 0x00 ; 0 + a9e: 1f 91 pop r17 + aa0: 0f 91 pop r16 + aa2: 08 95 ret -00000bcc : - bcc: ef 92 push r14 - bce: ff 92 push r15 - bd0: 0f 93 push r16 - bd2: 1f 93 push r17 - bd4: 66 23 and r22, r22 - bd6: c9 f0 breq .+50 ; 0xc0a - bd8: 61 30 cpi r22, 0x01 ; 1 - bda: 21 f4 brne .+8 ; 0xbe4 - bdc: fc 01 movw r30, r24 - bde: 21 85 ldd r18, Z+9 ; 0x09 - be0: 24 60 ori r18, 0x04 ; 4 - be2: 21 87 std Z+9, r18 ; 0x09 - be4: 9c 01 movw r18, r24 - be6: 27 5f subi r18, 0xF7 ; 247 - be8: 3f 4f sbci r19, 0xFF ; 255 - bea: bc 01 movw r22, r24 - bec: 6e 5f subi r22, 0xFE ; 254 - bee: 7f 4f sbci r23, 0xFF ; 255 - bf0: e1 2c mov r14, r1 - bf2: f1 2c mov r15, r1 - bf4: 87 01 movw r16, r14 - bf6: e3 94 inc r14 - bf8: 40 ef ldi r20, 0xF0 ; 240 - bfa: 12 de rcall .-988 ; 0x820 - bfc: 80 e0 ldi r24, 0x00 ; 0 - bfe: 90 e0 ldi r25, 0x00 ; 0 - c00: 1f 91 pop r17 - c02: 0f 91 pop r16 - c04: ff 90 pop r15 - c06: ef 90 pop r14 - c08: 08 95 ret - c0a: fc 01 movw r30, r24 - c0c: 21 85 ldd r18, Z+9 ; 0x09 - c0e: 2b 7f andi r18, 0xFB ; 251 - c10: 27 7f andi r18, 0xF7 ; 247 - c12: 21 87 std Z+9, r18 ; 0x09 - c14: e7 cf rjmp .-50 ; 0xbe4 +00000aa4 : + aa4: 0f 93 push r16 + aa6: 1f 93 push r17 + aa8: 31 e0 ldi r19, 0x01 ; 1 + aaa: 61 11 cpse r22, r1 + aac: 01 c0 rjmp .+2 ; 0xab0 + aae: 30 e0 ldi r19, 0x00 ; 0 + ab0: fc 01 movw r30, r24 + ab2: 26 8d ldd r18, Z+30 ; 0x1e + ab4: 30 fb bst r19, 0 + ab6: 25 f9 bld r18, 5 + ab8: 26 8f std Z+30, r18 ; 0x1e + aba: 31 e0 ldi r19, 0x01 ; 1 + abc: 41 11 cpse r20, r1 + abe: 01 c0 rjmp .+2 ; 0xac2 + ac0: 30 e0 ldi r19, 0x00 ; 0 + ac2: fc 01 movw r30, r24 + ac4: 26 8d ldd r18, Z+30 ; 0x1e + ac6: 30 fb bst r19, 0 + ac8: 27 f9 bld r18, 7 + aca: 26 8f std Z+30, r18 ; 0x1e + acc: ac 01 movw r20, r24 + ace: 42 5e subi r20, 0xE2 ; 226 + ad0: 5f 4f sbci r21, 0xFF ; 255 + ad2: 01 e0 ldi r16, 0x01 ; 1 + ad4: 10 e0 ldi r17, 0x00 ; 0 + ad6: 20 e0 ldi r18, 0x00 ; 0 + ad8: 30 e0 ldi r19, 0x00 ; 0 + ada: 61 eb ldi r22, 0xB1 ; 177 + adc: d7 de rcall .-594 ; 0x88c + ade: 80 e0 ldi r24, 0x00 ; 0 + ae0: 90 e0 ldi r25, 0x00 ; 0 + ae2: 1f 91 pop r17 + ae4: 0f 91 pop r16 + ae6: 08 95 ret -00000c16 : +00000ae8 : + ae8: af 92 push r10 + aea: bf 92 push r11 + aec: cf 92 push r12 + aee: df 92 push r13 + af0: ef 92 push r14 + af2: ff 92 push r15 + af4: 0f 93 push r16 + af6: 1f 93 push r17 + af8: cf 93 push r28 + afa: df 93 push r29 + afc: ec 01 movw r28, r24 + afe: 42 70 andi r20, 0x02 ; 2 + b00: 8e 85 ldd r24, Y+14 ; 0x0e + b02: 8c 7f andi r24, 0xFC ; 252 + b04: 48 2b or r20, r24 + b06: 4e 87 std Y+14, r20 ; 0x0e + b08: 3f 87 std Y+15, r19 ; 0x0f + b0a: 28 8b std Y+16, r18 ; 0x10 + b0c: d8 01 movw r26, r16 + b0e: c7 01 movw r24, r14 + b10: 88 27 eor r24, r24 + b12: 99 27 eor r25, r25 + b14: af 70 andi r26, 0x0F ; 15 + b16: bb 27 eor r27, r27 + b18: fa 8a std Y+18, r15 ; 0x12 + b1a: eb 8a std Y+19, r14 ; 0x13 + b1c: 8a 2f mov r24, r26 + b1e: 8f 70 andi r24, 0x0F ; 15 + b20: 89 8b std Y+17, r24 ; 0x11 + b22: bc 86 std Y+12, r11 ; 0x0c + b24: ad 86 std Y+13, r10 ; 0x0d + b26: 66 23 and r22, r22 + b28: 19 f0 breq .+6 ; 0xb30 + b2a: 61 30 cpi r22, 0x01 ; 1 + b2c: 61 f0 breq .+24 ; 0xb46 + b2e: 15 c0 rjmp .+42 ; 0xb5a + b30: 08 e0 ldi r16, 0x08 ; 8 + b32: 10 e0 ldi r17, 0x00 ; 0 + b34: 20 e0 ldi r18, 0x00 ; 0 + b36: 30 e0 ldi r19, 0x00 ; 0 + b38: ae 01 movw r20, r28 + b3a: 44 5f subi r20, 0xF4 ; 244 + b3c: 5f 4f sbci r21, 0xFF ; 255 + b3e: 6a e1 ldi r22, 0x1A ; 26 + b40: ce 01 movw r24, r28 + b42: a4 de rcall .-696 ; 0x88c + b44: 0a c0 rjmp .+20 ; 0xb5a + b46: 08 e0 ldi r16, 0x08 ; 8 + b48: 10 e0 ldi r17, 0x00 ; 0 + b4a: 20 e0 ldi r18, 0x00 ; 0 + b4c: 30 e0 ldi r19, 0x00 ; 0 + b4e: ae 01 movw r20, r28 + b50: 44 5f subi r20, 0xF4 ; 244 + b52: 5f 4f sbci r21, 0xFF ; 255 + b54: 62 e2 ldi r22, 0x22 ; 34 + b56: ce 01 movw r24, r28 + b58: 99 de rcall .-718 ; 0x88c + b5a: 41 e0 ldi r20, 0x01 ; 1 + b5c: 61 e0 ldi r22, 0x01 ; 1 + b5e: ce 01 movw r24, r28 + b60: a1 df rcall .-190 ; 0xaa4 + b62: 80 e0 ldi r24, 0x00 ; 0 + b64: 90 e0 ldi r25, 0x00 ; 0 + b66: df 91 pop r29 + b68: cf 91 pop r28 + b6a: 1f 91 pop r17 + b6c: 0f 91 pop r16 + b6e: ff 90 pop r15 + b70: ef 90 pop r14 + b72: df 90 pop r13 + b74: cf 90 pop r12 + b76: bf 90 pop r11 + b78: af 90 pop r10 + b7a: 08 95 ret + +00000b7c : int cm_si5351_init(si5351_driver *inst, void *i2c_transfer_inst, setGet_I2C_Event_fpt i2c_transfer_evt){ - c16: af 92 push r10 - c18: bf 92 push r11 - c1a: cf 92 push r12 - c1c: df 92 push r13 - c1e: ef 92 push r14 - c20: ff 92 push r15 - c22: 0f 93 push r16 - c24: 1f 93 push r17 - c26: cf 93 push r28 - c28: df 93 push r29 - c2a: 1f 92 push r1 - c2c: cd b7 in r28, 0x3d ; 61 - c2e: de b7 in r29, 0x3e ; 62 + b7c: ef 92 push r14 + b7e: ff 92 push r15 + b80: 0f 93 push r16 + b82: 1f 93 push r17 + b84: cf 93 push r28 + b86: df 93 push r29 + b88: 1f 92 push r1 + b8a: cd b7 in r28, 0x3d ; 61 + b8c: de b7 in r29, 0x3e ; 62 if(inst == NULL)return -1; - c30: 00 97 sbiw r24, 0x00 ; 0 - c32: 09 f4 brne .+2 ; 0xc36 - c34: 83 c0 rjmp .+262 ; 0xd3c + b8e: 00 97 sbiw r24, 0x00 ; 0 + b90: 09 f4 brne .+2 ; 0xb94 + b92: 91 c0 rjmp .+290 ; 0xcb6 if(i2c_transfer_inst == NULL)return -1; - c36: 61 15 cp r22, r1 - c38: 71 05 cpc r23, r1 - c3a: 09 f4 brne .+2 ; 0xc3e - c3c: 7f c0 rjmp .+254 ; 0xd3c + b94: 61 15 cp r22, r1 + b96: 71 05 cpc r23, r1 + b98: 09 f4 brne .+2 ; 0xb9c + b9a: 90 c0 rjmp .+288 ; 0xcbc if(i2c_transfer_evt == NULL)return -1; - c3e: 41 15 cp r20, r1 - c40: 51 05 cpc r21, r1 - c42: 09 f4 brne .+2 ; 0xc46 - c44: 7b c0 rjmp .+246 ; 0xd3c - c46: 6c 01 movw r12, r24 + b9c: 41 15 cp r20, r1 + b9e: 51 05 cpc r21, r1 + ba0: 09 f4 brne .+2 ; 0xba4 + ba2: 8f c0 rjmp .+286 ; 0xcc2 + ba4: 7c 01 movw r14, r24 inst->i2c_transfer_inst = i2c_transfer_inst; - c48: dc 01 movw r26, r24 - c4a: 6d 93 st X+, r22 - c4c: 7c 93 st X, r23 - c4e: 11 97 sbiw r26, 0x01 ; 1 + ba6: dc 01 movw r26, r24 + ba8: 6d 93 st X+, r22 + baa: 7c 93 st X, r23 + bac: 11 97 sbiw r26, 0x01 ; 1 inst->i2c_transfer_evt = i2c_transfer_evt; - c50: 12 96 adiw r26, 0x02 ; 2 - c52: 4d 93 st X+, r20 - c54: 5c 93 st X, r21 - c56: 13 97 sbiw r26, 0x03 ; 3 + bae: 12 96 adiw r26, 0x02 ; 2 + bb0: 4d 93 st X+, r20 + bb2: 5c 93 st X, r21 + bb4: 13 97 sbiw r26, 0x03 ; 3 int ret = 0; memset(&(inst->device_data),0x00,sizeof(si5351_data)); - c58: fc 01 movw r30, r24 - c5a: 34 96 adiw r30, 0x04 ; 4 - c5c: 84 e5 ldi r24, 0x54 ; 84 - c5e: df 01 movw r26, r30 - c60: 1d 92 st X+, r1 - c62: 8a 95 dec r24 - c64: e9 f7 brne .-6 ; 0xc60 + bb6: fc 01 movw r30, r24 + bb8: 34 96 adiw r30, 0x04 ; 4 + bba: 8b e1 ldi r24, 0x1B ; 27 + bbc: df 01 movw r26, r30 + bbe: 1d 92 st X+, r1 + bc0: 8a 95 dec r24 + bc2: e9 f7 brne .-6 ; 0xbbe /* Disable all outputs setting CLKx_DIS high */ uint8_t temp = 0xff; - c66: 8f ef ldi r24, 0xFF ; 255 - c68: 89 83 std Y+1, r24 ; 0x01 - c6a: 56 01 movw r10, r12 - c6c: b2 e0 ldi r27, 0x02 ; 2 - c6e: ab 0e add r10, r27 - c70: b1 1c adc r11, r1 + bc4: 8f ef ldi r24, 0xFF ; 255 + bc6: 89 83 std Y+1, r24 ; 0x01 writeRegister(inst,SI5351_REG_OUTPUT_ENABLE_CONTROL,&temp,1); - c72: e1 2c mov r14, r1 - c74: f1 2c mov r15, r1 - c76: 87 01 movw r16, r14 - c78: e3 94 inc r14 - c7a: 9e 01 movw r18, r28 - c7c: 2f 5f subi r18, 0xFF ; 255 - c7e: 3f 4f sbci r19, 0xFF ; 255 - c80: 43 e0 ldi r20, 0x03 ; 3 - c82: b5 01 movw r22, r10 - c84: c6 01 movw r24, r12 - c86: cc dd rcall .-1128 ; 0x820 + bc8: 01 e0 ldi r16, 0x01 ; 1 + bca: 10 e0 ldi r17, 0x00 ; 0 + bcc: 20 e0 ldi r18, 0x00 ; 0 + bce: 30 e0 ldi r19, 0x00 ; 0 + bd0: ae 01 movw r20, r28 + bd2: 4f 5f subi r20, 0xFF ; 255 + bd4: 5f 4f sbci r21, 0xFF ; 255 + bd6: 63 e0 ldi r22, 0x03 ; 3 + bd8: c7 01 movw r24, r14 + bda: 58 de rcall .-848 ; 0x88c /* Power down all output drivers */ temp = 0x80; - c88: 80 e8 ldi r24, 0x80 ; 128 - c8a: 89 83 std Y+1, r24 ; 0x01 + bdc: 80 e8 ldi r24, 0x80 ; 128 + bde: 89 83 std Y+1, r24 ; 0x01 writeRegister(inst,SI5351_REG_CLK_0_CONTROL,&temp,1); - c8c: 9e 01 movw r18, r28 - c8e: 2f 5f subi r18, 0xFF ; 255 - c90: 3f 4f sbci r19, 0xFF ; 255 - c92: 40 e1 ldi r20, 0x10 ; 16 - c94: b5 01 movw r22, r10 - c96: c6 01 movw r24, r12 - c98: c3 dd rcall .-1146 ; 0x820 + be0: 01 e0 ldi r16, 0x01 ; 1 + be2: 10 e0 ldi r17, 0x00 ; 0 + be4: 20 e0 ldi r18, 0x00 ; 0 + be6: 30 e0 ldi r19, 0x00 ; 0 + be8: ae 01 movw r20, r28 + bea: 4f 5f subi r20, 0xFF ; 255 + bec: 5f 4f sbci r21, 0xFF ; 255 + bee: 60 e1 ldi r22, 0x10 ; 16 + bf0: c7 01 movw r24, r14 + bf2: 4c de rcall .-872 ; 0x88c writeRegister(inst,SI5351_REG_CLK_1_CONTROL,&temp,1); - c9a: 9e 01 movw r18, r28 - c9c: 2f 5f subi r18, 0xFF ; 255 - c9e: 3f 4f sbci r19, 0xFF ; 255 - ca0: 41 e1 ldi r20, 0x11 ; 17 - ca2: b5 01 movw r22, r10 - ca4: c6 01 movw r24, r12 - ca6: bc dd rcall .-1160 ; 0x820 + bf4: 01 e0 ldi r16, 0x01 ; 1 + bf6: 10 e0 ldi r17, 0x00 ; 0 + bf8: 20 e0 ldi r18, 0x00 ; 0 + bfa: 30 e0 ldi r19, 0x00 ; 0 + bfc: ae 01 movw r20, r28 + bfe: 4f 5f subi r20, 0xFF ; 255 + c00: 5f 4f sbci r21, 0xFF ; 255 + c02: 61 e1 ldi r22, 0x11 ; 17 + c04: c7 01 movw r24, r14 + c06: 42 de rcall .-892 ; 0x88c writeRegister(inst,SI5351_REG_CLK_2_CONTROL,&temp,1); - ca8: 9e 01 movw r18, r28 - caa: 2f 5f subi r18, 0xFF ; 255 - cac: 3f 4f sbci r19, 0xFF ; 255 - cae: 42 e1 ldi r20, 0x12 ; 18 - cb0: b5 01 movw r22, r10 - cb2: c6 01 movw r24, r12 - cb4: b5 dd rcall .-1174 ; 0x820 + c08: 01 e0 ldi r16, 0x01 ; 1 + c0a: 10 e0 ldi r17, 0x00 ; 0 + c0c: 20 e0 ldi r18, 0x00 ; 0 + c0e: 30 e0 ldi r19, 0x00 ; 0 + c10: ae 01 movw r20, r28 + c12: 4f 5f subi r20, 0xFF ; 255 + c14: 5f 4f sbci r21, 0xFF ; 255 + c16: 62 e1 ldi r22, 0x12 ; 18 + c18: c7 01 movw r24, r14 + c1a: 38 de rcall .-912 ; 0x88c writeRegister(inst,SI5351_REG_CLK_3_CONTROL,&temp,1); - cb6: 9e 01 movw r18, r28 - cb8: 2f 5f subi r18, 0xFF ; 255 - cba: 3f 4f sbci r19, 0xFF ; 255 - cbc: 43 e1 ldi r20, 0x13 ; 19 - cbe: b5 01 movw r22, r10 - cc0: c6 01 movw r24, r12 - cc2: ae dd rcall .-1188 ; 0x820 + c1c: 01 e0 ldi r16, 0x01 ; 1 + c1e: 10 e0 ldi r17, 0x00 ; 0 + c20: 20 e0 ldi r18, 0x00 ; 0 + c22: 30 e0 ldi r19, 0x00 ; 0 + c24: ae 01 movw r20, r28 + c26: 4f 5f subi r20, 0xFF ; 255 + c28: 5f 4f sbci r21, 0xFF ; 255 + c2a: 63 e1 ldi r22, 0x13 ; 19 + c2c: c7 01 movw r24, r14 + c2e: 2e de rcall .-932 ; 0x88c writeRegister(inst,SI5351_REG_CLK_4_CONTROL,&temp,1); - cc4: 9e 01 movw r18, r28 - cc6: 2f 5f subi r18, 0xFF ; 255 - cc8: 3f 4f sbci r19, 0xFF ; 255 - cca: 44 e1 ldi r20, 0x14 ; 20 - ccc: b5 01 movw r22, r10 - cce: c6 01 movw r24, r12 - cd0: a7 dd rcall .-1202 ; 0x820 + c30: 01 e0 ldi r16, 0x01 ; 1 + c32: 10 e0 ldi r17, 0x00 ; 0 + c34: 20 e0 ldi r18, 0x00 ; 0 + c36: 30 e0 ldi r19, 0x00 ; 0 + c38: ae 01 movw r20, r28 + c3a: 4f 5f subi r20, 0xFF ; 255 + c3c: 5f 4f sbci r21, 0xFF ; 255 + c3e: 64 e1 ldi r22, 0x14 ; 20 + c40: c7 01 movw r24, r14 + c42: 24 de rcall .-952 ; 0x88c writeRegister(inst,SI5351_REG_CLK_5_CONTROL,&temp,1); - cd2: 9e 01 movw r18, r28 - cd4: 2f 5f subi r18, 0xFF ; 255 - cd6: 3f 4f sbci r19, 0xFF ; 255 - cd8: 45 e1 ldi r20, 0x15 ; 21 - cda: b5 01 movw r22, r10 - cdc: c6 01 movw r24, r12 - cde: a0 dd rcall .-1216 ; 0x820 + c44: 01 e0 ldi r16, 0x01 ; 1 + c46: 10 e0 ldi r17, 0x00 ; 0 + c48: 20 e0 ldi r18, 0x00 ; 0 + c4a: 30 e0 ldi r19, 0x00 ; 0 + c4c: ae 01 movw r20, r28 + c4e: 4f 5f subi r20, 0xFF ; 255 + c50: 5f 4f sbci r21, 0xFF ; 255 + c52: 65 e1 ldi r22, 0x15 ; 21 + c54: c7 01 movw r24, r14 + c56: 1a de rcall .-972 ; 0x88c writeRegister(inst,SI5351_REG_CLK_6_CONTROL,&temp,1); - ce0: 9e 01 movw r18, r28 - ce2: 2f 5f subi r18, 0xFF ; 255 - ce4: 3f 4f sbci r19, 0xFF ; 255 - ce6: 46 e1 ldi r20, 0x16 ; 22 - ce8: b5 01 movw r22, r10 - cea: c6 01 movw r24, r12 - cec: 99 dd rcall .-1230 ; 0x820 + c58: 01 e0 ldi r16, 0x01 ; 1 + c5a: 10 e0 ldi r17, 0x00 ; 0 + c5c: 20 e0 ldi r18, 0x00 ; 0 + c5e: 30 e0 ldi r19, 0x00 ; 0 + c60: ae 01 movw r20, r28 + c62: 4f 5f subi r20, 0xFF ; 255 + c64: 5f 4f sbci r21, 0xFF ; 255 + c66: 66 e1 ldi r22, 0x16 ; 22 + c68: c7 01 movw r24, r14 + c6a: 10 de rcall .-992 ; 0x88c writeRegister(inst,SI5351_REG_CLK_7_CONTROL,&temp,1); - cee: 9e 01 movw r18, r28 - cf0: 2f 5f subi r18, 0xFF ; 255 - cf2: 3f 4f sbci r19, 0xFF ; 255 - cf4: 47 e1 ldi r20, 0x17 ; 23 - cf6: b5 01 movw r22, r10 - cf8: c6 01 movw r24, r12 - cfa: 92 dd rcall .-1244 ; 0x820 + c6c: 01 e0 ldi r16, 0x01 ; 1 + c6e: 10 e0 ldi r17, 0x00 ; 0 + c70: 20 e0 ldi r18, 0x00 ; 0 + c72: 30 e0 ldi r19, 0x00 ; 0 + c74: ae 01 movw r20, r28 + c76: 4f 5f subi r20, 0xFF ; 255 + c78: 5f 4f sbci r21, 0xFF ; 255 + c7a: 67 e1 ldi r22, 0x17 ; 23 + c7c: c7 01 movw r24, r14 + c7e: 06 de rcall .-1012 ; 0x88c temp = SI5351_CRYSTAL_LOAD_10PF; - cfc: 80 ec ldi r24, 0xC0 ; 192 - cfe: 89 83 std Y+1, r24 ; 0x01 + c80: 80 ec ldi r24, 0xC0 ; 192 + c82: 89 83 std Y+1, r24 ; 0x01 writeRegister(inst,SI5351_REG_CRYSTAL_LOAD_CAPACITANCE,&temp,1); - d00: 9e 01 movw r18, r28 - d02: 2f 5f subi r18, 0xFF ; 255 - d04: 3f 4f sbci r19, 0xFF ; 255 - d06: 47 eb ldi r20, 0xB7 ; 183 - d08: b5 01 movw r22, r10 - d0a: c6 01 movw r24, r12 - d0c: 89 dd rcall .-1262 ; 0x820 + c84: 01 e0 ldi r16, 0x01 ; 1 + c86: 10 e0 ldi r17, 0x00 ; 0 + c88: 20 e0 ldi r18, 0x00 ; 0 + c8a: 30 e0 ldi r19, 0x00 ; 0 + c8c: ae 01 movw r20, r28 + c8e: 4f 5f subi r20, 0xFF ; 255 + c90: 5f 4f sbci r21, 0xFF ; 255 + c92: 67 eb ldi r22, 0xB7 ; 183 + c94: c7 01 movw r24, r14 + c96: fa dd rcall .-1036 ; 0x88c // Enable xtal clk.. temp = 0b01000000; - d0e: 80 e4 ldi r24, 0x40 ; 64 - d10: 89 83 std Y+1, r24 ; 0x01 + c98: 80 e4 ldi r24, 0x40 ; 64 + c9a: 89 83 std Y+1, r24 ; 0x01 writeRegister(inst,SI5351_REG_FANOUT_ENABLE,&temp,1); - d12: 9e 01 movw r18, r28 - d14: 2f 5f subi r18, 0xFF ; 255 - d16: 3f 4f sbci r19, 0xFF ; 255 - d18: 4b eb ldi r20, 0xBB ; 187 - d1a: b5 01 movw r22, r10 - d1c: c6 01 movw r24, r12 - d1e: 80 dd rcall .-1280 ; 0x820 + c9c: 01 e0 ldi r16, 0x01 ; 1 + c9e: 10 e0 ldi r17, 0x00 ; 0 + ca0: 20 e0 ldi r18, 0x00 ; 0 + ca2: 30 e0 ldi r19, 0x00 ; 0 + ca4: ae 01 movw r20, r28 + ca6: 4f 5f subi r20, 0xFF ; 255 + ca8: 5f 4f sbci r21, 0xFF ; 255 + caa: 6b eb ldi r22, 0xBB ; 187 + cac: c7 01 movw r24, r14 + cae: ee dd rcall .-1060 ; 0x88c return ret; - d20: 80 e0 ldi r24, 0x00 ; 0 - d22: 90 e0 ldi r25, 0x00 ; 0 - - - -} - 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: df 90 pop r13 - d34: cf 90 pop r12 - d36: bf 90 pop r11 - d38: af 90 pop r10 - d3a: 08 95 ret + cb0: 80 e0 ldi r24, 0x00 ; 0 + cb2: 90 e0 ldi r25, 0x00 ; 0 + cb4: 08 c0 rjmp .+16 ; 0xcc6 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; - d3c: 8f ef ldi r24, 0xFF ; 255 - d3e: 9f ef ldi r25, 0xFF ; 255 - d40: f1 cf rjmp .-30 ; 0xd24 + cb6: 8f ef ldi r24, 0xFF ; 255 + cb8: 9f ef ldi r25, 0xFF ; 255 + cba: 05 c0 rjmp .+10 ; 0xcc6 + if(i2c_transfer_inst == NULL)return -1; + cbc: 8f ef ldi r24, 0xFF ; 255 + cbe: 9f ef ldi r25, 0xFF ; 255 + cc0: 02 c0 rjmp .+4 ; 0xcc6 + if(i2c_transfer_evt == NULL)return -1; + cc2: 8f ef ldi r24, 0xFF ; 255 + cc4: 9f ef ldi r25, 0xFF ; 255 + writeRegister(inst,SI5351_REG_FANOUT_ENABLE,&temp,1); + return ret; -00000d42 : - d42: 0f 93 push r16 - d44: 1f 93 push r17 - d46: cf 93 push r28 - d48: df 93 push r29 - d4a: 82 30 cpi r24, 0x02 ; 2 - d4c: 91 05 cpc r25, r1 - d4e: 10 f4 brcc .+4 ; 0xd54 - d50: 82 e0 ldi r24, 0x02 ; 2 - d52: 90 e0 ldi r25, 0x00 ; 0 - d54: e0 91 6a 3f lds r30, 0x3F6A ; 0x803f6a <__flp> - d58: f0 91 6b 3f lds r31, 0x3F6B ; 0x803f6b <__flp+0x1> - d5c: 20 e0 ldi r18, 0x00 ; 0 - d5e: 30 e0 ldi r19, 0x00 ; 0 - d60: a0 e0 ldi r26, 0x00 ; 0 - d62: b0 e0 ldi r27, 0x00 ; 0 - d64: 30 97 sbiw r30, 0x00 ; 0 - d66: 19 f1 breq .+70 ; 0xdae - d68: 40 81 ld r20, Z - d6a: 51 81 ldd r21, Z+1 ; 0x01 - d6c: 02 81 ldd r16, Z+2 ; 0x02 - d6e: 13 81 ldd r17, Z+3 ; 0x03 - d70: 48 17 cp r20, r24 - d72: 59 07 cpc r21, r25 - d74: c8 f0 brcs .+50 ; 0xda8 - d76: 84 17 cp r24, r20 - d78: 95 07 cpc r25, r21 - d7a: 69 f4 brne .+26 ; 0xd96 - d7c: 10 97 sbiw r26, 0x00 ; 0 - d7e: 31 f0 breq .+12 ; 0xd8c - d80: 12 96 adiw r26, 0x02 ; 2 - d82: 0c 93 st X, r16 - d84: 12 97 sbiw r26, 0x02 ; 2 - d86: 13 96 adiw r26, 0x03 ; 3 - d88: 1c 93 st X, r17 - d8a: 27 c0 rjmp .+78 ; 0xdda - d8c: 00 93 6a 3f sts 0x3F6A, r16 ; 0x803f6a <__flp> - d90: 10 93 6b 3f sts 0x3F6B, r17 ; 0x803f6b <__flp+0x1> - d94: 22 c0 rjmp .+68 ; 0xdda - d96: 21 15 cp r18, r1 - d98: 31 05 cpc r19, r1 - d9a: 19 f0 breq .+6 ; 0xda2 - d9c: 42 17 cp r20, r18 - d9e: 53 07 cpc r21, r19 - da0: 18 f4 brcc .+6 ; 0xda8 - da2: 9a 01 movw r18, r20 - da4: bd 01 movw r22, r26 - da6: ef 01 movw r28, r30 - da8: df 01 movw r26, r30 - daa: f8 01 movw r30, r16 - dac: db cf rjmp .-74 ; 0xd64 - dae: 21 15 cp r18, r1 - db0: 31 05 cpc r19, r1 - db2: f9 f0 breq .+62 ; 0xdf2 - db4: 28 1b sub r18, r24 - db6: 39 0b sbc r19, r25 - db8: 24 30 cpi r18, 0x04 ; 4 - dba: 31 05 cpc r19, r1 - dbc: 80 f4 brcc .+32 ; 0xdde - dbe: 8a 81 ldd r24, Y+2 ; 0x02 - dc0: 9b 81 ldd r25, Y+3 ; 0x03 - dc2: 61 15 cp r22, r1 - dc4: 71 05 cpc r23, r1 - dc6: 21 f0 breq .+8 ; 0xdd0 - dc8: fb 01 movw r30, r22 - dca: 82 83 std Z+2, r24 ; 0x02 - dcc: 93 83 std Z+3, r25 ; 0x03 - dce: 04 c0 rjmp .+8 ; 0xdd8 - dd0: 80 93 6a 3f sts 0x3F6A, r24 ; 0x803f6a <__flp> - dd4: 90 93 6b 3f sts 0x3F6B, r25 ; 0x803f6b <__flp+0x1> - dd8: fe 01 movw r30, r28 - dda: 32 96 adiw r30, 0x02 ; 2 - ddc: 44 c0 rjmp .+136 ; 0xe66 - dde: fe 01 movw r30, r28 - de0: e2 0f add r30, r18 - de2: f3 1f adc r31, r19 - de4: 81 93 st Z+, r24 - de6: 91 93 st Z+, r25 - de8: 22 50 subi r18, 0x02 ; 2 - dea: 31 09 sbc r19, r1 - dec: 28 83 st Y, r18 - dee: 39 83 std Y+1, r19 ; 0x01 - df0: 3a c0 rjmp .+116 ; 0xe66 - df2: 20 91 68 3f lds r18, 0x3F68 ; 0x803f68 <__brkval> - df6: 30 91 69 3f lds r19, 0x3F69 ; 0x803f69 <__brkval+0x1> - dfa: 23 2b or r18, r19 - dfc: 41 f4 brne .+16 ; 0xe0e - dfe: 20 91 02 3f lds r18, 0x3F02 ; 0x803f02 <__malloc_heap_start> - e02: 30 91 03 3f lds r19, 0x3F03 ; 0x803f03 <__malloc_heap_start+0x1> - e06: 20 93 68 3f sts 0x3F68, r18 ; 0x803f68 <__brkval> - e0a: 30 93 69 3f sts 0x3F69, r19 ; 0x803f69 <__brkval+0x1> - e0e: 20 91 00 3f lds r18, 0x3F00 ; 0x803f00 <__DATA_REGION_ORIGIN__> - e12: 30 91 01 3f lds r19, 0x3F01 ; 0x803f01 <__DATA_REGION_ORIGIN__+0x1> - e16: 21 15 cp r18, r1 - e18: 31 05 cpc r19, r1 - e1a: 41 f4 brne .+16 ; 0xe2c - e1c: 2d b7 in r18, 0x3d ; 61 - e1e: 3e b7 in r19, 0x3e ; 62 - e20: 40 91 04 3f lds r20, 0x3F04 ; 0x803f04 <__malloc_margin> - e24: 50 91 05 3f lds r21, 0x3F05 ; 0x803f05 <__malloc_margin+0x1> - e28: 24 1b sub r18, r20 - e2a: 35 0b sbc r19, r21 - e2c: e0 91 68 3f lds r30, 0x3F68 ; 0x803f68 <__brkval> - e30: f0 91 69 3f lds r31, 0x3F69 ; 0x803f69 <__brkval+0x1> - e34: e2 17 cp r30, r18 - e36: f3 07 cpc r31, r19 - e38: a0 f4 brcc .+40 ; 0xe62 - e3a: 2e 1b sub r18, r30 - e3c: 3f 0b sbc r19, r31 - e3e: 28 17 cp r18, r24 - e40: 39 07 cpc r19, r25 - e42: 78 f0 brcs .+30 ; 0xe62 - e44: ac 01 movw r20, r24 - e46: 4e 5f subi r20, 0xFE ; 254 - e48: 5f 4f sbci r21, 0xFF ; 255 - e4a: 24 17 cp r18, r20 - e4c: 35 07 cpc r19, r21 - e4e: 48 f0 brcs .+18 ; 0xe62 - e50: 4e 0f add r20, r30 - e52: 5f 1f adc r21, r31 - e54: 40 93 68 3f sts 0x3F68, r20 ; 0x803f68 <__brkval> - e58: 50 93 69 3f sts 0x3F69, r21 ; 0x803f69 <__brkval+0x1> - e5c: 81 93 st Z+, r24 - e5e: 91 93 st Z+, r25 - e60: 02 c0 rjmp .+4 ; 0xe66 - e62: e0 e0 ldi r30, 0x00 ; 0 - e64: f0 e0 ldi r31, 0x00 ; 0 - e66: cf 01 movw r24, r30 - e68: df 91 pop r29 - e6a: cf 91 pop r28 - e6c: 1f 91 pop r17 - e6e: 0f 91 pop r16 - e70: 08 95 ret -00000e72 : - e72: cf 93 push r28 - e74: df 93 push r29 - e76: 00 97 sbiw r24, 0x00 ; 0 - e78: 09 f4 brne .+2 ; 0xe7c - e7a: 81 c0 rjmp .+258 ; 0xf7e - e7c: fc 01 movw r30, r24 - e7e: 32 97 sbiw r30, 0x02 ; 2 - e80: 12 82 std Z+2, r1 ; 0x02 - e82: 13 82 std Z+3, r1 ; 0x03 - e84: a0 91 6a 3f lds r26, 0x3F6A ; 0x803f6a <__flp> - e88: b0 91 6b 3f lds r27, 0x3F6B ; 0x803f6b <__flp+0x1> - e8c: 10 97 sbiw r26, 0x00 ; 0 - e8e: 81 f4 brne .+32 ; 0xeb0 - e90: 20 81 ld r18, Z - e92: 31 81 ldd r19, Z+1 ; 0x01 - e94: 82 0f add r24, r18 - e96: 93 1f adc r25, r19 - e98: 20 91 68 3f lds r18, 0x3F68 ; 0x803f68 <__brkval> - e9c: 30 91 69 3f lds r19, 0x3F69 ; 0x803f69 <__brkval+0x1> - ea0: 28 17 cp r18, r24 - ea2: 39 07 cpc r19, r25 - ea4: 51 f5 brne .+84 ; 0xefa - ea6: e0 93 68 3f sts 0x3F68, r30 ; 0x803f68 <__brkval> - eaa: f0 93 69 3f sts 0x3F69, r31 ; 0x803f69 <__brkval+0x1> - eae: 67 c0 rjmp .+206 ; 0xf7e - eb0: ed 01 movw r28, r26 - eb2: 20 e0 ldi r18, 0x00 ; 0 - eb4: 30 e0 ldi r19, 0x00 ; 0 - eb6: ce 17 cp r28, r30 - eb8: df 07 cpc r29, r31 - eba: 40 f4 brcc .+16 ; 0xecc - ebc: 4a 81 ldd r20, Y+2 ; 0x02 - ebe: 5b 81 ldd r21, Y+3 ; 0x03 - ec0: 9e 01 movw r18, r28 - ec2: 41 15 cp r20, r1 - ec4: 51 05 cpc r21, r1 - ec6: f1 f0 breq .+60 ; 0xf04 - ec8: ea 01 movw r28, r20 - eca: f5 cf rjmp .-22 ; 0xeb6 - ecc: c2 83 std Z+2, r28 ; 0x02 - ece: d3 83 std Z+3, r29 ; 0x03 - ed0: 40 81 ld r20, Z - ed2: 51 81 ldd r21, Z+1 ; 0x01 - ed4: 84 0f add r24, r20 - ed6: 95 1f adc r25, r21 - ed8: c8 17 cp r28, r24 - eda: d9 07 cpc r29, r25 - edc: 59 f4 brne .+22 ; 0xef4 - ede: 88 81 ld r24, Y - ee0: 99 81 ldd r25, Y+1 ; 0x01 - ee2: 84 0f add r24, r20 - ee4: 95 1f adc r25, r21 - ee6: 02 96 adiw r24, 0x02 ; 2 - ee8: 80 83 st Z, r24 - eea: 91 83 std Z+1, r25 ; 0x01 - eec: 8a 81 ldd r24, Y+2 ; 0x02 - eee: 9b 81 ldd r25, Y+3 ; 0x03 - ef0: 82 83 std Z+2, r24 ; 0x02 - ef2: 93 83 std Z+3, r25 ; 0x03 - ef4: 21 15 cp r18, r1 - ef6: 31 05 cpc r19, r1 - ef8: 29 f4 brne .+10 ; 0xf04 - efa: e0 93 6a 3f sts 0x3F6A, r30 ; 0x803f6a <__flp> - efe: f0 93 6b 3f sts 0x3F6B, r31 ; 0x803f6b <__flp+0x1> - f02: 3d c0 rjmp .+122 ; 0xf7e - f04: e9 01 movw r28, r18 - f06: ea 83 std Y+2, r30 ; 0x02 - f08: fb 83 std Y+3, r31 ; 0x03 - f0a: 49 91 ld r20, Y+ - f0c: 59 91 ld r21, Y+ - f0e: c4 0f add r28, r20 - f10: d5 1f adc r29, r21 - f12: ec 17 cp r30, r28 - f14: fd 07 cpc r31, r29 - f16: 61 f4 brne .+24 ; 0xf30 - f18: 80 81 ld r24, Z - f1a: 91 81 ldd r25, Z+1 ; 0x01 - f1c: 84 0f add r24, r20 - f1e: 95 1f adc r25, r21 - f20: 02 96 adiw r24, 0x02 ; 2 - f22: e9 01 movw r28, r18 - f24: 88 83 st Y, r24 - f26: 99 83 std Y+1, r25 ; 0x01 - f28: 82 81 ldd r24, Z+2 ; 0x02 - f2a: 93 81 ldd r25, Z+3 ; 0x03 - f2c: 8a 83 std Y+2, r24 ; 0x02 - f2e: 9b 83 std Y+3, r25 ; 0x03 - f30: e0 e0 ldi r30, 0x00 ; 0 - f32: f0 e0 ldi r31, 0x00 ; 0 - f34: 12 96 adiw r26, 0x02 ; 2 - f36: 8d 91 ld r24, X+ - f38: 9c 91 ld r25, X - f3a: 13 97 sbiw r26, 0x03 ; 3 - f3c: 00 97 sbiw r24, 0x00 ; 0 - f3e: 19 f0 breq .+6 ; 0xf46 - f40: fd 01 movw r30, r26 - f42: dc 01 movw r26, r24 - f44: f7 cf rjmp .-18 ; 0xf34 - f46: 8d 91 ld r24, X+ - f48: 9c 91 ld r25, X - f4a: 11 97 sbiw r26, 0x01 ; 1 - f4c: 9d 01 movw r18, r26 - f4e: 2e 5f subi r18, 0xFE ; 254 - f50: 3f 4f sbci r19, 0xFF ; 255 - f52: 82 0f add r24, r18 - f54: 93 1f adc r25, r19 - f56: 20 91 68 3f lds r18, 0x3F68 ; 0x803f68 <__brkval> - f5a: 30 91 69 3f lds r19, 0x3F69 ; 0x803f69 <__brkval+0x1> - f5e: 28 17 cp r18, r24 - f60: 39 07 cpc r19, r25 - f62: 69 f4 brne .+26 ; 0xf7e - f64: 30 97 sbiw r30, 0x00 ; 0 - f66: 29 f4 brne .+10 ; 0xf72 - f68: 10 92 6a 3f sts 0x3F6A, r1 ; 0x803f6a <__flp> - f6c: 10 92 6b 3f sts 0x3F6B, r1 ; 0x803f6b <__flp+0x1> - f70: 02 c0 rjmp .+4 ; 0xf76 - f72: 12 82 std Z+2, r1 ; 0x02 - f74: 13 82 std Z+3, r1 ; 0x03 - f76: a0 93 68 3f sts 0x3F68, r26 ; 0x803f68 <__brkval> - f7a: b0 93 69 3f sts 0x3F69, r27 ; 0x803f69 <__brkval+0x1> - f7e: df 91 pop r29 - f80: cf 91 pop r28 - f82: 08 95 ret -00000f84 : - f84: fb 01 movw r30, r22 - f86: dc 01 movw r26, r24 - f88: 02 c0 rjmp .+4 ; 0xf8e - f8a: 01 90 ld r0, Z+ - f8c: 0d 92 st X+, r0 - f8e: 41 50 subi r20, 0x01 ; 1 - f90: 50 40 sbci r21, 0x00 ; 0 - f92: d8 f7 brcc .-10 ; 0xf8a - f94: 08 95 ret +} + cc6: 0f 90 pop r0 + cc8: df 91 pop r29 + cca: cf 91 pop r28 + ccc: 1f 91 pop r17 + cce: 0f 91 pop r16 + cd0: ff 90 pop r15 + cd2: ef 90 pop r14 + cd4: 08 95 ret -00000f96 : - f96: 03 d0 rcall .+6 ; 0xf9e - f98: 80 81 ld r24, Z - f9a: 99 27 eor r25, r25 - f9c: 08 95 ret +00000cd6 : + cd6: 0f 93 push r16 + cd8: 1f 93 push r17 + cda: cf 93 push r28 + cdc: df 93 push r29 + cde: 82 30 cpi r24, 0x02 ; 2 + ce0: 91 05 cpc r25, r1 + ce2: 10 f4 brcc .+4 ; 0xce8 + ce4: 82 e0 ldi r24, 0x02 ; 2 + ce6: 90 e0 ldi r25, 0x00 ; 0 + ce8: e0 91 88 3f lds r30, 0x3F88 ; 0x803f88 <__flp> + cec: f0 91 89 3f lds r31, 0x3F89 ; 0x803f89 <__flp+0x1> + cf0: 20 e0 ldi r18, 0x00 ; 0 + cf2: 30 e0 ldi r19, 0x00 ; 0 + cf4: a0 e0 ldi r26, 0x00 ; 0 + cf6: b0 e0 ldi r27, 0x00 ; 0 + cf8: 30 97 sbiw r30, 0x00 ; 0 + cfa: 19 f1 breq .+70 ; 0xd42 + cfc: 40 81 ld r20, Z + cfe: 51 81 ldd r21, Z+1 ; 0x01 + d00: 02 81 ldd r16, Z+2 ; 0x02 + d02: 13 81 ldd r17, Z+3 ; 0x03 + d04: 48 17 cp r20, r24 + d06: 59 07 cpc r21, r25 + d08: c8 f0 brcs .+50 ; 0xd3c + d0a: 84 17 cp r24, r20 + d0c: 95 07 cpc r25, r21 + d0e: 69 f4 brne .+26 ; 0xd2a + d10: 10 97 sbiw r26, 0x00 ; 0 + d12: 31 f0 breq .+12 ; 0xd20 + d14: 12 96 adiw r26, 0x02 ; 2 + d16: 0c 93 st X, r16 + d18: 12 97 sbiw r26, 0x02 ; 2 + d1a: 13 96 adiw r26, 0x03 ; 3 + d1c: 1c 93 st X, r17 + d1e: 27 c0 rjmp .+78 ; 0xd6e + d20: 00 93 88 3f sts 0x3F88, r16 ; 0x803f88 <__flp> + d24: 10 93 89 3f sts 0x3F89, r17 ; 0x803f89 <__flp+0x1> + d28: 22 c0 rjmp .+68 ; 0xd6e + d2a: 21 15 cp r18, r1 + d2c: 31 05 cpc r19, r1 + d2e: 19 f0 breq .+6 ; 0xd36 + d30: 42 17 cp r20, r18 + d32: 53 07 cpc r21, r19 + d34: 18 f4 brcc .+6 ; 0xd3c + d36: 9a 01 movw r18, r20 + d38: bd 01 movw r22, r26 + d3a: ef 01 movw r28, r30 + d3c: df 01 movw r26, r30 + d3e: f8 01 movw r30, r16 + d40: db cf rjmp .-74 ; 0xcf8 + d42: 21 15 cp r18, r1 + d44: 31 05 cpc r19, r1 + d46: f9 f0 breq .+62 ; 0xd86 + d48: 28 1b sub r18, r24 + d4a: 39 0b sbc r19, r25 + d4c: 24 30 cpi r18, 0x04 ; 4 + d4e: 31 05 cpc r19, r1 + d50: 80 f4 brcc .+32 ; 0xd72 + d52: 8a 81 ldd r24, Y+2 ; 0x02 + d54: 9b 81 ldd r25, Y+3 ; 0x03 + d56: 61 15 cp r22, r1 + d58: 71 05 cpc r23, r1 + d5a: 21 f0 breq .+8 ; 0xd64 + d5c: fb 01 movw r30, r22 + d5e: 82 83 std Z+2, r24 ; 0x02 + d60: 93 83 std Z+3, r25 ; 0x03 + d62: 04 c0 rjmp .+8 ; 0xd6c + d64: 80 93 88 3f sts 0x3F88, r24 ; 0x803f88 <__flp> + d68: 90 93 89 3f sts 0x3F89, r25 ; 0x803f89 <__flp+0x1> + d6c: fe 01 movw r30, r28 + d6e: 32 96 adiw r30, 0x02 ; 2 + d70: 44 c0 rjmp .+136 ; 0xdfa + d72: fe 01 movw r30, r28 + d74: e2 0f add r30, r18 + d76: f3 1f adc r31, r19 + d78: 81 93 st Z+, r24 + d7a: 91 93 st Z+, r25 + d7c: 22 50 subi r18, 0x02 ; 2 + d7e: 31 09 sbc r19, r1 + d80: 28 83 st Y, r18 + d82: 39 83 std Y+1, r19 ; 0x01 + d84: 3a c0 rjmp .+116 ; 0xdfa + d86: 20 91 86 3f lds r18, 0x3F86 ; 0x803f86 <__brkval> + d8a: 30 91 87 3f lds r19, 0x3F87 ; 0x803f87 <__brkval+0x1> + d8e: 23 2b or r18, r19 + d90: 41 f4 brne .+16 ; 0xda2 + d92: 20 91 02 3f lds r18, 0x3F02 ; 0x803f02 <__malloc_heap_start> + d96: 30 91 03 3f lds r19, 0x3F03 ; 0x803f03 <__malloc_heap_start+0x1> + d9a: 20 93 86 3f sts 0x3F86, r18 ; 0x803f86 <__brkval> + d9e: 30 93 87 3f sts 0x3F87, r19 ; 0x803f87 <__brkval+0x1> + da2: 20 91 00 3f lds r18, 0x3F00 ; 0x803f00 <__DATA_REGION_ORIGIN__> + da6: 30 91 01 3f lds r19, 0x3F01 ; 0x803f01 <__DATA_REGION_ORIGIN__+0x1> + daa: 21 15 cp r18, r1 + dac: 31 05 cpc r19, r1 + dae: 41 f4 brne .+16 ; 0xdc0 + db0: 2d b7 in r18, 0x3d ; 61 + db2: 3e b7 in r19, 0x3e ; 62 + db4: 40 91 04 3f lds r20, 0x3F04 ; 0x803f04 <__malloc_margin> + db8: 50 91 05 3f lds r21, 0x3F05 ; 0x803f05 <__malloc_margin+0x1> + dbc: 24 1b sub r18, r20 + dbe: 35 0b sbc r19, r21 + dc0: e0 91 86 3f lds r30, 0x3F86 ; 0x803f86 <__brkval> + dc4: f0 91 87 3f lds r31, 0x3F87 ; 0x803f87 <__brkval+0x1> + dc8: e2 17 cp r30, r18 + dca: f3 07 cpc r31, r19 + dcc: a0 f4 brcc .+40 ; 0xdf6 + dce: 2e 1b sub r18, r30 + dd0: 3f 0b sbc r19, r31 + dd2: 28 17 cp r18, r24 + dd4: 39 07 cpc r19, r25 + dd6: 78 f0 brcs .+30 ; 0xdf6 + dd8: ac 01 movw r20, r24 + dda: 4e 5f subi r20, 0xFE ; 254 + ddc: 5f 4f sbci r21, 0xFF ; 255 + dde: 24 17 cp r18, r20 + de0: 35 07 cpc r19, r21 + de2: 48 f0 brcs .+18 ; 0xdf6 + de4: 4e 0f add r20, r30 + de6: 5f 1f adc r21, r31 + de8: 40 93 86 3f sts 0x3F86, r20 ; 0x803f86 <__brkval> + dec: 50 93 87 3f sts 0x3F87, r21 ; 0x803f87 <__brkval+0x1> + df0: 81 93 st Z+, r24 + df2: 91 93 st Z+, r25 + df4: 02 c0 rjmp .+4 ; 0xdfa + df6: e0 e0 ldi r30, 0x00 ; 0 + df8: f0 e0 ldi r31, 0x00 ; 0 + dfa: cf 01 movw r24, r30 + dfc: df 91 pop r29 + dfe: cf 91 pop r28 + e00: 1f 91 pop r17 + e02: 0f 91 pop r16 + e04: 08 95 ret -00000f9e : - f9e: fc 01 movw r30, r24 - fa0: e0 50 subi r30, 0x00 ; 0 - fa2: fc 4e sbci r31, 0xEC ; 236 - fa4: 08 95 ret +00000e06 : + e06: cf 93 push r28 + e08: df 93 push r29 + e0a: 00 97 sbiw r24, 0x00 ; 0 + e0c: 09 f4 brne .+2 ; 0xe10 + e0e: 81 c0 rjmp .+258 ; 0xf12 + e10: fc 01 movw r30, r24 + e12: 32 97 sbiw r30, 0x02 ; 2 + e14: 12 82 std Z+2, r1 ; 0x02 + e16: 13 82 std Z+3, r1 ; 0x03 + e18: a0 91 88 3f lds r26, 0x3F88 ; 0x803f88 <__flp> + e1c: b0 91 89 3f lds r27, 0x3F89 ; 0x803f89 <__flp+0x1> + e20: 10 97 sbiw r26, 0x00 ; 0 + e22: 81 f4 brne .+32 ; 0xe44 + e24: 20 81 ld r18, Z + e26: 31 81 ldd r19, Z+1 ; 0x01 + e28: 82 0f add r24, r18 + e2a: 93 1f adc r25, r19 + e2c: 20 91 86 3f lds r18, 0x3F86 ; 0x803f86 <__brkval> + e30: 30 91 87 3f lds r19, 0x3F87 ; 0x803f87 <__brkval+0x1> + e34: 28 17 cp r18, r24 + e36: 39 07 cpc r19, r25 + e38: 51 f5 brne .+84 ; 0xe8e + e3a: e0 93 86 3f sts 0x3F86, r30 ; 0x803f86 <__brkval> + e3e: f0 93 87 3f sts 0x3F87, r31 ; 0x803f87 <__brkval+0x1> + e42: 67 c0 rjmp .+206 ; 0xf12 + e44: ed 01 movw r28, r26 + e46: 20 e0 ldi r18, 0x00 ; 0 + e48: 30 e0 ldi r19, 0x00 ; 0 + e4a: ce 17 cp r28, r30 + e4c: df 07 cpc r29, r31 + e4e: 40 f4 brcc .+16 ; 0xe60 + e50: 4a 81 ldd r20, Y+2 ; 0x02 + e52: 5b 81 ldd r21, Y+3 ; 0x03 + e54: 9e 01 movw r18, r28 + e56: 41 15 cp r20, r1 + e58: 51 05 cpc r21, r1 + e5a: f1 f0 breq .+60 ; 0xe98 + e5c: ea 01 movw r28, r20 + e5e: f5 cf rjmp .-22 ; 0xe4a + e60: c2 83 std Z+2, r28 ; 0x02 + e62: d3 83 std Z+3, r29 ; 0x03 + e64: 40 81 ld r20, Z + e66: 51 81 ldd r21, Z+1 ; 0x01 + e68: 84 0f add r24, r20 + e6a: 95 1f adc r25, r21 + e6c: c8 17 cp r28, r24 + e6e: d9 07 cpc r29, r25 + e70: 59 f4 brne .+22 ; 0xe88 + e72: 88 81 ld r24, Y + e74: 99 81 ldd r25, Y+1 ; 0x01 + e76: 84 0f add r24, r20 + e78: 95 1f adc r25, r21 + e7a: 02 96 adiw r24, 0x02 ; 2 + e7c: 80 83 st Z, r24 + e7e: 91 83 std Z+1, r25 ; 0x01 + e80: 8a 81 ldd r24, Y+2 ; 0x02 + e82: 9b 81 ldd r25, Y+3 ; 0x03 + e84: 82 83 std Z+2, r24 ; 0x02 + e86: 93 83 std Z+3, r25 ; 0x03 + e88: 21 15 cp r18, r1 + e8a: 31 05 cpc r19, r1 + e8c: 29 f4 brne .+10 ; 0xe98 + e8e: e0 93 88 3f sts 0x3F88, r30 ; 0x803f88 <__flp> + e92: f0 93 89 3f sts 0x3F89, r31 ; 0x803f89 <__flp+0x1> + e96: 3d c0 rjmp .+122 ; 0xf12 + e98: e9 01 movw r28, r18 + e9a: ea 83 std Y+2, r30 ; 0x02 + e9c: fb 83 std Y+3, r31 ; 0x03 + e9e: 49 91 ld r20, Y+ + ea0: 59 91 ld r21, Y+ + ea2: c4 0f add r28, r20 + ea4: d5 1f adc r29, r21 + ea6: ec 17 cp r30, r28 + ea8: fd 07 cpc r31, r29 + eaa: 61 f4 brne .+24 ; 0xec4 + eac: 80 81 ld r24, Z + eae: 91 81 ldd r25, Z+1 ; 0x01 + eb0: 84 0f add r24, r20 + eb2: 95 1f adc r25, r21 + eb4: 02 96 adiw r24, 0x02 ; 2 + eb6: e9 01 movw r28, r18 + eb8: 88 83 st Y, r24 + eba: 99 83 std Y+1, r25 ; 0x01 + ebc: 82 81 ldd r24, Z+2 ; 0x02 + ebe: 93 81 ldd r25, Z+3 ; 0x03 + ec0: 8a 83 std Y+2, r24 ; 0x02 + ec2: 9b 83 std Y+3, r25 ; 0x03 + ec4: e0 e0 ldi r30, 0x00 ; 0 + ec6: f0 e0 ldi r31, 0x00 ; 0 + ec8: 12 96 adiw r26, 0x02 ; 2 + eca: 8d 91 ld r24, X+ + ecc: 9c 91 ld r25, X + ece: 13 97 sbiw r26, 0x03 ; 3 + ed0: 00 97 sbiw r24, 0x00 ; 0 + ed2: 19 f0 breq .+6 ; 0xeda + ed4: fd 01 movw r30, r26 + ed6: dc 01 movw r26, r24 + ed8: f7 cf rjmp .-18 ; 0xec8 + eda: 8d 91 ld r24, X+ + edc: 9c 91 ld r25, X + ede: 11 97 sbiw r26, 0x01 ; 1 + ee0: 9d 01 movw r18, r26 + ee2: 2e 5f subi r18, 0xFE ; 254 + ee4: 3f 4f sbci r19, 0xFF ; 255 + ee6: 82 0f add r24, r18 + ee8: 93 1f adc r25, r19 + eea: 20 91 86 3f lds r18, 0x3F86 ; 0x803f86 <__brkval> + eee: 30 91 87 3f lds r19, 0x3F87 ; 0x803f87 <__brkval+0x1> + ef2: 28 17 cp r18, r24 + ef4: 39 07 cpc r19, r25 + ef6: 69 f4 brne .+26 ; 0xf12 + ef8: 30 97 sbiw r30, 0x00 ; 0 + efa: 29 f4 brne .+10 ; 0xf06 + efc: 10 92 88 3f sts 0x3F88, r1 ; 0x803f88 <__flp> + f00: 10 92 89 3f sts 0x3F89, r1 ; 0x803f89 <__flp+0x1> + f04: 02 c0 rjmp .+4 ; 0xf0a + f06: 12 82 std Z+2, r1 ; 0x02 + f08: 13 82 std Z+3, r1 ; 0x03 + f0a: a0 93 86 3f sts 0x3F86, r26 ; 0x803f86 <__brkval> + f0e: b0 93 87 3f sts 0x3F87, r27 ; 0x803f87 <__brkval+0x1> + f12: df 91 pop r29 + f14: cf 91 pop r28 + f16: 08 95 ret -00000fa6 : - fa6: 26 2f mov r18, r22 +00000f18 : + f18: fb 01 movw r30, r22 + f1a: dc 01 movw r26, r24 + f1c: 02 c0 rjmp .+4 ; 0xf22 + f1e: 01 90 ld r0, Z+ + f20: 0d 92 st X+, r0 + f22: 41 50 subi r20, 0x01 ; 1 + f24: 50 40 sbci r21, 0x00 ; 0 + f26: d8 f7 brcc .-10 ; 0xf1e + f28: 08 95 ret -00000fa8 : - fa8: af 93 push r26 - faa: bf 93 push r27 - fac: e0 e0 ldi r30, 0x00 ; 0 - fae: f0 e1 ldi r31, 0x10 ; 16 - fb0: 32 81 ldd r19, Z+2 ; 0x02 - fb2: 31 fd sbrc r19, 1 - fb4: fd cf rjmp .-6 ; 0xfb0 - fb6: dc 01 movw r26, r24 - fb8: a0 50 subi r26, 0x00 ; 0 - fba: bc 4e sbci r27, 0xEC ; 236 - fbc: 2c 93 st X, r18 - fbe: 2d e9 ldi r18, 0x9D ; 157 - fc0: 24 bf out 0x34, r18 ; 52 - fc2: 23 e0 ldi r18, 0x03 ; 3 - fc4: 20 83 st Z, r18 - fc6: 01 96 adiw r24, 0x01 ; 1 - fc8: bf 91 pop r27 - fca: af 91 pop r26 - fcc: 08 95 ret +00000f2a : + f2a: 03 d0 rcall .+6 ; 0xf32 + f2c: 80 81 ld r24, Z + f2e: 99 27 eor r25, r25 + f30: 08 95 ret -00000fce <_exit>: - fce: f8 94 cli +00000f32 : + f32: fc 01 movw r30, r24 + f34: e0 50 subi r30, 0x00 ; 0 + f36: fc 4e sbci r31, 0xEC ; 236 + f38: 08 95 ret -00000fd0 <__stop_program>: - fd0: ff cf rjmp .-2 ; 0xfd0 <__stop_program> +00000f3a : + f3a: 26 2f mov r18, r22 + +00000f3c : + f3c: af 93 push r26 + f3e: bf 93 push r27 + f40: e0 e0 ldi r30, 0x00 ; 0 + f42: f0 e1 ldi r31, 0x10 ; 16 + f44: 32 81 ldd r19, Z+2 ; 0x02 + f46: 31 fd sbrc r19, 1 + f48: fd cf rjmp .-6 ; 0xf44 + f4a: dc 01 movw r26, r24 + f4c: a0 50 subi r26, 0x00 ; 0 + f4e: bc 4e sbci r27, 0xEC ; 236 + f50: 2c 93 st X, r18 + f52: 2d e9 ldi r18, 0x9D ; 157 + f54: 24 bf out 0x34, r18 ; 52 + f56: 23 e0 ldi r18, 0x03 ; 3 + f58: 20 83 st Z, r18 + f5a: 01 96 adiw r24, 0x01 ; 1 + f5c: bf 91 pop r27 + f5e: af 91 pop r26 + f60: 08 95 ret + +00000f62 <_exit>: + f62: f8 94 cli + +00000f64 <__stop_program>: + f64: ff cf rjmp .-2 ; 0xf64 <__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 1fa0d75..f975b14 100644 --- a/storno_cqp6xx_digital_xtal/Debug/storno_cqp6xx_digital_xtal.map +++ b/storno_cqp6xx_digital_xtal/Debug/storno_cqp6xx_digital_xtal.map @@ -1,45 +1,5 @@ Archive member included to satisfy reference by file (symbol) -e:/cm_programs/microchip_studio/7.0/toolchain/avr8/avr8-gnu-toolchain/bin/../lib/gcc/avr/5.4.0/../../../../avr/lib/avrxmega3/short-calls\libm.a(addsf3.o) - si5351_driver/si5351_driver.o (__subsf3) -e:/cm_programs/microchip_studio/7.0/toolchain/avr8/avr8-gnu-toolchain/bin/../lib/gcc/avr/5.4.0/../../../../avr/lib/avrxmega3/short-calls\libm.a(addsf3x.o) - e:/cm_programs/microchip_studio/7.0/toolchain/avr8/avr8-gnu-toolchain/bin/../lib/gcc/avr/5.4.0/../../../../avr/lib/avrxmega3/short-calls\libm.a(addsf3.o) (__addsf3x) -e:/cm_programs/microchip_studio/7.0/toolchain/avr8/avr8-gnu-toolchain/bin/../lib/gcc/avr/5.4.0/../../../../avr/lib/avrxmega3/short-calls\libm.a(divsf3.o) - si5351_driver/si5351_driver.o (__divsf3) -e:/cm_programs/microchip_studio/7.0/toolchain/avr8/avr8-gnu-toolchain/bin/../lib/gcc/avr/5.4.0/../../../../avr/lib/avrxmega3/short-calls\libm.a(divsf3x.o) - e:/cm_programs/microchip_studio/7.0/toolchain/avr8/avr8-gnu-toolchain/bin/../lib/gcc/avr/5.4.0/../../../../avr/lib/avrxmega3/short-calls\libm.a(divsf3.o) (__divsf3x) -e:/cm_programs/microchip_studio/7.0/toolchain/avr8/avr8-gnu-toolchain/bin/../lib/gcc/avr/5.4.0/../../../../avr/lib/avrxmega3/short-calls\libm.a(fixunssfsi.o) - si5351_driver/si5351_driver.o (__fixunssfsi) -e:/cm_programs/microchip_studio/7.0/toolchain/avr8/avr8-gnu-toolchain/bin/../lib/gcc/avr/5.4.0/../../../../avr/lib/avrxmega3/short-calls\libm.a(floatsisf.o) - si5351_driver/si5351_driver.o (__floatunsisf) -e:/cm_programs/microchip_studio/7.0/toolchain/avr8/avr8-gnu-toolchain/bin/../lib/gcc/avr/5.4.0/../../../../avr/lib/avrxmega3/short-calls\libm.a(floor.o) - si5351_driver/si5351_driver.o (floor) -e:/cm_programs/microchip_studio/7.0/toolchain/avr8/avr8-gnu-toolchain/bin/../lib/gcc/avr/5.4.0/../../../../avr/lib/avrxmega3/short-calls\libm.a(fp_inf.o) - e:/cm_programs/microchip_studio/7.0/toolchain/avr8/avr8-gnu-toolchain/bin/../lib/gcc/avr/5.4.0/../../../../avr/lib/avrxmega3/short-calls\libm.a(addsf3x.o) (__fp_inf) -e:/cm_programs/microchip_studio/7.0/toolchain/avr8/avr8-gnu-toolchain/bin/../lib/gcc/avr/5.4.0/../../../../avr/lib/avrxmega3/short-calls\libm.a(fp_mintl.o) - e:/cm_programs/microchip_studio/7.0/toolchain/avr8/avr8-gnu-toolchain/bin/../lib/gcc/avr/5.4.0/../../../../avr/lib/avrxmega3/short-calls\libm.a(floor.o) (__fp_mintl) -e:/cm_programs/microchip_studio/7.0/toolchain/avr8/avr8-gnu-toolchain/bin/../lib/gcc/avr/5.4.0/../../../../avr/lib/avrxmega3/short-calls\libm.a(fp_mpack.o) - e:/cm_programs/microchip_studio/7.0/toolchain/avr8/avr8-gnu-toolchain/bin/../lib/gcc/avr/5.4.0/../../../../avr/lib/avrxmega3/short-calls\libm.a(floor.o) (__fp_mpack) -e:/cm_programs/microchip_studio/7.0/toolchain/avr8/avr8-gnu-toolchain/bin/../lib/gcc/avr/5.4.0/../../../../avr/lib/avrxmega3/short-calls\libm.a(fp_nan.o) - e:/cm_programs/microchip_studio/7.0/toolchain/avr8/avr8-gnu-toolchain/bin/../lib/gcc/avr/5.4.0/../../../../avr/lib/avrxmega3/short-calls\libm.a(addsf3x.o) (__fp_nan) -e:/cm_programs/microchip_studio/7.0/toolchain/avr8/avr8-gnu-toolchain/bin/../lib/gcc/avr/5.4.0/../../../../avr/lib/avrxmega3/short-calls\libm.a(fp_pscA.o) - e:/cm_programs/microchip_studio/7.0/toolchain/avr8/avr8-gnu-toolchain/bin/../lib/gcc/avr/5.4.0/../../../../avr/lib/avrxmega3/short-calls\libm.a(addsf3x.o) (__fp_pscA) -e:/cm_programs/microchip_studio/7.0/toolchain/avr8/avr8-gnu-toolchain/bin/../lib/gcc/avr/5.4.0/../../../../avr/lib/avrxmega3/short-calls\libm.a(fp_pscB.o) - e:/cm_programs/microchip_studio/7.0/toolchain/avr8/avr8-gnu-toolchain/bin/../lib/gcc/avr/5.4.0/../../../../avr/lib/avrxmega3/short-calls\libm.a(addsf3x.o) (__fp_pscB) -e:/cm_programs/microchip_studio/7.0/toolchain/avr8/avr8-gnu-toolchain/bin/../lib/gcc/avr/5.4.0/../../../../avr/lib/avrxmega3/short-calls\libm.a(fp_round.o) - e:/cm_programs/microchip_studio/7.0/toolchain/avr8/avr8-gnu-toolchain/bin/../lib/gcc/avr/5.4.0/../../../../avr/lib/avrxmega3/short-calls\libm.a(addsf3.o) (__fp_round) -e:/cm_programs/microchip_studio/7.0/toolchain/avr8/avr8-gnu-toolchain/bin/../lib/gcc/avr/5.4.0/../../../../avr/lib/avrxmega3/short-calls\libm.a(fp_split3.o) - e:/cm_programs/microchip_studio/7.0/toolchain/avr8/avr8-gnu-toolchain/bin/../lib/gcc/avr/5.4.0/../../../../avr/lib/avrxmega3/short-calls\libm.a(addsf3x.o) (__fp_split3) -e:/cm_programs/microchip_studio/7.0/toolchain/avr8/avr8-gnu-toolchain/bin/../lib/gcc/avr/5.4.0/../../../../avr/lib/avrxmega3/short-calls\libm.a(fp_trunc.o) - e:/cm_programs/microchip_studio/7.0/toolchain/avr8/avr8-gnu-toolchain/bin/../lib/gcc/avr/5.4.0/../../../../avr/lib/avrxmega3/short-calls\libm.a(floor.o) (__fp_trunc) -e:/cm_programs/microchip_studio/7.0/toolchain/avr8/avr8-gnu-toolchain/bin/../lib/gcc/avr/5.4.0/../../../../avr/lib/avrxmega3/short-calls\libm.a(fp_zero.o) - e:/cm_programs/microchip_studio/7.0/toolchain/avr8/avr8-gnu-toolchain/bin/../lib/gcc/avr/5.4.0/../../../../avr/lib/avrxmega3/short-calls\libm.a(addsf3x.o) (__fp_zero) -e:/cm_programs/microchip_studio/7.0/toolchain/avr8/avr8-gnu-toolchain/bin/../lib/gcc/avr/5.4.0/../../../../avr/lib/avrxmega3/short-calls\libm.a(mulsf3.o) - si5351_driver/si5351_driver.o (__mulsf3) -e:/cm_programs/microchip_studio/7.0/toolchain/avr8/avr8-gnu-toolchain/bin/../lib/gcc/avr/5.4.0/../../../../avr/lib/avrxmega3/short-calls\libm.a(mulsf3x.o) - e:/cm_programs/microchip_studio/7.0/toolchain/avr8/avr8-gnu-toolchain/bin/../lib/gcc/avr/5.4.0/../../../../avr/lib/avrxmega3/short-calls\libm.a(mulsf3.o) (__mulsf3x) -e:/cm_programs/microchip_studio/7.0/toolchain/avr8/avr8-gnu-toolchain/bin/../lib/gcc/avr/5.4.0/avrxmega3/short-calls\libgcc.a(_udivmodsi4.o) - si5351_driver/si5351_driver.o (__udivmodsi4) e:/cm_programs/microchip_studio/7.0/toolchain/avr8/avr8-gnu-toolchain/bin/../lib/gcc/avr/5.4.0/avrxmega3/short-calls\libgcc.a(_exit.o) E:/cm_programs/microchip_studio/7.0/Packs/atmel/ATtiny_DFP/1.10.348/gcc/dev/attiny402/avrxmega3/short-calls/crtattiny402.o (exit) e:/cm_programs/microchip_studio/7.0/toolchain/avr8/avr8-gnu-toolchain/bin/../lib/gcc/avr/5.4.0/avrxmega3/short-calls\libgcc.a(_clear_bss.o) @@ -58,7 +18,7 @@ e:/cm_programs/microchip_studio/7.0/toolchain/avr8/avr8-gnu-toolchain/bin/../lib Allocating common symbols Common symbol size file -storno_xtal_app 0x22 main.o +storno_xtal_app 0x40 main.o __brkval 0x2 e:/cm_programs/microchip_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 e:/cm_programs/microchip_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,162 +33,43 @@ 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 0x34 avr_gpio_driver/avr_gpio.o .text.gpio_init - 0x00000000 0x28 avr_gpio_driver/avr_gpio.o + 0x00000000 0x34 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 + 0x00000000 0x4c avr_i2c_driver/avr_i2c.o .text.i2c_byte_read - 0x00000000 0x34 avr_i2c_driver/avr_i2c.o - .text.i2c_write - 0x00000000 0x28 avr_i2c_driver/avr_i2c.o - .text.i2c_IsDeviceReady 0x00000000 0x36 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 .text.cm_uart_send - 0x00000000 0xe avr_uart_driver/avr_uart.o + 0x00000000 0x10 avr_uart_driver/avr_uart.o .text.cm_uart_receive 0x00000000 0x12 avr_uart_driver/avr_uart.o .text.cm_uart_receive_busyWait - 0x00000000 0xe avr_uart_driver/avr_uart.o + 0x00000000 0x10 avr_uart_driver/avr_uart.o .text 0x00000000 0x0 cm_msg/cm_msg.o .data 0x00000000 0x0 cm_msg/cm_msg.o .bss 0x00000000 0x0 cm_msg/cm_msg.o .text 0x00000000 0x0 cqm6xx_app.o .data 0x00000000 0x0 cqm6xx_app.o .bss 0x00000000 0x0 cqm6xx_app.o + .text.programPLL_Parameters + 0x00000000 0x5e cqm6xx_app.o .text 0x00000000 0x0 main.o .data 0x00000000 0x0 main.o .bss 0x00000000 0x0 main.o .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 0xf4 si5351_driver/si5351_driver.o .text.cm_si5351_getRevisionNumber 0x00000000 0x68 si5351_driver/si5351_driver.o - .text 0x00000000 0x0 e:/cm_programs/microchip_studio/7.0/toolchain/avr8/avr8-gnu-toolchain/bin/../lib/gcc/avr/5.4.0/../../../../avr/lib/avrxmega3/short-calls\libm.a(addsf3.o) - .data 0x00000000 0x0 e:/cm_programs/microchip_studio/7.0/toolchain/avr8/avr8-gnu-toolchain/bin/../lib/gcc/avr/5.4.0/../../../../avr/lib/avrxmega3/short-calls\libm.a(addsf3.o) - .bss 0x00000000 0x0 e:/cm_programs/microchip_studio/7.0/toolchain/avr8/avr8-gnu-toolchain/bin/../lib/gcc/avr/5.4.0/../../../../avr/lib/avrxmega3/short-calls\libm.a(addsf3.o) - .text.avr-libc.fplib - 0x00000000 0xe e:/cm_programs/microchip_studio/7.0/toolchain/avr8/avr8-gnu-toolchain/bin/../lib/gcc/avr/5.4.0/../../../../avr/lib/avrxmega3/short-calls\libm.a(addsf3.o) - .text 0x00000000 0x0 e:/cm_programs/microchip_studio/7.0/toolchain/avr8/avr8-gnu-toolchain/bin/../lib/gcc/avr/5.4.0/../../../../avr/lib/avrxmega3/short-calls\libm.a(addsf3x.o) - .data 0x00000000 0x0 e:/cm_programs/microchip_studio/7.0/toolchain/avr8/avr8-gnu-toolchain/bin/../lib/gcc/avr/5.4.0/../../../../avr/lib/avrxmega3/short-calls\libm.a(addsf3x.o) - .bss 0x00000000 0x0 e:/cm_programs/microchip_studio/7.0/toolchain/avr8/avr8-gnu-toolchain/bin/../lib/gcc/avr/5.4.0/../../../../avr/lib/avrxmega3/short-calls\libm.a(addsf3x.o) - .text.avr-libc.fplib - 0x00000000 0xcc e:/cm_programs/microchip_studio/7.0/toolchain/avr8/avr8-gnu-toolchain/bin/../lib/gcc/avr/5.4.0/../../../../avr/lib/avrxmega3/short-calls\libm.a(addsf3x.o) - .text 0x00000000 0x0 e:/cm_programs/microchip_studio/7.0/toolchain/avr8/avr8-gnu-toolchain/bin/../lib/gcc/avr/5.4.0/../../../../avr/lib/avrxmega3/short-calls\libm.a(divsf3.o) - .data 0x00000000 0x0 e:/cm_programs/microchip_studio/7.0/toolchain/avr8/avr8-gnu-toolchain/bin/../lib/gcc/avr/5.4.0/../../../../avr/lib/avrxmega3/short-calls\libm.a(divsf3.o) - .bss 0x00000000 0x0 e:/cm_programs/microchip_studio/7.0/toolchain/avr8/avr8-gnu-toolchain/bin/../lib/gcc/avr/5.4.0/../../../../avr/lib/avrxmega3/short-calls\libm.a(divsf3.o) - .text.avr-libc.fplib - 0x00000000 0x8 e:/cm_programs/microchip_studio/7.0/toolchain/avr8/avr8-gnu-toolchain/bin/../lib/gcc/avr/5.4.0/../../../../avr/lib/avrxmega3/short-calls\libm.a(divsf3.o) - .text 0x00000000 0x0 e:/cm_programs/microchip_studio/7.0/toolchain/avr8/avr8-gnu-toolchain/bin/../lib/gcc/avr/5.4.0/../../../../avr/lib/avrxmega3/short-calls\libm.a(divsf3x.o) - .data 0x00000000 0x0 e:/cm_programs/microchip_studio/7.0/toolchain/avr8/avr8-gnu-toolchain/bin/../lib/gcc/avr/5.4.0/../../../../avr/lib/avrxmega3/short-calls\libm.a(divsf3x.o) - .bss 0x00000000 0x0 e:/cm_programs/microchip_studio/7.0/toolchain/avr8/avr8-gnu-toolchain/bin/../lib/gcc/avr/5.4.0/../../../../avr/lib/avrxmega3/short-calls\libm.a(divsf3x.o) - .text.avr-libc.fplib - 0x00000000 0xdc e:/cm_programs/microchip_studio/7.0/toolchain/avr8/avr8-gnu-toolchain/bin/../lib/gcc/avr/5.4.0/../../../../avr/lib/avrxmega3/short-calls\libm.a(divsf3x.o) - .text 0x00000000 0x0 e:/cm_programs/microchip_studio/7.0/toolchain/avr8/avr8-gnu-toolchain/bin/../lib/gcc/avr/5.4.0/../../../../avr/lib/avrxmega3/short-calls\libm.a(fixunssfsi.o) - .data 0x00000000 0x0 e:/cm_programs/microchip_studio/7.0/toolchain/avr8/avr8-gnu-toolchain/bin/../lib/gcc/avr/5.4.0/../../../../avr/lib/avrxmega3/short-calls\libm.a(fixunssfsi.o) - .bss 0x00000000 0x0 e:/cm_programs/microchip_studio/7.0/toolchain/avr8/avr8-gnu-toolchain/bin/../lib/gcc/avr/5.4.0/../../../../avr/lib/avrxmega3/short-calls\libm.a(fixunssfsi.o) - .text.avr-libc.fplib - 0x00000000 0x5e e:/cm_programs/microchip_studio/7.0/toolchain/avr8/avr8-gnu-toolchain/bin/../lib/gcc/avr/5.4.0/../../../../avr/lib/avrxmega3/short-calls\libm.a(fixunssfsi.o) - .text 0x00000000 0x0 e:/cm_programs/microchip_studio/7.0/toolchain/avr8/avr8-gnu-toolchain/bin/../lib/gcc/avr/5.4.0/../../../../avr/lib/avrxmega3/short-calls\libm.a(floatsisf.o) - .data 0x00000000 0x0 e:/cm_programs/microchip_studio/7.0/toolchain/avr8/avr8-gnu-toolchain/bin/../lib/gcc/avr/5.4.0/../../../../avr/lib/avrxmega3/short-calls\libm.a(floatsisf.o) - .bss 0x00000000 0x0 e:/cm_programs/microchip_studio/7.0/toolchain/avr8/avr8-gnu-toolchain/bin/../lib/gcc/avr/5.4.0/../../../../avr/lib/avrxmega3/short-calls\libm.a(floatsisf.o) - .text.avr-libc.fplib - 0x00000000 0x7a e:/cm_programs/microchip_studio/7.0/toolchain/avr8/avr8-gnu-toolchain/bin/../lib/gcc/avr/5.4.0/../../../../avr/lib/avrxmega3/short-calls\libm.a(floatsisf.o) - .text 0x00000000 0x0 e:/cm_programs/microchip_studio/7.0/toolchain/avr8/avr8-gnu-toolchain/bin/../lib/gcc/avr/5.4.0/../../../../avr/lib/avrxmega3/short-calls\libm.a(floor.o) - .data 0x00000000 0x0 e:/cm_programs/microchip_studio/7.0/toolchain/avr8/avr8-gnu-toolchain/bin/../lib/gcc/avr/5.4.0/../../../../avr/lib/avrxmega3/short-calls\libm.a(floor.o) - .bss 0x00000000 0x0 e:/cm_programs/microchip_studio/7.0/toolchain/avr8/avr8-gnu-toolchain/bin/../lib/gcc/avr/5.4.0/../../../../avr/lib/avrxmega3/short-calls\libm.a(floor.o) - .text.avr-libc.fplib - 0x00000000 0x2e e:/cm_programs/microchip_studio/7.0/toolchain/avr8/avr8-gnu-toolchain/bin/../lib/gcc/avr/5.4.0/../../../../avr/lib/avrxmega3/short-calls\libm.a(floor.o) - .text 0x00000000 0x0 e:/cm_programs/microchip_studio/7.0/toolchain/avr8/avr8-gnu-toolchain/bin/../lib/gcc/avr/5.4.0/../../../../avr/lib/avrxmega3/short-calls\libm.a(fp_inf.o) - .data 0x00000000 0x0 e:/cm_programs/microchip_studio/7.0/toolchain/avr8/avr8-gnu-toolchain/bin/../lib/gcc/avr/5.4.0/../../../../avr/lib/avrxmega3/short-calls\libm.a(fp_inf.o) - .bss 0x00000000 0x0 e:/cm_programs/microchip_studio/7.0/toolchain/avr8/avr8-gnu-toolchain/bin/../lib/gcc/avr/5.4.0/../../../../avr/lib/avrxmega3/short-calls\libm.a(fp_inf.o) - .text.avr-libc.fplib - 0x00000000 0xc e:/cm_programs/microchip_studio/7.0/toolchain/avr8/avr8-gnu-toolchain/bin/../lib/gcc/avr/5.4.0/../../../../avr/lib/avrxmega3/short-calls\libm.a(fp_inf.o) - .text 0x00000000 0x0 e:/cm_programs/microchip_studio/7.0/toolchain/avr8/avr8-gnu-toolchain/bin/../lib/gcc/avr/5.4.0/../../../../avr/lib/avrxmega3/short-calls\libm.a(fp_mintl.o) - .data 0x00000000 0x0 e:/cm_programs/microchip_studio/7.0/toolchain/avr8/avr8-gnu-toolchain/bin/../lib/gcc/avr/5.4.0/../../../../avr/lib/avrxmega3/short-calls\libm.a(fp_mintl.o) - .bss 0x00000000 0x0 e:/cm_programs/microchip_studio/7.0/toolchain/avr8/avr8-gnu-toolchain/bin/../lib/gcc/avr/5.4.0/../../../../avr/lib/avrxmega3/short-calls\libm.a(fp_mintl.o) - .text.avr-libc.fplib - 0x00000000 0x36 e:/cm_programs/microchip_studio/7.0/toolchain/avr8/avr8-gnu-toolchain/bin/../lib/gcc/avr/5.4.0/../../../../avr/lib/avrxmega3/short-calls\libm.a(fp_mintl.o) - .text 0x00000000 0x0 e:/cm_programs/microchip_studio/7.0/toolchain/avr8/avr8-gnu-toolchain/bin/../lib/gcc/avr/5.4.0/../../../../avr/lib/avrxmega3/short-calls\libm.a(fp_mpack.o) - .data 0x00000000 0x0 e:/cm_programs/microchip_studio/7.0/toolchain/avr8/avr8-gnu-toolchain/bin/../lib/gcc/avr/5.4.0/../../../../avr/lib/avrxmega3/short-calls\libm.a(fp_mpack.o) - .bss 0x00000000 0x0 e:/cm_programs/microchip_studio/7.0/toolchain/avr8/avr8-gnu-toolchain/bin/../lib/gcc/avr/5.4.0/../../../../avr/lib/avrxmega3/short-calls\libm.a(fp_mpack.o) - .text.avr-libc.fplib - 0x00000000 0x1c e:/cm_programs/microchip_studio/7.0/toolchain/avr8/avr8-gnu-toolchain/bin/../lib/gcc/avr/5.4.0/../../../../avr/lib/avrxmega3/short-calls\libm.a(fp_mpack.o) - .text 0x00000000 0x0 e:/cm_programs/microchip_studio/7.0/toolchain/avr8/avr8-gnu-toolchain/bin/../lib/gcc/avr/5.4.0/../../../../avr/lib/avrxmega3/short-calls\libm.a(fp_nan.o) - .data 0x00000000 0x0 e:/cm_programs/microchip_studio/7.0/toolchain/avr8/avr8-gnu-toolchain/bin/../lib/gcc/avr/5.4.0/../../../../avr/lib/avrxmega3/short-calls\libm.a(fp_nan.o) - .bss 0x00000000 0x0 e:/cm_programs/microchip_studio/7.0/toolchain/avr8/avr8-gnu-toolchain/bin/../lib/gcc/avr/5.4.0/../../../../avr/lib/avrxmega3/short-calls\libm.a(fp_nan.o) - .text.avr-libc.fplib - 0x00000000 0x6 e:/cm_programs/microchip_studio/7.0/toolchain/avr8/avr8-gnu-toolchain/bin/../lib/gcc/avr/5.4.0/../../../../avr/lib/avrxmega3/short-calls\libm.a(fp_nan.o) - .text 0x00000000 0x0 e:/cm_programs/microchip_studio/7.0/toolchain/avr8/avr8-gnu-toolchain/bin/../lib/gcc/avr/5.4.0/../../../../avr/lib/avrxmega3/short-calls\libm.a(fp_pscA.o) - .data 0x00000000 0x0 e:/cm_programs/microchip_studio/7.0/toolchain/avr8/avr8-gnu-toolchain/bin/../lib/gcc/avr/5.4.0/../../../../avr/lib/avrxmega3/short-calls\libm.a(fp_pscA.o) - .bss 0x00000000 0x0 e:/cm_programs/microchip_studio/7.0/toolchain/avr8/avr8-gnu-toolchain/bin/../lib/gcc/avr/5.4.0/../../../../avr/lib/avrxmega3/short-calls\libm.a(fp_pscA.o) - .text.avr-libc.fplib - 0x00000000 0xe e:/cm_programs/microchip_studio/7.0/toolchain/avr8/avr8-gnu-toolchain/bin/../lib/gcc/avr/5.4.0/../../../../avr/lib/avrxmega3/short-calls\libm.a(fp_pscA.o) - .text 0x00000000 0x0 e:/cm_programs/microchip_studio/7.0/toolchain/avr8/avr8-gnu-toolchain/bin/../lib/gcc/avr/5.4.0/../../../../avr/lib/avrxmega3/short-calls\libm.a(fp_pscB.o) - .data 0x00000000 0x0 e:/cm_programs/microchip_studio/7.0/toolchain/avr8/avr8-gnu-toolchain/bin/../lib/gcc/avr/5.4.0/../../../../avr/lib/avrxmega3/short-calls\libm.a(fp_pscB.o) - .bss 0x00000000 0x0 e:/cm_programs/microchip_studio/7.0/toolchain/avr8/avr8-gnu-toolchain/bin/../lib/gcc/avr/5.4.0/../../../../avr/lib/avrxmega3/short-calls\libm.a(fp_pscB.o) - .text.avr-libc.fplib - 0x00000000 0xe e:/cm_programs/microchip_studio/7.0/toolchain/avr8/avr8-gnu-toolchain/bin/../lib/gcc/avr/5.4.0/../../../../avr/lib/avrxmega3/short-calls\libm.a(fp_pscB.o) - .text 0x00000000 0x0 e:/cm_programs/microchip_studio/7.0/toolchain/avr8/avr8-gnu-toolchain/bin/../lib/gcc/avr/5.4.0/../../../../avr/lib/avrxmega3/short-calls\libm.a(fp_round.o) - .data 0x00000000 0x0 e:/cm_programs/microchip_studio/7.0/toolchain/avr8/avr8-gnu-toolchain/bin/../lib/gcc/avr/5.4.0/../../../../avr/lib/avrxmega3/short-calls\libm.a(fp_round.o) - .bss 0x00000000 0x0 e:/cm_programs/microchip_studio/7.0/toolchain/avr8/avr8-gnu-toolchain/bin/../lib/gcc/avr/5.4.0/../../../../avr/lib/avrxmega3/short-calls\libm.a(fp_round.o) - .text.avr-libc.fplib - 0x00000000 0x22 e:/cm_programs/microchip_studio/7.0/toolchain/avr8/avr8-gnu-toolchain/bin/../lib/gcc/avr/5.4.0/../../../../avr/lib/avrxmega3/short-calls\libm.a(fp_round.o) - .text 0x00000000 0x0 e:/cm_programs/microchip_studio/7.0/toolchain/avr8/avr8-gnu-toolchain/bin/../lib/gcc/avr/5.4.0/../../../../avr/lib/avrxmega3/short-calls\libm.a(fp_split3.o) - .data 0x00000000 0x0 e:/cm_programs/microchip_studio/7.0/toolchain/avr8/avr8-gnu-toolchain/bin/../lib/gcc/avr/5.4.0/../../../../avr/lib/avrxmega3/short-calls\libm.a(fp_split3.o) - .bss 0x00000000 0x0 e:/cm_programs/microchip_studio/7.0/toolchain/avr8/avr8-gnu-toolchain/bin/../lib/gcc/avr/5.4.0/../../../../avr/lib/avrxmega3/short-calls\libm.a(fp_split3.o) - .text.avr-libc.fplib - 0x00000000 0x44 e:/cm_programs/microchip_studio/7.0/toolchain/avr8/avr8-gnu-toolchain/bin/../lib/gcc/avr/5.4.0/../../../../avr/lib/avrxmega3/short-calls\libm.a(fp_split3.o) - .text 0x00000000 0x0 e:/cm_programs/microchip_studio/7.0/toolchain/avr8/avr8-gnu-toolchain/bin/../lib/gcc/avr/5.4.0/../../../../avr/lib/avrxmega3/short-calls\libm.a(fp_trunc.o) - .data 0x00000000 0x0 e:/cm_programs/microchip_studio/7.0/toolchain/avr8/avr8-gnu-toolchain/bin/../lib/gcc/avr/5.4.0/../../../../avr/lib/avrxmega3/short-calls\libm.a(fp_trunc.o) - .bss 0x00000000 0x0 e:/cm_programs/microchip_studio/7.0/toolchain/avr8/avr8-gnu-toolchain/bin/../lib/gcc/avr/5.4.0/../../../../avr/lib/avrxmega3/short-calls\libm.a(fp_trunc.o) - .text.avr-libc.fplib - 0x00000000 0x30 e:/cm_programs/microchip_studio/7.0/toolchain/avr8/avr8-gnu-toolchain/bin/../lib/gcc/avr/5.4.0/../../../../avr/lib/avrxmega3/short-calls\libm.a(fp_trunc.o) - .text 0x00000000 0x0 e:/cm_programs/microchip_studio/7.0/toolchain/avr8/avr8-gnu-toolchain/bin/../lib/gcc/avr/5.4.0/../../../../avr/lib/avrxmega3/short-calls\libm.a(fp_zero.o) - .data 0x00000000 0x0 e:/cm_programs/microchip_studio/7.0/toolchain/avr8/avr8-gnu-toolchain/bin/../lib/gcc/avr/5.4.0/../../../../avr/lib/avrxmega3/short-calls\libm.a(fp_zero.o) - .bss 0x00000000 0x0 e:/cm_programs/microchip_studio/7.0/toolchain/avr8/avr8-gnu-toolchain/bin/../lib/gcc/avr/5.4.0/../../../../avr/lib/avrxmega3/short-calls\libm.a(fp_zero.o) - .text.avr-libc.fplib - 0x00000000 0xe e:/cm_programs/microchip_studio/7.0/toolchain/avr8/avr8-gnu-toolchain/bin/../lib/gcc/avr/5.4.0/../../../../avr/lib/avrxmega3/short-calls\libm.a(fp_zero.o) - .text 0x00000000 0x0 e:/cm_programs/microchip_studio/7.0/toolchain/avr8/avr8-gnu-toolchain/bin/../lib/gcc/avr/5.4.0/../../../../avr/lib/avrxmega3/short-calls\libm.a(mulsf3.o) - .data 0x00000000 0x0 e:/cm_programs/microchip_studio/7.0/toolchain/avr8/avr8-gnu-toolchain/bin/../lib/gcc/avr/5.4.0/../../../../avr/lib/avrxmega3/short-calls\libm.a(mulsf3.o) - .bss 0x00000000 0x0 e:/cm_programs/microchip_studio/7.0/toolchain/avr8/avr8-gnu-toolchain/bin/../lib/gcc/avr/5.4.0/../../../../avr/lib/avrxmega3/short-calls\libm.a(mulsf3.o) - .text.avr-libc.fplib - 0x00000000 0x8 e:/cm_programs/microchip_studio/7.0/toolchain/avr8/avr8-gnu-toolchain/bin/../lib/gcc/avr/5.4.0/../../../../avr/lib/avrxmega3/short-calls\libm.a(mulsf3.o) - .text 0x00000000 0x0 e:/cm_programs/microchip_studio/7.0/toolchain/avr8/avr8-gnu-toolchain/bin/../lib/gcc/avr/5.4.0/../../../../avr/lib/avrxmega3/short-calls\libm.a(mulsf3x.o) - .data 0x00000000 0x0 e:/cm_programs/microchip_studio/7.0/toolchain/avr8/avr8-gnu-toolchain/bin/../lib/gcc/avr/5.4.0/../../../../avr/lib/avrxmega3/short-calls\libm.a(mulsf3x.o) - .bss 0x00000000 0x0 e:/cm_programs/microchip_studio/7.0/toolchain/avr8/avr8-gnu-toolchain/bin/../lib/gcc/avr/5.4.0/../../../../avr/lib/avrxmega3/short-calls\libm.a(mulsf3x.o) - .text.avr-libc.fplib - 0x00000000 0xd2 e:/cm_programs/microchip_studio/7.0/toolchain/avr8/avr8-gnu-toolchain/bin/../lib/gcc/avr/5.4.0/../../../../avr/lib/avrxmega3/short-calls\libm.a(mulsf3x.o) - .text 0x00000000 0x0 e:/cm_programs/microchip_studio/7.0/toolchain/avr8/avr8-gnu-toolchain/bin/../lib/gcc/avr/5.4.0/avrxmega3/short-calls\libgcc.a(_udivmodsi4.o) - .data 0x00000000 0x0 e:/cm_programs/microchip_studio/7.0/toolchain/avr8/avr8-gnu-toolchain/bin/../lib/gcc/avr/5.4.0/avrxmega3/short-calls\libgcc.a(_udivmodsi4.o) - .bss 0x00000000 0x0 e:/cm_programs/microchip_studio/7.0/toolchain/avr8/avr8-gnu-toolchain/bin/../lib/gcc/avr/5.4.0/avrxmega3/short-calls\libgcc.a(_udivmodsi4.o) - .text.libgcc.mul - 0x00000000 0x0 e:/cm_programs/microchip_studio/7.0/toolchain/avr8/avr8-gnu-toolchain/bin/../lib/gcc/avr/5.4.0/avrxmega3/short-calls\libgcc.a(_udivmodsi4.o) - .text.libgcc.div - 0x00000000 0x44 e:/cm_programs/microchip_studio/7.0/toolchain/avr8/avr8-gnu-toolchain/bin/../lib/gcc/avr/5.4.0/avrxmega3/short-calls\libgcc.a(_udivmodsi4.o) - .text.libgcc 0x00000000 0x0 e:/cm_programs/microchip_studio/7.0/toolchain/avr8/avr8-gnu-toolchain/bin/../lib/gcc/avr/5.4.0/avrxmega3/short-calls\libgcc.a(_udivmodsi4.o) - .text.libgcc.prologue - 0x00000000 0x0 e:/cm_programs/microchip_studio/7.0/toolchain/avr8/avr8-gnu-toolchain/bin/../lib/gcc/avr/5.4.0/avrxmega3/short-calls\libgcc.a(_udivmodsi4.o) - .text.libgcc.builtins - 0x00000000 0x0 e:/cm_programs/microchip_studio/7.0/toolchain/avr8/avr8-gnu-toolchain/bin/../lib/gcc/avr/5.4.0/avrxmega3/short-calls\libgcc.a(_udivmodsi4.o) - .text.libgcc.fmul - 0x00000000 0x0 e:/cm_programs/microchip_studio/7.0/toolchain/avr8/avr8-gnu-toolchain/bin/../lib/gcc/avr/5.4.0/avrxmega3/short-calls\libgcc.a(_udivmodsi4.o) - .text.libgcc.fixed - 0x00000000 0x0 e:/cm_programs/microchip_studio/7.0/toolchain/avr8/avr8-gnu-toolchain/bin/../lib/gcc/avr/5.4.0/avrxmega3/short-calls\libgcc.a(_udivmodsi4.o) .text 0x00000000 0x0 e:/cm_programs/microchip_studio/7.0/toolchain/avr8/avr8-gnu-toolchain/bin/../lib/gcc/avr/5.4.0/avrxmega3/short-calls\libgcc.a(_exit.o) .data 0x00000000 0x0 e:/cm_programs/microchip_studio/7.0/toolchain/avr8/avr8-gnu-toolchain/bin/../lib/gcc/avr/5.4.0/avrxmega3/short-calls\libgcc.a(_exit.o) .bss 0x00000000 0x0 e:/cm_programs/microchip_studio/7.0/toolchain/avr8/avr8-gnu-toolchain/bin/../lib/gcc/avr/5.4.0/avrxmega3/short-calls\libgcc.a(_exit.o) @@ -424,7 +265,7 @@ END GROUP .rela.plt *(.rela.plt) -.text 0x00000000 0xfd2 +.text 0x00000000 0xf66 *(.vectors) .vectors 0x00000000 0x34 E:/cm_programs/microchip_studio/7.0/Packs/atmel/ATtiny_DFP/1.10.348/gcc/dev/attiny402/avrxmega3/short-calls/crtattiny402.o 0x00000000 __vector_default @@ -511,102 +352,108 @@ END GROUP 0x0000006c . = ALIGN (0x2) *(.text.*) .text.cm_EEPROM_write - 0x0000006c 0x42 avr_eeprom_driver/avr_eeprom_driver.o + 0x0000006c 0x46 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 + 0x000000b2 0x46 avr_eeprom_driver/avr_eeprom_driver.o + 0x000000b2 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 + 0x000000f8 0x20 avr_gpio_driver/avr_gpio.o + 0x000000f8 gpio_get_level + .text.i2c_write_devAddr + 0x00000118 0x24 avr_i2c_driver/avr_i2c.o + 0x00000118 i2c_write_devAddr + .text.i2c_write + 0x0000013c 0xa4 avr_i2c_driver/avr_i2c.o + 0x0000013c i2c_write .text.i2c_read - 0x0000018c 0x8a avr_i2c_driver/avr_i2c.o - 0x0000018c i2c_read + 0x000001e0 0x98 avr_i2c_driver/avr_i2c.o + 0x000001e0 i2c_read + .text.i2c_IsDeviceReady + 0x00000278 0x3a avr_i2c_driver/avr_i2c.o + 0x00000278 i2c_IsDeviceReady .text.cm_i2c_init - 0x00000216 0x34 avr_i2c_driver/avr_i2c.o - 0x00000216 cm_i2c_init + 0x000002b2 0x34 avr_i2c_driver/avr_i2c.o + 0x000002b2 cm_i2c_init .text.cm_i2c_addDev - 0x0000024a 0x48 avr_i2c_driver/avr_i2c.o - 0x0000024a cm_i2c_addDev + 0x000002e6 0x3c avr_i2c_driver/avr_i2c.o + 0x000002e6 cm_i2c_addDev .text.cm_i2c_transfer - 0x00000292 0x54 avr_i2c_driver/avr_i2c.o - 0x00000292 cm_i2c_transfer + 0x00000322 0x34 avr_i2c_driver/avr_i2c.o + 0x00000322 cm_i2c_transfer .text.__vector_22 - 0x000002e6 0x6a avr_uart_driver/avr_uart.o - 0x000002e6 __vector_22 + 0x00000356 0x6e avr_uart_driver/avr_uart.o + 0x00000356 __vector_22 .text.cm_uart_init - 0x00000350 0x66 avr_uart_driver/avr_uart.o - 0x00000350 cm_uart_init + 0x000003c4 0x60 avr_uart_driver/avr_uart.o + 0x000003c4 cm_uart_init .text.cm_msgSync_Byte_DecodeSC - 0x000003b6 0x64 cm_msg/cm_msg.o - 0x000003b6 cm_msgSync_Byte_DecodeSC + 0x00000424 0x80 cm_msg/cm_msg.o + 0x00000424 cm_msgSync_Byte_DecodeSC .text.cm_msg_DecodeMsg_Byte - 0x0000041a 0xb4 cm_msg/cm_msg.o - 0x0000041a cm_msg_DecodeMsg_Byte + 0x000004a4 0xa8 cm_msg/cm_msg.o + 0x000004a4 cm_msg_DecodeMsg_Byte .text.cm_MsgCompleteEvt_Register - 0x000004ce 0x1c cm_msg/cm_msg.o - 0x000004ce cm_MsgCompleteEvt_Register + 0x0000054c 0x1c cm_msg/cm_msg.o + 0x0000054c cm_MsgCompleteEvt_Register .text.cqm6xx_app_updateOsc - 0x000004ea 0x52 cqm6xx_app.o + 0x00000568 0x4e cqm6xx_app.o .text.cqm_setPLLParam - 0x0000053c 0x78 cqm6xx_app.o - .text.cqm6xx_app_statemachine - 0x000005b4 0xbc cqm6xx_app.o - 0x000005b4 cqm6xx_app_statemachine - .text.programPLL_Parameters - 0x00000670 0x6e cqm6xx_app.o - 0x00000670 programPLL_Parameters + 0x000005b6 0x7a cqm6xx_app.o .text.uart_rx_event - 0x000006de 0x18 cqm6xx_app.o - 0x000006de uart_rx_event + 0x00000630 0x36 cqm6xx_app.o + 0x00000630 uart_rx_event + .text.cqm6xx_app_statemachine + 0x00000666 0xb8 cqm6xx_app.o + 0x00000666 cqm6xx_app_statemachine .text.cqm6xx_app_init - 0x000006f6 0xe2 cqm6xx_app.o - 0x000006f6 cqm6xx_app_init - .text.startup.main - 0x000007d8 0x48 main.o - 0x000007d8 main - .text.writeRegister.isra.1 - 0x00000820 0x88 si5351_driver/si5351_driver.o - .text.cm_setPllParamRaw - 0x000008a8 0xf6 si5351_driver/si5351_driver.o - 0x000008a8 cm_setPllParamRaw + 0x0000071e 0x12a cqm6xx_app.o + 0x0000071e cqm6xx_app_init + .text.main 0x00000848 0x44 main.o + 0x00000848 main + .text.writeRegister + 0x0000088c 0x78 si5351_driver/si5351_driver.o .text.cm_setOutputMultiSynthRaw - 0x0000099e 0x128 si5351_driver/si5351_driver.o - 0x0000099e cm_setOutputMultiSynthRaw + 0x00000904 0xac si5351_driver/si5351_driver.o + 0x00000904 cm_setOutputMultiSynthRaw .text.cm_setOutputEnable - 0x00000ac6 0x5a si5351_driver/si5351_driver.o - 0x00000ac6 cm_setOutputEnable + 0x000009b0 0x4e si5351_driver/si5351_driver.o + 0x000009b0 cm_setOutputEnable .text.cm_setCLKControl - 0x00000b20 0xac si5351_driver/si5351_driver.o - 0x00000b20 cm_setCLKControl + 0x000009fe 0x68 si5351_driver/si5351_driver.o + 0x000009fe cm_setCLKControl .text.cm_setInputSource - 0x00000bcc 0x4a si5351_driver/si5351_driver.o - 0x00000bcc cm_setInputSource + 0x00000a66 0x3e si5351_driver/si5351_driver.o + 0x00000a66 cm_setInputSource + .text.cm_resetPLLs + 0x00000aa4 0x44 si5351_driver/si5351_driver.o + 0x00000aa4 cm_resetPLLs + .text.cm_setPllParamRaw + 0x00000ae8 0x94 si5351_driver/si5351_driver.o + 0x00000ae8 cm_setPllParamRaw .text.cm_si5351_init - 0x00000c16 0x12c si5351_driver/si5351_driver.o - 0x00000c16 cm_si5351_init + 0x00000b7c 0x15a si5351_driver/si5351_driver.o + 0x00000b7c cm_si5351_init .text.avr-libc - 0x00000d42 0x242 e:/cm_programs/microchip_studio/7.0/toolchain/avr8/avr8-gnu-toolchain/bin/../lib/gcc/avr/5.4.0/../../../../avr/lib/avrxmega3/short-calls\libc.a(malloc.o) - 0x00000d42 malloc - 0x00000e72 free + 0x00000cd6 0x242 e:/cm_programs/microchip_studio/7.0/toolchain/avr8/avr8-gnu-toolchain/bin/../lib/gcc/avr/5.4.0/../../../../avr/lib/avrxmega3/short-calls\libc.a(malloc.o) + 0x00000cd6 malloc + 0x00000e06 free .text.avr-libc - 0x00000f84 0x12 e:/cm_programs/microchip_studio/7.0/toolchain/avr8/avr8-gnu-toolchain/bin/../lib/gcc/avr/5.4.0/../../../../avr/lib/avrxmega3/short-calls\libc.a(memcpy.o) - 0x00000f84 memcpy + 0x00000f18 0x12 e:/cm_programs/microchip_studio/7.0/toolchain/avr8/avr8-gnu-toolchain/bin/../lib/gcc/avr/5.4.0/../../../../avr/lib/avrxmega3/short-calls\libc.a(memcpy.o) + 0x00000f18 memcpy .text.avr-libc - 0x00000f96 0x10 E:/cm_programs/microchip_studio/7.0/Packs/atmel/ATtiny_DFP/1.10.348/gcc/dev/attiny402/avrxmega3/short-calls\libattiny402.a(eerd_byte.o) - 0x00000f96 eeprom_read_byte - 0x00000f9e eeprom_mapen + 0x00000f2a 0x10 E:/cm_programs/microchip_studio/7.0/Packs/atmel/ATtiny_DFP/1.10.348/gcc/dev/attiny402/avrxmega3/short-calls\libattiny402.a(eerd_byte.o) + 0x00000f2a eeprom_read_byte + 0x00000f32 eeprom_mapen .text.avr-libc - 0x00000fa6 0x28 E:/cm_programs/microchip_studio/7.0/Packs/atmel/ATtiny_DFP/1.10.348/gcc/dev/attiny402/avrxmega3/short-calls\libattiny402.a(eewr_byte.o) - 0x00000fa6 eeprom_write_byte - 0x00000fa8 eeprom_write_r18 - 0x00000fce . = ALIGN (0x2) + 0x00000f3a 0x28 E:/cm_programs/microchip_studio/7.0/Packs/atmel/ATtiny_DFP/1.10.348/gcc/dev/attiny402/avrxmega3/short-calls\libattiny402.a(eewr_byte.o) + 0x00000f3a eeprom_write_byte + 0x00000f3c eeprom_write_r18 + 0x00000f62 . = ALIGN (0x2) *(.fini9) - .fini9 0x00000fce 0x0 e:/cm_programs/microchip_studio/7.0/toolchain/avr8/avr8-gnu-toolchain/bin/../lib/gcc/avr/5.4.0/avrxmega3/short-calls\libgcc.a(_exit.o) - 0x00000fce _exit - 0x00000fce exit + .fini9 0x00000f62 0x0 e:/cm_programs/microchip_studio/7.0/toolchain/avr8/avr8-gnu-toolchain/bin/../lib/gcc/avr/5.4.0/avrxmega3/short-calls\libgcc.a(_exit.o) + 0x00000f62 _exit + 0x00000f62 exit *(.fini9) *(.fini8) *(.fini8) @@ -625,16 +472,16 @@ END GROUP *(.fini1) *(.fini1) *(.fini0) - .fini0 0x00000fce 0x4 e:/cm_programs/microchip_studio/7.0/toolchain/avr8/avr8-gnu-toolchain/bin/../lib/gcc/avr/5.4.0/avrxmega3/short-calls\libgcc.a(_exit.o) + .fini0 0x00000f62 0x4 e:/cm_programs/microchip_studio/7.0/toolchain/avr8/avr8-gnu-toolchain/bin/../lib/gcc/avr/5.4.0/avrxmega3/short-calls\libgcc.a(_exit.o) *(.fini0) - 0x00000fd2 _etext = . + 0x00000f66 _etext = . .rodata *(.rodata) *(.rodata*) *(.gnu.linkonce.r*) -.data 0x00803f00 0x6 load address 0x00000fd2 +.data 0x00803f00 0x6 load address 0x00000f66 0x00803f00 PROVIDE (__data_start, .) *(.data) .data 0x00803f00 0x6 e:/cm_programs/microchip_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 +494,7 @@ END GROUP 0x00803f06 _edata = . 0x00803f06 PROVIDE (__data_end, .) -.bss 0x00803f06 0x66 +.bss 0x00803f06 0x84 0x00803f06 PROVIDE (__bss_start, .) *(.bss) *(.bss*) @@ -668,21 +515,21 @@ END GROUP 0x00803f44 0x2 cm_msg/cm_msg.o 0x00803f44 s_msg_cmplete_evt_fpt *(COMMON) - COMMON 0x00803f46 0x22 main.o + COMMON 0x00803f46 0x40 main.o 0x00803f46 storno_xtal_app - COMMON 0x00803f68 0x4 e:/cm_programs/microchip_studio/7.0/toolchain/avr8/avr8-gnu-toolchain/bin/../lib/gcc/avr/5.4.0/../../../../avr/lib/avrxmega3/short-calls\libc.a(malloc.o) - 0x00803f68 __brkval - 0x00803f6a __flp - 0x00803f6c PROVIDE (__bss_end, .) - 0x00000fd2 __data_load_start = LOADADDR (.data) - 0x00000fd8 __data_load_end = (__data_load_start + SIZEOF (.data)) + COMMON 0x00803f86 0x4 e:/cm_programs/microchip_studio/7.0/toolchain/avr8/avr8-gnu-toolchain/bin/../lib/gcc/avr/5.4.0/../../../../avr/lib/avrxmega3/short-calls\libc.a(malloc.o) + 0x00803f86 __brkval + 0x00803f88 __flp + 0x00803f8a PROVIDE (__bss_end, .) + 0x00000f66 __data_load_start = LOADADDR (.data) + 0x00000f6c __data_load_end = (__data_load_start + SIZEOF (.data)) -.noinit 0x00803f6c 0x0 +.noinit 0x00803f8a 0x0 [!provide] PROVIDE (__noinit_start, .) *(.noinit*) [!provide] PROVIDE (__noinit_end, .) - 0x00803f6c _end = . - 0x00803f6c PROVIDE (__heap_start, .) + 0x00803f8a _end = . + 0x00803f8a PROVIDE (__heap_start, .) .eeprom 0x00810000 0x0 *(.eeprom*) @@ -754,86 +601,86 @@ END GROUP .debug_sfnames *(.debug_sfnames) -.debug_aranges 0x00000000 0x248 +.debug_aranges 0x00000000 0x238 *(.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 0x68 si5351_driver/si5351_driver.o .debug_aranges - 0x00000208 0x20 E:/cm_programs/microchip_studio/7.0/Packs/atmel/ATtiny_DFP/1.10.348/gcc/dev/attiny402/avrxmega3/short-calls\libattiny402.a(eerd_byte.o) + 0x000001f8 0x20 E:/cm_programs/microchip_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 E:/cm_programs/microchip_studio/7.0/Packs/atmel/ATtiny_DFP/1.10.348/gcc/dev/attiny402/avrxmega3/short-calls\libattiny402.a(eewr_byte.o) + 0x00000218 0x20 E:/cm_programs/microchip_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 0x58ba +.debug_info 0x00000000 0x4ff6 *(.debug_info .gnu.linkonce.wi.*) .debug_info 0x00000000 0x11d6 E:/cm_programs/microchip_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 0x85f avr_i2c_driver/avr_i2c.o - .debug_info 0x00001ed8 0x519 avr_uart_driver/avr_uart.o - .debug_info 0x000023f1 0x2b8 cm_msg/cm_msg.o - .debug_info 0x000026a9 0x9a4 cqm6xx_app.o - .debug_info 0x0000304d 0xc80 main.o - .debug_info 0x00003ccd 0x1a93 si5351_driver/si5351_driver.o - .debug_info 0x00005760 0xad E:/cm_programs/microchip_studio/7.0/Packs/atmel/ATtiny_DFP/1.10.348/gcc/dev/attiny402/avrxmega3/short-calls\libattiny402.a(eerd_byte.o) - .debug_info 0x0000580d 0xad E:/cm_programs/microchip_studio/7.0/Packs/atmel/ATtiny_DFP/1.10.348/gcc/dev/attiny402/avrxmega3/short-calls\libattiny402.a(eewr_byte.o) + .debug_info 0x00001679 0x6c8 avr_i2c_driver/avr_i2c.o + .debug_info 0x00001d41 0x519 avr_uart_driver/avr_uart.o + .debug_info 0x0000225a 0x2b4 cm_msg/cm_msg.o + .debug_info 0x0000250e 0x9bd cqm6xx_app.o + .debug_info 0x00002ecb 0xb13 main.o + .debug_info 0x000039de 0x14be si5351_driver/si5351_driver.o + .debug_info 0x00004e9c 0xad E:/cm_programs/microchip_studio/7.0/Packs/atmel/ATtiny_DFP/1.10.348/gcc/dev/attiny402/avrxmega3/short-calls\libattiny402.a(eerd_byte.o) + .debug_info 0x00004f49 0xad E:/cm_programs/microchip_studio/7.0/Packs/atmel/ATtiny_DFP/1.10.348/gcc/dev/attiny402/avrxmega3/short-calls\libattiny402.a(eewr_byte.o) -.debug_abbrev 0x00000000 0x1e89 +.debug_abbrev 0x00000000 0x1d79 *(.debug_abbrev) .debug_abbrev 0x00000000 0x10de E:/cm_programs/microchip_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 0x1e2 avr_uart_driver/avr_uart.o - .debug_abbrev 0x000016c9 0x15c cm_msg/cm_msg.o - .debug_abbrev 0x00001825 0x1fd cqm6xx_app.o - .debug_abbrev 0x00001a22 0x169 main.o - .debug_abbrev 0x00001b8b 0x2d6 si5351_driver/si5351_driver.o - .debug_abbrev 0x00001e61 0x14 E:/cm_programs/microchip_studio/7.0/Packs/atmel/ATtiny_DFP/1.10.348/gcc/dev/attiny402/avrxmega3/short-calls\libattiny402.a(eerd_byte.o) - .debug_abbrev 0x00001e75 0x14 E:/cm_programs/microchip_studio/7.0/Packs/atmel/ATtiny_DFP/1.10.348/gcc/dev/attiny402/avrxmega3/short-calls\libattiny402.a(eewr_byte.o) + .debug_abbrev 0x00001291 0x1b6 avr_i2c_driver/avr_i2c.o + .debug_abbrev 0x00001447 0x1e2 avr_uart_driver/avr_uart.o + .debug_abbrev 0x00001629 0x15a cm_msg/cm_msg.o + .debug_abbrev 0x00001783 0x213 cqm6xx_app.o + .debug_abbrev 0x00001996 0x169 main.o + .debug_abbrev 0x00001aff 0x252 si5351_driver/si5351_driver.o + .debug_abbrev 0x00001d51 0x14 E:/cm_programs/microchip_studio/7.0/Packs/atmel/ATtiny_DFP/1.10.348/gcc/dev/attiny402/avrxmega3/short-calls\libattiny402.a(eerd_byte.o) + .debug_abbrev 0x00001d65 0x14 E:/cm_programs/microchip_studio/7.0/Packs/atmel/ATtiny_DFP/1.10.348/gcc/dev/attiny402/avrxmega3/short-calls\libattiny402.a(eewr_byte.o) -.debug_line 0x00000000 0x1854 +.debug_line 0x00000000 0x1678 *(.debug_line .debug_line.* .debug_line_end) .debug_line 0x00000000 0x136 E:/cm_programs/microchip_studio/7.0/Packs/atmel/ATtiny_DFP/1.10.348/gcc/dev/attiny402/avrxmega3/short-calls/crtattiny402.o .debug_line 0x00000136 0x166 avr_eeprom_driver/avr_eeprom_driver.o - .debug_line 0x0000029c 0x1a0 avr_gpio_driver/avr_gpio.o - .debug_line 0x0000043c 0x44e avr_i2c_driver/avr_i2c.o - .debug_line 0x0000088a 0x221 avr_uart_driver/avr_uart.o - .debug_line 0x00000aab 0x1e2 cm_msg/cm_msg.o - .debug_line 0x00000c8d 0x3a7 cqm6xx_app.o - .debug_line 0x00001034 0x110 main.o - .debug_line 0x00001144 0x5d0 si5351_driver/si5351_driver.o - .debug_line 0x00001714 0x7c E:/cm_programs/microchip_studio/7.0/Packs/atmel/ATtiny_DFP/1.10.348/gcc/dev/attiny402/avrxmega3/short-calls\libattiny402.a(eerd_byte.o) - .debug_line 0x00001790 0xc4 E:/cm_programs/microchip_studio/7.0/Packs/atmel/ATtiny_DFP/1.10.348/gcc/dev/attiny402/avrxmega3/short-calls\libattiny402.a(eewr_byte.o) + .debug_line 0x0000029c 0x18e avr_gpio_driver/avr_gpio.o + .debug_line 0x0000042a 0x441 avr_i2c_driver/avr_i2c.o + .debug_line 0x0000086b 0x223 avr_uart_driver/avr_uart.o + .debug_line 0x00000a8e 0x216 cm_msg/cm_msg.o + .debug_line 0x00000ca4 0x377 cqm6xx_app.o + .debug_line 0x0000101b 0x110 main.o + .debug_line 0x0000112b 0x40d si5351_driver/si5351_driver.o + .debug_line 0x00001538 0x7c E:/cm_programs/microchip_studio/7.0/Packs/atmel/ATtiny_DFP/1.10.348/gcc/dev/attiny402/avrxmega3/short-calls\libattiny402.a(eerd_byte.o) + .debug_line 0x000015b4 0xc4 E:/cm_programs/microchip_studio/7.0/Packs/atmel/ATtiny_DFP/1.10.348/gcc/dev/attiny402/avrxmega3/short-calls\libattiny402.a(eewr_byte.o) -.debug_frame 0x00000000 0x62c +.debug_frame 0x00000000 0x5d8 *(.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 0xcc avr_uart_driver/avr_uart.o - .debug_frame 0x00000240 0x44 cm_msg/cm_msg.o - .debug_frame 0x00000284 0xec cqm6xx_app.o - .debug_frame 0x00000370 0x34 main.o - .debug_frame 0x000003a4 0x288 si5351_driver/si5351_driver.o + .debug_frame 0x000000b8 0x108 avr_i2c_driver/avr_i2c.o + .debug_frame 0x000001c0 0xcc avr_uart_driver/avr_uart.o + .debug_frame 0x0000028c 0x44 cm_msg/cm_msg.o + .debug_frame 0x000002d0 0xec cqm6xx_app.o + .debug_frame 0x000003bc 0x34 main.o + .debug_frame 0x000003f0 0x1e8 si5351_driver/si5351_driver.o -.debug_str 0x00000000 0x22b9 +.debug_str 0x00000000 0x2145 *(.debug_str) .debug_str 0x00000000 0x7a9 E:/cm_programs/microchip_studio/7.0/Packs/atmel/ATtiny_DFP/1.10.348/gcc/dev/attiny402/avrxmega3/short-calls/crtattiny402.o .debug_str 0x000007a9 0x1d2 avr_eeprom_driver/avr_eeprom_driver.o @@ -846,23 +693,23 @@ END GROUP 0x4f1 (size before relaxing) .debug_str 0x00001017 0x23a cm_msg/cm_msg.o 0x3f7 (size before relaxing) - .debug_str 0x00001251 0x3dd cqm6xx_app.o - 0x639 (size before relaxing) - .debug_str 0x0000162e 0x8ff main.o - 0xc25 (size before relaxing) - .debug_str 0x00001f2d 0x38c si5351_driver/si5351_driver.o - 0xff2 (size before relaxing) + .debug_str 0x00001251 0x401 cqm6xx_app.o + 0x664 (size before relaxing) + .debug_str 0x00001652 0x787 main.o + 0xae1 (size before relaxing) + .debug_str 0x00001dd9 0x36c si5351_driver/si5351_driver.o + 0xe51 (size before relaxing) -.debug_loc 0x00000000 0x257b +.debug_loc 0x00000000 0x1f43 *(.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 0x665 avr_i2c_driver/avr_i2c.o - .debug_loc 0x0000094c 0x16e avr_uart_driver/avr_uart.o - .debug_loc 0x00000aba 0x158 cm_msg/cm_msg.o - .debug_loc 0x00000c12 0x622 cqm6xx_app.o - .debug_loc 0x00001234 0x48 main.o - .debug_loc 0x0000127c 0x12ff si5351_driver/si5351_driver.o + .debug_loc 0x00000000 0x24b avr_eeprom_driver/avr_eeprom_driver.o + .debug_loc 0x0000024b 0xae avr_gpio_driver/avr_gpio.o + .debug_loc 0x000002f9 0x70d avr_i2c_driver/avr_i2c.o + .debug_loc 0x00000a06 0x16e avr_uart_driver/avr_uart.o + .debug_loc 0x00000b74 0x179 cm_msg/cm_msg.o + .debug_loc 0x00000ced 0x4a9 cqm6xx_app.o + .debug_loc 0x00001196 0x47 main.o + .debug_loc 0x000011dd 0xd66 si5351_driver/si5351_driver.o .debug_macinfo *(.debug_macinfo) @@ -882,16 +729,16 @@ END GROUP .debug_pubtypes *(.debug_pubtypes) -.debug_ranges 0x00000000 0x230 +.debug_ranges 0x00000000 0x1c0 *(.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 0x50 avr_i2c_driver/avr_i2c.o + .debug_ranges 0x00000088 0x30 avr_uart_driver/avr_uart.o + .debug_ranges 0x000000b8 0x20 cm_msg/cm_msg.o + .debug_ranges 0x000000d8 0x68 cqm6xx_app.o + .debug_ranges 0x00000140 0x10 main.o + .debug_ranges 0x00000150 0x70 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 49f9f94..160bdac 100644 --- a/storno_cqp6xx_digital_xtal/Debug/storno_cqp6xx_digital_xtal.srec +++ b/storno_cqp6xx_digital_xtal/Debug/storno_cqp6xx_digital_xtal.srec @@ -1,257 +1,250 @@ S022000073746F726E6F5F6371703678785F6469676974616C5F7874616C2E737265633F S113000019C033C032C031C030C02FC02EC02DC083 S11300102CC02BC02AC029C028C027C026C025C098 -S113002024C023C022C021C020C01FC05CC11DC089 +S113002024C023C022C021C020C01FC094C11DC051 S11300301CC01BC011241FBECFEFCDBFDFE3DEBF4A -S11300402FE3A6E0BFE301C01D92AC36B207E1F78F -S11300501FE3A0E0BFE3E2EDFFE002C005900D92D4 -S1130060A630B107D9F7B8D3B2C7CACFEF92FF927F -S11300700F931F93CF93DF93442391F0EB018C01F3 -S11300804150E42EF12C8FEFE81AF80AE60EF71E21 -S11300906991C80188D70F5F1F4FCE15DF05C1F7DF -S11300A0DF91CF911F910F91FF90EF900895EF9200 -S11300B0FF920F931F93CF93DF93442391F08C010E -S11300C0EB014150E42EF12C8FEFE81AF80AE60E0A -S11300D0F71EC80160D789930F5F1F4FCE15DF0548 -S11300E0C1F7DF91CF911F910F91FF90EF90089589 -S11300F081110BC08091080490E002C0959587950A -S11301006A95E2F781709927089580E090E0089558 -S113011020911508207CE1F32091150824FD1FC0CF -S1130120FC018191809318088091150886FFFCCF0B -S11301308091150884FD24C0809115088C70A9F461 -S11301408091150884FD05C0415051096109710968 -S113015041F783E08093140880E090E0089583E001 -S1130160809314088FEF9FEF08958091140888609E -S11301708093140881E08093150881E090E008954D -S113018083E08093140881E090E00895B62FA72FB0 -S11301909091150893709130D9F7211531054105D7 -S11301A0510569F181608093170880911508807C5E -S11301B0E1F38091150884FD1CC0BA01A9014150E6 -S11301C0510961097109EB2FFA2F92E0809115080A -S11301D0807CE1F3809118088193411551056105F4 -S11301E0710581F090931408415051096109710916 -S11301F0EDCF83E0809314088FEF9FEF089581E0A3 -S113020090E0089584E08093140883E080931408B8 -S113021080E090E00895E0E0F4E080818B7F8083CB -S11302208081877F8083A0E1B8E08BE016968C9371 -S1130230169781E013968C93139715968C9388E008 -S1130240828B838B80E090E00895FC01842F880FDB -S11302509091150893709130D9F780931708909175 -S1130260150896FFFCCF8091150884FF06C083E033 -S1130270809314088EEF9FEF089583E08093140811 -S11302806083718350E0440F551F428380E090E007 -S113029008950F93009721F1DB01FC010023D1F0B5 -S11302A0013021F080E090E00F91089590911508BD -S11302B093709130D9F7211531054105510591F31A -S11302C0828180931708BA01A901CD0121DF80E062 -S11302D090E0EACF82815ADF80E090E00F910895A8 -S11302E08FEF9FEFE1CF1F920F920FB60F92112461 -S11302F02F933F934F935F936F937F938F939F932A -S1130300AF93BF93EF93FF93CF93DF931F92CDB738 -S1130310DEB7E091063FF091073F809100083097E7 -S1130320A9F009950F90DF91CF91FF91EF91BF91C3 -S1130330AF919F918F917F916F915F914F913F9179 -S11303402F910F900FBE0F901F9018958983EACFBD -S1130350CF93DF931F92CDB7DEB7AC01F8942CE6B0 -S113036035E0209308083093090893E09093070838 -S113037090EC9093060861157105D1F080E88093A4 -S113038005086093063F7093073F8091040887FF38 -S113039004C0809100088983898180E480930104EA -S11303A080E88093020478940F90DF91CF910895B0 -S11303B0452B21F7EACF9091413F923041F160F40F -S11303C09923E1F0913089F48A3529F180E0809312 -S11303D0413F81E090E00895933061F0943029F436 -S11303E01092413F80E090E008951092413F81E0F7 -S11303F090E00895833451F784E0E9CF91E08F349D -S113040009F090E09093413F81E090E008958133BA -S1130410E9F683E0DCCF82E0DACF9091403F93307D -S113042009F44BC068F4992309F440C0913029F4CD -S11304308093083F83E08093403F80E090E00895FC -S1130440943019F19530C9F790913F3FE92FF0E0CE -S1130450E85FF04C838381E0890F80933F3F909164 -S1130460083F891750F3E091443FF091453F6BE01A -S11304707FE38091423F9091433F09951092403F22 -S113048010923F3F80E090E008952091093F309121 -S11304900A3FA901482BCA018093093F90930A3F60 -S11304A085E08093403F80E090E0089584DF892BCD -S11304B039F781E08093403FE3CF1092093F809366 -S11304C00A3F84E08093403F80E090E008950097E5 -S11304D059F06115710541F08093423F9093433F79 -S11304E06093443F7093453F0895CF93DF93FC019D -S11304F0828193810097A9F0309799F0218130810E -S1130500231779F0EF01213079F0223051F441E0E2 -S113051060E0D9D240E061E08A819B81DF91CF9194 -S1130520D2C2DF91CF91089540E060E0CCD241E0A7 -S113053061E08A819B81DF91CF91C5C29F92AF9286 -S1130540BF92CF92DF92EF92FF920F931F93CF93BC -S1130550DF93EC01942EAD84BE84CF84D888E984E3 -S1130560FA840B851C852D813E814F8158858A81B3 -S11305709B819AD1A98CBA8CCB8CDC8CED88FE88BB -S11305800F89188D29893A894B895C89692D8A815B -S11305909B8105D240E0692D8A819B81DF91CF91B7 -S11305A01F910F91FF90EF90DF90CF90BF90AF908D -S11305B09F90B6C20F931F93CF93DF93FC012281C8 -S11305C03381232BA9F0009799F0EC0181818130CC -S11305D009F442C090F0823059F4CE0186DF89815B -S11305E0888363E080E084DD892B11F481E08983D2 -S11305F0DF91CF911F910F91089518828E010C5FA6 -S11306001F4F4EE1B80180E090E051DD60E08A8147 -S11306109B81DCD240E060E0CE0190DF4EE1B80186 -S113062080E290E044DD41E061E0CE0187DF42E01A -S113063061E0CE0183DF40E062E08A819B8170D279 -S113064040E062E08A819B813ED281E08983DF9130 -S1130650CF911F910F910895CE0147DF898188833F -S113066063E080E045DD019719F682E08983C0CF1D -S1130670CF93DF93EC018C81813031F1D0F08E3F48 -S113068069F08F3F39F44EE1BE016C5F7F4F80E229 -S113069090E00DDD1982DF91CF9108954EE1BE0106 -S11306A06C5F7F4F80E090E002DD1982DF91CF9193 -S11306B008954EE1BE016C5F7F4F80E090E0D6DC90 -S11306C01982DF91CF9108954EE1BE016C5F7F4F97 -S11306D080E290E0CBDC1982DF91CF910895DC01B8 -S11306E014962EE1FB0101900D922A95E1F7C0DFEB -S11306F080E090E008950F931F93CF93DF936115EB -S1130700710511F1009701F1EC01198218826A83D5 -S11307107B836FE673E0DBDE6DE072E0CE0118DE12 -S11307208E010C5F1F4F4EE1B80180E090E0BFDC0A -S1130730F8019E012E5D3F4F03C0E217F30749F015 -S1130740919191509E3FC8F7DF91CF911F910F91E6 -S113075008951C8283E49DE0A0E0B0E08D839E8335 -S1130760AF83B88786EF9CE2A0E0B0E089879A87E0 -S1130770AB87BC878BE598E4A0E1B0E08D879E87CA -S1130780AF87B88B82E190E0A0E0B0E0898B9A8BD0 -S1130790AB8BBC8B1D8A1E8A1F8A188E81E090E069 -S11307A0A0E0B0E0898F9A8FAB8FBC8F80E498E78C -S11307B0ADE7B1E08E8F9F8FA8A3B9A34EE1B80136 -S11307C080E090E053DC4EE1B80180E290E0DF91FC -S11307D0CF911F910F914ACCCF93DF93CDB7DEB762 -S11307E0CB55D109CDBFDEBF80E090E014DD40E6FB -S11307F060E070E0CE01875A9F4F27DD49E451E065 -S1130800BE01675A7F4FCE01019605D2BE016F5FCC -S11308107F4F86E49FE36FDF86E49FE3CBDEFCCF6C -S11308204F925F926F927F929F92AF92BF92CF92BC -S1130830DF92EF92FF920F931F93CF93DF93EC011C -S11308406B01942E590127013801C701019679D211 -S1130850F82E192FDC019D92CD01A201B50192D38E -S1130860A30192012F5F3F4F4F4F5F4FD601ED9190 -S1130870FC9101E06F2D712F8881998109958F2D4D -S1130880912FF7D280E090E0DF91CF911F910F91EB -S1130890FF90EF90DF90CF90BF90AF909F907F90AC -S11308A06F905F904F900895AF92BF92CF92DF9276 -S11308B0EF92FF920F931F93CF93DF93EC01662384 -S11308C009F448C0613009F16C0182E0C80ED11C02 -S11308D09E01295A3F4FF90180818062806880839C -S11308E0E12CF12C8701E39441EBB601CE0198DFB2 -S11308F080E090E0DF91CF911F910F91FF90EF90F6 -S1130900DF90CF90BF90AF90089542708E8D8C7F12 -S1130910482B4E8F3F8F28A3D801C70188279927DA -S1130920AF70BB27FAA2EBA28A2F8F7089A3BC8E6B -S1130930AD8E6E01F2E0CF0ED11C18E0E12EF12C49 -S113094000E010E09E01245E3F4F42E2B601CE017A -S113095067DFBECF42708E898C7F482B4E8B3F8BD6 -S1130960288FD801C70188279927AF70BB27FA8E33 -S1130970EB8E8A2F8F70898FBC8AAD8A6E01E2E07C -S1130980CE0ED11C18E0E12EF12C00E010E09E0107 -S11309902C5E3F4F4AE1B601CE0142DF99CFAF92C0 -S11309A0BF92CF92DF92EF92FF920F931F93FC01BD -S11309B0613009F45FC0A8F1623041F5437056A973 -S11309C0507837AB20AFF2AEE3AED601C5012CE0D0 -S11309D0B695A795979587952A95D1F783708295B3 -S11309E0807F0370082B01AFB4AAA5AA452B46ABA0 -S11309F09F012C5C3F4FBF016E5F7F4F18E0E12EDB -S1130A00F12C00E010E04AE3CF010ADF80E090E03F -S1130A101F910F91FF90EF90DF90CF90BF90AF9018 -S1130A200895437056A1507837A320A7F2A6E3A6F1 -S1130A30D601C5011CE0B695A795979587951A959B -S1130A40D1F783708295807F0370802B81A7B4A235 -S1130A50A5A2452B46A39F012C5D3F4FBF016E5FAE -S1130A607F4F18E0E12EF12C00E010E04AE2CF01C4 -S1130A70D7DECCCF437056A5507837A720ABF2AA67 -S1130A80E3AAD601C5016CE0B695A795979587951D -S1130A906A95D1F783708295807F0370802B81AB38 -S1130AA0B4A6A5A6452B46A79F01245D3F4FBF01D1 -S1130AB06E5F7F4F18E0E12EF12C00E010E042E37E -S1130AC0CF01AEDEA3CFEF92FF920F931F9361305D -S1130AD009F1D0F0623029F4FC01278140FB22F9AE -S1130AE027839C01295F3F4FBC016E5F7F4FE12C40 -S1130AF0F12C8701E39443E093DE80E090E01F91C2 -S1130B000F91FF90EF900895FC01278140FB20F99D -S1130B102783E7CFFC01278140FB21F92783E1CF1D -S1130B20EF92FF920F931F936130B9F1E0F06230BE -S1130B3099F4FC01248540FB27F923792366248753 -S1130B409C01245F3F4FBC016E5F7F4FE12CF12C71 -S1130B508701E39442E164DE80E090E01F910F910D -S1130B60FF90EF900895FC01228540FB27F920793E -S1130B702F6422879C01265F3F4FBC016E5F7F4F2D -S1130B80E12CF12C8701E39440E14ADE80E090E01F -S1130B901F910F91FF90EF900895FC01238540FB76 -S1130BA027F92F6623879C01255F3F4FBC016E5FA9 -S1130BB07F4FE12CF12C8701E39441E131DE80E0A9 -S1130BC090E01F910F91FF90EF900895EF92FF92A4 -S1130BD00F931F936623C9F0613021F4FC01218532 -S1130BE0246021879C01275F3F4FBC016E5F7F4FCC -S1130BF0E12CF12C8701E39440EF12DE80E090E0D9 -S1130C001F910F91FF90EF900895FC0121852B7F98 -S1130C10277F2187E7CFAF92BF92CF92DF92EF92E7 -S1130C20FF920F931F93CF93DF931F92CDB7DEB73D -S1130C30009709F483C06115710509F47FC041155B -S1130C40510509F47BC06C01DC016D937C93119711 -S1130C5012964D935C931397FC01349684E5DF015F -S1130C601D928A95E9F78FEF89835601B2E0AB0EA6 -S1130C70B11CE12CF12C8701E3949E012F5F3F4FBF -S1130C8043E0B501C601CCDD80E889839E012F5F76 -S1130C903F4F40E1B501C601C3DD9E012F5F3F4FC9 -S1130CA041E1B501C601BCDD9E012F5F3F4F42E12A -S1130CB0B501C601B5DD9E012F5F3F4F43E1B5018C -S1130CC0C601AEDD9E012F5F3F4F44E1B501C60171 -S1130CD0A7DD9E012F5F3F4F45E1B501C601A0DDB1 -S1130CE09E012F5F3F4F46E1B501C60199DD9E018C -S1130CF02F5F3F4F47E1B501C60192DD80EC898348 -S1130D009E012F5F3F4F47EBB501C60189DD80E4AB -S1130D1089839E012F5F3F4F4BEBB501C60180DDF8 -S1130D2080E090E00F90DF91CF911F910F91FF90A1 -S1130D30EF90DF90CF90BF90AF9008958FEF9FEF2B -S1130D40F1CF0F931F93CF93DF938230910510F46B -S1130D5082E090E0E0916A3FF0916B3F20E030E068 -S1130D60A0E0B0E0309719F14081518102811381F4 -S1130D7048175907C8F08417950769F4109731F09C -S1130D8012960C93129713961C9327C000936A3FF4 -S1130D9010936B3F22C02115310519F042175307F8 -S1130DA018F49A01BD01EF01DF01F801DBCF211531 -S1130DB03105F9F0281B390B2430310580F48A8180 -S1130DC09B816115710521F0FB018283938304C02B -S1130DD080936A3F90936B3FFE01329644C0FE01BC -S1130DE0E20FF31F819391932250310928833983B1 -S1130DF03AC02091683F3091693F232B41F4209100 -S1130E00023F3091033F2093683F3093693F209124 -S1130E10003F3091013F2115310541F42DB73EB714 -S1130E204091043F5091053F241B350BE091683FEE -S1130E30F091693FE217F307A0F42E1B3F0B28172C -S1130E40390778F0AC014E5F5F4F2417350748F03F -S1130E504E0F5F1F4093683F5093693F8193919376 -S1130E6002C0E0E0F0E0CF01DF91CF911F910F913C -S1130E700895CF93DF93009709F481C0FC01329762 -S1130E8012821382A0916A3FB0916B3F109781F454 -S1130E9020813181820F931F2091683F3091693FF7 -S1130EA02817390751F5E093683FF093693F67C00D -S1130EB0ED0120E030E0CE17DF0740F44A815B818A -S1130EC09E0141155105F1F0EA01F5CFC283D383A8 -S1130ED040815181840F951FC817D90759F488811F -S1130EE09981840F951F0296808391838A819B81C7 -S1130EF0828393832115310529F4E0936A3FF093AB -S1130F006B3F3DC0E901EA83FB8349915991C40FCA -S1130F10D51FEC17FD0761F480819181840F951F23 -S1130F200296E90188839983828193818A839B83D2 -S1130F30E0E0F0E012968D919C911397009719F0E0 -S1130F40FD01DC01F7CF8D919C9111979D012E5FDE -S1130F503F4F820F931F2091683F3091693F2817BC -S1130F60390769F4309729F410926A3F10926B3F65 -S1130F7002C012821382A093683FB093693FDF914D -S1130F80CF910895FB01DC0102C001900D92415004 -S1130F905040D8F7089503D0808199270895FC0123 -S1130FA0E050FC4E0895262FAF93BF93E0E0F0E1AC -S1130FB0328131FDFDCFDC01A050BC4E2C932DE9D4 -S1130FC024BF23E020830196BF91AF910895F89444 -S1050FD0FFCF4D -S1090FD200006C3F20004A +S11300402FE3A6E0BFE301C01D92AA38B207E1F78F +S11300501FE3A0E0BFE3E6E6FFE002C005900D92D7 +S1130060A630B107D9F7F0D37CC7CACFEF92FF927D +S11300700F931F93CF93DF934423A1F08B01C82FD9 +S1130080D92F4150E42EF12C8FEFE81AF80AE60E2E +S1130090F71EF80161918F01CE014FD721960E15FD +S11300A01F05B9F7DF91CF911F910F91FF90EF904A +S11300B00895EF92FF920F931F93CF93DF934423FE +S11300C0A1F0C82FD92F8B014150E42EF12C8FEFD2 +S11300D0E81AF80AE60EF71ECE0127D7F801819335 +S11300E08F012196EE15FF05B9F7DF91CF911F918E +S11300F00F91FF90EF90089581110BC08091080437 +S113010090E002C0959587956A95E2F781709927EA +S1130110089580E090E0089580931708E0E1F8E006 +S11301208581807CE9F390911508892F807194FF73 +S113013004C083E08093140881E00895CF92DF9295 +S1130140EF92FF92CF93DF93D62FC72F69017A01E5 +S1130150E0E1F8E0958193709130E1F7C114D104A6 +S1130160E104F10489F1D8DF811131C0AD2FBC2F36 +S1130170E0E1F8E08D918087858186FFFDCF858160 +S113018084FF06C083E08093140881E090E021C0DE +S113019085818C7051F0E0E1F8E08481886084838B +S11301A081E0858381E090E014C0858184FD06C0F0 +S11301B081E0C81AD108E108F108E1F683E08093F0 +S11301C0140880E090E005C08FEF9FEF02C08FEF2E +S11301D09FEFDF91CF91FF90EF90DF90CF90089544 +S11301E0CF92DF92EF92FF92CF93DF93E0E1F8E0BA +S11301F0958193709130E1F7211531054105510541 +S113020011F169017A01C72FD62F816085DF882318 +S113021001F11CC08581807CE9F380858D934115B3 +S113022051056105710549F4E0E1F8E084E0848357 +S113023083E0848380E090E018C0948341505109A6 +S113024061097109E7CF81E090E00FC08FEF9FEF64 +S11302500CC0B701A6014150510961097109AD2FC4 +S1130260BC2FE0E1F8E092E0D5CFDF91CF91FF9091 +S1130270EF90DF90CF900895E0E1F8E095819370DE +S11302809130E1F780931708E0E1F8E0858186FF7B +S1130290FDCF8091150884FF06C083E08093140885 +S11302A081E090E0089583E08093140880E090E07A +S11302B00895E0E0F4E080818B7F80838081877FF4 +S11302C08083A0E1B8E08BE016968C93169781E0CA +S11302D013968C93139715968C9388E0828B838B5B +S11302E080E090E00895EF92FF920F931F93CF93D5 +S11302F08C017B01C42F842F880FBEDF009749F443 +S1130300F801E082F1824C2F50E0440F551F4283E4 +S113031002C08EEF9FEFCF911F910F91FF90EF904E +S113032008950F93009781F0FC01002319F0013028 +S113033031F00DC0828154DF80E090E00AC08281F8 +S1130340FDDE80E090E005C08FEF9FEF02C080E00B +S113035090E00F9108951F920F920FB60F921124FF +S11303602F933F934F935F936F937F938F939F93B9 +S1130370AF93BF93EF93FF93CF93DF931F92CDB7C8 +S1130380DEB7E091063FF091073F309721F080916E +S11303900008099503C08091000889830F90DF91BC +S11303A0CF91FF91EF91BF91AF919F918F917F91E9 +S11303B06F915F914F913F912F910F900FBE0F90CE +S11303C01F901895CF93DF931F92CDB7DEB7AC0182 +S11303D0F894E0E0F8E02CE635E02087318793E0FC +S11303E0978390EC96836115710511F4452B39F0D0 +S11303F080E8809305086093063F7093073F8091DF +S11304000408882324F48091000889838981E0E02A +S1130410F4E080E4818380E8828378940F90DF9114 +S1130420CF9108959091413F9230F1F028F49923AF +S113043041F0913079F031C0933001F1943041F1C1 +S11304402CC091E08F3409F090E09093413F81E01B +S113045090E008958A3511F080E001C082E0809335 +S1130460413F81E090E00895813311F080E001C0C4 +S113047083E08093413F81E090E00895833411F05C +S113048080E001C084E08093413F81E090E00895E2 +S11304901092413F80E090E008951092413F81E046 +S11304A090E008959091403F9330D1F028F499233F +S11304B041F0913079F047C09430D1F0953029F172 +S11304C042C0B0DF892B19F481E08093403F109241 +S11304D03F3F39C08093083F83E08093403F33C05F +S11304E0E8E0FFE31182828384E08093403F2BC0E5 +S11304F0E8E0FFE321813281A901482BCA0181830D +S1130500928385E08093403F1EC090913F3FE92F46 +S1130510F0E0E85FF04C838381E0890F80933F3FF4 +S11305209091083F891778F0E091443FF091453F5E +S11305306BE07FE38091423F9091433F0995109295 +S1130540403F10923F3F80E090E00895009759F0BB +S11305506115710541F08093423F9093433F60934E +S1130560443F7093453F0895CF93DF93FC0182810C +S113057093810097E9F03097D9F0218130812317D6 +S1130580B9F0EF01213019F0223051F011C040E0F0 +S113059060E00ED241E061E08A819B8109D208C00B +S11305A041E060E005D240E061E08A819B8100D2B5 +S11305B0DF91CF9108959F92AF92BF92CF92DF9235 +S11305C0EF92FF920F931F93CF93DF93EC01942E3E +S11305D0AD84BE84CF84D888E984FA840B851C85D5 +S11305E02D813E814F8158858A819B817DD2A98C42 +S11305F0BA8CCB8CDC8CED88FE880F89188D298908 +S11306003A894B895C89692D8A819B817BD140E041 +S1130610692D8A819B81F3D1DF91CF911F910F9135 +S1130620FF90EF90DF90CF90BF90AF909F90089590 +S1130630FB012081222319F0213051F011C0DC018B +S113064014968EE1FB0101900D928A95E1F708C0A2 +S1130650DC0192968EE1FB0101900D928A95E1F7FF +S113066080E090E008950F931F93CF93DF93FC01F4 +S113067022813381232B09F44DC0009709F44AC029 +S1130680EC018181813079F118F08230C1F142C0EE +S113069010828F010C5F1F4F4EE1B80180E090E0A3 +S11306A008DD60E08A819B81DED140E060E0CE011C +S11306B082DF4EE1B80180E290E0FBDC41E061E0E2 +S11306C0CE0179DF42E061E0CE0175DF40E062E017 +S11306D08A819B8194D140E062E08A819B8168D1C8 +S11306E081E0898317C0CF013FDF8981888363E07C +S11306F080E002DD019771F482E089830BC0CF01B1 +S113070033DF8981888363E080E0F6DC892B11F490 +S113071081E08983DF91CF911F910F9108950F9309 +S11307201F93CF93DF936115710509F488C0009777 +S113073009F485C0EC01198218826A837B8368E11D +S113074073E004DF62E572E0CE013CDE8E010E5DF3 +S11307501F4F4EE1B80180E090E0ABDC8AA18150EC +S11307608E3F08F066C06BC0919191509E3F08F493 +S113077066C02E173F07C1F783E49DE0A0E0B0E018 +S11307808D839E83AF83B8878BA39CA3ADA3BEA3A5 +S113079086EF9CE2A0E0B0E089879A87AB87BC87AC +S11307A08FA398A7A9A7BAA78BE598E4A0E1B0E026 +S11307B08D879E87AF87B88B8BA79CA7ADA7BEA755 +S11307C082E190E0A0E0B0E0898B9A8BAB8BBC8B8C +S11307D08FA798ABA9ABBAAB1D8A1E8A1F8A188E45 +S11307E01BAA1CAA1DAA1EAA81E090E0A0E0B0E00A +S11307F0898F9A8FAB8FBC8F8FAB98AFA9AFBAAFED +S113080080E498E7ADE7B1E08E8F9F8FA8A3B9A3EA +S11308108CAF9DAFAEAFBFAFBE016C5F7F4F4EE1FB +S113082080E090E023DC4EE1B80180E290E01EDC41 +S113083006C0FE01B3969E01205C3F4F95CFDF9129 +S1130840CF911F910F910895CF93DF93CDB7DEB76A +S1130850A297CDBFDEBF80E090E02BDD40E660E0F4 +S113086070E0CE0101963FDD41E951E0BE016F5FCA +S11308707F4FCE01049682D1BE016C5F7F4F86E428 +S11308809FE34DDF86E49FE3EEDEFCCF8F929F92E1 +S1130890AF92BF92CF92DF92EF92FF920F931F938A +S11308A0CF93DF93EC01862E5A0168017901C801C8 +S11308B0019611D2982E192FFC018192CF01A60125 +S11308C0B5012AD3A70196012F5F3F4F4F4F5F4FCA +S11308D0EA81FB8101E0692D712F88819981099555 +S11308E0892D912F90D280E090E0DF91CF911F91DC +S11308F00F91FF90EF90DF90CF90BF90AF909F90BB +S11309008F900895AF92BF92CF92DF92EF92FF92B1 +S11309100F931F93FC01437056895078378B208FB7 +S1130920F28EE38ED601C501072E7CE0B695A7951D +S1130930979587957A95D1F7702D83708295807FEE +S11309400370802B818FB48AA58A452B468B613036 +S113095079F018F06230B9F020C0AF014C5E5F4FFF +S113096008E010E020E030E06AE2CF018FDF15C03C +S1130970AF014C5E5F4F08E010E020E030E062E33E +S1130980CF0184DF0AC0AF014C5E5F4F08E010E086 +S113099020E030E06AE3CF0179DF80E090E01F914E +S11309A00F91FF90EF90DF90CF90BF90AF9008959C +S11309B00F931F93613051F018F0623069F011C049 +S11309C0FC01278140FB20F927830BC0FC01278110 +S11309D040FB21F9278305C0FC01278140FB22F954 +S11309E02783AC01495F5F4F01E010E020E030E075 +S11309F063E04CDF80E090E01F910F9108950F9326 +S1130A001F93FC01928540FB97F990799F6492872C +S1130A10613079F018F06230B9F020C0AF01465F60 +S1130A205F4F01E010E020E030E060E1CF012EDF15 +S1130A3015C0AF01465F5F4F01E010E020E030E0F9 +S1130A4061E1CF0123DF0AC0AF01465F5F4F01E0E0 +S1130A5010E020E030E062E1CF0118DF80E090E0B8 +S1130A601F910F9108950F931F93662319F061301E +S1130A7039F00AC0FC0121852B7F277F218704C020 +S1130A80FC01218524602187AC01475F5F4F01E0B1 +S1130A9010E020E030E060EFF9DE80E090E01F91AC +S1130AA00F9108950F931F9331E0611101C030E05D +S1130AB0FC01268D30FB25F9268F31E0411101C060 +S1130AC030E0FC01268D30FB27F9268FAC01425E15 +S1130AD05F4F01E010E020E030E061EBD7DE80E022 +S1130AE090E01F910F910895AF92BF92CF92DF9241 +S1130AF0EF92FF920F931F93CF93DF93EC01427019 +S1130B008E858C7F482B4E873F87288BD801C70161 +S1130B1088279927AF70BB27FA8AEB8A8A2F8F70B0 +S1130B20898BBC86AD86662319F0613061F015C0EF +S1130B3008E010E020E030E0AE01445F5F4F6AE17E +S1130B40CE01A4DE0AC008E010E020E030E0AE01EF +S1130B50445F5F4F62E2CE0199DE41E061E0CE0185 +S1130B60A1DF80E090E0DF91CF911F910F91FF9082 +S1130B70EF90DF90CF90BF90AF900895EF92FF92E7 +S1130B800F931F93CF93DF931F92CDB7DEB70097D8 +S1130B9009F491C06115710509F490C0411551051E +S1130BA009F48FC07C01DC016D937C93119712963C +S1130BB04D935C931397FC0134968BE1DF011D92F6 +S1130BC08A95E9F78FEF898301E010E020E030E0B7 +S1130BD0AE014F5F5F4F63E0C70158DE80E8898351 +S1130BE001E010E020E030E0AE014F5F5F4F60E1D4 +S1130BF0C7014CDE01E010E020E030E0AE014F5FC1 +S1130C005F4F61E1C70142DE01E010E020E030E027 +S1130C10AE014F5F5F4F62E1C70138DE01E010E0D3 +S1130C2020E030E0AE014F5F5F4F63E1C7012EDE8D +S1130C3001E010E020E030E0AE014F5F5F4F64E17F +S1130C40C70124DE01E010E020E030E0AE014F5F98 +S1130C505F4F65E1C7011ADE01E010E020E030E0FB +S1130C60AE014F5F5F4F66E1C70110DE01E010E0A7 +S1130C7020E030E0AE014F5F5F4F67E1C70106DE61 +S1130C8080EC898301E010E020E030E0AE014F5FAA +S1130C905F4F67EBC701FADD80E4898301E010E070 +S1130CA020E030E0AE014F5F5F4F6BEBC701EEDD3C +S1130CB080E090E008C08FEF9FEF05C08FEF9FEFBB +S1130CC002C08FEF9FEF0F90DF91CF911F910F9193 +S1130CD0FF90EF9008950F931F93CF93DF9382308B +S1130CE0910510F482E090E0E091883FF091893F13 +S1130CF020E030E0A0E0B0E0309719F1408151816C +S1130D000281138148175907C8F08417950769F4BD +S1130D10109731F012960C93129713961C9327C0D8 +S1130D200093883F1093893F22C02115310519F0A3 +S1130D304217530718F49A01BD01EF01DF01F801CE +S1130D40DBCF21153105F9F0281B390B243031058F +S1130D5080F48A819B816115710521F0FB018283F6 +S1130D60938304C08093883F9093893FFE01329619 +S1130D7044C0FE01E20FF31F819391932250310985 +S1130D80288339833AC02091863F3091873F232BB3 +S1130D9041F42091023F3091033F2093863F3093EA +S1130DA0873F2091003F3091013F2115310541F4E7 +S1130DB02DB73EB74091043F5091053F241B350B9E +S1130DC0E091863FF091873FE217F307A0F42E1BD2 +S1130DD03F0B2817390778F0AC014E5F5F4F24179B +S1130DE0350748F04E0F5F1F4093863F5093873F6F +S1130DF08193919302C0E0E0F0E0CF01DF91CF91C5 +S1130E001F910F910895CF93DF93009709F481C048 +S1130E10FC01329712821382A091883FB091893FDE +S1130E20109781F420813181820F931F2091863F96 +S1130E303091873F2817390751F5E093863FF093A7 +S1130E40873F67C0ED0120E030E0CE17DF0740F4B4 +S1130E504A815B819E0141155105F1F0EA01F5CF0C +S1130E60C283D38340815181840F951FC817D9074A +S1130E7059F488819981840F951F02968083918308 +S1130E808A819B81828393832115310529F4E09320 +S1130E90883FF093893F3DC0E901EA83FB83499190 +S1130EA05991C40FD51FEC17FD0761F4808191811E +S1130EB0840F951F0296E901888399838281938127 +S1130EC08A839B83E0E0F0E012968D919C911397C6 +S1130ED0009719F0FD01DC01F7CF8D919C911197DA +S1130EE09D012E5F3F4F820F931F2091863F3091CB +S1130EF0873F2817390769F4309729F41092883FFF +S1130F001092893F02C012821382A093863FB0934D +S1130F10873FDF91CF910895FB01DC0102C001906E +S1130F200D9241505040D8F7089503D080819927FD +S1130F300895FC01E050FC4E0895262FAF93BF9313 +S1130F40E0E0F0E1328131FDFDCFDC01A050BC4E88 +S1130F502C932DE924BF23E020830196BF91AF9108 +S1090F600895F894FFCF90 +S1090F6600008A3F200098 S9030000FC diff --git a/storno_cqp6xx_digital_xtal/cqm6xx_app.c b/storno_cqp6xx_digital_xtal/cqm6xx_app.c index 357a245..55f82ce 100644 --- a/storno_cqp6xx_digital_xtal/cqm6xx_app.c +++ b/storno_cqp6xx_digital_xtal/cqm6xx_app.c @@ -60,9 +60,9 @@ static void cqm6xx_app_updateOsc(storno_xtal_app_t *inst){ static void cqm_setPLLParam(storno_xtal_app_t *inst, si5351_PLLs pll_num, si5351_Outputs output){ - 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); + cm_setPllParamRaw(inst->si5351_dev,pll_num, inst->plla_param_data.MSNx_P1, inst->plla_param_data.MSNx_P2, inst->plla_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); + cm_setOutputMultiSynthRaw(inst->si5351_dev,output, inst->plla_param_data.MSx_P1, inst->plla_param_data.MSx_P2, inst->plla_param_data.MSx_P3); //_delay_ms(1); cm_setCLKControl(inst->si5351_dev,output,SI5351_CLK_POWER_UP); @@ -71,7 +71,7 @@ static void cqm_setPLLParam(storno_xtal_app_t *inst, si5351_PLLs pll_num, si5351 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)); + cm_EEPROM_read((uint8_t*)PLLA_SETTINGS_EEPROM_ADDR,(uint8_t *)&inst->plla_param_data,sizeof(storno_pll_param_msg)); //_delay_ms(1); cm_setInputSource(inst->si5351_dev, SI5351_CLK_SOURCE_XTAL); //_delay_ms(1); @@ -81,7 +81,7 @@ static void cqm6xx_app_loadPLLParam(storno_xtal_app_t *inst){ //_delay_ms(1); - cm_EEPROM_read((uint8_t*)PLLB_SETTINGS_EEPROM_ADDR,(uint8_t *)&inst->pll_param_data,sizeof(storno_pll_param_msg)); + cm_EEPROM_read((uint8_t*)PLLB_SETTINGS_EEPROM_ADDR,(uint8_t *)&inst->plla_param_data,sizeof(storno_pll_param_msg)); //_delay_ms(1); cqm_setPLLParam(inst, SI5351_PLL_B, SI5351_OUTPUT_1); @@ -153,25 +153,25 @@ 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; + //uint8_t *data_ptr = (void *)&inst->plla_param_data; //Burn settings into eeprom here: - switch(inst->pll_param_data.PLL_Ident){ + switch(inst->plla_param_data.header.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)); + cm_EEPROM_write((uint8_t*)PLLA_SETTINGS_EEPROM_ADDR,(uint8_t*)&(inst->plla_param_data), sizeof(storno_pll_param_msg)); 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)); + cm_EEPROM_write((uint8_t*)PLLB_SETTINGS_EEPROM_ADDR,(uint8_t*)&(inst->pllb_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)); + cm_EEPROM_read((uint8_t*)PLLA_SETTINGS_EEPROM_ADDR,(uint8_t *)&inst->plla_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)); + cm_EEPROM_read((uint8_t*)PLLB_SETTINGS_EEPROM_ADDR,(uint8_t *)&inst->pllb_param_data,sizeof(storno_pll_param_msg)); break; default: @@ -180,7 +180,7 @@ void programPLL_Parameters(storno_xtal_app_t *inst){ } - if((inst->pll_param_data.PLL_Ident == MSG_GET_PLLA_PARAM) && (inst->pll_param_data.PLL_Ident == MSG_GET_PLLB_PARAM)){ + /*if((inst->plla_param_data.PLL_Ident == MSG_GET_PLLA_PARAM) && (inst->plla_param_data.PLL_Ident == MSG_GET_PLLB_PARAM)){ cm_uart_send('O'); cm_uart_send('Z'); @@ -192,7 +192,7 @@ void programPLL_Parameters(storno_xtal_app_t *inst){ for(uint8_t idx = 0; idx < sizeof(storno_pll_param_msg);idx++){ cm_uart_send(data_ptr[idx]); } - } + }*/ // Send status back maybe.. @@ -204,28 +204,28 @@ void programPLL_Parameters(storno_xtal_app_t *inst){ static int writeDefaultSettingsEEprom(storno_xtal_app_t *inst){ - inst->pll_param_data.PLL_Ident = 0; - inst->pll_param_data.MSNx_P1 = 3395; - inst->pll_param_data.MSNx_P2 = 11510; - inst->pll_param_data.MSNx_P3 = 1067099; + //inst->pllb_param_data.PLL_Ident = inst->plla_param_data.PLL_Ident = 0; + inst->pllb_param_data.MSNx_P1 = inst->plla_param_data.MSNx_P1 = 3395; + inst->pllb_param_data.MSNx_P2 = inst->plla_param_data.MSNx_P2 = 11510; + inst->pllb_param_data.MSNx_P3 = inst->plla_param_data.MSNx_P3 = 1067099; - 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; + inst->pllb_param_data.MSx_P1 = inst->plla_param_data.MSx_P1 = 18; + inst->pllb_param_data.MSx_P2 = inst->plla_param_data.MSx_P2 = 0; + inst->pllb_param_data.MSx_P3 = inst->plla_param_data.MSx_P3 = 1; + inst->pllb_param_data.XtalFreq = inst->plla_param_data.XtalFreq = 25000000; - cm_EEPROM_write((uint8_t*)PLLA_SETTINGS_EEPROM_ADDR,(uint8_t*)&(inst->pll_param_data), sizeof(storno_pll_param_msg)); + cm_EEPROM_write((uint8_t*)PLLA_SETTINGS_EEPROM_ADDR,(uint8_t*)&(inst->plla_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)); + cm_EEPROM_write((uint8_t*)PLLB_SETTINGS_EEPROM_ADDR,(uint8_t*)&(inst->pllb_param_data), sizeof(storno_pll_param_msg)); return 0; } 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)); + cm_EEPROM_read((uint8_t*)PLLA_SETTINGS_EEPROM_ADDR,(uint8_t *)&inst->pllb_param_data,sizeof(storno_pll_param_msg)); - uint8_t *ptr = (void*)&inst->pll_param_data; + uint8_t *ptr = (void*)&inst->pllb_param_data; for (uint32_t idx = 0; idx < sizeof(storno_pll_param_msg); idx++ ) { @@ -243,10 +243,19 @@ static int isEEPROMValid(storno_xtal_app_t *inst){ int uart_rx_event(storno_xtal_app_t *inst, void *rxData){ + storno_pll_param_msg_header *msg = rxData; - memcpy(&inst->pll_param_data,rxData,sizeof(storno_pll_param_msg)); - - programPLL_Parameters(inst); + switch (msg->PLL_Ident){ + + case MSG_PLLA_PARAM: + memcpy(&inst->plla_param_data,rxData,sizeof(storno_pll_param_msg)); + break; + + case MSG_PLLB_PARAM: + memcpy(&inst->pllb_param_data,rxData,sizeof(storno_pll_param_msg)); + break; + + } return 0; diff --git a/storno_cqp6xx_digital_xtal/cqm6xx_app.h b/storno_cqp6xx_digital_xtal/cqm6xx_app.h index ef8b08e..eee3a76 100644 --- a/storno_cqp6xx_digital_xtal/cqm6xx_app.h +++ b/storno_cqp6xx_digital_xtal/cqm6xx_app.h @@ -19,10 +19,16 @@ enum{ MSG_GET_PLLB_PARAM = 255, }; + + typedef struct { + + uint8_t PLL_Ident; + + }__attribute__((packed))storno_pll_param_msg_header; typedef struct { - uint8_t PLL_Ident; + storno_pll_param_msg_header header; uint32_t MSNx_P1; uint32_t MSNx_P2; @@ -54,7 +60,8 @@ typedef struct { storno_app_states state_next; void *si5351_dev; - storno_pll_param_msg pll_param_data; + storno_pll_param_msg plla_param_data; + storno_pll_param_msg pllb_param_data; diff --git a/storno_cqp6xx_digital_xtal/si5351_driver b/storno_cqp6xx_digital_xtal/si5351_driver index 78e4f5f..a01bd85 160000 --- a/storno_cqp6xx_digital_xtal/si5351_driver +++ b/storno_cqp6xx_digital_xtal/si5351_driver @@ -1 +1 @@ -Subproject commit 78e4f5f73e53641c116b802b28a80ddd2da17ca3 +Subproject commit a01bd85b6fc4faee724427b3d27d1ffcdfa63d23 diff --git a/storno_cqp6xx_digital_xtal/storno_cqp6xx_digital_xtal.cproj b/storno_cqp6xx_digital_xtal/storno_cqp6xx_digital_xtal.cproj index c629999..276f558 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 (-O1) True True Default (-g2) @@ -189,10 +189,10 @@ compile - + compile - + compile @@ -206,7 +206,6 @@ -