diff --git a/.vs/storno_cqp6xx_digital_xtal/v14/.atsuo b/.vs/storno_cqp6xx_digital_xtal/v14/.atsuo index fd84d6b..4b8f482 100644 Binary files a/.vs/storno_cqp6xx_digital_xtal/v14/.atsuo and b/.vs/storno_cqp6xx_digital_xtal/v14/.atsuo differ diff --git a/storno_cqp6xx_digital_xtal/Debug/cqm6xx_app.o b/storno_cqp6xx_digital_xtal/Debug/cqm6xx_app.o index 4074638..ce14ffb 100644 Binary files a/storno_cqp6xx_digital_xtal/Debug/cqm6xx_app.o and b/storno_cqp6xx_digital_xtal/Debug/cqm6xx_app.o differ diff --git a/storno_cqp6xx_digital_xtal/Debug/main.o b/storno_cqp6xx_digital_xtal/Debug/main.o index 300cb60..e1e7143 100644 Binary files a/storno_cqp6xx_digital_xtal/Debug/main.o and b/storno_cqp6xx_digital_xtal/Debug/main.o differ diff --git a/storno_cqp6xx_digital_xtal/Debug/si5351_driver/si5351_driver.o b/storno_cqp6xx_digital_xtal/Debug/si5351_driver/si5351_driver.o index 874de0e..3aaf2c8 100644 Binary files a/storno_cqp6xx_digital_xtal/Debug/si5351_driver/si5351_driver.o and b/storno_cqp6xx_digital_xtal/Debug/si5351_driver/si5351_driver.o differ diff --git a/storno_cqp6xx_digital_xtal/Debug/storno_cqp6xx_digital_xtal.elf b/storno_cqp6xx_digital_xtal/Debug/storno_cqp6xx_digital_xtal.elf index ba19f0d..5e2bd1b 100644 Binary files a/storno_cqp6xx_digital_xtal/Debug/storno_cqp6xx_digital_xtal.elf and b/storno_cqp6xx_digital_xtal/Debug/storno_cqp6xx_digital_xtal.elf differ diff --git a/storno_cqp6xx_digital_xtal/Debug/storno_cqp6xx_digital_xtal.hex b/storno_cqp6xx_digital_xtal/Debug/storno_cqp6xx_digital_xtal.hex index 7baffb7..9f14fd7 100644 --- a/storno_cqp6xx_digital_xtal/Debug/storno_cqp6xx_digital_xtal.hex +++ b/storno_cqp6xx_digital_xtal/Debug/storno_cqp6xx_digital_xtal.hex @@ -1,29 +1,240 @@ :1000000019C033C032C031C030C02FC02EC02DC087 :100010002CC02BC02AC029C028C027C026C025C09C -:1000200024C023C022C021C020C01FC042C01DC0A8 +:1000200024C023C022C021C020C01FC082C11DC067 :100030001CC01BC011241FBECFEFCDBFDFE3DEBF4E -:100040001FE3A0E0BFE3ECE9F1E002C005900D92F0 -:10005000AA31B107D9F72FE3AAE1BFE301C01D928E -:10006000A633B207E1F750D097C0CACFEF92FF9204 +:100040001FE3A0E0BFE3E7ECFEE002C005900D92E5 +:10005000A830B107D9F72FE3A8E0BFE301C01D9294 +:10006000AB36B207E1F78BD32AC7CACFEF92FF9224 :100070000F931F93CF93DF937C018B01D42FC0E0AC -:1000800007C0F801EC0FF11D6081C70171D0CF5F8F -:10009000CD17B8F3DF91CF911F910F91FF90EF90A3 -:1000A0000895CF93DF93EB015BD08883DF91CF91ED -:1000B00008951F920F920FB60F9211242F933F9322 -:1000C0004F935F936F937F938F939F93AF93BF9360 -:1000D000EF93FF93E0911A3FF0911B3F309719F097 -:1000E000809100080995FF91EF91BF91AF919F9189 -:1000F0008F917F916F915F914F913F912F910F90D1 -:100100000FBE0F901F90189541E06DE17FE380E0F6 -:1001100090E0C7DF2AE684E091E0215080409040E3 -:10012000E1F700C041E060E07FE380E090E09EDF27 -:10013000809108048D3059F480911C3F8F5F80932B -:100140001C3F80911C3F823310F010921C3F2AE626 -:1001500084E091E0215080409040E1F700C0E8CF7A -:1001600003D0808199270895FC01E050FC4E08954A -:10017000262FAF93BF93E0E0F0E1328131FDFDCF58 -:10018000DC01A050BC4E2C932DE924BF23E020833A -:0C0190000196BF91AF910895F894FFCF45 -:10019C0055000000000000000000000000000000FE -:0A01AC000000000000000000000049 +:100080000AC08C2F90E0F801E80FF91F60818E0DF7 +:100090009F1D01D7CF5FCD17A0F3DF91CF911F91A7 +:1000A0000F91FF90EF900895CF92DF92EF92FF9221 +:1000B0000F931F93CF93DF936C017B01D42FC0E08C +:1000C0000BC08C2F90E08701080F191F8C0D9D1D10 +:1000D000DAD6F8018083CF5FCD1798F3DF91CF9107 +:1000E0001F910F91FF90EF90DF90CF9008958111B5 +:1000F0000DC02091080430E002C0359527956A951F +:10010000E2F781E020FF80E090E0089580E090E059 +:100110000895E0E1F8E084818860848381E085834C +:1001200008958093170880911508807CE1F39091E1 +:100130001508892F807194FF04C083E08093140810 +:1001400081E00895CF92DF92EF92FF92CF93DF93F9 +:10015000EB0169017A01232B242B252B81F1E1DFAF +:10016000811130C09E012F5F3F4F88818093180816 +:100170008091150886FFFCCF8091150884FF06C08A +:1001800083E08093140881E090E01EC08091150800 +:100190008C7021F0BEDF81E090E016C080911508E0 +:1001A00084FD07C081E0C81AD108E108F108E9011F +:1001B000C9F683E08093140880E090E005C08FEFDB +:1001C0009FEF02C08FEF9FEFDF91CF91FF90EF90F5 +:1001D000DF90CF900895CF92DF92EF92FF92CF936E +:1001E000DF93EB0169017A01232B242B252B69F185 +:1001F000816097DF8823C9F02BC080911508807C2F +:10020000E1F3CE010196209118082883411551058C +:100210006105710521F424E02093140803C022E055 +:10022000209314086A017B01EC01B701A60141503B +:10023000510961097109CD28CE28CF28F1F683E054 +:100240008093140880E090E005C081E090E002C057 +:100250008FEF9FEFDF91CF91FF90EF90DF90CF90E6 +:100260000895809317088091150886FFFCCF809130 +:10027000150884FF06C083E08093140881E090E0B5 +:10028000089583E08093140880E090E00895E0E012 +:10029000F4E080818B7F80838081877F8083A0E1F1 +:1002A000B8E08BE016968C93169781E013968C93AA +:1002B000139715968C9388E0828B838B80E090E077 +:1002C0000895EF92FF920F931F93CF938C017B01C0 +:1002D000C42F842F880FC5DF009749F4F801E0820E +:1002E000F1824C2F50E0440F551F428302C08EEF25 +:1002F0009FEFCF911F910F91FF90EF9008950F9373 +:10030000009781F0FC01002319F0013031F00DC09D +:10031000828161DF80E090E00AC0828113DF80E0AB +:1003200090E005C08FEF9FEF02C080E090E00F915A +:1003300008951F920F920FB60F9211242F933F939F +:100340004F935F936F937F938F939F93AF93BF93DD +:10035000EF93FF93E091083FF091093F309719F038 +:10036000809100080995FF91EF91BF91AF919F9106 +:100370008F917F916F915F914F913F912F910F904E +:100380000FBE0F901F901895CF93DF931F92CDB79C +:10039000DEB7AC01F894E0E0F8E02CE635E0208729 +:1003A000318793E0978390EC96836115710511F482 +:1003B000452B39F080E8809305086093083F7093DF +:1003C000093F80910408882324F4809100088983E0 +:1003D0008981E0E0F4E080E4818380E8828378949E +:1003E0000F90DF91CF910895E091433FE23029F1E2 +:1003F00028F4EE2341F0E13091F040C0E33059F1B0 +:10040000E430B9F13BC0F0E0EE53F147208191E0D8 +:10041000281390E09093433F81E090E00895F0E04E +:10042000EE53F1479081891302C082E001C080E061 +:100430008093433F81E090E00895F0E0EE53F14770 +:100440009081891302C083E001C080E08093433F24 +:1004500081E090E00895F0E0EE53F1479081891338 +:1004600002C084E001C080E08093433F81E090E0DF +:1004700008951092433F80E090E008951092433F2A +:1004800081E090E008959091423F9330D1F028F4BC +:10049000992341F0913079F047C09430D1F09530F4 +:1004A00029F142C0A1DF892B19F481E08093423FFA +:1004B0001092413F39C080930A3F83E08093423FCE +:1004C00033C0EAE0FFE31182828384E08093423FFD +:1004D0002BC0EAE0FFE321813281A901482BCA0148 +:1004E0008183928385E08093423F1EC09091413F7B +:1004F000E92FF0E0E65FF04C838381E0890F809381 +:10050000413F90910A3F891778F0E091463FF09182 +:10051000473F6DE07FE38091443F9091453F0995CF +:100520001092423F1092413F80E090E00895009782 +:1005300059F06115710541F08093443F9093453F18 +:100540006093463F7093473F0895FC0122813381B9 +:10055000232B21F0892B21F481E0089581E0089577 +:1005600080E008959F92AF92BF92CF92DF92EF9278 +:10057000FF920F931F93CF93DF93EC01942EEC81A6 +:10058000FD81A184B284C384D484E580F680078190 +:10059000108521813281438154818A819B814AD295 +:1005A00081E493E00197F1F70000EC81FD81A588DB +:1005B000B688C788D08CE188F2880389148925859C +:1005C000368547855089692D8A819B813CD181E49C +:1005D00093E00197F1F7000040E0692D8A819B814B +:1005E000B8D1DF91CF911F910F91FF90EF90DF90E5 +:1005F000CF90BF90AF909F900895CF93DF93EC0181 +:1006000060E08A819B81D3D181E493E00197F1F787 +:10061000000088E49FE38C839D836091063F709186 +:10062000073F49E180E090E03FDD40E060E0CE013F +:1006300099DF40E060E08A819B818BD181E493E087 +:100640000197F1F70000DF91CF910895CF93DF93E9 +:10065000EC017BDF811132C089819881891771F1AA +:10066000813019F08230B1F029C081E493E0019724 +:10067000F1F7000040E060E08A819B814AD181E48B +:1006800093E00197F1F7000041E061E08A819B81EE +:1006900040D114C081E493E00197F1F7000041E0FC +:1006A00060E08A819B8135D181E493E00197F1F785 +:1006B000000040E061E08A819B812BD1DF91CF91E6 +:1006C0000895CF93DF93EC0140DF811124C089812D +:1006D000813051F018F0823099F01DC08883CE012E +:1006E0008CDF81E0898317C0CE01B0DF89818883E8 +:1006F00063E080E0FCDC019771F482E089830BC049 +:10070000CE01A4DF8981888363E080E0F0DC892B5F +:1007100011F481E08983DF91CF910895FC01648118 +:100720007581FB018081882319F0813031F00895B3 +:1007300049E180E090E09ADC089549E180E290E0B0 +:1007400095DC0895FC0164837583E8DF80E090E028 +:100750000895CF93DF936115710571F0009761F0F3 +:10076000EC01198218826A837B8362EA73E0DFDE20 +:1007700063E472E0CE0108DEDF91CF910895CF935C +:10078000DF93CDB7DEB7CB55D109CDBFDEBF80E05B +:1007900090E07DDD40E660E070E0CE01019691DD05 +:1007A0004FE751E0BE016F5F7F4FCE010496A0D1AD +:1007B000BE016C5F7F4F81E69FE3CBDF81E69FE365 +:1007C00080DF2AE684E091E0215080409040E1F70C +:1007D00000C0F4CF8F929F92AF92BF92CF92DF92E0 +:1007E000EF92FF920F931F93CF93DF93EC01862E2E +:1007F0005A0168017901C80101961BD2982E192F60 +:10080000FC018192CF01A601B50134D3EA81FB81BD +:10081000A70196012F5F3F4F4F4F5F4F01E0692DBA +:10082000712F88819981099580E090E0DF91CF91C7 +:100830001F910F91FF90EF90DF90CF90BF90AF90FE +:100840009F908F900895AF92BF92CF92DF92EF92D8 +:10085000FF920F931F93FC01662319F0613041F161 +:100860004DC0437086A18C7F482B46A337A320A799 +:10087000F2A6E3A6D601C501072E7CE0B695A795A2 +:10088000979587957A95D1F7702D83708295807FA3 +:100890000370802B81A7B4A2A5A2AF014C5D5F4F6E +:1008A00008E010E020E030E06AE2CF0193DF26C0EC +:1008B000437086A58C7F482B46A737A720ABF2AAAA +:1008C000E3AAD601C501072E7CE0B695A7959795BA +:1008D00087957A95D1F7702D83708295807F03700C +:1008E000802B81ABB4A6A5A6AF01445D5F4F08E0A5 +:1008F00010E020E030E062E3CF016CDF80E090E0C8 +:100900001F910F91FF90EF90DF90CF90BF90AF902D +:1009100008950F931F93662319F0613039F00BC0CF +:10092000FC01278140FB20F9278305C0FC012781BA +:1009300040FB21F92783AC01495F5F4F01E010E0E4 +:1009400020E030E063E046DF80E090E01F910F910F +:1009500008950F931F93662319F06130A1F022C010 +:10096000FC01228540FB27F933853F7D33872F64C7 +:100970002287AC01465F5F4F01E010E020E030E0ED +:1009800060E128DF0FC0FC01238540FB27F92F66BB +:100990002387AC01455F5F4F01E010E020E030E0CD +:1009A00061E118DF80E090E01F910F9108950F93AF +:1009B0001F93662319F0613039F00AC0FC012185CC +:1009C0002B7F277F218704C0FC012185246021879C +:1009D000AC01475F5F4F01E010E020E030E060EFE6 +:1009E000F9DE80E090E01F910F9108950F931F931F +:1009F00031E0611101C030E0FC01E95AFF4F208174 +:100A000030FB25F9208331E0411101C030E0AC0119 +:100A1000495A5F4FFA01208130FB27F9208301E01A +:100A200010E020E030E061EBD5DE80E090E01F9147 +:100A30000F910895AF92BF92CF92DF92EF92FF9203 +:100A40000F931F93CF93DF93EC01662319F061306E +:100A500001F13DC042708E898C7F482B4E8B3F8BBD +:100A6000288FD801C70188279927AF70BB27FA8E36 +:100A7000EB8E8A2F8F70898FBC8AAD8A08E010E0D8 +:100A800020E030E0AE014C5E5F4F6AE1CE01A2DEB5 +:100A90001EC042708E8D8C7F482B4E8F3F8F28A3B7 +:100AA000D801C70188279927AF70BB27FAA2EBA20C +:100AB0008A2F8F7089A3BC8EAD8E08E010E020E0F5 +:100AC00030E0AE01445E5F4F62E2CE0183DE41E082 +:100AD00061E0CE018BDF80E090E0DF91CF911F914C +:100AE0000F91FF90EF90DF90CF90BF90AF9008955F +:100AF000EF92FF920F931F93CF93DF931F92CDB787 +:100B0000DEB7009709F485C06115710509F484C04A +:100B10004115510509F483C07C01DC016D937C9380 +:100B2000119712964D935C931397FC01349684E5CC +:100B3000DF011D928A95E9F78FEF898301E010E0CC +:100B400020E030E0AE014F5F5F4F63E0C70142DE5F +:100B500080E8898301E010E020E030E0AE014F5FE3 +:100B60005F4F60E1C70136DE01E010E020E030E0D9 +:100B7000AE014F5F5F4F61E1C7012CDE01E010E085 +:100B800020E030E0AE014F5F5F4F62E1C70122DE3F +:100B900001E010E020E030E0AE014F5F5F4F63E125 +:100BA000C70118DE01E010E020E030E0AE014F5F49 +:100BB0005F4F64E1C7010EDE01E010E020E030E0AD +:100BC000AE014F5F5F4F65E1C70104DE01E010E059 +:100BD00020E030E0AE014F5F5F4F66E1C701FADD14 +:100BE00001E010E020E030E0AE014F5F5F4F67E1D1 +:100BF000C701F0DD80EC898301E010E020E030E007 +:100C0000AE014F5F5F4F67EBC701E4DD80E090E02E +:100C100008C08FEF9FEF05C08FEF9FEF02C08FEFEF +:100C20009FEF0F90DF91CF911F910F91FF90EF9069 +:100C300008950F931F93CF93DF938230910510F4A3 +:100C400082E090E0E091693FF0916A3F20E030E07F +:100C5000A0E0B0E0309719F1408151810281138109 +:100C600048175907C8F08417950769F4109731F0B1 +:100C700012960C93129713961C9327C00093693F0A +:100C800010936A3F22C02115310519F0421753070E +:100C900018F49A01BD01EF01DF01F801DBCF211546 +:100CA0003105F9F0281B390B2430310580F48A8195 +:100CB0009B816115710521F0FB018283938304C040 +:100CC0008093693F90936A3FFE01329644C0FE01D3 +:100CD000E20FF31F819391932250310928833983C6 +:100CE0003AC02091673F3091683F232B41F4209117 +:100CF000023F3091033F2093673F3093683F20913C +:100D0000003F3091013F2115310541F42DB73EB729 +:100D10004091043F5091053F241B350BE091673F04 +:100D2000F091683FE217F307A0F42E1B3F0B281742 +:100D3000390778F0AC014E5F5F4F2417350748F054 +:100D40004E0F5F1F4093673F5093683F819391938D +:100D500002C0E0E0F0E0CF01DF91CF911F910F9151 +:100D60000895CF93DF93009709F481C0FC01329777 +:100D700012821382A091693FB0916A3F109781F46B +:100D800020813181820F931F2091673F3091683F0E +:100D90002817390751F5E093673FF093683F67C024 +:100DA000ED0120E030E0CE17DF0740F44A815B819F +:100DB0009E0141155105F1F0EA01F5CFC283D383BD +:100DC00040815181840F951FC817D90759F4888134 +:100DD0009981840F951F0296808391838A819B81DC +:100DE000828393832115310529F4E093693FF093C1 +:100DF0006A3F3DC0E901EA83FB8349915991C40FE1 +:100E0000D51FEC17FD0761F480819181840F951F38 +:100E10000296E90188839983828193818A839B83E7 +:100E2000E0E0F0E012968D919C911397009719F0F5 +:100E3000FD01DC01F7CF8D919C9111979D012E5FF3 +:100E40003F4F820F931F2091673F3091683F2817D3 +:100E5000390769F4309729F41092693F10926A3F7C +:100E600002C012821382A093673FB093683FDF9164 +:100E7000CF910895FB01DC0102C001900D92415019 +:100E80005040D8F7089503D0808199270895FC0138 +:100E9000E050FC4E0895262FAF93BF93E0E0F0E1C1 +:100EA000328131FDFDCFDC01A050BC4E2C932DE9E9 +:100EB00024BF23E020830196BF91AF910895F89459 +:020EC000FFCF62 +:050EC2004F5A31434DC1 +:080EC70000006B3F2000483FD2 :00000001FF diff --git a/storno_cqp6xx_digital_xtal/Debug/storno_cqp6xx_digital_xtal.lss b/storno_cqp6xx_digital_xtal/Debug/storno_cqp6xx_digital_xtal.lss index eed200e..e715c85 100644 --- a/storno_cqp6xx_digital_xtal/Debug/storno_cqp6xx_digital_xtal.lss +++ b/storno_cqp6xx_digital_xtal/Debug/storno_cqp6xx_digital_xtal.lss @@ -3,31 +3,33 @@ storno_cqp6xx_digital_xtal.elf: file format elf32-avr Sections: Idx Name Size VMA LMA File off Algn - 0 .data 0000001a 00803f00 0000019c 00000230 2**0 + 0 .data 00000008 00803f00 00000ec7 00000f7b 2**0 CONTENTS, ALLOC, LOAD, DATA - 1 .text 0000019c 00000000 00000000 00000094 2**1 + 1 .text 00000ec2 00000000 00000000 000000b4 2**1 CONTENTS, ALLOC, LOAD, READONLY, CODE - 2 .bss 0000001c 00803f1a 00803f1a 0000024a 2**0 + 2 .rodata 00000005 00008ec2 00000ec2 00000f76 2**0 + CONTENTS, ALLOC, LOAD, READONLY, DATA + 3 .bss 00000063 00803f08 00803f08 00000f83 2**0 ALLOC - 3 .comment 00000030 00000000 00000000 0000024a 2**0 + 4 .comment 00000030 00000000 00000000 00000f83 2**0 CONTENTS, READONLY - 4 .note.gnu.avr.deviceinfo 0000003c 00000000 00000000 0000027c 2**2 + 5 .note.gnu.avr.deviceinfo 0000003c 00000000 00000000 00000fb4 2**2 CONTENTS, READONLY - 5 .debug_aranges 000000c8 00000000 00000000 000002b8 2**3 + 6 .debug_aranges 00000260 00000000 00000000 00000ff0 2**3 CONTENTS, READONLY, DEBUGGING - 6 .debug_info 00001e3d 00000000 00000000 00000380 2**0 + 7 .debug_info 0000539c 00000000 00000000 00001250 2**0 CONTENTS, READONLY, DEBUGGING - 7 .debug_abbrev 00001565 00000000 00000000 000021bd 2**0 + 8 .debug_abbrev 00001d9f 00000000 00000000 000065ec 2**0 CONTENTS, READONLY, DEBUGGING - 8 .debug_line 000007d0 00000000 00000000 00003722 2**0 + 9 .debug_line 000018a4 00000000 00000000 0000838b 2**0 CONTENTS, READONLY, DEBUGGING - 9 .debug_frame 00000140 00000000 00000000 00003ef4 2**2 + 10 .debug_frame 00000694 00000000 00000000 00009c30 2**2 CONTENTS, READONLY, DEBUGGING - 10 .debug_str 00000e53 00000000 00000000 00004034 2**0 + 11 .debug_str 0000227c 00000000 00000000 0000a2c4 2**0 CONTENTS, READONLY, DEBUGGING - 11 .debug_loc 00000349 00000000 00000000 00004e87 2**0 + 12 .debug_loc 000023ef 00000000 00000000 0000c540 2**0 CONTENTS, READONLY, DEBUGGING - 12 .debug_ranges 00000058 00000000 00000000 000051d0 2**0 + 13 .debug_ranges 000001a0 00000000 00000000 0000e92f 2**0 CONTENTS, READONLY, DEBUGGING Disassembly of section .text: @@ -55,7 +57,7 @@ Disassembly of section .text: 26: 21 c0 rjmp .+66 ; 0x6a <__bad_interrupt> 28: 20 c0 rjmp .+64 ; 0x6a <__bad_interrupt> 2a: 1f c0 rjmp .+62 ; 0x6a <__bad_interrupt> - 2c: 42 c0 rjmp .+132 ; 0xb2 <__vector_22> + 2c: 82 c1 rjmp .+772 ; 0x332 <__vector_22> 2e: 1d c0 rjmp .+58 ; 0x6a <__bad_interrupt> 30: 1c c0 rjmp .+56 ; 0x6a <__bad_interrupt> 32: 1b c0 rjmp .+54 ; 0x6a <__bad_interrupt> @@ -72,18 +74,18 @@ Disassembly of section .text: 40: 1f e3 ldi r17, 0x3F ; 63 42: a0 e0 ldi r26, 0x00 ; 0 44: bf e3 ldi r27, 0x3F ; 63 - 46: ec e9 ldi r30, 0x9C ; 156 - 48: f1 e0 ldi r31, 0x01 ; 1 + 46: e7 ec ldi r30, 0xC7 ; 199 + 48: fe e0 ldi r31, 0x0E ; 14 4a: 02 c0 rjmp .+4 ; 0x50 <__do_copy_data+0x10> 4c: 05 90 lpm r0, Z+ 4e: 0d 92 st X+, r0 - 50: aa 31 cpi r26, 0x1A ; 26 + 50: a8 30 cpi r26, 0x08 ; 8 52: b1 07 cpc r27, r17 54: d9 f7 brne .-10 ; 0x4c <__do_copy_data+0xc> 00000056 <__do_clear_bss>: 56: 2f e3 ldi r18, 0x3F ; 63 - 58: aa e1 ldi r26, 0x1A ; 26 + 58: a8 e0 ldi r26, 0x08 ; 8 5a: bf e3 ldi r27, 0x3F ; 63 5c: 01 c0 rjmp .+2 ; 0x60 <.do_clear_bss_start> @@ -91,11 +93,11 @@ Disassembly of section .text: 5e: 1d 92 st X+, r1 00000060 <.do_clear_bss_start>: - 60: a6 33 cpi r26, 0x36 ; 54 + 60: ab 36 cpi r26, 0x6B ; 107 62: b2 07 cpc r27, r18 64: e1 f7 brne .-8 ; 0x5e <.do_clear_bss_loop> - 66: 50 d0 rcall .+160 ; 0x108
- 68: 97 c0 rjmp .+302 ; 0x198 <_exit> + 66: 8b d3 rcall .+1814 ; 0x77e
+ 68: 2a c7 rjmp .+3668 ; 0xebe <_exit> 0000006a <__bad_interrupt>: 6a: ca cf rjmp .-108 ; 0x0 <__vectors> @@ -120,221 +122,2565 @@ void cm_EEPROM_write(uint8_t* address, uint8_t *data, uint8_t length) { for (uint8_t i = 0; i < length; i++) { 7e: c0 e0 ldi r28, 0x00 ; 0 - 80: 07 c0 rjmp .+14 ; 0x90 <__EEPROM_REGION_LENGTH__+0x10> + 80: 0a c0 rjmp .+20 ; 0x96 <__EEPROM_REGION_LENGTH__+0x16> - eeprom_write_byte(address,data[i]); - 82: f8 01 movw r30, r16 - 84: ec 0f add r30, r28 - 86: f1 1d adc r31, r1 - 88: 60 81 ld r22, Z - 8a: c7 01 movw r24, r14 - 8c: 71 d0 rcall .+226 ; 0x170 + eeprom_write_byte(address+i,data[i]); + 82: 8c 2f mov r24, r28 + 84: 90 e0 ldi r25, 0x00 ; 0 + 86: f8 01 movw r30, r16 + 88: e8 0f add r30, r24 + 8a: f9 1f adc r31, r25 + 8c: 60 81 ld r22, Z + 8e: 8e 0d add r24, r14 + 90: 9f 1d adc r25, r15 + 92: 01 d7 rcall .+3586 ; 0xe96 #include void cm_EEPROM_write(uint8_t* address, uint8_t *data, uint8_t length) { for (uint8_t i = 0; i < length; i++) { - 8e: cf 5f subi r28, 0xFF ; 255 - 90: cd 17 cp r28, r29 - 92: b8 f3 brcs .-18 ; 0x82 <__EEPROM_REGION_LENGTH__+0x2> + 94: cf 5f subi r28, 0xFF ; 255 + 96: cd 17 cp r28, r29 + 98: a0 f3 brcs .-24 ; 0x82 <__EEPROM_REGION_LENGTH__+0x2> //NVMCTRL.CTRLA = NVMCTRL_CMD_PAGEERASEWRITE_gc; /* Wait until the write is complete */ //while (NVMCTRL.STATUS & NVMCTRL_EEBUSY_bm); } } - 94: df 91 pop r29 - 96: cf 91 pop r28 - 98: 1f 91 pop r17 - 9a: 0f 91 pop r16 - 9c: ff 90 pop r15 - 9e: ef 90 pop r14 - a0: 08 95 ret + 9a: df 91 pop r29 + 9c: cf 91 pop r28 + 9e: 1f 91 pop r17 + a0: 0f 91 pop r16 + a2: ff 90 pop r15 + a4: ef 90 pop r14 + a6: 08 95 ret -000000a2 : +000000a8 : void cm_EEPROM_read(uint8_t* address, uint8_t *data, uint8_t length) { - a2: cf 93 push r28 - a4: df 93 push r29 - a6: eb 01 movw r28, r22 + a8: cf 92 push r12 + aa: df 92 push r13 + ac: ef 92 push r14 + ae: ff 92 push r15 + b0: 0f 93 push r16 + b2: 1f 93 push r17 + b4: cf 93 push r28 + b6: df 93 push r29 + b8: 6c 01 movw r12, r24 + ba: 7b 01 movw r14, r22 + bc: d4 2f mov r29, r20 - data[0] = eeprom_read_byte(address); - a8: 5b d0 rcall .+182 ; 0x160 - aa: 88 83 st Y, r24 + for (uint8_t i = 0; i < length; i++) { + be: c0 e0 ldi r28, 0x00 ; 0 + c0: 0b c0 rjmp .+22 ; 0xd8 + data[i] = eeprom_read_byte(address+i); + c2: 8c 2f mov r24, r28 + c4: 90 e0 ldi r25, 0x00 ; 0 + c6: 87 01 movw r16, r14 + c8: 08 0f add r16, r24 + ca: 19 1f adc r17, r25 + cc: 8c 0d add r24, r12 + ce: 9d 1d adc r25, r13 + d0: da d6 rcall .+3508 ; 0xe86 + d2: f8 01 movw r30, r16 + d4: 80 83 st Z, r24 +} + + +void cm_EEPROM_read(uint8_t* address, uint8_t *data, uint8_t length) { + + for (uint8_t i = 0; i < length; i++) { + d6: cf 5f subi r28, 0xFF ; 255 + d8: cd 17 cp r28, r29 + da: 98 f3 brcs .-26 ; 0xc2 // Directly read the data from NVMCTRL.DATA data[i] = NVMCTRL.DATA; }*/ } - ac: df 91 pop r29 - ae: cf 91 pop r28 - b0: 08 95 ret + dc: df 91 pop r29 + de: cf 91 pop r28 + e0: 1f 91 pop r17 + e2: 0f 91 pop r16 + e4: ff 90 pop r15 + e6: ef 90 pop r14 + e8: df 90 pop r13 + ea: cf 90 pop r12 + ec: 08 95 ret -000000b2 <__vector_22>: +000000ee : + return 0; +} + +int gpio_get_level(avr_gpio_ports port, uint8_t pin){ + + switch (port) + ee: 81 11 cpse r24, r1 + f0: 0d c0 rjmp .+26 ; 0x10c <__DATA_REGION_LENGTH__+0xc> + { + + case GPIO_PORTA: + return (PORTA.IN & (1 << pin)) ? 1 : 0; + f2: 20 91 08 04 lds r18, 0x0408 ; 0x800408 + f6: 30 e0 ldi r19, 0x00 ; 0 + f8: 02 c0 rjmp .+4 ; 0xfe + fa: 35 95 asr r19 + fc: 27 95 ror r18 + fe: 6a 95 dec r22 + 100: e2 f7 brpl .-8 ; 0xfa + 102: 81 e0 ldi r24, 0x01 ; 1 + 104: 20 ff sbrs r18, 0 + 106: 80 e0 ldi r24, 0x00 ; 0 + 108: 90 e0 ldi r25, 0x00 ; 0 + 10a: 08 95 ret + break; + + default: + break; + } + return 0; + 10c: 80 e0 ldi r24, 0x00 ; 0 + 10e: 90 e0 ldi r25, 0x00 ; 0 +} + 110: 08 95 ret + +00000112 : + *data = TWI0.MDATA; + + // Send stop condition + TWI0.MCTRLB = TWI_MCMD_STOP_gc; + return 0; // Success +} + 112: e0 e1 ldi r30, 0x10 ; 16 + 114: f8 e0 ldi r31, 0x08 ; 8 + 116: 84 81 ldd r24, Z+4 ; 0x04 + 118: 88 60 ori r24, 0x08 ; 8 + 11a: 84 83 std Z+4, r24 ; 0x04 + 11c: 81 e0 ldi r24, 0x01 ; 1 + 11e: 85 83 std Z+5, r24 ; 0x05 + 120: 08 95 ret + +00000122 : + 122: 80 93 17 08 sts 0x0817, r24 ; 0x800817 + 126: 80 91 15 08 lds r24, 0x0815 ; 0x800815 + 12a: 80 7c andi r24, 0xC0 ; 192 + 12c: e1 f3 breq .-8 ; 0x126 + 12e: 90 91 15 08 lds r25, 0x0815 ; 0x800815 + 132: 89 2f mov r24, r25 + 134: 80 71 andi r24, 0x10 ; 16 + 136: 94 ff sbrs r25, 4 + 138: 04 c0 rjmp .+8 ; 0x142 + 13a: 83 e0 ldi r24, 0x03 ; 3 + 13c: 80 93 14 08 sts 0x0814, r24 ; 0x800814 + 140: 81 e0 ldi r24, 0x01 ; 1 + 142: 08 95 ret + +00000144 : + +int i2c_write(uint8_t dev_addr, void *data, uint32_t len){ + 144: cf 92 push r12 + 146: df 92 push r13 + 148: ef 92 push r14 + 14a: ff 92 push r15 + 14c: cf 93 push r28 + 14e: df 93 push r29 + 150: eb 01 movw r28, r22 + 152: 69 01 movw r12, r18 + 154: 7a 01 movw r14, r20 + + // Check length + if(len == 0) return CM_I2C_NOK; + 156: 23 2b or r18, r19 + 158: 24 2b or r18, r20 + 15a: 25 2b or r18, r21 + 15c: 81 f1 breq .+96 ; 0x1be + + // 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; + 15e: e1 df rcall .-62 ; 0x122 + 160: 81 11 cpse r24, r1 + 162: 30 c0 rjmp .+96 ; 0x1c4 + + do + { + // Prepare and send new data. + TWI0.MDATA = *dp++; + 164: 9e 01 movw r18, r28 + 166: 2f 5f subi r18, 0xFF ; 255 + 168: 3f 4f sbci r19, 0xFF ; 255 + 16a: 88 81 ld r24, Y + 16c: 80 93 18 08 sts 0x0818, r24 ; 0x800818 + + while (!(TWI0.MSTATUS & TWI_WIF_bm)); + 170: 80 91 15 08 lds r24, 0x0815 ; 0x800815 + 174: 86 ff sbrs r24, 6 + 176: fc cf rjmp .-8 ; 0x170 + + if (TWI0.MSTATUS & TWI_RXACK_bm) { + 178: 80 91 15 08 lds r24, 0x0815 ; 0x800815 + 17c: 84 ff sbrs r24, 4 + 17e: 06 c0 rjmp .+12 ; 0x18c + // NACK received + TWI0.MCTRLB = TWI_MCMD_STOP_gc; // Send stop condition + 180: 83 e0 ldi r24, 0x03 ; 3 + 182: 80 93 14 08 sts 0x0814, r24 ; 0x800814 + return 1; // Error: NACK received + 186: 81 e0 ldi r24, 0x01 ; 1 + 188: 90 e0 ldi r25, 0x00 ; 0 + 18a: 1e c0 rjmp .+60 ; 0x1c8 + } + + // Check for bus error and reset if it happens.. + if (TWI0.MSTATUS & (TWI_ARBLOST_bm | TWI_BUSERR_bm)) { + 18c: 80 91 15 08 lds r24, 0x0815 ; 0x800815 + 190: 8c 70 andi r24, 0x0C ; 12 + 192: 21 f0 breq .+8 ; 0x19c + i2c_reset(); + 194: be df rcall .-132 ; 0x112 + return 1; + 196: 81 e0 ldi r24, 0x01 ; 1 + 198: 90 e0 ldi r25, 0x00 ; 0 + 19a: 16 c0 rjmp .+44 ; 0x1c8 + } + + if (TWI0.MSTATUS & TWI_RXACK_bm) + 19c: 80 91 15 08 lds r24, 0x0815 ; 0x800815 + 1a0: 84 fd sbrc r24, 4 + 1a2: 07 c0 rjmp .+14 ; 0x1b2 + break; + + }while(--len); + 1a4: 81 e0 ldi r24, 0x01 ; 1 + 1a6: c8 1a sub r12, r24 + 1a8: d1 08 sbc r13, r1 + 1aa: e1 08 sbc r14, r1 + 1ac: f1 08 sbc r15, r1 + if(i2c_write_devAddr(dev_addr) != CM_I2C_OK)return CM_I2C_NOK; + + do + { + // Prepare and send new data. + TWI0.MDATA = *dp++; + 1ae: e9 01 movw r28, r18 + } + + if (TWI0.MSTATUS & TWI_RXACK_bm) + break; + + }while(--len); + 1b0: c9 f6 brne .-78 ; 0x164 + + // Send stop condition + TWI0.MCTRLB = TWI_MCMD_STOP_gc; + 1b2: 83 e0 ldi r24, 0x03 ; 3 + 1b4: 80 93 14 08 sts 0x0814, r24 ; 0x800814 + + + return CM_I2C_OK; + 1b8: 80 e0 ldi r24, 0x00 ; 0 + 1ba: 90 e0 ldi r25, 0x00 ; 0 + 1bc: 05 c0 rjmp .+10 ; 0x1c8 +} + +int i2c_write(uint8_t dev_addr, void *data, uint32_t len){ + + // Check length + if(len == 0) return CM_I2C_NOK; + 1be: 8f ef ldi r24, 0xFF ; 255 + 1c0: 9f ef ldi r25, 0xFF ; 255 + 1c2: 02 c0 rjmp .+4 ; 0x1c8 + + // Make a pointer to data + uint8_t *dp = data; + + // Send register address to I2C device, we would like to read from.. + if(i2c_write_devAddr(dev_addr) != CM_I2C_OK)return CM_I2C_NOK; + 1c4: 8f ef ldi r24, 0xFF ; 255 + 1c6: 9f ef ldi r25, 0xFF ; 255 + // Send stop condition + TWI0.MCTRLB = TWI_MCMD_STOP_gc; + + + return CM_I2C_OK; +} + 1c8: df 91 pop r29 + 1ca: cf 91 pop r28 + 1cc: ff 90 pop r15 + 1ce: ef 90 pop r14 + 1d0: df 90 pop r13 + 1d2: cf 90 pop r12 + 1d4: 08 95 ret + +000001d6 : + +int i2c_read(uint8_t dev_addr, void *data, uint32_t len){ + 1d6: cf 92 push r12 + 1d8: df 92 push r13 + 1da: ef 92 push r14 + 1dc: ff 92 push r15 + 1de: cf 93 push r28 + 1e0: df 93 push r29 + 1e2: eb 01 movw r28, r22 + 1e4: 69 01 movw r12, r18 + 1e6: 7a 01 movw r14, r20 + + uint8_t *dp = data; + + if (len == 0) + 1e8: 23 2b or r18, r19 + 1ea: 24 2b or r18, r20 + 1ec: 25 2b or r18, r21 + 1ee: 69 f1 breq .+90 ; 0x24a + 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; + 1f0: 81 60 ori r24, 0x01 ; 1 + 1f2: 97 df rcall .-210 ; 0x122 + 1f4: 88 23 and r24, r24 + 1f6: c9 f0 breq .+50 ; 0x22a + 1f8: 2b c0 rjmp .+86 ; 0x250 + + while (len--) { + + while (!(TWI0.MSTATUS & (TWI_WIF_bm | TWI_RIF_bm))); + 1fa: 80 91 15 08 lds r24, 0x0815 ; 0x800815 + 1fe: 80 7c andi r24, 0xC0 ; 192 + 200: e1 f3 breq .-8 ; 0x1fa + + *dp++ = TWI0.MDATA; + 202: ce 01 movw r24, r28 + 204: 01 96 adiw r24, 0x01 ; 1 + 206: 20 91 18 08 lds r18, 0x0818 ; 0x800818 + 20a: 28 83 st Y, r18 + if (len == 0) { + 20c: 41 15 cp r20, r1 + 20e: 51 05 cpc r21, r1 + 210: 61 05 cpc r22, r1 + 212: 71 05 cpc r23, r1 + 214: 21 f4 brne .+8 ; 0x21e + TWI0.MCTRLB = TWI_ACKACT_NACK_gc; + 216: 24 e0 ldi r18, 0x04 ; 4 + 218: 20 93 14 08 sts 0x0814, r18 ; 0x800814 + 21c: 03 c0 rjmp .+6 ; 0x224 + } else { + TWI0.MCTRLB = TWI_ACKACT_ACK_gc | TWI_MCMD_RECVTRANS_gc; + 21e: 22 e0 ldi r18, 0x02 ; 2 + 220: 20 93 14 08 sts 0x0814, r18 ; 0x800814 + 224: 6a 01 movw r12, r20 + 226: 7b 01 movw r14, r22 + + + return CM_I2C_OK; +} + +int i2c_read(uint8_t dev_addr, void *data, uint32_t len){ + 228: 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--) { + 22a: b7 01 movw r22, r14 + 22c: a6 01 movw r20, r12 + 22e: 41 50 subi r20, 0x01 ; 1 + 230: 51 09 sbc r21, r1 + 232: 61 09 sbc r22, r1 + 234: 71 09 sbc r23, r1 + 236: cd 28 or r12, r13 + 238: ce 28 or r12, r14 + 23a: cf 28 or r12, r15 + 23c: f1 f6 brne .-68 ; 0x1fa + TWI0.MCTRLB = TWI_ACKACT_ACK_gc | TWI_MCMD_RECVTRANS_gc; + } + } + + // Send stop condition + TWI0.MCTRLB = TWI_MCMD_STOP_gc; + 23e: 83 e0 ldi r24, 0x03 ; 3 + 240: 80 93 14 08 sts 0x0814, r24 ; 0x800814 + + return 0; + 244: 80 e0 ldi r24, 0x00 ; 0 + 246: 90 e0 ldi r25, 0x00 ; 0 + 248: 05 c0 rjmp .+10 ; 0x254 +int i2c_read(uint8_t dev_addr, void *data, uint32_t len){ + + uint8_t *dp = data; + + if (len == 0) + return 1; + 24a: 81 e0 ldi r24, 0x01 ; 1 + 24c: 90 e0 ldi r25, 0x00 ; 0 + 24e: 02 c0 rjmp .+4 ; 0x254 + + // 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; + 250: 8f ef ldi r24, 0xFF ; 255 + 252: 9f ef ldi r25, 0xFF ; 255 + TWI0.MCTRLB = TWI_MCMD_STOP_gc; + + return 0; + + +} + 254: df 91 pop r29 + 256: cf 91 pop r28 + 258: ff 90 pop r15 + 25a: ef 90 pop r14 + 25c: df 90 pop r13 + 25e: cf 90 pop r12 + 260: 08 95 ret + +00000262 : + +int i2c_IsDeviceReady(uint8_t dev_addr){ + + TWI0.MADDR = dev_addr | 0; + 262: 80 93 17 08 sts 0x0817, r24 ; 0x800817 + + // Wait for acknowledgment + while (!(TWI0.MSTATUS & TWI_WIF_bm)); + 266: 80 91 15 08 lds r24, 0x0815 ; 0x800815 + 26a: 86 ff sbrs r24, 6 + 26c: fc cf rjmp .-8 ; 0x266 + + if (TWI0.MSTATUS & TWI_RXACK_bm) { + 26e: 80 91 15 08 lds r24, 0x0815 ; 0x800815 + 272: 84 ff sbrs r24, 4 + 274: 06 c0 rjmp .+12 ; 0x282 + // NACK received + TWI0.MCTRLB = TWI_MCMD_STOP_gc; // Send stop condition + 276: 83 e0 ldi r24, 0x03 ; 3 + 278: 80 93 14 08 sts 0x0814, r24 ; 0x800814 + return 1; // Error: NACK received + 27c: 81 e0 ldi r24, 0x01 ; 1 + 27e: 90 e0 ldi r25, 0x00 ; 0 + 280: 08 95 ret + } + + // Send stop condition + TWI0.MCTRLB = TWI_MCMD_STOP_gc; + 282: 83 e0 ldi r24, 0x03 ; 3 + 284: 80 93 14 08 sts 0x0814, r24 ; 0x800814 + return CM_I2C_OK; // Success + 288: 80 e0 ldi r24, 0x00 ; 0 + 28a: 90 e0 ldi r25, 0x00 ; 0 + +} + 28c: 08 95 ret + +0000028e : + + +int cm_i2c_init(void *i2c_inst){ + + PORTA.DIR &= ~(1 << 2); // Clear bit 2 (PA2) + 28e: e0 e0 ldi r30, 0x00 ; 0 + 290: f4 e0 ldi r31, 0x04 ; 4 + 292: 80 81 ld r24, Z + 294: 8b 7f andi r24, 0xFB ; 251 + 296: 80 83 st Z, r24 + PORTA.DIR &= ~(1 << 3); // Clear bit 3 (PA3) + 298: 80 81 ld r24, Z + 29a: 87 7f andi r24, 0xF7 ; 247 + 29c: 80 83 st Z, r24 + + // Set the baud rate for 100kHz with a typical rise time of 300 ns + TWI0.MBAUD = 11; + 29e: a0 e1 ldi r26, 0x10 ; 16 + 2a0: b8 e0 ldi r27, 0x08 ; 8 + 2a2: 8b e0 ldi r24, 0x0B ; 11 + 2a4: 16 96 adiw r26, 0x06 ; 6 + 2a6: 8c 93 st X, r24 + 2a8: 16 97 sbiw r26, 0x06 ; 6 + + // Enable the TWI master and set it to enable operation + TWI0.MCTRLA = TWI_ENABLE_bm; + 2aa: 81 e0 ldi r24, 0x01 ; 1 + 2ac: 13 96 adiw r26, 0x03 ; 3 + 2ae: 8c 93 st X, r24 + 2b0: 13 97 sbiw r26, 0x03 ; 3 + + /* Set bus state idle */ + TWI0.MSTATUS = TWI_BUSSTATE_IDLE_gc; + 2b2: 15 96 adiw r26, 0x05 ; 5 + 2b4: 8c 93 st X, r24 + + // Enable the internal pull-ups for PA2 (SDA) and PA3 (SCL) + PORTA.PIN2CTRL = PORT_PULLUPEN_bm; + 2b6: 88 e0 ldi r24, 0x08 ; 8 + 2b8: 82 8b std Z+18, r24 ; 0x12 + PORTA.PIN3CTRL = PORT_PULLUPEN_bm; + 2ba: 83 8b std Z+19, r24 ; 0x13 + return CM_I2C_OK; +} + 2bc: 80 e0 ldi r24, 0x00 ; 0 + 2be: 90 e0 ldi r25, 0x00 ; 0 + 2c0: 08 95 ret + +000002c2 : + + + +int cm_i2c_addDev(cm_i2c_device_t *inst, void *i2c_inst, uint8_t dev_addr){ + 2c2: ef 92 push r14 + 2c4: ff 92 push r15 + 2c6: 0f 93 push r16 + 2c8: 1f 93 push r17 + 2ca: cf 93 push r28 + 2cc: 8c 01 movw r16, r24 + 2ce: 7b 01 movw r14, r22 + 2d0: c4 2f mov r28, r20 + + //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; + 2d2: 84 2f mov r24, r20 + 2d4: 88 0f add r24, r24 + 2d6: c5 df rcall .-118 ; 0x262 + 2d8: 00 97 sbiw r24, 0x00 ; 0 + 2da: 49 f4 brne .+18 ; 0x2ee + + // add device info if device responds! + inst->i2c_transfer_inst = i2c_inst; + 2dc: f8 01 movw r30, r16 + 2de: e0 82 st Z, r14 + 2e0: f1 82 std Z+1, r15 ; 0x01 + inst->dev_addr = (dev_addr << 1) & 0b11111110; + 2e2: 4c 2f mov r20, r28 + 2e4: 50 e0 ldi r21, 0x00 ; 0 + 2e6: 44 0f add r20, r20 + 2e8: 55 1f adc r21, r21 + 2ea: 42 83 std Z+2, r20 ; 0x02 + + return CM_I2C_OK; + 2ec: 02 c0 rjmp .+4 ; 0x2f2 +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; + 2ee: 8e ef ldi r24, 0xFE ; 254 + 2f0: 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; +} + 2f2: cf 91 pop r28 + 2f4: 1f 91 pop r17 + 2f6: 0f 91 pop r16 + 2f8: ff 90 pop r15 + 2fa: ef 90 pop r14 + 2fc: 08 95 ret + +000002fe : + + +int cm_i2c_transfer(cm_i2c_device_t *inst, uint8_t *data, uint32_t len, i2c_setget_cm_t set_get){ + 2fe: 0f 93 push r16 + + if(inst == NULL) return CM_I2C_NOK; + 300: 00 97 sbiw r24, 0x00 ; 0 + 302: 81 f0 breq .+32 ; 0x324 + 304: 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){ + 306: 00 23 and r16, r16 + 308: 19 f0 breq .+6 ; 0x310 + 30a: 01 30 cpi r16, 0x01 ; 1 + 30c: 31 f0 breq .+12 ; 0x31a + 30e: 0d c0 rjmp .+26 ; 0x32a + + 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); + 310: 82 81 ldd r24, Z+2 ; 0x02 + 312: 61 df rcall .-318 ; 0x1d6 + break; + + + } + + return CM_I2C_OK; + 314: 80 e0 ldi r24, 0x00 ; 0 + 316: 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; + 318: 0a c0 rjmp .+20 ; 0x32e + + 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); + 31a: 82 81 ldd r24, Z+2 ; 0x02 + 31c: 13 df rcall .-474 ; 0x144 + break; + + + } + + return CM_I2C_OK; + 31e: 80 e0 ldi r24, 0x00 ; 0 + 320: 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; + 322: 05 c0 rjmp .+10 ; 0x32e +} + + +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; + 324: 8f ef ldi r24, 0xFF ; 255 + 326: 9f ef ldi r25, 0xFF ; 255 + 328: 02 c0 rjmp .+4 ; 0x32e + break; + + + } + + return CM_I2C_OK; + 32a: 80 e0 ldi r24, 0x00 ; 0 + 32c: 90 e0 ldi r25, 0x00 ; 0 + +} + 32e: 0f 91 pop r16 + 330: 08 95 ret + +00000332 <__vector_22>: #define BAUD_RATE 9600 static void *s_inst = NULL; get_UART_Event_fpt uart_rx_evt_fpt = NULL; ISR(USART0_RXC_vect) { - b2: 1f 92 push r1 - b4: 0f 92 push r0 - b6: 0f b6 in r0, 0x3f ; 63 - b8: 0f 92 push r0 - ba: 11 24 eor r1, r1 - bc: 2f 93 push r18 - be: 3f 93 push r19 - c0: 4f 93 push r20 - c2: 5f 93 push r21 - c4: 6f 93 push r22 - c6: 7f 93 push r23 - c8: 8f 93 push r24 - ca: 9f 93 push r25 - cc: af 93 push r26 - ce: bf 93 push r27 - d0: ef 93 push r30 - d2: ff 93 push r31 + 332: 1f 92 push r1 + 334: 0f 92 push r0 + 336: 0f b6 in r0, 0x3f ; 63 + 338: 0f 92 push r0 + 33a: 11 24 eor r1, r1 + 33c: 2f 93 push r18 + 33e: 3f 93 push r19 + 340: 4f 93 push r20 + 342: 5f 93 push r21 + 344: 6f 93 push r22 + 346: 7f 93 push r23 + 348: 8f 93 push r24 + 34a: 9f 93 push r25 + 34c: af 93 push r26 + 34e: bf 93 push r27 + 350: ef 93 push r30 + 352: ff 93 push r31 // Read received data if(uart_rx_evt_fpt != NULL) uart_rx_evt_fpt(USART0.RXDATAL); - d4: e0 91 1a 3f lds r30, 0x3F1A ; 0x803f1a <__data_end> - d8: f0 91 1b 3f lds r31, 0x3F1B ; 0x803f1b <__data_end+0x1> - dc: 30 97 sbiw r30, 0x00 ; 0 - de: 19 f0 breq .+6 ; 0xe6 <__vector_22+0x34> - e0: 80 91 00 08 lds r24, 0x0800 ; 0x800800 <__RODATA_PM_OFFSET__+0x7f8800> - e4: 09 95 icall + 354: e0 91 08 3f lds r30, 0x3F08 ; 0x803f08 <__data_end> + 358: f0 91 09 3f lds r31, 0x3F09 ; 0x803f09 <__data_end+0x1> + 35c: 30 97 sbiw r30, 0x00 ; 0 + 35e: 19 f0 breq .+6 ; 0x366 <__vector_22+0x34> + 360: 80 91 00 08 lds r24, 0x0800 ; 0x800800 + 364: 09 95 icall //cm_uart_send(USART0.RXDATAL); } - e6: ff 91 pop r31 - e8: ef 91 pop r30 - ea: bf 91 pop r27 - ec: af 91 pop r26 - ee: 9f 91 pop r25 - f0: 8f 91 pop r24 - f2: 7f 91 pop r23 - f4: 6f 91 pop r22 - f6: 5f 91 pop r21 - f8: 4f 91 pop r20 - fa: 3f 91 pop r19 - fc: 2f 91 pop r18 - fe: 0f 90 pop r0 - 100: 0f be out 0x3f, r0 ; 63 - 102: 0f 90 pop r0 - 104: 1f 90 pop r1 - 106: 18 95 reti + 366: ff 91 pop r31 + 368: ef 91 pop r30 + 36a: bf 91 pop r27 + 36c: af 91 pop r26 + 36e: 9f 91 pop r25 + 370: 8f 91 pop r24 + 372: 7f 91 pop r23 + 374: 6f 91 pop r22 + 376: 5f 91 pop r21 + 378: 4f 91 pop r20 + 37a: 3f 91 pop r19 + 37c: 2f 91 pop r18 + 37e: 0f 90 pop r0 + 380: 0f be out 0x3f, r0 ; 63 + 382: 0f 90 pop r0 + 384: 1f 90 pop r1 + 386: 18 95 reti -00000108
: - -int main(void) -{ +00000388 : + + +void cm_uart_init(void *rtx_inst, get_UART_Event_fpt uart_rx_evt_fp){ + 388: cf 93 push r28 + 38a: df 93 push r29 + 38c: 1f 92 push r1 + 38e: cd b7 in r28, 0x3d ; 61 + 390: de b7 in r29, 0x3e ; 62 + 392: ac 01 movw r20, r24 + //For interrupt-driven USART operation, global interrupts must be disabled during the initialization + cli(); + 394: f8 94 cli + + // Calculate and set baud rate register (3.33 MHz / (16 * 9600) - 1) + uint16_t baud = 1388;//(F_CPU / (16 * BAUD_RATE)) - 1; + USART0.BAUD = baud; + 396: e0 e0 ldi r30, 0x00 ; 0 + 398: f8 e0 ldi r31, 0x08 ; 8 + 39a: 2c e6 ldi r18, 0x6C ; 108 + 39c: 35 e0 ldi r19, 0x05 ; 5 + 39e: 20 87 std Z+8, r18 ; 0x08 + 3a0: 31 87 std Z+9, r19 ; 0x09 - cm_EEPROM_read(0x00,data,1); - 108: 41 e0 ldi r20, 0x01 ; 1 - 10a: 6d e1 ldi r22, 0x1D ; 29 - 10c: 7f e3 ldi r23, 0x3F ; 63 - 10e: 80 e0 ldi r24, 0x00 ; 0 - 110: 90 e0 ldi r25, 0x00 ; 0 - 112: c7 df rcall .-114 ; 0xa2 + // Configure USART0 for 8-bit data, no parity, 1 stop bit + USART0.CTRLC = USART_CMODE_ASYNCHRONOUS_gc | // Asynchronous mode + 3a2: 93 e0 ldi r25, 0x03 ; 3 + 3a4: 97 83 std Z+7, r25 ; 0x07 + USART_CHSIZE_8BIT_gc | // 8-bit character size + USART_PMODE_DISABLED_gc; // No parity + + // Enable receiver, transmitter, and receive complete interrupt + USART0.CTRLB = USART_RXEN_bm | // Enable receiver + 3a6: 90 ec ldi r25, 0xC0 ; 192 + 3a8: 96 83 std Z+6, r25 ; 0x06 + USART_TXEN_bm; // Enable transmitter + + if((uart_rx_evt_fp != NULL) || (rtx_inst != NULL)){ + 3aa: 61 15 cp r22, r1 + 3ac: 71 05 cpc r23, r1 + 3ae: 11 f4 brne .+4 ; 0x3b4 + 3b0: 45 2b or r20, r21 + 3b2: 39 f0 breq .+14 ; 0x3c2 + // Enable RX interrupt + USART0.CTRLA = USART_RXCIE_bm; // Enable receive interrupt + 3b4: 80 e8 ldi r24, 0x80 ; 128 + 3b6: 80 93 05 08 sts 0x0805, r24 ; 0x800805 + + s_inst = rtx_inst; + uart_rx_evt_fpt = uart_rx_evt_fp; + 3ba: 60 93 08 3f sts 0x3F08, r22 ; 0x803f08 <__data_end> + 3be: 70 93 09 3f sts 0x3F09, r23 ; 0x803f09 <__data_end+0x1> + } + + + // Clear any existing receive complete interrupt flag by reading RXDATAL + if (USART0.STATUS & USART_RXCIF_bm) { + 3c2: 80 91 04 08 lds r24, 0x0804 ; 0x800804 + 3c6: 88 23 and r24, r24 + 3c8: 24 f4 brge .+8 ; 0x3d2 + volatile uint8_t dummy = USART0.RXDATAL; // Read RXDATAL to clear the flag + 3ca: 80 91 00 08 lds r24, 0x0800 ; 0x800800 + 3ce: 89 83 std Y+1, r24 ; 0x01 + (void)dummy; // Silence unused variable warning + 3d0: 89 81 ldd r24, Y+1 ; 0x01 + } + + PORTA.DIRSET = (1 << 6); // Set PA1 (TX) as output + 3d2: e0 e0 ldi r30, 0x00 ; 0 + 3d4: f4 e0 ldi r31, 0x04 ; 4 + 3d6: 80 e4 ldi r24, 0x40 ; 64 + 3d8: 81 83 std Z+1, r24 ; 0x01 + PORTA.DIRCLR = (1 << 7); // Set PA2 (RX) as input + 3da: 80 e8 ldi r24, 0x80 ; 128 + 3dc: 82 83 std Z+2, r24 ; 0x02 + // Enable global interrupts + sei(); + 3de: 78 94 sei + + +} + 3e0: 0f 90 pop r0 + 3e2: df 91 pop r29 + 3e4: cf 91 pop r28 + 3e6: 08 95 ret + +000003e8 : + +int cm_msgSync_Byte_DecodeSC(uint8_t rx_byte){ + + static cm_msg_startcode_states_t state = CM_MSGSYNC_STATE_INIT; + + switch (state) + 3e8: e0 91 43 3f lds r30, 0x3F43 ; 0x803f43 + 3ec: e2 30 cpi r30, 0x02 ; 2 + 3ee: 29 f1 breq .+74 ; 0x43a <__LOCK_REGION_LENGTH__+0x3a> + 3f0: 28 f4 brcc .+10 ; 0x3fc + 3f2: ee 23 and r30, r30 + 3f4: 41 f0 breq .+16 ; 0x406 <__LOCK_REGION_LENGTH__+0x6> + 3f6: e1 30 cpi r30, 0x01 ; 1 + 3f8: 91 f0 breq .+36 ; 0x41e <__LOCK_REGION_LENGTH__+0x1e> + 3fa: 40 c0 rjmp .+128 ; 0x47c <__LOCK_REGION_LENGTH__+0x7c> + 3fc: e3 30 cpi r30, 0x03 ; 3 + 3fe: 59 f1 breq .+86 ; 0x456 <__LOCK_REGION_LENGTH__+0x56> + 400: e4 30 cpi r30, 0x04 ; 4 + 402: b9 f1 breq .+110 ; 0x472 <__LOCK_REGION_LENGTH__+0x72> + 404: 3b c0 rjmp .+118 ; 0x47c <__LOCK_REGION_LENGTH__+0x7c> + { + case CM_MSGSYNC_STATE_INIT: + state = (rx_byte == startCode[state])? CM_MSGSYNC_STATE_2 : CM_MSGSYNC_STATE_INIT; + 406: f0 e0 ldi r31, 0x00 ; 0 + 408: ee 53 subi r30, 0x3E ; 62 + 40a: f1 47 sbci r31, 0x71 ; 113 + 40c: 20 81 ld r18, Z + 40e: 91 e0 ldi r25, 0x01 ; 1 + 410: 28 13 cpse r18, r24 + 412: 90 e0 ldi r25, 0x00 ; 0 + 414: 90 93 43 3f sts 0x3F43, r25 ; 0x803f43 + default: + state = CM_MSGSYNC_STATE_INIT; + break; + } + + return 1; + 418: 81 e0 ldi r24, 0x01 ; 1 + 41a: 90 e0 ldi r25, 0x00 ; 0 + + switch (state) + { + case CM_MSGSYNC_STATE_INIT: + state = (rx_byte == startCode[state])? CM_MSGSYNC_STATE_2 : CM_MSGSYNC_STATE_INIT; + break; + 41c: 08 95 ret + + case CM_MSGSYNC_STATE_2: + state = (rx_byte == startCode[state])? CM_MSGSYNC_STATE_3 : CM_MSGSYNC_STATE_INIT; + 41e: f0 e0 ldi r31, 0x00 ; 0 + 420: ee 53 subi r30, 0x3E ; 62 + 422: f1 47 sbci r31, 0x71 ; 113 + 424: 90 81 ld r25, Z + 426: 89 13 cpse r24, r25 + 428: 02 c0 rjmp .+4 ; 0x42e <__LOCK_REGION_LENGTH__+0x2e> + 42a: 82 e0 ldi r24, 0x02 ; 2 + 42c: 01 c0 rjmp .+2 ; 0x430 <__LOCK_REGION_LENGTH__+0x30> + 42e: 80 e0 ldi r24, 0x00 ; 0 + 430: 80 93 43 3f sts 0x3F43, r24 ; 0x803f43 + default: + state = CM_MSGSYNC_STATE_INIT; + break; + } + + return 1; + 434: 81 e0 ldi r24, 0x01 ; 1 + 436: 90 e0 ldi r25, 0x00 ; 0 + state = (rx_byte == startCode[state])? CM_MSGSYNC_STATE_2 : CM_MSGSYNC_STATE_INIT; + break; + + case CM_MSGSYNC_STATE_2: + state = (rx_byte == startCode[state])? CM_MSGSYNC_STATE_3 : CM_MSGSYNC_STATE_INIT; + break; + 438: 08 95 ret + + case CM_MSGSYNC_STATE_3: + state = (rx_byte == startCode[state])? CM_MSGSYNC_STATE_4 : CM_MSGSYNC_STATE_INIT; + 43a: f0 e0 ldi r31, 0x00 ; 0 + 43c: ee 53 subi r30, 0x3E ; 62 + 43e: f1 47 sbci r31, 0x71 ; 113 + 440: 90 81 ld r25, Z + 442: 89 13 cpse r24, r25 + 444: 02 c0 rjmp .+4 ; 0x44a <__LOCK_REGION_LENGTH__+0x4a> + 446: 83 e0 ldi r24, 0x03 ; 3 + 448: 01 c0 rjmp .+2 ; 0x44c <__LOCK_REGION_LENGTH__+0x4c> + 44a: 80 e0 ldi r24, 0x00 ; 0 + 44c: 80 93 43 3f sts 0x3F43, r24 ; 0x803f43 + default: + state = CM_MSGSYNC_STATE_INIT; + break; + } + + return 1; + 450: 81 e0 ldi r24, 0x01 ; 1 + 452: 90 e0 ldi r25, 0x00 ; 0 + state = (rx_byte == startCode[state])? CM_MSGSYNC_STATE_3 : CM_MSGSYNC_STATE_INIT; + break; + + case CM_MSGSYNC_STATE_3: + state = (rx_byte == startCode[state])? CM_MSGSYNC_STATE_4 : CM_MSGSYNC_STATE_INIT; + break; + 454: 08 95 ret + + case CM_MSGSYNC_STATE_4: + state = (rx_byte == startCode[state])? CM_MSGSYNC_STATE_5 : CM_MSGSYNC_STATE_INIT; + 456: f0 e0 ldi r31, 0x00 ; 0 + 458: ee 53 subi r30, 0x3E ; 62 + 45a: f1 47 sbci r31, 0x71 ; 113 + 45c: 90 81 ld r25, Z + 45e: 89 13 cpse r24, r25 + 460: 02 c0 rjmp .+4 ; 0x466 <__LOCK_REGION_LENGTH__+0x66> + 462: 84 e0 ldi r24, 0x04 ; 4 + 464: 01 c0 rjmp .+2 ; 0x468 <__LOCK_REGION_LENGTH__+0x68> + 466: 80 e0 ldi r24, 0x00 ; 0 + 468: 80 93 43 3f sts 0x3F43, r24 ; 0x803f43 + default: + state = CM_MSGSYNC_STATE_INIT; + break; + } + + return 1; + 46c: 81 e0 ldi r24, 0x01 ; 1 + 46e: 90 e0 ldi r25, 0x00 ; 0 + state = (rx_byte == startCode[state])? CM_MSGSYNC_STATE_4 : CM_MSGSYNC_STATE_INIT; + break; + + case CM_MSGSYNC_STATE_4: + state = (rx_byte == startCode[state])? CM_MSGSYNC_STATE_5 : CM_MSGSYNC_STATE_INIT; + break; + 470: 08 95 ret + + case CM_MSGSYNC_STATE_5: + state = CM_MSGSYNC_STATE_INIT; + 472: 10 92 43 3f sts 0x3F43, r1 ; 0x803f43 + return 0; + 476: 80 e0 ldi r24, 0x00 ; 0 + 478: 90 e0 ldi r25, 0x00 ; 0 + 47a: 08 95 ret + break; + + default: + state = CM_MSGSYNC_STATE_INIT; + 47c: 10 92 43 3f sts 0x3F43, r1 ; 0x803f43 + break; + } + + return 1; + 480: 81 e0 ldi r24, 0x01 ; 1 + 482: 90 e0 ldi r25, 0x00 ; 0 + + +} + 484: 08 95 ret + +00000486 : + + static cm_msg_decode_states_t state = CM_MSG_WAIT_FOR_STARTCODE; + static cm_data_msg_t msg; + static uint8_t data_bytes_idx = 0; + + switch (state) + 486: 90 91 42 3f lds r25, 0x3F42 ; 0x803f42 + 48a: 93 30 cpi r25, 0x03 ; 3 + 48c: d1 f0 breq .+52 ; 0x4c2 + 48e: 28 f4 brcc .+10 ; 0x49a + 490: 99 23 and r25, r25 + 492: 41 f0 breq .+16 ; 0x4a4 + 494: 91 30 cpi r25, 0x01 ; 1 + 496: 79 f0 breq .+30 ; 0x4b6 + 498: 47 c0 rjmp .+142 ; 0x528 + 49a: 94 30 cpi r25, 0x04 ; 4 + 49c: d1 f0 breq .+52 ; 0x4d2 + 49e: 95 30 cpi r25, 0x05 ; 5 + 4a0: 29 f1 breq .+74 ; 0x4ec + 4a2: 42 c0 rjmp .+132 ; 0x528 + { + case CM_MSG_WAIT_FOR_STARTCODE: + if(!cm_msgSync_Byte_DecodeSC(rx_byte)) state = CM_MSG_DECODE_STATE_GET_SIZE_BYTE; + 4a4: a1 df rcall .-190 ; 0x3e8 + 4a6: 89 2b or r24, r25 + 4a8: 19 f4 brne .+6 ; 0x4b0 + 4aa: 81 e0 ldi r24, 0x01 ; 1 + 4ac: 80 93 42 3f sts 0x3F42, r24 ; 0x803f42 + data_bytes_idx = 0; + 4b0: 10 92 41 3f sts 0x3F41, r1 ; 0x803f41 + break; + 4b4: 39 c0 rjmp .+114 ; 0x528 + + case CM_MSG_DECODE_STATE_GET_SIZE_BYTE: + msg.msg_data_size = rx_byte; + 4b6: 80 93 0a 3f sts 0x3F0A, r24 ; 0x803f0a + state = CM_MSG_DECODE_STATE_GET_CRC_BYTE1; + 4ba: 83 e0 ldi r24, 0x03 ; 3 + 4bc: 80 93 42 3f sts 0x3F42, r24 ; 0x803f42 + + break; + 4c0: 33 c0 rjmp .+102 ; 0x528 + + case CM_MSG_DECODE_STATE_GET_CRC_BYTE1: + msg.msg_data_crc = (rx_byte << 8) & 0xff00; + 4c2: ea e0 ldi r30, 0x0A ; 10 + 4c4: ff e3 ldi r31, 0x3F ; 63 + 4c6: 11 82 std Z+1, r1 ; 0x01 + 4c8: 82 83 std Z+2, r24 ; 0x02 + state = CM_MSG_DECODE_STATE_GET_CRC_BYTE2; + 4ca: 84 e0 ldi r24, 0x04 ; 4 + 4cc: 80 93 42 3f sts 0x3F42, r24 ; 0x803f42 + break; + 4d0: 2b c0 rjmp .+86 ; 0x528 + + case CM_MSG_DECODE_STATE_GET_CRC_BYTE2: + msg.msg_data_crc |= rx_byte & 0xff; + 4d2: ea e0 ldi r30, 0x0A ; 10 + 4d4: ff e3 ldi r31, 0x3F ; 63 + 4d6: 21 81 ldd r18, Z+1 ; 0x01 + 4d8: 32 81 ldd r19, Z+2 ; 0x02 + 4da: a9 01 movw r20, r18 + 4dc: 48 2b or r20, r24 + 4de: ca 01 movw r24, r20 + 4e0: 81 83 std Z+1, r24 ; 0x01 + 4e2: 92 83 std Z+2, r25 ; 0x02 + state = CM_MSG_DECODE_STATE_GET_DATA; + 4e4: 85 e0 ldi r24, 0x05 ; 5 + 4e6: 80 93 42 3f sts 0x3F42, r24 ; 0x803f42 + break; + 4ea: 1e c0 rjmp .+60 ; 0x528 + + case CM_MSG_DECODE_STATE_GET_DATA: + msg.msg_data[data_bytes_idx] = rx_byte; + 4ec: 90 91 41 3f lds r25, 0x3F41 ; 0x803f41 + 4f0: e9 2f mov r30, r25 + 4f2: f0 e0 ldi r31, 0x00 ; 0 + 4f4: e6 5f subi r30, 0xF6 ; 246 + 4f6: f0 4c sbci r31, 0xC0 ; 192 + 4f8: 83 83 std Z+3, r24 ; 0x03 + data_bytes_idx++; + 4fa: 81 e0 ldi r24, 0x01 ; 1 + 4fc: 89 0f add r24, r25 + 4fe: 80 93 41 3f sts 0x3F41, r24 ; 0x803f41 + if(data_bytes_idx >= msg.msg_data_size){ + 502: 90 91 0a 3f lds r25, 0x3F0A ; 0x803f0a + 506: 89 17 cp r24, r25 + 508: 78 f0 brcs .+30 ; 0x528 + // calculate CRC.. + + // Run function pointer msg evt.. + s_msg_cmplete_evt_fpt(s_msg_cmplete_evt_inst,&(msg.msg_data[0])); + 50a: e0 91 46 3f lds r30, 0x3F46 ; 0x803f46 + 50e: f0 91 47 3f lds r31, 0x3F47 ; 0x803f47 + 512: 6d e0 ldi r22, 0x0D ; 13 + 514: 7f e3 ldi r23, 0x3F ; 63 + 516: 80 91 44 3f lds r24, 0x3F44 ; 0x803f44 + 51a: 90 91 45 3f lds r25, 0x3F45 ; 0x803f45 + 51e: 09 95 icall + state = CM_MSG_WAIT_FOR_STARTCODE; + 520: 10 92 42 3f sts 0x3F42, r1 ; 0x803f42 + data_bytes_idx = 0; + 524: 10 92 41 3f sts 0x3F41, r1 ; 0x803f41 + + } + break; + } + return 0; +} + 528: 80 e0 ldi r24, 0x00 ; 0 + 52a: 90 e0 ldi r25, 0x00 ; 0 + 52c: 08 95 ret + +0000052e : + +void cm_MsgCompleteEvt_Register(void *msg_cmplete_evt_inst, Get_msgComplete_Event_fpt msg_cmplete_evt_fp){ + + if((msg_cmplete_evt_inst == NULL) || (msg_cmplete_evt_fp == NULL))return; + 52e: 00 97 sbiw r24, 0x00 ; 0 + 530: 59 f0 breq .+22 ; 0x548 + 532: 61 15 cp r22, r1 + 534: 71 05 cpc r23, r1 + 536: 41 f0 breq .+16 ; 0x548 + + s_msg_cmplete_evt_inst = msg_cmplete_evt_inst; + 538: 80 93 44 3f sts 0x3F44, r24 ; 0x803f44 + 53c: 90 93 45 3f sts 0x3F45, r25 ; 0x803f45 + s_msg_cmplete_evt_fpt = msg_cmplete_evt_fp; + 540: 60 93 46 3f sts 0x3F46, r22 ; 0x803f46 + 544: 70 93 47 3f sts 0x3F47, r23 ; 0x803f47 + 548: 08 95 ret + +0000054a : + storno_pll_param_msg temp_msg; + uint8_t *msg_ptr = (void*)&temp_msg; + +static uint8_t isStructValid(storno_xtal_app_t *inst){ + + if(inst->si5351_dev == NULL) return 1; + 54a: fc 01 movw r30, r24 + 54c: 22 81 ldd r18, Z+2 ; 0x02 + 54e: 33 81 ldd r19, Z+3 ; 0x03 + 550: 23 2b or r18, r19 + 552: 21 f0 breq .+8 ; 0x55c + if(inst == NULL)return 1; + 554: 89 2b or r24, r25 + 556: 21 f4 brne .+8 ; 0x560 + 558: 81 e0 ldi r24, 0x01 ; 1 + 55a: 08 95 ret + storno_pll_param_msg temp_msg; + uint8_t *msg_ptr = (void*)&temp_msg; + +static uint8_t isStructValid(storno_xtal_app_t *inst){ + + if(inst->si5351_dev == NULL) return 1; + 55c: 81 e0 ldi r24, 0x01 ; 1 + 55e: 08 95 ret + if(inst == NULL)return 1; + + return 0; + 560: 80 e0 ldi r24, 0x00 ; 0 +} + 562: 08 95 ret + +00000564 : + } + + +} + +static void cqm_setPLLParam(storno_xtal_app_t *inst, si5351_PLLs pll_num, si5351_Outputs output){ + 564: 9f 92 push r9 + 566: af 92 push r10 + 568: bf 92 push r11 + 56a: cf 92 push r12 + 56c: df 92 push r13 + 56e: ef 92 push r14 + 570: ff 92 push r15 + 572: 0f 93 push r16 + 574: 1f 93 push r17 + 576: cf 93 push r28 + 578: df 93 push r29 + 57a: ec 01 movw r28, r24 + 57c: 94 2e mov r9, r20 + + cm_setPllParamRaw(inst->si5351_dev,pll_num, inst->pll_param_ptr->MSNx_P1, inst->pll_param_ptr->MSNx_P2, inst->pll_param_ptr->MSNx_P3); + 57e: ec 81 ldd r30, Y+4 ; 0x04 + 580: fd 81 ldd r31, Y+5 ; 0x05 + 582: a1 84 ldd r10, Z+9 ; 0x09 + 584: b2 84 ldd r11, Z+10 ; 0x0a + 586: c3 84 ldd r12, Z+11 ; 0x0b + 588: d4 84 ldd r13, Z+12 ; 0x0c + 58a: e5 80 ldd r14, Z+5 ; 0x05 + 58c: f6 80 ldd r15, Z+6 ; 0x06 + 58e: 07 81 ldd r16, Z+7 ; 0x07 + 590: 10 85 ldd r17, Z+8 ; 0x08 + 592: 21 81 ldd r18, Z+1 ; 0x01 + 594: 32 81 ldd r19, Z+2 ; 0x02 + 596: 43 81 ldd r20, Z+3 ; 0x03 + 598: 54 81 ldd r21, Z+4 ; 0x04 + 59a: 8a 81 ldd r24, Y+2 ; 0x02 + 59c: 9b 81 ldd r25, Y+3 ; 0x03 + 59e: 4a d2 rcall .+1172 ; 0xa34 #else //round up by default __ticks_dc = (uint32_t)(ceil(fabs(__tmp))); #endif __builtin_avr_delay_cycles(__ticks_dc); - 114: 2a e6 ldi r18, 0x6A ; 106 - 116: 84 e0 ldi r24, 0x04 ; 4 - 118: 91 e0 ldi r25, 0x01 ; 1 - 11a: 21 50 subi r18, 0x01 ; 1 - 11c: 80 40 sbci r24, 0x00 ; 0 - 11e: 90 40 sbci r25, 0x00 ; 0 - 120: e1 f7 brne .-8 ; 0x11a - 122: 00 c0 rjmp .+0 ; 0x124 + 5a0: 81 e4 ldi r24, 0x41 ; 65 + 5a2: 93 e0 ldi r25, 0x03 ; 3 + 5a4: 01 97 sbiw r24, 0x01 ; 1 + 5a6: f1 f7 brne .-4 ; 0x5a4 + 5a8: 00 00 nop + _delay_ms(1); + cm_setOutputMultiSynthRaw(inst->si5351_dev,output, inst->pll_param_ptr->MSx_P1, inst->pll_param_ptr->MSx_P2, inst->pll_param_ptr->MSx_P3); + 5aa: ec 81 ldd r30, Y+4 ; 0x04 + 5ac: fd 81 ldd r31, Y+5 ; 0x05 + 5ae: a5 88 ldd r10, Z+21 ; 0x15 + 5b0: b6 88 ldd r11, Z+22 ; 0x16 + 5b2: c7 88 ldd r12, Z+23 ; 0x17 + 5b4: d0 8c ldd r13, Z+24 ; 0x18 + 5b6: e1 88 ldd r14, Z+17 ; 0x11 + 5b8: f2 88 ldd r15, Z+18 ; 0x12 + 5ba: 03 89 ldd r16, Z+19 ; 0x13 + 5bc: 14 89 ldd r17, Z+20 ; 0x14 + 5be: 25 85 ldd r18, Z+13 ; 0x0d + 5c0: 36 85 ldd r19, Z+14 ; 0x0e + 5c2: 47 85 ldd r20, Z+15 ; 0x0f + 5c4: 50 89 ldd r21, Z+16 ; 0x10 + 5c6: 69 2d mov r22, r9 + 5c8: 8a 81 ldd r24, Y+2 ; 0x02 + 5ca: 9b 81 ldd r25, Y+3 ; 0x03 + 5cc: 3c d1 rcall .+632 ; 0x846 + 5ce: 81 e4 ldi r24, 0x41 ; 65 + 5d0: 93 e0 ldi r25, 0x03 ; 3 + 5d2: 01 97 sbiw r24, 0x01 ; 1 + 5d4: f1 f7 brne .-4 ; 0x5d2 + 5d6: 00 00 nop + _delay_ms(1); + cm_setCLKControl(inst->si5351_dev,output,SI5351_CLK_POWER_UP); + 5d8: 40 e0 ldi r20, 0x00 ; 0 + 5da: 69 2d mov r22, r9 + 5dc: 8a 81 ldd r24, Y+2 ; 0x02 + 5de: 9b 81 ldd r25, Y+3 ; 0x03 + 5e0: b8 d1 rcall .+880 ; 0x952 - _delay_ms(100); - cm_EEPROM_write(0x00,data_set,1); - 124: 41 e0 ldi r20, 0x01 ; 1 - 126: 60 e0 ldi r22, 0x00 ; 0 - 128: 7f e3 ldi r23, 0x3F ; 63 - 12a: 80 e0 ldi r24, 0x00 ; 0 - 12c: 90 e0 ldi r25, 0x00 ; 0 - 12e: 9e df rcall .-196 ; 0x6c +} + 5e2: df 91 pop r29 + 5e4: cf 91 pop r28 + 5e6: 1f 91 pop r17 + 5e8: 0f 91 pop r16 + 5ea: ff 90 pop r15 + 5ec: ef 90 pop r14 + 5ee: df 90 pop r13 + 5f0: cf 90 pop r12 + 5f2: bf 90 pop r11 + 5f4: af 90 pop r10 + 5f6: 9f 90 pop r9 + 5f8: 08 95 ret + +000005fa : + +static void cqm6xx_app_loadPLLParam(storno_xtal_app_t *inst){ + 5fa: cf 93 push r28 + 5fc: df 93 push r29 + 5fe: ec 01 movw r28, r24 + + cm_setInputSource(inst->si5351_dev, SI5351_CLK_SOURCE_XTAL); + 600: 60 e0 ldi r22, 0x00 ; 0 + 602: 8a 81 ldd r24, Y+2 ; 0x02 + 604: 9b 81 ldd r25, Y+3 ; 0x03 + 606: d3 d1 rcall .+934 ; 0x9ae + 608: 81 e4 ldi r24, 0x41 ; 65 + 60a: 93 e0 ldi r25, 0x03 ; 3 + 60c: 01 97 sbiw r24, 0x01 ; 1 + 60e: f1 f7 brne .-4 ; 0x60c + 610: 00 00 nop + _delay_ms(1); + + inst->pll_param_ptr = &temp_msg; + 612: 88 e4 ldi r24, 0x48 ; 72 + 614: 9f e3 ldi r25, 0x3F ; 63 + 616: 8c 83 std Y+4, r24 ; 0x04 + 618: 9d 83 std Y+5, r25 ; 0x05 + cm_EEPROM_read(PLLA_SETTINGS_EEPROM_ADDR,msg_ptr,sizeof(storno_pll_param_msg)); + 61a: 60 91 06 3f lds r22, 0x3F06 ; 0x803f06 + 61e: 70 91 07 3f lds r23, 0x3F07 ; 0x803f07 + 622: 49 e1 ldi r20, 0x19 ; 25 + 624: 80 e0 ldi r24, 0x00 ; 0 + 626: 90 e0 ldi r25, 0x00 ; 0 + 628: 3f dd rcall .-1410 ; 0xa8 + + cqm_setPLLParam(inst, SI5351_PLL_A, SI5351_OUTPUT_0); + 62a: 40 e0 ldi r20, 0x00 ; 0 + 62c: 60 e0 ldi r22, 0x00 ; 0 + 62e: ce 01 movw r24, r28 + 630: 99 df rcall .-206 ; 0x564 + cm_setCLKControl(inst->si5351_dev,SI5351_OUTPUT_0,SI5351_CLK_POWER_UP); + 632: 40 e0 ldi r20, 0x00 ; 0 + 634: 60 e0 ldi r22, 0x00 ; 0 + 636: 8a 81 ldd r24, Y+2 ; 0x02 + 638: 9b 81 ldd r25, Y+3 ; 0x03 + 63a: 8b d1 rcall .+790 ; 0x952 + 63c: 81 e4 ldi r24, 0x41 ; 65 + 63e: 93 e0 ldi r25, 0x03 ; 3 + 640: 01 97 sbiw r24, 0x01 ; 1 + 642: f1 f7 brne .-4 ; 0x640 + 644: 00 00 nop + //cm_setCLKControl(inst->si5351_dev,SI5351_OUTPUT_1,SI5351_CLK_POWER_UP); + + //inst->pll_param_ptr = NULL; + + +} + 646: df 91 pop r29 + 648: cf 91 pop r28 + 64a: 08 95 ret + +0000064c : + if(inst == NULL)return 1; + + return 0; +} + +static void cqm6xx_app_updateOsc(storno_xtal_app_t *inst){ + 64c: cf 93 push r28 + 64e: df 93 push r29 + 650: ec 01 movw r28, r24 + + // Check Struct + if(isStructValid(inst) != 0)return; + 652: 7b df rcall .-266 ; 0x54a + 654: 81 11 cpse r24, r1 + 656: 32 c0 rjmp .+100 ; 0x6bc + + // 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; + 658: 89 81 ldd r24, Y+1 ; 0x01 + 65a: 98 81 ld r25, Y + 65c: 89 17 cp r24, r25 + 65e: 71 f1 breq .+92 ; 0x6bc + + switch(inst->state_next){ + 660: 81 30 cpi r24, 0x01 ; 1 + 662: 19 f0 breq .+6 ; 0x66a + 664: 82 30 cpi r24, 0x02 ; 2 + 666: b1 f0 breq .+44 ; 0x694 + 668: 29 c0 rjmp .+82 ; 0x6bc + 66a: 81 e4 ldi r24, 0x41 ; 65 + 66c: 93 e0 ldi r25, 0x03 ; 3 + 66e: 01 97 sbiw r24, 0x01 ; 1 + 670: f1 f7 brne .-4 ; 0x66e + 672: 00 00 nop + + case STORNO_APP_RX_MODE: + _delay_ms(1); + cm_setOutputEnable(inst->si5351_dev,SI5351_OUTPUT_0,SI5351_OUTPUT_ENABLE); // RX + 674: 40 e0 ldi r20, 0x00 ; 0 + 676: 60 e0 ldi r22, 0x00 ; 0 + 678: 8a 81 ldd r24, Y+2 ; 0x02 + 67a: 9b 81 ldd r25, Y+3 ; 0x03 + 67c: 4a d1 rcall .+660 ; 0x912 + 67e: 81 e4 ldi r24, 0x41 ; 65 + 680: 93 e0 ldi r25, 0x03 ; 3 + 682: 01 97 sbiw r24, 0x01 ; 1 + 684: f1 f7 brne .-4 ; 0x682 + 686: 00 00 nop + _delay_ms(1); + cm_setOutputEnable(inst->si5351_dev,SI5351_OUTPUT_1,SI5351_OUTPUT_DISABLE); // TX + 688: 41 e0 ldi r20, 0x01 ; 1 + 68a: 61 e0 ldi r22, 0x01 ; 1 + 68c: 8a 81 ldd r24, Y+2 ; 0x02 + 68e: 9b 81 ldd r25, Y+3 ; 0x03 + 690: 40 d1 rcall .+640 ; 0x912 + + break; + 692: 14 c0 rjmp .+40 ; 0x6bc + 694: 81 e4 ldi r24, 0x41 ; 65 + 696: 93 e0 ldi r25, 0x03 ; 3 + 698: 01 97 sbiw r24, 0x01 ; 1 + 69a: f1 f7 brne .-4 ; 0x698 + 69c: 00 00 nop + + case STORNO_APP_TX_MODE: + _delay_ms(1); + cm_setOutputEnable(inst->si5351_dev,SI5351_OUTPUT_0,SI5351_OUTPUT_DISABLE); // RX + 69e: 41 e0 ldi r20, 0x01 ; 1 + 6a0: 60 e0 ldi r22, 0x00 ; 0 + 6a2: 8a 81 ldd r24, Y+2 ; 0x02 + 6a4: 9b 81 ldd r25, Y+3 ; 0x03 + 6a6: 35 d1 rcall .+618 ; 0x912 + 6a8: 81 e4 ldi r24, 0x41 ; 65 + 6aa: 93 e0 ldi r25, 0x03 ; 3 + 6ac: 01 97 sbiw r24, 0x01 ; 1 + 6ae: f1 f7 brne .-4 ; 0x6ac + 6b0: 00 00 nop + _delay_ms(1); + cm_setOutputEnable(inst->si5351_dev,SI5351_OUTPUT_1,SI5351_OUTPUT_ENABLE); // TX + 6b2: 40 e0 ldi r20, 0x00 ; 0 + 6b4: 61 e0 ldi r22, 0x01 ; 1 + 6b6: 8a 81 ldd r24, Y+2 ; 0x02 + 6b8: 9b 81 ldd r25, Y+3 ; 0x03 + 6ba: 2b d1 rcall .+598 ; 0x912 + break; + + } + + +} + 6bc: df 91 pop r29 + 6be: cf 91 pop r28 + 6c0: 08 95 ret + +000006c2 : + //inst->pll_param_ptr = NULL; + + +} + +void cqm6xx_app_statemachine(storno_xtal_app_t *inst){ + 6c2: cf 93 push r28 + 6c4: df 93 push r29 + 6c6: ec 01 movw r28, r24 + + // Check Struct + if(isStructValid(inst) != 0)return; + 6c8: 40 df rcall .-384 ; 0x54a + 6ca: 81 11 cpse r24, r1 + 6cc: 24 c0 rjmp .+72 ; 0x716 + + switch (inst->state_next) + 6ce: 89 81 ldd r24, Y+1 ; 0x01 + 6d0: 81 30 cpi r24, 0x01 ; 1 + 6d2: 51 f0 breq .+20 ; 0x6e8 + 6d4: 18 f0 brcs .+6 ; 0x6dc + 6d6: 82 30 cpi r24, 0x02 ; 2 + 6d8: 99 f0 breq .+38 ; 0x700 + 6da: 1d c0 rjmp .+58 ; 0x716 + { + case STORNO_APP_PROGRAM_OSC: + // Read PLL parameters from EEPROM and Program PLL values here: + inst->state_now = inst->state_next; + 6dc: 88 83 st Y, r24 + + cqm6xx_app_loadPLLParam(inst); + 6de: ce 01 movw r24, r28 + 6e0: 8c df rcall .-232 ; 0x5fa + + + // if ok, then go to RX mode: + inst->state_next = STORNO_APP_RX_MODE; + 6e2: 81 e0 ldi r24, 0x01 ; 1 + 6e4: 89 83 std Y+1, r24 ; 0x01 + break; + 6e6: 17 c0 rjmp .+46 ; 0x716 + + + case STORNO_APP_RX_MODE: + // If we just came from another state, then Enable RX osc here.. + cqm6xx_app_updateOsc(inst); + 6e8: ce 01 movw r24, r28 + 6ea: b0 df rcall .-160 ; 0x64c + + // Update state now.. + inst->state_now = inst->state_next; + 6ec: 89 81 ldd r24, Y+1 ; 0x01 + 6ee: 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; + 6f0: 63 e0 ldi r22, 0x03 ; 3 + 6f2: 80 e0 ldi r24, 0x00 ; 0 + 6f4: fc dc rcall .-1544 ; 0xee + 6f6: 01 97 sbiw r24, 0x01 ; 1 + 6f8: 71 f4 brne .+28 ; 0x716 + 6fa: 82 e0 ldi r24, 0x02 ; 2 + 6fc: 89 83 std Y+1, r24 ; 0x01 + 6fe: 0b c0 rjmp .+22 ; 0x716 + + break; + + case STORNO_APP_TX_MODE: + // If we just came from another state, then Enable TX osc here.. + cqm6xx_app_updateOsc(inst); + 700: ce 01 movw r24, r28 + 702: a4 df rcall .-184 ; 0x64c + + // Update state now.. + inst->state_now = inst->state_next; + 704: 89 81 ldd r24, Y+1 ; 0x01 + 706: 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; + 708: 63 e0 ldi r22, 0x03 ; 3 + 70a: 80 e0 ldi r24, 0x00 ; 0 + 70c: f0 dc rcall .-1568 ; 0xee + 70e: 89 2b or r24, r25 + 710: 11 f4 brne .+4 ; 0x716 + 712: 81 e0 ldi r24, 0x01 ; 1 + 714: 89 83 std Y+1, r24 ; 0x01 + default: + break; + } + + +} + 716: df 91 pop r29 + 718: cf 91 pop r28 + 71a: 08 95 ret + +0000071c : + +void programPLL_Parameters(storno_xtal_app_t *inst){ + + //Burn settings into eeprom here: + switch(inst->pll_param_ptr->PLL_Ident){ + 71c: fc 01 movw r30, r24 + 71e: 64 81 ldd r22, Z+4 ; 0x04 + 720: 75 81 ldd r23, Z+5 ; 0x05 + 722: fb 01 movw r30, r22 + 724: 80 81 ld r24, Z + 726: 88 23 and r24, r24 + 728: 19 f0 breq .+6 ; 0x730 + 72a: 81 30 cpi r24, 0x01 ; 1 + 72c: 31 f0 breq .+12 ; 0x73a + 72e: 08 95 ret + + case MSG_PLLA_PARAM: + cm_EEPROM_write(PLLA_SETTINGS_EEPROM_ADDR,(uint8_t*)(inst->pll_param_ptr), sizeof(storno_pll_param_msg)); + 730: 49 e1 ldi r20, 0x19 ; 25 + 732: 80 e0 ldi r24, 0x00 ; 0 + 734: 90 e0 ldi r25, 0x00 ; 0 + 736: 9a dc rcall .-1740 ; 0x6c + break; + 738: 08 95 ret + + case MSG_PLLB_PARAM: + cm_EEPROM_write(PLLB_SETTINGS_EEPROM_ADDR,(uint8_t*)(inst->pll_param_ptr), sizeof(storno_pll_param_msg)); + 73a: 49 e1 ldi r20, 0x19 ; 25 + 73c: 80 e2 ldi r24, 0x20 ; 32 + 73e: 90 e0 ldi r25, 0x00 ; 0 + 740: 95 dc rcall .-1750 ; 0x6c + 742: 08 95 ret + +00000744 : + +} + +int uart_rx_event(storno_xtal_app_t *inst, void *rxData){ + + inst->pll_param_ptr = rxData; + 744: fc 01 movw r30, r24 + 746: 64 83 std Z+4, r22 ; 0x04 + 748: 75 83 std Z+5, r23 ; 0x05 + + programPLL_Parameters(inst); + 74a: e8 df rcall .-48 ; 0x71c + + return 0; + +} + 74c: 80 e0 ldi r24, 0x00 ; 0 + 74e: 90 e0 ldi r25, 0x00 ; 0 + 750: 08 95 ret + +00000752 : + +void cqm6xx_app_init(storno_xtal_app_t *inst, void *si5351_dev){ + 752: cf 93 push r28 + 754: df 93 push r29 + + if(si5351_dev == NULL) return; + 756: 61 15 cp r22, r1 + 758: 71 05 cpc r23, r1 + 75a: 71 f0 breq .+28 ; 0x778 + if(inst == NULL)return; + 75c: 00 97 sbiw r24, 0x00 ; 0 + 75e: 61 f0 breq .+24 ; 0x778 + 760: ec 01 movw r28, r24 + + inst->state_next = STORNO_APP_PROGRAM_OSC; + 762: 19 82 std Y+1, r1 ; 0x01 + inst->state_now = STORNO_APP_PROGRAM_OSC; + 764: 18 82 st Y, r1 + + inst->si5351_dev = si5351_dev; + 766: 6a 83 std Y+2, r22 ; 0x02 + 768: 7b 83 std Y+3, r23 ; 0x03 + + //cm_uart_init(inst,(get_UART_Event_fpt)uart_rx_event); + cm_MsgCompleteEvt_Register(inst,(Get_msgComplete_Event_fpt)uart_rx_event); + 76a: 62 ea ldi r22, 0xA2 ; 162 + 76c: 73 e0 ldi r23, 0x03 ; 3 + 76e: df de rcall .-578 ; 0x52e + cm_uart_init(inst,(get_UART_Event_fpt)cm_msg_DecodeMsg_Byte); + 770: 63 e4 ldi r22, 0x43 ; 67 + 772: 72 e0 ldi r23, 0x02 ; 2 + 774: ce 01 movw r24, r28 + 776: 08 de rcall .-1008 ; 0x388 + + 778: df 91 pop r29 + 77a: cf 91 pop r28 + 77c: 08 95 ret + +0000077e
: + uint8_t data_set[25] = {0x55,56}; + //cm_EEPROM_write(0x00,data_set,1); + uint8_t data[25] = {0}; + +int main(void) +{ + 77e: cf 93 push r28 + 780: df 93 push r29 + 782: cd b7 in r28, 0x3d ; 61 + 784: de b7 in r29, 0x3e ; 62 + 786: cb 55 subi r28, 0x5B ; 91 + 788: d1 09 sbc r29, r1 + 78a: cd bf out 0x3d, r28 ; 61 + 78c: de bf out 0x3e, r29 ; 62 + /* Replace with your application code */ + + // Init Periphials + cm_i2c_init(NULL); + 78e: 80 e0 ldi r24, 0x00 ; 0 + 790: 90 e0 ldi r25, 0x00 ; 0 + 792: 7d dd rcall .-1286 ; 0x28e + + // Add devices + cm_i2c_device_t si5351_i2c; + cm_i2c_addDev(&si5351_i2c,NULL,0x60); + 794: 40 e6 ldi r20, 0x60 ; 96 + 796: 60 e0 ldi r22, 0x00 ; 0 + 798: 70 e0 ldi r23, 0x00 ; 0 + 79a: ce 01 movw r24, r28 + 79c: 01 96 adiw r24, 0x01 ; 1 + 79e: 91 dd rcall .-1246 ; 0x2c2 + + // Init Devices: + si5351_driver si5351_dev; + cm_si5351_init(&si5351_dev,&si5351_i2c,(setGet_I2C_Event_fpt)cm_i2c_transfer); + 7a0: 4f e7 ldi r20, 0x7F ; 127 + 7a2: 51 e0 ldi r21, 0x01 ; 1 + 7a4: be 01 movw r22, r28 + 7a6: 6f 5f subi r22, 0xFF ; 255 + 7a8: 7f 4f sbci r23, 0xFF ; 255 + 7aa: ce 01 movw r24, r28 + 7ac: 04 96 adiw r24, 0x04 ; 4 + 7ae: a0 d1 rcall .+832 ; 0xaf0 + + cqm6xx_app_init(&storno_xtal_app, &si5351_dev); + 7b0: be 01 movw r22, r28 + 7b2: 6c 5f subi r22, 0xFC ; 252 + 7b4: 7f 4f sbci r23, 0xFF ; 255 + 7b6: 81 e6 ldi r24, 0x61 ; 97 + 7b8: 9f e3 ldi r25, 0x3F ; 63 + 7ba: cb df rcall .-106 ; 0x752 + while (1) { - //cqm6xx_app_statemachine(&storno_xtal_app); - if(PORTA.IN == 0x0d){ - 130: 80 91 08 04 lds r24, 0x0408 ; 0x800408 <__RODATA_PM_OFFSET__+0x7f8408> - 134: 8d 30 cpi r24, 0x0D ; 13 - 136: 59 f4 brne .+22 ; 0x14e - - static volatile uint8_t counter = 0; - - counter++; - 138: 80 91 1c 3f lds r24, 0x3F1C ; 0x803f1c - 13c: 8f 5f subi r24, 0xFF ; 255 - 13e: 80 93 1c 3f sts 0x3F1C, r24 ; 0x803f1c - - if (counter >= 50) - 142: 80 91 1c 3f lds r24, 0x3F1C ; 0x803f1c - 146: 82 33 cpi r24, 0x32 ; 50 - 148: 10 f0 brcs .+4 ; 0x14e - { - counter = 0; - 14a: 10 92 1c 3f sts 0x3F1C, r1 ; 0x803f1c - 14e: 2a e6 ldi r18, 0x6A ; 106 - 150: 84 e0 ldi r24, 0x04 ; 4 - 152: 91 e0 ldi r25, 0x01 ; 1 - 154: 21 50 subi r18, 0x01 ; 1 - 156: 80 40 sbci r24, 0x00 ; 0 - 158: 90 40 sbci r25, 0x00 ; 0 - 15a: e1 f7 brne .-8 ; 0x154 - 15c: 00 c0 rjmp .+0 ; 0x15e - 15e: e8 cf rjmp .-48 ; 0x130 + cqm6xx_app_statemachine(&storno_xtal_app); + 7bc: 81 e6 ldi r24, 0x61 ; 97 + 7be: 9f e3 ldi r25, 0x3F ; 63 + 7c0: 80 df rcall .-256 ; 0x6c2 + 7c2: 2a e6 ldi r18, 0x6A ; 106 + 7c4: 84 e0 ldi r24, 0x04 ; 4 + 7c6: 91 e0 ldi r25, 0x01 ; 1 + 7c8: 21 50 subi r18, 0x01 ; 1 + 7ca: 80 40 sbci r24, 0x00 ; 0 + 7cc: 90 40 sbci r25, 0x00 ; 0 + 7ce: e1 f7 brne .-8 ; 0x7c8 + 7d0: 00 c0 rjmp .+0 ; 0x7d2 + 7d2: f4 cf rjmp .-24 ; 0x7bc -00000160 : - 160: 03 d0 rcall .+6 ; 0x168 - 162: 80 81 ld r24, Z - 164: 99 27 eor r25, r25 - 166: 08 95 ret +000007d4 : -00000168 : - 168: fc 01 movw r30, r24 - 16a: e0 50 subi r30, 0x00 ; 0 - 16c: fc 4e sbci r31, 0xEC ; 236 - 16e: 08 95 ret + // Read Device Status register: + readRegister(inst,0x00, (uint8_t *) &inst->device_data.deviceStatus, sizeof(si5351_deviceStat_t)); -00000170 : - 170: 26 2f mov r18, r22 + return inst->device_data.deviceStatus.REVID; +} + 7d4: 8f 92 push r8 + 7d6: 9f 92 push r9 + 7d8: af 92 push r10 + 7da: bf 92 push r11 + 7dc: cf 92 push r12 + 7de: df 92 push r13 + 7e0: ef 92 push r14 + 7e2: ff 92 push r15 + 7e4: 0f 93 push r16 + 7e6: 1f 93 push r17 + 7e8: cf 93 push r28 + 7ea: df 93 push r29 + 7ec: ec 01 movw r28, r24 + 7ee: 86 2e mov r8, r22 + 7f0: 5a 01 movw r10, r20 + 7f2: 68 01 movw r12, r16 + 7f4: 79 01 movw r14, r18 + 7f6: c8 01 movw r24, r16 + 7f8: 01 96 adiw r24, 0x01 ; 1 + 7fa: 1b d2 rcall .+1078 ; 0xc32 + 7fc: 98 2e mov r9, r24 + 7fe: 19 2f mov r17, r25 + 800: fc 01 movw r30, r24 + 802: 81 92 st Z+, r8 + 804: cf 01 movw r24, r30 + 806: a6 01 movw r20, r12 + 808: b5 01 movw r22, r10 + 80a: 34 d3 rcall .+1640 ; 0xe74 + 80c: ea 81 ldd r30, Y+2 ; 0x02 + 80e: fb 81 ldd r31, Y+3 ; 0x03 + 810: a7 01 movw r20, r14 + 812: 96 01 movw r18, r12 + 814: 2f 5f subi r18, 0xFF ; 255 + 816: 3f 4f sbci r19, 0xFF ; 255 + 818: 4f 4f sbci r20, 0xFF ; 255 + 81a: 5f 4f sbci r21, 0xFF ; 255 + 81c: 01 e0 ldi r16, 0x01 ; 1 + 81e: 69 2d mov r22, r9 + 820: 71 2f mov r23, r17 + 822: 88 81 ld r24, Y + 824: 99 81 ldd r25, Y+1 ; 0x01 + 826: 09 95 icall + 828: 80 e0 ldi r24, 0x00 ; 0 + 82a: 90 e0 ldi r25, 0x00 ; 0 + 82c: df 91 pop r29 + 82e: cf 91 pop r28 + 830: 1f 91 pop r17 + 832: 0f 91 pop r16 + 834: ff 90 pop r15 + 836: ef 90 pop r14 + 838: df 90 pop r13 + 83a: cf 90 pop r12 + 83c: bf 90 pop r11 + 83e: af 90 pop r10 + 840: 9f 90 pop r9 + 842: 8f 90 pop r8 + 844: 08 95 ret -00000172 : - 172: af 93 push r26 - 174: bf 93 push r27 - 176: e0 e0 ldi r30, 0x00 ; 0 - 178: f0 e1 ldi r31, 0x10 ; 16 - 17a: 32 81 ldd r19, Z+2 ; 0x02 - 17c: 31 fd sbrc r19, 1 - 17e: fd cf rjmp .-6 ; 0x17a - 180: dc 01 movw r26, r24 - 182: a0 50 subi r26, 0x00 ; 0 - 184: bc 4e sbci r27, 0xEC ; 236 - 186: 2c 93 st X, r18 - 188: 2d e9 ldi r18, 0x9D ; 157 - 18a: 24 bf out 0x34, r18 ; 52 - 18c: 23 e0 ldi r18, 0x03 ; 3 - 18e: 20 83 st Z, r18 - 190: 01 96 adiw r24, 0x01 ; 1 - 192: bf 91 pop r27 - 194: af 91 pop r26 - 196: 08 95 ret +00000846 : + 846: af 92 push r10 + 848: bf 92 push r11 + 84a: cf 92 push r12 + 84c: df 92 push r13 + 84e: ef 92 push r14 + 850: ff 92 push r15 + 852: 0f 93 push r16 + 854: 1f 93 push r17 + 856: fc 01 movw r30, r24 + 858: 66 23 and r22, r22 + 85a: 19 f0 breq .+6 ; 0x862 + 85c: 61 30 cpi r22, 0x01 ; 1 + 85e: 41 f1 breq .+80 ; 0x8b0 + 860: 4d c0 rjmp .+154 ; 0x8fc + 862: 43 70 andi r20, 0x03 ; 3 + 864: 86 a1 ldd r24, Z+38 ; 0x26 + 866: 8c 7f andi r24, 0xFC ; 252 + 868: 48 2b or r20, r24 + 86a: 46 a3 std Z+38, r20 ; 0x26 + 86c: 37 a3 std Z+39, r19 ; 0x27 + 86e: 20 a7 std Z+40, r18 ; 0x28 + 870: f2 a6 std Z+42, r15 ; 0x2a + 872: e3 a6 std Z+43, r14 ; 0x2b + 874: d6 01 movw r26, r12 + 876: c5 01 movw r24, r10 + 878: 07 2e mov r0, r23 + 87a: 7c e0 ldi r23, 0x0C ; 12 + 87c: b6 95 lsr r27 + 87e: a7 95 ror r26 + 880: 97 95 ror r25 + 882: 87 95 ror r24 + 884: 7a 95 dec r23 + 886: d1 f7 brne .-12 ; 0x87c + 888: 70 2d mov r23, r0 + 88a: 83 70 andi r24, 0x03 ; 3 + 88c: 82 95 swap r24 + 88e: 80 7f andi r24, 0xF0 ; 240 + 890: 03 70 andi r16, 0x03 ; 3 + 892: 80 2b or r24, r16 + 894: 81 a7 std Z+41, r24 ; 0x29 + 896: b4 a2 std Z+36, r11 ; 0x24 + 898: a5 a2 std Z+37, r10 ; 0x25 + 89a: af 01 movw r20, r30 + 89c: 4c 5d subi r20, 0xDC ; 220 + 89e: 5f 4f sbci r21, 0xFF ; 255 + 8a0: 08 e0 ldi r16, 0x08 ; 8 + 8a2: 10 e0 ldi r17, 0x00 ; 0 + 8a4: 20 e0 ldi r18, 0x00 ; 0 + 8a6: 30 e0 ldi r19, 0x00 ; 0 + 8a8: 6a e2 ldi r22, 0x2A ; 42 + 8aa: cf 01 movw r24, r30 + 8ac: 93 df rcall .-218 ; 0x7d4 + 8ae: 26 c0 rjmp .+76 ; 0x8fc + 8b0: 43 70 andi r20, 0x03 ; 3 + 8b2: 86 a5 ldd r24, Z+46 ; 0x2e + 8b4: 8c 7f andi r24, 0xFC ; 252 + 8b6: 48 2b or r20, r24 + 8b8: 46 a7 std Z+46, r20 ; 0x2e + 8ba: 37 a7 std Z+47, r19 ; 0x2f + 8bc: 20 ab std Z+48, r18 ; 0x30 + 8be: f2 aa std Z+50, r15 ; 0x32 + 8c0: e3 aa std Z+51, r14 ; 0x33 + 8c2: d6 01 movw r26, r12 + 8c4: c5 01 movw r24, r10 + 8c6: 07 2e mov r0, r23 + 8c8: 7c e0 ldi r23, 0x0C ; 12 + 8ca: b6 95 lsr r27 + 8cc: a7 95 ror r26 + 8ce: 97 95 ror r25 + 8d0: 87 95 ror r24 + 8d2: 7a 95 dec r23 + 8d4: d1 f7 brne .-12 ; 0x8ca + 8d6: 70 2d mov r23, r0 + 8d8: 83 70 andi r24, 0x03 ; 3 + 8da: 82 95 swap r24 + 8dc: 80 7f andi r24, 0xF0 ; 240 + 8de: 03 70 andi r16, 0x03 ; 3 + 8e0: 80 2b or r24, r16 + 8e2: 81 ab std Z+49, r24 ; 0x31 + 8e4: b4 a6 std Z+44, r11 ; 0x2c + 8e6: a5 a6 std Z+45, r10 ; 0x2d + 8e8: af 01 movw r20, r30 + 8ea: 44 5d subi r20, 0xD4 ; 212 + 8ec: 5f 4f sbci r21, 0xFF ; 255 + 8ee: 08 e0 ldi r16, 0x08 ; 8 + 8f0: 10 e0 ldi r17, 0x00 ; 0 + 8f2: 20 e0 ldi r18, 0x00 ; 0 + 8f4: 30 e0 ldi r19, 0x00 ; 0 + 8f6: 62 e3 ldi r22, 0x32 ; 50 + 8f8: cf 01 movw r24, r30 + 8fa: 6c df rcall .-296 ; 0x7d4 + 8fc: 80 e0 ldi r24, 0x00 ; 0 + 8fe: 90 e0 ldi r25, 0x00 ; 0 + 900: 1f 91 pop r17 + 902: 0f 91 pop r16 + 904: ff 90 pop r15 + 906: ef 90 pop r14 + 908: df 90 pop r13 + 90a: cf 90 pop r12 + 90c: bf 90 pop r11 + 90e: af 90 pop r10 + 910: 08 95 ret -00000198 <_exit>: - 198: f8 94 cli +00000912 : + 912: 0f 93 push r16 + 914: 1f 93 push r17 + 916: 66 23 and r22, r22 + 918: 19 f0 breq .+6 ; 0x920 + 91a: 61 30 cpi r22, 0x01 ; 1 + 91c: 39 f0 breq .+14 ; 0x92c + 91e: 0b c0 rjmp .+22 ; 0x936 + 920: fc 01 movw r30, r24 + 922: 27 81 ldd r18, Z+7 ; 0x07 + 924: 40 fb bst r20, 0 + 926: 20 f9 bld r18, 0 + 928: 27 83 std Z+7, r18 ; 0x07 + 92a: 05 c0 rjmp .+10 ; 0x936 + 92c: fc 01 movw r30, r24 + 92e: 27 81 ldd r18, Z+7 ; 0x07 + 930: 40 fb bst r20, 0 + 932: 21 f9 bld r18, 1 + 934: 27 83 std Z+7, r18 ; 0x07 + 936: ac 01 movw r20, r24 + 938: 49 5f subi r20, 0xF9 ; 249 + 93a: 5f 4f sbci r21, 0xFF ; 255 + 93c: 01 e0 ldi r16, 0x01 ; 1 + 93e: 10 e0 ldi r17, 0x00 ; 0 + 940: 20 e0 ldi r18, 0x00 ; 0 + 942: 30 e0 ldi r19, 0x00 ; 0 + 944: 63 e0 ldi r22, 0x03 ; 3 + 946: 46 df rcall .-372 ; 0x7d4 + 948: 80 e0 ldi r24, 0x00 ; 0 + 94a: 90 e0 ldi r25, 0x00 ; 0 + 94c: 1f 91 pop r17 + 94e: 0f 91 pop r16 + 950: 08 95 ret -0000019a <__stop_program>: - 19a: ff cf rjmp .-2 ; 0x19a <__stop_program> +00000952 : + 952: 0f 93 push r16 + 954: 1f 93 push r17 + 956: 66 23 and r22, r22 + 958: 19 f0 breq .+6 ; 0x960 + 95a: 61 30 cpi r22, 0x01 ; 1 + 95c: a1 f0 breq .+40 ; 0x986 + 95e: 22 c0 rjmp .+68 ; 0x9a4 + 960: fc 01 movw r30, r24 + 962: 22 85 ldd r18, Z+10 ; 0x0a + 964: 40 fb bst r20, 0 + 966: 27 f9 bld r18, 7 + 968: 33 85 ldd r19, Z+11 ; 0x0b + 96a: 3f 7d andi r19, 0xDF ; 223 + 96c: 33 87 std Z+11, r19 ; 0x0b + 96e: 2f 64 ori r18, 0x4F ; 79 + 970: 22 87 std Z+10, r18 ; 0x0a + 972: ac 01 movw r20, r24 + 974: 46 5f subi r20, 0xF6 ; 246 + 976: 5f 4f sbci r21, 0xFF ; 255 + 978: 01 e0 ldi r16, 0x01 ; 1 + 97a: 10 e0 ldi r17, 0x00 ; 0 + 97c: 20 e0 ldi r18, 0x00 ; 0 + 97e: 30 e0 ldi r19, 0x00 ; 0 + 980: 60 e1 ldi r22, 0x10 ; 16 + 982: 28 df rcall .-432 ; 0x7d4 + 984: 0f c0 rjmp .+30 ; 0x9a4 + 986: fc 01 movw r30, r24 + 988: 23 85 ldd r18, Z+11 ; 0x0b + 98a: 40 fb bst r20, 0 + 98c: 27 f9 bld r18, 7 + 98e: 2f 66 ori r18, 0x6F ; 111 + 990: 23 87 std Z+11, r18 ; 0x0b + 992: ac 01 movw r20, r24 + 994: 45 5f subi r20, 0xF5 ; 245 + 996: 5f 4f sbci r21, 0xFF ; 255 + 998: 01 e0 ldi r16, 0x01 ; 1 + 99a: 10 e0 ldi r17, 0x00 ; 0 + 99c: 20 e0 ldi r18, 0x00 ; 0 + 99e: 30 e0 ldi r19, 0x00 ; 0 + 9a0: 61 e1 ldi r22, 0x11 ; 17 + 9a2: 18 df rcall .-464 ; 0x7d4 + 9a4: 80 e0 ldi r24, 0x00 ; 0 + 9a6: 90 e0 ldi r25, 0x00 ; 0 + 9a8: 1f 91 pop r17 + 9aa: 0f 91 pop r16 + 9ac: 08 95 ret + +000009ae : + 9ae: 0f 93 push r16 + 9b0: 1f 93 push r17 + 9b2: 66 23 and r22, r22 + 9b4: 19 f0 breq .+6 ; 0x9bc + 9b6: 61 30 cpi r22, 0x01 ; 1 + 9b8: 39 f0 breq .+14 ; 0x9c8 + 9ba: 0a c0 rjmp .+20 ; 0x9d0 + 9bc: fc 01 movw r30, r24 + 9be: 21 85 ldd r18, Z+9 ; 0x09 + 9c0: 2b 7f andi r18, 0xFB ; 251 + 9c2: 27 7f andi r18, 0xF7 ; 247 + 9c4: 21 87 std Z+9, r18 ; 0x09 + 9c6: 04 c0 rjmp .+8 ; 0x9d0 + 9c8: fc 01 movw r30, r24 + 9ca: 21 85 ldd r18, Z+9 ; 0x09 + 9cc: 24 60 ori r18, 0x04 ; 4 + 9ce: 21 87 std Z+9, r18 ; 0x09 + 9d0: ac 01 movw r20, r24 + 9d2: 47 5f subi r20, 0xF7 ; 247 + 9d4: 5f 4f sbci r21, 0xFF ; 255 + 9d6: 01 e0 ldi r16, 0x01 ; 1 + 9d8: 10 e0 ldi r17, 0x00 ; 0 + 9da: 20 e0 ldi r18, 0x00 ; 0 + 9dc: 30 e0 ldi r19, 0x00 ; 0 + 9de: 60 ef ldi r22, 0xF0 ; 240 + 9e0: f9 de rcall .-526 ; 0x7d4 + 9e2: 80 e0 ldi r24, 0x00 ; 0 + 9e4: 90 e0 ldi r25, 0x00 ; 0 + 9e6: 1f 91 pop r17 + 9e8: 0f 91 pop r16 + 9ea: 08 95 ret + +000009ec : + 9ec: 0f 93 push r16 + 9ee: 1f 93 push r17 + 9f0: 31 e0 ldi r19, 0x01 ; 1 + 9f2: 61 11 cpse r22, r1 + 9f4: 01 c0 rjmp .+2 ; 0x9f8 + 9f6: 30 e0 ldi r19, 0x00 ; 0 + 9f8: fc 01 movw r30, r24 + 9fa: e9 5a subi r30, 0xA9 ; 169 + 9fc: ff 4f sbci r31, 0xFF ; 255 + 9fe: 20 81 ld r18, Z + a00: 30 fb bst r19, 0 + a02: 25 f9 bld r18, 5 + a04: 20 83 st Z, r18 + a06: 31 e0 ldi r19, 0x01 ; 1 + a08: 41 11 cpse r20, r1 + a0a: 01 c0 rjmp .+2 ; 0xa0e + a0c: 30 e0 ldi r19, 0x00 ; 0 + a0e: ac 01 movw r20, r24 + a10: 49 5a subi r20, 0xA9 ; 169 + a12: 5f 4f sbci r21, 0xFF ; 255 + a14: fa 01 movw r30, r20 + a16: 20 81 ld r18, Z + a18: 30 fb bst r19, 0 + a1a: 27 f9 bld r18, 7 + a1c: 20 83 st Z, r18 + a1e: 01 e0 ldi r16, 0x01 ; 1 + a20: 10 e0 ldi r17, 0x00 ; 0 + a22: 20 e0 ldi r18, 0x00 ; 0 + a24: 30 e0 ldi r19, 0x00 ; 0 + a26: 61 eb ldi r22, 0xB1 ; 177 + a28: d5 de rcall .-598 ; 0x7d4 + a2a: 80 e0 ldi r24, 0x00 ; 0 + a2c: 90 e0 ldi r25, 0x00 ; 0 + a2e: 1f 91 pop r17 + a30: 0f 91 pop r16 + a32: 08 95 ret + +00000a34 : + a34: af 92 push r10 + a36: bf 92 push r11 + a38: cf 92 push r12 + a3a: df 92 push r13 + a3c: ef 92 push r14 + a3e: ff 92 push r15 + a40: 0f 93 push r16 + a42: 1f 93 push r17 + a44: cf 93 push r28 + a46: df 93 push r29 + a48: ec 01 movw r28, r24 + a4a: 66 23 and r22, r22 + a4c: 19 f0 breq .+6 ; 0xa54 + a4e: 61 30 cpi r22, 0x01 ; 1 + a50: 01 f1 breq .+64 ; 0xa92 + a52: 3d c0 rjmp .+122 ; 0xace + a54: 42 70 andi r20, 0x02 ; 2 + a56: 8e 89 ldd r24, Y+22 ; 0x16 + a58: 8c 7f andi r24, 0xFC ; 252 + a5a: 48 2b or r20, r24 + a5c: 4e 8b std Y+22, r20 ; 0x16 + a5e: 3f 8b std Y+23, r19 ; 0x17 + a60: 28 8f std Y+24, r18 ; 0x18 + a62: d8 01 movw r26, r16 + a64: c7 01 movw r24, r14 + a66: 88 27 eor r24, r24 + a68: 99 27 eor r25, r25 + a6a: af 70 andi r26, 0x0F ; 15 + a6c: bb 27 eor r27, r27 + a6e: fa 8e std Y+26, r15 ; 0x1a + a70: eb 8e std Y+27, r14 ; 0x1b + a72: 8a 2f mov r24, r26 + a74: 8f 70 andi r24, 0x0F ; 15 + a76: 89 8f std Y+25, r24 ; 0x19 + a78: bc 8a std Y+20, r11 ; 0x14 + a7a: ad 8a std Y+21, r10 ; 0x15 + a7c: 08 e0 ldi r16, 0x08 ; 8 + a7e: 10 e0 ldi r17, 0x00 ; 0 + a80: 20 e0 ldi r18, 0x00 ; 0 + a82: 30 e0 ldi r19, 0x00 ; 0 + a84: ae 01 movw r20, r28 + a86: 4c 5e subi r20, 0xEC ; 236 + a88: 5f 4f sbci r21, 0xFF ; 255 + a8a: 6a e1 ldi r22, 0x1A ; 26 + a8c: ce 01 movw r24, r28 + a8e: a2 de rcall .-700 ; 0x7d4 + a90: 1e c0 rjmp .+60 ; 0xace + a92: 42 70 andi r20, 0x02 ; 2 + a94: 8e 8d ldd r24, Y+30 ; 0x1e + a96: 8c 7f andi r24, 0xFC ; 252 + a98: 48 2b or r20, r24 + a9a: 4e 8f std Y+30, r20 ; 0x1e + a9c: 3f 8f std Y+31, r19 ; 0x1f + a9e: 28 a3 std Y+32, r18 ; 0x20 + aa0: d8 01 movw r26, r16 + aa2: c7 01 movw r24, r14 + aa4: 88 27 eor r24, r24 + aa6: 99 27 eor r25, r25 + aa8: af 70 andi r26, 0x0F ; 15 + aaa: bb 27 eor r27, r27 + aac: fa a2 std Y+34, r15 ; 0x22 + aae: eb a2 std Y+35, r14 ; 0x23 + ab0: 8a 2f mov r24, r26 + ab2: 8f 70 andi r24, 0x0F ; 15 + ab4: 89 a3 std Y+33, r24 ; 0x21 + ab6: bc 8e std Y+28, r11 ; 0x1c + ab8: ad 8e std Y+29, r10 ; 0x1d + aba: 08 e0 ldi r16, 0x08 ; 8 + abc: 10 e0 ldi r17, 0x00 ; 0 + abe: 20 e0 ldi r18, 0x00 ; 0 + ac0: 30 e0 ldi r19, 0x00 ; 0 + ac2: ae 01 movw r20, r28 + ac4: 44 5e subi r20, 0xE4 ; 228 + ac6: 5f 4f sbci r21, 0xFF ; 255 + ac8: 62 e2 ldi r22, 0x22 ; 34 + aca: ce 01 movw r24, r28 + acc: 83 de rcall .-762 ; 0x7d4 + ace: 41 e0 ldi r20, 0x01 ; 1 + ad0: 61 e0 ldi r22, 0x01 ; 1 + ad2: ce 01 movw r24, r28 + ad4: 8b df rcall .-234 ; 0x9ec + ad6: 80 e0 ldi r24, 0x00 ; 0 + ad8: 90 e0 ldi r25, 0x00 ; 0 + ada: df 91 pop r29 + adc: cf 91 pop r28 + ade: 1f 91 pop r17 + ae0: 0f 91 pop r16 + ae2: ff 90 pop r15 + ae4: ef 90 pop r14 + ae6: df 90 pop r13 + ae8: cf 90 pop r12 + aea: bf 90 pop r11 + aec: af 90 pop r10 + aee: 08 95 ret + +00000af0 : + +int cm_si5351_init(si5351_driver *inst, void *i2c_transfer_inst, setGet_I2C_Event_fpt i2c_transfer_evt){ + af0: ef 92 push r14 + af2: ff 92 push r15 + af4: 0f 93 push r16 + af6: 1f 93 push r17 + af8: cf 93 push r28 + afa: df 93 push r29 + afc: 1f 92 push r1 + afe: cd b7 in r28, 0x3d ; 61 + b00: de b7 in r29, 0x3e ; 62 + + if(inst == NULL)return -1; + b02: 00 97 sbiw r24, 0x00 ; 0 + b04: 09 f4 brne .+2 ; 0xb08 + b06: 85 c0 rjmp .+266 ; 0xc12 + if(i2c_transfer_inst == NULL)return -1; + b08: 61 15 cp r22, r1 + b0a: 71 05 cpc r23, r1 + b0c: 09 f4 brne .+2 ; 0xb10 + b0e: 84 c0 rjmp .+264 ; 0xc18 + if(i2c_transfer_evt == NULL)return -1; + b10: 41 15 cp r20, r1 + b12: 51 05 cpc r21, r1 + b14: 09 f4 brne .+2 ; 0xb18 + b16: 83 c0 rjmp .+262 ; 0xc1e + b18: 7c 01 movw r14, r24 + + inst->i2c_transfer_inst = i2c_transfer_inst; + b1a: dc 01 movw r26, r24 + b1c: 6d 93 st X+, r22 + b1e: 7c 93 st X, r23 + b20: 11 97 sbiw r26, 0x01 ; 1 + inst->i2c_transfer_evt = i2c_transfer_evt; + b22: 12 96 adiw r26, 0x02 ; 2 + b24: 4d 93 st X+, r20 + b26: 5c 93 st X, r21 + b28: 13 97 sbiw r26, 0x03 ; 3 + + int ret = 0; + + memset(&(inst->device_data),0x00,sizeof(si5351_data)); + b2a: fc 01 movw r30, r24 + b2c: 34 96 adiw r30, 0x04 ; 4 + b2e: 84 e5 ldi r24, 0x54 ; 84 + b30: df 01 movw r26, r30 + b32: 1d 92 st X+, r1 + b34: 8a 95 dec r24 + b36: e9 f7 brne .-6 ; 0xb32 + + /* Disable all outputs setting CLKx_DIS high */ + uint8_t temp = 0xff; + b38: 8f ef ldi r24, 0xFF ; 255 + b3a: 89 83 std Y+1, r24 ; 0x01 + writeRegister(inst,SI5351_REG_OUTPUT_ENABLE_CONTROL,&temp,1); + b3c: 01 e0 ldi r16, 0x01 ; 1 + b3e: 10 e0 ldi r17, 0x00 ; 0 + b40: 20 e0 ldi r18, 0x00 ; 0 + b42: 30 e0 ldi r19, 0x00 ; 0 + b44: ae 01 movw r20, r28 + b46: 4f 5f subi r20, 0xFF ; 255 + b48: 5f 4f sbci r21, 0xFF ; 255 + b4a: 63 e0 ldi r22, 0x03 ; 3 + b4c: c7 01 movw r24, r14 + b4e: 42 de rcall .-892 ; 0x7d4 + + /* Power down all output drivers */ + temp = 0x80; + b50: 80 e8 ldi r24, 0x80 ; 128 + b52: 89 83 std Y+1, r24 ; 0x01 + writeRegister(inst,SI5351_REG_CLK_0_CONTROL,&temp,1); + b54: 01 e0 ldi r16, 0x01 ; 1 + b56: 10 e0 ldi r17, 0x00 ; 0 + b58: 20 e0 ldi r18, 0x00 ; 0 + b5a: 30 e0 ldi r19, 0x00 ; 0 + b5c: ae 01 movw r20, r28 + b5e: 4f 5f subi r20, 0xFF ; 255 + b60: 5f 4f sbci r21, 0xFF ; 255 + b62: 60 e1 ldi r22, 0x10 ; 16 + b64: c7 01 movw r24, r14 + b66: 36 de rcall .-916 ; 0x7d4 + writeRegister(inst,SI5351_REG_CLK_1_CONTROL,&temp,1); + b68: 01 e0 ldi r16, 0x01 ; 1 + b6a: 10 e0 ldi r17, 0x00 ; 0 + b6c: 20 e0 ldi r18, 0x00 ; 0 + b6e: 30 e0 ldi r19, 0x00 ; 0 + b70: ae 01 movw r20, r28 + b72: 4f 5f subi r20, 0xFF ; 255 + b74: 5f 4f sbci r21, 0xFF ; 255 + b76: 61 e1 ldi r22, 0x11 ; 17 + b78: c7 01 movw r24, r14 + b7a: 2c de rcall .-936 ; 0x7d4 + writeRegister(inst,SI5351_REG_CLK_2_CONTROL,&temp,1); + b7c: 01 e0 ldi r16, 0x01 ; 1 + b7e: 10 e0 ldi r17, 0x00 ; 0 + b80: 20 e0 ldi r18, 0x00 ; 0 + b82: 30 e0 ldi r19, 0x00 ; 0 + b84: ae 01 movw r20, r28 + b86: 4f 5f subi r20, 0xFF ; 255 + b88: 5f 4f sbci r21, 0xFF ; 255 + b8a: 62 e1 ldi r22, 0x12 ; 18 + b8c: c7 01 movw r24, r14 + b8e: 22 de rcall .-956 ; 0x7d4 + writeRegister(inst,SI5351_REG_CLK_3_CONTROL,&temp,1); + b90: 01 e0 ldi r16, 0x01 ; 1 + b92: 10 e0 ldi r17, 0x00 ; 0 + b94: 20 e0 ldi r18, 0x00 ; 0 + b96: 30 e0 ldi r19, 0x00 ; 0 + b98: ae 01 movw r20, r28 + b9a: 4f 5f subi r20, 0xFF ; 255 + b9c: 5f 4f sbci r21, 0xFF ; 255 + b9e: 63 e1 ldi r22, 0x13 ; 19 + ba0: c7 01 movw r24, r14 + ba2: 18 de rcall .-976 ; 0x7d4 + writeRegister(inst,SI5351_REG_CLK_4_CONTROL,&temp,1); + ba4: 01 e0 ldi r16, 0x01 ; 1 + ba6: 10 e0 ldi r17, 0x00 ; 0 + ba8: 20 e0 ldi r18, 0x00 ; 0 + baa: 30 e0 ldi r19, 0x00 ; 0 + bac: ae 01 movw r20, r28 + bae: 4f 5f subi r20, 0xFF ; 255 + bb0: 5f 4f sbci r21, 0xFF ; 255 + bb2: 64 e1 ldi r22, 0x14 ; 20 + bb4: c7 01 movw r24, r14 + bb6: 0e de rcall .-996 ; 0x7d4 + writeRegister(inst,SI5351_REG_CLK_5_CONTROL,&temp,1); + bb8: 01 e0 ldi r16, 0x01 ; 1 + bba: 10 e0 ldi r17, 0x00 ; 0 + bbc: 20 e0 ldi r18, 0x00 ; 0 + bbe: 30 e0 ldi r19, 0x00 ; 0 + bc0: ae 01 movw r20, r28 + bc2: 4f 5f subi r20, 0xFF ; 255 + bc4: 5f 4f sbci r21, 0xFF ; 255 + bc6: 65 e1 ldi r22, 0x15 ; 21 + bc8: c7 01 movw r24, r14 + bca: 04 de rcall .-1016 ; 0x7d4 + writeRegister(inst,SI5351_REG_CLK_6_CONTROL,&temp,1); + bcc: 01 e0 ldi r16, 0x01 ; 1 + bce: 10 e0 ldi r17, 0x00 ; 0 + bd0: 20 e0 ldi r18, 0x00 ; 0 + bd2: 30 e0 ldi r19, 0x00 ; 0 + bd4: ae 01 movw r20, r28 + bd6: 4f 5f subi r20, 0xFF ; 255 + bd8: 5f 4f sbci r21, 0xFF ; 255 + bda: 66 e1 ldi r22, 0x16 ; 22 + bdc: c7 01 movw r24, r14 + bde: fa dd rcall .-1036 ; 0x7d4 + writeRegister(inst,SI5351_REG_CLK_7_CONTROL,&temp,1); + be0: 01 e0 ldi r16, 0x01 ; 1 + be2: 10 e0 ldi r17, 0x00 ; 0 + be4: 20 e0 ldi r18, 0x00 ; 0 + be6: 30 e0 ldi r19, 0x00 ; 0 + be8: ae 01 movw r20, r28 + bea: 4f 5f subi r20, 0xFF ; 255 + bec: 5f 4f sbci r21, 0xFF ; 255 + bee: 67 e1 ldi r22, 0x17 ; 23 + bf0: c7 01 movw r24, r14 + bf2: f0 dd rcall .-1056 ; 0x7d4 + + temp = SI5351_CRYSTAL_LOAD_10PF; + bf4: 80 ec ldi r24, 0xC0 ; 192 + bf6: 89 83 std Y+1, r24 ; 0x01 + + writeRegister(inst,SI5351_REG_CRYSTAL_LOAD_CAPACITANCE,&temp,1); + bf8: 01 e0 ldi r16, 0x01 ; 1 + bfa: 10 e0 ldi r17, 0x00 ; 0 + bfc: 20 e0 ldi r18, 0x00 ; 0 + bfe: 30 e0 ldi r19, 0x00 ; 0 + c00: ae 01 movw r20, r28 + c02: 4f 5f subi r20, 0xFF ; 255 + c04: 5f 4f sbci r21, 0xFF ; 255 + c06: 67 eb ldi r22, 0xB7 ; 183 + c08: c7 01 movw r24, r14 + c0a: e4 dd rcall .-1080 ; 0x7d4 + return ret; + c0c: 80 e0 ldi r24, 0x00 ; 0 + c0e: 90 e0 ldi r25, 0x00 ; 0 + c10: 08 c0 rjmp .+16 ; 0xc22 + 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; + c12: 8f ef ldi r24, 0xFF ; 255 + c14: 9f ef ldi r25, 0xFF ; 255 + c16: 05 c0 rjmp .+10 ; 0xc22 + if(i2c_transfer_inst == NULL)return -1; + c18: 8f ef ldi r24, 0xFF ; 255 + c1a: 9f ef ldi r25, 0xFF ; 255 + c1c: 02 c0 rjmp .+4 ; 0xc22 + if(i2c_transfer_evt == NULL)return -1; + c1e: 8f ef ldi r24, 0xFF ; 255 + c20: 9f ef ldi r25, 0xFF ; 255 + writeRegister(inst,SI5351_REG_CRYSTAL_LOAD_CAPACITANCE,&temp,1); + return ret; + + + +} + c22: 0f 90 pop r0 + c24: df 91 pop r29 + c26: cf 91 pop r28 + c28: 1f 91 pop r17 + c2a: 0f 91 pop r16 + c2c: ff 90 pop r15 + c2e: ef 90 pop r14 + c30: 08 95 ret + +00000c32 : + c32: 0f 93 push r16 + c34: 1f 93 push r17 + c36: cf 93 push r28 + c38: df 93 push r29 + c3a: 82 30 cpi r24, 0x02 ; 2 + c3c: 91 05 cpc r25, r1 + c3e: 10 f4 brcc .+4 ; 0xc44 + c40: 82 e0 ldi r24, 0x02 ; 2 + c42: 90 e0 ldi r25, 0x00 ; 0 + c44: e0 91 69 3f lds r30, 0x3F69 ; 0x803f69 <__flp> + c48: f0 91 6a 3f lds r31, 0x3F6A ; 0x803f6a <__flp+0x1> + c4c: 20 e0 ldi r18, 0x00 ; 0 + c4e: 30 e0 ldi r19, 0x00 ; 0 + c50: a0 e0 ldi r26, 0x00 ; 0 + c52: b0 e0 ldi r27, 0x00 ; 0 + c54: 30 97 sbiw r30, 0x00 ; 0 + c56: 19 f1 breq .+70 ; 0xc9e + c58: 40 81 ld r20, Z + c5a: 51 81 ldd r21, Z+1 ; 0x01 + c5c: 02 81 ldd r16, Z+2 ; 0x02 + c5e: 13 81 ldd r17, Z+3 ; 0x03 + c60: 48 17 cp r20, r24 + c62: 59 07 cpc r21, r25 + c64: c8 f0 brcs .+50 ; 0xc98 + c66: 84 17 cp r24, r20 + c68: 95 07 cpc r25, r21 + c6a: 69 f4 brne .+26 ; 0xc86 + c6c: 10 97 sbiw r26, 0x00 ; 0 + c6e: 31 f0 breq .+12 ; 0xc7c + c70: 12 96 adiw r26, 0x02 ; 2 + c72: 0c 93 st X, r16 + c74: 12 97 sbiw r26, 0x02 ; 2 + c76: 13 96 adiw r26, 0x03 ; 3 + c78: 1c 93 st X, r17 + c7a: 27 c0 rjmp .+78 ; 0xcca + c7c: 00 93 69 3f sts 0x3F69, r16 ; 0x803f69 <__flp> + c80: 10 93 6a 3f sts 0x3F6A, r17 ; 0x803f6a <__flp+0x1> + c84: 22 c0 rjmp .+68 ; 0xcca + c86: 21 15 cp r18, r1 + c88: 31 05 cpc r19, r1 + c8a: 19 f0 breq .+6 ; 0xc92 + c8c: 42 17 cp r20, r18 + c8e: 53 07 cpc r21, r19 + c90: 18 f4 brcc .+6 ; 0xc98 + c92: 9a 01 movw r18, r20 + c94: bd 01 movw r22, r26 + c96: ef 01 movw r28, r30 + c98: df 01 movw r26, r30 + c9a: f8 01 movw r30, r16 + c9c: db cf rjmp .-74 ; 0xc54 + c9e: 21 15 cp r18, r1 + ca0: 31 05 cpc r19, r1 + ca2: f9 f0 breq .+62 ; 0xce2 + ca4: 28 1b sub r18, r24 + ca6: 39 0b sbc r19, r25 + ca8: 24 30 cpi r18, 0x04 ; 4 + caa: 31 05 cpc r19, r1 + cac: 80 f4 brcc .+32 ; 0xcce + cae: 8a 81 ldd r24, Y+2 ; 0x02 + cb0: 9b 81 ldd r25, Y+3 ; 0x03 + cb2: 61 15 cp r22, r1 + cb4: 71 05 cpc r23, r1 + cb6: 21 f0 breq .+8 ; 0xcc0 + cb8: fb 01 movw r30, r22 + cba: 82 83 std Z+2, r24 ; 0x02 + cbc: 93 83 std Z+3, r25 ; 0x03 + cbe: 04 c0 rjmp .+8 ; 0xcc8 + cc0: 80 93 69 3f sts 0x3F69, r24 ; 0x803f69 <__flp> + cc4: 90 93 6a 3f sts 0x3F6A, r25 ; 0x803f6a <__flp+0x1> + cc8: fe 01 movw r30, r28 + cca: 32 96 adiw r30, 0x02 ; 2 + ccc: 44 c0 rjmp .+136 ; 0xd56 + cce: fe 01 movw r30, r28 + cd0: e2 0f add r30, r18 + cd2: f3 1f adc r31, r19 + cd4: 81 93 st Z+, r24 + cd6: 91 93 st Z+, r25 + cd8: 22 50 subi r18, 0x02 ; 2 + cda: 31 09 sbc r19, r1 + cdc: 28 83 st Y, r18 + cde: 39 83 std Y+1, r19 ; 0x01 + ce0: 3a c0 rjmp .+116 ; 0xd56 + ce2: 20 91 67 3f lds r18, 0x3F67 ; 0x803f67 <__brkval> + ce6: 30 91 68 3f lds r19, 0x3F68 ; 0x803f68 <__brkval+0x1> + cea: 23 2b or r18, r19 + cec: 41 f4 brne .+16 ; 0xcfe + cee: 20 91 02 3f lds r18, 0x3F02 ; 0x803f02 <__malloc_heap_start> + cf2: 30 91 03 3f lds r19, 0x3F03 ; 0x803f03 <__malloc_heap_start+0x1> + cf6: 20 93 67 3f sts 0x3F67, r18 ; 0x803f67 <__brkval> + cfa: 30 93 68 3f sts 0x3F68, r19 ; 0x803f68 <__brkval+0x1> + cfe: 20 91 00 3f lds r18, 0x3F00 ; 0x803f00 <__DATA_REGION_ORIGIN__> + d02: 30 91 01 3f lds r19, 0x3F01 ; 0x803f01 <__DATA_REGION_ORIGIN__+0x1> + d06: 21 15 cp r18, r1 + d08: 31 05 cpc r19, r1 + d0a: 41 f4 brne .+16 ; 0xd1c + d0c: 2d b7 in r18, 0x3d ; 61 + d0e: 3e b7 in r19, 0x3e ; 62 + d10: 40 91 04 3f lds r20, 0x3F04 ; 0x803f04 <__malloc_margin> + d14: 50 91 05 3f lds r21, 0x3F05 ; 0x803f05 <__malloc_margin+0x1> + d18: 24 1b sub r18, r20 + d1a: 35 0b sbc r19, r21 + d1c: e0 91 67 3f lds r30, 0x3F67 ; 0x803f67 <__brkval> + d20: f0 91 68 3f lds r31, 0x3F68 ; 0x803f68 <__brkval+0x1> + d24: e2 17 cp r30, r18 + d26: f3 07 cpc r31, r19 + d28: a0 f4 brcc .+40 ; 0xd52 + d2a: 2e 1b sub r18, r30 + d2c: 3f 0b sbc r19, r31 + d2e: 28 17 cp r18, r24 + d30: 39 07 cpc r19, r25 + d32: 78 f0 brcs .+30 ; 0xd52 + d34: ac 01 movw r20, r24 + d36: 4e 5f subi r20, 0xFE ; 254 + d38: 5f 4f sbci r21, 0xFF ; 255 + d3a: 24 17 cp r18, r20 + d3c: 35 07 cpc r19, r21 + d3e: 48 f0 brcs .+18 ; 0xd52 + d40: 4e 0f add r20, r30 + d42: 5f 1f adc r21, r31 + d44: 40 93 67 3f sts 0x3F67, r20 ; 0x803f67 <__brkval> + d48: 50 93 68 3f sts 0x3F68, r21 ; 0x803f68 <__brkval+0x1> + d4c: 81 93 st Z+, r24 + d4e: 91 93 st Z+, r25 + d50: 02 c0 rjmp .+4 ; 0xd56 + d52: e0 e0 ldi r30, 0x00 ; 0 + d54: f0 e0 ldi r31, 0x00 ; 0 + d56: cf 01 movw r24, r30 + d58: df 91 pop r29 + d5a: cf 91 pop r28 + d5c: 1f 91 pop r17 + d5e: 0f 91 pop r16 + d60: 08 95 ret + +00000d62 : + d62: cf 93 push r28 + d64: df 93 push r29 + d66: 00 97 sbiw r24, 0x00 ; 0 + d68: 09 f4 brne .+2 ; 0xd6c + d6a: 81 c0 rjmp .+258 ; 0xe6e + d6c: fc 01 movw r30, r24 + d6e: 32 97 sbiw r30, 0x02 ; 2 + d70: 12 82 std Z+2, r1 ; 0x02 + d72: 13 82 std Z+3, r1 ; 0x03 + d74: a0 91 69 3f lds r26, 0x3F69 ; 0x803f69 <__flp> + d78: b0 91 6a 3f lds r27, 0x3F6A ; 0x803f6a <__flp+0x1> + d7c: 10 97 sbiw r26, 0x00 ; 0 + d7e: 81 f4 brne .+32 ; 0xda0 + d80: 20 81 ld r18, Z + d82: 31 81 ldd r19, Z+1 ; 0x01 + d84: 82 0f add r24, r18 + d86: 93 1f adc r25, r19 + d88: 20 91 67 3f lds r18, 0x3F67 ; 0x803f67 <__brkval> + d8c: 30 91 68 3f lds r19, 0x3F68 ; 0x803f68 <__brkval+0x1> + d90: 28 17 cp r18, r24 + d92: 39 07 cpc r19, r25 + d94: 51 f5 brne .+84 ; 0xdea + d96: e0 93 67 3f sts 0x3F67, r30 ; 0x803f67 <__brkval> + d9a: f0 93 68 3f sts 0x3F68, r31 ; 0x803f68 <__brkval+0x1> + d9e: 67 c0 rjmp .+206 ; 0xe6e + da0: ed 01 movw r28, r26 + da2: 20 e0 ldi r18, 0x00 ; 0 + da4: 30 e0 ldi r19, 0x00 ; 0 + da6: ce 17 cp r28, r30 + da8: df 07 cpc r29, r31 + daa: 40 f4 brcc .+16 ; 0xdbc + dac: 4a 81 ldd r20, Y+2 ; 0x02 + dae: 5b 81 ldd r21, Y+3 ; 0x03 + db0: 9e 01 movw r18, r28 + db2: 41 15 cp r20, r1 + db4: 51 05 cpc r21, r1 + db6: f1 f0 breq .+60 ; 0xdf4 + db8: ea 01 movw r28, r20 + dba: f5 cf rjmp .-22 ; 0xda6 + dbc: c2 83 std Z+2, r28 ; 0x02 + dbe: d3 83 std Z+3, r29 ; 0x03 + dc0: 40 81 ld r20, Z + dc2: 51 81 ldd r21, Z+1 ; 0x01 + dc4: 84 0f add r24, r20 + dc6: 95 1f adc r25, r21 + dc8: c8 17 cp r28, r24 + dca: d9 07 cpc r29, r25 + dcc: 59 f4 brne .+22 ; 0xde4 + dce: 88 81 ld r24, Y + dd0: 99 81 ldd r25, Y+1 ; 0x01 + dd2: 84 0f add r24, r20 + dd4: 95 1f adc r25, r21 + dd6: 02 96 adiw r24, 0x02 ; 2 + dd8: 80 83 st Z, r24 + dda: 91 83 std Z+1, r25 ; 0x01 + ddc: 8a 81 ldd r24, Y+2 ; 0x02 + dde: 9b 81 ldd r25, Y+3 ; 0x03 + de0: 82 83 std Z+2, r24 ; 0x02 + de2: 93 83 std Z+3, r25 ; 0x03 + de4: 21 15 cp r18, r1 + de6: 31 05 cpc r19, r1 + de8: 29 f4 brne .+10 ; 0xdf4 + dea: e0 93 69 3f sts 0x3F69, r30 ; 0x803f69 <__flp> + dee: f0 93 6a 3f sts 0x3F6A, r31 ; 0x803f6a <__flp+0x1> + df2: 3d c0 rjmp .+122 ; 0xe6e + df4: e9 01 movw r28, r18 + df6: ea 83 std Y+2, r30 ; 0x02 + df8: fb 83 std Y+3, r31 ; 0x03 + dfa: 49 91 ld r20, Y+ + dfc: 59 91 ld r21, Y+ + dfe: c4 0f add r28, r20 + e00: d5 1f adc r29, r21 + e02: ec 17 cp r30, r28 + e04: fd 07 cpc r31, r29 + e06: 61 f4 brne .+24 ; 0xe20 + e08: 80 81 ld r24, Z + e0a: 91 81 ldd r25, Z+1 ; 0x01 + e0c: 84 0f add r24, r20 + e0e: 95 1f adc r25, r21 + e10: 02 96 adiw r24, 0x02 ; 2 + e12: e9 01 movw r28, r18 + e14: 88 83 st Y, r24 + e16: 99 83 std Y+1, r25 ; 0x01 + e18: 82 81 ldd r24, Z+2 ; 0x02 + e1a: 93 81 ldd r25, Z+3 ; 0x03 + e1c: 8a 83 std Y+2, r24 ; 0x02 + e1e: 9b 83 std Y+3, r25 ; 0x03 + e20: e0 e0 ldi r30, 0x00 ; 0 + e22: f0 e0 ldi r31, 0x00 ; 0 + e24: 12 96 adiw r26, 0x02 ; 2 + e26: 8d 91 ld r24, X+ + e28: 9c 91 ld r25, X + e2a: 13 97 sbiw r26, 0x03 ; 3 + e2c: 00 97 sbiw r24, 0x00 ; 0 + e2e: 19 f0 breq .+6 ; 0xe36 + e30: fd 01 movw r30, r26 + e32: dc 01 movw r26, r24 + e34: f7 cf rjmp .-18 ; 0xe24 + e36: 8d 91 ld r24, X+ + e38: 9c 91 ld r25, X + e3a: 11 97 sbiw r26, 0x01 ; 1 + e3c: 9d 01 movw r18, r26 + e3e: 2e 5f subi r18, 0xFE ; 254 + e40: 3f 4f sbci r19, 0xFF ; 255 + e42: 82 0f add r24, r18 + e44: 93 1f adc r25, r19 + e46: 20 91 67 3f lds r18, 0x3F67 ; 0x803f67 <__brkval> + e4a: 30 91 68 3f lds r19, 0x3F68 ; 0x803f68 <__brkval+0x1> + e4e: 28 17 cp r18, r24 + e50: 39 07 cpc r19, r25 + e52: 69 f4 brne .+26 ; 0xe6e + e54: 30 97 sbiw r30, 0x00 ; 0 + e56: 29 f4 brne .+10 ; 0xe62 + e58: 10 92 69 3f sts 0x3F69, r1 ; 0x803f69 <__flp> + e5c: 10 92 6a 3f sts 0x3F6A, r1 ; 0x803f6a <__flp+0x1> + e60: 02 c0 rjmp .+4 ; 0xe66 + e62: 12 82 std Z+2, r1 ; 0x02 + e64: 13 82 std Z+3, r1 ; 0x03 + e66: a0 93 67 3f sts 0x3F67, r26 ; 0x803f67 <__brkval> + e6a: b0 93 68 3f sts 0x3F68, r27 ; 0x803f68 <__brkval+0x1> + e6e: df 91 pop r29 + e70: cf 91 pop r28 + e72: 08 95 ret + +00000e74 : + e74: fb 01 movw r30, r22 + e76: dc 01 movw r26, r24 + e78: 02 c0 rjmp .+4 ; 0xe7e + e7a: 01 90 ld r0, Z+ + e7c: 0d 92 st X+, r0 + e7e: 41 50 subi r20, 0x01 ; 1 + e80: 50 40 sbci r21, 0x00 ; 0 + e82: d8 f7 brcc .-10 ; 0xe7a + e84: 08 95 ret + +00000e86 : + e86: 03 d0 rcall .+6 ; 0xe8e + e88: 80 81 ld r24, Z + e8a: 99 27 eor r25, r25 + e8c: 08 95 ret + +00000e8e : + e8e: fc 01 movw r30, r24 + e90: e0 50 subi r30, 0x00 ; 0 + e92: fc 4e sbci r31, 0xEC ; 236 + e94: 08 95 ret + +00000e96 : + e96: 26 2f mov r18, r22 + +00000e98 : + e98: af 93 push r26 + e9a: bf 93 push r27 + e9c: e0 e0 ldi r30, 0x00 ; 0 + e9e: f0 e1 ldi r31, 0x10 ; 16 + ea0: 32 81 ldd r19, Z+2 ; 0x02 + ea2: 31 fd sbrc r19, 1 + ea4: fd cf rjmp .-6 ; 0xea0 + ea6: dc 01 movw r26, r24 + ea8: a0 50 subi r26, 0x00 ; 0 + eaa: bc 4e sbci r27, 0xEC ; 236 + eac: 2c 93 st X, r18 + eae: 2d e9 ldi r18, 0x9D ; 157 + eb0: 24 bf out 0x34, r18 ; 52 + eb2: 23 e0 ldi r18, 0x03 ; 3 + eb4: 20 83 st Z, r18 + eb6: 01 96 adiw r24, 0x01 ; 1 + eb8: bf 91 pop r27 + eba: af 91 pop r26 + ebc: 08 95 ret + +00000ebe <_exit>: + ebe: f8 94 cli + +00000ec0 <__stop_program>: + ec0: ff cf rjmp .-2 ; 0xec0 <__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 e7edfb6..4d67400 100644 --- a/storno_cqp6xx_digital_xtal/Debug/storno_cqp6xx_digital_xtal.map +++ b/storno_cqp6xx_digital_xtal/Debug/storno_cqp6xx_digital_xtal.map @@ -43,7 +43,7 @@ c:/program files (x86)/atmel/studio/7.0/toolchain/avr8/avr8-gnu-toolchain/bin/.. c:/program files (x86)/atmel/studio/7.0/toolchain/avr8/avr8-gnu-toolchain/bin/../lib/gcc/avr/5.4.0/avrxmega3/short-calls\libgcc.a(_exit.o) C:/Program Files (x86)/Atmel/Studio/7.0/Packs/atmel/ATtiny_DFP/1.10.348/gcc/dev/attiny402/avrxmega3/short-calls/crtattiny402.o (exit) c:/program files (x86)/atmel/studio/7.0/toolchain/avr8/avr8-gnu-toolchain/bin/../lib/gcc/avr/5.4.0/avrxmega3/short-calls\libgcc.a(_copy_data.o) - main.o (__do_copy_data) + cqm6xx_app.o (__do_copy_data) c:/program files (x86)/atmel/studio/7.0/toolchain/avr8/avr8-gnu-toolchain/bin/../lib/gcc/avr/5.4.0/avrxmega3/short-calls\libgcc.a(_clear_bss.o) avr_uart_driver/avr_uart.o (__do_clear_bss) c:/program files (x86)/atmel/studio/7.0/toolchain/avr8/avr8-gnu-toolchain/bin/../lib/gcc/avr/5.4.0/../../../../avr/lib/avrxmega3/short-calls\libc.a(malloc.o) @@ -58,6 +58,7 @@ C:/Program Files (x86)/Atmel/Studio/7.0/Packs/atmel/ATtiny_DFP/1.10.348/gcc/dev/ Allocating common symbols Common symbol size file +temp_msg 0x19 cqm6xx_app.o storno_xtal_app 0x6 main.o __brkval 0x2 c:/program files (x86)/atmel/studio/7.0/toolchain/avr8/avr8-gnu-toolchain/bin/../lib/gcc/avr/5.4.0/../../../../avr/lib/avrxmega3/short-calls\libc.a(malloc.o) __flp 0x2 c:/program files (x86)/atmel/studio/7.0/toolchain/avr8/avr8-gnu-toolchain/bin/../lib/gcc/avr/5.4.0/../../../../avr/lib/avrxmega3/short-calls\libc.a(malloc.o) @@ -74,58 +75,18 @@ Discarded input sections .bss 0x00000000 0x0 avr_gpio_driver/avr_gpio.o .text.gpio_set_level 0x00000000 0x34 avr_gpio_driver/avr_gpio.o - .text.gpio_get_level - 0x00000000 0x24 avr_gpio_driver/avr_gpio.o .text.gpio_init 0x00000000 0x34 avr_gpio_driver/avr_gpio.o - .debug_info 0x00000000 0x320 avr_gpio_driver/avr_gpio.o - .debug_abbrev 0x00000000 0x107 avr_gpio_driver/avr_gpio.o - .debug_loc 0x00000000 0xae avr_gpio_driver/avr_gpio.o - .debug_aranges - 0x00000000 0x30 avr_gpio_driver/avr_gpio.o - .debug_ranges 0x00000000 0x20 avr_gpio_driver/avr_gpio.o - .debug_line 0x00000000 0x196 avr_gpio_driver/avr_gpio.o - .debug_str 0x00000000 0x315 avr_gpio_driver/avr_gpio.o - .comment 0x00000000 0x31 avr_gpio_driver/avr_gpio.o - .debug_frame 0x00000000 0x44 avr_gpio_driver/avr_gpio.o .text 0x00000000 0x0 avr_i2c_driver/avr_i2c.o .data 0x00000000 0x0 avr_i2c_driver/avr_i2c.o .bss 0x00000000 0x0 avr_i2c_driver/avr_i2c.o - .text.i2c_reset - 0x00000000 0x10 avr_i2c_driver/avr_i2c.o - .text.i2c_write_devAddr - 0x00000000 0x22 avr_i2c_driver/avr_i2c.o .text.i2c_byte_write 0x00000000 0x48 avr_i2c_driver/avr_i2c.o .text.i2c_byte_read 0x00000000 0x34 avr_i2c_driver/avr_i2c.o - .text.i2c_write - 0x00000000 0x92 avr_i2c_driver/avr_i2c.o - .text.i2c_read - 0x00000000 0x8c avr_i2c_driver/avr_i2c.o - .text.i2c_IsDeviceReady - 0x00000000 0x2c avr_i2c_driver/avr_i2c.o - .text.cm_i2c_init - 0x00000000 0x34 avr_i2c_driver/avr_i2c.o - .text.cm_i2c_addDev - 0x00000000 0x3c avr_i2c_driver/avr_i2c.o - .text.cm_i2c_transfer - 0x00000000 0x34 avr_i2c_driver/avr_i2c.o - .debug_info 0x00000000 0x6da avr_i2c_driver/avr_i2c.o - .debug_abbrev 0x00000000 0x1bb avr_i2c_driver/avr_i2c.o - .debug_loc 0x00000000 0x73d avr_i2c_driver/avr_i2c.o - .debug_aranges - 0x00000000 0x68 avr_i2c_driver/avr_i2c.o - .debug_ranges 0x00000000 0x58 avr_i2c_driver/avr_i2c.o - .debug_line 0x00000000 0x3ff avr_i2c_driver/avr_i2c.o - .debug_str 0x00000000 0x506 avr_i2c_driver/avr_i2c.o - .comment 0x00000000 0x31 avr_i2c_driver/avr_i2c.o - .debug_frame 0x00000000 0x118 avr_i2c_driver/avr_i2c.o .text 0x00000000 0x0 avr_uart_driver/avr_uart.o .data 0x00000000 0x0 avr_uart_driver/avr_uart.o .bss 0x00000000 0x0 avr_uart_driver/avr_uart.o - .text.cm_uart_init - 0x00000000 0x60 avr_uart_driver/avr_uart.o .text.cm_uart_send 0x00000000 0xe avr_uart_driver/avr_uart.o .text.cm_uart_receive @@ -135,101 +96,26 @@ Discarded input sections .text 0x00000000 0x0 cm_msg/cm_msg.o .data 0x00000000 0x0 cm_msg/cm_msg.o .bss 0x00000000 0x0 cm_msg/cm_msg.o - .text.cm_msgSync_Byte_DecodeSC - 0x00000000 0x9e cm_msg/cm_msg.o - .text.cm_msg_DecodeMsg_Byte - 0x00000000 0xa8 cm_msg/cm_msg.o - .text.cm_MsgCompleteEvt_Register - 0x00000000 0x1c cm_msg/cm_msg.o - .bss.msg.1844 0x00000000 0x37 cm_msg/cm_msg.o - .bss.data_bytes_idx.1845 - 0x00000000 0x1 cm_msg/cm_msg.o - .bss.state.1843 - 0x00000000 0x1 cm_msg/cm_msg.o - .bss.state.1832 - 0x00000000 0x1 cm_msg/cm_msg.o - .bss.s_msg_cmplete_evt_inst - 0x00000000 0x2 cm_msg/cm_msg.o - .bss.s_msg_cmplete_evt_fpt - 0x00000000 0x2 cm_msg/cm_msg.o - .rodata.startCode - 0x00000000 0x5 cm_msg/cm_msg.o - .debug_info 0x00000000 0x2b4 cm_msg/cm_msg.o - .debug_abbrev 0x00000000 0x14b cm_msg/cm_msg.o - .debug_loc 0x00000000 0x179 cm_msg/cm_msg.o - .debug_aranges - 0x00000000 0x30 cm_msg/cm_msg.o - .debug_ranges 0x00000000 0x20 cm_msg/cm_msg.o - .debug_line 0x00000000 0x21a cm_msg/cm_msg.o - .debug_str 0x00000000 0x3fa cm_msg/cm_msg.o - .comment 0x00000000 0x31 cm_msg/cm_msg.o - .debug_frame 0x00000000 0x44 cm_msg/cm_msg.o .text 0x00000000 0x0 cqm6xx_app.o .data 0x00000000 0x0 cqm6xx_app.o .bss 0x00000000 0x0 cqm6xx_app.o - .text.isStructValid - 0x00000000 0x1a cqm6xx_app.o - .text.uart_rx_event - 0x00000000 0xc cqm6xx_app.o - .text.cqm6xx_app_updateOsc - 0x00000000 0x76 cqm6xx_app.o - .text.cqm6xx_app_statemachine - 0x00000000 0x56 cqm6xx_app.o - .text.programPLL_Parameters - 0x00000000 0x6 cqm6xx_app.o - .text.cqm6xx_app_init - 0x00000000 0x2c cqm6xx_app.o - .debug_info 0x00000000 0x615 cqm6xx_app.o - .debug_abbrev 0x00000000 0x1df cqm6xx_app.o - .debug_loc 0x00000000 0x309 cqm6xx_app.o - .debug_aranges - 0x00000000 0x48 cqm6xx_app.o - .debug_ranges 0x00000000 0x38 cqm6xx_app.o - .debug_line 0x00000000 0x31d cqm6xx_app.o - .debug_str 0x00000000 0x4d7 cqm6xx_app.o - .comment 0x00000000 0x31 cqm6xx_app.o - .debug_frame 0x00000000 0x98 cqm6xx_app.o .text 0x00000000 0x0 main.o .data 0x00000000 0x0 main.o .bss 0x00000000 0x0 main.o - COMMON 0x00000000 0x6 main.o + .bss.data 0x00000000 0x19 main.o + .data.data_set + 0x00000000 0x19 main.o .text 0x00000000 0x0 si5351_driver/si5351_driver.o .data 0x00000000 0x0 si5351_driver/si5351_driver.o .bss 0x00000000 0x0 si5351_driver/si5351_driver.o .text.readRegister 0x00000000 0x80 si5351_driver/si5351_driver.o - .text.writeRegister - 0x00000000 0x78 si5351_driver/si5351_driver.o - .text.cm_setOutputMultiSynthRaw - 0x00000000 0xcc si5351_driver/si5351_driver.o .text.cm_setOutputMultiSynth 0x00000000 0x116 si5351_driver/si5351_driver.o - .text.cm_setOutputEnable - 0x00000000 0x40 si5351_driver/si5351_driver.o - .text.cm_setCLKControl - 0x00000000 0x5c si5351_driver/si5351_driver.o - .text.cm_setInputSource - 0x00000000 0x3e si5351_driver/si5351_driver.o - .text.cm_resetPLLs - 0x00000000 0x48 si5351_driver/si5351_driver.o - .text.cm_setPllParamRaw - 0x00000000 0xbc si5351_driver/si5351_driver.o .text.cm_setPLLParameters 0x00000000 0x2ce si5351_driver/si5351_driver.o .text.cm_si5351_getRevisionNumber 0x00000000 0x2a si5351_driver/si5351_driver.o - .text.cm_si5351_init - 0x00000000 0x142 si5351_driver/si5351_driver.o - .debug_info 0x00000000 0x16d1 si5351_driver/si5351_driver.o - .debug_abbrev 0x00000000 0x24a si5351_driver/si5351_driver.o - .debug_loc 0x00000000 0x10c3 si5351_driver/si5351_driver.o - .debug_aranges - 0x00000000 0x78 si5351_driver/si5351_driver.o - .debug_ranges 0x00000000 0x68 si5351_driver/si5351_driver.o - .debug_line 0x00000000 0x55f si5351_driver/si5351_driver.o - .debug_str 0x00000000 0xfc0 si5351_driver/si5351_driver.o - .comment 0x00000000 0x31 si5351_driver/si5351_driver.o - .debug_frame 0x00000000 0x28c 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) @@ -390,17 +276,10 @@ Discarded input sections .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) - .data 0x00000000 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) .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.avr-libc - 0x00000000 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) - .comment 0x00000000 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) - COMMON 0x00000000 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) .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.avr-libc - 0x00000000 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) .text 0x00000000 0x0 C:/Program Files (x86)/Atmel/Studio/7.0/Packs/atmel/ATtiny_DFP/1.10.348/gcc/dev/attiny402/avrxmega3/short-calls\libattiny402.a(eerd_byte.o) .data 0x00000000 0x0 C:/Program Files (x86)/Atmel/Studio/7.0/Packs/atmel/ATtiny_DFP/1.10.348/gcc/dev/attiny402/avrxmega3/short-calls\libattiny402.a(eerd_byte.o) .bss 0x00000000 0x0 C:/Program Files (x86)/Atmel/Studio/7.0/Packs/atmel/ATtiny_DFP/1.10.348/gcc/dev/attiny402/avrxmega3/short-calls\libattiny402.a(eerd_byte.o) @@ -543,7 +422,7 @@ END GROUP .rela.plt *(.rela.plt) -.text 0x00000000 0x19c +.text 0x00000000 0xec2 *(.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 @@ -630,29 +509,117 @@ END GROUP 0x0000006c . = ALIGN (0x2) *(.text.*) .text.cm_EEPROM_write - 0x0000006c 0x36 avr_eeprom_driver/avr_eeprom_driver.o + 0x0000006c 0x3c avr_eeprom_driver/avr_eeprom_driver.o 0x0000006c cm_EEPROM_write .text.cm_EEPROM_read - 0x000000a2 0x10 avr_eeprom_driver/avr_eeprom_driver.o - 0x000000a2 cm_EEPROM_read + 0x000000a8 0x46 avr_eeprom_driver/avr_eeprom_driver.o + 0x000000a8 cm_EEPROM_read + .text.gpio_get_level + 0x000000ee 0x24 avr_gpio_driver/avr_gpio.o + 0x000000ee gpio_get_level + .text.i2c_reset + 0x00000112 0x10 avr_i2c_driver/avr_i2c.o + .text.i2c_write_devAddr + 0x00000122 0x22 avr_i2c_driver/avr_i2c.o + 0x00000122 i2c_write_devAddr + .text.i2c_write + 0x00000144 0x92 avr_i2c_driver/avr_i2c.o + 0x00000144 i2c_write + .text.i2c_read + 0x000001d6 0x8c avr_i2c_driver/avr_i2c.o + 0x000001d6 i2c_read + .text.i2c_IsDeviceReady + 0x00000262 0x2c avr_i2c_driver/avr_i2c.o + 0x00000262 i2c_IsDeviceReady + .text.cm_i2c_init + 0x0000028e 0x34 avr_i2c_driver/avr_i2c.o + 0x0000028e cm_i2c_init + .text.cm_i2c_addDev + 0x000002c2 0x3c avr_i2c_driver/avr_i2c.o + 0x000002c2 cm_i2c_addDev + .text.cm_i2c_transfer + 0x000002fe 0x34 avr_i2c_driver/avr_i2c.o + 0x000002fe cm_i2c_transfer .text.__vector_22 - 0x000000b2 0x56 avr_uart_driver/avr_uart.o - 0x000000b2 __vector_22 - .text.main 0x00000108 0x58 main.o - 0x00000108 main + 0x00000332 0x56 avr_uart_driver/avr_uart.o + 0x00000332 __vector_22 + .text.cm_uart_init + 0x00000388 0x60 avr_uart_driver/avr_uart.o + 0x00000388 cm_uart_init + .text.cm_msgSync_Byte_DecodeSC + 0x000003e8 0x9e cm_msg/cm_msg.o + 0x000003e8 cm_msgSync_Byte_DecodeSC + .text.cm_msg_DecodeMsg_Byte + 0x00000486 0xa8 cm_msg/cm_msg.o + 0x00000486 cm_msg_DecodeMsg_Byte + .text.cm_MsgCompleteEvt_Register + 0x0000052e 0x1c cm_msg/cm_msg.o + 0x0000052e cm_MsgCompleteEvt_Register + .text.isStructValid + 0x0000054a 0x1a cqm6xx_app.o + .text.cqm_setPLLParam + 0x00000564 0x96 cqm6xx_app.o + .text.cqm6xx_app_loadPLLParam + 0x000005fa 0x52 cqm6xx_app.o + .text.cqm6xx_app_updateOsc + 0x0000064c 0x76 cqm6xx_app.o + .text.cqm6xx_app_statemachine + 0x000006c2 0x5a cqm6xx_app.o + 0x000006c2 cqm6xx_app_statemachine + .text.programPLL_Parameters + 0x0000071c 0x28 cqm6xx_app.o + 0x0000071c programPLL_Parameters + .text.uart_rx_event + 0x00000744 0xe cqm6xx_app.o + 0x00000744 uart_rx_event + .text.cqm6xx_app_init + 0x00000752 0x2c cqm6xx_app.o + 0x00000752 cqm6xx_app_init + .text.main 0x0000077e 0x56 main.o + 0x0000077e main + .text.writeRegister + 0x000007d4 0x72 si5351_driver/si5351_driver.o + .text.cm_setOutputMultiSynthRaw + 0x00000846 0xcc si5351_driver/si5351_driver.o + 0x00000846 cm_setOutputMultiSynthRaw + .text.cm_setOutputEnable + 0x00000912 0x40 si5351_driver/si5351_driver.o + 0x00000912 cm_setOutputEnable + .text.cm_setCLKControl + 0x00000952 0x5c si5351_driver/si5351_driver.o + 0x00000952 cm_setCLKControl + .text.cm_setInputSource + 0x000009ae 0x3e si5351_driver/si5351_driver.o + 0x000009ae cm_setInputSource + .text.cm_resetPLLs + 0x000009ec 0x48 si5351_driver/si5351_driver.o + 0x000009ec cm_resetPLLs + .text.cm_setPllParamRaw + 0x00000a34 0xbc si5351_driver/si5351_driver.o + 0x00000a34 cm_setPllParamRaw + .text.cm_si5351_init + 0x00000af0 0x142 si5351_driver/si5351_driver.o + 0x00000af0 cm_si5351_init .text.avr-libc - 0x00000160 0x10 C:/Program Files (x86)/Atmel/Studio/7.0/Packs/atmel/ATtiny_DFP/1.10.348/gcc/dev/attiny402/avrxmega3/short-calls\libattiny402.a(eerd_byte.o) - 0x00000160 eeprom_read_byte - 0x00000168 eeprom_mapen + 0x00000c32 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) + 0x00000c32 malloc + 0x00000d62 free .text.avr-libc - 0x00000170 0x28 C:/Program Files (x86)/Atmel/Studio/7.0/Packs/atmel/ATtiny_DFP/1.10.348/gcc/dev/attiny402/avrxmega3/short-calls\libattiny402.a(eewr_byte.o) - 0x00000170 eeprom_write_byte - 0x00000172 eeprom_write_r18 - 0x00000198 . = ALIGN (0x2) + 0x00000e74 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) + 0x00000e74 memcpy + .text.avr-libc + 0x00000e86 0x10 C:/Program Files (x86)/Atmel/Studio/7.0/Packs/atmel/ATtiny_DFP/1.10.348/gcc/dev/attiny402/avrxmega3/short-calls\libattiny402.a(eerd_byte.o) + 0x00000e86 eeprom_read_byte + 0x00000e8e eeprom_mapen + .text.avr-libc + 0x00000e96 0x28 C:/Program Files (x86)/Atmel/Studio/7.0/Packs/atmel/ATtiny_DFP/1.10.348/gcc/dev/attiny402/avrxmega3/short-calls\libattiny402.a(eewr_byte.o) + 0x00000e96 eeprom_write_byte + 0x00000e98 eeprom_write_r18 + 0x00000ebe . = ALIGN (0x2) *(.fini9) - .fini9 0x00000198 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) - 0x00000198 _exit - 0x00000198 exit + .fini9 0x00000ebe 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) + 0x00000ebe _exit + 0x00000ebe exit *(.fini9) *(.fini8) *(.fini8) @@ -671,50 +638,70 @@ END GROUP *(.fini1) *(.fini1) *(.fini0) - .fini0 0x00000198 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 0x00000ebe 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) - 0x0000019c _etext = . + 0x00000ec2 _etext = . -.rodata +.rodata 0x00008ec2 0x5 load address 0x00000ec2 *(.rodata) *(.rodata*) + .rodata.startCode + 0x00008ec2 0x5 cm_msg/cm_msg.o *(.gnu.linkonce.r*) -.data 0x00803f00 0x1a load address 0x0000019c +.data 0x00803f00 0x8 load address 0x00000ec7 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*) - .data.data_set - 0x00803f00 0x19 main.o - 0x00803f00 data_set + .data.msg_ptr 0x00803f06 0x2 cqm6xx_app.o + 0x00803f06 msg_ptr *(.gnu.linkonce.d*) - 0x00803f1a . = ALIGN (0x2) - *fill* 0x00803f19 0x1 - 0x00803f1a _edata = . - 0x00803f1a PROVIDE (__data_end, .) + 0x00803f08 . = ALIGN (0x2) + 0x00803f08 _edata = . + 0x00803f08 PROVIDE (__data_end, .) -.bss 0x00803f1a 0x1c - 0x00803f1a PROVIDE (__bss_start, .) +.bss 0x00803f08 0x63 + 0x00803f08 PROVIDE (__bss_start, .) *(.bss) *(.bss*) .bss.uart_rx_evt_fpt - 0x00803f1a 0x2 avr_uart_driver/avr_uart.o - 0x00803f1a uart_rx_evt_fpt - .bss.counter.3520 - 0x00803f1c 0x1 main.o - .bss.data 0x00803f1d 0x19 main.o - 0x00803f1d data + 0x00803f08 0x2 avr_uart_driver/avr_uart.o + 0x00803f08 uart_rx_evt_fpt + .bss.msg.1844 0x00803f0a 0x37 cm_msg/cm_msg.o + .bss.data_bytes_idx.1845 + 0x00803f41 0x1 cm_msg/cm_msg.o + .bss.state.1843 + 0x00803f42 0x1 cm_msg/cm_msg.o + .bss.state.1832 + 0x00803f43 0x1 cm_msg/cm_msg.o + .bss.s_msg_cmplete_evt_inst + 0x00803f44 0x2 cm_msg/cm_msg.o + 0x00803f44 s_msg_cmplete_evt_inst + .bss.s_msg_cmplete_evt_fpt + 0x00803f46 0x2 cm_msg/cm_msg.o + 0x00803f46 s_msg_cmplete_evt_fpt *(COMMON) - 0x00803f36 PROVIDE (__bss_end, .) - 0x0000019c __data_load_start = LOADADDR (.data) - 0x000001b6 __data_load_end = (__data_load_start + SIZEOF (.data)) + COMMON 0x00803f48 0x19 cqm6xx_app.o + 0x00803f48 temp_msg + COMMON 0x00803f61 0x6 main.o + 0x00803f61 storno_xtal_app + COMMON 0x00803f67 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) + 0x00803f67 __brkval + 0x00803f69 __flp + 0x00803f6b PROVIDE (__bss_end, .) + 0x00000ec7 __data_load_start = LOADADDR (.data) + 0x00000ecf __data_load_end = (__data_load_start + SIZEOF (.data)) -.noinit 0x00803f36 0x0 +.noinit 0x00803f6b 0x0 [!provide] PROVIDE (__noinit_start, .) *(.noinit*) [!provide] PROVIDE (__noinit_end, .) - 0x00803f36 _end = . - 0x00803f36 PROVIDE (__heap_start, .) + 0x00803f6b _end = . + 0x00803f6b PROVIDE (__heap_start, .) .eeprom 0x00810000 0x0 *(.eeprom*) @@ -757,8 +744,14 @@ END GROUP *(.comment) .comment 0x00000000 0x30 avr_eeprom_driver/avr_eeprom_driver.o 0x31 (size before relaxing) + .comment 0x00000030 0x31 avr_gpio_driver/avr_gpio.o + .comment 0x00000030 0x31 avr_i2c_driver/avr_i2c.o .comment 0x00000030 0x31 avr_uart_driver/avr_uart.o + .comment 0x00000030 0x31 cm_msg/cm_msg.o + .comment 0x00000030 0x31 cqm6xx_app.o .comment 0x00000030 0x31 main.o + .comment 0x00000030 0x31 si5351_driver/si5351_driver.o + .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 @@ -780,70 +773,115 @@ END GROUP .debug_sfnames *(.debug_sfnames) -.debug_aranges 0x00000000 0xc8 +.debug_aranges 0x00000000 0x260 *(.debug_aranges) .debug_aranges 0x00000000 0x28 avr_eeprom_driver/avr_eeprom_driver.o .debug_aranges - 0x00000028 0x40 avr_uart_driver/avr_uart.o + 0x00000028 0x30 avr_gpio_driver/avr_gpio.o .debug_aranges - 0x00000068 0x20 main.o + 0x00000058 0x68 avr_i2c_driver/avr_i2c.o .debug_aranges - 0x00000088 0x20 C:/Program Files (x86)/Atmel/Studio/7.0/Packs/atmel/ATtiny_DFP/1.10.348/gcc/dev/attiny402/avrxmega3/short-calls\libattiny402.a(eerd_byte.o) + 0x000000c0 0x40 avr_uart_driver/avr_uart.o .debug_aranges - 0x000000a8 0x20 C:/Program Files (x86)/Atmel/Studio/7.0/Packs/atmel/ATtiny_DFP/1.10.348/gcc/dev/attiny402/avrxmega3/short-calls\libattiny402.a(eewr_byte.o) + 0x00000100 0x30 cm_msg/cm_msg.o + .debug_aranges + 0x00000130 0x58 cqm6xx_app.o + .debug_aranges + 0x00000188 0x20 main.o + .debug_aranges + 0x000001a8 0x78 si5351_driver/si5351_driver.o + .debug_aranges + 0x00000220 0x20 C:/Program Files (x86)/Atmel/Studio/7.0/Packs/atmel/ATtiny_DFP/1.10.348/gcc/dev/attiny402/avrxmega3/short-calls\libattiny402.a(eerd_byte.o) + .debug_aranges + 0x00000240 0x20 C:/Program Files (x86)/Atmel/Studio/7.0/Packs/atmel/ATtiny_DFP/1.10.348/gcc/dev/attiny402/avrxmega3/short-calls\libattiny402.a(eewr_byte.o) .debug_pubnames *(.debug_pubnames) -.debug_info 0x00000000 0x1e3d +.debug_info 0x00000000 0x539c *(.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 0x16d avr_eeprom_driver/avr_eeprom_driver.o - .debug_info 0x00001343 0x4fc avr_uart_driver/avr_uart.o - .debug_info 0x0000183f 0x4a4 main.o - .debug_info 0x00001ce3 0xad C:/Program Files (x86)/Atmel/Studio/7.0/Packs/atmel/ATtiny_DFP/1.10.348/gcc/dev/attiny402/avrxmega3/short-calls\libattiny402.a(eerd_byte.o) - .debug_info 0x00001d90 0xad C:/Program Files (x86)/Atmel/Studio/7.0/Packs/atmel/ATtiny_DFP/1.10.348/gcc/dev/attiny402/avrxmega3/short-calls\libattiny402.a(eewr_byte.o) + .debug_info 0x000011d6 0x16b avr_eeprom_driver/avr_eeprom_driver.o + .debug_info 0x00001341 0x320 avr_gpio_driver/avr_gpio.o + .debug_info 0x00001661 0x6da avr_i2c_driver/avr_i2c.o + .debug_info 0x00001d3b 0x4fc avr_uart_driver/avr_uart.o + .debug_info 0x00002237 0x2b4 cm_msg/cm_msg.o + .debug_info 0x000024eb 0x989 cqm6xx_app.o + .debug_info 0x00002e74 0xd18 main.o + .debug_info 0x00003b8c 0x16b6 si5351_driver/si5351_driver.o + .debug_info 0x00005242 0xad C:/Program Files (x86)/Atmel/Studio/7.0/Packs/atmel/ATtiny_DFP/1.10.348/gcc/dev/attiny402/avrxmega3/short-calls\libattiny402.a(eerd_byte.o) + .debug_info 0x000052ef 0xad C:/Program Files (x86)/Atmel/Studio/7.0/Packs/atmel/ATtiny_DFP/1.10.348/gcc/dev/attiny402/avrxmega3/short-calls\libattiny402.a(eewr_byte.o) -.debug_abbrev 0x00000000 0x1565 +.debug_abbrev 0x00000000 0x1d9f *(.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 0xac avr_eeprom_driver/avr_eeprom_driver.o - .debug_abbrev 0x0000118a 0x1e0 avr_uart_driver/avr_uart.o - .debug_abbrev 0x0000136a 0x1d3 main.o - .debug_abbrev 0x0000153d 0x14 C:/Program Files (x86)/Atmel/Studio/7.0/Packs/atmel/ATtiny_DFP/1.10.348/gcc/dev/attiny402/avrxmega3/short-calls\libattiny402.a(eerd_byte.o) - .debug_abbrev 0x00001551 0x14 C:/Program Files (x86)/Atmel/Studio/7.0/Packs/atmel/ATtiny_DFP/1.10.348/gcc/dev/attiny402/avrxmega3/short-calls\libattiny402.a(eewr_byte.o) + .debug_abbrev 0x000010de 0xa0 avr_eeprom_driver/avr_eeprom_driver.o + .debug_abbrev 0x0000117e 0x107 avr_gpio_driver/avr_gpio.o + .debug_abbrev 0x00001285 0x1bb avr_i2c_driver/avr_i2c.o + .debug_abbrev 0x00001440 0x1e0 avr_uart_driver/avr_uart.o + .debug_abbrev 0x00001620 0x14b cm_msg/cm_msg.o + .debug_abbrev 0x0000176b 0x1e1 cqm6xx_app.o + .debug_abbrev 0x0000194c 0x1ec main.o + .debug_abbrev 0x00001b38 0x23f si5351_driver/si5351_driver.o + .debug_abbrev 0x00001d77 0x14 C:/Program Files (x86)/Atmel/Studio/7.0/Packs/atmel/ATtiny_DFP/1.10.348/gcc/dev/attiny402/avrxmega3/short-calls\libattiny402.a(eerd_byte.o) + .debug_abbrev 0x00001d8b 0x14 C:/Program Files (x86)/Atmel/Studio/7.0/Packs/atmel/ATtiny_DFP/1.10.348/gcc/dev/attiny402/avrxmega3/short-calls\libattiny402.a(eewr_byte.o) -.debug_line 0x00000000 0x7d0 +.debug_line 0x00000000 0x18a4 *(.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 0x166 avr_eeprom_driver/avr_eeprom_driver.o - .debug_line 0x0000029c 0x21b avr_uart_driver/avr_uart.o - .debug_line 0x000004b7 0x1d9 main.o - .debug_line 0x00000690 0x7c C:/Program Files (x86)/Atmel/Studio/7.0/Packs/atmel/ATtiny_DFP/1.10.348/gcc/dev/attiny402/avrxmega3/short-calls\libattiny402.a(eerd_byte.o) - .debug_line 0x0000070c 0xc4 C:/Program Files (x86)/Atmel/Studio/7.0/Packs/atmel/ATtiny_DFP/1.10.348/gcc/dev/attiny402/avrxmega3/short-calls\libattiny402.a(eewr_byte.o) + .debug_line 0x00000136 0x186 avr_eeprom_driver/avr_eeprom_driver.o + .debug_line 0x000002bc 0x196 avr_gpio_driver/avr_gpio.o + .debug_line 0x00000452 0x3ff avr_i2c_driver/avr_i2c.o + .debug_line 0x00000851 0x21b avr_uart_driver/avr_uart.o + .debug_line 0x00000a6c 0x21a cm_msg/cm_msg.o + .debug_line 0x00000c86 0x3f6 cqm6xx_app.o + .debug_line 0x0000107c 0x18f main.o + .debug_line 0x0000120b 0x559 si5351_driver/si5351_driver.o + .debug_line 0x00001764 0x7c C:/Program Files (x86)/Atmel/Studio/7.0/Packs/atmel/ATtiny_DFP/1.10.348/gcc/dev/attiny402/avrxmega3/short-calls\libattiny402.a(eerd_byte.o) + .debug_line 0x000017e0 0xc4 C:/Program Files (x86)/Atmel/Studio/7.0/Packs/atmel/ATtiny_DFP/1.10.348/gcc/dev/attiny402/avrxmega3/short-calls\libattiny402.a(eewr_byte.o) -.debug_frame 0x00000000 0x140 +.debug_frame 0x00000000 0x694 *(.debug_frame) - .debug_frame 0x00000000 0x60 avr_eeprom_driver/avr_eeprom_driver.o - .debug_frame 0x00000060 0xbc avr_uart_driver/avr_uart.o - .debug_frame 0x0000011c 0x24 main.o + .debug_frame 0x00000000 0x7c avr_eeprom_driver/avr_eeprom_driver.o + .debug_frame 0x0000007c 0x44 avr_gpio_driver/avr_gpio.o + .debug_frame 0x000000c0 0x118 avr_i2c_driver/avr_i2c.o + .debug_frame 0x000001d8 0xbc avr_uart_driver/avr_uart.o + .debug_frame 0x00000294 0x44 cm_msg/cm_msg.o + .debug_frame 0x000002d8 0xfc cqm6xx_app.o + .debug_frame 0x000003d4 0x34 main.o + .debug_frame 0x00000408 0x28c si5351_driver/si5351_driver.o -.debug_str 0x00000000 0xe53 +.debug_str 0x00000000 0x227c *(.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 0x1e2 avr_eeprom_driver/avr_eeprom_driver.o - 0x21b (size before relaxing) - .debug_str 0x0000098b 0x353 avr_uart_driver/avr_uart.o - 0x4f4 (size before relaxing) - .debug_str 0x00000cde 0x175 main.o - 0x3e5 (size before relaxing) + .debug_str 0x000007a9 0x1d9 avr_eeprom_driver/avr_eeprom_driver.o + 0x21f (size before relaxing) + .debug_str 0x00000982 0x16e avr_gpio_driver/avr_gpio.o + 0x319 (size before relaxing) + .debug_str 0x00000af0 0x2ab avr_i2c_driver/avr_i2c.o + 0x506 (size before relaxing) + .debug_str 0x00000d9b 0x283 avr_uart_driver/avr_uart.o + 0x4f8 (size before relaxing) + .debug_str 0x0000101e 0x23a cm_msg/cm_msg.o + 0x3fe (size before relaxing) + .debug_str 0x00001258 0x3c1 cqm6xx_app.o + 0x624 (size before relaxing) + .debug_str 0x00001619 0x908 main.o + 0xc65 (size before relaxing) + .debug_str 0x00001f21 0x35b si5351_driver/si5351_driver.o + 0xfbf (size before relaxing) -.debug_loc 0x00000000 0x349 +.debug_loc 0x00000000 0x23ef *(.debug_loc) - .debug_loc 0x00000000 0x1c6 avr_eeprom_driver/avr_eeprom_driver.o - .debug_loc 0x000001c6 0x13b avr_uart_driver/avr_uart.o - .debug_loc 0x00000301 0x48 main.o + .debug_loc 0x00000000 0x24e avr_eeprom_driver/avr_eeprom_driver.o + .debug_loc 0x0000024e 0xae avr_gpio_driver/avr_gpio.o + .debug_loc 0x000002fc 0x73d avr_i2c_driver/avr_i2c.o + .debug_loc 0x00000a39 0x13b avr_uart_driver/avr_uart.o + .debug_loc 0x00000b74 0x179 cm_msg/cm_msg.o + .debug_loc 0x00000ced 0x5f7 cqm6xx_app.o + .debug_loc 0x000012e4 0x48 main.o + .debug_loc 0x0000132c 0x10c3 si5351_driver/si5351_driver.o .debug_macinfo *(.debug_macinfo) @@ -863,11 +901,16 @@ END GROUP .debug_pubtypes *(.debug_pubtypes) -.debug_ranges 0x00000000 0x58 +.debug_ranges 0x00000000 0x1a0 *(.debug_ranges) .debug_ranges 0x00000000 0x18 avr_eeprom_driver/avr_eeprom_driver.o - .debug_ranges 0x00000018 0x30 avr_uart_driver/avr_uart.o - .debug_ranges 0x00000048 0x10 main.o + .debug_ranges 0x00000018 0x20 avr_gpio_driver/avr_gpio.o + .debug_ranges 0x00000038 0x58 avr_i2c_driver/avr_i2c.o + .debug_ranges 0x00000090 0x30 avr_uart_driver/avr_uart.o + .debug_ranges 0x000000c0 0x20 cm_msg/cm_msg.o + .debug_ranges 0x000000e0 0x48 cqm6xx_app.o + .debug_ranges 0x00000128 0x10 main.o + .debug_ranges 0x00000138 0x68 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 09ef998..0b57597 100644 --- a/storno_cqp6xx_digital_xtal/Debug/storno_cqp6xx_digital_xtal.srec +++ b/storno_cqp6xx_digital_xtal/Debug/storno_cqp6xx_digital_xtal.srec @@ -1,30 +1,241 @@ S022000073746F726E6F5F6371703678785F6469676974616C5F7874616C2E737265633F S113000019C033C032C031C030C02FC02EC02DC083 S11300102CC02BC02AC029C028C027C026C025C098 -S113002024C023C022C021C020C01FC042C01DC0A4 +S113002024C023C022C021C020C01FC082C11DC063 S11300301CC01BC011241FBECFEFCDBFDFE3DEBF4A -S11300401FE3A0E0BFE3ECE9F1E002C005900D92EC -S1130050AA31B107D9F72FE3AAE1BFE301C01D928A -S1130060A633B207E1F750D097C0CACFEF92FF9200 +S11300401FE3A0E0BFE3E7ECFEE002C005900D92E1 +S1130050A830B107D9F72FE3A8E0BFE301C01D9290 +S1130060AB36B207E1F78BD32AC7CACFEF92FF9220 S11300700F931F93CF93DF937C018B01D42FC0E0A8 -S113008007C0F801EC0FF11D6081C70171D0CF5F8B -S1130090CD17B8F3DF91CF911F910F91FF90EF909F -S11300A00895CF93DF93EB015BD08883DF91CF91E9 -S11300B008951F920F920FB60F9211242F933F931E -S11300C04F935F936F937F938F939F93AF93BF935C -S11300D0EF93FF93E0911A3FF0911B3F309719F093 -S11300E0809100080995FF91EF91BF91AF919F9185 -S11300F08F917F916F915F914F913F912F910F90CD -S11301000FBE0F901F90189541E06DE17FE380E0F2 -S113011090E0C7DF2AE684E091E0215080409040DF -S1130120E1F700C041E060E07FE380E090E09EDF23 -S1130130809108048D3059F480911C3F8F5F809327 -S11301401C3F80911C3F823310F010921C3F2AE622 -S113015084E091E0215080409040E1F700C0E8CF76 -S113016003D0808199270895FC01E050FC4E089546 -S1130170262FAF93BF93E0E0F0E1328131FDFDCF54 -S1130180DC01A050BC4E2C932DE924BF23E0208336 -S10F01900196BF91AF910895F894FFCF41 -S113019C55000000000000000000000000000000FA -S10D01AC0000000000000000000045 +S11300800AC08C2F90E0F801E80FF91F60818E0DF3 +S11300909F1D01D7CF5FCD17A0F3DF91CF911F91A3 +S11300A00F91FF90EF900895CF92DF92EF92FF921D +S11300B00F931F93CF93DF936C017B01D42FC0E088 +S11300C00BC08C2F90E08701080F191F8C0D9D1D0C +S11300D0DAD6F8018083CF5FCD1798F3DF91CF9103 +S11300E01F910F91FF90EF90DF90CF9008958111B1 +S11300F00DC02091080430E002C0359527956A951B +S1130100E2F781E020FF80E090E0089580E090E055 +S11301100895E0E1F8E084818860848381E0858348 +S113012008958093170880911508807CE1F39091DD +S11301301508892F807194FF04C083E0809314080C +S113014081E00895CF92DF92EF92FF92CF93DF93F5 +S1130150EB0169017A01232B242B252B81F1E1DFAB +S1130160811130C09E012F5F3F4F88818093180812 +S11301708091150886FFFCCF8091150884FF06C086 +S113018083E08093140881E090E01EC080911508FC +S11301908C7021F0BEDF81E090E016C080911508DC +S11301A084FD07C081E0C81AD108E108F108E9011B +S11301B0C9F683E08093140880E090E005C08FEFD7 +S11301C09FEF02C08FEF9FEFDF91CF91FF90EF90F1 +S11301D0DF90CF900895CF92DF92EF92FF92CF936A +S11301E0DF93EB0169017A01232B242B252B69F181 +S11301F0816097DF8823C9F02BC080911508807C2B +S1130200E1F3CE0101962091180828834115510588 +S11302106105710521F424E02093140803C022E051 +S1130220209314086A017B01EC01B701A601415037 +S1130230510961097109CD28CE28CF28F1F683E050 +S11302408093140880E090E005C081E090E002C053 +S11302508FEF9FEFDF91CF91FF90EF90DF90CF90E2 +S11302600895809317088091150886FFFCCF80912C +S1130270150884FF06C083E08093140881E090E0B1 +S1130280089583E08093140880E090E00895E0E00E +S1130290F4E080818B7F80838081877F8083A0E1ED +S11302A0B8E08BE016968C93169781E013968C93A6 +S11302B0139715968C9388E0828B838B80E090E073 +S11302C00895EF92FF920F931F93CF938C017B01BC +S11302D0C42F842F880FC5DF009749F4F801E0820A +S11302E0F1824C2F50E0440F551F428302C08EEF21 +S11302F09FEFCF911F910F91FF90EF9008950F936F +S1130300009781F0FC01002319F0013031F00DC099 +S1130310828161DF80E090E00AC0828113DF80E0A7 +S113032090E005C08FEF9FEF02C080E090E00F9156 +S113033008951F920F920FB60F9211242F933F939B +S11303404F935F936F937F938F939F93AF93BF93D9 +S1130350EF93FF93E091083FF091093F309719F034 +S1130360809100080995FF91EF91BF91AF919F9102 +S11303708F917F916F915F914F913F912F910F904A +S11303800FBE0F901F901895CF93DF931F92CDB798 +S1130390DEB7AC01F894E0E0F8E02CE635E0208725 +S11303A0318793E0978390EC96836115710511F47E +S11303B0452B39F080E8809305086093083F7093DB +S11303C0093F80910408882324F4809100088983DC +S11303D08981E0E0F4E080E4818380E8828378949A +S11303E00F90DF91CF910895E091433FE23029F1DE +S11303F028F4EE2341F0E13091F040C0E33059F1AC +S1130400E430B9F13BC0F0E0EE53F147208191E0D4 +S1130410281390E09093433F81E090E00895F0E04A +S1130420EE53F1479081891302C082E001C080E05D +S11304308093433F81E090E00895F0E0EE53F1476C +S11304409081891302C083E001C080E08093433F20 +S113045081E090E00895F0E0EE53F1479081891334 +S113046002C084E001C080E08093433F81E090E0DB +S113047008951092433F80E090E008951092433F26 +S113048081E090E008959091423F9330D1F028F4B8 +S1130490992341F0913079F047C09430D1F09530F0 +S11304A029F142C0A1DF892B19F481E08093423FF6 +S11304B01092413F39C080930A3F83E08093423FCA +S11304C033C0EAE0FFE31182828384E08093423FF9 +S11304D02BC0EAE0FFE321813281A901482BCA0144 +S11304E08183928385E08093423F1EC09091413F77 +S11304F0E92FF0E0E65FF04C838381E0890F80937D +S1130500413F90910A3F891778F0E091463FF0917E +S1130510473F6DE07FE38091443F9091453F0995CB +S11305201092423F1092413F80E090E0089500977E +S113053059F06115710541F08093443F9093453F14 +S11305406093463F7093473F0895FC0122813381B5 +S1130550232B21F0892B21F481E0089581E0089573 +S113056080E008959F92AF92BF92CF92DF92EF9274 +S1130570FF920F931F93CF93DF93EC01942EEC81A2 +S1130580FD81A184B284C384D484E580F68007818C +S1130590108521813281438154818A819B814AD291 +S11305A081E493E00197F1F70000EC81FD81A588D7 +S11305B0B688C788D08CE188F28803891489258598 +S11305C0368547855089692D8A819B813CD181E498 +S11305D093E00197F1F7000040E0692D8A819B8147 +S11305E0B8D1DF91CF911F910F91FF90EF90DF90E1 +S11305F0CF90BF90AF909F900895CF93DF93EC017D +S113060060E08A819B81D3D181E493E00197F1F783 +S1130610000088E49FE38C839D836091063F709182 +S1130620073F49E180E090E03FDD40E060E0CE013B +S113063099DF40E060E08A819B818BD181E493E083 +S11306400197F1F70000DF91CF910895CF93DF93E5 +S1130650EC017BDF811132C089819881891771F1A6 +S1130660813019F08230B1F029C081E493E0019720 +S1130670F1F7000040E060E08A819B814AD181E487 +S113068093E00197F1F7000041E061E08A819B81EA +S113069040D114C081E493E00197F1F7000041E0F8 +S11306A060E08A819B8135D181E493E00197F1F781 +S11306B0000040E061E08A819B812BD1DF91CF91E2 +S11306C00895CF93DF93EC0140DF811124C0898129 +S11306D0813051F018F0823099F01DC08883CE012A +S11306E08CDF81E0898317C0CE01B0DF89818883E4 +S11306F063E080E0FCDC019771F482E089830BC045 +S1130700CE01A4DF8981888363E080E0F0DC892B5B +S113071011F481E08983DF91CF910895FC01648114 +S11307207581FB018081882319F0813031F00895AF +S113073049E180E090E09ADC089549E180E290E0AC +S113074095DC0895FC0164837583E8DF80E090E024 +S11307500895CF93DF936115710571F0009761F0EF +S1130760EC01198218826A837B8362EA73E0DFDE1C +S113077063E472E0CE0108DEDF91CF910895CF9358 +S1130780DF93CDB7DEB7CB55D109CDBFDEBF80E057 +S113079090E07DDD40E660E070E0CE01019691DD01 +S11307A04FE751E0BE016F5F7F4FCE010496A0D1A9 +S11307B0BE016C5F7F4F81E69FE3CBDF81E69FE361 +S11307C080DF2AE684E091E0215080409040E1F708 +S11307D000C0F4CF8F929F92AF92BF92CF92DF92DC +S11307E0EF92FF920F931F93CF93DF93EC01862E2A +S11307F05A0168017901C80101961BD2982E192F5C +S1130800FC018192CF01A601B50134D3EA81FB81B9 +S1130810A70196012F5F3F4F4F4F5F4F01E0692DB6 +S1130820712F88819981099580E090E0DF91CF91C3 +S11308301F910F91FF90EF90DF90CF90BF90AF90FA +S11308409F908F900895AF92BF92CF92DF92EF92D4 +S1130850FF920F931F93FC01662319F0613041F15D +S11308604DC0437086A18C7F482B46A337A320A795 +S1130870F2A6E3A6D601C501072E7CE0B695A7959E +S1130880979587957A95D1F7702D83708295807F9F +S11308900370802B81A7B4A2A5A2AF014C5D5F4F6A +S11308A008E010E020E030E06AE2CF0193DF26C0E8 +S11308B0437086A58C7F482B46A737A720ABF2AAA6 +S11308C0E3AAD601C501072E7CE0B695A7959795B6 +S11308D087957A95D1F7702D83708295807F037008 +S11308E0802B81ABB4A6A5A6AF01445D5F4F08E0A1 +S11308F010E020E030E062E3CF016CDF80E090E0C4 +S11309001F910F91FF90EF90DF90CF90BF90AF9029 +S113091008950F931F93662319F0613039F00BC0CB +S1130920FC01278140FB20F9278305C0FC012781B6 +S113093040FB21F92783AC01495F5F4F01E010E0E0 +S113094020E030E063E046DF80E090E01F910F910B +S113095008950F931F93662319F06130A1F022C00C +S1130960FC01228540FB27F933853F7D33872F64C3 +S11309702287AC01465F5F4F01E010E020E030E0E9 +S113098060E128DF0FC0FC01238540FB27F92F66B7 +S11309902387AC01455F5F4F01E010E020E030E0C9 +S11309A061E118DF80E090E01F910F9108950F93AB +S11309B01F93662319F0613039F00AC0FC012185C8 +S11309C02B7F277F218704C0FC0121852460218798 +S11309D0AC01475F5F4F01E010E020E030E060EFE2 +S11309E0F9DE80E090E01F910F9108950F931F931B +S11309F031E0611101C030E0FC01E95AFF4F208170 +S1130A0030FB25F9208331E0411101C030E0AC0115 +S1130A10495A5F4FFA01208130FB27F9208301E016 +S1130A2010E020E030E061EBD5DE80E090E01F9143 +S1130A300F910895AF92BF92CF92DF92EF92FF92FF +S1130A400F931F93CF93DF93EC01662319F061306A +S1130A5001F13DC042708E898C7F482B4E8B3F8BB9 +S1130A60288FD801C70188279927AF70BB27FA8E32 +S1130A70EB8E8A2F8F70898FBC8AAD8A08E010E0D4 +S1130A8020E030E0AE014C5E5F4F6AE1CE01A2DEB1 +S1130A901EC042708E8D8C7F482B4E8F3F8F28A3B3 +S1130AA0D801C70188279927AF70BB27FAA2EBA208 +S1130AB08A2F8F7089A3BC8EAD8E08E010E020E0F1 +S1130AC030E0AE01445E5F4F62E2CE0183DE41E07E +S1130AD061E0CE018BDF80E090E0DF91CF911F9148 +S1130AE00F91FF90EF90DF90CF90BF90AF9008955B +S1130AF0EF92FF920F931F93CF93DF931F92CDB783 +S1130B00DEB7009709F485C06115710509F484C046 +S1130B104115510509F483C07C01DC016D937C937C +S1130B20119712964D935C931397FC01349684E5C8 +S1130B30DF011D928A95E9F78FEF898301E010E0C8 +S1130B4020E030E0AE014F5F5F4F63E0C70142DE5B +S1130B5080E8898301E010E020E030E0AE014F5FDF +S1130B605F4F60E1C70136DE01E010E020E030E0D5 +S1130B70AE014F5F5F4F61E1C7012CDE01E010E081 +S1130B8020E030E0AE014F5F5F4F62E1C70122DE3B +S1130B9001E010E020E030E0AE014F5F5F4F63E121 +S1130BA0C70118DE01E010E020E030E0AE014F5F45 +S1130BB05F4F64E1C7010EDE01E010E020E030E0A9 +S1130BC0AE014F5F5F4F65E1C70104DE01E010E055 +S1130BD020E030E0AE014F5F5F4F66E1C701FADD10 +S1130BE001E010E020E030E0AE014F5F5F4F67E1CD +S1130BF0C701F0DD80EC898301E010E020E030E003 +S1130C00AE014F5F5F4F67EBC701E4DD80E090E02A +S1130C1008C08FEF9FEF05C08FEF9FEF02C08FEFEB +S1130C209FEF0F90DF91CF911F910F91FF90EF9065 +S1130C3008950F931F93CF93DF938230910510F49F +S1130C4082E090E0E091693FF0916A3F20E030E07B +S1130C50A0E0B0E0309719F1408151810281138105 +S1130C6048175907C8F08417950769F4109731F0AD +S1130C7012960C93129713961C9327C00093693F06 +S1130C8010936A3F22C02115310519F0421753070A +S1130C9018F49A01BD01EF01DF01F801DBCF211542 +S1130CA03105F9F0281B390B2430310580F48A8191 +S1130CB09B816115710521F0FB018283938304C03C +S1130CC08093693F90936A3FFE01329644C0FE01CF +S1130CD0E20FF31F819391932250310928833983C2 +S1130CE03AC02091673F3091683F232B41F4209113 +S1130CF0023F3091033F2093673F3093683F209138 +S1130D00003F3091013F2115310541F42DB73EB725 +S1130D104091043F5091053F241B350BE091673F00 +S1130D20F091683FE217F307A0F42E1B3F0B28173E +S1130D30390778F0AC014E5F5F4F2417350748F050 +S1130D404E0F5F1F4093673F5093683F8193919389 +S1130D5002C0E0E0F0E0CF01DF91CF911F910F914D +S1130D600895CF93DF93009709F481C0FC01329773 +S1130D7012821382A091693FB0916A3F109781F467 +S1130D8020813181820F931F2091673F3091683F0A +S1130D902817390751F5E093673FF093683F67C020 +S1130DA0ED0120E030E0CE17DF0740F44A815B819B +S1130DB09E0141155105F1F0EA01F5CFC283D383B9 +S1130DC040815181840F951FC817D90759F4888130 +S1130DD09981840F951F0296808391838A819B81D8 +S1130DE0828393832115310529F4E093693FF093BD +S1130DF06A3F3DC0E901EA83FB8349915991C40FDD +S1130E00D51FEC17FD0761F480819181840F951F34 +S1130E100296E90188839983828193818A839B83E3 +S1130E20E0E0F0E012968D919C911397009719F0F1 +S1130E30FD01DC01F7CF8D919C9111979D012E5FEF +S1130E403F4F820F931F2091673F3091683F2817CF +S1130E50390769F4309729F41092693F10926A3F78 +S1130E6002C012821382A093673FB093683FDF9160 +S1130E70CF910895FB01DC0102C001900D92415015 +S1130E805040D8F7089503D0808199270895FC0134 +S1130E90E050FC4E0895262FAF93BF93E0E0F0E1BD +S1130EA0328131FDFDCFDC01A050BC4E2C932DE9E5 +S1130EB024BF23E020830196BF91AF910895F89455 +S1050EC0FFCF5E +S1080EC24F5A31434DBD +S10B0EC700006B3F2000483FCE S9030000FC diff --git a/storno_cqp6xx_digital_xtal/avr_eeprom_driver b/storno_cqp6xx_digital_xtal/avr_eeprom_driver index 31508be..5786c77 160000 --- a/storno_cqp6xx_digital_xtal/avr_eeprom_driver +++ b/storno_cqp6xx_digital_xtal/avr_eeprom_driver @@ -1 +1 @@ -Subproject commit 31508bec9dd34319737e697f753fc4a87c6823ab +Subproject commit 5786c777ac4afc7fbbdb18f5a1ece4d06b79ac87 diff --git a/storno_cqp6xx_digital_xtal/cqm6xx_app.c b/storno_cqp6xx_digital_xtal/cqm6xx_app.c index 9381d91..304db8a 100644 --- a/storno_cqp6xx_digital_xtal/cqm6xx_app.c +++ b/storno_cqp6xx_digital_xtal/cqm6xx_app.c @@ -16,6 +16,9 @@ #define PLLA_SETTINGS_EEPROM_ADDR 0x00 // addr 0 #define PLLB_SETTINGS_EEPROM_ADDR 0x20 // addr 32 (64 bytes total memory) + storno_pll_param_msg temp_msg; + uint8_t *msg_ptr = (void*)&temp_msg; + static uint8_t isStructValid(storno_xtal_app_t *inst){ if(inst->si5351_dev == NULL) return 1; @@ -71,25 +74,23 @@ static void cqm_setPLLParam(storno_xtal_app_t *inst, si5351_PLLs pll_num, si5351 static void cqm6xx_app_loadPLLParam(storno_xtal_app_t *inst){ - /*cm_setInputSource(inst->si5351_dev, SI5351_CLK_SOURCE_XTAL); + cm_setInputSource(inst->si5351_dev, SI5351_CLK_SOURCE_XTAL); _delay_ms(1); - - storno_pll_param_msg temp_msg; - uint8_t *msg_ptr = (void*)&temp_msg; - - cm_EEPROM_read(PLLA_SETTINGS_EEPROM_ADDR,msg_ptr,sizeof(storno_pll_param_msg)); + inst->pll_param_ptr = &temp_msg; + cm_EEPROM_read(PLLA_SETTINGS_EEPROM_ADDR,msg_ptr,sizeof(storno_pll_param_msg)); + cqm_setPLLParam(inst, SI5351_PLL_A, SI5351_OUTPUT_0); cm_setCLKControl(inst->si5351_dev,SI5351_OUTPUT_0,SI5351_CLK_POWER_UP); _delay_ms(1); - cm_EEPROM_read(PLLB_SETTINGS_EEPROM_ADDR,msg_ptr,sizeof(storno_pll_param_msg)); - inst->pll_param_ptr = &temp_msg; - cqm_setPLLParam(inst, SI5351_PLL_B, SI5351_OUTPUT_1); - cm_setCLKControl(inst->si5351_dev,SI5351_OUTPUT_1,SI5351_CLK_POWER_UP); + //cm_EEPROM_read(PLLB_SETTINGS_EEPROM_ADDR,msg_ptr,sizeof(storno_pll_param_msg)); + //inst->pll_param_ptr = &temp_msg; + //cqm_setPLLParam(inst, SI5351_PLL_B, SI5351_OUTPUT_1); + //cm_setCLKControl(inst->si5351_dev,SI5351_OUTPUT_1,SI5351_CLK_POWER_UP); - inst->pll_param_ptr = NULL;*/ + //inst->pll_param_ptr = NULL; } @@ -155,11 +156,11 @@ void programPLL_Parameters(storno_xtal_app_t *inst){ switch(inst->pll_param_ptr->PLL_Ident){ case MSG_PLLA_PARAM: - //cm_EEPROM_write(PLLA_SETTINGS_EEPROM_ADDR,(uint8_t*)(inst->pll_param_ptr), sizeof(storno_pll_param_msg)); + cm_EEPROM_write(PLLA_SETTINGS_EEPROM_ADDR,(uint8_t*)(inst->pll_param_ptr), sizeof(storno_pll_param_msg)); break; case MSG_PLLB_PARAM: - //cm_EEPROM_write(PLLB_SETTINGS_EEPROM_ADDR,(uint8_t*)(inst->pll_param_ptr), sizeof(storno_pll_param_msg)); + cm_EEPROM_write(PLLB_SETTINGS_EEPROM_ADDR,(uint8_t*)(inst->pll_param_ptr), sizeof(storno_pll_param_msg)); break; } @@ -167,7 +168,7 @@ void programPLL_Parameters(storno_xtal_app_t *inst){ // Send status back maybe.. //Force state machine to load new settings from eeprom: - inst->state_next = STORNO_APP_PROGRAM_OSC; + //inst->state_next = STORNO_APP_PROGRAM_OSC; } @@ -175,7 +176,7 @@ int uart_rx_event(storno_xtal_app_t *inst, void *rxData){ inst->pll_param_ptr = rxData; - //programPLL_Parameters(inst); + programPLL_Parameters(inst); return 0; diff --git a/storno_cqp6xx_digital_xtal/cqm6xx_app.h b/storno_cqp6xx_digital_xtal/cqm6xx_app.h index 128eddb..6d057bd 100644 --- a/storno_cqp6xx_digital_xtal/cqm6xx_app.h +++ b/storno_cqp6xx_digital_xtal/cqm6xx_app.h @@ -51,7 +51,7 @@ typedef struct { void *si5351_dev; storno_pll_param_msg *pll_param_ptr; - + storno_pll_param_msg pll_param_data; diff --git a/storno_cqp6xx_digital_xtal/main.c b/storno_cqp6xx_digital_xtal/main.c index 36ec947..b3ba210 100644 --- a/storno_cqp6xx_digital_xtal/main.c +++ b/storno_cqp6xx_digital_xtal/main.c @@ -15,33 +15,26 @@ storno_xtal_app_t storno_xtal_app; - uint8_t data_set[25] = {0x55}; + uint8_t data_set[25] = {0x55,56}; //cm_EEPROM_write(0x00,data_set,1); uint8_t data[25] = {0}; int main(void) { - - - cm_EEPROM_read(0x00,data,1); - - _delay_ms(100); - - cm_EEPROM_write(0x00,data_set,1); /* Replace with your application code */ // Init Periphials - //cm_i2c_init(NULL); + cm_i2c_init(NULL); // Add devices - //cm_i2c_device_t si5351_i2c; - //cm_i2c_addDev(&si5351_i2c,NULL,0x60); + 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); + 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); + cqm6xx_app_init(&storno_xtal_app, &si5351_dev); @@ -49,22 +42,7 @@ int main(void) while (1) { - //cqm6xx_app_statemachine(&storno_xtal_app); - if(PORTA.IN == 0x0d){ - - static volatile uint8_t counter = 0; - - counter++; - - if (counter >= 50) - { - counter = 0; - } - - } - - - + cqm6xx_app_statemachine(&storno_xtal_app); _delay_ms(100); } }