diff --git a/storno_cqp6xx_digital_xtal/Debug/Makefile b/storno_cqp6xx_digital_xtal/Debug/Makefile index 2f28179..64661ba 100644 --- a/storno_cqp6xx_digital_xtal/Debug/Makefile +++ b/storno_cqp6xx_digital_xtal/Debug/Makefile @@ -117,56 +117,56 @@ LINKER_SCRIPT_DEP+= avr_eeprom_driver/avr_eeprom_driver.o: ../avr_eeprom_driver/avr_eeprom_driver.c @echo Building file: $< @echo Invoking: AVR/GNU C Compiler : 5.4.0 - $(QUOTE)C:\Program Files (x86)\Atmel\Studio\7.0\toolchain\avr8\avr8-gnu-toolchain\bin\avr-gcc.exe$(QUOTE) -x c -funsigned-char -funsigned-bitfields -DDEBUG -I"C:\Program Files (x86)\Atmel\Studio\7.0\Packs\atmel\ATtiny_DFP\1.10.348\include" -Og -ffunction-sections -fdata-sections -fpack-struct -fshort-enums -g2 -Wall -mmcu=attiny402 -B "C:\Program Files (x86)\Atmel\Studio\7.0\Packs\atmel\ATtiny_DFP\1.10.348\gcc\dev\attiny402" -c -std=gnu99 -MD -MP -MF "$(@:%.o=%.d)" -MT"$(@:%.o=%.d)" -MT"$(@:%.o=%.o)" -o "$@" "$<" + $(QUOTE)C:\Program Files (x86)\Atmel\Studio\7.0\toolchain\avr8\avr8-gnu-toolchain\bin\avr-gcc.exe$(QUOTE) -x c -funsigned-char -funsigned-bitfields -DDEBUG -I"C:\Program Files (x86)\Atmel\Studio\7.0\Packs\atmel\ATtiny_DFP\1.10.348\include" -O2 -ffunction-sections -fdata-sections -fpack-struct -fshort-enums -g2 -Wall -mmcu=attiny402 -B "C:\Program Files (x86)\Atmel\Studio\7.0\Packs\atmel\ATtiny_DFP\1.10.348\gcc\dev\attiny402" -c -std=gnu99 -MD -MP -MF "$(@:%.o=%.d)" -MT"$(@:%.o=%.d)" -MT"$(@:%.o=%.o)" -o "$@" "$<" @echo Finished building: $< avr_gpio_driver/avr_gpio.o: ../avr_gpio_driver/avr_gpio.c @echo Building file: $< @echo Invoking: AVR/GNU C Compiler : 5.4.0 - $(QUOTE)C:\Program Files (x86)\Atmel\Studio\7.0\toolchain\avr8\avr8-gnu-toolchain\bin\avr-gcc.exe$(QUOTE) -x c -funsigned-char -funsigned-bitfields -DDEBUG -I"C:\Program Files (x86)\Atmel\Studio\7.0\Packs\atmel\ATtiny_DFP\1.10.348\include" -Og -ffunction-sections -fdata-sections -fpack-struct -fshort-enums -g2 -Wall -mmcu=attiny402 -B "C:\Program Files (x86)\Atmel\Studio\7.0\Packs\atmel\ATtiny_DFP\1.10.348\gcc\dev\attiny402" -c -std=gnu99 -MD -MP -MF "$(@:%.o=%.d)" -MT"$(@:%.o=%.d)" -MT"$(@:%.o=%.o)" -o "$@" "$<" + $(QUOTE)C:\Program Files (x86)\Atmel\Studio\7.0\toolchain\avr8\avr8-gnu-toolchain\bin\avr-gcc.exe$(QUOTE) -x c -funsigned-char -funsigned-bitfields -DDEBUG -I"C:\Program Files (x86)\Atmel\Studio\7.0\Packs\atmel\ATtiny_DFP\1.10.348\include" -O2 -ffunction-sections -fdata-sections -fpack-struct -fshort-enums -g2 -Wall -mmcu=attiny402 -B "C:\Program Files (x86)\Atmel\Studio\7.0\Packs\atmel\ATtiny_DFP\1.10.348\gcc\dev\attiny402" -c -std=gnu99 -MD -MP -MF "$(@:%.o=%.d)" -MT"$(@:%.o=%.d)" -MT"$(@:%.o=%.o)" -o "$@" "$<" @echo Finished building: $< avr_i2c_driver/avr_i2c.o: ../avr_i2c_driver/avr_i2c.c @echo Building file: $< @echo Invoking: AVR/GNU C Compiler : 5.4.0 - $(QUOTE)C:\Program Files (x86)\Atmel\Studio\7.0\toolchain\avr8\avr8-gnu-toolchain\bin\avr-gcc.exe$(QUOTE) -x c -funsigned-char -funsigned-bitfields -DDEBUG -I"C:\Program Files (x86)\Atmel\Studio\7.0\Packs\atmel\ATtiny_DFP\1.10.348\include" -Og -ffunction-sections -fdata-sections -fpack-struct -fshort-enums -g2 -Wall -mmcu=attiny402 -B "C:\Program Files (x86)\Atmel\Studio\7.0\Packs\atmel\ATtiny_DFP\1.10.348\gcc\dev\attiny402" -c -std=gnu99 -MD -MP -MF "$(@:%.o=%.d)" -MT"$(@:%.o=%.d)" -MT"$(@:%.o=%.o)" -o "$@" "$<" + $(QUOTE)C:\Program Files (x86)\Atmel\Studio\7.0\toolchain\avr8\avr8-gnu-toolchain\bin\avr-gcc.exe$(QUOTE) -x c -funsigned-char -funsigned-bitfields -DDEBUG -I"C:\Program Files (x86)\Atmel\Studio\7.0\Packs\atmel\ATtiny_DFP\1.10.348\include" -O2 -ffunction-sections -fdata-sections -fpack-struct -fshort-enums -g2 -Wall -mmcu=attiny402 -B "C:\Program Files (x86)\Atmel\Studio\7.0\Packs\atmel\ATtiny_DFP\1.10.348\gcc\dev\attiny402" -c -std=gnu99 -MD -MP -MF "$(@:%.o=%.d)" -MT"$(@:%.o=%.d)" -MT"$(@:%.o=%.o)" -o "$@" "$<" @echo Finished building: $< avr_uart_driver/avr_uart.o: ../avr_uart_driver/avr_uart.c @echo Building file: $< @echo Invoking: AVR/GNU C Compiler : 5.4.0 - $(QUOTE)C:\Program Files (x86)\Atmel\Studio\7.0\toolchain\avr8\avr8-gnu-toolchain\bin\avr-gcc.exe$(QUOTE) -x c -funsigned-char -funsigned-bitfields -DDEBUG -I"C:\Program Files (x86)\Atmel\Studio\7.0\Packs\atmel\ATtiny_DFP\1.10.348\include" -Og -ffunction-sections -fdata-sections -fpack-struct -fshort-enums -g2 -Wall -mmcu=attiny402 -B "C:\Program Files (x86)\Atmel\Studio\7.0\Packs\atmel\ATtiny_DFP\1.10.348\gcc\dev\attiny402" -c -std=gnu99 -MD -MP -MF "$(@:%.o=%.d)" -MT"$(@:%.o=%.d)" -MT"$(@:%.o=%.o)" -o "$@" "$<" + $(QUOTE)C:\Program Files (x86)\Atmel\Studio\7.0\toolchain\avr8\avr8-gnu-toolchain\bin\avr-gcc.exe$(QUOTE) -x c -funsigned-char -funsigned-bitfields -DDEBUG -I"C:\Program Files (x86)\Atmel\Studio\7.0\Packs\atmel\ATtiny_DFP\1.10.348\include" -O2 -ffunction-sections -fdata-sections -fpack-struct -fshort-enums -g2 -Wall -mmcu=attiny402 -B "C:\Program Files (x86)\Atmel\Studio\7.0\Packs\atmel\ATtiny_DFP\1.10.348\gcc\dev\attiny402" -c -std=gnu99 -MD -MP -MF "$(@:%.o=%.d)" -MT"$(@:%.o=%.d)" -MT"$(@:%.o=%.o)" -o "$@" "$<" @echo Finished building: $< cm_msg/cm_msg.o: ../cm_msg/cm_msg.c @echo Building file: $< @echo Invoking: AVR/GNU C Compiler : 5.4.0 - $(QUOTE)C:\Program Files (x86)\Atmel\Studio\7.0\toolchain\avr8\avr8-gnu-toolchain\bin\avr-gcc.exe$(QUOTE) -x c -funsigned-char -funsigned-bitfields -DDEBUG -I"C:\Program Files (x86)\Atmel\Studio\7.0\Packs\atmel\ATtiny_DFP\1.10.348\include" -Og -ffunction-sections -fdata-sections -fpack-struct -fshort-enums -g2 -Wall -mmcu=attiny402 -B "C:\Program Files (x86)\Atmel\Studio\7.0\Packs\atmel\ATtiny_DFP\1.10.348\gcc\dev\attiny402" -c -std=gnu99 -MD -MP -MF "$(@:%.o=%.d)" -MT"$(@:%.o=%.d)" -MT"$(@:%.o=%.o)" -o "$@" "$<" + $(QUOTE)C:\Program Files (x86)\Atmel\Studio\7.0\toolchain\avr8\avr8-gnu-toolchain\bin\avr-gcc.exe$(QUOTE) -x c -funsigned-char -funsigned-bitfields -DDEBUG -I"C:\Program Files (x86)\Atmel\Studio\7.0\Packs\atmel\ATtiny_DFP\1.10.348\include" -O2 -ffunction-sections -fdata-sections -fpack-struct -fshort-enums -g2 -Wall -mmcu=attiny402 -B "C:\Program Files (x86)\Atmel\Studio\7.0\Packs\atmel\ATtiny_DFP\1.10.348\gcc\dev\attiny402" -c -std=gnu99 -MD -MP -MF "$(@:%.o=%.d)" -MT"$(@:%.o=%.d)" -MT"$(@:%.o=%.o)" -o "$@" "$<" @echo Finished building: $< ./cqm6xx_app.o: .././cqm6xx_app.c @echo Building file: $< @echo Invoking: AVR/GNU C Compiler : 5.4.0 - $(QUOTE)C:\Program Files (x86)\Atmel\Studio\7.0\toolchain\avr8\avr8-gnu-toolchain\bin\avr-gcc.exe$(QUOTE) -x c -funsigned-char -funsigned-bitfields -DDEBUG -I"C:\Program Files (x86)\Atmel\Studio\7.0\Packs\atmel\ATtiny_DFP\1.10.348\include" -Og -ffunction-sections -fdata-sections -fpack-struct -fshort-enums -g2 -Wall -mmcu=attiny402 -B "C:\Program Files (x86)\Atmel\Studio\7.0\Packs\atmel\ATtiny_DFP\1.10.348\gcc\dev\attiny402" -c -std=gnu99 -MD -MP -MF "$(@:%.o=%.d)" -MT"$(@:%.o=%.d)" -MT"$(@:%.o=%.o)" -o "$@" "$<" + $(QUOTE)C:\Program Files (x86)\Atmel\Studio\7.0\toolchain\avr8\avr8-gnu-toolchain\bin\avr-gcc.exe$(QUOTE) -x c -funsigned-char -funsigned-bitfields -DDEBUG -I"C:\Program Files (x86)\Atmel\Studio\7.0\Packs\atmel\ATtiny_DFP\1.10.348\include" -O2 -ffunction-sections -fdata-sections -fpack-struct -fshort-enums -g2 -Wall -mmcu=attiny402 -B "C:\Program Files (x86)\Atmel\Studio\7.0\Packs\atmel\ATtiny_DFP\1.10.348\gcc\dev\attiny402" -c -std=gnu99 -MD -MP -MF "$(@:%.o=%.d)" -MT"$(@:%.o=%.d)" -MT"$(@:%.o=%.o)" -o "$@" "$<" @echo Finished building: $< ./main.o: .././main.c @echo Building file: $< @echo Invoking: AVR/GNU C Compiler : 5.4.0 - $(QUOTE)C:\Program Files (x86)\Atmel\Studio\7.0\toolchain\avr8\avr8-gnu-toolchain\bin\avr-gcc.exe$(QUOTE) -x c -funsigned-char -funsigned-bitfields -DDEBUG -I"C:\Program Files (x86)\Atmel\Studio\7.0\Packs\atmel\ATtiny_DFP\1.10.348\include" -Og -ffunction-sections -fdata-sections -fpack-struct -fshort-enums -g2 -Wall -mmcu=attiny402 -B "C:\Program Files (x86)\Atmel\Studio\7.0\Packs\atmel\ATtiny_DFP\1.10.348\gcc\dev\attiny402" -c -std=gnu99 -MD -MP -MF "$(@:%.o=%.d)" -MT"$(@:%.o=%.d)" -MT"$(@:%.o=%.o)" -o "$@" "$<" + $(QUOTE)C:\Program Files (x86)\Atmel\Studio\7.0\toolchain\avr8\avr8-gnu-toolchain\bin\avr-gcc.exe$(QUOTE) -x c -funsigned-char -funsigned-bitfields -DDEBUG -I"C:\Program Files (x86)\Atmel\Studio\7.0\Packs\atmel\ATtiny_DFP\1.10.348\include" -O2 -ffunction-sections -fdata-sections -fpack-struct -fshort-enums -g2 -Wall -mmcu=attiny402 -B "C:\Program Files (x86)\Atmel\Studio\7.0\Packs\atmel\ATtiny_DFP\1.10.348\gcc\dev\attiny402" -c -std=gnu99 -MD -MP -MF "$(@:%.o=%.d)" -MT"$(@:%.o=%.d)" -MT"$(@:%.o=%.o)" -o "$@" "$<" @echo Finished building: $< si5351_driver/si5351_driver.o: ../si5351_driver/si5351_driver.c @echo Building file: $< @echo Invoking: AVR/GNU C Compiler : 5.4.0 - $(QUOTE)C:\Program Files (x86)\Atmel\Studio\7.0\toolchain\avr8\avr8-gnu-toolchain\bin\avr-gcc.exe$(QUOTE) -x c -funsigned-char -funsigned-bitfields -DDEBUG -I"C:\Program Files (x86)\Atmel\Studio\7.0\Packs\atmel\ATtiny_DFP\1.10.348\include" -Og -ffunction-sections -fdata-sections -fpack-struct -fshort-enums -g2 -Wall -mmcu=attiny402 -B "C:\Program Files (x86)\Atmel\Studio\7.0\Packs\atmel\ATtiny_DFP\1.10.348\gcc\dev\attiny402" -c -std=gnu99 -MD -MP -MF "$(@:%.o=%.d)" -MT"$(@:%.o=%.d)" -MT"$(@:%.o=%.o)" -o "$@" "$<" + $(QUOTE)C:\Program Files (x86)\Atmel\Studio\7.0\toolchain\avr8\avr8-gnu-toolchain\bin\avr-gcc.exe$(QUOTE) -x c -funsigned-char -funsigned-bitfields -DDEBUG -I"C:\Program Files (x86)\Atmel\Studio\7.0\Packs\atmel\ATtiny_DFP\1.10.348\include" -O2 -ffunction-sections -fdata-sections -fpack-struct -fshort-enums -g2 -Wall -mmcu=attiny402 -B "C:\Program Files (x86)\Atmel\Studio\7.0\Packs\atmel\ATtiny_DFP\1.10.348\gcc\dev\attiny402" -c -std=gnu99 -MD -MP -MF "$(@:%.o=%.d)" -MT"$(@:%.o=%.d)" -MT"$(@:%.o=%.o)" -o "$@" "$<" @echo Finished building: $< diff --git a/storno_cqp6xx_digital_xtal/Debug/avr_i2c_driver/avr_i2c.o b/storno_cqp6xx_digital_xtal/Debug/avr_i2c_driver/avr_i2c.o index 53eeff2..3bc09d6 100644 Binary files a/storno_cqp6xx_digital_xtal/Debug/avr_i2c_driver/avr_i2c.o and b/storno_cqp6xx_digital_xtal/Debug/avr_i2c_driver/avr_i2c.o differ diff --git a/storno_cqp6xx_digital_xtal/Debug/cqm6xx_app.o b/storno_cqp6xx_digital_xtal/Debug/cqm6xx_app.o index 8a3f78f..3393f38 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 53f7a19..376cc3e 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 3aaf2c8..51118e3 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 6f5f4e0..0f91a83 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 e99cd87..813e37a 100644 --- a/storno_cqp6xx_digital_xtal/Debug/storno_cqp6xx_digital_xtal.hex +++ b/storno_cqp6xx_digital_xtal/Debug/storno_cqp6xx_digital_xtal.hex @@ -1,191 +1,258 @@ :1000000019C033C032C031C030C02FC02EC02DC087 :100010002CC02BC02AC029C028C027C026C025C09C -:1000200024C023C022C021C020C01FC082C11DC067 +:1000200024C023C022C021C020C01FC04FC11DC09A :100030001CC01BC011241FBECFEFCDBFDFE3DEBF4E -:100040001FE3A0E0BFE3E7EBFBE002C005900D92E9 -:10005000A630B107D9F72FE3A6E0BFE301C01D9298 -:10006000A836B207E1F738D3A2C5CACFEF92FF9204 -:100070000F931F93CF93DF937C018B01D42FC0E0AC -:100080000AC08C2F90E0F801E80FF91F60818E0DF7 -:100090009F1D79D5CF5FCD17A0F3DF91CF911F9131 -:1000A0000F91FF90EF900895CF92DF92EF92FF9221 -:1000B0000F931F93CF93DF936C017B01D42FC0E08C -:1000C0000BC08C2F90E08701080F191F8C0D9D1D10 -:1000D00052D5F8018083CF5FCD1798F3DF91CF9190 -:1000E0001F910F91FF90EF90DF90CF9008958111B5 -:1000F0000DC02091080430E002C0359527956A951F -:10010000E2F781E020FF80E090E0089580E090E059 -:100110000895E0E1F8E084818860848381E085834C -:1001200008958093170880911508807CE1F39091E1 -:100130001508892F807194FF04C083E08093140810 -:1001400081E00895CF92DF92EF92FF92CF93DF93F9 -:10015000EB0169017A01232B242B252B81F1E1DFAF -:10016000811130C09E012F5F3F4F88818093180816 -:100170008091150886FFFCCF8091150884FF06C08A -:1001800083E08093140881E090E01EC08091150800 -:100190008C7021F0BEDF81E090E016C080911508E0 -:1001A00084FD07C081E0C81AD108E108F108E9011F -:1001B000C9F683E08093140880E090E005C08FEFDB -:1001C0009FEF02C08FEF9FEFDF91CF91FF90EF90F5 -:1001D000DF90CF900895CF92DF92EF92FF92CF936E -:1001E000DF93EB0169017A01232B242B252B69F185 -:1001F000816097DF8823C9F02BC080911508807C2F -:10020000E1F3CE010196209118082883411551058C -:100210006105710521F424E02093140803C022E055 -:10022000209314086A017B01EC01B701A60141503B -:10023000510961097109CD28CE28CF28F1F683E054 -:100240008093140880E090E005C081E090E002C057 -:100250008FEF9FEFDF91CF91FF90EF90DF90CF90E6 -:100260000895809317088091150886FFFCCF809130 -:10027000150884FF06C083E08093140881E090E0B5 -:10028000089583E08093140880E090E00895E0E012 -:10029000F4E080818B7F80838081877F8083A0E1F1 -:1002A000B8E08BE016968C93169781E013968C93AA -:1002B000139715968C9388E0828B838B80E090E077 -:1002C0000895EF92FF920F931F93CF938C017B01C0 -:1002D000C42F842F880FC5DF009749F4F801E0820E -:1002E000F1824C2F50E0440F551F428302C08EEF25 -:1002F0009FEFCF911F910F91FF90EF9008950F9373 -:10030000009781F0FC01002319F0013031F00DC09D -:10031000828161DF80E090E00AC0828113DF80E0AB -:1003200090E005C08FEF9FEF02C080E090E00F915A -:1003300008951F920F920FB60F9211242F933F939F -:100340004F935F936F937F938F939F93AF93BF93DD -:10035000EF93FF93E091063FF091073F309719F03C -:10036000809100080995FF91EF91BF91AF919F9106 -:100370008F917F916F915F914F913F912F910F904E -:100380000FBE0F901F901895CF93DF931F92CDB79C -:10039000DEB7AC01F894E0E0F8E02CE635E0208729 -:1003A000318793E0978390EC96836115710511F482 -:1003B000452B39F080E8809305086093063F7093E1 -:1003C000073F80910408882324F4809100088983E2 -:1003D0008981E0E0F4E080E4818380E8828378949E -:1003E0000F90DF91CF910895E091413FE23029F1E4 -:1003F00028F4EE2341F0E13091F040C0E33059F1B0 -:10040000E430B9F13BC0F0E0EE54F447208191E0D4 -:10041000281390E09093413F81E090E00895F0E050 -:10042000EE54F4479081891302C082E001C080E05D -:100430008093413F81E090E00895F0E0EE54F4476E -:100440009081891302C083E001C080E08093413F26 -:1004500081E090E00895F0E0EE54F4479081891334 -:1004600002C084E001C080E08093413F81E090E0E1 -:1004700008951092413F80E090E008951092413F2E -:1004800081E090E008959091403F9330D1F028F4BE -:10049000992341F0913079F047C09430D1F09530F4 -:1004A00029F142C0A1DF892B19F481E08093403FFC -:1004B00010923F3F39C08093083F83E08093403FD4 -:1004C00033C0E8E0FFE31182828384E08093403F01 -:1004D0002BC0E8E0FFE321813281A901482BCA014A -:1004E0008183928385E08093403F1EC090913F3F7F -:1004F000E92FF0E0E85FF04C838381E0890F80937F -:100500003F3F9091083F891778F0E091443FF09188 -:10051000453F6BE07FE38091423F9091433F0995D7 -:100520001092403F10923F3F80E090E00895009786 -:1005300059F06115710541F08093423F9093433F1C -:100540006093443F7093453F0895FC0122813381BD -:10055000232B21F0892B21F481E0089581E0089577 -:1005600080E00895CF93DF9329E12093463FEC018B -:10057000249649E1BE0180E090E096DD81E493E0BD -:100580000197F1F7000049E1BE0180E290E08CDDC7 -:10059000DF91CF910895CF93DF93EC01D6DF8111E6 -:1005A00032C089819881891771F1813019F08230C8 -:1005B000B1F029C081E493E00197F1F7000040E039 -:1005C00060E08A819B81ECD081E493E00197F1F7B0 -:1005D000000041E061E08A819B81E2D014C081E4A7 -:1005E00093E00197F1F7000041E060E08A819B8190 -:1005F000D7D081E493E00197F1F7000040E061E09B -:100600008A819B81CDD0DF91CF910895CF93DF93E5 -:10061000EC019BDF811124C08981813051F018F0F9 -:10062000823099F01DC08883CE019CDF81E08983F0 -:1006300017C0CE01B0DF8981888363E080E057DD99 -:10064000019771F482E089830BC0CE01A4DF898118 -:10065000888363E080E04BDD892B11F481E089839E -:10066000DF91CF910895FC012481222319F02130DC -:1006700049F00895BC016C5F7F4F49E180E290E052 -:10068000F5DC0895BC016C5F7F4F49E180E290E0AA -:10069000EDDC0895DC01149629E1FB0101900D9237 -:1006A0002A95E1F7E0DF80E090E00895CF93DF93B3 -:1006B0006115710571F0009761F0EC0119821882E3 -:1006C0006A837B836AE473E032DF63E472E0CE0125 -:1006D0005BDEDF91CF910895CF93DF93CDB7DEB787 -:1006E000CB55D109CDBFDEBF80E090E0D0DD40E644 -:1006F00060E070E0CE010196E4DD4FE751E0BE011D -:100700006F5F7F4FCE0104966BD0BE016C5F7F4F51 -:1007100087E49FE3CBDF87E49FE378DF2AE684E08A -:1007200091E0215080409040E1F700C0F4CF8F92DB -:100730009F92AF92BF92CF92DF92EF92FF920F9370 -:100740001F93CF93DF93EC01862E5A016801790144 -:10075000C8010196E6D0982E192FFC018192CF0195 -:10076000A601B501FFD1EA81FB81A70196012F5FA8 -:100770003F4F4F4F5F4F01E0692D712F8881998165 -:10078000099580E090E0DF91CF911F910F91FF904C -:10079000EF90DF90CF90BF90AF909F908F90089593 -:1007A0000F931F93662319F0613039F00BC0FC01E1 -:1007B000278140FB20F9278305C0FC01278140FBEE -:1007C00021F92783AC01495F5F4F01E010E020E091 -:1007D00030E063E0ACDF80E090E01F910F9108957E -:1007E000EF92FF920F931F93CF93DF931F92CDB79A -:1007F000DEB7009709F485C06115710509F484C05E -:100800004115510509F483C07C01DC016D937C9393 -:10081000119712964D935C931397FC01349684E5DF -:10082000DF011D928A95E9F78FEF898301E010E0DF -:1008300020E030E0AE014F5F5F4F63E0C70177DF3C -:1008400080E8898301E010E020E030E0AE014F5FF6 -:100850005F4F60E1C7016BDF01E010E020E030E0B6 -:10086000AE014F5F5F4F61E1C70161DF01E010E062 -:1008700020E030E0AE014F5F5F4F62E1C70157DF1C -:1008800001E010E020E030E0AE014F5F5F4F63E138 -:10089000C7014DDF01E010E020E030E0AE014F5F26 -:1008A0005F4F64E1C70143DF01E010E020E030E08A -:1008B000AE014F5F5F4F65E1C70139DF01E010E036 -:1008C00020E030E0AE014F5F5F4F66E1C7012FDFF0 -:1008D00001E010E020E030E0AE014F5F5F4F67E1E4 -:1008E000C70125DF80EC898301E010E020E030E0E3 -:1008F000AE014F5F5F4F67EBC70119DF80E090E00B -:1009000008C08FEF9FEF05C08FEF9FEF02C08FEF02 -:100910009FEF0F90DF91CF911F910F91FF90EF907C -:1009200008950F931F93CF93DF938230910510F4B6 -:1009300082E090E0E091663FF091673F20E030E098 -:10094000A0E0B0E0309719F140815181028113811C -:1009500048175907C8F08417950769F4109731F0C4 -:1009600012960C93129713961C9327C00093663F20 -:100970001093673F22C02115310519F04217530724 -:1009800018F49A01BD01EF01DF01F801DBCF211559 -:100990003105F9F0281B390B2430310580F48A81A8 -:1009A0009B816115710521F0FB018283938304C053 -:1009B0008093663F9093673FFE01329644C0FE01EC -:1009C000E20FF31F819391932250310928833983D9 -:1009D0003AC02091643F3091653F232B41F4209130 -:1009E000023F3091033F2093643F3093653F209155 -:1009F000003F3091013F2115310541F42DB73EB73D -:100A00004091043F5091053F241B350BE091643F1A -:100A1000F091653FE217F307A0F42E1B3F0B281758 -:100A2000390778F0AC014E5F5F4F2417350748F067 -:100A30004E0F5F1F4093643F5093653F81939193A6 -:100A400002C0E0E0F0E0CF01DF91CF911F910F9164 -:100A50000895CF93DF93009709F481C0FC0132978A -:100A600012821382A091663FB091673F109781F484 -:100A700020813181820F931F2091643F3091653F27 -:100A80002817390751F5E093643FF093653F67C03D -:100A9000ED0120E030E0CE17DF0740F44A815B81B2 -:100AA0009E0141155105F1F0EA01F5CFC283D383D0 -:100AB00040815181840F951FC817D90759F4888147 -:100AC0009981840F951F0296808391838A819B81EF -:100AD000828393832115310529F4E093663FF093D7 -:100AE000673F3DC0E901EA83FB8349915991C40FF7 -:100AF000D51FEC17FD0761F480819181840F951F4C -:100B00000296E90188839983828193818A839B83FA -:100B1000E0E0F0E012968D919C911397009719F008 -:100B2000FD01DC01F7CF8D919C9111979D012E5F06 -:100B30003F4F820F931F2091643F3091653F2817EC -:100B4000390769F4309729F41092663F1092673F95 -:100B500002C012821382A093643FB093653FDF917D -:100B6000CF910895FB01DC0102C001900D9241502C -:100B70005040D8F7089503D0808199270895FC014B -:100B8000E050FC4E0895262FAF93BF93E0E0F0E1D4 -:100B9000328131FDFDCFDC01A050BC4E2C932DE9FC -:100BA00024BF23E020830196BF91AF910895F8946C -:020BB000FFCF75 -:050BB2004F5A31434DD4 -:060BB7000000683F200071 +:100040002FE3A6E0BFE301C01D92A736B207E1F798 +:100050001FE3A0E0BFE3E4EFFFE002C005900D92D4 +:10006000A630B107D9F7C1D3C3C7CACFEF92FF9269 +:100070000F931F93CF93DF93442391F0EB018C01F7 +:100080004150E42EF12C8FEFE81AF80AE60EF71E25 +:100090006991C80199D70F5F1F4FCE15DF05C1F7D2 +:1000A000DF91CF911F910F91FF90EF900895EF9204 +:1000B000FF920F931F93CF93DF93442391F08C0112 +:1000C000EB014150E42EF12C8FEFE81AF80AE60E0E +:1000D000F71EC80171D789930F5F1F4FCE15DF053B +:1000E000C1F7DF91CF911F910F91FF90EF9008958D +:1000F00081110BC08091080490E002C0959587950E +:100100006A95E2F781709927089580E090E008955C +:1001100020911508207CE1F32091150824FD1FC0D3 +:10012000FC018191809318088091150886FFFCCF0F +:100130008091150884FD24C0809115088C70A9F465 +:100140008091150884FD05C041505109610971096C +:1001500041F783E08093140880E090E0089583E005 +:10016000809314088FEF9FEF0895809114088860A2 +:100170008093140881E08093150881E090E0089551 +:1001800083E08093140881E090E00895A62F972FD4 +:10019000211531054105510569F1816080931708EA +:1001A00080911508807CE1F38091150884FD1CC0C6 +:1001B000BA01A9014150510961097109EA2FF92FCA +:1001C00092E080911508807CE1F38091180881937A +:1001D000411551056105710581F090931408415056 +:1001E000510961097109EDCF83E0809314088FEF05 +:1001F0009FEF089581E090E0089584E080931408D3 +:1002000083E08093140880E090E00895E0E0F4E05B +:1002100080818B7F80838081877F8083A0E1B8E0AD +:100220008BE016968C93169781E013968C93139718 +:1002300015968C9388E0828B838B80E090E0089504 +:10024000FC01842F880F809317089091150896FF62 +:10025000FCCF8091150884FF06C083E080931408CA +:100260008EEF9FEF089583E080931408608371837D +:1002700050E0440F551F428380E090E008950F93B3 +:10028000009709F1FB01DC010023B1F0013021F0FE +:1002900080E090E00F910895211531054105510549 +:1002A000B9F312968C9180931708BA01A901CF0176 +:1002B0002FDF80E090E0EECF12968C9167DF80E038 +:1002C00090E00F9108958FEF9FEFE4CF1F920F9270 +:1002D0000FB60F9211242F933F934F935F936F9319 +:1002E0007F938F939F93AF93BF93EF93FF93E0918F +:1002F000063FF091073F309719F08091000809956B +:10030000FF91EF91BF91AF919F918F917F916F91ED +:100310005F914F913F912F910F900FBE0F901F90C3 +:100320001895CF93DF931F92CDB7DEB7AC01F89449 +:100330002CE635E0209308083093090893E0909369 +:10034000070890EC9093060861157105D1F080E8DC +:10035000809305086093063F7093073F80910408DF +:1003600087FF04C0809100088983898180E480939D +:10037000010480E88093020478940F90DF91CF917C +:100380000895452B21F7EACF9091413F923041F1FA +:1003900060F49923E1F0913089F48A3529F180E005 +:1003A0008093413F81E090E00895933061F0943074 +:1003B00029F41092413F80E090E008951092413F6F +:1003C00081E090E00895833451F784E0E9CF91E033 +:1003D0008F3409F090E09093413F81E090E00895E0 +:1003E0008133E9F683E0DCCF82E0DACF9091403FC1 +:1003F000933009F44BC068F4992309F440C091305C +:1004000029F48093083F83E08093403F80E090E0B0 +:100410000895943019F19530C9F790913F3FE92F35 +:10042000F0E0E85FF04C838381E0890F80933F3FE9 +:100430009091083F891750F3E091443FF091453F78 +:100440006BE07FE38091423F9091433F099510928A +:10045000403F10923F3F80E090E008952091093F97 +:1004600030910A3FA901482BCA018093093F90931C +:100470000A3F85E08093403F80E090E0089584DF6C +:10048000892B39F781E08093403FE3CF1092093FF9 +:1004900080930A3F84E08093403F80E090E008959D +:1004A000009759F06115710541F08093423F909398 +:1004B000433F6093443F7093453F08959F92AF92AE +:1004C000BF92CF92DF92EF92FF920F931F93CF9341 +:1004D000DF93EC01942EAD84BE84CF84D888E98468 +:1004E000FA840B851C852D813E814F8158858A8138 +:1004F0009B81EBD181E493E00197F1F70000A98C97 +:10050000BA8CCB8CDC8CED88FE880F89188D2989FC +:100510003A894B895C89692D8A819B8151D281E41A +:1005200093E00197F1F7000040E0692D8A819B81FB +:10053000DF91CF911F910F91FF90EF90DF90CF90BF +:10054000BF90AF909F90FDC2CF93DF93FC0182815B +:100550009381892B09F13097F9F081819081891776 +:10056000D9F0EF018130D9F08230B1F481E493E029 +:100570000197F1F7000041E060E082819381B4D2FD +:1005800081E493E00197F1F7000040E061E08A81A7 +:100590009B81DF91CF91A8C2DF91CF91089581E433 +:1005A00093E00197F1F7000040E060E082819381E1 +:1005B0009BD281E493E00197F1F7000041E061E014 +:1005C0008A819B81DF91CF918FC20F931F93CF932D +:1005D000DF93FC0122813381232BA9F0009799F04E +:1005E000EC018181813009F45BC090F0823059F4D4 +:1005F000CE01AADF8981888363E080E079DD892BE1 +:1006000011F481E08983DF91CF911F910F910895BB +:1006100018828E010C5F1F4F49E1B80180E090E025 +:1006200046DD81E493E00197F1F7000060E08A8104 +:100630009B81DDD2E1E4F3E03197F1F7000040E087 +:1006400060E0CE013BDF81E493E00197F1F7000029 +:1006500049E1B80180E290E02ADDE1E4F3E031977E +:10066000F1F7000041E061E0CE0128DF42E061E007 +:10067000CE0124DF40E062E08A819B8162D281E486 +:1006800093E00197F1F7000040E062E08A819B81EE +:100690002BD281E08983DF91CF911F910F91089533 +:1006A000CE0152DF8981888363E080E021DD0197FC +:1006B00009F0A9CF82E08983A6CFCF93DF93EC0125 +:1006C0008C81882369F0813039F449E1BE016C5F87 +:1006D0007F4F80E290E0CADC1982DF91CF910895CC +:1006E00049E1BE016C5F7F4F80E090E0BFDC198282 +:1006F000DF91CF910895DC01149629E1FB0101906F +:100700000D922A95E1F7D9DF80E090E008950F93EC +:100710001F93CF93DF936115710511F1009701F1DC +:10072000EC01198218826A837B836BE773E0B8DE81 +:1007300066EF71E0CE01F5DD8E010C5F1F4F49E1E0 +:10074000B80180E090E0B3DCF8019E01235E3F4FEA +:1007500003C0E217F30749F0919191509E3FC8F70B +:10076000DF91CF911F910F9108951C8283E49DE04A +:10077000A0E0B0E08D839E83AF83B88786EF9CE2D4 +:10078000A0E0B0E089879A87AB87BC878BE598E4C7 +:10079000A0E1B0E08D879E87AF87B88B82E190E0C3 +:1007A000A0E0B0E0898B9A8BAB8BBC8B1D8A1E8A34 +:1007B0001F8A188E81E090E0A0E0B0E0898F9A8FC8 +:1007C000AB8FBC8F49E1B80180E090E04FDC81E461 +:1007D00093E00197F1F7000049E1B80180E290E071 +:1007E000DF91CF911F910F9141CCCF93DF93CDB784 +:1007F000DEB7CB55D109CDBFDEBF80E090E006DD8E +:1008000040E660E070E0CE01875A9F4F19DD4FE36C +:1008100051E0BE01675A7F4FCE0101960DD2BE0155 +:100820006F5F7F4F86E49FE372DF86E49FE3CDDE58 +:100830002AE684E091E0215080409040E1F700C03A +:10084000F4CF4F925F926F927F929F92AF92BF923E +:10085000CF92DF92EF92FF920F931F93CF93DF938C +:10086000EC016B01942E590127013801C701019653 +:1008700079D2F82E192FDC019D92CD01A201B5018C +:1008800092D3A30192012F5F3F4F4F4F5F4FD6018D +:10089000ED91FC9101E06F2D712F8881998109956F +:1008A0008F2D912FF7D280E090E0DF91CF911F91B3 +:1008B0000F91FF90EF90DF90CF90BF90AF909F90FF +:1008C0007F906F905F904F900895AF92BF92CF92BC +:1008D000DF92EF92FF920F931F93CF93DF93EC0180 +:1008E000662309F448C0613009F16C0182E0C80E4A +:1008F000D11C9E01295A3F4FF90180818062806896 +:100900008083E12CF12C8701E39441EBB601CE0109 +:1009100098DF80E090E0DF91CF911F910F91FF90E1 +:10092000EF90DF90CF90BF90AF90089542708E8D82 +:100930008C7F482B4E8F3F8F28A3D801C701882773 +:100940009927AF70BB27FAA2EBA28A2F8F7089A3D9 +:10095000BC8EAD8E6E01F2E0CF0ED11C18E0E12E00 +:10096000F12C00E010E09E01245E3F4F42E2B60110 +:10097000CE0167DFBECF42708E898C7F482B4E8BB5 +:100980003F8B288FD801C70188279927AF70BB27D5 +:10099000FA8EEB8E8A2F8F70898FBC8AAD8A6E019A +:1009A000E2E0CE0ED11C18E0E12EF12C00E010E0C8 +:1009B0009E012C5E3F4F4AE1B601CE0142DF99CF46 +:1009C000AF92BF92CF92DF92EF92FF920F931F935D +:1009D000FC01613009F45FC0A8F1623041F5437059 +:1009E00056A9507837AB20AFF2AEE3AED601C501C1 +:1009F0002CE0B695A795979587952A95D1F78370A2 +:100A00008295807F0370082B01AFB4AAA5AA452B5D +:100A100046AB9F012C5C3F4FBF016E5F7F4F18E0DC +:100A2000E12EF12C00E010E04AE3CF010ADF80E084 +:100A300090E01F910F91FF90EF90DF90CF90BF90CB +:100A4000AF900895437056A1507837A320A7F2A61F +:100A5000E3A6D601C5011CE0B695A79597958795A5 +:100A60001A95D1F783708295807F0370802B81A7C0 +:100A7000B4A2A5A2452B46A39F012C5D3F4FBF0109 +:100A80006E5F7F4F18E0E12EF12C00E010E04AE2AB +:100A9000CF01D7DECCCF437056A5507837A720AB17 +:100AA000F2AAE3AAD601C5016CE0B695A795979581 +:100AB00087956A95D1F783708295807F0370802B2C +:100AC00081ABB4A6A5A6452B46A79F01245D3F4F49 +:100AD000BF016E5F7F4F18E0E12EF12C00E010E0C7 +:100AE00042E3CF01AEDEA3CFEF92FF920F931F93AD +:100AF000613009F1D0F0623029F4FC01278140FB1C +:100B000022F927839C01295F3F4FBC016E5F7F4F15 +:100B1000E12CF12C8701E39443E093DE80E090E048 +:100B20001F910F91FF90EF900895FC01278140FBEA +:100B300020F92783E7CFFC01278140FB21F9278398 +:100B4000E1CFEF92FF920F931F936130B9F1E0F084 +:100B5000623099F4FC01248540FB27F92379236650 +:100B600024879C01245F3F4FBC016E5F7F4FE12CC7 +:100B7000F12C8701E39442E164DE80E090E01F9174 +:100B80000F91FF90EF900895FC01228540FB27F91B +:100B900020792F6422879C01265F3F4FBC016E5F46 +:100BA0007F4FE12CF12C8701E39440E14ADE80E0A5 +:100BB00090E01F910F91FF90EF900895FC01238525 +:100BC00040FB27F92F6623879C01255F3F4FBC011F +:100BD0006E5F7F4FE12CF12C8701E39441E131DE20 +:100BE00080E090E01F910F91FF90EF900895EF92B9 +:100BF000FF920F931F936623C9F0613021F4FC012B +:100C00002185246021879C01275F3F4FBC016E5FD7 +:100C10007F4FE12CF12C8701E39440EF12DE80E05E +:100C200090E01F910F91FF90EF900895FC012185B6 +:100C30002B7F277F2187E7CFAF92BF92CF92DF92A2 +:100C4000EF92FF920F931F93CF93DF931F92CDB735 +:100C5000DEB7009709F483C06115710509F47FC000 +:100C60004115510509F47BC06C01DC016D937C9347 +:100C7000119712964D935C931397FC01349684E57B +:100C8000DF011D928A95E9F78FEF89835601B2E063 +:100C9000AB0EB11CE12CF12C8701E3949E012F5F78 +:100CA0003F4F43E0B501C601CCDD80E889839E015A +:100CB0002F5F3F4F40E1B501C601C3DD9E012F5FAD +:100CC0003F4F41E1B501C601BCDD9E012F5F3F4FA3 +:100CD00042E1B501C601B5DD9E012F5F3F4F43E103 +:100CE000B501C601AEDD9E012F5F3F4F44E1B50166 +:100CF000C601A7DD9E012F5F3F4F45E1B501C6014B +:100D0000A0DD9E012F5F3F4F46E1B501C60199DD91 +:100D10009E012F5F3F4F47E1B501C60192DD80EC98 +:100D200089839E012F5F3F4F47EBB501C60189DDE7 +:100D300080E489839E012F5F3F4F4BEBB501C601D5 +:100D400080DD80E090E00F90DF91CF911F910F91B7 +:100D5000FF90EF90DF90CF90BF90AF9008958FEF0E +:100D60009FEFF1CF0F931F93CF93DF9382309105C5 +:100D700010F482E090E0E091653FF091663F20E062 +:100D800030E0A0E0B0E0309719F14081518102815C +:100D9000138148175907C8F08417950769F410970D +:100DA00031F012960C93129713961C9327C0009360 +:100DB000653F1093663F22C02115310519F0421797 +:100DC000530718F49A01BD01EF01DF01F801DBCFF1 +:100DD00021153105F9F0281B390B2430310580F439 +:100DE0008A819B816115710521F0FB0182839383C8 +:100DF00004C08093653F9093663FFE01329644C0E5 +:100E0000FE01E20FF31F8193919322503109288351 +:100E100039833AC02091633F3091643F232B41F4E2 +:100E20002091023F3091033F2093633F3093643F12 +:100E30002091003F3091013F2115310541F42DB73C +:100E40003EB74091043F5091053F241B350BE09184 +:100E5000633FF091643FE217F307A0F42E1B3F0BB2 +:100E60002817390778F0AC014E5F5F4F241735071C +:100E700048F04E0F5F1F4093633F5093643F819350 +:100E8000919302C0E0E0F0E0CF01DF91CF911F919C +:100E90000F910895CF93DF93009709F481C0FC016F +:100EA000329712821382A091653FB091663F1097EE +:100EB00081F420813181820F931F2091633F309113 +:100EC000643F2817390751F5E093633FF093643F7F +:100ED00067C0ED0120E030E0CE17DF0740F44A8123 +:100EE0005B819E0141155105F1F0EA01F5CFC28306 +:100EF000D38340815181840F951FC817D90759F4B6 +:100F000088819981840F951F0296808391838A81BD +:100F10009B81828393832115310529F4E093653FFA +:100F2000F093663F3DC0E901EA83FB834991599103 +:100F3000C40FD51FEC17FD0761F480819181840FE8 +:100F4000951F0296E90188839983828193818A8320 +:100F50009B83E0E0F0E012968D919C9113970097AF +:100F600019F0FD01DC01F7CF8D919C9111979D0146 +:100F70002E5F3F4F820F931F2091633F3091643F5C +:100F80002817390769F4309729F41092653F1092B9 +:100F9000663F02C012821382A093633FB093643F06 +:100FA000DF91CF910895FB01DC0102C001900D9209 +:100FB00041505040D8F7089503D080819927089573 +:100FC000FC01E050FC4E0895262FAF93BF93E0E064 +:100FD000F0E1328131FDFDCFDC01A050BC4E2C93FD +:100FE0002DE924BF23E020830196BF91AF9108959E +:040FF000F894FFCFA3 +:060FF4000000673F200031 :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 4b0be64..29a763d 100644 --- a/storno_cqp6xx_digital_xtal/Debug/storno_cqp6xx_digital_xtal.lss +++ b/storno_cqp6xx_digital_xtal/Debug/storno_cqp6xx_digital_xtal.lss @@ -3,33 +3,31 @@ storno_cqp6xx_digital_xtal.elf: file format elf32-avr Sections: Idx Name Size VMA LMA File off Algn - 0 .data 00000006 00803f00 00000bb7 00000c6b 2**0 + 0 .data 00000006 00803f00 00000ff4 00001088 2**0 CONTENTS, ALLOC, LOAD, DATA - 1 .text 00000bb2 00000000 00000000 000000b4 2**1 + 1 .text 00000ff4 00000000 00000000 00000094 2**1 CONTENTS, ALLOC, LOAD, READONLY, CODE - 2 .rodata 00000005 00008bb2 00000bb2 00000c66 2**0 - CONTENTS, ALLOC, LOAD, READONLY, DATA - 3 .bss 00000062 00803f06 00803f06 00000c71 2**0 + 2 .bss 00000061 00803f06 00803f06 0000108e 2**0 ALLOC - 4 .comment 00000030 00000000 00000000 00000c71 2**0 + 3 .comment 00000030 00000000 00000000 0000108e 2**0 CONTENTS, READONLY - 5 .note.gnu.avr.deviceinfo 0000003c 00000000 00000000 00000ca4 2**2 + 4 .note.gnu.avr.deviceinfo 0000003c 00000000 00000000 000010c0 2**2 CONTENTS, READONLY - 6 .debug_aranges 00000258 00000000 00000000 00000ce0 2**3 + 5 .debug_aranges 00000248 00000000 00000000 00001100 2**3 CONTENTS, READONLY, DEBUGGING - 7 .debug_info 00005174 00000000 00000000 00000f38 2**0 + 6 .debug_info 00005ba3 00000000 00000000 00001348 2**0 CONTENTS, READONLY, DEBUGGING - 8 .debug_abbrev 00001d9f 00000000 00000000 000060ac 2**0 + 7 .debug_abbrev 00001f08 00000000 00000000 00006eeb 2**0 CONTENTS, READONLY, DEBUGGING - 9 .debug_line 0000184c 00000000 00000000 00007e4b 2**0 + 8 .debug_line 000019ae 00000000 00000000 00008df3 2**0 CONTENTS, READONLY, DEBUGGING - 10 .debug_frame 0000064c 00000000 00000000 00009698 2**2 + 9 .debug_frame 0000061c 00000000 00000000 0000a7a4 2**2 CONTENTS, READONLY, DEBUGGING - 11 .debug_str 000022b5 00000000 00000000 00009ce4 2**0 + 10 .debug_str 000022c2 00000000 00000000 0000adc0 2**0 CONTENTS, READONLY, DEBUGGING - 12 .debug_loc 0000223e 00000000 00000000 0000bf99 2**0 + 11 .debug_loc 00002855 00000000 00000000 0000d082 2**0 CONTENTS, READONLY, DEBUGGING - 13 .debug_ranges 00000198 00000000 00000000 0000e1d7 2**0 + 12 .debug_ranges 00000230 00000000 00000000 0000f8d7 2**0 CONTENTS, READONLY, DEBUGGING Disassembly of section .text: @@ -57,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: 82 c1 rjmp .+772 ; 0x332 <__vector_22> + 2c: 4f c1 rjmp .+670 ; 0x2cc <__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> @@ -70,34 +68,34 @@ Disassembly of section .text: 3c: df e3 ldi r29, 0x3F ; 63 3e: de bf out 0x3e, r29 ; 62 -00000040 <__do_copy_data>: - 40: 1f e3 ldi r17, 0x3F ; 63 - 42: a0 e0 ldi r26, 0x00 ; 0 +00000040 <__do_clear_bss>: + 40: 2f e3 ldi r18, 0x3F ; 63 + 42: a6 e0 ldi r26, 0x06 ; 6 44: bf e3 ldi r27, 0x3F ; 63 - 46: e7 eb ldi r30, 0xB7 ; 183 - 48: fb e0 ldi r31, 0x0B ; 11 - 4a: 02 c0 rjmp .+4 ; 0x50 <__do_copy_data+0x10> - 4c: 05 90 lpm r0, Z+ - 4e: 0d 92 st X+, r0 - 50: a6 30 cpi r26, 0x06 ; 6 - 52: b1 07 cpc r27, r17 - 54: d9 f7 brne .-10 ; 0x4c <__do_copy_data+0xc> + 46: 01 c0 rjmp .+2 ; 0x4a <.do_clear_bss_start> -00000056 <__do_clear_bss>: - 56: 2f e3 ldi r18, 0x3F ; 63 - 58: a6 e0 ldi r26, 0x06 ; 6 - 5a: bf e3 ldi r27, 0x3F ; 63 - 5c: 01 c0 rjmp .+2 ; 0x60 <.do_clear_bss_start> +00000048 <.do_clear_bss_loop>: + 48: 1d 92 st X+, r1 -0000005e <.do_clear_bss_loop>: - 5e: 1d 92 st X+, r1 +0000004a <.do_clear_bss_start>: + 4a: a7 36 cpi r26, 0x67 ; 103 + 4c: b2 07 cpc r27, r18 + 4e: e1 f7 brne .-8 ; 0x48 <.do_clear_bss_loop> -00000060 <.do_clear_bss_start>: - 60: a8 36 cpi r26, 0x68 ; 104 - 62: b2 07 cpc r27, r18 - 64: e1 f7 brne .-8 ; 0x5e <.do_clear_bss_loop> - 66: 38 d3 rcall .+1648 ; 0x6d8
- 68: a2 c5 rjmp .+2884 ; 0xbae <_exit> +00000050 <__do_copy_data>: + 50: 1f e3 ldi r17, 0x3F ; 63 + 52: a0 e0 ldi r26, 0x00 ; 0 + 54: bf e3 ldi r27, 0x3F ; 63 + 56: e4 ef ldi r30, 0xF4 ; 244 + 58: ff e0 ldi r31, 0x0F ; 15 + 5a: 02 c0 rjmp .+4 ; 0x60 <__do_copy_data+0x10> + 5c: 05 90 lpm r0, Z+ + 5e: 0d 92 st X+, r0 + 60: a6 30 cpi r26, 0x06 ; 6 + 62: b1 07 cpc r27, r17 + 64: d9 f7 brne .-10 ; 0x5c <__do_copy_data+0xc> + 66: c1 d3 rcall .+1922 ; 0x7ea
+ 68: c3 c7 rjmp .+3974 ; 0xff0 <_exit> 0000006a <__bad_interrupt>: 6a: ca cf rjmp .-108 ; 0x0 <__vectors> @@ -115,1852 +113,2745 @@ void cm_EEPROM_write(uint8_t *address, uint8_t *data, uint8_t length) { 72: 1f 93 push r17 74: cf 93 push r28 76: df 93 push r29 - 78: 7c 01 movw r14, r24 - 7a: 8b 01 movw r16, r22 - 7c: d4 2f mov r29, r20 for (uint8_t i = 0; i < length; i++) { - 7e: c0 e0 ldi r28, 0x00 ; 0 - 80: 0a c0 rjmp .+20 ; 0x96 <__EEPROM_REGION_LENGTH__+0x16> + 78: 44 23 and r20, r20 + 7a: 91 f0 breq .+36 ; 0xa0 <__EEPROM_REGION_LENGTH__+0x20> + 7c: eb 01 movw r28, r22 + 7e: 8c 01 movw r16, r24 + 80: 41 50 subi r20, 0x01 ; 1 + 82: e4 2e mov r14, r20 + 84: f1 2c mov r15, r1 + 86: 8f ef ldi r24, 0xFF ; 255 + 88: e8 1a sub r14, r24 + 8a: f8 0a sbc r15, r24 + 8c: e6 0e add r14, r22 + 8e: f7 1e adc r15, r23 + // Write data to address + i.. eeprom_write_byte(address+i,data[i]); - 82: 8c 2f mov r24, r28 - 84: 90 e0 ldi r25, 0x00 ; 0 - 86: f8 01 movw r30, r16 - 88: e8 0f add r30, r24 - 8a: f9 1f adc r31, r25 - 8c: 60 81 ld r22, Z - 8e: 8e 0d add r24, r14 - 90: 9f 1d adc r25, r15 - 92: 79 d5 rcall .+2802 ; 0xb86 + 90: 69 91 ld r22, Y+ + 92: c8 01 movw r24, r16 + 94: 99 d7 rcall .+3890 ; 0xfc8 + 96: 0f 5f subi r16, 0xFF ; 255 + 98: 1f 4f sbci r17, 0xFF ; 255 #include void cm_EEPROM_write(uint8_t *address, uint8_t *data, uint8_t length) { for (uint8_t i = 0; i < length; i++) { - 94: cf 5f subi r28, 0xFF ; 255 - 96: cd 17 cp r28, r29 - 98: a0 f3 brcs .-24 ; 0x82 <__EEPROM_REGION_LENGTH__+0x2> - //NVMCTRL.CTRLA = NVMCTRL_CMD_PAGEERASEWRITE_gc; + 9a: ce 15 cp r28, r14 + 9c: df 05 cpc r29, r15 + 9e: c1 f7 brne .-16 ; 0x90 <__EEPROM_REGION_LENGTH__+0x10> - /* Wait until the write is complete */ - //while (NVMCTRL.STATUS & NVMCTRL_EEBUSY_bm); + // Write data to address + i.. + eeprom_write_byte(address+i,data[i]); } } - 9a: df 91 pop r29 - 9c: cf 91 pop r28 - 9e: 1f 91 pop r17 - a0: 0f 91 pop r16 - a2: ff 90 pop r15 - a4: ef 90 pop r14 - a6: 08 95 ret + 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 -000000a8 : +000000ae : void cm_EEPROM_read(uint8_t* address, uint8_t *data, uint8_t length) { - a8: cf 92 push r12 - aa: df 92 push r13 - ac: ef 92 push r14 - ae: ff 92 push r15 - b0: 0f 93 push r16 - b2: 1f 93 push r17 - b4: cf 93 push r28 - b6: df 93 push r29 - b8: 6c 01 movw r12, r24 - ba: 7b 01 movw r14, r22 - bc: d4 2f mov r29, r20 + 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 for (uint8_t i = 0; i < length; i++) { - be: c0 e0 ldi r28, 0x00 ; 0 - c0: 0b c0 rjmp .+22 ; 0xd8 + ba: 44 23 and r20, r20 + bc: 91 f0 breq .+36 ; 0xe2 + be: 8c 01 movw r16, r24 + c0: eb 01 movw r28, r22 + c2: 41 50 subi r20, 0x01 ; 1 + c4: e4 2e mov r14, r20 + c6: f1 2c mov r15, r1 + c8: 8f ef ldi r24, 0xFF ; 255 + ca: e8 1a sub r14, r24 + cc: f8 0a sbc r15, r24 + ce: e6 0e add r14, r22 + d0: f7 1e adc r15, r23 data[i] = eeprom_read_byte(address+i); - c2: 8c 2f mov r24, r28 - c4: 90 e0 ldi r25, 0x00 ; 0 - c6: 87 01 movw r16, r14 - c8: 08 0f add r16, r24 - ca: 19 1f adc r17, r25 - cc: 8c 0d add r24, r12 - ce: 9d 1d adc r25, r13 - d0: 52 d5 rcall .+2724 ; 0xb76 - d2: f8 01 movw r30, r16 - d4: 80 83 st Z, r24 + d2: c8 01 movw r24, r16 + d4: 71 d7 rcall .+3810 ; 0xfb8 + d6: 89 93 st Y+, r24 + d8: 0f 5f subi r16, 0xFF ; 255 + da: 1f 4f sbci r17, 0xFF ; 255 void cm_EEPROM_read(uint8_t* address, uint8_t *data, uint8_t length) { for (uint8_t i = 0; i < length; i++) { - d6: cf 5f subi r28, 0xFF ; 255 - d8: cd 17 cp r28, r29 - da: 98 f3 brcs .-26 ; 0xc2 + dc: ce 15 cp r28, r14 + de: df 05 cpc r29, r15 + e0: c1 f7 brne .-16 ; 0xd2 data[i] = eeprom_read_byte(address+i); } } - dc: df 91 pop r29 - de: cf 91 pop r28 - e0: 1f 91 pop r17 - e2: 0f 91 pop r16 - e4: ff 90 pop r15 - e6: ef 90 pop r14 - e8: df 90 pop r13 - ea: cf 90 pop r12 - ec: 08 95 ret + 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 -000000ee : +000000f0 : return 0; } int gpio_get_level(avr_gpio_ports port, uint8_t pin){ switch (port) - ee: 81 11 cpse r24, r1 - f0: 0d c0 rjmp .+26 ; 0x10c <__DATA_REGION_LENGTH__+0xc> + f0: 81 11 cpse r24, r1 + f2: 0b c0 rjmp .+22 ; 0x10a <__DATA_REGION_LENGTH__+0xa> { case GPIO_PORTA: return (PORTA.IN & (1 << pin)) ? 1 : 0; - f2: 20 91 08 04 lds r18, 0x0408 ; 0x800408 - f6: 30 e0 ldi r19, 0x00 ; 0 - f8: 02 c0 rjmp .+4 ; 0xfe - fa: 35 95 asr r19 - fc: 27 95 ror r18 - fe: 6a 95 dec r22 - 100: e2 f7 brpl .-8 ; 0xfa - 102: 81 e0 ldi r24, 0x01 ; 1 - 104: 20 ff sbrs r18, 0 - 106: 80 e0 ldi r24, 0x00 ; 0 - 108: 90 e0 ldi r25, 0x00 ; 0 - 10a: 08 95 ret + 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 break; default: break; } return 0; - 10c: 80 e0 ldi r24, 0x00 ; 0 - 10e: 90 e0 ldi r25, 0x00 ; 0 + 10a: 80 e0 ldi r24, 0x00 ; 0 + 10c: 90 e0 ldi r25, 0x00 ; 0 } - 110: 08 95 ret + 10e: 08 95 ret -00000112 : - 112: e0 e1 ldi r30, 0x10 ; 16 - 114: f8 e0 ldi r31, 0x08 ; 8 - 116: 84 81 ldd r24, Z+4 ; 0x04 - 118: 88 60 ori r24, 0x08 ; 8 - 11a: 84 83 std Z+4, r24 ; 0x04 - 11c: 81 e0 ldi r24, 0x01 ; 1 - 11e: 85 83 std Z+5, r24 ; 0x05 - 120: 08 95 ret - -00000122 : - 122: 80 93 17 08 sts 0x0817, r24 ; 0x800817 - 126: 80 91 15 08 lds r24, 0x0815 ; 0x800815 - 12a: 80 7c andi r24, 0xC0 ; 192 - 12c: e1 f3 breq .-8 ; 0x126 - 12e: 90 91 15 08 lds r25, 0x0815 ; 0x800815 - 132: 89 2f mov r24, r25 - 134: 80 71 andi r24, 0x10 ; 16 - 136: 94 ff sbrs r25, 4 - 138: 04 c0 rjmp .+8 ; 0x142 - 13a: 83 e0 ldi r24, 0x03 ; 3 - 13c: 80 93 14 08 sts 0x0814, r24 ; 0x800814 - 140: 81 e0 ldi r24, 0x01 ; 1 - 142: 08 95 ret - -00000144 : - 144: cf 92 push r12 - 146: df 92 push r13 - 148: ef 92 push r14 - 14a: ff 92 push r15 - 14c: cf 93 push r28 - 14e: df 93 push r29 - 150: eb 01 movw r28, r22 - 152: 69 01 movw r12, r18 - 154: 7a 01 movw r14, r20 - 156: 23 2b or r18, r19 - 158: 24 2b or r18, r20 - 15a: 25 2b or r18, r21 - 15c: 81 f1 breq .+96 ; 0x1be - 15e: e1 df rcall .-62 ; 0x122 - 160: 81 11 cpse r24, r1 - 162: 30 c0 rjmp .+96 ; 0x1c4 - 164: 9e 01 movw r18, r28 - 166: 2f 5f subi r18, 0xFF ; 255 - 168: 3f 4f sbci r19, 0xFF ; 255 - 16a: 88 81 ld r24, Y - 16c: 80 93 18 08 sts 0x0818, r24 ; 0x800818 - 170: 80 91 15 08 lds r24, 0x0815 ; 0x800815 - 174: 86 ff sbrs r24, 6 - 176: fc cf rjmp .-8 ; 0x170 - 178: 80 91 15 08 lds r24, 0x0815 ; 0x800815 - 17c: 84 ff sbrs r24, 4 - 17e: 06 c0 rjmp .+12 ; 0x18c +00000110 : + while (!(TWI0.MSTATUS & TWI_WIF_bm)); + + 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 + 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: 1e c0 rjmp .+60 ; 0x1c8 - 18c: 80 91 15 08 lds r24, 0x0815 ; 0x800815 - 190: 8c 70 andi r24, 0x0C ; 12 - 192: 21 f0 breq .+8 ; 0x19c - 194: be df rcall .-132 ; 0x112 - 196: 81 e0 ldi r24, 0x01 ; 1 - 198: 90 e0 ldi r25, 0x00 ; 0 - 19a: 16 c0 rjmp .+44 ; 0x1c8 - 19c: 80 91 15 08 lds r24, 0x0815 ; 0x800815 - 1a0: 84 fd sbrc r24, 4 - 1a2: 07 c0 rjmp .+14 ; 0x1b2 - 1a4: 81 e0 ldi r24, 0x01 ; 1 - 1a6: c8 1a sub r12, r24 - 1a8: d1 08 sbc r13, r1 - 1aa: e1 08 sbc r14, r1 - 1ac: f1 08 sbc r15, r1 - 1ae: e9 01 movw r28, r18 - 1b0: c9 f6 brne .-78 ; 0x164 - 1b2: 83 e0 ldi r24, 0x03 ; 3 - 1b4: 80 93 14 08 sts 0x0814, r24 ; 0x800814 - 1b8: 80 e0 ldi r24, 0x00 ; 0 - 1ba: 90 e0 ldi r25, 0x00 ; 0 - 1bc: 05 c0 rjmp .+10 ; 0x1c8 - 1be: 8f ef ldi r24, 0xFF ; 255 - 1c0: 9f ef ldi r25, 0xFF ; 255 - 1c2: 02 c0 rjmp .+4 ; 0x1c8 - 1c4: 8f ef ldi r24, 0xFF ; 255 - 1c6: 9f ef ldi r25, 0xFF ; 255 - 1c8: df 91 pop r29 - 1ca: cf 91 pop r28 - 1cc: ff 90 pop r15 - 1ce: ef 90 pop r14 - 1d0: df 90 pop r13 - 1d2: cf 90 pop r12 - 1d4: 08 95 ret + 18a: 08 95 ret -000001d6 : - 1d6: cf 92 push r12 - 1d8: df 92 push r13 - 1da: ef 92 push r14 - 1dc: ff 92 push r15 - 1de: cf 93 push r28 - 1e0: df 93 push r29 - 1e2: eb 01 movw r28, r22 - 1e4: 69 01 movw r12, r18 - 1e6: 7a 01 movw r14, r20 - 1e8: 23 2b or r18, r19 - 1ea: 24 2b or r18, r20 - 1ec: 25 2b or r18, r21 - 1ee: 69 f1 breq .+90 ; 0x24a - 1f0: 81 60 ori r24, 0x01 ; 1 - 1f2: 97 df rcall .-210 ; 0x122 - 1f4: 88 23 and r24, r24 - 1f6: c9 f0 breq .+50 ; 0x22a - 1f8: 2b c0 rjmp .+86 ; 0x250 - 1fa: 80 91 15 08 lds r24, 0x0815 ; 0x800815 - 1fe: 80 7c andi r24, 0xC0 ; 192 - 200: e1 f3 breq .-8 ; 0x1fa - 202: ce 01 movw r24, r28 - 204: 01 96 adiw r24, 0x01 ; 1 - 206: 20 91 18 08 lds r18, 0x0818 ; 0x800818 - 20a: 28 83 st Y, r18 - 20c: 41 15 cp r20, r1 - 20e: 51 05 cpc r21, r1 - 210: 61 05 cpc r22, r1 - 212: 71 05 cpc r23, r1 - 214: 21 f4 brne .+8 ; 0x21e - 216: 24 e0 ldi r18, 0x04 ; 4 - 218: 20 93 14 08 sts 0x0814, r18 ; 0x800814 - 21c: 03 c0 rjmp .+6 ; 0x224 - 21e: 22 e0 ldi r18, 0x02 ; 2 - 220: 20 93 14 08 sts 0x0814, r18 ; 0x800814 - 224: 6a 01 movw r12, r20 - 226: 7b 01 movw r14, r22 - 228: ec 01 movw r28, r24 - 22a: b7 01 movw r22, r14 - 22c: a6 01 movw r20, r12 - 22e: 41 50 subi r20, 0x01 ; 1 - 230: 51 09 sbc r21, r1 - 232: 61 09 sbc r22, r1 - 234: 71 09 sbc r23, r1 - 236: cd 28 or r12, r13 - 238: ce 28 or r12, r14 - 23a: cf 28 or r12, r15 - 23c: f1 f6 brne .-68 ; 0x1fa - 23e: 83 e0 ldi r24, 0x03 ; 3 - 240: 80 93 14 08 sts 0x0814, r24 ; 0x800814 - 244: 80 e0 ldi r24, 0x00 ; 0 - 246: 90 e0 ldi r25, 0x00 ; 0 - 248: 05 c0 rjmp .+10 ; 0x254 - 24a: 81 e0 ldi r24, 0x01 ; 1 - 24c: 90 e0 ldi r25, 0x00 ; 0 - 24e: 02 c0 rjmp .+4 ; 0x254 - 250: 8f ef ldi r24, 0xFF ; 255 - 252: 9f ef ldi r25, 0xFF ; 255 - 254: df 91 pop r29 - 256: cf 91 pop r28 - 258: ff 90 pop r15 - 25a: ef 90 pop r14 - 25c: df 90 pop r13 - 25e: cf 90 pop r12 - 260: 08 95 ret +0000018c : + 18c: a6 2f mov r26, r22 + 18e: 97 2f mov r25, r23 + 190: 21 15 cp r18, r1 + 192: 31 05 cpc r19, r1 + 194: 41 05 cpc r20, r1 + 196: 51 05 cpc r21, r1 + 198: 69 f1 breq .+90 ; 0x1f4 + 19a: 81 60 ori r24, 0x01 ; 1 + 19c: 80 93 17 08 sts 0x0817, r24 ; 0x800817 <__RODATA_PM_OFFSET__+0x7f8817> + 1a0: 80 91 15 08 lds r24, 0x0815 ; 0x800815 <__RODATA_PM_OFFSET__+0x7f8815> + 1a4: 80 7c andi r24, 0xC0 ; 192 + 1a6: e1 f3 breq .-8 ; 0x1a0 + 1a8: 80 91 15 08 lds r24, 0x0815 ; 0x800815 <__RODATA_PM_OFFSET__+0x7f8815> + 1ac: 84 fd sbrc r24, 4 + 1ae: 1c c0 rjmp .+56 ; 0x1e8 + 1b0: ba 01 movw r22, r20 + 1b2: a9 01 movw r20, r18 + 1b4: 41 50 subi r20, 0x01 ; 1 + 1b6: 51 09 sbc r21, r1 + 1b8: 61 09 sbc r22, r1 + 1ba: 71 09 sbc r23, r1 + 1bc: ea 2f mov r30, r26 + 1be: f9 2f mov r31, r25 + 1c0: 92 e0 ldi r25, 0x02 ; 2 + 1c2: 80 91 15 08 lds r24, 0x0815 ; 0x800815 <__RODATA_PM_OFFSET__+0x7f8815> + 1c6: 80 7c andi r24, 0xC0 ; 192 + 1c8: e1 f3 breq .-8 ; 0x1c2 + 1ca: 80 91 18 08 lds r24, 0x0818 ; 0x800818 <__RODATA_PM_OFFSET__+0x7f8818> + 1ce: 81 93 st Z+, r24 + 1d0: 41 15 cp r20, r1 + 1d2: 51 05 cpc r21, r1 + 1d4: 61 05 cpc r22, r1 + 1d6: 71 05 cpc r23, r1 + 1d8: 81 f0 breq .+32 ; 0x1fa + 1da: 90 93 14 08 sts 0x0814, r25 ; 0x800814 <__RODATA_PM_OFFSET__+0x7f8814> + 1de: 41 50 subi r20, 0x01 ; 1 + 1e0: 51 09 sbc r21, r1 + 1e2: 61 09 sbc r22, r1 + 1e4: 71 09 sbc r23, r1 + 1e6: ed cf rjmp .-38 ; 0x1c2 + 1e8: 83 e0 ldi r24, 0x03 ; 3 + 1ea: 80 93 14 08 sts 0x0814, r24 ; 0x800814 <__RODATA_PM_OFFSET__+0x7f8814> + 1ee: 8f ef ldi r24, 0xFF ; 255 + 1f0: 9f ef ldi r25, 0xFF ; 255 + 1f2: 08 95 ret + 1f4: 81 e0 ldi r24, 0x01 ; 1 + 1f6: 90 e0 ldi r25, 0x00 ; 0 + 1f8: 08 95 ret + 1fa: 84 e0 ldi r24, 0x04 ; 4 + 1fc: 80 93 14 08 sts 0x0814, r24 ; 0x800814 <__RODATA_PM_OFFSET__+0x7f8814> + 200: 83 e0 ldi r24, 0x03 ; 3 + 202: 80 93 14 08 sts 0x0814, r24 ; 0x800814 <__RODATA_PM_OFFSET__+0x7f8814> + 206: 80 e0 ldi r24, 0x00 ; 0 + 208: 90 e0 ldi r25, 0x00 ; 0 + 20a: 08 95 ret -00000262 : - 262: 80 93 17 08 sts 0x0817, r24 ; 0x800817 - 266: 80 91 15 08 lds r24, 0x0815 ; 0x800815 - 26a: 86 ff sbrs r24, 6 - 26c: fc cf rjmp .-8 ; 0x266 - 26e: 80 91 15 08 lds r24, 0x0815 ; 0x800815 - 272: 84 ff sbrs r24, 4 - 274: 06 c0 rjmp .+12 ; 0x282 - 276: 83 e0 ldi r24, 0x03 ; 3 - 278: 80 93 14 08 sts 0x0814, r24 ; 0x800814 - 27c: 81 e0 ldi r24, 0x01 ; 1 - 27e: 90 e0 ldi r25, 0x00 ; 0 - 280: 08 95 ret - 282: 83 e0 ldi r24, 0x03 ; 3 - 284: 80 93 14 08 sts 0x0814, r24 ; 0x800814 - 288: 80 e0 ldi r24, 0x00 ; 0 - 28a: 90 e0 ldi r25, 0x00 ; 0 - 28c: 08 95 ret +0000020c : +} -0000028e : - 28e: e0 e0 ldi r30, 0x00 ; 0 - 290: f4 e0 ldi r31, 0x04 ; 4 - 292: 80 81 ld r24, Z - 294: 8b 7f andi r24, 0xFB ; 251 - 296: 80 83 st Z, r24 - 298: 80 81 ld r24, Z - 29a: 87 7f andi r24, 0xF7 ; 247 - 29c: 80 83 st Z, r24 - 29e: a0 e1 ldi r26, 0x10 ; 16 - 2a0: b8 e0 ldi r27, 0x08 ; 8 - 2a2: 8b e0 ldi r24, 0x0B ; 11 - 2a4: 16 96 adiw r26, 0x06 ; 6 - 2a6: 8c 93 st X, r24 - 2a8: 16 97 sbiw r26, 0x06 ; 6 - 2aa: 81 e0 ldi r24, 0x01 ; 1 - 2ac: 13 96 adiw r26, 0x03 ; 3 - 2ae: 8c 93 st X, r24 - 2b0: 13 97 sbiw r26, 0x03 ; 3 - 2b2: 15 96 adiw r26, 0x05 ; 5 - 2b4: 8c 93 st X, r24 - 2b6: 88 e0 ldi r24, 0x08 ; 8 - 2b8: 82 8b std Z+18, r24 ; 0x12 - 2ba: 83 8b std Z+19, r24 ; 0x13 - 2bc: 80 e0 ldi r24, 0x00 ; 0 - 2be: 90 e0 ldi r25, 0x00 ; 0 - 2c0: 08 95 ret -000002c2 : - 2c2: ef 92 push r14 - 2c4: ff 92 push r15 - 2c6: 0f 93 push r16 - 2c8: 1f 93 push r17 - 2ca: cf 93 push r28 - 2cc: 8c 01 movw r16, r24 - 2ce: 7b 01 movw r14, r22 - 2d0: c4 2f mov r28, r20 - 2d2: 84 2f mov r24, r20 - 2d4: 88 0f add r24, r24 - 2d6: c5 df rcall .-118 ; 0x262 - 2d8: 00 97 sbiw r24, 0x00 ; 0 - 2da: 49 f4 brne .+18 ; 0x2ee - 2dc: f8 01 movw r30, r16 - 2de: e0 82 st Z, r14 - 2e0: f1 82 std Z+1, r15 ; 0x01 - 2e2: 4c 2f mov r20, r28 - 2e4: 50 e0 ldi r21, 0x00 ; 0 - 2e6: 44 0f add r20, r20 - 2e8: 55 1f adc r21, r21 - 2ea: 42 83 std Z+2, r20 ; 0x02 - 2ec: 02 c0 rjmp .+4 ; 0x2f2 - 2ee: 8e ef ldi r24, 0xFE ; 254 - 2f0: 9f ef ldi r25, 0xFF ; 255 - 2f2: cf 91 pop r28 - 2f4: 1f 91 pop r17 - 2f6: 0f 91 pop r16 - 2f8: ff 90 pop r15 - 2fa: ef 90 pop r14 - 2fc: 08 95 ret +int cm_i2c_init(void *i2c_inst){ + + PORTA.DIR &= ~(1 << 2); // Clear bit 2 (PA2) + 20c: e0 e0 ldi r30, 0x00 ; 0 + 20e: f4 e0 ldi r31, 0x04 ; 4 + 210: 80 81 ld r24, Z + 212: 8b 7f andi r24, 0xFB ; 251 + 214: 80 83 st Z, r24 + PORTA.DIR &= ~(1 << 3); // Clear bit 3 (PA3) + 216: 80 81 ld r24, Z + 218: 87 7f andi r24, 0xF7 ; 247 + 21a: 80 83 st Z, r24 -000002fe : - 2fe: 0f 93 push r16 - 300: 00 97 sbiw r24, 0x00 ; 0 - 302: 81 f0 breq .+32 ; 0x324 - 304: fc 01 movw r30, r24 - 306: 00 23 and r16, r16 - 308: 19 f0 breq .+6 ; 0x310 - 30a: 01 30 cpi r16, 0x01 ; 1 - 30c: 31 f0 breq .+12 ; 0x31a - 30e: 0d c0 rjmp .+26 ; 0x32a - 310: 82 81 ldd r24, Z+2 ; 0x02 - 312: 61 df rcall .-318 ; 0x1d6 - 314: 80 e0 ldi r24, 0x00 ; 0 - 316: 90 e0 ldi r25, 0x00 ; 0 - 318: 0a c0 rjmp .+20 ; 0x32e - 31a: 82 81 ldd r24, Z+2 ; 0x02 - 31c: 13 df rcall .-474 ; 0x144 - 31e: 80 e0 ldi r24, 0x00 ; 0 - 320: 90 e0 ldi r25, 0x00 ; 0 - 322: 05 c0 rjmp .+10 ; 0x32e - 324: 8f ef ldi r24, 0xFF ; 255 - 326: 9f ef ldi r25, 0xFF ; 255 - 328: 02 c0 rjmp .+4 ; 0x32e - 32a: 80 e0 ldi r24, 0x00 ; 0 - 32c: 90 e0 ldi r25, 0x00 ; 0 - 32e: 0f 91 pop r16 - 330: 08 95 ret + // Set the baud rate for 100kHz with a typical rise time of 300 ns + TWI0.MBAUD = 11; + 21c: a0 e1 ldi r26, 0x10 ; 16 + 21e: b8 e0 ldi r27, 0x08 ; 8 + 220: 8b e0 ldi r24, 0x0B ; 11 + 222: 16 96 adiw r26, 0x06 ; 6 + 224: 8c 93 st X, r24 + 226: 16 97 sbiw r26, 0x06 ; 6 -00000332 <__vector_22>: + // Enable the TWI master and set it to enable operation + TWI0.MCTRLA = TWI_ENABLE_bm; + 228: 81 e0 ldi r24, 0x01 ; 1 + 22a: 13 96 adiw r26, 0x03 ; 3 + 22c: 8c 93 st X, r24 + 22e: 13 97 sbiw r26, 0x03 ; 3 + + /* Set bus state idle */ + TWI0.MSTATUS = TWI_BUSSTATE_IDLE_gc; + 230: 15 96 adiw r26, 0x05 ; 5 + 232: 8c 93 st X, r24 + + // Enable the internal pull-ups for PA2 (SDA) and PA3 (SCL) + PORTA.PIN2CTRL = PORT_PULLUPEN_bm; + 234: 88 e0 ldi r24, 0x08 ; 8 + 236: 82 8b std Z+18, r24 ; 0x12 + PORTA.PIN3CTRL = PORT_PULLUPEN_bm; + 238: 83 8b std Z+19, r24 ; 0x13 + return CM_I2C_OK; +} + 23a: 80 e0 ldi r24, 0x00 ; 0 + 23c: 90 e0 ldi r25, 0x00 ; 0 + 23e: 08 95 ret + +00000240 : + + + +int cm_i2c_addDev(cm_i2c_device_t *inst, void *i2c_inst, uint8_t dev_addr){ + 240: fc 01 movw r30, r24 + + //if(i2c_inst == NULL) return CM_I2C_NOK; + + // Check if device responds! + if(i2c_IsDeviceReady((dev_addr << 1)) != CM_I2C_OK)return CM_I2C_NO_DEVICE; + 242: 84 2f mov r24, r20 + 244: 88 0f add r24, r24 + +} + +int i2c_IsDeviceReady(uint8_t dev_addr){ + + TWI0.MADDR = dev_addr | 0; + 246: 80 93 17 08 sts 0x0817, r24 ; 0x800817 <__RODATA_PM_OFFSET__+0x7f8817> + + // Wait for acknowledgment + while (!(TWI0.MSTATUS & TWI_WIF_bm)); + 24a: 90 91 15 08 lds r25, 0x0815 ; 0x800815 <__RODATA_PM_OFFSET__+0x7f8815> + 24e: 96 ff sbrs r25, 6 + 250: fc cf rjmp .-8 ; 0x24a + + if (TWI0.MSTATUS & TWI_RXACK_bm) { + 252: 80 91 15 08 lds r24, 0x0815 ; 0x800815 <__RODATA_PM_OFFSET__+0x7f8815> + 256: 84 ff sbrs r24, 4 + 258: 06 c0 rjmp .+12 ; 0x266 + // NACK received + TWI0.MCTRLB = TWI_MCMD_STOP_gc; // Send stop condition + 25a: 83 e0 ldi r24, 0x03 ; 3 + 25c: 80 93 14 08 sts 0x0814, r24 ; 0x800814 <__RODATA_PM_OFFSET__+0x7f8814> +int cm_i2c_addDev(cm_i2c_device_t *inst, void *i2c_inst, uint8_t dev_addr){ + + //if(i2c_inst == NULL) return CM_I2C_NOK; + + // Check if device responds! + if(i2c_IsDeviceReady((dev_addr << 1)) != CM_I2C_OK)return CM_I2C_NO_DEVICE; + 260: 8e ef ldi r24, 0xFE ; 254 + 262: 9f ef ldi r25, 0xFF ; 255 + 264: 08 95 ret + TWI0.MCTRLB = TWI_MCMD_STOP_gc; // Send stop condition + return 1; // Error: NACK received + } + + // Send stop condition + TWI0.MCTRLB = TWI_MCMD_STOP_gc; + 266: 83 e0 ldi r24, 0x03 ; 3 + 268: 80 93 14 08 sts 0x0814, r24 ; 0x800814 <__RODATA_PM_OFFSET__+0x7f8814> + + // Check if device responds! + if(i2c_IsDeviceReady((dev_addr << 1)) != CM_I2C_OK)return CM_I2C_NO_DEVICE; + + // add device info if device responds! + inst->i2c_transfer_inst = i2c_inst; + 26c: 60 83 st Z, r22 + 26e: 71 83 std Z+1, r23 ; 0x01 + inst->dev_addr = (dev_addr << 1) & 0b11111110; + 270: 50 e0 ldi r21, 0x00 ; 0 + 272: 44 0f add r20, r20 + 274: 55 1f adc r21, r21 + 276: 42 83 std Z+2, r20 ; 0x02 + + return CM_I2C_OK; + 278: 80 e0 ldi r24, 0x00 ; 0 + 27a: 90 e0 ldi r25, 0x00 ; 0 +} + 27c: 08 95 ret + +0000027e : + + +int cm_i2c_transfer(cm_i2c_device_t *inst, uint8_t *data, uint32_t len, i2c_setget_cm_t set_get){ + 27e: 0f 93 push r16 + + if(inst == NULL) return CM_I2C_NOK; + 280: 00 97 sbiw r24, 0x00 ; 0 + 282: 09 f1 breq .+66 ; 0x2c6 + 284: fb 01 movw r30, r22 + 286: dc 01 movw r26, r24 + + // Check if device responds! + //if(i2c_IsDeviceReady(inst->dev_addr) != CM_I2C_OK)return CM_I2C_NO_DEVICE; + + switch(set_get){ + 288: 00 23 and r16, r16 + 28a: b1 f0 breq .+44 ; 0x2b8 + 28c: 01 30 cpi r16, 0x01 ; 1 + 28e: 21 f0 breq .+8 ; 0x298 + break; + + + } + + return CM_I2C_OK; + 290: 80 e0 ldi r24, 0x00 ; 0 + 292: 90 e0 ldi r25, 0x00 ; 0 + +} + 294: 0f 91 pop r16 + 296: 08 95 ret +} + +int i2c_write(uint8_t dev_addr, void *data, uint32_t len){ + + // Check length + if(len == 0) return CM_I2C_NOK; + 298: 21 15 cp r18, r1 + 29a: 31 05 cpc r19, r1 + 29c: 41 05 cpc r20, r1 + 29e: 51 05 cpc r21, r1 + 2a0: b9 f3 breq .-18 ; 0x290 + i2c_read(inst->dev_addr, data, len); + break; + + case I2C_CM_SET: + //HAL_I2C_Master_Transmit(inst->i2c_transfer_inst, inst->dev_addr, data, len, 1); + i2c_write(inst->dev_addr, data, len); + 2a2: 12 96 adiw r26, 0x02 ; 2 + 2a4: 8c 91 ld r24, X + +#ifdef AVR_ATTINY_402 + +uint8_t i2c_write_devAddr(uint8_t dev_addr){ + + TWI0.MADDR = dev_addr; + 2a6: 80 93 17 08 sts 0x0817, r24 ; 0x800817 <__RODATA_PM_OFFSET__+0x7f8817> + 2aa: ba 01 movw r22, r20 + 2ac: a9 01 movw r20, r18 + 2ae: cf 01 movw r24, r30 + 2b0: 2f df rcall .-418 ; 0x110 + break; + + + } + + return CM_I2C_OK; + 2b2: 80 e0 ldi r24, 0x00 ; 0 + 2b4: 90 e0 ldi r25, 0x00 ; 0 + 2b6: ee cf rjmp .-36 ; 0x294 + + switch(set_get){ + + case I2C_CM_GET: + //HAL_I2C_Master_Receive(inst->i2c_transfer_inst, inst->dev_addr, data, len, 1); + i2c_read(inst->dev_addr, data, len); + 2b8: 12 96 adiw r26, 0x02 ; 2 + 2ba: 8c 91 ld r24, X + 2bc: 67 df rcall .-306 ; 0x18c + break; + + + } + + return CM_I2C_OK; + 2be: 80 e0 ldi r24, 0x00 ; 0 + 2c0: 90 e0 ldi r25, 0x00 ; 0 + +} + 2c2: 0f 91 pop r16 + 2c4: 08 95 ret +} + + +int cm_i2c_transfer(cm_i2c_device_t *inst, uint8_t *data, uint32_t len, i2c_setget_cm_t set_get){ + + if(inst == NULL) return CM_I2C_NOK; + 2c6: 8f ef ldi r24, 0xFF ; 255 + 2c8: 9f ef ldi r25, 0xFF ; 255 + 2ca: e4 cf rjmp .-56 ; 0x294 + +000002cc <__vector_22>: #define BAUD_RATE 9600 static void *s_inst = NULL; get_UART_Event_fpt uart_rx_evt_fpt = NULL; ISR(USART0_RXC_vect) { - 332: 1f 92 push r1 - 334: 0f 92 push r0 - 336: 0f b6 in r0, 0x3f ; 63 - 338: 0f 92 push r0 - 33a: 11 24 eor r1, r1 - 33c: 2f 93 push r18 - 33e: 3f 93 push r19 - 340: 4f 93 push r20 - 342: 5f 93 push r21 - 344: 6f 93 push r22 - 346: 7f 93 push r23 - 348: 8f 93 push r24 - 34a: 9f 93 push r25 - 34c: af 93 push r26 - 34e: bf 93 push r27 - 350: ef 93 push r30 - 352: ff 93 push r31 + 2cc: 1f 92 push r1 + 2ce: 0f 92 push r0 + 2d0: 0f b6 in r0, 0x3f ; 63 + 2d2: 0f 92 push r0 + 2d4: 11 24 eor r1, r1 + 2d6: 2f 93 push r18 + 2d8: 3f 93 push r19 + 2da: 4f 93 push r20 + 2dc: 5f 93 push r21 + 2de: 6f 93 push r22 + 2e0: 7f 93 push r23 + 2e2: 8f 93 push r24 + 2e4: 9f 93 push r25 + 2e6: af 93 push r26 + 2e8: bf 93 push r27 + 2ea: ef 93 push r30 + 2ec: ff 93 push r31 // Read received data if(uart_rx_evt_fpt != NULL) uart_rx_evt_fpt(USART0.RXDATAL); - 354: e0 91 06 3f lds r30, 0x3F06 ; 0x803f06 <__data_end> - 358: f0 91 07 3f lds r31, 0x3F07 ; 0x803f07 <__data_end+0x1> - 35c: 30 97 sbiw r30, 0x00 ; 0 - 35e: 19 f0 breq .+6 ; 0x366 <__vector_22+0x34> - 360: 80 91 00 08 lds r24, 0x0800 ; 0x800800 - 364: 09 95 icall + 2ee: e0 91 06 3f lds r30, 0x3F06 ; 0x803f06 <__data_end> + 2f2: f0 91 07 3f lds r31, 0x3F07 ; 0x803f07 <__data_end+0x1> + 2f6: 30 97 sbiw r30, 0x00 ; 0 + 2f8: 19 f0 breq .+6 ; 0x300 <__vector_22+0x34> + 2fa: 80 91 00 08 lds r24, 0x0800 ; 0x800800 <__RODATA_PM_OFFSET__+0x7f8800> + 2fe: 09 95 icall //cm_uart_send(USART0.RXDATAL); } - 366: ff 91 pop r31 - 368: ef 91 pop r30 - 36a: bf 91 pop r27 - 36c: af 91 pop r26 - 36e: 9f 91 pop r25 - 370: 8f 91 pop r24 - 372: 7f 91 pop r23 - 374: 6f 91 pop r22 - 376: 5f 91 pop r21 - 378: 4f 91 pop r20 - 37a: 3f 91 pop r19 - 37c: 2f 91 pop r18 - 37e: 0f 90 pop r0 - 380: 0f be out 0x3f, r0 ; 63 - 382: 0f 90 pop r0 - 384: 1f 90 pop r1 - 386: 18 95 reti + 300: ff 91 pop r31 + 302: ef 91 pop r30 + 304: bf 91 pop r27 + 306: af 91 pop r26 + 308: 9f 91 pop r25 + 30a: 8f 91 pop r24 + 30c: 7f 91 pop r23 + 30e: 6f 91 pop r22 + 310: 5f 91 pop r21 + 312: 4f 91 pop r20 + 314: 3f 91 pop r19 + 316: 2f 91 pop r18 + 318: 0f 90 pop r0 + 31a: 0f be out 0x3f, r0 ; 63 + 31c: 0f 90 pop r0 + 31e: 1f 90 pop r1 + 320: 18 95 reti -00000388 : +00000322 : void cm_uart_init(void *rtx_inst, get_UART_Event_fpt uart_rx_evt_fp){ - 388: cf 93 push r28 - 38a: df 93 push r29 - 38c: 1f 92 push r1 - 38e: cd b7 in r28, 0x3d ; 61 - 390: de b7 in r29, 0x3e ; 62 - 392: ac 01 movw r20, r24 + 322: cf 93 push r28 + 324: df 93 push r29 + 326: 1f 92 push r1 + 328: cd b7 in r28, 0x3d ; 61 + 32a: de b7 in r29, 0x3e ; 62 + 32c: ac 01 movw r20, r24 //For interrupt-driven USART operation, global interrupts must be disabled during the initialization cli(); - 394: f8 94 cli + 32e: 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; - 396: e0 e0 ldi r30, 0x00 ; 0 - 398: f8 e0 ldi r31, 0x08 ; 8 - 39a: 2c e6 ldi r18, 0x6C ; 108 - 39c: 35 e0 ldi r19, 0x05 ; 5 - 39e: 20 87 std Z+8, r18 ; 0x08 - 3a0: 31 87 std Z+9, r19 ; 0x09 + 330: 2c e6 ldi r18, 0x6C ; 108 + 332: 35 e0 ldi r19, 0x05 ; 5 + 334: 20 93 08 08 sts 0x0808, r18 ; 0x800808 <__RODATA_PM_OFFSET__+0x7f8808> + 338: 30 93 09 08 sts 0x0809, r19 ; 0x800809 <__RODATA_PM_OFFSET__+0x7f8809> // Configure USART0 for 8-bit data, no parity, 1 stop bit USART0.CTRLC = USART_CMODE_ASYNCHRONOUS_gc | // Asynchronous mode - 3a2: 93 e0 ldi r25, 0x03 ; 3 - 3a4: 97 83 std Z+7, r25 ; 0x07 + 33c: 93 e0 ldi r25, 0x03 ; 3 + 33e: 90 93 07 08 sts 0x0807, r25 ; 0x800807 <__RODATA_PM_OFFSET__+0x7f8807> USART_CHSIZE_8BIT_gc | // 8-bit character size USART_PMODE_DISABLED_gc; // No parity // Enable receiver, transmitter, and receive complete interrupt USART0.CTRLB = USART_RXEN_bm | // Enable receiver - 3a6: 90 ec ldi r25, 0xC0 ; 192 - 3a8: 96 83 std Z+6, r25 ; 0x06 + 342: 90 ec ldi r25, 0xC0 ; 192 + 344: 90 93 06 08 sts 0x0806, r25 ; 0x800806 <__RODATA_PM_OFFSET__+0x7f8806> USART_TXEN_bm; // Enable transmitter if((uart_rx_evt_fp != NULL) || (rtx_inst != NULL)){ - 3aa: 61 15 cp r22, r1 - 3ac: 71 05 cpc r23, r1 - 3ae: 11 f4 brne .+4 ; 0x3b4 - 3b0: 45 2b or r20, r21 - 3b2: 39 f0 breq .+14 ; 0x3c2 + 348: 61 15 cp r22, r1 + 34a: 71 05 cpc r23, r1 + 34c: d1 f0 breq .+52 ; 0x382 // Enable RX interrupt USART0.CTRLA = USART_RXCIE_bm; // Enable receive interrupt - 3b4: 80 e8 ldi r24, 0x80 ; 128 - 3b6: 80 93 05 08 sts 0x0805, r24 ; 0x800805 + 34e: 80 e8 ldi r24, 0x80 ; 128 + 350: 80 93 05 08 sts 0x0805, r24 ; 0x800805 <__RODATA_PM_OFFSET__+0x7f8805> s_inst = rtx_inst; uart_rx_evt_fpt = uart_rx_evt_fp; - 3ba: 60 93 06 3f sts 0x3F06, r22 ; 0x803f06 <__data_end> - 3be: 70 93 07 3f sts 0x3F07, r23 ; 0x803f07 <__data_end+0x1> + 354: 60 93 06 3f sts 0x3F06, r22 ; 0x803f06 <__data_end> + 358: 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) { - 3c2: 80 91 04 08 lds r24, 0x0804 ; 0x800804 - 3c6: 88 23 and r24, r24 - 3c8: 24 f4 brge .+8 ; 0x3d2 + 35c: 80 91 04 08 lds r24, 0x0804 ; 0x800804 <__RODATA_PM_OFFSET__+0x7f8804> + 360: 87 ff sbrs r24, 7 + 362: 04 c0 rjmp .+8 ; 0x36c volatile uint8_t dummy = USART0.RXDATAL; // Read RXDATAL to clear the flag - 3ca: 80 91 00 08 lds r24, 0x0800 ; 0x800800 - 3ce: 89 83 std Y+1, r24 ; 0x01 + 364: 80 91 00 08 lds r24, 0x0800 ; 0x800800 <__RODATA_PM_OFFSET__+0x7f8800> + 368: 89 83 std Y+1, r24 ; 0x01 (void)dummy; // Silence unused variable warning - 3d0: 89 81 ldd r24, Y+1 ; 0x01 + 36a: 89 81 ldd r24, Y+1 ; 0x01 } PORTA.DIRSET = (1 << 6); // Set PA1 (TX) as output - 3d2: e0 e0 ldi r30, 0x00 ; 0 - 3d4: f4 e0 ldi r31, 0x04 ; 4 - 3d6: 80 e4 ldi r24, 0x40 ; 64 - 3d8: 81 83 std Z+1, r24 ; 0x01 + 36c: 80 e4 ldi r24, 0x40 ; 64 + 36e: 80 93 01 04 sts 0x0401, r24 ; 0x800401 <__RODATA_PM_OFFSET__+0x7f8401> PORTA.DIRCLR = (1 << 7); // Set PA2 (RX) as input - 3da: 80 e8 ldi r24, 0x80 ; 128 - 3dc: 82 83 std Z+2, r24 ; 0x02 + 372: 80 e8 ldi r24, 0x80 ; 128 + 374: 80 93 02 04 sts 0x0402, r24 ; 0x800402 <__RODATA_PM_OFFSET__+0x7f8402> // Enable global interrupts sei(); - 3de: 78 94 sei + 378: 78 94 sei } - 3e0: 0f 90 pop r0 - 3e2: df 91 pop r29 - 3e4: cf 91 pop r28 - 3e6: 08 95 ret + 37a: 0f 90 pop r0 + 37c: df 91 pop r29 + 37e: cf 91 pop r28 + 380: 08 95 ret -000003e8 : + // Enable receiver, transmitter, and receive complete interrupt + USART0.CTRLB = USART_RXEN_bm | // Enable receiver + USART_TXEN_bm; // Enable transmitter + + if((uart_rx_evt_fp != NULL) || (rtx_inst != NULL)){ + 382: 45 2b or r20, r21 + 384: 21 f7 brne .-56 ; 0x34e + 386: ea cf rjmp .-44 ; 0x35c + +00000388 : int cm_msgSync_Byte_DecodeSC(uint8_t rx_byte){ static cm_msg_startcode_states_t state = CM_MSGSYNC_STATE_INIT; switch (state) - 3e8: e0 91 41 3f lds r30, 0x3F41 ; 0x803f41 - 3ec: e2 30 cpi r30, 0x02 ; 2 - 3ee: 29 f1 breq .+74 ; 0x43a <__LOCK_REGION_LENGTH__+0x3a> - 3f0: 28 f4 brcc .+10 ; 0x3fc - 3f2: ee 23 and r30, r30 - 3f4: 41 f0 breq .+16 ; 0x406 <__LOCK_REGION_LENGTH__+0x6> - 3f6: e1 30 cpi r30, 0x01 ; 1 - 3f8: 91 f0 breq .+36 ; 0x41e <__LOCK_REGION_LENGTH__+0x1e> - 3fa: 40 c0 rjmp .+128 ; 0x47c <__LOCK_REGION_LENGTH__+0x7c> - 3fc: e3 30 cpi r30, 0x03 ; 3 - 3fe: 59 f1 breq .+86 ; 0x456 <__LOCK_REGION_LENGTH__+0x56> - 400: e4 30 cpi r30, 0x04 ; 4 - 402: b9 f1 breq .+110 ; 0x472 <__LOCK_REGION_LENGTH__+0x72> - 404: 3b c0 rjmp .+118 ; 0x47c <__LOCK_REGION_LENGTH__+0x7c> - { + 388: 90 91 41 3f lds r25, 0x3F41 ; 0x803f41 + 38c: 92 30 cpi r25, 0x02 ; 2 + 38e: 41 f1 breq .+80 ; 0x3e0 + 390: 60 f4 brcc .+24 ; 0x3aa + 392: 99 23 and r25, r25 + 394: e1 f0 breq .+56 ; 0x3ce + 396: 91 30 cpi r25, 0x01 ; 1 + 398: 89 f4 brne .+34 ; 0x3bc case CM_MSGSYNC_STATE_INIT: state = (rx_byte == startCode[state])? CM_MSGSYNC_STATE_2 : CM_MSGSYNC_STATE_INIT; - 406: f0 e0 ldi r31, 0x00 ; 0 - 408: ee 54 subi r30, 0x4E ; 78 - 40a: f4 47 sbci r31, 0x74 ; 116 - 40c: 20 81 ld r18, Z - 40e: 91 e0 ldi r25, 0x01 ; 1 - 410: 28 13 cpse r18, r24 - 412: 90 e0 ldi r25, 0x00 ; 0 - 414: 90 93 41 3f sts 0x3F41, r25 ; 0x803f41 + break; + + case CM_MSGSYNC_STATE_2: + state = (rx_byte == startCode[state])? CM_MSGSYNC_STATE_3 : CM_MSGSYNC_STATE_INIT; + 39a: 8a 35 cpi r24, 0x5A ; 90 + 39c: 29 f1 breq .+74 ; 0x3e8 + case CM_MSGSYNC_STATE_3: + state = (rx_byte == startCode[state])? CM_MSGSYNC_STATE_4 : CM_MSGSYNC_STATE_INIT; + break; + + case CM_MSGSYNC_STATE_4: + state = (rx_byte == startCode[state])? CM_MSGSYNC_STATE_5 : CM_MSGSYNC_STATE_INIT; + 39e: 80 e0 ldi r24, 0x00 ; 0 + 3a0: 80 93 41 3f sts 0x3F41, r24 ; 0x803f41 default: state = CM_MSGSYNC_STATE_INIT; break; } return 1; - 418: 81 e0 ldi r24, 0x01 ; 1 - 41a: 90 e0 ldi r25, 0x00 ; 0 + 3a4: 81 e0 ldi r24, 0x01 ; 1 + 3a6: 90 e0 ldi r25, 0x00 ; 0 + state = (rx_byte == startCode[state])? CM_MSGSYNC_STATE_4 : CM_MSGSYNC_STATE_INIT; + break; + + case CM_MSGSYNC_STATE_4: + state = (rx_byte == startCode[state])? CM_MSGSYNC_STATE_5 : CM_MSGSYNC_STATE_INIT; + break; + 3a8: 08 95 ret + +int cm_msgSync_Byte_DecodeSC(uint8_t rx_byte){ + + static cm_msg_startcode_states_t state = CM_MSGSYNC_STATE_INIT; + + switch (state) + 3aa: 93 30 cpi r25, 0x03 ; 3 + 3ac: 61 f0 breq .+24 ; 0x3c6 + 3ae: 94 30 cpi r25, 0x04 ; 4 + 3b0: 29 f4 brne .+10 ; 0x3bc + case CM_MSGSYNC_STATE_4: + state = (rx_byte == startCode[state])? CM_MSGSYNC_STATE_5 : CM_MSGSYNC_STATE_INIT; + break; + + case CM_MSGSYNC_STATE_5: + state = CM_MSGSYNC_STATE_INIT; + 3b2: 10 92 41 3f sts 0x3F41, r1 ; 0x803f41 + return 0; + 3b6: 80 e0 ldi r24, 0x00 ; 0 + 3b8: 90 e0 ldi r25, 0x00 ; 0 + 3ba: 08 95 ret + break; + + default: + state = CM_MSGSYNC_STATE_INIT; + 3bc: 10 92 41 3f sts 0x3F41, r1 ; 0x803f41 + break; + } + + return 1; + 3c0: 81 e0 ldi r24, 0x01 ; 1 + 3c2: 90 e0 ldi r25, 0x00 ; 0 + + +} + 3c4: 08 95 ret + case CM_MSGSYNC_STATE_3: + state = (rx_byte == startCode[state])? CM_MSGSYNC_STATE_4 : CM_MSGSYNC_STATE_INIT; + break; + + case CM_MSGSYNC_STATE_4: + state = (rx_byte == startCode[state])? CM_MSGSYNC_STATE_5 : CM_MSGSYNC_STATE_INIT; + 3c6: 83 34 cpi r24, 0x43 ; 67 + 3c8: 51 f7 brne .-44 ; 0x39e + 3ca: 84 e0 ldi r24, 0x04 ; 4 + 3cc: e9 cf rjmp .-46 ; 0x3a0 + static cm_msg_startcode_states_t state = CM_MSGSYNC_STATE_INIT; + + switch (state) + { + case CM_MSGSYNC_STATE_INIT: + state = (rx_byte == startCode[state])? CM_MSGSYNC_STATE_2 : CM_MSGSYNC_STATE_INIT; + 3ce: 91 e0 ldi r25, 0x01 ; 1 + 3d0: 8f 34 cpi r24, 0x4F ; 79 + 3d2: 09 f0 breq .+2 ; 0x3d6 + 3d4: 90 e0 ldi r25, 0x00 ; 0 + 3d6: 90 93 41 3f sts 0x3F41, r25 ; 0x803f41 + default: + state = CM_MSGSYNC_STATE_INIT; + break; + } + + return 1; + 3da: 81 e0 ldi r24, 0x01 ; 1 + 3dc: 90 e0 ldi r25, 0x00 ; 0 switch (state) { case CM_MSGSYNC_STATE_INIT: state = (rx_byte == startCode[state])? CM_MSGSYNC_STATE_2 : CM_MSGSYNC_STATE_INIT; break; - 41c: 08 95 ret - + 3de: 08 95 ret case CM_MSGSYNC_STATE_2: state = (rx_byte == startCode[state])? CM_MSGSYNC_STATE_3 : CM_MSGSYNC_STATE_INIT; - 41e: f0 e0 ldi r31, 0x00 ; 0 - 420: ee 54 subi r30, 0x4E ; 78 - 422: f4 47 sbci r31, 0x74 ; 116 - 424: 90 81 ld r25, Z - 426: 89 13 cpse r24, r25 - 428: 02 c0 rjmp .+4 ; 0x42e <__LOCK_REGION_LENGTH__+0x2e> - 42a: 82 e0 ldi r24, 0x02 ; 2 - 42c: 01 c0 rjmp .+2 ; 0x430 <__LOCK_REGION_LENGTH__+0x30> - 42e: 80 e0 ldi r24, 0x00 ; 0 - 430: 80 93 41 3f sts 0x3F41, r24 ; 0x803f41 - default: - state = CM_MSGSYNC_STATE_INIT; break; - } - - return 1; - 434: 81 e0 ldi r24, 0x01 ; 1 - 436: 90 e0 ldi r25, 0x00 ; 0 + + case CM_MSGSYNC_STATE_3: + state = (rx_byte == startCode[state])? CM_MSGSYNC_STATE_4 : CM_MSGSYNC_STATE_INIT; + 3e0: 81 33 cpi r24, 0x31 ; 49 + 3e2: e9 f6 brne .-70 ; 0x39e + 3e4: 83 e0 ldi r24, 0x03 ; 3 + 3e6: dc cf rjmp .-72 ; 0x3a0 + case CM_MSGSYNC_STATE_INIT: state = (rx_byte == startCode[state])? CM_MSGSYNC_STATE_2 : CM_MSGSYNC_STATE_INIT; break; case CM_MSGSYNC_STATE_2: state = (rx_byte == startCode[state])? CM_MSGSYNC_STATE_3 : CM_MSGSYNC_STATE_INIT; - break; - 438: 08 95 ret - - case CM_MSGSYNC_STATE_3: - state = (rx_byte == startCode[state])? CM_MSGSYNC_STATE_4 : CM_MSGSYNC_STATE_INIT; - 43a: f0 e0 ldi r31, 0x00 ; 0 - 43c: ee 54 subi r30, 0x4E ; 78 - 43e: f4 47 sbci r31, 0x74 ; 116 - 440: 90 81 ld r25, Z - 442: 89 13 cpse r24, r25 - 444: 02 c0 rjmp .+4 ; 0x44a <__LOCK_REGION_LENGTH__+0x4a> - 446: 83 e0 ldi r24, 0x03 ; 3 - 448: 01 c0 rjmp .+2 ; 0x44c <__LOCK_REGION_LENGTH__+0x4c> - 44a: 80 e0 ldi r24, 0x00 ; 0 - 44c: 80 93 41 3f sts 0x3F41, r24 ; 0x803f41 - default: - state = CM_MSGSYNC_STATE_INIT; - break; - } - - return 1; - 450: 81 e0 ldi r24, 0x01 ; 1 - 452: 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; - 454: 08 95 ret - - case CM_MSGSYNC_STATE_4: - state = (rx_byte == startCode[state])? CM_MSGSYNC_STATE_5 : CM_MSGSYNC_STATE_INIT; - 456: f0 e0 ldi r31, 0x00 ; 0 - 458: ee 54 subi r30, 0x4E ; 78 - 45a: f4 47 sbci r31, 0x74 ; 116 - 45c: 90 81 ld r25, Z - 45e: 89 13 cpse r24, r25 - 460: 02 c0 rjmp .+4 ; 0x466 <__LOCK_REGION_LENGTH__+0x66> - 462: 84 e0 ldi r24, 0x04 ; 4 - 464: 01 c0 rjmp .+2 ; 0x468 <__LOCK_REGION_LENGTH__+0x68> - 466: 80 e0 ldi r24, 0x00 ; 0 - 468: 80 93 41 3f sts 0x3F41, r24 ; 0x803f41 - default: - state = CM_MSGSYNC_STATE_INIT; - break; - } - - return 1; - 46c: 81 e0 ldi r24, 0x01 ; 1 - 46e: 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; - 470: 08 95 ret - - case CM_MSGSYNC_STATE_5: - state = CM_MSGSYNC_STATE_INIT; - 472: 10 92 41 3f sts 0x3F41, r1 ; 0x803f41 - return 0; - 476: 80 e0 ldi r24, 0x00 ; 0 - 478: 90 e0 ldi r25, 0x00 ; 0 - 47a: 08 95 ret - break; - - default: - state = CM_MSGSYNC_STATE_INIT; - 47c: 10 92 41 3f sts 0x3F41, r1 ; 0x803f41 - break; - } - - return 1; - 480: 81 e0 ldi r24, 0x01 ; 1 - 482: 90 e0 ldi r25, 0x00 ; 0 - - -} - 484: 08 95 ret + 3e8: 82 e0 ldi r24, 0x02 ; 2 + 3ea: da cf rjmp .-76 ; 0x3a0 -00000486 : +000003ec : 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) - 486: 90 91 40 3f lds r25, 0x3F40 ; 0x803f40 - 48a: 93 30 cpi r25, 0x03 ; 3 - 48c: d1 f0 breq .+52 ; 0x4c2 - 48e: 28 f4 brcc .+10 ; 0x49a - 490: 99 23 and r25, r25 - 492: 41 f0 breq .+16 ; 0x4a4 - 494: 91 30 cpi r25, 0x01 ; 1 - 496: 79 f0 breq .+30 ; 0x4b6 - 498: 47 c0 rjmp .+142 ; 0x528 - 49a: 94 30 cpi r25, 0x04 ; 4 - 49c: d1 f0 breq .+52 ; 0x4d2 - 49e: 95 30 cpi r25, 0x05 ; 5 - 4a0: 29 f1 breq .+74 ; 0x4ec - 4a2: 42 c0 rjmp .+132 ; 0x528 - { - case CM_MSG_WAIT_FOR_STARTCODE: + 3ec: 90 91 40 3f lds r25, 0x3F40 ; 0x803f40 + 3f0: 93 30 cpi r25, 0x03 ; 3 + 3f2: 09 f4 brne .+2 ; 0x3f6 + 3f4: 4b c0 rjmp .+150 ; 0x48c <__LOCK_REGION_LENGTH__+0x8c> + 3f6: 68 f4 brcc .+26 ; 0x412 <__LOCK_REGION_LENGTH__+0x12> + 3f8: 99 23 and r25, r25 + 3fa: 09 f4 brne .+2 ; 0x3fe + 3fc: 40 c0 rjmp .+128 ; 0x47e <__LOCK_REGION_LENGTH__+0x7e> + 3fe: 91 30 cpi r25, 0x01 ; 1 + 400: 29 f4 brne .+10 ; 0x40c <__LOCK_REGION_LENGTH__+0xc> if(!cm_msgSync_Byte_DecodeSC(rx_byte)) state = CM_MSG_DECODE_STATE_GET_SIZE_BYTE; - 4a4: a1 df rcall .-190 ; 0x3e8 - 4a6: 89 2b or r24, r25 - 4a8: 19 f4 brne .+6 ; 0x4b0 - 4aa: 81 e0 ldi r24, 0x01 ; 1 - 4ac: 80 93 40 3f sts 0x3F40, r24 ; 0x803f40 data_bytes_idx = 0; - 4b0: 10 92 3f 3f sts 0x3F3F, r1 ; 0x803f3f break; - 4b4: 39 c0 rjmp .+114 ; 0x528 case CM_MSG_DECODE_STATE_GET_SIZE_BYTE: msg.msg_data_size = rx_byte; - 4b6: 80 93 08 3f sts 0x3F08, r24 ; 0x803f08 + 402: 80 93 08 3f sts 0x3F08, r24 ; 0x803f08 state = CM_MSG_DECODE_STATE_GET_CRC_BYTE1; - 4ba: 83 e0 ldi r24, 0x03 ; 3 - 4bc: 80 93 40 3f sts 0x3F40, r24 ; 0x803f40 - - break; - 4c0: 33 c0 rjmp .+102 ; 0x528 - - case CM_MSG_DECODE_STATE_GET_CRC_BYTE1: - msg.msg_data_crc = (rx_byte << 8) & 0xff00; - 4c2: e8 e0 ldi r30, 0x08 ; 8 - 4c4: ff e3 ldi r31, 0x3F ; 63 - 4c6: 11 82 std Z+1, r1 ; 0x01 - 4c8: 82 83 std Z+2, r24 ; 0x02 - state = CM_MSG_DECODE_STATE_GET_CRC_BYTE2; - 4ca: 84 e0 ldi r24, 0x04 ; 4 - 4cc: 80 93 40 3f sts 0x3F40, r24 ; 0x803f40 - break; - 4d0: 2b c0 rjmp .+86 ; 0x528 - - case CM_MSG_DECODE_STATE_GET_CRC_BYTE2: - msg.msg_data_crc |= rx_byte & 0xff; - 4d2: e8 e0 ldi r30, 0x08 ; 8 - 4d4: ff e3 ldi r31, 0x3F ; 63 - 4d6: 21 81 ldd r18, Z+1 ; 0x01 - 4d8: 32 81 ldd r19, Z+2 ; 0x02 - 4da: a9 01 movw r20, r18 - 4dc: 48 2b or r20, r24 - 4de: ca 01 movw r24, r20 - 4e0: 81 83 std Z+1, r24 ; 0x01 - 4e2: 92 83 std Z+2, r25 ; 0x02 - state = CM_MSG_DECODE_STATE_GET_DATA; - 4e4: 85 e0 ldi r24, 0x05 ; 5 - 4e6: 80 93 40 3f sts 0x3F40, r24 ; 0x803f40 - break; - 4ea: 1e c0 rjmp .+60 ; 0x528 - - case CM_MSG_DECODE_STATE_GET_DATA: - msg.msg_data[data_bytes_idx] = rx_byte; - 4ec: 90 91 3f 3f lds r25, 0x3F3F ; 0x803f3f - 4f0: e9 2f mov r30, r25 - 4f2: f0 e0 ldi r31, 0x00 ; 0 - 4f4: e8 5f subi r30, 0xF8 ; 248 - 4f6: f0 4c sbci r31, 0xC0 ; 192 - 4f8: 83 83 std Z+3, r24 ; 0x03 - data_bytes_idx++; - 4fa: 81 e0 ldi r24, 0x01 ; 1 - 4fc: 89 0f add r24, r25 - 4fe: 80 93 3f 3f sts 0x3F3F, r24 ; 0x803f3f - if(data_bytes_idx >= msg.msg_data_size){ - 502: 90 91 08 3f lds r25, 0x3F08 ; 0x803f08 - 506: 89 17 cp r24, r25 - 508: 78 f0 brcs .+30 ; 0x528 - // calculate CRC.. - - // Run function pointer msg evt.. - s_msg_cmplete_evt_fpt(s_msg_cmplete_evt_inst,&(msg.msg_data[0])); - 50a: e0 91 44 3f lds r30, 0x3F44 ; 0x803f44 - 50e: f0 91 45 3f lds r31, 0x3F45 ; 0x803f45 - 512: 6b e0 ldi r22, 0x0B ; 11 - 514: 7f e3 ldi r23, 0x3F ; 63 - 516: 80 91 42 3f lds r24, 0x3F42 ; 0x803f42 - 51a: 90 91 43 3f lds r25, 0x3F43 ; 0x803f43 - 51e: 09 95 icall - state = CM_MSG_WAIT_FOR_STARTCODE; - 520: 10 92 40 3f sts 0x3F40, r1 ; 0x803f40 - data_bytes_idx = 0; - 524: 10 92 3f 3f sts 0x3F3F, r1 ; 0x803f3f + 406: 83 e0 ldi r24, 0x03 ; 3 + 408: 80 93 40 3f sts 0x3F40, r24 ; 0x803f40 } break; } return 0; } - 528: 80 e0 ldi r24, 0x00 ; 0 - 52a: 90 e0 ldi r25, 0x00 ; 0 - 52c: 08 95 ret + 40c: 80 e0 ldi r24, 0x00 ; 0 + 40e: 90 e0 ldi r25, 0x00 ; 0 + 410: 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) + 412: 94 30 cpi r25, 0x04 ; 4 + 414: 19 f1 breq .+70 ; 0x45c <__LOCK_REGION_LENGTH__+0x5c> + 416: 95 30 cpi r25, 0x05 ; 5 + 418: c9 f7 brne .-14 ; 0x40c <__LOCK_REGION_LENGTH__+0xc> + msg.msg_data_crc |= rx_byte & 0xff; + state = CM_MSG_DECODE_STATE_GET_DATA; + break; + + case CM_MSG_DECODE_STATE_GET_DATA: + msg.msg_data[data_bytes_idx] = rx_byte; + 41a: 90 91 3f 3f lds r25, 0x3F3F ; 0x803f3f + 41e: e9 2f mov r30, r25 + 420: f0 e0 ldi r31, 0x00 ; 0 + 422: e8 5f subi r30, 0xF8 ; 248 + 424: f0 4c sbci r31, 0xC0 ; 192 + 426: 83 83 std Z+3, r24 ; 0x03 + data_bytes_idx++; + 428: 81 e0 ldi r24, 0x01 ; 1 + 42a: 89 0f add r24, r25 + 42c: 80 93 3f 3f sts 0x3F3F, r24 ; 0x803f3f + if(data_bytes_idx >= msg.msg_data_size){ + 430: 90 91 08 3f lds r25, 0x3F08 ; 0x803f08 + 434: 89 17 cp r24, r25 + 436: 50 f3 brcs .-44 ; 0x40c <__LOCK_REGION_LENGTH__+0xc> + // calculate CRC.. + + // Run function pointer msg evt.. + s_msg_cmplete_evt_fpt(s_msg_cmplete_evt_inst,&(msg.msg_data[0])); + 438: e0 91 44 3f lds r30, 0x3F44 ; 0x803f44 + 43c: f0 91 45 3f lds r31, 0x3F45 ; 0x803f45 + 440: 6b e0 ldi r22, 0x0B ; 11 + 442: 7f e3 ldi r23, 0x3F ; 63 + 444: 80 91 42 3f lds r24, 0x3F42 ; 0x803f42 + 448: 90 91 43 3f lds r25, 0x3F43 ; 0x803f43 + 44c: 09 95 icall + state = CM_MSG_WAIT_FOR_STARTCODE; + 44e: 10 92 40 3f sts 0x3F40, r1 ; 0x803f40 + data_bytes_idx = 0; + 452: 10 92 3f 3f sts 0x3F3F, r1 ; 0x803f3f + + } + break; + } + return 0; +} + 456: 80 e0 ldi r24, 0x00 ; 0 + 458: 90 e0 ldi r25, 0x00 ; 0 + 45a: 08 95 ret + msg.msg_data_crc = (rx_byte << 8) & 0xff00; + state = CM_MSG_DECODE_STATE_GET_CRC_BYTE2; + break; + + case CM_MSG_DECODE_STATE_GET_CRC_BYTE2: + msg.msg_data_crc |= rx_byte & 0xff; + 45c: 20 91 09 3f lds r18, 0x3F09 ; 0x803f09 + 460: 30 91 0a 3f lds r19, 0x3F0A ; 0x803f0a + 464: a9 01 movw r20, r18 + 466: 48 2b or r20, r24 + 468: ca 01 movw r24, r20 + 46a: 80 93 09 3f sts 0x3F09, r24 ; 0x803f09 + 46e: 90 93 0a 3f sts 0x3F0A, r25 ; 0x803f0a + state = CM_MSG_DECODE_STATE_GET_DATA; + 472: 85 e0 ldi r24, 0x05 ; 5 + 474: 80 93 40 3f sts 0x3F40, r24 ; 0x803f40 + + } + break; + } + return 0; +} + 478: 80 e0 ldi r24, 0x00 ; 0 + 47a: 90 e0 ldi r25, 0x00 ; 0 + 47c: 08 95 ret + static uint8_t data_bytes_idx = 0; + + switch (state) + { + case CM_MSG_WAIT_FOR_STARTCODE: + if(!cm_msgSync_Byte_DecodeSC(rx_byte)) state = CM_MSG_DECODE_STATE_GET_SIZE_BYTE; + 47e: 84 df rcall .-248 ; 0x388 + 480: 89 2b or r24, r25 + 482: 39 f7 brne .-50 ; 0x452 <__LOCK_REGION_LENGTH__+0x52> + 484: 81 e0 ldi r24, 0x01 ; 1 + 486: 80 93 40 3f sts 0x3F40, r24 ; 0x803f40 + 48a: e3 cf rjmp .-58 ; 0x452 <__LOCK_REGION_LENGTH__+0x52> + state = CM_MSG_DECODE_STATE_GET_CRC_BYTE1; + + break; + + case CM_MSG_DECODE_STATE_GET_CRC_BYTE1: + msg.msg_data_crc = (rx_byte << 8) & 0xff00; + 48c: 10 92 09 3f sts 0x3F09, r1 ; 0x803f09 + 490: 80 93 0a 3f sts 0x3F0A, r24 ; 0x803f0a + state = CM_MSG_DECODE_STATE_GET_CRC_BYTE2; + 494: 84 e0 ldi r24, 0x04 ; 4 + 496: 80 93 40 3f sts 0x3F40, r24 ; 0x803f40 + + } + break; + } + return 0; +} + 49a: 80 e0 ldi r24, 0x00 ; 0 + 49c: 90 e0 ldi r25, 0x00 ; 0 + 49e: 08 95 ret -0000052e : +000004a0 : 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; - 52e: 00 97 sbiw r24, 0x00 ; 0 - 530: 59 f0 breq .+22 ; 0x548 - 532: 61 15 cp r22, r1 - 534: 71 05 cpc r23, r1 - 536: 41 f0 breq .+16 ; 0x548 + 4a0: 00 97 sbiw r24, 0x00 ; 0 + 4a2: 59 f0 breq .+22 ; 0x4ba + 4a4: 61 15 cp r22, r1 + 4a6: 71 05 cpc r23, r1 + 4a8: 41 f0 breq .+16 ; 0x4ba s_msg_cmplete_evt_inst = msg_cmplete_evt_inst; - 538: 80 93 42 3f sts 0x3F42, r24 ; 0x803f42 - 53c: 90 93 43 3f sts 0x3F43, r25 ; 0x803f43 + 4aa: 80 93 42 3f sts 0x3F42, r24 ; 0x803f42 + 4ae: 90 93 43 3f sts 0x3F43, r25 ; 0x803f43 s_msg_cmplete_evt_fpt = msg_cmplete_evt_fp; - 540: 60 93 44 3f sts 0x3F44, r22 ; 0x803f44 - 544: 70 93 45 3f sts 0x3F45, r23 ; 0x803f45 - 548: 08 95 ret + 4b2: 60 93 44 3f sts 0x3F44, r22 ; 0x803f44 + 4b6: 70 93 45 3f sts 0x3F45, r23 ; 0x803f45 + 4ba: 08 95 ret -0000054a : - //storno_pll_param_msg temp_msg; - //uint8_t *msg_ptr = (void*)&temp_msg; - -static uint8_t isStructValid(storno_xtal_app_t *inst){ - - if(inst->si5351_dev == NULL) return 1; - 54a: fc 01 movw r30, r24 - 54c: 22 81 ldd r18, Z+2 ; 0x02 - 54e: 33 81 ldd r19, Z+3 ; 0x03 - 550: 23 2b or r18, r19 - 552: 21 f0 breq .+8 ; 0x55c - if(inst == NULL)return 1; - 554: 89 2b or r24, r25 - 556: 21 f4 brne .+8 ; 0x560 - 558: 81 e0 ldi r24, 0x01 ; 1 - 55a: 08 95 ret - //storno_pll_param_msg temp_msg; - //uint8_t *msg_ptr = (void*)&temp_msg; - -static uint8_t isStructValid(storno_xtal_app_t *inst){ - - if(inst->si5351_dev == NULL) return 1; - 55c: 81 e0 ldi r24, 0x01 ; 1 - 55e: 08 95 ret - if(inst == NULL)return 1; - - return 0; - 560: 80 e0 ldi r24, 0x00 ; 0 -} - 562: 08 95 ret - -00000564 : - cm_setCLKControl(inst->si5351_dev,output,SI5351_CLK_POWER_UP); +000004bc : + } } -uint8_t size = 0; -static void cqm6xx_app_loadPLLParam(storno_xtal_app_t *inst){ - 564: cf 93 push r28 - 566: df 93 push r29 + +static void cqm_setPLLParam(storno_xtal_app_t *inst, si5351_PLLs pll_num, si5351_Outputs output){ + 4bc: 9f 92 push r9 + 4be: af 92 push r10 + 4c0: bf 92 push r11 + 4c2: cf 92 push r12 + 4c4: df 92 push r13 + 4c6: ef 92 push r14 + 4c8: ff 92 push r15 + 4ca: 0f 93 push r16 + 4cc: 1f 93 push r17 + 4ce: cf 93 push r28 + 4d0: df 93 push r29 + 4d2: ec 01 movw r28, r24 + 4d4: 94 2e mov r9, r20 - size = sizeof(storno_pll_param_msg); - 568: 29 e1 ldi r18, 0x19 ; 25 - 56a: 20 93 46 3f sts 0x3F46, r18 ; 0x803f46 - - // Read settings for PLLA first - cm_EEPROM_read((uint8_t*)PLLA_SETTINGS_EEPROM_ADDR,(uint8_t *)&inst->pll_param_data,size); - 56e: ec 01 movw r28, r24 - 570: 24 96 adiw r28, 0x04 ; 4 - 572: 49 e1 ldi r20, 0x19 ; 25 - 574: be 01 movw r22, r28 - 576: 80 e0 ldi r24, 0x00 ; 0 - 578: 90 e0 ldi r25, 0x00 ; 0 - 57a: 96 dd rcall .-1236 ; 0xa8 + cm_setPllParamRaw(inst->si5351_dev,pll_num, inst->pll_param_data.MSNx_P1, inst->pll_param_data.MSNx_P2, inst->pll_param_data.MSNx_P3); + 4d6: ad 84 ldd r10, Y+13 ; 0x0d + 4d8: be 84 ldd r11, Y+14 ; 0x0e + 4da: cf 84 ldd r12, Y+15 ; 0x0f + 4dc: d8 88 ldd r13, Y+16 ; 0x10 + 4de: e9 84 ldd r14, Y+9 ; 0x09 + 4e0: fa 84 ldd r15, Y+10 ; 0x0a + 4e2: 0b 85 ldd r16, Y+11 ; 0x0b + 4e4: 1c 85 ldd r17, Y+12 ; 0x0c + 4e6: 2d 81 ldd r18, Y+5 ; 0x05 + 4e8: 3e 81 ldd r19, Y+6 ; 0x06 + 4ea: 4f 81 ldd r20, Y+7 ; 0x07 + 4ec: 58 85 ldd r21, Y+8 ; 0x08 + 4ee: 8a 81 ldd r24, Y+2 ; 0x02 + 4f0: 9b 81 ldd r25, Y+3 ; 0x03 + 4f2: eb d1 rcall .+982 ; 0x8ca #else //round up by default __ticks_dc = (uint32_t)(ceil(fabs(__tmp))); #endif __builtin_avr_delay_cycles(__ticks_dc); - 57c: 81 e4 ldi r24, 0x41 ; 65 - 57e: 93 e0 ldi r25, 0x03 ; 3 - 580: 01 97 sbiw r24, 0x01 ; 1 - 582: f1 f7 brne .-4 ; 0x580 - 584: 00 00 nop - //cqm_setPLLParam(inst, SI5351_PLL_A, SI5351_OUTPUT_0); - //cm_setCLKControl(inst->si5351_dev,SI5351_OUTPUT_0,SI5351_CLK_POWER_UP); - //_delay_ms(1); - - - cm_EEPROM_read((uint8_t*)PLLB_SETTINGS_EEPROM_ADDR,(uint8_t *)&inst->pll_param_data,sizeof(storno_pll_param_msg)); - 586: 49 e1 ldi r20, 0x19 ; 25 - 588: be 01 movw r22, r28 - 58a: 80 e2 ldi r24, 0x20 ; 32 - 58c: 90 e0 ldi r25, 0x00 ; 0 - 58e: 8c dd rcall .-1256 ; 0xa8 - //cm_setCLKControl(inst->si5351_dev,SI5351_OUTPUT_1,SI5351_CLK_POWER_UP); - - //inst->pll_param_ptr = NULL; + 4f4: 81 e4 ldi r24, 0x41 ; 65 + 4f6: 93 e0 ldi r25, 0x03 ; 3 + 4f8: 01 97 sbiw r24, 0x01 ; 1 + 4fa: f1 f7 brne .-4 ; 0x4f8 + 4fc: 00 00 nop + _delay_ms(1); + cm_setOutputMultiSynthRaw(inst->si5351_dev,output, inst->pll_param_data.MSx_P1, inst->pll_param_data.MSx_P2, inst->pll_param_data.MSx_P3); + 4fe: a9 8c ldd r10, Y+25 ; 0x19 + 500: ba 8c ldd r11, Y+26 ; 0x1a + 502: cb 8c ldd r12, Y+27 ; 0x1b + 504: dc 8c ldd r13, Y+28 ; 0x1c + 506: ed 88 ldd r14, Y+21 ; 0x15 + 508: fe 88 ldd r15, Y+22 ; 0x16 + 50a: 0f 89 ldd r16, Y+23 ; 0x17 + 50c: 18 8d ldd r17, Y+24 ; 0x18 + 50e: 29 89 ldd r18, Y+17 ; 0x11 + 510: 3a 89 ldd r19, Y+18 ; 0x12 + 512: 4b 89 ldd r20, Y+19 ; 0x13 + 514: 5c 89 ldd r21, Y+20 ; 0x14 + 516: 69 2d mov r22, r9 + 518: 8a 81 ldd r24, Y+2 ; 0x02 + 51a: 9b 81 ldd r25, Y+3 ; 0x03 + 51c: 51 d2 rcall .+1186 ; 0x9c0 + 51e: 81 e4 ldi r24, 0x41 ; 65 + 520: 93 e0 ldi r25, 0x03 ; 3 + 522: 01 97 sbiw r24, 0x01 ; 1 + 524: f1 f7 brne .-4 ; 0x522 + 526: 00 00 nop + _delay_ms(1); + cm_setCLKControl(inst->si5351_dev,output,SI5351_CLK_POWER_UP); + 528: 40 e0 ldi r20, 0x00 ; 0 + 52a: 69 2d mov r22, r9 + 52c: 8a 81 ldd r24, Y+2 ; 0x02 + 52e: 9b 81 ldd r25, Y+3 ; 0x03 } - 590: df 91 pop r29 - 592: cf 91 pop r28 - 594: 08 95 ret + 530: df 91 pop r29 + 532: cf 91 pop r28 + 534: 1f 91 pop r17 + 536: 0f 91 pop r16 + 538: ff 90 pop r15 + 53a: ef 90 pop r14 + 53c: df 90 pop r13 + 53e: cf 90 pop r12 + 540: bf 90 pop r11 + 542: af 90 pop r10 + 544: 9f 90 pop r9 + + cm_setPllParamRaw(inst->si5351_dev,pll_num, inst->pll_param_data.MSNx_P1, inst->pll_param_data.MSNx_P2, inst->pll_param_data.MSNx_P3); + _delay_ms(1); + cm_setOutputMultiSynthRaw(inst->si5351_dev,output, inst->pll_param_data.MSx_P1, inst->pll_param_data.MSx_P2, inst->pll_param_data.MSx_P3); + _delay_ms(1); + cm_setCLKControl(inst->si5351_dev,output,SI5351_CLK_POWER_UP); + 546: fd c2 rjmp .+1530 ; 0xb42 -00000596 : +00000548 : if(inst == NULL)return 1; return 0; } static void cqm6xx_app_updateOsc(storno_xtal_app_t *inst){ - 596: cf 93 push r28 - 598: df 93 push r29 - 59a: ec 01 movw r28, r24 + 548: cf 93 push r28 + 54a: df 93 push r29 + 54c: fc 01 movw r30, r24 + //storno_pll_param_msg temp_msg; + //uint8_t *msg_ptr = (void*)&temp_msg; + +static uint8_t isStructValid(storno_xtal_app_t *inst){ + + if(inst->si5351_dev == NULL) return 1; + 54e: 82 81 ldd r24, Z+2 ; 0x02 + 550: 93 81 ldd r25, Z+3 ; 0x03 + 552: 89 2b or r24, r25 + 554: 09 f1 breq .+66 ; 0x598 + if(inst == NULL)return 1; + 556: 30 97 sbiw r30, 0x00 ; 0 + 558: f9 f0 breq .+62 ; 0x598 // Check Struct if(isStructValid(inst) != 0)return; - 59c: d6 df rcall .-84 ; 0x54a - 59e: 81 11 cpse r24, r1 - 5a0: 32 c0 rjmp .+100 ; 0x606 // 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; - 5a2: 89 81 ldd r24, Y+1 ; 0x01 - 5a4: 98 81 ld r25, Y - 5a6: 89 17 cp r24, r25 - 5a8: 71 f1 breq .+92 ; 0x606 + 55a: 81 81 ldd r24, Z+1 ; 0x01 + 55c: 90 81 ld r25, Z + 55e: 89 17 cp r24, r25 + 560: d9 f0 breq .+54 ; 0x598 + 562: ef 01 movw r28, r30 switch(inst->state_next){ - 5aa: 81 30 cpi r24, 0x01 ; 1 - 5ac: 19 f0 breq .+6 ; 0x5b4 - 5ae: 82 30 cpi r24, 0x02 ; 2 - 5b0: b1 f0 breq .+44 ; 0x5de - 5b2: 29 c0 rjmp .+82 ; 0x606 - 5b4: 81 e4 ldi r24, 0x41 ; 65 - 5b6: 93 e0 ldi r25, 0x03 ; 3 - 5b8: 01 97 sbiw r24, 0x01 ; 1 - 5ba: f1 f7 brne .-4 ; 0x5b8 - 5bc: 00 00 nop - - case STORNO_APP_RX_MODE: - _delay_ms(1); - cm_setOutputEnable(inst->si5351_dev,SI5351_OUTPUT_0,SI5351_OUTPUT_ENABLE); // RX - 5be: 40 e0 ldi r20, 0x00 ; 0 - 5c0: 60 e0 ldi r22, 0x00 ; 0 - 5c2: 8a 81 ldd r24, Y+2 ; 0x02 - 5c4: 9b 81 ldd r25, Y+3 ; 0x03 - 5c6: ec d0 rcall .+472 ; 0x7a0 - 5c8: 81 e4 ldi r24, 0x41 ; 65 - 5ca: 93 e0 ldi r25, 0x03 ; 3 - 5cc: 01 97 sbiw r24, 0x01 ; 1 - 5ce: f1 f7 brne .-4 ; 0x5cc - 5d0: 00 00 nop - _delay_ms(1); - cm_setOutputEnable(inst->si5351_dev,SI5351_OUTPUT_1,SI5351_OUTPUT_DISABLE); // TX - 5d2: 41 e0 ldi r20, 0x01 ; 1 - 5d4: 61 e0 ldi r22, 0x01 ; 1 - 5d6: 8a 81 ldd r24, Y+2 ; 0x02 - 5d8: 9b 81 ldd r25, Y+3 ; 0x03 - 5da: e2 d0 rcall .+452 ; 0x7a0 + 564: 81 30 cpi r24, 0x01 ; 1 + 566: d9 f0 breq .+54 ; 0x59e + 568: 82 30 cpi r24, 0x02 ; 2 + 56a: b1 f4 brne .+44 ; 0x598 + 56c: 81 e4 ldi r24, 0x41 ; 65 + 56e: 93 e0 ldi r25, 0x03 ; 3 + 570: 01 97 sbiw r24, 0x01 ; 1 + 572: f1 f7 brne .-4 ; 0x570 + 574: 00 00 nop break; - 5dc: 14 c0 rjmp .+40 ; 0x606 - 5de: 81 e4 ldi r24, 0x41 ; 65 - 5e0: 93 e0 ldi r25, 0x03 ; 3 - 5e2: 01 97 sbiw r24, 0x01 ; 1 - 5e4: f1 f7 brne .-4 ; 0x5e2 - 5e6: 00 00 nop case STORNO_APP_TX_MODE: _delay_ms(1); cm_setOutputEnable(inst->si5351_dev,SI5351_OUTPUT_0,SI5351_OUTPUT_DISABLE); // RX - 5e8: 41 e0 ldi r20, 0x01 ; 1 - 5ea: 60 e0 ldi r22, 0x00 ; 0 - 5ec: 8a 81 ldd r24, Y+2 ; 0x02 - 5ee: 9b 81 ldd r25, Y+3 ; 0x03 - 5f0: d7 d0 rcall .+430 ; 0x7a0 - 5f2: 81 e4 ldi r24, 0x41 ; 65 - 5f4: 93 e0 ldi r25, 0x03 ; 3 - 5f6: 01 97 sbiw r24, 0x01 ; 1 - 5f8: f1 f7 brne .-4 ; 0x5f6 - 5fa: 00 00 nop + 576: 41 e0 ldi r20, 0x01 ; 1 + 578: 60 e0 ldi r22, 0x00 ; 0 + 57a: 82 81 ldd r24, Z+2 ; 0x02 + 57c: 93 81 ldd r25, Z+3 ; 0x03 + 57e: b4 d2 rcall .+1384 ; 0xae8 + 580: 81 e4 ldi r24, 0x41 ; 65 + 582: 93 e0 ldi r25, 0x03 ; 3 + 584: 01 97 sbiw r24, 0x01 ; 1 + 586: f1 f7 brne .-4 ; 0x584 + 588: 00 00 nop _delay_ms(1); cm_setOutputEnable(inst->si5351_dev,SI5351_OUTPUT_1,SI5351_OUTPUT_ENABLE); // TX - 5fc: 40 e0 ldi r20, 0x00 ; 0 - 5fe: 61 e0 ldi r22, 0x01 ; 1 - 600: 8a 81 ldd r24, Y+2 ; 0x02 - 602: 9b 81 ldd r25, Y+3 ; 0x03 - 604: cd d0 rcall .+410 ; 0x7a0 + 58a: 40 e0 ldi r20, 0x00 ; 0 + 58c: 61 e0 ldi r22, 0x01 ; 1 + 58e: 8a 81 ldd r24, Y+2 ; 0x02 + 590: 9b 81 ldd r25, Y+3 ; 0x03 break; } } - 606: df 91 pop r29 - 608: cf 91 pop r28 - 60a: 08 95 ret + 592: df 91 pop r29 + 594: cf 91 pop r28 + + case STORNO_APP_TX_MODE: + _delay_ms(1); + cm_setOutputEnable(inst->si5351_dev,SI5351_OUTPUT_0,SI5351_OUTPUT_DISABLE); // RX + _delay_ms(1); + cm_setOutputEnable(inst->si5351_dev,SI5351_OUTPUT_1,SI5351_OUTPUT_ENABLE); // TX + 596: a8 c2 rjmp .+1360 ; 0xae8 + break; + + } + + +} + 598: df 91 pop r29 + 59a: cf 91 pop r28 + 59c: 08 95 ret + 59e: 81 e4 ldi r24, 0x41 ; 65 + 5a0: 93 e0 ldi r25, 0x03 ; 3 + 5a2: 01 97 sbiw r24, 0x01 ; 1 + 5a4: f1 f7 brne .-4 ; 0x5a2 + 5a6: 00 00 nop + + switch(inst->state_next){ + + case STORNO_APP_RX_MODE: + _delay_ms(1); + cm_setOutputEnable(inst->si5351_dev,SI5351_OUTPUT_0,SI5351_OUTPUT_ENABLE); // RX + 5a8: 40 e0 ldi r20, 0x00 ; 0 + 5aa: 60 e0 ldi r22, 0x00 ; 0 + 5ac: 82 81 ldd r24, Z+2 ; 0x02 + 5ae: 93 81 ldd r25, Z+3 ; 0x03 + 5b0: 9b d2 rcall .+1334 ; 0xae8 + 5b2: 81 e4 ldi r24, 0x41 ; 65 + 5b4: 93 e0 ldi r25, 0x03 ; 3 + 5b6: 01 97 sbiw r24, 0x01 ; 1 + 5b8: f1 f7 brne .-4 ; 0x5b6 + 5ba: 00 00 nop + _delay_ms(1); + cm_setOutputEnable(inst->si5351_dev,SI5351_OUTPUT_1,SI5351_OUTPUT_DISABLE); // TX + 5bc: 41 e0 ldi r20, 0x01 ; 1 + + case STORNO_APP_TX_MODE: + _delay_ms(1); + cm_setOutputEnable(inst->si5351_dev,SI5351_OUTPUT_0,SI5351_OUTPUT_DISABLE); // RX + _delay_ms(1); + cm_setOutputEnable(inst->si5351_dev,SI5351_OUTPUT_1,SI5351_OUTPUT_ENABLE); // TX + 5be: 61 e0 ldi r22, 0x01 ; 1 + 5c0: 8a 81 ldd r24, Y+2 ; 0x02 + 5c2: 9b 81 ldd r25, Y+3 ; 0x03 + break; + + } + + +} + 5c4: df 91 pop r29 + 5c6: cf 91 pop r28 + + case STORNO_APP_TX_MODE: + _delay_ms(1); + cm_setOutputEnable(inst->si5351_dev,SI5351_OUTPUT_0,SI5351_OUTPUT_DISABLE); // RX + _delay_ms(1); + cm_setOutputEnable(inst->si5351_dev,SI5351_OUTPUT_1,SI5351_OUTPUT_ENABLE); // TX + 5c8: 8f c2 rjmp .+1310 ; 0xae8 + +000005ca : -0000060c : - //inst->pll_param_ptr = NULL; } void cqm6xx_app_statemachine(storno_xtal_app_t *inst){ - 60c: cf 93 push r28 - 60e: df 93 push r29 - 610: ec 01 movw r28, r24 + 5ca: 0f 93 push r16 + 5cc: 1f 93 push r17 + 5ce: cf 93 push r28 + 5d0: df 93 push r29 + //storno_pll_param_msg temp_msg; + //uint8_t *msg_ptr = (void*)&temp_msg; + +static uint8_t isStructValid(storno_xtal_app_t *inst){ + + if(inst->si5351_dev == NULL) return 1; + 5d2: fc 01 movw r30, r24 + 5d4: 22 81 ldd r18, Z+2 ; 0x02 + 5d6: 33 81 ldd r19, Z+3 ; 0x03 + 5d8: 23 2b or r18, r19 + 5da: a9 f0 breq .+42 ; 0x606 + if(inst == NULL)return 1; + 5dc: 00 97 sbiw r24, 0x00 ; 0 + 5de: 99 f0 breq .+38 ; 0x606 + 5e0: ec 01 movw r28, r24 +void cqm6xx_app_statemachine(storno_xtal_app_t *inst){ // Check Struct if(isStructValid(inst) != 0)return; - 612: 9b df rcall .-202 ; 0x54a - 614: 81 11 cpse r24, r1 - 616: 24 c0 rjmp .+72 ; 0x660 switch (inst->state_next) - 618: 89 81 ldd r24, Y+1 ; 0x01 - 61a: 81 30 cpi r24, 0x01 ; 1 - 61c: 51 f0 breq .+20 ; 0x632 - 61e: 18 f0 brcs .+6 ; 0x626 - 620: 82 30 cpi r24, 0x02 ; 2 - 622: 99 f0 breq .+38 ; 0x64a - 624: 1d c0 rjmp .+58 ; 0x660 - { - case STORNO_APP_PROGRAM_OSC: - // Read PLL parameters from EEPROM and Program PLL values here: - inst->state_now = inst->state_next; - 626: 88 83 st Y, r24 - - cqm6xx_app_loadPLLParam(inst); - 628: ce 01 movw r24, r28 - 62a: 9c df rcall .-200 ; 0x564 - - - // if ok, then go to RX mode: - inst->state_next = STORNO_APP_RX_MODE; - 62c: 81 e0 ldi r24, 0x01 ; 1 - 62e: 89 83 std Y+1, r24 ; 0x01 - break; - 630: 17 c0 rjmp .+46 ; 0x660 - - - case STORNO_APP_RX_MODE: - // If we just came from another state, then Enable RX osc here.. - cqm6xx_app_updateOsc(inst); - 632: ce 01 movw r24, r28 - 634: b0 df rcall .-160 ; 0x596 - - // Update state now.. - inst->state_now = inst->state_next; - 636: 89 81 ldd r24, Y+1 ; 0x01 - 638: 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; - 63a: 63 e0 ldi r22, 0x03 ; 3 - 63c: 80 e0 ldi r24, 0x00 ; 0 - 63e: 57 dd rcall .-1362 ; 0xee - 640: 01 97 sbiw r24, 0x01 ; 1 - 642: 71 f4 brne .+28 ; 0x660 - 644: 82 e0 ldi r24, 0x02 ; 2 - 646: 89 83 std Y+1, r24 ; 0x01 - 648: 0b c0 rjmp .+22 ; 0x660 + 5e2: 81 81 ldd r24, Z+1 ; 0x01 + 5e4: 81 30 cpi r24, 0x01 ; 1 + 5e6: 09 f4 brne .+2 ; 0x5ea + 5e8: 5b c0 rjmp .+182 ; 0x6a0 + 5ea: 90 f0 brcs .+36 ; 0x610 + 5ec: 82 30 cpi r24, 0x02 ; 2 + 5ee: 59 f4 brne .+22 ; 0x606 break; case STORNO_APP_TX_MODE: // If we just came from another state, then Enable TX osc here.. cqm6xx_app_updateOsc(inst); - 64a: ce 01 movw r24, r28 - 64c: a4 df rcall .-184 ; 0x596 + 5f0: ce 01 movw r24, r28 + 5f2: aa df rcall .-172 ; 0x548 // Update state now.. inst->state_now = inst->state_next; - 64e: 89 81 ldd r24, Y+1 ; 0x01 - 650: 88 83 st Y, r24 + 5f4: 89 81 ldd r24, Y+1 ; 0x01 + 5f6: 88 83 st Y, r24 // If PTT is released, then disable TX osc, and go to STORNO_APP_RX_MODE, to enable rx osc. if(gpio_get_level(GPIO_PORTA,GPIO_PIN_PTT) == GPIO_LEVEL_RESET) inst->state_next = STORNO_APP_RX_MODE; - 652: 63 e0 ldi r22, 0x03 ; 3 - 654: 80 e0 ldi r24, 0x00 ; 0 - 656: 4b dd rcall .-1386 ; 0xee - 658: 89 2b or r24, r25 - 65a: 11 f4 brne .+4 ; 0x660 - 65c: 81 e0 ldi r24, 0x01 ; 1 - 65e: 89 83 std Y+1, r24 ; 0x01 + 5f8: 63 e0 ldi r22, 0x03 ; 3 + 5fa: 80 e0 ldi r24, 0x00 ; 0 + 5fc: 79 dd rcall .-1294 ; 0xf0 + 5fe: 89 2b or r24, r25 + 600: 11 f4 brne .+4 ; 0x606 + 602: 81 e0 ldi r24, 0x01 ; 1 + 604: 89 83 std Y+1, r24 ; 0x01 default: break; } } - 660: df 91 pop r29 - 662: cf 91 pop r28 - 664: 08 95 ret + 606: df 91 pop r29 + 608: cf 91 pop r28 + 60a: 1f 91 pop r17 + 60c: 0f 91 pop r16 + 60e: 08 95 ret + + switch (inst->state_next) + { + case STORNO_APP_PROGRAM_OSC: + // Read PLL parameters from EEPROM and Program PLL values here: + inst->state_now = inst->state_next; + 610: 18 82 st Y, r1 + +} +static void cqm6xx_app_loadPLLParam(storno_xtal_app_t *inst){ + + // Read settings for PLLA first + cm_EEPROM_read((uint8_t*)PLLA_SETTINGS_EEPROM_ADDR,(uint8_t *)&inst->pll_param_data,sizeof(storno_pll_param_msg)); + 612: 8e 01 movw r16, r28 + 614: 0c 5f subi r16, 0xFC ; 252 + 616: 1f 4f sbci r17, 0xFF ; 255 + 618: 49 e1 ldi r20, 0x19 ; 25 + 61a: b8 01 movw r22, r16 + 61c: 80 e0 ldi r24, 0x00 ; 0 + 61e: 90 e0 ldi r25, 0x00 ; 0 + 620: 46 dd rcall .-1396 ; 0xae + 622: 81 e4 ldi r24, 0x41 ; 65 + 624: 93 e0 ldi r25, 0x03 ; 3 + 626: 01 97 sbiw r24, 0x01 ; 1 + 628: f1 f7 brne .-4 ; 0x626 + 62a: 00 00 nop + _delay_ms(1); + cm_setInputSource(inst->si5351_dev, SI5351_CLK_SOURCE_XTAL); + 62c: 60 e0 ldi r22, 0x00 ; 0 + 62e: 8a 81 ldd r24, Y+2 ; 0x02 + 630: 9b 81 ldd r25, Y+3 ; 0x03 + 632: dd d2 rcall .+1466 ; 0xbee + 634: e1 e4 ldi r30, 0x41 ; 65 + 636: f3 e0 ldi r31, 0x03 ; 3 + 638: 31 97 sbiw r30, 0x01 ; 1 + 63a: f1 f7 brne .-4 ; 0x638 + 63c: 00 00 nop + _delay_ms(1); + + + cqm_setPLLParam(inst, SI5351_PLL_A, SI5351_OUTPUT_0); + 63e: 40 e0 ldi r20, 0x00 ; 0 + 640: 60 e0 ldi r22, 0x00 ; 0 + 642: ce 01 movw r24, r28 + 644: 3b df rcall .-394 ; 0x4bc + 646: 81 e4 ldi r24, 0x41 ; 65 + 648: 93 e0 ldi r25, 0x03 ; 3 + 64a: 01 97 sbiw r24, 0x01 ; 1 + 64c: f1 f7 brne .-4 ; 0x64a + 64e: 00 00 nop + _delay_ms(1); + + + cm_EEPROM_read((uint8_t*)PLLB_SETTINGS_EEPROM_ADDR,(uint8_t *)&inst->pll_param_data,sizeof(storno_pll_param_msg)); + 650: 49 e1 ldi r20, 0x19 ; 25 + 652: b8 01 movw r22, r16 + 654: 80 e2 ldi r24, 0x20 ; 32 + 656: 90 e0 ldi r25, 0x00 ; 0 + 658: 2a dd rcall .-1452 ; 0xae + 65a: e1 e4 ldi r30, 0x41 ; 65 + 65c: f3 e0 ldi r31, 0x03 ; 3 + 65e: 31 97 sbiw r30, 0x01 ; 1 + 660: f1 f7 brne .-4 ; 0x65e + 662: 00 00 nop + _delay_ms(1); + cqm_setPLLParam(inst, SI5351_PLL_B, SI5351_OUTPUT_1); + 664: 41 e0 ldi r20, 0x01 ; 1 + 666: 61 e0 ldi r22, 0x01 ; 1 + 668: ce 01 movw r24, r28 + 66a: 28 df rcall .-432 ; 0x4bc + + + // Set third output to crystal freq for calibration! + cqm_setPLLParam(inst, SI5351_PLL_B, SI5351_OUTPUT_2); + 66c: 42 e0 ldi r20, 0x02 ; 2 + 66e: 61 e0 ldi r22, 0x01 ; 1 + 670: ce 01 movw r24, r28 + 672: 24 df rcall .-440 ; 0x4bc + cm_setCLKControl(inst->si5351_dev, SI5351_OUTPUT_2,SI5351_CLK_POWER_UP); + 674: 40 e0 ldi r20, 0x00 ; 0 + 676: 62 e0 ldi r22, 0x02 ; 2 + 678: 8a 81 ldd r24, Y+2 ; 0x02 + 67a: 9b 81 ldd r25, Y+3 ; 0x03 + 67c: 62 d2 rcall .+1220 ; 0xb42 + 67e: 81 e4 ldi r24, 0x41 ; 65 + 680: 93 e0 ldi r25, 0x03 ; 3 + 682: 01 97 sbiw r24, 0x01 ; 1 + 684: f1 f7 brne .-4 ; 0x682 + 686: 00 00 nop + _delay_ms(1); + cm_setOutputEnable(inst->si5351_dev,SI5351_OUTPUT_2,SI5351_OUTPUT_ENABLE); + 688: 40 e0 ldi r20, 0x00 ; 0 + 68a: 62 e0 ldi r22, 0x02 ; 2 + 68c: 8a 81 ldd r24, Y+2 ; 0x02 + 68e: 9b 81 ldd r25, Y+3 ; 0x03 + 690: 2b d2 rcall .+1110 ; 0xae8 + + cqm6xx_app_loadPLLParam(inst); + + + // if ok, then go to RX mode: + inst->state_next = STORNO_APP_RX_MODE; + 692: 81 e0 ldi r24, 0x01 ; 1 + 694: 89 83 std Y+1, r24 ; 0x01 + default: + break; + } + + +} + 696: df 91 pop r29 + 698: cf 91 pop r28 + 69a: 1f 91 pop r17 + 69c: 0f 91 pop r16 + 69e: 08 95 ret + break; + + + case STORNO_APP_RX_MODE: + // If we just came from another state, then Enable RX osc here.. + cqm6xx_app_updateOsc(inst); + 6a0: ce 01 movw r24, r28 + 6a2: 52 df rcall .-348 ; 0x548 + + // Update state now.. + inst->state_now = inst->state_next; + 6a4: 89 81 ldd r24, Y+1 ; 0x01 + 6a6: 88 83 st Y, r24 + + + // If PTT is hold, then disable RX osc, and go to STORNO_APP_TX_MODE, to enable tx osc. + if(gpio_get_level(GPIO_PORTA,GPIO_PIN_PTT) == GPIO_LEVEL_SET) inst->state_next = STORNO_APP_TX_MODE; + 6a8: 63 e0 ldi r22, 0x03 ; 3 + 6aa: 80 e0 ldi r24, 0x00 ; 0 + 6ac: 21 dd rcall .-1470 ; 0xf0 + 6ae: 01 97 sbiw r24, 0x01 ; 1 + 6b0: 09 f0 breq .+2 ; 0x6b4 + 6b2: a9 cf rjmp .-174 ; 0x606 + 6b4: 82 e0 ldi r24, 0x02 ; 2 + 6b6: 89 83 std Y+1, r24 ; 0x01 + 6b8: a6 cf rjmp .-180 ; 0x606 -00000666 : +000006ba : + } + + +} void programPLL_Parameters(storno_xtal_app_t *inst){ + 6ba: cf 93 push r28 + 6bc: df 93 push r29 + 6be: ec 01 movw r28, r24 //Burn settings into eeprom here: switch(inst->pll_param_data.PLL_Ident){ - 666: fc 01 movw r30, r24 - 668: 24 81 ldd r18, Z+4 ; 0x04 - 66a: 22 23 and r18, r18 - 66c: 19 f0 breq .+6 ; 0x674 - 66e: 21 30 cpi r18, 0x01 ; 1 - 670: 49 f0 breq .+18 ; 0x684 - 672: 08 95 ret - + 6c0: 8c 81 ldd r24, Y+4 ; 0x04 + 6c2: 88 23 and r24, r24 + 6c4: 69 f0 breq .+26 ; 0x6e0 + 6c6: 81 30 cpi r24, 0x01 ; 1 + 6c8: 39 f4 brne .+14 ; 0x6d8 case MSG_PLLA_PARAM: - cm_EEPROM_write((uint8_t*)PLLB_SETTINGS_EEPROM_ADDR,(uint8_t*)&(inst->pll_param_data), sizeof(storno_pll_param_msg)); - 674: bc 01 movw r22, r24 - 676: 6c 5f subi r22, 0xFC ; 252 - 678: 7f 4f sbci r23, 0xFF ; 255 - 67a: 49 e1 ldi r20, 0x19 ; 25 - 67c: 80 e2 ldi r24, 0x20 ; 32 - 67e: 90 e0 ldi r25, 0x00 ; 0 - 680: f5 dc rcall .-1558 ; 0x6c + cm_EEPROM_write((uint8_t*)PLLA_SETTINGS_EEPROM_ADDR,(uint8_t*)&(inst->pll_param_data), sizeof(storno_pll_param_msg)); break; - 682: 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)); - 684: bc 01 movw r22, r24 - 686: 6c 5f subi r22, 0xFC ; 252 - 688: 7f 4f sbci r23, 0xFF ; 255 - 68a: 49 e1 ldi r20, 0x19 ; 25 - 68c: 80 e2 ldi r24, 0x20 ; 32 - 68e: 90 e0 ldi r25, 0x00 ; 0 - 690: ed dc rcall .-1574 ; 0x6c - 692: 08 95 ret + 6ca: 49 e1 ldi r20, 0x19 ; 25 + 6cc: be 01 movw r22, r28 + 6ce: 6c 5f subi r22, 0xFC ; 252 + 6d0: 7f 4f sbci r23, 0xFF ; 255 + 6d2: 80 e2 ldi r24, 0x20 ; 32 + 6d4: 90 e0 ldi r25, 0x00 ; 0 + 6d6: ca dc rcall .-1644 ; 0x6c + } + + // Send status back maybe.. + + //Force state machine to load new settings from eeprom: + inst->state_next = STORNO_APP_PROGRAM_OSC; + 6d8: 19 82 std Y+1, r1 ; 0x01 + +} + 6da: df 91 pop r29 + 6dc: cf 91 pop r28 + 6de: 08 95 ret + + //Burn settings into eeprom here: + switch(inst->pll_param_data.PLL_Ident){ + + case MSG_PLLA_PARAM: + cm_EEPROM_write((uint8_t*)PLLA_SETTINGS_EEPROM_ADDR,(uint8_t*)&(inst->pll_param_data), sizeof(storno_pll_param_msg)); + 6e0: 49 e1 ldi r20, 0x19 ; 25 + 6e2: be 01 movw r22, r28 + 6e4: 6c 5f subi r22, 0xFC ; 252 + 6e6: 7f 4f sbci r23, 0xFF ; 255 + 6e8: 80 e0 ldi r24, 0x00 ; 0 + 6ea: 90 e0 ldi r25, 0x00 ; 0 + 6ec: bf dc rcall .-1666 ; 0x6c + } + + // Send status back maybe.. + + //Force state machine to load new settings from eeprom: + inst->state_next = STORNO_APP_PROGRAM_OSC; + 6ee: 19 82 std Y+1, r1 ; 0x01 + +} + 6f0: df 91 pop r29 + 6f2: cf 91 pop r28 + 6f4: 08 95 ret -00000694 : +000006f6 : } int uart_rx_event(storno_xtal_app_t *inst, void *rxData){ memcpy(&inst->pll_param_data,rxData,sizeof(storno_pll_param_msg)); - 694: dc 01 movw r26, r24 - 696: 14 96 adiw r26, 0x04 ; 4 - 698: 29 e1 ldi r18, 0x19 ; 25 - 69a: fb 01 movw r30, r22 - 69c: 01 90 ld r0, Z+ - 69e: 0d 92 st X+, r0 - 6a0: 2a 95 dec r18 - 6a2: e1 f7 brne .-8 ; 0x69c + 6f6: dc 01 movw r26, r24 + 6f8: 14 96 adiw r26, 0x04 ; 4 + 6fa: 29 e1 ldi r18, 0x19 ; 25 + 6fc: fb 01 movw r30, r22 + 6fe: 01 90 ld r0, Z+ + 700: 0d 92 st X+, r0 + 702: 2a 95 dec r18 + 704: e1 f7 brne .-8 ; 0x6fe programPLL_Parameters(inst); - 6a4: e0 df rcall .-64 ; 0x666 + 706: d9 df rcall .-78 ; 0x6ba return 0; } - 6a6: 80 e0 ldi r24, 0x00 ; 0 - 6a8: 90 e0 ldi r25, 0x00 ; 0 - 6aa: 08 95 ret + 708: 80 e0 ldi r24, 0x00 ; 0 + 70a: 90 e0 ldi r25, 0x00 ; 0 + 70c: 08 95 ret -000006ac : +0000070e : void cqm6xx_app_init(storno_xtal_app_t *inst, void *si5351_dev){ - 6ac: cf 93 push r28 - 6ae: df 93 push r29 + 70e: 0f 93 push r16 + 710: 1f 93 push r17 + 712: cf 93 push r28 + 714: df 93 push r29 if(si5351_dev == NULL) return; - 6b0: 61 15 cp r22, r1 - 6b2: 71 05 cpc r23, r1 - 6b4: 71 f0 breq .+28 ; 0x6d2 + 716: 61 15 cp r22, r1 + 718: 71 05 cpc r23, r1 + 71a: 11 f1 breq .+68 ; 0x760 if(inst == NULL)return; - 6b6: 00 97 sbiw r24, 0x00 ; 0 - 6b8: 61 f0 breq .+24 ; 0x6d2 - 6ba: ec 01 movw r28, r24 + 71c: 00 97 sbiw r24, 0x00 ; 0 + 71e: 01 f1 breq .+64 ; 0x760 + 720: ec 01 movw r28, r24 inst->state_next = STORNO_APP_PROGRAM_OSC; - 6bc: 19 82 std Y+1, r1 ; 0x01 + 722: 19 82 std Y+1, r1 ; 0x01 inst->state_now = STORNO_APP_PROGRAM_OSC; - 6be: 18 82 st Y, r1 + 724: 18 82 st Y, r1 inst->si5351_dev = si5351_dev; - 6c0: 6a 83 std Y+2, r22 ; 0x02 - 6c2: 7b 83 std Y+3, r23 ; 0x03 + 726: 6a 83 std Y+2, r22 ; 0x02 + 728: 7b 83 std Y+3, r23 ; 0x03 - //cm_uart_init(inst,(get_UART_Event_fpt)uart_rx_event); cm_MsgCompleteEvt_Register(inst,(Get_msgComplete_Event_fpt)uart_rx_event); - 6c4: 6a e4 ldi r22, 0x4A ; 74 - 6c6: 73 e0 ldi r23, 0x03 ; 3 - 6c8: 32 df rcall .-412 ; 0x52e + 72a: 6b e7 ldi r22, 0x7B ; 123 + 72c: 73 e0 ldi r23, 0x03 ; 3 + 72e: b8 de rcall .-656 ; 0x4a0 cm_uart_init(inst,(get_UART_Event_fpt)cm_msg_DecodeMsg_Byte); - 6ca: 63 e4 ldi r22, 0x43 ; 67 - 6cc: 72 e0 ldi r23, 0x02 ; 2 - 6ce: ce 01 movw r24, r28 - 6d0: 5b de rcall .-842 ; 0x388 + 730: 66 ef ldi r22, 0xF6 ; 246 + 732: 71 e0 ldi r23, 0x01 ; 1 + 734: ce 01 movw r24, r28 + 736: f5 dd rcall .-1046 ; 0x322 - 6d2: df 91 pop r29 - 6d4: cf 91 pop r28 - 6d6: 08 95 ret +} -000006d8
: - uint8_t data_set[25] = {0x55,56}; - //cm_EEPROM_write(0x00,data_set,1); - uint8_t data[25] = {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)); + 738: 8e 01 movw r16, r28 + 73a: 0c 5f subi r16, 0xFC ; 252 + 73c: 1f 4f sbci r17, 0xFF ; 255 + 73e: 49 e1 ldi r20, 0x19 ; 25 + 740: b8 01 movw r22, r16 + 742: 80 e0 ldi r24, 0x00 ; 0 + 744: 90 e0 ldi r25, 0x00 ; 0 + 746: b3 dc rcall .-1690 ; 0xae + 748: f8 01 movw r30, r16 + 74a: 9e 01 movw r18, r28 + 74c: 23 5e subi r18, 0xE3 ; 227 + 74e: 3f 4f sbci r19, 0xFF ; 255 + 750: 03 c0 rjmp .+6 ; 0x758 + + uint8_t *ptr = (void*)&inst->pll_param_data; + + for (uint32_t idx = 0; idx < sizeof(storno_pll_param_msg); idx++ ) + 752: e2 17 cp r30, r18 + 754: f3 07 cpc r31, r19 + 756: 49 f0 breq .+18 ; 0x76a + { + if ((*ptr != 0xff) && (*ptr != 0x00)) + 758: 91 91 ld r25, Z+ + 75a: 91 50 subi r25, 0x01 ; 1 + 75c: 9e 3f cpi r25, 0xFE ; 254 + 75e: c8 f7 brcc .-14 ; 0x752 + if(!isEEPROMValid(inst)){ + // If settings are somehow unvalid, then write default settings.. + writeDefaultSettingsEEprom(inst); + } + + 760: df 91 pop r29 + 762: cf 91 pop r28 + 764: 1f 91 pop r17 + 766: 0f 91 pop r16 + 768: 08 95 ret +} + +static int writeDefaultSettingsEEprom(storno_xtal_app_t *inst){ + + + inst->pll_param_data.PLL_Ident = 0; + 76a: 1c 82 std Y+4, r1 ; 0x04 + inst->pll_param_data.MSNx_P1 = 3395; + 76c: 83 e4 ldi r24, 0x43 ; 67 + 76e: 9d e0 ldi r25, 0x0D ; 13 + 770: a0 e0 ldi r26, 0x00 ; 0 + 772: b0 e0 ldi r27, 0x00 ; 0 + 774: 8d 83 std Y+5, r24 ; 0x05 + 776: 9e 83 std Y+6, r25 ; 0x06 + 778: af 83 std Y+7, r26 ; 0x07 + 77a: b8 87 std Y+8, r27 ; 0x08 + inst->pll_param_data.MSNx_P2 = 11510; + 77c: 86 ef ldi r24, 0xF6 ; 246 + 77e: 9c e2 ldi r25, 0x2C ; 44 + 780: a0 e0 ldi r26, 0x00 ; 0 + 782: b0 e0 ldi r27, 0x00 ; 0 + 784: 89 87 std Y+9, r24 ; 0x09 + 786: 9a 87 std Y+10, r25 ; 0x0a + 788: ab 87 std Y+11, r26 ; 0x0b + 78a: bc 87 std Y+12, r27 ; 0x0c + inst->pll_param_data.MSNx_P3 = 1067099; + 78c: 8b e5 ldi r24, 0x5B ; 91 + 78e: 98 e4 ldi r25, 0x48 ; 72 + 790: a0 e1 ldi r26, 0x10 ; 16 + 792: b0 e0 ldi r27, 0x00 ; 0 + 794: 8d 87 std Y+13, r24 ; 0x0d + 796: 9e 87 std Y+14, r25 ; 0x0e + 798: af 87 std Y+15, r26 ; 0x0f + 79a: b8 8b std Y+16, r27 ; 0x10 + + inst->pll_param_data.MSx_P1 = 18; + 79c: 82 e1 ldi r24, 0x12 ; 18 + 79e: 90 e0 ldi r25, 0x00 ; 0 + 7a0: a0 e0 ldi r26, 0x00 ; 0 + 7a2: b0 e0 ldi r27, 0x00 ; 0 + 7a4: 89 8b std Y+17, r24 ; 0x11 + 7a6: 9a 8b std Y+18, r25 ; 0x12 + 7a8: ab 8b std Y+19, r26 ; 0x13 + 7aa: bc 8b std Y+20, r27 ; 0x14 + inst->pll_param_data.MSx_P2 = 0; + 7ac: 1d 8a std Y+21, r1 ; 0x15 + 7ae: 1e 8a std Y+22, r1 ; 0x16 + 7b0: 1f 8a std Y+23, r1 ; 0x17 + 7b2: 18 8e std Y+24, r1 ; 0x18 + inst->pll_param_data.MSx_P3 = 1; + 7b4: 81 e0 ldi r24, 0x01 ; 1 + 7b6: 90 e0 ldi r25, 0x00 ; 0 + 7b8: a0 e0 ldi r26, 0x00 ; 0 + 7ba: b0 e0 ldi r27, 0x00 ; 0 + 7bc: 89 8f std Y+25, r24 ; 0x19 + 7be: 9a 8f std Y+26, r25 ; 0x1a + 7c0: ab 8f std Y+27, r26 ; 0x1b + 7c2: bc 8f std Y+28, r27 ; 0x1c + + cm_EEPROM_write((uint8_t*)PLLA_SETTINGS_EEPROM_ADDR,(uint8_t*)&(inst->pll_param_data), sizeof(storno_pll_param_msg)); + 7c4: 49 e1 ldi r20, 0x19 ; 25 + 7c6: b8 01 movw r22, r16 + 7c8: 80 e0 ldi r24, 0x00 ; 0 + 7ca: 90 e0 ldi r25, 0x00 ; 0 + 7cc: 4f dc rcall .-1890 ; 0x6c + 7ce: 81 e4 ldi r24, 0x41 ; 65 + 7d0: 93 e0 ldi r25, 0x03 ; 3 + 7d2: 01 97 sbiw r24, 0x01 ; 1 + 7d4: f1 f7 brne .-4 ; 0x7d2 + 7d6: 00 00 nop + _delay_ms(1); + cm_EEPROM_write((uint8_t*)PLLB_SETTINGS_EEPROM_ADDR,(uint8_t*)&(inst->pll_param_data), sizeof(storno_pll_param_msg)); + 7d8: 49 e1 ldi r20, 0x19 ; 25 + 7da: b8 01 movw r22, r16 + 7dc: 80 e2 ldi r24, 0x20 ; 32 + 7de: 90 e0 ldi r25, 0x00 ; 0 + if(!isEEPROMValid(inst)){ + // If settings are somehow unvalid, then write default settings.. + writeDefaultSettingsEEprom(inst); + } + + 7e0: df 91 pop r29 + 7e2: cf 91 pop r28 + 7e4: 1f 91 pop r17 + 7e6: 0f 91 pop r16 + inst->pll_param_data.MSx_P2 = 0; + inst->pll_param_data.MSx_P3 = 1; + + cm_EEPROM_write((uint8_t*)PLLA_SETTINGS_EEPROM_ADDR,(uint8_t*)&(inst->pll_param_data), sizeof(storno_pll_param_msg)); + _delay_ms(1); + cm_EEPROM_write((uint8_t*)PLLB_SETTINGS_EEPROM_ADDR,(uint8_t*)&(inst->pll_param_data), sizeof(storno_pll_param_msg)); + 7e8: 41 cc rjmp .-1918 ; 0x6c + +000007ea
: +#include "avr_eeprom_driver/avr_eeprom_driver.h" + +storno_xtal_app_t storno_xtal_app; int main(void) { - 6d8: cf 93 push r28 - 6da: df 93 push r29 - 6dc: cd b7 in r28, 0x3d ; 61 - 6de: de b7 in r29, 0x3e ; 62 - 6e0: cb 55 subi r28, 0x5B ; 91 - 6e2: d1 09 sbc r29, r1 - 6e4: cd bf out 0x3d, r28 ; 61 - 6e6: de bf out 0x3e, r29 ; 62 + 7ea: cf 93 push r28 + 7ec: df 93 push r29 + 7ee: cd b7 in r28, 0x3d ; 61 + 7f0: de b7 in r29, 0x3e ; 62 + 7f2: cb 55 subi r28, 0x5B ; 91 + 7f4: d1 09 sbc r29, r1 + 7f6: cd bf out 0x3d, r28 ; 61 + 7f8: de bf out 0x3e, r29 ; 62 /* Replace with your application code */ // Init Periphials cm_i2c_init(NULL); - 6e8: 80 e0 ldi r24, 0x00 ; 0 - 6ea: 90 e0 ldi r25, 0x00 ; 0 - 6ec: d0 dd rcall .-1120 ; 0x28e + 7fa: 80 e0 ldi r24, 0x00 ; 0 + 7fc: 90 e0 ldi r25, 0x00 ; 0 + 7fe: 06 dd rcall .-1524 ; 0x20c // Add devices cm_i2c_device_t si5351_i2c; cm_i2c_addDev(&si5351_i2c,NULL,0x60); - 6ee: 40 e6 ldi r20, 0x60 ; 96 - 6f0: 60 e0 ldi r22, 0x00 ; 0 - 6f2: 70 e0 ldi r23, 0x00 ; 0 - 6f4: ce 01 movw r24, r28 - 6f6: 01 96 adiw r24, 0x01 ; 1 - 6f8: e4 dd rcall .-1080 ; 0x2c2 + 800: 40 e6 ldi r20, 0x60 ; 96 + 802: 60 e0 ldi r22, 0x00 ; 0 + 804: 70 e0 ldi r23, 0x00 ; 0 + 806: ce 01 movw r24, r28 + 808: 87 5a subi r24, 0xA7 ; 167 + 80a: 9f 4f sbci r25, 0xFF ; 255 + 80c: 19 dd rcall .-1486 ; 0x240 // Init Devices: si5351_driver si5351_dev; cm_si5351_init(&si5351_dev,&si5351_i2c,(setGet_I2C_Event_fpt)cm_i2c_transfer); - 6fa: 4f e7 ldi r20, 0x7F ; 127 - 6fc: 51 e0 ldi r21, 0x01 ; 1 - 6fe: be 01 movw r22, r28 - 700: 6f 5f subi r22, 0xFF ; 255 - 702: 7f 4f sbci r23, 0xFF ; 255 - 704: ce 01 movw r24, r28 - 706: 04 96 adiw r24, 0x04 ; 4 - 708: 6b d0 rcall .+214 ; 0x7e0 + 80e: 4f e3 ldi r20, 0x3F ; 63 + 810: 51 e0 ldi r21, 0x01 ; 1 + 812: be 01 movw r22, r28 + 814: 67 5a subi r22, 0xA7 ; 167 + 816: 7f 4f sbci r23, 0xFF ; 255 + 818: ce 01 movw r24, r28 + 81a: 01 96 adiw r24, 0x01 ; 1 + 81c: 0d d2 rcall .+1050 ; 0xc38 cqm6xx_app_init(&storno_xtal_app, &si5351_dev); - 70a: be 01 movw r22, r28 - 70c: 6c 5f subi r22, 0xFC ; 252 - 70e: 7f 4f sbci r23, 0xFF ; 255 - 710: 87 e4 ldi r24, 0x47 ; 71 - 712: 9f e3 ldi r25, 0x3F ; 63 - 714: cb df rcall .-106 ; 0x6ac + 81e: be 01 movw r22, r28 + 820: 6f 5f subi r22, 0xFF ; 255 + 822: 7f 4f sbci r23, 0xFF ; 255 + 824: 86 e4 ldi r24, 0x46 ; 70 + 826: 9f e3 ldi r25, 0x3F ; 63 + 828: 72 df rcall .-284 ; 0x70e while (1) { cqm6xx_app_statemachine(&storno_xtal_app); - 716: 87 e4 ldi r24, 0x47 ; 71 - 718: 9f e3 ldi r25, 0x3F ; 63 - 71a: 78 df rcall .-272 ; 0x60c - 71c: 2a e6 ldi r18, 0x6A ; 106 - 71e: 84 e0 ldi r24, 0x04 ; 4 - 720: 91 e0 ldi r25, 0x01 ; 1 - 722: 21 50 subi r18, 0x01 ; 1 - 724: 80 40 sbci r24, 0x00 ; 0 - 726: 90 40 sbci r25, 0x00 ; 0 - 728: e1 f7 brne .-8 ; 0x722 - 72a: 00 c0 rjmp .+0 ; 0x72c - 72c: f4 cf rjmp .-24 ; 0x716 + 82a: 86 e4 ldi r24, 0x46 ; 70 + 82c: 9f e3 ldi r25, 0x3F ; 63 + 82e: cd de rcall .-614 ; 0x5ca + 830: 2a e6 ldi r18, 0x6A ; 106 + 832: 84 e0 ldi r24, 0x04 ; 4 + 834: 91 e0 ldi r25, 0x01 ; 1 + 836: 21 50 subi r18, 0x01 ; 1 + 838: 80 40 sbci r24, 0x00 ; 0 + 83a: 90 40 sbci r25, 0x00 ; 0 + 83c: e1 f7 brne .-8 ; 0x836 + 83e: 00 c0 rjmp .+0 ; 0x840 + 840: f4 cf rjmp .-24 ; 0x82a -0000072e : - 72e: 8f 92 push r8 - 730: 9f 92 push r9 - 732: af 92 push r10 - 734: bf 92 push r11 - 736: cf 92 push r12 - 738: df 92 push r13 - 73a: ef 92 push r14 - 73c: ff 92 push r15 - 73e: 0f 93 push r16 - 740: 1f 93 push r17 - 742: cf 93 push r28 - 744: df 93 push r29 - 746: ec 01 movw r28, r24 - 748: 86 2e mov r8, r22 - 74a: 5a 01 movw r10, r20 - 74c: 68 01 movw r12, r16 - 74e: 79 01 movw r14, r18 - 750: c8 01 movw r24, r16 - 752: 01 96 adiw r24, 0x01 ; 1 - 754: e6 d0 rcall .+460 ; 0x922 - 756: 98 2e mov r9, r24 - 758: 19 2f mov r17, r25 - 75a: fc 01 movw r30, r24 - 75c: 81 92 st Z+, r8 - 75e: cf 01 movw r24, r30 - 760: a6 01 movw r20, r12 - 762: b5 01 movw r22, r10 - 764: ff d1 rcall .+1022 ; 0xb64 - 766: ea 81 ldd r30, Y+2 ; 0x02 - 768: fb 81 ldd r31, Y+3 ; 0x03 - 76a: a7 01 movw r20, r14 - 76c: 96 01 movw r18, r12 - 76e: 2f 5f subi r18, 0xFF ; 255 - 770: 3f 4f sbci r19, 0xFF ; 255 - 772: 4f 4f sbci r20, 0xFF ; 255 - 774: 5f 4f sbci r21, 0xFF ; 255 - 776: 01 e0 ldi r16, 0x01 ; 1 - 778: 69 2d mov r22, r9 - 77a: 71 2f mov r23, r17 - 77c: 88 81 ld r24, Y - 77e: 99 81 ldd r25, Y+1 ; 0x01 - 780: 09 95 icall - 782: 80 e0 ldi r24, 0x00 ; 0 - 784: 90 e0 ldi r25, 0x00 ; 0 - 786: df 91 pop r29 - 788: cf 91 pop r28 - 78a: 1f 91 pop r17 - 78c: 0f 91 pop r16 - 78e: ff 90 pop r15 - 790: ef 90 pop r14 - 792: df 90 pop r13 - 794: cf 90 pop r12 - 796: bf 90 pop r11 - 798: af 90 pop r10 - 79a: 9f 90 pop r9 - 79c: 8f 90 pop r8 - 79e: 08 95 ret +00000842 : -000007a0 : - 7a0: 0f 93 push r16 - 7a2: 1f 93 push r17 - 7a4: 66 23 and r22, r22 - 7a6: 19 f0 breq .+6 ; 0x7ae - 7a8: 61 30 cpi r22, 0x01 ; 1 - 7aa: 39 f0 breq .+14 ; 0x7ba - 7ac: 0b c0 rjmp .+22 ; 0x7c4 - 7ae: fc 01 movw r30, r24 - 7b0: 27 81 ldd r18, Z+7 ; 0x07 - 7b2: 40 fb bst r20, 0 - 7b4: 20 f9 bld r18, 0 - 7b6: 27 83 std Z+7, r18 ; 0x07 - 7b8: 05 c0 rjmp .+10 ; 0x7c4 - 7ba: fc 01 movw r30, r24 - 7bc: 27 81 ldd r18, Z+7 ; 0x07 - 7be: 40 fb bst r20, 0 - 7c0: 21 f9 bld r18, 1 - 7c2: 27 83 std Z+7, r18 ; 0x07 - 7c4: ac 01 movw r20, r24 - 7c6: 49 5f subi r20, 0xF9 ; 249 - 7c8: 5f 4f sbci r21, 0xFF ; 255 - 7ca: 01 e0 ldi r16, 0x01 ; 1 - 7cc: 10 e0 ldi r17, 0x00 ; 0 - 7ce: 20 e0 ldi r18, 0x00 ; 0 - 7d0: 30 e0 ldi r19, 0x00 ; 0 - 7d2: 63 e0 ldi r22, 0x03 ; 3 - 7d4: ac df rcall .-168 ; 0x72e - 7d6: 80 e0 ldi r24, 0x00 ; 0 - 7d8: 90 e0 ldi r25, 0x00 ; 0 - 7da: 1f 91 pop r17 - 7dc: 0f 91 pop r16 - 7de: 08 95 ret + // Read Device Status register: + readRegister(inst,0x00, (uint8_t *) &inst->device_data.deviceStatus, sizeof(si5351_deviceStat_t)); -000007e0 : - 7e0: ef 92 push r14 - 7e2: ff 92 push r15 - 7e4: 0f 93 push r16 - 7e6: 1f 93 push r17 - 7e8: cf 93 push r28 - 7ea: df 93 push r29 - 7ec: 1f 92 push r1 - 7ee: cd b7 in r28, 0x3d ; 61 - 7f0: de b7 in r29, 0x3e ; 62 - 7f2: 00 97 sbiw r24, 0x00 ; 0 - 7f4: 09 f4 brne .+2 ; 0x7f8 - 7f6: 85 c0 rjmp .+266 ; 0x902 - 7f8: 61 15 cp r22, r1 - 7fa: 71 05 cpc r23, r1 - 7fc: 09 f4 brne .+2 ; 0x800 - 7fe: 84 c0 rjmp .+264 ; 0x908 - 800: 41 15 cp r20, r1 - 802: 51 05 cpc r21, r1 - 804: 09 f4 brne .+2 ; 0x808 - 806: 83 c0 rjmp .+262 ; 0x90e - 808: 7c 01 movw r14, r24 - 80a: dc 01 movw r26, r24 - 80c: 6d 93 st X+, r22 - 80e: 7c 93 st X, r23 - 810: 11 97 sbiw r26, 0x01 ; 1 - 812: 12 96 adiw r26, 0x02 ; 2 - 814: 4d 93 st X+, r20 - 816: 5c 93 st X, r21 - 818: 13 97 sbiw r26, 0x03 ; 3 - 81a: fc 01 movw r30, r24 - 81c: 34 96 adiw r30, 0x04 ; 4 - 81e: 84 e5 ldi r24, 0x54 ; 84 - 820: df 01 movw r26, r30 - 822: 1d 92 st X+, r1 - 824: 8a 95 dec r24 - 826: e9 f7 brne .-6 ; 0x822 - 828: 8f ef ldi r24, 0xFF ; 255 - 82a: 89 83 std Y+1, r24 ; 0x01 - 82c: 01 e0 ldi r16, 0x01 ; 1 - 82e: 10 e0 ldi r17, 0x00 ; 0 - 830: 20 e0 ldi r18, 0x00 ; 0 - 832: 30 e0 ldi r19, 0x00 ; 0 - 834: ae 01 movw r20, r28 - 836: 4f 5f subi r20, 0xFF ; 255 - 838: 5f 4f sbci r21, 0xFF ; 255 - 83a: 63 e0 ldi r22, 0x03 ; 3 - 83c: c7 01 movw r24, r14 - 83e: 77 df rcall .-274 ; 0x72e - 840: 80 e8 ldi r24, 0x80 ; 128 - 842: 89 83 std Y+1, r24 ; 0x01 - 844: 01 e0 ldi r16, 0x01 ; 1 - 846: 10 e0 ldi r17, 0x00 ; 0 - 848: 20 e0 ldi r18, 0x00 ; 0 - 84a: 30 e0 ldi r19, 0x00 ; 0 - 84c: ae 01 movw r20, r28 - 84e: 4f 5f subi r20, 0xFF ; 255 - 850: 5f 4f sbci r21, 0xFF ; 255 - 852: 60 e1 ldi r22, 0x10 ; 16 - 854: c7 01 movw r24, r14 - 856: 6b df rcall .-298 ; 0x72e - 858: 01 e0 ldi r16, 0x01 ; 1 - 85a: 10 e0 ldi r17, 0x00 ; 0 - 85c: 20 e0 ldi r18, 0x00 ; 0 - 85e: 30 e0 ldi r19, 0x00 ; 0 - 860: ae 01 movw r20, r28 - 862: 4f 5f subi r20, 0xFF ; 255 - 864: 5f 4f sbci r21, 0xFF ; 255 - 866: 61 e1 ldi r22, 0x11 ; 17 - 868: c7 01 movw r24, r14 - 86a: 61 df rcall .-318 ; 0x72e - 86c: 01 e0 ldi r16, 0x01 ; 1 - 86e: 10 e0 ldi r17, 0x00 ; 0 - 870: 20 e0 ldi r18, 0x00 ; 0 - 872: 30 e0 ldi r19, 0x00 ; 0 - 874: ae 01 movw r20, r28 - 876: 4f 5f subi r20, 0xFF ; 255 - 878: 5f 4f sbci r21, 0xFF ; 255 - 87a: 62 e1 ldi r22, 0x12 ; 18 - 87c: c7 01 movw r24, r14 - 87e: 57 df rcall .-338 ; 0x72e - 880: 01 e0 ldi r16, 0x01 ; 1 - 882: 10 e0 ldi r17, 0x00 ; 0 - 884: 20 e0 ldi r18, 0x00 ; 0 - 886: 30 e0 ldi r19, 0x00 ; 0 - 888: ae 01 movw r20, r28 - 88a: 4f 5f subi r20, 0xFF ; 255 + return inst->device_data.deviceStatus.REVID; +} + 842: 4f 92 push r4 + 844: 5f 92 push r5 + 846: 6f 92 push r6 + 848: 7f 92 push r7 + 84a: 9f 92 push r9 + 84c: af 92 push r10 + 84e: bf 92 push r11 + 850: cf 92 push r12 + 852: df 92 push r13 + 854: ef 92 push r14 + 856: ff 92 push r15 + 858: 0f 93 push r16 + 85a: 1f 93 push r17 + 85c: cf 93 push r28 + 85e: df 93 push r29 + 860: ec 01 movw r28, r24 + 862: 6b 01 movw r12, r22 + 864: 94 2e mov r9, r20 + 866: 59 01 movw r10, r18 + 868: 27 01 movw r4, r14 + 86a: 38 01 movw r6, r16 + 86c: c7 01 movw r24, r14 + 86e: 01 96 adiw r24, 0x01 ; 1 + 870: 79 d2 rcall .+1266 ; 0xd64 + 872: f8 2e mov r15, r24 + 874: 19 2f mov r17, r25 + 876: dc 01 movw r26, r24 + 878: 9d 92 st X+, r9 + 87a: cd 01 movw r24, r26 + 87c: a2 01 movw r20, r4 + 87e: b5 01 movw r22, r10 + 880: 92 d3 rcall .+1828 ; 0xfa6 + 882: a3 01 movw r20, r6 + 884: 92 01 movw r18, r4 + 886: 2f 5f subi r18, 0xFF ; 255 + 888: 3f 4f sbci r19, 0xFF ; 255 + 88a: 4f 4f sbci r20, 0xFF ; 255 88c: 5f 4f sbci r21, 0xFF ; 255 - 88e: 63 e1 ldi r22, 0x13 ; 19 - 890: c7 01 movw r24, r14 - 892: 4d df rcall .-358 ; 0x72e + 88e: d6 01 movw r26, r12 + 890: ed 91 ld r30, X+ + 892: fc 91 ld r31, X 894: 01 e0 ldi r16, 0x01 ; 1 - 896: 10 e0 ldi r17, 0x00 ; 0 - 898: 20 e0 ldi r18, 0x00 ; 0 - 89a: 30 e0 ldi r19, 0x00 ; 0 - 89c: ae 01 movw r20, r28 - 89e: 4f 5f subi r20, 0xFF ; 255 - 8a0: 5f 4f sbci r21, 0xFF ; 255 - 8a2: 64 e1 ldi r22, 0x14 ; 20 - 8a4: c7 01 movw r24, r14 - 8a6: 43 df rcall .-378 ; 0x72e - 8a8: 01 e0 ldi r16, 0x01 ; 1 - 8aa: 10 e0 ldi r17, 0x00 ; 0 - 8ac: 20 e0 ldi r18, 0x00 ; 0 - 8ae: 30 e0 ldi r19, 0x00 ; 0 - 8b0: ae 01 movw r20, r28 - 8b2: 4f 5f subi r20, 0xFF ; 255 - 8b4: 5f 4f sbci r21, 0xFF ; 255 - 8b6: 65 e1 ldi r22, 0x15 ; 21 - 8b8: c7 01 movw r24, r14 - 8ba: 39 df rcall .-398 ; 0x72e - 8bc: 01 e0 ldi r16, 0x01 ; 1 - 8be: 10 e0 ldi r17, 0x00 ; 0 - 8c0: 20 e0 ldi r18, 0x00 ; 0 - 8c2: 30 e0 ldi r19, 0x00 ; 0 - 8c4: ae 01 movw r20, r28 - 8c6: 4f 5f subi r20, 0xFF ; 255 - 8c8: 5f 4f sbci r21, 0xFF ; 255 - 8ca: 66 e1 ldi r22, 0x16 ; 22 - 8cc: c7 01 movw r24, r14 - 8ce: 2f df rcall .-418 ; 0x72e - 8d0: 01 e0 ldi r16, 0x01 ; 1 - 8d2: 10 e0 ldi r17, 0x00 ; 0 - 8d4: 20 e0 ldi r18, 0x00 ; 0 - 8d6: 30 e0 ldi r19, 0x00 ; 0 - 8d8: ae 01 movw r20, r28 - 8da: 4f 5f subi r20, 0xFF ; 255 - 8dc: 5f 4f sbci r21, 0xFF ; 255 - 8de: 67 e1 ldi r22, 0x17 ; 23 - 8e0: c7 01 movw r24, r14 - 8e2: 25 df rcall .-438 ; 0x72e - 8e4: 80 ec ldi r24, 0xC0 ; 192 - 8e6: 89 83 std Y+1, r24 ; 0x01 - 8e8: 01 e0 ldi r16, 0x01 ; 1 - 8ea: 10 e0 ldi r17, 0x00 ; 0 - 8ec: 20 e0 ldi r18, 0x00 ; 0 - 8ee: 30 e0 ldi r19, 0x00 ; 0 - 8f0: ae 01 movw r20, r28 - 8f2: 4f 5f subi r20, 0xFF ; 255 - 8f4: 5f 4f sbci r21, 0xFF ; 255 - 8f6: 67 eb ldi r22, 0xB7 ; 183 - 8f8: c7 01 movw r24, r14 - 8fa: 19 df rcall .-462 ; 0x72e - 8fc: 80 e0 ldi r24, 0x00 ; 0 - 8fe: 90 e0 ldi r25, 0x00 ; 0 - 900: 08 c0 rjmp .+16 ; 0x912 - 902: 8f ef ldi r24, 0xFF ; 255 - 904: 9f ef ldi r25, 0xFF ; 255 - 906: 05 c0 rjmp .+10 ; 0x912 - 908: 8f ef ldi r24, 0xFF ; 255 - 90a: 9f ef ldi r25, 0xFF ; 255 - 90c: 02 c0 rjmp .+4 ; 0x912 - 90e: 8f ef ldi r24, 0xFF ; 255 - 910: 9f ef ldi r25, 0xFF ; 255 - 912: 0f 90 pop r0 - 914: df 91 pop r29 - 916: cf 91 pop r28 - 918: 1f 91 pop r17 - 91a: 0f 91 pop r16 - 91c: ff 90 pop r15 - 91e: ef 90 pop r14 - 920: 08 95 ret + 896: 6f 2d mov r22, r15 + 898: 71 2f mov r23, r17 + 89a: 88 81 ld r24, Y + 89c: 99 81 ldd r25, Y+1 ; 0x01 + 89e: 09 95 icall + 8a0: 8f 2d mov r24, r15 + 8a2: 91 2f mov r25, r17 + 8a4: f7 d2 rcall .+1518 ; 0xe94 + 8a6: 80 e0 ldi r24, 0x00 ; 0 + 8a8: 90 e0 ldi r25, 0x00 ; 0 + 8aa: df 91 pop r29 + 8ac: cf 91 pop r28 + 8ae: 1f 91 pop r17 + 8b0: 0f 91 pop r16 + 8b2: ff 90 pop r15 + 8b4: ef 90 pop r14 + 8b6: df 90 pop r13 + 8b8: cf 90 pop r12 + 8ba: bf 90 pop r11 + 8bc: af 90 pop r10 + 8be: 9f 90 pop r9 + 8c0: 7f 90 pop r7 + 8c2: 6f 90 pop r6 + 8c4: 5f 90 pop r5 + 8c6: 4f 90 pop r4 + 8c8: 08 95 ret -00000922 : - 922: 0f 93 push r16 - 924: 1f 93 push r17 - 926: cf 93 push r28 - 928: df 93 push r29 - 92a: 82 30 cpi r24, 0x02 ; 2 - 92c: 91 05 cpc r25, r1 - 92e: 10 f4 brcc .+4 ; 0x934 - 930: 82 e0 ldi r24, 0x02 ; 2 - 932: 90 e0 ldi r25, 0x00 ; 0 - 934: e0 91 66 3f lds r30, 0x3F66 ; 0x803f66 <__flp> - 938: f0 91 67 3f lds r31, 0x3F67 ; 0x803f67 <__flp+0x1> - 93c: 20 e0 ldi r18, 0x00 ; 0 - 93e: 30 e0 ldi r19, 0x00 ; 0 - 940: a0 e0 ldi r26, 0x00 ; 0 - 942: b0 e0 ldi r27, 0x00 ; 0 - 944: 30 97 sbiw r30, 0x00 ; 0 - 946: 19 f1 breq .+70 ; 0x98e - 948: 40 81 ld r20, Z - 94a: 51 81 ldd r21, Z+1 ; 0x01 - 94c: 02 81 ldd r16, Z+2 ; 0x02 - 94e: 13 81 ldd r17, Z+3 ; 0x03 - 950: 48 17 cp r20, r24 - 952: 59 07 cpc r21, r25 - 954: c8 f0 brcs .+50 ; 0x988 - 956: 84 17 cp r24, r20 - 958: 95 07 cpc r25, r21 - 95a: 69 f4 brne .+26 ; 0x976 - 95c: 10 97 sbiw r26, 0x00 ; 0 - 95e: 31 f0 breq .+12 ; 0x96c - 960: 12 96 adiw r26, 0x02 ; 2 - 962: 0c 93 st X, r16 - 964: 12 97 sbiw r26, 0x02 ; 2 - 966: 13 96 adiw r26, 0x03 ; 3 - 968: 1c 93 st X, r17 - 96a: 27 c0 rjmp .+78 ; 0x9ba - 96c: 00 93 66 3f sts 0x3F66, r16 ; 0x803f66 <__flp> - 970: 10 93 67 3f sts 0x3F67, r17 ; 0x803f67 <__flp+0x1> - 974: 22 c0 rjmp .+68 ; 0x9ba - 976: 21 15 cp r18, r1 - 978: 31 05 cpc r19, r1 - 97a: 19 f0 breq .+6 ; 0x982 - 97c: 42 17 cp r20, r18 - 97e: 53 07 cpc r21, r19 - 980: 18 f4 brcc .+6 ; 0x988 - 982: 9a 01 movw r18, r20 - 984: bd 01 movw r22, r26 - 986: ef 01 movw r28, r30 - 988: df 01 movw r26, r30 - 98a: f8 01 movw r30, r16 - 98c: db cf rjmp .-74 ; 0x944 - 98e: 21 15 cp r18, r1 - 990: 31 05 cpc r19, r1 - 992: f9 f0 breq .+62 ; 0x9d2 - 994: 28 1b sub r18, r24 - 996: 39 0b sbc r19, r25 - 998: 24 30 cpi r18, 0x04 ; 4 - 99a: 31 05 cpc r19, r1 - 99c: 80 f4 brcc .+32 ; 0x9be - 99e: 8a 81 ldd r24, Y+2 ; 0x02 - 9a0: 9b 81 ldd r25, Y+3 ; 0x03 - 9a2: 61 15 cp r22, r1 - 9a4: 71 05 cpc r23, r1 - 9a6: 21 f0 breq .+8 ; 0x9b0 - 9a8: fb 01 movw r30, r22 - 9aa: 82 83 std Z+2, r24 ; 0x02 - 9ac: 93 83 std Z+3, r25 ; 0x03 - 9ae: 04 c0 rjmp .+8 ; 0x9b8 - 9b0: 80 93 66 3f sts 0x3F66, r24 ; 0x803f66 <__flp> - 9b4: 90 93 67 3f sts 0x3F67, r25 ; 0x803f67 <__flp+0x1> - 9b8: fe 01 movw r30, r28 - 9ba: 32 96 adiw r30, 0x02 ; 2 - 9bc: 44 c0 rjmp .+136 ; 0xa46 - 9be: fe 01 movw r30, r28 - 9c0: e2 0f add r30, r18 - 9c2: f3 1f adc r31, r19 - 9c4: 81 93 st Z+, r24 - 9c6: 91 93 st Z+, r25 - 9c8: 22 50 subi r18, 0x02 ; 2 - 9ca: 31 09 sbc r19, r1 - 9cc: 28 83 st Y, r18 - 9ce: 39 83 std Y+1, r19 ; 0x01 - 9d0: 3a c0 rjmp .+116 ; 0xa46 - 9d2: 20 91 64 3f lds r18, 0x3F64 ; 0x803f64 <__brkval> - 9d6: 30 91 65 3f lds r19, 0x3F65 ; 0x803f65 <__brkval+0x1> - 9da: 23 2b or r18, r19 - 9dc: 41 f4 brne .+16 ; 0x9ee - 9de: 20 91 02 3f lds r18, 0x3F02 ; 0x803f02 <__malloc_heap_start> - 9e2: 30 91 03 3f lds r19, 0x3F03 ; 0x803f03 <__malloc_heap_start+0x1> - 9e6: 20 93 64 3f sts 0x3F64, r18 ; 0x803f64 <__brkval> - 9ea: 30 93 65 3f sts 0x3F65, r19 ; 0x803f65 <__brkval+0x1> - 9ee: 20 91 00 3f lds r18, 0x3F00 ; 0x803f00 <__DATA_REGION_ORIGIN__> - 9f2: 30 91 01 3f lds r19, 0x3F01 ; 0x803f01 <__DATA_REGION_ORIGIN__+0x1> - 9f6: 21 15 cp r18, r1 - 9f8: 31 05 cpc r19, r1 - 9fa: 41 f4 brne .+16 ; 0xa0c - 9fc: 2d b7 in r18, 0x3d ; 61 - 9fe: 3e b7 in r19, 0x3e ; 62 - a00: 40 91 04 3f lds r20, 0x3F04 ; 0x803f04 <__malloc_margin> - a04: 50 91 05 3f lds r21, 0x3F05 ; 0x803f05 <__malloc_margin+0x1> - a08: 24 1b sub r18, r20 - a0a: 35 0b sbc r19, r21 - a0c: e0 91 64 3f lds r30, 0x3F64 ; 0x803f64 <__brkval> - a10: f0 91 65 3f lds r31, 0x3F65 ; 0x803f65 <__brkval+0x1> - a14: e2 17 cp r30, r18 - a16: f3 07 cpc r31, r19 - a18: a0 f4 brcc .+40 ; 0xa42 - a1a: 2e 1b sub r18, r30 - a1c: 3f 0b sbc r19, r31 - a1e: 28 17 cp r18, r24 - a20: 39 07 cpc r19, r25 - a22: 78 f0 brcs .+30 ; 0xa42 - a24: ac 01 movw r20, r24 - a26: 4e 5f subi r20, 0xFE ; 254 - a28: 5f 4f sbci r21, 0xFF ; 255 - a2a: 24 17 cp r18, r20 - a2c: 35 07 cpc r19, r21 - a2e: 48 f0 brcs .+18 ; 0xa42 - a30: 4e 0f add r20, r30 - a32: 5f 1f adc r21, r31 - a34: 40 93 64 3f sts 0x3F64, r20 ; 0x803f64 <__brkval> - a38: 50 93 65 3f sts 0x3F65, r21 ; 0x803f65 <__brkval+0x1> - a3c: 81 93 st Z+, r24 - a3e: 91 93 st Z+, r25 - a40: 02 c0 rjmp .+4 ; 0xa46 - a42: e0 e0 ldi r30, 0x00 ; 0 - a44: f0 e0 ldi r31, 0x00 ; 0 - a46: cf 01 movw r24, r30 - a48: df 91 pop r29 - a4a: cf 91 pop r28 - a4c: 1f 91 pop r17 - a4e: 0f 91 pop r16 - a50: 08 95 ret +000008ca : + 8ca: af 92 push r10 + 8cc: bf 92 push r11 + 8ce: cf 92 push r12 + 8d0: df 92 push r13 + 8d2: ef 92 push r14 + 8d4: ff 92 push r15 + 8d6: 0f 93 push r16 + 8d8: 1f 93 push r17 + 8da: cf 93 push r28 + 8dc: df 93 push r29 + 8de: ec 01 movw r28, r24 + 8e0: 66 23 and r22, r22 + 8e2: 09 f4 brne .+2 ; 0x8e6 + 8e4: 48 c0 rjmp .+144 ; 0x976 + 8e6: 61 30 cpi r22, 0x01 ; 1 + 8e8: 09 f1 breq .+66 ; 0x92c + 8ea: 6c 01 movw r12, r24 + 8ec: 82 e0 ldi r24, 0x02 ; 2 + 8ee: c8 0e add r12, r24 + 8f0: d1 1c adc r13, r1 + 8f2: 9e 01 movw r18, r28 + 8f4: 29 5a subi r18, 0xA9 ; 169 + 8f6: 3f 4f sbci r19, 0xFF ; 255 + 8f8: f9 01 movw r30, r18 + 8fa: 80 81 ld r24, Z + 8fc: 80 62 ori r24, 0x20 ; 32 + 8fe: 80 68 ori r24, 0x80 ; 128 + 900: 80 83 st Z, r24 + 902: e1 2c mov r14, r1 + 904: f1 2c mov r15, r1 + 906: 87 01 movw r16, r14 + 908: e3 94 inc r14 + 90a: 41 eb ldi r20, 0xB1 ; 177 + 90c: b6 01 movw r22, r12 + 90e: ce 01 movw r24, r28 + 910: 98 df rcall .-208 ; 0x842 + 912: 80 e0 ldi r24, 0x00 ; 0 + 914: 90 e0 ldi r25, 0x00 ; 0 + 916: df 91 pop r29 + 918: cf 91 pop r28 + 91a: 1f 91 pop r17 + 91c: 0f 91 pop r16 + 91e: ff 90 pop r15 + 920: ef 90 pop r14 + 922: df 90 pop r13 + 924: cf 90 pop r12 + 926: bf 90 pop r11 + 928: af 90 pop r10 + 92a: 08 95 ret + 92c: 42 70 andi r20, 0x02 ; 2 + 92e: 8e 8d ldd r24, Y+30 ; 0x1e + 930: 8c 7f andi r24, 0xFC ; 252 + 932: 48 2b or r20, r24 + 934: 4e 8f std Y+30, r20 ; 0x1e + 936: 3f 8f std Y+31, r19 ; 0x1f + 938: 28 a3 std Y+32, r18 ; 0x20 + 93a: d8 01 movw r26, r16 + 93c: c7 01 movw r24, r14 + 93e: 88 27 eor r24, r24 + 940: 99 27 eor r25, r25 + 942: af 70 andi r26, 0x0F ; 15 + 944: bb 27 eor r27, r27 + 946: fa a2 std Y+34, r15 ; 0x22 + 948: eb a2 std Y+35, r14 ; 0x23 + 94a: 8a 2f mov r24, r26 + 94c: 8f 70 andi r24, 0x0F ; 15 + 94e: 89 a3 std Y+33, r24 ; 0x21 + 950: bc 8e std Y+28, r11 ; 0x1c + 952: ad 8e std Y+29, r10 ; 0x1d + 954: 6e 01 movw r12, r28 + 956: f2 e0 ldi r31, 0x02 ; 2 + 958: cf 0e add r12, r31 + 95a: d1 1c adc r13, r1 + 95c: 18 e0 ldi r17, 0x08 ; 8 + 95e: e1 2e mov r14, r17 + 960: f1 2c mov r15, r1 + 962: 00 e0 ldi r16, 0x00 ; 0 + 964: 10 e0 ldi r17, 0x00 ; 0 + 966: 9e 01 movw r18, r28 + 968: 24 5e subi r18, 0xE4 ; 228 + 96a: 3f 4f sbci r19, 0xFF ; 255 + 96c: 42 e2 ldi r20, 0x22 ; 34 + 96e: b6 01 movw r22, r12 + 970: ce 01 movw r24, r28 + 972: 67 df rcall .-306 ; 0x842 + 974: be cf rjmp .-132 ; 0x8f2 + 976: 42 70 andi r20, 0x02 ; 2 + 978: 8e 89 ldd r24, Y+22 ; 0x16 + 97a: 8c 7f andi r24, 0xFC ; 252 + 97c: 48 2b or r20, r24 + 97e: 4e 8b std Y+22, r20 ; 0x16 + 980: 3f 8b std Y+23, r19 ; 0x17 + 982: 28 8f std Y+24, r18 ; 0x18 + 984: d8 01 movw r26, r16 + 986: c7 01 movw r24, r14 + 988: 88 27 eor r24, r24 + 98a: 99 27 eor r25, r25 + 98c: af 70 andi r26, 0x0F ; 15 + 98e: bb 27 eor r27, r27 + 990: fa 8e std Y+26, r15 ; 0x1a + 992: eb 8e std Y+27, r14 ; 0x1b + 994: 8a 2f mov r24, r26 + 996: 8f 70 andi r24, 0x0F ; 15 + 998: 89 8f std Y+25, r24 ; 0x19 + 99a: bc 8a std Y+20, r11 ; 0x14 + 99c: ad 8a std Y+21, r10 ; 0x15 + 99e: 6e 01 movw r12, r28 + 9a0: e2 e0 ldi r30, 0x02 ; 2 + 9a2: ce 0e add r12, r30 + 9a4: d1 1c adc r13, r1 + 9a6: 18 e0 ldi r17, 0x08 ; 8 + 9a8: e1 2e mov r14, r17 + 9aa: f1 2c mov r15, r1 + 9ac: 00 e0 ldi r16, 0x00 ; 0 + 9ae: 10 e0 ldi r17, 0x00 ; 0 + 9b0: 9e 01 movw r18, r28 + 9b2: 2c 5e subi r18, 0xEC ; 236 + 9b4: 3f 4f sbci r19, 0xFF ; 255 + 9b6: 4a e1 ldi r20, 0x1A ; 26 + 9b8: b6 01 movw r22, r12 + 9ba: ce 01 movw r24, r28 + 9bc: 42 df rcall .-380 ; 0x842 + 9be: 99 cf rjmp .-206 ; 0x8f2 -00000a52 : - a52: cf 93 push r28 - a54: df 93 push r29 - a56: 00 97 sbiw r24, 0x00 ; 0 - a58: 09 f4 brne .+2 ; 0xa5c - a5a: 81 c0 rjmp .+258 ; 0xb5e - a5c: fc 01 movw r30, r24 - a5e: 32 97 sbiw r30, 0x02 ; 2 - a60: 12 82 std Z+2, r1 ; 0x02 - a62: 13 82 std Z+3, r1 ; 0x03 - a64: a0 91 66 3f lds r26, 0x3F66 ; 0x803f66 <__flp> - a68: b0 91 67 3f lds r27, 0x3F67 ; 0x803f67 <__flp+0x1> - a6c: 10 97 sbiw r26, 0x00 ; 0 - a6e: 81 f4 brne .+32 ; 0xa90 - a70: 20 81 ld r18, Z - a72: 31 81 ldd r19, Z+1 ; 0x01 - a74: 82 0f add r24, r18 - a76: 93 1f adc r25, r19 - a78: 20 91 64 3f lds r18, 0x3F64 ; 0x803f64 <__brkval> - a7c: 30 91 65 3f lds r19, 0x3F65 ; 0x803f65 <__brkval+0x1> - a80: 28 17 cp r18, r24 - a82: 39 07 cpc r19, r25 - a84: 51 f5 brne .+84 ; 0xada - a86: e0 93 64 3f sts 0x3F64, r30 ; 0x803f64 <__brkval> - a8a: f0 93 65 3f sts 0x3F65, r31 ; 0x803f65 <__brkval+0x1> - a8e: 67 c0 rjmp .+206 ; 0xb5e - a90: ed 01 movw r28, r26 - a92: 20 e0 ldi r18, 0x00 ; 0 - a94: 30 e0 ldi r19, 0x00 ; 0 - a96: ce 17 cp r28, r30 - a98: df 07 cpc r29, r31 - a9a: 40 f4 brcc .+16 ; 0xaac - a9c: 4a 81 ldd r20, Y+2 ; 0x02 - a9e: 5b 81 ldd r21, Y+3 ; 0x03 - aa0: 9e 01 movw r18, r28 - aa2: 41 15 cp r20, r1 - aa4: 51 05 cpc r21, r1 - aa6: f1 f0 breq .+60 ; 0xae4 - aa8: ea 01 movw r28, r20 - aaa: f5 cf rjmp .-22 ; 0xa96 - aac: c2 83 std Z+2, r28 ; 0x02 - aae: d3 83 std Z+3, r29 ; 0x03 - ab0: 40 81 ld r20, Z - ab2: 51 81 ldd r21, Z+1 ; 0x01 - ab4: 84 0f add r24, r20 - ab6: 95 1f adc r25, r21 - ab8: c8 17 cp r28, r24 - aba: d9 07 cpc r29, r25 - abc: 59 f4 brne .+22 ; 0xad4 - abe: 88 81 ld r24, Y - ac0: 99 81 ldd r25, Y+1 ; 0x01 - ac2: 84 0f add r24, r20 - ac4: 95 1f adc r25, r21 - ac6: 02 96 adiw r24, 0x02 ; 2 - ac8: 80 83 st Z, r24 - aca: 91 83 std Z+1, r25 ; 0x01 - acc: 8a 81 ldd r24, Y+2 ; 0x02 - ace: 9b 81 ldd r25, Y+3 ; 0x03 - ad0: 82 83 std Z+2, r24 ; 0x02 - ad2: 93 83 std Z+3, r25 ; 0x03 - ad4: 21 15 cp r18, r1 - ad6: 31 05 cpc r19, r1 - ad8: 29 f4 brne .+10 ; 0xae4 - ada: e0 93 66 3f sts 0x3F66, r30 ; 0x803f66 <__flp> - ade: f0 93 67 3f sts 0x3F67, r31 ; 0x803f67 <__flp+0x1> - ae2: 3d c0 rjmp .+122 ; 0xb5e - ae4: e9 01 movw r28, r18 - ae6: ea 83 std Y+2, r30 ; 0x02 - ae8: fb 83 std Y+3, r31 ; 0x03 - aea: 49 91 ld r20, Y+ - aec: 59 91 ld r21, Y+ - aee: c4 0f add r28, r20 - af0: d5 1f adc r29, r21 - af2: ec 17 cp r30, r28 - af4: fd 07 cpc r31, r29 - af6: 61 f4 brne .+24 ; 0xb10 - af8: 80 81 ld r24, Z - afa: 91 81 ldd r25, Z+1 ; 0x01 - afc: 84 0f add r24, r20 - afe: 95 1f adc r25, r21 - b00: 02 96 adiw r24, 0x02 ; 2 - b02: e9 01 movw r28, r18 - b04: 88 83 st Y, r24 - b06: 99 83 std Y+1, r25 ; 0x01 - b08: 82 81 ldd r24, Z+2 ; 0x02 - b0a: 93 81 ldd r25, Z+3 ; 0x03 - b0c: 8a 83 std Y+2, r24 ; 0x02 - b0e: 9b 83 std Y+3, r25 ; 0x03 - b10: e0 e0 ldi r30, 0x00 ; 0 - b12: f0 e0 ldi r31, 0x00 ; 0 - b14: 12 96 adiw r26, 0x02 ; 2 - b16: 8d 91 ld r24, X+ - b18: 9c 91 ld r25, X - b1a: 13 97 sbiw r26, 0x03 ; 3 - b1c: 00 97 sbiw r24, 0x00 ; 0 - b1e: 19 f0 breq .+6 ; 0xb26 - b20: fd 01 movw r30, r26 - b22: dc 01 movw r26, r24 - b24: f7 cf rjmp .-18 ; 0xb14 - b26: 8d 91 ld r24, X+ - b28: 9c 91 ld r25, X - b2a: 11 97 sbiw r26, 0x01 ; 1 - b2c: 9d 01 movw r18, r26 - b2e: 2e 5f subi r18, 0xFE ; 254 - b30: 3f 4f sbci r19, 0xFF ; 255 - b32: 82 0f add r24, r18 - b34: 93 1f adc r25, r19 - b36: 20 91 64 3f lds r18, 0x3F64 ; 0x803f64 <__brkval> - b3a: 30 91 65 3f lds r19, 0x3F65 ; 0x803f65 <__brkval+0x1> - b3e: 28 17 cp r18, r24 - b40: 39 07 cpc r19, r25 - b42: 69 f4 brne .+26 ; 0xb5e - b44: 30 97 sbiw r30, 0x00 ; 0 - b46: 29 f4 brne .+10 ; 0xb52 - b48: 10 92 66 3f sts 0x3F66, r1 ; 0x803f66 <__flp> - b4c: 10 92 67 3f sts 0x3F67, r1 ; 0x803f67 <__flp+0x1> - b50: 02 c0 rjmp .+4 ; 0xb56 - b52: 12 82 std Z+2, r1 ; 0x02 - b54: 13 82 std Z+3, r1 ; 0x03 - b56: a0 93 64 3f sts 0x3F64, r26 ; 0x803f64 <__brkval> - b5a: b0 93 65 3f sts 0x3F65, r27 ; 0x803f65 <__brkval+0x1> - b5e: df 91 pop r29 - b60: cf 91 pop r28 - b62: 08 95 ret +000009c0 : + 9c0: af 92 push r10 + 9c2: bf 92 push r11 + 9c4: cf 92 push r12 + 9c6: df 92 push r13 + 9c8: ef 92 push r14 + 9ca: ff 92 push r15 + 9cc: 0f 93 push r16 + 9ce: 1f 93 push r17 + 9d0: fc 01 movw r30, r24 + 9d2: 61 30 cpi r22, 0x01 ; 1 + 9d4: 09 f4 brne .+2 ; 0x9d8 + 9d6: 5f c0 rjmp .+190 ; 0xa96 + 9d8: a8 f1 brcs .+106 ; 0xa44 + 9da: 62 30 cpi r22, 0x02 ; 2 + 9dc: 41 f5 brne .+80 ; 0xa2e + 9de: 43 70 andi r20, 0x03 ; 3 + 9e0: 56 a9 ldd r21, Z+54 ; 0x36 + 9e2: 50 78 andi r21, 0x80 ; 128 + 9e4: 37 ab std Z+55, r19 ; 0x37 + 9e6: 20 af std Z+56, r18 ; 0x38 + 9e8: f2 ae std Z+58, r15 ; 0x3a + 9ea: e3 ae std Z+59, r14 ; 0x3b + 9ec: d6 01 movw r26, r12 + 9ee: c5 01 movw r24, r10 + 9f0: 2c e0 ldi r18, 0x0C ; 12 + 9f2: b6 95 lsr r27 + 9f4: a7 95 ror r26 + 9f6: 97 95 ror r25 + 9f8: 87 95 ror r24 + 9fa: 2a 95 dec r18 + 9fc: d1 f7 brne .-12 ; 0x9f2 + 9fe: 83 70 andi r24, 0x03 ; 3 + a00: 82 95 swap r24 + a02: 80 7f andi r24, 0xF0 ; 240 + a04: 03 70 andi r16, 0x03 ; 3 + a06: 08 2b or r16, r24 + a08: 01 af std Z+57, r16 ; 0x39 + a0a: b4 aa std Z+52, r11 ; 0x34 + a0c: a5 aa std Z+53, r10 ; 0x35 + a0e: 45 2b or r20, r21 + a10: 46 ab std Z+54, r20 ; 0x36 + a12: 9f 01 movw r18, r30 + a14: 2c 5c subi r18, 0xCC ; 204 + a16: 3f 4f sbci r19, 0xFF ; 255 + a18: bf 01 movw r22, r30 + a1a: 6e 5f subi r22, 0xFE ; 254 + a1c: 7f 4f sbci r23, 0xFF ; 255 + a1e: 18 e0 ldi r17, 0x08 ; 8 + a20: e1 2e mov r14, r17 + a22: f1 2c mov r15, r1 + a24: 00 e0 ldi r16, 0x00 ; 0 + a26: 10 e0 ldi r17, 0x00 ; 0 + a28: 4a e3 ldi r20, 0x3A ; 58 + a2a: cf 01 movw r24, r30 + a2c: 0a df rcall .-492 ; 0x842 + a2e: 80 e0 ldi r24, 0x00 ; 0 + a30: 90 e0 ldi r25, 0x00 ; 0 + a32: 1f 91 pop r17 + a34: 0f 91 pop r16 + a36: ff 90 pop r15 + a38: ef 90 pop r14 + a3a: df 90 pop r13 + a3c: cf 90 pop r12 + a3e: bf 90 pop r11 + a40: af 90 pop r10 + a42: 08 95 ret + a44: 43 70 andi r20, 0x03 ; 3 + a46: 56 a1 ldd r21, Z+38 ; 0x26 + a48: 50 78 andi r21, 0x80 ; 128 + a4a: 37 a3 std Z+39, r19 ; 0x27 + a4c: 20 a7 std Z+40, r18 ; 0x28 + a4e: f2 a6 std Z+42, r15 ; 0x2a + a50: e3 a6 std Z+43, r14 ; 0x2b + a52: d6 01 movw r26, r12 + a54: c5 01 movw r24, r10 + a56: 1c e0 ldi r17, 0x0C ; 12 + a58: b6 95 lsr r27 + a5a: a7 95 ror r26 + a5c: 97 95 ror r25 + a5e: 87 95 ror r24 + a60: 1a 95 dec r17 + a62: d1 f7 brne .-12 ; 0xa58 + a64: 83 70 andi r24, 0x03 ; 3 + a66: 82 95 swap r24 + a68: 80 7f andi r24, 0xF0 ; 240 + a6a: 03 70 andi r16, 0x03 ; 3 + a6c: 80 2b or r24, r16 + a6e: 81 a7 std Z+41, r24 ; 0x29 + a70: b4 a2 std Z+36, r11 ; 0x24 + a72: a5 a2 std Z+37, r10 ; 0x25 + a74: 45 2b or r20, r21 + a76: 46 a3 std Z+38, r20 ; 0x26 + a78: 9f 01 movw r18, r30 + a7a: 2c 5d subi r18, 0xDC ; 220 + a7c: 3f 4f sbci r19, 0xFF ; 255 + a7e: bf 01 movw r22, r30 + a80: 6e 5f subi r22, 0xFE ; 254 + a82: 7f 4f sbci r23, 0xFF ; 255 + a84: 18 e0 ldi r17, 0x08 ; 8 + a86: e1 2e mov r14, r17 + a88: f1 2c mov r15, r1 + a8a: 00 e0 ldi r16, 0x00 ; 0 + a8c: 10 e0 ldi r17, 0x00 ; 0 + a8e: 4a e2 ldi r20, 0x2A ; 42 + a90: cf 01 movw r24, r30 + a92: d7 de rcall .-594 ; 0x842 + a94: cc cf rjmp .-104 ; 0xa2e + a96: 43 70 andi r20, 0x03 ; 3 + a98: 56 a5 ldd r21, Z+46 ; 0x2e + a9a: 50 78 andi r21, 0x80 ; 128 + a9c: 37 a7 std Z+47, r19 ; 0x2f + a9e: 20 ab std Z+48, r18 ; 0x30 + aa0: f2 aa std Z+50, r15 ; 0x32 + aa2: e3 aa std Z+51, r14 ; 0x33 + aa4: d6 01 movw r26, r12 + aa6: c5 01 movw r24, r10 + aa8: 6c e0 ldi r22, 0x0C ; 12 + aaa: b6 95 lsr r27 + aac: a7 95 ror r26 + aae: 97 95 ror r25 + ab0: 87 95 ror r24 + ab2: 6a 95 dec r22 + ab4: d1 f7 brne .-12 ; 0xaaa + ab6: 83 70 andi r24, 0x03 ; 3 + ab8: 82 95 swap r24 + aba: 80 7f andi r24, 0xF0 ; 240 + abc: 03 70 andi r16, 0x03 ; 3 + abe: 80 2b or r24, r16 + ac0: 81 ab std Z+49, r24 ; 0x31 + ac2: b4 a6 std Z+44, r11 ; 0x2c + ac4: a5 a6 std Z+45, r10 ; 0x2d + ac6: 45 2b or r20, r21 + ac8: 46 a7 std Z+46, r20 ; 0x2e + aca: 9f 01 movw r18, r30 + acc: 24 5d subi r18, 0xD4 ; 212 + ace: 3f 4f sbci r19, 0xFF ; 255 + ad0: bf 01 movw r22, r30 + ad2: 6e 5f subi r22, 0xFE ; 254 + ad4: 7f 4f sbci r23, 0xFF ; 255 + ad6: 18 e0 ldi r17, 0x08 ; 8 + ad8: e1 2e mov r14, r17 + ada: f1 2c mov r15, r1 + adc: 00 e0 ldi r16, 0x00 ; 0 + ade: 10 e0 ldi r17, 0x00 ; 0 + ae0: 42 e3 ldi r20, 0x32 ; 50 + ae2: cf 01 movw r24, r30 + ae4: ae de rcall .-676 ; 0x842 + ae6: a3 cf rjmp .-186 ; 0xa2e -00000b64 : - b64: fb 01 movw r30, r22 - b66: dc 01 movw r26, r24 - b68: 02 c0 rjmp .+4 ; 0xb6e - b6a: 01 90 ld r0, Z+ - b6c: 0d 92 st X+, r0 - b6e: 41 50 subi r20, 0x01 ; 1 - b70: 50 40 sbci r21, 0x00 ; 0 - b72: d8 f7 brcc .-10 ; 0xb6a - b74: 08 95 ret +00000ae8 : + ae8: ef 92 push r14 + aea: ff 92 push r15 + aec: 0f 93 push r16 + aee: 1f 93 push r17 + af0: 61 30 cpi r22, 0x01 ; 1 + af2: 09 f1 breq .+66 ; 0xb36 + af4: d0 f0 brcs .+52 ; 0xb2a + af6: 62 30 cpi r22, 0x02 ; 2 + af8: 29 f4 brne .+10 ; 0xb04 + afa: fc 01 movw r30, r24 + afc: 27 81 ldd r18, Z+7 ; 0x07 + afe: 40 fb bst r20, 0 + b00: 22 f9 bld r18, 2 + b02: 27 83 std Z+7, r18 ; 0x07 + b04: 9c 01 movw r18, r24 + b06: 29 5f subi r18, 0xF9 ; 249 + b08: 3f 4f sbci r19, 0xFF ; 255 + b0a: bc 01 movw r22, r24 + b0c: 6e 5f subi r22, 0xFE ; 254 + b0e: 7f 4f sbci r23, 0xFF ; 255 + b10: e1 2c mov r14, r1 + b12: f1 2c mov r15, r1 + b14: 87 01 movw r16, r14 + b16: e3 94 inc r14 + b18: 43 e0 ldi r20, 0x03 ; 3 + b1a: 93 de rcall .-730 ; 0x842 + b1c: 80 e0 ldi r24, 0x00 ; 0 + b1e: 90 e0 ldi r25, 0x00 ; 0 + b20: 1f 91 pop r17 + b22: 0f 91 pop r16 + b24: ff 90 pop r15 + b26: ef 90 pop r14 + b28: 08 95 ret + b2a: fc 01 movw r30, r24 + b2c: 27 81 ldd r18, Z+7 ; 0x07 + b2e: 40 fb bst r20, 0 + b30: 20 f9 bld r18, 0 + b32: 27 83 std Z+7, r18 ; 0x07 + b34: e7 cf rjmp .-50 ; 0xb04 + b36: fc 01 movw r30, r24 + b38: 27 81 ldd r18, Z+7 ; 0x07 + b3a: 40 fb bst r20, 0 + b3c: 21 f9 bld r18, 1 + b3e: 27 83 std Z+7, r18 ; 0x07 + b40: e1 cf rjmp .-62 ; 0xb04 -00000b76 : - b76: 03 d0 rcall .+6 ; 0xb7e - b78: 80 81 ld r24, Z - b7a: 99 27 eor r25, r25 - b7c: 08 95 ret +00000b42 : + b42: ef 92 push r14 + b44: ff 92 push r15 + b46: 0f 93 push r16 + b48: 1f 93 push r17 + b4a: 61 30 cpi r22, 0x01 ; 1 + b4c: b9 f1 breq .+110 ; 0xbbc + b4e: e0 f0 brcs .+56 ; 0xb88 + b50: 62 30 cpi r22, 0x02 ; 2 + b52: 99 f4 brne .+38 ; 0xb7a + b54: fc 01 movw r30, r24 + b56: 24 85 ldd r18, Z+12 ; 0x0c + b58: 40 fb bst r20, 0 + b5a: 27 f9 bld r18, 7 + b5c: 23 79 andi r18, 0x93 ; 147 + b5e: 23 66 ori r18, 0x63 ; 99 + b60: 24 87 std Z+12, r18 ; 0x0c + b62: 9c 01 movw r18, r24 + b64: 24 5f subi r18, 0xF4 ; 244 + b66: 3f 4f sbci r19, 0xFF ; 255 + b68: bc 01 movw r22, r24 + b6a: 6e 5f subi r22, 0xFE ; 254 + b6c: 7f 4f sbci r23, 0xFF ; 255 + b6e: e1 2c mov r14, r1 + b70: f1 2c mov r15, r1 + b72: 87 01 movw r16, r14 + b74: e3 94 inc r14 + b76: 42 e1 ldi r20, 0x12 ; 18 + b78: 64 de rcall .-824 ; 0x842 + b7a: 80 e0 ldi r24, 0x00 ; 0 + b7c: 90 e0 ldi r25, 0x00 ; 0 + b7e: 1f 91 pop r17 + b80: 0f 91 pop r16 + b82: ff 90 pop r15 + b84: ef 90 pop r14 + b86: 08 95 ret + b88: fc 01 movw r30, r24 + b8a: 22 85 ldd r18, Z+10 ; 0x0a + b8c: 40 fb bst r20, 0 + b8e: 27 f9 bld r18, 7 + b90: 20 79 andi r18, 0x90 ; 144 + b92: 2f 64 ori r18, 0x4F ; 79 + b94: 22 87 std Z+10, r18 ; 0x0a + b96: 9c 01 movw r18, r24 + b98: 26 5f subi r18, 0xF6 ; 246 + b9a: 3f 4f sbci r19, 0xFF ; 255 + b9c: bc 01 movw r22, r24 + b9e: 6e 5f subi r22, 0xFE ; 254 + ba0: 7f 4f sbci r23, 0xFF ; 255 + ba2: e1 2c mov r14, r1 + ba4: f1 2c mov r15, r1 + ba6: 87 01 movw r16, r14 + ba8: e3 94 inc r14 + baa: 40 e1 ldi r20, 0x10 ; 16 + bac: 4a de rcall .-876 ; 0x842 + bae: 80 e0 ldi r24, 0x00 ; 0 + bb0: 90 e0 ldi r25, 0x00 ; 0 + bb2: 1f 91 pop r17 + bb4: 0f 91 pop r16 + bb6: ff 90 pop r15 + bb8: ef 90 pop r14 + bba: 08 95 ret + bbc: fc 01 movw r30, r24 + bbe: 23 85 ldd r18, Z+11 ; 0x0b + bc0: 40 fb bst r20, 0 + bc2: 27 f9 bld r18, 7 + bc4: 2f 66 ori r18, 0x6F ; 111 + bc6: 23 87 std Z+11, r18 ; 0x0b + bc8: 9c 01 movw r18, r24 + bca: 25 5f subi r18, 0xF5 ; 245 + bcc: 3f 4f sbci r19, 0xFF ; 255 + bce: bc 01 movw r22, r24 + bd0: 6e 5f subi r22, 0xFE ; 254 + bd2: 7f 4f sbci r23, 0xFF ; 255 + bd4: e1 2c mov r14, r1 + bd6: f1 2c mov r15, r1 + bd8: 87 01 movw r16, r14 + bda: e3 94 inc r14 + bdc: 41 e1 ldi r20, 0x11 ; 17 + bde: 31 de rcall .-926 ; 0x842 + be0: 80 e0 ldi r24, 0x00 ; 0 + be2: 90 e0 ldi r25, 0x00 ; 0 + be4: 1f 91 pop r17 + be6: 0f 91 pop r16 + be8: ff 90 pop r15 + bea: ef 90 pop r14 + bec: 08 95 ret -00000b7e : - b7e: fc 01 movw r30, r24 - b80: e0 50 subi r30, 0x00 ; 0 - b82: fc 4e sbci r31, 0xEC ; 236 - b84: 08 95 ret +00000bee : + bee: ef 92 push r14 + bf0: ff 92 push r15 + bf2: 0f 93 push r16 + bf4: 1f 93 push r17 + bf6: 66 23 and r22, r22 + bf8: c9 f0 breq .+50 ; 0xc2c + bfa: 61 30 cpi r22, 0x01 ; 1 + bfc: 21 f4 brne .+8 ; 0xc06 + bfe: fc 01 movw r30, r24 + c00: 21 85 ldd r18, Z+9 ; 0x09 + c02: 24 60 ori r18, 0x04 ; 4 + c04: 21 87 std Z+9, r18 ; 0x09 + c06: 9c 01 movw r18, r24 + c08: 27 5f subi r18, 0xF7 ; 247 + c0a: 3f 4f sbci r19, 0xFF ; 255 + c0c: bc 01 movw r22, r24 + c0e: 6e 5f subi r22, 0xFE ; 254 + c10: 7f 4f sbci r23, 0xFF ; 255 + c12: e1 2c mov r14, r1 + c14: f1 2c mov r15, r1 + c16: 87 01 movw r16, r14 + c18: e3 94 inc r14 + c1a: 40 ef ldi r20, 0xF0 ; 240 + c1c: 12 de rcall .-988 ; 0x842 + c1e: 80 e0 ldi r24, 0x00 ; 0 + c20: 90 e0 ldi r25, 0x00 ; 0 + c22: 1f 91 pop r17 + c24: 0f 91 pop r16 + c26: ff 90 pop r15 + c28: ef 90 pop r14 + c2a: 08 95 ret + c2c: fc 01 movw r30, r24 + c2e: 21 85 ldd r18, Z+9 ; 0x09 + c30: 2b 7f andi r18, 0xFB ; 251 + c32: 27 7f andi r18, 0xF7 ; 247 + c34: 21 87 std Z+9, r18 ; 0x09 + c36: e7 cf rjmp .-50 ; 0xc06 -00000b86 : - b86: 26 2f mov r18, r22 +00000c38 : -00000b88 : - b88: af 93 push r26 - b8a: bf 93 push r27 - b8c: e0 e0 ldi r30, 0x00 ; 0 - b8e: f0 e1 ldi r31, 0x10 ; 16 - b90: 32 81 ldd r19, Z+2 ; 0x02 - b92: 31 fd sbrc r19, 1 - b94: fd cf rjmp .-6 ; 0xb90 - b96: dc 01 movw r26, r24 - b98: a0 50 subi r26, 0x00 ; 0 - b9a: bc 4e sbci r27, 0xEC ; 236 - b9c: 2c 93 st X, r18 - b9e: 2d e9 ldi r18, 0x9D ; 157 - ba0: 24 bf out 0x34, r18 ; 52 - ba2: 23 e0 ldi r18, 0x03 ; 3 - ba4: 20 83 st Z, r18 - ba6: 01 96 adiw r24, 0x01 ; 1 - ba8: bf 91 pop r27 - baa: af 91 pop r26 - bac: 08 95 ret +int cm_si5351_init(si5351_driver *inst, void *i2c_transfer_inst, setGet_I2C_Event_fpt i2c_transfer_evt){ + c38: af 92 push r10 + c3a: bf 92 push r11 + c3c: cf 92 push r12 + c3e: df 92 push r13 + c40: ef 92 push r14 + c42: ff 92 push r15 + c44: 0f 93 push r16 + c46: 1f 93 push r17 + c48: cf 93 push r28 + c4a: df 93 push r29 + c4c: 1f 92 push r1 + c4e: cd b7 in r28, 0x3d ; 61 + c50: de b7 in r29, 0x3e ; 62 -00000bae <_exit>: - bae: f8 94 cli + if(inst == NULL)return -1; + c52: 00 97 sbiw r24, 0x00 ; 0 + c54: 09 f4 brne .+2 ; 0xc58 + c56: 83 c0 rjmp .+262 ; 0xd5e + if(i2c_transfer_inst == NULL)return -1; + c58: 61 15 cp r22, r1 + c5a: 71 05 cpc r23, r1 + c5c: 09 f4 brne .+2 ; 0xc60 + c5e: 7f c0 rjmp .+254 ; 0xd5e + if(i2c_transfer_evt == NULL)return -1; + c60: 41 15 cp r20, r1 + c62: 51 05 cpc r21, r1 + c64: 09 f4 brne .+2 ; 0xc68 + c66: 7b c0 rjmp .+246 ; 0xd5e + c68: 6c 01 movw r12, r24 -00000bb0 <__stop_program>: - bb0: ff cf rjmp .-2 ; 0xbb0 <__stop_program> + inst->i2c_transfer_inst = i2c_transfer_inst; + c6a: dc 01 movw r26, r24 + c6c: 6d 93 st X+, r22 + c6e: 7c 93 st X, r23 + c70: 11 97 sbiw r26, 0x01 ; 1 + inst->i2c_transfer_evt = i2c_transfer_evt; + c72: 12 96 adiw r26, 0x02 ; 2 + c74: 4d 93 st X+, r20 + c76: 5c 93 st X, r21 + c78: 13 97 sbiw r26, 0x03 ; 3 + + int ret = 0; + + memset(&(inst->device_data),0x00,sizeof(si5351_data)); + c7a: fc 01 movw r30, r24 + c7c: 34 96 adiw r30, 0x04 ; 4 + c7e: 84 e5 ldi r24, 0x54 ; 84 + c80: df 01 movw r26, r30 + c82: 1d 92 st X+, r1 + c84: 8a 95 dec r24 + c86: e9 f7 brne .-6 ; 0xc82 + + /* Disable all outputs setting CLKx_DIS high */ + uint8_t temp = 0xff; + c88: 8f ef ldi r24, 0xFF ; 255 + c8a: 89 83 std Y+1, r24 ; 0x01 + c8c: 56 01 movw r10, r12 + c8e: b2 e0 ldi r27, 0x02 ; 2 + c90: ab 0e add r10, r27 + c92: b1 1c adc r11, r1 + writeRegister(inst,SI5351_REG_OUTPUT_ENABLE_CONTROL,&temp,1); + c94: e1 2c mov r14, r1 + c96: f1 2c mov r15, r1 + c98: 87 01 movw r16, r14 + c9a: e3 94 inc r14 + c9c: 9e 01 movw r18, r28 + c9e: 2f 5f subi r18, 0xFF ; 255 + ca0: 3f 4f sbci r19, 0xFF ; 255 + ca2: 43 e0 ldi r20, 0x03 ; 3 + ca4: b5 01 movw r22, r10 + ca6: c6 01 movw r24, r12 + ca8: cc dd rcall .-1128 ; 0x842 + + /* Power down all output drivers */ + temp = 0x80; + caa: 80 e8 ldi r24, 0x80 ; 128 + cac: 89 83 std Y+1, r24 ; 0x01 + writeRegister(inst,SI5351_REG_CLK_0_CONTROL,&temp,1); + cae: 9e 01 movw r18, r28 + cb0: 2f 5f subi r18, 0xFF ; 255 + cb2: 3f 4f sbci r19, 0xFF ; 255 + cb4: 40 e1 ldi r20, 0x10 ; 16 + cb6: b5 01 movw r22, r10 + cb8: c6 01 movw r24, r12 + cba: c3 dd rcall .-1146 ; 0x842 + writeRegister(inst,SI5351_REG_CLK_1_CONTROL,&temp,1); + cbc: 9e 01 movw r18, r28 + cbe: 2f 5f subi r18, 0xFF ; 255 + cc0: 3f 4f sbci r19, 0xFF ; 255 + cc2: 41 e1 ldi r20, 0x11 ; 17 + cc4: b5 01 movw r22, r10 + cc6: c6 01 movw r24, r12 + cc8: bc dd rcall .-1160 ; 0x842 + writeRegister(inst,SI5351_REG_CLK_2_CONTROL,&temp,1); + cca: 9e 01 movw r18, r28 + ccc: 2f 5f subi r18, 0xFF ; 255 + cce: 3f 4f sbci r19, 0xFF ; 255 + cd0: 42 e1 ldi r20, 0x12 ; 18 + cd2: b5 01 movw r22, r10 + cd4: c6 01 movw r24, r12 + cd6: b5 dd rcall .-1174 ; 0x842 + writeRegister(inst,SI5351_REG_CLK_3_CONTROL,&temp,1); + cd8: 9e 01 movw r18, r28 + cda: 2f 5f subi r18, 0xFF ; 255 + cdc: 3f 4f sbci r19, 0xFF ; 255 + cde: 43 e1 ldi r20, 0x13 ; 19 + ce0: b5 01 movw r22, r10 + ce2: c6 01 movw r24, r12 + ce4: ae dd rcall .-1188 ; 0x842 + writeRegister(inst,SI5351_REG_CLK_4_CONTROL,&temp,1); + ce6: 9e 01 movw r18, r28 + ce8: 2f 5f subi r18, 0xFF ; 255 + cea: 3f 4f sbci r19, 0xFF ; 255 + cec: 44 e1 ldi r20, 0x14 ; 20 + cee: b5 01 movw r22, r10 + cf0: c6 01 movw r24, r12 + cf2: a7 dd rcall .-1202 ; 0x842 + writeRegister(inst,SI5351_REG_CLK_5_CONTROL,&temp,1); + cf4: 9e 01 movw r18, r28 + cf6: 2f 5f subi r18, 0xFF ; 255 + cf8: 3f 4f sbci r19, 0xFF ; 255 + cfa: 45 e1 ldi r20, 0x15 ; 21 + cfc: b5 01 movw r22, r10 + cfe: c6 01 movw r24, r12 + d00: a0 dd rcall .-1216 ; 0x842 + writeRegister(inst,SI5351_REG_CLK_6_CONTROL,&temp,1); + d02: 9e 01 movw r18, r28 + d04: 2f 5f subi r18, 0xFF ; 255 + d06: 3f 4f sbci r19, 0xFF ; 255 + d08: 46 e1 ldi r20, 0x16 ; 22 + d0a: b5 01 movw r22, r10 + d0c: c6 01 movw r24, r12 + d0e: 99 dd rcall .-1230 ; 0x842 + writeRegister(inst,SI5351_REG_CLK_7_CONTROL,&temp,1); + d10: 9e 01 movw r18, r28 + d12: 2f 5f subi r18, 0xFF ; 255 + d14: 3f 4f sbci r19, 0xFF ; 255 + d16: 47 e1 ldi r20, 0x17 ; 23 + d18: b5 01 movw r22, r10 + d1a: c6 01 movw r24, r12 + d1c: 92 dd rcall .-1244 ; 0x842 + + temp = SI5351_CRYSTAL_LOAD_10PF; + d1e: 80 ec ldi r24, 0xC0 ; 192 + d20: 89 83 std Y+1, r24 ; 0x01 + + writeRegister(inst,SI5351_REG_CRYSTAL_LOAD_CAPACITANCE,&temp,1); + d22: 9e 01 movw r18, r28 + d24: 2f 5f subi r18, 0xFF ; 255 + d26: 3f 4f sbci r19, 0xFF ; 255 + d28: 47 eb ldi r20, 0xB7 ; 183 + d2a: b5 01 movw r22, r10 + d2c: c6 01 movw r24, r12 + d2e: 89 dd rcall .-1262 ; 0x842 + + temp = 0b01000000; + d30: 80 e4 ldi r24, 0x40 ; 64 + d32: 89 83 std Y+1, r24 ; 0x01 + writeRegister(inst,SI5351_REG_FANOUT_ENABLE,&temp,1); + d34: 9e 01 movw r18, r28 + d36: 2f 5f subi r18, 0xFF ; 255 + d38: 3f 4f sbci r19, 0xFF ; 255 + d3a: 4b eb ldi r20, 0xBB ; 187 + d3c: b5 01 movw r22, r10 + d3e: c6 01 movw r24, r12 + d40: 80 dd rcall .-1280 ; 0x842 + return ret; + d42: 80 e0 ldi r24, 0x00 ; 0 + d44: 90 e0 ldi r25, 0x00 ; 0 + + + +} + d46: 0f 90 pop r0 + d48: df 91 pop r29 + d4a: cf 91 pop r28 + d4c: 1f 91 pop r17 + d4e: 0f 91 pop r16 + d50: ff 90 pop r15 + d52: ef 90 pop r14 + d54: df 90 pop r13 + d56: cf 90 pop r12 + d58: bf 90 pop r11 + d5a: af 90 pop r10 + d5c: 08 95 ret + return inst->device_data.deviceStatus.REVID; +} + +int cm_si5351_init(si5351_driver *inst, void *i2c_transfer_inst, setGet_I2C_Event_fpt i2c_transfer_evt){ + + if(inst == NULL)return -1; + d5e: 8f ef ldi r24, 0xFF ; 255 + d60: 9f ef ldi r25, 0xFF ; 255 + d62: f1 cf rjmp .-30 ; 0xd46 + +00000d64 : + d64: 0f 93 push r16 + d66: 1f 93 push r17 + d68: cf 93 push r28 + d6a: df 93 push r29 + d6c: 82 30 cpi r24, 0x02 ; 2 + d6e: 91 05 cpc r25, r1 + d70: 10 f4 brcc .+4 ; 0xd76 + d72: 82 e0 ldi r24, 0x02 ; 2 + d74: 90 e0 ldi r25, 0x00 ; 0 + d76: e0 91 65 3f lds r30, 0x3F65 ; 0x803f65 <__flp> + d7a: f0 91 66 3f lds r31, 0x3F66 ; 0x803f66 <__flp+0x1> + d7e: 20 e0 ldi r18, 0x00 ; 0 + d80: 30 e0 ldi r19, 0x00 ; 0 + d82: a0 e0 ldi r26, 0x00 ; 0 + d84: b0 e0 ldi r27, 0x00 ; 0 + d86: 30 97 sbiw r30, 0x00 ; 0 + d88: 19 f1 breq .+70 ; 0xdd0 + d8a: 40 81 ld r20, Z + d8c: 51 81 ldd r21, Z+1 ; 0x01 + d8e: 02 81 ldd r16, Z+2 ; 0x02 + d90: 13 81 ldd r17, Z+3 ; 0x03 + d92: 48 17 cp r20, r24 + d94: 59 07 cpc r21, r25 + d96: c8 f0 brcs .+50 ; 0xdca + d98: 84 17 cp r24, r20 + d9a: 95 07 cpc r25, r21 + d9c: 69 f4 brne .+26 ; 0xdb8 + d9e: 10 97 sbiw r26, 0x00 ; 0 + da0: 31 f0 breq .+12 ; 0xdae + da2: 12 96 adiw r26, 0x02 ; 2 + da4: 0c 93 st X, r16 + da6: 12 97 sbiw r26, 0x02 ; 2 + da8: 13 96 adiw r26, 0x03 ; 3 + daa: 1c 93 st X, r17 + dac: 27 c0 rjmp .+78 ; 0xdfc + dae: 00 93 65 3f sts 0x3F65, r16 ; 0x803f65 <__flp> + db2: 10 93 66 3f sts 0x3F66, r17 ; 0x803f66 <__flp+0x1> + db6: 22 c0 rjmp .+68 ; 0xdfc + db8: 21 15 cp r18, r1 + dba: 31 05 cpc r19, r1 + dbc: 19 f0 breq .+6 ; 0xdc4 + dbe: 42 17 cp r20, r18 + dc0: 53 07 cpc r21, r19 + dc2: 18 f4 brcc .+6 ; 0xdca + dc4: 9a 01 movw r18, r20 + dc6: bd 01 movw r22, r26 + dc8: ef 01 movw r28, r30 + dca: df 01 movw r26, r30 + dcc: f8 01 movw r30, r16 + dce: db cf rjmp .-74 ; 0xd86 + dd0: 21 15 cp r18, r1 + dd2: 31 05 cpc r19, r1 + dd4: f9 f0 breq .+62 ; 0xe14 + dd6: 28 1b sub r18, r24 + dd8: 39 0b sbc r19, r25 + dda: 24 30 cpi r18, 0x04 ; 4 + ddc: 31 05 cpc r19, r1 + dde: 80 f4 brcc .+32 ; 0xe00 + de0: 8a 81 ldd r24, Y+2 ; 0x02 + de2: 9b 81 ldd r25, Y+3 ; 0x03 + de4: 61 15 cp r22, r1 + de6: 71 05 cpc r23, r1 + de8: 21 f0 breq .+8 ; 0xdf2 + dea: fb 01 movw r30, r22 + dec: 82 83 std Z+2, r24 ; 0x02 + dee: 93 83 std Z+3, r25 ; 0x03 + df0: 04 c0 rjmp .+8 ; 0xdfa + df2: 80 93 65 3f sts 0x3F65, r24 ; 0x803f65 <__flp> + df6: 90 93 66 3f sts 0x3F66, r25 ; 0x803f66 <__flp+0x1> + dfa: fe 01 movw r30, r28 + dfc: 32 96 adiw r30, 0x02 ; 2 + dfe: 44 c0 rjmp .+136 ; 0xe88 + e00: fe 01 movw r30, r28 + e02: e2 0f add r30, r18 + e04: f3 1f adc r31, r19 + e06: 81 93 st Z+, r24 + e08: 91 93 st Z+, r25 + e0a: 22 50 subi r18, 0x02 ; 2 + e0c: 31 09 sbc r19, r1 + e0e: 28 83 st Y, r18 + e10: 39 83 std Y+1, r19 ; 0x01 + e12: 3a c0 rjmp .+116 ; 0xe88 + e14: 20 91 63 3f lds r18, 0x3F63 ; 0x803f63 <__brkval> + e18: 30 91 64 3f lds r19, 0x3F64 ; 0x803f64 <__brkval+0x1> + e1c: 23 2b or r18, r19 + e1e: 41 f4 brne .+16 ; 0xe30 + e20: 20 91 02 3f lds r18, 0x3F02 ; 0x803f02 <__malloc_heap_start> + e24: 30 91 03 3f lds r19, 0x3F03 ; 0x803f03 <__malloc_heap_start+0x1> + e28: 20 93 63 3f sts 0x3F63, r18 ; 0x803f63 <__brkval> + e2c: 30 93 64 3f sts 0x3F64, r19 ; 0x803f64 <__brkval+0x1> + e30: 20 91 00 3f lds r18, 0x3F00 ; 0x803f00 <__DATA_REGION_ORIGIN__> + e34: 30 91 01 3f lds r19, 0x3F01 ; 0x803f01 <__DATA_REGION_ORIGIN__+0x1> + e38: 21 15 cp r18, r1 + e3a: 31 05 cpc r19, r1 + e3c: 41 f4 brne .+16 ; 0xe4e + e3e: 2d b7 in r18, 0x3d ; 61 + e40: 3e b7 in r19, 0x3e ; 62 + e42: 40 91 04 3f lds r20, 0x3F04 ; 0x803f04 <__malloc_margin> + e46: 50 91 05 3f lds r21, 0x3F05 ; 0x803f05 <__malloc_margin+0x1> + e4a: 24 1b sub r18, r20 + e4c: 35 0b sbc r19, r21 + e4e: e0 91 63 3f lds r30, 0x3F63 ; 0x803f63 <__brkval> + e52: f0 91 64 3f lds r31, 0x3F64 ; 0x803f64 <__brkval+0x1> + e56: e2 17 cp r30, r18 + e58: f3 07 cpc r31, r19 + e5a: a0 f4 brcc .+40 ; 0xe84 + e5c: 2e 1b sub r18, r30 + e5e: 3f 0b sbc r19, r31 + e60: 28 17 cp r18, r24 + e62: 39 07 cpc r19, r25 + e64: 78 f0 brcs .+30 ; 0xe84 + e66: ac 01 movw r20, r24 + e68: 4e 5f subi r20, 0xFE ; 254 + e6a: 5f 4f sbci r21, 0xFF ; 255 + e6c: 24 17 cp r18, r20 + e6e: 35 07 cpc r19, r21 + e70: 48 f0 brcs .+18 ; 0xe84 + e72: 4e 0f add r20, r30 + e74: 5f 1f adc r21, r31 + e76: 40 93 63 3f sts 0x3F63, r20 ; 0x803f63 <__brkval> + e7a: 50 93 64 3f sts 0x3F64, r21 ; 0x803f64 <__brkval+0x1> + e7e: 81 93 st Z+, r24 + e80: 91 93 st Z+, r25 + e82: 02 c0 rjmp .+4 ; 0xe88 + e84: e0 e0 ldi r30, 0x00 ; 0 + e86: f0 e0 ldi r31, 0x00 ; 0 + e88: cf 01 movw r24, r30 + e8a: df 91 pop r29 + e8c: cf 91 pop r28 + e8e: 1f 91 pop r17 + e90: 0f 91 pop r16 + e92: 08 95 ret + +00000e94 : + e94: cf 93 push r28 + e96: df 93 push r29 + e98: 00 97 sbiw r24, 0x00 ; 0 + e9a: 09 f4 brne .+2 ; 0xe9e + e9c: 81 c0 rjmp .+258 ; 0xfa0 + e9e: fc 01 movw r30, r24 + ea0: 32 97 sbiw r30, 0x02 ; 2 + ea2: 12 82 std Z+2, r1 ; 0x02 + ea4: 13 82 std Z+3, r1 ; 0x03 + ea6: a0 91 65 3f lds r26, 0x3F65 ; 0x803f65 <__flp> + eaa: b0 91 66 3f lds r27, 0x3F66 ; 0x803f66 <__flp+0x1> + eae: 10 97 sbiw r26, 0x00 ; 0 + eb0: 81 f4 brne .+32 ; 0xed2 + eb2: 20 81 ld r18, Z + eb4: 31 81 ldd r19, Z+1 ; 0x01 + eb6: 82 0f add r24, r18 + eb8: 93 1f adc r25, r19 + eba: 20 91 63 3f lds r18, 0x3F63 ; 0x803f63 <__brkval> + ebe: 30 91 64 3f lds r19, 0x3F64 ; 0x803f64 <__brkval+0x1> + ec2: 28 17 cp r18, r24 + ec4: 39 07 cpc r19, r25 + ec6: 51 f5 brne .+84 ; 0xf1c + ec8: e0 93 63 3f sts 0x3F63, r30 ; 0x803f63 <__brkval> + ecc: f0 93 64 3f sts 0x3F64, r31 ; 0x803f64 <__brkval+0x1> + ed0: 67 c0 rjmp .+206 ; 0xfa0 + ed2: ed 01 movw r28, r26 + ed4: 20 e0 ldi r18, 0x00 ; 0 + ed6: 30 e0 ldi r19, 0x00 ; 0 + ed8: ce 17 cp r28, r30 + eda: df 07 cpc r29, r31 + edc: 40 f4 brcc .+16 ; 0xeee + ede: 4a 81 ldd r20, Y+2 ; 0x02 + ee0: 5b 81 ldd r21, Y+3 ; 0x03 + ee2: 9e 01 movw r18, r28 + ee4: 41 15 cp r20, r1 + ee6: 51 05 cpc r21, r1 + ee8: f1 f0 breq .+60 ; 0xf26 + eea: ea 01 movw r28, r20 + eec: f5 cf rjmp .-22 ; 0xed8 + eee: c2 83 std Z+2, r28 ; 0x02 + ef0: d3 83 std Z+3, r29 ; 0x03 + ef2: 40 81 ld r20, Z + ef4: 51 81 ldd r21, Z+1 ; 0x01 + ef6: 84 0f add r24, r20 + ef8: 95 1f adc r25, r21 + efa: c8 17 cp r28, r24 + efc: d9 07 cpc r29, r25 + efe: 59 f4 brne .+22 ; 0xf16 + f00: 88 81 ld r24, Y + f02: 99 81 ldd r25, Y+1 ; 0x01 + f04: 84 0f add r24, r20 + f06: 95 1f adc r25, r21 + f08: 02 96 adiw r24, 0x02 ; 2 + f0a: 80 83 st Z, r24 + f0c: 91 83 std Z+1, r25 ; 0x01 + f0e: 8a 81 ldd r24, Y+2 ; 0x02 + f10: 9b 81 ldd r25, Y+3 ; 0x03 + f12: 82 83 std Z+2, r24 ; 0x02 + f14: 93 83 std Z+3, r25 ; 0x03 + f16: 21 15 cp r18, r1 + f18: 31 05 cpc r19, r1 + f1a: 29 f4 brne .+10 ; 0xf26 + f1c: e0 93 65 3f sts 0x3F65, r30 ; 0x803f65 <__flp> + f20: f0 93 66 3f sts 0x3F66, r31 ; 0x803f66 <__flp+0x1> + f24: 3d c0 rjmp .+122 ; 0xfa0 + f26: e9 01 movw r28, r18 + f28: ea 83 std Y+2, r30 ; 0x02 + f2a: fb 83 std Y+3, r31 ; 0x03 + f2c: 49 91 ld r20, Y+ + f2e: 59 91 ld r21, Y+ + f30: c4 0f add r28, r20 + f32: d5 1f adc r29, r21 + f34: ec 17 cp r30, r28 + f36: fd 07 cpc r31, r29 + f38: 61 f4 brne .+24 ; 0xf52 + f3a: 80 81 ld r24, Z + f3c: 91 81 ldd r25, Z+1 ; 0x01 + f3e: 84 0f add r24, r20 + f40: 95 1f adc r25, r21 + f42: 02 96 adiw r24, 0x02 ; 2 + f44: e9 01 movw r28, r18 + f46: 88 83 st Y, r24 + f48: 99 83 std Y+1, r25 ; 0x01 + f4a: 82 81 ldd r24, Z+2 ; 0x02 + f4c: 93 81 ldd r25, Z+3 ; 0x03 + f4e: 8a 83 std Y+2, r24 ; 0x02 + f50: 9b 83 std Y+3, r25 ; 0x03 + f52: e0 e0 ldi r30, 0x00 ; 0 + f54: f0 e0 ldi r31, 0x00 ; 0 + f56: 12 96 adiw r26, 0x02 ; 2 + f58: 8d 91 ld r24, X+ + f5a: 9c 91 ld r25, X + f5c: 13 97 sbiw r26, 0x03 ; 3 + f5e: 00 97 sbiw r24, 0x00 ; 0 + f60: 19 f0 breq .+6 ; 0xf68 + f62: fd 01 movw r30, r26 + f64: dc 01 movw r26, r24 + f66: f7 cf rjmp .-18 ; 0xf56 + f68: 8d 91 ld r24, X+ + f6a: 9c 91 ld r25, X + f6c: 11 97 sbiw r26, 0x01 ; 1 + f6e: 9d 01 movw r18, r26 + f70: 2e 5f subi r18, 0xFE ; 254 + f72: 3f 4f sbci r19, 0xFF ; 255 + f74: 82 0f add r24, r18 + f76: 93 1f adc r25, r19 + f78: 20 91 63 3f lds r18, 0x3F63 ; 0x803f63 <__brkval> + f7c: 30 91 64 3f lds r19, 0x3F64 ; 0x803f64 <__brkval+0x1> + f80: 28 17 cp r18, r24 + f82: 39 07 cpc r19, r25 + f84: 69 f4 brne .+26 ; 0xfa0 + f86: 30 97 sbiw r30, 0x00 ; 0 + f88: 29 f4 brne .+10 ; 0xf94 + f8a: 10 92 65 3f sts 0x3F65, r1 ; 0x803f65 <__flp> + f8e: 10 92 66 3f sts 0x3F66, r1 ; 0x803f66 <__flp+0x1> + f92: 02 c0 rjmp .+4 ; 0xf98 + f94: 12 82 std Z+2, r1 ; 0x02 + f96: 13 82 std Z+3, r1 ; 0x03 + f98: a0 93 63 3f sts 0x3F63, r26 ; 0x803f63 <__brkval> + f9c: b0 93 64 3f sts 0x3F64, r27 ; 0x803f64 <__brkval+0x1> + fa0: df 91 pop r29 + fa2: cf 91 pop r28 + fa4: 08 95 ret + +00000fa6 : + fa6: fb 01 movw r30, r22 + fa8: dc 01 movw r26, r24 + faa: 02 c0 rjmp .+4 ; 0xfb0 + fac: 01 90 ld r0, Z+ + fae: 0d 92 st X+, r0 + fb0: 41 50 subi r20, 0x01 ; 1 + fb2: 50 40 sbci r21, 0x00 ; 0 + fb4: d8 f7 brcc .-10 ; 0xfac + fb6: 08 95 ret + +00000fb8 : + fb8: 03 d0 rcall .+6 ; 0xfc0 + fba: 80 81 ld r24, Z + fbc: 99 27 eor r25, r25 + fbe: 08 95 ret + +00000fc0 : + fc0: fc 01 movw r30, r24 + fc2: e0 50 subi r30, 0x00 ; 0 + fc4: fc 4e sbci r31, 0xEC ; 236 + fc6: 08 95 ret + +00000fc8 : + fc8: 26 2f mov r18, r22 + +00000fca : + fca: af 93 push r26 + fcc: bf 93 push r27 + fce: e0 e0 ldi r30, 0x00 ; 0 + fd0: f0 e1 ldi r31, 0x10 ; 16 + fd2: 32 81 ldd r19, Z+2 ; 0x02 + fd4: 31 fd sbrc r19, 1 + fd6: fd cf rjmp .-6 ; 0xfd2 + fd8: dc 01 movw r26, r24 + fda: a0 50 subi r26, 0x00 ; 0 + fdc: bc 4e sbci r27, 0xEC ; 236 + fde: 2c 93 st X, r18 + fe0: 2d e9 ldi r18, 0x9D ; 157 + fe2: 24 bf out 0x34, r18 ; 52 + fe4: 23 e0 ldi r18, 0x03 ; 3 + fe6: 20 83 st Z, r18 + fe8: 01 96 adiw r24, 0x01 ; 1 + fea: bf 91 pop r27 + fec: af 91 pop r26 + fee: 08 95 ret + +00000ff0 <_exit>: + ff0: f8 94 cli + +00000ff2 <__stop_program>: + ff2: ff cf rjmp .-2 ; 0xff2 <__stop_program> 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 1d945ee..fc2a234 100644 --- a/storno_cqp6xx_digital_xtal/Debug/storno_cqp6xx_digital_xtal.map +++ b/storno_cqp6xx_digital_xtal/Debug/storno_cqp6xx_digital_xtal.map @@ -42,8 +42,6 @@ c:/program files (x86)/atmel/studio/7.0/toolchain/avr8/avr8-gnu-toolchain/bin/.. si5351_driver/si5351_driver.o (__udivmodsi4) c:/program files (x86)/atmel/studio/7.0/toolchain/avr8/avr8-gnu-toolchain/bin/../lib/gcc/avr/5.4.0/avrxmega3/short-calls\libgcc.a(_exit.o) C:/Program Files (x86)/Atmel/Studio/7.0/Packs/atmel/ATtiny_DFP/1.10.348/gcc/dev/attiny402/avrxmega3/short-calls/crtattiny402.o (exit) -c:/program files (x86)/atmel/studio/7.0/toolchain/avr8/avr8-gnu-toolchain/bin/../lib/gcc/avr/5.4.0/avrxmega3/short-calls\libgcc.a(_copy_data.o) - main.o (__do_copy_data) c:/program files (x86)/atmel/studio/7.0/toolchain/avr8/avr8-gnu-toolchain/bin/../lib/gcc/avr/5.4.0/avrxmega3/short-calls\libgcc.a(_clear_bss.o) avr_uart_driver/avr_uart.o (__do_clear_bss) c:/program files (x86)/atmel/studio/7.0/toolchain/avr8/avr8-gnu-toolchain/bin/../lib/gcc/avr/5.4.0/../../../../avr/lib/avrxmega3/short-calls\libc.a(malloc.o) @@ -54,6 +52,8 @@ C:/Program Files (x86)/Atmel/Studio/7.0/Packs/atmel/ATtiny_DFP/1.10.348/gcc/dev/ avr_eeprom_driver/avr_eeprom_driver.o (eeprom_read_byte) C:/Program Files (x86)/Atmel/Studio/7.0/Packs/atmel/ATtiny_DFP/1.10.348/gcc/dev/attiny402/avrxmega3/short-calls\libattiny402.a(eewr_byte.o) avr_eeprom_driver/avr_eeprom_driver.o (eeprom_write_byte) +c:/program files (x86)/atmel/studio/7.0/toolchain/avr8/avr8-gnu-toolchain/bin/../lib/gcc/avr/5.4.0/avrxmega3/short-calls\libgcc.a(_copy_data.o) + c:/program files (x86)/atmel/studio/7.0/toolchain/avr8/avr8-gnu-toolchain/bin/../lib/gcc/avr/5.4.0/../../../../avr/lib/avrxmega3/short-calls\libc.a(malloc.o) (__do_copy_data) Allocating common symbols Common symbol size file @@ -73,16 +73,22 @@ 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 0x34 avr_gpio_driver/avr_gpio.o + 0x00000000 0x28 avr_gpio_driver/avr_gpio.o .text.gpio_init - 0x00000000 0x34 avr_gpio_driver/avr_gpio.o + 0x00000000 0x28 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 0x48 avr_i2c_driver/avr_i2c.o + 0x00000000 0x3e avr_i2c_driver/avr_i2c.o .text.i2c_byte_read 0x00000000 0x34 avr_i2c_driver/avr_i2c.o + .text.i2c_write + 0x00000000 0x1e avr_i2c_driver/avr_i2c.o + .text.i2c_IsDeviceReady + 0x00000000 0x2c avr_i2c_driver/avr_i2c.o .text 0x00000000 0x0 avr_uart_driver/avr_uart.o .data 0x00000000 0x0 avr_uart_driver/avr_uart.o .bss 0x00000000 0x0 avr_uart_driver/avr_uart.o @@ -101,30 +107,17 @@ Discarded input sections .text 0x00000000 0x0 main.o .data 0x00000000 0x0 main.o .bss 0x00000000 0x0 main.o - .bss.data 0x00000000 0x19 main.o - .data.data_set - 0x00000000 0x19 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.readRegister - 0x00000000 0x80 si5351_driver/si5351_driver.o - .text.cm_setOutputMultiSynthRaw - 0x00000000 0xcc si5351_driver/si5351_driver.o - .text.cm_setOutputMultiSynth - 0x00000000 0x116 si5351_driver/si5351_driver.o - .text.cm_setCLKControl - 0x00000000 0x5c si5351_driver/si5351_driver.o - .text.cm_setInputSource - 0x00000000 0x3e si5351_driver/si5351_driver.o - .text.cm_resetPLLs - 0x00000000 0x48 si5351_driver/si5351_driver.o - .text.cm_setPllParamRaw - 0x00000000 0xbc si5351_driver/si5351_driver.o .text.cm_setPLLParameters - 0x00000000 0x2ce si5351_driver/si5351_driver.o + 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 .text.cm_si5351_getRevisionNumber - 0x00000000 0x2a si5351_driver/si5351_driver.o + 0x00000000 0x68 si5351_driver/si5351_driver.o .text 0x00000000 0x0 c:/program files (x86)/atmel/studio/7.0/toolchain/avr8/avr8-gnu-toolchain/bin/../lib/gcc/avr/5.4.0/../../../../avr/lib/avrxmega3/short-calls\libm.a(addsf3.o) .data 0x00000000 0x0 c:/program files (x86)/atmel/studio/7.0/toolchain/avr8/avr8-gnu-toolchain/bin/../lib/gcc/avr/5.4.0/../../../../avr/lib/avrxmega3/short-calls\libm.a(addsf3.o) .bss 0x00000000 0x0 c:/program files (x86)/atmel/studio/7.0/toolchain/avr8/avr8-gnu-toolchain/bin/../lib/gcc/avr/5.4.0/../../../../avr/lib/avrxmega3/short-calls\libm.a(addsf3.o) @@ -252,22 +245,6 @@ Discarded input sections 0x00000000 0x0 c:/program files (x86)/atmel/studio/7.0/toolchain/avr8/avr8-gnu-toolchain/bin/../lib/gcc/avr/5.4.0/avrxmega3/short-calls\libgcc.a(_exit.o) .text.libgcc.fixed 0x00000000 0x0 c:/program files (x86)/atmel/studio/7.0/toolchain/avr8/avr8-gnu-toolchain/bin/../lib/gcc/avr/5.4.0/avrxmega3/short-calls\libgcc.a(_exit.o) - .text 0x00000000 0x0 c:/program files (x86)/atmel/studio/7.0/toolchain/avr8/avr8-gnu-toolchain/bin/../lib/gcc/avr/5.4.0/avrxmega3/short-calls\libgcc.a(_copy_data.o) - .data 0x00000000 0x0 c:/program files (x86)/atmel/studio/7.0/toolchain/avr8/avr8-gnu-toolchain/bin/../lib/gcc/avr/5.4.0/avrxmega3/short-calls\libgcc.a(_copy_data.o) - .bss 0x00000000 0x0 c:/program files (x86)/atmel/studio/7.0/toolchain/avr8/avr8-gnu-toolchain/bin/../lib/gcc/avr/5.4.0/avrxmega3/short-calls\libgcc.a(_copy_data.o) - .text.libgcc.mul - 0x00000000 0x0 c:/program files (x86)/atmel/studio/7.0/toolchain/avr8/avr8-gnu-toolchain/bin/../lib/gcc/avr/5.4.0/avrxmega3/short-calls\libgcc.a(_copy_data.o) - .text.libgcc.div - 0x00000000 0x0 c:/program files (x86)/atmel/studio/7.0/toolchain/avr8/avr8-gnu-toolchain/bin/../lib/gcc/avr/5.4.0/avrxmega3/short-calls\libgcc.a(_copy_data.o) - .text.libgcc 0x00000000 0x0 c:/program files (x86)/atmel/studio/7.0/toolchain/avr8/avr8-gnu-toolchain/bin/../lib/gcc/avr/5.4.0/avrxmega3/short-calls\libgcc.a(_copy_data.o) - .text.libgcc.prologue - 0x00000000 0x0 c:/program files (x86)/atmel/studio/7.0/toolchain/avr8/avr8-gnu-toolchain/bin/../lib/gcc/avr/5.4.0/avrxmega3/short-calls\libgcc.a(_copy_data.o) - .text.libgcc.builtins - 0x00000000 0x0 c:/program files (x86)/atmel/studio/7.0/toolchain/avr8/avr8-gnu-toolchain/bin/../lib/gcc/avr/5.4.0/avrxmega3/short-calls\libgcc.a(_copy_data.o) - .text.libgcc.fmul - 0x00000000 0x0 c:/program files (x86)/atmel/studio/7.0/toolchain/avr8/avr8-gnu-toolchain/bin/../lib/gcc/avr/5.4.0/avrxmega3/short-calls\libgcc.a(_copy_data.o) - .text.libgcc.fixed - 0x00000000 0x0 c:/program files (x86)/atmel/studio/7.0/toolchain/avr8/avr8-gnu-toolchain/bin/../lib/gcc/avr/5.4.0/avrxmega3/short-calls\libgcc.a(_copy_data.o) .text 0x00000000 0x0 c:/program files (x86)/atmel/studio/7.0/toolchain/avr8/avr8-gnu-toolchain/bin/../lib/gcc/avr/5.4.0/avrxmega3/short-calls\libgcc.a(_clear_bss.o) .data 0x00000000 0x0 c:/program files (x86)/atmel/studio/7.0/toolchain/avr8/avr8-gnu-toolchain/bin/../lib/gcc/avr/5.4.0/avrxmega3/short-calls\libgcc.a(_clear_bss.o) .bss 0x00000000 0x0 c:/program files (x86)/atmel/studio/7.0/toolchain/avr8/avr8-gnu-toolchain/bin/../lib/gcc/avr/5.4.0/avrxmega3/short-calls\libgcc.a(_clear_bss.o) @@ -295,6 +272,22 @@ Discarded input sections .text 0x00000000 0x0 C:/Program Files (x86)/Atmel/Studio/7.0/Packs/atmel/ATtiny_DFP/1.10.348/gcc/dev/attiny402/avrxmega3/short-calls\libattiny402.a(eewr_byte.o) .data 0x00000000 0x0 C:/Program Files (x86)/Atmel/Studio/7.0/Packs/atmel/ATtiny_DFP/1.10.348/gcc/dev/attiny402/avrxmega3/short-calls\libattiny402.a(eewr_byte.o) .bss 0x00000000 0x0 C:/Program Files (x86)/Atmel/Studio/7.0/Packs/atmel/ATtiny_DFP/1.10.348/gcc/dev/attiny402/avrxmega3/short-calls\libattiny402.a(eewr_byte.o) + .text 0x00000000 0x0 c:/program files (x86)/atmel/studio/7.0/toolchain/avr8/avr8-gnu-toolchain/bin/../lib/gcc/avr/5.4.0/avrxmega3/short-calls\libgcc.a(_copy_data.o) + .data 0x00000000 0x0 c:/program files (x86)/atmel/studio/7.0/toolchain/avr8/avr8-gnu-toolchain/bin/../lib/gcc/avr/5.4.0/avrxmega3/short-calls\libgcc.a(_copy_data.o) + .bss 0x00000000 0x0 c:/program files (x86)/atmel/studio/7.0/toolchain/avr8/avr8-gnu-toolchain/bin/../lib/gcc/avr/5.4.0/avrxmega3/short-calls\libgcc.a(_copy_data.o) + .text.libgcc.mul + 0x00000000 0x0 c:/program files (x86)/atmel/studio/7.0/toolchain/avr8/avr8-gnu-toolchain/bin/../lib/gcc/avr/5.4.0/avrxmega3/short-calls\libgcc.a(_copy_data.o) + .text.libgcc.div + 0x00000000 0x0 c:/program files (x86)/atmel/studio/7.0/toolchain/avr8/avr8-gnu-toolchain/bin/../lib/gcc/avr/5.4.0/avrxmega3/short-calls\libgcc.a(_copy_data.o) + .text.libgcc 0x00000000 0x0 c:/program files (x86)/atmel/studio/7.0/toolchain/avr8/avr8-gnu-toolchain/bin/../lib/gcc/avr/5.4.0/avrxmega3/short-calls\libgcc.a(_copy_data.o) + .text.libgcc.prologue + 0x00000000 0x0 c:/program files (x86)/atmel/studio/7.0/toolchain/avr8/avr8-gnu-toolchain/bin/../lib/gcc/avr/5.4.0/avrxmega3/short-calls\libgcc.a(_copy_data.o) + .text.libgcc.builtins + 0x00000000 0x0 c:/program files (x86)/atmel/studio/7.0/toolchain/avr8/avr8-gnu-toolchain/bin/../lib/gcc/avr/5.4.0/avrxmega3/short-calls\libgcc.a(_copy_data.o) + .text.libgcc.fmul + 0x00000000 0x0 c:/program files (x86)/atmel/studio/7.0/toolchain/avr8/avr8-gnu-toolchain/bin/../lib/gcc/avr/5.4.0/avrxmega3/short-calls\libgcc.a(_copy_data.o) + .text.libgcc.fixed + 0x00000000 0x0 c:/program files (x86)/atmel/studio/7.0/toolchain/avr8/avr8-gnu-toolchain/bin/../lib/gcc/avr/5.4.0/avrxmega3/short-calls\libgcc.a(_copy_data.o) Memory Configuration @@ -431,7 +424,7 @@ END GROUP .rela.plt *(.rela.plt) -.text 0x00000000 0xbb2 +.text 0x00000000 0xff4 *(.vectors) .vectors 0x00000000 0x34 C:/Program Files (x86)/Atmel/Studio/7.0/Packs/atmel/ATtiny_DFP/1.10.348/gcc/dev/attiny402/avrxmega3/short-calls/crtattiny402.o 0x00000000 __vector_default @@ -472,10 +465,10 @@ END GROUP *(.init3) *(.init3) *(.init4) - .init4 0x00000040 0x16 c:/program files (x86)/atmel/studio/7.0/toolchain/avr8/avr8-gnu-toolchain/bin/../lib/gcc/avr/5.4.0/avrxmega3/short-calls\libgcc.a(_copy_data.o) - 0x00000040 __do_copy_data - .init4 0x00000056 0x10 c:/program files (x86)/atmel/studio/7.0/toolchain/avr8/avr8-gnu-toolchain/bin/../lib/gcc/avr/5.4.0/avrxmega3/short-calls\libgcc.a(_clear_bss.o) - 0x00000056 __do_clear_bss + .init4 0x00000040 0x10 c:/program files (x86)/atmel/studio/7.0/toolchain/avr8/avr8-gnu-toolchain/bin/../lib/gcc/avr/5.4.0/avrxmega3/short-calls\libgcc.a(_clear_bss.o) + 0x00000040 __do_clear_bss + .init4 0x00000050 0x16 c:/program files (x86)/atmel/studio/7.0/toolchain/avr8/avr8-gnu-toolchain/bin/../lib/gcc/avr/5.4.0/avrxmega3/short-calls\libgcc.a(_copy_data.o) + 0x00000050 __do_copy_data *(.init4) *(.init5) *(.init5) @@ -518,100 +511,102 @@ END GROUP 0x0000006c . = ALIGN (0x2) *(.text.*) .text.cm_EEPROM_write - 0x0000006c 0x3c avr_eeprom_driver/avr_eeprom_driver.o + 0x0000006c 0x42 avr_eeprom_driver/avr_eeprom_driver.o 0x0000006c cm_EEPROM_write .text.cm_EEPROM_read - 0x000000a8 0x46 avr_eeprom_driver/avr_eeprom_driver.o - 0x000000a8 cm_EEPROM_read + 0x000000ae 0x42 avr_eeprom_driver/avr_eeprom_driver.o + 0x000000ae cm_EEPROM_read .text.gpio_get_level - 0x000000ee 0x24 avr_gpio_driver/avr_gpio.o - 0x000000ee gpio_get_level - .text.i2c_reset - 0x00000112 0x10 avr_i2c_driver/avr_i2c.o - .text.i2c_write_devAddr - 0x00000122 0x22 avr_i2c_driver/avr_i2c.o - 0x00000122 i2c_write_devAddr - .text.i2c_write - 0x00000144 0x92 avr_i2c_driver/avr_i2c.o - 0x00000144 i2c_write + 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 .text.i2c_read - 0x000001d6 0x8c avr_i2c_driver/avr_i2c.o - 0x000001d6 i2c_read - .text.i2c_IsDeviceReady - 0x00000262 0x2c avr_i2c_driver/avr_i2c.o - 0x00000262 i2c_IsDeviceReady + 0x0000018c 0x80 avr_i2c_driver/avr_i2c.o + 0x0000018c i2c_read .text.cm_i2c_init - 0x0000028e 0x34 avr_i2c_driver/avr_i2c.o - 0x0000028e cm_i2c_init + 0x0000020c 0x34 avr_i2c_driver/avr_i2c.o + 0x0000020c cm_i2c_init .text.cm_i2c_addDev - 0x000002c2 0x3c avr_i2c_driver/avr_i2c.o - 0x000002c2 cm_i2c_addDev + 0x00000240 0x3e avr_i2c_driver/avr_i2c.o + 0x00000240 cm_i2c_addDev .text.cm_i2c_transfer - 0x000002fe 0x34 avr_i2c_driver/avr_i2c.o - 0x000002fe cm_i2c_transfer + 0x0000027e 0x4e avr_i2c_driver/avr_i2c.o + 0x0000027e cm_i2c_transfer .text.__vector_22 - 0x00000332 0x56 avr_uart_driver/avr_uart.o - 0x00000332 __vector_22 + 0x000002cc 0x56 avr_uart_driver/avr_uart.o + 0x000002cc __vector_22 .text.cm_uart_init - 0x00000388 0x60 avr_uart_driver/avr_uart.o - 0x00000388 cm_uart_init + 0x00000322 0x66 avr_uart_driver/avr_uart.o + 0x00000322 cm_uart_init .text.cm_msgSync_Byte_DecodeSC - 0x000003e8 0x9e cm_msg/cm_msg.o - 0x000003e8 cm_msgSync_Byte_DecodeSC + 0x00000388 0x64 cm_msg/cm_msg.o + 0x00000388 cm_msgSync_Byte_DecodeSC .text.cm_msg_DecodeMsg_Byte - 0x00000486 0xa8 cm_msg/cm_msg.o - 0x00000486 cm_msg_DecodeMsg_Byte + 0x000003ec 0xb4 cm_msg/cm_msg.o + 0x000003ec cm_msg_DecodeMsg_Byte .text.cm_MsgCompleteEvt_Register - 0x0000052e 0x1c cm_msg/cm_msg.o - 0x0000052e cm_MsgCompleteEvt_Register - .text.isStructValid - 0x0000054a 0x1a cqm6xx_app.o - .text.cqm6xx_app_loadPLLParam - 0x00000564 0x32 cqm6xx_app.o + 0x000004a0 0x1c cm_msg/cm_msg.o + 0x000004a0 cm_MsgCompleteEvt_Register + .text.cqm_setPLLParam + 0x000004bc 0x8c cqm6xx_app.o .text.cqm6xx_app_updateOsc - 0x00000596 0x76 cqm6xx_app.o + 0x00000548 0x82 cqm6xx_app.o .text.cqm6xx_app_statemachine - 0x0000060c 0x5a cqm6xx_app.o - 0x0000060c cqm6xx_app_statemachine + 0x000005ca 0xf0 cqm6xx_app.o + 0x000005ca cqm6xx_app_statemachine .text.programPLL_Parameters - 0x00000666 0x2e cqm6xx_app.o - 0x00000666 programPLL_Parameters + 0x000006ba 0x3c cqm6xx_app.o + 0x000006ba programPLL_Parameters .text.uart_rx_event - 0x00000694 0x18 cqm6xx_app.o - 0x00000694 uart_rx_event + 0x000006f6 0x18 cqm6xx_app.o + 0x000006f6 uart_rx_event .text.cqm6xx_app_init - 0x000006ac 0x2c cqm6xx_app.o - 0x000006ac cqm6xx_app_init - .text.main 0x000006d8 0x56 main.o - 0x000006d8 main - .text.writeRegister - 0x0000072e 0x72 si5351_driver/si5351_driver.o + 0x0000070e 0xdc cqm6xx_app.o + 0x0000070e cqm6xx_app_init + .text.startup.main + 0x000007ea 0x58 main.o + 0x000007ea main + .text.writeRegister.isra.1 + 0x00000842 0x88 si5351_driver/si5351_driver.o + .text.cm_setPllParamRaw + 0x000008ca 0xf6 si5351_driver/si5351_driver.o + 0x000008ca cm_setPllParamRaw + .text.cm_setOutputMultiSynthRaw + 0x000009c0 0x128 si5351_driver/si5351_driver.o + 0x000009c0 cm_setOutputMultiSynthRaw .text.cm_setOutputEnable - 0x000007a0 0x40 si5351_driver/si5351_driver.o - 0x000007a0 cm_setOutputEnable + 0x00000ae8 0x5a si5351_driver/si5351_driver.o + 0x00000ae8 cm_setOutputEnable + .text.cm_setCLKControl + 0x00000b42 0xac si5351_driver/si5351_driver.o + 0x00000b42 cm_setCLKControl + .text.cm_setInputSource + 0x00000bee 0x4a si5351_driver/si5351_driver.o + 0x00000bee cm_setInputSource .text.cm_si5351_init - 0x000007e0 0x142 si5351_driver/si5351_driver.o - 0x000007e0 cm_si5351_init + 0x00000c38 0x12c si5351_driver/si5351_driver.o + 0x00000c38 cm_si5351_init .text.avr-libc - 0x00000922 0x242 c:/program files (x86)/atmel/studio/7.0/toolchain/avr8/avr8-gnu-toolchain/bin/../lib/gcc/avr/5.4.0/../../../../avr/lib/avrxmega3/short-calls\libc.a(malloc.o) - 0x00000922 malloc - 0x00000a52 free + 0x00000d64 0x242 c:/program files (x86)/atmel/studio/7.0/toolchain/avr8/avr8-gnu-toolchain/bin/../lib/gcc/avr/5.4.0/../../../../avr/lib/avrxmega3/short-calls\libc.a(malloc.o) + 0x00000d64 malloc + 0x00000e94 free .text.avr-libc - 0x00000b64 0x12 c:/program files (x86)/atmel/studio/7.0/toolchain/avr8/avr8-gnu-toolchain/bin/../lib/gcc/avr/5.4.0/../../../../avr/lib/avrxmega3/short-calls\libc.a(memcpy.o) - 0x00000b64 memcpy + 0x00000fa6 0x12 c:/program files (x86)/atmel/studio/7.0/toolchain/avr8/avr8-gnu-toolchain/bin/../lib/gcc/avr/5.4.0/../../../../avr/lib/avrxmega3/short-calls\libc.a(memcpy.o) + 0x00000fa6 memcpy .text.avr-libc - 0x00000b76 0x10 C:/Program Files (x86)/Atmel/Studio/7.0/Packs/atmel/ATtiny_DFP/1.10.348/gcc/dev/attiny402/avrxmega3/short-calls\libattiny402.a(eerd_byte.o) - 0x00000b76 eeprom_read_byte - 0x00000b7e eeprom_mapen + 0x00000fb8 0x10 C:/Program Files (x86)/Atmel/Studio/7.0/Packs/atmel/ATtiny_DFP/1.10.348/gcc/dev/attiny402/avrxmega3/short-calls\libattiny402.a(eerd_byte.o) + 0x00000fb8 eeprom_read_byte + 0x00000fc0 eeprom_mapen .text.avr-libc - 0x00000b86 0x28 C:/Program Files (x86)/Atmel/Studio/7.0/Packs/atmel/ATtiny_DFP/1.10.348/gcc/dev/attiny402/avrxmega3/short-calls\libattiny402.a(eewr_byte.o) - 0x00000b86 eeprom_write_byte - 0x00000b88 eeprom_write_r18 - 0x00000bae . = ALIGN (0x2) + 0x00000fc8 0x28 C:/Program Files (x86)/Atmel/Studio/7.0/Packs/atmel/ATtiny_DFP/1.10.348/gcc/dev/attiny402/avrxmega3/short-calls\libattiny402.a(eewr_byte.o) + 0x00000fc8 eeprom_write_byte + 0x00000fca eeprom_write_r18 + 0x00000ff0 . = ALIGN (0x2) *(.fini9) - .fini9 0x00000bae 0x0 c:/program files (x86)/atmel/studio/7.0/toolchain/avr8/avr8-gnu-toolchain/bin/../lib/gcc/avr/5.4.0/avrxmega3/short-calls\libgcc.a(_exit.o) - 0x00000bae _exit - 0x00000bae exit + .fini9 0x00000ff0 0x0 c:/program files (x86)/atmel/studio/7.0/toolchain/avr8/avr8-gnu-toolchain/bin/../lib/gcc/avr/5.4.0/avrxmega3/short-calls\libgcc.a(_exit.o) + 0x00000ff0 _exit + 0x00000ff0 exit *(.fini9) *(.fini8) *(.fini8) @@ -630,18 +625,16 @@ END GROUP *(.fini1) *(.fini1) *(.fini0) - .fini0 0x00000bae 0x4 c:/program files (x86)/atmel/studio/7.0/toolchain/avr8/avr8-gnu-toolchain/bin/../lib/gcc/avr/5.4.0/avrxmega3/short-calls\libgcc.a(_exit.o) + .fini0 0x00000ff0 0x4 c:/program files (x86)/atmel/studio/7.0/toolchain/avr8/avr8-gnu-toolchain/bin/../lib/gcc/avr/5.4.0/avrxmega3/short-calls\libgcc.a(_exit.o) *(.fini0) - 0x00000bb2 _etext = . + 0x00000ff4 _etext = . -.rodata 0x00008bb2 0x5 load address 0x00000bb2 +.rodata *(.rodata) *(.rodata*) - .rodata.startCode - 0x00008bb2 0x5 cm_msg/cm_msg.o *(.gnu.linkonce.r*) -.data 0x00803f00 0x6 load address 0x00000bb7 +.data 0x00803f00 0x6 load address 0x00000ff4 0x00803f00 PROVIDE (__data_start, .) *(.data) .data 0x00803f00 0x6 c:/program files (x86)/atmel/studio/7.0/toolchain/avr8/avr8-gnu-toolchain/bin/../lib/gcc/avr/5.4.0/../../../../avr/lib/avrxmega3/short-calls\libc.a(malloc.o) @@ -654,7 +647,7 @@ END GROUP 0x00803f06 _edata = . 0x00803f06 PROVIDE (__data_end, .) -.bss 0x00803f06 0x62 +.bss 0x00803f06 0x61 0x00803f06 PROVIDE (__bss_start, .) *(.bss) *(.bss*) @@ -674,24 +667,22 @@ END GROUP .bss.s_msg_cmplete_evt_fpt 0x00803f44 0x2 cm_msg/cm_msg.o 0x00803f44 s_msg_cmplete_evt_fpt - .bss.size 0x00803f46 0x1 cqm6xx_app.o - 0x00803f46 size *(COMMON) - COMMON 0x00803f47 0x1d main.o - 0x00803f47 storno_xtal_app - COMMON 0x00803f64 0x4 c:/program files (x86)/atmel/studio/7.0/toolchain/avr8/avr8-gnu-toolchain/bin/../lib/gcc/avr/5.4.0/../../../../avr/lib/avrxmega3/short-calls\libc.a(malloc.o) - 0x00803f64 __brkval - 0x00803f66 __flp - 0x00803f68 PROVIDE (__bss_end, .) - 0x00000bb7 __data_load_start = LOADADDR (.data) - 0x00000bbd __data_load_end = (__data_load_start + SIZEOF (.data)) + COMMON 0x00803f46 0x1d main.o + 0x00803f46 storno_xtal_app + COMMON 0x00803f63 0x4 c:/program files (x86)/atmel/studio/7.0/toolchain/avr8/avr8-gnu-toolchain/bin/../lib/gcc/avr/5.4.0/../../../../avr/lib/avrxmega3/short-calls\libc.a(malloc.o) + 0x00803f63 __brkval + 0x00803f65 __flp + 0x00803f67 PROVIDE (__bss_end, .) + 0x00000ff4 __data_load_start = LOADADDR (.data) + 0x00000ffa __data_load_end = (__data_load_start + SIZEOF (.data)) -.noinit 0x00803f68 0x0 +.noinit 0x00803f67 0x0 [!provide] PROVIDE (__noinit_start, .) *(.noinit*) [!provide] PROVIDE (__noinit_end, .) - 0x00803f68 _end = . - 0x00803f68 PROVIDE (__heap_start, .) + 0x00803f67 _end = . + 0x00803f67 PROVIDE (__heap_start, .) .eeprom 0x00810000 0x0 *(.eeprom*) @@ -763,7 +754,7 @@ END GROUP .debug_sfnames *(.debug_sfnames) -.debug_aranges 0x00000000 0x258 +.debug_aranges 0x00000000 0x248 *(.debug_aranges) .debug_aranges 0x00000000 0x28 avr_eeprom_driver/avr_eeprom_driver.o @@ -776,102 +767,102 @@ END GROUP .debug_aranges 0x00000100 0x30 cm_msg/cm_msg.o .debug_aranges - 0x00000130 0x50 cqm6xx_app.o + 0x00000130 0x48 cqm6xx_app.o .debug_aranges - 0x00000180 0x20 main.o + 0x00000178 0x20 main.o .debug_aranges - 0x000001a0 0x78 si5351_driver/si5351_driver.o + 0x00000198 0x70 si5351_driver/si5351_driver.o .debug_aranges - 0x00000218 0x20 C:/Program Files (x86)/Atmel/Studio/7.0/Packs/atmel/ATtiny_DFP/1.10.348/gcc/dev/attiny402/avrxmega3/short-calls\libattiny402.a(eerd_byte.o) + 0x00000208 0x20 C:/Program Files (x86)/Atmel/Studio/7.0/Packs/atmel/ATtiny_DFP/1.10.348/gcc/dev/attiny402/avrxmega3/short-calls\libattiny402.a(eerd_byte.o) .debug_aranges - 0x00000238 0x20 C:/Program Files (x86)/Atmel/Studio/7.0/Packs/atmel/ATtiny_DFP/1.10.348/gcc/dev/attiny402/avrxmega3/short-calls\libattiny402.a(eewr_byte.o) + 0x00000228 0x20 C:/Program Files (x86)/Atmel/Studio/7.0/Packs/atmel/ATtiny_DFP/1.10.348/gcc/dev/attiny402/avrxmega3/short-calls\libattiny402.a(eewr_byte.o) .debug_pubnames *(.debug_pubnames) -.debug_info 0x00000000 0x5174 +.debug_info 0x00000000 0x5ba3 *(.debug_info .gnu.linkonce.wi.*) .debug_info 0x00000000 0x11d6 C:/Program Files (x86)/Atmel/Studio/7.0/Packs/atmel/ATtiny_DFP/1.10.348/gcc/dev/attiny402/avrxmega3/short-calls/crtattiny402.o - .debug_info 0x000011d6 0x16b avr_eeprom_driver/avr_eeprom_driver.o - .debug_info 0x00001341 0x320 avr_gpio_driver/avr_gpio.o - .debug_info 0x00001661 0x6da avr_i2c_driver/avr_i2c.o - .debug_info 0x00001d3b 0x4fc avr_uart_driver/avr_uart.o - .debug_info 0x00002237 0x2b4 cm_msg/cm_msg.o - .debug_info 0x000024eb 0x767 cqm6xx_app.o - .debug_info 0x00002c52 0xd12 main.o - .debug_info 0x00003964 0x16b6 si5351_driver/si5351_driver.o - .debug_info 0x0000501a 0xad C:/Program Files (x86)/Atmel/Studio/7.0/Packs/atmel/ATtiny_DFP/1.10.348/gcc/dev/attiny402/avrxmega3/short-calls\libattiny402.a(eerd_byte.o) - .debug_info 0x000050c7 0xad C:/Program Files (x86)/Atmel/Studio/7.0/Packs/atmel/ATtiny_DFP/1.10.348/gcc/dev/attiny402/avrxmega3/short-calls\libattiny402.a(eewr_byte.o) + .debug_info 0x000011d6 0x183 avr_eeprom_driver/avr_eeprom_driver.o + .debug_info 0x00001359 0x320 avr_gpio_driver/avr_gpio.o + .debug_info 0x00001679 0x881 avr_i2c_driver/avr_i2c.o + .debug_info 0x00001efa 0x4fc avr_uart_driver/avr_uart.o + .debug_info 0x000023f6 0x2b8 cm_msg/cm_msg.o + .debug_info 0x000026ae 0xc29 cqm6xx_app.o + .debug_info 0x000032d7 0xcdf main.o + .debug_info 0x00003fb6 0x1a93 si5351_driver/si5351_driver.o + .debug_info 0x00005a49 0xad C:/Program Files (x86)/Atmel/Studio/7.0/Packs/atmel/ATtiny_DFP/1.10.348/gcc/dev/attiny402/avrxmega3/short-calls\libattiny402.a(eerd_byte.o) + .debug_info 0x00005af6 0xad C:/Program Files (x86)/Atmel/Studio/7.0/Packs/atmel/ATtiny_DFP/1.10.348/gcc/dev/attiny402/avrxmega3/short-calls\libattiny402.a(eewr_byte.o) -.debug_abbrev 0x00000000 0x1d9f +.debug_abbrev 0x00000000 0x1f08 *(.debug_abbrev) .debug_abbrev 0x00000000 0x10de C:/Program Files (x86)/Atmel/Studio/7.0/Packs/atmel/ATtiny_DFP/1.10.348/gcc/dev/attiny402/avrxmega3/short-calls/crtattiny402.o - .debug_abbrev 0x000010de 0xa0 avr_eeprom_driver/avr_eeprom_driver.o - .debug_abbrev 0x0000117e 0x107 avr_gpio_driver/avr_gpio.o - .debug_abbrev 0x00001285 0x1bb avr_i2c_driver/avr_i2c.o - .debug_abbrev 0x00001440 0x1e0 avr_uart_driver/avr_uart.o - .debug_abbrev 0x00001620 0x14b cm_msg/cm_msg.o - .debug_abbrev 0x0000176b 0x1e1 cqm6xx_app.o - .debug_abbrev 0x0000194c 0x1ec main.o - .debug_abbrev 0x00001b38 0x23f si5351_driver/si5351_driver.o - .debug_abbrev 0x00001d77 0x14 C:/Program Files (x86)/Atmel/Studio/7.0/Packs/atmel/ATtiny_DFP/1.10.348/gcc/dev/attiny402/avrxmega3/short-calls\libattiny402.a(eerd_byte.o) - .debug_abbrev 0x00001d8b 0x14 C:/Program Files (x86)/Atmel/Studio/7.0/Packs/atmel/ATtiny_DFP/1.10.348/gcc/dev/attiny402/avrxmega3/short-calls\libattiny402.a(eewr_byte.o) + .debug_abbrev 0x000010de 0xac avr_eeprom_driver/avr_eeprom_driver.o + .debug_abbrev 0x0000118a 0x107 avr_gpio_driver/avr_gpio.o + .debug_abbrev 0x00001291 0x256 avr_i2c_driver/avr_i2c.o + .debug_abbrev 0x000014e7 0x1e0 avr_uart_driver/avr_uart.o + .debug_abbrev 0x000016c7 0x15c cm_msg/cm_msg.o + .debug_abbrev 0x00001823 0x20d cqm6xx_app.o + .debug_abbrev 0x00001a30 0x1da main.o + .debug_abbrev 0x00001c0a 0x2d6 si5351_driver/si5351_driver.o + .debug_abbrev 0x00001ee0 0x14 C:/Program Files (x86)/Atmel/Studio/7.0/Packs/atmel/ATtiny_DFP/1.10.348/gcc/dev/attiny402/avrxmega3/short-calls\libattiny402.a(eerd_byte.o) + .debug_abbrev 0x00001ef4 0x14 C:/Program Files (x86)/Atmel/Studio/7.0/Packs/atmel/ATtiny_DFP/1.10.348/gcc/dev/attiny402/avrxmega3/short-calls\libattiny402.a(eewr_byte.o) -.debug_line 0x00000000 0x184c +.debug_line 0x00000000 0x19ae *(.debug_line .debug_line.* .debug_line_end) .debug_line 0x00000000 0x136 C:/Program Files (x86)/Atmel/Studio/7.0/Packs/atmel/ATtiny_DFP/1.10.348/gcc/dev/attiny402/avrxmega3/short-calls/crtattiny402.o - .debug_line 0x00000136 0x186 avr_eeprom_driver/avr_eeprom_driver.o - .debug_line 0x000002bc 0x196 avr_gpio_driver/avr_gpio.o - .debug_line 0x00000452 0x3ff avr_i2c_driver/avr_i2c.o - .debug_line 0x00000851 0x21b avr_uart_driver/avr_uart.o - .debug_line 0x00000a6c 0x21a cm_msg/cm_msg.o - .debug_line 0x00000c86 0x39e cqm6xx_app.o - .debug_line 0x00001024 0x18f main.o - .debug_line 0x000011b3 0x559 si5351_driver/si5351_driver.o - .debug_line 0x0000170c 0x7c C:/Program Files (x86)/Atmel/Studio/7.0/Packs/atmel/ATtiny_DFP/1.10.348/gcc/dev/attiny402/avrxmega3/short-calls\libattiny402.a(eerd_byte.o) - .debug_line 0x00001788 0xc4 C:/Program Files (x86)/Atmel/Studio/7.0/Packs/atmel/ATtiny_DFP/1.10.348/gcc/dev/attiny402/avrxmega3/short-calls\libattiny402.a(eewr_byte.o) + .debug_line 0x00000136 0x16e avr_eeprom_driver/avr_eeprom_driver.o + .debug_line 0x000002a4 0x1a8 avr_gpio_driver/avr_gpio.o + .debug_line 0x0000044c 0x42b avr_i2c_driver/avr_i2c.o + .debug_line 0x00000877 0x217 avr_uart_driver/avr_uart.o + .debug_line 0x00000a8e 0x1e6 cm_msg/cm_msg.o + .debug_line 0x00000c74 0x47e cqm6xx_app.o + .debug_line 0x000010f2 0x18f main.o + .debug_line 0x00001281 0x5ed si5351_driver/si5351_driver.o + .debug_line 0x0000186e 0x7c C:/Program Files (x86)/Atmel/Studio/7.0/Packs/atmel/ATtiny_DFP/1.10.348/gcc/dev/attiny402/avrxmega3/short-calls\libattiny402.a(eerd_byte.o) + .debug_line 0x000018ea 0xc4 C:/Program Files (x86)/Atmel/Studio/7.0/Packs/atmel/ATtiny_DFP/1.10.348/gcc/dev/attiny402/avrxmega3/short-calls\libattiny402.a(eewr_byte.o) -.debug_frame 0x00000000 0x64c +.debug_frame 0x00000000 0x61c *(.debug_frame) - .debug_frame 0x00000000 0x7c avr_eeprom_driver/avr_eeprom_driver.o - .debug_frame 0x0000007c 0x44 avr_gpio_driver/avr_gpio.o - .debug_frame 0x000000c0 0x118 avr_i2c_driver/avr_i2c.o - .debug_frame 0x000001d8 0xbc avr_uart_driver/avr_uart.o - .debug_frame 0x00000294 0x44 cm_msg/cm_msg.o - .debug_frame 0x000002d8 0xb4 cqm6xx_app.o - .debug_frame 0x0000038c 0x34 main.o - .debug_frame 0x000003c0 0x28c si5351_driver/si5351_driver.o + .debug_frame 0x00000000 0x74 avr_eeprom_driver/avr_eeprom_driver.o + .debug_frame 0x00000074 0x44 avr_gpio_driver/avr_gpio.o + .debug_frame 0x000000b8 0xbc avr_i2c_driver/avr_i2c.o + .debug_frame 0x00000174 0xbc avr_uart_driver/avr_uart.o + .debug_frame 0x00000230 0x44 cm_msg/cm_msg.o + .debug_frame 0x00000274 0xec cqm6xx_app.o + .debug_frame 0x00000360 0x34 main.o + .debug_frame 0x00000394 0x288 si5351_driver/si5351_driver.o -.debug_str 0x00000000 0x22b5 +.debug_str 0x00000000 0x22c2 *(.debug_str) .debug_str 0x00000000 0x7a9 C:/Program Files (x86)/Atmel/Studio/7.0/Packs/atmel/ATtiny_DFP/1.10.348/gcc/dev/attiny402/avrxmega3/short-calls/crtattiny402.o .debug_str 0x000007a9 0x1d5 avr_eeprom_driver/avr_eeprom_driver.o 0x21b (size before relaxing) .debug_str 0x0000097e 0x16e avr_gpio_driver/avr_gpio.o 0x315 (size before relaxing) - .debug_str 0x00000aec 0x310 avr_i2c_driver/avr_i2c.o - 0x506 (size before relaxing) - .debug_str 0x00000dfc 0x283 avr_uart_driver/avr_uart.o + .debug_str 0x00000aec 0x2ab avr_i2c_driver/avr_i2c.o + 0x502 (size before relaxing) + .debug_str 0x00000d97 0x283 avr_uart_driver/avr_uart.o 0x4f4 (size before relaxing) - .debug_str 0x0000107f 0x23a cm_msg/cm_msg.o + .debug_str 0x0000101a 0x23a cm_msg/cm_msg.o 0x3fa (size before relaxing) - .debug_str 0x000012b9 0x2b7 cqm6xx_app.o - 0x514 (size before relaxing) - .debug_str 0x00001570 0x908 main.o - 0xc62 (size before relaxing) - .debug_str 0x00001e78 0x43d si5351_driver/si5351_driver.o - 0xfbf (size before relaxing) + .debug_str 0x00001254 0x3da cqm6xx_app.o + 0x639 (size before relaxing) + .debug_str 0x0000162e 0x8ff main.o + 0xc54 (size before relaxing) + .debug_str 0x00001f2d 0x395 si5351_driver/si5351_driver.o + 0xff5 (size before relaxing) -.debug_loc 0x00000000 0x223e +.debug_loc 0x00000000 0x2855 *(.debug_loc) - .debug_loc 0x00000000 0x24e avr_eeprom_driver/avr_eeprom_driver.o - .debug_loc 0x0000024e 0xae avr_gpio_driver/avr_gpio.o - .debug_loc 0x000002fc 0x73d avr_i2c_driver/avr_i2c.o - .debug_loc 0x00000a39 0x13b avr_uart_driver/avr_uart.o - .debug_loc 0x00000b74 0x179 cm_msg/cm_msg.o - .debug_loc 0x00000ced 0x446 cqm6xx_app.o - .debug_loc 0x00001133 0x48 main.o - .debug_loc 0x0000117b 0x10c3 si5351_driver/si5351_driver.o + .debug_loc 0x00000000 0x26b avr_eeprom_driver/avr_eeprom_driver.o + .debug_loc 0x0000026b 0x7c avr_gpio_driver/avr_gpio.o + .debug_loc 0x000002e7 0x6e6 avr_i2c_driver/avr_i2c.o + .debug_loc 0x000009cd 0x13b avr_uart_driver/avr_uart.o + .debug_loc 0x00000b08 0x158 cm_msg/cm_msg.o + .debug_loc 0x00000c60 0x8ae cqm6xx_app.o + .debug_loc 0x0000150e 0x48 main.o + .debug_loc 0x00001556 0x12ff si5351_driver/si5351_driver.o .debug_macinfo *(.debug_macinfo) @@ -891,16 +882,16 @@ END GROUP .debug_pubtypes *(.debug_pubtypes) -.debug_ranges 0x00000000 0x198 +.debug_ranges 0x00000000 0x230 *(.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 0x58 avr_i2c_driver/avr_i2c.o - .debug_ranges 0x00000090 0x30 avr_uart_driver/avr_uart.o - .debug_ranges 0x000000c0 0x20 cm_msg/cm_msg.o - .debug_ranges 0x000000e0 0x40 cqm6xx_app.o - .debug_ranges 0x00000120 0x10 main.o - .debug_ranges 0x00000130 0x68 si5351_driver/si5351_driver.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_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 75ddb78..6e082e5 100644 --- a/storno_cqp6xx_digital_xtal/Debug/storno_cqp6xx_digital_xtal.srec +++ b/storno_cqp6xx_digital_xtal/Debug/storno_cqp6xx_digital_xtal.srec @@ -1,192 +1,259 @@ S022000073746F726E6F5F6371703678785F6469676974616C5F7874616C2E737265633F S113000019C033C032C031C030C02FC02EC02DC083 S11300102CC02BC02AC029C028C027C026C025C098 -S113002024C023C022C021C020C01FC082C11DC063 +S113002024C023C022C021C020C01FC04FC11DC096 S11300301CC01BC011241FBECFEFCDBFDFE3DEBF4A -S11300401FE3A0E0BFE3E7EBFBE002C005900D92E5 -S1130050A630B107D9F72FE3A6E0BFE301C01D9294 -S1130060A836B207E1F738D3A2C5CACFEF92FF9200 -S11300700F931F93CF93DF937C018B01D42FC0E0A8 -S11300800AC08C2F90E0F801E80FF91F60818E0DF3 -S11300909F1D79D5CF5FCD17A0F3DF91CF911F912D -S11300A00F91FF90EF900895CF92DF92EF92FF921D -S11300B00F931F93CF93DF936C017B01D42FC0E088 -S11300C00BC08C2F90E08701080F191F8C0D9D1D0C -S11300D052D5F8018083CF5FCD1798F3DF91CF918C -S11300E01F910F91FF90EF90DF90CF9008958111B1 -S11300F00DC02091080430E002C0359527956A951B -S1130100E2F781E020FF80E090E0089580E090E055 -S11301100895E0E1F8E084818860848381E0858348 -S113012008958093170880911508807CE1F39091DD -S11301301508892F807194FF04C083E0809314080C -S113014081E00895CF92DF92EF92FF92CF93DF93F5 -S1130150EB0169017A01232B242B252B81F1E1DFAB -S1130160811130C09E012F5F3F4F88818093180812 -S11301708091150886FFFCCF8091150884FF06C086 -S113018083E08093140881E090E01EC080911508FC -S11301908C7021F0BEDF81E090E016C080911508DC -S11301A084FD07C081E0C81AD108E108F108E9011B -S11301B0C9F683E08093140880E090E005C08FEFD7 -S11301C09FEF02C08FEF9FEFDF91CF91FF90EF90F1 -S11301D0DF90CF900895CF92DF92EF92FF92CF936A -S11301E0DF93EB0169017A01232B242B252B69F181 -S11301F0816097DF8823C9F02BC080911508807C2B -S1130200E1F3CE0101962091180828834115510588 -S11302106105710521F424E02093140803C022E051 -S1130220209314086A017B01EC01B701A601415037 -S1130230510961097109CD28CE28CF28F1F683E050 -S11302408093140880E090E005C081E090E002C053 -S11302508FEF9FEFDF91CF91FF90EF90DF90CF90E2 -S11302600895809317088091150886FFFCCF80912C -S1130270150884FF06C083E08093140881E090E0B1 -S1130280089583E08093140880E090E00895E0E00E -S1130290F4E080818B7F80838081877F8083A0E1ED -S11302A0B8E08BE016968C93169781E013968C93A6 -S11302B0139715968C9388E0828B838B80E090E073 -S11302C00895EF92FF920F931F93CF938C017B01BC -S11302D0C42F842F880FC5DF009749F4F801E0820A -S11302E0F1824C2F50E0440F551F428302C08EEF21 -S11302F09FEFCF911F910F91FF90EF9008950F936F -S1130300009781F0FC01002319F0013031F00DC099 -S1130310828161DF80E090E00AC0828113DF80E0A7 -S113032090E005C08FEF9FEF02C080E090E00F9156 -S113033008951F920F920FB60F9211242F933F939B -S11303404F935F936F937F938F939F93AF93BF93D9 -S1130350EF93FF93E091063FF091073F309719F038 -S1130360809100080995FF91EF91BF91AF919F9102 -S11303708F917F916F915F914F913F912F910F904A -S11303800FBE0F901F901895CF93DF931F92CDB798 -S1130390DEB7AC01F894E0E0F8E02CE635E0208725 -S11303A0318793E0978390EC96836115710511F47E -S11303B0452B39F080E8809305086093063F7093DD -S11303C0073F80910408882324F4809100088983DE -S11303D08981E0E0F4E080E4818380E8828378949A -S11303E00F90DF91CF910895E091413FE23029F1E0 -S11303F028F4EE2341F0E13091F040C0E33059F1AC -S1130400E430B9F13BC0F0E0EE54F447208191E0D0 -S1130410281390E09093413F81E090E00895F0E04C -S1130420EE54F4479081891302C082E001C080E059 -S11304308093413F81E090E00895F0E0EE54F4476A -S11304409081891302C083E001C080E08093413F22 -S113045081E090E00895F0E0EE54F4479081891330 -S113046002C084E001C080E08093413F81E090E0DD -S113047008951092413F80E090E008951092413F2A -S113048081E090E008959091403F9330D1F028F4BA -S1130490992341F0913079F047C09430D1F09530F0 -S11304A029F142C0A1DF892B19F481E08093403FF8 -S11304B010923F3F39C08093083F83E08093403FD0 -S11304C033C0E8E0FFE31182828384E08093403FFD -S11304D02BC0E8E0FFE321813281A901482BCA0146 -S11304E08183928385E08093403F1EC090913F3F7B -S11304F0E92FF0E0E85FF04C838381E0890F80937B -S11305003F3F9091083F891778F0E091443FF09184 -S1130510453F6BE07FE38091423F9091433F0995D3 -S11305201092403F10923F3F80E090E00895009782 -S113053059F06115710541F08093423F9093433F18 -S11305406093443F7093453F0895FC0122813381B9 -S1130550232B21F0892B21F481E0089581E0089573 -S113056080E00895CF93DF9329E12093463FEC0187 -S1130570249649E1BE0180E090E096DD81E493E0B9 -S11305800197F1F7000049E1BE0180E290E08CDDC3 -S1130590DF91CF910895CF93DF93EC01D6DF8111E2 -S11305A032C089819881891771F1813019F08230C4 -S11305B0B1F029C081E493E00197F1F7000040E035 -S11305C060E08A819B81ECD081E493E00197F1F7AC -S11305D0000041E061E08A819B81E2D014C081E4A3 -S11305E093E00197F1F7000041E060E08A819B818C -S11305F0D7D081E493E00197F1F7000040E061E097 -S11306008A819B81CDD0DF91CF910895CF93DF93E1 -S1130610EC019BDF811124C08981813051F018F0F5 -S1130620823099F01DC08883CE019CDF81E08983EC -S113063017C0CE01B0DF8981888363E080E057DD95 -S1130640019771F482E089830BC0CE01A4DF898114 -S1130650888363E080E04BDD892B11F481E089839A -S1130660DF91CF910895FC012481222319F02130D8 -S113067049F00895BC016C5F7F4F49E180E290E04E -S1130680F5DC0895BC016C5F7F4F49E180E290E0A6 -S1130690EDDC0895DC01149629E1FB0101900D9233 -S11306A02A95E1F7E0DF80E090E00895CF93DF93AF -S11306B06115710571F0009761F0EC0119821882DF -S11306C06A837B836AE473E032DF63E472E0CE0121 -S11306D05BDEDF91CF910895CF93DF93CDB7DEB783 -S11306E0CB55D109CDBFDEBF80E090E0D0DD40E640 -S11306F060E070E0CE010196E4DD4FE751E0BE0119 -S11307006F5F7F4FCE0104966BD0BE016C5F7F4F4D -S113071087E49FE3CBDF87E49FE378DF2AE684E086 -S113072091E0215080409040E1F700C0F4CF8F92D7 -S11307309F92AF92BF92CF92DF92EF92FF920F936C -S11307401F93CF93DF93EC01862E5A016801790140 -S1130750C8010196E6D0982E192FFC018192CF0191 -S1130760A601B501FFD1EA81FB81A70196012F5FA4 -S11307703F4F4F4F5F4F01E0692D712F8881998161 -S1130780099580E090E0DF91CF911F910F91FF9048 -S1130790EF90DF90CF90BF90AF909F908F9008958F -S11307A00F931F93662319F0613039F00BC0FC01DD -S11307B0278140FB20F9278305C0FC01278140FBEA -S11307C021F92783AC01495F5F4F01E010E020E08D -S11307D030E063E0ACDF80E090E01F910F9108957A -S11307E0EF92FF920F931F93CF93DF931F92CDB796 -S11307F0DEB7009709F485C06115710509F484C05A -S11308004115510509F483C07C01DC016D937C938F -S1130810119712964D935C931397FC01349684E5DB -S1130820DF011D928A95E9F78FEF898301E010E0DB -S113083020E030E0AE014F5F5F4F63E0C70177DF38 -S113084080E8898301E010E020E030E0AE014F5FF2 -S11308505F4F60E1C7016BDF01E010E020E030E0B2 -S1130860AE014F5F5F4F61E1C70161DF01E010E05E -S113087020E030E0AE014F5F5F4F62E1C70157DF18 -S113088001E010E020E030E0AE014F5F5F4F63E134 -S1130890C7014DDF01E010E020E030E0AE014F5F22 -S11308A05F4F64E1C70143DF01E010E020E030E086 -S11308B0AE014F5F5F4F65E1C70139DF01E010E032 -S11308C020E030E0AE014F5F5F4F66E1C7012FDFEC -S11308D001E010E020E030E0AE014F5F5F4F67E1E0 -S11308E0C70125DF80EC898301E010E020E030E0DF -S11308F0AE014F5F5F4F67EBC70119DF80E090E007 -S113090008C08FEF9FEF05C08FEF9FEF02C08FEFFE -S11309109FEF0F90DF91CF911F910F91FF90EF9078 -S113092008950F931F93CF93DF938230910510F4B2 -S113093082E090E0E091663FF091673F20E030E094 -S1130940A0E0B0E0309719F1408151810281138118 -S113095048175907C8F08417950769F4109731F0C0 -S113096012960C93129713961C9327C00093663F1C -S11309701093673F22C02115310519F04217530720 -S113098018F49A01BD01EF01DF01F801DBCF211555 -S11309903105F9F0281B390B2430310580F48A81A4 -S11309A09B816115710521F0FB018283938304C04F -S11309B08093663F9093673FFE01329644C0FE01E8 -S11309C0E20FF31F819391932250310928833983D5 -S11309D03AC02091643F3091653F232B41F420912C -S11309E0023F3091033F2093643F3093653F209151 -S11309F0003F3091013F2115310541F42DB73EB739 -S1130A004091043F5091053F241B350BE091643F16 -S1130A10F091653FE217F307A0F42E1B3F0B281754 -S1130A20390778F0AC014E5F5F4F2417350748F063 -S1130A304E0F5F1F4093643F5093653F81939193A2 -S1130A4002C0E0E0F0E0CF01DF91CF911F910F9160 -S1130A500895CF93DF93009709F481C0FC01329786 -S1130A6012821382A091663FB091673F109781F480 -S1130A7020813181820F931F2091643F3091653F23 -S1130A802817390751F5E093643FF093653F67C039 -S1130A90ED0120E030E0CE17DF0740F44A815B81AE -S1130AA09E0141155105F1F0EA01F5CFC283D383CC -S1130AB040815181840F951FC817D90759F4888143 -S1130AC09981840F951F0296808391838A819B81EB -S1130AD0828393832115310529F4E093663FF093D3 -S1130AE0673F3DC0E901EA83FB8349915991C40FF3 -S1130AF0D51FEC17FD0761F480819181840F951F48 -S1130B000296E90188839983828193818A839B83F6 -S1130B10E0E0F0E012968D919C911397009719F004 -S1130B20FD01DC01F7CF8D919C9111979D012E5F02 -S1130B303F4F820F931F2091643F3091653F2817E8 -S1130B40390769F4309729F41092663F1092673F91 -S1130B5002C012821382A093643FB093653FDF9179 -S1130B60CF910895FB01DC0102C001900D92415028 -S1130B705040D8F7089503D0808199270895FC0147 -S1130B80E050FC4E0895262FAF93BF93E0E0F0E1D0 -S1130B90328131FDFDCFDC01A050BC4E2C932DE9F8 -S1130BA024BF23E020830196BF91AF910895F89468 -S1050BB0FFCF71 -S1080BB24F5A31434DD0 -S1090BB70000683F20006D +S11300402FE3A6E0BFE301C01D92A736B207E1F794 +S11300501FE3A0E0BFE3E4EFFFE002C005900D92D0 +S1130060A630B107D9F7C1D3C3C7CACFEF92FF9265 +S11300700F931F93CF93DF93442391F0EB018C01F3 +S11300804150E42EF12C8FEFE81AF80AE60EF71E21 +S11300906991C80199D70F5F1F4FCE15DF05C1F7CE +S11300A0DF91CF911F910F91FF90EF900895EF9200 +S11300B0FF920F931F93CF93DF93442391F08C010E +S11300C0EB014150E42EF12C8FEFE81AF80AE60E0A +S11300D0F71EC80171D789930F5F1F4FCE15DF0537 +S11300E0C1F7DF91CF911F910F91FF90EF90089589 +S11300F081110BC08091080490E002C0959587950A +S11301006A95E2F781709927089580E090E0089558 +S113011020911508207CE1F32091150824FD1FC0CF +S1130120FC018191809318088091150886FFFCCF0B +S11301308091150884FD24C0809115088C70A9F461 +S11301408091150884FD05C0415051096109710968 +S113015041F783E08093140880E090E0089583E001 +S1130160809314088FEF9FEF08958091140888609E +S11301708093140881E08093150881E090E008954D +S113018083E08093140881E090E00895A62F972FD0 +S1130190211531054105510569F1816080931708E6 +S11301A080911508807CE1F38091150884FD1CC0C2 +S11301B0BA01A9014150510961097109EA2FF92FC6 +S11301C092E080911508807CE1F380911808819376 +S11301D0411551056105710581F090931408415052 +S11301E0510961097109EDCF83E0809314088FEF01 +S11301F09FEF089581E090E0089584E080931408CF +S113020083E08093140880E090E00895E0E0F4E057 +S113021080818B7F80838081877F8083A0E1B8E0A9 +S11302208BE016968C93169781E013968C93139714 +S113023015968C9388E0828B838B80E090E0089500 +S1130240FC01842F880F809317089091150896FF5E +S1130250FCCF8091150884FF06C083E080931408C6 +S11302608EEF9FEF089583E0809314086083718379 +S113027050E0440F551F428380E090E008950F93AF +S1130280009709F1FB01DC010023B1F0013021F0FA +S113029080E090E00F910895211531054105510545 +S11302A0B9F312968C9180931708BA01A901CF0172 +S11302B02FDF80E090E0EECF12968C9167DF80E034 +S11302C090E00F9108958FEF9FEFE4CF1F920F926C +S11302D00FB60F9211242F933F934F935F936F9315 +S11302E07F938F939F93AF93BF93EF93FF93E0918B +S11302F0063FF091073F309719F080910008099567 +S1130300FF91EF91BF91AF919F918F917F916F91E9 +S11303105F914F913F912F910F900FBE0F901F90BF +S11303201895CF93DF931F92CDB7DEB7AC01F89445 +S11303302CE635E0209308083093090893E0909365 +S1130340070890EC9093060861157105D1F080E8D8 +S1130350809305086093063F7093073F80910408DB +S113036087FF04C0809100088983898180E4809399 +S1130370010480E88093020478940F90DF91CF9178 +S11303800895452B21F7EACF9091413F923041F1F6 +S113039060F49923E1F0913089F48A3529F180E001 +S11303A08093413F81E090E00895933061F0943070 +S11303B029F41092413F80E090E008951092413F6B +S11303C081E090E00895833451F784E0E9CF91E02F +S11303D08F3409F090E09093413F81E090E00895DC +S11303E08133E9F683E0DCCF82E0DACF9091403FBD +S11303F0933009F44BC068F4992309F440C0913058 +S113040029F48093083F83E08093403F80E090E0AC +S11304100895943019F19530C9F790913F3FE92F31 +S1130420F0E0E85FF04C838381E0890F80933F3FE5 +S11304309091083F891750F3E091443FF091453F74 +S11304406BE07FE38091423F9091433F0995109286 +S1130450403F10923F3F80E090E008952091093F93 +S113046030910A3FA901482BCA018093093F909318 +S11304700A3F85E08093403F80E090E0089584DF68 +S1130480892B39F781E08093403FE3CF1092093FF5 +S113049080930A3F84E08093403F80E090E0089599 +S11304A0009759F06115710541F08093423F909394 +S11304B0433F6093443F7093453F08959F92AF92AA +S11304C0BF92CF92DF92EF92FF920F931F93CF933D +S11304D0DF93EC01942EAD84BE84CF84D888E98464 +S11304E0FA840B851C852D813E814F8158858A8134 +S11304F09B81EBD181E493E00197F1F70000A98C93 +S1130500BA8CCB8CDC8CED88FE880F89188D2989F8 +S11305103A894B895C89692D8A819B8151D281E416 +S113052093E00197F1F7000040E0692D8A819B81F7 +S1130530DF91CF911F910F91FF90EF90DF90CF90BB +S1130540BF90AF909F90FDC2CF93DF93FC01828157 +S11305509381892B09F13097F9F081819081891772 +S1130560D9F0EF018130D9F08230B1F481E493E025 +S11305700197F1F7000041E060E082819381B4D2F9 +S113058081E493E00197F1F7000040E061E08A81A3 +S11305909B81DF91CF91A8C2DF91CF91089581E42F +S11305A093E00197F1F7000040E060E082819381DD +S11305B09BD281E493E00197F1F7000041E061E010 +S11305C08A819B81DF91CF918FC20F931F93CF9329 +S11305D0DF93FC0122813381232BA9F0009799F04A +S11305E0EC018181813009F45BC090F0823059F4D0 +S11305F0CE01AADF8981888363E080E079DD892BDD +S113060011F481E08983DF91CF911F910F910895B7 +S113061018828E010C5F1F4F49E1B80180E090E021 +S113062046DD81E493E00197F1F7000060E08A8100 +S11306309B81DDD2E1E4F3E03197F1F7000040E083 +S113064060E0CE013BDF81E493E00197F1F7000025 +S113065049E1B80180E290E02ADDE1E4F3E031977A +S1130660F1F7000041E061E0CE0128DF42E061E003 +S1130670CE0124DF40E062E08A819B8162D281E482 +S113068093E00197F1F7000040E062E08A819B81EA +S11306902BD281E08983DF91CF911F910F9108952F +S11306A0CE0152DF8981888363E080E021DD0197F8 +S11306B009F0A9CF82E08983A6CFCF93DF93EC0121 +S11306C08C81882369F0813039F449E1BE016C5F83 +S11306D07F4F80E290E0CADC1982DF91CF910895C8 +S11306E049E1BE016C5F7F4F80E090E0BFDC19827E +S11306F0DF91CF910895DC01149629E1FB0101906B +S11307000D922A95E1F7D9DF80E090E008950F93E8 +S11307101F93CF93DF936115710511F1009701F1D8 +S1130720EC01198218826A837B836BE773E0B8DE7D +S113073066EF71E0CE01F5DD8E010C5F1F4F49E1DC +S1130740B80180E090E0B3DCF8019E01235E3F4FE6 +S113075003C0E217F30749F0919191509E3FC8F707 +S1130760DF91CF911F910F9108951C8283E49DE046 +S1130770A0E0B0E08D839E83AF83B88786EF9CE2D0 +S1130780A0E0B0E089879A87AB87BC878BE598E4C3 +S1130790A0E1B0E08D879E87AF87B88B82E190E0BF +S11307A0A0E0B0E0898B9A8BAB8BBC8B1D8A1E8A30 +S11307B01F8A188E81E090E0A0E0B0E0898F9A8FC4 +S11307C0AB8FBC8F49E1B80180E090E04FDC81E45D +S11307D093E00197F1F7000049E1B80180E290E06D +S11307E0DF91CF911F910F9141CCCF93DF93CDB780 +S11307F0DEB7CB55D109CDBFDEBF80E090E006DD8A +S113080040E660E070E0CE01875A9F4F19DD4FE368 +S113081051E0BE01675A7F4FCE0101960DD2BE0151 +S11308206F5F7F4F86E49FE372DF86E49FE3CDDE54 +S11308302AE684E091E0215080409040E1F700C036 +S1130840F4CF4F925F926F927F929F92AF92BF923A +S1130850CF92DF92EF92FF920F931F93CF93DF9388 +S1130860EC016B01942E590127013801C70101964F +S113087079D2F82E192FDC019D92CD01A201B50188 +S113088092D3A30192012F5F3F4F4F4F5F4FD60189 +S1130890ED91FC9101E06F2D712F8881998109956B +S11308A08F2D912FF7D280E090E0DF91CF911F91AF +S11308B00F91FF90EF90DF90CF90BF90AF909F90FB +S11308C07F906F905F904F900895AF92BF92CF92B8 +S11308D0DF92EF92FF920F931F93CF93DF93EC017C +S11308E0662309F448C0613009F16C0182E0C80E46 +S11308F0D11C9E01295A3F4FF90180818062806892 +S11309008083E12CF12C8701E39441EBB601CE0105 +S113091098DF80E090E0DF91CF911F910F91FF90DD +S1130920EF90DF90CF90BF90AF90089542708E8D7E +S11309308C7F482B4E8F3F8F28A3D801C70188276F +S11309409927AF70BB27FAA2EBA28A2F8F7089A3D5 +S1130950BC8EAD8E6E01F2E0CF0ED11C18E0E12EFC +S1130960F12C00E010E09E01245E3F4F42E2B6010C +S1130970CE0167DFBECF42708E898C7F482B4E8BB1 +S11309803F8B288FD801C70188279927AF70BB27D1 +S1130990FA8EEB8E8A2F8F70898FBC8AAD8A6E0196 +S11309A0E2E0CE0ED11C18E0E12EF12C00E010E0C4 +S11309B09E012C5E3F4F4AE1B601CE0142DF99CF42 +S11309C0AF92BF92CF92DF92EF92FF920F931F9359 +S11309D0FC01613009F45FC0A8F1623041F5437055 +S11309E056A9507837AB20AFF2AEE3AED601C501BD +S11309F02CE0B695A795979587952A95D1F783709E +S1130A008295807F0370082B01AFB4AAA5AA452B59 +S1130A1046AB9F012C5C3F4FBF016E5F7F4F18E0D8 +S1130A20E12EF12C00E010E04AE3CF010ADF80E080 +S1130A3090E01F910F91FF90EF90DF90CF90BF90C7 +S1130A40AF900895437056A1507837A320A7F2A61B +S1130A50E3A6D601C5011CE0B695A79597958795A1 +S1130A601A95D1F783708295807F0370802B81A7BC +S1130A70B4A2A5A2452B46A39F012C5D3F4FBF0105 +S1130A806E5F7F4F18E0E12EF12C00E010E04AE2A7 +S1130A90CF01D7DECCCF437056A5507837A720AB13 +S1130AA0F2AAE3AAD601C5016CE0B695A79597957D +S1130AB087956A95D1F783708295807F0370802B28 +S1130AC081ABB4A6A5A6452B46A79F01245D3F4F45 +S1130AD0BF016E5F7F4F18E0E12EF12C00E010E0C3 +S1130AE042E3CF01AEDEA3CFEF92FF920F931F93A9 +S1130AF0613009F1D0F0623029F4FC01278140FB18 +S1130B0022F927839C01295F3F4FBC016E5F7F4F11 +S1130B10E12CF12C8701E39443E093DE80E090E044 +S1130B201F910F91FF90EF900895FC01278140FBE6 +S1130B3020F92783E7CFFC01278140FB21F9278394 +S1130B40E1CFEF92FF920F931F936130B9F1E0F080 +S1130B50623099F4FC01248540FB27F9237923664C +S1130B6024879C01245F3F4FBC016E5F7F4FE12CC3 +S1130B70F12C8701E39442E164DE80E090E01F9170 +S1130B800F91FF90EF900895FC01228540FB27F917 +S1130B9020792F6422879C01265F3F4FBC016E5F42 +S1130BA07F4FE12CF12C8701E39440E14ADE80E0A1 +S1130BB090E01F910F91FF90EF900895FC01238521 +S1130BC040FB27F92F6623879C01255F3F4FBC011B +S1130BD06E5F7F4FE12CF12C8701E39441E131DE1C +S1130BE080E090E01F910F91FF90EF900895EF92B5 +S1130BF0FF920F931F936623C9F0613021F4FC0127 +S1130C002185246021879C01275F3F4FBC016E5FD3 +S1130C107F4FE12CF12C8701E39440EF12DE80E05A +S1130C2090E01F910F91FF90EF900895FC012185B2 +S1130C302B7F277F2187E7CFAF92BF92CF92DF929E +S1130C40EF92FF920F931F93CF93DF931F92CDB731 +S1130C50DEB7009709F483C06115710509F47FC0FC +S1130C604115510509F47BC06C01DC016D937C9343 +S1130C70119712964D935C931397FC01349684E577 +S1130C80DF011D928A95E9F78FEF89835601B2E05F +S1130C90AB0EB11CE12CF12C8701E3949E012F5F74 +S1130CA03F4F43E0B501C601CCDD80E889839E0156 +S1130CB02F5F3F4F40E1B501C601C3DD9E012F5FA9 +S1130CC03F4F41E1B501C601BCDD9E012F5F3F4F9F +S1130CD042E1B501C601B5DD9E012F5F3F4F43E1FF +S1130CE0B501C601AEDD9E012F5F3F4F44E1B50162 +S1130CF0C601A7DD9E012F5F3F4F45E1B501C60147 +S1130D00A0DD9E012F5F3F4F46E1B501C60199DD8D +S1130D109E012F5F3F4F47E1B501C60192DD80EC94 +S1130D2089839E012F5F3F4F47EBB501C60189DDE3 +S1130D3080E489839E012F5F3F4F4BEBB501C601D1 +S1130D4080DD80E090E00F90DF91CF911F910F91B3 +S1130D50FF90EF90DF90CF90BF90AF9008958FEF0A +S1130D609FEFF1CF0F931F93CF93DF9382309105C1 +S1130D7010F482E090E0E091653FF091663F20E05E +S1130D8030E0A0E0B0E0309719F140815181028158 +S1130D90138148175907C8F08417950769F4109709 +S1130DA031F012960C93129713961C9327C000935C +S1130DB0653F1093663F22C02115310519F0421793 +S1130DC0530718F49A01BD01EF01DF01F801DBCFED +S1130DD021153105F9F0281B390B2430310580F435 +S1130DE08A819B816115710521F0FB0182839383C4 +S1130DF004C08093653F9093663FFE01329644C0E1 +S1130E00FE01E20FF31F819391932250310928834D +S1130E1039833AC02091633F3091643F232B41F4DE +S1130E202091023F3091033F2093633F3093643F0E +S1130E302091003F3091013F2115310541F42DB738 +S1130E403EB74091043F5091053F241B350BE09180 +S1130E50633FF091643FE217F307A0F42E1B3F0BAE +S1130E602817390778F0AC014E5F5F4F2417350718 +S1130E7048F04E0F5F1F4093633F5093643F81934C +S1130E80919302C0E0E0F0E0CF01DF91CF911F9198 +S1130E900F910895CF93DF93009709F481C0FC016B +S1130EA0329712821382A091653FB091663F1097EA +S1130EB081F420813181820F931F2091633F30910F +S1130EC0643F2817390751F5E093633FF093643F7B +S1130ED067C0ED0120E030E0CE17DF0740F44A811F +S1130EE05B819E0141155105F1F0EA01F5CFC28302 +S1130EF0D38340815181840F951FC817D90759F4B2 +S1130F0088819981840F951F0296808391838A81B9 +S1130F109B81828393832115310529F4E093653FF6 +S1130F20F093663F3DC0E901EA83FB8349915991FF +S1130F30C40FD51FEC17FD0761F480819181840FE4 +S1130F40951F0296E90188839983828193818A831C +S1130F509B83E0E0F0E012968D919C9113970097AB +S1130F6019F0FD01DC01F7CF8D919C9111979D0142 +S1130F702E5F3F4F820F931F2091633F3091643F58 +S1130F802817390769F4309729F41092653F1092B5 +S1130F90663F02C012821382A093633FB093643F02 +S1130FA0DF91CF910895FB01DC0102C001900D9205 +S1130FB041505040D8F7089503D08081992708956F +S1130FC0FC01E050FC4E0895262FAF93BF93E0E060 +S1130FD0F0E1328131FDFDCFDC01A050BC4E2C93F9 +S1130FE02DE924BF23E020830196BF91AF9108959A +S1070FF0F894FFCF9F +S1090FF40000673F20002D S9030000FC diff --git a/storno_cqp6xx_digital_xtal/avr_i2c_driver b/storno_cqp6xx_digital_xtal/avr_i2c_driver index e53bc5b..9c0dcfd 160000 --- a/storno_cqp6xx_digital_xtal/avr_i2c_driver +++ b/storno_cqp6xx_digital_xtal/avr_i2c_driver @@ -1 +1 @@ -Subproject commit e53bc5b7fa923a96db6244baf556261cef28ac1e +Subproject commit 9c0dcfdb3174cfbfd1e1c4aa2c1efb49956e8e37 diff --git a/storno_cqp6xx_digital_xtal/cm_msg b/storno_cqp6xx_digital_xtal/cm_msg index 8a8fe0f..7afa6fe 160000 --- a/storno_cqp6xx_digital_xtal/cm_msg +++ b/storno_cqp6xx_digital_xtal/cm_msg @@ -1 +1 @@ -Subproject commit 8a8fe0f12f61b6405eaca04884571b1c0100cb94 +Subproject commit 7afa6fe99a29e9540ca46bd4594be23b39f44dba diff --git a/storno_cqp6xx_digital_xtal/cqm6xx_app.c b/storno_cqp6xx_digital_xtal/cqm6xx_app.c index b6fb2e5..3ae7a9a 100644 --- a/storno_cqp6xx_digital_xtal/cqm6xx_app.c +++ b/storno_cqp6xx_digital_xtal/cqm6xx_app.c @@ -72,30 +72,30 @@ static void cqm_setPLLParam(storno_xtal_app_t *inst, si5351_PLLs pll_num, si5351 } -uint8_t size = 0; static void cqm6xx_app_loadPLLParam(storno_xtal_app_t *inst){ - size = sizeof(storno_pll_param_msg); - // Read settings for PLLA first - cm_EEPROM_read((uint8_t*)PLLA_SETTINGS_EEPROM_ADDR,(uint8_t *)&inst->pll_param_data,size); - - //cm_setInputSource(inst->si5351_dev, SI5351_CLK_SOURCE_XTAL); + cm_EEPROM_read((uint8_t*)PLLA_SETTINGS_EEPROM_ADDR,(uint8_t *)&inst->pll_param_data,sizeof(storno_pll_param_msg)); + _delay_ms(1); + cm_setInputSource(inst->si5351_dev, SI5351_CLK_SOURCE_XTAL); _delay_ms(1); - - //cqm_setPLLParam(inst, SI5351_PLL_A, SI5351_OUTPUT_0); - //cm_setCLKControl(inst->si5351_dev,SI5351_OUTPUT_0,SI5351_CLK_POWER_UP); - //_delay_ms(1); + cqm_setPLLParam(inst, SI5351_PLL_A, SI5351_OUTPUT_0); + _delay_ms(1); cm_EEPROM_read((uint8_t*)PLLB_SETTINGS_EEPROM_ADDR,(uint8_t *)&inst->pll_param_data,sizeof(storno_pll_param_msg)); - //inst->pll_param_ptr = &temp_msg; - //cqm_setPLLParam(inst, SI5351_PLL_B, SI5351_OUTPUT_1); - //cm_setCLKControl(inst->si5351_dev,SI5351_OUTPUT_1,SI5351_CLK_POWER_UP); + _delay_ms(1); + cqm_setPLLParam(inst, SI5351_PLL_B, SI5351_OUTPUT_1); - //inst->pll_param_ptr = NULL; + + // Set third output to crystal freq for calibration! + cqm_setPLLParam(inst, SI5351_PLL_B, SI5351_OUTPUT_2); + cm_setCLKControl(inst->si5351_dev, SI5351_OUTPUT_2,SI5351_CLK_POWER_UP); + _delay_ms(1); + cm_setOutputEnable(inst->si5351_dev,SI5351_OUTPUT_2,SI5351_OUTPUT_ENABLE); + } @@ -161,7 +161,7 @@ void programPLL_Parameters(storno_xtal_app_t *inst){ switch(inst->pll_param_data.PLL_Ident){ case MSG_PLLA_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*)PLLA_SETTINGS_EEPROM_ADDR,(uint8_t*)&(inst->pll_param_data), sizeof(storno_pll_param_msg)); break; case MSG_PLLB_PARAM: @@ -173,7 +173,46 @@ void programPLL_Parameters(storno_xtal_app_t *inst){ // Send status back maybe.. //Force state machine to load new settings from eeprom: - //inst->state_next = STORNO_APP_PROGRAM_OSC; + inst->state_next = STORNO_APP_PROGRAM_OSC; + +} + +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->pll_param_data.MSx_P1 = 18; + inst->pll_param_data.MSx_P2 = 0; + inst->pll_param_data.MSx_P3 = 1; + + 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)); + 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)); + + uint8_t *ptr = (void*)&inst->pll_param_data; + + for (uint32_t idx = 0; idx < sizeof(storno_pll_param_msg); idx++ ) + { + if ((*ptr != 0xff) && (*ptr != 0x00)) + { + return 1; + } + ptr++; + } + + return 0; + } @@ -198,8 +237,13 @@ void cqm6xx_app_init(storno_xtal_app_t *inst, void *si5351_dev){ inst->si5351_dev = si5351_dev; - //cm_uart_init(inst,(get_UART_Event_fpt)uart_rx_event); cm_MsgCompleteEvt_Register(inst,(Get_msgComplete_Event_fpt)uart_rx_event); cm_uart_init(inst,(get_UART_Event_fpt)cm_msg_DecodeMsg_Byte); + // Check if data is vaild (if this is a new mcu) + if(!isEEPROMValid(inst)){ + // If settings are somehow unvalid, then write default settings.. + writeDefaultSettingsEEprom(inst); + } + } \ No newline at end of file diff --git a/storno_cqp6xx_digital_xtal/cqm6xx_app.h b/storno_cqp6xx_digital_xtal/cqm6xx_app.h index eca660e..a97d830 100644 --- a/storno_cqp6xx_digital_xtal/cqm6xx_app.h +++ b/storno_cqp6xx_digital_xtal/cqm6xx_app.h @@ -32,7 +32,7 @@ typedef struct { -}storno_pll_param_msg; +}__attribute__((packed))storno_pll_param_msg; typedef enum { @@ -54,7 +54,7 @@ typedef struct { -}storno_xtal_app_t; +}__attribute__((packed))storno_xtal_app_t; void cqm6xx_app_statemachine(storno_xtal_app_t *inst); void cqm6xx_app_init(storno_xtal_app_t *inst, void *si5351_dev); diff --git a/storno_cqp6xx_digital_xtal/si5351_driver b/storno_cqp6xx_digital_xtal/si5351_driver index 06a0eda..4576085 160000 --- a/storno_cqp6xx_digital_xtal/si5351_driver +++ b/storno_cqp6xx_digital_xtal/si5351_driver @@ -1 +1 @@ -Subproject commit 06a0eda9071b77b92938f71a34a016b52e59252f +Subproject commit 4576085237f3156e1fea04d69f0df1fcc4e52407 diff --git a/storno_cqp6xx_digital_xtal/storno_cqp6xx_digital_xtal.cproj b/storno_cqp6xx_digital_xtal/storno_cqp6xx_digital_xtal.cproj index a1a80e8..c629999 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 debugging experience (-Og) + Optimize more (-O2) True True Default (-g2)