diff --git a/storno_cqp6xx_digital_xtal/Debug/cqm6xx_app.o b/storno_cqp6xx_digital_xtal/Debug/cqm6xx_app.o index 0105b50..4074638 100644 Binary files a/storno_cqp6xx_digital_xtal/Debug/cqm6xx_app.o and b/storno_cqp6xx_digital_xtal/Debug/cqm6xx_app.o differ diff --git a/storno_cqp6xx_digital_xtal/Debug/main.d b/storno_cqp6xx_digital_xtal/Debug/main.d index 2f74847..a63f4ec 100644 --- a/storno_cqp6xx_digital_xtal/Debug/main.d +++ b/storno_cqp6xx_digital_xtal/Debug/main.d @@ -21,7 +21,8 @@ main.d main.o: .././main.c .././avr_global_config.h \ c:\program\ files\ (x86)\atmel\studio\7.0\toolchain\avr8\avr8-gnu-toolchain\lib\gcc\avr\5.4.0\include\stddef.h \ .././avr_i2c_driver/avr_i2c.h .././avr_i2c_driver/../avr_global_config.h \ c:\program\ files\ (x86)\atmel\studio\7.0\toolchain\avr8\avr8-gnu-toolchain\lib\gcc\avr\5.4.0\include\stdbool.h \ - .././si5351_driver/include/si5351_driver.h .././cqm6xx_app.h + .././si5351_driver/include/si5351_driver.h .././cqm6xx_app.h \ + .././avr_eeprom_driver/avr_eeprom_driver.h .././avr_global_config.h: @@ -74,3 +75,5 @@ c:\program\ files\ (x86)\atmel\studio\7.0\toolchain\avr8\avr8-gnu-toolchain\lib\ .././si5351_driver/include/si5351_driver.h: .././cqm6xx_app.h: + +.././avr_eeprom_driver/avr_eeprom_driver.h: diff --git a/storno_cqp6xx_digital_xtal/Debug/main.o b/storno_cqp6xx_digital_xtal/Debug/main.o index 6c4aa74..300cb60 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 b705e1b..874de0e 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 36915f5..ba19f0d 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 e911fc9..7baffb7 100644 --- a/storno_cqp6xx_digital_xtal/Debug/storno_cqp6xx_digital_xtal.hex +++ b/storno_cqp6xx_digital_xtal/Debug/storno_cqp6xx_digital_xtal.hex @@ -1,154 +1,29 @@ :1000000019C033C032C031C030C02FC02EC02DC087 :100010002CC02BC02AC029C028C027C026C025C09C -:1000200024C023C022C021C020C01FC066C11DC083 +:1000200024C023C022C021C020C01FC042C01DC0A8 :100030001CC01BC011241FBECFEFCDBFDFE3DEBF4E -:100040002FE3A6E0BFE301C01D92A035B207E1F7A0 -:100050001FE3A0E0BFE3E9E6F9E002C005900D92DE -:10006000A630B107D9F74DD27BC4CACFE0E1F8E0A2 -:1000700084818860848381E0858308958093170854 -:1000800080911508807CE1F390911508892F80718B -:1000900094FF04C083E08093140881E00895CF9218 -:1000A000DF92EF92FF92CF93DF93EB0169017A0128 -:1000B000232B242B252B81F1E1DF811130C09E0100 -:1000C0002F5F3F4F8881809318088091150886FF25 -:1000D000FCCF8091150884FF06C083E0809314084C -:1000E00081E090E01EC0809115088C7021F0BEDF89 -:1000F00081E090E016C08091150884FD07C081E082 -:10010000C81AD108E108F108E901C9F683E0809333 -:10011000140880E090E005C08FEF9FEF02C08FEFE2 -:100120009FEFDF91CF91FF90EF90DF90CF900895F8 -:10013000CF92DF92EF92FF92CF93DF93EB016901B1 -:100140007A01232B242B252B69F1816097DF8823EB -:10015000C9F02BC080911508807CE1F3CE01019697 -:10016000209118082883411551056105710521F476 -:1001700024E02093140803C022E0209314086A01AD -:100180007B01EC01B701A6014150510961097109D8 -:10019000CD28CE28CF28F1F683E08093140880E0A4 -:1001A00090E005C081E090E002C08FEF9FEFDF910B -:1001B000CF91FF90EF90DF90CF9008958093170834 -:1001C0008091150886FFFCCF8091150884FF06C03A -:1001D00083E08093140881E090E0089583E08093A9 -:1001E000140880E090E00895E0E0F4E080818B7FE7 -:1001F00080838081877F8083A0E1B8E08BE01696C2 -:100200008C93169781E013968C93139715968C9385 -:1002100088E0828B838B80E090E00895EF92FF92DC -:100220000F931F93CF938C017B01C42F842F880FD2 -:10023000C5DF009749F4F801E082F1824C2F50E0CD -:10024000440F551F428302C08EEF9FEFCF911F9145 -:100250000F91FF90EF9008950F93009781F0FC01AC -:10026000002319F0013031F00DC0828161DF80E0A0 -:1002700090E00AC0828113DF80E090E005C08FEF3C -:100280009FEF02C080E090E00F910895CF93DF933D -:100290001F92CDB7DEB7AC01F894E0E0F8E02CE6B1 -:1002A00035E02087318793E0978390EC9683611542 -:1002B000710511F4452B39F080E8809305086093AF -:1002C000063F7093073F80910408882324F48091AF -:1002D000000889838981E0E0F4E080E4818380E89C -:1002E000828378940F90DF91CF91089590910408C4 -:1002F00095FFFCCF8093020808951F920F920FB6CE -:100300000F9211242F933F934F935F936F937F939B -:100310008F939F93AF93BF93EF93FF93CF93DF930D -:100320001F92CDB7DEB7E091063FF091073F3097BF -:1003300019F08091000809958091000889838981CE -:10034000D5DF0F90DF91CF91FF91EF91BF91AF91EA -:100350009F918F917F916F915F914F913F912F91DD -:100360000F900FBE0F901F901895E091413FE23023 -:1003700029F128F4EE2341F0E13091F040C0E33060 -:1003800059F1E430B9F13BC0F0E0EC59F647208177 -:1003900091E0281390E09093413F81E090E0089530 -:1003A000F0E0EC59F6479081891302C082E001C069 -:1003B00080E08093413F81E090E00895F0E0EC59C7 -:1003C000F6479081891302C083E001C080E08093EA -:1003D000413F81E090E00895F0E0EC59F6479081CC -:1003E000891302C084E001C080E08093413F81E036 -:1003F00090E008951092413F80E090E008951092BF -:10040000413F81E090E008959091403F9330C1F0EA -:1004100028F4992341F0913069F042C09430C1F042 -:10042000953001F13DC0A1DF892BD1F581E08093AA -:10043000403F36C08093093F83E08093403F30C007 -:10044000E9E0FFE31182828384E08093403F28C08B -:10045000E9E0FFE321813281282B2183328395E07B -:100460009093403F9091083FE92FF0E0E75FF04C18 -:10047000838381E0890F8093083F9091093F98170B -:1004800078F4E091443FF091453F6CE07FE3809148 -:10049000423F9091433F09951092403F1092083F90 -:1004A00080E090E00895009759F06115710541F0E2 -:1004B0008093423F9093433F6093443F7093453F06 -:1004C0000895FC0111820895FC0164837583F9DFAE -:1004D00080E090E00895CF93DF936115710571F08E -:1004E000009761F0EC01198218826A837B8364E6CD -:1004F00072E0D9DF64E072E0CE01C8DEDF91CF9117 -:100500000895CF93DF93CDB7DEB7CB55D109CDBFDB -:10051000DEBF80E090E068DE40E660E070E0CE01A3 -:1005200001967CDE4CE251E0BE016F5F7F4FCE0151 -:1005300004964BD0BE016C5F7F4F86E49FE3CBDF18 -:100540002AE684E091E0215080409040E1F700C02D -:10055000F7CF8F929F92AF92BF92CF92DF92EF929E -:10056000FF920F931F93CF93DF93EC01862E5A01D6 -:1005700068017901C8010196C9D0982E192FFC0194 -:100580008192CF01A601B501E2D1EA81FB81A701E9 -:1005900096012F5F3F4F4F4F5F4F01E0692D712F45 -:1005A000888199810995892D912F48D180E090E02B -:1005B000DF91CF911F910F91FF90EF90DF90CF903F -:1005C000BF90AF909F908F900895EF92FF920F93FE -:1005D0001F93CF93DF931F92CDB7DEB7009709F437 -:1005E00085C06115710509F484C04115510509F4F0 -:1005F00083C07C01DC016D937C93119712964D931F -:100600005C931397FC01349684E5DF011D928A9573 -:10061000E9F78FEF898301E010E020E030E0AE01E0 -:100620004F5F5F4F63E0C70194DF80E8898301E09B -:1006300010E020E030E0AE014F5F5F4F60E1C701A6 -:1006400088DF01E010E020E030E0AE014F5F5F4F57 -:1006500061E1C7017EDF01E010E020E030E0AE01A3 -:100660004F5F5F4F62E1C70174DF01E010E020E0FF -:1006700030E0AE014F5F5F4F63E1C7016ADF01E029 -:1006800010E020E030E0AE014F5F5F4F64E1C70152 -:1006900060DF01E010E020E030E0AE014F5F5F4F2F -:1006A00065E1C70156DF01E010E020E030E0AE0177 -:1006B0004F5F5F4F66E1C7014CDF01E010E020E0D3 -:1006C00030E0AE014F5F5F4F67E1C70142DF80EC72 -:1006D000898301E010E020E030E0AE014F5F5F4F22 -:1006E00067EBC70136DF80E090E008C08FEF9FEF37 -:1006F00005C08FEF9FEF02C08FEF9FEF0F90DF914C -:10070000CF911F910F91FF90EF9008950F931F933A -:10071000CF93DF938230910510F482E090E0E09176 -:100720004E3FF0914F3F20E030E0A0E0B0E0309746 -:1007300019F1408151810281138148175907C8F08E -:100740008417950769F4109731F012960C9312975D -:1007500013961C9327C000934E3F10934F3F22C027 -:100760002115310519F04217530718F49A01BD01FC -:10077000EF01DF01F801DBCF21153105F9F0281B6E -:10078000390B2430310580F48A819B816115710514 -:1007900021F0FB018283938304C080934E3F9093AA -:1007A0004F3FFE01329644C0FE01E20FF31F8193DA -:1007B000919322503109288339833AC020914C3FCC -:1007C00030914D3F232B41F42091023F3091033F64 -:1007D00020934C3F30934D3F2091003F3091013F9B -:1007E0002115310541F42DB73EB74091043F50919A -:1007F000053F241B350BE0914C3FF0914D3FE21734 -:10080000F307A0F42E1B3F0B2817390778F0AC0133 -:100810004E5F5F4F2417350748F04E0F5F1F409320 -:100820004C3F50934D3F8193919302C0E0E0F0E044 -:10083000CF01DF91CF911F910F910895CF93DF9357 -:10084000009709F481C0FC01329712821382A091B3 -:100850004E3FB0914F3F109781F420813181820F3C -:10086000931F20914C3F30914D3F2817390751F588 -:10087000E0934C3FF0934D3F67C0ED0120E030E046 -:10088000CE17DF0740F44A815B819E014115510577 -:10089000F1F0EA01F5CFC283D38340815181840F07 -:1008A000951FC817D90759F488819981840F951F1E -:1008B0000296808391838A819B8182839383211511 -:1008C000310529F4E0934E3FF0934F3F3DC0E901DD -:1008D000EA83FB8349915991C40FD51FEC17FD079B -:1008E00061F480819181840F951F0296E9018883CC -:1008F0009983828193818A839B83E0E0F0E0129662 -:100900008D919C911397009719F0FD01DC01F7CFB1 -:100910008D919C9111979D012E5F3F4F820F931FE8 -:1009200020914C3F30914D3F2817390769F430979B -:1009300029F410924E3F10924F3F02C01282138250 -:10094000A0934C3FB0934D3FDF91CF910895FB01B1 -:10095000DC0102C001900D9241505040D8F708953B -:04096000F894FFCF39 -:050964004F5A31434D24 -:060969000000503F2000D9 +:100040001FE3A0E0BFE3ECE9F1E002C005900D92F0 +:10005000AA31B107D9F72FE3AAE1BFE301C01D928E +:10006000A633B207E1F750D097C0CACFEF92FF9204 +:100070000F931F93CF93DF937C018B01D42FC0E0AC +:1000800007C0F801EC0FF11D6081C70171D0CF5F8F +:10009000CD17B8F3DF91CF911F910F91FF90EF90A3 +:1000A0000895CF93DF93EB015BD08883DF91CF91ED +:1000B00008951F920F920FB60F9211242F933F9322 +:1000C0004F935F936F937F938F939F93AF93BF9360 +:1000D000EF93FF93E0911A3FF0911B3F309719F097 +:1000E000809100080995FF91EF91BF91AF919F9189 +:1000F0008F917F916F915F914F913F912F910F90D1 +:100100000FBE0F901F90189541E06DE17FE380E0F6 +:1001100090E0C7DF2AE684E091E0215080409040E3 +:10012000E1F700C041E060E07FE380E090E09EDF27 +:10013000809108048D3059F480911C3F8F5F80932B +:100140001C3F80911C3F823310F010921C3F2AE626 +:1001500084E091E0215080409040E1F700C0E8CF7A +:1001600003D0808199270895FC01E050FC4E08954A +:10017000262FAF93BF93E0E0F0E1328131FDFDCF58 +:10018000DC01A050BC4E2C932DE924BF23E020833A +:0C0190000196BF91AF910895F894FFCF45 +:10019C0055000000000000000000000000000000FE +:0A01AC000000000000000000000049 :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 104f7ca..eed200e 100644 --- a/storno_cqp6xx_digital_xtal/Debug/storno_cqp6xx_digital_xtal.lss +++ b/storno_cqp6xx_digital_xtal/Debug/storno_cqp6xx_digital_xtal.lss @@ -3,33 +3,31 @@ storno_cqp6xx_digital_xtal.elf: file format elf32-avr Sections: Idx Name Size VMA LMA File off Algn - 0 .data 00000006 00803f00 00000969 00000a1d 2**0 + 0 .data 0000001a 00803f00 0000019c 00000230 2**0 CONTENTS, ALLOC, LOAD, DATA - 1 .text 00000964 00000000 00000000 000000b4 2**1 + 1 .text 0000019c 00000000 00000000 00000094 2**1 CONTENTS, ALLOC, LOAD, READONLY, CODE - 2 .rodata 00000005 00008964 00000964 00000a18 2**0 - CONTENTS, ALLOC, LOAD, READONLY, DATA - 3 .bss 0000004a 00803f06 00803f06 00000a23 2**0 + 2 .bss 0000001c 00803f1a 00803f1a 0000024a 2**0 ALLOC - 4 .comment 00000030 00000000 00000000 00000a23 2**0 + 3 .comment 00000030 00000000 00000000 0000024a 2**0 CONTENTS, READONLY - 5 .note.gnu.avr.deviceinfo 0000003c 00000000 00000000 00000a54 2**2 + 4 .note.gnu.avr.deviceinfo 0000003c 00000000 00000000 0000027c 2**2 CONTENTS, READONLY - 6 .debug_aranges 000001b8 00000000 00000000 00000a90 2**0 + 5 .debug_aranges 000000c8 00000000 00000000 000002b8 2**3 CONTENTS, READONLY, DEBUGGING - 7 .debug_info 0000496c 00000000 00000000 00000c48 2**0 + 6 .debug_info 00001e3d 00000000 00000000 00000380 2**0 CONTENTS, READONLY, DEBUGGING - 8 .debug_abbrev 00001bfd 00000000 00000000 000055b4 2**0 + 7 .debug_abbrev 00001565 00000000 00000000 000021bd 2**0 CONTENTS, READONLY, DEBUGGING - 9 .debug_line 000012f2 00000000 00000000 000071b1 2**0 + 8 .debug_line 000007d0 00000000 00000000 00003722 2**0 CONTENTS, READONLY, DEBUGGING - 10 .debug_frame 00000558 00000000 00000000 000084a4 2**2 + 9 .debug_frame 00000140 00000000 00000000 00003ef4 2**2 CONTENTS, READONLY, DEBUGGING - 11 .debug_str 00002131 00000000 00000000 000089fc 2**0 + 10 .debug_str 00000e53 00000000 00000000 00004034 2**0 CONTENTS, READONLY, DEBUGGING - 12 .debug_loc 00001c80 00000000 00000000 0000ab2d 2**0 + 11 .debug_loc 00000349 00000000 00000000 00004e87 2**0 CONTENTS, READONLY, DEBUGGING - 13 .debug_ranges 00000158 00000000 00000000 0000c7ad 2**0 + 12 .debug_ranges 00000058 00000000 00000000 000051d0 2**0 CONTENTS, READONLY, DEBUGGING Disassembly of section .text: @@ -57,7 +55,7 @@ Disassembly of section .text: 26: 21 c0 rjmp .+66 ; 0x6a <__bad_interrupt> 28: 20 c0 rjmp .+64 ; 0x6a <__bad_interrupt> 2a: 1f c0 rjmp .+62 ; 0x6a <__bad_interrupt> - 2c: 66 c1 rjmp .+716 ; 0x2fa <__vector_22> + 2c: 42 c0 rjmp .+132 ; 0xb2 <__vector_22> 2e: 1d c0 rjmp .+58 ; 0x6a <__bad_interrupt> 30: 1c c0 rjmp .+56 ; 0x6a <__bad_interrupt> 32: 1b c0 rjmp .+54 ; 0x6a <__bad_interrupt> @@ -70,1703 +68,273 @@ Disassembly of section .text: 3c: df e3 ldi r29, 0x3F ; 63 3e: de bf out 0x3e, r29 ; 62 -00000040 <__do_clear_bss>: - 40: 2f e3 ldi r18, 0x3F ; 63 - 42: a6 e0 ldi r26, 0x06 ; 6 +00000040 <__do_copy_data>: + 40: 1f e3 ldi r17, 0x3F ; 63 + 42: a0 e0 ldi r26, 0x00 ; 0 44: bf e3 ldi r27, 0x3F ; 63 - 46: 01 c0 rjmp .+2 ; 0x4a <.do_clear_bss_start> + 46: ec e9 ldi r30, 0x9C ; 156 + 48: f1 e0 ldi r31, 0x01 ; 1 + 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 + 52: b1 07 cpc r27, r17 + 54: d9 f7 brne .-10 ; 0x4c <__do_copy_data+0xc> -00000048 <.do_clear_bss_loop>: - 48: 1d 92 st X+, r1 +00000056 <__do_clear_bss>: + 56: 2f e3 ldi r18, 0x3F ; 63 + 58: aa e1 ldi r26, 0x1A ; 26 + 5a: bf e3 ldi r27, 0x3F ; 63 + 5c: 01 c0 rjmp .+2 ; 0x60 <.do_clear_bss_start> -0000004a <.do_clear_bss_start>: - 4a: a0 35 cpi r26, 0x50 ; 80 - 4c: b2 07 cpc r27, r18 - 4e: e1 f7 brne .-8 ; 0x48 <.do_clear_bss_loop> +0000005e <.do_clear_bss_loop>: + 5e: 1d 92 st X+, r1 -00000050 <__do_copy_data>: - 50: 1f e3 ldi r17, 0x3F ; 63 - 52: a0 e0 ldi r26, 0x00 ; 0 - 54: bf e3 ldi r27, 0x3F ; 63 - 56: e9 e6 ldi r30, 0x69 ; 105 - 58: f9 e0 ldi r31, 0x09 ; 9 - 5a: 02 c0 rjmp .+4 ; 0x60 <__do_copy_data+0x10> - 5c: 05 90 lpm r0, Z+ - 5e: 0d 92 st X+, r0 - 60: a6 30 cpi r26, 0x06 ; 6 - 62: b1 07 cpc r27, r17 - 64: d9 f7 brne .-10 ; 0x5c <__do_copy_data+0xc> - 66: 4d d2 rcall .+1178 ; 0x502
- 68: 7b c4 rjmp .+2294 ; 0x960 <_exit> +00000060 <.do_clear_bss_start>: + 60: a6 33 cpi r26, 0x36 ; 54 + 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> 0000006a <__bad_interrupt>: 6a: ca cf rjmp .-108 ; 0x0 <__vectors> -0000006c : - *data = TWI0.MDATA; - - // Send stop condition - TWI0.MCTRLB = TWI_MCMD_STOP_gc; - return 0; // Success -} - 6c: e0 e1 ldi r30, 0x10 ; 16 - 6e: f8 e0 ldi r31, 0x08 ; 8 - 70: 84 81 ldd r24, Z+4 ; 0x04 - 72: 88 60 ori r24, 0x08 ; 8 - 74: 84 83 std Z+4, r24 ; 0x04 - 76: 81 e0 ldi r24, 0x01 ; 1 - 78: 85 83 std Z+5, r24 ; 0x05 - 7a: 08 95 ret +0000006c : + */ +#include "avr_eeprom_driver.h" +#include +#include -0000007c : - 7c: 80 93 17 08 sts 0x0817, r24 ; 0x800817 - 80: 80 91 15 08 lds r24, 0x0815 ; 0x800815 - 84: 80 7c andi r24, 0xC0 ; 192 - 86: e1 f3 breq .-8 ; 0x80 <__EEPROM_REGION_LENGTH__> - 88: 90 91 15 08 lds r25, 0x0815 ; 0x800815 - 8c: 89 2f mov r24, r25 - 8e: 80 71 andi r24, 0x10 ; 16 - 90: 94 ff sbrs r25, 4 - 92: 04 c0 rjmp .+8 ; 0x9c <__EEPROM_REGION_LENGTH__+0x1c> - 94: 83 e0 ldi r24, 0x03 ; 3 - 96: 80 93 14 08 sts 0x0814, r24 ; 0x800814 - 9a: 81 e0 ldi r24, 0x01 ; 1 - 9c: 08 95 ret - -0000009e : - -int i2c_write(uint8_t dev_addr, void *data, uint32_t len){ - 9e: cf 92 push r12 - a0: df 92 push r13 - a2: ef 92 push r14 - a4: ff 92 push r15 - a6: cf 93 push r28 - a8: df 93 push r29 - aa: eb 01 movw r28, r22 - ac: 69 01 movw r12, r18 - ae: 7a 01 movw r14, r20 +void cm_EEPROM_write(uint8_t* address, uint8_t *data, uint8_t length) { + 6c: ef 92 push r14 + 6e: ff 92 push r15 + 70: 0f 93 push r16 + 72: 1f 93 push r17 + 74: cf 93 push r28 + 76: df 93 push r29 + 78: 7c 01 movw r14, r24 + 7a: 8b 01 movw r16, r22 + 7c: d4 2f mov r29, r20 - // Check length - if(len == 0) return CM_I2C_NOK; - b0: 23 2b or r18, r19 - b2: 24 2b or r18, r20 - b4: 25 2b or r18, r21 - b6: 81 f1 breq .+96 ; 0x118 <__DATA_REGION_LENGTH__+0x18> - // Make a pointer to data - uint8_t *dp = data; - - // Send register address to I2C device, we would like to read from.. - if(i2c_write_devAddr(dev_addr) != CM_I2C_OK)return CM_I2C_NOK; - b8: e1 df rcall .-62 ; 0x7c - ba: 81 11 cpse r24, r1 - bc: 30 c0 rjmp .+96 ; 0x11e <__DATA_REGION_LENGTH__+0x1e> - - do - { - // Prepare and send new data. - TWI0.MDATA = *dp++; - be: 9e 01 movw r18, r28 - c0: 2f 5f subi r18, 0xFF ; 255 - c2: 3f 4f sbci r19, 0xFF ; 255 - c4: 88 81 ld r24, Y - c6: 80 93 18 08 sts 0x0818, r24 ; 0x800818 + 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> - while (!(TWI0.MSTATUS & TWI_WIF_bm)); - ca: 80 91 15 08 lds r24, 0x0815 ; 0x800815 - ce: 86 ff sbrs r24, 6 - d0: fc cf rjmp .-8 ; 0xca + 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 +#include + +void cm_EEPROM_write(uint8_t* address, uint8_t *data, uint8_t length) { - if (TWI0.MSTATUS & TWI_RXACK_bm) { - d2: 80 91 15 08 lds r24, 0x0815 ; 0x800815 - d6: 84 ff sbrs r24, 4 - d8: 06 c0 rjmp .+12 ; 0xe6 - // NACK received - TWI0.MCTRLB = TWI_MCMD_STOP_gc; // Send stop condition - da: 83 e0 ldi r24, 0x03 ; 3 - dc: 80 93 14 08 sts 0x0814, r24 ; 0x800814 - return 1; // Error: NACK received - e0: 81 e0 ldi r24, 0x01 ; 1 - e2: 90 e0 ldi r25, 0x00 ; 0 - e4: 1e c0 rjmp .+60 ; 0x122 <__DATA_REGION_LENGTH__+0x22> - } + + 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> + //NVMCTRL.CTRLA = NVMCTRL_CMD_PAGEERASEWRITE_gc; - // Check for bus error and reset if it happens.. - if (TWI0.MSTATUS & (TWI_ARBLOST_bm | TWI_BUSERR_bm)) { - e6: 80 91 15 08 lds r24, 0x0815 ; 0x800815 - ea: 8c 70 andi r24, 0x0C ; 12 - ec: 21 f0 breq .+8 ; 0xf6 - i2c_reset(); - ee: be df rcall .-132 ; 0x6c - return 1; - f0: 81 e0 ldi r24, 0x01 ; 1 - f2: 90 e0 ldi r25, 0x00 ; 0 - f4: 16 c0 rjmp .+44 ; 0x122 <__DATA_REGION_LENGTH__+0x22> - } - - if (TWI0.MSTATUS & TWI_RXACK_bm) - f6: 80 91 15 08 lds r24, 0x0815 ; 0x800815 - fa: 84 fd sbrc r24, 4 - fc: 07 c0 rjmp .+14 ; 0x10c <__DATA_REGION_LENGTH__+0xc> - break; - - }while(--len); - fe: 81 e0 ldi r24, 0x01 ; 1 - 100: c8 1a sub r12, r24 - 102: d1 08 sbc r13, r1 - 104: e1 08 sbc r14, r1 - 106: f1 08 sbc r15, r1 - if(i2c_write_devAddr(dev_addr) != CM_I2C_OK)return CM_I2C_NOK; - - do - { - // Prepare and send new data. - TWI0.MDATA = *dp++; - 108: e9 01 movw r28, r18 - } - - if (TWI0.MSTATUS & TWI_RXACK_bm) - break; - - }while(--len); - 10a: c9 f6 brne .-78 ; 0xbe - - // Send stop condition - TWI0.MCTRLB = TWI_MCMD_STOP_gc; - 10c: 83 e0 ldi r24, 0x03 ; 3 - 10e: 80 93 14 08 sts 0x0814, r24 ; 0x800814 - - - return CM_I2C_OK; - 112: 80 e0 ldi r24, 0x00 ; 0 - 114: 90 e0 ldi r25, 0x00 ; 0 - 116: 05 c0 rjmp .+10 ; 0x122 <__DATA_REGION_LENGTH__+0x22> -} - -int i2c_write(uint8_t dev_addr, void *data, uint32_t len){ - - // Check length - if(len == 0) return CM_I2C_NOK; - 118: 8f ef ldi r24, 0xFF ; 255 - 11a: 9f ef ldi r25, 0xFF ; 255 - 11c: 02 c0 rjmp .+4 ; 0x122 <__DATA_REGION_LENGTH__+0x22> - - // Make a pointer to data - uint8_t *dp = data; - - // Send register address to I2C device, we would like to read from.. - if(i2c_write_devAddr(dev_addr) != CM_I2C_OK)return CM_I2C_NOK; - 11e: 8f ef ldi r24, 0xFF ; 255 - 120: 9f ef ldi r25, 0xFF ; 255 - // Send stop condition - TWI0.MCTRLB = TWI_MCMD_STOP_gc; - - - return CM_I2C_OK; -} - 122: df 91 pop r29 - 124: cf 91 pop r28 - 126: ff 90 pop r15 - 128: ef 90 pop r14 - 12a: df 90 pop r13 - 12c: cf 90 pop r12 - 12e: 08 95 ret - -00000130 : - -int i2c_read(uint8_t dev_addr, void *data, uint32_t len){ - 130: cf 92 push r12 - 132: df 92 push r13 - 134: ef 92 push r14 - 136: ff 92 push r15 - 138: cf 93 push r28 - 13a: df 93 push r29 - 13c: eb 01 movw r28, r22 - 13e: 69 01 movw r12, r18 - 140: 7a 01 movw r14, r20 - - uint8_t *dp = data; - - if (len == 0) - 142: 23 2b or r18, r19 - 144: 24 2b or r18, r20 - 146: 25 2b or r18, r21 - 148: 69 f1 breq .+90 ; 0x1a4 - return 1; - - // Send register address to I2C device, we would like to read from.. - if(i2c_write_devAddr(dev_addr | 1) != CM_I2C_OK)return CM_I2C_NOK; - 14a: 81 60 ori r24, 0x01 ; 1 - 14c: 97 df rcall .-210 ; 0x7c - 14e: 88 23 and r24, r24 - 150: c9 f0 breq .+50 ; 0x184 - 152: 2b c0 rjmp .+86 ; 0x1aa - - while (len--) { - - while (!(TWI0.MSTATUS & (TWI_WIF_bm | TWI_RIF_bm))); - 154: 80 91 15 08 lds r24, 0x0815 ; 0x800815 - 158: 80 7c andi r24, 0xC0 ; 192 - 15a: e1 f3 breq .-8 ; 0x154 - - *dp++ = TWI0.MDATA; - 15c: ce 01 movw r24, r28 - 15e: 01 96 adiw r24, 0x01 ; 1 - 160: 20 91 18 08 lds r18, 0x0818 ; 0x800818 - 164: 28 83 st Y, r18 - if (len == 0) { - 166: 41 15 cp r20, r1 - 168: 51 05 cpc r21, r1 - 16a: 61 05 cpc r22, r1 - 16c: 71 05 cpc r23, r1 - 16e: 21 f4 brne .+8 ; 0x178 - TWI0.MCTRLB = TWI_ACKACT_NACK_gc; - 170: 24 e0 ldi r18, 0x04 ; 4 - 172: 20 93 14 08 sts 0x0814, r18 ; 0x800814 - 176: 03 c0 rjmp .+6 ; 0x17e - } else { - TWI0.MCTRLB = TWI_ACKACT_ACK_gc | TWI_MCMD_RECVTRANS_gc; - 178: 22 e0 ldi r18, 0x02 ; 2 - 17a: 20 93 14 08 sts 0x0814, r18 ; 0x800814 - 17e: 6a 01 movw r12, r20 - 180: 7b 01 movw r14, r22 - - - return CM_I2C_OK; -} - -int i2c_read(uint8_t dev_addr, void *data, uint32_t len){ - 182: ec 01 movw r28, r24 - return 1; - - // Send register address to I2C device, we would like to read from.. - if(i2c_write_devAddr(dev_addr | 1) != CM_I2C_OK)return CM_I2C_NOK; - - while (len--) { - 184: b7 01 movw r22, r14 - 186: a6 01 movw r20, r12 - 188: 41 50 subi r20, 0x01 ; 1 - 18a: 51 09 sbc r21, r1 - 18c: 61 09 sbc r22, r1 - 18e: 71 09 sbc r23, r1 - 190: cd 28 or r12, r13 - 192: ce 28 or r12, r14 - 194: cf 28 or r12, r15 - 196: f1 f6 brne .-68 ; 0x154 - TWI0.MCTRLB = TWI_ACKACT_ACK_gc | TWI_MCMD_RECVTRANS_gc; - } - } - - // Send stop condition - TWI0.MCTRLB = TWI_MCMD_STOP_gc; - 198: 83 e0 ldi r24, 0x03 ; 3 - 19a: 80 93 14 08 sts 0x0814, r24 ; 0x800814 - - return 0; - 19e: 80 e0 ldi r24, 0x00 ; 0 - 1a0: 90 e0 ldi r25, 0x00 ; 0 - 1a2: 05 c0 rjmp .+10 ; 0x1ae -int i2c_read(uint8_t dev_addr, void *data, uint32_t len){ - - uint8_t *dp = data; - - if (len == 0) - return 1; - 1a4: 81 e0 ldi r24, 0x01 ; 1 - 1a6: 90 e0 ldi r25, 0x00 ; 0 - 1a8: 02 c0 rjmp .+4 ; 0x1ae - - // Send register address to I2C device, we would like to read from.. - if(i2c_write_devAddr(dev_addr | 1) != CM_I2C_OK)return CM_I2C_NOK; - 1aa: 8f ef ldi r24, 0xFF ; 255 - 1ac: 9f ef ldi r25, 0xFF ; 255 - TWI0.MCTRLB = TWI_MCMD_STOP_gc; - - return 0; - - -} - 1ae: df 91 pop r29 - 1b0: cf 91 pop r28 - 1b2: ff 90 pop r15 - 1b4: ef 90 pop r14 - 1b6: df 90 pop r13 - 1b8: cf 90 pop r12 - 1ba: 08 95 ret - -000001bc : - -int i2c_IsDeviceReady(uint8_t dev_addr){ - - TWI0.MADDR = dev_addr | 0; - 1bc: 80 93 17 08 sts 0x0817, r24 ; 0x800817 - - // Wait for acknowledgment - while (!(TWI0.MSTATUS & TWI_WIF_bm)); - 1c0: 80 91 15 08 lds r24, 0x0815 ; 0x800815 - 1c4: 86 ff sbrs r24, 6 - 1c6: fc cf rjmp .-8 ; 0x1c0 - - if (TWI0.MSTATUS & TWI_RXACK_bm) { - 1c8: 80 91 15 08 lds r24, 0x0815 ; 0x800815 - 1cc: 84 ff sbrs r24, 4 - 1ce: 06 c0 rjmp .+12 ; 0x1dc - // NACK received - TWI0.MCTRLB = TWI_MCMD_STOP_gc; // Send stop condition - 1d0: 83 e0 ldi r24, 0x03 ; 3 - 1d2: 80 93 14 08 sts 0x0814, r24 ; 0x800814 - return 1; // Error: NACK received - 1d6: 81 e0 ldi r24, 0x01 ; 1 - 1d8: 90 e0 ldi r25, 0x00 ; 0 - 1da: 08 95 ret + /* Wait until the write is complete */ + //while (NVMCTRL.STATUS & NVMCTRL_EEBUSY_bm); } - - // Send stop condition - TWI0.MCTRLB = TWI_MCMD_STOP_gc; - 1dc: 83 e0 ldi r24, 0x03 ; 3 - 1de: 80 93 14 08 sts 0x0814, r24 ; 0x800814 - return CM_I2C_OK; // Success - 1e2: 80 e0 ldi r24, 0x00 ; 0 - 1e4: 90 e0 ldi r25, 0x00 ; 0 - } - 1e6: 08 95 ret + 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 -000001e8 : +000000a2 : -int cm_i2c_init(void *i2c_inst){ +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 - PORTA.DIR &= ~(1 << 2); // Clear bit 2 (PA2) - 1e8: e0 e0 ldi r30, 0x00 ; 0 - 1ea: f4 e0 ldi r31, 0x04 ; 4 - 1ec: 80 81 ld r24, Z - 1ee: 8b 7f andi r24, 0xFB ; 251 - 1f0: 80 83 st Z, r24 - PORTA.DIR &= ~(1 << 3); // Clear bit 3 (PA3) - 1f2: 80 81 ld r24, Z - 1f4: 87 7f andi r24, 0xF7 ; 247 - 1f6: 80 83 st Z, r24 + data[0] = eeprom_read_byte(address); + a8: 5b d0 rcall .+182 ; 0x160 + aa: 88 83 st Y, r24 - // Set the baud rate for 100kHz with a typical rise time of 300 ns - TWI0.MBAUD = 11; - 1f8: a0 e1 ldi r26, 0x10 ; 16 - 1fa: b8 e0 ldi r27, 0x08 ; 8 - 1fc: 8b e0 ldi r24, 0x0B ; 11 - 1fe: 16 96 adiw r26, 0x06 ; 6 - 200: 8c 93 st X, r24 - 202: 16 97 sbiw r26, 0x06 ; 6 - - // Enable the TWI master and set it to enable operation - TWI0.MCTRLA = TWI_ENABLE_bm; - 204: 81 e0 ldi r24, 0x01 ; 1 - 206: 13 96 adiw r26, 0x03 ; 3 - 208: 8c 93 st X, r24 - 20a: 13 97 sbiw r26, 0x03 ; 3 + // Directly read the data from NVMCTRL.DATA + data[i] = NVMCTRL.DATA; - /* Set bus state idle */ - TWI0.MSTATUS = TWI_BUSSTATE_IDLE_gc; - 20c: 15 96 adiw r26, 0x05 ; 5 - 20e: 8c 93 st X, r24 - - // Enable the internal pull-ups for PA2 (SDA) and PA3 (SCL) - PORTA.PIN2CTRL = PORT_PULLUPEN_bm; - 210: 88 e0 ldi r24, 0x08 ; 8 - 212: 82 8b std Z+18, r24 ; 0x12 - PORTA.PIN3CTRL = PORT_PULLUPEN_bm; - 214: 83 8b std Z+19, r24 ; 0x13 - return CM_I2C_OK; + }*/ } - 216: 80 e0 ldi r24, 0x00 ; 0 - 218: 90 e0 ldi r25, 0x00 ; 0 - 21a: 08 95 ret + ac: df 91 pop r29 + ae: cf 91 pop r28 + b0: 08 95 ret -0000021c : - - - -int cm_i2c_addDev(cm_i2c_device_t *inst, void *i2c_inst, uint8_t dev_addr){ - 21c: ef 92 push r14 - 21e: ff 92 push r15 - 220: 0f 93 push r16 - 222: 1f 93 push r17 - 224: cf 93 push r28 - 226: 8c 01 movw r16, r24 - 228: 7b 01 movw r14, r22 - 22a: c4 2f mov r28, r20 - - //if(i2c_inst == NULL) return CM_I2C_NOK; - - // Check if device responds! - if(i2c_IsDeviceReady((dev_addr << 1)) != CM_I2C_OK)return CM_I2C_NO_DEVICE; - 22c: 84 2f mov r24, r20 - 22e: 88 0f add r24, r24 - 230: c5 df rcall .-118 ; 0x1bc - 232: 00 97 sbiw r24, 0x00 ; 0 - 234: 49 f4 brne .+18 ; 0x248 - - // add device info if device responds! - inst->i2c_transfer_inst = i2c_inst; - 236: f8 01 movw r30, r16 - 238: e0 82 st Z, r14 - 23a: f1 82 std Z+1, r15 ; 0x01 - inst->dev_addr = (dev_addr << 1) & 0b11111110; - 23c: 4c 2f mov r20, r28 - 23e: 50 e0 ldi r21, 0x00 ; 0 - 240: 44 0f add r20, r20 - 242: 55 1f adc r21, r21 - 244: 42 83 std Z+2, r20 ; 0x02 - - return CM_I2C_OK; - 246: 02 c0 rjmp .+4 ; 0x24c -int cm_i2c_addDev(cm_i2c_device_t *inst, void *i2c_inst, uint8_t dev_addr){ - - //if(i2c_inst == NULL) return CM_I2C_NOK; - - // Check if device responds! - if(i2c_IsDeviceReady((dev_addr << 1)) != CM_I2C_OK)return CM_I2C_NO_DEVICE; - 248: 8e ef ldi r24, 0xFE ; 254 - 24a: 9f ef ldi r25, 0xFF ; 255 - // add device info if device responds! - inst->i2c_transfer_inst = i2c_inst; - inst->dev_addr = (dev_addr << 1) & 0b11111110; - - return CM_I2C_OK; -} - 24c: cf 91 pop r28 - 24e: 1f 91 pop r17 - 250: 0f 91 pop r16 - 252: ff 90 pop r15 - 254: ef 90 pop r14 - 256: 08 95 ret - -00000258 : - - -int cm_i2c_transfer(cm_i2c_device_t *inst, uint8_t *data, uint32_t len, i2c_setget_cm_t set_get){ - 258: 0f 93 push r16 - - if(inst == NULL) return CM_I2C_NOK; - 25a: 00 97 sbiw r24, 0x00 ; 0 - 25c: 81 f0 breq .+32 ; 0x27e - 25e: fc 01 movw r30, r24 - - // Check if device responds! - //if(i2c_IsDeviceReady(inst->dev_addr) != CM_I2C_OK)return CM_I2C_NO_DEVICE; - - switch(set_get){ - 260: 00 23 and r16, r16 - 262: 19 f0 breq .+6 ; 0x26a - 264: 01 30 cpi r16, 0x01 ; 1 - 266: 31 f0 breq .+12 ; 0x274 - 268: 0d c0 rjmp .+26 ; 0x284 - - case I2C_CM_GET: - //HAL_I2C_Master_Receive(inst->i2c_transfer_inst, inst->dev_addr, data, len, 1); - i2c_read(inst->dev_addr, data, len); - 26a: 82 81 ldd r24, Z+2 ; 0x02 - 26c: 61 df rcall .-318 ; 0x130 - break; - - - } - - return CM_I2C_OK; - 26e: 80 e0 ldi r24, 0x00 ; 0 - 270: 90 e0 ldi r25, 0x00 ; 0 - switch(set_get){ - - case I2C_CM_GET: - //HAL_I2C_Master_Receive(inst->i2c_transfer_inst, inst->dev_addr, data, len, 1); - i2c_read(inst->dev_addr, data, len); - break; - 272: 0a c0 rjmp .+20 ; 0x288 - - case I2C_CM_SET: - //HAL_I2C_Master_Transmit(inst->i2c_transfer_inst, inst->dev_addr, data, len, 1); - i2c_write(inst->dev_addr, data, len); - 274: 82 81 ldd r24, Z+2 ; 0x02 - 276: 13 df rcall .-474 ; 0x9e - break; - - - } - - return CM_I2C_OK; - 278: 80 e0 ldi r24, 0x00 ; 0 - 27a: 90 e0 ldi r25, 0x00 ; 0 - break; - - case I2C_CM_SET: - //HAL_I2C_Master_Transmit(inst->i2c_transfer_inst, inst->dev_addr, data, len, 1); - i2c_write(inst->dev_addr, data, len); - break; - 27c: 05 c0 rjmp .+10 ; 0x288 -} - - -int cm_i2c_transfer(cm_i2c_device_t *inst, uint8_t *data, uint32_t len, i2c_setget_cm_t set_get){ - - if(inst == NULL) return CM_I2C_NOK; - 27e: 8f ef ldi r24, 0xFF ; 255 - 280: 9f ef ldi r25, 0xFF ; 255 - 282: 02 c0 rjmp .+4 ; 0x288 - break; - - - } - - return CM_I2C_OK; - 284: 80 e0 ldi r24, 0x00 ; 0 - 286: 90 e0 ldi r25, 0x00 ; 0 - -} - 288: 0f 91 pop r16 - 28a: 08 95 ret - -0000028c : - - -} - - -void cm_uart_init(void *rtx_inst, get_UART_Event_fpt uart_rx_evt_fp){ - 28c: cf 93 push r28 - 28e: df 93 push r29 - 290: 1f 92 push r1 - 292: cd b7 in r28, 0x3d ; 61 - 294: de b7 in r29, 0x3e ; 62 - 296: ac 01 movw r20, r24 - - //For interrupt-driven USART operation, global interrupts must be disabled during the initialization - cli(); - 298: f8 94 cli - - // Calculate and set baud rate register (3.33 MHz / (16 * 9600) - 1) - uint16_t baud = 1388;//(F_CPU / (16 * BAUD_RATE)) - 1; - USART0.BAUD = baud; - 29a: e0 e0 ldi r30, 0x00 ; 0 - 29c: f8 e0 ldi r31, 0x08 ; 8 - 29e: 2c e6 ldi r18, 0x6C ; 108 - 2a0: 35 e0 ldi r19, 0x05 ; 5 - 2a2: 20 87 std Z+8, r18 ; 0x08 - 2a4: 31 87 std Z+9, r19 ; 0x09 - - // Configure USART0 for 8-bit data, no parity, 1 stop bit - USART0.CTRLC = USART_CMODE_ASYNCHRONOUS_gc | // Asynchronous mode - 2a6: 93 e0 ldi r25, 0x03 ; 3 - 2a8: 97 83 std Z+7, r25 ; 0x07 - USART_CHSIZE_8BIT_gc | // 8-bit character size - USART_PMODE_DISABLED_gc; // No parity - - // Enable receiver, transmitter, and receive complete interrupt - USART0.CTRLB = USART_RXEN_bm | // Enable receiver - 2aa: 90 ec ldi r25, 0xC0 ; 192 - 2ac: 96 83 std Z+6, r25 ; 0x06 - USART_TXEN_bm; // Enable transmitter - - if((uart_rx_evt_fp != NULL) || (rtx_inst != NULL)){ - 2ae: 61 15 cp r22, r1 - 2b0: 71 05 cpc r23, r1 - 2b2: 11 f4 brne .+4 ; 0x2b8 - 2b4: 45 2b or r20, r21 - 2b6: 39 f0 breq .+14 ; 0x2c6 - // Enable RX interrupt - USART0.CTRLA = USART_RXCIE_bm; // Enable receive interrupt - 2b8: 80 e8 ldi r24, 0x80 ; 128 - 2ba: 80 93 05 08 sts 0x0805, r24 ; 0x800805 - - s_inst = rtx_inst; - uart_rx_evt_fpt = uart_rx_evt_fp; - 2be: 60 93 06 3f sts 0x3F06, r22 ; 0x803f06 <__data_end> - 2c2: 70 93 07 3f sts 0x3F07, r23 ; 0x803f07 <__data_end+0x1> - } - - - // Clear any existing receive complete interrupt flag by reading RXDATAL - if (USART0.STATUS & USART_RXCIF_bm) { - 2c6: 80 91 04 08 lds r24, 0x0804 ; 0x800804 - 2ca: 88 23 and r24, r24 - 2cc: 24 f4 brge .+8 ; 0x2d6 - volatile uint8_t dummy = USART0.RXDATAL; // Read RXDATAL to clear the flag - 2ce: 80 91 00 08 lds r24, 0x0800 ; 0x800800 - 2d2: 89 83 std Y+1, r24 ; 0x01 - (void)dummy; // Silence unused variable warning - 2d4: 89 81 ldd r24, Y+1 ; 0x01 - } - - PORTA.DIRSET = (1 << 6); // Set PA1 (TX) as output - 2d6: e0 e0 ldi r30, 0x00 ; 0 - 2d8: f4 e0 ldi r31, 0x04 ; 4 - 2da: 80 e4 ldi r24, 0x40 ; 64 - 2dc: 81 83 std Z+1, r24 ; 0x01 - PORTA.DIRCLR = (1 << 7); // Set PA2 (RX) as input - 2de: 80 e8 ldi r24, 0x80 ; 128 - 2e0: 82 83 std Z+2, r24 ; 0x02 - // Enable global interrupts - sei(); - 2e2: 78 94 sei - - -} - 2e4: 0f 90 pop r0 - 2e6: df 91 pop r29 - 2e8: cf 91 pop r28 - 2ea: 08 95 ret - -000002ec : - - -void cm_uart_send(uint8_t data) { - // Wait until the Data Register Empty flag (DREIF) is set, indicating it's ready for new data - while (!(USART0.STATUS & USART_DREIF_bm)); - 2ec: 90 91 04 08 lds r25, 0x0804 ; 0x800804 - 2f0: 95 ff sbrs r25, 5 - 2f2: fc cf rjmp .-8 ; 0x2ec - - // Load the data into the transmit register - USART0.TXDATAL = data; - 2f4: 80 93 02 08 sts 0x0802, r24 ; 0x800802 - 2f8: 08 95 ret - -000002fa <__vector_22>: +000000b2 <__vector_22>: #define BAUD_RATE 9600 static void *s_inst = NULL; get_UART_Event_fpt uart_rx_evt_fpt = NULL; ISR(USART0_RXC_vect) { - 2fa: 1f 92 push r1 - 2fc: 0f 92 push r0 - 2fe: 0f b6 in r0, 0x3f ; 63 - 300: 0f 92 push r0 - 302: 11 24 eor r1, r1 - 304: 2f 93 push r18 - 306: 3f 93 push r19 - 308: 4f 93 push r20 - 30a: 5f 93 push r21 - 30c: 6f 93 push r22 - 30e: 7f 93 push r23 - 310: 8f 93 push r24 - 312: 9f 93 push r25 - 314: af 93 push r26 - 316: bf 93 push r27 - 318: ef 93 push r30 - 31a: ff 93 push r31 - 31c: cf 93 push r28 - 31e: df 93 push r29 - 320: 1f 92 push r1 - 322: cd b7 in r28, 0x3d ; 61 - 324: de b7 in r29, 0x3e ; 62 + 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 // Read received data if(uart_rx_evt_fpt != NULL) uart_rx_evt_fpt(USART0.RXDATAL); - 326: e0 91 06 3f lds r30, 0x3F06 ; 0x803f06 <__data_end> - 32a: f0 91 07 3f lds r31, 0x3F07 ; 0x803f07 <__data_end+0x1> - 32e: 30 97 sbiw r30, 0x00 ; 0 - 330: 19 f0 breq .+6 ; 0x338 <__vector_22+0x3e> - 332: 80 91 00 08 lds r24, 0x0800 ; 0x800800 - 336: 09 95 icall - volatile uint8_t dummy = USART0.RXDATAL; // Read RXDATAL to clear the flag - 338: 80 91 00 08 lds r24, 0x0800 ; 0x800800 - 33c: 89 83 std Y+1, r24 ; 0x01 - cm_uart_send(dummy); - 33e: 89 81 ldd r24, Y+1 ; 0x01 - 340: d5 df rcall .-86 ; 0x2ec - + 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 + //cm_uart_send(USART0.RXDATAL); } - 342: 0f 90 pop r0 - 344: df 91 pop r29 - 346: cf 91 pop r28 - 348: ff 91 pop r31 - 34a: ef 91 pop r30 - 34c: bf 91 pop r27 - 34e: af 91 pop r26 - 350: 9f 91 pop r25 - 352: 8f 91 pop r24 - 354: 7f 91 pop r23 - 356: 6f 91 pop r22 - 358: 5f 91 pop r21 - 35a: 4f 91 pop r20 - 35c: 3f 91 pop r19 - 35e: 2f 91 pop r18 - 360: 0f 90 pop r0 - 362: 0f be out 0x3f, r0 ; 63 - 364: 0f 90 pop r0 - 366: 1f 90 pop r1 - 368: 18 95 reti + 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 -0000036a : - -int cm_msgSync_Byte_DecodeSC(uint8_t rx_byte){ - - static cm_msg_startcode_states_t state = CM_MSGSYNC_STATE_INIT; - - switch (state) - 36a: e0 91 41 3f lds r30, 0x3F41 ; 0x803f41 - 36e: e2 30 cpi r30, 0x02 ; 2 - 370: 29 f1 breq .+74 ; 0x3bc - 372: 28 f4 brcc .+10 ; 0x37e - 374: ee 23 and r30, r30 - 376: 41 f0 breq .+16 ; 0x388 - 378: e1 30 cpi r30, 0x01 ; 1 - 37a: 91 f0 breq .+36 ; 0x3a0 - 37c: 40 c0 rjmp .+128 ; 0x3fe - 37e: e3 30 cpi r30, 0x03 ; 3 - 380: 59 f1 breq .+86 ; 0x3d8 - 382: e4 30 cpi r30, 0x04 ; 4 - 384: b9 f1 breq .+110 ; 0x3f4 - 386: 3b c0 rjmp .+118 ; 0x3fe - { - case CM_MSGSYNC_STATE_INIT: - state = (rx_byte == startCode[state])? CM_MSGSYNC_STATE_2 : CM_MSGSYNC_STATE_INIT; - 388: f0 e0 ldi r31, 0x00 ; 0 - 38a: ec 59 subi r30, 0x9C ; 156 - 38c: f6 47 sbci r31, 0x76 ; 118 - 38e: 20 81 ld r18, Z - 390: 91 e0 ldi r25, 0x01 ; 1 - 392: 28 13 cpse r18, r24 - 394: 90 e0 ldi r25, 0x00 ; 0 - 396: 90 93 41 3f sts 0x3F41, r25 ; 0x803f41 - default: - state = CM_MSGSYNC_STATE_INIT; - break; - } - - return 1; - 39a: 81 e0 ldi r24, 0x01 ; 1 - 39c: 90 e0 ldi r25, 0x00 ; 0 - - switch (state) - { - case CM_MSGSYNC_STATE_INIT: - state = (rx_byte == startCode[state])? CM_MSGSYNC_STATE_2 : CM_MSGSYNC_STATE_INIT; - break; - 39e: 08 95 ret +00000108
: - case CM_MSGSYNC_STATE_2: - state = (rx_byte == startCode[state])? CM_MSGSYNC_STATE_3 : CM_MSGSYNC_STATE_INIT; - 3a0: f0 e0 ldi r31, 0x00 ; 0 - 3a2: ec 59 subi r30, 0x9C ; 156 - 3a4: f6 47 sbci r31, 0x76 ; 118 - 3a6: 90 81 ld r25, Z - 3a8: 89 13 cpse r24, r25 - 3aa: 02 c0 rjmp .+4 ; 0x3b0 - 3ac: 82 e0 ldi r24, 0x02 ; 2 - 3ae: 01 c0 rjmp .+2 ; 0x3b2 - 3b0: 80 e0 ldi r24, 0x00 ; 0 - 3b2: 80 93 41 3f sts 0x3F41, r24 ; 0x803f41 - default: - state = CM_MSGSYNC_STATE_INIT; - break; - } - - return 1; - 3b6: 81 e0 ldi r24, 0x01 ; 1 - 3b8: 90 e0 ldi r25, 0x00 ; 0 - state = (rx_byte == startCode[state])? CM_MSGSYNC_STATE_2 : CM_MSGSYNC_STATE_INIT; - break; - - case CM_MSGSYNC_STATE_2: - state = (rx_byte == startCode[state])? CM_MSGSYNC_STATE_3 : CM_MSGSYNC_STATE_INIT; - break; - 3ba: 08 95 ret - - case CM_MSGSYNC_STATE_3: - state = (rx_byte == startCode[state])? CM_MSGSYNC_STATE_4 : CM_MSGSYNC_STATE_INIT; - 3bc: f0 e0 ldi r31, 0x00 ; 0 - 3be: ec 59 subi r30, 0x9C ; 156 - 3c0: f6 47 sbci r31, 0x76 ; 118 - 3c2: 90 81 ld r25, Z - 3c4: 89 13 cpse r24, r25 - 3c6: 02 c0 rjmp .+4 ; 0x3cc - 3c8: 83 e0 ldi r24, 0x03 ; 3 - 3ca: 01 c0 rjmp .+2 ; 0x3ce - 3cc: 80 e0 ldi r24, 0x00 ; 0 - 3ce: 80 93 41 3f sts 0x3F41, r24 ; 0x803f41 - default: - state = CM_MSGSYNC_STATE_INIT; - break; - } - - return 1; - 3d2: 81 e0 ldi r24, 0x01 ; 1 - 3d4: 90 e0 ldi r25, 0x00 ; 0 - state = (rx_byte == startCode[state])? CM_MSGSYNC_STATE_3 : CM_MSGSYNC_STATE_INIT; - break; - - case CM_MSGSYNC_STATE_3: - state = (rx_byte == startCode[state])? CM_MSGSYNC_STATE_4 : CM_MSGSYNC_STATE_INIT; - break; - 3d6: 08 95 ret - - case CM_MSGSYNC_STATE_4: - state = (rx_byte == startCode[state])? CM_MSGSYNC_STATE_5 : CM_MSGSYNC_STATE_INIT; - 3d8: f0 e0 ldi r31, 0x00 ; 0 - 3da: ec 59 subi r30, 0x9C ; 156 - 3dc: f6 47 sbci r31, 0x76 ; 118 - 3de: 90 81 ld r25, Z - 3e0: 89 13 cpse r24, r25 - 3e2: 02 c0 rjmp .+4 ; 0x3e8 - 3e4: 84 e0 ldi r24, 0x04 ; 4 - 3e6: 01 c0 rjmp .+2 ; 0x3ea - 3e8: 80 e0 ldi r24, 0x00 ; 0 - 3ea: 80 93 41 3f sts 0x3F41, r24 ; 0x803f41 - default: - state = CM_MSGSYNC_STATE_INIT; - break; - } - - return 1; - 3ee: 81 e0 ldi r24, 0x01 ; 1 - 3f0: 90 e0 ldi r25, 0x00 ; 0 - state = (rx_byte == startCode[state])? CM_MSGSYNC_STATE_4 : CM_MSGSYNC_STATE_INIT; - break; - - case CM_MSGSYNC_STATE_4: - state = (rx_byte == startCode[state])? CM_MSGSYNC_STATE_5 : CM_MSGSYNC_STATE_INIT; - break; - 3f2: 08 95 ret - - case CM_MSGSYNC_STATE_5: - state = CM_MSGSYNC_STATE_INIT; - 3f4: 10 92 41 3f sts 0x3F41, r1 ; 0x803f41 - return 0; - 3f8: 80 e0 ldi r24, 0x00 ; 0 - 3fa: 90 e0 ldi r25, 0x00 ; 0 - 3fc: 08 95 ret - break; - - default: - state = CM_MSGSYNC_STATE_INIT; - 3fe: 10 92 41 3f sts 0x3F41, r1 ; 0x803f41 - break; - } - - return 1; - 402: 81 e0 ldi r24, 0x01 ; 1 - 404: 90 e0 ldi r25, 0x00 ; 0 - - -} - 406: 08 95 ret - -00000408 : - - static cm_msg_decode_states_t state = CM_MSG_WAIT_FOR_STARTCODE; - static cm_data_msg_t msg; - static uint8_t data_bytes_idx = 0; - - switch (state) - 408: 90 91 40 3f lds r25, 0x3F40 ; 0x803f40 - 40c: 93 30 cpi r25, 0x03 ; 3 - 40e: c1 f0 breq .+48 ; 0x440 - 410: 28 f4 brcc .+10 ; 0x41c - 412: 99 23 and r25, r25 - 414: 41 f0 breq .+16 ; 0x426 - 416: 91 30 cpi r25, 0x01 ; 1 - 418: 69 f0 breq .+26 ; 0x434 - 41a: 42 c0 rjmp .+132 ; 0x4a0 - 41c: 94 30 cpi r25, 0x04 ; 4 - 41e: c1 f0 breq .+48 ; 0x450 - 420: 95 30 cpi r25, 0x05 ; 5 - 422: 01 f1 breq .+64 ; 0x464 - 424: 3d c0 rjmp .+122 ; 0x4a0 - { - case CM_MSG_WAIT_FOR_STARTCODE: - if(!cm_msgSync_Byte_DecodeSC(rx_byte)) state = CM_MSG_DECODE_STATE_GET_SIZE_BYTE; - 426: a1 df rcall .-190 ; 0x36a - 428: 89 2b or r24, r25 - 42a: d1 f5 brne .+116 ; 0x4a0 - 42c: 81 e0 ldi r24, 0x01 ; 1 - 42e: 80 93 40 3f sts 0x3F40, r24 ; 0x803f40 - 432: 36 c0 rjmp .+108 ; 0x4a0 - break; - - case CM_MSG_DECODE_STATE_GET_SIZE_BYTE: - msg.msg_data_size = rx_byte; - 434: 80 93 09 3f sts 0x3F09, r24 ; 0x803f09 - state = CM_MSG_DECODE_STATE_GET_CRC_BYTE1; - 438: 83 e0 ldi r24, 0x03 ; 3 - 43a: 80 93 40 3f sts 0x3F40, r24 ; 0x803f40 - - break; - 43e: 30 c0 rjmp .+96 ; 0x4a0 - - case CM_MSG_DECODE_STATE_GET_CRC_BYTE1: - msg.msg_data_crc = (rx_byte << 8) & 0xff00; - 440: e9 e0 ldi r30, 0x09 ; 9 - 442: ff e3 ldi r31, 0x3F ; 63 - 444: 11 82 std Z+1, r1 ; 0x01 - 446: 82 83 std Z+2, r24 ; 0x02 - state = CM_MSG_DECODE_STATE_GET_CRC_BYTE2; - 448: 84 e0 ldi r24, 0x04 ; 4 - 44a: 80 93 40 3f sts 0x3F40, r24 ; 0x803f40 - break; - 44e: 28 c0 rjmp .+80 ; 0x4a0 - - case CM_MSG_DECODE_STATE_GET_CRC_BYTE2: - msg.msg_data_crc |= rx_byte & 0xff; - 450: e9 e0 ldi r30, 0x09 ; 9 - 452: ff e3 ldi r31, 0x3F ; 63 - 454: 21 81 ldd r18, Z+1 ; 0x01 - 456: 32 81 ldd r19, Z+2 ; 0x02 - 458: 28 2b or r18, r24 - 45a: 21 83 std Z+1, r18 ; 0x01 - 45c: 32 83 std Z+2, r19 ; 0x02 - state = CM_MSG_DECODE_STATE_GET_DATA; - 45e: 95 e0 ldi r25, 0x05 ; 5 - 460: 90 93 40 3f sts 0x3F40, r25 ; 0x803f40 - - case CM_MSG_DECODE_STATE_GET_DATA: - msg.msg_data[data_bytes_idx] = rx_byte; - 464: 90 91 08 3f lds r25, 0x3F08 ; 0x803f08 - 468: e9 2f mov r30, r25 - 46a: f0 e0 ldi r31, 0x00 ; 0 - 46c: e7 5f subi r30, 0xF7 ; 247 - 46e: f0 4c sbci r31, 0xC0 ; 192 - 470: 83 83 std Z+3, r24 ; 0x03 - data_bytes_idx++; - 472: 81 e0 ldi r24, 0x01 ; 1 - 474: 89 0f add r24, r25 - 476: 80 93 08 3f sts 0x3F08, r24 ; 0x803f08 - if(data_bytes_idx > msg.msg_data_size){ - 47a: 90 91 09 3f lds r25, 0x3F09 ; 0x803f09 - 47e: 98 17 cp r25, r24 - 480: 78 f4 brcc .+30 ; 0x4a0 - // calculate CRC.. - - // Run function pointer msg evt.. - s_msg_cmplete_evt_fpt(s_msg_cmplete_evt_inst,&(msg.msg_data[0])); - 482: e0 91 44 3f lds r30, 0x3F44 ; 0x803f44 - 486: f0 91 45 3f lds r31, 0x3F45 ; 0x803f45 - 48a: 6c e0 ldi r22, 0x0C ; 12 - 48c: 7f e3 ldi r23, 0x3F ; 63 - 48e: 80 91 42 3f lds r24, 0x3F42 ; 0x803f42 - 492: 90 91 43 3f lds r25, 0x3F43 ; 0x803f43 - 496: 09 95 icall - state = CM_MSG_WAIT_FOR_STARTCODE; - 498: 10 92 40 3f sts 0x3F40, r1 ; 0x803f40 - data_bytes_idx = 0; - 49c: 10 92 08 3f sts 0x3F08, r1 ; 0x803f08 - - } - break; - } - return 0; -} - 4a0: 80 e0 ldi r24, 0x00 ; 0 - 4a2: 90 e0 ldi r25, 0x00 ; 0 - 4a4: 08 95 ret - -000004a6 : - -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; - 4a6: 00 97 sbiw r24, 0x00 ; 0 - 4a8: 59 f0 breq .+22 ; 0x4c0 - 4aa: 61 15 cp r22, r1 - 4ac: 71 05 cpc r23, r1 - 4ae: 41 f0 breq .+16 ; 0x4c0 - - s_msg_cmplete_evt_inst = msg_cmplete_evt_inst; - 4b0: 80 93 42 3f sts 0x3F42, r24 ; 0x803f42 - 4b4: 90 93 43 3f sts 0x3F43, r25 ; 0x803f43 - s_msg_cmplete_evt_fpt = msg_cmplete_evt_fp; - 4b8: 60 93 44 3f sts 0x3F44, r22 ; 0x803f44 - 4bc: 70 93 45 3f sts 0x3F45, r23 ; 0x803f45 - 4c0: 08 95 ret - -000004c2 : - } - - // Send status back maybe.. - - //Force state machine to load new settings from eeprom: - inst->state_next = STORNO_APP_PROGRAM_OSC; - 4c2: fc 01 movw r30, r24 - 4c4: 11 82 std Z+1, r1 ; 0x01 - 4c6: 08 95 ret - -000004c8 : - -} - -int uart_rx_event(storno_xtal_app_t *inst, void *rxData){ - - inst->pll_param_ptr = rxData; - 4c8: fc 01 movw r30, r24 - 4ca: 64 83 std Z+4, r22 ; 0x04 - 4cc: 75 83 std Z+5, r23 ; 0x05 - - programPLL_Parameters(inst); - 4ce: f9 df rcall .-14 ; 0x4c2 - - return 0; - -} - 4d0: 80 e0 ldi r24, 0x00 ; 0 - 4d2: 90 e0 ldi r25, 0x00 ; 0 - 4d4: 08 95 ret - -000004d6 : - -void cqm6xx_app_init(storno_xtal_app_t *inst, void *si5351_dev){ - 4d6: cf 93 push r28 - 4d8: df 93 push r29 - - if(si5351_dev == NULL) return; - 4da: 61 15 cp r22, r1 - 4dc: 71 05 cpc r23, r1 - 4de: 71 f0 breq .+28 ; 0x4fc - if(inst == NULL)return; - 4e0: 00 97 sbiw r24, 0x00 ; 0 - 4e2: 61 f0 breq .+24 ; 0x4fc - 4e4: ec 01 movw r28, r24 - - inst->state_next = STORNO_APP_PROGRAM_OSC; - 4e6: 19 82 std Y+1, r1 ; 0x01 - inst->state_now = STORNO_APP_PROGRAM_OSC; - 4e8: 18 82 st Y, r1 - - inst->si5351_dev = si5351_dev; - 4ea: 6a 83 std Y+2, r22 ; 0x02 - 4ec: 7b 83 std Y+3, r23 ; 0x03 - - //cm_uart_init(inst,(get_UART_Event_fpt)uart_rx_event); - cm_MsgCompleteEvt_Register(inst,(Get_msgComplete_Event_fpt)uart_rx_event); - 4ee: 64 e6 ldi r22, 0x64 ; 100 - 4f0: 72 e0 ldi r23, 0x02 ; 2 - 4f2: d9 df rcall .-78 ; 0x4a6 - cm_uart_init(inst,(get_UART_Event_fpt)cm_msg_DecodeMsg_Byte); - 4f4: 64 e0 ldi r22, 0x04 ; 4 - 4f6: 72 e0 ldi r23, 0x02 ; 2 - 4f8: ce 01 movw r24, r28 - 4fa: c8 de rcall .-624 ; 0x28c - - 4fc: df 91 pop r29 - 4fe: cf 91 pop r28 - 500: 08 95 ret - -00000502
: - return; - } -} - int main(void) { - 502: cf 93 push r28 - 504: df 93 push r29 - 506: cd b7 in r28, 0x3d ; 61 - 508: de b7 in r29, 0x3e ; 62 - 50a: cb 55 subi r28, 0x5B ; 91 - 50c: d1 09 sbc r29, r1 - 50e: cd bf out 0x3d, r28 ; 61 - 510: de bf out 0x3e, r29 ; 62 - /* Replace with your application code */ + - // Init Periphials - cm_i2c_init(NULL); - 512: 80 e0 ldi r24, 0x00 ; 0 - 514: 90 e0 ldi r25, 0x00 ; 0 - 516: 68 de rcall .-816 ; 0x1e8 - - // Add devices - cm_i2c_device_t si5351_i2c; - cm_i2c_addDev(&si5351_i2c,NULL,0x60); - 518: 40 e6 ldi r20, 0x60 ; 96 - 51a: 60 e0 ldi r22, 0x00 ; 0 - 51c: 70 e0 ldi r23, 0x00 ; 0 - 51e: ce 01 movw r24, r28 - 520: 01 96 adiw r24, 0x01 ; 1 - 522: 7c de rcall .-776 ; 0x21c - - // Init Devices: - si5351_driver si5351_dev; - cm_si5351_init(&si5351_dev,&si5351_i2c,(setGet_I2C_Event_fpt)cm_i2c_transfer); - 524: 4c e2 ldi r20, 0x2C ; 44 - 526: 51 e0 ldi r21, 0x01 ; 1 - 528: be 01 movw r22, r28 - 52a: 6f 5f subi r22, 0xFF ; 255 - 52c: 7f 4f sbci r23, 0xFF ; 255 - 52e: ce 01 movw r24, r28 - 530: 04 96 adiw r24, 0x04 ; 4 - 532: 4b d0 rcall .+150 ; 0x5ca - - cqm6xx_app_init(&storno_xtal_app, &si5351_dev); - 534: be 01 movw r22, r28 - 536: 6c 5f subi r22, 0xFC ; 252 - 538: 7f 4f sbci r23, 0xFF ; 255 - 53a: 86 e4 ldi r24, 0x46 ; 70 - 53c: 9f e3 ldi r25, 0x3F ; 63 - 53e: cb df rcall .-106 ; 0x4d6 + 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 #else //round up by default __ticks_dc = (uint32_t)(ceil(fabs(__tmp))); #endif __builtin_avr_delay_cycles(__ticks_dc); - 540: 2a e6 ldi r18, 0x6A ; 106 - 542: 84 e0 ldi r24, 0x04 ; 4 - 544: 91 e0 ldi r25, 0x01 ; 1 - 546: 21 50 subi r18, 0x01 ; 1 - 548: 80 40 sbci r24, 0x00 ; 0 - 54a: 90 40 sbci r25, 0x00 ; 0 - 54c: e1 f7 brne .-8 ; 0x546 - 54e: 00 c0 rjmp .+0 ; 0x550 - 550: f7 cf rjmp .-18 ; 0x540 + 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 + + _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 -00000552 : + while (1) + { - // Read Device Status register: - readRegister(inst,0x00, (uint8_t *) &inst->device_data.deviceStatus, sizeof(si5351_deviceStat_t)); + //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 - return inst->device_data.deviceStatus.REVID; -} - 552: 8f 92 push r8 - 554: 9f 92 push r9 - 556: af 92 push r10 - 558: bf 92 push r11 - 55a: cf 92 push r12 - 55c: df 92 push r13 - 55e: ef 92 push r14 - 560: ff 92 push r15 - 562: 0f 93 push r16 - 564: 1f 93 push r17 - 566: cf 93 push r28 - 568: df 93 push r29 - 56a: ec 01 movw r28, r24 - 56c: 86 2e mov r8, r22 - 56e: 5a 01 movw r10, r20 - 570: 68 01 movw r12, r16 - 572: 79 01 movw r14, r18 - 574: c8 01 movw r24, r16 - 576: 01 96 adiw r24, 0x01 ; 1 - 578: c9 d0 rcall .+402 ; 0x70c - 57a: 98 2e mov r9, r24 - 57c: 19 2f mov r17, r25 - 57e: fc 01 movw r30, r24 - 580: 81 92 st Z+, r8 - 582: cf 01 movw r24, r30 - 584: a6 01 movw r20, r12 - 586: b5 01 movw r22, r10 - 588: e2 d1 rcall .+964 ; 0x94e - 58a: ea 81 ldd r30, Y+2 ; 0x02 - 58c: fb 81 ldd r31, Y+3 ; 0x03 - 58e: a7 01 movw r20, r14 - 590: 96 01 movw r18, r12 - 592: 2f 5f subi r18, 0xFF ; 255 - 594: 3f 4f sbci r19, 0xFF ; 255 - 596: 4f 4f sbci r20, 0xFF ; 255 - 598: 5f 4f sbci r21, 0xFF ; 255 - 59a: 01 e0 ldi r16, 0x01 ; 1 - 59c: 69 2d mov r22, r9 - 59e: 71 2f mov r23, r17 - 5a0: 88 81 ld r24, Y - 5a2: 99 81 ldd r25, Y+1 ; 0x01 - 5a4: 09 95 icall - 5a6: 89 2d mov r24, r9 - 5a8: 91 2f mov r25, r17 - 5aa: 48 d1 rcall .+656 ; 0x83c - 5ac: 80 e0 ldi r24, 0x00 ; 0 - 5ae: 90 e0 ldi r25, 0x00 ; 0 - 5b0: df 91 pop r29 - 5b2: cf 91 pop r28 - 5b4: 1f 91 pop r17 - 5b6: 0f 91 pop r16 - 5b8: ff 90 pop r15 - 5ba: ef 90 pop r14 - 5bc: df 90 pop r13 - 5be: cf 90 pop r12 - 5c0: bf 90 pop r11 - 5c2: af 90 pop r10 - 5c4: 9f 90 pop r9 - 5c6: 8f 90 pop r8 - 5c8: 08 95 ret +00000160 : + 160: 03 d0 rcall .+6 ; 0x168 + 162: 80 81 ld r24, Z + 164: 99 27 eor r25, r25 + 166: 08 95 ret -000005ca : +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 -int cm_si5351_init(si5351_driver *inst, void *i2c_transfer_inst, setGet_I2C_Event_fpt i2c_transfer_evt){ - 5ca: ef 92 push r14 - 5cc: ff 92 push r15 - 5ce: 0f 93 push r16 - 5d0: 1f 93 push r17 - 5d2: cf 93 push r28 - 5d4: df 93 push r29 - 5d6: 1f 92 push r1 - 5d8: cd b7 in r28, 0x3d ; 61 - 5da: de b7 in r29, 0x3e ; 62 +00000170 : + 170: 26 2f mov r18, r22 - if(inst == NULL)return -1; - 5dc: 00 97 sbiw r24, 0x00 ; 0 - 5de: 09 f4 brne .+2 ; 0x5e2 - 5e0: 85 c0 rjmp .+266 ; 0x6ec - if(i2c_transfer_inst == NULL)return -1; - 5e2: 61 15 cp r22, r1 - 5e4: 71 05 cpc r23, r1 - 5e6: 09 f4 brne .+2 ; 0x5ea - 5e8: 84 c0 rjmp .+264 ; 0x6f2 - if(i2c_transfer_evt == NULL)return -1; - 5ea: 41 15 cp r20, r1 - 5ec: 51 05 cpc r21, r1 - 5ee: 09 f4 brne .+2 ; 0x5f2 - 5f0: 83 c0 rjmp .+262 ; 0x6f8 - 5f2: 7c 01 movw r14, r24 +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 - inst->i2c_transfer_inst = i2c_transfer_inst; - 5f4: dc 01 movw r26, r24 - 5f6: 6d 93 st X+, r22 - 5f8: 7c 93 st X, r23 - 5fa: 11 97 sbiw r26, 0x01 ; 1 - inst->i2c_transfer_evt = i2c_transfer_evt; - 5fc: 12 96 adiw r26, 0x02 ; 2 - 5fe: 4d 93 st X+, r20 - 600: 5c 93 st X, r21 - 602: 13 97 sbiw r26, 0x03 ; 3 +00000198 <_exit>: + 198: f8 94 cli - int ret = 0; - - memset(&(inst->device_data),0x00,sizeof(si5351_data)); - 604: fc 01 movw r30, r24 - 606: 34 96 adiw r30, 0x04 ; 4 - 608: 84 e5 ldi r24, 0x54 ; 84 - 60a: df 01 movw r26, r30 - 60c: 1d 92 st X+, r1 - 60e: 8a 95 dec r24 - 610: e9 f7 brne .-6 ; 0x60c - - /* Disable all outputs setting CLKx_DIS high */ - uint8_t temp = 0xff; - 612: 8f ef ldi r24, 0xFF ; 255 - 614: 89 83 std Y+1, r24 ; 0x01 - writeRegister(inst,SI5351_REG_OUTPUT_ENABLE_CONTROL,&temp,1); - 616: 01 e0 ldi r16, 0x01 ; 1 - 618: 10 e0 ldi r17, 0x00 ; 0 - 61a: 20 e0 ldi r18, 0x00 ; 0 - 61c: 30 e0 ldi r19, 0x00 ; 0 - 61e: ae 01 movw r20, r28 - 620: 4f 5f subi r20, 0xFF ; 255 - 622: 5f 4f sbci r21, 0xFF ; 255 - 624: 63 e0 ldi r22, 0x03 ; 3 - 626: c7 01 movw r24, r14 - 628: 94 df rcall .-216 ; 0x552 - - /* Power down all output drivers */ - temp = 0x80; - 62a: 80 e8 ldi r24, 0x80 ; 128 - 62c: 89 83 std Y+1, r24 ; 0x01 - writeRegister(inst,SI5351_REG_CLK_0_CONTROL,&temp,1); - 62e: 01 e0 ldi r16, 0x01 ; 1 - 630: 10 e0 ldi r17, 0x00 ; 0 - 632: 20 e0 ldi r18, 0x00 ; 0 - 634: 30 e0 ldi r19, 0x00 ; 0 - 636: ae 01 movw r20, r28 - 638: 4f 5f subi r20, 0xFF ; 255 - 63a: 5f 4f sbci r21, 0xFF ; 255 - 63c: 60 e1 ldi r22, 0x10 ; 16 - 63e: c7 01 movw r24, r14 - 640: 88 df rcall .-240 ; 0x552 - writeRegister(inst,SI5351_REG_CLK_1_CONTROL,&temp,1); - 642: 01 e0 ldi r16, 0x01 ; 1 - 644: 10 e0 ldi r17, 0x00 ; 0 - 646: 20 e0 ldi r18, 0x00 ; 0 - 648: 30 e0 ldi r19, 0x00 ; 0 - 64a: ae 01 movw r20, r28 - 64c: 4f 5f subi r20, 0xFF ; 255 - 64e: 5f 4f sbci r21, 0xFF ; 255 - 650: 61 e1 ldi r22, 0x11 ; 17 - 652: c7 01 movw r24, r14 - 654: 7e df rcall .-260 ; 0x552 - writeRegister(inst,SI5351_REG_CLK_2_CONTROL,&temp,1); - 656: 01 e0 ldi r16, 0x01 ; 1 - 658: 10 e0 ldi r17, 0x00 ; 0 - 65a: 20 e0 ldi r18, 0x00 ; 0 - 65c: 30 e0 ldi r19, 0x00 ; 0 - 65e: ae 01 movw r20, r28 - 660: 4f 5f subi r20, 0xFF ; 255 - 662: 5f 4f sbci r21, 0xFF ; 255 - 664: 62 e1 ldi r22, 0x12 ; 18 - 666: c7 01 movw r24, r14 - 668: 74 df rcall .-280 ; 0x552 - writeRegister(inst,SI5351_REG_CLK_3_CONTROL,&temp,1); - 66a: 01 e0 ldi r16, 0x01 ; 1 - 66c: 10 e0 ldi r17, 0x00 ; 0 - 66e: 20 e0 ldi r18, 0x00 ; 0 - 670: 30 e0 ldi r19, 0x00 ; 0 - 672: ae 01 movw r20, r28 - 674: 4f 5f subi r20, 0xFF ; 255 - 676: 5f 4f sbci r21, 0xFF ; 255 - 678: 63 e1 ldi r22, 0x13 ; 19 - 67a: c7 01 movw r24, r14 - 67c: 6a df rcall .-300 ; 0x552 - writeRegister(inst,SI5351_REG_CLK_4_CONTROL,&temp,1); - 67e: 01 e0 ldi r16, 0x01 ; 1 - 680: 10 e0 ldi r17, 0x00 ; 0 - 682: 20 e0 ldi r18, 0x00 ; 0 - 684: 30 e0 ldi r19, 0x00 ; 0 - 686: ae 01 movw r20, r28 - 688: 4f 5f subi r20, 0xFF ; 255 - 68a: 5f 4f sbci r21, 0xFF ; 255 - 68c: 64 e1 ldi r22, 0x14 ; 20 - 68e: c7 01 movw r24, r14 - 690: 60 df rcall .-320 ; 0x552 - writeRegister(inst,SI5351_REG_CLK_5_CONTROL,&temp,1); - 692: 01 e0 ldi r16, 0x01 ; 1 - 694: 10 e0 ldi r17, 0x00 ; 0 - 696: 20 e0 ldi r18, 0x00 ; 0 - 698: 30 e0 ldi r19, 0x00 ; 0 - 69a: ae 01 movw r20, r28 - 69c: 4f 5f subi r20, 0xFF ; 255 - 69e: 5f 4f sbci r21, 0xFF ; 255 - 6a0: 65 e1 ldi r22, 0x15 ; 21 - 6a2: c7 01 movw r24, r14 - 6a4: 56 df rcall .-340 ; 0x552 - writeRegister(inst,SI5351_REG_CLK_6_CONTROL,&temp,1); - 6a6: 01 e0 ldi r16, 0x01 ; 1 - 6a8: 10 e0 ldi r17, 0x00 ; 0 - 6aa: 20 e0 ldi r18, 0x00 ; 0 - 6ac: 30 e0 ldi r19, 0x00 ; 0 - 6ae: ae 01 movw r20, r28 - 6b0: 4f 5f subi r20, 0xFF ; 255 - 6b2: 5f 4f sbci r21, 0xFF ; 255 - 6b4: 66 e1 ldi r22, 0x16 ; 22 - 6b6: c7 01 movw r24, r14 - 6b8: 4c df rcall .-360 ; 0x552 - writeRegister(inst,SI5351_REG_CLK_7_CONTROL,&temp,1); - 6ba: 01 e0 ldi r16, 0x01 ; 1 - 6bc: 10 e0 ldi r17, 0x00 ; 0 - 6be: 20 e0 ldi r18, 0x00 ; 0 - 6c0: 30 e0 ldi r19, 0x00 ; 0 - 6c2: ae 01 movw r20, r28 - 6c4: 4f 5f subi r20, 0xFF ; 255 - 6c6: 5f 4f sbci r21, 0xFF ; 255 - 6c8: 67 e1 ldi r22, 0x17 ; 23 - 6ca: c7 01 movw r24, r14 - 6cc: 42 df rcall .-380 ; 0x552 - - temp = SI5351_CRYSTAL_LOAD_10PF; - 6ce: 80 ec ldi r24, 0xC0 ; 192 - 6d0: 89 83 std Y+1, r24 ; 0x01 - - writeRegister(inst,SI5351_REG_CRYSTAL_LOAD_CAPACITANCE,&temp,1); - 6d2: 01 e0 ldi r16, 0x01 ; 1 - 6d4: 10 e0 ldi r17, 0x00 ; 0 - 6d6: 20 e0 ldi r18, 0x00 ; 0 - 6d8: 30 e0 ldi r19, 0x00 ; 0 - 6da: ae 01 movw r20, r28 - 6dc: 4f 5f subi r20, 0xFF ; 255 - 6de: 5f 4f sbci r21, 0xFF ; 255 - 6e0: 67 eb ldi r22, 0xB7 ; 183 - 6e2: c7 01 movw r24, r14 - 6e4: 36 df rcall .-404 ; 0x552 - return ret; - 6e6: 80 e0 ldi r24, 0x00 ; 0 - 6e8: 90 e0 ldi r25, 0x00 ; 0 - 6ea: 08 c0 rjmp .+16 ; 0x6fc - return inst->device_data.deviceStatus.REVID; -} - -int cm_si5351_init(si5351_driver *inst, void *i2c_transfer_inst, setGet_I2C_Event_fpt i2c_transfer_evt){ - - if(inst == NULL)return -1; - 6ec: 8f ef ldi r24, 0xFF ; 255 - 6ee: 9f ef ldi r25, 0xFF ; 255 - 6f0: 05 c0 rjmp .+10 ; 0x6fc - if(i2c_transfer_inst == NULL)return -1; - 6f2: 8f ef ldi r24, 0xFF ; 255 - 6f4: 9f ef ldi r25, 0xFF ; 255 - 6f6: 02 c0 rjmp .+4 ; 0x6fc - if(i2c_transfer_evt == NULL)return -1; - 6f8: 8f ef ldi r24, 0xFF ; 255 - 6fa: 9f ef ldi r25, 0xFF ; 255 - writeRegister(inst,SI5351_REG_CRYSTAL_LOAD_CAPACITANCE,&temp,1); - return ret; - - - -} - 6fc: 0f 90 pop r0 - 6fe: df 91 pop r29 - 700: cf 91 pop r28 - 702: 1f 91 pop r17 - 704: 0f 91 pop r16 - 706: ff 90 pop r15 - 708: ef 90 pop r14 - 70a: 08 95 ret - -0000070c : - 70c: 0f 93 push r16 - 70e: 1f 93 push r17 - 710: cf 93 push r28 - 712: df 93 push r29 - 714: 82 30 cpi r24, 0x02 ; 2 - 716: 91 05 cpc r25, r1 - 718: 10 f4 brcc .+4 ; 0x71e - 71a: 82 e0 ldi r24, 0x02 ; 2 - 71c: 90 e0 ldi r25, 0x00 ; 0 - 71e: e0 91 4e 3f lds r30, 0x3F4E ; 0x803f4e <__flp> - 722: f0 91 4f 3f lds r31, 0x3F4F ; 0x803f4f <__flp+0x1> - 726: 20 e0 ldi r18, 0x00 ; 0 - 728: 30 e0 ldi r19, 0x00 ; 0 - 72a: a0 e0 ldi r26, 0x00 ; 0 - 72c: b0 e0 ldi r27, 0x00 ; 0 - 72e: 30 97 sbiw r30, 0x00 ; 0 - 730: 19 f1 breq .+70 ; 0x778 - 732: 40 81 ld r20, Z - 734: 51 81 ldd r21, Z+1 ; 0x01 - 736: 02 81 ldd r16, Z+2 ; 0x02 - 738: 13 81 ldd r17, Z+3 ; 0x03 - 73a: 48 17 cp r20, r24 - 73c: 59 07 cpc r21, r25 - 73e: c8 f0 brcs .+50 ; 0x772 - 740: 84 17 cp r24, r20 - 742: 95 07 cpc r25, r21 - 744: 69 f4 brne .+26 ; 0x760 - 746: 10 97 sbiw r26, 0x00 ; 0 - 748: 31 f0 breq .+12 ; 0x756 - 74a: 12 96 adiw r26, 0x02 ; 2 - 74c: 0c 93 st X, r16 - 74e: 12 97 sbiw r26, 0x02 ; 2 - 750: 13 96 adiw r26, 0x03 ; 3 - 752: 1c 93 st X, r17 - 754: 27 c0 rjmp .+78 ; 0x7a4 - 756: 00 93 4e 3f sts 0x3F4E, r16 ; 0x803f4e <__flp> - 75a: 10 93 4f 3f sts 0x3F4F, r17 ; 0x803f4f <__flp+0x1> - 75e: 22 c0 rjmp .+68 ; 0x7a4 - 760: 21 15 cp r18, r1 - 762: 31 05 cpc r19, r1 - 764: 19 f0 breq .+6 ; 0x76c - 766: 42 17 cp r20, r18 - 768: 53 07 cpc r21, r19 - 76a: 18 f4 brcc .+6 ; 0x772 - 76c: 9a 01 movw r18, r20 - 76e: bd 01 movw r22, r26 - 770: ef 01 movw r28, r30 - 772: df 01 movw r26, r30 - 774: f8 01 movw r30, r16 - 776: db cf rjmp .-74 ; 0x72e - 778: 21 15 cp r18, r1 - 77a: 31 05 cpc r19, r1 - 77c: f9 f0 breq .+62 ; 0x7bc - 77e: 28 1b sub r18, r24 - 780: 39 0b sbc r19, r25 - 782: 24 30 cpi r18, 0x04 ; 4 - 784: 31 05 cpc r19, r1 - 786: 80 f4 brcc .+32 ; 0x7a8 - 788: 8a 81 ldd r24, Y+2 ; 0x02 - 78a: 9b 81 ldd r25, Y+3 ; 0x03 - 78c: 61 15 cp r22, r1 - 78e: 71 05 cpc r23, r1 - 790: 21 f0 breq .+8 ; 0x79a - 792: fb 01 movw r30, r22 - 794: 82 83 std Z+2, r24 ; 0x02 - 796: 93 83 std Z+3, r25 ; 0x03 - 798: 04 c0 rjmp .+8 ; 0x7a2 - 79a: 80 93 4e 3f sts 0x3F4E, r24 ; 0x803f4e <__flp> - 79e: 90 93 4f 3f sts 0x3F4F, r25 ; 0x803f4f <__flp+0x1> - 7a2: fe 01 movw r30, r28 - 7a4: 32 96 adiw r30, 0x02 ; 2 - 7a6: 44 c0 rjmp .+136 ; 0x830 - 7a8: fe 01 movw r30, r28 - 7aa: e2 0f add r30, r18 - 7ac: f3 1f adc r31, r19 - 7ae: 81 93 st Z+, r24 - 7b0: 91 93 st Z+, r25 - 7b2: 22 50 subi r18, 0x02 ; 2 - 7b4: 31 09 sbc r19, r1 - 7b6: 28 83 st Y, r18 - 7b8: 39 83 std Y+1, r19 ; 0x01 - 7ba: 3a c0 rjmp .+116 ; 0x830 - 7bc: 20 91 4c 3f lds r18, 0x3F4C ; 0x803f4c <__brkval> - 7c0: 30 91 4d 3f lds r19, 0x3F4D ; 0x803f4d <__brkval+0x1> - 7c4: 23 2b or r18, r19 - 7c6: 41 f4 brne .+16 ; 0x7d8 - 7c8: 20 91 02 3f lds r18, 0x3F02 ; 0x803f02 <__malloc_heap_start> - 7cc: 30 91 03 3f lds r19, 0x3F03 ; 0x803f03 <__malloc_heap_start+0x1> - 7d0: 20 93 4c 3f sts 0x3F4C, r18 ; 0x803f4c <__brkval> - 7d4: 30 93 4d 3f sts 0x3F4D, r19 ; 0x803f4d <__brkval+0x1> - 7d8: 20 91 00 3f lds r18, 0x3F00 ; 0x803f00 <__DATA_REGION_ORIGIN__> - 7dc: 30 91 01 3f lds r19, 0x3F01 ; 0x803f01 <__DATA_REGION_ORIGIN__+0x1> - 7e0: 21 15 cp r18, r1 - 7e2: 31 05 cpc r19, r1 - 7e4: 41 f4 brne .+16 ; 0x7f6 - 7e6: 2d b7 in r18, 0x3d ; 61 - 7e8: 3e b7 in r19, 0x3e ; 62 - 7ea: 40 91 04 3f lds r20, 0x3F04 ; 0x803f04 <__malloc_margin> - 7ee: 50 91 05 3f lds r21, 0x3F05 ; 0x803f05 <__malloc_margin+0x1> - 7f2: 24 1b sub r18, r20 - 7f4: 35 0b sbc r19, r21 - 7f6: e0 91 4c 3f lds r30, 0x3F4C ; 0x803f4c <__brkval> - 7fa: f0 91 4d 3f lds r31, 0x3F4D ; 0x803f4d <__brkval+0x1> - 7fe: e2 17 cp r30, r18 - 800: f3 07 cpc r31, r19 - 802: a0 f4 brcc .+40 ; 0x82c - 804: 2e 1b sub r18, r30 - 806: 3f 0b sbc r19, r31 - 808: 28 17 cp r18, r24 - 80a: 39 07 cpc r19, r25 - 80c: 78 f0 brcs .+30 ; 0x82c - 80e: ac 01 movw r20, r24 - 810: 4e 5f subi r20, 0xFE ; 254 - 812: 5f 4f sbci r21, 0xFF ; 255 - 814: 24 17 cp r18, r20 - 816: 35 07 cpc r19, r21 - 818: 48 f0 brcs .+18 ; 0x82c - 81a: 4e 0f add r20, r30 - 81c: 5f 1f adc r21, r31 - 81e: 40 93 4c 3f sts 0x3F4C, r20 ; 0x803f4c <__brkval> - 822: 50 93 4d 3f sts 0x3F4D, r21 ; 0x803f4d <__brkval+0x1> - 826: 81 93 st Z+, r24 - 828: 91 93 st Z+, r25 - 82a: 02 c0 rjmp .+4 ; 0x830 - 82c: e0 e0 ldi r30, 0x00 ; 0 - 82e: f0 e0 ldi r31, 0x00 ; 0 - 830: cf 01 movw r24, r30 - 832: df 91 pop r29 - 834: cf 91 pop r28 - 836: 1f 91 pop r17 - 838: 0f 91 pop r16 - 83a: 08 95 ret - -0000083c : - 83c: cf 93 push r28 - 83e: df 93 push r29 - 840: 00 97 sbiw r24, 0x00 ; 0 - 842: 09 f4 brne .+2 ; 0x846 - 844: 81 c0 rjmp .+258 ; 0x948 - 846: fc 01 movw r30, r24 - 848: 32 97 sbiw r30, 0x02 ; 2 - 84a: 12 82 std Z+2, r1 ; 0x02 - 84c: 13 82 std Z+3, r1 ; 0x03 - 84e: a0 91 4e 3f lds r26, 0x3F4E ; 0x803f4e <__flp> - 852: b0 91 4f 3f lds r27, 0x3F4F ; 0x803f4f <__flp+0x1> - 856: 10 97 sbiw r26, 0x00 ; 0 - 858: 81 f4 brne .+32 ; 0x87a - 85a: 20 81 ld r18, Z - 85c: 31 81 ldd r19, Z+1 ; 0x01 - 85e: 82 0f add r24, r18 - 860: 93 1f adc r25, r19 - 862: 20 91 4c 3f lds r18, 0x3F4C ; 0x803f4c <__brkval> - 866: 30 91 4d 3f lds r19, 0x3F4D ; 0x803f4d <__brkval+0x1> - 86a: 28 17 cp r18, r24 - 86c: 39 07 cpc r19, r25 - 86e: 51 f5 brne .+84 ; 0x8c4 - 870: e0 93 4c 3f sts 0x3F4C, r30 ; 0x803f4c <__brkval> - 874: f0 93 4d 3f sts 0x3F4D, r31 ; 0x803f4d <__brkval+0x1> - 878: 67 c0 rjmp .+206 ; 0x948 - 87a: ed 01 movw r28, r26 - 87c: 20 e0 ldi r18, 0x00 ; 0 - 87e: 30 e0 ldi r19, 0x00 ; 0 - 880: ce 17 cp r28, r30 - 882: df 07 cpc r29, r31 - 884: 40 f4 brcc .+16 ; 0x896 - 886: 4a 81 ldd r20, Y+2 ; 0x02 - 888: 5b 81 ldd r21, Y+3 ; 0x03 - 88a: 9e 01 movw r18, r28 - 88c: 41 15 cp r20, r1 - 88e: 51 05 cpc r21, r1 - 890: f1 f0 breq .+60 ; 0x8ce - 892: ea 01 movw r28, r20 - 894: f5 cf rjmp .-22 ; 0x880 - 896: c2 83 std Z+2, r28 ; 0x02 - 898: d3 83 std Z+3, r29 ; 0x03 - 89a: 40 81 ld r20, Z - 89c: 51 81 ldd r21, Z+1 ; 0x01 - 89e: 84 0f add r24, r20 - 8a0: 95 1f adc r25, r21 - 8a2: c8 17 cp r28, r24 - 8a4: d9 07 cpc r29, r25 - 8a6: 59 f4 brne .+22 ; 0x8be - 8a8: 88 81 ld r24, Y - 8aa: 99 81 ldd r25, Y+1 ; 0x01 - 8ac: 84 0f add r24, r20 - 8ae: 95 1f adc r25, r21 - 8b0: 02 96 adiw r24, 0x02 ; 2 - 8b2: 80 83 st Z, r24 - 8b4: 91 83 std Z+1, r25 ; 0x01 - 8b6: 8a 81 ldd r24, Y+2 ; 0x02 - 8b8: 9b 81 ldd r25, Y+3 ; 0x03 - 8ba: 82 83 std Z+2, r24 ; 0x02 - 8bc: 93 83 std Z+3, r25 ; 0x03 - 8be: 21 15 cp r18, r1 - 8c0: 31 05 cpc r19, r1 - 8c2: 29 f4 brne .+10 ; 0x8ce - 8c4: e0 93 4e 3f sts 0x3F4E, r30 ; 0x803f4e <__flp> - 8c8: f0 93 4f 3f sts 0x3F4F, r31 ; 0x803f4f <__flp+0x1> - 8cc: 3d c0 rjmp .+122 ; 0x948 - 8ce: e9 01 movw r28, r18 - 8d0: ea 83 std Y+2, r30 ; 0x02 - 8d2: fb 83 std Y+3, r31 ; 0x03 - 8d4: 49 91 ld r20, Y+ - 8d6: 59 91 ld r21, Y+ - 8d8: c4 0f add r28, r20 - 8da: d5 1f adc r29, r21 - 8dc: ec 17 cp r30, r28 - 8de: fd 07 cpc r31, r29 - 8e0: 61 f4 brne .+24 ; 0x8fa - 8e2: 80 81 ld r24, Z - 8e4: 91 81 ldd r25, Z+1 ; 0x01 - 8e6: 84 0f add r24, r20 - 8e8: 95 1f adc r25, r21 - 8ea: 02 96 adiw r24, 0x02 ; 2 - 8ec: e9 01 movw r28, r18 - 8ee: 88 83 st Y, r24 - 8f0: 99 83 std Y+1, r25 ; 0x01 - 8f2: 82 81 ldd r24, Z+2 ; 0x02 - 8f4: 93 81 ldd r25, Z+3 ; 0x03 - 8f6: 8a 83 std Y+2, r24 ; 0x02 - 8f8: 9b 83 std Y+3, r25 ; 0x03 - 8fa: e0 e0 ldi r30, 0x00 ; 0 - 8fc: f0 e0 ldi r31, 0x00 ; 0 - 8fe: 12 96 adiw r26, 0x02 ; 2 - 900: 8d 91 ld r24, X+ - 902: 9c 91 ld r25, X - 904: 13 97 sbiw r26, 0x03 ; 3 - 906: 00 97 sbiw r24, 0x00 ; 0 - 908: 19 f0 breq .+6 ; 0x910 - 90a: fd 01 movw r30, r26 - 90c: dc 01 movw r26, r24 - 90e: f7 cf rjmp .-18 ; 0x8fe - 910: 8d 91 ld r24, X+ - 912: 9c 91 ld r25, X - 914: 11 97 sbiw r26, 0x01 ; 1 - 916: 9d 01 movw r18, r26 - 918: 2e 5f subi r18, 0xFE ; 254 - 91a: 3f 4f sbci r19, 0xFF ; 255 - 91c: 82 0f add r24, r18 - 91e: 93 1f adc r25, r19 - 920: 20 91 4c 3f lds r18, 0x3F4C ; 0x803f4c <__brkval> - 924: 30 91 4d 3f lds r19, 0x3F4D ; 0x803f4d <__brkval+0x1> - 928: 28 17 cp r18, r24 - 92a: 39 07 cpc r19, r25 - 92c: 69 f4 brne .+26 ; 0x948 - 92e: 30 97 sbiw r30, 0x00 ; 0 - 930: 29 f4 brne .+10 ; 0x93c - 932: 10 92 4e 3f sts 0x3F4E, r1 ; 0x803f4e <__flp> - 936: 10 92 4f 3f sts 0x3F4F, r1 ; 0x803f4f <__flp+0x1> - 93a: 02 c0 rjmp .+4 ; 0x940 - 93c: 12 82 std Z+2, r1 ; 0x02 - 93e: 13 82 std Z+3, r1 ; 0x03 - 940: a0 93 4c 3f sts 0x3F4C, r26 ; 0x803f4c <__brkval> - 944: b0 93 4d 3f sts 0x3F4D, r27 ; 0x803f4d <__brkval+0x1> - 948: df 91 pop r29 - 94a: cf 91 pop r28 - 94c: 08 95 ret - -0000094e : - 94e: fb 01 movw r30, r22 - 950: dc 01 movw r26, r24 - 952: 02 c0 rjmp .+4 ; 0x958 - 954: 01 90 ld r0, Z+ - 956: 0d 92 st X+, r0 - 958: 41 50 subi r20, 0x01 ; 1 - 95a: 50 40 sbci r21, 0x00 ; 0 - 95c: d8 f7 brcc .-10 ; 0x954 - 95e: 08 95 ret - -00000960 <_exit>: - 960: f8 94 cli - -00000962 <__stop_program>: - 962: ff cf rjmp .-2 ; 0x962 <__stop_program> +0000019a <__stop_program>: + 19a: ff cf rjmp .-2 ; 0x19a <__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 55258db..e7edfb6 100644 --- a/storno_cqp6xx_digital_xtal/Debug/storno_cqp6xx_digital_xtal.map +++ b/storno_cqp6xx_digital_xtal/Debug/storno_cqp6xx_digital_xtal.map @@ -42,14 +42,18 @@ c:/program files (x86)/atmel/studio/7.0/toolchain/avr8/avr8-gnu-toolchain/bin/.. si5351_driver/si5351_driver.o (__udivmodsi4) c:/program files (x86)/atmel/studio/7.0/toolchain/avr8/avr8-gnu-toolchain/bin/../lib/gcc/avr/5.4.0/avrxmega3/short-calls\libgcc.a(_exit.o) C:/Program Files (x86)/Atmel/Studio/7.0/Packs/atmel/ATtiny_DFP/1.10.348/gcc/dev/attiny402/avrxmega3/short-calls/crtattiny402.o (exit) +c:/program files (x86)/atmel/studio/7.0/toolchain/avr8/avr8-gnu-toolchain/bin/../lib/gcc/avr/5.4.0/avrxmega3/short-calls\libgcc.a(_copy_data.o) + main.o (__do_copy_data) c:/program files (x86)/atmel/studio/7.0/toolchain/avr8/avr8-gnu-toolchain/bin/../lib/gcc/avr/5.4.0/avrxmega3/short-calls\libgcc.a(_clear_bss.o) avr_uart_driver/avr_uart.o (__do_clear_bss) c:/program files (x86)/atmel/studio/7.0/toolchain/avr8/avr8-gnu-toolchain/bin/../lib/gcc/avr/5.4.0/../../../../avr/lib/avrxmega3/short-calls\libc.a(malloc.o) si5351_driver/si5351_driver.o (malloc) c:/program files (x86)/atmel/studio/7.0/toolchain/avr8/avr8-gnu-toolchain/bin/../lib/gcc/avr/5.4.0/../../../../avr/lib/avrxmega3/short-calls\libc.a(memcpy.o) si5351_driver/si5351_driver.o (memcpy) -c:/program files (x86)/atmel/studio/7.0/toolchain/avr8/avr8-gnu-toolchain/bin/../lib/gcc/avr/5.4.0/avrxmega3/short-calls\libgcc.a(_copy_data.o) - c:/program files (x86)/atmel/studio/7.0/toolchain/avr8/avr8-gnu-toolchain/bin/../lib/gcc/avr/5.4.0/../../../../avr/lib/avrxmega3/short-calls\libc.a(malloc.o) (__do_copy_data) +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) + avr_eeprom_driver/avr_eeprom_driver.o (eeprom_read_byte) +C:/Program Files (x86)/Atmel/Studio/7.0/Packs/atmel/ATtiny_DFP/1.10.348/gcc/dev/attiny402/avrxmega3/short-calls\libattiny402.a(eewr_byte.o) + avr_eeprom_driver/avr_eeprom_driver.o (eeprom_write_byte) Allocating common symbols Common symbol size file @@ -65,20 +69,6 @@ Discarded input sections .text 0x00000000 0x0 avr_eeprom_driver/avr_eeprom_driver.o .data 0x00000000 0x0 avr_eeprom_driver/avr_eeprom_driver.o .bss 0x00000000 0x0 avr_eeprom_driver/avr_eeprom_driver.o - .text.cm_EEPROM_write - 0x00000000 0x40 avr_eeprom_driver/avr_eeprom_driver.o - .text.cm_EEPROM_read - 0x00000000 0x34 avr_eeprom_driver/avr_eeprom_driver.o - .debug_info 0x00000000 0x2e9 avr_eeprom_driver/avr_eeprom_driver.o - .debug_abbrev 0x00000000 0x130 avr_eeprom_driver/avr_eeprom_driver.o - .debug_loc 0x00000000 0x3e avr_eeprom_driver/avr_eeprom_driver.o - .debug_aranges - 0x00000000 0x28 avr_eeprom_driver/avr_eeprom_driver.o - .debug_ranges 0x00000000 0x18 avr_eeprom_driver/avr_eeprom_driver.o - .debug_line 0x00000000 0x1b1 avr_eeprom_driver/avr_eeprom_driver.o - .debug_str 0x00000000 0x36b avr_eeprom_driver/avr_eeprom_driver.o - .comment 0x00000000 0x31 avr_eeprom_driver/avr_eeprom_driver.o - .debug_frame 0x00000000 0x34 avr_eeprom_driver/avr_eeprom_driver.o .text 0x00000000 0x0 avr_gpio_driver/avr_gpio.o .data 0x00000000 0x0 avr_gpio_driver/avr_gpio.o .bss 0x00000000 0x0 avr_gpio_driver/avr_gpio.o @@ -95,19 +85,49 @@ Discarded input sections 0x00000000 0x30 avr_gpio_driver/avr_gpio.o .debug_ranges 0x00000000 0x20 avr_gpio_driver/avr_gpio.o .debug_line 0x00000000 0x196 avr_gpio_driver/avr_gpio.o - .debug_str 0x00000000 0x319 avr_gpio_driver/avr_gpio.o + .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 0x00000000 0x12 avr_uart_driver/avr_uart.o .text.cm_uart_receive_busyWait @@ -115,25 +135,73 @@ 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 - .text.uart_test - 0x00000000 0x2 main.o + COMMON 0x00000000 0x6 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 @@ -150,6 +218,18 @@ Discarded input sections 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) @@ -277,6 +357,22 @@ Discarded input sections 0x00000000 0x0 c:/program files (x86)/atmel/studio/7.0/toolchain/avr8/avr8-gnu-toolchain/bin/../lib/gcc/avr/5.4.0/avrxmega3/short-calls\libgcc.a(_exit.o) .text.libgcc.fixed 0x00000000 0x0 c:/program files (x86)/atmel/studio/7.0/toolchain/avr8/avr8-gnu-toolchain/bin/../lib/gcc/avr/5.4.0/avrxmega3/short-calls\libgcc.a(_exit.o) + .text 0x00000000 0x0 c:/program files (x86)/atmel/studio/7.0/toolchain/avr8/avr8-gnu-toolchain/bin/../lib/gcc/avr/5.4.0/avrxmega3/short-calls\libgcc.a(_copy_data.o) + .data 0x00000000 0x0 c:/program files (x86)/atmel/studio/7.0/toolchain/avr8/avr8-gnu-toolchain/bin/../lib/gcc/avr/5.4.0/avrxmega3/short-calls\libgcc.a(_copy_data.o) + .bss 0x00000000 0x0 c:/program files (x86)/atmel/studio/7.0/toolchain/avr8/avr8-gnu-toolchain/bin/../lib/gcc/avr/5.4.0/avrxmega3/short-calls\libgcc.a(_copy_data.o) + .text.libgcc.mul + 0x00000000 0x0 c:/program files (x86)/atmel/studio/7.0/toolchain/avr8/avr8-gnu-toolchain/bin/../lib/gcc/avr/5.4.0/avrxmega3/short-calls\libgcc.a(_copy_data.o) + .text.libgcc.div + 0x00000000 0x0 c:/program files (x86)/atmel/studio/7.0/toolchain/avr8/avr8-gnu-toolchain/bin/../lib/gcc/avr/5.4.0/avrxmega3/short-calls\libgcc.a(_copy_data.o) + .text.libgcc 0x00000000 0x0 c:/program files (x86)/atmel/studio/7.0/toolchain/avr8/avr8-gnu-toolchain/bin/../lib/gcc/avr/5.4.0/avrxmega3/short-calls\libgcc.a(_copy_data.o) + .text.libgcc.prologue + 0x00000000 0x0 c:/program files (x86)/atmel/studio/7.0/toolchain/avr8/avr8-gnu-toolchain/bin/../lib/gcc/avr/5.4.0/avrxmega3/short-calls\libgcc.a(_copy_data.o) + .text.libgcc.builtins + 0x00000000 0x0 c:/program files (x86)/atmel/studio/7.0/toolchain/avr8/avr8-gnu-toolchain/bin/../lib/gcc/avr/5.4.0/avrxmega3/short-calls\libgcc.a(_copy_data.o) + .text.libgcc.fmul + 0x00000000 0x0 c:/program files (x86)/atmel/studio/7.0/toolchain/avr8/avr8-gnu-toolchain/bin/../lib/gcc/avr/5.4.0/avrxmega3/short-calls\libgcc.a(_copy_data.o) + .text.libgcc.fixed + 0x00000000 0x0 c:/program files (x86)/atmel/studio/7.0/toolchain/avr8/avr8-gnu-toolchain/bin/../lib/gcc/avr/5.4.0/avrxmega3/short-calls\libgcc.a(_copy_data.o) .text 0x00000000 0x0 c:/program files (x86)/atmel/studio/7.0/toolchain/avr8/avr8-gnu-toolchain/bin/../lib/gcc/avr/5.4.0/avrxmega3/short-calls\libgcc.a(_clear_bss.o) .data 0x00000000 0x0 c:/program files (x86)/atmel/studio/7.0/toolchain/avr8/avr8-gnu-toolchain/bin/../lib/gcc/avr/5.4.0/avrxmega3/short-calls\libgcc.a(_clear_bss.o) .bss 0x00000000 0x0 c:/program files (x86)/atmel/studio/7.0/toolchain/avr8/avr8-gnu-toolchain/bin/../lib/gcc/avr/5.4.0/avrxmega3/short-calls\libgcc.a(_clear_bss.o) @@ -294,26 +390,23 @@ 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 0x00000000 0x0 c:/program files (x86)/atmel/studio/7.0/toolchain/avr8/avr8-gnu-toolchain/bin/../lib/gcc/avr/5.4.0/avrxmega3/short-calls\libgcc.a(_copy_data.o) - .data 0x00000000 0x0 c:/program files (x86)/atmel/studio/7.0/toolchain/avr8/avr8-gnu-toolchain/bin/../lib/gcc/avr/5.4.0/avrxmega3/short-calls\libgcc.a(_copy_data.o) - .bss 0x00000000 0x0 c:/program files (x86)/atmel/studio/7.0/toolchain/avr8/avr8-gnu-toolchain/bin/../lib/gcc/avr/5.4.0/avrxmega3/short-calls\libgcc.a(_copy_data.o) - .text.libgcc.mul - 0x00000000 0x0 c:/program files (x86)/atmel/studio/7.0/toolchain/avr8/avr8-gnu-toolchain/bin/../lib/gcc/avr/5.4.0/avrxmega3/short-calls\libgcc.a(_copy_data.o) - .text.libgcc.div - 0x00000000 0x0 c:/program files (x86)/atmel/studio/7.0/toolchain/avr8/avr8-gnu-toolchain/bin/../lib/gcc/avr/5.4.0/avrxmega3/short-calls\libgcc.a(_copy_data.o) - .text.libgcc 0x00000000 0x0 c:/program files (x86)/atmel/studio/7.0/toolchain/avr8/avr8-gnu-toolchain/bin/../lib/gcc/avr/5.4.0/avrxmega3/short-calls\libgcc.a(_copy_data.o) - .text.libgcc.prologue - 0x00000000 0x0 c:/program files (x86)/atmel/studio/7.0/toolchain/avr8/avr8-gnu-toolchain/bin/../lib/gcc/avr/5.4.0/avrxmega3/short-calls\libgcc.a(_copy_data.o) - .text.libgcc.builtins - 0x00000000 0x0 c:/program files (x86)/atmel/studio/7.0/toolchain/avr8/avr8-gnu-toolchain/bin/../lib/gcc/avr/5.4.0/avrxmega3/short-calls\libgcc.a(_copy_data.o) - .text.libgcc.fmul - 0x00000000 0x0 c:/program files (x86)/atmel/studio/7.0/toolchain/avr8/avr8-gnu-toolchain/bin/../lib/gcc/avr/5.4.0/avrxmega3/short-calls\libgcc.a(_copy_data.o) - .text.libgcc.fixed - 0x00000000 0x0 c:/program files (x86)/atmel/studio/7.0/toolchain/avr8/avr8-gnu-toolchain/bin/../lib/gcc/avr/5.4.0/avrxmega3/short-calls\libgcc.a(_copy_data.o) + .text.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) + .text 0x00000000 0x0 C:/Program Files (x86)/Atmel/Studio/7.0/Packs/atmel/ATtiny_DFP/1.10.348/gcc/dev/attiny402/avrxmega3/short-calls\libattiny402.a(eewr_byte.o) + .data 0x00000000 0x0 C:/Program Files (x86)/Atmel/Studio/7.0/Packs/atmel/ATtiny_DFP/1.10.348/gcc/dev/attiny402/avrxmega3/short-calls\libattiny402.a(eewr_byte.o) + .bss 0x00000000 0x0 C:/Program Files (x86)/Atmel/Studio/7.0/Packs/atmel/ATtiny_DFP/1.10.348/gcc/dev/attiny402/avrxmega3/short-calls\libattiny402.a(eewr_byte.o) Memory Configuration @@ -450,7 +543,7 @@ END GROUP .rela.plt *(.rela.plt) -.text 0x00000000 0x964 +.text 0x00000000 0x19c *(.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 @@ -491,10 +584,10 @@ END GROUP *(.init3) *(.init3) *(.init4) - .init4 0x00000040 0x10 c:/program files (x86)/atmel/studio/7.0/toolchain/avr8/avr8-gnu-toolchain/bin/../lib/gcc/avr/5.4.0/avrxmega3/short-calls\libgcc.a(_clear_bss.o) - 0x00000040 __do_clear_bss - .init4 0x00000050 0x16 c:/program files (x86)/atmel/studio/7.0/toolchain/avr8/avr8-gnu-toolchain/bin/../lib/gcc/avr/5.4.0/avrxmega3/short-calls\libgcc.a(_copy_data.o) - 0x00000050 __do_copy_data + .init4 0x00000040 0x16 c:/program files (x86)/atmel/studio/7.0/toolchain/avr8/avr8-gnu-toolchain/bin/../lib/gcc/avr/5.4.0/avrxmega3/short-calls\libgcc.a(_copy_data.o) + 0x00000040 __do_copy_data + .init4 0x00000056 0x10 c:/program files (x86)/atmel/studio/7.0/toolchain/avr8/avr8-gnu-toolchain/bin/../lib/gcc/avr/5.4.0/avrxmega3/short-calls\libgcc.a(_clear_bss.o) + 0x00000056 __do_clear_bss *(.init4) *(.init5) *(.init5) @@ -536,75 +629,30 @@ END GROUP 0x0000006a __vector_20 0x0000006c . = ALIGN (0x2) *(.text.*) - .text.i2c_reset - 0x0000006c 0x10 avr_i2c_driver/avr_i2c.o - .text.i2c_write_devAddr - 0x0000007c 0x22 avr_i2c_driver/avr_i2c.o - 0x0000007c i2c_write_devAddr - .text.i2c_write - 0x0000009e 0x92 avr_i2c_driver/avr_i2c.o - 0x0000009e i2c_write - .text.i2c_read - 0x00000130 0x8c avr_i2c_driver/avr_i2c.o - 0x00000130 i2c_read - .text.i2c_IsDeviceReady - 0x000001bc 0x2c avr_i2c_driver/avr_i2c.o - 0x000001bc i2c_IsDeviceReady - .text.cm_i2c_init - 0x000001e8 0x34 avr_i2c_driver/avr_i2c.o - 0x000001e8 cm_i2c_init - .text.cm_i2c_addDev - 0x0000021c 0x3c avr_i2c_driver/avr_i2c.o - 0x0000021c cm_i2c_addDev - .text.cm_i2c_transfer - 0x00000258 0x34 avr_i2c_driver/avr_i2c.o - 0x00000258 cm_i2c_transfer - .text.cm_uart_init - 0x0000028c 0x60 avr_uart_driver/avr_uart.o - 0x0000028c cm_uart_init - .text.cm_uart_send - 0x000002ec 0xe avr_uart_driver/avr_uart.o - 0x000002ec cm_uart_send + .text.cm_EEPROM_write + 0x0000006c 0x36 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 .text.__vector_22 - 0x000002fa 0x70 avr_uart_driver/avr_uart.o - 0x000002fa __vector_22 - .text.cm_msgSync_Byte_DecodeSC - 0x0000036a 0x9e cm_msg/cm_msg.o - 0x0000036a cm_msgSync_Byte_DecodeSC - .text.cm_msg_DecodeMsg_Byte - 0x00000408 0x9e cm_msg/cm_msg.o - 0x00000408 cm_msg_DecodeMsg_Byte - .text.cm_MsgCompleteEvt_Register - 0x000004a6 0x1c cm_msg/cm_msg.o - 0x000004a6 cm_MsgCompleteEvt_Register - .text.programPLL_Parameters - 0x000004c2 0x6 cqm6xx_app.o - 0x000004c2 programPLL_Parameters - .text.uart_rx_event - 0x000004c8 0xe cqm6xx_app.o - 0x000004c8 uart_rx_event - .text.cqm6xx_app_init - 0x000004d6 0x2c cqm6xx_app.o - 0x000004d6 cqm6xx_app_init - .text.main 0x00000502 0x50 main.o - 0x00000502 main - .text.writeRegister - 0x00000552 0x78 si5351_driver/si5351_driver.o - .text.cm_si5351_init - 0x000005ca 0x142 si5351_driver/si5351_driver.o - 0x000005ca cm_si5351_init + 0x000000b2 0x56 avr_uart_driver/avr_uart.o + 0x000000b2 __vector_22 + .text.main 0x00000108 0x58 main.o + 0x00000108 main .text.avr-libc - 0x0000070c 0x242 c:/program files (x86)/atmel/studio/7.0/toolchain/avr8/avr8-gnu-toolchain/bin/../lib/gcc/avr/5.4.0/../../../../avr/lib/avrxmega3/short-calls\libc.a(malloc.o) - 0x0000070c malloc - 0x0000083c free + 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 .text.avr-libc - 0x0000094e 0x12 c:/program files (x86)/atmel/studio/7.0/toolchain/avr8/avr8-gnu-toolchain/bin/../lib/gcc/avr/5.4.0/../../../../avr/lib/avrxmega3/short-calls\libc.a(memcpy.o) - 0x0000094e memcpy - 0x00000960 . = ALIGN (0x2) + 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) *(.fini9) - .fini9 0x00000960 0x0 c:/program files (x86)/atmel/studio/7.0/toolchain/avr8/avr8-gnu-toolchain/bin/../lib/gcc/avr/5.4.0/avrxmega3/short-calls\libgcc.a(_exit.o) - 0x00000960 _exit - 0x00000960 exit + .fini9 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) *(.fini8) *(.fini8) @@ -623,66 +671,50 @@ END GROUP *(.fini1) *(.fini1) *(.fini0) - .fini0 0x00000960 0x4 c:/program files (x86)/atmel/studio/7.0/toolchain/avr8/avr8-gnu-toolchain/bin/../lib/gcc/avr/5.4.0/avrxmega3/short-calls\libgcc.a(_exit.o) + .fini0 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) - 0x00000964 _etext = . + 0x0000019c _etext = . -.rodata 0x00008964 0x5 load address 0x00000964 +.rodata *(.rodata) *(.rodata*) - .rodata.startCode - 0x00008964 0x5 cm_msg/cm_msg.o *(.gnu.linkonce.r*) -.data 0x00803f00 0x6 load address 0x00000969 +.data 0x00803f00 0x1a load address 0x0000019c 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 *(.gnu.linkonce.d*) - 0x00803f06 . = ALIGN (0x2) - 0x00803f06 _edata = . - 0x00803f06 PROVIDE (__data_end, .) + 0x00803f1a . = ALIGN (0x2) + *fill* 0x00803f19 0x1 + 0x00803f1a _edata = . + 0x00803f1a PROVIDE (__data_end, .) -.bss 0x00803f06 0x4a - 0x00803f06 PROVIDE (__bss_start, .) +.bss 0x00803f1a 0x1c + 0x00803f1a PROVIDE (__bss_start, .) *(.bss) *(.bss*) .bss.uart_rx_evt_fpt - 0x00803f06 0x2 avr_uart_driver/avr_uart.o - 0x00803f06 uart_rx_evt_fpt - .bss.data_bytes_idx.1845 - 0x00803f08 0x1 cm_msg/cm_msg.o - .bss.msg.1844 0x00803f09 0x37 cm_msg/cm_msg.o - .bss.state.1843 - 0x00803f40 0x1 cm_msg/cm_msg.o - .bss.state.1832 - 0x00803f41 0x1 cm_msg/cm_msg.o - .bss.s_msg_cmplete_evt_inst - 0x00803f42 0x2 cm_msg/cm_msg.o - 0x00803f42 s_msg_cmplete_evt_inst - .bss.s_msg_cmplete_evt_fpt - 0x00803f44 0x2 cm_msg/cm_msg.o - 0x00803f44 s_msg_cmplete_evt_fpt + 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 *(COMMON) - COMMON 0x00803f46 0x6 main.o - 0x00803f46 storno_xtal_app - COMMON 0x00803f4c 0x4 c:/program files (x86)/atmel/studio/7.0/toolchain/avr8/avr8-gnu-toolchain/bin/../lib/gcc/avr/5.4.0/../../../../avr/lib/avrxmega3/short-calls\libc.a(malloc.o) - 0x00803f4c __brkval - 0x00803f4e __flp - 0x00803f50 PROVIDE (__bss_end, .) - 0x00000969 __data_load_start = LOADADDR (.data) - 0x0000096f __data_load_end = (__data_load_start + SIZEOF (.data)) + 0x00803f36 PROVIDE (__bss_end, .) + 0x0000019c __data_load_start = LOADADDR (.data) + 0x000001b6 __data_load_end = (__data_load_start + SIZEOF (.data)) -.noinit 0x00803f50 0x0 +.noinit 0x00803f36 0x0 [!provide] PROVIDE (__noinit_start, .) *(.noinit*) [!provide] PROVIDE (__noinit_end, .) - 0x00803f50 _end = . - 0x00803f50 PROVIDE (__heap_start, .) + 0x00803f36 _end = . + 0x00803f36 PROVIDE (__heap_start, .) .eeprom 0x00810000 0x0 *(.eeprom*) @@ -723,14 +755,10 @@ END GROUP .comment 0x00000000 0x30 *(.comment) - .comment 0x00000000 0x30 avr_i2c_driver/avr_i2c.o + .comment 0x00000000 0x30 avr_eeprom_driver/avr_eeprom_driver.o 0x31 (size before relaxing) .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 @@ -752,87 +780,70 @@ END GROUP .debug_sfnames *(.debug_sfnames) -.debug_aranges 0x00000000 0x1b8 +.debug_aranges 0x00000000 0xc8 *(.debug_aranges) .debug_aranges - 0x00000000 0x68 avr_i2c_driver/avr_i2c.o + 0x00000000 0x28 avr_eeprom_driver/avr_eeprom_driver.o .debug_aranges - 0x00000068 0x40 avr_uart_driver/avr_uart.o + 0x00000028 0x40 avr_uart_driver/avr_uart.o .debug_aranges - 0x000000a8 0x30 cm_msg/cm_msg.o + 0x00000068 0x20 main.o .debug_aranges - 0x000000d8 0x48 cqm6xx_app.o + 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) .debug_aranges - 0x00000120 0x28 main.o - .debug_aranges - 0x00000148 0x70 si5351_driver/si5351_driver.o + 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) .debug_pubnames *(.debug_pubnames) -.debug_info 0x00000000 0x496c +.debug_info 0x00000000 0x1e3d *(.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 0x6da avr_i2c_driver/avr_i2c.o - .debug_info 0x000018b0 0x518 avr_uart_driver/avr_uart.o - .debug_info 0x00001dc8 0x2b4 cm_msg/cm_msg.o - .debug_info 0x0000207c 0x628 cqm6xx_app.o - .debug_info 0x000026a4 0xce3 main.o - .debug_info 0x00003387 0x15e5 si5351_driver/si5351_driver.o + .debug_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_abbrev 0x00000000 0x1bfd +.debug_abbrev 0x00000000 0x1565 *(.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 0x1bb avr_i2c_driver/avr_i2c.o - .debug_abbrev 0x00001299 0x1ed avr_uart_driver/avr_uart.o - .debug_abbrev 0x00001486 0x14b cm_msg/cm_msg.o - .debug_abbrev 0x000015d1 0x1df cqm6xx_app.o - .debug_abbrev 0x000017b0 0x203 main.o - .debug_abbrev 0x000019b3 0x24a si5351_driver/si5351_driver.o + .debug_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_line 0x00000000 0x12f2 +.debug_line 0x00000000 0x7d0 *(.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 0x3ff avr_i2c_driver/avr_i2c.o - .debug_line 0x00000535 0x227 avr_uart_driver/avr_uart.o - .debug_line 0x0000075c 0x208 cm_msg/cm_msg.o - .debug_line 0x00000964 0x323 cqm6xx_app.o - .debug_line 0x00000c87 0x19b main.o - .debug_line 0x00000e22 0x4d0 si5351_driver/si5351_driver.o + .debug_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_frame 0x00000000 0x558 +.debug_frame 0x00000000 0x140 *(.debug_frame) - .debug_frame 0x00000000 0x118 avr_i2c_driver/avr_i2c.o - .debug_frame 0x00000118 0xcc avr_uart_driver/avr_uart.o - .debug_frame 0x000001e4 0x44 cm_msg/cm_msg.o - .debug_frame 0x00000228 0x98 cqm6xx_app.o - .debug_frame 0x000002c0 0x44 main.o - .debug_frame 0x00000304 0x254 si5351_driver/si5351_driver.o + .debug_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_str 0x00000000 0x2131 +.debug_str 0x00000000 0xe53 *(.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 0x4c2 avr_i2c_driver/avr_i2c.o - 0x506 (size before relaxing) - .debug_str 0x00000c6b 0x283 avr_uart_driver/avr_uart.o - 0x4f8 (size before relaxing) - .debug_str 0x00000eee 0x23a cm_msg/cm_msg.o - 0x3fe (size before relaxing) - .debug_str 0x00001128 0x2d8 cqm6xx_app.o - 0x4db (size before relaxing) - .debug_str 0x00001400 0x909 main.o - 0xc4e (size before relaxing) - .debug_str 0x00001d09 0x428 si5351_driver/si5351_driver.o - 0xf95 (size before relaxing) + .debug_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_loc 0x00000000 0x1c80 +.debug_loc 0x00000000 0x349 *(.debug_loc) - .debug_loc 0x00000000 0x73d avr_i2c_driver/avr_i2c.o - .debug_loc 0x0000073d 0x16e avr_uart_driver/avr_uart.o - .debug_loc 0x000008ab 0x160 cm_msg/cm_msg.o - .debug_loc 0x00000a0b 0x32d cqm6xx_app.o - .debug_loc 0x00000d38 0x48 main.o - .debug_loc 0x00000d80 0xf00 si5351_driver/si5351_driver.o + .debug_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_macinfo *(.debug_macinfo) @@ -852,14 +863,11 @@ END GROUP .debug_pubtypes *(.debug_pubtypes) -.debug_ranges 0x00000000 0x158 +.debug_ranges 0x00000000 0x58 *(.debug_ranges) - .debug_ranges 0x00000000 0x58 avr_i2c_driver/avr_i2c.o - .debug_ranges 0x00000058 0x30 avr_uart_driver/avr_uart.o - .debug_ranges 0x00000088 0x20 cm_msg/cm_msg.o - .debug_ranges 0x000000a8 0x38 cqm6xx_app.o - .debug_ranges 0x000000e0 0x18 main.o - .debug_ranges 0x000000f8 0x60 si5351_driver/si5351_driver.o + .debug_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_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 2c1ff90..09ef998 100644 --- a/storno_cqp6xx_digital_xtal/Debug/storno_cqp6xx_digital_xtal.srec +++ b/storno_cqp6xx_digital_xtal/Debug/storno_cqp6xx_digital_xtal.srec @@ -1,155 +1,30 @@ S022000073746F726E6F5F6371703678785F6469676974616C5F7874616C2E737265633F S113000019C033C032C031C030C02FC02EC02DC083 S11300102CC02BC02AC029C028C027C026C025C098 -S113002024C023C022C021C020C01FC066C11DC07F +S113002024C023C022C021C020C01FC042C01DC0A4 S11300301CC01BC011241FBECFEFCDBFDFE3DEBF4A -S11300402FE3A6E0BFE301C01D92A035B207E1F79C -S11300501FE3A0E0BFE3E9E6F9E002C005900D92DA -S1130060A630B107D9F74DD27BC4CACFE0E1F8E09E -S113007084818860848381E0858308958093170850 -S113008080911508807CE1F390911508892F807187 -S113009094FF04C083E08093140881E00895CF9214 -S11300A0DF92EF92FF92CF93DF93EB0169017A0124 -S11300B0232B242B252B81F1E1DF811130C09E01FC -S11300C02F5F3F4F8881809318088091150886FF21 -S11300D0FCCF8091150884FF06C083E08093140848 -S11300E081E090E01EC0809115088C7021F0BEDF85 -S11300F081E090E016C08091150884FD07C081E07E -S1130100C81AD108E108F108E901C9F683E080932F -S1130110140880E090E005C08FEF9FEF02C08FEFDE -S11301209FEFDF91CF91FF90EF90DF90CF900895F4 -S1130130CF92DF92EF92FF92CF93DF93EB016901AD -S11301407A01232B242B252B69F1816097DF8823E7 -S1130150C9F02BC080911508807CE1F3CE01019693 -S1130160209118082883411551056105710521F472 -S113017024E02093140803C022E0209314086A01A9 -S11301807B01EC01B701A6014150510961097109D4 -S1130190CD28CE28CF28F1F683E08093140880E0A0 -S11301A090E005C081E090E002C08FEF9FEFDF9107 -S11301B0CF91FF90EF90DF90CF9008958093170830 -S11301C08091150886FFFCCF8091150884FF06C036 -S11301D083E08093140881E090E0089583E08093A5 -S11301E0140880E090E00895E0E0F4E080818B7FE3 -S11301F080838081877F8083A0E1B8E08BE01696BE -S11302008C93169781E013968C93139715968C9381 -S113021088E0828B838B80E090E00895EF92FF92D8 -S11302200F931F93CF938C017B01C42F842F880FCE -S1130230C5DF009749F4F801E082F1824C2F50E0C9 -S1130240440F551F428302C08EEF9FEFCF911F9141 -S11302500F91FF90EF9008950F93009781F0FC01A8 -S1130260002319F0013031F00DC0828161DF80E09C -S113027090E00AC0828113DF80E090E005C08FEF38 -S11302809FEF02C080E090E00F910895CF93DF9339 -S11302901F92CDB7DEB7AC01F894E0E0F8E02CE6AD -S11302A035E02087318793E0978390EC968361153E -S11302B0710511F4452B39F080E8809305086093AB -S11302C0063F7093073F80910408882324F48091AB -S11302D0000889838981E0E0F4E080E4818380E898 -S11302E0828378940F90DF91CF91089590910408C0 -S11302F095FFFCCF8093020808951F920F920FB6CA -S11303000F9211242F933F934F935F936F937F9397 -S11303108F939F93AF93BF93EF93FF93CF93DF9309 -S11303201F92CDB7DEB7E091063FF091073F3097BB -S113033019F08091000809958091000889838981CA -S1130340D5DF0F90DF91CF91FF91EF91BF91AF91E6 -S11303509F918F917F916F915F914F913F912F91D9 -S11303600F900FBE0F901F901895E091413FE2301F -S113037029F128F4EE2341F0E13091F040C0E3305C -S113038059F1E430B9F13BC0F0E0EC59F647208173 -S113039091E0281390E09093413F81E090E008952C -S11303A0F0E0EC59F6479081891302C082E001C065 -S11303B080E08093413F81E090E00895F0E0EC59C3 -S11303C0F6479081891302C083E001C080E08093E6 -S11303D0413F81E090E00895F0E0EC59F6479081C8 -S11303E0891302C084E001C080E08093413F81E032 -S11303F090E008951092413F80E090E008951092BB -S1130400413F81E090E008959091403F9330C1F0E6 -S113041028F4992341F0913069F042C09430C1F03E -S1130420953001F13DC0A1DF892BD1F581E08093A6 -S1130430403F36C08093093F83E08093403F30C003 -S1130440E9E0FFE31182828384E08093403F28C087 -S1130450E9E0FFE321813281282B2183328395E077 -S11304609093403F9091083FE92FF0E0E75FF04C14 -S1130470838381E0890F8093083F9091093F981707 -S113048078F4E091443FF091453F6CE07FE3809144 -S1130490423F9091433F09951092403F1092083F8C -S11304A080E090E00895009759F06115710541F0DE -S11304B08093423F9093433F6093443F7093453F02 -S11304C00895FC0111820895FC0164837583F9DFAA -S11304D080E090E00895CF93DF936115710571F08A -S11304E0009761F0EC01198218826A837B8364E6C9 -S11304F072E0D9DF64E072E0CE01C8DEDF91CF9113 -S11305000895CF93DF93CDB7DEB7CB55D109CDBFD7 -S1130510DEBF80E090E068DE40E660E070E0CE019F -S113052001967CDE4CE251E0BE016F5F7F4FCE014D -S113053004964BD0BE016C5F7F4F86E49FE3CBDF14 -S11305402AE684E091E0215080409040E1F700C029 -S1130550F7CF8F929F92AF92BF92CF92DF92EF929A -S1130560FF920F931F93CF93DF93EC01862E5A01D2 -S113057068017901C8010196C9D0982E192FFC0190 -S11305808192CF01A601B501E2D1EA81FB81A701E5 -S113059096012F5F3F4F4F4F5F4F01E0692D712F41 -S11305A0888199810995892D912F48D180E090E027 -S11305B0DF91CF911F910F91FF90EF90DF90CF903B -S11305C0BF90AF909F908F900895EF92FF920F93FA -S11305D01F93CF93DF931F92CDB7DEB7009709F433 -S11305E085C06115710509F484C04115510509F4EC -S11305F083C07C01DC016D937C93119712964D931B -S11306005C931397FC01349684E5DF011D928A956F -S1130610E9F78FEF898301E010E020E030E0AE01DC -S11306204F5F5F4F63E0C70194DF80E8898301E097 -S113063010E020E030E0AE014F5F5F4F60E1C701A2 -S113064088DF01E010E020E030E0AE014F5F5F4F53 -S113065061E1C7017EDF01E010E020E030E0AE019F -S11306604F5F5F4F62E1C70174DF01E010E020E0FB -S113067030E0AE014F5F5F4F63E1C7016ADF01E025 -S113068010E020E030E0AE014F5F5F4F64E1C7014E -S113069060DF01E010E020E030E0AE014F5F5F4F2B -S11306A065E1C70156DF01E010E020E030E0AE0173 -S11306B04F5F5F4F66E1C7014CDF01E010E020E0CF -S11306C030E0AE014F5F5F4F67E1C70142DF80EC6E -S11306D0898301E010E020E030E0AE014F5F5F4F1E -S11306E067EBC70136DF80E090E008C08FEF9FEF33 -S11306F005C08FEF9FEF02C08FEF9FEF0F90DF9148 -S1130700CF911F910F91FF90EF9008950F931F9336 -S1130710CF93DF938230910510F482E090E0E09172 -S11307204E3FF0914F3F20E030E0A0E0B0E0309742 -S113073019F1408151810281138148175907C8F08A -S11307408417950769F4109731F012960C93129759 -S113075013961C9327C000934E3F10934F3F22C023 -S11307602115310519F04217530718F49A01BD01F8 -S1130770EF01DF01F801DBCF21153105F9F0281B6A -S1130780390B2430310580F48A819B816115710510 -S113079021F0FB018283938304C080934E3F9093A6 -S11307A04F3FFE01329644C0FE01E20FF31F8193D6 -S11307B0919322503109288339833AC020914C3FC8 -S11307C030914D3F232B41F42091023F3091033F60 -S11307D020934C3F30934D3F2091003F3091013F97 -S11307E02115310541F42DB73EB74091043F509196 -S11307F0053F241B350BE0914C3FF0914D3FE21730 -S1130800F307A0F42E1B3F0B2817390778F0AC012F -S11308104E5F5F4F2417350748F04E0F5F1F40931C -S11308204C3F50934D3F8193919302C0E0E0F0E040 -S1130830CF01DF91CF911F910F910895CF93DF9353 -S1130840009709F481C0FC01329712821382A091AF -S11308504E3FB0914F3F109781F420813181820F38 -S1130860931F20914C3F30914D3F2817390751F584 -S1130870E0934C3FF0934D3F67C0ED0120E030E042 -S1130880CE17DF0740F44A815B819E014115510573 -S1130890F1F0EA01F5CFC283D38340815181840F03 -S11308A0951FC817D90759F488819981840F951F1A -S11308B00296808391838A819B818283938321150D -S11308C0310529F4E0934E3FF0934F3F3DC0E901D9 -S11308D0EA83FB8349915991C40FD51FEC17FD0797 -S11308E061F480819181840F951F0296E9018883C8 -S11308F09983828193818A839B83E0E0F0E012965E -S11309008D919C911397009719F0FD01DC01F7CFAD -S11309108D919C9111979D012E5F3F4F820F931FE4 -S113092020914C3F30914D3F2817390769F4309797 -S113093029F410924E3F10924F3F02C0128213824C -S1130940A0934C3FB0934D3FDF91CF910895FB01AD -S1130950DC0102C001900D9241505040D8F7089537 -S1070960F894FFCF35 -S10809644F5A31434D20 -S10909690000503F2000D5 +S11300401FE3A0E0BFE3ECE9F1E002C005900D92EC +S1130050AA31B107D9F72FE3AAE1BFE301C01D928A +S1130060A633B207E1F750D097C0CACFEF92FF9200 +S11300700F931F93CF93DF937C018B01D42FC0E0A8 +S113008007C0F801EC0FF11D6081C70171D0CF5F8B +S1130090CD17B8F3DF91CF911F910F91FF90EF909F +S11300A00895CF93DF93EB015BD08883DF91CF91E9 +S11300B008951F920F920FB60F9211242F933F931E +S11300C04F935F936F937F938F939F93AF93BF935C +S11300D0EF93FF93E0911A3FF0911B3F309719F093 +S11300E0809100080995FF91EF91BF91AF919F9185 +S11300F08F917F916F915F914F913F912F910F90CD +S11301000FBE0F901F90189541E06DE17FE380E0F2 +S113011090E0C7DF2AE684E091E0215080409040DF +S1130120E1F700C041E060E07FE380E090E09EDF23 +S1130130809108048D3059F480911C3F8F5F809327 +S11301401C3F80911C3F823310F010921C3F2AE622 +S113015084E091E0215080409040E1F700C0E8CF76 +S113016003D0808199270895FC01E050FC4E089546 +S1130170262FAF93BF93E0E0F0E1328131FDFDCF54 +S1130180DC01A050BC4E2C932DE924BF23E0208336 +S10F01900196BF91AF910895F894FFCF41 +S113019C55000000000000000000000000000000FA +S10D01AC0000000000000000000045 S9030000FC diff --git a/storno_cqp6xx_digital_xtal/avr_eeprom_driver b/storno_cqp6xx_digital_xtal/avr_eeprom_driver index a659fd1..31508be 160000 --- a/storno_cqp6xx_digital_xtal/avr_eeprom_driver +++ b/storno_cqp6xx_digital_xtal/avr_eeprom_driver @@ -1 +1 @@ -Subproject commit a659fd165f91bb8d7d8d5812f2a41f3a03c6f315 +Subproject commit 31508bec9dd34319737e697f753fc4a87c6823ab diff --git a/storno_cqp6xx_digital_xtal/avr_uart_driver b/storno_cqp6xx_digital_xtal/avr_uart_driver index 291af7f..c8ee01c 160000 --- a/storno_cqp6xx_digital_xtal/avr_uart_driver +++ b/storno_cqp6xx_digital_xtal/avr_uart_driver @@ -1 +1 @@ -Subproject commit 291af7f90d04a417b12229b21093c4ac0bfd9df9 +Subproject commit c8ee01c5da53d20b01c03fff947f7493ee7e7dc7 diff --git a/storno_cqp6xx_digital_xtal/cm_msg b/storno_cqp6xx_digital_xtal/cm_msg index 253f9b8..8a8fe0f 160000 --- a/storno_cqp6xx_digital_xtal/cm_msg +++ b/storno_cqp6xx_digital_xtal/cm_msg @@ -1 +1 @@ -Subproject commit 253f9b8e208076a513ce92447c06bc55a770068d +Subproject commit 8a8fe0f12f61b6405eaca04884571b1c0100cb94 diff --git a/storno_cqp6xx_digital_xtal/cqm6xx_app.c b/storno_cqp6xx_digital_xtal/cqm6xx_app.c index a81109d..9381d91 100644 --- a/storno_cqp6xx_digital_xtal/cqm6xx_app.c +++ b/storno_cqp6xx_digital_xtal/cqm6xx_app.c @@ -62,7 +62,7 @@ static void cqm_setPLLParam(storno_xtal_app_t *inst, si5351_PLLs pll_num, si5351 cm_setPllParamRaw(inst->si5351_dev,pll_num, inst->pll_param_ptr->MSNx_P1, inst->pll_param_ptr->MSNx_P2, inst->pll_param_ptr->MSNx_P3); _delay_ms(1); - cm_setOutputMultiSynth(inst->si5351_dev,output, inst->pll_param_ptr->MSx_P1, inst->pll_param_ptr->MSx_P2, inst->pll_param_ptr->MSx_P3); + cm_setOutputMultiSynthRaw(inst->si5351_dev,output, inst->pll_param_ptr->MSx_P1, inst->pll_param_ptr->MSx_P2, inst->pll_param_ptr->MSx_P3); _delay_ms(1); cm_setCLKControl(inst->si5351_dev,output,SI5351_CLK_POWER_UP); @@ -71,7 +71,7 @@ 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; @@ -89,7 +89,7 @@ static void cqm6xx_app_loadPLLParam(storno_xtal_app_t *inst){ 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;*/ } @@ -105,7 +105,7 @@ void cqm6xx_app_statemachine(storno_xtal_app_t *inst){ // Read PLL parameters from EEPROM and Program PLL values here: inst->state_now = inst->state_next; - //cqm6xx_app_loadPLLParam(inst); + cqm6xx_app_loadPLLParam(inst); // if ok, then go to RX mode: @@ -175,7 +175,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/main.c b/storno_cqp6xx_digital_xtal/main.c index 7f13166..36ec947 100644 --- a/storno_cqp6xx_digital_xtal/main.c +++ b/storno_cqp6xx_digital_xtal/main.c @@ -11,32 +11,37 @@ #include "avr_i2c_driver/avr_i2c.h" #include "si5351_driver/include/si5351_driver.h" #include "cqm6xx_app.h" +#include "avr_eeprom_driver/avr_eeprom_driver.h" storno_xtal_app_t storno_xtal_app; -void uart_test(uint8_t data){ - - if(data == 'O'){ - return; - } -} - + uint8_t data_set[25] = {0x55}; + //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); @@ -45,7 +50,21 @@ int main(void) { //cqm6xx_app_statemachine(&storno_xtal_app); - + if(PORTA.IN == 0x0d){ + + static volatile uint8_t counter = 0; + + counter++; + + if (counter >= 50) + { + counter = 0; + } + + } + + + _delay_ms(100); } } diff --git a/storno_cqp6xx_digital_xtal/si5351_driver b/storno_cqp6xx_digital_xtal/si5351_driver index 133056f..06a0eda 160000 --- a/storno_cqp6xx_digital_xtal/si5351_driver +++ b/storno_cqp6xx_digital_xtal/si5351_driver @@ -1 +1 @@ -Subproject commit 133056f577465b800c6417ab9b9a005133179796 +Subproject commit 06a0eda9071b77b92938f71a34a016b52e59252f