diff --git a/.gitmodules b/.gitmodules index 89b9aed..975d033 100644 --- a/.gitmodules +++ b/.gitmodules @@ -7,3 +7,6 @@ [submodule "storno_cqp6xx_digital_xtal/avr_uart_driver"] path = storno_cqp6xx_digital_xtal/avr_uart_driver url = https://OZ1CM@bitbucket.org/oz1cm/avr_uart_driver.git +[submodule "storno_cqp6xx_digital_xtal/avr_gpio_driver"] + path = storno_cqp6xx_digital_xtal/avr_gpio_driver + url = https://OZ1CM@bitbucket.org/oz1cm/avr_gpio_driver.git diff --git a/storno_cqp6xx_digital_xtal/Debug/Makefile b/storno_cqp6xx_digital_xtal/Debug/Makefile index 891279e..ac44ed1 100644 --- a/storno_cqp6xx_digital_xtal/Debug/Makefile +++ b/storno_cqp6xx_digital_xtal/Debug/Makefile @@ -33,6 +33,7 @@ LINKER_SCRIPT_DEP:= # Every subdirectory with source files must be described here SUBDIRS := \ +../avr_gpio_driver/ \ ../avr_i2c_driver/ \ ../avr_uart_driver/ \ ../si5351_driver/ \ @@ -41,6 +42,7 @@ SUBDIRS := \ # Add inputs and outputs from these tool invocations to the build variables C_SRCS += \ +../avr_gpio_driver/avr_gpio.c \ ../avr_i2c_driver/avr_i2c.c \ ../avr_uart_driver/avr_uart.c \ ../cqm6xx_app.c \ @@ -55,6 +57,7 @@ ASM_SRCS += OBJS += \ +avr_gpio_driver/avr_gpio.o \ avr_i2c_driver/avr_i2c.o \ avr_uart_driver/avr_uart.o \ cqm6xx_app.o \ @@ -62,6 +65,7 @@ main.o \ si5351_driver/si5351_driver.o OBJS_AS_ARGS += \ +avr_gpio_driver/avr_gpio.o \ avr_i2c_driver/avr_i2c.o \ avr_uart_driver/avr_uart.o \ cqm6xx_app.o \ @@ -69,6 +73,7 @@ main.o \ si5351_driver/si5351_driver.o C_DEPS += \ +avr_gpio_driver/avr_gpio.d \ avr_i2c_driver/avr_i2c.d \ avr_uart_driver/avr_uart.d \ cqm6xx_app.d \ @@ -76,6 +81,7 @@ main.d \ si5351_driver/si5351_driver.d C_DEPS_AS_ARGS += \ +avr_gpio_driver/avr_gpio.d \ avr_i2c_driver/avr_i2c.d \ avr_uart_driver/avr_uart.d \ cqm6xx_app.d \ @@ -96,6 +102,13 @@ LINKER_SCRIPT_DEP+= # AVR32/GNU C Compiler +avr_gpio_driver/avr_gpio.o: ../avr_gpio_driver/avr_gpio.c + @echo Building file: $< + @echo Invoking: AVR/GNU C Compiler : 5.4.0 + $(QUOTE)C:\Program Files (x86)\Atmel\Studio\7.0\toolchain\avr8\avr8-gnu-toolchain\bin\avr-gcc.exe$(QUOTE) -x c -funsigned-char -funsigned-bitfields -DDEBUG -I"C:\Program Files (x86)\Atmel\Studio\7.0\Packs\atmel\ATtiny_DFP\1.10.348\include" -Og -ffunction-sections -fdata-sections -fpack-struct -fshort-enums -g2 -Wall -mmcu=attiny402 -B "C:\Program Files (x86)\Atmel\Studio\7.0\Packs\atmel\ATtiny_DFP\1.10.348\gcc\dev\attiny402" -c -std=gnu99 -MD -MP -MF "$(@:%.o=%.d)" -MT"$(@:%.o=%.d)" -MT"$(@:%.o=%.o)" -o "$@" "$<" + @echo Finished building: $< + + avr_i2c_driver/avr_i2c.o: ../avr_i2c_driver/avr_i2c.c @echo Building file: $< @echo Invoking: AVR/GNU C Compiler : 5.4.0 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 419eb9c..b6868e8 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 b81c053..3c543fd 100644 --- a/storno_cqp6xx_digital_xtal/Debug/cqm6xx_app.d +++ b/storno_cqp6xx_digital_xtal/Debug/cqm6xx_app.d @@ -1 +1,72 @@ -cqm6xx_app.d cqm6xx_app.o: .././cqm6xx_app.c +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\stdio.h \ + c:\program\ files\ (x86)\atmel\studio\7.0\toolchain\avr8\avr8-gnu-toolchain\avr\include\inttypes.h \ + c:\program\ files\ (x86)\atmel\studio\7.0\toolchain\avr8\avr8-gnu-toolchain\lib\gcc\avr\5.4.0\include\stdint.h \ + c:\program\ files\ (x86)\atmel\studio\7.0\toolchain\avr8\avr8-gnu-toolchain\avr\include\stdint.h \ + c:\program\ files\ (x86)\atmel\studio\7.0\toolchain\avr8\avr8-gnu-toolchain\lib\gcc\avr\5.4.0\include\stdarg.h \ + c:\program\ files\ (x86)\atmel\studio\7.0\toolchain\avr8\avr8-gnu-toolchain\lib\gcc\avr\5.4.0\include\stddef.h \ + .././si5351_driver/include/si5351_driver.h \ + .././avr_gpio_driver/avr_gpio.h \ + .././avr_gpio_driver/../avr_global_config.h \ + c:\program\ files\ (x86)\atmel\studio\7.0\toolchain\avr8\avr8-gnu-toolchain\avr\include\avr\io.h \ + c:\program\ files\ (x86)\atmel\studio\7.0\toolchain\avr8\avr8-gnu-toolchain\avr\include\avr\sfr_defs.h \ + C:\Program\ Files\ (x86)\Atmel\Studio\7.0\Packs\atmel\ATtiny_DFP\1.10.348\include/avr/iotn402.h \ + c:\program\ files\ (x86)\atmel\studio\7.0\toolchain\avr8\avr8-gnu-toolchain\avr\include\avr\portpins.h \ + c:\program\ files\ (x86)\atmel\studio\7.0\toolchain\avr8\avr8-gnu-toolchain\avr\include\avr\common.h \ + c:\program\ files\ (x86)\atmel\studio\7.0\toolchain\avr8\avr8-gnu-toolchain\avr\include\avr\version.h \ + c:\program\ files\ (x86)\atmel\studio\7.0\toolchain\avr8\avr8-gnu-toolchain\avr\include\avr\xmega.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 \ + 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 + +.././cqm6xx_app.h: + +c:\program\ files\ (x86)\atmel\studio\7.0\toolchain\avr8\avr8-gnu-toolchain\avr\include\stdio.h: + +c:\program\ files\ (x86)\atmel\studio\7.0\toolchain\avr8\avr8-gnu-toolchain\avr\include\inttypes.h: + +c:\program\ files\ (x86)\atmel\studio\7.0\toolchain\avr8\avr8-gnu-toolchain\lib\gcc\avr\5.4.0\include\stdint.h: + +c:\program\ files\ (x86)\atmel\studio\7.0\toolchain\avr8\avr8-gnu-toolchain\avr\include\stdint.h: + +c:\program\ files\ (x86)\atmel\studio\7.0\toolchain\avr8\avr8-gnu-toolchain\lib\gcc\avr\5.4.0\include\stdarg.h: + +c:\program\ files\ (x86)\atmel\studio\7.0\toolchain\avr8\avr8-gnu-toolchain\lib\gcc\avr\5.4.0\include\stddef.h: + +.././si5351_driver/include/si5351_driver.h: + +.././avr_gpio_driver/avr_gpio.h: + +.././avr_gpio_driver/../avr_global_config.h: + +c:\program\ files\ (x86)\atmel\studio\7.0\toolchain\avr8\avr8-gnu-toolchain\avr\include\avr\io.h: + +c:\program\ files\ (x86)\atmel\studio\7.0\toolchain\avr8\avr8-gnu-toolchain\avr\include\avr\sfr_defs.h: + +C:\Program\ Files\ (x86)\Atmel\Studio\7.0\Packs\atmel\ATtiny_DFP\1.10.348\include/avr/iotn402.h: + +c:\program\ files\ (x86)\atmel\studio\7.0\toolchain\avr8\avr8-gnu-toolchain\avr\include\avr\portpins.h: + +c:\program\ files\ (x86)\atmel\studio\7.0\toolchain\avr8\avr8-gnu-toolchain\avr\include\avr\common.h: + +c:\program\ files\ (x86)\atmel\studio\7.0\toolchain\avr8\avr8-gnu-toolchain\avr\include\avr\version.h: + +c:\program\ files\ (x86)\atmel\studio\7.0\toolchain\avr8\avr8-gnu-toolchain\avr\include\avr\xmega.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: + +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: diff --git a/storno_cqp6xx_digital_xtal/Debug/cqm6xx_app.o b/storno_cqp6xx_digital_xtal/Debug/cqm6xx_app.o index f202de3..8afe603 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.d b/storno_cqp6xx_digital_xtal/Debug/main.d index 230545a..eb109d3 100644 --- a/storno_cqp6xx_digital_xtal/Debug/main.d +++ b/storno_cqp6xx_digital_xtal/Debug/main.d @@ -18,7 +18,11 @@ main.d main.o: .././main.c .././avr_global_config.h \ .././avr_uart_driver/../avr_global_config.h \ .././avr_i2c_driver/avr_i2c.h .././avr_i2c_driver/../avr_global_config.h \ c:\program\ files\ (x86)\atmel\studio\7.0\toolchain\avr8\avr8-gnu-toolchain\lib\gcc\avr\5.4.0\include\stdbool.h \ - c:\program\ files\ (x86)\atmel\studio\7.0\toolchain\avr8\avr8-gnu-toolchain\lib\gcc\avr\5.4.0\include\stddef.h + c:\program\ files\ (x86)\atmel\studio\7.0\toolchain\avr8\avr8-gnu-toolchain\lib\gcc\avr\5.4.0\include\stddef.h \ + .././si5351_driver/include/si5351_driver.h \ + c:\program\ files\ (x86)\atmel\studio\7.0\toolchain\avr8\avr8-gnu-toolchain\avr\include\stdio.h \ + c:\program\ files\ (x86)\atmel\studio\7.0\toolchain\avr8\avr8-gnu-toolchain\lib\gcc\avr\5.4.0\include\stdarg.h \ + .././cqm6xx_app.h .././avr_global_config.h: @@ -63,3 +67,11 @@ 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: c:\program\ files\ (x86)\atmel\studio\7.0\toolchain\avr8\avr8-gnu-toolchain\lib\gcc\avr\5.4.0\include\stddef.h: + +.././si5351_driver/include/si5351_driver.h: + +c:\program\ files\ (x86)\atmel\studio\7.0\toolchain\avr8\avr8-gnu-toolchain\avr\include\stdio.h: + +c:\program\ files\ (x86)\atmel\studio\7.0\toolchain\avr8\avr8-gnu-toolchain\lib\gcc\avr\5.4.0\include\stdarg.h: + +.././cqm6xx_app.h: diff --git a/storno_cqp6xx_digital_xtal/Debug/main.o b/storno_cqp6xx_digital_xtal/Debug/main.o index 7904650..1da459a 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 53ea844..a247ef4 100644 --- a/storno_cqp6xx_digital_xtal/Debug/makedep.mk +++ b/storno_cqp6xx_digital_xtal/Debug/makedep.mk @@ -2,6 +2,8 @@ # Automatically-generated file. Do not edit or delete the file ################################################################################ +avr_gpio_driver\avr_gpio.c + avr_i2c_driver\avr_i2c.c avr_uart_driver\avr_uart.c diff --git a/storno_cqp6xx_digital_xtal/Debug/si5351_driver/si5351_driver.d b/storno_cqp6xx_digital_xtal/Debug/si5351_driver/si5351_driver.d index 49f94a3..fe89ffd 100644 --- a/storno_cqp6xx_digital_xtal/Debug/si5351_driver/si5351_driver.d +++ b/storno_cqp6xx_digital_xtal/Debug/si5351_driver/si5351_driver.d @@ -6,7 +6,10 @@ si5351_driver/si5351_driver.d si5351_driver/si5351_driver.o: \ c:\program\ files\ (x86)\atmel\studio\7.0\toolchain\avr8\avr8-gnu-toolchain\lib\gcc\avr\5.4.0\include\stdint.h \ c:\program\ files\ (x86)\atmel\studio\7.0\toolchain\avr8\avr8-gnu-toolchain\avr\include\stdint.h \ c:\program\ files\ (x86)\atmel\studio\7.0\toolchain\avr8\avr8-gnu-toolchain\lib\gcc\avr\5.4.0\include\stdarg.h \ - c:\program\ files\ (x86)\atmel\studio\7.0\toolchain\avr8\avr8-gnu-toolchain\lib\gcc\avr\5.4.0\include\stddef.h + c:\program\ files\ (x86)\atmel\studio\7.0\toolchain\avr8\avr8-gnu-toolchain\lib\gcc\avr\5.4.0\include\stddef.h \ + c:\program\ files\ (x86)\atmel\studio\7.0\toolchain\avr8\avr8-gnu-toolchain\avr\include\stdlib.h \ + c:\program\ files\ (x86)\atmel\studio\7.0\toolchain\avr8\avr8-gnu-toolchain\avr\include\string.h \ + c:\program\ files\ (x86)\atmel\studio\7.0\toolchain\avr8\avr8-gnu-toolchain\avr\include\math.h ../si5351_driver/include/si5351_driver.h: @@ -21,3 +24,9 @@ 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\stdarg.h: c:\program\ files\ (x86)\atmel\studio\7.0\toolchain\avr8\avr8-gnu-toolchain\lib\gcc\avr\5.4.0\include\stddef.h: + +c:\program\ files\ (x86)\atmel\studio\7.0\toolchain\avr8\avr8-gnu-toolchain\avr\include\stdlib.h: + +c:\program\ files\ (x86)\atmel\studio\7.0\toolchain\avr8\avr8-gnu-toolchain\avr\include\string.h: + +c:\program\ files\ (x86)\atmel\studio\7.0\toolchain\avr8\avr8-gnu-toolchain\avr\include\math.h: 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 99c0e9f..33c64c9 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 5d0aaa2..801ac80 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 1ad6d5e..bf68c67 100644 --- a/storno_cqp6xx_digital_xtal/Debug/storno_cqp6xx_digital_xtal.hex +++ b/storno_cqp6xx_digital_xtal/Debug/storno_cqp6xx_digital_xtal.hex @@ -1,19 +1,196 @@ -:1000000019C020C01FC01EC01DC01CC01BC01AC00C -:1000100019C018C017C016C015C014C013C012C034 -:1000200011C010C00FC00EC00DC00CC00BC00AC064 -:1000300009C008C011241FBECFEFCDBFDFE3DEBF74 -:1000400045D06AC0DDCF809317088091150886FFE0 -:10005000FCCF8091150884FF06C083E080931408CC -:1000600081E090E0089583E08093140880E090E0C0 -:100070000895E0E1F8E08BE0868381E08383858367 -:10008000E0E0F4E088E0828B838B80E090E00895EC -:10009000EF92FF920F931F93CF938C017B01C42F9C -:1000A000842F880FD0DF009749F4F801E082F182B5 -:1000B0004C2F50E0440F551F428302C08EEF9FEF3C -:1000C000CF911F910F91FF90EF900895CF93DF9301 -:1000D00000D01F92CDB7DEB7E0E0F4E080818B7FE7 -:1000E00080838081877F808380E090E0C2DF25E18C -:1000F00086E195E0215080409040E1F740E660E0E5 -:1001000070E0CE010196C4DF25E186E195E0215043 -:0C01100080409040E1F7EBCFF894FFCF67 +:1000000019C033C032C031C030C02FC02EC02DC087 +:100010002CC02BC02AC029C028C027C026C025C09C +:1000200024C023C022C021C020C01FC01EC01DC0CC +:100030001CC01BC011241FBECFEFCDBFDFE3DEBF4E +:100040002FE3A6E0BFE301C01D92AE30B207E1F797 +:100050001FE3A0E0BFE3E8E1FCE002C005900D92E1 +:10006000A630B107D9F72AD2D5C5CACF81110DC0A4 +: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 +:1002B000FC0122813381232B21F0892B21F481E061 +:1002C000089581E0089580E00895CF93DF93EC01D5 +:1002D000EFDF811132C089819881891771F18130F6 +:1002E00019F08230B1F029C081E493E00197F1F771 +:1002F000000040E060E08A819B81D2D181E493E0FC +:100300000197F1F7000041E061E08A819B81C8D14B +:1003100014C081E493E00197F1F7000041E060E050 +:100320008A819B81BDD181E493E00197F1F70000C0 +:1003300040E061E08A819B81B3D1DF91CF91089544 +:10034000AF92BF92CF92DF92EF92FF920F931F93E3 +:10035000CF93DF93EC01ACDF81119AC089818130AA +:1003600009F47FC020F0823009F487C091C08883EF +:1003700081E493E00197F1F7000060E08A819B81BE +:10038000DDD181E493E00197F1F700000F2EFBE54A +:10039000AF2EF8E4BF2EF0E1CF2ED12CF02D16EFCA +:1003A000E12E1CE2F12E00E010E023E43DE040E00D +:1003B00050E060E08A819B8104D281E493E0019760 +:1003C000F1F700000F2EF0ECAF2EF8E4BF2EF0E1B5 +:1003D000CF2ED12CF02D12E0E12E1FE3F12E00E004 +:1003E00010E028EC3CE040E050E061E08A819B8135 +:1003F000E8D181E493E00197F1F70000A12CB12C42 +:100400006501A394E12CF12C870122E130E040E06A +:1004100050E060E08A819B81B8D081E493E001974D +:10042000F1F7000020E430E040E050E061E08A8134 +:100430009B81ABD081E493E00197F1F7000040E0AD +:1004400060E08A819B814CD181E493E00197F1F7D0 +:10045000000040E061E08A819B8142D181E0898394 +:1004600017C0CE0132DF8981888363E080E0FEDD42 +:10047000019771F482E089830BC0CE0126DF898168 +:10048000888363E080E0F2DD892B11F481E08983C9 +:10049000DF91CF911F910F91FF90EF90DF90CF9060 +:1004A000BF90AF900895FC016115710531F0892B63 +:1004B00021F011821082628373830895CF93DF93BA +:1004C000CDB7DEB7CB55D109CDBFDEBF80E090E020 +:1004D0009DDE40E660E070E0CE010196B1DE4EE3C5 +:1004E00051E0BE016F5F7F4FCE010496C8D1BE01BF +:1004F0006C5F7F4F86E09FE3D6DF86E09FE320DFDF +:100500002AE684E091E0215080409040E1F700C06D +:10051000F4CF8F929F92AF92BF92CF92DF92EF92E1 +:10052000FF920F931F93CF93DF93EC01862E5A0116 +:1005300068017901C801019643D2982E192FFC0158 +:100540008192CF01A601B5015CD3EA81FB81A701AD +:1005500096012F5F3F4F4F4F5F4F01E0692D712F85 +:10056000888199810995892D912FC2D280E090E0F0 +:10057000DF91CF911F910F91FF90EF90DF90CF907F +:10058000BF90AF909F908F900895AF92BF92CF92FF +:10059000DF92EF92FF920F931F93FC01862FBA0117 +:1005A000A9014450510961097E4F440F551F661F30 +:1005B000771F440F551F661F771F440F551F661F77 +:1005C000771F440F551F661F771F440F551F661F67 +:1005D000771F440F551F661F771F440F551F661F57 +:1005E000771F882319F0813049F14FC0962F9370FF +:1005F00086A18C7F892B86A357A340A7F2A6E3A6EA +:10060000D601C501072E7CE0B695A79597958795ED +:100610007A95D1F7702D83708295807F0370802B3F +:1006200081A7B4A2A5A2AF014C5D5F4F08E010E026 +:1006300020E030E06AE2CF016CDF27C0962F937094 +:1006400086A58C7F892B86A757A740ABF2AAE3AA81 +:10065000D601C501072E7CE0B695A795979587959D +:100660007A95D1F7702D83708295807F0370802BEF +:1006700081ABB4A6A5A6AF01445D5F4F08E010E0D2 +:1006800020E030E062E3CF0144DF80E090E01F91A2 +:100690000F91FF90EF90DF90CF90BF90AF900895B3 +:1006A0000F931F93662319F0613039F00BC0FC01E2 +:1006B000278140FB20F9278305C0FC01278140FBEF +:1006C00021F92783AC01495F5F4F01E010E020E092 +:1006D00030E063E01EDF80E090E01F910F9108950D +:1006E0000F931F93662319F06130A1F022C0FC0123 +:1006F000228540FB27F933853F7D33872F6422878E +:10070000AC01465F5F4F01E010E020E030E060E1C7 +:1007100000DF0FC0FC01238540FB27F92F662387EC +:10072000AC01455F5F4F01E010E020E030E061E1A7 +:10073000F0DE80E090E01F910F9108950F931F93DA +:10074000662319F0613039F00AC0FC0121852B7F46 +:10075000277F218704C0FC01218524602187AC010B +:10076000475F5F4F01E010E020E030E060EFD1DE56 +:1007700080E090E01F910F9108950F931F9331E057 +:10078000611101C030E0FC01E95AFF4F208130FBCC +:1007900025F9208331E0411101C030E0AC01495A14 +:1007A0005F4FFA01208130FB27F9208301E010E040 +:1007B00020E030E061EBADDE80E090E01F910F9132 +:1007C0000895AF92BF92CF92DF92EF92FF920F9374 +:1007D0001F93CF93DF93EC01662319F0613001F191 +:1007E0003DC042708E898C7F482B4E8B3F8B288F6B +:1007F000D801C70188279927AF70BB27FA8EEB8EE7 +:100800008A2F8F70898FBC8AAD8A08E010E020E0C3 +:1008100030E0AE014C5E5F4F6AE1CE017ADE1EC071 +:1008200042708E8D8C7F482B4E8F3F8F28A3D8012E +:10083000C70188279927AF70BB27FAA2EBA28A2F9E +:100840008F7089A3BC8EAD8E08E010E020E030E010 +:10085000AE01445E5F4F62E2CE015BDE41E061E0EB +:10086000CE018BDF80E090E0DF91CF911F910F915F +:10087000FF90EF90DF90CF90BF90AF900895EF92F0 +:10088000FF920F931F93CF93DF931F92CDB7DEB7E5 +:10089000009709F485C06115710509F484C04115FC +:1008A000510509F483C07C01DC016D937C931197A1 +:1008B00012964D935C931397FC01349684E5DF0107 +:1008C0001D928A95E9F78FEF898301E010E020E01F +:1008D00030E0AE014F5F5F4F63E0C7011ADE80E892 +:1008E000898301E010E020E030E0AE014F5F5F4F10 +:1008F00060E1C7010EDE01E010E020E030E0AE0173 +:100900004F5F5F4F61E1C70104DE01E010E020E0CE +:1009100030E0AE014F5F5F4F62E1C701FADD01E0F9 +:1009200010E020E030E0AE014F5F5F4F63E1C701B0 +:10093000F0DD01E010E020E030E0AE014F5F5F4FFE +:1009400064E1C701E6DD01E010E020E030E0AE0147 +:100950004F5F5F4F65E1C701DCDD01E010E020E0A3 +:1009600030E0AE014F5F5F4F66E1C701D2DD01E0CD +:1009700010E020E030E0AE014F5F5F4F67E1C7015C +:10098000C8DD80EC898301E010E020E030E0AE01BA +:100990004F5F5F4F67EBC701BCDD80E090E008C0B0 +:1009A0008FEF9FEF05C08FEF9FEF02C08FEF9FEF9C +:1009B0000F90DF91CF911F910F91FF90EF900895CD +:1009C0000F931F93CF93DF938230910510F482E051 +:1009D00090E0E0910C3FF0910D3F20E030E0A0E08E +:1009E000B0E0309719F1408151810281138148179D +:1009F0005907C8F08417950769F4109731F01296DB +:100A00000C93129713961C9327C000930C3F1093DE +:100A10000D3F22C02115310519F04217530718F474 +:100A20009A01BD01EF01DF01F801DBCF211531058E +:100A3000F9F0281B390B2430310580F48A819B8121 +:100A40006115710521F0FB018283938304C08093BB +:100A50000C3F90930D3FFE01329644C0FE01E20F21 +:100A6000F31F8193919322503109288339833AC02F +:100A700020910A3F30910B3F232B41F42091023FFC +:100A80003091033F20930A3F30930B3F2091003F6A +:100A90003091013F2115310541F42DB73EB740910A +:100AA000043F5091053F241B350BE0910A3FF09124 +:100AB0000B3FE217F307A0F42E1B3F0B2817390753 +:100AC00078F0AC014E5F5F4F2417350748F04E0FAA +:100AD0005F1F40930A3F50930B3F8193919302C055 +:100AE000E0E0F0E0CF01DF91CF911F910F910895E9 +:100AF000CF93DF93009709F481C0FC0132971282F3 +:100B00001382A0910C3FB0910D3F109781F420818A +:100B10003181820F931F20910A3F30910B3F28179C +:100B2000390751F5E0930A3FF0930B3F67C0ED01A1 +:100B300020E030E0CE17DF0740F44A815B819E0160 +:100B400041155105F1F0EA01F5CFC283D38340810D +:100B50005181840F951FC817D90759F4888199814D +:100B6000840F951F0296808391838A819B81828363 +:100B700093832115310529F4E0930C3FF0930D3F49 +:100B80003DC0E901EA83FB8349915991C40FD51F08 +:100B9000EC17FD0761F480819181840F951F029607 +:100BA000E90188839983828193818A839B83E0E032 +:100BB000F0E012968D919C911397009719F0FD012A +:100BC000DC01F7CF8D919C9111979D012E5F3F4FD6 +:100BD000820F931F20910A3F30910B3F281739074E +:100BE00069F4309729F410920C3F10920D3F02C027 +:100BF00012821382A0930A3FB0930B3FDF91CF91F3 +:100C00000895FB01DC0102C001900D92415050405B +:080C1000D8F70895F894FFCF16 +:060C180000000E3F200069 :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 7e92a24..58124c1 100644 --- a/storno_cqp6xx_digital_xtal/Debug/storno_cqp6xx_digital_xtal.lss +++ b/storno_cqp6xx_digital_xtal/Debug/storno_cqp6xx_digital_xtal.lss @@ -3,60 +3,62 @@ storno_cqp6xx_digital_xtal.elf: file format elf32-avr Sections: Idx Name Size VMA LMA File off Algn - 0 .data 00000000 00803f00 00803f00 00000170 2**0 + 0 .data 00000006 00803f00 00000c18 00000cac 2**0 CONTENTS, ALLOC, LOAD, DATA - 1 .text 0000011c 00000000 00000000 00000054 2**1 + 1 .text 00000c18 00000000 00000000 00000094 2**1 CONTENTS, ALLOC, LOAD, READONLY, CODE - 2 .comment 00000030 00000000 00000000 00000170 2**0 + 2 .bss 00000008 00803f06 00803f06 00000cb2 2**0 + ALLOC + 3 .comment 00000030 00000000 00000000 00000cb2 2**0 CONTENTS, READONLY - 3 .note.gnu.avr.deviceinfo 0000003c 00000000 00000000 000001a0 2**2 + 4 .note.gnu.avr.deviceinfo 0000003c 00000000 00000000 00000ce4 2**2 CONTENTS, READONLY - 4 .debug_aranges 00000060 00000000 00000000 000001dc 2**0 + 5 .debug_aranges 00000160 00000000 00000000 00000d20 2**0 CONTENTS, READONLY, DEBUGGING - 5 .debug_info 00001a3c 00000000 00000000 0000023c 2**0 + 6 .debug_info 000045f1 00000000 00000000 00000e80 2**0 CONTENTS, READONLY, DEBUGGING - 6 .debug_abbrev 000013cb 00000000 00000000 00001c78 2**0 + 7 .debug_abbrev 00001975 00000000 00000000 00005471 2**0 CONTENTS, READONLY, DEBUGGING - 7 .debug_line 0000054d 00000000 00000000 00003043 2**0 + 8 .debug_line 00001043 00000000 00000000 00006de6 2**0 CONTENTS, READONLY, DEBUGGING - 8 .debug_frame 000000b4 00000000 00000000 00003590 2**2 + 9 .debug_frame 00000478 00000000 00000000 00007e2c 2**2 CONTENTS, READONLY, DEBUGGING - 9 .debug_str 00000c28 00000000 00000000 00003644 2**0 + 10 .debug_str 00001c77 00000000 00000000 000082a4 2**0 CONTENTS, READONLY, DEBUGGING - 10 .debug_loc 00000257 00000000 00000000 0000426c 2**0 + 11 .debug_loc 00001bcf 00000000 00000000 00009f1b 2**0 CONTENTS, READONLY, DEBUGGING - 11 .debug_ranges 00000040 00000000 00000000 000044c3 2**0 + 12 .debug_ranges 00000110 00000000 00000000 0000baea 2**0 CONTENTS, READONLY, DEBUGGING Disassembly of section .text: 00000000 <__vectors>: 0: 19 c0 rjmp .+50 ; 0x34 <__ctors_end> - 2: 20 c0 rjmp .+64 ; 0x44 <__bad_interrupt> - 4: 1f c0 rjmp .+62 ; 0x44 <__bad_interrupt> - 6: 1e c0 rjmp .+60 ; 0x44 <__bad_interrupt> - 8: 1d c0 rjmp .+58 ; 0x44 <__bad_interrupt> - a: 1c c0 rjmp .+56 ; 0x44 <__bad_interrupt> - c: 1b c0 rjmp .+54 ; 0x44 <__bad_interrupt> - e: 1a c0 rjmp .+52 ; 0x44 <__bad_interrupt> - 10: 19 c0 rjmp .+50 ; 0x44 <__bad_interrupt> - 12: 18 c0 rjmp .+48 ; 0x44 <__bad_interrupt> - 14: 17 c0 rjmp .+46 ; 0x44 <__bad_interrupt> - 16: 16 c0 rjmp .+44 ; 0x44 <__bad_interrupt> - 18: 15 c0 rjmp .+42 ; 0x44 <__bad_interrupt> - 1a: 14 c0 rjmp .+40 ; 0x44 <__bad_interrupt> - 1c: 13 c0 rjmp .+38 ; 0x44 <__bad_interrupt> - 1e: 12 c0 rjmp .+36 ; 0x44 <__bad_interrupt> - 20: 11 c0 rjmp .+34 ; 0x44 <__bad_interrupt> - 22: 10 c0 rjmp .+32 ; 0x44 <__bad_interrupt> - 24: 0f c0 rjmp .+30 ; 0x44 <__bad_interrupt> - 26: 0e c0 rjmp .+28 ; 0x44 <__bad_interrupt> - 28: 0d c0 rjmp .+26 ; 0x44 <__bad_interrupt> - 2a: 0c c0 rjmp .+24 ; 0x44 <__bad_interrupt> - 2c: 0b c0 rjmp .+22 ; 0x44 <__bad_interrupt> - 2e: 0a c0 rjmp .+20 ; 0x44 <__bad_interrupt> - 30: 09 c0 rjmp .+18 ; 0x44 <__bad_interrupt> - 32: 08 c0 rjmp .+16 ; 0x44 <__bad_interrupt> + 2: 33 c0 rjmp .+102 ; 0x6a <__bad_interrupt> + 4: 32 c0 rjmp .+100 ; 0x6a <__bad_interrupt> + 6: 31 c0 rjmp .+98 ; 0x6a <__bad_interrupt> + 8: 30 c0 rjmp .+96 ; 0x6a <__bad_interrupt> + a: 2f c0 rjmp .+94 ; 0x6a <__bad_interrupt> + c: 2e c0 rjmp .+92 ; 0x6a <__bad_interrupt> + e: 2d c0 rjmp .+90 ; 0x6a <__bad_interrupt> + 10: 2c c0 rjmp .+88 ; 0x6a <__bad_interrupt> + 12: 2b c0 rjmp .+86 ; 0x6a <__bad_interrupt> + 14: 2a c0 rjmp .+84 ; 0x6a <__bad_interrupt> + 16: 29 c0 rjmp .+82 ; 0x6a <__bad_interrupt> + 18: 28 c0 rjmp .+80 ; 0x6a <__bad_interrupt> + 1a: 27 c0 rjmp .+78 ; 0x6a <__bad_interrupt> + 1c: 26 c0 rjmp .+76 ; 0x6a <__bad_interrupt> + 1e: 25 c0 rjmp .+74 ; 0x6a <__bad_interrupt> + 20: 24 c0 rjmp .+72 ; 0x6a <__bad_interrupt> + 22: 23 c0 rjmp .+70 ; 0x6a <__bad_interrupt> + 24: 22 c0 rjmp .+68 ; 0x6a <__bad_interrupt> + 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: 1e c0 rjmp .+60 ; 0x6a <__bad_interrupt> + 2e: 1d c0 rjmp .+58 ; 0x6a <__bad_interrupt> + 30: 1c c0 rjmp .+56 ; 0x6a <__bad_interrupt> + 32: 1b c0 rjmp .+54 ; 0x6a <__bad_interrupt> 00000034 <__ctors_end>: 34: 11 24 eor r1, r1 @@ -65,210 +67,1998 @@ Disassembly of section .text: 3a: cd bf out 0x3d, r28 ; 61 3c: df e3 ldi r29, 0x3F ; 63 3e: de bf out 0x3e, r29 ; 62 - 40: 45 d0 rcall .+138 ; 0xcc
- 42: 6a c0 rjmp .+212 ; 0x118 <_exit> -00000044 <__bad_interrupt>: - 44: dd cf rjmp .-70 ; 0x0 <__vectors> +00000040 <__do_clear_bss>: + 40: 2f e3 ldi r18, 0x3F ; 63 + 42: a6 e0 ldi r26, 0x06 ; 6 + 44: bf e3 ldi r27, 0x3F ; 63 + 46: 01 c0 rjmp .+2 ; 0x4a <.do_clear_bss_start> -00000046 : +00000048 <.do_clear_bss_loop>: + 48: 1d 92 st X+, r1 + +0000004a <.do_clear_bss_start>: + 4a: ae 30 cpi r26, 0x0E ; 14 + 4c: b2 07 cpc r27, r18 + 4e: e1 f7 brne .-8 ; 0x48 <.do_clear_bss_loop> + +00000050 <__do_copy_data>: + 50: 1f e3 ldi r17, 0x3F ; 63 + 52: a0 e0 ldi r26, 0x00 ; 0 + 54: bf e3 ldi r27, 0x3F ; 63 + 56: e8 e1 ldi r30, 0x18 ; 24 + 58: fc e0 ldi r31, 0x0C ; 12 + 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: 2a d2 rcall .+1108 ; 0x4bc
+ 68: d5 c5 rjmp .+2986 ; 0xc14 <_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 : + *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 + 9a: 81 e0 ldi r24, 0x01 ; 1 + 9c: 85 83 std Z+5, r24 ; 0x05 + 9e: 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 : + +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 + + // 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> + + // 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> + + 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> + + 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 + + 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> + // 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> + 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> + } + + // 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> + i2c_reset(); + 112: be df rcall .-132 ; 0x90 + 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> + } + + 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> + 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 + 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 + } + + if (TWI0.MSTATUS & TWI_RXACK_bm) + break; + + }while(--len); + 12e: c9 f6 brne .-78 ; 0xe2 + + // 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> + + + 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> +} + +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> + + // 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 + // 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 + +00000154 : + +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 + + 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 + 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 + + 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 + + *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 + 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 + 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 + } 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 + + + return CM_I2C_OK; +} + +int i2c_read(uint8_t dev_addr, void *data, uint32_t len){ + 1a6: 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 + 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> + + return 0; + 1c2: 80 e0 ldi r24, 0x00 ; 0 + 1c4: 90 e0 ldi r25, 0x00 ; 0 + 1c6: 05 c0 rjmp .+10 ; 0x1d2 +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 + + // 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 + 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 + +000001e0 : int i2c_IsDeviceReady(uint8_t dev_addr){ TWI0.MADDR = dev_addr | 0; - 46: 80 93 17 08 sts 0x0817, r24 ; 0x800817 <__RODATA_PM_OFFSET__+0x7f8817> + 1e0: 80 93 17 08 sts 0x0817, r24 ; 0x800817 <__RODATA_PM_OFFSET__+0x7f8817> // Wait for acknowledgment while (!(TWI0.MSTATUS & TWI_WIF_bm)); - 4a: 80 91 15 08 lds r24, 0x0815 ; 0x800815 <__RODATA_PM_OFFSET__+0x7f8815> - 4e: 86 ff sbrs r24, 6 - 50: fc cf rjmp .-8 ; 0x4a + 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 if (TWI0.MSTATUS & TWI_RXACK_bm) { - 52: 80 91 15 08 lds r24, 0x0815 ; 0x800815 <__RODATA_PM_OFFSET__+0x7f8815> - 56: 84 ff sbrs r24, 4 - 58: 06 c0 rjmp .+12 ; 0x66 + 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 // NACK received TWI0.MCTRLB = TWI_MCMD_STOP_gc; // Send stop condition - 5a: 83 e0 ldi r24, 0x03 ; 3 - 5c: 80 93 14 08 sts 0x0814, r24 ; 0x800814 <__RODATA_PM_OFFSET__+0x7f8814> + 1f4: 83 e0 ldi r24, 0x03 ; 3 + 1f6: 80 93 14 08 sts 0x0814, r24 ; 0x800814 <__RODATA_PM_OFFSET__+0x7f8814> return 1; // Error: NACK received - 60: 81 e0 ldi r24, 0x01 ; 1 - 62: 90 e0 ldi r25, 0x00 ; 0 - 64: 08 95 ret + 1fa: 81 e0 ldi r24, 0x01 ; 1 + 1fc: 90 e0 ldi r25, 0x00 ; 0 + 1fe: 08 95 ret } // Send stop condition TWI0.MCTRLB = TWI_MCMD_STOP_gc; - 66: 83 e0 ldi r24, 0x03 ; 3 - 68: 80 93 14 08 sts 0x0814, r24 ; 0x800814 <__RODATA_PM_OFFSET__+0x7f8814> + 200: 83 e0 ldi r24, 0x03 ; 3 + 202: 80 93 14 08 sts 0x0814, r24 ; 0x800814 <__RODATA_PM_OFFSET__+0x7f8814> return CM_I2C_OK; // Success - 6c: 80 e0 ldi r24, 0x00 ; 0 - 6e: 90 e0 ldi r25, 0x00 ; 0 + 206: 80 e0 ldi r24, 0x00 ; 0 + 208: 90 e0 ldi r25, 0x00 ; 0 } - 70: 08 95 ret + 20a: 08 95 ret -00000072 : +0000020c : int cm_i2c_init(void *i2c_inst){ + + PORTA.DIR &= ~(1 << 2); // Clear bit 2 (PA2) + 20c: e0 e0 ldi r30, 0x00 ; 0 + 20e: f4 e0 ldi r31, 0x04 ; 4 + 210: 80 81 ld r24, Z + 212: 8b 7f andi r24, 0xFB ; 251 + 214: 80 83 st Z, r24 + PORTA.DIR &= ~(1 << 3); // Clear bit 3 (PA3) + 216: 80 81 ld r24, Z + 218: 87 7f andi r24, 0xF7 ; 247 + 21a: 80 83 st Z, r24 // Set the baud rate for 100kHz with a typical rise time of 300 ns TWI0.MBAUD = 11; - 72: e0 e1 ldi r30, 0x10 ; 16 - 74: f8 e0 ldi r31, 0x08 ; 8 - 76: 8b e0 ldi r24, 0x0B ; 11 - 78: 86 83 std Z+6, r24 ; 0x06 + 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 // Enable the TWI master and set it to enable operation TWI0.MCTRLA = TWI_ENABLE_bm; - 7a: 81 e0 ldi r24, 0x01 ; 1 - 7c: 83 83 std Z+3, r24 ; 0x03 + 228: 81 e0 ldi r24, 0x01 ; 1 + 22a: 13 96 adiw r26, 0x03 ; 3 + 22c: 8c 93 st X, r24 + 22e: 13 97 sbiw r26, 0x03 ; 3 /* Set bus state idle */ TWI0.MSTATUS = TWI_BUSSTATE_IDLE_gc; - 7e: 85 83 std Z+5, r24 ; 0x05 + 230: 15 96 adiw r26, 0x05 ; 5 + 232: 8c 93 st X, r24 // Enable the internal pull-ups for PA2 (SDA) and PA3 (SCL) PORTA.PIN2CTRL = PORT_PULLUPEN_bm; - 80: e0 e0 ldi r30, 0x00 ; 0 - 82: f4 e0 ldi r31, 0x04 ; 4 - 84: 88 e0 ldi r24, 0x08 ; 8 - 86: 82 8b std Z+18, r24 ; 0x12 + 234: 88 e0 ldi r24, 0x08 ; 8 + 236: 82 8b std Z+18, r24 ; 0x12 PORTA.PIN3CTRL = PORT_PULLUPEN_bm; - 88: 83 8b std Z+19, r24 ; 0x13 + 238: 83 8b std Z+19, r24 ; 0x13 return CM_I2C_OK; } - 8a: 80 e0 ldi r24, 0x00 ; 0 - 8c: 90 e0 ldi r25, 0x00 ; 0 - 8e: 08 95 ret + 23a: 80 e0 ldi r24, 0x00 ; 0 + 23c: 90 e0 ldi r25, 0x00 ; 0 + 23e: 08 95 ret -00000090 : +00000240 : int cm_i2c_addDev(cm_i2c_device_t *inst, void *i2c_inst, uint8_t dev_addr){ - 90: ef 92 push r14 - 92: ff 92 push r15 - 94: 0f 93 push r16 - 96: 1f 93 push r17 - 98: cf 93 push r28 - 9a: 8c 01 movw r16, r24 - 9c: 7b 01 movw r14, r22 - 9e: c4 2f mov r28, r20 + 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 //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; - a0: 84 2f mov r24, r20 - a2: 88 0f add r24, r24 - a4: d0 df rcall .-96 ; 0x46 - a6: 00 97 sbiw r24, 0x00 ; 0 - a8: 49 f4 brne .+18 ; 0xbc + 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 // add device info if device responds! inst->i2c_transfer_inst = i2c_inst; - aa: f8 01 movw r30, r16 - ac: e0 82 st Z, r14 - ae: f1 82 std Z+1, r15 ; 0x01 + 25a: f8 01 movw r30, r16 + 25c: e0 82 st Z, r14 + 25e: f1 82 std Z+1, r15 ; 0x01 inst->dev_addr = (dev_addr << 1) & 0b11111110; - b0: 4c 2f mov r20, r28 - b2: 50 e0 ldi r21, 0x00 ; 0 - b4: 44 0f add r20, r20 - b6: 55 1f adc r21, r21 - b8: 42 83 std Z+2, r20 ; 0x02 + 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 return CM_I2C_OK; - ba: 02 c0 rjmp .+4 ; 0xc0 + 26a: 02 c0 rjmp .+4 ; 0x270 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; - bc: 8e ef ldi r24, 0xFE ; 254 - be: 9f ef ldi r25, 0xFF ; 255 + 26c: 8e ef ldi r24, 0xFE ; 254 + 26e: 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; } - c0: cf 91 pop r28 - c2: 1f 91 pop r17 - c4: 0f 91 pop r16 - c6: ff 90 pop r15 - c8: ef 90 pop r14 - ca: 08 95 ret + 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 -000000cc
: -#include "avr_i2c_driver/avr_i2c.h" -//#include "storno_frq_lst.h" +0000027c : -int main(void) -{ - cc: cf 93 push r28 - ce: df 93 push r29 - d0: 00 d0 rcall .+0 ; 0xd2 - d2: 1f 92 push r1 - d4: cd b7 in r28, 0x3d ; 61 - d6: de b7 in r29, 0x3e ; 62 - /* Replace with your application code */ - PORTA.DIR &= ~(1 << 2); // Clear bit 2 (PA2) - d8: e0 e0 ldi r30, 0x00 ; 0 - da: f4 e0 ldi r31, 0x04 ; 4 - dc: 80 81 ld r24, Z - de: 8b 7f andi r24, 0xFB ; 251 - e0: 80 83 st Z, r24 - PORTA.DIR &= ~(1 << 3); // Clear bit 3 (PA3) - e2: 80 81 ld r24, Z - e4: 87 7f andi r24, 0xF7 ; 247 - e6: 80 83 st Z, r24 - cm_i2c_init(NULL); - e8: 80 e0 ldi r24, 0x00 ; 0 - ea: 90 e0 ldi r25, 0x00 ; 0 - ec: c2 df rcall .-124 ; 0x72 +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 + + 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 + + // 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 + + 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 + break; + + + } + + return CM_I2C_OK; + 292: 80 e0 ldi r24, 0x00 ; 0 + 294: 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 + + 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 + break; + + + } + + return CM_I2C_OK; + 29c: 80 e0 ldi r24, 0x00 ; 0 + 29e: 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 +} + + +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 + break; + + + } + + return CM_I2C_OK; + 2a8: 80 e0 ldi r24, 0x00 ; 0 + 2aa: 90 e0 ldi r25, 0x00 ; 0 + +} + 2ac: 0f 91 pop r16 + 2ae: 08 95 ret + +000002b0 : +#include "avr_global_config.h" +#include + +static uint8_t isStructValid(storno_xtal_app_t *inst){ + + if(inst->si5351_dev == NULL) return 1; + 2b0: fc 01 movw r30, r24 + 2b2: 22 81 ldd r18, Z+2 ; 0x02 + 2b4: 33 81 ldd r19, Z+3 ; 0x03 + 2b6: 23 2b or r18, r19 + 2b8: 21 f0 breq .+8 ; 0x2c2 + if(inst == NULL)return 1; + 2ba: 89 2b or r24, r25 + 2bc: 21 f4 brne .+8 ; 0x2c6 + 2be: 81 e0 ldi r24, 0x01 ; 1 + 2c0: 08 95 ret +#include "avr_global_config.h" +#include + +static uint8_t isStructValid(storno_xtal_app_t *inst){ + + if(inst->si5351_dev == NULL) return 1; + 2c2: 81 e0 ldi r24, 0x01 ; 1 + 2c4: 08 95 ret + if(inst == NULL)return 1; + + return 0; + 2c6: 80 e0 ldi r24, 0x00 ; 0 +} + 2c8: 08 95 ret + +000002ca : + +static void cqm6xx_app_updateOsc(storno_xtal_app_t *inst){ + 2ca: cf 93 push r28 + 2cc: df 93 push r29 + 2ce: ec 01 movw r28, r24 + + // Check Struct + if(isStructValid(inst) != 0)return; + 2d0: ef df rcall .-34 ; 0x2b0 + 2d2: 81 11 cpse r24, r1 + 2d4: 32 c0 rjmp .+100 ; 0x33a + + // 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; + 2d6: 89 81 ldd r24, Y+1 ; 0x01 + 2d8: 98 81 ld r25, Y + 2da: 89 17 cp r24, r25 + 2dc: 71 f1 breq .+92 ; 0x33a + + switch(inst->state_next){ + 2de: 81 30 cpi r24, 0x01 ; 1 + 2e0: 19 f0 breq .+6 ; 0x2e8 + 2e2: 82 30 cpi r24, 0x02 ; 2 + 2e4: b1 f0 breq .+44 ; 0x312 + 2e6: 29 c0 rjmp .+82 ; 0x33a #else //round up by default __ticks_dc = (uint32_t)(ceil(fabs(__tmp))); #endif __builtin_avr_delay_cycles(__ticks_dc); - ee: 25 e1 ldi r18, 0x15 ; 21 - f0: 86 e1 ldi r24, 0x16 ; 22 - f2: 95 e0 ldi r25, 0x05 ; 5 - f4: 21 50 subi r18, 0x01 ; 1 - f6: 80 40 sbci r24, 0x00 ; 0 - f8: 90 40 sbci r25, 0x00 ; 0 - fa: e1 f7 brne .-8 ; 0xf4 + 2e8: 81 e4 ldi r24, 0x41 ; 65 + 2ea: 93 e0 ldi r25, 0x03 ; 3 + 2ec: 01 97 sbiw r24, 0x01 ; 1 + 2ee: f1 f7 brne .-4 ; 0x2ec + 2f0: 00 00 nop + + case STORNO_APP_RX_MODE: + _delay_ms(1); + cm_setOutputEnable(inst->si5351_dev,SI5351_OUTPUT_0,SI5351_OUTPUT_ENABLE); // RX + 2f2: 40 e0 ldi r20, 0x00 ; 0 + 2f4: 60 e0 ldi r22, 0x00 ; 0 + 2f6: 8a 81 ldd r24, Y+2 ; 0x02 + 2f8: 9b 81 ldd r25, Y+3 ; 0x03 + 2fa: d2 d1 rcall .+932 ; 0x6a0 + 2fc: 81 e4 ldi r24, 0x41 ; 65 + 2fe: 93 e0 ldi r25, 0x03 ; 3 + 300: 01 97 sbiw r24, 0x01 ; 1 + 302: f1 f7 brne .-4 ; 0x300 + 304: 00 00 nop + _delay_ms(1); + cm_setOutputEnable(inst->si5351_dev,SI5351_OUTPUT_1,SI5351_OUTPUT_DISABLE); // TX + 306: 41 e0 ldi r20, 0x01 ; 1 + 308: 61 e0 ldi r22, 0x01 ; 1 + 30a: 8a 81 ldd r24, Y+2 ; 0x02 + 30c: 9b 81 ldd r25, Y+3 ; 0x03 + 30e: c8 d1 rcall .+912 ; 0x6a0 + + break; + 310: 14 c0 rjmp .+40 ; 0x33a + 312: 81 e4 ldi r24, 0x41 ; 65 + 314: 93 e0 ldi r25, 0x03 ; 3 + 316: 01 97 sbiw r24, 0x01 ; 1 + 318: f1 f7 brne .-4 ; 0x316 + 31a: 00 00 nop + + case STORNO_APP_TX_MODE: + _delay_ms(1); + cm_setOutputEnable(inst->si5351_dev,SI5351_OUTPUT_0,SI5351_OUTPUT_DISABLE); // RX + 31c: 41 e0 ldi r20, 0x01 ; 1 + 31e: 60 e0 ldi r22, 0x00 ; 0 + 320: 8a 81 ldd r24, Y+2 ; 0x02 + 322: 9b 81 ldd r25, Y+3 ; 0x03 + 324: bd d1 rcall .+890 ; 0x6a0 + 326: 81 e4 ldi r24, 0x41 ; 65 + 328: 93 e0 ldi r25, 0x03 ; 3 + 32a: 01 97 sbiw r24, 0x01 ; 1 + 32c: f1 f7 brne .-4 ; 0x32a + 32e: 00 00 nop + _delay_ms(1); + cm_setOutputEnable(inst->si5351_dev,SI5351_OUTPUT_1,SI5351_OUTPUT_ENABLE); // TX + 330: 40 e0 ldi r20, 0x00 ; 0 + 332: 61 e0 ldi r22, 0x01 ; 1 + 334: 8a 81 ldd r24, Y+2 ; 0x02 + 336: 9b 81 ldd r25, Y+3 ; 0x03 + 338: b3 d1 rcall .+870 ; 0x6a0 + break; + + } + + +} + 33a: df 91 pop r29 + 33c: cf 91 pop r28 + 33e: 08 95 ret + +00000340 : +void cqm6xx_app_statemachine(storno_xtal_app_t *inst){ + 340: af 92 push r10 + 342: bf 92 push r11 + 344: cf 92 push r12 + 346: df 92 push r13 + 348: ef 92 push r14 + 34a: ff 92 push r15 + 34c: 0f 93 push r16 + 34e: 1f 93 push r17 + 350: cf 93 push r28 + 352: df 93 push r29 + 354: ec 01 movw r28, r24 + + // Check Struct + if(isStructValid(inst) != 0)return; + 356: ac df rcall .-168 ; 0x2b0 + 358: 81 11 cpse r24, r1 + 35a: 9a c0 rjmp .+308 ; 0x490 <__LOCK_REGION_LENGTH__+0x90> + + switch (inst->state_next) + 35c: 89 81 ldd r24, Y+1 ; 0x01 + 35e: 81 30 cpi r24, 0x01 ; 1 + 360: 09 f4 brne .+2 ; 0x364 + 362: 7f c0 rjmp .+254 ; 0x462 <__LOCK_REGION_LENGTH__+0x62> + 364: 20 f0 brcs .+8 ; 0x36e + 366: 82 30 cpi r24, 0x02 ; 2 + 368: 09 f4 brne .+2 ; 0x36c + 36a: 87 c0 rjmp .+270 ; 0x47a <__LOCK_REGION_LENGTH__+0x7a> + 36c: 91 c0 rjmp .+290 ; 0x490 <__LOCK_REGION_LENGTH__+0x90> + { + case STORNO_APP_PROGRAM_OSC: + // Program PLL values here: + inst->state_now = inst->state_next; + 36e: 88 83 st Y, r24 + 370: 81 e4 ldi r24, 0x41 ; 65 + 372: 93 e0 ldi r25, 0x03 ; 3 + 374: 01 97 sbiw r24, 0x01 ; 1 + 376: f1 f7 brne .-4 ; 0x374 + 378: 00 00 nop + _delay_ms(1); + cm_setInputSource(inst->si5351_dev, SI5351_CLK_SOURCE_XTAL); + 37a: 60 e0 ldi r22, 0x00 ; 0 + 37c: 8a 81 ldd r24, Y+2 ; 0x02 + 37e: 9b 81 ldd r25, Y+3 ; 0x03 + 380: dd d1 rcall .+954 ; 0x73c + 382: 81 e4 ldi r24, 0x41 ; 65 + 384: 93 e0 ldi r25, 0x03 ; 3 + 386: 01 97 sbiw r24, 0x01 ; 1 + 388: f1 f7 brne .-4 ; 0x386 + 38a: 00 00 nop + _delay_ms(1); + cm_setPllParamRaw(inst->si5351_dev,SI5351_PLL_A, 3395, 11510, 1067099); + 38c: 0f 2e mov r0, r31 + 38e: fb e5 ldi r31, 0x5B ; 91 + 390: af 2e mov r10, r31 + 392: f8 e4 ldi r31, 0x48 ; 72 + 394: bf 2e mov r11, r31 + 396: f0 e1 ldi r31, 0x10 ; 16 + 398: cf 2e mov r12, r31 + 39a: d1 2c mov r13, r1 + 39c: f0 2d mov r31, r0 + 39e: 16 ef ldi r17, 0xF6 ; 246 + 3a0: e1 2e mov r14, r17 + 3a2: 1c e2 ldi r17, 0x2C ; 44 + 3a4: f1 2e mov r15, r17 + 3a6: 00 e0 ldi r16, 0x00 ; 0 + 3a8: 10 e0 ldi r17, 0x00 ; 0 + 3aa: 23 e4 ldi r18, 0x43 ; 67 + 3ac: 3d e0 ldi r19, 0x0D ; 13 + 3ae: 40 e0 ldi r20, 0x00 ; 0 + 3b0: 50 e0 ldi r21, 0x00 ; 0 + 3b2: 60 e0 ldi r22, 0x00 ; 0 + 3b4: 8a 81 ldd r24, Y+2 ; 0x02 + 3b6: 9b 81 ldd r25, Y+3 ; 0x03 + 3b8: 04 d2 rcall .+1032 ; 0x7c2 + 3ba: 81 e4 ldi r24, 0x41 ; 65 + 3bc: 93 e0 ldi r25, 0x03 ; 3 + 3be: 01 97 sbiw r24, 0x01 ; 1 + 3c0: f1 f7 brne .-4 ; 0x3be + 3c2: 00 00 nop + _delay_ms(1); + cm_setPllParamRaw(inst->si5351_dev,SI5351_PLL_B, 3272, 16130, 1067200); + 3c4: 0f 2e mov r0, r31 + 3c6: f0 ec ldi r31, 0xC0 ; 192 + 3c8: af 2e mov r10, r31 + 3ca: f8 e4 ldi r31, 0x48 ; 72 + 3cc: bf 2e mov r11, r31 + 3ce: f0 e1 ldi r31, 0x10 ; 16 + 3d0: cf 2e mov r12, r31 + 3d2: d1 2c mov r13, r1 + 3d4: f0 2d mov r31, r0 + 3d6: 12 e0 ldi r17, 0x02 ; 2 + 3d8: e1 2e mov r14, r17 + 3da: 1f e3 ldi r17, 0x3F ; 63 + 3dc: f1 2e mov r15, r17 + 3de: 00 e0 ldi r16, 0x00 ; 0 + 3e0: 10 e0 ldi r17, 0x00 ; 0 + 3e2: 28 ec ldi r18, 0xC8 ; 200 + 3e4: 3c e0 ldi r19, 0x0C ; 12 + 3e6: 40 e0 ldi r20, 0x00 ; 0 + 3e8: 50 e0 ldi r21, 0x00 ; 0 + 3ea: 61 e0 ldi r22, 0x01 ; 1 + 3ec: 8a 81 ldd r24, Y+2 ; 0x02 + 3ee: 9b 81 ldd r25, Y+3 ; 0x03 + 3f0: e8 d1 rcall .+976 ; 0x7c2 + 3f2: 81 e4 ldi r24, 0x41 ; 65 + 3f4: 93 e0 ldi r25, 0x03 ; 3 + 3f6: 01 97 sbiw r24, 0x01 ; 1 + 3f8: f1 f7 brne .-4 ; 0x3f6 + 3fa: 00 00 nop + _delay_ms(1); + cm_setOutputMultiSynth(inst->si5351_dev,SI5351_OUTPUT_0, 18, 0, 1); + 3fc: a1 2c mov r10, r1 + 3fe: b1 2c mov r11, r1 + 400: 65 01 movw r12, r10 + 402: a3 94 inc r10 + 404: e1 2c mov r14, r1 + 406: f1 2c mov r15, r1 + 408: 87 01 movw r16, r14 + 40a: 22 e1 ldi r18, 0x12 ; 18 + 40c: 30 e0 ldi r19, 0x00 ; 0 + 40e: 40 e0 ldi r20, 0x00 ; 0 + 410: 50 e0 ldi r21, 0x00 ; 0 + 412: 60 e0 ldi r22, 0x00 ; 0 + 414: 8a 81 ldd r24, Y+2 ; 0x02 + 416: 9b 81 ldd r25, Y+3 ; 0x03 + 418: b8 d0 rcall .+368 ; 0x58a + 41a: 81 e4 ldi r24, 0x41 ; 65 + 41c: 93 e0 ldi r25, 0x03 ; 3 + 41e: 01 97 sbiw r24, 0x01 ; 1 + 420: f1 f7 brne .-4 ; 0x41e <__LOCK_REGION_LENGTH__+0x1e> + 422: 00 00 nop + _delay_ms(1); + cm_setOutputMultiSynth(inst->si5351_dev,SI5351_OUTPUT_1, 64, 0, 1); + 424: 20 e4 ldi r18, 0x40 ; 64 + 426: 30 e0 ldi r19, 0x00 ; 0 + 428: 40 e0 ldi r20, 0x00 ; 0 + 42a: 50 e0 ldi r21, 0x00 ; 0 + 42c: 61 e0 ldi r22, 0x01 ; 1 + 42e: 8a 81 ldd r24, Y+2 ; 0x02 + 430: 9b 81 ldd r25, Y+3 ; 0x03 + 432: ab d0 rcall .+342 ; 0x58a + 434: 81 e4 ldi r24, 0x41 ; 65 + 436: 93 e0 ldi r25, 0x03 ; 3 + 438: 01 97 sbiw r24, 0x01 ; 1 + 43a: f1 f7 brne .-4 ; 0x438 <__LOCK_REGION_LENGTH__+0x38> + 43c: 00 00 nop + _delay_ms(1); + cm_setCLKControl(inst->si5351_dev,SI5351_OUTPUT_0,SI5351_CLK_POWER_UP); + 43e: 40 e0 ldi r20, 0x00 ; 0 + 440: 60 e0 ldi r22, 0x00 ; 0 + 442: 8a 81 ldd r24, Y+2 ; 0x02 + 444: 9b 81 ldd r25, Y+3 ; 0x03 + 446: 4c d1 rcall .+664 ; 0x6e0 + 448: 81 e4 ldi r24, 0x41 ; 65 + 44a: 93 e0 ldi r25, 0x03 ; 3 + 44c: 01 97 sbiw r24, 0x01 ; 1 + 44e: f1 f7 brne .-4 ; 0x44c <__LOCK_REGION_LENGTH__+0x4c> + 450: 00 00 nop + _delay_ms(1); + cm_setCLKControl(inst->si5351_dev,SI5351_OUTPUT_1,SI5351_CLK_POWER_UP); + 452: 40 e0 ldi r20, 0x00 ; 0 + 454: 61 e0 ldi r22, 0x01 ; 1 + 456: 8a 81 ldd r24, Y+2 ; 0x02 + 458: 9b 81 ldd r25, Y+3 ; 0x03 + 45a: 42 d1 rcall .+644 ; 0x6e0 + + // if ok, then go to RX mode: + inst->state_next = STORNO_APP_RX_MODE; + 45c: 81 e0 ldi r24, 0x01 ; 1 + 45e: 89 83 std Y+1, r24 ; 0x01 + break; + 460: 17 c0 rjmp .+46 ; 0x490 <__LOCK_REGION_LENGTH__+0x90> + + + case STORNO_APP_RX_MODE: + // If we just came from another state, then Enable RX osc here.. + cqm6xx_app_updateOsc(inst); + 462: ce 01 movw r24, r28 + 464: 32 df rcall .-412 ; 0x2ca + + // Update state now.. + inst->state_now = inst->state_next; + 466: 89 81 ldd r24, Y+1 ; 0x01 + 468: 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; + 46a: 63 e0 ldi r22, 0x03 ; 3 + 46c: 80 e0 ldi r24, 0x00 ; 0 + 46e: fe dd rcall .-1028 ; 0x6c + 470: 01 97 sbiw r24, 0x01 ; 1 + 472: 71 f4 brne .+28 ; 0x490 <__LOCK_REGION_LENGTH__+0x90> + 474: 82 e0 ldi r24, 0x02 ; 2 + 476: 89 83 std Y+1, r24 ; 0x01 + 478: 0b c0 rjmp .+22 ; 0x490 <__LOCK_REGION_LENGTH__+0x90> + + break; + + case STORNO_APP_TX_MODE: + // If we just came from another state, then Enable TX osc here.. + cqm6xx_app_updateOsc(inst); + 47a: ce 01 movw r24, r28 + 47c: 26 df rcall .-436 ; 0x2ca + + // Update state now.. + inst->state_now = inst->state_next; + 47e: 89 81 ldd r24, Y+1 ; 0x01 + 480: 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; + 482: 63 e0 ldi r22, 0x03 ; 3 + 484: 80 e0 ldi r24, 0x00 ; 0 + 486: f2 dd rcall .-1052 ; 0x6c + 488: 89 2b or r24, r25 + 48a: 11 f4 brne .+4 ; 0x490 <__LOCK_REGION_LENGTH__+0x90> + 48c: 81 e0 ldi r24, 0x01 ; 1 + 48e: 89 83 std Y+1, r24 ; 0x01 + default: + break; + } + + +} + 490: df 91 pop r29 + 492: cf 91 pop r28 + 494: 1f 91 pop r17 + 496: 0f 91 pop r16 + 498: ff 90 pop r15 + 49a: ef 90 pop r14 + 49c: df 90 pop r13 + 49e: cf 90 pop r12 + 4a0: bf 90 pop r11 + 4a2: af 90 pop r10 + 4a4: 08 95 ret + +000004a6 : +void cqm6xx_app_init(storno_xtal_app_t *inst, void *si5351_dev){ + 4a6: fc 01 movw r30, r24 + + if(si5351_dev == NULL) return; + 4a8: 61 15 cp r22, r1 + 4aa: 71 05 cpc r23, r1 + 4ac: 31 f0 breq .+12 ; 0x4ba + if(inst == NULL)return; + 4ae: 89 2b or r24, r25 + 4b0: 21 f0 breq .+8 ; 0x4ba + + inst->state_next = STORNO_APP_PROGRAM_OSC; + 4b2: 11 82 std Z+1, r1 ; 0x01 + inst->state_now = STORNO_APP_PROGRAM_OSC; + 4b4: 10 82 st Z, r1 + + inst->si5351_dev = si5351_dev; + 4b6: 62 83 std Z+2, r22 ; 0x02 + 4b8: 73 83 std Z+3, r23 ; 0x03 + 4ba: 08 95 ret + +000004bc
: + +storno_xtal_app_t storno_xtal_app; + + +int main(void) +{ + 4bc: cf 93 push r28 + 4be: df 93 push r29 + 4c0: cd b7 in r28, 0x3d ; 61 + 4c2: de b7 in r29, 0x3e ; 62 + 4c4: cb 55 subi r28, 0x5B ; 91 + 4c6: d1 09 sbc r29, r1 + 4c8: cd bf out 0x3d, r28 ; 61 + 4ca: de bf out 0x3e, r29 ; 62 + /* Replace with your application code */ + + // Init Periphials + cm_i2c_init(NULL); + 4cc: 80 e0 ldi r24, 0x00 ; 0 + 4ce: 90 e0 ldi r25, 0x00 ; 0 + 4d0: 9d de rcall .-710 ; 0x20c + + // Add devices + cm_i2c_device_t si5351_i2c; + cm_i2c_addDev(&si5351_i2c,NULL,0x60); + 4d2: 40 e6 ldi r20, 0x60 ; 96 + 4d4: 60 e0 ldi r22, 0x00 ; 0 + 4d6: 70 e0 ldi r23, 0x00 ; 0 + 4d8: ce 01 movw r24, r28 + 4da: 01 96 adiw r24, 0x01 ; 1 + 4dc: b1 de rcall .-670 ; 0x240 + + // Init Devices: + si5351_driver si5351_dev; + cm_si5351_init(&si5351_dev,&si5351_i2c,(setGet_I2C_Event_fpt)cm_i2c_transfer); + 4de: 4e e3 ldi r20, 0x3E ; 62 + 4e0: 51 e0 ldi r21, 0x01 ; 1 + 4e2: be 01 movw r22, r28 + 4e4: 6f 5f subi r22, 0xFF ; 255 + 4e6: 7f 4f sbci r23, 0xFF ; 255 + 4e8: ce 01 movw r24, r28 + 4ea: 04 96 adiw r24, 0x04 ; 4 + 4ec: c8 d1 rcall .+912 ; 0x87e + + cqm6xx_app_init(&storno_xtal_app, &si5351_dev); + 4ee: be 01 movw r22, r28 + 4f0: 6c 5f subi r22, 0xFC ; 252 + 4f2: 7f 4f sbci r23, 0xFF ; 255 + 4f4: 86 e0 ldi r24, 0x06 ; 6 + 4f6: 9f e3 ldi r25, 0x3F ; 63 + 4f8: d6 df rcall .-84 ; 0x4a6 + while (1) { - _delay_ms(500); - cm_i2c_addDev(&si5351_dev,NULL,0x60); - fc: 40 e6 ldi r20, 0x60 ; 96 - fe: 60 e0 ldi r22, 0x00 ; 0 - 100: 70 e0 ldi r23, 0x00 ; 0 - 102: ce 01 movw r24, r28 - 104: 01 96 adiw r24, 0x01 ; 1 - 106: c4 df rcall .-120 ; 0x90 - 108: 25 e1 ldi r18, 0x15 ; 21 - 10a: 86 e1 ldi r24, 0x16 ; 22 - 10c: 95 e0 ldi r25, 0x05 ; 5 - 10e: 21 50 subi r18, 0x01 ; 1 - 110: 80 40 sbci r24, 0x00 ; 0 - 112: 90 40 sbci r25, 0x00 ; 0 - 114: e1 f7 brne .-8 ; 0x10e <__DATA_REGION_LENGTH__+0xe> - 116: eb cf rjmp .-42 ; 0xee + cqm6xx_app_statemachine(&storno_xtal_app); + 4fa: 86 e0 ldi r24, 0x06 ; 6 + 4fc: 9f e3 ldi r25, 0x3F ; 63 + 4fe: 20 df rcall .-448 ; 0x340 + 500: 2a e6 ldi r18, 0x6A ; 106 + 502: 84 e0 ldi r24, 0x04 ; 4 + 504: 91 e0 ldi r25, 0x01 ; 1 + 506: 21 50 subi r18, 0x01 ; 1 + 508: 80 40 sbci r24, 0x00 ; 0 + 50a: 90 40 sbci r25, 0x00 ; 0 + 50c: e1 f7 brne .-8 ; 0x506 + 50e: 00 c0 rjmp .+0 ; 0x510 + 510: f4 cf rjmp .-24 ; 0x4fa -00000118 <_exit>: - 118: f8 94 cli +00000512 : -0000011a <__stop_program>: - 11a: ff cf rjmp .-2 ; 0x11a <__stop_program> + // Read Device Status register: + readRegister(inst,0x00, (uint8_t *) &inst->device_data.deviceStatus, sizeof(si5351_deviceStat_t)); + + return inst->device_data.deviceStatus.REVID; +} + 512: 8f 92 push r8 + 514: 9f 92 push r9 + 516: af 92 push r10 + 518: bf 92 push r11 + 51a: cf 92 push r12 + 51c: df 92 push r13 + 51e: ef 92 push r14 + 520: ff 92 push r15 + 522: 0f 93 push r16 + 524: 1f 93 push r17 + 526: cf 93 push r28 + 528: df 93 push r29 + 52a: ec 01 movw r28, r24 + 52c: 86 2e mov r8, r22 + 52e: 5a 01 movw r10, r20 + 530: 68 01 movw r12, r16 + 532: 79 01 movw r14, r18 + 534: c8 01 movw r24, r16 + 536: 01 96 adiw r24, 0x01 ; 1 + 538: 43 d2 rcall .+1158 ; 0x9c0 + 53a: 98 2e mov r9, r24 + 53c: 19 2f mov r17, r25 + 53e: fc 01 movw r30, r24 + 540: 81 92 st Z+, r8 + 542: cf 01 movw r24, r30 + 544: a6 01 movw r20, r12 + 546: b5 01 movw r22, r10 + 548: 5c d3 rcall .+1720 ; 0xc02 + 54a: ea 81 ldd r30, Y+2 ; 0x02 + 54c: fb 81 ldd r31, Y+3 ; 0x03 + 54e: a7 01 movw r20, r14 + 550: 96 01 movw r18, r12 + 552: 2f 5f subi r18, 0xFF ; 255 + 554: 3f 4f sbci r19, 0xFF ; 255 + 556: 4f 4f sbci r20, 0xFF ; 255 + 558: 5f 4f sbci r21, 0xFF ; 255 + 55a: 01 e0 ldi r16, 0x01 ; 1 + 55c: 69 2d mov r22, r9 + 55e: 71 2f mov r23, r17 + 560: 88 81 ld r24, Y + 562: 99 81 ldd r25, Y+1 ; 0x01 + 564: 09 95 icall + 566: 89 2d mov r24, r9 + 568: 91 2f mov r25, r17 + 56a: c2 d2 rcall .+1412 ; 0xaf0 + 56c: 80 e0 ldi r24, 0x00 ; 0 + 56e: 90 e0 ldi r25, 0x00 ; 0 + 570: df 91 pop r29 + 572: cf 91 pop r28 + 574: 1f 91 pop r17 + 576: 0f 91 pop r16 + 578: ff 90 pop r15 + 57a: ef 90 pop r14 + 57c: df 90 pop r13 + 57e: cf 90 pop r12 + 580: bf 90 pop r11 + 582: af 90 pop r10 + 584: 9f 90 pop r9 + 586: 8f 90 pop r8 + 588: 08 95 ret + +0000058a : + 58a: af 92 push r10 + 58c: bf 92 push r11 + 58e: cf 92 push r12 + 590: df 92 push r13 + 592: ef 92 push r14 + 594: ff 92 push r15 + 596: 0f 93 push r16 + 598: 1f 93 push r17 + 59a: fc 01 movw r30, r24 + 59c: 86 2f mov r24, r22 + 59e: ba 01 movw r22, r20 + 5a0: a9 01 movw r20, r18 + 5a2: 44 50 subi r20, 0x04 ; 4 + 5a4: 51 09 sbc r21, r1 + 5a6: 61 09 sbc r22, r1 + 5a8: 7e 4f sbci r23, 0xFE ; 254 + 5aa: 44 0f add r20, r20 + 5ac: 55 1f adc r21, r21 + 5ae: 66 1f adc r22, r22 + 5b0: 77 1f adc r23, r23 + 5b2: 44 0f add r20, r20 + 5b4: 55 1f adc r21, r21 + 5b6: 66 1f adc r22, r22 + 5b8: 77 1f adc r23, r23 + 5ba: 44 0f add r20, r20 + 5bc: 55 1f adc r21, r21 + 5be: 66 1f adc r22, r22 + 5c0: 77 1f adc r23, r23 + 5c2: 44 0f add r20, r20 + 5c4: 55 1f adc r21, r21 + 5c6: 66 1f adc r22, r22 + 5c8: 77 1f adc r23, r23 + 5ca: 44 0f add r20, r20 + 5cc: 55 1f adc r21, r21 + 5ce: 66 1f adc r22, r22 + 5d0: 77 1f adc r23, r23 + 5d2: 44 0f add r20, r20 + 5d4: 55 1f adc r21, r21 + 5d6: 66 1f adc r22, r22 + 5d8: 77 1f adc r23, r23 + 5da: 44 0f add r20, r20 + 5dc: 55 1f adc r21, r21 + 5de: 66 1f adc r22, r22 + 5e0: 77 1f adc r23, r23 + 5e2: 88 23 and r24, r24 + 5e4: 19 f0 breq .+6 ; 0x5ec + 5e6: 81 30 cpi r24, 0x01 ; 1 + 5e8: 49 f1 breq .+82 ; 0x63c + 5ea: 4f c0 rjmp .+158 ; 0x68a + 5ec: 96 2f mov r25, r22 + 5ee: 93 70 andi r25, 0x03 ; 3 + 5f0: 86 a1 ldd r24, Z+38 ; 0x26 + 5f2: 8c 7f andi r24, 0xFC ; 252 + 5f4: 89 2b or r24, r25 + 5f6: 86 a3 std Z+38, r24 ; 0x26 + 5f8: 57 a3 std Z+39, r21 ; 0x27 + 5fa: 40 a7 std Z+40, r20 ; 0x28 + 5fc: f2 a6 std Z+42, r15 ; 0x2a + 5fe: e3 a6 std Z+43, r14 ; 0x2b + 600: d6 01 movw r26, r12 + 602: c5 01 movw r24, r10 + 604: 07 2e mov r0, r23 + 606: 7c e0 ldi r23, 0x0C ; 12 + 608: b6 95 lsr r27 + 60a: a7 95 ror r26 + 60c: 97 95 ror r25 + 60e: 87 95 ror r24 + 610: 7a 95 dec r23 + 612: d1 f7 brne .-12 ; 0x608 + 614: 70 2d mov r23, r0 + 616: 83 70 andi r24, 0x03 ; 3 + 618: 82 95 swap r24 + 61a: 80 7f andi r24, 0xF0 ; 240 + 61c: 03 70 andi r16, 0x03 ; 3 + 61e: 80 2b or r24, r16 + 620: 81 a7 std Z+41, r24 ; 0x29 + 622: b4 a2 std Z+36, r11 ; 0x24 + 624: a5 a2 std Z+37, r10 ; 0x25 + 626: af 01 movw r20, r30 + 628: 4c 5d subi r20, 0xDC ; 220 + 62a: 5f 4f sbci r21, 0xFF ; 255 + 62c: 08 e0 ldi r16, 0x08 ; 8 + 62e: 10 e0 ldi r17, 0x00 ; 0 + 630: 20 e0 ldi r18, 0x00 ; 0 + 632: 30 e0 ldi r19, 0x00 ; 0 + 634: 6a e2 ldi r22, 0x2A ; 42 + 636: cf 01 movw r24, r30 + 638: 6c df rcall .-296 ; 0x512 + 63a: 27 c0 rjmp .+78 ; 0x68a + 63c: 96 2f mov r25, r22 + 63e: 93 70 andi r25, 0x03 ; 3 + 640: 86 a5 ldd r24, Z+46 ; 0x2e + 642: 8c 7f andi r24, 0xFC ; 252 + 644: 89 2b or r24, r25 + 646: 86 a7 std Z+46, r24 ; 0x2e + 648: 57 a7 std Z+47, r21 ; 0x2f + 64a: 40 ab std Z+48, r20 ; 0x30 + 64c: f2 aa std Z+50, r15 ; 0x32 + 64e: e3 aa std Z+51, r14 ; 0x33 + 650: d6 01 movw r26, r12 + 652: c5 01 movw r24, r10 + 654: 07 2e mov r0, r23 + 656: 7c e0 ldi r23, 0x0C ; 12 + 658: b6 95 lsr r27 + 65a: a7 95 ror r26 + 65c: 97 95 ror r25 + 65e: 87 95 ror r24 + 660: 7a 95 dec r23 + 662: d1 f7 brne .-12 ; 0x658 + 664: 70 2d mov r23, r0 + 666: 83 70 andi r24, 0x03 ; 3 + 668: 82 95 swap r24 + 66a: 80 7f andi r24, 0xF0 ; 240 + 66c: 03 70 andi r16, 0x03 ; 3 + 66e: 80 2b or r24, r16 + 670: 81 ab std Z+49, r24 ; 0x31 + 672: b4 a6 std Z+44, r11 ; 0x2c + 674: a5 a6 std Z+45, r10 ; 0x2d + 676: af 01 movw r20, r30 + 678: 44 5d subi r20, 0xD4 ; 212 + 67a: 5f 4f sbci r21, 0xFF ; 255 + 67c: 08 e0 ldi r16, 0x08 ; 8 + 67e: 10 e0 ldi r17, 0x00 ; 0 + 680: 20 e0 ldi r18, 0x00 ; 0 + 682: 30 e0 ldi r19, 0x00 ; 0 + 684: 62 e3 ldi r22, 0x32 ; 50 + 686: cf 01 movw r24, r30 + 688: 44 df rcall .-376 ; 0x512 + 68a: 80 e0 ldi r24, 0x00 ; 0 + 68c: 90 e0 ldi r25, 0x00 ; 0 + 68e: 1f 91 pop r17 + 690: 0f 91 pop r16 + 692: ff 90 pop r15 + 694: ef 90 pop r14 + 696: df 90 pop r13 + 698: cf 90 pop r12 + 69a: bf 90 pop r11 + 69c: af 90 pop r10 + 69e: 08 95 ret + +000006a0 : + 6a0: 0f 93 push r16 + 6a2: 1f 93 push r17 + 6a4: 66 23 and r22, r22 + 6a6: 19 f0 breq .+6 ; 0x6ae + 6a8: 61 30 cpi r22, 0x01 ; 1 + 6aa: 39 f0 breq .+14 ; 0x6ba + 6ac: 0b c0 rjmp .+22 ; 0x6c4 + 6ae: fc 01 movw r30, r24 + 6b0: 27 81 ldd r18, Z+7 ; 0x07 + 6b2: 40 fb bst r20, 0 + 6b4: 20 f9 bld r18, 0 + 6b6: 27 83 std Z+7, r18 ; 0x07 + 6b8: 05 c0 rjmp .+10 ; 0x6c4 + 6ba: fc 01 movw r30, r24 + 6bc: 27 81 ldd r18, Z+7 ; 0x07 + 6be: 40 fb bst r20, 0 + 6c0: 21 f9 bld r18, 1 + 6c2: 27 83 std Z+7, r18 ; 0x07 + 6c4: ac 01 movw r20, r24 + 6c6: 49 5f subi r20, 0xF9 ; 249 + 6c8: 5f 4f sbci r21, 0xFF ; 255 + 6ca: 01 e0 ldi r16, 0x01 ; 1 + 6cc: 10 e0 ldi r17, 0x00 ; 0 + 6ce: 20 e0 ldi r18, 0x00 ; 0 + 6d0: 30 e0 ldi r19, 0x00 ; 0 + 6d2: 63 e0 ldi r22, 0x03 ; 3 + 6d4: 1e df rcall .-452 ; 0x512 + 6d6: 80 e0 ldi r24, 0x00 ; 0 + 6d8: 90 e0 ldi r25, 0x00 ; 0 + 6da: 1f 91 pop r17 + 6dc: 0f 91 pop r16 + 6de: 08 95 ret + +000006e0 : + 6e0: 0f 93 push r16 + 6e2: 1f 93 push r17 + 6e4: 66 23 and r22, r22 + 6e6: 19 f0 breq .+6 ; 0x6ee + 6e8: 61 30 cpi r22, 0x01 ; 1 + 6ea: a1 f0 breq .+40 ; 0x714 + 6ec: 22 c0 rjmp .+68 ; 0x732 + 6ee: fc 01 movw r30, r24 + 6f0: 22 85 ldd r18, Z+10 ; 0x0a + 6f2: 40 fb bst r20, 0 + 6f4: 27 f9 bld r18, 7 + 6f6: 33 85 ldd r19, Z+11 ; 0x0b + 6f8: 3f 7d andi r19, 0xDF ; 223 + 6fa: 33 87 std Z+11, r19 ; 0x0b + 6fc: 2f 64 ori r18, 0x4F ; 79 + 6fe: 22 87 std Z+10, r18 ; 0x0a + 700: ac 01 movw r20, r24 + 702: 46 5f subi r20, 0xF6 ; 246 + 704: 5f 4f sbci r21, 0xFF ; 255 + 706: 01 e0 ldi r16, 0x01 ; 1 + 708: 10 e0 ldi r17, 0x00 ; 0 + 70a: 20 e0 ldi r18, 0x00 ; 0 + 70c: 30 e0 ldi r19, 0x00 ; 0 + 70e: 60 e1 ldi r22, 0x10 ; 16 + 710: 00 df rcall .-512 ; 0x512 + 712: 0f c0 rjmp .+30 ; 0x732 + 714: fc 01 movw r30, r24 + 716: 23 85 ldd r18, Z+11 ; 0x0b + 718: 40 fb bst r20, 0 + 71a: 27 f9 bld r18, 7 + 71c: 2f 66 ori r18, 0x6F ; 111 + 71e: 23 87 std Z+11, r18 ; 0x0b + 720: ac 01 movw r20, r24 + 722: 45 5f subi r20, 0xF5 ; 245 + 724: 5f 4f sbci r21, 0xFF ; 255 + 726: 01 e0 ldi r16, 0x01 ; 1 + 728: 10 e0 ldi r17, 0x00 ; 0 + 72a: 20 e0 ldi r18, 0x00 ; 0 + 72c: 30 e0 ldi r19, 0x00 ; 0 + 72e: 61 e1 ldi r22, 0x11 ; 17 + 730: f0 de rcall .-544 ; 0x512 + 732: 80 e0 ldi r24, 0x00 ; 0 + 734: 90 e0 ldi r25, 0x00 ; 0 + 736: 1f 91 pop r17 + 738: 0f 91 pop r16 + 73a: 08 95 ret + +0000073c : + 73c: 0f 93 push r16 + 73e: 1f 93 push r17 + 740: 66 23 and r22, r22 + 742: 19 f0 breq .+6 ; 0x74a + 744: 61 30 cpi r22, 0x01 ; 1 + 746: 39 f0 breq .+14 ; 0x756 + 748: 0a c0 rjmp .+20 ; 0x75e + 74a: fc 01 movw r30, r24 + 74c: 21 85 ldd r18, Z+9 ; 0x09 + 74e: 2b 7f andi r18, 0xFB ; 251 + 750: 27 7f andi r18, 0xF7 ; 247 + 752: 21 87 std Z+9, r18 ; 0x09 + 754: 04 c0 rjmp .+8 ; 0x75e + 756: fc 01 movw r30, r24 + 758: 21 85 ldd r18, Z+9 ; 0x09 + 75a: 24 60 ori r18, 0x04 ; 4 + 75c: 21 87 std Z+9, r18 ; 0x09 + 75e: ac 01 movw r20, r24 + 760: 47 5f subi r20, 0xF7 ; 247 + 762: 5f 4f sbci r21, 0xFF ; 255 + 764: 01 e0 ldi r16, 0x01 ; 1 + 766: 10 e0 ldi r17, 0x00 ; 0 + 768: 20 e0 ldi r18, 0x00 ; 0 + 76a: 30 e0 ldi r19, 0x00 ; 0 + 76c: 60 ef ldi r22, 0xF0 ; 240 + 76e: d1 de rcall .-606 ; 0x512 + 770: 80 e0 ldi r24, 0x00 ; 0 + 772: 90 e0 ldi r25, 0x00 ; 0 + 774: 1f 91 pop r17 + 776: 0f 91 pop r16 + 778: 08 95 ret + +0000077a : + 77a: 0f 93 push r16 + 77c: 1f 93 push r17 + 77e: 31 e0 ldi r19, 0x01 ; 1 + 780: 61 11 cpse r22, r1 + 782: 01 c0 rjmp .+2 ; 0x786 + 784: 30 e0 ldi r19, 0x00 ; 0 + 786: fc 01 movw r30, r24 + 788: e9 5a subi r30, 0xA9 ; 169 + 78a: ff 4f sbci r31, 0xFF ; 255 + 78c: 20 81 ld r18, Z + 78e: 30 fb bst r19, 0 + 790: 25 f9 bld r18, 5 + 792: 20 83 st Z, r18 + 794: 31 e0 ldi r19, 0x01 ; 1 + 796: 41 11 cpse r20, r1 + 798: 01 c0 rjmp .+2 ; 0x79c + 79a: 30 e0 ldi r19, 0x00 ; 0 + 79c: ac 01 movw r20, r24 + 79e: 49 5a subi r20, 0xA9 ; 169 + 7a0: 5f 4f sbci r21, 0xFF ; 255 + 7a2: fa 01 movw r30, r20 + 7a4: 20 81 ld r18, Z + 7a6: 30 fb bst r19, 0 + 7a8: 27 f9 bld r18, 7 + 7aa: 20 83 st Z, r18 + 7ac: 01 e0 ldi r16, 0x01 ; 1 + 7ae: 10 e0 ldi r17, 0x00 ; 0 + 7b0: 20 e0 ldi r18, 0x00 ; 0 + 7b2: 30 e0 ldi r19, 0x00 ; 0 + 7b4: 61 eb ldi r22, 0xB1 ; 177 + 7b6: ad de rcall .-678 ; 0x512 + 7b8: 80 e0 ldi r24, 0x00 ; 0 + 7ba: 90 e0 ldi r25, 0x00 ; 0 + 7bc: 1f 91 pop r17 + 7be: 0f 91 pop r16 + 7c0: 08 95 ret + +000007c2 : + 7c2: af 92 push r10 + 7c4: bf 92 push r11 + 7c6: cf 92 push r12 + 7c8: df 92 push r13 + 7ca: ef 92 push r14 + 7cc: ff 92 push r15 + 7ce: 0f 93 push r16 + 7d0: 1f 93 push r17 + 7d2: cf 93 push r28 + 7d4: df 93 push r29 + 7d6: ec 01 movw r28, r24 + 7d8: 66 23 and r22, r22 + 7da: 19 f0 breq .+6 ; 0x7e2 + 7dc: 61 30 cpi r22, 0x01 ; 1 + 7de: 01 f1 breq .+64 ; 0x820 + 7e0: 3d c0 rjmp .+122 ; 0x85c + 7e2: 42 70 andi r20, 0x02 ; 2 + 7e4: 8e 89 ldd r24, Y+22 ; 0x16 + 7e6: 8c 7f andi r24, 0xFC ; 252 + 7e8: 48 2b or r20, r24 + 7ea: 4e 8b std Y+22, r20 ; 0x16 + 7ec: 3f 8b std Y+23, r19 ; 0x17 + 7ee: 28 8f std Y+24, r18 ; 0x18 + 7f0: d8 01 movw r26, r16 + 7f2: c7 01 movw r24, r14 + 7f4: 88 27 eor r24, r24 + 7f6: 99 27 eor r25, r25 + 7f8: af 70 andi r26, 0x0F ; 15 + 7fa: bb 27 eor r27, r27 + 7fc: fa 8e std Y+26, r15 ; 0x1a + 7fe: eb 8e std Y+27, r14 ; 0x1b + 800: 8a 2f mov r24, r26 + 802: 8f 70 andi r24, 0x0F ; 15 + 804: 89 8f std Y+25, r24 ; 0x19 + 806: bc 8a std Y+20, r11 ; 0x14 + 808: ad 8a std Y+21, r10 ; 0x15 + 80a: 08 e0 ldi r16, 0x08 ; 8 + 80c: 10 e0 ldi r17, 0x00 ; 0 + 80e: 20 e0 ldi r18, 0x00 ; 0 + 810: 30 e0 ldi r19, 0x00 ; 0 + 812: ae 01 movw r20, r28 + 814: 4c 5e subi r20, 0xEC ; 236 + 816: 5f 4f sbci r21, 0xFF ; 255 + 818: 6a e1 ldi r22, 0x1A ; 26 + 81a: ce 01 movw r24, r28 + 81c: 7a de rcall .-780 ; 0x512 + 81e: 1e c0 rjmp .+60 ; 0x85c + 820: 42 70 andi r20, 0x02 ; 2 + 822: 8e 8d ldd r24, Y+30 ; 0x1e + 824: 8c 7f andi r24, 0xFC ; 252 + 826: 48 2b or r20, r24 + 828: 4e 8f std Y+30, r20 ; 0x1e + 82a: 3f 8f std Y+31, r19 ; 0x1f + 82c: 28 a3 std Y+32, r18 ; 0x20 + 82e: d8 01 movw r26, r16 + 830: c7 01 movw r24, r14 + 832: 88 27 eor r24, r24 + 834: 99 27 eor r25, r25 + 836: af 70 andi r26, 0x0F ; 15 + 838: bb 27 eor r27, r27 + 83a: fa a2 std Y+34, r15 ; 0x22 + 83c: eb a2 std Y+35, r14 ; 0x23 + 83e: 8a 2f mov r24, r26 + 840: 8f 70 andi r24, 0x0F ; 15 + 842: 89 a3 std Y+33, r24 ; 0x21 + 844: bc 8e std Y+28, r11 ; 0x1c + 846: ad 8e std Y+29, r10 ; 0x1d + 848: 08 e0 ldi r16, 0x08 ; 8 + 84a: 10 e0 ldi r17, 0x00 ; 0 + 84c: 20 e0 ldi r18, 0x00 ; 0 + 84e: 30 e0 ldi r19, 0x00 ; 0 + 850: ae 01 movw r20, r28 + 852: 44 5e subi r20, 0xE4 ; 228 + 854: 5f 4f sbci r21, 0xFF ; 255 + 856: 62 e2 ldi r22, 0x22 ; 34 + 858: ce 01 movw r24, r28 + 85a: 5b de rcall .-842 ; 0x512 + 85c: 41 e0 ldi r20, 0x01 ; 1 + 85e: 61 e0 ldi r22, 0x01 ; 1 + 860: ce 01 movw r24, r28 + 862: 8b df rcall .-234 ; 0x77a + 864: 80 e0 ldi r24, 0x00 ; 0 + 866: 90 e0 ldi r25, 0x00 ; 0 + 868: df 91 pop r29 + 86a: cf 91 pop r28 + 86c: 1f 91 pop r17 + 86e: 0f 91 pop r16 + 870: ff 90 pop r15 + 872: ef 90 pop r14 + 874: df 90 pop r13 + 876: cf 90 pop r12 + 878: bf 90 pop r11 + 87a: af 90 pop r10 + 87c: 08 95 ret + +0000087e : + +int cm_si5351_init(si5351_driver *inst, void *i2c_transfer_inst, setGet_I2C_Event_fpt i2c_transfer_evt){ + 87e: ef 92 push r14 + 880: ff 92 push r15 + 882: 0f 93 push r16 + 884: 1f 93 push r17 + 886: cf 93 push r28 + 888: df 93 push r29 + 88a: 1f 92 push r1 + 88c: cd b7 in r28, 0x3d ; 61 + 88e: de b7 in r29, 0x3e ; 62 + + if(inst == NULL)return -1; + 890: 00 97 sbiw r24, 0x00 ; 0 + 892: 09 f4 brne .+2 ; 0x896 + 894: 85 c0 rjmp .+266 ; 0x9a0 + if(i2c_transfer_inst == NULL)return -1; + 896: 61 15 cp r22, r1 + 898: 71 05 cpc r23, r1 + 89a: 09 f4 brne .+2 ; 0x89e + 89c: 84 c0 rjmp .+264 ; 0x9a6 + if(i2c_transfer_evt == NULL)return -1; + 89e: 41 15 cp r20, r1 + 8a0: 51 05 cpc r21, r1 + 8a2: 09 f4 brne .+2 ; 0x8a6 + 8a4: 83 c0 rjmp .+262 ; 0x9ac + 8a6: 7c 01 movw r14, r24 + + inst->i2c_transfer_inst = i2c_transfer_inst; + 8a8: dc 01 movw r26, r24 + 8aa: 6d 93 st X+, r22 + 8ac: 7c 93 st X, r23 + 8ae: 11 97 sbiw r26, 0x01 ; 1 + inst->i2c_transfer_evt = i2c_transfer_evt; + 8b0: 12 96 adiw r26, 0x02 ; 2 + 8b2: 4d 93 st X+, r20 + 8b4: 5c 93 st X, r21 + 8b6: 13 97 sbiw r26, 0x03 ; 3 + + int ret = 0; + + memset(&(inst->device_data),0x00,sizeof(si5351_data)); + 8b8: fc 01 movw r30, r24 + 8ba: 34 96 adiw r30, 0x04 ; 4 + 8bc: 84 e5 ldi r24, 0x54 ; 84 + 8be: df 01 movw r26, r30 + 8c0: 1d 92 st X+, r1 + 8c2: 8a 95 dec r24 + 8c4: e9 f7 brne .-6 ; 0x8c0 + + /* Disable all outputs setting CLKx_DIS high */ + uint8_t temp = 0xff; + 8c6: 8f ef ldi r24, 0xFF ; 255 + 8c8: 89 83 std Y+1, r24 ; 0x01 + writeRegister(inst,SI5351_REG_OUTPUT_ENABLE_CONTROL,&temp,1); + 8ca: 01 e0 ldi r16, 0x01 ; 1 + 8cc: 10 e0 ldi r17, 0x00 ; 0 + 8ce: 20 e0 ldi r18, 0x00 ; 0 + 8d0: 30 e0 ldi r19, 0x00 ; 0 + 8d2: ae 01 movw r20, r28 + 8d4: 4f 5f subi r20, 0xFF ; 255 + 8d6: 5f 4f sbci r21, 0xFF ; 255 + 8d8: 63 e0 ldi r22, 0x03 ; 3 + 8da: c7 01 movw r24, r14 + 8dc: 1a de rcall .-972 ; 0x512 + + /* Power down all output drivers */ + temp = 0x80; + 8de: 80 e8 ldi r24, 0x80 ; 128 + 8e0: 89 83 std Y+1, r24 ; 0x01 + writeRegister(inst,SI5351_REG_CLK_0_CONTROL,&temp,1); + 8e2: 01 e0 ldi r16, 0x01 ; 1 + 8e4: 10 e0 ldi r17, 0x00 ; 0 + 8e6: 20 e0 ldi r18, 0x00 ; 0 + 8e8: 30 e0 ldi r19, 0x00 ; 0 + 8ea: ae 01 movw r20, r28 + 8ec: 4f 5f subi r20, 0xFF ; 255 + 8ee: 5f 4f sbci r21, 0xFF ; 255 + 8f0: 60 e1 ldi r22, 0x10 ; 16 + 8f2: c7 01 movw r24, r14 + 8f4: 0e de rcall .-996 ; 0x512 + writeRegister(inst,SI5351_REG_CLK_1_CONTROL,&temp,1); + 8f6: 01 e0 ldi r16, 0x01 ; 1 + 8f8: 10 e0 ldi r17, 0x00 ; 0 + 8fa: 20 e0 ldi r18, 0x00 ; 0 + 8fc: 30 e0 ldi r19, 0x00 ; 0 + 8fe: ae 01 movw r20, r28 + 900: 4f 5f subi r20, 0xFF ; 255 + 902: 5f 4f sbci r21, 0xFF ; 255 + 904: 61 e1 ldi r22, 0x11 ; 17 + 906: c7 01 movw r24, r14 + 908: 04 de rcall .-1016 ; 0x512 + writeRegister(inst,SI5351_REG_CLK_2_CONTROL,&temp,1); + 90a: 01 e0 ldi r16, 0x01 ; 1 + 90c: 10 e0 ldi r17, 0x00 ; 0 + 90e: 20 e0 ldi r18, 0x00 ; 0 + 910: 30 e0 ldi r19, 0x00 ; 0 + 912: ae 01 movw r20, r28 + 914: 4f 5f subi r20, 0xFF ; 255 + 916: 5f 4f sbci r21, 0xFF ; 255 + 918: 62 e1 ldi r22, 0x12 ; 18 + 91a: c7 01 movw r24, r14 + 91c: fa dd rcall .-1036 ; 0x512 + writeRegister(inst,SI5351_REG_CLK_3_CONTROL,&temp,1); + 91e: 01 e0 ldi r16, 0x01 ; 1 + 920: 10 e0 ldi r17, 0x00 ; 0 + 922: 20 e0 ldi r18, 0x00 ; 0 + 924: 30 e0 ldi r19, 0x00 ; 0 + 926: ae 01 movw r20, r28 + 928: 4f 5f subi r20, 0xFF ; 255 + 92a: 5f 4f sbci r21, 0xFF ; 255 + 92c: 63 e1 ldi r22, 0x13 ; 19 + 92e: c7 01 movw r24, r14 + 930: f0 dd rcall .-1056 ; 0x512 + writeRegister(inst,SI5351_REG_CLK_4_CONTROL,&temp,1); + 932: 01 e0 ldi r16, 0x01 ; 1 + 934: 10 e0 ldi r17, 0x00 ; 0 + 936: 20 e0 ldi r18, 0x00 ; 0 + 938: 30 e0 ldi r19, 0x00 ; 0 + 93a: ae 01 movw r20, r28 + 93c: 4f 5f subi r20, 0xFF ; 255 + 93e: 5f 4f sbci r21, 0xFF ; 255 + 940: 64 e1 ldi r22, 0x14 ; 20 + 942: c7 01 movw r24, r14 + 944: e6 dd rcall .-1076 ; 0x512 + writeRegister(inst,SI5351_REG_CLK_5_CONTROL,&temp,1); + 946: 01 e0 ldi r16, 0x01 ; 1 + 948: 10 e0 ldi r17, 0x00 ; 0 + 94a: 20 e0 ldi r18, 0x00 ; 0 + 94c: 30 e0 ldi r19, 0x00 ; 0 + 94e: ae 01 movw r20, r28 + 950: 4f 5f subi r20, 0xFF ; 255 + 952: 5f 4f sbci r21, 0xFF ; 255 + 954: 65 e1 ldi r22, 0x15 ; 21 + 956: c7 01 movw r24, r14 + 958: dc dd rcall .-1096 ; 0x512 + writeRegister(inst,SI5351_REG_CLK_6_CONTROL,&temp,1); + 95a: 01 e0 ldi r16, 0x01 ; 1 + 95c: 10 e0 ldi r17, 0x00 ; 0 + 95e: 20 e0 ldi r18, 0x00 ; 0 + 960: 30 e0 ldi r19, 0x00 ; 0 + 962: ae 01 movw r20, r28 + 964: 4f 5f subi r20, 0xFF ; 255 + 966: 5f 4f sbci r21, 0xFF ; 255 + 968: 66 e1 ldi r22, 0x16 ; 22 + 96a: c7 01 movw r24, r14 + 96c: d2 dd rcall .-1116 ; 0x512 + writeRegister(inst,SI5351_REG_CLK_7_CONTROL,&temp,1); + 96e: 01 e0 ldi r16, 0x01 ; 1 + 970: 10 e0 ldi r17, 0x00 ; 0 + 972: 20 e0 ldi r18, 0x00 ; 0 + 974: 30 e0 ldi r19, 0x00 ; 0 + 976: ae 01 movw r20, r28 + 978: 4f 5f subi r20, 0xFF ; 255 + 97a: 5f 4f sbci r21, 0xFF ; 255 + 97c: 67 e1 ldi r22, 0x17 ; 23 + 97e: c7 01 movw r24, r14 + 980: c8 dd rcall .-1136 ; 0x512 + + temp = SI5351_CRYSTAL_LOAD_10PF; + 982: 80 ec ldi r24, 0xC0 ; 192 + 984: 89 83 std Y+1, r24 ; 0x01 + + writeRegister(inst,SI5351_REG_CRYSTAL_LOAD_CAPACITANCE,&temp,1); + 986: 01 e0 ldi r16, 0x01 ; 1 + 988: 10 e0 ldi r17, 0x00 ; 0 + 98a: 20 e0 ldi r18, 0x00 ; 0 + 98c: 30 e0 ldi r19, 0x00 ; 0 + 98e: ae 01 movw r20, r28 + 990: 4f 5f subi r20, 0xFF ; 255 + 992: 5f 4f sbci r21, 0xFF ; 255 + 994: 67 eb ldi r22, 0xB7 ; 183 + 996: c7 01 movw r24, r14 + 998: bc dd rcall .-1160 ; 0x512 + return ret; + 99a: 80 e0 ldi r24, 0x00 ; 0 + 99c: 90 e0 ldi r25, 0x00 ; 0 + 99e: 08 c0 rjmp .+16 ; 0x9b0 + 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; + 9a0: 8f ef ldi r24, 0xFF ; 255 + 9a2: 9f ef ldi r25, 0xFF ; 255 + 9a4: 05 c0 rjmp .+10 ; 0x9b0 + if(i2c_transfer_inst == NULL)return -1; + 9a6: 8f ef ldi r24, 0xFF ; 255 + 9a8: 9f ef ldi r25, 0xFF ; 255 + 9aa: 02 c0 rjmp .+4 ; 0x9b0 + if(i2c_transfer_evt == NULL)return -1; + 9ac: 8f ef ldi r24, 0xFF ; 255 + 9ae: 9f ef ldi r25, 0xFF ; 255 + writeRegister(inst,SI5351_REG_CRYSTAL_LOAD_CAPACITANCE,&temp,1); + return ret; + + + +} + 9b0: 0f 90 pop r0 + 9b2: df 91 pop r29 + 9b4: cf 91 pop r28 + 9b6: 1f 91 pop r17 + 9b8: 0f 91 pop r16 + 9ba: ff 90 pop r15 + 9bc: ef 90 pop r14 + 9be: 08 95 ret + +000009c0 : + 9c0: 0f 93 push r16 + 9c2: 1f 93 push r17 + 9c4: cf 93 push r28 + 9c6: df 93 push r29 + 9c8: 82 30 cpi r24, 0x02 ; 2 + 9ca: 91 05 cpc r25, r1 + 9cc: 10 f4 brcc .+4 ; 0x9d2 + 9ce: 82 e0 ldi r24, 0x02 ; 2 + 9d0: 90 e0 ldi r25, 0x00 ; 0 + 9d2: e0 91 0c 3f lds r30, 0x3F0C ; 0x803f0c <__flp> + 9d6: f0 91 0d 3f lds r31, 0x3F0D ; 0x803f0d <__flp+0x1> + 9da: 20 e0 ldi r18, 0x00 ; 0 + 9dc: 30 e0 ldi r19, 0x00 ; 0 + 9de: a0 e0 ldi r26, 0x00 ; 0 + 9e0: b0 e0 ldi r27, 0x00 ; 0 + 9e2: 30 97 sbiw r30, 0x00 ; 0 + 9e4: 19 f1 breq .+70 ; 0xa2c + 9e6: 40 81 ld r20, Z + 9e8: 51 81 ldd r21, Z+1 ; 0x01 + 9ea: 02 81 ldd r16, Z+2 ; 0x02 + 9ec: 13 81 ldd r17, Z+3 ; 0x03 + 9ee: 48 17 cp r20, r24 + 9f0: 59 07 cpc r21, r25 + 9f2: c8 f0 brcs .+50 ; 0xa26 + 9f4: 84 17 cp r24, r20 + 9f6: 95 07 cpc r25, r21 + 9f8: 69 f4 brne .+26 ; 0xa14 + 9fa: 10 97 sbiw r26, 0x00 ; 0 + 9fc: 31 f0 breq .+12 ; 0xa0a + 9fe: 12 96 adiw r26, 0x02 ; 2 + a00: 0c 93 st X, r16 + a02: 12 97 sbiw r26, 0x02 ; 2 + a04: 13 96 adiw r26, 0x03 ; 3 + a06: 1c 93 st X, r17 + a08: 27 c0 rjmp .+78 ; 0xa58 + a0a: 00 93 0c 3f sts 0x3F0C, r16 ; 0x803f0c <__flp> + a0e: 10 93 0d 3f sts 0x3F0D, r17 ; 0x803f0d <__flp+0x1> + a12: 22 c0 rjmp .+68 ; 0xa58 + a14: 21 15 cp r18, r1 + a16: 31 05 cpc r19, r1 + a18: 19 f0 breq .+6 ; 0xa20 + a1a: 42 17 cp r20, r18 + a1c: 53 07 cpc r21, r19 + a1e: 18 f4 brcc .+6 ; 0xa26 + a20: 9a 01 movw r18, r20 + a22: bd 01 movw r22, r26 + a24: ef 01 movw r28, r30 + a26: df 01 movw r26, r30 + a28: f8 01 movw r30, r16 + a2a: db cf rjmp .-74 ; 0x9e2 + a2c: 21 15 cp r18, r1 + a2e: 31 05 cpc r19, r1 + a30: f9 f0 breq .+62 ; 0xa70 + a32: 28 1b sub r18, r24 + a34: 39 0b sbc r19, r25 + a36: 24 30 cpi r18, 0x04 ; 4 + a38: 31 05 cpc r19, r1 + a3a: 80 f4 brcc .+32 ; 0xa5c + a3c: 8a 81 ldd r24, Y+2 ; 0x02 + a3e: 9b 81 ldd r25, Y+3 ; 0x03 + a40: 61 15 cp r22, r1 + a42: 71 05 cpc r23, r1 + a44: 21 f0 breq .+8 ; 0xa4e + a46: fb 01 movw r30, r22 + a48: 82 83 std Z+2, r24 ; 0x02 + a4a: 93 83 std Z+3, r25 ; 0x03 + a4c: 04 c0 rjmp .+8 ; 0xa56 + a4e: 80 93 0c 3f sts 0x3F0C, r24 ; 0x803f0c <__flp> + a52: 90 93 0d 3f sts 0x3F0D, r25 ; 0x803f0d <__flp+0x1> + a56: fe 01 movw r30, r28 + a58: 32 96 adiw r30, 0x02 ; 2 + a5a: 44 c0 rjmp .+136 ; 0xae4 + a5c: fe 01 movw r30, r28 + a5e: e2 0f add r30, r18 + a60: f3 1f adc r31, r19 + a62: 81 93 st Z+, r24 + a64: 91 93 st Z+, r25 + a66: 22 50 subi r18, 0x02 ; 2 + a68: 31 09 sbc r19, r1 + a6a: 28 83 st Y, r18 + a6c: 39 83 std Y+1, r19 ; 0x01 + a6e: 3a c0 rjmp .+116 ; 0xae4 + a70: 20 91 0a 3f lds r18, 0x3F0A ; 0x803f0a <__brkval> + a74: 30 91 0b 3f lds r19, 0x3F0B ; 0x803f0b <__brkval+0x1> + a78: 23 2b or r18, r19 + a7a: 41 f4 brne .+16 ; 0xa8c + a7c: 20 91 02 3f lds r18, 0x3F02 ; 0x803f02 <__malloc_heap_start> + a80: 30 91 03 3f lds r19, 0x3F03 ; 0x803f03 <__malloc_heap_start+0x1> + a84: 20 93 0a 3f sts 0x3F0A, r18 ; 0x803f0a <__brkval> + a88: 30 93 0b 3f sts 0x3F0B, r19 ; 0x803f0b <__brkval+0x1> + a8c: 20 91 00 3f lds r18, 0x3F00 ; 0x803f00 <__DATA_REGION_ORIGIN__> + a90: 30 91 01 3f lds r19, 0x3F01 ; 0x803f01 <__DATA_REGION_ORIGIN__+0x1> + a94: 21 15 cp r18, r1 + a96: 31 05 cpc r19, r1 + a98: 41 f4 brne .+16 ; 0xaaa + a9a: 2d b7 in r18, 0x3d ; 61 + a9c: 3e b7 in r19, 0x3e ; 62 + a9e: 40 91 04 3f lds r20, 0x3F04 ; 0x803f04 <__malloc_margin> + aa2: 50 91 05 3f lds r21, 0x3F05 ; 0x803f05 <__malloc_margin+0x1> + aa6: 24 1b sub r18, r20 + aa8: 35 0b sbc r19, r21 + aaa: e0 91 0a 3f lds r30, 0x3F0A ; 0x803f0a <__brkval> + aae: f0 91 0b 3f lds r31, 0x3F0B ; 0x803f0b <__brkval+0x1> + ab2: e2 17 cp r30, r18 + ab4: f3 07 cpc r31, r19 + ab6: a0 f4 brcc .+40 ; 0xae0 + ab8: 2e 1b sub r18, r30 + aba: 3f 0b sbc r19, r31 + abc: 28 17 cp r18, r24 + abe: 39 07 cpc r19, r25 + ac0: 78 f0 brcs .+30 ; 0xae0 + ac2: ac 01 movw r20, r24 + ac4: 4e 5f subi r20, 0xFE ; 254 + ac6: 5f 4f sbci r21, 0xFF ; 255 + ac8: 24 17 cp r18, r20 + aca: 35 07 cpc r19, r21 + acc: 48 f0 brcs .+18 ; 0xae0 + ace: 4e 0f add r20, r30 + ad0: 5f 1f adc r21, r31 + ad2: 40 93 0a 3f sts 0x3F0A, r20 ; 0x803f0a <__brkval> + ad6: 50 93 0b 3f sts 0x3F0B, r21 ; 0x803f0b <__brkval+0x1> + ada: 81 93 st Z+, r24 + adc: 91 93 st Z+, r25 + ade: 02 c0 rjmp .+4 ; 0xae4 + ae0: e0 e0 ldi r30, 0x00 ; 0 + ae2: f0 e0 ldi r31, 0x00 ; 0 + ae4: cf 01 movw r24, r30 + ae6: df 91 pop r29 + ae8: cf 91 pop r28 + aea: 1f 91 pop r17 + aec: 0f 91 pop r16 + aee: 08 95 ret + +00000af0 : + af0: cf 93 push r28 + af2: df 93 push r29 + af4: 00 97 sbiw r24, 0x00 ; 0 + af6: 09 f4 brne .+2 ; 0xafa + af8: 81 c0 rjmp .+258 ; 0xbfc + afa: fc 01 movw r30, r24 + afc: 32 97 sbiw r30, 0x02 ; 2 + afe: 12 82 std Z+2, r1 ; 0x02 + b00: 13 82 std Z+3, r1 ; 0x03 + b02: a0 91 0c 3f lds r26, 0x3F0C ; 0x803f0c <__flp> + b06: b0 91 0d 3f lds r27, 0x3F0D ; 0x803f0d <__flp+0x1> + b0a: 10 97 sbiw r26, 0x00 ; 0 + b0c: 81 f4 brne .+32 ; 0xb2e + b0e: 20 81 ld r18, Z + b10: 31 81 ldd r19, Z+1 ; 0x01 + b12: 82 0f add r24, r18 + b14: 93 1f adc r25, r19 + b16: 20 91 0a 3f lds r18, 0x3F0A ; 0x803f0a <__brkval> + b1a: 30 91 0b 3f lds r19, 0x3F0B ; 0x803f0b <__brkval+0x1> + b1e: 28 17 cp r18, r24 + b20: 39 07 cpc r19, r25 + b22: 51 f5 brne .+84 ; 0xb78 + b24: e0 93 0a 3f sts 0x3F0A, r30 ; 0x803f0a <__brkval> + b28: f0 93 0b 3f sts 0x3F0B, r31 ; 0x803f0b <__brkval+0x1> + b2c: 67 c0 rjmp .+206 ; 0xbfc + b2e: ed 01 movw r28, r26 + b30: 20 e0 ldi r18, 0x00 ; 0 + b32: 30 e0 ldi r19, 0x00 ; 0 + b34: ce 17 cp r28, r30 + b36: df 07 cpc r29, r31 + b38: 40 f4 brcc .+16 ; 0xb4a + b3a: 4a 81 ldd r20, Y+2 ; 0x02 + b3c: 5b 81 ldd r21, Y+3 ; 0x03 + b3e: 9e 01 movw r18, r28 + b40: 41 15 cp r20, r1 + b42: 51 05 cpc r21, r1 + b44: f1 f0 breq .+60 ; 0xb82 + b46: ea 01 movw r28, r20 + b48: f5 cf rjmp .-22 ; 0xb34 + b4a: c2 83 std Z+2, r28 ; 0x02 + b4c: d3 83 std Z+3, r29 ; 0x03 + b4e: 40 81 ld r20, Z + b50: 51 81 ldd r21, Z+1 ; 0x01 + b52: 84 0f add r24, r20 + b54: 95 1f adc r25, r21 + b56: c8 17 cp r28, r24 + b58: d9 07 cpc r29, r25 + b5a: 59 f4 brne .+22 ; 0xb72 + b5c: 88 81 ld r24, Y + b5e: 99 81 ldd r25, Y+1 ; 0x01 + b60: 84 0f add r24, r20 + b62: 95 1f adc r25, r21 + b64: 02 96 adiw r24, 0x02 ; 2 + b66: 80 83 st Z, r24 + b68: 91 83 std Z+1, r25 ; 0x01 + b6a: 8a 81 ldd r24, Y+2 ; 0x02 + b6c: 9b 81 ldd r25, Y+3 ; 0x03 + b6e: 82 83 std Z+2, r24 ; 0x02 + b70: 93 83 std Z+3, r25 ; 0x03 + b72: 21 15 cp r18, r1 + b74: 31 05 cpc r19, r1 + b76: 29 f4 brne .+10 ; 0xb82 + b78: e0 93 0c 3f sts 0x3F0C, r30 ; 0x803f0c <__flp> + b7c: f0 93 0d 3f sts 0x3F0D, r31 ; 0x803f0d <__flp+0x1> + b80: 3d c0 rjmp .+122 ; 0xbfc + b82: e9 01 movw r28, r18 + b84: ea 83 std Y+2, r30 ; 0x02 + b86: fb 83 std Y+3, r31 ; 0x03 + b88: 49 91 ld r20, Y+ + b8a: 59 91 ld r21, Y+ + b8c: c4 0f add r28, r20 + b8e: d5 1f adc r29, r21 + b90: ec 17 cp r30, r28 + b92: fd 07 cpc r31, r29 + b94: 61 f4 brne .+24 ; 0xbae + b96: 80 81 ld r24, Z + b98: 91 81 ldd r25, Z+1 ; 0x01 + b9a: 84 0f add r24, r20 + b9c: 95 1f adc r25, r21 + b9e: 02 96 adiw r24, 0x02 ; 2 + ba0: e9 01 movw r28, r18 + ba2: 88 83 st Y, r24 + ba4: 99 83 std Y+1, r25 ; 0x01 + ba6: 82 81 ldd r24, Z+2 ; 0x02 + ba8: 93 81 ldd r25, Z+3 ; 0x03 + baa: 8a 83 std Y+2, r24 ; 0x02 + bac: 9b 83 std Y+3, r25 ; 0x03 + bae: e0 e0 ldi r30, 0x00 ; 0 + bb0: f0 e0 ldi r31, 0x00 ; 0 + bb2: 12 96 adiw r26, 0x02 ; 2 + bb4: 8d 91 ld r24, X+ + bb6: 9c 91 ld r25, X + bb8: 13 97 sbiw r26, 0x03 ; 3 + bba: 00 97 sbiw r24, 0x00 ; 0 + bbc: 19 f0 breq .+6 ; 0xbc4 + bbe: fd 01 movw r30, r26 + bc0: dc 01 movw r26, r24 + bc2: f7 cf rjmp .-18 ; 0xbb2 + bc4: 8d 91 ld r24, X+ + bc6: 9c 91 ld r25, X + bc8: 11 97 sbiw r26, 0x01 ; 1 + bca: 9d 01 movw r18, r26 + bcc: 2e 5f subi r18, 0xFE ; 254 + bce: 3f 4f sbci r19, 0xFF ; 255 + bd0: 82 0f add r24, r18 + bd2: 93 1f adc r25, r19 + bd4: 20 91 0a 3f lds r18, 0x3F0A ; 0x803f0a <__brkval> + bd8: 30 91 0b 3f lds r19, 0x3F0B ; 0x803f0b <__brkval+0x1> + bdc: 28 17 cp r18, r24 + bde: 39 07 cpc r19, r25 + be0: 69 f4 brne .+26 ; 0xbfc + be2: 30 97 sbiw r30, 0x00 ; 0 + be4: 29 f4 brne .+10 ; 0xbf0 + be6: 10 92 0c 3f sts 0x3F0C, r1 ; 0x803f0c <__flp> + bea: 10 92 0d 3f sts 0x3F0D, r1 ; 0x803f0d <__flp+0x1> + bee: 02 c0 rjmp .+4 ; 0xbf4 + bf0: 12 82 std Z+2, r1 ; 0x02 + bf2: 13 82 std Z+3, r1 ; 0x03 + bf4: a0 93 0a 3f sts 0x3F0A, r26 ; 0x803f0a <__brkval> + bf8: b0 93 0b 3f sts 0x3F0B, r27 ; 0x803f0b <__brkval+0x1> + bfc: df 91 pop r29 + bfe: cf 91 pop r28 + c00: 08 95 ret + +00000c02 : + c02: fb 01 movw r30, r22 + c04: dc 01 movw r26, r24 + c06: 02 c0 rjmp .+4 ; 0xc0c + c08: 01 90 ld r0, Z+ + c0a: 0d 92 st X+, r0 + c0c: 41 50 subi r20, 0x01 ; 1 + c0e: 50 40 sbci r21, 0x00 ; 0 + c10: d8 f7 brcc .-10 ; 0xc08 + c12: 08 95 ret + +00000c14 <_exit>: + c14: f8 94 cli + +00000c16 <__stop_program>: + c16: ff cf rjmp .-2 ; 0xc16 <__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 874a1ed..732f777 100644 --- a/storno_cqp6xx_digital_xtal/Debug/storno_cqp6xx_digital_xtal.map +++ b/storno_cqp6xx_digital_xtal/Debug/storno_cqp6xx_digital_xtal.map @@ -12,8 +12,14 @@ c:/program files (x86)/atmel/studio/7.0/toolchain/avr8/avr8-gnu-toolchain/bin/.. si5351_driver/si5351_driver.o (__fixunssfsi) c:/program files (x86)/atmel/studio/7.0/toolchain/avr8/avr8-gnu-toolchain/bin/../lib/gcc/avr/5.4.0/../../../../avr/lib/avrxmega3/short-calls\libm.a(floatsisf.o) si5351_driver/si5351_driver.o (__floatunsisf) +c:/program files (x86)/atmel/studio/7.0/toolchain/avr8/avr8-gnu-toolchain/bin/../lib/gcc/avr/5.4.0/../../../../avr/lib/avrxmega3/short-calls\libm.a(floor.o) + si5351_driver/si5351_driver.o (floor) c:/program files (x86)/atmel/studio/7.0/toolchain/avr8/avr8-gnu-toolchain/bin/../lib/gcc/avr/5.4.0/../../../../avr/lib/avrxmega3/short-calls\libm.a(fp_inf.o) c:/program files (x86)/atmel/studio/7.0/toolchain/avr8/avr8-gnu-toolchain/bin/../lib/gcc/avr/5.4.0/../../../../avr/lib/avrxmega3/short-calls\libm.a(addsf3x.o) (__fp_inf) +c:/program files (x86)/atmel/studio/7.0/toolchain/avr8/avr8-gnu-toolchain/bin/../lib/gcc/avr/5.4.0/../../../../avr/lib/avrxmega3/short-calls\libm.a(fp_mintl.o) + c:/program files (x86)/atmel/studio/7.0/toolchain/avr8/avr8-gnu-toolchain/bin/../lib/gcc/avr/5.4.0/../../../../avr/lib/avrxmega3/short-calls\libm.a(floor.o) (__fp_mintl) +c:/program files (x86)/atmel/studio/7.0/toolchain/avr8/avr8-gnu-toolchain/bin/../lib/gcc/avr/5.4.0/../../../../avr/lib/avrxmega3/short-calls\libm.a(fp_mpack.o) + c:/program files (x86)/atmel/studio/7.0/toolchain/avr8/avr8-gnu-toolchain/bin/../lib/gcc/avr/5.4.0/../../../../avr/lib/avrxmega3/short-calls\libm.a(floor.o) (__fp_mpack) c:/program files (x86)/atmel/studio/7.0/toolchain/avr8/avr8-gnu-toolchain/bin/../lib/gcc/avr/5.4.0/../../../../avr/lib/avrxmega3/short-calls\libm.a(fp_nan.o) c:/program files (x86)/atmel/studio/7.0/toolchain/avr8/avr8-gnu-toolchain/bin/../lib/gcc/avr/5.4.0/../../../../avr/lib/avrxmega3/short-calls\libm.a(addsf3x.o) (__fp_nan) c:/program files (x86)/atmel/studio/7.0/toolchain/avr8/avr8-gnu-toolchain/bin/../lib/gcc/avr/5.4.0/../../../../avr/lib/avrxmega3/short-calls\libm.a(fp_pscA.o) @@ -24,6 +30,8 @@ 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/../../../../avr/lib/avrxmega3/short-calls\libm.a(addsf3.o) (__fp_round) c:/program files (x86)/atmel/studio/7.0/toolchain/avr8/avr8-gnu-toolchain/bin/../lib/gcc/avr/5.4.0/../../../../avr/lib/avrxmega3/short-calls\libm.a(fp_split3.o) c:/program files (x86)/atmel/studio/7.0/toolchain/avr8/avr8-gnu-toolchain/bin/../lib/gcc/avr/5.4.0/../../../../avr/lib/avrxmega3/short-calls\libm.a(addsf3x.o) (__fp_split3) +c:/program files (x86)/atmel/studio/7.0/toolchain/avr8/avr8-gnu-toolchain/bin/../lib/gcc/avr/5.4.0/../../../../avr/lib/avrxmega3/short-calls\libm.a(fp_trunc.o) + c:/program files (x86)/atmel/studio/7.0/toolchain/avr8/avr8-gnu-toolchain/bin/../lib/gcc/avr/5.4.0/../../../../avr/lib/avrxmega3/short-calls\libm.a(floor.o) (__fp_trunc) c:/program files (x86)/atmel/studio/7.0/toolchain/avr8/avr8-gnu-toolchain/bin/../lib/gcc/avr/5.4.0/../../../../avr/lib/avrxmega3/short-calls\libm.a(fp_zero.o) c:/program files (x86)/atmel/studio/7.0/toolchain/avr8/avr8-gnu-toolchain/bin/../lib/gcc/avr/5.4.0/../../../../avr/lib/avrxmega3/short-calls\libm.a(addsf3x.o) (__fp_zero) c:/program files (x86)/atmel/studio/7.0/toolchain/avr8/avr8-gnu-toolchain/bin/../lib/gcc/avr/5.4.0/../../../../avr/lib/avrxmega3/short-calls\libm.a(mulsf3.o) @@ -34,11 +42,33 @@ c:/program files (x86)/atmel/studio/7.0/toolchain/avr8/avr8-gnu-toolchain/bin/.. si5351_driver/si5351_driver.o (__udivmodsi4) c:/program files (x86)/atmel/studio/7.0/toolchain/avr8/avr8-gnu-toolchain/bin/../lib/gcc/avr/5.4.0/avrxmega3/short-calls\libgcc.a(_exit.o) C:/Program Files (x86)/Atmel/Studio/7.0/Packs/atmel/ATtiny_DFP/1.10.348/gcc/dev/attiny402/avrxmega3/short-calls/crtattiny402.o (exit) +c:/program files (x86)/atmel/studio/7.0/toolchain/avr8/avr8-gnu-toolchain/bin/../lib/gcc/avr/5.4.0/avrxmega3/short-calls\libgcc.a(_clear_bss.o) + main.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) + si5351_driver/si5351_driver.o (memcpy) +c:/program files (x86)/atmel/studio/7.0/toolchain/avr8/avr8-gnu-toolchain/bin/../lib/gcc/avr/5.4.0/avrxmega3/short-calls\libgcc.a(_copy_data.o) + c:/program files (x86)/atmel/studio/7.0/toolchain/avr8/avr8-gnu-toolchain/bin/../lib/gcc/avr/5.4.0/../../../../avr/lib/avrxmega3/short-calls\libc.a(malloc.o) (__do_copy_data) + +Allocating common symbols +Common symbol size file + +storno_xtal_app 0x4 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) 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_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_init + 0x00000000 0x34 avr_gpio_driver/avr_gpio.o .text 0x00000000 0x0 avr_i2c_driver/avr_i2c.o .data 0x00000000 0x0 avr_i2c_driver/avr_i2c.o .bss 0x00000000 0x0 avr_i2c_driver/avr_i2c.o @@ -63,17 +93,6 @@ Discarded input sections .text 0x00000000 0x0 cqm6xx_app.o .data 0x00000000 0x0 cqm6xx_app.o .bss 0x00000000 0x0 cqm6xx_app.o - .text.storno_osc_app_init - 0x00000000 0x2 cqm6xx_app.o - .debug_info 0x00000000 0x3f cqm6xx_app.o - .debug_abbrev 0x00000000 0x2c cqm6xx_app.o - .debug_aranges - 0x00000000 0x20 cqm6xx_app.o - .debug_ranges 0x00000000 0x10 cqm6xx_app.o - .debug_line 0x00000000 0x3d cqm6xx_app.o - .debug_str 0x00000000 0x145 cqm6xx_app.o - .comment 0x00000000 0x31 cqm6xx_app.o - .debug_frame 0x00000000 0x24 cqm6xx_app.o .text 0x00000000 0x0 main.o .data 0x00000000 0x0 main.o .bss 0x00000000 0x0 main.o @@ -82,26 +101,10 @@ Discarded input sections .bss 0x00000000 0x0 si5351_driver/si5351_driver.o .text.readRegister 0x00000000 0x80 si5351_driver/si5351_driver.o - .text.writeRegister - 0x00000000 0x7e si5351_driver/si5351_driver.o .text.cm_setPLLParameters - 0x00000000 0x306 si5351_driver/si5351_driver.o - .text.cm_setInputSource - 0x00000000 0x3c si5351_driver/si5351_driver.o + 0x00000000 0x2ce si5351_driver/si5351_driver.o .text.cm_si5351_getRevisionNumber 0x00000000 0x2a si5351_driver/si5351_driver.o - .text.cm_si5351_init - 0x00000000 0x32 si5351_driver/si5351_driver.o - .debug_info 0x00000000 0xd79 si5351_driver/si5351_driver.o - .debug_abbrev 0x00000000 0x1d1 si5351_driver/si5351_driver.o - .debug_loc 0x00000000 0x8b0 si5351_driver/si5351_driver.o - .debug_aranges - 0x00000000 0x48 si5351_driver/si5351_driver.o - .debug_ranges 0x00000000 0x38 si5351_driver/si5351_driver.o - .debug_line 0x00000000 0x267 si5351_driver/si5351_driver.o - .debug_str 0x00000000 0xbe8 si5351_driver/si5351_driver.o - .comment 0x00000000 0x31 si5351_driver/si5351_driver.o - .debug_frame 0x00000000 0x168 si5351_driver/si5351_driver.o .text 0x00000000 0x0 c:/program files (x86)/atmel/studio/7.0/toolchain/avr8/avr8-gnu-toolchain/bin/../lib/gcc/avr/5.4.0/../../../../avr/lib/avrxmega3/short-calls\libm.a(addsf3.o) .data 0x00000000 0x0 c:/program files (x86)/atmel/studio/7.0/toolchain/avr8/avr8-gnu-toolchain/bin/../lib/gcc/avr/5.4.0/../../../../avr/lib/avrxmega3/short-calls\libm.a(addsf3.o) .bss 0x00000000 0x0 c:/program files (x86)/atmel/studio/7.0/toolchain/avr8/avr8-gnu-toolchain/bin/../lib/gcc/avr/5.4.0/../../../../avr/lib/avrxmega3/short-calls\libm.a(addsf3.o) @@ -132,11 +135,26 @@ Discarded input sections .bss 0x00000000 0x0 c:/program files (x86)/atmel/studio/7.0/toolchain/avr8/avr8-gnu-toolchain/bin/../lib/gcc/avr/5.4.0/../../../../avr/lib/avrxmega3/short-calls\libm.a(floatsisf.o) .text.avr-libc.fplib 0x00000000 0x7a c:/program files (x86)/atmel/studio/7.0/toolchain/avr8/avr8-gnu-toolchain/bin/../lib/gcc/avr/5.4.0/../../../../avr/lib/avrxmega3/short-calls\libm.a(floatsisf.o) + .text 0x00000000 0x0 c:/program files (x86)/atmel/studio/7.0/toolchain/avr8/avr8-gnu-toolchain/bin/../lib/gcc/avr/5.4.0/../../../../avr/lib/avrxmega3/short-calls\libm.a(floor.o) + .data 0x00000000 0x0 c:/program files (x86)/atmel/studio/7.0/toolchain/avr8/avr8-gnu-toolchain/bin/../lib/gcc/avr/5.4.0/../../../../avr/lib/avrxmega3/short-calls\libm.a(floor.o) + .bss 0x00000000 0x0 c:/program files (x86)/atmel/studio/7.0/toolchain/avr8/avr8-gnu-toolchain/bin/../lib/gcc/avr/5.4.0/../../../../avr/lib/avrxmega3/short-calls\libm.a(floor.o) + .text.avr-libc.fplib + 0x00000000 0x2e c:/program files (x86)/atmel/studio/7.0/toolchain/avr8/avr8-gnu-toolchain/bin/../lib/gcc/avr/5.4.0/../../../../avr/lib/avrxmega3/short-calls\libm.a(floor.o) .text 0x00000000 0x0 c:/program files (x86)/atmel/studio/7.0/toolchain/avr8/avr8-gnu-toolchain/bin/../lib/gcc/avr/5.4.0/../../../../avr/lib/avrxmega3/short-calls\libm.a(fp_inf.o) .data 0x00000000 0x0 c:/program files (x86)/atmel/studio/7.0/toolchain/avr8/avr8-gnu-toolchain/bin/../lib/gcc/avr/5.4.0/../../../../avr/lib/avrxmega3/short-calls\libm.a(fp_inf.o) .bss 0x00000000 0x0 c:/program files (x86)/atmel/studio/7.0/toolchain/avr8/avr8-gnu-toolchain/bin/../lib/gcc/avr/5.4.0/../../../../avr/lib/avrxmega3/short-calls\libm.a(fp_inf.o) .text.avr-libc.fplib 0x00000000 0xc c:/program files (x86)/atmel/studio/7.0/toolchain/avr8/avr8-gnu-toolchain/bin/../lib/gcc/avr/5.4.0/../../../../avr/lib/avrxmega3/short-calls\libm.a(fp_inf.o) + .text 0x00000000 0x0 c:/program files (x86)/atmel/studio/7.0/toolchain/avr8/avr8-gnu-toolchain/bin/../lib/gcc/avr/5.4.0/../../../../avr/lib/avrxmega3/short-calls\libm.a(fp_mintl.o) + .data 0x00000000 0x0 c:/program files (x86)/atmel/studio/7.0/toolchain/avr8/avr8-gnu-toolchain/bin/../lib/gcc/avr/5.4.0/../../../../avr/lib/avrxmega3/short-calls\libm.a(fp_mintl.o) + .bss 0x00000000 0x0 c:/program files (x86)/atmel/studio/7.0/toolchain/avr8/avr8-gnu-toolchain/bin/../lib/gcc/avr/5.4.0/../../../../avr/lib/avrxmega3/short-calls\libm.a(fp_mintl.o) + .text.avr-libc.fplib + 0x00000000 0x36 c:/program files (x86)/atmel/studio/7.0/toolchain/avr8/avr8-gnu-toolchain/bin/../lib/gcc/avr/5.4.0/../../../../avr/lib/avrxmega3/short-calls\libm.a(fp_mintl.o) + .text 0x00000000 0x0 c:/program files (x86)/atmel/studio/7.0/toolchain/avr8/avr8-gnu-toolchain/bin/../lib/gcc/avr/5.4.0/../../../../avr/lib/avrxmega3/short-calls\libm.a(fp_mpack.o) + .data 0x00000000 0x0 c:/program files (x86)/atmel/studio/7.0/toolchain/avr8/avr8-gnu-toolchain/bin/../lib/gcc/avr/5.4.0/../../../../avr/lib/avrxmega3/short-calls\libm.a(fp_mpack.o) + .bss 0x00000000 0x0 c:/program files (x86)/atmel/studio/7.0/toolchain/avr8/avr8-gnu-toolchain/bin/../lib/gcc/avr/5.4.0/../../../../avr/lib/avrxmega3/short-calls\libm.a(fp_mpack.o) + .text.avr-libc.fplib + 0x00000000 0x1c c:/program files (x86)/atmel/studio/7.0/toolchain/avr8/avr8-gnu-toolchain/bin/../lib/gcc/avr/5.4.0/../../../../avr/lib/avrxmega3/short-calls\libm.a(fp_mpack.o) .text 0x00000000 0x0 c:/program files (x86)/atmel/studio/7.0/toolchain/avr8/avr8-gnu-toolchain/bin/../lib/gcc/avr/5.4.0/../../../../avr/lib/avrxmega3/short-calls\libm.a(fp_nan.o) .data 0x00000000 0x0 c:/program files (x86)/atmel/studio/7.0/toolchain/avr8/avr8-gnu-toolchain/bin/../lib/gcc/avr/5.4.0/../../../../avr/lib/avrxmega3/short-calls\libm.a(fp_nan.o) .bss 0x00000000 0x0 c:/program files (x86)/atmel/studio/7.0/toolchain/avr8/avr8-gnu-toolchain/bin/../lib/gcc/avr/5.4.0/../../../../avr/lib/avrxmega3/short-calls\libm.a(fp_nan.o) @@ -162,6 +180,11 @@ Discarded input sections .bss 0x00000000 0x0 c:/program files (x86)/atmel/studio/7.0/toolchain/avr8/avr8-gnu-toolchain/bin/../lib/gcc/avr/5.4.0/../../../../avr/lib/avrxmega3/short-calls\libm.a(fp_split3.o) .text.avr-libc.fplib 0x00000000 0x44 c:/program files (x86)/atmel/studio/7.0/toolchain/avr8/avr8-gnu-toolchain/bin/../lib/gcc/avr/5.4.0/../../../../avr/lib/avrxmega3/short-calls\libm.a(fp_split3.o) + .text 0x00000000 0x0 c:/program files (x86)/atmel/studio/7.0/toolchain/avr8/avr8-gnu-toolchain/bin/../lib/gcc/avr/5.4.0/../../../../avr/lib/avrxmega3/short-calls\libm.a(fp_trunc.o) + .data 0x00000000 0x0 c:/program files (x86)/atmel/studio/7.0/toolchain/avr8/avr8-gnu-toolchain/bin/../lib/gcc/avr/5.4.0/../../../../avr/lib/avrxmega3/short-calls\libm.a(fp_trunc.o) + .bss 0x00000000 0x0 c:/program files (x86)/atmel/studio/7.0/toolchain/avr8/avr8-gnu-toolchain/bin/../lib/gcc/avr/5.4.0/../../../../avr/lib/avrxmega3/short-calls\libm.a(fp_trunc.o) + .text.avr-libc.fplib + 0x00000000 0x30 c:/program files (x86)/atmel/studio/7.0/toolchain/avr8/avr8-gnu-toolchain/bin/../lib/gcc/avr/5.4.0/../../../../avr/lib/avrxmega3/short-calls\libm.a(fp_trunc.o) .text 0x00000000 0x0 c:/program files (x86)/atmel/studio/7.0/toolchain/avr8/avr8-gnu-toolchain/bin/../lib/gcc/avr/5.4.0/../../../../avr/lib/avrxmega3/short-calls\libm.a(fp_zero.o) .data 0x00000000 0x0 c:/program files (x86)/atmel/studio/7.0/toolchain/avr8/avr8-gnu-toolchain/bin/../lib/gcc/avr/5.4.0/../../../../avr/lib/avrxmega3/short-calls\libm.a(fp_zero.o) .bss 0x00000000 0x0 c:/program files (x86)/atmel/studio/7.0/toolchain/avr8/avr8-gnu-toolchain/bin/../lib/gcc/avr/5.4.0/../../../../avr/lib/avrxmega3/short-calls\libm.a(fp_zero.o) @@ -209,6 +232,43 @@ Discarded input sections 0x00000000 0x0 c:/program files (x86)/atmel/studio/7.0/toolchain/avr8/avr8-gnu-toolchain/bin/../lib/gcc/avr/5.4.0/avrxmega3/short-calls\libgcc.a(_exit.o) .text.libgcc.fixed 0x00000000 0x0 c:/program files (x86)/atmel/studio/7.0/toolchain/avr8/avr8-gnu-toolchain/bin/../lib/gcc/avr/5.4.0/avrxmega3/short-calls\libgcc.a(_exit.o) + .text 0x00000000 0x0 c:/program files (x86)/atmel/studio/7.0/toolchain/avr8/avr8-gnu-toolchain/bin/../lib/gcc/avr/5.4.0/avrxmega3/short-calls\libgcc.a(_clear_bss.o) + .data 0x00000000 0x0 c:/program files (x86)/atmel/studio/7.0/toolchain/avr8/avr8-gnu-toolchain/bin/../lib/gcc/avr/5.4.0/avrxmega3/short-calls\libgcc.a(_clear_bss.o) + .bss 0x00000000 0x0 c:/program files (x86)/atmel/studio/7.0/toolchain/avr8/avr8-gnu-toolchain/bin/../lib/gcc/avr/5.4.0/avrxmega3/short-calls\libgcc.a(_clear_bss.o) + .text.libgcc.mul + 0x00000000 0x0 c:/program files (x86)/atmel/studio/7.0/toolchain/avr8/avr8-gnu-toolchain/bin/../lib/gcc/avr/5.4.0/avrxmega3/short-calls\libgcc.a(_clear_bss.o) + .text.libgcc.div + 0x00000000 0x0 c:/program files (x86)/atmel/studio/7.0/toolchain/avr8/avr8-gnu-toolchain/bin/../lib/gcc/avr/5.4.0/avrxmega3/short-calls\libgcc.a(_clear_bss.o) + .text.libgcc 0x00000000 0x0 c:/program files (x86)/atmel/studio/7.0/toolchain/avr8/avr8-gnu-toolchain/bin/../lib/gcc/avr/5.4.0/avrxmega3/short-calls\libgcc.a(_clear_bss.o) + .text.libgcc.prologue + 0x00000000 0x0 c:/program files (x86)/atmel/studio/7.0/toolchain/avr8/avr8-gnu-toolchain/bin/../lib/gcc/avr/5.4.0/avrxmega3/short-calls\libgcc.a(_clear_bss.o) + .text.libgcc.builtins + 0x00000000 0x0 c:/program files (x86)/atmel/studio/7.0/toolchain/avr8/avr8-gnu-toolchain/bin/../lib/gcc/avr/5.4.0/avrxmega3/short-calls\libgcc.a(_clear_bss.o) + .text.libgcc.fmul + 0x00000000 0x0 c:/program files (x86)/atmel/studio/7.0/toolchain/avr8/avr8-gnu-toolchain/bin/../lib/gcc/avr/5.4.0/avrxmega3/short-calls\libgcc.a(_clear_bss.o) + .text.libgcc.fixed + 0x00000000 0x0 c:/program files (x86)/atmel/studio/7.0/toolchain/avr8/avr8-gnu-toolchain/bin/../lib/gcc/avr/5.4.0/avrxmega3/short-calls\libgcc.a(_clear_bss.o) + .text 0x00000000 0x0 c:/program files (x86)/atmel/studio/7.0/toolchain/avr8/avr8-gnu-toolchain/bin/../lib/gcc/avr/5.4.0/../../../../avr/lib/avrxmega3/short-calls\libc.a(malloc.o) + .bss 0x00000000 0x0 c:/program files (x86)/atmel/studio/7.0/toolchain/avr8/avr8-gnu-toolchain/bin/../lib/gcc/avr/5.4.0/../../../../avr/lib/avrxmega3/short-calls\libc.a(malloc.o) + .text 0x00000000 0x0 c:/program files (x86)/atmel/studio/7.0/toolchain/avr8/avr8-gnu-toolchain/bin/../lib/gcc/avr/5.4.0/../../../../avr/lib/avrxmega3/short-calls\libc.a(memcpy.o) + .data 0x00000000 0x0 c:/program files (x86)/atmel/studio/7.0/toolchain/avr8/avr8-gnu-toolchain/bin/../lib/gcc/avr/5.4.0/../../../../avr/lib/avrxmega3/short-calls\libc.a(memcpy.o) + .bss 0x00000000 0x0 c:/program files (x86)/atmel/studio/7.0/toolchain/avr8/avr8-gnu-toolchain/bin/../lib/gcc/avr/5.4.0/../../../../avr/lib/avrxmega3/short-calls\libc.a(memcpy.o) + .text 0x00000000 0x0 c:/program files (x86)/atmel/studio/7.0/toolchain/avr8/avr8-gnu-toolchain/bin/../lib/gcc/avr/5.4.0/avrxmega3/short-calls\libgcc.a(_copy_data.o) + .data 0x00000000 0x0 c:/program files (x86)/atmel/studio/7.0/toolchain/avr8/avr8-gnu-toolchain/bin/../lib/gcc/avr/5.4.0/avrxmega3/short-calls\libgcc.a(_copy_data.o) + .bss 0x00000000 0x0 c:/program files (x86)/atmel/studio/7.0/toolchain/avr8/avr8-gnu-toolchain/bin/../lib/gcc/avr/5.4.0/avrxmega3/short-calls\libgcc.a(_copy_data.o) + .text.libgcc.mul + 0x00000000 0x0 c:/program files (x86)/atmel/studio/7.0/toolchain/avr8/avr8-gnu-toolchain/bin/../lib/gcc/avr/5.4.0/avrxmega3/short-calls\libgcc.a(_copy_data.o) + .text.libgcc.div + 0x00000000 0x0 c:/program files (x86)/atmel/studio/7.0/toolchain/avr8/avr8-gnu-toolchain/bin/../lib/gcc/avr/5.4.0/avrxmega3/short-calls\libgcc.a(_copy_data.o) + .text.libgcc 0x00000000 0x0 c:/program files (x86)/atmel/studio/7.0/toolchain/avr8/avr8-gnu-toolchain/bin/../lib/gcc/avr/5.4.0/avrxmega3/short-calls\libgcc.a(_copy_data.o) + .text.libgcc.prologue + 0x00000000 0x0 c:/program files (x86)/atmel/studio/7.0/toolchain/avr8/avr8-gnu-toolchain/bin/../lib/gcc/avr/5.4.0/avrxmega3/short-calls\libgcc.a(_copy_data.o) + .text.libgcc.builtins + 0x00000000 0x0 c:/program files (x86)/atmel/studio/7.0/toolchain/avr8/avr8-gnu-toolchain/bin/../lib/gcc/avr/5.4.0/avrxmega3/short-calls\libgcc.a(_copy_data.o) + .text.libgcc.fmul + 0x00000000 0x0 c:/program files (x86)/atmel/studio/7.0/toolchain/avr8/avr8-gnu-toolchain/bin/../lib/gcc/avr/5.4.0/avrxmega3/short-calls\libgcc.a(_copy_data.o) + .text.libgcc.fixed + 0x00000000 0x0 c:/program files (x86)/atmel/studio/7.0/toolchain/avr8/avr8-gnu-toolchain/bin/../lib/gcc/avr/5.4.0/avrxmega3/short-calls\libgcc.a(_copy_data.o) Memory Configuration @@ -227,6 +287,7 @@ 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_gpio_driver/avr_gpio.o LOAD avr_i2c_driver/avr_i2c.o LOAD avr_uart_driver/avr_uart.o LOAD cqm6xx_app.o @@ -342,7 +403,7 @@ END GROUP .rela.plt *(.rela.plt) -.text 0x00000000 0x11c +.text 0x00000000 0xc18 *(.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 @@ -383,6 +444,10 @@ END GROUP *(.init3) *(.init3) *(.init4) + .init4 0x00000040 0x10 c:/program files (x86)/atmel/studio/7.0/toolchain/avr8/avr8-gnu-toolchain/bin/../lib/gcc/avr/5.4.0/avrxmega3/short-calls\libgcc.a(_clear_bss.o) + 0x00000040 __do_clear_bss + .init4 0x00000050 0x16 c:/program files (x86)/atmel/studio/7.0/toolchain/avr8/avr8-gnu-toolchain/bin/../lib/gcc/avr/5.4.0/avrxmega3/short-calls\libgcc.a(_copy_data.o) + 0x00000050 __do_copy_data *(.init4) *(.init5) *(.init5) @@ -393,54 +458,111 @@ END GROUP *(.init8) *(.init8) *(.init9) - .init9 0x00000040 0x4 C:/Program Files (x86)/Atmel/Studio/7.0/Packs/atmel/ATtiny_DFP/1.10.348/gcc/dev/attiny402/avrxmega3/short-calls/crtattiny402.o + .init9 0x00000066 0x4 C:/Program Files (x86)/Atmel/Studio/7.0/Packs/atmel/ATtiny_DFP/1.10.348/gcc/dev/attiny402/avrxmega3/short-calls/crtattiny402.o *(.init9) *(.text) - .text 0x00000044 0x2 C:/Program Files (x86)/Atmel/Studio/7.0/Packs/atmel/ATtiny_DFP/1.10.348/gcc/dev/attiny402/avrxmega3/short-calls/crtattiny402.o - 0x00000044 __vector_22 - 0x00000044 __vector_1 - 0x00000044 __vector_24 - 0x00000044 __vector_12 - 0x00000044 __bad_interrupt - 0x00000044 __vector_6 - 0x00000044 __vector_3 - 0x00000044 __vector_23 - 0x00000044 __vector_25 - 0x00000044 __vector_11 - 0x00000044 __vector_13 - 0x00000044 __vector_17 - 0x00000044 __vector_19 - 0x00000044 __vector_7 - 0x00000044 __vector_5 - 0x00000044 __vector_4 - 0x00000044 __vector_9 - 0x00000044 __vector_2 - 0x00000044 __vector_21 - 0x00000044 __vector_15 - 0x00000044 __vector_8 - 0x00000044 __vector_14 - 0x00000044 __vector_10 - 0x00000044 __vector_16 - 0x00000044 __vector_18 - 0x00000044 __vector_20 - 0x00000046 . = ALIGN (0x2) + .text 0x0000006a 0x2 C:/Program Files (x86)/Atmel/Studio/7.0/Packs/atmel/ATtiny_DFP/1.10.348/gcc/dev/attiny402/avrxmega3/short-calls/crtattiny402.o + 0x0000006a __vector_22 + 0x0000006a __vector_1 + 0x0000006a __vector_24 + 0x0000006a __vector_12 + 0x0000006a __bad_interrupt + 0x0000006a __vector_6 + 0x0000006a __vector_3 + 0x0000006a __vector_23 + 0x0000006a __vector_25 + 0x0000006a __vector_11 + 0x0000006a __vector_13 + 0x0000006a __vector_17 + 0x0000006a __vector_19 + 0x0000006a __vector_7 + 0x0000006a __vector_5 + 0x0000006a __vector_4 + 0x0000006a __vector_9 + 0x0000006a __vector_2 + 0x0000006a __vector_21 + 0x0000006a __vector_15 + 0x0000006a __vector_8 + 0x0000006a __vector_14 + 0x0000006a __vector_10 + 0x0000006a __vector_16 + 0x0000006a __vector_18 + 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 + .text.i2c_write_devAddr + 0x000000a0 0x22 avr_i2c_driver/avr_i2c.o + 0x000000a0 i2c_write_devAddr + .text.i2c_write + 0x000000c2 0x92 avr_i2c_driver/avr_i2c.o + 0x000000c2 i2c_write + .text.i2c_read + 0x00000154 0x8c avr_i2c_driver/avr_i2c.o + 0x00000154 i2c_read .text.i2c_IsDeviceReady - 0x00000046 0x2c avr_i2c_driver/avr_i2c.o - 0x00000046 i2c_IsDeviceReady + 0x000001e0 0x2c avr_i2c_driver/avr_i2c.o + 0x000001e0 i2c_IsDeviceReady .text.cm_i2c_init - 0x00000072 0x1e avr_i2c_driver/avr_i2c.o - 0x00000072 cm_i2c_init + 0x0000020c 0x34 avr_i2c_driver/avr_i2c.o + 0x0000020c cm_i2c_init .text.cm_i2c_addDev - 0x00000090 0x3c avr_i2c_driver/avr_i2c.o - 0x00000090 cm_i2c_addDev - .text.main 0x000000cc 0x4c main.o - 0x000000cc main - 0x00000118 . = ALIGN (0x2) + 0x00000240 0x3c avr_i2c_driver/avr_i2c.o + 0x00000240 cm_i2c_addDev + .text.cm_i2c_transfer + 0x0000027c 0x34 avr_i2c_driver/avr_i2c.o + 0x0000027c cm_i2c_transfer + .text.isStructValid + 0x000002b0 0x1a cqm6xx_app.o + .text.cqm6xx_app_updateOsc + 0x000002ca 0x76 cqm6xx_app.o + .text.cqm6xx_app_statemachine + 0x00000340 0x166 cqm6xx_app.o + 0x00000340 cqm6xx_app_statemachine + .text.cqm6xx_app_init + 0x000004a6 0x16 cqm6xx_app.o + 0x000004a6 cqm6xx_app_init + .text.main 0x000004bc 0x56 main.o + 0x000004bc main + .text.writeRegister + 0x00000512 0x78 si5351_driver/si5351_driver.o + .text.cm_setOutputMultiSynth + 0x0000058a 0x116 si5351_driver/si5351_driver.o + 0x0000058a cm_setOutputMultiSynth + .text.cm_setOutputEnable + 0x000006a0 0x40 si5351_driver/si5351_driver.o + 0x000006a0 cm_setOutputEnable + .text.cm_setCLKControl + 0x000006e0 0x5c si5351_driver/si5351_driver.o + 0x000006e0 cm_setCLKControl + .text.cm_setInputSource + 0x0000073c 0x3e si5351_driver/si5351_driver.o + 0x0000073c cm_setInputSource + .text.cm_resetPLLs + 0x0000077a 0x48 si5351_driver/si5351_driver.o + 0x0000077a cm_resetPLLs + .text.cm_setPllParamRaw + 0x000007c2 0xbc si5351_driver/si5351_driver.o + 0x000007c2 cm_setPllParamRaw + .text.cm_si5351_init + 0x0000087e 0x142 si5351_driver/si5351_driver.o + 0x0000087e cm_si5351_init + .text.avr-libc + 0x000009c0 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) + 0x000009c0 malloc + 0x00000af0 free + .text.avr-libc + 0x00000c02 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) + 0x00000c02 memcpy + 0x00000c14 . = ALIGN (0x2) *(.fini9) - .fini9 0x00000118 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) - 0x00000118 _exit - 0x00000118 exit + .fini9 0x00000c14 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) + 0x00000c14 _exit + 0x00000c14 exit *(.fini9) *(.fini8) *(.fini8) @@ -459,39 +581,48 @@ END GROUP *(.fini1) *(.fini1) *(.fini0) - .fini0 0x00000118 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 0x00000c14 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) - 0x0000011c _etext = . + 0x00000c18 _etext = . .rodata *(.rodata) *(.rodata*) *(.gnu.linkonce.r*) -.data 0x00803f00 0x0 load address 0x0000011c - [!provide] PROVIDE (__data_start, .) +.data 0x00803f00 0x6 load address 0x00000c18 + 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) + 0x00803f00 __malloc_heap_end + 0x00803f02 __malloc_heap_start + 0x00803f04 __malloc_margin *(.data*) *(.gnu.linkonce.d*) - 0x00803f00 . = ALIGN (0x2) - 0x00803f00 _edata = . - [!provide] PROVIDE (__data_end, .) + 0x00803f06 . = ALIGN (0x2) + 0x00803f06 _edata = . + 0x00803f06 PROVIDE (__data_end, .) -.bss 0x00803f00 0x0 - [!provide] PROVIDE (__bss_start, .) +.bss 0x00803f06 0x8 + 0x00803f06 PROVIDE (__bss_start, .) *(.bss) *(.bss*) *(COMMON) - [!provide] PROVIDE (__bss_end, .) - 0x0000011c __data_load_start = LOADADDR (.data) - 0x0000011c __data_load_end = (__data_load_start + SIZEOF (.data)) + COMMON 0x00803f06 0x4 main.o + 0x00803f06 storno_xtal_app + COMMON 0x00803f0a 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) + 0x00803f0a __brkval + 0x00803f0c __flp + 0x00803f0e PROVIDE (__bss_end, .) + 0x00000c18 __data_load_start = LOADADDR (.data) + 0x00000c1e __data_load_end = (__data_load_start + SIZEOF (.data)) -.noinit 0x00803f00 0x0 +.noinit 0x00803f0e 0x0 [!provide] PROVIDE (__noinit_start, .) *(.noinit*) [!provide] PROVIDE (__noinit_end, .) - 0x00803f00 _end = . - [!provide] PROVIDE (__heap_start, .) + 0x00803f0e _end = . + 0x00803f0e PROVIDE (__heap_start, .) .eeprom 0x00810000 0x0 *(.eeprom*) @@ -532,9 +663,13 @@ END GROUP .comment 0x00000000 0x30 *(.comment) - .comment 0x00000000 0x30 avr_i2c_driver/avr_i2c.o + .comment 0x00000000 0x30 avr_gpio_driver/avr_gpio.o 0x31 (size before relaxing) + .comment 0x00000030 0x31 avr_i2c_driver/avr_i2c.o + .comment 0x00000030 0x31 cqm6xx_app.o .comment 0x00000030 0x31 main.o + .comment 0x00000030 0x31 si5351_driver/si5351_driver.o + .comment 0x00000030 0x31 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) .note.gnu.avr.deviceinfo 0x00000000 0x3c @@ -556,51 +691,78 @@ END GROUP .debug_sfnames *(.debug_sfnames) -.debug_aranges 0x00000000 0x60 +.debug_aranges 0x00000000 0x160 *(.debug_aranges) .debug_aranges - 0x00000000 0x40 avr_i2c_driver/avr_i2c.o + 0x00000000 0x30 avr_gpio_driver/avr_gpio.o .debug_aranges - 0x00000040 0x20 main.o + 0x00000030 0x68 avr_i2c_driver/avr_i2c.o + .debug_aranges + 0x00000098 0x38 cqm6xx_app.o + .debug_aranges + 0x000000d0 0x20 main.o + .debug_aranges + 0x000000f0 0x70 si5351_driver/si5351_driver.o .debug_pubnames *(.debug_pubnames) -.debug_info 0x00000000 0x1a3c +.debug_info 0x00000000 0x45f1 *(.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 0x4fd avr_i2c_driver/avr_i2c.o - .debug_info 0x000016d3 0x369 main.o + .debug_info 0x000011d6 0x320 avr_gpio_driver/avr_gpio.o + .debug_info 0x000014f6 0x6da avr_i2c_driver/avr_i2c.o + .debug_info 0x00001bd0 0x7dc cqm6xx_app.o + .debug_info 0x000023ac 0xc60 main.o + .debug_info 0x0000300c 0x15e5 si5351_driver/si5351_driver.o -.debug_abbrev 0x00000000 0x13cb +.debug_abbrev 0x00000000 0x1975 *(.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 0x157 avr_i2c_driver/avr_i2c.o - .debug_abbrev 0x00001235 0x196 main.o + .debug_abbrev 0x000010de 0x107 avr_gpio_driver/avr_gpio.o + .debug_abbrev 0x000011e5 0x1bb avr_i2c_driver/avr_i2c.o + .debug_abbrev 0x000013a0 0x1b1 cqm6xx_app.o + .debug_abbrev 0x00001551 0x1da main.o + .debug_abbrev 0x0000172b 0x24a si5351_driver/si5351_driver.o -.debug_line 0x00000000 0x54d +.debug_line 0x00000000 0x1043 *(.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 0x25b avr_i2c_driver/avr_i2c.o - .debug_line 0x00000391 0x1bc main.o + .debug_line 0x00000136 0x196 avr_gpio_driver/avr_gpio.o + .debug_line 0x000002cc 0x3ff avr_i2c_driver/avr_i2c.o + .debug_line 0x000006cb 0x319 cqm6xx_app.o + .debug_line 0x000009e4 0x18f main.o + .debug_line 0x00000b73 0x4d0 si5351_driver/si5351_driver.o -.debug_frame 0x00000000 0xb4 +.debug_frame 0x00000000 0x478 *(.debug_frame) - .debug_frame 0x00000000 0x80 avr_i2c_driver/avr_i2c.o - .debug_frame 0x00000080 0x34 main.o + .debug_frame 0x00000000 0x44 avr_gpio_driver/avr_gpio.o + .debug_frame 0x00000044 0x118 avr_i2c_driver/avr_i2c.o + .debug_frame 0x0000015c 0x94 cqm6xx_app.o + .debug_frame 0x000001f0 0x34 main.o + .debug_frame 0x00000224 0x254 si5351_driver/si5351_driver.o -.debug_str 0x00000000 0xc28 +.debug_str 0x00000000 0x1c77 *(.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 0x418 avr_i2c_driver/avr_i2c.o - 0x457 (size before relaxing) - .debug_str 0x00000bc1 0x67 main.o - 0x2f3 (size before relaxing) + .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 0x2d7 cqm6xx_app.o + 0x4bb (size before relaxing) + .debug_str 0x00000ffc 0x8ff main.o + 0xc11 (size before relaxing) + .debug_str 0x000018fb 0x37c si5351_driver/si5351_driver.o + 0xf91 (size before relaxing) -.debug_loc 0x00000000 0x257 +.debug_loc 0x00000000 0x1bcf *(.debug_loc) - .debug_loc 0x00000000 0x1c7 avr_i2c_driver/avr_i2c.o - .debug_loc 0x000001c7 0x90 main.o + .debug_loc 0x00000000 0xae avr_gpio_driver/avr_gpio.o + .debug_loc 0x000000ae 0x73d avr_i2c_driver/avr_i2c.o + .debug_loc 0x000007eb 0x49c cqm6xx_app.o + .debug_loc 0x00000c87 0x48 main.o + .debug_loc 0x00000ccf 0xf00 si5351_driver/si5351_driver.o .debug_macinfo *(.debug_macinfo) @@ -620,10 +782,13 @@ END GROUP .debug_pubtypes *(.debug_pubtypes) -.debug_ranges 0x00000000 0x40 +.debug_ranges 0x00000000 0x110 *(.debug_ranges) - .debug_ranges 0x00000000 0x30 avr_i2c_driver/avr_i2c.o - .debug_ranges 0x00000030 0x10 main.o + .debug_ranges 0x00000000 0x20 avr_gpio_driver/avr_gpio.o + .debug_ranges 0x00000020 0x58 avr_i2c_driver/avr_i2c.o + .debug_ranges 0x00000078 0x28 cqm6xx_app.o + .debug_ranges 0x000000a0 0x10 main.o + .debug_ranges 0x000000b0 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 af1f750..2fdd541 100644 --- a/storno_cqp6xx_digital_xtal/Debug/storno_cqp6xx_digital_xtal.srec +++ b/storno_cqp6xx_digital_xtal/Debug/storno_cqp6xx_digital_xtal.srec @@ -1,20 +1,197 @@ S022000073746F726E6F5F6371703678785F6469676974616C5F7874616C2E737265633F -S113000019C020C01FC01EC01DC01CC01BC01AC008 -S113001019C018C017C016C015C014C013C012C030 -S113002011C010C00FC00EC00DC00CC00BC00AC060 -S113003009C008C011241FBECFEFCDBFDFE3DEBF70 -S113004045D06AC0DDCF809317088091150886FFDC -S1130050FCCF8091150884FF06C083E080931408C8 -S113006081E090E0089583E08093140880E090E0BC -S11300700895E0E1F8E08BE0868381E08383858363 -S1130080E0E0F4E088E0828B838B80E090E00895E8 -S1130090EF92FF920F931F93CF938C017B01C42F98 -S11300A0842F880FD0DF009749F4F801E082F182B1 -S11300B04C2F50E0440F551F428302C08EEF9FEF38 -S11300C0CF911F910F91FF90EF900895CF93DF93FD -S11300D000D01F92CDB7DEB7E0E0F4E080818B7FE3 -S11300E080838081877F808380E090E0C2DF25E188 -S11300F086E195E0215080409040E1F740E660E0E1 -S113010070E0CE010196C4DF25E186E195E021503F -S10F011080409040E1F7EBCFF894FFCF63 +S113000019C033C032C031C030C02FC02EC02DC083 +S11300102CC02BC02AC029C028C027C026C025C098 +S113002024C023C022C021C020C01FC01EC01DC0C8 +S11300301CC01BC011241FBECFEFCDBFDFE3DEBF4A +S11300402FE3A6E0BFE301C01D92AE30B207E1F793 +S11300501FE3A0E0BFE3E8E1FCE002C005900D92DD +S1130060A630B107D9F72AD2D5C5CACF81110DC0A0 +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 +S11302B0FC0122813381232B21F0892B21F481E05D +S11302C0089581E0089580E00895CF93DF93EC01D1 +S11302D0EFDF811132C089819881891771F18130F2 +S11302E019F08230B1F029C081E493E00197F1F76D +S11302F0000040E060E08A819B81D2D181E493E0F8 +S11303000197F1F7000041E061E08A819B81C8D147 +S113031014C081E493E00197F1F7000041E060E04C +S11303208A819B81BDD181E493E00197F1F70000BC +S113033040E061E08A819B81B3D1DF91CF91089540 +S1130340AF92BF92CF92DF92EF92FF920F931F93DF +S1130350CF93DF93EC01ACDF81119AC089818130A6 +S113036009F47FC020F0823009F487C091C08883EB +S113037081E493E00197F1F7000060E08A819B81BA +S1130380DDD181E493E00197F1F700000F2EFBE546 +S1130390AF2EF8E4BF2EF0E1CF2ED12CF02D16EFC6 +S11303A0E12E1CE2F12E00E010E023E43DE040E009 +S11303B050E060E08A819B8104D281E493E001975C +S11303C0F1F700000F2EF0ECAF2EF8E4BF2EF0E1B1 +S11303D0CF2ED12CF02D12E0E12E1FE3F12E00E000 +S11303E010E028EC3CE040E050E061E08A819B8131 +S11303F0E8D181E493E00197F1F70000A12CB12C3E +S11304006501A394E12CF12C870122E130E040E066 +S113041050E060E08A819B81B8D081E493E0019749 +S1130420F1F7000020E430E040E050E061E08A8130 +S11304309B81ABD081E493E00197F1F7000040E0A9 +S113044060E08A819B814CD181E493E00197F1F7CC +S1130450000040E061E08A819B8142D181E0898390 +S113046017C0CE0132DF8981888363E080E0FEDD3E +S1130470019771F482E089830BC0CE0126DF898164 +S1130480888363E080E0F2DD892B11F481E08983C5 +S1130490DF91CF911F910F91FF90EF90DF90CF905C +S11304A0BF90AF900895FC016115710531F0892B5F +S11304B021F011821082628373830895CF93DF93B6 +S11304C0CDB7DEB7CB55D109CDBFDEBF80E090E01C +S11304D09DDE40E660E070E0CE010196B1DE4EE3C1 +S11304E051E0BE016F5F7F4FCE010496C8D1BE01BB +S11304F06C5F7F4F86E09FE3D6DF86E09FE320DFDB +S11305002AE684E091E0215080409040E1F700C069 +S1130510F4CF8F929F92AF92BF92CF92DF92EF92DD +S1130520FF920F931F93CF93DF93EC01862E5A0112 +S113053068017901C801019643D2982E192FFC0154 +S11305408192CF01A601B5015CD3EA81FB81A701A9 +S113055096012F5F3F4F4F4F5F4F01E0692D712F81 +S1130560888199810995892D912FC2D280E090E0EC +S1130570DF91CF911F910F91FF90EF90DF90CF907B +S1130580BF90AF909F908F900895AF92BF92CF92FB +S1130590DF92EF92FF920F931F93FC01862FBA0113 +S11305A0A9014450510961097E4F440F551F661F2C +S11305B0771F440F551F661F771F440F551F661F73 +S11305C0771F440F551F661F771F440F551F661F63 +S11305D0771F440F551F661F771F440F551F661F53 +S11305E0771F882319F0813049F14FC0962F9370FB +S11305F086A18C7F892B86A357A340A7F2A6E3A6E6 +S1130600D601C501072E7CE0B695A79597958795E9 +S11306107A95D1F7702D83708295807F0370802B3B +S113062081A7B4A2A5A2AF014C5D5F4F08E010E022 +S113063020E030E06AE2CF016CDF27C0962F937090 +S113064086A58C7F892B86A757A740ABF2AAE3AA7D +S1130650D601C501072E7CE0B695A7959795879599 +S11306607A95D1F7702D83708295807F0370802BEB +S113067081ABB4A6A5A6AF01445D5F4F08E010E0CE +S113068020E030E062E3CF0144DF80E090E01F919E +S11306900F91FF90EF90DF90CF90BF90AF900895AF +S11306A00F931F93662319F0613039F00BC0FC01DE +S11306B0278140FB20F9278305C0FC01278140FBEB +S11306C021F92783AC01495F5F4F01E010E020E08E +S11306D030E063E01EDF80E090E01F910F91089509 +S11306E00F931F93662319F06130A1F022C0FC011F +S11306F0228540FB27F933853F7D33872F6422878A +S1130700AC01465F5F4F01E010E020E030E060E1C3 +S113071000DF0FC0FC01238540FB27F92F662387E8 +S1130720AC01455F5F4F01E010E020E030E061E1A3 +S1130730F0DE80E090E01F910F9108950F931F93D6 +S1130740662319F0613039F00AC0FC0121852B7F42 +S1130750277F218704C0FC01218524602187AC0107 +S1130760475F5F4F01E010E020E030E060EFD1DE52 +S113077080E090E01F910F9108950F931F9331E053 +S1130780611101C030E0FC01E95AFF4F208130FBC8 +S113079025F9208331E0411101C030E0AC01495A10 +S11307A05F4FFA01208130FB27F9208301E010E03C +S11307B020E030E061EBADDE80E090E01F910F912E +S11307C00895AF92BF92CF92DF92EF92FF920F9370 +S11307D01F93CF93DF93EC01662319F0613001F18D +S11307E03DC042708E898C7F482B4E8B3F8B288F67 +S11307F0D801C70188279927AF70BB27FA8EEB8EE3 +S11308008A2F8F70898FBC8AAD8A08E010E020E0BF +S113081030E0AE014C5E5F4F6AE1CE017ADE1EC06D +S113082042708E8D8C7F482B4E8F3F8F28A3D8012A +S1130830C70188279927AF70BB27FAA2EBA28A2F9A +S11308408F7089A3BC8EAD8E08E010E020E030E00C +S1130850AE01445E5F4F62E2CE015BDE41E061E0E7 +S1130860CE018BDF80E090E0DF91CF911F910F915B +S1130870FF90EF90DF90CF90BF90AF900895EF92EC +S1130880FF920F931F93CF93DF931F92CDB7DEB7E1 +S1130890009709F485C06115710509F484C04115F8 +S11308A0510509F483C07C01DC016D937C9311979D +S11308B012964D935C931397FC01349684E5DF0103 +S11308C01D928A95E9F78FEF898301E010E020E01B +S11308D030E0AE014F5F5F4F63E0C7011ADE80E88E +S11308E0898301E010E020E030E0AE014F5F5F4F0C +S11308F060E1C7010EDE01E010E020E030E0AE016F +S11309004F5F5F4F61E1C70104DE01E010E020E0CA +S113091030E0AE014F5F5F4F62E1C701FADD01E0F5 +S113092010E020E030E0AE014F5F5F4F63E1C701AC +S1130930F0DD01E010E020E030E0AE014F5F5F4FFA +S113094064E1C701E6DD01E010E020E030E0AE0143 +S11309504F5F5F4F65E1C701DCDD01E010E020E09F +S113096030E0AE014F5F5F4F66E1C701D2DD01E0C9 +S113097010E020E030E0AE014F5F5F4F67E1C70158 +S1130980C8DD80EC898301E010E020E030E0AE01B6 +S11309904F5F5F4F67EBC701BCDD80E090E008C0AC +S11309A08FEF9FEF05C08FEF9FEF02C08FEF9FEF98 +S11309B00F90DF91CF911F910F91FF90EF900895C9 +S11309C00F931F93CF93DF938230910510F482E04D +S11309D090E0E0910C3FF0910D3F20E030E0A0E08A +S11309E0B0E0309719F14081518102811381481799 +S11309F05907C8F08417950769F4109731F01296D7 +S1130A000C93129713961C9327C000930C3F1093DA +S1130A100D3F22C02115310519F04217530718F470 +S1130A209A01BD01EF01DF01F801DBCF211531058A +S1130A30F9F0281B390B2430310580F48A819B811D +S1130A406115710521F0FB018283938304C08093B7 +S1130A500C3F90930D3FFE01329644C0FE01E20F1D +S1130A60F31F8193919322503109288339833AC02B +S1130A7020910A3F30910B3F232B41F42091023FF8 +S1130A803091033F20930A3F30930B3F2091003F66 +S1130A903091013F2115310541F42DB73EB7409106 +S1130AA0043F5091053F241B350BE0910A3FF09120 +S1130AB00B3FE217F307A0F42E1B3F0B281739074F +S1130AC078F0AC014E5F5F4F2417350748F04E0FA6 +S1130AD05F1F40930A3F50930B3F8193919302C051 +S1130AE0E0E0F0E0CF01DF91CF911F910F910895E5 +S1130AF0CF93DF93009709F481C0FC0132971282EF +S1130B001382A0910C3FB0910D3F109781F4208186 +S1130B103181820F931F20910A3F30910B3F281798 +S1130B20390751F5E0930A3FF0930B3F67C0ED019D +S1130B3020E030E0CE17DF0740F44A815B819E015C +S1130B4041155105F1F0EA01F5CFC283D383408109 +S1130B505181840F951FC817D90759F48881998149 +S1130B60840F951F0296808391838A819B8182835F +S1130B7093832115310529F4E0930C3FF0930D3F45 +S1130B803DC0E901EA83FB8349915991C40FD51F04 +S1130B90EC17FD0761F480819181840F951F029603 +S1130BA0E90188839983828193818A839B83E0E02E +S1130BB0F0E012968D919C911397009719F0FD0126 +S1130BC0DC01F7CF8D919C9111979D012E5F3F4FD2 +S1130BD0820F931F20910A3F30910B3F281739074A +S1130BE069F4309729F410920C3F10920D3F02C023 +S1130BF012821382A0930A3FB0930B3FDF91CF91EF +S1130C000895FB01DC0102C001900D924150504057 +S10B0C10D8F70895F894FFCF12 +S1090C1800000E3F200065 S9030000FC diff --git a/storno_cqp6xx_digital_xtal/avr_global_config.h b/storno_cqp6xx_digital_xtal/avr_global_config.h index c522274..3253bb4 100644 --- a/storno_cqp6xx_digital_xtal/avr_global_config.h +++ b/storno_cqp6xx_digital_xtal/avr_global_config.h @@ -14,7 +14,14 @@ #define F_CPU 3333333 // Internal 3.333MHz CPU Clock (20MHz divided by 6) // More info here: https://arduino.stackexchange.com/questions/79157/delay-ms-is-much-slower-than-expected-by-a-factor-of-6-on-tinyavr-0-1-atti +#define GPIO_PIN_PTT 3 +#define GPIO_PIN_CH_SEL 0 +#define GPIO_PIN_SCL 2 +#define GPIO_PIN_SDA 1 + +#define GPIO_PIN_TX 6 +#define GPIO_PIN_RX 7 #endif /* AVR_GLOBAL_CONFIG_H_ */ \ No newline at end of file diff --git a/storno_cqp6xx_digital_xtal/avr_gpio_driver b/storno_cqp6xx_digital_xtal/avr_gpio_driver new file mode 160000 index 0000000..bd2fdb6 --- /dev/null +++ b/storno_cqp6xx_digital_xtal/avr_gpio_driver @@ -0,0 +1 @@ +Subproject commit bd2fdb61543b5f488addc60f12efcfbb3f1a2bca diff --git a/storno_cqp6xx_digital_xtal/avr_i2c_driver b/storno_cqp6xx_digital_xtal/avr_i2c_driver index a862662..e53bc5b 160000 --- a/storno_cqp6xx_digital_xtal/avr_i2c_driver +++ b/storno_cqp6xx_digital_xtal/avr_i2c_driver @@ -1 +1 @@ -Subproject commit a8626628ef0008eda64073ec0afef1b9de6762c3 +Subproject commit e53bc5b7fa923a96db6244baf556261cef28ac1e diff --git a/storno_cqp6xx_digital_xtal/cqm6xx_app.c b/storno_cqp6xx_digital_xtal/cqm6xx_app.c index 34b4c33..7df40c8 100644 --- a/storno_cqp6xx_digital_xtal/cqm6xx_app.c +++ b/storno_cqp6xx_digital_xtal/cqm6xx_app.c @@ -4,13 +4,77 @@ * Created: 21-08-2024 21:12:36 * Author: Christian Lind Vie Madsen - OZ1CM */ +#include "cqm6xx_app.h" +#include "si5351_driver/include/si5351_driver.h" +#include "avr_gpio_driver/avr_gpio.h" +#include "avr_global_config.h" +#include -void cqm6xx_app_statemachine(storno_xtal_app *inst){ +static uint8_t isStructValid(storno_xtal_app_t *inst){ + if(inst->si5351_dev == NULL) return 1; + if(inst == NULL)return 1; + + return 0; +} + +static void cqm6xx_app_updateOsc(storno_xtal_app_t *inst){ + + // Check Struct + if(isStructValid(inst) != 0)return; + + // We will only do this once, aka when transisioning from RX to TX and TX to RX.. + if(inst->state_next == inst->state_now)return; + + switch(inst->state_next){ + + case STORNO_APP_RX_MODE: + _delay_ms(1); + cm_setOutputEnable(inst->si5351_dev,SI5351_OUTPUT_0,SI5351_OUTPUT_ENABLE); // RX + _delay_ms(1); + cm_setOutputEnable(inst->si5351_dev,SI5351_OUTPUT_1,SI5351_OUTPUT_DISABLE); // TX + + break; + + case STORNO_APP_TX_MODE: + _delay_ms(1); + cm_setOutputEnable(inst->si5351_dev,SI5351_OUTPUT_0,SI5351_OUTPUT_DISABLE); // RX + _delay_ms(1); + cm_setOutputEnable(inst->si5351_dev,SI5351_OUTPUT_1,SI5351_OUTPUT_ENABLE); // TX + + break; + + default: + break; + + } + + +} +void cqm6xx_app_statemachine(storno_xtal_app_t *inst){ + + // Check Struct + if(isStructValid(inst) != 0)return; + switch (inst->state_next) { case STORNO_APP_PROGRAM_OSC: // 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); // if ok, then go to RX mode: inst->state_next = STORNO_APP_RX_MODE; @@ -19,30 +83,48 @@ void cqm6xx_app_statemachine(storno_xtal_app *inst){ case STORNO_APP_RX_MODE: // If we just came from another state, then Enable RX osc here.. + cqm6xx_app_updateOsc(inst); + + // Update state now.. + inst->state_now = inst->state_next; + // 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; break; case STORNO_APP_TX_MODE: // If we just came from another state, then Enable TX osc here.. - + cqm6xx_app_updateOsc(inst); + + // Update state now.. + inst->state_now = inst->state_next; + // If PTT is released, then disable TX osc, and go to STORNO_APP_RX_MODE, to enable rx osc. + if(gpio_get_level(GPIO_PORTA,GPIO_PIN_PTT) == GPIO_LEVEL_RESET) inst->state_next = STORNO_APP_RX_MODE; break; - case STORNO_APP_PROGRAM_OSC: - - break; case STORNO_APP_RST_TO_BOOTLOADER: break; + + default: + break; } } -void cqm6xx_app_init(storno_xtal_app *inst){ +void cqm6xx_app_init(storno_xtal_app_t *inst, void *si5351_dev){ + + if(si5351_dev == NULL) return; + if(inst == NULL)return; inst->state_next = STORNO_APP_PROGRAM_OSC; inst->state_now = STORNO_APP_PROGRAM_OSC; + + inst->si5351_dev = si5351_dev; + + } \ 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 f965759..ea8bfc0 100644 --- a/storno_cqp6xx_digital_xtal/cqm6xx_app.h +++ b/storno_cqp6xx_digital_xtal/cqm6xx_app.h @@ -9,6 +9,27 @@ #ifndef CQM6XX_APP_H_ #define CQM6XX_APP_H_ +#include "stdio.h" +#include "stdint.h" + + + +typedef struct { + + uint8_t PLL_Ident; + + uint32_t MSNx_P1; + uint32_t MSNx_P2; + uint32_t MSNx_P3; + + uint32_t MSx_P1; + uint32_t MSx_P2; + uint32_t MSx_P3; + + + +}storno_pll_param_msg; + typedef enum { @@ -18,17 +39,22 @@ typedef enum { STORNO_APP_PROGRAM_MODE = 3, STORNO_APP_RST_TO_BOOTLOADER = 4, - }storno_app_states; +}storno_app_states; typedef struct { storno_app_states state_now; storno_app_states state_next; + void *si5351_dev; -}storno_xtal_app; + +}storno_xtal_app_t; + +void cqm6xx_app_statemachine(storno_xtal_app_t *inst); +void cqm6xx_app_init(storno_xtal_app_t *inst, void *si5351_dev); #endif /* CQM6XX_APP_H_ */ \ No newline at end of file diff --git a/storno_cqp6xx_digital_xtal/main.c b/storno_cqp6xx_digital_xtal/main.c index 3b0db77..aac92ed 100644 --- a/storno_cqp6xx_digital_xtal/main.c +++ b/storno_cqp6xx_digital_xtal/main.c @@ -9,48 +9,48 @@ #include #include "avr_uart_driver/avr_uart.h" #include "avr_i2c_driver/avr_i2c.h" -//#include "storno_frq_lst.h" +#include "si5351_driver/include/si5351_driver.h" +#include "cqm6xx_app.h" + +storno_xtal_app_t storno_xtal_app; int main(void) { /* Replace with your application code */ + // Init Periphials cm_i2c_init(NULL); - cm_i2c_device_t si5351_dev; - - + + // Add devices + cm_i2c_device_t si5351_i2c; + cm_i2c_addDev(&si5351_i2c,NULL,0x60); + + // Init Devices: + si5351_driver si5351_dev; + cm_si5351_init(&si5351_dev,&si5351_i2c,(setGet_I2C_Event_fpt)cm_i2c_transfer); + + cqm6xx_app_init(&storno_xtal_app, &si5351_dev); + +/* 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) { - _delay_ms(500); - cm_i2c_addDev(&si5351_dev,NULL,0x60); - _delay_ms(500); + cqm6xx_app_statemachine(&storno_xtal_app); + _delay_ms(100); } } -/* - -int main(void) { - TWI_init(); - - uint8_t slave_address = 0x28; // Replace with your actual slave address - uint8_t write_data = 0x55; // Example data to write - uint8_t read_data = 0; - - // Write data to the slave - if (TWI_write(slave_address, write_data) == 0) { - // Data successfully written - } - - // Read data from the slave - if (TWI_read(slave_address, &read_data) == 0) { - // Data successfully read - } - - while (1) { - // Main loop - } -}*/ diff --git a/storno_cqp6xx_digital_xtal/si5351_driver b/storno_cqp6xx_digital_xtal/si5351_driver index 9f1436c..133056f 160000 --- a/storno_cqp6xx_digital_xtal/si5351_driver +++ b/storno_cqp6xx_digital_xtal/si5351_driver @@ -1 +1 @@ -Subproject commit 9f1436c1327ad28e2c9dacaa8f2b47097ef0a045 +Subproject commit 133056f577465b800c6417ab9b9a005133179796 diff --git a/storno_cqp6xx_digital_xtal/storno_cqp6xx_digital_xtal.cproj b/storno_cqp6xx_digital_xtal/storno_cqp6xx_digital_xtal.cproj index a4f4389..2d9f51c 100644 --- a/storno_cqp6xx_digital_xtal/storno_cqp6xx_digital_xtal.cproj +++ b/storno_cqp6xx_digital_xtal/storno_cqp6xx_digital_xtal.cproj @@ -30,15 +30,15 @@ - - - - - - - - - + + + + + + + + + com.atmel.avrdbg.tool.pickit4 BUR223673285 @@ -150,6 +150,12 @@ compile + + compile + + + compile + compile @@ -185,12 +191,22 @@ + + + compile + + + compile + + + compile + compile diff --git a/storno_cqp6xx_digital_xtal/storno_frq_lst.h b/storno_cqp6xx_digital_xtal/storno_frq_lst.h deleted file mode 100644 index 132cda8..0000000 --- a/storno_cqp6xx_digital_xtal/storno_frq_lst.h +++ /dev/null @@ -1,846 +0,0 @@ -/* - * storno_frq_lst.h - * - * Created: 21-08-2024 21:19:10 - * Author: Chris - */ - - -#ifndef STORNO_FRQ_LST_H_ -#define STORNO_FRQ_LST_H_ - -#include //bool type -#include //uint8_t type -#include //size_t type - -typedef struct{ - - uint32_t xtal_freq_rx; - uint32_t xtal_freq_tx; - -}storno_xtal_freqs; - -/* -Storno Frequency lists start - -*/ - -const storno_xtal_freqs storno_cqp632_lst[801] = { - -{44700000,11333333}, -{44712500,11337500}, -{44725000,11341666}, -{44737500,11345833}, -{44750000,11350000}, -{44762500,11354166}, -{44775000,11358333}, -{44787500,11362500}, -{44800000,11366666}, -{44812500,11370833}, -{44825000,11375000}, -{44837500,11379166}, -{44850000,11383333}, -{44862500,11387500}, -{44875000,11391666}, -{44887500,11395833}, -{44900000,11400000}, -{44912500,11404166}, -{44925000,11408333}, -{44937500,11412500}, -{44950000,11416666}, -{44962500,11420833}, -{44975000,11425000}, -{44987500,11429166}, -{45000000,11433333}, -{45012500,11437500}, -{45025000,11441666}, -{45037500,11445833}, -{45050000,11450000}, -{45062500,11454166}, -{45075000,11458333}, -{45087500,11462500}, -{45100000,11466666}, -{45112500,11470833}, -{45125000,11475000}, -{45137500,11479166}, -{45150000,11483333}, -{45162500,11487500}, -{45175000,11491666}, -{45187500,11495833}, -{45200000,11500000}, -{45212500,11504166}, -{45225000,11508333}, -{45237500,11512500}, -{45250000,11516666}, -{45262500,11520833}, -{45275000,11525000}, -{45287500,11529166}, -{45300000,11533333}, -{45312500,11537500}, -{45325000,11541666}, -{45337500,11545833}, -{45350000,11550000}, -{45362500,11554166}, -{45375000,11558333}, -{45387500,11562500}, -{45400000,11566666}, -{45412500,11570833}, -{45425000,11575000}, -{45437500,11579166}, -{45450000,11583333}, -{45462500,11587500}, -{45475000,11591666}, -{45487500,11595833}, -{45500000,11600000}, -{45512500,11604166}, -{45525000,11608333}, -{45537500,11612500}, -{45550000,11616666}, -{45562500,11620833}, -{45575000,11625000}, -{45587500,11629166}, -{45600000,11633333}, -{45612500,11637500}, -{45625000,11641666}, -{45637500,11645833}, -{45650000,11650000}, -{45662500,11654166}, -{45675000,11658333}, -{45687500,11662500}, -{45700000,11666666}, -{45712500,11670833}, -{45725000,11675000}, -{45737500,11679166}, -{45750000,11683333}, -{45762500,11687500}, -{45775000,11691666}, -{45787500,11695833}, -{45800000,11700000}, -{45812500,11704166}, -{45825000,11708333}, -{45837500,11712500}, -{45850000,11716666}, -{45862500,11720833}, -{45875000,11725000}, -{45887500,11729166}, -{45900000,11733333}, -{45912500,11737500}, -{45925000,11741666}, -{45937500,11745833}, -{45950000,11750000}, -{45962500,11754166}, -{45975000,11758333}, -{45987500,11762500}, -{46000000,11766666}, -{46012500,11770833}, -{46025000,11775000}, -{46037500,11779166}, -{46050000,11783333}, -{46062500,11787500}, -{46075000,11791666}, -{46087500,11795833}, -{46100000,11800000}, -{46112500,11804166}, -{46125000,11808333}, -{46137500,11812500}, -{46150000,11816666}, -{46162500,11820833}, -{46175000,11825000}, -{46187500,11829166}, -{46200000,11833333}, -{46212500,11837500}, -{46225000,11841666}, -{46237500,11845833}, -{46250000,11850000}, -{46262500,11854166}, -{46275000,11858333}, -{46287500,11862500}, -{46300000,11866666}, -{46312500,11870833}, -{46325000,11875000}, -{46337500,11879166}, -{46350000,11883333}, -{46362500,11887500}, -{46375000,11891666}, -{46387500,11895833}, -{46400000,11900000}, -{46412500,11904166}, -{46425000,11908333}, -{46437500,11912500}, -{46450000,11916666}, -{46462500,11920833}, -{46475000,11925000}, -{46487500,11929166}, -{46500000,11933333}, -{46512500,11937500}, -{46525000,11941666}, -{46537500,11945833}, -{46550000,11950000}, -{46562500,11954166}, -{46575000,11958333}, -{46587500,11962500}, -{46600000,11966666}, -{46612500,11970833}, -{46625000,11975000}, -{46637500,11979166}, -{46650000,11983333}, -{46662500,11987500}, -{46675000,11991666}, -{46687500,11995833}, -{46700000,12000000}, -{46712500,12004166}, -{46725000,12008333}, -{46737500,12012500}, -{46750000,12016666}, -{46762500,12020833}, -{46775000,12025000}, -{46787500,12029166}, -{46800000,12033333}, -{46812500,12037500}, -{46825000,12041666}, -{46837500,12045833}, -{46850000,12050000}, -{46862500,12054166}, -{46875000,12058333}, -{46887500,12062500}, -{46900000,12066666}, -{46912500,12070833}, -{46925000,12075000}, -{46937500,12079166}, -{46950000,12083333}, -{46962500,12087500}, -{46975000,12091666}, -{46987500,12095833}, -{47000000,12100000}, -{47012500,12104166}, -{47025000,12108333}, -{47037500,12112500}, -{47050000,12116666}, -{47062500,12120833}, -{47075000,12125000}, -{47087500,12129166}, -{47100000,12133333}, -{47112500,12137500}, -{47125000,12141666}, -{47137500,12145833}, -{47150000,12150000}, -{47162500,12154166}, -{47175000,12158333}, -{47187500,12162500}, -{47200000,12166666}, -{47212500,12170833}, -{47225000,12175000}, -{47237500,12179166}, -{47250000,12183333}, -{47262500,12187500}, -{47275000,12191666}, -{47287500,12195833}, -{47300000,12200000}, -{47312500,12204166}, -{47325000,12208333}, -{47337500,12212500}, -{47350000,12216666}, -{47362500,12220833}, -{47375000,12225000}, -{47387500,12229166}, -{47400000,12233333}, -{47412500,12237500}, -{47425000,12241666}, -{47437500,12245833}, -{47450000,12250000}, -{47462500,12254166}, -{47475000,12258333}, -{47487500,12262500}, -{47500000,12266666}, -{47512500,12270833}, -{47525000,12275000}, -{47537500,12279166}, -{47550000,12283333}, -{47562500,12287500}, -{47575000,12291666}, -{47587500,12295833}, -{47600000,12300000}, -{47612500,12304166}, -{47625000,12308333}, -{47637500,12312500}, -{47650000,12316666}, -{47662500,12320833}, -{47675000,12325000}, -{47687500,12329166}, -{47700000,12333333}, -{47712500,12337500}, -{47725000,12341666}, -{47737500,12345833}, -{47750000,12350000}, -{47762500,12354166}, -{47775000,12358333}, -{47787500,12362500}, -{47800000,12366666}, -{47812500,12370833}, -{47825000,12375000}, -{47837500,12379166}, -{47850000,12383333}, -{47862500,12387500}, -{47875000,12391666}, -{47887500,12395833}, -{47900000,12400000}, -{47912500,12404166}, -{47925000,12408333}, -{47937500,12412500}, -{47950000,12416666}, -{47962500,12420833}, -{47975000,12425000}, -{47987500,12429166}, -{48000000,12433333}, -{48012500,12437500}, -{48025000,12441666}, -{48037500,12445833}, -{48050000,12450000}, -{48062500,12454166}, -{48075000,12458333}, -{48087500,12462500}, -{48100000,12466666}, -{48112500,12470833}, -{48125000,12475000}, -{48137500,12479166}, -{48150000,12483333}, -{48162500,12487500}, -{48175000,12491666}, -{48187500,12495833}, -{48200000,12500000}, -{48212500,12504166}, -{48225000,12508333}, -{48237500,12512500}, -{48250000,12516666}, -{48262500,12520833}, -{48275000,12525000}, -{48287500,12529166}, -{48300000,12533333}, -{48312500,12537500}, -{48325000,12541666}, -{48337500,12545833}, -{48350000,12550000}, -{48362500,12554166}, -{48375000,12558333}, -{48387500,12562500}, -{48400000,12566666}, -{48412500,12570833}, -{48425000,12575000}, -{48437500,12579166}, -{48450000,12583333}, -{48462500,12587500}, -{48475000,12591666}, -{48487500,12595833}, -{48500000,12600000}, -{48512500,12604166}, -{48525000,12608333}, -{48537500,12612500}, -{48550000,12616666}, -{48562500,12620833}, -{48575000,12625000}, -{48587500,12629166}, -{48600000,12633333}, -{48612500,12637500}, -{48625000,12641666}, -{48637500,12645833}, -{48650000,12650000}, -{48662500,12654166}, -{48675000,12658333}, -{48687500,12662500}, -{48700000,12666666}, -{48712500,12670833}, -{48725000,12675000}, -{48737500,12679166}, -{48750000,12683333}, -{48762500,12687500}, -{48775000,12691666}, -{48787500,12695833}, -{48800000,12700000}, -{48812500,12704166}, -{48825000,12708333}, -{48837500,12712500}, -{48850000,12716666}, -{48862500,12720833}, -{48875000,12725000}, -{48887500,12729166}, -{48900000,12733333}, -{48912500,12737500}, -{48925000,12741666}, -{48937500,12745833}, -{48950000,12750000}, -{48962500,12754166}, -{48975000,12758333}, -{48987500,12762500}, -{49000000,12766666}, -{49012500,12770833}, -{49025000,12775000}, -{49037500,12779166}, -{49050000,12783333}, -{49062500,12787500}, -{49075000,12791666}, -{49087500,12795833}, -{49100000,12800000}, -{49112500,12804166}, -{49125000,12808333}, -{49137500,12812500}, -{49150000,12816666}, -{49162500,12820833}, -{49175000,12825000}, -{49187500,12829166}, -{49200000,12833333}, -{49212500,12837500}, -{49225000,12841666}, -{49237500,12845833}, -{49250000,12850000}, -{49262500,12854166}, -{49275000,12858333}, -{49287500,12862500}, -{49300000,12866666}, -{49312500,12870833}, -{49325000,12875000}, -{49337500,12879166}, -{49350000,12883333}, -{49362500,12887500}, -{49375000,12891666}, -{49387500,12895833}, -{49400000,12900000}, -{49412500,12904166}, -{49425000,12908333}, -{49437500,12912500}, -{49450000,12916666}, -{49462500,12920833}, -{49475000,12925000}, -{49487500,12929166}, -{49500000,12933333}, -{49512500,12937500}, -{49525000,12941666}, -{49537500,12945833}, -{49550000,12950000}, -{49562500,12954166}, -{49575000,12958333}, -{49587500,12962500}, -{49600000,12966666}, -{49612500,12970833}, -{49625000,12975000}, -{49637500,12979166}, -{49650000,12983333}, -{49662500,12987500}, -{49675000,12991666}, -{49687500,12995833}, -{49700000,13000000}, -{49712500,13004166}, -{49725000,13008333}, -{49737500,13012500}, -{49750000,13016666}, -{49762500,13020833}, -{49775000,13025000}, -{49787500,13029166}, -{49800000,13033333}, -{49812500,13037500}, -{49825000,13041666}, -{49837500,13045833}, -{49850000,13050000}, -{49862500,13054166}, -{49875000,13058333}, -{49887500,13062500}, -{49900000,13066666}, -{49912500,13070833}, -{49925000,13075000}, -{49937500,13079166}, -{49950000,13083333}, -{49962500,13087500}, -{49975000,13091666}, -{49987500,13095833}, -{50000000,13100000}, -{50012500,13104166}, -{50025000,13108333}, -{50037500,13112500}, -{50050000,13116666}, -{50062500,13120833}, -{50075000,13125000}, -{50087500,13129166}, -{50100000,13133333}, -{50112500,13137500}, -{50125000,13141666}, -{50137500,13145833}, -{50150000,13150000}, -{50162500,13154166}, -{50175000,13158333}, -{50187500,13162500}, -{50200000,13166666}, -{50212500,13170833}, -{50225000,13175000}, -{50237500,13179166}, -{50250000,13183333}, -{50262500,13187500}, -{50275000,13191666}, -{50287500,13195833}, -{50300000,13200000}, -{50312500,13204166}, -{50325000,13208333}, -{50337500,13212500}, -{50350000,13216666}, -{50362500,13220833}, -{50375000,13225000}, -{50387500,13229166}, -{50400000,13233333}, -{50412500,13237500}, -{50425000,13241666}, -{50437500,13245833}, -{50450000,13250000}, -{50462500,13254166}, -{50475000,13258333}, -{50487500,13262500}, -{50500000,13266666}, -{50512500,13270833}, -{50525000,13275000}, -{50537500,13279166}, -{50550000,13283333}, -{50562500,13287500}, -{50575000,13291666}, -{50587500,13295833}, -{50600000,13300000}, -{50612500,13304166}, -{50625000,13308333}, -{50637500,13312500}, -{50650000,13316666}, -{50662500,13320833}, -{50675000,13325000}, -{50687500,13329166}, -{50700000,13333333}, -{50712500,13337500}, -{50725000,13341666}, -{50737500,13345833}, -{50750000,13350000}, -{50762500,13354166}, -{50775000,13358333}, -{50787500,13362500}, -{50800000,13366666}, -{50812500,13370833}, -{50825000,13375000}, -{50837500,13379166}, -{50850000,13383333}, -{50862500,13387500}, -{50875000,13391666}, -{50887500,13395833}, -{50900000,13400000}, -{50912500,13404166}, -{50925000,13408333}, -{50937500,13412500}, -{50950000,13416666}, -{50962500,13420833}, -{50975000,13425000}, -{50987500,13429166}, -{51000000,13433333}, -{51012500,13437500}, -{51025000,13441666}, -{51037500,13445833}, -{51050000,13450000}, -{51062500,13454166}, -{51075000,13458333}, -{51087500,13462500}, -{51100000,13466666}, -{51112500,13470833}, -{51125000,13475000}, -{51137500,13479166}, -{51150000,13483333}, -{51162500,13487500}, -{51175000,13491666}, -{51187500,13495833}, -{51200000,13500000}, -{51212500,13504166}, -{51225000,13508333}, -{51237500,13512500}, -{51250000,13516666}, -{51262500,13520833}, -{51275000,13525000}, -{51287500,13529166}, -{51300000,13533333}, -{51312500,13537500}, -{51325000,13541666}, -{51337500,13545833}, -{51350000,13550000}, -{51362500,13554166}, -{51375000,13558333}, -{51387500,13562500}, -{51400000,13566666}, -{51412500,13570833}, -{51425000,13575000}, -{51437500,13579166}, -{51450000,13583333}, -{51462500,13587500}, -{51475000,13591666}, -{51487500,13595833}, -{51500000,13600000}, -{51512500,13604166}, -{51525000,13608333}, -{51537500,13612500}, -{51550000,13616666}, -{51562500,13620833}, -{51575000,13625000}, -{51587500,13629166}, -{51600000,13633333}, -{51612500,13637500}, -{51625000,13641666}, -{51637500,13645833}, -{51650000,13650000}, -{51662500,13654166}, -{51675000,13658333}, -{51687500,13662500}, -{51700000,13666666}, -{51712500,13670833}, -{51725000,13675000}, -{51737500,13679166}, -{51750000,13683333}, -{51762500,13687500}, -{51775000,13691666}, -{51787500,13695833}, -{51800000,13700000}, -{51812500,13704166}, -{51825000,13708333}, -{51837500,13712500}, -{51850000,13716666}, -{51862500,13720833}, -{51875000,13725000}, -{51887500,13729166}, -{51900000,13733333}, -{51912500,13737500}, -{51925000,13741666}, -{51937500,13745833}, -{51950000,13750000}, -{51962500,13754166}, -{51975000,13758333}, -{51987500,13762500}, -{52000000,13766666}, -{52012500,13770833}, -{52025000,13775000}, -{52037500,13779166}, -{52050000,13783333}, -{52062500,13787500}, -{52075000,13791666}, -{52087500,13795833}, -{52100000,13800000}, -{52112500,13804166}, -{52125000,13808333}, -{52137500,13812500}, -{52150000,13816666}, -{52162500,13820833}, -{52175000,13825000}, -{52187500,13829166}, -{52200000,13833333}, -{52212500,13837500}, -{52225000,13841666}, -{52237500,13845833}, -{52250000,13850000}, -{52262500,13854166}, -{52275000,13858333}, -{52287500,13862500}, -{52300000,13866666}, -{52312500,13870833}, -{52325000,13875000}, -{52337500,13879166}, -{52350000,13883333}, -{52362500,13887500}, -{52375000,13891666}, -{52387500,13895833}, -{52400000,13900000}, -{52412500,13904166}, -{52425000,13908333}, -{52437500,13912500}, -{52450000,13916666}, -{52462500,13920833}, -{52475000,13925000}, -{52487500,13929166}, -{52500000,13933333}, -{52512500,13937500}, -{52525000,13941666}, -{52537500,13945833}, -{52550000,13950000}, -{52562500,13954166}, -{52575000,13958333}, -{52587500,13962500}, -{52600000,13966666}, -{52612500,13970833}, -{52625000,13975000}, -{52637500,13979166}, -{52650000,13983333}, -{52662500,13987500}, -{52675000,13991666}, -{52687500,13995833}, -{52700000,14000000}, -{52712500,14004166}, -{52725000,14008333}, -{52737500,14012500}, -{52750000,14016666}, -{52762500,14020833}, -{52775000,14025000}, -{52787500,14029166}, -{52800000,14033333}, -{52812500,14037500}, -{52825000,14041666}, -{52837500,14045833}, -{52850000,14050000}, -{52862500,14054166}, -{52875000,14058333}, -{52887500,14062500}, -{52900000,14066666}, -{52912500,14070833}, -{52925000,14075000}, -{52937500,14079166}, -{52950000,14083333}, -{52962500,14087500}, -{52975000,14091666}, -{52987500,14095833}, -{53000000,14100000}, -{53012500,14104166}, -{53025000,14108333}, -{53037500,14112500}, -{53050000,14116666}, -{53062500,14120833}, -{53075000,14125000}, -{53087500,14129166}, -{53100000,14133333}, -{53112500,14137500}, -{53125000,14141666}, -{53137500,14145833}, -{53150000,14150000}, -{53162500,14154166}, -{53175000,14158333}, -{53187500,14162500}, -{53200000,14166666}, -{53212500,14170833}, -{53225000,14175000}, -{53237500,14179166}, -{53250000,14183333}, -{53262500,14187500}, -{53275000,14191666}, -{53287500,14195833}, -{53300000,14200000}, -{53312500,14204166}, -{53325000,14208333}, -{53337500,14212500}, -{53350000,14216666}, -{53362500,14220833}, -{53375000,14225000}, -{53387500,14229166}, -{53400000,14233333}, -{53412500,14237500}, -{53425000,14241666}, -{53437500,14245833}, -{53450000,14250000}, -{53462500,14254166}, -{53475000,14258333}, -{53487500,14262500}, -{53500000,14266666}, -{53512500,14270833}, -{53525000,14275000}, -{53537500,14279166}, -{53550000,14283333}, -{53562500,14287500}, -{53575000,14291666}, -{53587500,14295833}, -{53600000,14300000}, -{53612500,14304166}, -{53625000,14308333}, -{53637500,14312500}, -{53650000,14316666}, -{53662500,14320833}, -{53675000,14325000}, -{53687500,14329166}, -{53700000,14333333}, -{53712500,14337500}, -{53725000,14341666}, -{53737500,14345833}, -{53750000,14350000}, -{53762500,14354166}, -{53775000,14358333}, -{53787500,14362500}, -{53800000,14366666}, -{53812500,14370833}, -{53825000,14375000}, -{53837500,14379166}, -{53850000,14383333}, -{53862500,14387500}, -{53875000,14391666}, -{53887500,14395833}, -{53900000,14400000}, -{53912500,14404166}, -{53925000,14408333}, -{53937500,14412500}, -{53950000,14416666}, -{53962500,14420833}, -{53975000,14425000}, -{53987500,14429166}, -{54000000,14433333}, -{54012500,14437500}, -{54025000,14441666}, -{54037500,14445833}, -{54050000,14450000}, -{54062500,14454166}, -{54075000,14458333}, -{54087500,14462500}, -{54100000,14466666}, -{54112500,14470833}, -{54125000,14475000}, -{54137500,14479166}, -{54150000,14483333}, -{54162500,14487500}, -{54175000,14491666}, -{54187500,14495833}, -{54200000,14500000}, -{54212500,14504166}, -{54225000,14508333}, -{54237500,14512500}, -{54250000,14516666}, -{54262500,14520833}, -{54275000,14525000}, -{54287500,14529166}, -{54300000,14533333}, -{54312500,14537500}, -{54325000,14541666}, -{54337500,14545833}, -{54350000,14550000}, -{54362500,14554166}, -{54375000,14558333}, -{54387500,14562500}, -{54400000,14566666}, -{54412500,14570833}, -{54425000,14575000}, -{54437500,14579166}, -{54450000,14583333}, -{54462500,14587500}, -{54475000,14591666}, -{54487500,14595833}, -{54500000,14600000}, -{54512500,14604166}, -{54525000,14608333}, -{54537500,14612500}, -{54550000,14616666}, -{54562500,14620833}, -{54575000,14625000}, -{54587500,14629166}, -{54600000,14633333}, -{54612500,14637500}, -{54625000,14641666}, -{54637500,14645833}, -{54650000,14650000}, -{54662500,14654166}, -{54675000,14658333}, -{54687500,14662500}, -{54700000,14666666}, - -}; - - - -/* -Storno Frequency lists end - -*/ - - - - - - -#endif /* STORNO_FRQ_LST_H_ */ \ No newline at end of file