From 0275c2ce570c09ae2c30d5a9ce14d7c58da5873e Mon Sep 17 00:00:00 2001 From: "Christian L. V. Madsen" Date: Sun, 3 Nov 2024 12:13:09 +0100 Subject: [PATCH] seems to work now.. but missing uart.. --- .gitmodules | 3 + storno_cqp6xx_digital_xtal/Debug/Makefile | 13 + .../Debug/avr_i2c_driver/avr_i2c.o | Bin 9644 -> 17752 bytes storno_cqp6xx_digital_xtal/Debug/cqm6xx_app.d | 73 +- storno_cqp6xx_digital_xtal/Debug/cqm6xx_app.o | Bin 2376 -> 14028 bytes storno_cqp6xx_digital_xtal/Debug/main.d | 14 +- storno_cqp6xx_digital_xtal/Debug/main.o | Bin 5808 -> 12424 bytes storno_cqp6xx_digital_xtal/Debug/makedep.mk | 2 + .../Debug/si5351_driver/si5351_driver.d | 11 +- .../Debug/si5351_driver/si5351_driver.o | Bin 22132 -> 35724 bytes .../Debug/storno_cqp6xx_digital_xtal.elf | Bin 20820 -> 52944 bytes .../Debug/storno_cqp6xx_digital_xtal.hex | 213 +- .../Debug/storno_cqp6xx_digital_xtal.lss | 2108 +++++++++++++++-- .../Debug/storno_cqp6xx_digital_xtal.map | 389 ++- .../Debug/storno_cqp6xx_digital_xtal.srec | 213 +- .../avr_global_config.h | 7 + storno_cqp6xx_digital_xtal/avr_gpio_driver | 1 + storno_cqp6xx_digital_xtal/avr_i2c_driver | 2 +- storno_cqp6xx_digital_xtal/cqm6xx_app.c | 94 +- storno_cqp6xx_digital_xtal/cqm6xx_app.h | 30 +- storno_cqp6xx_digital_xtal/main.c | 60 +- storno_cqp6xx_digital_xtal/si5351_driver | 2 +- .../storno_cqp6xx_digital_xtal.cproj | 34 +- storno_cqp6xx_digital_xtal/storno_frq_lst.h | 846 ------- 24 files changed, 2910 insertions(+), 1205 deletions(-) create mode 160000 storno_cqp6xx_digital_xtal/avr_gpio_driver delete mode 100644 storno_cqp6xx_digital_xtal/storno_frq_lst.h 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 419eb9c34d658a05097c55cf6f288d6b639edc5b..b6868e8f84825ff25dc2559efe8d354a55b85ff0 100644 GIT binary patch literal 17752 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 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 f202de3be18a42c023741e8a8713b46fdefd249a..8afe60329e33016f9ca292daaf2e44687aac6de0 100644 GIT binary patch literal 14028 zcmeI3eRP!7oyYGpGYLru;Uyr72vekpnhXi=B4{Qr0vbt70-_BaCzDAsbutq(69l)b z1UMEDH8Az9)v9Z|)wR2>9@oA|kDTgh)m_Dxb?dQvYH-okY8OzB>sl-O{odzyXYK^( zvh3Nvw)gPN^SQtKy}x^(`}(|un;IG~aU4gP;HXxWizzjAu2R22;(RTbt){6n)#uKP z!FhvcpYI&ne!g>LaJc9W9-DCN%elTu?{@%-L@rH=CQRH8~DS!j|DzG@J!&){(XU0D-Knjc5r`S>N|%6YIxl6 z*$0*l*9Kk>MM{+NG3Q@Prg1KXG z#det{Avo&<2`eHa5{|8S%jCkIj1$W^o}EhRgl*`g4NP#loT|xACt5jc z9};^t?bSK^!?wO!oz4R2hd#6xJ#~g|DraG~#VB%CLgjYB!sB;A&2)76sWeFK+EdI} zzv~n;Uh?88W?bRLa&s!zc z9T_K*aXK?jG~;+n>c&hi{c6SuWt?j=P8h@PMm4$g>WuT1jMJWR*1>Rtj6=GagJs+u zLnGWgUwX1`o`9RQxT(sojZ^zSaq^Sn*Tqv*bFyCcqAIUttCE{pwEr&aJ!iiVQERUZa^|@$&kXZNWYBYw87#4y;?BkEvvX0eo}95~>REX`=b|hOV&T?Q z*p+d*Gme^?yN4@iaqL)AUTk$Z!07mBVhV#bdHQ z7Gn=82{^9Hb4vX>*XV+5I(DG>R%A>-U0j+IV++dVU0FWfnc&ov+*Mo3qQ~Z(cyI~h zSU=Wzd@hI97m9wuSx&X~uy*uSx)$XHs=Az6Cyqv=Oh6w^nlF~qwr_S|t1f3jlXq-( zl&54@EiUDBlYn(L;N+^BSJISYQcRuCwCW6RQ+c&ZOTST5rY{+D`K)}4-m^JU5DJyM zfw(co6B#FoQ6k}gn{NDg6?S+#f<4C#Ou@>VAC4_Ho^g6})$*y2ou2#i^RV*Yfu~Iu zAJ5*ly18Mb-KRyxaMz05x-dnzlv3;E+$AfNzP}OM$(|-*?eVBp@ZfR&P*$Sw zQiI-{KwwTlMV7Sp^(VXg!@d5lSUj5Y&)%?j;koVMbZ<1?o=OjN#**!e0#)tlWHKJ< z3C9xc;r0EC^-pDYVxTh5-X2Rt;sc%0_JMRP{(s|IvDR}^u?6!MREIkIW9y^+bEH%^ z3DpaA_r;Qus8r;--h~@Bgu;D&fe2sVbVlRhje#CEc`DtB2W&7}$ddI?mRAHM=o{l2 zF}-dS=w9=dI$jUf1Uw)Xqj9}A6&K;xTkO*ok8+A3LyL=gBGU@Bg1;WBeID<3bY`F9 zeeXtkf#qAq@>^|z(zV}7hYpngZj`%?@{p@6p%P_Sr7mEpr|I%os;_v0F5`10zHYur zynm*2g&glTWBF7S2XuKmjO7z!*=a0CRPi*exy@KUQpMx6Wyn|#DP4r)-K{OC4_nL8 z?Nq>ONSpa+!Napt=+!w2y@k?VY*F2=d8uQl$F*5k`w4^|?UKzv&US`tcN-^_4yU7` zMDltS=?$f#>862n-$45Efp|LBx-pUN5p!MRWp&9!x<46Ltt<7oYg*mbyt*w^W#UkT znwzd{XbII{xk@!GX@@_|s;@;O=~R1fEYhD0xl<`;O{J6liDW2pT^|Q$XRJGx4#z_q z@Pk=*!le3W$3V9!Rcf(7>EYfTO^4#q^-;{b?0`q9xWe9Wq$ie$s?OvxIF%ZM`CPEzCdTN9s8zWc<^4g>!5oXrqt5*B#F1WzIATU2r<*)2bRCdL~sh(xk zPhyeDw+qhjwKV7DYPukv~`BlVLRRzj$8}R{R5FSQr&W+ ziGkjfyFBC?2dlyI=9Nw8xR$n{GUfYOJ{AVu1z0oOCQP}~#)dTwjiHu?)`m8_m1Bum z+BBwXLaTRZ}R~+#G6Y zZ40$Eg=(9c+8UdJ^$jhimK-!(-a;cQQ9Z)v+!674BjWQ_ERh=NWZ?+WBDtpKc)U4` zZKEZ8eRi#ku2=D7qT8QsOuoL%i|E!JfO#=%o4dHSwV}(K>Kjxn)vCL0O*kIwv;{39 zNX2f5rZ@IQ-GX#!EF{;hp@BXOiD*+Qg2A1RMXpVSIwR&9auaoRGn0G!@Qb!*jpofo zm9h?{H<+QdX?06oLuhSVu+jD-=DNnFy31U)>)YJYw7eyFxqDUa&~}HGbJc9a@%-UgLgURSroKRdXlCA2t%DH6ie47Hg(Iy5h^Ffcb%y=c+mbKS{` z{eB#dqX<}AZ<<-^_k0(doPCeVTMqsFjWYvpJ%VN4dp*H2-+kC1YiN|f+YzMgVA?I- zU|GRVU$Ct3)`DQ!sM`vIWkt7-3YHZQ6$Q&mb`=N9M&DZ!EGxYacgJ>l$Geq*+idWu z!$-3bfS0?n6})oOWK3Qt_^$OLV?h4N;AK|a56(R<9X@(4;_mkwiVh#G<|!KvA7$QL zsUz#-Q1BCWW7 zZEVHy*lh)`nqb^0 zQhhj6=MkokJPl_(M!_qg1gcKqv!KUy3tdV;Z}k3_GuVCK>I?5Fq=G4S|$S=&#Fc%4z zdX#Du?t;BlxE%Vm!X@CSa2qsnVSeXI3Eu_H4Zvjb+ z-xGca_4$GD6!0^`IH{L}cS8Rw;g#_7JK??1^MRQ@r$RGIcpjL2O8eh|*{9@BkZ+#w zT<`_Luffm7!ta0^gg*jbChS4ER|so zxA2p&KO)QzmwSXOz&{fn0KXu-75p#41-Qoj!bjl;f6bt;cNqMsuoq_^@~|BaqFg+K zY0f}1ku2-g>B3wCW{GA3G*#qs7!j6={U2ekBg>dyF1#L^%S7J;UM+h135oqK*n33J zDI6E(TJjg7VgGNkG`wb(Ma`|Ec^7=A@E^esiiZ9BJ>jL`Cq+|^cKETS`KhJ(xoFOZ zW}k2!_$|?Jt@^ca3;6e?-x3GV?vBATtxa6O_=YM!t(PmAVWXr2@1ny^naZ$baM@B#2UqGA91 z#?pLXX^x17{qslR&%pev6xQJg{FDlR0mkPW-Tv$czJE8GnUZFKn8uk0Y;Ok0UWfG zHwv@9n=QUsnEMX*731gI!nkbpeTyFzPUHMTi=P&zpO=KWH@zx68|QZ|JO3bvWzo*P zhfKY`ClNdM8`|f>K3SOi5%(BlpJUm%-x&LH%g#N9_7%vh?>E3LVD2l%J|IlHzTXi2 zt(Kkp3iVw79}?~Yb1yOWr!7186=Q$hvU3mMd|`NBn0@q-#h(bXzwmNH>&adSnHSSf z@qX0sIN>7L&#?F`VUBryPlCMU^Tb{Xo@enQVLp}DSX?j6vCVrjmP@`unB)9vi@z$& zao%n5wZhyJx#yX7*d&Z4LhZD8NVpAp{v{ao*e43p&b`psD=a(rKiav*)(US0bI&vOt1UbCKV$E=?A-Hc ze*$^833E^6K4@Pj#)xE`6kse*Pm=97Vn> z_~%?A)4#5d_-B1s7X9n`FcE?EVOjM56{H#eX8obY%zd)HXO_HC=%?cv8Lk!Pyylul zJLlu|!u0=_!YqGKnDx()QD?U0J;J;Wu64At?hgxdeSTb+?er7jx!`Aomx5mqz6AW5 z@Cxv+gj>J|gxkTt7w!UoEZhhF4`H?^pSh-^4S6kNh1q_Sg!wLIns62P9N{HkK7TQ9 zE%*Xq&fi+$8^C<#qGl_&O_=j;o$wxTm+)KQr0@ao24Rl#L1E5|9l{*v8DWm|dxUu( zb-%D5%x5mvf$xYO6`lotT=+cj9^v`mXNCE`=mlZkck%g4UoV)?U*tyceqp|Qc~_WY zlIz}dj4Pbf7s4FZKCA<@b3Bv?b6?OH9OLo34eDaFw_B)v${y8FsP4>H``eR<>?`vS&-*bp_ewkp9Ep7X2!+YBvB+?(- z!T7rsZ2RLq8|Rq`#vkW`?QahjYID8Z6O6xy!6pxV)WF}r@&;dmNqY!!+uuLKUmq&Q z`mx=NKemC%15{H{821Mg4E_QJ!%TY#`_sL2BEh8n3~{^MdJK$h1#Y=m!m{Q55^VC& zMGSL)F+qY!dkt~h-#=ks#9`xg@V3ER#|L1O2dEx|zu5!{Cha}MZGVd^mAVEt`s3?8 z7m zx^g+tOOL%2331|p#GzL%+!6c({1tG`4T(ee-t3M&wnE`a&+q%*d-G=I?aau}*6-dH zLXZ|g+caeG9wzz&=Bi4#NT+Cqj(&RstfD*taisz$_JqZcSHfD^oY7>S9K$O@8+wmwg*rPNj>Kd_YIQvdTZtzvA!OBw=&B z2H`lD9U|{>wAk-Ux7&5RVxNap@zcj(gjiqM@gmtxlZU>SXFE~grHRb)UMon3-Yiej zIFa7tE|+QrogjBZ*~ib$YeFCS&0dE#?me&?%gfd^=c;qXvZL5;hi$J%vqwSK zMjlw?^;X>{X+QEi?gDtWo20qzxnY=Dc4ywQ?;|VATdSS8hk|yy7iU2y_FJ~M>!v1e z26;R1!xqN1k>%w<65AOz2+O{fo4Y3Oy51vHPJ3RCXfdxJ_o9r-?IoGV9h5;F7m)NxYG)Y1%EQsZTv*^srx$D=LE){K{6Zk&+5J8n^v(r}P zM|?2zL=~SONrtF%Rq_ei+c!c~9X-L|qZO*~)G*-YV9?(FY2a0ZTfnyrehIj^1MJ+} zpBuyq&SQsb8eh-ENOqMDjqxL6{OA~;9OGtpsNBskrK&n=^5gVLNx2gc$-(#SGs8t}uvwT?OkQ$4jEfkFg$OTsw6mADj7~ zau#`fzPZ;d!@E#$j zav$`(UjyqgfbmrW-mFf7<#}0tf-+u%vYf&C zIFI+s{oxp|vkui~3XtAM-meTw(Q~oIR0DYhvI!@@8LV87>+(Mrv)*4IU&5zF*ZT*Y CA}Q|x 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 7904650d42bd16912289828803afa3a3a781a797..1da459ac230e5d53cc5eda1617c53a5bd3e1b521 100644 GIT binary patch literal 12424 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 literal 5808 zcmcInZH!b`89w*knb}VUc9(_as|>IRSZ3HSU`wIw2VZMeSeK>NbmL`q=I-v5`Pk0f zU6)46LKSQ!mO^Y}RIIVKrm6j-5gV)Fm){nY*4m16X`;r&G)0?`*cg1CbIzT)U>p78 zN$#BIdCz;^^WOKo=iGOW?(E-X7>4khA@++h6XKnEA^w8F4ymwKG>JxW@$8#t#iiwE zetrJx`PtcbXJ?Lm;poi6GsjNyclPwGxU~A(iECe)T`@4zb-K%Vx9iUbXD4P~HjF23 z9}yQEO9)fi4#{O}eMfHZO(Q}P)baDs-S{<)N|KNnc5|LE%?dIz6lSN?j*m!*8mN>5 zW~F3uJk)a>X@rUH98TxsHvgo zB~495f1{~YweP@?2>n*mkQ%+LX;{%$G>s_ws-_iHeS1adcbZkI!PhjcQuO!IL335L zqOa@Gd5XTFX`P~f(6nCBE1EVa`bSOYD|%JaMn&J$bb+F?nl4oIn)Nrt$z0VW!e2yi zWHc#}(X0^RE5J1}Y;ReNa;+6^UWwhGLs|Gkgb1u+Yvi`9GDXysn-%`>zc70)HO*%X zYaF`s6d|mW@Y`kh{Kp}w#|)@{2b~!T5jRMQG1uq;k(g38V=tDOFHvJN9XVw*Zb0uh zW9h443$|*}LSNprTT7Y-OWLZwaR!$}NJ;rL;>| z*5X+f89!^dXAPr8+(G&M0U7*T78yNjjB$9Gkv1z23bDL=lEd*JSucz_V|BEl#)>Y9 z9*EQ#gT_3ZC$m}9)Z7ChPRs&fMYq)4UDMY9ue2QbAKoY^i5Ny-g8@*n0(=8@v9iIi zqBS*`5~jRrj<708`WiZs4b`ADr)iD04vKAWFyy=%&YPnZu`cID=fWfGa{|Wc&6?Vn zRGSwLxL4N^AoU5cy|%23Jx&;9L0`j3qqfedH@YHE_SAC0`Q^zxrH#vs)&?rvSMv$E z(t@yPZ7>m>g*Av7Q>dv!OBQixDJCtZgkXsTP+t1TaRchDGDgcDJ#GlI`tcrU+~E&k zcj)QX+LK*T%N@nr~D|bDf<1v_vwGYqa|Ga8t+A`1wJJ_RYoGQAt6#*h9?U7u|hH%8+9{I zF}8NPbJM!vq?dIv!$og0?dFF!Ct8NRd_I#JPrA9`R!)`8>nM^yw zlb)OT|CkoNTZRX;!@B|wcT0!&mmMBRrVbVLdvp(ZZtk$XW7oiNYofI!(caPNySf3d zBNzz++igqP>4H1u6okm)WfLi0KxrqFJe(M3(2HIgA2ML(k4(B51k>jG%DC96!ztvAC^%zo(Q^u&wkLM) zJrL`?>#o?wL`R|}7SHD5qnTuJd|NAVK3+WJPQB6+mLH87$2R?72UC%la3=93qd~OdZVtBNn_q9v{Ig%&&7*~40_7a zNiP}X6UYx(E=;C8jH-2=++?;W5LD(tGM(PxOo@SggF|>FgrGx)z;_@<2Yg*O=XxTO z&yB@O!>o67gkZDa6rIA9leSySuuX6ouaL|YM;+u|uIPz$esUz^aJ3c{d9JR!lnE(N zqwL=~B#Q3F_KmHuKP7HiQTp(oj!eQEZVYDk_7BqhMrpq2KInLdC**>yQc^a+7eLB! zHQV-FoF+S+@?RJWyD0}2F_fL4U8W|a3|m2kLL12=u3N>3h5^Gl6`yIB(QCS zO6>0K-4a{deea;%X=7JyWRpGQUq5zxVpF2cZr!}ObDhdBRb$*l!&y4oTpKf=#+jAh zXnh&-a_o*;Up2dgIYfK;;}VHJ9hWc;~) zlf}-q0ACEeJ-}B1t9qTn>o@N#jVZnvUD>DG{V8Ak)VAhH)O?&x`-J6x4w^_Q6Xk)#6!%)VvT6XmlR?(u@2vQt@Bf)PpihP zFPS%-dj=cM_z|P1#=ks;&ja75@nv8~5Pig!J`mbnwFLa*M_zLig8Xti^*PuU_(f?gz6m=p3J<6{F&)4_`^s6;~96e)1 zogYJIo5pXW-=pz2(C^py1bW7f`j27VLmIz>xr{sIwdju!BWKu-Y0Uln95Kpww#SH} z--MoPP=6)l-_p1R_ud$Ssxf`|M?iifAg@Cq zgGJk6R9Rmf-_x)LWx zMhYk}g2S17>K2|v^)iO)FR1fAqKun!e5>$EBvSco)w%dkU3l0!@eN_VG9M`C z!#wH64xsoebe`~y1jY^qFrYY!zb>Z< zbn~a&4<20iX&jIXka1mB7XG>u!2TRSF&9q72z2wu4uJ>lrExJdLq>ZzA|-pD1@`9v ziVd)brAy5pI|@nA-sfSDXNLCp+2$DI{3ITK4xrc$doKk9K0Jf5puMMH?;vEf$I8gJ z_f25VX~Dzx9{%d{p7k5Y_`INdU+?W|_5HtH?poPG8kST=U@IM;O@bGS~adTeR1m> zTR-0V_15;yJ)2)_exteP*5@C3{h=jp)ynzq1otBMHMi6Dzim0TrSlHArB_Q@OLj|f z%j0fca9PpSTXtSt<`*~r zV)H$lZ`{0TbKi;Vs#>{m-7a_Pp%=%59Un zq~*bFw{6?8ZOyjD+uTpfBo`7O}9O8^Q|}E<4(RLSd`e(p(TJw&;Rp_ zsIS<&RoT1k!rQX%{GU7Cy5n2z-TA-@b}WgqSTMdqq8Kh9h;w4(Q#eeO6b@9Z~O zuVZc>r8Ts&53Y~3u9xAu@w2t%Xkm8d~VJs_*Px$UWZ5J^SO>-03Z49i4+| zEyvvVW`121Xi7VJ_7{Pb=`A@*ih9iq7Jcbb-XC&P!?F)-JF)$SW938Fi&<{{#ZC!TU z@y^kny5sp@y#9-;*W9pX;L1@eC#{^dvcEgh)a_H}pmVUQX>rr~rd>_WOYE81Ev0{P zUaDHNc+L7XyVgA8K7`V1RxVw+Y2~$Ro>HTsRhtdA+;Ot!Y}?w5jRZRd!yZ z&FfXG7Oz^rYFFg?RM>W2T2cSERbQ>zzIGSK(fZ5R&)$@uJgs|W_shF~*Rxl?DlJkI zWS!>000E6{>Xn;uwqYorA+T2%|` zQOYRnaks(JAoo0XZPU)CJDUzPt-!$gY0v#V<97Tc>G7hg+F#f6j-HS8{I2JH?$2F+ z>X?>=+vaY&aNGE8qcD4<4arpz>UZ_vWx0dKZQ8ME`7PfyGDiPr?#;)s|9kgIciuH! z|7qr|uGhGquDB)dWTiox~B7vauf?o=P5?@YGGJ!Yg0O)Kk7?!;}a?`zHu7yY^H)E~z4 zoO9|0>b%5#&8=x((%f-Jr|nakXEk@;am*dI{mQrBaL?Mh4zb?!@!H6&aJO58GRs?@ zhVRSYjg`-SlX5eIXx*~o$mSeJR(>2=#c^bzuly&jzp3Ws_q8lii(f-WwK`#DOG#edV z`VpnyLA`cVubtFuXZ6}ey`HLGyQ<6cbS|&t-CE$4e1jHvCEut8UdcCUfmQO&FX)ng z`d^Wf_h_Xykx1R91zvmX)dDXnw`+mt+Z|fq`F5ukc)sn^0?)U*w7~N1o(b>?QMqpc zrX3xXpJ^q}w+FPq^KHKtc)mTT1)gsYX@Te4!&>0^_J|gEzCEf1mTw3CqJ4Y(^@wi= zm6FwMpU}BHSDw@Y&y`>5EMCcnw7@FpspTjDL3m~c=58H?=k~>nk6-Itp55Q*g1jm| zuLWK~FKB^R#TT`}D*3nX>5_kcZ=~cua>}+x=F3{(mHdhpcm=(x1(w~z<*nUcHfA#+Y)Q{%~p2bdW?1x{ck@2yQjcW$NyJW3jJ88-q9&nm-()$Fq_M#1@9?A z0`z@a|9!3R*QpP5Do!hZsFdSS@pvuxn-(BnG^c$2w*1N1t$(g|B~KfqSUd z_*831>NA}ZU;n|Bio5vwxfY;!5&V-kN7s+`6u}ot!}V(OrM4)wIjU1qn`27Zs?EQ& zz^lzyT3>4OwNABhQdF2-_ZO&6d)M!GZ$o`LC}Etdl^juucQ@i1l-jtzi6|w;C?&Z+ z(@O2!bCMjVqq3B&l-ziBXDvBJOI&s{ElCjxJG7Rx7YXWMT+6%C zlV?e?jZXHEWTH;?lw^`l1|->5Cwobn{ldA7?D>+6%Ell@!{G+&?g zIyu1Q`0(}Vppye7*-a-0x$Kd?J^`H^EXe^nIYg3aI+-fTkvch4lG!?$CdmmpnW6fI zuTQZ~W~yG`>vMr_t>Lcjz?dvcv?NQ~4}DxDBSZ&nERvC48<%Laqg21~^(mEJm*Zxk zAGM$1&vR!-ntZIg3LPubeY2Rk=;&e znL{*(n}La;GgEFSA`eM&VDOM6mqa|eREKJz%*7E8Ebg&hXxG#k^*>3bk17I_kpXxbWY0^%kQFx?;X1QvI)ZJ*v*W zC9YKF3|fDdQ92WIAIim65zp4)o{9-dS7={!h4yiE&ZA2OG8+H8gzQA6mFQla?zs0* zFIl^&o8+wG49C5f;vU7Bj(eXmq$)TP&i@x8+BHGf-2ZoXURSr$mw1k;XFMc*`gTp8 z-Rzb%ySi!Fo;_jEVfI#8GorE%Zk^Qxqos8)u8#zxB{~=_CKx(YEqvnOaUwU|%qTC~ zoY;$_t-T1gH%)Rh+KZ#nUL55!4Ub4H`yyvdK-}yoPujNjT&N`;v}C6`geAqO*=ubO;ljE-EXgXgy=HXmj0++7r8S zUz95s9>*0KT<5nALOCXC-DA#=Zpricc+5ktno;r1$w)gV!mep&-v-QGmF`62rf)-+ z);>mZ=C#V{OYH4s?cO@8iVRybra;WB6>hrY^j0-->sr@-CuUJyp}OeW*O}UPDRbO9 zQ}-@&>_oYh(39p5jiRc|E11?kXJwN0JfkO&_$_n)5jW5q5F_A%@jGry-8H_bP$f{( z=bOT{=s5YUfN29K6SPR-CTucva$R+U)}2AWx(u4`pSh9#t6G6~R#O{k_B5~U;##+z z8K4u7GfH^Z(WOj`lw#7n`SUPo-u-#>X$XZKw=~k!eJONjs4C#z8|h_xQG&TOxWxVxV)XZJ3x%8X24-(2SO);V)euFTD?bLO2~&gWX^%s;uD zacH-g*p5B9oTFRk9Cva#7q!kg{u^_)nofPH7x4l@Ji->K##S=c#VjweKSZh-zOX+0IPD zm$OryG0Ep8ugOl)Qpf3MNgSuYm14|vw^OfvXKO&FJZ^n%4d8)SA57r+)=S`V)=R)& zFQK1-kY*lqH}49bx4Z;A^%4;$m^7 zWD0K`?%HOz&T}$4+zHM%T{SkXkr~|rC%j;CCOh`Vh>_CBoJcdCjE>2f?C6HkqsT~U z@6w1pBTaU6H)uUBXMQi;lWbn&Mr?ybH-ORl)=0Weh0&#j*8Tb4>elyk`v1N*|JiDq zh<>ZT|JLB1bgBQYV9@*j#FD{OEVlO~IMGx7w_X2^L*!dq?__3}lhHBt``?;{PO_K% zr<#-HoWu%{YHF9C;lawy<{ldyCAK&kG=5x{_x42}--m5ZRepd~>pr7CDUgmip zZR2?LGo^j+j%^IZcAwap<@htl_b#3WPU6W5oj>xFbz+aBmzJ?Limt);x$1eKJAg^E z1aA?YAl>8mSB*4wiS2WiMjk?F&s&bfYDQl*_Ux`x4WTv`dB$~?i=uf{>ne-vY?05B z^JqCwkn;gKzaZY7Bk9~$i*&j0zi|2us^N29g=L?6G^MSBFB!0OH#K!=W7Y7?;pxGO zhN^|32B&<~tonw!xeaACfy%1tP-9@gqLEnxXO)F(Le;Yx!wV{^>Sm2dO`8?2tE(=b zS5{R!t88JzNcA#gZta30QSw<;wdK_dDnd?dF+~%X%W4HpJFif4t28g~q z56}F(TwOIsU#=+&&(nlWEEQgVM|`v(X#hUo;7@j;3tpOWxZvrkD}RfsL|DGPqN z`rY!jW8S2$wo`8?r{Yj-oVdgKX!C8QZk><`8!KK-zC^<5=*laNWw z#K~3apF(-GvE4pn%mjpru8OGkBS{(Xx6Zmhl9jb$d1xq91W}1D<2)8Y4ZD(dRP9zU zk=M0hi)e|Ce4Ip{VfwBXlBDertt7mi>;?2AdEfO552f< zX@Q!w@(W6XrBidJjtv%$oj$fCh;&ZwLbzQm9ES@~MpccBNbqgBGL&309v!FU$ReD8jcwTyO8Ky%=ip(py2qjJq zPAQzrzArcDi|JLNUO#!%R@Y|8V@7cNrvL*Yl&X4b^~#1&NSds;x>^-e zQg(UkyI1sGshq{6sanc~I@RsQ*0Pv99hxa+jhCTy=|g=*trZR(1r-q7Pa9|}E8=oV z7UNG@rm|m^Q63C8l+`v?h8lvQg^}J8)hV;kC&dwDWR1lKly7>A0$eR9jA`z%g&aUm zI8;-wouq$IOtZS5bQY77T@@O^tVnOF3DuO>UtyfkgD}5pVHH*a$|KWVq_0a)8{x3C zmrNgvafNnV6f7;tbH*1=3*?=9ZeV!ou++4`keb>dmDOd9^UhBv*9~dBtg3#T*N13u+p5ZM|{p4a>qD zJw9SadqE+GTxrp?lDx5YcqKx*aUx+xELFEqy<03r3JXps7(cfK-1w{1QaU1tk34x@&Wy02 z9%2QhC5jd_mWHd!FT27Tv>C0Uz!K9UHN;@g4VIKnbxd2SNdr3Rkts(FU~9Ywi}MTV zw;DvI{`n;Z)5l`+EE!uk9&_`sDLIkp43RK18@gTV8OmxQ`ZglsTg(NFGMP)2)9kyK zH&lf~UR)VaE0f(GIq;&Ywoyi!86GGvBWl=XG0u~VCI@rWYpxom!G&ejtgxDARaYok zq-G5>OR4r`Q(*j8R@c=v7%vJk@`Aj(=<%GP8WWT4_)s{=OJf&?YQw?G`p7Kf^{vT8 z7aAj|E!>fMF_CK$W?o2-M23ATSXNQdAVp>d(}xE~8vUpnPS!Bp#YDyHT$$`1dQRnh zs_w6PhSBq_Zu^LYG_zcAJ&zY`&7x;=>_>t$q3bvRFA{xnRF5RPno`pz-~dI z7P1j^i06jFCFpLAm@o?$)Xc$bGIrD~T*f2ie9WJXvudi!8|tte<8!1ZZ4B2n)Yb*d ze^{TjXi>1DYHn4ytU9;|FL>lU;idc#CVmracG&Ug%i@Uc5s@a8rifkJq?_DwJtHQa z8Iv9slO7(E&NAtk`DP^M8?(ZSEKD*ZQ8FFLq)3(_6mcx(o1Mr5#>o3XK&&kcgoa6_neZg^hQZ2+?`hq38t#$;p+ zs#{U8U`p}W{G3AX#ugK#3VC$>i;k6A>jJTui!6%GET()} zfcj@)V_3xZ@0N6mOZa z=6iHEO!&%wQyvT9J;Q6CG<|R6m{)7?Vd{>pi%~N{LE%(mpSksj&%dxxDr9cXtQ;mQ zHGzmb(KC};Cad+Ux_fvY6y|CdJjt-A`*p;Odg#)(B;9C{SuxkD&~Tj@zGhm@W<@A! zqRq=G&dDp7syYm^jEKx(-g1I-m7|)ION7YNotmhmRa9W~f*@V3pxH4-dJPk)0v~c> zrvv@y6FVtrsob9QP16)@nj^|;4e^pEH{~#|78I(r{_x1mAhqCam5UVK z!J(IKg-<%M9)Voa@%|X~grjb{_2Gu&-F{RAl|}QAgoFyUsY=Ws&Em?*tkTmMeC?Ry zjL*v(6&R2+y(Bm?hy`>I3-{nuvq>1tOwCHgG%;et$bot(ufJ0BH4c0lYgymqfbXZ+ z`YX1!K9_@YQv6r>a#G^f`g2m^*TvNYtkNgES$Qrd1x%1LRr zxou8L@|JcvDW~j8&PhqxeM(MB``lByJC50grD<;6ejl5|XhaTf|H9Tf`nR6`ZJ>Ww z)4z@MZxj97O#ilEYs)*bfylR+`L?Ppv&DL)a% zU5w*yeEe#LF@Q6-u3_U!`n-yDUCp|#VO`g;uIpLX4Xo?cY>SPwv59T5nQgI!ZLupQ zC#Az~Hc3uOkAP*H+u@$?u)T}6cgLq$I@~IU&PJBMiREvm&K8!xi{;bk#B(d;JhJiE3Guv@2^<`!oe<9l zRZ91fPKf6-lID2qgn0f@(j0@G(3{?oG*2x5vzYW(G3hp5XHohcV$!F_r29#l|#lZ=|pa%SC2Z3uxLSA06I)`iO zv28b3@!}BH`#KS|%Mkr+EPJuCZ)9!5>2>@RZ+UC4dgXyni*VyIi&8DHpQ0d9OA_3# z8s(YM-rx%c)pHG3-;I^12o^kzm6?Ews)ZWx(5j(v!5j^hRg0kCSlL)*3`T8C>Idy$ z5Dz*FYw9W*tFV0ghQ}oDntDoQPxklHogs@XU7vHZpOX#_&ILXU**Q30DttfAv+?KW zP(~YGg%fp_;(Ryd^3jQV$)fYB=)8b4`=8O_M|k;FR(`}5?;t7W{KpUD@;j{@ecdeP zTo;uWlV>C^nAcTaa0xig($64^yx5W}A39lfz!4w742$wXIK#@DNXC@KGJ6P9|2(q9 zfq8vh94CM?XCpFWsr11+!Hl!f=eYNa{8~$X6IrImkzgObCXkCW%OYpvJQ{y~a0S|h zY4R?g<4h!T0OFX6KmQmY{#TP3cpSe2v%b&ZoPoNL2jDzGcr?zlg{R}Z zLU<9*JMm}i^VdL3JlWoUxpg7*jt|ok+YN7pI({&HS8WFlK&ILbJOFa`QR)xCxgY+h z&pM40c`nXuZ&NPs2Zq;Ke1pX*o)U+rEcs!JKeE_|@{G+hEDn(2PX^AMw+*ZKi#!2# z^p}ZrKXy^M_poNfP{G#;9j69yLWmXLj@v!&xGsZ%<81u7XDM{pU8uhZI+?<}N3gF_ zel7;;Sm9UNI{4K=EkA-K2KzsCLMS&V%unQ33-gQXjlu_EbFuJ!s8f^hV(4EZ{ByMB zPT>K_dz0`S%tw2KuZ0hH30Fh^kZ>(N@ba8+C;0Y~FxRUu3*+Scw{SCbJ{8VE9lsR5 z5bVG|6+4f*f z13w|W2#nv5QaV?GpBH`#zWqV?bjUvto&@C8&H=u!iT|E3qOatTqArDeEXg7Y}EHH;d1!-sqjen5RX5` zBnRiN!u+kP{=!G$5A~?C5%HNQ+!s2R2-9Y*@FD0d6JCmPHw)K*eYcnR$96#fBxxKnr+{5&B1GUE5V@befi zZwOCBto}!MF3x`Bp>My1oi4(^L#)mgeiL@Gg!yyR*i&*hK8AH&bT3ZIGg`ds)n#5f6g=yL#Nbr(K}Gk?;H@?x~( zNa2Aft3bFB@|nU(h~YfpvlwUL(-G%2!uKO?*9v!rZ+nEN;Jjb>QTX|c@LzC#S@<9D znQ8j-9{4li_hBaiY0A%n>@?wA)Ng?Bk8#ctZbBR73%7;NG~ojHSt)!K`f6BsC1So( zm}{PEg+E2!y~5|>{Bz+Au>ZU;?5H0qK#e_J_PyO z!iV9{r^4${FF*8X=MnUoPQqPLZZF|sh-aGcgXm*pgfE8Ag~I;@`;L%?pGthM#4^OW@}f!fj!Dneb@z$<@Mz(BDGFACGOq%fZ)?&!80deKP#{ zJ$$=MzasO-ClK9`KLZbjaF zGUCc(g76~nWHNl~hq_M}efltx1}OK7xJrx>%dz@XAt7Q zOXT-K{u46%82}$173O;ObzweBeJwl_+!ng5iyw76l?;14P8a5$59cP<$^*Q@AhMbgpnQc)Rct@bzT)z-P6?!d#P{hOtCH6EQY> zlRGFkoqodENS;H6pL=0vnCR2b(IS5Z@;s5#&nY73xGoX-GRS9%ya)1@kx>@+8+MCM zJ@ogI`M`l=pD>?;?BG06L<=+g(TQ7EqkKPz(j@OzQp5BaMie;9q^&m#X2@^{E6 zi;t6MBR1p`a2Xjf*$b{AcLLz}q3~$%0y4_&hd#DU^y$w!kxzqslgRT>ubm?Q5#%?L zVRIPlye2yDpe^1dcV5 z8FBa&@vJBFffYwsn9re$$f%1CbK?rpXI(akoX=2OM9#WgFY>d&dxeAG{lZU!pA_zi zx;#yW4{Z?t-->(^SH^_;9;0=lQpUH-OJVJ5%Q- z@P)z;fVT)g1OBz}Yv6dqlKMx$V}#>SuPcPRgMUUw9P*&^ki}03-vHl!W$|x>xsUXc z#fOEtCVkyvn2p?9F-0pzR`o6j?{{Q$0VU^kgge4;OEE(3^tX7BFq%%y9kfGM`zl~` zTPH_!$YX`kL{6c_CBkS5=VFW1ehchin5p+NXrEjyI_O5u0*m>R0@Ok1ofQ_Z7G`(d zWO1`_H=K7_e3LL^aJ$8K2{RrKTKuT+a-5$N#>sg>cpT1$Eq-0N0q6HE{z!N^&b$}0 zEI<_}R(pK_Y02)KW_1p!u0b6i+?A)9CEG;jh%Oehe7_O#a{{2pAHy6)F*clUJmBE(5xHJ z5ynaH1!3MIj}SS>UAD#f!W?%~ELM9#$jh-dQ{?1Jg*n#dT6~!>$6eTB?mN>rjytvg zBfLuF9BbUypbmMfFvs2X7T+k$aktmveZm}f`z?M%nB(qAi=Pr^KjFIB#O+VQeIe&_ z3+3bwgy(=czf(>=Doi_EXB#^mg*k_Hv$(r3`$Hd#)jkz$(hk?<#?JXxUj8I1<+M3P zm}BH3i`8D1*x{Pq*l84=2z~C^QBGbf%yD|X#WxDmA3g(6e=vBza0QraceA#CUKrtU zxJN@d`LHni+gldDBh3DG#Ntnd*~k86u?qvV$^NGH&4g1#&i;0q#cDqdI_z(KMNS?d z%s!TG@o-^2oABAg)N7(J``dJjXA0i~d8Nhkh3|(vZ1EytelSAq(ZM(JRU&7(e6}&= z-XOdWI=5PUyD;tl%wn~t2b;$re_Z6`CxvOB&r8PstHSjEeTzR5ru~0fd`y@=r(jJ_ zJ7m5$K&E{@gBknW^CfeSf0V_eEqy+x8U3lke6Ot1;`x?7pXI1O1LZEabhcW&-O}eX zn|Y?=ehry@a=*oo2%~z=lNLWEoDDgj@r<262@i*y`$UwJKd|)q>}T}(pF5B_pC?+J zESwEFp9zhAZ{dEB543oQF!lKyXr2@Egjui278eV%UTQxR3oh~{BA*53bEC1-Ae;{Q zQj1pz)Bg_z7X!|Fy+03Kv8Evc-pmX`j!r z#{LoE-jJ(3Rro{ZzCU$npZ^DiVYSx^c`oGKv!4Ct@6c%7xsXJhm1e3LMJyWQfu zgy|>uhNw?|RCofI&(g-ui^BX2)}JhX!_wz7w$WGnz_589^pA<0%!LDWXrIsCM!&0Y zU&zn0xR>w*$oag@=Ug5mgjug_i`5=7bXb=uA}3!UjOKS{T70Q6PR?A5FB9hdMeRAm zCV7#_d4FlLc$F~kDf|g_`bpj@j3Mt_Z}E-7XnMV04Sn)Hkt3=0j%kPdh{z9sxxZlI z@PaVo#yw@q$*&7v3Vz?>kA&wy{-woV3Eu&ETRdaa4mm}b<#PYRl-pOBbFbPPhdz0z z$XV{W7N0M?9rApOCkWF%_d$$(wU-W?d?u?GIXNs$`+Ogc`s5YD*MYCG_*!Aw=YEQ@ zf4A`ckRP=8kfpEo+hL!_VUhEB>qCo=So+*U;ob$01Y!2i_7-;*W}obCaX^^;bD+gT zgwZ@smc^rladPr39xu%PS#0rCVfIP2w+}zbWg=()oNsZhF#F`?7OVY#o4#Rr4~kpIf!XN7x1{#%RxD9k-B?qQjB zc~5u}^gpxs3*ic^H~1_?eR90;VsJ-`PZg$p?u8lq{1tlgMA%QWc$hG4j<#66e*yh@ zkQa!YJVluHxxZ%Y^ZjG;B-meIv3idKaz4X0iJZ*e>!m)+-DGjIFhBcntHrkqbN}r= zi}wrDAMWuPf7JULV*kHI&a&PV<}>%-E&g2i0PLu5ydy996m(eHqo|g4-hiv zjrJCI7Cr}Z?uVLk2MC`D`7nz|3iF2s6CtAy$QMvJ!!W4P+~abTa!J$;soa5#G{-Y3ktZokEk2y=dW(&DFtx&OqyUE1WK z-X{WQga0aW^83QQq5ltyzZB-@%MwsH?U4B%GkE~Gi^bi92SeW1;sL_^>|BP$S;85R z=UO~YnErDQ+W4>DZ$i1V;PX6@ldFa4|3Zrw3)B8;i`NO$KKHVX{hNfR!=`$#3T2Vi zdsW~d_+il@9}s4_Pg(q&Fw1?}V!qGKvRE$n&B>!+=ZG-vun)Ps(cs|yjPp1T-k$>C z{9*}3)0buhiHkfi4&c->7ay%FC7>2)qJR^(*o3;9R zl%s=<#yOjEtb2LnF^rd}mvsf+qdn)v@9<>K>n?oElG?Gb3xMj2%B z=VSQL6Fx9Dp9!-bM}=qO%smw9EXTPc{OO5y=?&%{JDIUOOE?4EN0{*&D9m~f6`l#s z6lVL5Bcr}_d$RBhaEb67F!$A|Qw!$(k6aJt{g2!Lo-Z5**9$KMFBHBO%+Fp>etEX zNyb0*`AjnF$j@hzS;rp<_Xcx+o^txY{dqFS^0j1)1=f-Omn4~a`5AI@2KWwP>fbHQ zK7WvmPRKZL@0}a~|3;W&nV<8doPGXP;Z*SJ!lS@{5oS!@7iL*Ug!94w5FQ6UCQKiE z7_+p`Sn)H#f@7G46*5MBZ1XH9AUO7Ljm)!=;L zonU?jl{z2=4VzZ=NREWKbdRY^}^?Y z`CUlLIZy5o&Ij)no(R50m~+PM!iC^_gy(?yUI6WIo_I|7AovO4zkr_>{wtX85m29N z=HCkkeE9E}gtNeJ2u}vTEnEoxK)4?KiSTOh=fYQk`F;WIbB*msCnfIzw-M%jwDWxbuhPc4rhIg&ZlI|+dTe>KeJ{_hMv*sK$dk2-(xWAH`dMQ3?{Ro zad6C-wH(KW(V0M&^#I3)S=Y_BbT}T&I$<7ly6CmdPc5CjWb{uS`=|qE|8($Y%8Da% z!oy4JE`hthf?P>Hae*k zq(*&d5UJ`iEsy^Gpmjli`LEUY22Y?NUmuT=2oQG!*qm34@!;<7n&8bS-jz83Kp@N9Mb z(p~M`5Q48<)H=rzRae!9j8(LslUiO^Q-fa%ipp1sU(E}tZgNsDeCB5tNf7N}F}Zk+ zM=$)5F|DfOM0)*kH4%T`rZ*TmvE?p@%p9iNd`jG?_BfRr|J3J{kT(4}fD39ag^Y)>mjJNs9fG}L$Y_sKy0Lc-WXxmieFWgW z-5k8egWpH9?R6>A@uxjb?Z(~(G4{HlGpRY6MsOH=yr0_Mas zzQ6Uh+)F4h_9|oSbtuL&AOc5w{Qjcx@A4RXW3UL~bA>sKJ$~Q7Ft4o*;DrqQVeB1Zo{iq4`HqvWv#3{I;~&@5Je%V~=uNfS&A7^ETynN3 zPHobkb)$d%@W*SMH#nv+6eCB=3jOSB1g0#Wtzw+)@fb(Q$T89jf3(*De@XbW?QNcj LdE6MmHG}^LaJCHB literal 22132 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 U_&O-g-q+95@0UQV4rA|s02h-MbN~PV 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 5d0aaa2de15f06a923cf4f5a8623e05fe38bca21..801ac80c7b1239c58ff8b049f69ed412385e0648 100644 GIT binary patch literal 52944 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

awk>Drb)<{Z@;9U~j5eX4b&BQ}yGL<=e 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 delta 6233 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 NDK: 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