diff --git a/.gitmodules b/.gitmodules index 4508e7b..af041ee 100644 --- a/.gitmodules +++ b/.gitmodules @@ -13,3 +13,6 @@ [submodule "storno_cqp6xx_digital_xtal/cm_msg"] path = storno_cqp6xx_digital_xtal/cm_msg url = https://OZ1CM@bitbucket.org/oz1cm/cm_msg.git +[submodule "storno_cqp6xx_digital_xtal/avr_eeprom_driver"] + path = storno_cqp6xx_digital_xtal/avr_eeprom_driver + url = https://OZ1CM@bitbucket.org/oz1cm/avr_eeprom_driver.git diff --git a/storno_cqp6xx_digital_xtal/Debug/Makefile b/storno_cqp6xx_digital_xtal/Debug/Makefile index 20411c4..2f28179 100644 --- a/storno_cqp6xx_digital_xtal/Debug/Makefile +++ b/storno_cqp6xx_digital_xtal/Debug/Makefile @@ -33,20 +33,22 @@ LINKER_SCRIPT_DEP:= # Every subdirectory with source files must be described here SUBDIRS := \ +../avr_eeprom_driver/ \ ../avr_gpio_driver/ \ ../avr_i2c_driver/ \ ../avr_uart_driver/ \ -../cm_msg_sync/ \ +../cm_msg/ \ ../si5351_driver/ \ ../si5351_driver/include/ # Add inputs and outputs from these tool invocations to the build variables C_SRCS += \ +../avr_eeprom_driver/avr_eeprom_driver.c \ ../avr_gpio_driver/avr_gpio.c \ ../avr_i2c_driver/avr_i2c.c \ ../avr_uart_driver/avr_uart.c \ -../cm_msg_sync/cm_msg_sync.c \ +../cm_msg/cm_msg.c \ ../cqm6xx_app.c \ ../main.c \ ../si5351_driver/si5351_driver.c @@ -59,37 +61,41 @@ ASM_SRCS += OBJS += \ +avr_eeprom_driver/avr_eeprom_driver.o \ avr_gpio_driver/avr_gpio.o \ avr_i2c_driver/avr_i2c.o \ avr_uart_driver/avr_uart.o \ -cm_msg_sync/cm_msg_sync.o \ +cm_msg/cm_msg.o \ cqm6xx_app.o \ main.o \ si5351_driver/si5351_driver.o OBJS_AS_ARGS += \ +avr_eeprom_driver/avr_eeprom_driver.o \ avr_gpio_driver/avr_gpio.o \ avr_i2c_driver/avr_i2c.o \ avr_uart_driver/avr_uart.o \ -cm_msg_sync/cm_msg_sync.o \ +cm_msg/cm_msg.o \ cqm6xx_app.o \ main.o \ si5351_driver/si5351_driver.o C_DEPS += \ +avr_eeprom_driver/avr_eeprom_driver.d \ avr_gpio_driver/avr_gpio.d \ avr_i2c_driver/avr_i2c.d \ avr_uart_driver/avr_uart.d \ -cm_msg_sync/cm_msg_sync.d \ +cm_msg/cm_msg.d \ cqm6xx_app.d \ main.d \ si5351_driver/si5351_driver.d C_DEPS_AS_ARGS += \ +avr_eeprom_driver/avr_eeprom_driver.d \ avr_gpio_driver/avr_gpio.d \ avr_i2c_driver/avr_i2c.d \ avr_uart_driver/avr_uart.d \ -cm_msg_sync/cm_msg_sync.d \ +cm_msg/cm_msg.d \ cqm6xx_app.d \ main.d \ si5351_driver/si5351_driver.d @@ -108,6 +114,13 @@ LINKER_SCRIPT_DEP+= # AVR32/GNU C Compiler +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 "$@" "$<" + @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 @@ -129,7 +142,7 @@ avr_uart_driver/avr_uart.o: ../avr_uart_driver/avr_uart.c @echo Finished building: $< -cm_msg_sync/cm_msg_sync.o: ../cm_msg_sync/cm_msg_sync.c +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 "$@" "$<" 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 b6868e8..53eeff2 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.d b/storno_cqp6xx_digital_xtal/Debug/cqm6xx_app.d index 3c543fd..d0ff23e 100644 --- a/storno_cqp6xx_digital_xtal/Debug/cqm6xx_app.d +++ b/storno_cqp6xx_digital_xtal/Debug/cqm6xx_app.d @@ -18,7 +18,9 @@ cqm6xx_app.d cqm6xx_app.o: .././cqm6xx_app.c .././cqm6xx_app.h \ c:\program\ files\ (x86)\atmel\studio\7.0\toolchain\avr8\avr8-gnu-toolchain\avr\include\avr\fuse.h \ c:\program\ files\ (x86)\atmel\studio\7.0\toolchain\avr8\avr8-gnu-toolchain\avr\include\avr\lock.h \ c:\program\ files\ (x86)\atmel\studio\7.0\toolchain\avr8\avr8-gnu-toolchain\lib\gcc\avr\5.4.0\include\stdbool.h \ - .././avr_global_config.h \ + .././avr_uart_driver/avr_uart.h \ + .././avr_uart_driver/../avr_global_config.h .././avr_global_config.h \ + .././avr_eeprom_driver/avr_eeprom_driver.h .././cm_msg/cm_msg.h \ c:\program\ files\ (x86)\atmel\studio\7.0\toolchain\avr8\avr8-gnu-toolchain\avr\include\util\delay.h \ c:\program\ files\ (x86)\atmel\studio\7.0\toolchain\avr8\avr8-gnu-toolchain\avr\include\util\delay_basic.h \ c:\program\ files\ (x86)\atmel\studio\7.0\toolchain\avr8\avr8-gnu-toolchain\avr\include\math.h @@ -63,8 +65,16 @@ c:\program\ files\ (x86)\atmel\studio\7.0\toolchain\avr8\avr8-gnu-toolchain\avr\ c:\program\ files\ (x86)\atmel\studio\7.0\toolchain\avr8\avr8-gnu-toolchain\lib\gcc\avr\5.4.0\include\stdbool.h: +.././avr_uart_driver/avr_uart.h: + +.././avr_uart_driver/../avr_global_config.h: + .././avr_global_config.h: +.././avr_eeprom_driver/avr_eeprom_driver.h: + +.././cm_msg/cm_msg.h: + c:\program\ files\ (x86)\atmel\studio\7.0\toolchain\avr8\avr8-gnu-toolchain\avr\include\util\delay.h: c:\program\ files\ (x86)\atmel\studio\7.0\toolchain\avr8\avr8-gnu-toolchain\avr\include\util\delay_basic.h: diff --git a/storno_cqp6xx_digital_xtal/Debug/cqm6xx_app.o b/storno_cqp6xx_digital_xtal/Debug/cqm6xx_app.o index 8afe603..0105b50 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 aa1dc5c..6c4aa74 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/makedep.mk b/storno_cqp6xx_digital_xtal/Debug/makedep.mk index c5edc89..dc6fb01 100644 --- a/storno_cqp6xx_digital_xtal/Debug/makedep.mk +++ b/storno_cqp6xx_digital_xtal/Debug/makedep.mk @@ -2,13 +2,15 @@ # Automatically-generated file. Do not edit or delete the file ################################################################################ +avr_eeprom_driver\avr_eeprom_driver.c + avr_gpio_driver\avr_gpio.c avr_i2c_driver\avr_i2c.c avr_uart_driver\avr_uart.c -cm_msg_sync\cm_msg_sync.c +cm_msg\cm_msg.c cqm6xx_app.c 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 33c64c9..b705e1b 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 a8d71e9..36915f5 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 5617f4b..e911fc9 100644 --- a/storno_cqp6xx_digital_xtal/Debug/storno_cqp6xx_digital_xtal.hex +++ b/storno_cqp6xx_digital_xtal/Debug/storno_cqp6xx_digital_xtal.hex @@ -1,207 +1,154 @@ :1000000019C033C032C031C030C02FC02EC02DC087 :100010002CC02BC02AC029C028C027C026C025C09C -:1000200024C023C022C021C020C01FC06CC11DC07D +:1000200024C023C022C021C020C01FC066C11DC083 :100030001CC01BC011241FBECFEFCDBFDFE3DEBF4E -:100040002FE3A6E0BFE301C01D92AF30B207E1F796 -:100050001FE3A0E0BFE3EEECFCE002C005900D92D0 -:10006000A630B107D9F77CD230C6CACF81110DC0F6 -:100070002091080430E002C0359527956A95E2F793 -:1000800081E020FF80E090E0089580E090E0089516 -:10009000E0E1F8E084818860848381E085830895CD -:1000A0008093170880911508807CE1F390911508E2 -:1000B000892F807194FF04C083E08093140881E04D -:1000C0000895CF92DF92EF92FF92CF93DF93EB01EF -:1000D00069017A01232B242B252B81F1E1DF81118A -:1000E00030C09E012F5F3F4F888180931808809118 -:1000F000150886FFFCCF8091150884FF06C083E0B9 -:100100008093140881E090E01EC0809115088C70E7 -:1001100021F0BEDF81E090E016C08091150884FDDB -:1001200007C081E0C81AD108E108F108E901C9F661 -:1001300083E08093140880E090E005C08FEF9FEF8C -:1001400002C08FEF9FEFDF91CF91FF90EF90DF9094 -:10015000CF900895CF92DF92EF92FF92CF93DF93EB -:10016000EB0169017A01232B242B252B69F1816096 -:1001700097DF8823C9F02BC080911508807CE1F3BC -:10018000CE0101962091180828834115510561057B -:10019000710521F424E02093140803C022E0209389 -:1001A00014086A017B01EC01B701A6014150510915 -:1001B00061097109CD28CE28CF28F1F683E080931C -:1001C000140880E090E005C081E090E002C08FEF6D -:1001D0009FEFDF91CF91FF90EF90DF90CF90089548 -:1001E000809317088091150886FFFCCF8091150831 -:1001F00084FF06C083E08093140881E090E00895B6 -:1002000083E08093140880E090E00895E0E0F4E05B -:1002100080818B7F80838081877F8083A0E1B8E0AD -:100220008BE016968C93169781E013968C93139718 -:1002300015968C9388E0828B838B80E090E0089504 -:10024000EF92FF920F931F93CF938C017B01C42FEA -:10025000842F880FC5DF009749F4F801E082F1820E -:100260004C2F50E0440F551F428302C08EEF9FEF8A -:10027000CF911F910F91FF90EF9008950F930097EA -:1002800081F0FC01002319F0013031F00DC08281B2 -:1002900061DF80E090E00AC0828113DF80E090E0BF -:1002A00005C08FEF9FEF02C080E090E00F910895AE -:1002B000CF93DF931F92CDB7DEB7F894E0E0F8E07C -:1002C0008CE695E08087918783E0878380EC868346 -:1002D00080E885838481882324F4809100088983C1 -:1002E0008981E0E0F4E080E4818380E8828378948F -:1002F0000F90DF91CF9108959091040895FFFCCF66 -:100300008093020808951F920F920FB60F92112446 -:100310002F933F934F935F936F937F938F939F930D -:10032000AF93BF93EF93FF93809100088093063FB4 -:10033000E3DFFF91EF91BF91AF919F918F917F91FB -:100340006F915F914F913F912F910F900FBE0F9042 -:100350001F901895FC0122813381232B21F0892BDA -:1003600021F481E0089581E0089580E00895CF931D -:10037000DF93EC01EFDF811132C089819881891709 -:1003800071F1813019F08230B1F029C081E493E03D -:100390000197F1F7000040E060E08A819B81DBD1AA -:1003A00081E493E00197F1F7000041E061E08A8188 -:1003B0009B81D1D114C081E493E00197F1F7000053 -:1003C00041E060E08A819B81C6D181E493E001979E -:1003D000F1F7000040E061E08A819B81BCD1DF91B0 -:1003E000CF910895AF92BF92CF92DF92EF92FF929A -:1003F0000F931F93CF93DF93EC01ACDF81119AC071 -:100400008981813009F47FC020F0823009F487C0EF -:1004100091C0888381E493E00197F1F7000060E0E8 -:100420008A819B81E6D181E493E00197F1F7000096 -:100430000F2EFBE5AF2EF8E4BF2EF0E1CF2ED12C2E -:10044000F02D16EFE12E1CE2F12E00E010E023E487 -:100450003DE040E050E060E08A819B810DD281E484 -:1004600093E00197F1F700000F2EF0ECAF2EF8E4C7 -:10047000BF2EF0E1CF2ED12CF02D12E0E12E1FE3A4 -:10048000F12E00E010E028EC3CE040E050E061E0BC -:100490008A819B81F1D181E493E00197F1F700001B -:1004A000A12CB12C6501A394E12CF12C870122E150 -:1004B00030E040E050E060E08A819B81C1D081E47F -:1004C00093E00197F1F7000020E430E040E050E0D5 -:1004D00061E08A819B81B4D081E493E00197F1F7D8 -:1004E000000040E060E08A819B8155D181E493E087 -:1004F0000197F1F7000040E061E08A819B814BD1D8 -:1005000081E0898317C0CE0132DF8981888363E06F -:1005100080E0ACDD019771F482E089830BC0CE01ED -:1005200026DF8981888363E080E0A0DD892B11F4D8 -:1005300081E08983DF91CF911F910F91FF90EF9020 -:10054000DF90CF90BF90AF900895FC0161157105C9 -:1005500031F0892B21F01182108262837383089518 -:10056000CF93DF93CDB7DEB7CB55D109CDBFDEBF7B -:1005700080E090E04BDE40E660E070E0CE01019666 -:100580005FDE4EE351E0BE016F5F7F4FCE01049608 -:10059000D1D1BE016C5F7F4F87E09FE3D6DF88DE5D -:1005A00082E7AADE82E7A8DE8AE0A6DE8DE0A4DE8E -:1005B00087E09FE317DF2AE684E091E02150804046 -:1005C0009040E1F700C0F4CF8F929F92AF92BF921C -:1005D000CF92DF92EF92FF920F931F93CF93DF930F -:1005E000EC01862E5A0168017901C801019643D2B7 -:1005F000982E192FFC018192CF01A601B5015CD381 -:10060000EA81FB81A70196012F5F3F4F4F4F5F4F5C -:1006100001E0692D712F888199810995892D912F8C -:10062000C2D280E090E0DF91CF911F910F91FF90B7 -:10063000EF90DF90CF90BF90AF909F908F900895F4 -:10064000AF92BF92CF92DF92EF92FF920F931F93E0 -:10065000FC01862FBA01A9014450510961097E4F5E -:10066000440F551F661F771F440F551F661F771FC6 -:10067000440F551F661F771F440F551F661F771FB6 -:10068000440F551F661F771F440F551F661F771FA6 -:10069000440F551F661F771F882319F0813049F1D9 -:1006A0004FC0962F937086A18C7F892B86A357A36A -:1006B00040A7F2A6E3A6D601C501072E7CE0B695B9 -:1006C000A795979587957A95D1F7702D8370829528 -:1006D000807F0370802B81A7B4A2A5A2AF014C5DDF -:1006E0005F4F08E010E020E030E06AE2CF016CDF0D -:1006F00027C0962F937086A58C7F892B86A757A736 -:1007000040ABF2AAE3AAD601C501072E7CE0B6955C -:10071000A795979587957A95D1F7702D83708295D7 -:10072000807F0370802B81ABB4A6A5A6AF01445D8A -:100730005F4F08E010E020E030E062E3CF0144DFEB -:1007400080E090E01F910F91FF90EF90DF90CF90AD -:10075000BF90AF9008950F931F93662319F06130F7 -:1007600039F00BC0FC01278140FB20F9278305C02D -:10077000FC01278140FB21F92783AC01495F5F4FD2 -:1007800001E010E020E030E063E01EDF80E090E078 -:100790001F910F9108950F931F93662319F06130F5 -:1007A000A1F022C0FC01228540FB27F933853F7D63 -:1007B00033872F642287AC01465F5F4F01E010E072 -:1007C00020E030E060E100DF0FC0FC01238540FB4A -:1007D00027F92F662387AC01455F5F4F01E010E0EA -:1007E00020E030E061E1F0DE80E090E01F910F91C9 -:1007F00008950F931F93662319F0613039F00AC0F2 -:10080000FC0121852B7F277F218704C0FC012185E6 -:1008100024602187AC01475F5F4F01E010E020E0DA -:1008200030E060EFD1DE80E090E01F910F910895FD -:100830000F931F9331E0611101C030E0FC01E95AD0 -:10084000FF4F208130FB25F9208331E0411101C0A9 -:1008500030E0AC01495A5F4FFA01208130FB27F9A3 -:10086000208301E010E020E030E061EBADDE80E0CD -:1008700090E01F910F910895AF92BF92CF92DF92B7 -:10088000EF92FF920F931F93CF93DF93EC016623B8 -:1008900019F0613001F13DC042708E898C7F482B88 -:1008A0004E8B3F8B288FD801C70188279927AF70BF -:1008B000BB27FA8EEB8E8A2F8F70898FBC8AAD8A08 -:1008C00008E010E020E030E0AE014C5E5F4F6AE1EE -:1008D000CE017ADE1EC042708E8D8C7F482B4E8FEB -:1008E0003F8F28A3D801C70188279927AF70BB275E -:1008F000FAA2EBA28A2F8F7089A3BC8EAD8E08E07E -:1009000010E020E030E0AE01445E5F4F62E2CE01D5 -:100910005BDE41E061E0CE018BDF80E090E0DF91C3 -:10092000CF911F910F91FF90EF90DF90CF90BF90EC -:10093000AF900895EF92FF920F931F93CF93DF93A1 -:100940001F92CDB7DEB7009709F485C06115710518 -:1009500009F484C04115510509F483C07C01DC0110 -:100960006D937C93119712964D935C931397FC01B2 -:10097000349684E5DF011D928A95E9F78FEF89832C -:1009800001E010E020E030E0AE014F5F5F4F63E038 -:10099000C7011ADE80E8898301E010E020E030E042 -:1009A000AE014F5F5F4F60E1C7010EDE01E010E076 -:1009B00020E030E0AE014F5F5F4F61E1C70104DE30 -:1009C00001E010E020E030E0AE014F5F5F4F62E1F8 -:1009D000C701FADD01E010E020E030E0AE014F5F3A -:1009E0005F4F63E1C701F0DD01E010E020E030E09F -:1009F000AE014F5F5F4F64E1C701E6DD01E010E04B -:100A000020E030E0AE014F5F5F4F65E1C701DCDD04 -:100A100001E010E020E030E0AE014F5F5F4F66E1A3 -:100A2000C701D2DD01E010E020E030E0AE014F5F11 -:100A30005F4F67E1C701C8DD80EC898301E010E00A -:100A400020E030E0AE014F5F5F4F67EBC701BCDDD8 -:100A500080E090E008C08FEF9FEF05C08FEF9FEF21 -:100A600002C08FEF9FEF0F90DF91CF911F910F91F9 -:100A7000FF90EF9008950F931F93CF93DF938230F1 -:100A8000910510F482E090E0E0910D3FF0910E3F6F -:100A900020E030E0A0E0B0E0309719F140815181D2 -:100AA0000281138148175907C8F08417950769F424 -:100AB000109731F012960C93129713961C9327C03F -:100AC00000930D3F10930E3F22C02115310519F000 -:100AD0004217530718F49A01BD01EF01DF01F80135 -:100AE000DBCF21153105F9F0281B390B24303105F6 -:100AF00080F48A819B816115710521F0FB0182835D -:100B0000938304C080930D3F90930E3FFE01329675 -:100B100044C0FE01E20FF31F8193919322503109EB -:100B2000288339833AC020910B3F30910C3F232B0F -:100B300041F42091023F3091033F20930B3F3093CB -:100B40000C3F2091003F3091013F2115310541F4C8 -:100B50002DB73EB74091043F5091053F241B350B04 -:100B6000E0910B3FF0910C3FE217F307A0F42E1B2E -:100B70003F0B2817390778F0AC014E5F5F4F241701 -:100B8000350748F04E0F5F1F40930B3F50930C3FCB -:100B90008193919302C0E0E0F0E0CF01DF91CF912B -:100BA0001F910F910895CF93DF93009709F481C0AF -:100BB000FC01329712821382A0910D3FB0910E3F3B -:100BC000109781F420813181820F931F20910B3F78 -:100BD00030910C3F2817390751F5E0930B3FF09304 -:100BE0000C3F67C0ED0120E030E0CE17DF0740F496 -:100BF0004A815B819E0141155105F1F0EA01F5CF73 -:100C0000C283D38340815181840F951FC817D907B0 -:100C100059F488819981840F951F0296808391836E -:100C20008A819B81828393832115310529F4E09386 -:100C30000D3FF0930E3F3DC0E901EA83FB834991EC -:100C40005991C40FD51FEC17FD0761F48081918184 -:100C5000840F951F0296E90188839983828193818D -:100C60008A839B83E0E0F0E012968D919C9113972C -:100C7000009719F0FD01DC01F7CF8D919C91119740 -:100C80009D012E5F3F4F820F931F20910B3F3091AC -:100C90000C3F2817390769F4309729F410920D3F5B -:100CA00010920E3F02C012821382A0930B3FB093AA -:100CB0000C3FDF91CF910895FB01DC0102C0019050 -:0E0CC0000D9241505040D8F70895F894FFCFA0 -:060CCE0000000F3F2000B2 +:100040002FE3A6E0BFE301C01D92A035B207E1F7A0 +:100050001FE3A0E0BFE3E9E6F9E002C005900D92DE +:10006000A630B107D9F74DD27BC4CACFE0E1F8E0A2 +:1000700084818860848381E0858308958093170854 +:1000800080911508807CE1F390911508892F80718B +:1000900094FF04C083E08093140881E00895CF9218 +:1000A000DF92EF92FF92CF93DF93EB0169017A0128 +:1000B000232B242B252B81F1E1DF811130C09E0100 +:1000C0002F5F3F4F8881809318088091150886FF25 +:1000D000FCCF8091150884FF06C083E0809314084C +:1000E00081E090E01EC0809115088C7021F0BEDF89 +:1000F00081E090E016C08091150884FD07C081E082 +:10010000C81AD108E108F108E901C9F683E0809333 +:10011000140880E090E005C08FEF9FEF02C08FEFE2 +:100120009FEFDF91CF91FF90EF90DF90CF900895F8 +:10013000CF92DF92EF92FF92CF93DF93EB016901B1 +:100140007A01232B242B252B69F1816097DF8823EB +:10015000C9F02BC080911508807CE1F3CE01019697 +:10016000209118082883411551056105710521F476 +:1001700024E02093140803C022E0209314086A01AD +:100180007B01EC01B701A6014150510961097109D8 +:10019000CD28CE28CF28F1F683E08093140880E0A4 +:1001A00090E005C081E090E002C08FEF9FEFDF910B +:1001B000CF91FF90EF90DF90CF9008958093170834 +:1001C0008091150886FFFCCF8091150884FF06C03A +:1001D00083E08093140881E090E0089583E08093A9 +:1001E000140880E090E00895E0E0F4E080818B7FE7 +:1001F00080838081877F8083A0E1B8E08BE01696C2 +:100200008C93169781E013968C93139715968C9385 +:1002100088E0828B838B80E090E00895EF92FF92DC +:100220000F931F93CF938C017B01C42F842F880FD2 +:10023000C5DF009749F4F801E082F1824C2F50E0CD +:10024000440F551F428302C08EEF9FEFCF911F9145 +:100250000F91FF90EF9008950F93009781F0FC01AC +:10026000002319F0013031F00DC0828161DF80E0A0 +:1002700090E00AC0828113DF80E090E005C08FEF3C +:100280009FEF02C080E090E00F910895CF93DF933D +:100290001F92CDB7DEB7AC01F894E0E0F8E02CE6B1 +:1002A00035E02087318793E0978390EC9683611542 +:1002B000710511F4452B39F080E8809305086093AF +:1002C000063F7093073F80910408882324F48091AF +:1002D000000889838981E0E0F4E080E4818380E89C +:1002E000828378940F90DF91CF91089590910408C4 +:1002F00095FFFCCF8093020808951F920F920FB6CE +:100300000F9211242F933F934F935F936F937F939B +:100310008F939F93AF93BF93EF93FF93CF93DF930D +:100320001F92CDB7DEB7E091063FF091073F3097BF +:1003300019F08091000809958091000889838981CE +:10034000D5DF0F90DF91CF91FF91EF91BF91AF91EA +:100350009F918F917F916F915F914F913F912F91DD +:100360000F900FBE0F901F901895E091413FE23023 +:1003700029F128F4EE2341F0E13091F040C0E33060 +:1003800059F1E430B9F13BC0F0E0EC59F647208177 +:1003900091E0281390E09093413F81E090E0089530 +:1003A000F0E0EC59F6479081891302C082E001C069 +:1003B00080E08093413F81E090E00895F0E0EC59C7 +:1003C000F6479081891302C083E001C080E08093EA +:1003D000413F81E090E00895F0E0EC59F6479081CC +:1003E000891302C084E001C080E08093413F81E036 +:1003F00090E008951092413F80E090E008951092BF +:10040000413F81E090E008959091403F9330C1F0EA +:1004100028F4992341F0913069F042C09430C1F042 +:10042000953001F13DC0A1DF892BD1F581E08093AA +:10043000403F36C08093093F83E08093403F30C007 +:10044000E9E0FFE31182828384E08093403F28C08B +:10045000E9E0FFE321813281282B2183328395E07B +:100460009093403F9091083FE92FF0E0E75FF04C18 +:10047000838381E0890F8093083F9091093F98170B +:1004800078F4E091443FF091453F6CE07FE3809148 +:10049000423F9091433F09951092403F1092083F90 +:1004A00080E090E00895009759F06115710541F0E2 +:1004B0008093423F9093433F6093443F7093453F06 +:1004C0000895FC0111820895FC0164837583F9DFAE +:1004D00080E090E00895CF93DF936115710571F08E +:1004E000009761F0EC01198218826A837B8364E6CD +:1004F00072E0D9DF64E072E0CE01C8DEDF91CF9117 +:100500000895CF93DF93CDB7DEB7CB55D109CDBFDB +:10051000DEBF80E090E068DE40E660E070E0CE01A3 +:1005200001967CDE4CE251E0BE016F5F7F4FCE0151 +:1005300004964BD0BE016C5F7F4F86E49FE3CBDF18 +:100540002AE684E091E0215080409040E1F700C02D +:10055000F7CF8F929F92AF92BF92CF92DF92EF929E +:10056000FF920F931F93CF93DF93EC01862E5A01D6 +:1005700068017901C8010196C9D0982E192FFC0194 +:100580008192CF01A601B501E2D1EA81FB81A701E9 +:1005900096012F5F3F4F4F4F5F4F01E0692D712F45 +:1005A000888199810995892D912F48D180E090E02B +:1005B000DF91CF911F910F91FF90EF90DF90CF903F +:1005C000BF90AF909F908F900895EF92FF920F93FE +:1005D0001F93CF93DF931F92CDB7DEB7009709F437 +:1005E00085C06115710509F484C04115510509F4F0 +:1005F00083C07C01DC016D937C93119712964D931F +:100600005C931397FC01349684E5DF011D928A9573 +:10061000E9F78FEF898301E010E020E030E0AE01E0 +:100620004F5F5F4F63E0C70194DF80E8898301E09B +:1006300010E020E030E0AE014F5F5F4F60E1C701A6 +:1006400088DF01E010E020E030E0AE014F5F5F4F57 +:1006500061E1C7017EDF01E010E020E030E0AE01A3 +:100660004F5F5F4F62E1C70174DF01E010E020E0FF +:1006700030E0AE014F5F5F4F63E1C7016ADF01E029 +:1006800010E020E030E0AE014F5F5F4F64E1C70152 +:1006900060DF01E010E020E030E0AE014F5F5F4F2F +:1006A00065E1C70156DF01E010E020E030E0AE0177 +:1006B0004F5F5F4F66E1C7014CDF01E010E020E0D3 +:1006C00030E0AE014F5F5F4F67E1C70142DF80EC72 +:1006D000898301E010E020E030E0AE014F5F5F4F22 +:1006E00067EBC70136DF80E090E008C08FEF9FEF37 +:1006F00005C08FEF9FEF02C08FEF9FEF0F90DF914C +:10070000CF911F910F91FF90EF9008950F931F933A +:10071000CF93DF938230910510F482E090E0E09176 +:100720004E3FF0914F3F20E030E0A0E0B0E0309746 +:1007300019F1408151810281138148175907C8F08E +:100740008417950769F4109731F012960C9312975D +:1007500013961C9327C000934E3F10934F3F22C027 +:100760002115310519F04217530718F49A01BD01FC +:10077000EF01DF01F801DBCF21153105F9F0281B6E +:10078000390B2430310580F48A819B816115710514 +:1007900021F0FB018283938304C080934E3F9093AA +:1007A0004F3FFE01329644C0FE01E20FF31F8193DA +:1007B000919322503109288339833AC020914C3FCC +:1007C00030914D3F232B41F42091023F3091033F64 +:1007D00020934C3F30934D3F2091003F3091013F9B +:1007E0002115310541F42DB73EB74091043F50919A +:1007F000053F241B350BE0914C3FF0914D3FE21734 +:10080000F307A0F42E1B3F0B2817390778F0AC0133 +:100810004E5F5F4F2417350748F04E0F5F1F409320 +:100820004C3F50934D3F8193919302C0E0E0F0E044 +:10083000CF01DF91CF911F910F910895CF93DF9357 +:10084000009709F481C0FC01329712821382A091B3 +:100850004E3FB0914F3F109781F420813181820F3C +:10086000931F20914C3F30914D3F2817390751F588 +:10087000E0934C3FF0934D3F67C0ED0120E030E046 +:10088000CE17DF0740F44A815B819E014115510577 +:10089000F1F0EA01F5CFC283D38340815181840F07 +:1008A000951FC817D90759F488819981840F951F1E +:1008B0000296808391838A819B8182839383211511 +:1008C000310529F4E0934E3FF0934F3F3DC0E901DD +:1008D000EA83FB8349915991C40FD51FEC17FD079B +:1008E00061F480819181840F951F0296E9018883CC +:1008F0009983828193818A839B83E0E0F0E0129662 +:100900008D919C911397009719F0FD01DC01F7CFB1 +:100910008D919C9111979D012E5F3F4F820F931FE8 +:1009200020914C3F30914D3F2817390769F430979B +:1009300029F410924E3F10924F3F02C01282138250 +:10094000A0934C3FB0934D3FDF91CF910895FB01B1 +:10095000DC0102C001900D9241505040D8F708953B +:04096000F894FFCF39 +:050964004F5A31434D24 +:060969000000503F2000D9 :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 74ebb25..104f7ca 100644 --- a/storno_cqp6xx_digital_xtal/Debug/storno_cqp6xx_digital_xtal.lss +++ b/storno_cqp6xx_digital_xtal/Debug/storno_cqp6xx_digital_xtal.lss @@ -3,31 +3,33 @@ storno_cqp6xx_digital_xtal.elf: file format elf32-avr Sections: Idx Name Size VMA LMA File off Algn - 0 .data 00000006 00803f00 00000cce 00000d62 2**0 + 0 .data 00000006 00803f00 00000969 00000a1d 2**0 CONTENTS, ALLOC, LOAD, DATA - 1 .text 00000cce 00000000 00000000 00000094 2**1 + 1 .text 00000964 00000000 00000000 000000b4 2**1 CONTENTS, ALLOC, LOAD, READONLY, CODE - 2 .bss 00000009 00803f06 00803f06 00000d68 2**0 + 2 .rodata 00000005 00008964 00000964 00000a18 2**0 + CONTENTS, ALLOC, LOAD, READONLY, DATA + 3 .bss 0000004a 00803f06 00803f06 00000a23 2**0 ALLOC - 3 .comment 00000030 00000000 00000000 00000d68 2**0 + 4 .comment 00000030 00000000 00000000 00000a23 2**0 CONTENTS, READONLY - 4 .note.gnu.avr.deviceinfo 0000003c 00000000 00000000 00000d98 2**2 + 5 .note.gnu.avr.deviceinfo 0000003c 00000000 00000000 00000a54 2**2 CONTENTS, READONLY - 5 .debug_aranges 000001a0 00000000 00000000 00000dd4 2**0 + 6 .debug_aranges 000001b8 00000000 00000000 00000a90 2**0 CONTENTS, READONLY, DEBUGGING - 6 .debug_info 00004b29 00000000 00000000 00000f74 2**0 + 7 .debug_info 0000496c 00000000 00000000 00000c48 2**0 CONTENTS, READONLY, DEBUGGING - 7 .debug_abbrev 00001b2d 00000000 00000000 00005a9d 2**0 + 8 .debug_abbrev 00001bfd 00000000 00000000 000055b4 2**0 CONTENTS, READONLY, DEBUGGING - 8 .debug_line 0000126c 00000000 00000000 000075ca 2**0 + 9 .debug_line 000012f2 00000000 00000000 000071b1 2**0 CONTENTS, READONLY, DEBUGGING - 9 .debug_frame 00000534 00000000 00000000 00008838 2**2 + 10 .debug_frame 00000558 00000000 00000000 000084a4 2**2 CONTENTS, READONLY, DEBUGGING - 10 .debug_str 00001ec6 00000000 00000000 00008d6c 2**0 + 11 .debug_str 00002131 00000000 00000000 000089fc 2**0 CONTENTS, READONLY, DEBUGGING - 11 .debug_loc 00001ce2 00000000 00000000 0000ac32 2**0 + 12 .debug_loc 00001c80 00000000 00000000 0000ab2d 2**0 CONTENTS, READONLY, DEBUGGING - 12 .debug_ranges 00000140 00000000 00000000 0000c914 2**0 + 13 .debug_ranges 00000158 00000000 00000000 0000c7ad 2**0 CONTENTS, READONLY, DEBUGGING Disassembly of section .text: @@ -55,7 +57,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: 6c c1 rjmp .+728 ; 0x306 <__vector_22> + 2c: 66 c1 rjmp .+716 ; 0x2fa <__vector_22> 2e: 1d c0 rjmp .+58 ; 0x6a <__bad_interrupt> 30: 1c c0 rjmp .+56 ; 0x6a <__bad_interrupt> 32: 1b c0 rjmp .+54 ; 0x6a <__bad_interrupt> @@ -78,7 +80,7 @@ Disassembly of section .text: 48: 1d 92 st X+, r1 0000004a <.do_clear_bss_start>: - 4a: af 30 cpi r26, 0x0F ; 15 + 4a: a0 35 cpi r26, 0x50 ; 80 4c: b2 07 cpc r27, r18 4e: e1 f7 brne .-8 ; 0x48 <.do_clear_bss_loop> @@ -86,2138 +88,1685 @@ Disassembly of section .text: 50: 1f e3 ldi r17, 0x3F ; 63 52: a0 e0 ldi r26, 0x00 ; 0 54: bf e3 ldi r27, 0x3F ; 63 - 56: ee ec ldi r30, 0xCE ; 206 - 58: fc e0 ldi r31, 0x0C ; 12 + 56: e9 e6 ldi r30, 0x69 ; 105 + 58: f9 e0 ldi r31, 0x09 ; 9 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: 7c d2 rcall .+1272 ; 0x560
- 68: 30 c6 rjmp .+3168 ; 0xcca <_exit> + 66: 4d d2 rcall .+1178 ; 0x502
+ 68: 7b c4 rjmp .+2294 ; 0x960 <_exit> 0000006a <__bad_interrupt>: 6a: ca cf rjmp .-108 ; 0x0 <__vectors> -0000006c : - return 0; -} - -int gpio_get_level(avr_gpio_ports port, uint8_t pin){ - - switch (port) - 6c: 81 11 cpse r24, r1 - 6e: 0d c0 rjmp .+26 ; 0x8a <__EEPROM_REGION_LENGTH__+0xa> - { - - case GPIO_PORTA: - return (PORTA.IN & (1 << pin)) ? 1 : 0; - 70: 20 91 08 04 lds r18, 0x0408 ; 0x800408 <__RODATA_PM_OFFSET__+0x7f8408> - 74: 30 e0 ldi r19, 0x00 ; 0 - 76: 02 c0 rjmp .+4 ; 0x7c - 78: 35 95 asr r19 - 7a: 27 95 ror r18 - 7c: 6a 95 dec r22 - 7e: e2 f7 brpl .-8 ; 0x78 - 80: 81 e0 ldi r24, 0x01 ; 1 - 82: 20 ff sbrs r18, 0 - 84: 80 e0 ldi r24, 0x00 ; 0 - 86: 90 e0 ldi r25, 0x00 ; 0 - 88: 08 95 ret - break; - - default: - break; - } - return 0; - 8a: 80 e0 ldi r24, 0x00 ; 0 - 8c: 90 e0 ldi r25, 0x00 ; 0 -} - 8e: 08 95 ret - -00000090 : +0000006c : *data = TWI0.MDATA; // Send stop condition TWI0.MCTRLB = TWI_MCMD_STOP_gc; return 0; // Success } - 90: e0 e1 ldi r30, 0x10 ; 16 - 92: f8 e0 ldi r31, 0x08 ; 8 - 94: 84 81 ldd r24, Z+4 ; 0x04 - 96: 88 60 ori r24, 0x08 ; 8 - 98: 84 83 std Z+4, r24 ; 0x04 + 6c: e0 e1 ldi r30, 0x10 ; 16 + 6e: f8 e0 ldi r31, 0x08 ; 8 + 70: 84 81 ldd r24, Z+4 ; 0x04 + 72: 88 60 ori r24, 0x08 ; 8 + 74: 84 83 std Z+4, r24 ; 0x04 + 76: 81 e0 ldi r24, 0x01 ; 1 + 78: 85 83 std Z+5, r24 ; 0x05 + 7a: 08 95 ret + +0000007c : + 7c: 80 93 17 08 sts 0x0817, r24 ; 0x800817 + 80: 80 91 15 08 lds r24, 0x0815 ; 0x800815 + 84: 80 7c andi r24, 0xC0 ; 192 + 86: e1 f3 breq .-8 ; 0x80 <__EEPROM_REGION_LENGTH__> + 88: 90 91 15 08 lds r25, 0x0815 ; 0x800815 + 8c: 89 2f mov r24, r25 + 8e: 80 71 andi r24, 0x10 ; 16 + 90: 94 ff sbrs r25, 4 + 92: 04 c0 rjmp .+8 ; 0x9c <__EEPROM_REGION_LENGTH__+0x1c> + 94: 83 e0 ldi r24, 0x03 ; 3 + 96: 80 93 14 08 sts 0x0814, r24 ; 0x800814 9a: 81 e0 ldi r24, 0x01 ; 1 - 9c: 85 83 std Z+5, r24 ; 0x05 - 9e: 08 95 ret + 9c: 08 95 ret -000000a0 : - a0: 80 93 17 08 sts 0x0817, r24 ; 0x800817 <__RODATA_PM_OFFSET__+0x7f8817> - a4: 80 91 15 08 lds r24, 0x0815 ; 0x800815 <__RODATA_PM_OFFSET__+0x7f8815> - a8: 80 7c andi r24, 0xC0 ; 192 - aa: e1 f3 breq .-8 ; 0xa4 - ac: 90 91 15 08 lds r25, 0x0815 ; 0x800815 <__RODATA_PM_OFFSET__+0x7f8815> - b0: 89 2f mov r24, r25 - b2: 80 71 andi r24, 0x10 ; 16 - b4: 94 ff sbrs r25, 4 - b6: 04 c0 rjmp .+8 ; 0xc0 - b8: 83 e0 ldi r24, 0x03 ; 3 - ba: 80 93 14 08 sts 0x0814, r24 ; 0x800814 <__RODATA_PM_OFFSET__+0x7f8814> - be: 81 e0 ldi r24, 0x01 ; 1 - c0: 08 95 ret - -000000c2 : +0000009e : int i2c_write(uint8_t dev_addr, void *data, uint32_t len){ - c2: cf 92 push r12 - c4: df 92 push r13 - c6: ef 92 push r14 - c8: ff 92 push r15 - ca: cf 93 push r28 - cc: df 93 push r29 - ce: eb 01 movw r28, r22 - d0: 69 01 movw r12, r18 - d2: 7a 01 movw r14, r20 + 9e: cf 92 push r12 + a0: df 92 push r13 + a2: ef 92 push r14 + a4: ff 92 push r15 + a6: cf 93 push r28 + a8: df 93 push r29 + aa: eb 01 movw r28, r22 + ac: 69 01 movw r12, r18 + ae: 7a 01 movw r14, r20 // Check length if(len == 0) return CM_I2C_NOK; - d4: 23 2b or r18, r19 - d6: 24 2b or r18, r20 - d8: 25 2b or r18, r21 - da: 81 f1 breq .+96 ; 0x13c <__DATA_REGION_LENGTH__+0x3c> + b0: 23 2b or r18, r19 + b2: 24 2b or r18, r20 + b4: 25 2b or r18, r21 + b6: 81 f1 breq .+96 ; 0x118 <__DATA_REGION_LENGTH__+0x18> // Make a pointer to data uint8_t *dp = data; // Send register address to I2C device, we would like to read from.. if(i2c_write_devAddr(dev_addr) != CM_I2C_OK)return CM_I2C_NOK; - dc: e1 df rcall .-62 ; 0xa0 - de: 81 11 cpse r24, r1 - e0: 30 c0 rjmp .+96 ; 0x142 <__DATA_REGION_LENGTH__+0x42> + b8: e1 df rcall .-62 ; 0x7c + ba: 81 11 cpse r24, r1 + bc: 30 c0 rjmp .+96 ; 0x11e <__DATA_REGION_LENGTH__+0x1e> do { // Prepare and send new data. TWI0.MDATA = *dp++; - e2: 9e 01 movw r18, r28 - e4: 2f 5f subi r18, 0xFF ; 255 - e6: 3f 4f sbci r19, 0xFF ; 255 - e8: 88 81 ld r24, Y - ea: 80 93 18 08 sts 0x0818, r24 ; 0x800818 <__RODATA_PM_OFFSET__+0x7f8818> + be: 9e 01 movw r18, r28 + c0: 2f 5f subi r18, 0xFF ; 255 + c2: 3f 4f sbci r19, 0xFF ; 255 + c4: 88 81 ld r24, Y + c6: 80 93 18 08 sts 0x0818, r24 ; 0x800818 while (!(TWI0.MSTATUS & TWI_WIF_bm)); - ee: 80 91 15 08 lds r24, 0x0815 ; 0x800815 <__RODATA_PM_OFFSET__+0x7f8815> - f2: 86 ff sbrs r24, 6 - f4: fc cf rjmp .-8 ; 0xee + ca: 80 91 15 08 lds r24, 0x0815 ; 0x800815 + ce: 86 ff sbrs r24, 6 + d0: fc cf rjmp .-8 ; 0xca if (TWI0.MSTATUS & TWI_RXACK_bm) { - f6: 80 91 15 08 lds r24, 0x0815 ; 0x800815 <__RODATA_PM_OFFSET__+0x7f8815> - fa: 84 ff sbrs r24, 4 - fc: 06 c0 rjmp .+12 ; 0x10a <__DATA_REGION_LENGTH__+0xa> + d2: 80 91 15 08 lds r24, 0x0815 ; 0x800815 + d6: 84 ff sbrs r24, 4 + d8: 06 c0 rjmp .+12 ; 0xe6 // NACK received TWI0.MCTRLB = TWI_MCMD_STOP_gc; // Send stop condition - fe: 83 e0 ldi r24, 0x03 ; 3 - 100: 80 93 14 08 sts 0x0814, r24 ; 0x800814 <__RODATA_PM_OFFSET__+0x7f8814> + da: 83 e0 ldi r24, 0x03 ; 3 + dc: 80 93 14 08 sts 0x0814, r24 ; 0x800814 return 1; // Error: NACK received - 104: 81 e0 ldi r24, 0x01 ; 1 - 106: 90 e0 ldi r25, 0x00 ; 0 - 108: 1e c0 rjmp .+60 ; 0x146 <__DATA_REGION_LENGTH__+0x46> + e0: 81 e0 ldi r24, 0x01 ; 1 + e2: 90 e0 ldi r25, 0x00 ; 0 + e4: 1e c0 rjmp .+60 ; 0x122 <__DATA_REGION_LENGTH__+0x22> } // Check for bus error and reset if it happens.. if (TWI0.MSTATUS & (TWI_ARBLOST_bm | TWI_BUSERR_bm)) { - 10a: 80 91 15 08 lds r24, 0x0815 ; 0x800815 <__RODATA_PM_OFFSET__+0x7f8815> - 10e: 8c 70 andi r24, 0x0C ; 12 - 110: 21 f0 breq .+8 ; 0x11a <__DATA_REGION_LENGTH__+0x1a> + e6: 80 91 15 08 lds r24, 0x0815 ; 0x800815 + ea: 8c 70 andi r24, 0x0C ; 12 + ec: 21 f0 breq .+8 ; 0xf6 i2c_reset(); - 112: be df rcall .-132 ; 0x90 + ee: be df rcall .-132 ; 0x6c return 1; - 114: 81 e0 ldi r24, 0x01 ; 1 - 116: 90 e0 ldi r25, 0x00 ; 0 - 118: 16 c0 rjmp .+44 ; 0x146 <__DATA_REGION_LENGTH__+0x46> + f0: 81 e0 ldi r24, 0x01 ; 1 + f2: 90 e0 ldi r25, 0x00 ; 0 + f4: 16 c0 rjmp .+44 ; 0x122 <__DATA_REGION_LENGTH__+0x22> } if (TWI0.MSTATUS & TWI_RXACK_bm) - 11a: 80 91 15 08 lds r24, 0x0815 ; 0x800815 <__RODATA_PM_OFFSET__+0x7f8815> - 11e: 84 fd sbrc r24, 4 - 120: 07 c0 rjmp .+14 ; 0x130 <__DATA_REGION_LENGTH__+0x30> + f6: 80 91 15 08 lds r24, 0x0815 ; 0x800815 + fa: 84 fd sbrc r24, 4 + fc: 07 c0 rjmp .+14 ; 0x10c <__DATA_REGION_LENGTH__+0xc> break; }while(--len); - 122: 81 e0 ldi r24, 0x01 ; 1 - 124: c8 1a sub r12, r24 - 126: d1 08 sbc r13, r1 - 128: e1 08 sbc r14, r1 - 12a: f1 08 sbc r15, r1 + fe: 81 e0 ldi r24, 0x01 ; 1 + 100: c8 1a sub r12, r24 + 102: d1 08 sbc r13, r1 + 104: e1 08 sbc r14, r1 + 106: f1 08 sbc r15, r1 if(i2c_write_devAddr(dev_addr) != CM_I2C_OK)return CM_I2C_NOK; do { // Prepare and send new data. TWI0.MDATA = *dp++; - 12c: e9 01 movw r28, r18 + 108: e9 01 movw r28, r18 } if (TWI0.MSTATUS & TWI_RXACK_bm) break; }while(--len); - 12e: c9 f6 brne .-78 ; 0xe2 + 10a: c9 f6 brne .-78 ; 0xbe // Send stop condition TWI0.MCTRLB = TWI_MCMD_STOP_gc; - 130: 83 e0 ldi r24, 0x03 ; 3 - 132: 80 93 14 08 sts 0x0814, r24 ; 0x800814 <__RODATA_PM_OFFSET__+0x7f8814> + 10c: 83 e0 ldi r24, 0x03 ; 3 + 10e: 80 93 14 08 sts 0x0814, r24 ; 0x800814 return CM_I2C_OK; - 136: 80 e0 ldi r24, 0x00 ; 0 - 138: 90 e0 ldi r25, 0x00 ; 0 - 13a: 05 c0 rjmp .+10 ; 0x146 <__DATA_REGION_LENGTH__+0x46> + 112: 80 e0 ldi r24, 0x00 ; 0 + 114: 90 e0 ldi r25, 0x00 ; 0 + 116: 05 c0 rjmp .+10 ; 0x122 <__DATA_REGION_LENGTH__+0x22> } int i2c_write(uint8_t dev_addr, void *data, uint32_t len){ // Check length if(len == 0) return CM_I2C_NOK; - 13c: 8f ef ldi r24, 0xFF ; 255 - 13e: 9f ef ldi r25, 0xFF ; 255 - 140: 02 c0 rjmp .+4 ; 0x146 <__DATA_REGION_LENGTH__+0x46> + 118: 8f ef ldi r24, 0xFF ; 255 + 11a: 9f ef ldi r25, 0xFF ; 255 + 11c: 02 c0 rjmp .+4 ; 0x122 <__DATA_REGION_LENGTH__+0x22> // Make a pointer to data uint8_t *dp = data; // Send register address to I2C device, we would like to read from.. if(i2c_write_devAddr(dev_addr) != CM_I2C_OK)return CM_I2C_NOK; - 142: 8f ef ldi r24, 0xFF ; 255 - 144: 9f ef ldi r25, 0xFF ; 255 + 11e: 8f ef ldi r24, 0xFF ; 255 + 120: 9f ef ldi r25, 0xFF ; 255 // Send stop condition TWI0.MCTRLB = TWI_MCMD_STOP_gc; return CM_I2C_OK; } - 146: df 91 pop r29 - 148: cf 91 pop r28 - 14a: ff 90 pop r15 - 14c: ef 90 pop r14 - 14e: df 90 pop r13 - 150: cf 90 pop r12 - 152: 08 95 ret + 122: df 91 pop r29 + 124: cf 91 pop r28 + 126: ff 90 pop r15 + 128: ef 90 pop r14 + 12a: df 90 pop r13 + 12c: cf 90 pop r12 + 12e: 08 95 ret -00000154 : +00000130 : int i2c_read(uint8_t dev_addr, void *data, uint32_t len){ - 154: cf 92 push r12 - 156: df 92 push r13 - 158: ef 92 push r14 - 15a: ff 92 push r15 - 15c: cf 93 push r28 - 15e: df 93 push r29 - 160: eb 01 movw r28, r22 - 162: 69 01 movw r12, r18 - 164: 7a 01 movw r14, r20 + 130: cf 92 push r12 + 132: df 92 push r13 + 134: ef 92 push r14 + 136: ff 92 push r15 + 138: cf 93 push r28 + 13a: df 93 push r29 + 13c: eb 01 movw r28, r22 + 13e: 69 01 movw r12, r18 + 140: 7a 01 movw r14, r20 uint8_t *dp = data; if (len == 0) - 166: 23 2b or r18, r19 - 168: 24 2b or r18, r20 - 16a: 25 2b or r18, r21 - 16c: 69 f1 breq .+90 ; 0x1c8 + 142: 23 2b or r18, r19 + 144: 24 2b or r18, r20 + 146: 25 2b or r18, r21 + 148: 69 f1 breq .+90 ; 0x1a4 return 1; // Send register address to I2C device, we would like to read from.. if(i2c_write_devAddr(dev_addr | 1) != CM_I2C_OK)return CM_I2C_NOK; - 16e: 81 60 ori r24, 0x01 ; 1 - 170: 97 df rcall .-210 ; 0xa0 - 172: 88 23 and r24, r24 - 174: c9 f0 breq .+50 ; 0x1a8 - 176: 2b c0 rjmp .+86 ; 0x1ce + 14a: 81 60 ori r24, 0x01 ; 1 + 14c: 97 df rcall .-210 ; 0x7c + 14e: 88 23 and r24, r24 + 150: c9 f0 breq .+50 ; 0x184 + 152: 2b c0 rjmp .+86 ; 0x1aa while (len--) { while (!(TWI0.MSTATUS & (TWI_WIF_bm | TWI_RIF_bm))); - 178: 80 91 15 08 lds r24, 0x0815 ; 0x800815 <__RODATA_PM_OFFSET__+0x7f8815> - 17c: 80 7c andi r24, 0xC0 ; 192 - 17e: e1 f3 breq .-8 ; 0x178 + 154: 80 91 15 08 lds r24, 0x0815 ; 0x800815 + 158: 80 7c andi r24, 0xC0 ; 192 + 15a: e1 f3 breq .-8 ; 0x154 *dp++ = TWI0.MDATA; - 180: ce 01 movw r24, r28 - 182: 01 96 adiw r24, 0x01 ; 1 - 184: 20 91 18 08 lds r18, 0x0818 ; 0x800818 <__RODATA_PM_OFFSET__+0x7f8818> - 188: 28 83 st Y, r18 + 15c: ce 01 movw r24, r28 + 15e: 01 96 adiw r24, 0x01 ; 1 + 160: 20 91 18 08 lds r18, 0x0818 ; 0x800818 + 164: 28 83 st Y, r18 if (len == 0) { - 18a: 41 15 cp r20, r1 - 18c: 51 05 cpc r21, r1 - 18e: 61 05 cpc r22, r1 - 190: 71 05 cpc r23, r1 - 192: 21 f4 brne .+8 ; 0x19c + 166: 41 15 cp r20, r1 + 168: 51 05 cpc r21, r1 + 16a: 61 05 cpc r22, r1 + 16c: 71 05 cpc r23, r1 + 16e: 21 f4 brne .+8 ; 0x178 TWI0.MCTRLB = TWI_ACKACT_NACK_gc; - 194: 24 e0 ldi r18, 0x04 ; 4 - 196: 20 93 14 08 sts 0x0814, r18 ; 0x800814 <__RODATA_PM_OFFSET__+0x7f8814> - 19a: 03 c0 rjmp .+6 ; 0x1a2 + 170: 24 e0 ldi r18, 0x04 ; 4 + 172: 20 93 14 08 sts 0x0814, r18 ; 0x800814 + 176: 03 c0 rjmp .+6 ; 0x17e } else { TWI0.MCTRLB = TWI_ACKACT_ACK_gc | TWI_MCMD_RECVTRANS_gc; - 19c: 22 e0 ldi r18, 0x02 ; 2 - 19e: 20 93 14 08 sts 0x0814, r18 ; 0x800814 <__RODATA_PM_OFFSET__+0x7f8814> - 1a2: 6a 01 movw r12, r20 - 1a4: 7b 01 movw r14, r22 + 178: 22 e0 ldi r18, 0x02 ; 2 + 17a: 20 93 14 08 sts 0x0814, r18 ; 0x800814 + 17e: 6a 01 movw r12, r20 + 180: 7b 01 movw r14, r22 return CM_I2C_OK; } int i2c_read(uint8_t dev_addr, void *data, uint32_t len){ - 1a6: ec 01 movw r28, r24 + 182: ec 01 movw r28, r24 return 1; // Send register address to I2C device, we would like to read from.. if(i2c_write_devAddr(dev_addr | 1) != CM_I2C_OK)return CM_I2C_NOK; while (len--) { - 1a8: b7 01 movw r22, r14 - 1aa: a6 01 movw r20, r12 - 1ac: 41 50 subi r20, 0x01 ; 1 - 1ae: 51 09 sbc r21, r1 - 1b0: 61 09 sbc r22, r1 - 1b2: 71 09 sbc r23, r1 - 1b4: cd 28 or r12, r13 - 1b6: ce 28 or r12, r14 - 1b8: cf 28 or r12, r15 - 1ba: f1 f6 brne .-68 ; 0x178 + 184: b7 01 movw r22, r14 + 186: a6 01 movw r20, r12 + 188: 41 50 subi r20, 0x01 ; 1 + 18a: 51 09 sbc r21, r1 + 18c: 61 09 sbc r22, r1 + 18e: 71 09 sbc r23, r1 + 190: cd 28 or r12, r13 + 192: ce 28 or r12, r14 + 194: cf 28 or r12, r15 + 196: f1 f6 brne .-68 ; 0x154 TWI0.MCTRLB = TWI_ACKACT_ACK_gc | TWI_MCMD_RECVTRANS_gc; } } // Send stop condition TWI0.MCTRLB = TWI_MCMD_STOP_gc; - 1bc: 83 e0 ldi r24, 0x03 ; 3 - 1be: 80 93 14 08 sts 0x0814, r24 ; 0x800814 <__RODATA_PM_OFFSET__+0x7f8814> + 198: 83 e0 ldi r24, 0x03 ; 3 + 19a: 80 93 14 08 sts 0x0814, r24 ; 0x800814 return 0; - 1c2: 80 e0 ldi r24, 0x00 ; 0 - 1c4: 90 e0 ldi r25, 0x00 ; 0 - 1c6: 05 c0 rjmp .+10 ; 0x1d2 + 19e: 80 e0 ldi r24, 0x00 ; 0 + 1a0: 90 e0 ldi r25, 0x00 ; 0 + 1a2: 05 c0 rjmp .+10 ; 0x1ae int i2c_read(uint8_t dev_addr, void *data, uint32_t len){ uint8_t *dp = data; if (len == 0) return 1; - 1c8: 81 e0 ldi r24, 0x01 ; 1 - 1ca: 90 e0 ldi r25, 0x00 ; 0 - 1cc: 02 c0 rjmp .+4 ; 0x1d2 + 1a4: 81 e0 ldi r24, 0x01 ; 1 + 1a6: 90 e0 ldi r25, 0x00 ; 0 + 1a8: 02 c0 rjmp .+4 ; 0x1ae // Send register address to I2C device, we would like to read from.. if(i2c_write_devAddr(dev_addr | 1) != CM_I2C_OK)return CM_I2C_NOK; - 1ce: 8f ef ldi r24, 0xFF ; 255 - 1d0: 9f ef ldi r25, 0xFF ; 255 + 1aa: 8f ef ldi r24, 0xFF ; 255 + 1ac: 9f ef ldi r25, 0xFF ; 255 TWI0.MCTRLB = TWI_MCMD_STOP_gc; return 0; } - 1d2: df 91 pop r29 - 1d4: cf 91 pop r28 - 1d6: ff 90 pop r15 - 1d8: ef 90 pop r14 - 1da: df 90 pop r13 - 1dc: cf 90 pop r12 - 1de: 08 95 ret + 1ae: df 91 pop r29 + 1b0: cf 91 pop r28 + 1b2: ff 90 pop r15 + 1b4: ef 90 pop r14 + 1b6: df 90 pop r13 + 1b8: cf 90 pop r12 + 1ba: 08 95 ret -000001e0 : +000001bc : int i2c_IsDeviceReady(uint8_t dev_addr){ TWI0.MADDR = dev_addr | 0; - 1e0: 80 93 17 08 sts 0x0817, r24 ; 0x800817 <__RODATA_PM_OFFSET__+0x7f8817> + 1bc: 80 93 17 08 sts 0x0817, r24 ; 0x800817 // Wait for acknowledgment while (!(TWI0.MSTATUS & TWI_WIF_bm)); - 1e4: 80 91 15 08 lds r24, 0x0815 ; 0x800815 <__RODATA_PM_OFFSET__+0x7f8815> - 1e8: 86 ff sbrs r24, 6 - 1ea: fc cf rjmp .-8 ; 0x1e4 + 1c0: 80 91 15 08 lds r24, 0x0815 ; 0x800815 + 1c4: 86 ff sbrs r24, 6 + 1c6: fc cf rjmp .-8 ; 0x1c0 if (TWI0.MSTATUS & TWI_RXACK_bm) { - 1ec: 80 91 15 08 lds r24, 0x0815 ; 0x800815 <__RODATA_PM_OFFSET__+0x7f8815> - 1f0: 84 ff sbrs r24, 4 - 1f2: 06 c0 rjmp .+12 ; 0x200 + 1c8: 80 91 15 08 lds r24, 0x0815 ; 0x800815 + 1cc: 84 ff sbrs r24, 4 + 1ce: 06 c0 rjmp .+12 ; 0x1dc // NACK received TWI0.MCTRLB = TWI_MCMD_STOP_gc; // Send stop condition - 1f4: 83 e0 ldi r24, 0x03 ; 3 - 1f6: 80 93 14 08 sts 0x0814, r24 ; 0x800814 <__RODATA_PM_OFFSET__+0x7f8814> + 1d0: 83 e0 ldi r24, 0x03 ; 3 + 1d2: 80 93 14 08 sts 0x0814, r24 ; 0x800814 return 1; // Error: NACK received - 1fa: 81 e0 ldi r24, 0x01 ; 1 - 1fc: 90 e0 ldi r25, 0x00 ; 0 - 1fe: 08 95 ret + 1d6: 81 e0 ldi r24, 0x01 ; 1 + 1d8: 90 e0 ldi r25, 0x00 ; 0 + 1da: 08 95 ret } // Send stop condition TWI0.MCTRLB = TWI_MCMD_STOP_gc; - 200: 83 e0 ldi r24, 0x03 ; 3 - 202: 80 93 14 08 sts 0x0814, r24 ; 0x800814 <__RODATA_PM_OFFSET__+0x7f8814> + 1dc: 83 e0 ldi r24, 0x03 ; 3 + 1de: 80 93 14 08 sts 0x0814, r24 ; 0x800814 return CM_I2C_OK; // Success - 206: 80 e0 ldi r24, 0x00 ; 0 - 208: 90 e0 ldi r25, 0x00 ; 0 + 1e2: 80 e0 ldi r24, 0x00 ; 0 + 1e4: 90 e0 ldi r25, 0x00 ; 0 } - 20a: 08 95 ret + 1e6: 08 95 ret -0000020c : +000001e8 : 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 + 1e8: e0 e0 ldi r30, 0x00 ; 0 + 1ea: f4 e0 ldi r31, 0x04 ; 4 + 1ec: 80 81 ld r24, Z + 1ee: 8b 7f andi r24, 0xFB ; 251 + 1f0: 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 + 1f2: 80 81 ld r24, Z + 1f4: 87 7f andi r24, 0xF7 ; 247 + 1f6: 80 83 st Z, r24 // Set the baud rate for 100kHz with a typical rise time of 300 ns TWI0.MBAUD = 11; - 21c: a0 e1 ldi r26, 0x10 ; 16 - 21e: b8 e0 ldi r27, 0x08 ; 8 - 220: 8b e0 ldi r24, 0x0B ; 11 - 222: 16 96 adiw r26, 0x06 ; 6 - 224: 8c 93 st X, r24 - 226: 16 97 sbiw r26, 0x06 ; 6 + 1f8: a0 e1 ldi r26, 0x10 ; 16 + 1fa: b8 e0 ldi r27, 0x08 ; 8 + 1fc: 8b e0 ldi r24, 0x0B ; 11 + 1fe: 16 96 adiw r26, 0x06 ; 6 + 200: 8c 93 st X, r24 + 202: 16 97 sbiw r26, 0x06 ; 6 // Enable the TWI master and set it to enable operation TWI0.MCTRLA = TWI_ENABLE_bm; - 228: 81 e0 ldi r24, 0x01 ; 1 - 22a: 13 96 adiw r26, 0x03 ; 3 - 22c: 8c 93 st X, r24 - 22e: 13 97 sbiw r26, 0x03 ; 3 + 204: 81 e0 ldi r24, 0x01 ; 1 + 206: 13 96 adiw r26, 0x03 ; 3 + 208: 8c 93 st X, r24 + 20a: 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 + 20c: 15 96 adiw r26, 0x05 ; 5 + 20e: 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 + 210: 88 e0 ldi r24, 0x08 ; 8 + 212: 82 8b std Z+18, r24 ; 0x12 PORTA.PIN3CTRL = PORT_PULLUPEN_bm; - 238: 83 8b std Z+19, r24 ; 0x13 + 214: 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 + 216: 80 e0 ldi r24, 0x00 ; 0 + 218: 90 e0 ldi r25, 0x00 ; 0 + 21a: 08 95 ret -00000240 : +0000021c : int cm_i2c_addDev(cm_i2c_device_t *inst, void *i2c_inst, uint8_t dev_addr){ - 240: ef 92 push r14 - 242: ff 92 push r15 - 244: 0f 93 push r16 - 246: 1f 93 push r17 - 248: cf 93 push r28 - 24a: 8c 01 movw r16, r24 - 24c: 7b 01 movw r14, r22 - 24e: c4 2f mov r28, r20 + 21c: ef 92 push r14 + 21e: ff 92 push r15 + 220: 0f 93 push r16 + 222: 1f 93 push r17 + 224: cf 93 push r28 + 226: 8c 01 movw r16, r24 + 228: 7b 01 movw r14, r22 + 22a: c4 2f mov r28, r20 //if(i2c_inst == NULL) return CM_I2C_NOK; // Check if device responds! if(i2c_IsDeviceReady((dev_addr << 1)) != CM_I2C_OK)return CM_I2C_NO_DEVICE; - 250: 84 2f mov r24, r20 - 252: 88 0f add r24, r24 - 254: c5 df rcall .-118 ; 0x1e0 - 256: 00 97 sbiw r24, 0x00 ; 0 - 258: 49 f4 brne .+18 ; 0x26c + 22c: 84 2f mov r24, r20 + 22e: 88 0f add r24, r24 + 230: c5 df rcall .-118 ; 0x1bc + 232: 00 97 sbiw r24, 0x00 ; 0 + 234: 49 f4 brne .+18 ; 0x248 // add device info if device responds! inst->i2c_transfer_inst = i2c_inst; - 25a: f8 01 movw r30, r16 - 25c: e0 82 st Z, r14 - 25e: f1 82 std Z+1, r15 ; 0x01 + 236: f8 01 movw r30, r16 + 238: e0 82 st Z, r14 + 23a: f1 82 std Z+1, r15 ; 0x01 inst->dev_addr = (dev_addr << 1) & 0b11111110; - 260: 4c 2f mov r20, r28 - 262: 50 e0 ldi r21, 0x00 ; 0 - 264: 44 0f add r20, r20 - 266: 55 1f adc r21, r21 - 268: 42 83 std Z+2, r20 ; 0x02 + 23c: 4c 2f mov r20, r28 + 23e: 50 e0 ldi r21, 0x00 ; 0 + 240: 44 0f add r20, r20 + 242: 55 1f adc r21, r21 + 244: 42 83 std Z+2, r20 ; 0x02 return CM_I2C_OK; - 26a: 02 c0 rjmp .+4 ; 0x270 + 246: 02 c0 rjmp .+4 ; 0x24c 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; - 26c: 8e ef ldi r24, 0xFE ; 254 - 26e: 9f ef ldi r25, 0xFF ; 255 + 248: 8e ef ldi r24, 0xFE ; 254 + 24a: 9f ef ldi r25, 0xFF ; 255 // add device info if device responds! inst->i2c_transfer_inst = i2c_inst; inst->dev_addr = (dev_addr << 1) & 0b11111110; return CM_I2C_OK; } - 270: cf 91 pop r28 - 272: 1f 91 pop r17 - 274: 0f 91 pop r16 - 276: ff 90 pop r15 - 278: ef 90 pop r14 - 27a: 08 95 ret + 24c: cf 91 pop r28 + 24e: 1f 91 pop r17 + 250: 0f 91 pop r16 + 252: ff 90 pop r15 + 254: ef 90 pop r14 + 256: 08 95 ret -0000027c : +00000258 : int cm_i2c_transfer(cm_i2c_device_t *inst, uint8_t *data, uint32_t len, i2c_setget_cm_t set_get){ - 27c: 0f 93 push r16 + 258: 0f 93 push r16 if(inst == NULL) return CM_I2C_NOK; - 27e: 00 97 sbiw r24, 0x00 ; 0 - 280: 81 f0 breq .+32 ; 0x2a2 - 282: fc 01 movw r30, r24 + 25a: 00 97 sbiw r24, 0x00 ; 0 + 25c: 81 f0 breq .+32 ; 0x27e + 25e: fc 01 movw r30, r24 // Check if device responds! //if(i2c_IsDeviceReady(inst->dev_addr) != CM_I2C_OK)return CM_I2C_NO_DEVICE; switch(set_get){ - 284: 00 23 and r16, r16 - 286: 19 f0 breq .+6 ; 0x28e - 288: 01 30 cpi r16, 0x01 ; 1 - 28a: 31 f0 breq .+12 ; 0x298 - 28c: 0d c0 rjmp .+26 ; 0x2a8 + 260: 00 23 and r16, r16 + 262: 19 f0 breq .+6 ; 0x26a + 264: 01 30 cpi r16, 0x01 ; 1 + 266: 31 f0 breq .+12 ; 0x274 + 268: 0d c0 rjmp .+26 ; 0x284 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); - 28e: 82 81 ldd r24, Z+2 ; 0x02 - 290: 61 df rcall .-318 ; 0x154 + 26a: 82 81 ldd r24, Z+2 ; 0x02 + 26c: 61 df rcall .-318 ; 0x130 break; } return CM_I2C_OK; - 292: 80 e0 ldi r24, 0x00 ; 0 - 294: 90 e0 ldi r25, 0x00 ; 0 + 26e: 80 e0 ldi r24, 0x00 ; 0 + 270: 90 e0 ldi r25, 0x00 ; 0 switch(set_get){ case I2C_CM_GET: //HAL_I2C_Master_Receive(inst->i2c_transfer_inst, inst->dev_addr, data, len, 1); i2c_read(inst->dev_addr, data, len); break; - 296: 0a c0 rjmp .+20 ; 0x2ac + 272: 0a c0 rjmp .+20 ; 0x288 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); - 298: 82 81 ldd r24, Z+2 ; 0x02 - 29a: 13 df rcall .-474 ; 0xc2 + 274: 82 81 ldd r24, Z+2 ; 0x02 + 276: 13 df rcall .-474 ; 0x9e break; } return CM_I2C_OK; - 29c: 80 e0 ldi r24, 0x00 ; 0 - 29e: 90 e0 ldi r25, 0x00 ; 0 + 278: 80 e0 ldi r24, 0x00 ; 0 + 27a: 90 e0 ldi r25, 0x00 ; 0 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); break; - 2a0: 05 c0 rjmp .+10 ; 0x2ac + 27c: 05 c0 rjmp .+10 ; 0x288 } 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; - 2a2: 8f ef ldi r24, 0xFF ; 255 - 2a4: 9f ef ldi r25, 0xFF ; 255 - 2a6: 02 c0 rjmp .+4 ; 0x2ac + 27e: 8f ef ldi r24, 0xFF ; 255 + 280: 9f ef ldi r25, 0xFF ; 255 + 282: 02 c0 rjmp .+4 ; 0x288 break; } return CM_I2C_OK; - 2a8: 80 e0 ldi r24, 0x00 ; 0 - 2aa: 90 e0 ldi r25, 0x00 ; 0 + 284: 80 e0 ldi r24, 0x00 ; 0 + 286: 90 e0 ldi r25, 0x00 ; 0 } - 2ac: 0f 91 pop r16 - 2ae: 08 95 ret + 288: 0f 91 pop r16 + 28a: 08 95 ret -000002b0 : - - // Process the received data as needed (e.g., store in a buffer) +0000028c : + + } -void cm_uart_init(){ - 2b0: cf 93 push r28 - 2b2: df 93 push r29 - 2b4: 1f 92 push r1 - 2b6: cd b7 in r28, 0x3d ; 61 - 2b8: de b7 in r29, 0x3e ; 62 +void cm_uart_init(void *rtx_inst, get_UART_Event_fpt uart_rx_evt_fp){ + 28c: cf 93 push r28 + 28e: df 93 push r29 + 290: 1f 92 push r1 + 292: cd b7 in r28, 0x3d ; 61 + 294: de b7 in r29, 0x3e ; 62 + 296: ac 01 movw r20, r24 //For interrupt-driven USART operation, global interrupts must be disabled during the initialization cli(); - 2ba: f8 94 cli + 298: 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; - 2bc: e0 e0 ldi r30, 0x00 ; 0 - 2be: f8 e0 ldi r31, 0x08 ; 8 - 2c0: 8c e6 ldi r24, 0x6C ; 108 - 2c2: 95 e0 ldi r25, 0x05 ; 5 - 2c4: 80 87 std Z+8, r24 ; 0x08 - 2c6: 91 87 std Z+9, r25 ; 0x09 + 29a: e0 e0 ldi r30, 0x00 ; 0 + 29c: f8 e0 ldi r31, 0x08 ; 8 + 29e: 2c e6 ldi r18, 0x6C ; 108 + 2a0: 35 e0 ldi r19, 0x05 ; 5 + 2a2: 20 87 std Z+8, r18 ; 0x08 + 2a4: 31 87 std Z+9, r19 ; 0x09 // Configure USART0 for 8-bit data, no parity, 1 stop bit USART0.CTRLC = USART_CMODE_ASYNCHRONOUS_gc | // Asynchronous mode - 2c8: 83 e0 ldi r24, 0x03 ; 3 - 2ca: 87 83 std Z+7, r24 ; 0x07 + 2a6: 93 e0 ldi r25, 0x03 ; 3 + 2a8: 97 83 std Z+7, r25 ; 0x07 USART_CHSIZE_8BIT_gc | // 8-bit character size USART_PMODE_DISABLED_gc; // No parity // Enable receiver, transmitter, and receive complete interrupt USART0.CTRLB = USART_RXEN_bm | // Enable receiver - 2cc: 80 ec ldi r24, 0xC0 ; 192 - 2ce: 86 83 std Z+6, r24 ; 0x06 + 2aa: 90 ec ldi r25, 0xC0 ; 192 + 2ac: 96 83 std Z+6, r25 ; 0x06 USART_TXEN_bm; // Enable transmitter - - USART0.CTRLA = USART_RXCIE_bm; // Enable receive interrupt - 2d0: 80 e8 ldi r24, 0x80 ; 128 - 2d2: 85 83 std Z+5, r24 ; 0x05 + if((uart_rx_evt_fp != NULL) || (rtx_inst != NULL)){ + 2ae: 61 15 cp r22, r1 + 2b0: 71 05 cpc r23, r1 + 2b2: 11 f4 brne .+4 ; 0x2b8 + 2b4: 45 2b or r20, r21 + 2b6: 39 f0 breq .+14 ; 0x2c6 + // Enable RX interrupt + USART0.CTRLA = USART_RXCIE_bm; // Enable receive interrupt + 2b8: 80 e8 ldi r24, 0x80 ; 128 + 2ba: 80 93 05 08 sts 0x0805, r24 ; 0x800805 + + s_inst = rtx_inst; + uart_rx_evt_fpt = uart_rx_evt_fp; + 2be: 60 93 06 3f sts 0x3F06, r22 ; 0x803f06 <__data_end> + 2c2: 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) { - 2d4: 84 81 ldd r24, Z+4 ; 0x04 - 2d6: 88 23 and r24, r24 - 2d8: 24 f4 brge .+8 ; 0x2e2 + 2c6: 80 91 04 08 lds r24, 0x0804 ; 0x800804 + 2ca: 88 23 and r24, r24 + 2cc: 24 f4 brge .+8 ; 0x2d6 volatile uint8_t dummy = USART0.RXDATAL; // Read RXDATAL to clear the flag - 2da: 80 91 00 08 lds r24, 0x0800 ; 0x800800 <__RODATA_PM_OFFSET__+0x7f8800> - 2de: 89 83 std Y+1, r24 ; 0x01 + 2ce: 80 91 00 08 lds r24, 0x0800 ; 0x800800 + 2d2: 89 83 std Y+1, r24 ; 0x01 (void)dummy; // Silence unused variable warning - 2e0: 89 81 ldd r24, Y+1 ; 0x01 + 2d4: 89 81 ldd r24, Y+1 ; 0x01 } PORTA.DIRSET = (1 << 6); // Set PA1 (TX) as output - 2e2: e0 e0 ldi r30, 0x00 ; 0 - 2e4: f4 e0 ldi r31, 0x04 ; 4 - 2e6: 80 e4 ldi r24, 0x40 ; 64 - 2e8: 81 83 std Z+1, r24 ; 0x01 + 2d6: e0 e0 ldi r30, 0x00 ; 0 + 2d8: f4 e0 ldi r31, 0x04 ; 4 + 2da: 80 e4 ldi r24, 0x40 ; 64 + 2dc: 81 83 std Z+1, r24 ; 0x01 PORTA.DIRCLR = (1 << 7); // Set PA2 (RX) as input - 2ea: 80 e8 ldi r24, 0x80 ; 128 - 2ec: 82 83 std Z+2, r24 ; 0x02 + 2de: 80 e8 ldi r24, 0x80 ; 128 + 2e0: 82 83 std Z+2, r24 ; 0x02 // Enable global interrupts sei(); - 2ee: 78 94 sei + 2e2: 78 94 sei } - 2f0: 0f 90 pop r0 - 2f2: df 91 pop r29 - 2f4: cf 91 pop r28 - 2f6: 08 95 ret + 2e4: 0f 90 pop r0 + 2e6: df 91 pop r29 + 2e8: cf 91 pop r28 + 2ea: 08 95 ret -000002f8 : +000002ec : void cm_uart_send(uint8_t data) { // Wait until the Data Register Empty flag (DREIF) is set, indicating it's ready for new data while (!(USART0.STATUS & USART_DREIF_bm)); - 2f8: 90 91 04 08 lds r25, 0x0804 ; 0x800804 <__RODATA_PM_OFFSET__+0x7f8804> - 2fc: 95 ff sbrs r25, 5 - 2fe: fc cf rjmp .-8 ; 0x2f8 + 2ec: 90 91 04 08 lds r25, 0x0804 ; 0x800804 + 2f0: 95 ff sbrs r25, 5 + 2f2: fc cf rjmp .-8 ; 0x2ec // Load the data into the transmit register USART0.TXDATAL = data; - 300: 80 93 02 08 sts 0x0802, r24 ; 0x800802 <__RODATA_PM_OFFSET__+0x7f8802> - 304: 08 95 ret + 2f4: 80 93 02 08 sts 0x0802, r24 ; 0x800802 + 2f8: 08 95 ret -00000306 <__vector_22>: -#ifdef AVR_ATTINY_402 +000002fa <__vector_22>: #define BAUD_RATE 9600 -extern uint8_t received_data; +static void *s_inst = NULL; + get_UART_Event_fpt uart_rx_evt_fpt = NULL; ISR(USART0_RXC_vect) { - 306: 1f 92 push r1 - 308: 0f 92 push r0 - 30a: 0f b6 in r0, 0x3f ; 63 - 30c: 0f 92 push r0 - 30e: 11 24 eor r1, r1 - 310: 2f 93 push r18 - 312: 3f 93 push r19 - 314: 4f 93 push r20 - 316: 5f 93 push r21 - 318: 6f 93 push r22 - 31a: 7f 93 push r23 - 31c: 8f 93 push r24 - 31e: 9f 93 push r25 - 320: af 93 push r26 - 322: bf 93 push r27 - 324: ef 93 push r30 - 326: ff 93 push r31 + 2fa: 1f 92 push r1 + 2fc: 0f 92 push r0 + 2fe: 0f b6 in r0, 0x3f ; 63 + 300: 0f 92 push r0 + 302: 11 24 eor r1, r1 + 304: 2f 93 push r18 + 306: 3f 93 push r19 + 308: 4f 93 push r20 + 30a: 5f 93 push r21 + 30c: 6f 93 push r22 + 30e: 7f 93 push r23 + 310: 8f 93 push r24 + 312: 9f 93 push r25 + 314: af 93 push r26 + 316: bf 93 push r27 + 318: ef 93 push r30 + 31a: ff 93 push r31 + 31c: cf 93 push r28 + 31e: df 93 push r29 + 320: 1f 92 push r1 + 322: cd b7 in r28, 0x3d ; 61 + 324: de b7 in r29, 0x3e ; 62 // Read received data - received_data = USART0.RXDATAL; - 328: 80 91 00 08 lds r24, 0x0800 ; 0x800800 <__RODATA_PM_OFFSET__+0x7f8800> - 32c: 80 93 06 3f sts 0x3F06, r24 ; 0x803f06 <__data_end> - cm_uart_send(received_data); - 330: e3 df rcall .-58 ; 0x2f8 - - // Process the received data as needed (e.g., store in a buffer) + if(uart_rx_evt_fpt != NULL) uart_rx_evt_fpt(USART0.RXDATAL); + 326: e0 91 06 3f lds r30, 0x3F06 ; 0x803f06 <__data_end> + 32a: f0 91 07 3f lds r31, 0x3F07 ; 0x803f07 <__data_end+0x1> + 32e: 30 97 sbiw r30, 0x00 ; 0 + 330: 19 f0 breq .+6 ; 0x338 <__vector_22+0x3e> + 332: 80 91 00 08 lds r24, 0x0800 ; 0x800800 + 336: 09 95 icall + volatile uint8_t dummy = USART0.RXDATAL; // Read RXDATAL to clear the flag + 338: 80 91 00 08 lds r24, 0x0800 ; 0x800800 + 33c: 89 83 std Y+1, r24 ; 0x01 + cm_uart_send(dummy); + 33e: 89 81 ldd r24, Y+1 ; 0x01 + 340: d5 df rcall .-86 ; 0x2ec + + } - 332: ff 91 pop r31 - 334: ef 91 pop r30 - 336: bf 91 pop r27 - 338: af 91 pop r26 - 33a: 9f 91 pop r25 - 33c: 8f 91 pop r24 - 33e: 7f 91 pop r23 - 340: 6f 91 pop r22 - 342: 5f 91 pop r21 - 344: 4f 91 pop r20 - 346: 3f 91 pop r19 - 348: 2f 91 pop r18 - 34a: 0f 90 pop r0 - 34c: 0f be out 0x3f, r0 ; 63 - 34e: 0f 90 pop r0 - 350: 1f 90 pop r1 - 352: 18 95 reti + 342: 0f 90 pop r0 + 344: df 91 pop r29 + 346: cf 91 pop r28 + 348: ff 91 pop r31 + 34a: ef 91 pop r30 + 34c: bf 91 pop r27 + 34e: af 91 pop r26 + 350: 9f 91 pop r25 + 352: 8f 91 pop r24 + 354: 7f 91 pop r23 + 356: 6f 91 pop r22 + 358: 5f 91 pop r21 + 35a: 4f 91 pop r20 + 35c: 3f 91 pop r19 + 35e: 2f 91 pop r18 + 360: 0f 90 pop r0 + 362: 0f be out 0x3f, r0 ; 63 + 364: 0f 90 pop r0 + 366: 1f 90 pop r1 + 368: 18 95 reti -00000354 : -#include "avr_global_config.h" -#include +0000036a : -static uint8_t isStructValid(storno_xtal_app_t *inst){ +int cm_msgSync_Byte_DecodeSC(uint8_t rx_byte){ - if(inst->si5351_dev == NULL) return 1; - 354: fc 01 movw r30, r24 - 356: 22 81 ldd r18, Z+2 ; 0x02 - 358: 33 81 ldd r19, Z+3 ; 0x03 - 35a: 23 2b or r18, r19 - 35c: 21 f0 breq .+8 ; 0x366 - if(inst == NULL)return 1; - 35e: 89 2b or r24, r25 - 360: 21 f4 brne .+8 ; 0x36a - 362: 81 e0 ldi r24, 0x01 ; 1 - 364: 08 95 ret -#include "avr_global_config.h" -#include - -static uint8_t isStructValid(storno_xtal_app_t *inst){ + static cm_msg_startcode_states_t state = CM_MSGSYNC_STATE_INIT; - if(inst->si5351_dev == NULL) return 1; - 366: 81 e0 ldi r24, 0x01 ; 1 - 368: 08 95 ret - if(inst == NULL)return 1; + switch (state) + 36a: e0 91 41 3f lds r30, 0x3F41 ; 0x803f41 + 36e: e2 30 cpi r30, 0x02 ; 2 + 370: 29 f1 breq .+74 ; 0x3bc + 372: 28 f4 brcc .+10 ; 0x37e + 374: ee 23 and r30, r30 + 376: 41 f0 breq .+16 ; 0x388 + 378: e1 30 cpi r30, 0x01 ; 1 + 37a: 91 f0 breq .+36 ; 0x3a0 + 37c: 40 c0 rjmp .+128 ; 0x3fe + 37e: e3 30 cpi r30, 0x03 ; 3 + 380: 59 f1 breq .+86 ; 0x3d8 + 382: e4 30 cpi r30, 0x04 ; 4 + 384: b9 f1 breq .+110 ; 0x3f4 + 386: 3b c0 rjmp .+118 ; 0x3fe + { + case CM_MSGSYNC_STATE_INIT: + state = (rx_byte == startCode[state])? CM_MSGSYNC_STATE_2 : CM_MSGSYNC_STATE_INIT; + 388: f0 e0 ldi r31, 0x00 ; 0 + 38a: ec 59 subi r30, 0x9C ; 156 + 38c: f6 47 sbci r31, 0x76 ; 118 + 38e: 20 81 ld r18, Z + 390: 91 e0 ldi r25, 0x01 ; 1 + 392: 28 13 cpse r18, r24 + 394: 90 e0 ldi r25, 0x00 ; 0 + 396: 90 93 41 3f sts 0x3F41, r25 ; 0x803f41 + default: + state = CM_MSGSYNC_STATE_INIT; + break; + } + + return 1; + 39a: 81 e0 ldi r24, 0x01 ; 1 + 39c: 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; + 39e: 08 95 ret - return 0; - 36a: 80 e0 ldi r24, 0x00 ; 0 -} - 36c: 08 95 ret + case CM_MSGSYNC_STATE_2: + state = (rx_byte == startCode[state])? CM_MSGSYNC_STATE_3 : CM_MSGSYNC_STATE_INIT; + 3a0: f0 e0 ldi r31, 0x00 ; 0 + 3a2: ec 59 subi r30, 0x9C ; 156 + 3a4: f6 47 sbci r31, 0x76 ; 118 + 3a6: 90 81 ld r25, Z + 3a8: 89 13 cpse r24, r25 + 3aa: 02 c0 rjmp .+4 ; 0x3b0 + 3ac: 82 e0 ldi r24, 0x02 ; 2 + 3ae: 01 c0 rjmp .+2 ; 0x3b2 + 3b0: 80 e0 ldi r24, 0x00 ; 0 + 3b2: 80 93 41 3f sts 0x3F41, r24 ; 0x803f41 + default: + state = CM_MSGSYNC_STATE_INIT; + break; + } + + return 1; + 3b6: 81 e0 ldi r24, 0x01 ; 1 + 3b8: 90 e0 ldi r25, 0x00 ; 0 + state = (rx_byte == startCode[state])? CM_MSGSYNC_STATE_2 : CM_MSGSYNC_STATE_INIT; + break; + + case CM_MSGSYNC_STATE_2: + state = (rx_byte == startCode[state])? CM_MSGSYNC_STATE_3 : CM_MSGSYNC_STATE_INIT; + break; + 3ba: 08 95 ret + + case CM_MSGSYNC_STATE_3: + state = (rx_byte == startCode[state])? CM_MSGSYNC_STATE_4 : CM_MSGSYNC_STATE_INIT; + 3bc: f0 e0 ldi r31, 0x00 ; 0 + 3be: ec 59 subi r30, 0x9C ; 156 + 3c0: f6 47 sbci r31, 0x76 ; 118 + 3c2: 90 81 ld r25, Z + 3c4: 89 13 cpse r24, r25 + 3c6: 02 c0 rjmp .+4 ; 0x3cc + 3c8: 83 e0 ldi r24, 0x03 ; 3 + 3ca: 01 c0 rjmp .+2 ; 0x3ce + 3cc: 80 e0 ldi r24, 0x00 ; 0 + 3ce: 80 93 41 3f sts 0x3F41, r24 ; 0x803f41 + default: + state = CM_MSGSYNC_STATE_INIT; + break; + } + + return 1; + 3d2: 81 e0 ldi r24, 0x01 ; 1 + 3d4: 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; + 3d6: 08 95 ret + + case CM_MSGSYNC_STATE_4: + state = (rx_byte == startCode[state])? CM_MSGSYNC_STATE_5 : CM_MSGSYNC_STATE_INIT; + 3d8: f0 e0 ldi r31, 0x00 ; 0 + 3da: ec 59 subi r30, 0x9C ; 156 + 3dc: f6 47 sbci r31, 0x76 ; 118 + 3de: 90 81 ld r25, Z + 3e0: 89 13 cpse r24, r25 + 3e2: 02 c0 rjmp .+4 ; 0x3e8 + 3e4: 84 e0 ldi r24, 0x04 ; 4 + 3e6: 01 c0 rjmp .+2 ; 0x3ea + 3e8: 80 e0 ldi r24, 0x00 ; 0 + 3ea: 80 93 41 3f sts 0x3F41, r24 ; 0x803f41 + default: + state = CM_MSGSYNC_STATE_INIT; + break; + } + + return 1; + 3ee: 81 e0 ldi r24, 0x01 ; 1 + 3f0: 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; + 3f2: 08 95 ret + + case CM_MSGSYNC_STATE_5: + state = CM_MSGSYNC_STATE_INIT; + 3f4: 10 92 41 3f sts 0x3F41, r1 ; 0x803f41 + return 0; + 3f8: 80 e0 ldi r24, 0x00 ; 0 + 3fa: 90 e0 ldi r25, 0x00 ; 0 + 3fc: 08 95 ret + break; + + default: + state = CM_MSGSYNC_STATE_INIT; + 3fe: 10 92 41 3f sts 0x3F41, r1 ; 0x803f41 + break; + } + + return 1; + 402: 81 e0 ldi r24, 0x01 ; 1 + 404: 90 e0 ldi r25, 0x00 ; 0 + + +} + 406: 08 95 ret -0000036e : +00000408 : + + 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) + 408: 90 91 40 3f lds r25, 0x3F40 ; 0x803f40 + 40c: 93 30 cpi r25, 0x03 ; 3 + 40e: c1 f0 breq .+48 ; 0x440 + 410: 28 f4 brcc .+10 ; 0x41c + 412: 99 23 and r25, r25 + 414: 41 f0 breq .+16 ; 0x426 + 416: 91 30 cpi r25, 0x01 ; 1 + 418: 69 f0 breq .+26 ; 0x434 + 41a: 42 c0 rjmp .+132 ; 0x4a0 + 41c: 94 30 cpi r25, 0x04 ; 4 + 41e: c1 f0 breq .+48 ; 0x450 + 420: 95 30 cpi r25, 0x05 ; 5 + 422: 01 f1 breq .+64 ; 0x464 + 424: 3d c0 rjmp .+122 ; 0x4a0 + { + case CM_MSG_WAIT_FOR_STARTCODE: + if(!cm_msgSync_Byte_DecodeSC(rx_byte)) state = CM_MSG_DECODE_STATE_GET_SIZE_BYTE; + 426: a1 df rcall .-190 ; 0x36a + 428: 89 2b or r24, r25 + 42a: d1 f5 brne .+116 ; 0x4a0 + 42c: 81 e0 ldi r24, 0x01 ; 1 + 42e: 80 93 40 3f sts 0x3F40, r24 ; 0x803f40 + 432: 36 c0 rjmp .+108 ; 0x4a0 + break; + + case CM_MSG_DECODE_STATE_GET_SIZE_BYTE: + msg.msg_data_size = rx_byte; + 434: 80 93 09 3f sts 0x3F09, r24 ; 0x803f09 + state = CM_MSG_DECODE_STATE_GET_CRC_BYTE1; + 438: 83 e0 ldi r24, 0x03 ; 3 + 43a: 80 93 40 3f sts 0x3F40, r24 ; 0x803f40 + + break; + 43e: 30 c0 rjmp .+96 ; 0x4a0 + + case CM_MSG_DECODE_STATE_GET_CRC_BYTE1: + msg.msg_data_crc = (rx_byte << 8) & 0xff00; + 440: e9 e0 ldi r30, 0x09 ; 9 + 442: ff e3 ldi r31, 0x3F ; 63 + 444: 11 82 std Z+1, r1 ; 0x01 + 446: 82 83 std Z+2, r24 ; 0x02 + state = CM_MSG_DECODE_STATE_GET_CRC_BYTE2; + 448: 84 e0 ldi r24, 0x04 ; 4 + 44a: 80 93 40 3f sts 0x3F40, r24 ; 0x803f40 + break; + 44e: 28 c0 rjmp .+80 ; 0x4a0 + + case CM_MSG_DECODE_STATE_GET_CRC_BYTE2: + msg.msg_data_crc |= rx_byte & 0xff; + 450: e9 e0 ldi r30, 0x09 ; 9 + 452: ff e3 ldi r31, 0x3F ; 63 + 454: 21 81 ldd r18, Z+1 ; 0x01 + 456: 32 81 ldd r19, Z+2 ; 0x02 + 458: 28 2b or r18, r24 + 45a: 21 83 std Z+1, r18 ; 0x01 + 45c: 32 83 std Z+2, r19 ; 0x02 + state = CM_MSG_DECODE_STATE_GET_DATA; + 45e: 95 e0 ldi r25, 0x05 ; 5 + 460: 90 93 40 3f sts 0x3F40, r25 ; 0x803f40 + + case CM_MSG_DECODE_STATE_GET_DATA: + msg.msg_data[data_bytes_idx] = rx_byte; + 464: 90 91 08 3f lds r25, 0x3F08 ; 0x803f08 + 468: e9 2f mov r30, r25 + 46a: f0 e0 ldi r31, 0x00 ; 0 + 46c: e7 5f subi r30, 0xF7 ; 247 + 46e: f0 4c sbci r31, 0xC0 ; 192 + 470: 83 83 std Z+3, r24 ; 0x03 + data_bytes_idx++; + 472: 81 e0 ldi r24, 0x01 ; 1 + 474: 89 0f add r24, r25 + 476: 80 93 08 3f sts 0x3F08, r24 ; 0x803f08 + if(data_bytes_idx > msg.msg_data_size){ + 47a: 90 91 09 3f lds r25, 0x3F09 ; 0x803f09 + 47e: 98 17 cp r25, r24 + 480: 78 f4 brcc .+30 ; 0x4a0 + // calculate CRC.. + + // Run function pointer msg evt.. + s_msg_cmplete_evt_fpt(s_msg_cmplete_evt_inst,&(msg.msg_data[0])); + 482: e0 91 44 3f lds r30, 0x3F44 ; 0x803f44 + 486: f0 91 45 3f lds r31, 0x3F45 ; 0x803f45 + 48a: 6c e0 ldi r22, 0x0C ; 12 + 48c: 7f e3 ldi r23, 0x3F ; 63 + 48e: 80 91 42 3f lds r24, 0x3F42 ; 0x803f42 + 492: 90 91 43 3f lds r25, 0x3F43 ; 0x803f43 + 496: 09 95 icall + state = CM_MSG_WAIT_FOR_STARTCODE; + 498: 10 92 40 3f sts 0x3F40, r1 ; 0x803f40 + data_bytes_idx = 0; + 49c: 10 92 08 3f sts 0x3F08, r1 ; 0x803f08 + + } + break; + } + return 0; +} + 4a0: 80 e0 ldi r24, 0x00 ; 0 + 4a2: 90 e0 ldi r25, 0x00 ; 0 + 4a4: 08 95 ret -static void cqm6xx_app_updateOsc(storno_xtal_app_t *inst){ - 36e: cf 93 push r28 - 370: df 93 push r29 - 372: ec 01 movw r28, r24 +000004a6 : + +void cm_MsgCompleteEvt_Register(void *msg_cmplete_evt_inst, Get_msgComplete_Event_fpt msg_cmplete_evt_fp){ - // Check Struct - if(isStructValid(inst) != 0)return; - 374: ef df rcall .-34 ; 0x354 - 376: 81 11 cpse r24, r1 - 378: 32 c0 rjmp .+100 ; 0x3de + if((msg_cmplete_evt_inst == NULL) || (msg_cmplete_evt_fp == NULL))return; + 4a6: 00 97 sbiw r24, 0x00 ; 0 + 4a8: 59 f0 breq .+22 ; 0x4c0 + 4aa: 61 15 cp r22, r1 + 4ac: 71 05 cpc r23, r1 + 4ae: 41 f0 breq .+16 ; 0x4c0 - // 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; - 37a: 89 81 ldd r24, Y+1 ; 0x01 - 37c: 98 81 ld r25, Y - 37e: 89 17 cp r24, r25 - 380: 71 f1 breq .+92 ; 0x3de + s_msg_cmplete_evt_inst = msg_cmplete_evt_inst; + 4b0: 80 93 42 3f sts 0x3F42, r24 ; 0x803f42 + 4b4: 90 93 43 3f sts 0x3F43, r25 ; 0x803f43 + s_msg_cmplete_evt_fpt = msg_cmplete_evt_fp; + 4b8: 60 93 44 3f sts 0x3F44, r22 ; 0x803f44 + 4bc: 70 93 45 3f sts 0x3F45, r23 ; 0x803f45 + 4c0: 08 95 ret + +000004c2 : + } - switch(inst->state_next){ - 382: 81 30 cpi r24, 0x01 ; 1 - 384: 19 f0 breq .+6 ; 0x38c - 386: 82 30 cpi r24, 0x02 ; 2 - 388: b1 f0 breq .+44 ; 0x3b6 - 38a: 29 c0 rjmp .+82 ; 0x3de + // Send status back maybe.. + + //Force state machine to load new settings from eeprom: + inst->state_next = STORNO_APP_PROGRAM_OSC; + 4c2: fc 01 movw r30, r24 + 4c4: 11 82 std Z+1, r1 ; 0x01 + 4c6: 08 95 ret + +000004c8 : + +} + +int uart_rx_event(storno_xtal_app_t *inst, void *rxData){ + + inst->pll_param_ptr = rxData; + 4c8: fc 01 movw r30, r24 + 4ca: 64 83 std Z+4, r22 ; 0x04 + 4cc: 75 83 std Z+5, r23 ; 0x05 + + programPLL_Parameters(inst); + 4ce: f9 df rcall .-14 ; 0x4c2 + + return 0; + +} + 4d0: 80 e0 ldi r24, 0x00 ; 0 + 4d2: 90 e0 ldi r25, 0x00 ; 0 + 4d4: 08 95 ret + +000004d6 : + +void cqm6xx_app_init(storno_xtal_app_t *inst, void *si5351_dev){ + 4d6: cf 93 push r28 + 4d8: df 93 push r29 + + if(si5351_dev == NULL) return; + 4da: 61 15 cp r22, r1 + 4dc: 71 05 cpc r23, r1 + 4de: 71 f0 breq .+28 ; 0x4fc + if(inst == NULL)return; + 4e0: 00 97 sbiw r24, 0x00 ; 0 + 4e2: 61 f0 breq .+24 ; 0x4fc + 4e4: ec 01 movw r28, r24 + + inst->state_next = STORNO_APP_PROGRAM_OSC; + 4e6: 19 82 std Y+1, r1 ; 0x01 + inst->state_now = STORNO_APP_PROGRAM_OSC; + 4e8: 18 82 st Y, r1 + + inst->si5351_dev = si5351_dev; + 4ea: 6a 83 std Y+2, r22 ; 0x02 + 4ec: 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); + 4ee: 64 e6 ldi r22, 0x64 ; 100 + 4f0: 72 e0 ldi r23, 0x02 ; 2 + 4f2: d9 df rcall .-78 ; 0x4a6 + cm_uart_init(inst,(get_UART_Event_fpt)cm_msg_DecodeMsg_Byte); + 4f4: 64 e0 ldi r22, 0x04 ; 4 + 4f6: 72 e0 ldi r23, 0x02 ; 2 + 4f8: ce 01 movw r24, r28 + 4fa: c8 de rcall .-624 ; 0x28c + + 4fc: df 91 pop r29 + 4fe: cf 91 pop r28 + 500: 08 95 ret + +00000502
: + return; + } +} + +int main(void) +{ + 502: cf 93 push r28 + 504: df 93 push r29 + 506: cd b7 in r28, 0x3d ; 61 + 508: de b7 in r29, 0x3e ; 62 + 50a: cb 55 subi r28, 0x5B ; 91 + 50c: d1 09 sbc r29, r1 + 50e: cd bf out 0x3d, r28 ; 61 + 510: de bf out 0x3e, r29 ; 62 + /* Replace with your application code */ + + // Init Periphials + cm_i2c_init(NULL); + 512: 80 e0 ldi r24, 0x00 ; 0 + 514: 90 e0 ldi r25, 0x00 ; 0 + 516: 68 de rcall .-816 ; 0x1e8 + + // Add devices + cm_i2c_device_t si5351_i2c; + cm_i2c_addDev(&si5351_i2c,NULL,0x60); + 518: 40 e6 ldi r20, 0x60 ; 96 + 51a: 60 e0 ldi r22, 0x00 ; 0 + 51c: 70 e0 ldi r23, 0x00 ; 0 + 51e: ce 01 movw r24, r28 + 520: 01 96 adiw r24, 0x01 ; 1 + 522: 7c de rcall .-776 ; 0x21c + + // Init Devices: + si5351_driver si5351_dev; + cm_si5351_init(&si5351_dev,&si5351_i2c,(setGet_I2C_Event_fpt)cm_i2c_transfer); + 524: 4c e2 ldi r20, 0x2C ; 44 + 526: 51 e0 ldi r21, 0x01 ; 1 + 528: be 01 movw r22, r28 + 52a: 6f 5f subi r22, 0xFF ; 255 + 52c: 7f 4f sbci r23, 0xFF ; 255 + 52e: ce 01 movw r24, r28 + 530: 04 96 adiw r24, 0x04 ; 4 + 532: 4b d0 rcall .+150 ; 0x5ca + + cqm6xx_app_init(&storno_xtal_app, &si5351_dev); + 534: be 01 movw r22, r28 + 536: 6c 5f subi r22, 0xFC ; 252 + 538: 7f 4f sbci r23, 0xFF ; 255 + 53a: 86 e4 ldi r24, 0x46 ; 70 + 53c: 9f e3 ldi r25, 0x3F ; 63 + 53e: cb df rcall .-106 ; 0x4d6 #else //round up by default __ticks_dc = (uint32_t)(ceil(fabs(__tmp))); #endif __builtin_avr_delay_cycles(__ticks_dc); - 38c: 81 e4 ldi r24, 0x41 ; 65 - 38e: 93 e0 ldi r25, 0x03 ; 3 - 390: 01 97 sbiw r24, 0x01 ; 1 - 392: f1 f7 brne .-4 ; 0x390 - 394: 00 00 nop - - case STORNO_APP_RX_MODE: - _delay_ms(1); - cm_setOutputEnable(inst->si5351_dev,SI5351_OUTPUT_0,SI5351_OUTPUT_ENABLE); // RX - 396: 40 e0 ldi r20, 0x00 ; 0 - 398: 60 e0 ldi r22, 0x00 ; 0 - 39a: 8a 81 ldd r24, Y+2 ; 0x02 - 39c: 9b 81 ldd r25, Y+3 ; 0x03 - 39e: db d1 rcall .+950 ; 0x756 - 3a0: 81 e4 ldi r24, 0x41 ; 65 - 3a2: 93 e0 ldi r25, 0x03 ; 3 - 3a4: 01 97 sbiw r24, 0x01 ; 1 - 3a6: f1 f7 brne .-4 ; 0x3a4 - 3a8: 00 00 nop - _delay_ms(1); - cm_setOutputEnable(inst->si5351_dev,SI5351_OUTPUT_1,SI5351_OUTPUT_DISABLE); // TX - 3aa: 41 e0 ldi r20, 0x01 ; 1 - 3ac: 61 e0 ldi r22, 0x01 ; 1 - 3ae: 8a 81 ldd r24, Y+2 ; 0x02 - 3b0: 9b 81 ldd r25, Y+3 ; 0x03 - 3b2: d1 d1 rcall .+930 ; 0x756 - - break; - 3b4: 14 c0 rjmp .+40 ; 0x3de - 3b6: 81 e4 ldi r24, 0x41 ; 65 - 3b8: 93 e0 ldi r25, 0x03 ; 3 - 3ba: 01 97 sbiw r24, 0x01 ; 1 - 3bc: f1 f7 brne .-4 ; 0x3ba - 3be: 00 00 nop - - case STORNO_APP_TX_MODE: - _delay_ms(1); - cm_setOutputEnable(inst->si5351_dev,SI5351_OUTPUT_0,SI5351_OUTPUT_DISABLE); // RX - 3c0: 41 e0 ldi r20, 0x01 ; 1 - 3c2: 60 e0 ldi r22, 0x00 ; 0 - 3c4: 8a 81 ldd r24, Y+2 ; 0x02 - 3c6: 9b 81 ldd r25, Y+3 ; 0x03 - 3c8: c6 d1 rcall .+908 ; 0x756 - 3ca: 81 e4 ldi r24, 0x41 ; 65 - 3cc: 93 e0 ldi r25, 0x03 ; 3 - 3ce: 01 97 sbiw r24, 0x01 ; 1 - 3d0: f1 f7 brne .-4 ; 0x3ce - 3d2: 00 00 nop - _delay_ms(1); - cm_setOutputEnable(inst->si5351_dev,SI5351_OUTPUT_1,SI5351_OUTPUT_ENABLE); // TX - 3d4: 40 e0 ldi r20, 0x00 ; 0 - 3d6: 61 e0 ldi r22, 0x01 ; 1 - 3d8: 8a 81 ldd r24, Y+2 ; 0x02 - 3da: 9b 81 ldd r25, Y+3 ; 0x03 - 3dc: bc d1 rcall .+888 ; 0x756 - break; - - } - - -} - 3de: df 91 pop r29 - 3e0: cf 91 pop r28 - 3e2: 08 95 ret + 540: 2a e6 ldi r18, 0x6A ; 106 + 542: 84 e0 ldi r24, 0x04 ; 4 + 544: 91 e0 ldi r25, 0x01 ; 1 + 546: 21 50 subi r18, 0x01 ; 1 + 548: 80 40 sbci r24, 0x00 ; 0 + 54a: 90 40 sbci r25, 0x00 ; 0 + 54c: e1 f7 brne .-8 ; 0x546 + 54e: 00 c0 rjmp .+0 ; 0x550 + 550: f7 cf rjmp .-18 ; 0x540 -000003e4 : -void cqm6xx_app_statemachine(storno_xtal_app_t *inst){ - 3e4: af 92 push r10 - 3e6: bf 92 push r11 - 3e8: cf 92 push r12 - 3ea: df 92 push r13 - 3ec: ef 92 push r14 - 3ee: ff 92 push r15 - 3f0: 0f 93 push r16 - 3f2: 1f 93 push r17 - 3f4: cf 93 push r28 - 3f6: df 93 push r29 - 3f8: ec 01 movw r28, r24 - - // Check Struct - if(isStructValid(inst) != 0)return; - 3fa: ac df rcall .-168 ; 0x354 - 3fc: 81 11 cpse r24, r1 - 3fe: 9a c0 rjmp .+308 ; 0x534 <__LOCK_REGION_LENGTH__+0x134> - - switch (inst->state_next) - 400: 89 81 ldd r24, Y+1 ; 0x01 - 402: 81 30 cpi r24, 0x01 ; 1 - 404: 09 f4 brne .+2 ; 0x408 <__LOCK_REGION_LENGTH__+0x8> - 406: 7f c0 rjmp .+254 ; 0x506 <__LOCK_REGION_LENGTH__+0x106> - 408: 20 f0 brcs .+8 ; 0x412 <__LOCK_REGION_LENGTH__+0x12> - 40a: 82 30 cpi r24, 0x02 ; 2 - 40c: 09 f4 brne .+2 ; 0x410 <__LOCK_REGION_LENGTH__+0x10> - 40e: 87 c0 rjmp .+270 ; 0x51e <__LOCK_REGION_LENGTH__+0x11e> - 410: 91 c0 rjmp .+290 ; 0x534 <__LOCK_REGION_LENGTH__+0x134> - { - case STORNO_APP_PROGRAM_OSC: - // Program PLL values here: - inst->state_now = inst->state_next; - 412: 88 83 st Y, r24 - 414: 81 e4 ldi r24, 0x41 ; 65 - 416: 93 e0 ldi r25, 0x03 ; 3 - 418: 01 97 sbiw r24, 0x01 ; 1 - 41a: f1 f7 brne .-4 ; 0x418 <__LOCK_REGION_LENGTH__+0x18> - 41c: 00 00 nop - _delay_ms(1); - cm_setInputSource(inst->si5351_dev, SI5351_CLK_SOURCE_XTAL); - 41e: 60 e0 ldi r22, 0x00 ; 0 - 420: 8a 81 ldd r24, Y+2 ; 0x02 - 422: 9b 81 ldd r25, Y+3 ; 0x03 - 424: e6 d1 rcall .+972 ; 0x7f2 - 426: 81 e4 ldi r24, 0x41 ; 65 - 428: 93 e0 ldi r25, 0x03 ; 3 - 42a: 01 97 sbiw r24, 0x01 ; 1 - 42c: f1 f7 brne .-4 ; 0x42a <__LOCK_REGION_LENGTH__+0x2a> - 42e: 00 00 nop - _delay_ms(1); - cm_setPllParamRaw(inst->si5351_dev,SI5351_PLL_A, 3395, 11510, 1067099); - 430: 0f 2e mov r0, r31 - 432: fb e5 ldi r31, 0x5B ; 91 - 434: af 2e mov r10, r31 - 436: f8 e4 ldi r31, 0x48 ; 72 - 438: bf 2e mov r11, r31 - 43a: f0 e1 ldi r31, 0x10 ; 16 - 43c: cf 2e mov r12, r31 - 43e: d1 2c mov r13, r1 - 440: f0 2d mov r31, r0 - 442: 16 ef ldi r17, 0xF6 ; 246 - 444: e1 2e mov r14, r17 - 446: 1c e2 ldi r17, 0x2C ; 44 - 448: f1 2e mov r15, r17 - 44a: 00 e0 ldi r16, 0x00 ; 0 - 44c: 10 e0 ldi r17, 0x00 ; 0 - 44e: 23 e4 ldi r18, 0x43 ; 67 - 450: 3d e0 ldi r19, 0x0D ; 13 - 452: 40 e0 ldi r20, 0x00 ; 0 - 454: 50 e0 ldi r21, 0x00 ; 0 - 456: 60 e0 ldi r22, 0x00 ; 0 - 458: 8a 81 ldd r24, Y+2 ; 0x02 - 45a: 9b 81 ldd r25, Y+3 ; 0x03 - 45c: 0d d2 rcall .+1050 ; 0x878 - 45e: 81 e4 ldi r24, 0x41 ; 65 - 460: 93 e0 ldi r25, 0x03 ; 3 - 462: 01 97 sbiw r24, 0x01 ; 1 - 464: f1 f7 brne .-4 ; 0x462 <__LOCK_REGION_LENGTH__+0x62> - 466: 00 00 nop - _delay_ms(1); - cm_setPllParamRaw(inst->si5351_dev,SI5351_PLL_B, 3272, 16130, 1067200); - 468: 0f 2e mov r0, r31 - 46a: f0 ec ldi r31, 0xC0 ; 192 - 46c: af 2e mov r10, r31 - 46e: f8 e4 ldi r31, 0x48 ; 72 - 470: bf 2e mov r11, r31 - 472: f0 e1 ldi r31, 0x10 ; 16 - 474: cf 2e mov r12, r31 - 476: d1 2c mov r13, r1 - 478: f0 2d mov r31, r0 - 47a: 12 e0 ldi r17, 0x02 ; 2 - 47c: e1 2e mov r14, r17 - 47e: 1f e3 ldi r17, 0x3F ; 63 - 480: f1 2e mov r15, r17 - 482: 00 e0 ldi r16, 0x00 ; 0 - 484: 10 e0 ldi r17, 0x00 ; 0 - 486: 28 ec ldi r18, 0xC8 ; 200 - 488: 3c e0 ldi r19, 0x0C ; 12 - 48a: 40 e0 ldi r20, 0x00 ; 0 - 48c: 50 e0 ldi r21, 0x00 ; 0 - 48e: 61 e0 ldi r22, 0x01 ; 1 - 490: 8a 81 ldd r24, Y+2 ; 0x02 - 492: 9b 81 ldd r25, Y+3 ; 0x03 - 494: f1 d1 rcall .+994 ; 0x878 - 496: 81 e4 ldi r24, 0x41 ; 65 - 498: 93 e0 ldi r25, 0x03 ; 3 - 49a: 01 97 sbiw r24, 0x01 ; 1 - 49c: f1 f7 brne .-4 ; 0x49a <__LOCK_REGION_LENGTH__+0x9a> - 49e: 00 00 nop - _delay_ms(1); - cm_setOutputMultiSynth(inst->si5351_dev,SI5351_OUTPUT_0, 18, 0, 1); - 4a0: a1 2c mov r10, r1 - 4a2: b1 2c mov r11, r1 - 4a4: 65 01 movw r12, r10 - 4a6: a3 94 inc r10 - 4a8: e1 2c mov r14, r1 - 4aa: f1 2c mov r15, r1 - 4ac: 87 01 movw r16, r14 - 4ae: 22 e1 ldi r18, 0x12 ; 18 - 4b0: 30 e0 ldi r19, 0x00 ; 0 - 4b2: 40 e0 ldi r20, 0x00 ; 0 - 4b4: 50 e0 ldi r21, 0x00 ; 0 - 4b6: 60 e0 ldi r22, 0x00 ; 0 - 4b8: 8a 81 ldd r24, Y+2 ; 0x02 - 4ba: 9b 81 ldd r25, Y+3 ; 0x03 - 4bc: c1 d0 rcall .+386 ; 0x640 - 4be: 81 e4 ldi r24, 0x41 ; 65 - 4c0: 93 e0 ldi r25, 0x03 ; 3 - 4c2: 01 97 sbiw r24, 0x01 ; 1 - 4c4: f1 f7 brne .-4 ; 0x4c2 <__LOCK_REGION_LENGTH__+0xc2> - 4c6: 00 00 nop - _delay_ms(1); - cm_setOutputMultiSynth(inst->si5351_dev,SI5351_OUTPUT_1, 64, 0, 1); - 4c8: 20 e4 ldi r18, 0x40 ; 64 - 4ca: 30 e0 ldi r19, 0x00 ; 0 - 4cc: 40 e0 ldi r20, 0x00 ; 0 - 4ce: 50 e0 ldi r21, 0x00 ; 0 - 4d0: 61 e0 ldi r22, 0x01 ; 1 - 4d2: 8a 81 ldd r24, Y+2 ; 0x02 - 4d4: 9b 81 ldd r25, Y+3 ; 0x03 - 4d6: b4 d0 rcall .+360 ; 0x640 - 4d8: 81 e4 ldi r24, 0x41 ; 65 - 4da: 93 e0 ldi r25, 0x03 ; 3 - 4dc: 01 97 sbiw r24, 0x01 ; 1 - 4de: f1 f7 brne .-4 ; 0x4dc <__LOCK_REGION_LENGTH__+0xdc> - 4e0: 00 00 nop - _delay_ms(1); - cm_setCLKControl(inst->si5351_dev,SI5351_OUTPUT_0,SI5351_CLK_POWER_UP); - 4e2: 40 e0 ldi r20, 0x00 ; 0 - 4e4: 60 e0 ldi r22, 0x00 ; 0 - 4e6: 8a 81 ldd r24, Y+2 ; 0x02 - 4e8: 9b 81 ldd r25, Y+3 ; 0x03 - 4ea: 55 d1 rcall .+682 ; 0x796 - 4ec: 81 e4 ldi r24, 0x41 ; 65 - 4ee: 93 e0 ldi r25, 0x03 ; 3 - 4f0: 01 97 sbiw r24, 0x01 ; 1 - 4f2: f1 f7 brne .-4 ; 0x4f0 <__LOCK_REGION_LENGTH__+0xf0> - 4f4: 00 00 nop - _delay_ms(1); - cm_setCLKControl(inst->si5351_dev,SI5351_OUTPUT_1,SI5351_CLK_POWER_UP); - 4f6: 40 e0 ldi r20, 0x00 ; 0 - 4f8: 61 e0 ldi r22, 0x01 ; 1 - 4fa: 8a 81 ldd r24, Y+2 ; 0x02 - 4fc: 9b 81 ldd r25, Y+3 ; 0x03 - 4fe: 4b d1 rcall .+662 ; 0x796 - - // if ok, then go to RX mode: - inst->state_next = STORNO_APP_RX_MODE; - 500: 81 e0 ldi r24, 0x01 ; 1 - 502: 89 83 std Y+1, r24 ; 0x01 - break; - 504: 17 c0 rjmp .+46 ; 0x534 <__LOCK_REGION_LENGTH__+0x134> - - - case STORNO_APP_RX_MODE: - // If we just came from another state, then Enable RX osc here.. - cqm6xx_app_updateOsc(inst); - 506: ce 01 movw r24, r28 - 508: 32 df rcall .-412 ; 0x36e - - // Update state now.. - inst->state_now = inst->state_next; - 50a: 89 81 ldd r24, Y+1 ; 0x01 - 50c: 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; - 50e: 63 e0 ldi r22, 0x03 ; 3 - 510: 80 e0 ldi r24, 0x00 ; 0 - 512: ac dd rcall .-1192 ; 0x6c - 514: 01 97 sbiw r24, 0x01 ; 1 - 516: 71 f4 brne .+28 ; 0x534 <__LOCK_REGION_LENGTH__+0x134> - 518: 82 e0 ldi r24, 0x02 ; 2 - 51a: 89 83 std Y+1, r24 ; 0x01 - 51c: 0b c0 rjmp .+22 ; 0x534 <__LOCK_REGION_LENGTH__+0x134> - - break; - - case STORNO_APP_TX_MODE: - // If we just came from another state, then Enable TX osc here.. - cqm6xx_app_updateOsc(inst); - 51e: ce 01 movw r24, r28 - 520: 26 df rcall .-436 ; 0x36e - - // Update state now.. - inst->state_now = inst->state_next; - 522: 89 81 ldd r24, Y+1 ; 0x01 - 524: 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; - 526: 63 e0 ldi r22, 0x03 ; 3 - 528: 80 e0 ldi r24, 0x00 ; 0 - 52a: a0 dd rcall .-1216 ; 0x6c - 52c: 89 2b or r24, r25 - 52e: 11 f4 brne .+4 ; 0x534 <__LOCK_REGION_LENGTH__+0x134> - 530: 81 e0 ldi r24, 0x01 ; 1 - 532: 89 83 std Y+1, r24 ; 0x01 - default: - break; - } - - -} - 534: df 91 pop r29 - 536: cf 91 pop r28 - 538: 1f 91 pop r17 - 53a: 0f 91 pop r16 - 53c: ff 90 pop r15 - 53e: ef 90 pop r14 - 540: df 90 pop r13 - 542: cf 90 pop r12 - 544: bf 90 pop r11 - 546: af 90 pop r10 - 548: 08 95 ret - -0000054a : -void cqm6xx_app_init(storno_xtal_app_t *inst, void *si5351_dev){ - 54a: fc 01 movw r30, r24 - - if(si5351_dev == NULL) return; - 54c: 61 15 cp r22, r1 - 54e: 71 05 cpc r23, r1 - 550: 31 f0 breq .+12 ; 0x55e - if(inst == NULL)return; - 552: 89 2b or r24, r25 - 554: 21 f0 breq .+8 ; 0x55e - - inst->state_next = STORNO_APP_PROGRAM_OSC; - 556: 11 82 std Z+1, r1 ; 0x01 - inst->state_now = STORNO_APP_PROGRAM_OSC; - 558: 10 82 st Z, r1 - - inst->si5351_dev = si5351_dev; - 55a: 62 83 std Z+2, r22 ; 0x02 - 55c: 73 83 std Z+3, r23 ; 0x03 - 55e: 08 95 ret - -00000560
: - - - - -int main(void) -{ - 560: cf 93 push r28 - 562: df 93 push r29 - 564: cd b7 in r28, 0x3d ; 61 - 566: de b7 in r29, 0x3e ; 62 - 568: cb 55 subi r28, 0x5B ; 91 - 56a: d1 09 sbc r29, r1 - 56c: cd bf out 0x3d, r28 ; 61 - 56e: de bf out 0x3e, r29 ; 62 - /* Replace with your application code */ - - // Init Periphials - cm_i2c_init(NULL); - 570: 80 e0 ldi r24, 0x00 ; 0 - 572: 90 e0 ldi r25, 0x00 ; 0 - 574: 4b de rcall .-874 ; 0x20c - - // Add devices - cm_i2c_device_t si5351_i2c; - cm_i2c_addDev(&si5351_i2c,NULL,0x60); - 576: 40 e6 ldi r20, 0x60 ; 96 - 578: 60 e0 ldi r22, 0x00 ; 0 - 57a: 70 e0 ldi r23, 0x00 ; 0 - 57c: ce 01 movw r24, r28 - 57e: 01 96 adiw r24, 0x01 ; 1 - 580: 5f de rcall .-834 ; 0x240 - - // Init Devices: - si5351_driver si5351_dev; - cm_si5351_init(&si5351_dev,&si5351_i2c,(setGet_I2C_Event_fpt)cm_i2c_transfer); - 582: 4e e3 ldi r20, 0x3E ; 62 - 584: 51 e0 ldi r21, 0x01 ; 1 - 586: be 01 movw r22, r28 - 588: 6f 5f subi r22, 0xFF ; 255 - 58a: 7f 4f sbci r23, 0xFF ; 255 - 58c: ce 01 movw r24, r28 - 58e: 04 96 adiw r24, 0x04 ; 4 - 590: d1 d1 rcall .+930 ; 0x934 - - cqm6xx_app_init(&storno_xtal_app, &si5351_dev); - 592: be 01 movw r22, r28 - 594: 6c 5f subi r22, 0xFC ; 252 - 596: 7f 4f sbci r23, 0xFF ; 255 - 598: 87 e0 ldi r24, 0x07 ; 7 - 59a: 9f e3 ldi r25, 0x3F ; 63 - 59c: d6 df rcall .-84 ; 0x54a - - cm_uart_init(); - 59e: 88 de rcall .-752 ; 0x2b0 - - cm_uart_send('r'); - 5a0: 82 e7 ldi r24, 0x72 ; 114 - 5a2: aa de rcall .-684 ; 0x2f8 - cm_uart_send('r'); - 5a4: 82 e7 ldi r24, 0x72 ; 114 - 5a6: a8 de rcall .-688 ; 0x2f8 - - cm_uart_send('\n'); - 5a8: 8a e0 ldi r24, 0x0A ; 10 - 5aa: a6 de rcall .-692 ; 0x2f8 - cm_uart_send('\r'); - 5ac: 8d e0 ldi r24, 0x0D ; 13 - 5ae: a4 de rcall .-696 ; 0x2f8 - - - while (1) - { - - cqm6xx_app_statemachine(&storno_xtal_app); - 5b0: 87 e0 ldi r24, 0x07 ; 7 - 5b2: 9f e3 ldi r25, 0x3F ; 63 - 5b4: 17 df rcall .-466 ; 0x3e4 - 5b6: 2a e6 ldi r18, 0x6A ; 106 - 5b8: 84 e0 ldi r24, 0x04 ; 4 - 5ba: 91 e0 ldi r25, 0x01 ; 1 - 5bc: 21 50 subi r18, 0x01 ; 1 - 5be: 80 40 sbci r24, 0x00 ; 0 - 5c0: 90 40 sbci r25, 0x00 ; 0 - 5c2: e1 f7 brne .-8 ; 0x5bc - 5c4: 00 c0 rjmp .+0 ; 0x5c6 - 5c6: f4 cf rjmp .-24 ; 0x5b0 - -000005c8 : +00000552 : // Read Device Status register: readRegister(inst,0x00, (uint8_t *) &inst->device_data.deviceStatus, sizeof(si5351_deviceStat_t)); return inst->device_data.deviceStatus.REVID; } - 5c8: 8f 92 push r8 - 5ca: 9f 92 push r9 - 5cc: af 92 push r10 - 5ce: bf 92 push r11 - 5d0: cf 92 push r12 - 5d2: df 92 push r13 - 5d4: ef 92 push r14 - 5d6: ff 92 push r15 - 5d8: 0f 93 push r16 - 5da: 1f 93 push r17 - 5dc: cf 93 push r28 - 5de: df 93 push r29 - 5e0: ec 01 movw r28, r24 - 5e2: 86 2e mov r8, r22 - 5e4: 5a 01 movw r10, r20 - 5e6: 68 01 movw r12, r16 - 5e8: 79 01 movw r14, r18 - 5ea: c8 01 movw r24, r16 - 5ec: 01 96 adiw r24, 0x01 ; 1 - 5ee: 43 d2 rcall .+1158 ; 0xa76 - 5f0: 98 2e mov r9, r24 - 5f2: 19 2f mov r17, r25 - 5f4: fc 01 movw r30, r24 - 5f6: 81 92 st Z+, r8 - 5f8: cf 01 movw r24, r30 - 5fa: a6 01 movw r20, r12 - 5fc: b5 01 movw r22, r10 - 5fe: 5c d3 rcall .+1720 ; 0xcb8 - 600: ea 81 ldd r30, Y+2 ; 0x02 - 602: fb 81 ldd r31, Y+3 ; 0x03 - 604: a7 01 movw r20, r14 - 606: 96 01 movw r18, r12 - 608: 2f 5f subi r18, 0xFF ; 255 - 60a: 3f 4f sbci r19, 0xFF ; 255 - 60c: 4f 4f sbci r20, 0xFF ; 255 - 60e: 5f 4f sbci r21, 0xFF ; 255 - 610: 01 e0 ldi r16, 0x01 ; 1 - 612: 69 2d mov r22, r9 - 614: 71 2f mov r23, r17 - 616: 88 81 ld r24, Y - 618: 99 81 ldd r25, Y+1 ; 0x01 - 61a: 09 95 icall - 61c: 89 2d mov r24, r9 - 61e: 91 2f mov r25, r17 - 620: c2 d2 rcall .+1412 ; 0xba6 - 622: 80 e0 ldi r24, 0x00 ; 0 - 624: 90 e0 ldi r25, 0x00 ; 0 - 626: df 91 pop r29 - 628: cf 91 pop r28 - 62a: 1f 91 pop r17 - 62c: 0f 91 pop r16 - 62e: ff 90 pop r15 - 630: ef 90 pop r14 - 632: df 90 pop r13 - 634: cf 90 pop r12 - 636: bf 90 pop r11 - 638: af 90 pop r10 - 63a: 9f 90 pop r9 - 63c: 8f 90 pop r8 - 63e: 08 95 ret + 552: 8f 92 push r8 + 554: 9f 92 push r9 + 556: af 92 push r10 + 558: bf 92 push r11 + 55a: cf 92 push r12 + 55c: df 92 push r13 + 55e: ef 92 push r14 + 560: ff 92 push r15 + 562: 0f 93 push r16 + 564: 1f 93 push r17 + 566: cf 93 push r28 + 568: df 93 push r29 + 56a: ec 01 movw r28, r24 + 56c: 86 2e mov r8, r22 + 56e: 5a 01 movw r10, r20 + 570: 68 01 movw r12, r16 + 572: 79 01 movw r14, r18 + 574: c8 01 movw r24, r16 + 576: 01 96 adiw r24, 0x01 ; 1 + 578: c9 d0 rcall .+402 ; 0x70c + 57a: 98 2e mov r9, r24 + 57c: 19 2f mov r17, r25 + 57e: fc 01 movw r30, r24 + 580: 81 92 st Z+, r8 + 582: cf 01 movw r24, r30 + 584: a6 01 movw r20, r12 + 586: b5 01 movw r22, r10 + 588: e2 d1 rcall .+964 ; 0x94e + 58a: ea 81 ldd r30, Y+2 ; 0x02 + 58c: fb 81 ldd r31, Y+3 ; 0x03 + 58e: a7 01 movw r20, r14 + 590: 96 01 movw r18, r12 + 592: 2f 5f subi r18, 0xFF ; 255 + 594: 3f 4f sbci r19, 0xFF ; 255 + 596: 4f 4f sbci r20, 0xFF ; 255 + 598: 5f 4f sbci r21, 0xFF ; 255 + 59a: 01 e0 ldi r16, 0x01 ; 1 + 59c: 69 2d mov r22, r9 + 59e: 71 2f mov r23, r17 + 5a0: 88 81 ld r24, Y + 5a2: 99 81 ldd r25, Y+1 ; 0x01 + 5a4: 09 95 icall + 5a6: 89 2d mov r24, r9 + 5a8: 91 2f mov r25, r17 + 5aa: 48 d1 rcall .+656 ; 0x83c + 5ac: 80 e0 ldi r24, 0x00 ; 0 + 5ae: 90 e0 ldi r25, 0x00 ; 0 + 5b0: df 91 pop r29 + 5b2: cf 91 pop r28 + 5b4: 1f 91 pop r17 + 5b6: 0f 91 pop r16 + 5b8: ff 90 pop r15 + 5ba: ef 90 pop r14 + 5bc: df 90 pop r13 + 5be: cf 90 pop r12 + 5c0: bf 90 pop r11 + 5c2: af 90 pop r10 + 5c4: 9f 90 pop r9 + 5c6: 8f 90 pop r8 + 5c8: 08 95 ret -00000640 : - 640: af 92 push r10 - 642: bf 92 push r11 - 644: cf 92 push r12 - 646: df 92 push r13 - 648: ef 92 push r14 - 64a: ff 92 push r15 - 64c: 0f 93 push r16 - 64e: 1f 93 push r17 - 650: fc 01 movw r30, r24 - 652: 86 2f mov r24, r22 - 654: ba 01 movw r22, r20 - 656: a9 01 movw r20, r18 - 658: 44 50 subi r20, 0x04 ; 4 - 65a: 51 09 sbc r21, r1 - 65c: 61 09 sbc r22, r1 - 65e: 7e 4f sbci r23, 0xFE ; 254 - 660: 44 0f add r20, r20 - 662: 55 1f adc r21, r21 - 664: 66 1f adc r22, r22 - 666: 77 1f adc r23, r23 - 668: 44 0f add r20, r20 - 66a: 55 1f adc r21, r21 - 66c: 66 1f adc r22, r22 - 66e: 77 1f adc r23, r23 - 670: 44 0f add r20, r20 - 672: 55 1f adc r21, r21 - 674: 66 1f adc r22, r22 - 676: 77 1f adc r23, r23 - 678: 44 0f add r20, r20 - 67a: 55 1f adc r21, r21 - 67c: 66 1f adc r22, r22 - 67e: 77 1f adc r23, r23 - 680: 44 0f add r20, r20 - 682: 55 1f adc r21, r21 - 684: 66 1f adc r22, r22 - 686: 77 1f adc r23, r23 - 688: 44 0f add r20, r20 - 68a: 55 1f adc r21, r21 - 68c: 66 1f adc r22, r22 - 68e: 77 1f adc r23, r23 - 690: 44 0f add r20, r20 - 692: 55 1f adc r21, r21 - 694: 66 1f adc r22, r22 - 696: 77 1f adc r23, r23 - 698: 88 23 and r24, r24 - 69a: 19 f0 breq .+6 ; 0x6a2 - 69c: 81 30 cpi r24, 0x01 ; 1 - 69e: 49 f1 breq .+82 ; 0x6f2 - 6a0: 4f c0 rjmp .+158 ; 0x740 - 6a2: 96 2f mov r25, r22 - 6a4: 93 70 andi r25, 0x03 ; 3 - 6a6: 86 a1 ldd r24, Z+38 ; 0x26 - 6a8: 8c 7f andi r24, 0xFC ; 252 - 6aa: 89 2b or r24, r25 - 6ac: 86 a3 std Z+38, r24 ; 0x26 - 6ae: 57 a3 std Z+39, r21 ; 0x27 - 6b0: 40 a7 std Z+40, r20 ; 0x28 - 6b2: f2 a6 std Z+42, r15 ; 0x2a - 6b4: e3 a6 std Z+43, r14 ; 0x2b - 6b6: d6 01 movw r26, r12 - 6b8: c5 01 movw r24, r10 - 6ba: 07 2e mov r0, r23 - 6bc: 7c e0 ldi r23, 0x0C ; 12 - 6be: b6 95 lsr r27 - 6c0: a7 95 ror r26 - 6c2: 97 95 ror r25 - 6c4: 87 95 ror r24 - 6c6: 7a 95 dec r23 - 6c8: d1 f7 brne .-12 ; 0x6be - 6ca: 70 2d mov r23, r0 - 6cc: 83 70 andi r24, 0x03 ; 3 - 6ce: 82 95 swap r24 - 6d0: 80 7f andi r24, 0xF0 ; 240 - 6d2: 03 70 andi r16, 0x03 ; 3 - 6d4: 80 2b or r24, r16 - 6d6: 81 a7 std Z+41, r24 ; 0x29 - 6d8: b4 a2 std Z+36, r11 ; 0x24 - 6da: a5 a2 std Z+37, r10 ; 0x25 - 6dc: af 01 movw r20, r30 - 6de: 4c 5d subi r20, 0xDC ; 220 - 6e0: 5f 4f sbci r21, 0xFF ; 255 - 6e2: 08 e0 ldi r16, 0x08 ; 8 - 6e4: 10 e0 ldi r17, 0x00 ; 0 - 6e6: 20 e0 ldi r18, 0x00 ; 0 - 6e8: 30 e0 ldi r19, 0x00 ; 0 - 6ea: 6a e2 ldi r22, 0x2A ; 42 - 6ec: cf 01 movw r24, r30 - 6ee: 6c df rcall .-296 ; 0x5c8 - 6f0: 27 c0 rjmp .+78 ; 0x740 - 6f2: 96 2f mov r25, r22 - 6f4: 93 70 andi r25, 0x03 ; 3 - 6f6: 86 a5 ldd r24, Z+46 ; 0x2e - 6f8: 8c 7f andi r24, 0xFC ; 252 - 6fa: 89 2b or r24, r25 - 6fc: 86 a7 std Z+46, r24 ; 0x2e - 6fe: 57 a7 std Z+47, r21 ; 0x2f - 700: 40 ab std Z+48, r20 ; 0x30 - 702: f2 aa std Z+50, r15 ; 0x32 - 704: e3 aa std Z+51, r14 ; 0x33 - 706: d6 01 movw r26, r12 - 708: c5 01 movw r24, r10 - 70a: 07 2e mov r0, r23 - 70c: 7c e0 ldi r23, 0x0C ; 12 - 70e: b6 95 lsr r27 - 710: a7 95 ror r26 - 712: 97 95 ror r25 - 714: 87 95 ror r24 - 716: 7a 95 dec r23 - 718: d1 f7 brne .-12 ; 0x70e - 71a: 70 2d mov r23, r0 - 71c: 83 70 andi r24, 0x03 ; 3 - 71e: 82 95 swap r24 - 720: 80 7f andi r24, 0xF0 ; 240 - 722: 03 70 andi r16, 0x03 ; 3 - 724: 80 2b or r24, r16 - 726: 81 ab std Z+49, r24 ; 0x31 - 728: b4 a6 std Z+44, r11 ; 0x2c - 72a: a5 a6 std Z+45, r10 ; 0x2d - 72c: af 01 movw r20, r30 - 72e: 44 5d subi r20, 0xD4 ; 212 - 730: 5f 4f sbci r21, 0xFF ; 255 - 732: 08 e0 ldi r16, 0x08 ; 8 - 734: 10 e0 ldi r17, 0x00 ; 0 - 736: 20 e0 ldi r18, 0x00 ; 0 - 738: 30 e0 ldi r19, 0x00 ; 0 - 73a: 62 e3 ldi r22, 0x32 ; 50 - 73c: cf 01 movw r24, r30 - 73e: 44 df rcall .-376 ; 0x5c8 - 740: 80 e0 ldi r24, 0x00 ; 0 - 742: 90 e0 ldi r25, 0x00 ; 0 - 744: 1f 91 pop r17 - 746: 0f 91 pop r16 - 748: ff 90 pop r15 - 74a: ef 90 pop r14 - 74c: df 90 pop r13 - 74e: cf 90 pop r12 - 750: bf 90 pop r11 - 752: af 90 pop r10 - 754: 08 95 ret - -00000756 : - 756: 0f 93 push r16 - 758: 1f 93 push r17 - 75a: 66 23 and r22, r22 - 75c: 19 f0 breq .+6 ; 0x764 - 75e: 61 30 cpi r22, 0x01 ; 1 - 760: 39 f0 breq .+14 ; 0x770 - 762: 0b c0 rjmp .+22 ; 0x77a - 764: fc 01 movw r30, r24 - 766: 27 81 ldd r18, Z+7 ; 0x07 - 768: 40 fb bst r20, 0 - 76a: 20 f9 bld r18, 0 - 76c: 27 83 std Z+7, r18 ; 0x07 - 76e: 05 c0 rjmp .+10 ; 0x77a - 770: fc 01 movw r30, r24 - 772: 27 81 ldd r18, Z+7 ; 0x07 - 774: 40 fb bst r20, 0 - 776: 21 f9 bld r18, 1 - 778: 27 83 std Z+7, r18 ; 0x07 - 77a: ac 01 movw r20, r24 - 77c: 49 5f subi r20, 0xF9 ; 249 - 77e: 5f 4f sbci r21, 0xFF ; 255 - 780: 01 e0 ldi r16, 0x01 ; 1 - 782: 10 e0 ldi r17, 0x00 ; 0 - 784: 20 e0 ldi r18, 0x00 ; 0 - 786: 30 e0 ldi r19, 0x00 ; 0 - 788: 63 e0 ldi r22, 0x03 ; 3 - 78a: 1e df rcall .-452 ; 0x5c8 - 78c: 80 e0 ldi r24, 0x00 ; 0 - 78e: 90 e0 ldi r25, 0x00 ; 0 - 790: 1f 91 pop r17 - 792: 0f 91 pop r16 - 794: 08 95 ret - -00000796 : - 796: 0f 93 push r16 - 798: 1f 93 push r17 - 79a: 66 23 and r22, r22 - 79c: 19 f0 breq .+6 ; 0x7a4 - 79e: 61 30 cpi r22, 0x01 ; 1 - 7a0: a1 f0 breq .+40 ; 0x7ca - 7a2: 22 c0 rjmp .+68 ; 0x7e8 - 7a4: fc 01 movw r30, r24 - 7a6: 22 85 ldd r18, Z+10 ; 0x0a - 7a8: 40 fb bst r20, 0 - 7aa: 27 f9 bld r18, 7 - 7ac: 33 85 ldd r19, Z+11 ; 0x0b - 7ae: 3f 7d andi r19, 0xDF ; 223 - 7b0: 33 87 std Z+11, r19 ; 0x0b - 7b2: 2f 64 ori r18, 0x4F ; 79 - 7b4: 22 87 std Z+10, r18 ; 0x0a - 7b6: ac 01 movw r20, r24 - 7b8: 46 5f subi r20, 0xF6 ; 246 - 7ba: 5f 4f sbci r21, 0xFF ; 255 - 7bc: 01 e0 ldi r16, 0x01 ; 1 - 7be: 10 e0 ldi r17, 0x00 ; 0 - 7c0: 20 e0 ldi r18, 0x00 ; 0 - 7c2: 30 e0 ldi r19, 0x00 ; 0 - 7c4: 60 e1 ldi r22, 0x10 ; 16 - 7c6: 00 df rcall .-512 ; 0x5c8 - 7c8: 0f c0 rjmp .+30 ; 0x7e8 - 7ca: fc 01 movw r30, r24 - 7cc: 23 85 ldd r18, Z+11 ; 0x0b - 7ce: 40 fb bst r20, 0 - 7d0: 27 f9 bld r18, 7 - 7d2: 2f 66 ori r18, 0x6F ; 111 - 7d4: 23 87 std Z+11, r18 ; 0x0b - 7d6: ac 01 movw r20, r24 - 7d8: 45 5f subi r20, 0xF5 ; 245 - 7da: 5f 4f sbci r21, 0xFF ; 255 - 7dc: 01 e0 ldi r16, 0x01 ; 1 - 7de: 10 e0 ldi r17, 0x00 ; 0 - 7e0: 20 e0 ldi r18, 0x00 ; 0 - 7e2: 30 e0 ldi r19, 0x00 ; 0 - 7e4: 61 e1 ldi r22, 0x11 ; 17 - 7e6: f0 de rcall .-544 ; 0x5c8 - 7e8: 80 e0 ldi r24, 0x00 ; 0 - 7ea: 90 e0 ldi r25, 0x00 ; 0 - 7ec: 1f 91 pop r17 - 7ee: 0f 91 pop r16 - 7f0: 08 95 ret - -000007f2 : - 7f2: 0f 93 push r16 - 7f4: 1f 93 push r17 - 7f6: 66 23 and r22, r22 - 7f8: 19 f0 breq .+6 ; 0x800 - 7fa: 61 30 cpi r22, 0x01 ; 1 - 7fc: 39 f0 breq .+14 ; 0x80c - 7fe: 0a c0 rjmp .+20 ; 0x814 - 800: fc 01 movw r30, r24 - 802: 21 85 ldd r18, Z+9 ; 0x09 - 804: 2b 7f andi r18, 0xFB ; 251 - 806: 27 7f andi r18, 0xF7 ; 247 - 808: 21 87 std Z+9, r18 ; 0x09 - 80a: 04 c0 rjmp .+8 ; 0x814 - 80c: fc 01 movw r30, r24 - 80e: 21 85 ldd r18, Z+9 ; 0x09 - 810: 24 60 ori r18, 0x04 ; 4 - 812: 21 87 std Z+9, r18 ; 0x09 - 814: ac 01 movw r20, r24 - 816: 47 5f subi r20, 0xF7 ; 247 - 818: 5f 4f sbci r21, 0xFF ; 255 - 81a: 01 e0 ldi r16, 0x01 ; 1 - 81c: 10 e0 ldi r17, 0x00 ; 0 - 81e: 20 e0 ldi r18, 0x00 ; 0 - 820: 30 e0 ldi r19, 0x00 ; 0 - 822: 60 ef ldi r22, 0xF0 ; 240 - 824: d1 de rcall .-606 ; 0x5c8 - 826: 80 e0 ldi r24, 0x00 ; 0 - 828: 90 e0 ldi r25, 0x00 ; 0 - 82a: 1f 91 pop r17 - 82c: 0f 91 pop r16 - 82e: 08 95 ret - -00000830 : - 830: 0f 93 push r16 - 832: 1f 93 push r17 - 834: 31 e0 ldi r19, 0x01 ; 1 - 836: 61 11 cpse r22, r1 - 838: 01 c0 rjmp .+2 ; 0x83c - 83a: 30 e0 ldi r19, 0x00 ; 0 - 83c: fc 01 movw r30, r24 - 83e: e9 5a subi r30, 0xA9 ; 169 - 840: ff 4f sbci r31, 0xFF ; 255 - 842: 20 81 ld r18, Z - 844: 30 fb bst r19, 0 - 846: 25 f9 bld r18, 5 - 848: 20 83 st Z, r18 - 84a: 31 e0 ldi r19, 0x01 ; 1 - 84c: 41 11 cpse r20, r1 - 84e: 01 c0 rjmp .+2 ; 0x852 - 850: 30 e0 ldi r19, 0x00 ; 0 - 852: ac 01 movw r20, r24 - 854: 49 5a subi r20, 0xA9 ; 169 - 856: 5f 4f sbci r21, 0xFF ; 255 - 858: fa 01 movw r30, r20 - 85a: 20 81 ld r18, Z - 85c: 30 fb bst r19, 0 - 85e: 27 f9 bld r18, 7 - 860: 20 83 st Z, r18 - 862: 01 e0 ldi r16, 0x01 ; 1 - 864: 10 e0 ldi r17, 0x00 ; 0 - 866: 20 e0 ldi r18, 0x00 ; 0 - 868: 30 e0 ldi r19, 0x00 ; 0 - 86a: 61 eb ldi r22, 0xB1 ; 177 - 86c: ad de rcall .-678 ; 0x5c8 - 86e: 80 e0 ldi r24, 0x00 ; 0 - 870: 90 e0 ldi r25, 0x00 ; 0 - 872: 1f 91 pop r17 - 874: 0f 91 pop r16 - 876: 08 95 ret - -00000878 : - 878: af 92 push r10 - 87a: bf 92 push r11 - 87c: cf 92 push r12 - 87e: df 92 push r13 - 880: ef 92 push r14 - 882: ff 92 push r15 - 884: 0f 93 push r16 - 886: 1f 93 push r17 - 888: cf 93 push r28 - 88a: df 93 push r29 - 88c: ec 01 movw r28, r24 - 88e: 66 23 and r22, r22 - 890: 19 f0 breq .+6 ; 0x898 - 892: 61 30 cpi r22, 0x01 ; 1 - 894: 01 f1 breq .+64 ; 0x8d6 - 896: 3d c0 rjmp .+122 ; 0x912 - 898: 42 70 andi r20, 0x02 ; 2 - 89a: 8e 89 ldd r24, Y+22 ; 0x16 - 89c: 8c 7f andi r24, 0xFC ; 252 - 89e: 48 2b or r20, r24 - 8a0: 4e 8b std Y+22, r20 ; 0x16 - 8a2: 3f 8b std Y+23, r19 ; 0x17 - 8a4: 28 8f std Y+24, r18 ; 0x18 - 8a6: d8 01 movw r26, r16 - 8a8: c7 01 movw r24, r14 - 8aa: 88 27 eor r24, r24 - 8ac: 99 27 eor r25, r25 - 8ae: af 70 andi r26, 0x0F ; 15 - 8b0: bb 27 eor r27, r27 - 8b2: fa 8e std Y+26, r15 ; 0x1a - 8b4: eb 8e std Y+27, r14 ; 0x1b - 8b6: 8a 2f mov r24, r26 - 8b8: 8f 70 andi r24, 0x0F ; 15 - 8ba: 89 8f std Y+25, r24 ; 0x19 - 8bc: bc 8a std Y+20, r11 ; 0x14 - 8be: ad 8a std Y+21, r10 ; 0x15 - 8c0: 08 e0 ldi r16, 0x08 ; 8 - 8c2: 10 e0 ldi r17, 0x00 ; 0 - 8c4: 20 e0 ldi r18, 0x00 ; 0 - 8c6: 30 e0 ldi r19, 0x00 ; 0 - 8c8: ae 01 movw r20, r28 - 8ca: 4c 5e subi r20, 0xEC ; 236 - 8cc: 5f 4f sbci r21, 0xFF ; 255 - 8ce: 6a e1 ldi r22, 0x1A ; 26 - 8d0: ce 01 movw r24, r28 - 8d2: 7a de rcall .-780 ; 0x5c8 - 8d4: 1e c0 rjmp .+60 ; 0x912 - 8d6: 42 70 andi r20, 0x02 ; 2 - 8d8: 8e 8d ldd r24, Y+30 ; 0x1e - 8da: 8c 7f andi r24, 0xFC ; 252 - 8dc: 48 2b or r20, r24 - 8de: 4e 8f std Y+30, r20 ; 0x1e - 8e0: 3f 8f std Y+31, r19 ; 0x1f - 8e2: 28 a3 std Y+32, r18 ; 0x20 - 8e4: d8 01 movw r26, r16 - 8e6: c7 01 movw r24, r14 - 8e8: 88 27 eor r24, r24 - 8ea: 99 27 eor r25, r25 - 8ec: af 70 andi r26, 0x0F ; 15 - 8ee: bb 27 eor r27, r27 - 8f0: fa a2 std Y+34, r15 ; 0x22 - 8f2: eb a2 std Y+35, r14 ; 0x23 - 8f4: 8a 2f mov r24, r26 - 8f6: 8f 70 andi r24, 0x0F ; 15 - 8f8: 89 a3 std Y+33, r24 ; 0x21 - 8fa: bc 8e std Y+28, r11 ; 0x1c - 8fc: ad 8e std Y+29, r10 ; 0x1d - 8fe: 08 e0 ldi r16, 0x08 ; 8 - 900: 10 e0 ldi r17, 0x00 ; 0 - 902: 20 e0 ldi r18, 0x00 ; 0 - 904: 30 e0 ldi r19, 0x00 ; 0 - 906: ae 01 movw r20, r28 - 908: 44 5e subi r20, 0xE4 ; 228 - 90a: 5f 4f sbci r21, 0xFF ; 255 - 90c: 62 e2 ldi r22, 0x22 ; 34 - 90e: ce 01 movw r24, r28 - 910: 5b de rcall .-842 ; 0x5c8 - 912: 41 e0 ldi r20, 0x01 ; 1 - 914: 61 e0 ldi r22, 0x01 ; 1 - 916: ce 01 movw r24, r28 - 918: 8b df rcall .-234 ; 0x830 - 91a: 80 e0 ldi r24, 0x00 ; 0 - 91c: 90 e0 ldi r25, 0x00 ; 0 - 91e: df 91 pop r29 - 920: cf 91 pop r28 - 922: 1f 91 pop r17 - 924: 0f 91 pop r16 - 926: ff 90 pop r15 - 928: ef 90 pop r14 - 92a: df 90 pop r13 - 92c: cf 90 pop r12 - 92e: bf 90 pop r11 - 930: af 90 pop r10 - 932: 08 95 ret - -00000934 : +000005ca : int cm_si5351_init(si5351_driver *inst, void *i2c_transfer_inst, setGet_I2C_Event_fpt i2c_transfer_evt){ - 934: ef 92 push r14 - 936: ff 92 push r15 - 938: 0f 93 push r16 - 93a: 1f 93 push r17 - 93c: cf 93 push r28 - 93e: df 93 push r29 - 940: 1f 92 push r1 - 942: cd b7 in r28, 0x3d ; 61 - 944: de b7 in r29, 0x3e ; 62 + 5ca: ef 92 push r14 + 5cc: ff 92 push r15 + 5ce: 0f 93 push r16 + 5d0: 1f 93 push r17 + 5d2: cf 93 push r28 + 5d4: df 93 push r29 + 5d6: 1f 92 push r1 + 5d8: cd b7 in r28, 0x3d ; 61 + 5da: de b7 in r29, 0x3e ; 62 if(inst == NULL)return -1; - 946: 00 97 sbiw r24, 0x00 ; 0 - 948: 09 f4 brne .+2 ; 0x94c - 94a: 85 c0 rjmp .+266 ; 0xa56 + 5dc: 00 97 sbiw r24, 0x00 ; 0 + 5de: 09 f4 brne .+2 ; 0x5e2 + 5e0: 85 c0 rjmp .+266 ; 0x6ec if(i2c_transfer_inst == NULL)return -1; - 94c: 61 15 cp r22, r1 - 94e: 71 05 cpc r23, r1 - 950: 09 f4 brne .+2 ; 0x954 - 952: 84 c0 rjmp .+264 ; 0xa5c + 5e2: 61 15 cp r22, r1 + 5e4: 71 05 cpc r23, r1 + 5e6: 09 f4 brne .+2 ; 0x5ea + 5e8: 84 c0 rjmp .+264 ; 0x6f2 if(i2c_transfer_evt == NULL)return -1; - 954: 41 15 cp r20, r1 - 956: 51 05 cpc r21, r1 - 958: 09 f4 brne .+2 ; 0x95c - 95a: 83 c0 rjmp .+262 ; 0xa62 - 95c: 7c 01 movw r14, r24 + 5ea: 41 15 cp r20, r1 + 5ec: 51 05 cpc r21, r1 + 5ee: 09 f4 brne .+2 ; 0x5f2 + 5f0: 83 c0 rjmp .+262 ; 0x6f8 + 5f2: 7c 01 movw r14, r24 inst->i2c_transfer_inst = i2c_transfer_inst; - 95e: dc 01 movw r26, r24 - 960: 6d 93 st X+, r22 - 962: 7c 93 st X, r23 - 964: 11 97 sbiw r26, 0x01 ; 1 + 5f4: dc 01 movw r26, r24 + 5f6: 6d 93 st X+, r22 + 5f8: 7c 93 st X, r23 + 5fa: 11 97 sbiw r26, 0x01 ; 1 inst->i2c_transfer_evt = i2c_transfer_evt; - 966: 12 96 adiw r26, 0x02 ; 2 - 968: 4d 93 st X+, r20 - 96a: 5c 93 st X, r21 - 96c: 13 97 sbiw r26, 0x03 ; 3 + 5fc: 12 96 adiw r26, 0x02 ; 2 + 5fe: 4d 93 st X+, r20 + 600: 5c 93 st X, r21 + 602: 13 97 sbiw r26, 0x03 ; 3 int ret = 0; memset(&(inst->device_data),0x00,sizeof(si5351_data)); - 96e: fc 01 movw r30, r24 - 970: 34 96 adiw r30, 0x04 ; 4 - 972: 84 e5 ldi r24, 0x54 ; 84 - 974: df 01 movw r26, r30 - 976: 1d 92 st X+, r1 - 978: 8a 95 dec r24 - 97a: e9 f7 brne .-6 ; 0x976 + 604: fc 01 movw r30, r24 + 606: 34 96 adiw r30, 0x04 ; 4 + 608: 84 e5 ldi r24, 0x54 ; 84 + 60a: df 01 movw r26, r30 + 60c: 1d 92 st X+, r1 + 60e: 8a 95 dec r24 + 610: e9 f7 brne .-6 ; 0x60c /* Disable all outputs setting CLKx_DIS high */ uint8_t temp = 0xff; - 97c: 8f ef ldi r24, 0xFF ; 255 - 97e: 89 83 std Y+1, r24 ; 0x01 + 612: 8f ef ldi r24, 0xFF ; 255 + 614: 89 83 std Y+1, r24 ; 0x01 writeRegister(inst,SI5351_REG_OUTPUT_ENABLE_CONTROL,&temp,1); - 980: 01 e0 ldi r16, 0x01 ; 1 - 982: 10 e0 ldi r17, 0x00 ; 0 - 984: 20 e0 ldi r18, 0x00 ; 0 - 986: 30 e0 ldi r19, 0x00 ; 0 - 988: ae 01 movw r20, r28 - 98a: 4f 5f subi r20, 0xFF ; 255 - 98c: 5f 4f sbci r21, 0xFF ; 255 - 98e: 63 e0 ldi r22, 0x03 ; 3 - 990: c7 01 movw r24, r14 - 992: 1a de rcall .-972 ; 0x5c8 + 616: 01 e0 ldi r16, 0x01 ; 1 + 618: 10 e0 ldi r17, 0x00 ; 0 + 61a: 20 e0 ldi r18, 0x00 ; 0 + 61c: 30 e0 ldi r19, 0x00 ; 0 + 61e: ae 01 movw r20, r28 + 620: 4f 5f subi r20, 0xFF ; 255 + 622: 5f 4f sbci r21, 0xFF ; 255 + 624: 63 e0 ldi r22, 0x03 ; 3 + 626: c7 01 movw r24, r14 + 628: 94 df rcall .-216 ; 0x552 /* Power down all output drivers */ temp = 0x80; - 994: 80 e8 ldi r24, 0x80 ; 128 - 996: 89 83 std Y+1, r24 ; 0x01 + 62a: 80 e8 ldi r24, 0x80 ; 128 + 62c: 89 83 std Y+1, r24 ; 0x01 writeRegister(inst,SI5351_REG_CLK_0_CONTROL,&temp,1); - 998: 01 e0 ldi r16, 0x01 ; 1 - 99a: 10 e0 ldi r17, 0x00 ; 0 - 99c: 20 e0 ldi r18, 0x00 ; 0 - 99e: 30 e0 ldi r19, 0x00 ; 0 - 9a0: ae 01 movw r20, r28 - 9a2: 4f 5f subi r20, 0xFF ; 255 - 9a4: 5f 4f sbci r21, 0xFF ; 255 - 9a6: 60 e1 ldi r22, 0x10 ; 16 - 9a8: c7 01 movw r24, r14 - 9aa: 0e de rcall .-996 ; 0x5c8 + 62e: 01 e0 ldi r16, 0x01 ; 1 + 630: 10 e0 ldi r17, 0x00 ; 0 + 632: 20 e0 ldi r18, 0x00 ; 0 + 634: 30 e0 ldi r19, 0x00 ; 0 + 636: ae 01 movw r20, r28 + 638: 4f 5f subi r20, 0xFF ; 255 + 63a: 5f 4f sbci r21, 0xFF ; 255 + 63c: 60 e1 ldi r22, 0x10 ; 16 + 63e: c7 01 movw r24, r14 + 640: 88 df rcall .-240 ; 0x552 writeRegister(inst,SI5351_REG_CLK_1_CONTROL,&temp,1); - 9ac: 01 e0 ldi r16, 0x01 ; 1 - 9ae: 10 e0 ldi r17, 0x00 ; 0 - 9b0: 20 e0 ldi r18, 0x00 ; 0 - 9b2: 30 e0 ldi r19, 0x00 ; 0 - 9b4: ae 01 movw r20, r28 - 9b6: 4f 5f subi r20, 0xFF ; 255 - 9b8: 5f 4f sbci r21, 0xFF ; 255 - 9ba: 61 e1 ldi r22, 0x11 ; 17 - 9bc: c7 01 movw r24, r14 - 9be: 04 de rcall .-1016 ; 0x5c8 + 642: 01 e0 ldi r16, 0x01 ; 1 + 644: 10 e0 ldi r17, 0x00 ; 0 + 646: 20 e0 ldi r18, 0x00 ; 0 + 648: 30 e0 ldi r19, 0x00 ; 0 + 64a: ae 01 movw r20, r28 + 64c: 4f 5f subi r20, 0xFF ; 255 + 64e: 5f 4f sbci r21, 0xFF ; 255 + 650: 61 e1 ldi r22, 0x11 ; 17 + 652: c7 01 movw r24, r14 + 654: 7e df rcall .-260 ; 0x552 writeRegister(inst,SI5351_REG_CLK_2_CONTROL,&temp,1); - 9c0: 01 e0 ldi r16, 0x01 ; 1 - 9c2: 10 e0 ldi r17, 0x00 ; 0 - 9c4: 20 e0 ldi r18, 0x00 ; 0 - 9c6: 30 e0 ldi r19, 0x00 ; 0 - 9c8: ae 01 movw r20, r28 - 9ca: 4f 5f subi r20, 0xFF ; 255 - 9cc: 5f 4f sbci r21, 0xFF ; 255 - 9ce: 62 e1 ldi r22, 0x12 ; 18 - 9d0: c7 01 movw r24, r14 - 9d2: fa dd rcall .-1036 ; 0x5c8 + 656: 01 e0 ldi r16, 0x01 ; 1 + 658: 10 e0 ldi r17, 0x00 ; 0 + 65a: 20 e0 ldi r18, 0x00 ; 0 + 65c: 30 e0 ldi r19, 0x00 ; 0 + 65e: ae 01 movw r20, r28 + 660: 4f 5f subi r20, 0xFF ; 255 + 662: 5f 4f sbci r21, 0xFF ; 255 + 664: 62 e1 ldi r22, 0x12 ; 18 + 666: c7 01 movw r24, r14 + 668: 74 df rcall .-280 ; 0x552 writeRegister(inst,SI5351_REG_CLK_3_CONTROL,&temp,1); - 9d4: 01 e0 ldi r16, 0x01 ; 1 - 9d6: 10 e0 ldi r17, 0x00 ; 0 - 9d8: 20 e0 ldi r18, 0x00 ; 0 - 9da: 30 e0 ldi r19, 0x00 ; 0 - 9dc: ae 01 movw r20, r28 - 9de: 4f 5f subi r20, 0xFF ; 255 - 9e0: 5f 4f sbci r21, 0xFF ; 255 - 9e2: 63 e1 ldi r22, 0x13 ; 19 - 9e4: c7 01 movw r24, r14 - 9e6: f0 dd rcall .-1056 ; 0x5c8 + 66a: 01 e0 ldi r16, 0x01 ; 1 + 66c: 10 e0 ldi r17, 0x00 ; 0 + 66e: 20 e0 ldi r18, 0x00 ; 0 + 670: 30 e0 ldi r19, 0x00 ; 0 + 672: ae 01 movw r20, r28 + 674: 4f 5f subi r20, 0xFF ; 255 + 676: 5f 4f sbci r21, 0xFF ; 255 + 678: 63 e1 ldi r22, 0x13 ; 19 + 67a: c7 01 movw r24, r14 + 67c: 6a df rcall .-300 ; 0x552 writeRegister(inst,SI5351_REG_CLK_4_CONTROL,&temp,1); - 9e8: 01 e0 ldi r16, 0x01 ; 1 - 9ea: 10 e0 ldi r17, 0x00 ; 0 - 9ec: 20 e0 ldi r18, 0x00 ; 0 - 9ee: 30 e0 ldi r19, 0x00 ; 0 - 9f0: ae 01 movw r20, r28 - 9f2: 4f 5f subi r20, 0xFF ; 255 - 9f4: 5f 4f sbci r21, 0xFF ; 255 - 9f6: 64 e1 ldi r22, 0x14 ; 20 - 9f8: c7 01 movw r24, r14 - 9fa: e6 dd rcall .-1076 ; 0x5c8 + 67e: 01 e0 ldi r16, 0x01 ; 1 + 680: 10 e0 ldi r17, 0x00 ; 0 + 682: 20 e0 ldi r18, 0x00 ; 0 + 684: 30 e0 ldi r19, 0x00 ; 0 + 686: ae 01 movw r20, r28 + 688: 4f 5f subi r20, 0xFF ; 255 + 68a: 5f 4f sbci r21, 0xFF ; 255 + 68c: 64 e1 ldi r22, 0x14 ; 20 + 68e: c7 01 movw r24, r14 + 690: 60 df rcall .-320 ; 0x552 writeRegister(inst,SI5351_REG_CLK_5_CONTROL,&temp,1); - 9fc: 01 e0 ldi r16, 0x01 ; 1 - 9fe: 10 e0 ldi r17, 0x00 ; 0 - a00: 20 e0 ldi r18, 0x00 ; 0 - a02: 30 e0 ldi r19, 0x00 ; 0 - a04: ae 01 movw r20, r28 - a06: 4f 5f subi r20, 0xFF ; 255 - a08: 5f 4f sbci r21, 0xFF ; 255 - a0a: 65 e1 ldi r22, 0x15 ; 21 - a0c: c7 01 movw r24, r14 - a0e: dc dd rcall .-1096 ; 0x5c8 + 692: 01 e0 ldi r16, 0x01 ; 1 + 694: 10 e0 ldi r17, 0x00 ; 0 + 696: 20 e0 ldi r18, 0x00 ; 0 + 698: 30 e0 ldi r19, 0x00 ; 0 + 69a: ae 01 movw r20, r28 + 69c: 4f 5f subi r20, 0xFF ; 255 + 69e: 5f 4f sbci r21, 0xFF ; 255 + 6a0: 65 e1 ldi r22, 0x15 ; 21 + 6a2: c7 01 movw r24, r14 + 6a4: 56 df rcall .-340 ; 0x552 writeRegister(inst,SI5351_REG_CLK_6_CONTROL,&temp,1); - a10: 01 e0 ldi r16, 0x01 ; 1 - a12: 10 e0 ldi r17, 0x00 ; 0 - a14: 20 e0 ldi r18, 0x00 ; 0 - a16: 30 e0 ldi r19, 0x00 ; 0 - a18: ae 01 movw r20, r28 - a1a: 4f 5f subi r20, 0xFF ; 255 - a1c: 5f 4f sbci r21, 0xFF ; 255 - a1e: 66 e1 ldi r22, 0x16 ; 22 - a20: c7 01 movw r24, r14 - a22: d2 dd rcall .-1116 ; 0x5c8 + 6a6: 01 e0 ldi r16, 0x01 ; 1 + 6a8: 10 e0 ldi r17, 0x00 ; 0 + 6aa: 20 e0 ldi r18, 0x00 ; 0 + 6ac: 30 e0 ldi r19, 0x00 ; 0 + 6ae: ae 01 movw r20, r28 + 6b0: 4f 5f subi r20, 0xFF ; 255 + 6b2: 5f 4f sbci r21, 0xFF ; 255 + 6b4: 66 e1 ldi r22, 0x16 ; 22 + 6b6: c7 01 movw r24, r14 + 6b8: 4c df rcall .-360 ; 0x552 writeRegister(inst,SI5351_REG_CLK_7_CONTROL,&temp,1); - a24: 01 e0 ldi r16, 0x01 ; 1 - a26: 10 e0 ldi r17, 0x00 ; 0 - a28: 20 e0 ldi r18, 0x00 ; 0 - a2a: 30 e0 ldi r19, 0x00 ; 0 - a2c: ae 01 movw r20, r28 - a2e: 4f 5f subi r20, 0xFF ; 255 - a30: 5f 4f sbci r21, 0xFF ; 255 - a32: 67 e1 ldi r22, 0x17 ; 23 - a34: c7 01 movw r24, r14 - a36: c8 dd rcall .-1136 ; 0x5c8 + 6ba: 01 e0 ldi r16, 0x01 ; 1 + 6bc: 10 e0 ldi r17, 0x00 ; 0 + 6be: 20 e0 ldi r18, 0x00 ; 0 + 6c0: 30 e0 ldi r19, 0x00 ; 0 + 6c2: ae 01 movw r20, r28 + 6c4: 4f 5f subi r20, 0xFF ; 255 + 6c6: 5f 4f sbci r21, 0xFF ; 255 + 6c8: 67 e1 ldi r22, 0x17 ; 23 + 6ca: c7 01 movw r24, r14 + 6cc: 42 df rcall .-380 ; 0x552 temp = SI5351_CRYSTAL_LOAD_10PF; - a38: 80 ec ldi r24, 0xC0 ; 192 - a3a: 89 83 std Y+1, r24 ; 0x01 + 6ce: 80 ec ldi r24, 0xC0 ; 192 + 6d0: 89 83 std Y+1, r24 ; 0x01 writeRegister(inst,SI5351_REG_CRYSTAL_LOAD_CAPACITANCE,&temp,1); - a3c: 01 e0 ldi r16, 0x01 ; 1 - a3e: 10 e0 ldi r17, 0x00 ; 0 - a40: 20 e0 ldi r18, 0x00 ; 0 - a42: 30 e0 ldi r19, 0x00 ; 0 - a44: ae 01 movw r20, r28 - a46: 4f 5f subi r20, 0xFF ; 255 - a48: 5f 4f sbci r21, 0xFF ; 255 - a4a: 67 eb ldi r22, 0xB7 ; 183 - a4c: c7 01 movw r24, r14 - a4e: bc dd rcall .-1160 ; 0x5c8 + 6d2: 01 e0 ldi r16, 0x01 ; 1 + 6d4: 10 e0 ldi r17, 0x00 ; 0 + 6d6: 20 e0 ldi r18, 0x00 ; 0 + 6d8: 30 e0 ldi r19, 0x00 ; 0 + 6da: ae 01 movw r20, r28 + 6dc: 4f 5f subi r20, 0xFF ; 255 + 6de: 5f 4f sbci r21, 0xFF ; 255 + 6e0: 67 eb ldi r22, 0xB7 ; 183 + 6e2: c7 01 movw r24, r14 + 6e4: 36 df rcall .-404 ; 0x552 return ret; - a50: 80 e0 ldi r24, 0x00 ; 0 - a52: 90 e0 ldi r25, 0x00 ; 0 - a54: 08 c0 rjmp .+16 ; 0xa66 + 6e6: 80 e0 ldi r24, 0x00 ; 0 + 6e8: 90 e0 ldi r25, 0x00 ; 0 + 6ea: 08 c0 rjmp .+16 ; 0x6fc 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; - a56: 8f ef ldi r24, 0xFF ; 255 - a58: 9f ef ldi r25, 0xFF ; 255 - a5a: 05 c0 rjmp .+10 ; 0xa66 + 6ec: 8f ef ldi r24, 0xFF ; 255 + 6ee: 9f ef ldi r25, 0xFF ; 255 + 6f0: 05 c0 rjmp .+10 ; 0x6fc if(i2c_transfer_inst == NULL)return -1; - a5c: 8f ef ldi r24, 0xFF ; 255 - a5e: 9f ef ldi r25, 0xFF ; 255 - a60: 02 c0 rjmp .+4 ; 0xa66 + 6f2: 8f ef ldi r24, 0xFF ; 255 + 6f4: 9f ef ldi r25, 0xFF ; 255 + 6f6: 02 c0 rjmp .+4 ; 0x6fc if(i2c_transfer_evt == NULL)return -1; - a62: 8f ef ldi r24, 0xFF ; 255 - a64: 9f ef ldi r25, 0xFF ; 255 + 6f8: 8f ef ldi r24, 0xFF ; 255 + 6fa: 9f ef ldi r25, 0xFF ; 255 writeRegister(inst,SI5351_REG_CRYSTAL_LOAD_CAPACITANCE,&temp,1); return ret; } - a66: 0f 90 pop r0 - a68: df 91 pop r29 - a6a: cf 91 pop r28 - a6c: 1f 91 pop r17 - a6e: 0f 91 pop r16 - a70: ff 90 pop r15 - a72: ef 90 pop r14 - a74: 08 95 ret + 6fc: 0f 90 pop r0 + 6fe: df 91 pop r29 + 700: cf 91 pop r28 + 702: 1f 91 pop r17 + 704: 0f 91 pop r16 + 706: ff 90 pop r15 + 708: ef 90 pop r14 + 70a: 08 95 ret -00000a76 : - a76: 0f 93 push r16 - a78: 1f 93 push r17 - a7a: cf 93 push r28 - a7c: df 93 push r29 - a7e: 82 30 cpi r24, 0x02 ; 2 - a80: 91 05 cpc r25, r1 - a82: 10 f4 brcc .+4 ; 0xa88 - a84: 82 e0 ldi r24, 0x02 ; 2 - a86: 90 e0 ldi r25, 0x00 ; 0 - a88: e0 91 0d 3f lds r30, 0x3F0D ; 0x803f0d <__flp> - a8c: f0 91 0e 3f lds r31, 0x3F0E ; 0x803f0e <__flp+0x1> - a90: 20 e0 ldi r18, 0x00 ; 0 - a92: 30 e0 ldi r19, 0x00 ; 0 - a94: a0 e0 ldi r26, 0x00 ; 0 - a96: b0 e0 ldi r27, 0x00 ; 0 - a98: 30 97 sbiw r30, 0x00 ; 0 - a9a: 19 f1 breq .+70 ; 0xae2 - a9c: 40 81 ld r20, Z - a9e: 51 81 ldd r21, Z+1 ; 0x01 - aa0: 02 81 ldd r16, Z+2 ; 0x02 - aa2: 13 81 ldd r17, Z+3 ; 0x03 - aa4: 48 17 cp r20, r24 - aa6: 59 07 cpc r21, r25 - aa8: c8 f0 brcs .+50 ; 0xadc - aaa: 84 17 cp r24, r20 - aac: 95 07 cpc r25, r21 - aae: 69 f4 brne .+26 ; 0xaca - ab0: 10 97 sbiw r26, 0x00 ; 0 - ab2: 31 f0 breq .+12 ; 0xac0 - ab4: 12 96 adiw r26, 0x02 ; 2 - ab6: 0c 93 st X, r16 - ab8: 12 97 sbiw r26, 0x02 ; 2 - aba: 13 96 adiw r26, 0x03 ; 3 - abc: 1c 93 st X, r17 - abe: 27 c0 rjmp .+78 ; 0xb0e - ac0: 00 93 0d 3f sts 0x3F0D, r16 ; 0x803f0d <__flp> - ac4: 10 93 0e 3f sts 0x3F0E, r17 ; 0x803f0e <__flp+0x1> - ac8: 22 c0 rjmp .+68 ; 0xb0e - aca: 21 15 cp r18, r1 - acc: 31 05 cpc r19, r1 - ace: 19 f0 breq .+6 ; 0xad6 - ad0: 42 17 cp r20, r18 - ad2: 53 07 cpc r21, r19 - ad4: 18 f4 brcc .+6 ; 0xadc - ad6: 9a 01 movw r18, r20 - ad8: bd 01 movw r22, r26 - ada: ef 01 movw r28, r30 - adc: df 01 movw r26, r30 - ade: f8 01 movw r30, r16 - ae0: db cf rjmp .-74 ; 0xa98 - ae2: 21 15 cp r18, r1 - ae4: 31 05 cpc r19, r1 - ae6: f9 f0 breq .+62 ; 0xb26 - ae8: 28 1b sub r18, r24 - aea: 39 0b sbc r19, r25 - aec: 24 30 cpi r18, 0x04 ; 4 - aee: 31 05 cpc r19, r1 - af0: 80 f4 brcc .+32 ; 0xb12 - af2: 8a 81 ldd r24, Y+2 ; 0x02 - af4: 9b 81 ldd r25, Y+3 ; 0x03 - af6: 61 15 cp r22, r1 - af8: 71 05 cpc r23, r1 - afa: 21 f0 breq .+8 ; 0xb04 - afc: fb 01 movw r30, r22 - afe: 82 83 std Z+2, r24 ; 0x02 - b00: 93 83 std Z+3, r25 ; 0x03 - b02: 04 c0 rjmp .+8 ; 0xb0c - b04: 80 93 0d 3f sts 0x3F0D, r24 ; 0x803f0d <__flp> - b08: 90 93 0e 3f sts 0x3F0E, r25 ; 0x803f0e <__flp+0x1> - b0c: fe 01 movw r30, r28 - b0e: 32 96 adiw r30, 0x02 ; 2 - b10: 44 c0 rjmp .+136 ; 0xb9a - b12: fe 01 movw r30, r28 - b14: e2 0f add r30, r18 - b16: f3 1f adc r31, r19 - b18: 81 93 st Z+, r24 - b1a: 91 93 st Z+, r25 - b1c: 22 50 subi r18, 0x02 ; 2 - b1e: 31 09 sbc r19, r1 - b20: 28 83 st Y, r18 - b22: 39 83 std Y+1, r19 ; 0x01 - b24: 3a c0 rjmp .+116 ; 0xb9a - b26: 20 91 0b 3f lds r18, 0x3F0B ; 0x803f0b <__brkval> - b2a: 30 91 0c 3f lds r19, 0x3F0C ; 0x803f0c <__brkval+0x1> - b2e: 23 2b or r18, r19 - b30: 41 f4 brne .+16 ; 0xb42 - b32: 20 91 02 3f lds r18, 0x3F02 ; 0x803f02 <__malloc_heap_start> - b36: 30 91 03 3f lds r19, 0x3F03 ; 0x803f03 <__malloc_heap_start+0x1> - b3a: 20 93 0b 3f sts 0x3F0B, r18 ; 0x803f0b <__brkval> - b3e: 30 93 0c 3f sts 0x3F0C, r19 ; 0x803f0c <__brkval+0x1> - b42: 20 91 00 3f lds r18, 0x3F00 ; 0x803f00 <__DATA_REGION_ORIGIN__> - b46: 30 91 01 3f lds r19, 0x3F01 ; 0x803f01 <__DATA_REGION_ORIGIN__+0x1> - b4a: 21 15 cp r18, r1 - b4c: 31 05 cpc r19, r1 - b4e: 41 f4 brne .+16 ; 0xb60 - b50: 2d b7 in r18, 0x3d ; 61 - b52: 3e b7 in r19, 0x3e ; 62 - b54: 40 91 04 3f lds r20, 0x3F04 ; 0x803f04 <__malloc_margin> - b58: 50 91 05 3f lds r21, 0x3F05 ; 0x803f05 <__malloc_margin+0x1> - b5c: 24 1b sub r18, r20 - b5e: 35 0b sbc r19, r21 - b60: e0 91 0b 3f lds r30, 0x3F0B ; 0x803f0b <__brkval> - b64: f0 91 0c 3f lds r31, 0x3F0C ; 0x803f0c <__brkval+0x1> - b68: e2 17 cp r30, r18 - b6a: f3 07 cpc r31, r19 - b6c: a0 f4 brcc .+40 ; 0xb96 - b6e: 2e 1b sub r18, r30 - b70: 3f 0b sbc r19, r31 - b72: 28 17 cp r18, r24 - b74: 39 07 cpc r19, r25 - b76: 78 f0 brcs .+30 ; 0xb96 - b78: ac 01 movw r20, r24 - b7a: 4e 5f subi r20, 0xFE ; 254 - b7c: 5f 4f sbci r21, 0xFF ; 255 - b7e: 24 17 cp r18, r20 - b80: 35 07 cpc r19, r21 - b82: 48 f0 brcs .+18 ; 0xb96 - b84: 4e 0f add r20, r30 - b86: 5f 1f adc r21, r31 - b88: 40 93 0b 3f sts 0x3F0B, r20 ; 0x803f0b <__brkval> - b8c: 50 93 0c 3f sts 0x3F0C, r21 ; 0x803f0c <__brkval+0x1> - b90: 81 93 st Z+, r24 - b92: 91 93 st Z+, r25 - b94: 02 c0 rjmp .+4 ; 0xb9a - b96: e0 e0 ldi r30, 0x00 ; 0 - b98: f0 e0 ldi r31, 0x00 ; 0 - b9a: cf 01 movw r24, r30 - b9c: df 91 pop r29 - b9e: cf 91 pop r28 - ba0: 1f 91 pop r17 - ba2: 0f 91 pop r16 - ba4: 08 95 ret +0000070c : + 70c: 0f 93 push r16 + 70e: 1f 93 push r17 + 710: cf 93 push r28 + 712: df 93 push r29 + 714: 82 30 cpi r24, 0x02 ; 2 + 716: 91 05 cpc r25, r1 + 718: 10 f4 brcc .+4 ; 0x71e + 71a: 82 e0 ldi r24, 0x02 ; 2 + 71c: 90 e0 ldi r25, 0x00 ; 0 + 71e: e0 91 4e 3f lds r30, 0x3F4E ; 0x803f4e <__flp> + 722: f0 91 4f 3f lds r31, 0x3F4F ; 0x803f4f <__flp+0x1> + 726: 20 e0 ldi r18, 0x00 ; 0 + 728: 30 e0 ldi r19, 0x00 ; 0 + 72a: a0 e0 ldi r26, 0x00 ; 0 + 72c: b0 e0 ldi r27, 0x00 ; 0 + 72e: 30 97 sbiw r30, 0x00 ; 0 + 730: 19 f1 breq .+70 ; 0x778 + 732: 40 81 ld r20, Z + 734: 51 81 ldd r21, Z+1 ; 0x01 + 736: 02 81 ldd r16, Z+2 ; 0x02 + 738: 13 81 ldd r17, Z+3 ; 0x03 + 73a: 48 17 cp r20, r24 + 73c: 59 07 cpc r21, r25 + 73e: c8 f0 brcs .+50 ; 0x772 + 740: 84 17 cp r24, r20 + 742: 95 07 cpc r25, r21 + 744: 69 f4 brne .+26 ; 0x760 + 746: 10 97 sbiw r26, 0x00 ; 0 + 748: 31 f0 breq .+12 ; 0x756 + 74a: 12 96 adiw r26, 0x02 ; 2 + 74c: 0c 93 st X, r16 + 74e: 12 97 sbiw r26, 0x02 ; 2 + 750: 13 96 adiw r26, 0x03 ; 3 + 752: 1c 93 st X, r17 + 754: 27 c0 rjmp .+78 ; 0x7a4 + 756: 00 93 4e 3f sts 0x3F4E, r16 ; 0x803f4e <__flp> + 75a: 10 93 4f 3f sts 0x3F4F, r17 ; 0x803f4f <__flp+0x1> + 75e: 22 c0 rjmp .+68 ; 0x7a4 + 760: 21 15 cp r18, r1 + 762: 31 05 cpc r19, r1 + 764: 19 f0 breq .+6 ; 0x76c + 766: 42 17 cp r20, r18 + 768: 53 07 cpc r21, r19 + 76a: 18 f4 brcc .+6 ; 0x772 + 76c: 9a 01 movw r18, r20 + 76e: bd 01 movw r22, r26 + 770: ef 01 movw r28, r30 + 772: df 01 movw r26, r30 + 774: f8 01 movw r30, r16 + 776: db cf rjmp .-74 ; 0x72e + 778: 21 15 cp r18, r1 + 77a: 31 05 cpc r19, r1 + 77c: f9 f0 breq .+62 ; 0x7bc + 77e: 28 1b sub r18, r24 + 780: 39 0b sbc r19, r25 + 782: 24 30 cpi r18, 0x04 ; 4 + 784: 31 05 cpc r19, r1 + 786: 80 f4 brcc .+32 ; 0x7a8 + 788: 8a 81 ldd r24, Y+2 ; 0x02 + 78a: 9b 81 ldd r25, Y+3 ; 0x03 + 78c: 61 15 cp r22, r1 + 78e: 71 05 cpc r23, r1 + 790: 21 f0 breq .+8 ; 0x79a + 792: fb 01 movw r30, r22 + 794: 82 83 std Z+2, r24 ; 0x02 + 796: 93 83 std Z+3, r25 ; 0x03 + 798: 04 c0 rjmp .+8 ; 0x7a2 + 79a: 80 93 4e 3f sts 0x3F4E, r24 ; 0x803f4e <__flp> + 79e: 90 93 4f 3f sts 0x3F4F, r25 ; 0x803f4f <__flp+0x1> + 7a2: fe 01 movw r30, r28 + 7a4: 32 96 adiw r30, 0x02 ; 2 + 7a6: 44 c0 rjmp .+136 ; 0x830 + 7a8: fe 01 movw r30, r28 + 7aa: e2 0f add r30, r18 + 7ac: f3 1f adc r31, r19 + 7ae: 81 93 st Z+, r24 + 7b0: 91 93 st Z+, r25 + 7b2: 22 50 subi r18, 0x02 ; 2 + 7b4: 31 09 sbc r19, r1 + 7b6: 28 83 st Y, r18 + 7b8: 39 83 std Y+1, r19 ; 0x01 + 7ba: 3a c0 rjmp .+116 ; 0x830 + 7bc: 20 91 4c 3f lds r18, 0x3F4C ; 0x803f4c <__brkval> + 7c0: 30 91 4d 3f lds r19, 0x3F4D ; 0x803f4d <__brkval+0x1> + 7c4: 23 2b or r18, r19 + 7c6: 41 f4 brne .+16 ; 0x7d8 + 7c8: 20 91 02 3f lds r18, 0x3F02 ; 0x803f02 <__malloc_heap_start> + 7cc: 30 91 03 3f lds r19, 0x3F03 ; 0x803f03 <__malloc_heap_start+0x1> + 7d0: 20 93 4c 3f sts 0x3F4C, r18 ; 0x803f4c <__brkval> + 7d4: 30 93 4d 3f sts 0x3F4D, r19 ; 0x803f4d <__brkval+0x1> + 7d8: 20 91 00 3f lds r18, 0x3F00 ; 0x803f00 <__DATA_REGION_ORIGIN__> + 7dc: 30 91 01 3f lds r19, 0x3F01 ; 0x803f01 <__DATA_REGION_ORIGIN__+0x1> + 7e0: 21 15 cp r18, r1 + 7e2: 31 05 cpc r19, r1 + 7e4: 41 f4 brne .+16 ; 0x7f6 + 7e6: 2d b7 in r18, 0x3d ; 61 + 7e8: 3e b7 in r19, 0x3e ; 62 + 7ea: 40 91 04 3f lds r20, 0x3F04 ; 0x803f04 <__malloc_margin> + 7ee: 50 91 05 3f lds r21, 0x3F05 ; 0x803f05 <__malloc_margin+0x1> + 7f2: 24 1b sub r18, r20 + 7f4: 35 0b sbc r19, r21 + 7f6: e0 91 4c 3f lds r30, 0x3F4C ; 0x803f4c <__brkval> + 7fa: f0 91 4d 3f lds r31, 0x3F4D ; 0x803f4d <__brkval+0x1> + 7fe: e2 17 cp r30, r18 + 800: f3 07 cpc r31, r19 + 802: a0 f4 brcc .+40 ; 0x82c + 804: 2e 1b sub r18, r30 + 806: 3f 0b sbc r19, r31 + 808: 28 17 cp r18, r24 + 80a: 39 07 cpc r19, r25 + 80c: 78 f0 brcs .+30 ; 0x82c + 80e: ac 01 movw r20, r24 + 810: 4e 5f subi r20, 0xFE ; 254 + 812: 5f 4f sbci r21, 0xFF ; 255 + 814: 24 17 cp r18, r20 + 816: 35 07 cpc r19, r21 + 818: 48 f0 brcs .+18 ; 0x82c + 81a: 4e 0f add r20, r30 + 81c: 5f 1f adc r21, r31 + 81e: 40 93 4c 3f sts 0x3F4C, r20 ; 0x803f4c <__brkval> + 822: 50 93 4d 3f sts 0x3F4D, r21 ; 0x803f4d <__brkval+0x1> + 826: 81 93 st Z+, r24 + 828: 91 93 st Z+, r25 + 82a: 02 c0 rjmp .+4 ; 0x830 + 82c: e0 e0 ldi r30, 0x00 ; 0 + 82e: f0 e0 ldi r31, 0x00 ; 0 + 830: cf 01 movw r24, r30 + 832: df 91 pop r29 + 834: cf 91 pop r28 + 836: 1f 91 pop r17 + 838: 0f 91 pop r16 + 83a: 08 95 ret -00000ba6 : - ba6: cf 93 push r28 - ba8: df 93 push r29 - baa: 00 97 sbiw r24, 0x00 ; 0 - bac: 09 f4 brne .+2 ; 0xbb0 - bae: 81 c0 rjmp .+258 ; 0xcb2 - bb0: fc 01 movw r30, r24 - bb2: 32 97 sbiw r30, 0x02 ; 2 - bb4: 12 82 std Z+2, r1 ; 0x02 - bb6: 13 82 std Z+3, r1 ; 0x03 - bb8: a0 91 0d 3f lds r26, 0x3F0D ; 0x803f0d <__flp> - bbc: b0 91 0e 3f lds r27, 0x3F0E ; 0x803f0e <__flp+0x1> - bc0: 10 97 sbiw r26, 0x00 ; 0 - bc2: 81 f4 brne .+32 ; 0xbe4 - bc4: 20 81 ld r18, Z - bc6: 31 81 ldd r19, Z+1 ; 0x01 - bc8: 82 0f add r24, r18 - bca: 93 1f adc r25, r19 - bcc: 20 91 0b 3f lds r18, 0x3F0B ; 0x803f0b <__brkval> - bd0: 30 91 0c 3f lds r19, 0x3F0C ; 0x803f0c <__brkval+0x1> - bd4: 28 17 cp r18, r24 - bd6: 39 07 cpc r19, r25 - bd8: 51 f5 brne .+84 ; 0xc2e - bda: e0 93 0b 3f sts 0x3F0B, r30 ; 0x803f0b <__brkval> - bde: f0 93 0c 3f sts 0x3F0C, r31 ; 0x803f0c <__brkval+0x1> - be2: 67 c0 rjmp .+206 ; 0xcb2 - be4: ed 01 movw r28, r26 - be6: 20 e0 ldi r18, 0x00 ; 0 - be8: 30 e0 ldi r19, 0x00 ; 0 - bea: ce 17 cp r28, r30 - bec: df 07 cpc r29, r31 - bee: 40 f4 brcc .+16 ; 0xc00 - bf0: 4a 81 ldd r20, Y+2 ; 0x02 - bf2: 5b 81 ldd r21, Y+3 ; 0x03 - bf4: 9e 01 movw r18, r28 - bf6: 41 15 cp r20, r1 - bf8: 51 05 cpc r21, r1 - bfa: f1 f0 breq .+60 ; 0xc38 - bfc: ea 01 movw r28, r20 - bfe: f5 cf rjmp .-22 ; 0xbea - c00: c2 83 std Z+2, r28 ; 0x02 - c02: d3 83 std Z+3, r29 ; 0x03 - c04: 40 81 ld r20, Z - c06: 51 81 ldd r21, Z+1 ; 0x01 - c08: 84 0f add r24, r20 - c0a: 95 1f adc r25, r21 - c0c: c8 17 cp r28, r24 - c0e: d9 07 cpc r29, r25 - c10: 59 f4 brne .+22 ; 0xc28 - c12: 88 81 ld r24, Y - c14: 99 81 ldd r25, Y+1 ; 0x01 - c16: 84 0f add r24, r20 - c18: 95 1f adc r25, r21 - c1a: 02 96 adiw r24, 0x02 ; 2 - c1c: 80 83 st Z, r24 - c1e: 91 83 std Z+1, r25 ; 0x01 - c20: 8a 81 ldd r24, Y+2 ; 0x02 - c22: 9b 81 ldd r25, Y+3 ; 0x03 - c24: 82 83 std Z+2, r24 ; 0x02 - c26: 93 83 std Z+3, r25 ; 0x03 - c28: 21 15 cp r18, r1 - c2a: 31 05 cpc r19, r1 - c2c: 29 f4 brne .+10 ; 0xc38 - c2e: e0 93 0d 3f sts 0x3F0D, r30 ; 0x803f0d <__flp> - c32: f0 93 0e 3f sts 0x3F0E, r31 ; 0x803f0e <__flp+0x1> - c36: 3d c0 rjmp .+122 ; 0xcb2 - c38: e9 01 movw r28, r18 - c3a: ea 83 std Y+2, r30 ; 0x02 - c3c: fb 83 std Y+3, r31 ; 0x03 - c3e: 49 91 ld r20, Y+ - c40: 59 91 ld r21, Y+ - c42: c4 0f add r28, r20 - c44: d5 1f adc r29, r21 - c46: ec 17 cp r30, r28 - c48: fd 07 cpc r31, r29 - c4a: 61 f4 brne .+24 ; 0xc64 - c4c: 80 81 ld r24, Z - c4e: 91 81 ldd r25, Z+1 ; 0x01 - c50: 84 0f add r24, r20 - c52: 95 1f adc r25, r21 - c54: 02 96 adiw r24, 0x02 ; 2 - c56: e9 01 movw r28, r18 - c58: 88 83 st Y, r24 - c5a: 99 83 std Y+1, r25 ; 0x01 - c5c: 82 81 ldd r24, Z+2 ; 0x02 - c5e: 93 81 ldd r25, Z+3 ; 0x03 - c60: 8a 83 std Y+2, r24 ; 0x02 - c62: 9b 83 std Y+3, r25 ; 0x03 - c64: e0 e0 ldi r30, 0x00 ; 0 - c66: f0 e0 ldi r31, 0x00 ; 0 - c68: 12 96 adiw r26, 0x02 ; 2 - c6a: 8d 91 ld r24, X+ - c6c: 9c 91 ld r25, X - c6e: 13 97 sbiw r26, 0x03 ; 3 - c70: 00 97 sbiw r24, 0x00 ; 0 - c72: 19 f0 breq .+6 ; 0xc7a - c74: fd 01 movw r30, r26 - c76: dc 01 movw r26, r24 - c78: f7 cf rjmp .-18 ; 0xc68 - c7a: 8d 91 ld r24, X+ - c7c: 9c 91 ld r25, X - c7e: 11 97 sbiw r26, 0x01 ; 1 - c80: 9d 01 movw r18, r26 - c82: 2e 5f subi r18, 0xFE ; 254 - c84: 3f 4f sbci r19, 0xFF ; 255 - c86: 82 0f add r24, r18 - c88: 93 1f adc r25, r19 - c8a: 20 91 0b 3f lds r18, 0x3F0B ; 0x803f0b <__brkval> - c8e: 30 91 0c 3f lds r19, 0x3F0C ; 0x803f0c <__brkval+0x1> - c92: 28 17 cp r18, r24 - c94: 39 07 cpc r19, r25 - c96: 69 f4 brne .+26 ; 0xcb2 - c98: 30 97 sbiw r30, 0x00 ; 0 - c9a: 29 f4 brne .+10 ; 0xca6 - c9c: 10 92 0d 3f sts 0x3F0D, r1 ; 0x803f0d <__flp> - ca0: 10 92 0e 3f sts 0x3F0E, r1 ; 0x803f0e <__flp+0x1> - ca4: 02 c0 rjmp .+4 ; 0xcaa - ca6: 12 82 std Z+2, r1 ; 0x02 - ca8: 13 82 std Z+3, r1 ; 0x03 - caa: a0 93 0b 3f sts 0x3F0B, r26 ; 0x803f0b <__brkval> - cae: b0 93 0c 3f sts 0x3F0C, r27 ; 0x803f0c <__brkval+0x1> - cb2: df 91 pop r29 - cb4: cf 91 pop r28 - cb6: 08 95 ret +0000083c : + 83c: cf 93 push r28 + 83e: df 93 push r29 + 840: 00 97 sbiw r24, 0x00 ; 0 + 842: 09 f4 brne .+2 ; 0x846 + 844: 81 c0 rjmp .+258 ; 0x948 + 846: fc 01 movw r30, r24 + 848: 32 97 sbiw r30, 0x02 ; 2 + 84a: 12 82 std Z+2, r1 ; 0x02 + 84c: 13 82 std Z+3, r1 ; 0x03 + 84e: a0 91 4e 3f lds r26, 0x3F4E ; 0x803f4e <__flp> + 852: b0 91 4f 3f lds r27, 0x3F4F ; 0x803f4f <__flp+0x1> + 856: 10 97 sbiw r26, 0x00 ; 0 + 858: 81 f4 brne .+32 ; 0x87a + 85a: 20 81 ld r18, Z + 85c: 31 81 ldd r19, Z+1 ; 0x01 + 85e: 82 0f add r24, r18 + 860: 93 1f adc r25, r19 + 862: 20 91 4c 3f lds r18, 0x3F4C ; 0x803f4c <__brkval> + 866: 30 91 4d 3f lds r19, 0x3F4D ; 0x803f4d <__brkval+0x1> + 86a: 28 17 cp r18, r24 + 86c: 39 07 cpc r19, r25 + 86e: 51 f5 brne .+84 ; 0x8c4 + 870: e0 93 4c 3f sts 0x3F4C, r30 ; 0x803f4c <__brkval> + 874: f0 93 4d 3f sts 0x3F4D, r31 ; 0x803f4d <__brkval+0x1> + 878: 67 c0 rjmp .+206 ; 0x948 + 87a: ed 01 movw r28, r26 + 87c: 20 e0 ldi r18, 0x00 ; 0 + 87e: 30 e0 ldi r19, 0x00 ; 0 + 880: ce 17 cp r28, r30 + 882: df 07 cpc r29, r31 + 884: 40 f4 brcc .+16 ; 0x896 + 886: 4a 81 ldd r20, Y+2 ; 0x02 + 888: 5b 81 ldd r21, Y+3 ; 0x03 + 88a: 9e 01 movw r18, r28 + 88c: 41 15 cp r20, r1 + 88e: 51 05 cpc r21, r1 + 890: f1 f0 breq .+60 ; 0x8ce + 892: ea 01 movw r28, r20 + 894: f5 cf rjmp .-22 ; 0x880 + 896: c2 83 std Z+2, r28 ; 0x02 + 898: d3 83 std Z+3, r29 ; 0x03 + 89a: 40 81 ld r20, Z + 89c: 51 81 ldd r21, Z+1 ; 0x01 + 89e: 84 0f add r24, r20 + 8a0: 95 1f adc r25, r21 + 8a2: c8 17 cp r28, r24 + 8a4: d9 07 cpc r29, r25 + 8a6: 59 f4 brne .+22 ; 0x8be + 8a8: 88 81 ld r24, Y + 8aa: 99 81 ldd r25, Y+1 ; 0x01 + 8ac: 84 0f add r24, r20 + 8ae: 95 1f adc r25, r21 + 8b0: 02 96 adiw r24, 0x02 ; 2 + 8b2: 80 83 st Z, r24 + 8b4: 91 83 std Z+1, r25 ; 0x01 + 8b6: 8a 81 ldd r24, Y+2 ; 0x02 + 8b8: 9b 81 ldd r25, Y+3 ; 0x03 + 8ba: 82 83 std Z+2, r24 ; 0x02 + 8bc: 93 83 std Z+3, r25 ; 0x03 + 8be: 21 15 cp r18, r1 + 8c0: 31 05 cpc r19, r1 + 8c2: 29 f4 brne .+10 ; 0x8ce + 8c4: e0 93 4e 3f sts 0x3F4E, r30 ; 0x803f4e <__flp> + 8c8: f0 93 4f 3f sts 0x3F4F, r31 ; 0x803f4f <__flp+0x1> + 8cc: 3d c0 rjmp .+122 ; 0x948 + 8ce: e9 01 movw r28, r18 + 8d0: ea 83 std Y+2, r30 ; 0x02 + 8d2: fb 83 std Y+3, r31 ; 0x03 + 8d4: 49 91 ld r20, Y+ + 8d6: 59 91 ld r21, Y+ + 8d8: c4 0f add r28, r20 + 8da: d5 1f adc r29, r21 + 8dc: ec 17 cp r30, r28 + 8de: fd 07 cpc r31, r29 + 8e0: 61 f4 brne .+24 ; 0x8fa + 8e2: 80 81 ld r24, Z + 8e4: 91 81 ldd r25, Z+1 ; 0x01 + 8e6: 84 0f add r24, r20 + 8e8: 95 1f adc r25, r21 + 8ea: 02 96 adiw r24, 0x02 ; 2 + 8ec: e9 01 movw r28, r18 + 8ee: 88 83 st Y, r24 + 8f0: 99 83 std Y+1, r25 ; 0x01 + 8f2: 82 81 ldd r24, Z+2 ; 0x02 + 8f4: 93 81 ldd r25, Z+3 ; 0x03 + 8f6: 8a 83 std Y+2, r24 ; 0x02 + 8f8: 9b 83 std Y+3, r25 ; 0x03 + 8fa: e0 e0 ldi r30, 0x00 ; 0 + 8fc: f0 e0 ldi r31, 0x00 ; 0 + 8fe: 12 96 adiw r26, 0x02 ; 2 + 900: 8d 91 ld r24, X+ + 902: 9c 91 ld r25, X + 904: 13 97 sbiw r26, 0x03 ; 3 + 906: 00 97 sbiw r24, 0x00 ; 0 + 908: 19 f0 breq .+6 ; 0x910 + 90a: fd 01 movw r30, r26 + 90c: dc 01 movw r26, r24 + 90e: f7 cf rjmp .-18 ; 0x8fe + 910: 8d 91 ld r24, X+ + 912: 9c 91 ld r25, X + 914: 11 97 sbiw r26, 0x01 ; 1 + 916: 9d 01 movw r18, r26 + 918: 2e 5f subi r18, 0xFE ; 254 + 91a: 3f 4f sbci r19, 0xFF ; 255 + 91c: 82 0f add r24, r18 + 91e: 93 1f adc r25, r19 + 920: 20 91 4c 3f lds r18, 0x3F4C ; 0x803f4c <__brkval> + 924: 30 91 4d 3f lds r19, 0x3F4D ; 0x803f4d <__brkval+0x1> + 928: 28 17 cp r18, r24 + 92a: 39 07 cpc r19, r25 + 92c: 69 f4 brne .+26 ; 0x948 + 92e: 30 97 sbiw r30, 0x00 ; 0 + 930: 29 f4 brne .+10 ; 0x93c + 932: 10 92 4e 3f sts 0x3F4E, r1 ; 0x803f4e <__flp> + 936: 10 92 4f 3f sts 0x3F4F, r1 ; 0x803f4f <__flp+0x1> + 93a: 02 c0 rjmp .+4 ; 0x940 + 93c: 12 82 std Z+2, r1 ; 0x02 + 93e: 13 82 std Z+3, r1 ; 0x03 + 940: a0 93 4c 3f sts 0x3F4C, r26 ; 0x803f4c <__brkval> + 944: b0 93 4d 3f sts 0x3F4D, r27 ; 0x803f4d <__brkval+0x1> + 948: df 91 pop r29 + 94a: cf 91 pop r28 + 94c: 08 95 ret -00000cb8 : - cb8: fb 01 movw r30, r22 - cba: dc 01 movw r26, r24 - cbc: 02 c0 rjmp .+4 ; 0xcc2 - cbe: 01 90 ld r0, Z+ - cc0: 0d 92 st X+, r0 - cc2: 41 50 subi r20, 0x01 ; 1 - cc4: 50 40 sbci r21, 0x00 ; 0 - cc6: d8 f7 brcc .-10 ; 0xcbe - cc8: 08 95 ret +0000094e : + 94e: fb 01 movw r30, r22 + 950: dc 01 movw r26, r24 + 952: 02 c0 rjmp .+4 ; 0x958 + 954: 01 90 ld r0, Z+ + 956: 0d 92 st X+, r0 + 958: 41 50 subi r20, 0x01 ; 1 + 95a: 50 40 sbci r21, 0x00 ; 0 + 95c: d8 f7 brcc .-10 ; 0x954 + 95e: 08 95 ret -00000cca <_exit>: - cca: f8 94 cli +00000960 <_exit>: + 960: f8 94 cli -00000ccc <__stop_program>: - ccc: ff cf rjmp .-2 ; 0xccc <__stop_program> +00000962 <__stop_program>: + 962: ff cf rjmp .-2 ; 0x962 <__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 eaf59a3..55258db 100644 --- a/storno_cqp6xx_digital_xtal/Debug/storno_cqp6xx_digital_xtal.map +++ b/storno_cqp6xx_digital_xtal/Debug/storno_cqp6xx_digital_xtal.map @@ -43,7 +43,7 @@ c:/program files (x86)/atmel/studio/7.0/toolchain/avr8/avr8-gnu-toolchain/bin/.. 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(_clear_bss.o) - main.o (__do_clear_bss) + 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) si5351_driver/si5351_driver.o (malloc) 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) @@ -54,7 +54,7 @@ c:/program files (x86)/atmel/studio/7.0/toolchain/avr8/avr8-gnu-toolchain/bin/.. Allocating common symbols Common symbol size file -storno_xtal_app 0x4 main.o +storno_xtal_app 0x6 main.o __brkval 0x2 c:/program files (x86)/atmel/studio/7.0/toolchain/avr8/avr8-gnu-toolchain/bin/../lib/gcc/avr/5.4.0/../../../../avr/lib/avrxmega3/short-calls\libc.a(malloc.o) __flp 0x2 c:/program files (x86)/atmel/studio/7.0/toolchain/avr8/avr8-gnu-toolchain/bin/../lib/gcc/avr/5.4.0/../../../../avr/lib/avrxmega3/short-calls\libc.a(malloc.o) @@ -62,13 +62,42 @@ Discarded input sections .data 0x00000000 0x0 C:/Program Files (x86)/Atmel/Studio/7.0/Packs/atmel/ATtiny_DFP/1.10.348/gcc/dev/attiny402/avrxmega3/short-calls/crtattiny402.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/crtattiny402.o + .text 0x00000000 0x0 avr_eeprom_driver/avr_eeprom_driver.o + .data 0x00000000 0x0 avr_eeprom_driver/avr_eeprom_driver.o + .bss 0x00000000 0x0 avr_eeprom_driver/avr_eeprom_driver.o + .text.cm_EEPROM_write + 0x00000000 0x40 avr_eeprom_driver/avr_eeprom_driver.o + .text.cm_EEPROM_read + 0x00000000 0x34 avr_eeprom_driver/avr_eeprom_driver.o + .debug_info 0x00000000 0x2e9 avr_eeprom_driver/avr_eeprom_driver.o + .debug_abbrev 0x00000000 0x130 avr_eeprom_driver/avr_eeprom_driver.o + .debug_loc 0x00000000 0x3e avr_eeprom_driver/avr_eeprom_driver.o + .debug_aranges + 0x00000000 0x28 avr_eeprom_driver/avr_eeprom_driver.o + .debug_ranges 0x00000000 0x18 avr_eeprom_driver/avr_eeprom_driver.o + .debug_line 0x00000000 0x1b1 avr_eeprom_driver/avr_eeprom_driver.o + .debug_str 0x00000000 0x36b avr_eeprom_driver/avr_eeprom_driver.o + .comment 0x00000000 0x31 avr_eeprom_driver/avr_eeprom_driver.o + .debug_frame 0x00000000 0x34 avr_eeprom_driver/avr_eeprom_driver.o .text 0x00000000 0x0 avr_gpio_driver/avr_gpio.o .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 + .text.gpio_get_level + 0x00000000 0x24 avr_gpio_driver/avr_gpio.o .text.gpio_init 0x00000000 0x34 avr_gpio_driver/avr_gpio.o + .debug_info 0x00000000 0x320 avr_gpio_driver/avr_gpio.o + .debug_abbrev 0x00000000 0x107 avr_gpio_driver/avr_gpio.o + .debug_loc 0x00000000 0xae avr_gpio_driver/avr_gpio.o + .debug_aranges + 0x00000000 0x30 avr_gpio_driver/avr_gpio.o + .debug_ranges 0x00000000 0x20 avr_gpio_driver/avr_gpio.o + .debug_line 0x00000000 0x196 avr_gpio_driver/avr_gpio.o + .debug_str 0x00000000 0x319 avr_gpio_driver/avr_gpio.o + .comment 0x00000000 0x31 avr_gpio_driver/avr_gpio.o + .debug_frame 0x00000000 0x44 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 @@ -80,20 +109,43 @@ Discarded input sections .data 0x00000000 0x0 avr_uart_driver/avr_uart.o .bss 0x00000000 0x0 avr_uart_driver/avr_uart.o .text.cm_uart_receive - 0x00000000 0x10 avr_uart_driver/avr_uart.o + 0x00000000 0x12 avr_uart_driver/avr_uart.o .text.cm_uart_receive_busyWait 0x00000000 0xe avr_uart_driver/avr_uart.o + .text 0x00000000 0x0 cm_msg/cm_msg.o + .data 0x00000000 0x0 cm_msg/cm_msg.o + .bss 0x00000000 0x0 cm_msg/cm_msg.o .text 0x00000000 0x0 cqm6xx_app.o .data 0x00000000 0x0 cqm6xx_app.o .bss 0x00000000 0x0 cqm6xx_app.o + .text.isStructValid + 0x00000000 0x1a cqm6xx_app.o + .text.cqm6xx_app_updateOsc + 0x00000000 0x76 cqm6xx_app.o + .text.cqm6xx_app_statemachine + 0x00000000 0x56 cqm6xx_app.o .text 0x00000000 0x0 main.o .data 0x00000000 0x0 main.o .bss 0x00000000 0x0 main.o + .text.uart_test + 0x00000000 0x2 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_setOutputMultiSynth + 0x00000000 0x116 si5351_driver/si5351_driver.o + .text.cm_setOutputEnable + 0x00000000 0x40 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 .text.cm_si5351_getRevisionNumber @@ -280,9 +332,11 @@ Linker script and memory map Address of section .data set to 0x803f00 0x00008000 __RODATA_PM_OFFSET__ = 0x8000 LOAD C:/Program Files (x86)/Atmel/Studio/7.0/Packs/atmel/ATtiny_DFP/1.10.348/gcc/dev/attiny402/avrxmega3/short-calls/crtattiny402.o +LOAD avr_eeprom_driver/avr_eeprom_driver.o LOAD avr_gpio_driver/avr_gpio.o LOAD avr_i2c_driver/avr_i2c.o LOAD avr_uart_driver/avr_uart.o +LOAD cm_msg/cm_msg.o LOAD cqm6xx_app.o LOAD main.o LOAD si5351_driver/si5351_driver.o @@ -396,7 +450,7 @@ END GROUP .rela.plt *(.rela.plt) -.text 0x00000000 0xcce +.text 0x00000000 0x964 *(.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 @@ -482,88 +536,75 @@ END GROUP 0x0000006a __vector_20 0x0000006c . = ALIGN (0x2) *(.text.*) - .text.gpio_get_level - 0x0000006c 0x24 avr_gpio_driver/avr_gpio.o - 0x0000006c gpio_get_level .text.i2c_reset - 0x00000090 0x10 avr_i2c_driver/avr_i2c.o + 0x0000006c 0x10 avr_i2c_driver/avr_i2c.o .text.i2c_write_devAddr - 0x000000a0 0x22 avr_i2c_driver/avr_i2c.o - 0x000000a0 i2c_write_devAddr + 0x0000007c 0x22 avr_i2c_driver/avr_i2c.o + 0x0000007c i2c_write_devAddr .text.i2c_write - 0x000000c2 0x92 avr_i2c_driver/avr_i2c.o - 0x000000c2 i2c_write + 0x0000009e 0x92 avr_i2c_driver/avr_i2c.o + 0x0000009e i2c_write .text.i2c_read - 0x00000154 0x8c avr_i2c_driver/avr_i2c.o - 0x00000154 i2c_read + 0x00000130 0x8c avr_i2c_driver/avr_i2c.o + 0x00000130 i2c_read .text.i2c_IsDeviceReady - 0x000001e0 0x2c avr_i2c_driver/avr_i2c.o - 0x000001e0 i2c_IsDeviceReady + 0x000001bc 0x2c avr_i2c_driver/avr_i2c.o + 0x000001bc i2c_IsDeviceReady .text.cm_i2c_init - 0x0000020c 0x34 avr_i2c_driver/avr_i2c.o - 0x0000020c cm_i2c_init + 0x000001e8 0x34 avr_i2c_driver/avr_i2c.o + 0x000001e8 cm_i2c_init .text.cm_i2c_addDev - 0x00000240 0x3c avr_i2c_driver/avr_i2c.o - 0x00000240 cm_i2c_addDev + 0x0000021c 0x3c avr_i2c_driver/avr_i2c.o + 0x0000021c cm_i2c_addDev .text.cm_i2c_transfer - 0x0000027c 0x34 avr_i2c_driver/avr_i2c.o - 0x0000027c cm_i2c_transfer + 0x00000258 0x34 avr_i2c_driver/avr_i2c.o + 0x00000258 cm_i2c_transfer .text.cm_uart_init - 0x000002b0 0x48 avr_uart_driver/avr_uart.o - 0x000002b0 cm_uart_init + 0x0000028c 0x60 avr_uart_driver/avr_uart.o + 0x0000028c cm_uart_init .text.cm_uart_send - 0x000002f8 0xe avr_uart_driver/avr_uart.o - 0x000002f8 cm_uart_send + 0x000002ec 0xe avr_uart_driver/avr_uart.o + 0x000002ec cm_uart_send .text.__vector_22 - 0x00000306 0x4e avr_uart_driver/avr_uart.o - 0x00000306 __vector_22 - .text.isStructValid - 0x00000354 0x1a cqm6xx_app.o - .text.cqm6xx_app_updateOsc - 0x0000036e 0x76 cqm6xx_app.o - .text.cqm6xx_app_statemachine - 0x000003e4 0x166 cqm6xx_app.o - 0x000003e4 cqm6xx_app_statemachine + 0x000002fa 0x70 avr_uart_driver/avr_uart.o + 0x000002fa __vector_22 + .text.cm_msgSync_Byte_DecodeSC + 0x0000036a 0x9e cm_msg/cm_msg.o + 0x0000036a cm_msgSync_Byte_DecodeSC + .text.cm_msg_DecodeMsg_Byte + 0x00000408 0x9e cm_msg/cm_msg.o + 0x00000408 cm_msg_DecodeMsg_Byte + .text.cm_MsgCompleteEvt_Register + 0x000004a6 0x1c cm_msg/cm_msg.o + 0x000004a6 cm_MsgCompleteEvt_Register + .text.programPLL_Parameters + 0x000004c2 0x6 cqm6xx_app.o + 0x000004c2 programPLL_Parameters + .text.uart_rx_event + 0x000004c8 0xe cqm6xx_app.o + 0x000004c8 uart_rx_event .text.cqm6xx_app_init - 0x0000054a 0x16 cqm6xx_app.o - 0x0000054a cqm6xx_app_init - .text.main 0x00000560 0x68 main.o - 0x00000560 main + 0x000004d6 0x2c cqm6xx_app.o + 0x000004d6 cqm6xx_app_init + .text.main 0x00000502 0x50 main.o + 0x00000502 main .text.writeRegister - 0x000005c8 0x78 si5351_driver/si5351_driver.o - .text.cm_setOutputMultiSynth - 0x00000640 0x116 si5351_driver/si5351_driver.o - 0x00000640 cm_setOutputMultiSynth - .text.cm_setOutputEnable - 0x00000756 0x40 si5351_driver/si5351_driver.o - 0x00000756 cm_setOutputEnable - .text.cm_setCLKControl - 0x00000796 0x5c si5351_driver/si5351_driver.o - 0x00000796 cm_setCLKControl - .text.cm_setInputSource - 0x000007f2 0x3e si5351_driver/si5351_driver.o - 0x000007f2 cm_setInputSource - .text.cm_resetPLLs - 0x00000830 0x48 si5351_driver/si5351_driver.o - 0x00000830 cm_resetPLLs - .text.cm_setPllParamRaw - 0x00000878 0xbc si5351_driver/si5351_driver.o - 0x00000878 cm_setPllParamRaw + 0x00000552 0x78 si5351_driver/si5351_driver.o .text.cm_si5351_init - 0x00000934 0x142 si5351_driver/si5351_driver.o - 0x00000934 cm_si5351_init + 0x000005ca 0x142 si5351_driver/si5351_driver.o + 0x000005ca cm_si5351_init .text.avr-libc - 0x00000a76 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) - 0x00000a76 malloc - 0x00000ba6 free + 0x0000070c 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) + 0x0000070c malloc + 0x0000083c free .text.avr-libc - 0x00000cb8 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) - 0x00000cb8 memcpy - 0x00000cca . = ALIGN (0x2) + 0x0000094e 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) + 0x0000094e memcpy + 0x00000960 . = ALIGN (0x2) *(.fini9) - .fini9 0x00000cca 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) - 0x00000cca _exit - 0x00000cca exit + .fini9 0x00000960 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) + 0x00000960 _exit + 0x00000960 exit *(.fini9) *(.fini8) *(.fini8) @@ -582,16 +623,18 @@ END GROUP *(.fini1) *(.fini1) *(.fini0) - .fini0 0x00000cca 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 0x00000960 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) - 0x00000cce _etext = . + 0x00000964 _etext = . -.rodata +.rodata 0x00008964 0x5 load address 0x00000964 *(.rodata) *(.rodata*) + .rodata.startCode + 0x00008964 0x5 cm_msg/cm_msg.o *(.gnu.linkonce.r*) -.data 0x00803f00 0x6 load address 0x00000cce +.data 0x00803f00 0x6 load address 0x00000969 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) @@ -604,29 +647,42 @@ END GROUP 0x00803f06 _edata = . 0x00803f06 PROVIDE (__data_end, .) -.bss 0x00803f06 0x9 +.bss 0x00803f06 0x4a 0x00803f06 PROVIDE (__bss_start, .) *(.bss) *(.bss*) - .bss.received_data - 0x00803f06 0x1 main.o - 0x00803f06 received_data + .bss.uart_rx_evt_fpt + 0x00803f06 0x2 avr_uart_driver/avr_uart.o + 0x00803f06 uart_rx_evt_fpt + .bss.data_bytes_idx.1845 + 0x00803f08 0x1 cm_msg/cm_msg.o + .bss.msg.1844 0x00803f09 0x37 cm_msg/cm_msg.o + .bss.state.1843 + 0x00803f40 0x1 cm_msg/cm_msg.o + .bss.state.1832 + 0x00803f41 0x1 cm_msg/cm_msg.o + .bss.s_msg_cmplete_evt_inst + 0x00803f42 0x2 cm_msg/cm_msg.o + 0x00803f42 s_msg_cmplete_evt_inst + .bss.s_msg_cmplete_evt_fpt + 0x00803f44 0x2 cm_msg/cm_msg.o + 0x00803f44 s_msg_cmplete_evt_fpt *(COMMON) - COMMON 0x00803f07 0x4 main.o - 0x00803f07 storno_xtal_app - COMMON 0x00803f0b 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) - 0x00803f0b __brkval - 0x00803f0d __flp - 0x00803f0f PROVIDE (__bss_end, .) - 0x00000cce __data_load_start = LOADADDR (.data) - 0x00000cd4 __data_load_end = (__data_load_start + SIZEOF (.data)) + COMMON 0x00803f46 0x6 main.o + 0x00803f46 storno_xtal_app + COMMON 0x00803f4c 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) + 0x00803f4c __brkval + 0x00803f4e __flp + 0x00803f50 PROVIDE (__bss_end, .) + 0x00000969 __data_load_start = LOADADDR (.data) + 0x0000096f __data_load_end = (__data_load_start + SIZEOF (.data)) -.noinit 0x00803f0f 0x0 +.noinit 0x00803f50 0x0 [!provide] PROVIDE (__noinit_start, .) *(.noinit*) [!provide] PROVIDE (__noinit_end, .) - 0x00803f0f _end = . - 0x00803f0f PROVIDE (__heap_start, .) + 0x00803f50 _end = . + 0x00803f50 PROVIDE (__heap_start, .) .eeprom 0x00810000 0x0 *(.eeprom*) @@ -667,10 +723,10 @@ END GROUP .comment 0x00000000 0x30 *(.comment) - .comment 0x00000000 0x30 avr_gpio_driver/avr_gpio.o + .comment 0x00000000 0x30 avr_i2c_driver/avr_i2c.o 0x31 (size before relaxing) - .comment 0x00000030 0x31 avr_i2c_driver/avr_i2c.o .comment 0x00000030 0x31 avr_uart_driver/avr_uart.o + .comment 0x00000030 0x31 cm_msg/cm_msg.o .comment 0x00000030 0x31 cqm6xx_app.o .comment 0x00000030 0x31 main.o .comment 0x00000030 0x31 si5351_driver/si5351_driver.o @@ -696,87 +752,87 @@ END GROUP .debug_sfnames *(.debug_sfnames) -.debug_aranges 0x00000000 0x1a0 +.debug_aranges 0x00000000 0x1b8 *(.debug_aranges) .debug_aranges - 0x00000000 0x30 avr_gpio_driver/avr_gpio.o + 0x00000000 0x68 avr_i2c_driver/avr_i2c.o .debug_aranges - 0x00000030 0x68 avr_i2c_driver/avr_i2c.o + 0x00000068 0x40 avr_uart_driver/avr_uart.o .debug_aranges - 0x00000098 0x40 avr_uart_driver/avr_uart.o + 0x000000a8 0x30 cm_msg/cm_msg.o .debug_aranges - 0x000000d8 0x38 cqm6xx_app.o + 0x000000d8 0x48 cqm6xx_app.o .debug_aranges - 0x00000110 0x20 main.o + 0x00000120 0x28 main.o .debug_aranges - 0x00000130 0x70 si5351_driver/si5351_driver.o + 0x00000148 0x70 si5351_driver/si5351_driver.o .debug_pubnames *(.debug_pubnames) -.debug_info 0x00000000 0x4b29 +.debug_info 0x00000000 0x496c *(.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 0x320 avr_gpio_driver/avr_gpio.o - .debug_info 0x000014f6 0x6da avr_i2c_driver/avr_i2c.o - .debug_info 0x00001bd0 0x4b5 avr_uart_driver/avr_uart.o - .debug_info 0x00002085 0x7dc cqm6xx_app.o - .debug_info 0x00002861 0xce3 main.o - .debug_info 0x00003544 0x15e5 si5351_driver/si5351_driver.o + .debug_info 0x000011d6 0x6da avr_i2c_driver/avr_i2c.o + .debug_info 0x000018b0 0x518 avr_uart_driver/avr_uart.o + .debug_info 0x00001dc8 0x2b4 cm_msg/cm_msg.o + .debug_info 0x0000207c 0x628 cqm6xx_app.o + .debug_info 0x000026a4 0xce3 main.o + .debug_info 0x00003387 0x15e5 si5351_driver/si5351_driver.o -.debug_abbrev 0x00000000 0x1b2d +.debug_abbrev 0x00000000 0x1bfd *(.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 0x107 avr_gpio_driver/avr_gpio.o - .debug_abbrev 0x000011e5 0x1bb avr_i2c_driver/avr_i2c.o - .debug_abbrev 0x000013a0 0x1ad avr_uart_driver/avr_uart.o - .debug_abbrev 0x0000154d 0x1b1 cqm6xx_app.o - .debug_abbrev 0x000016fe 0x1e5 main.o - .debug_abbrev 0x000018e3 0x24a si5351_driver/si5351_driver.o + .debug_abbrev 0x000010de 0x1bb avr_i2c_driver/avr_i2c.o + .debug_abbrev 0x00001299 0x1ed avr_uart_driver/avr_uart.o + .debug_abbrev 0x00001486 0x14b cm_msg/cm_msg.o + .debug_abbrev 0x000015d1 0x1df cqm6xx_app.o + .debug_abbrev 0x000017b0 0x203 main.o + .debug_abbrev 0x000019b3 0x24a si5351_driver/si5351_driver.o -.debug_line 0x00000000 0x126c +.debug_line 0x00000000 0x12f2 *(.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 0x196 avr_gpio_driver/avr_gpio.o - .debug_line 0x000002cc 0x3ff avr_i2c_driver/avr_i2c.o - .debug_line 0x000006cb 0x1e8 avr_uart_driver/avr_uart.o - .debug_line 0x000008b3 0x319 cqm6xx_app.o - .debug_line 0x00000bcc 0x1d0 main.o - .debug_line 0x00000d9c 0x4d0 si5351_driver/si5351_driver.o + .debug_line 0x00000136 0x3ff avr_i2c_driver/avr_i2c.o + .debug_line 0x00000535 0x227 avr_uart_driver/avr_uart.o + .debug_line 0x0000075c 0x208 cm_msg/cm_msg.o + .debug_line 0x00000964 0x323 cqm6xx_app.o + .debug_line 0x00000c87 0x19b main.o + .debug_line 0x00000e22 0x4d0 si5351_driver/si5351_driver.o -.debug_frame 0x00000000 0x534 +.debug_frame 0x00000000 0x558 *(.debug_frame) - .debug_frame 0x00000000 0x44 avr_gpio_driver/avr_gpio.o - .debug_frame 0x00000044 0x118 avr_i2c_driver/avr_i2c.o - .debug_frame 0x0000015c 0xbc avr_uart_driver/avr_uart.o - .debug_frame 0x00000218 0x94 cqm6xx_app.o - .debug_frame 0x000002ac 0x34 main.o - .debug_frame 0x000002e0 0x254 si5351_driver/si5351_driver.o + .debug_frame 0x00000000 0x118 avr_i2c_driver/avr_i2c.o + .debug_frame 0x00000118 0xcc avr_uart_driver/avr_uart.o + .debug_frame 0x000001e4 0x44 cm_msg/cm_msg.o + .debug_frame 0x00000228 0x98 cqm6xx_app.o + .debug_frame 0x000002c0 0x44 main.o + .debug_frame 0x00000304 0x254 si5351_driver/si5351_driver.o -.debug_str 0x00000000 0x1ec6 +.debug_str 0x00000000 0x2131 *(.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 0x2d1 avr_gpio_driver/avr_gpio.o - 0x315 (size before relaxing) - .debug_str 0x00000a7a 0x2ab avr_i2c_driver/avr_i2c.o - 0x502 (size before relaxing) - .debug_str 0x00000d25 0x24f avr_uart_driver/avr_uart.o - 0x4c0 (size before relaxing) - .debug_str 0x00000f74 0x2d7 cqm6xx_app.o - 0x4bb (size before relaxing) - .debug_str 0x0000124b 0x8ff main.o - 0xc39 (size before relaxing) - .debug_str 0x00001b4a 0x37c si5351_driver/si5351_driver.o - 0xf91 (size before relaxing) + .debug_str 0x000007a9 0x4c2 avr_i2c_driver/avr_i2c.o + 0x506 (size before relaxing) + .debug_str 0x00000c6b 0x283 avr_uart_driver/avr_uart.o + 0x4f8 (size before relaxing) + .debug_str 0x00000eee 0x23a cm_msg/cm_msg.o + 0x3fe (size before relaxing) + .debug_str 0x00001128 0x2d8 cqm6xx_app.o + 0x4db (size before relaxing) + .debug_str 0x00001400 0x909 main.o + 0xc4e (size before relaxing) + .debug_str 0x00001d09 0x428 si5351_driver/si5351_driver.o + 0xf95 (size before relaxing) -.debug_loc 0x00000000 0x1ce2 +.debug_loc 0x00000000 0x1c80 *(.debug_loc) - .debug_loc 0x00000000 0xae avr_gpio_driver/avr_gpio.o - .debug_loc 0x000000ae 0x73d avr_i2c_driver/avr_i2c.o - .debug_loc 0x000007eb 0x113 avr_uart_driver/avr_uart.o - .debug_loc 0x000008fe 0x49c cqm6xx_app.o - .debug_loc 0x00000d9a 0x48 main.o - .debug_loc 0x00000de2 0xf00 si5351_driver/si5351_driver.o + .debug_loc 0x00000000 0x73d avr_i2c_driver/avr_i2c.o + .debug_loc 0x0000073d 0x16e avr_uart_driver/avr_uart.o + .debug_loc 0x000008ab 0x160 cm_msg/cm_msg.o + .debug_loc 0x00000a0b 0x32d cqm6xx_app.o + .debug_loc 0x00000d38 0x48 main.o + .debug_loc 0x00000d80 0xf00 si5351_driver/si5351_driver.o .debug_macinfo *(.debug_macinfo) @@ -796,14 +852,14 @@ END GROUP .debug_pubtypes *(.debug_pubtypes) -.debug_ranges 0x00000000 0x140 +.debug_ranges 0x00000000 0x158 *(.debug_ranges) - .debug_ranges 0x00000000 0x20 avr_gpio_driver/avr_gpio.o - .debug_ranges 0x00000020 0x58 avr_i2c_driver/avr_i2c.o - .debug_ranges 0x00000078 0x30 avr_uart_driver/avr_uart.o - .debug_ranges 0x000000a8 0x28 cqm6xx_app.o - .debug_ranges 0x000000d0 0x10 main.o - .debug_ranges 0x000000e0 0x60 si5351_driver/si5351_driver.o + .debug_ranges 0x00000000 0x58 avr_i2c_driver/avr_i2c.o + .debug_ranges 0x00000058 0x30 avr_uart_driver/avr_uart.o + .debug_ranges 0x00000088 0x20 cm_msg/cm_msg.o + .debug_ranges 0x000000a8 0x38 cqm6xx_app.o + .debug_ranges 0x000000e0 0x18 main.o + .debug_ranges 0x000000f8 0x60 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 112fdcd..2c1ff90 100644 --- a/storno_cqp6xx_digital_xtal/Debug/storno_cqp6xx_digital_xtal.srec +++ b/storno_cqp6xx_digital_xtal/Debug/storno_cqp6xx_digital_xtal.srec @@ -1,208 +1,155 @@ S022000073746F726E6F5F6371703678785F6469676974616C5F7874616C2E737265633F S113000019C033C032C031C030C02FC02EC02DC083 S11300102CC02BC02AC029C028C027C026C025C098 -S113002024C023C022C021C020C01FC06CC11DC079 +S113002024C023C022C021C020C01FC066C11DC07F S11300301CC01BC011241FBECFEFCDBFDFE3DEBF4A -S11300402FE3A6E0BFE301C01D92AF30B207E1F792 -S11300501FE3A0E0BFE3EEECFCE002C005900D92CC -S1130060A630B107D9F77CD230C6CACF81110DC0F2 -S11300702091080430E002C0359527956A95E2F78F -S113008081E020FF80E090E0089580E090E0089512 -S1130090E0E1F8E084818860848381E085830895C9 -S11300A08093170880911508807CE1F390911508DE -S11300B0892F807194FF04C083E08093140881E049 -S11300C00895CF92DF92EF92FF92CF93DF93EB01EB -S11300D069017A01232B242B252B81F1E1DF811186 -S11300E030C09E012F5F3F4F888180931808809114 -S11300F0150886FFFCCF8091150884FF06C083E0B5 -S11301008093140881E090E01EC0809115088C70E3 -S113011021F0BEDF81E090E016C08091150884FDD7 -S113012007C081E0C81AD108E108F108E901C9F65D -S113013083E08093140880E090E005C08FEF9FEF88 -S113014002C08FEF9FEFDF91CF91FF90EF90DF9090 -S1130150CF900895CF92DF92EF92FF92CF93DF93E7 -S1130160EB0169017A01232B242B252B69F1816092 -S113017097DF8823C9F02BC080911508807CE1F3B8 -S1130180CE01019620911808288341155105610577 -S1130190710521F424E02093140803C022E0209385 -S11301A014086A017B01EC01B701A6014150510911 -S11301B061097109CD28CE28CF28F1F683E0809318 -S11301C0140880E090E005C081E090E002C08FEF69 -S11301D09FEFDF91CF91FF90EF90DF90CF90089544 -S11301E0809317088091150886FFFCCF809115082D -S11301F084FF06C083E08093140881E090E00895B2 -S113020083E08093140880E090E00895E0E0F4E057 -S113021080818B7F80838081877F8083A0E1B8E0A9 -S11302208BE016968C93169781E013968C93139714 -S113023015968C9388E0828B838B80E090E0089500 -S1130240EF92FF920F931F93CF938C017B01C42FE6 -S1130250842F880FC5DF009749F4F801E082F1820A -S11302604C2F50E0440F551F428302C08EEF9FEF86 -S1130270CF911F910F91FF90EF9008950F930097E6 -S113028081F0FC01002319F0013031F00DC08281AE -S113029061DF80E090E00AC0828113DF80E090E0BB -S11302A005C08FEF9FEF02C080E090E00F910895AA -S11302B0CF93DF931F92CDB7DEB7F894E0E0F8E078 -S11302C08CE695E08087918783E0878380EC868342 -S11302D080E885838481882324F4809100088983BD -S11302E08981E0E0F4E080E4818380E8828378948B -S11302F00F90DF91CF9108959091040895FFFCCF62 -S11303008093020808951F920F920FB60F92112442 -S11303102F933F934F935F936F937F938F939F9309 -S1130320AF93BF93EF93FF93809100088093063FB0 -S1130330E3DFFF91EF91BF91AF919F918F917F91F7 -S11303406F915F914F913F912F910F900FBE0F903E -S11303501F901895FC0122813381232B21F0892BD6 -S113036021F481E0089581E0089580E00895CF9319 -S1130370DF93EC01EFDF811132C089819881891705 -S113038071F1813019F08230B1F029C081E493E039 -S11303900197F1F7000040E060E08A819B81DBD1A6 -S11303A081E493E00197F1F7000041E061E08A8184 -S11303B09B81D1D114C081E493E00197F1F700004F -S11303C041E060E08A819B81C6D181E493E001979A -S11303D0F1F7000040E061E08A819B81BCD1DF91AC -S11303E0CF910895AF92BF92CF92DF92EF92FF9296 -S11303F00F931F93CF93DF93EC01ACDF81119AC06D -S11304008981813009F47FC020F0823009F487C0EB -S113041091C0888381E493E00197F1F7000060E0E4 -S11304208A819B81E6D181E493E00197F1F7000092 -S11304300F2EFBE5AF2EF8E4BF2EF0E1CF2ED12C2A -S1130440F02D16EFE12E1CE2F12E00E010E023E483 -S11304503DE040E050E060E08A819B810DD281E480 -S113046093E00197F1F700000F2EF0ECAF2EF8E4C3 -S1130470BF2EF0E1CF2ED12CF02D12E0E12E1FE3A0 -S1130480F12E00E010E028EC3CE040E050E061E0B8 -S11304908A819B81F1D181E493E00197F1F7000017 -S11304A0A12CB12C6501A394E12CF12C870122E14C -S11304B030E040E050E060E08A819B81C1D081E47B -S11304C093E00197F1F7000020E430E040E050E0D1 -S11304D061E08A819B81B4D081E493E00197F1F7D4 -S11304E0000040E060E08A819B8155D181E493E083 -S11304F00197F1F7000040E061E08A819B814BD1D4 -S113050081E0898317C0CE0132DF8981888363E06B -S113051080E0ACDD019771F482E089830BC0CE01E9 -S113052026DF8981888363E080E0A0DD892B11F4D4 -S113053081E08983DF91CF911F910F91FF90EF901C -S1130540DF90CF90BF90AF900895FC0161157105C5 -S113055031F0892B21F01182108262837383089514 -S1130560CF93DF93CDB7DEB7CB55D109CDBFDEBF77 -S113057080E090E04BDE40E660E070E0CE01019662 -S11305805FDE4EE351E0BE016F5F7F4FCE01049604 -S1130590D1D1BE016C5F7F4F87E09FE3D6DF88DE59 -S11305A082E7AADE82E7A8DE8AE0A6DE8DE0A4DE8A -S11305B087E09FE317DF2AE684E091E02150804042 -S11305C09040E1F700C0F4CF8F929F92AF92BF9218 -S11305D0CF92DF92EF92FF920F931F93CF93DF930B -S11305E0EC01862E5A0168017901C801019643D2B3 -S11305F0982E192FFC018192CF01A601B5015CD37D -S1130600EA81FB81A70196012F5F3F4F4F4F5F4F58 -S113061001E0692D712F888199810995892D912F88 -S1130620C2D280E090E0DF91CF911F910F91FF90B3 -S1130630EF90DF90CF90BF90AF909F908F900895F0 -S1130640AF92BF92CF92DF92EF92FF920F931F93DC -S1130650FC01862FBA01A9014450510961097E4F5A -S1130660440F551F661F771F440F551F661F771FC2 -S1130670440F551F661F771F440F551F661F771FB2 -S1130680440F551F661F771F440F551F661F771FA2 -S1130690440F551F661F771F882319F0813049F1D5 -S11306A04FC0962F937086A18C7F892B86A357A366 -S11306B040A7F2A6E3A6D601C501072E7CE0B695B5 -S11306C0A795979587957A95D1F7702D8370829524 -S11306D0807F0370802B81A7B4A2A5A2AF014C5DDB -S11306E05F4F08E010E020E030E06AE2CF016CDF09 -S11306F027C0962F937086A58C7F892B86A757A732 -S113070040ABF2AAE3AAD601C501072E7CE0B69558 -S1130710A795979587957A95D1F7702D83708295D3 -S1130720807F0370802B81ABB4A6A5A6AF01445D86 -S11307305F4F08E010E020E030E062E3CF0144DFE7 -S113074080E090E01F910F91FF90EF90DF90CF90A9 -S1130750BF90AF9008950F931F93662319F06130F3 -S113076039F00BC0FC01278140FB20F9278305C029 -S1130770FC01278140FB21F92783AC01495F5F4FCE -S113078001E010E020E030E063E01EDF80E090E074 -S11307901F910F9108950F931F93662319F06130F1 -S11307A0A1F022C0FC01228540FB27F933853F7D5F -S11307B033872F642287AC01465F5F4F01E010E06E -S11307C020E030E060E100DF0FC0FC01238540FB46 -S11307D027F92F662387AC01455F5F4F01E010E0E6 -S11307E020E030E061E1F0DE80E090E01F910F91C5 -S11307F008950F931F93662319F0613039F00AC0EE -S1130800FC0121852B7F277F218704C0FC012185E2 -S113081024602187AC01475F5F4F01E010E020E0D6 -S113082030E060EFD1DE80E090E01F910F910895F9 -S11308300F931F9331E0611101C030E0FC01E95ACC -S1130840FF4F208130FB25F9208331E0411101C0A5 -S113085030E0AC01495A5F4FFA01208130FB27F99F -S1130860208301E010E020E030E061EBADDE80E0C9 -S113087090E01F910F910895AF92BF92CF92DF92B3 -S1130880EF92FF920F931F93CF93DF93EC016623B4 -S113089019F0613001F13DC042708E898C7F482B84 -S11308A04E8B3F8B288FD801C70188279927AF70BB -S11308B0BB27FA8EEB8E8A2F8F70898FBC8AAD8A04 -S11308C008E010E020E030E0AE014C5E5F4F6AE1EA -S11308D0CE017ADE1EC042708E8D8C7F482B4E8FE7 -S11308E03F8F28A3D801C70188279927AF70BB275A -S11308F0FAA2EBA28A2F8F7089A3BC8EAD8E08E07A -S113090010E020E030E0AE01445E5F4F62E2CE01D1 -S11309105BDE41E061E0CE018BDF80E090E0DF91BF -S1130920CF911F910F91FF90EF90DF90CF90BF90E8 -S1130930AF900895EF92FF920F931F93CF93DF939D -S11309401F92CDB7DEB7009709F485C06115710514 -S113095009F484C04115510509F483C07C01DC010C -S11309606D937C93119712964D935C931397FC01AE -S1130970349684E5DF011D928A95E9F78FEF898328 -S113098001E010E020E030E0AE014F5F5F4F63E034 -S1130990C7011ADE80E8898301E010E020E030E03E -S11309A0AE014F5F5F4F60E1C7010EDE01E010E072 -S11309B020E030E0AE014F5F5F4F61E1C70104DE2C -S11309C001E010E020E030E0AE014F5F5F4F62E1F4 -S11309D0C701FADD01E010E020E030E0AE014F5F36 -S11309E05F4F63E1C701F0DD01E010E020E030E09B -S11309F0AE014F5F5F4F64E1C701E6DD01E010E047 -S1130A0020E030E0AE014F5F5F4F65E1C701DCDD00 -S1130A1001E010E020E030E0AE014F5F5F4F66E19F -S1130A20C701D2DD01E010E020E030E0AE014F5F0D -S1130A305F4F67E1C701C8DD80EC898301E010E006 -S1130A4020E030E0AE014F5F5F4F67EBC701BCDDD4 -S1130A5080E090E008C08FEF9FEF05C08FEF9FEF1D -S1130A6002C08FEF9FEF0F90DF91CF911F910F91F5 -S1130A70FF90EF9008950F931F93CF93DF938230ED -S1130A80910510F482E090E0E0910D3FF0910E3F6B -S1130A9020E030E0A0E0B0E0309719F140815181CE -S1130AA00281138148175907C8F08417950769F420 -S1130AB0109731F012960C93129713961C9327C03B -S1130AC000930D3F10930E3F22C02115310519F0FC -S1130AD04217530718F49A01BD01EF01DF01F80131 -S1130AE0DBCF21153105F9F0281B390B24303105F2 -S1130AF080F48A819B816115710521F0FB01828359 -S1130B00938304C080930D3F90930E3FFE01329671 -S1130B1044C0FE01E20FF31F8193919322503109E7 -S1130B20288339833AC020910B3F30910C3F232B0B -S1130B3041F42091023F3091033F20930B3F3093C7 -S1130B400C3F2091003F3091013F2115310541F4C4 -S1130B502DB73EB74091043F5091053F241B350B00 -S1130B60E0910B3FF0910C3FE217F307A0F42E1B2A -S1130B703F0B2817390778F0AC014E5F5F4F2417FD -S1130B80350748F04E0F5F1F40930B3F50930C3FC7 -S1130B908193919302C0E0E0F0E0CF01DF91CF9127 -S1130BA01F910F910895CF93DF93009709F481C0AB -S1130BB0FC01329712821382A0910D3FB0910E3F37 -S1130BC0109781F420813181820F931F20910B3F74 -S1130BD030910C3F2817390751F5E0930B3FF09300 -S1130BE00C3F67C0ED0120E030E0CE17DF0740F492 -S1130BF04A815B819E0141155105F1F0EA01F5CF6F -S1130C00C283D38340815181840F951FC817D907AC -S1130C1059F488819981840F951F0296808391836A -S1130C208A819B81828393832115310529F4E09382 -S1130C300D3FF0930E3F3DC0E901EA83FB834991E8 -S1130C405991C40FD51FEC17FD0761F48081918180 -S1130C50840F951F0296E901888399838281938189 -S1130C608A839B83E0E0F0E012968D919C91139728 -S1130C70009719F0FD01DC01F7CF8D919C9111973C -S1130C809D012E5F3F4F820F931F20910B3F3091A8 -S1130C900C3F2817390769F4309729F410920D3F57 -S1130CA010920E3F02C012821382A0930B3FB093A6 -S1130CB00C3FDF91CF910895FB01DC0102C001904C -S1110CC00D9241505040D8F70895F894FFCF9C -S1090CCE00000F3F2000AE +S11300402FE3A6E0BFE301C01D92A035B207E1F79C +S11300501FE3A0E0BFE3E9E6F9E002C005900D92DA +S1130060A630B107D9F74DD27BC4CACFE0E1F8E09E +S113007084818860848381E0858308958093170850 +S113008080911508807CE1F390911508892F807187 +S113009094FF04C083E08093140881E00895CF9214 +S11300A0DF92EF92FF92CF93DF93EB0169017A0124 +S11300B0232B242B252B81F1E1DF811130C09E01FC +S11300C02F5F3F4F8881809318088091150886FF21 +S11300D0FCCF8091150884FF06C083E08093140848 +S11300E081E090E01EC0809115088C7021F0BEDF85 +S11300F081E090E016C08091150884FD07C081E07E +S1130100C81AD108E108F108E901C9F683E080932F +S1130110140880E090E005C08FEF9FEF02C08FEFDE +S11301209FEFDF91CF91FF90EF90DF90CF900895F4 +S1130130CF92DF92EF92FF92CF93DF93EB016901AD +S11301407A01232B242B252B69F1816097DF8823E7 +S1130150C9F02BC080911508807CE1F3CE01019693 +S1130160209118082883411551056105710521F472 +S113017024E02093140803C022E0209314086A01A9 +S11301807B01EC01B701A6014150510961097109D4 +S1130190CD28CE28CF28F1F683E08093140880E0A0 +S11301A090E005C081E090E002C08FEF9FEFDF9107 +S11301B0CF91FF90EF90DF90CF9008958093170830 +S11301C08091150886FFFCCF8091150884FF06C036 +S11301D083E08093140881E090E0089583E08093A5 +S11301E0140880E090E00895E0E0F4E080818B7FE3 +S11301F080838081877F8083A0E1B8E08BE01696BE +S11302008C93169781E013968C93139715968C9381 +S113021088E0828B838B80E090E00895EF92FF92D8 +S11302200F931F93CF938C017B01C42F842F880FCE +S1130230C5DF009749F4F801E082F1824C2F50E0C9 +S1130240440F551F428302C08EEF9FEFCF911F9141 +S11302500F91FF90EF9008950F93009781F0FC01A8 +S1130260002319F0013031F00DC0828161DF80E09C +S113027090E00AC0828113DF80E090E005C08FEF38 +S11302809FEF02C080E090E00F910895CF93DF9339 +S11302901F92CDB7DEB7AC01F894E0E0F8E02CE6AD +S11302A035E02087318793E0978390EC968361153E +S11302B0710511F4452B39F080E8809305086093AB +S11302C0063F7093073F80910408882324F48091AB +S11302D0000889838981E0E0F4E080E4818380E898 +S11302E0828378940F90DF91CF91089590910408C0 +S11302F095FFFCCF8093020808951F920F920FB6CA +S11303000F9211242F933F934F935F936F937F9397 +S11303108F939F93AF93BF93EF93FF93CF93DF9309 +S11303201F92CDB7DEB7E091063FF091073F3097BB +S113033019F08091000809958091000889838981CA +S1130340D5DF0F90DF91CF91FF91EF91BF91AF91E6 +S11303509F918F917F916F915F914F913F912F91D9 +S11303600F900FBE0F901F901895E091413FE2301F +S113037029F128F4EE2341F0E13091F040C0E3305C +S113038059F1E430B9F13BC0F0E0EC59F647208173 +S113039091E0281390E09093413F81E090E008952C +S11303A0F0E0EC59F6479081891302C082E001C065 +S11303B080E08093413F81E090E00895F0E0EC59C3 +S11303C0F6479081891302C083E001C080E08093E6 +S11303D0413F81E090E00895F0E0EC59F6479081C8 +S11303E0891302C084E001C080E08093413F81E032 +S11303F090E008951092413F80E090E008951092BB +S1130400413F81E090E008959091403F9330C1F0E6 +S113041028F4992341F0913069F042C09430C1F03E +S1130420953001F13DC0A1DF892BD1F581E08093A6 +S1130430403F36C08093093F83E08093403F30C003 +S1130440E9E0FFE31182828384E08093403F28C087 +S1130450E9E0FFE321813281282B2183328395E077 +S11304609093403F9091083FE92FF0E0E75FF04C14 +S1130470838381E0890F8093083F9091093F981707 +S113048078F4E091443FF091453F6CE07FE3809144 +S1130490423F9091433F09951092403F1092083F8C +S11304A080E090E00895009759F06115710541F0DE +S11304B08093423F9093433F6093443F7093453F02 +S11304C00895FC0111820895FC0164837583F9DFAA +S11304D080E090E00895CF93DF936115710571F08A +S11304E0009761F0EC01198218826A837B8364E6C9 +S11304F072E0D9DF64E072E0CE01C8DEDF91CF9113 +S11305000895CF93DF93CDB7DEB7CB55D109CDBFD7 +S1130510DEBF80E090E068DE40E660E070E0CE019F +S113052001967CDE4CE251E0BE016F5F7F4FCE014D +S113053004964BD0BE016C5F7F4F86E49FE3CBDF14 +S11305402AE684E091E0215080409040E1F700C029 +S1130550F7CF8F929F92AF92BF92CF92DF92EF929A +S1130560FF920F931F93CF93DF93EC01862E5A01D2 +S113057068017901C8010196C9D0982E192FFC0190 +S11305808192CF01A601B501E2D1EA81FB81A701E5 +S113059096012F5F3F4F4F4F5F4F01E0692D712F41 +S11305A0888199810995892D912F48D180E090E027 +S11305B0DF91CF911F910F91FF90EF90DF90CF903B +S11305C0BF90AF909F908F900895EF92FF920F93FA +S11305D01F93CF93DF931F92CDB7DEB7009709F433 +S11305E085C06115710509F484C04115510509F4EC +S11305F083C07C01DC016D937C93119712964D931B +S11306005C931397FC01349684E5DF011D928A956F +S1130610E9F78FEF898301E010E020E030E0AE01DC +S11306204F5F5F4F63E0C70194DF80E8898301E097 +S113063010E020E030E0AE014F5F5F4F60E1C701A2 +S113064088DF01E010E020E030E0AE014F5F5F4F53 +S113065061E1C7017EDF01E010E020E030E0AE019F +S11306604F5F5F4F62E1C70174DF01E010E020E0FB +S113067030E0AE014F5F5F4F63E1C7016ADF01E025 +S113068010E020E030E0AE014F5F5F4F64E1C7014E +S113069060DF01E010E020E030E0AE014F5F5F4F2B +S11306A065E1C70156DF01E010E020E030E0AE0173 +S11306B04F5F5F4F66E1C7014CDF01E010E020E0CF +S11306C030E0AE014F5F5F4F67E1C70142DF80EC6E +S11306D0898301E010E020E030E0AE014F5F5F4F1E +S11306E067EBC70136DF80E090E008C08FEF9FEF33 +S11306F005C08FEF9FEF02C08FEF9FEF0F90DF9148 +S1130700CF911F910F91FF90EF9008950F931F9336 +S1130710CF93DF938230910510F482E090E0E09172 +S11307204E3FF0914F3F20E030E0A0E0B0E0309742 +S113073019F1408151810281138148175907C8F08A +S11307408417950769F4109731F012960C93129759 +S113075013961C9327C000934E3F10934F3F22C023 +S11307602115310519F04217530718F49A01BD01F8 +S1130770EF01DF01F801DBCF21153105F9F0281B6A +S1130780390B2430310580F48A819B816115710510 +S113079021F0FB018283938304C080934E3F9093A6 +S11307A04F3FFE01329644C0FE01E20FF31F8193D6 +S11307B0919322503109288339833AC020914C3FC8 +S11307C030914D3F232B41F42091023F3091033F60 +S11307D020934C3F30934D3F2091003F3091013F97 +S11307E02115310541F42DB73EB74091043F509196 +S11307F0053F241B350BE0914C3FF0914D3FE21730 +S1130800F307A0F42E1B3F0B2817390778F0AC012F +S11308104E5F5F4F2417350748F04E0F5F1F40931C +S11308204C3F50934D3F8193919302C0E0E0F0E040 +S1130830CF01DF91CF911F910F910895CF93DF9353 +S1130840009709F481C0FC01329712821382A091AF +S11308504E3FB0914F3F109781F420813181820F38 +S1130860931F20914C3F30914D3F2817390751F584 +S1130870E0934C3FF0934D3F67C0ED0120E030E042 +S1130880CE17DF0740F44A815B819E014115510573 +S1130890F1F0EA01F5CFC283D38340815181840F03 +S11308A0951FC817D90759F488819981840F951F1A +S11308B00296808391838A819B818283938321150D +S11308C0310529F4E0934E3FF0934F3F3DC0E901D9 +S11308D0EA83FB8349915991C40FD51FEC17FD0797 +S11308E061F480819181840F951F0296E9018883C8 +S11308F09983828193818A839B83E0E0F0E012965E +S11309008D919C911397009719F0FD01DC01F7CFAD +S11309108D919C9111979D012E5F3F4F820F931FE4 +S113092020914C3F30914D3F2817390769F4309797 +S113093029F410924E3F10924F3F02C0128213824C +S1130940A0934C3FB0934D3FDF91CF910895FB01AD +S1130950DC0102C001900D9241505040D8F7089537 +S1070960F894FFCF35 +S10809644F5A31434D20 +S10909690000503F2000D5 S9030000FC diff --git a/storno_cqp6xx_digital_xtal/avr_eeprom_driver b/storno_cqp6xx_digital_xtal/avr_eeprom_driver new file mode 160000 index 0000000..a659fd1 --- /dev/null +++ b/storno_cqp6xx_digital_xtal/avr_eeprom_driver @@ -0,0 +1 @@ +Subproject commit a659fd165f91bb8d7d8d5812f2a41f3a03c6f315 diff --git a/storno_cqp6xx_digital_xtal/avr_uart_driver b/storno_cqp6xx_digital_xtal/avr_uart_driver index 504b48b..291af7f 160000 --- a/storno_cqp6xx_digital_xtal/avr_uart_driver +++ b/storno_cqp6xx_digital_xtal/avr_uart_driver @@ -1 +1 @@ -Subproject commit 504b48b1b14fd8ff7e89e102e97fb7298e41c6c8 +Subproject commit 291af7f90d04a417b12229b21093c4ac0bfd9df9 diff --git a/storno_cqp6xx_digital_xtal/cm_msg b/storno_cqp6xx_digital_xtal/cm_msg index 37137d5..253f9b8 160000 --- a/storno_cqp6xx_digital_xtal/cm_msg +++ b/storno_cqp6xx_digital_xtal/cm_msg @@ -1 +1 @@ -Subproject commit 37137d5fa498f8dd14f44ebefc2067e97ba0849e +Subproject commit 253f9b8e208076a513ce92447c06bc55a770068d diff --git a/storno_cqp6xx_digital_xtal/cqm6xx_app.c b/storno_cqp6xx_digital_xtal/cqm6xx_app.c index 7df40c8..a81109d 100644 --- a/storno_cqp6xx_digital_xtal/cqm6xx_app.c +++ b/storno_cqp6xx_digital_xtal/cqm6xx_app.c @@ -7,9 +7,15 @@ #include "cqm6xx_app.h" #include "si5351_driver/include/si5351_driver.h" #include "avr_gpio_driver/avr_gpio.h" +#include "avr_uart_driver/avr_uart.h" #include "avr_global_config.h" +#include "avr_eeprom_driver/avr_eeprom_driver.h" +#include "cm_msg/cm_msg.h" #include +#define PLLA_SETTINGS_EEPROM_ADDR 0x00 // addr 0 +#define PLLB_SETTINGS_EEPROM_ADDR 0x20 // addr 32 (64 bytes total memory) + static uint8_t isStructValid(storno_xtal_app_t *inst){ if(inst->si5351_dev == NULL) return 1; @@ -51,6 +57,43 @@ static void cqm6xx_app_updateOsc(storno_xtal_app_t *inst){ } + +static void cqm_setPLLParam(storno_xtal_app_t *inst, si5351_PLLs pll_num, si5351_Outputs output){ + + cm_setPllParamRaw(inst->si5351_dev,pll_num, inst->pll_param_ptr->MSNx_P1, inst->pll_param_ptr->MSNx_P2, inst->pll_param_ptr->MSNx_P3); + _delay_ms(1); + cm_setOutputMultiSynth(inst->si5351_dev,output, inst->pll_param_ptr->MSx_P1, inst->pll_param_ptr->MSx_P2, inst->pll_param_ptr->MSx_P3); + _delay_ms(1); + cm_setCLKControl(inst->si5351_dev,output,SI5351_CLK_POWER_UP); + + +} + +static void cqm6xx_app_loadPLLParam(storno_xtal_app_t *inst){ + + cm_setInputSource(inst->si5351_dev, SI5351_CLK_SOURCE_XTAL); + _delay_ms(1); + + storno_pll_param_msg temp_msg; + uint8_t *msg_ptr = (void*)&temp_msg; + + cm_EEPROM_read(PLLA_SETTINGS_EEPROM_ADDR,msg_ptr,sizeof(storno_pll_param_msg)); + inst->pll_param_ptr = &temp_msg; + 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(PLLB_SETTINGS_EEPROM_ADDR,msg_ptr,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); + + inst->pll_param_ptr = NULL; + + +} + void cqm6xx_app_statemachine(storno_xtal_app_t *inst){ // Check Struct @@ -59,22 +102,11 @@ void cqm6xx_app_statemachine(storno_xtal_app_t *inst){ switch (inst->state_next) { case STORNO_APP_PROGRAM_OSC: - // Program PLL values here: + // Read PLL parameters from EEPROM and Program PLL values here: inst->state_now = inst->state_next; - _delay_ms(1); - cm_setInputSource(inst->si5351_dev, SI5351_CLK_SOURCE_XTAL); - _delay_ms(1); - cm_setPllParamRaw(inst->si5351_dev,SI5351_PLL_A, 3395, 11510, 1067099); - _delay_ms(1); - cm_setPllParamRaw(inst->si5351_dev,SI5351_PLL_B, 3272, 16130, 1067200); - _delay_ms(1); - cm_setOutputMultiSynth(inst->si5351_dev,SI5351_OUTPUT_0, 18, 0, 1); - _delay_ms(1); - cm_setOutputMultiSynth(inst->si5351_dev,SI5351_OUTPUT_1, 64, 0, 1); - _delay_ms(1); - cm_setCLKControl(inst->si5351_dev,SI5351_OUTPUT_0,SI5351_CLK_POWER_UP); - _delay_ms(1); - cm_setCLKControl(inst->si5351_dev,SI5351_OUTPUT_1,SI5351_CLK_POWER_UP); + + //cqm6xx_app_loadPLLParam(inst); + // if ok, then go to RX mode: inst->state_next = STORNO_APP_RX_MODE; @@ -116,6 +148,39 @@ void cqm6xx_app_statemachine(storno_xtal_app_t *inst){ } + +void programPLL_Parameters(storno_xtal_app_t *inst){ + + //Burn settings into eeprom here: + switch(inst->pll_param_ptr->PLL_Ident){ + + case MSG_PLLA_PARAM: + //cm_EEPROM_write(PLLA_SETTINGS_EEPROM_ADDR,(uint8_t*)(inst->pll_param_ptr), sizeof(storno_pll_param_msg)); + break; + + case MSG_PLLB_PARAM: + //cm_EEPROM_write(PLLB_SETTINGS_EEPROM_ADDR,(uint8_t*)(inst->pll_param_ptr), sizeof(storno_pll_param_msg)); + break; + + } + + // Send status back maybe.. + + //Force state machine to load new settings from eeprom: + inst->state_next = STORNO_APP_PROGRAM_OSC; + +} + +int uart_rx_event(storno_xtal_app_t *inst, void *rxData){ + + inst->pll_param_ptr = rxData; + + programPLL_Parameters(inst); + + return 0; + +} + void cqm6xx_app_init(storno_xtal_app_t *inst, void *si5351_dev){ if(si5351_dev == NULL) return; @@ -126,5 +191,8 @@ 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); } \ 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 ea8bfc0..128eddb 100644 --- a/storno_cqp6xx_digital_xtal/cqm6xx_app.h +++ b/storno_cqp6xx_digital_xtal/cqm6xx_app.h @@ -12,7 +12,11 @@ #include "stdio.h" #include "stdint.h" - +enum{ + MSG_PLLA_PARAM = 0, + MSG_PLLB_PARAM = 1, + + }; typedef struct { @@ -36,8 +40,7 @@ typedef enum { STORNO_APP_PROGRAM_OSC = 0, STORNO_APP_RX_MODE = 1, STORNO_APP_TX_MODE = 2, - STORNO_APP_PROGRAM_MODE = 3, - STORNO_APP_RST_TO_BOOTLOADER = 4, + STORNO_APP_RST_TO_BOOTLOADER = 5, }storno_app_states; @@ -47,6 +50,7 @@ typedef struct { storno_app_states state_next; void *si5351_dev; + storno_pll_param_msg *pll_param_ptr; diff --git a/storno_cqp6xx_digital_xtal/main.c b/storno_cqp6xx_digital_xtal/main.c index b5038b6..7f13166 100644 --- a/storno_cqp6xx_digital_xtal/main.c +++ b/storno_cqp6xx_digital_xtal/main.c @@ -13,10 +13,13 @@ #include "cqm6xx_app.h" storno_xtal_app_t storno_xtal_app; -uint8_t received_data = 0; - - +void uart_test(uint8_t data){ + + if(data == 'O'){ + return; + } +} int main(void) { @@ -35,35 +38,43 @@ int main(void) cqm6xx_app_init(&storno_xtal_app, &si5351_dev); - cm_uart_init(); - cm_uart_send('r'); - cm_uart_send('r'); - - cm_uart_send('\n'); - cm_uart_send('\r'); -/* cm_setInputSource(&si5351_dev, SI5351_CLK_SOURCE_XTAL); - cm_setPllParamRaw(&si5351_dev,SI5351_PLL_A, 3395, 11510, 1067099); - cm_setPllParamRaw(&si5351_dev,SI5351_PLL_B, 3272, 16130, 1067200); - //cm_setOutputMultiSynth(&si5351_dev,SI5351_OUTPUT_0, 18, 0, 1); - cm_setOutputMultiSynth(&si5351_dev,SI5351_OUTPUT_1, 64, 0, 1); - - //cm_setCLKControl(&si5351_dev,SI5351_OUTPUT_0,SI5351_CLK_POWER_UP); - cm_setCLKControl(&si5351_dev,SI5351_OUTPUT_1,SI5351_CLK_POWER_UP); - cm_setOutputEnable(&si5351_dev,SI5351_OUTPUT_1,SI5351_OUTPUT_ENABLE); // TX -*/ - - - while (1) { - cqm6xx_app_statemachine(&storno_xtal_app); + //cqm6xx_app_statemachine(&storno_xtal_app); _delay_ms(100); } } +/* +storno_pll_param_msg StockPLLParam[2] = { + + { + .PLL_Ident = 0, + .MSNx_P1 = 3395, + .MSNx_P2 = 11510, + .MSNx_P3 = 1067099, + + .MSx_P1 = 18, + .MSx_P2 = 0, + .MSx_P3 = 1, + + }, + { + .PLL_Ident = 0, + .MSNx_P1 = 3395, + .MSNx_P2 = 11510, + .MSNx_P3 = 1067099, + + .MSx_P1 = 18, + .MSx_P2 = 0, + .MSx_P3 = 1, + } + + +};*/ diff --git a/storno_cqp6xx_digital_xtal/storno_cqp6xx_digital_xtal.cproj b/storno_cqp6xx_digital_xtal/storno_cqp6xx_digital_xtal.cproj index 293ba4b..a1a80e8 100644 --- a/storno_cqp6xx_digital_xtal/storno_cqp6xx_digital_xtal.cproj +++ b/storno_cqp6xx_digital_xtal/storno_cqp6xx_digital_xtal.cproj @@ -103,50 +103,56 @@ - -mmcu=attiny402 -B "%24(PackRepoDir)\atmel\ATtiny_DFP\1.10.348\gcc\dev\attiny402" - True - True - True - True - False - True - True - - - DEBUG - - - - - %24(PackRepoDir)\atmel\ATtiny_DFP\1.10.348\include\ - - - Optimize debugging experience (-Og) - True - True - Default (-g2) - True - - - libm - - - - - D:\cm_projects\microchip_studio_projects\storno_cqp6xx_digital_xtal\storno_cqp6xx_digital_xtal\si5351_driver\include - ../avr_uart_driver - - - - - %24(PackRepoDir)\atmel\ATtiny_DFP\1.10.348\include\ - - - Default (-Wa,-g) - + -mmcu=attiny402 -B "%24(PackRepoDir)\atmel\ATtiny_DFP\1.10.348\gcc\dev\attiny402" + True + True + True + True + False + True + True + + + DEBUG + + + + + %24(PackRepoDir)\atmel\ATtiny_DFP\1.10.348\include\ + + + Optimize debugging experience (-Og) + True + True + Default (-g2) + True + + + libm + + + + + D:\cm_projects\microchip_studio_projects\storno_cqp6xx_digital_xtal\storno_cqp6xx_digital_xtal\si5351_driver\include + ../avr_uart_driver + + + + + %24(PackRepoDir)\atmel\ATtiny_DFP\1.10.348\include\ + + + Default (-Wa,-g) + + + compile + + + compile + compile @@ -194,6 +200,7 @@ + @@ -202,6 +209,15 @@ + + compile + + + compile + + + compile + compile