diff --git a/default/VFD_Sinus_AT328.elf b/default/VFD_Sinus_AT328.elf index 5c813f5471b283d704e9ee16fd5fc13e189a2caf..4047edc92a068b577581509a503b6b1b050d80f9 100755 Binary files a/default/VFD_Sinus_AT328.elf and b/default/VFD_Sinus_AT328.elf differ diff --git a/default/VFD_Sinus_AT328.hex b/default/VFD_Sinus_AT328.hex index d487a96b675d9e74f43c88ad0cdf1f722cf534cd..2247d847a160cb9f4805705e79de3a922ce6d28e 100644 --- a/default/VFD_Sinus_AT328.hex +++ b/default/VFD_Sinus_AT328.hex @@ -54,14 +54,14 @@ :10035000FC0052FA004AF80042F6003AF40032F18A :10036000002AEF0021EC0019E80011E50008E10087 :1003700011241FBECFEFD8E0DEBFCDBF11E0A0E05B -:10038000B1E0EAEBF3E102C005900D92A032B107B3 +:10038000B1E0E2EEF3E102C005900D92A032B107B8 :10039000D9F721E0A0E2B1E001C01D92AD33B20770 -:1003A000E1F70E942B070C94DB090C940000CF931B +:1003A000E1F70E942B070C94EF090C940000CF9307 :1003B000DF93DC01FB01E9011A821B821C821D8292 :1003C000198218829F838E83798768875B874A8723 -:1003D0008FEF9FE7BD010E94FE087D876C879F011C +:1003D0008FEF9FE7BD010E9412097D876C879F0107 :1003E000FF0F440B550B61E070E08FEF9FE70E9419 -:1003F00034092E873F87488B598BDF91CF91089521 +:1003F00048092E873F87488B598BDF91CF9108950D :10040000EF92FF920F931F93CF93DF938B01FA012B :100410009C01261B370B848595858217930784F0F2 :10042000919581959109281739076CF086819781FC @@ -74,12 +74,12 @@ :1004900081959F4FAF4FBF4F281739074A075B071A :1004A0004CF482839383A483B5836FEF7FEF80E066 :1004B00090E808C02283338344835583A085B185A7 -:1004C0000E94620920813181201B310BA285B385F6 +:1004C0000E94760920813181201B310BA285B385E2 :1004D0002A9F70012B9FF00C3A9FF00C112411837E :1004E00000838E01DD0F220B330BAB01BC01400FEB :1004F000511F621F731FC701FF0CAA0BBB0B8A01A0 :100500009B01080F191F2A1F3B1FC901B80120E0DA -:1005100031E040E050E00E943409213010E831071A +:1005100031E040E050E00E944809213010E8310706 :100520001FEF4107510724F421E030E84FEF5FEF60 :10053000DA01C901811520E89207A105B10524F06F :100540008FEF9FE7A0E0B0E0DF91CF911F910F9177 @@ -90,7 +90,7 @@ :100590008081CF910C94C406CF93C82F892F0E94DD :1005A000B8028C2FCF910C94B80280E20C94C40650 :1005B000DF92EF92FF920F931F93CF93DF934AE066 -:1005C00060E071E00E94750980933C01E0E0F1E099 +:1005C00060E071E00E94890980933C01E0E0F1E085 :1005D00001900020E9F73197E050F140DE2E80E0F5 :1005E000E82E81E0F82E8701FF27EF012197802F69 :1005F0008E198D1578F4C801805091408C179D0795 @@ -103,13 +103,13 @@ :100660002C9390911E01890F8083089589B1809504 :100670008770089561E080E00E94B3068EED90E0FF :100680000E94E406F8940E94B102F999FECF6091AD -:100690001E0188E090E00E94B809F999FECF682D0C -:1006A00087E090E00E94B809F999FECF672D86E0B7 -:1006B00090E00E94B809F999FECF60912D017091E8 -:1006C0002E0184E090E00E94C609F999FECF609166 -:1006D0002F017091300182E090E00E94C609F999E3 +:100690001E0188E090E00E94CC09F999FECF682DF8 +:1006A00087E090E00E94CC09F999FECF672D86E0A3 +:1006B00090E00E94CC09F999FECF60912D017091D4 +:1006C0002E0184E090E00E94DA09F999FECF609152 +:1006D0002F017091300182E090E00E94DA09F999CF :1006E000FECF609131017091320180E090E00E9474 -:1006F000C609F999FECF292D2C60922E78948FEFA0 +:1006F000DA09F999FECF292D2C60922E78948FEF8C :1007000099E628E1815090402040E1F700C00000C8 :1007100061E080E00E94B3068DEC90E00E94E40668 :100720008FEF99E628E1815090402040E1F700C02A @@ -182,15 +182,15 @@ :100B500012038A818093B30089818093B4008091CD :100B600023018F5F80932301883C08F451C090FEDD :100B700016C020913B01C0903B01E82DF0E030E031 -:100B8000AFEFB0E00E945309BB27A92F982F872F02 +:100B8000AFEFB0E00E946709BB27A92F982F872FEE :100B900047E251E0BF010E9400028C0D882E682DB3 -:100BA00070E080E09BE40E94EA089B0140E050E096 -:100BB00066ED7CED81E090E00E9412093093260101 -:100BC00020932501C9016AE070E00E94EA08769E40 +:100BA00070E080E09BE40E94FE089B0140E050E082 +:100BB00066ED7CED81E090E00E94260930932601ED +:100BC00020932501C9016AE070E00E94FE08769E2C :100BD0009001779E300D1124B90180E090E0232B25 :100BE00059F0663FF9E07F078105910544F066EF13 :100BF00079E080E090E003C060E070E0CB012AE0A3 -:100C000030E040E050E00E943409622E109223014F +:100C000030E040E050E00E944809622E109223013B :100C10000F900F90DF91CF91FF91EF91BF91AF9126 :100C20009F918F917F916F915F914F913F912F9104 :100C30001F910F91FF90EF90DF90CF900F900FBE1C @@ -202,11 +202,11 @@ :100C900085E601C084E680937C008EED80937A0027 :100CA0009F918F912F910F900FBE0F901F901895CD :100CB000289A00C0289808951F93CF93DF931F921E -:100CC000CDB7DEB7662311F02C9A01C02C982D9871 +:100CC000CDB7DEB7662311F02C9A01C02C985C9842 :100CD00097B19F6097B998B1192F107F982F92956F :100CE0009F70912B98B989830E94580689818F70D3 :100CF000812B88B90E9458061F6018B90F90DF91A8 -:100D0000CF911F9108952C982D9A87B1807F87B934 +:100D0000CF911F9108952C985C9A87B1807F87B905 :100D1000289A00C096B1289800C0289A00C026B131 :100D20002F70892F8295807F2898822B08950E94AA :100D3000830687FDFCCF88E090E00197F1F70C94E3 @@ -221,7 +221,7 @@ :100DC000FACFDF91CF910895CF93DF93FC01849107 :100DD000EF012196882321F00E94C406FE01F7CF7F :100DE000DF91CF9108951F93CF93DF93182F97B181 -:100DF0009F6097B9249A259A209AE0E0FAEF3197FC +:100DF0009F6097B9249A549A209AE0E0FAEF3197CD :100E0000F1F7419A409A0E945806E0E0FEE43197DB :100E1000F1F70E945806C0E0D1E0FE013197F1F7EA :100E20000E945806FE013197F1F740980E9458063B @@ -229,7 +229,7 @@ :100E40000E94BE0686E00E94A106812FDF91CF910D :100E50001F910C94A106F894612C10923B018824F8 :100E60008394109222018FE087B985B1817F85B983 -:100E70008BB187798BB95C9A8AB1887F8AB9549A89 +:100E70008BB187798BB92D9A8AB1887F8AB9259AE7 :100E80008BB187688BB98CE00E94F3060E94C10683 :100E90008DEB90E00E94E40680E30E94C40681E0AE :100EA00084BD92E0909380008093B0002FEF30E0FB @@ -248,72 +248,75 @@ :100F700086BB80E280936F0086E30E94C406FFEF89 :100F800029E688E1F15020408040E1F700C00000F0 :100F900061E080E00E94B3068BE990E00E94E406E5 -:100FA00088E090E00E94AA0980931E0180911E01B2 +:100FA00088E090E00E94BE0980931E0180911E019E :100FB000883018F488E080931E0187E090E00E945A -:100FC000AA09882E86E090E00E94AA09782E84E083 -:100FD00090E00E94B20990932E0180932D0182E04F -:100FE00090E00E94B2099093300180932F0180E03D -:100FF00090E00E94B20990933201809331019FEFFB +:100FC000BE09882E86E090E00E94BE09782E84E05B +:100FD00090E00E94C60990932E0180932D0182E03B +:100FE00090E00E94C6099093300180932F0180E029 +:100FF00090E00E94C60990933201809331019FEFE7 :10100000E9E6F8E19150E040F040E1F700C000006F :1010100061E080E00E94B3068AE890E00E94E40666 :101020002FEF89E698E1215080409040E1F700C021 :1010300000000E94360387E30E94C4060E94BE0699 :101040008EE00E94A1068CEA90E00E94E40678946B -:101050000BE0CFEFD0E00E94360390FC3FC082301F -:10106000A9F018F4813031F03EC08330C9F18430EA -:1010700001F139C0809122018F5F8093220180911C -:101080002201823090F1109222012FC08091220122 -:10109000882319F0813039F028C0811002C08824DB -:1010A00083948A9422C0711002C0772473947A9436 -:1010B0001CC080912201882319F0813041F015C0B5 -:1010C000EFEF8E1202C02EEF822E83940EC0FFEF40 -:1010D0007F1202C09EEF792E739407C0833019F4FB -:1010E0000E949B0302C0109224010E9436038823B1 -:1010F000C9F0809124018F5F809324018A3050F4DD -:101100002FEF8DEE92E0215080409040E1F700C03B -:10111000000008C0EFE3FCE93197F1F700C00000E0 -:101120000093240161E080E00E94B30680912501D4 -:10113000909126010E94D8020E94D50261E086E0CB -:101140000E94B306872D90E00E94D8020E94D5022B -:101150000E94D50261E08CE00E94B306F4E66F9E27 -:10116000C0011124BE010E94EA08CB014AE060E000 -:1011700071E00E94750980933C01E0E0F1E001908C -:101180000020E9F73197E050F1401E2F80E0E82E73 -:1011900081E0F82E67018C2D8E19811730F4F6014D -:1011A00081916F010E94C406F6CF85E20E94C406B9 -:1011B0000E94D502E0912201F0E0E75DFE4F8491AC -:1011C00061E00E94B3068FE19EE40197F1F700C051 -:1011D000000041CFAA1BBB1B51E107C0AA1FBB1FC8 -:1011E000A617B70710F0A61BB70B881F991F5A95B3 -:1011F000A9F780959095BC01CD01089597FB072E26 -:1012000016F4009407D077FD09D00E94EA0807FC85 -:1012100005D03EF4909581959F4F08957095619506 -:101220007F4F0895A1E21A2EAA1BBB1BFD010DC022 -:10123000AA1FBB1FEE1FFF1FA217B307E407F50786 -:1012400020F0A21BB30BE40BF50B661F771F881F62 -:10125000991F1A9469F760957095809590959B01F8 -:10126000AC01BD01CF010895052E97FB1EF400943B -:101270000E944B0957FD07D00E94120907FC03D0BA -:101280004EF40C944B0950954095309521953F4F65 -:101290004F4F5F4F089590958095709561957F4F62 -:1012A0008F4F9F4F0895A29FB001B39FC001A39F8E -:1012B000700D811D1124911DB29F700D811D11248F -:1012C000911D0895B7FF0C946A090E946A09821B58 -:1012D000930B08950E945309A59F900DB49F900D04 -:1012E000A49F800D911D11240895BB274A3031F42D -:1012F000992322F4BDE2909581959F4F0C9481092A -:10130000BB27FB015527AA27880F991FAA1FA417DF -:1013100010F0A41B83955051B9F7A05DAA3308F0D3 -:10132000A95DA193009779F7B111B1931192CB0107 -:101330000C949A09DC01FC01672F71917723E1F786 -:10134000329704C07C916D9370836291AE17BF0792 -:10135000C8F30895F999FECF92BD81BDF89A9927F7 -:1013600080B50895A8E1B0E042E050E00C94CD09CA -:10137000262FF999FECF1FBA92BD81BD20BD0FB6B1 -:10138000F894FA9AF99A0FBE019608950E94B80946 -:10139000272F0C94B909DC01CB01FC01F999FECF90 -:1013A00006C0F2BDE1BDF89A319600B40D924150ED -:0A13B0005040B8F70895F894FFCFFD -:1013BA00303030303030303030303030303132331D -:1013CA003435363738394142434445460000140023 +:101050000BE0CFEFD0E00E94360390FC41C082301D +:10106000B9F018F4813039F052C0833009F44CC023 +:10107000843009F14CC0809122018F5F809322015E +:1010800080912201823008F444C01092220141C0B4 +:1010900080912201882319F0813039F03AC0811003 +:1010A00002C0882483948A9434C0711002C07724CB +:1010B00073947A942EC080912201882319F0813094 +:1010C00041F027C0EFEF8E1202C02EEF822E8394E4 +:1010D00020C0FFEF7F1202C09EEF792E739419C0DB +:1010E000813019F0833081F012C09091200181E0AD +:1010F000911180E08093200180912001882311F0DC +:101100002D9807C02D9A05C00E949B0302C0109223 +:1011100024010E9436038823C9F0809124018F5F47 +:10112000809324018A3050F42FEF8DEE92E021500D +:1011300080409040E1F700C0000008C0EFE3FCE908 +:101140003197F1F700C000000093240161E080E0D6 +:101150000E94B30680912501909126010E94D80239 +:101160000E94D50261E086E00E94B306872D90E0E0 +:101170000E94D8020E94D5020E94D50261E08CE054 +:101180000E94B306F4E66F9EC0011124BE010E94C6 +:10119000FE08CB014AE060E071E00E94890980937B +:1011A0003C01E0E0F1E001900020E9F73197E050E8 +:1011B000F1401E2F80E0E82E81E0F82E67018C2D93 +:1011C0008E19811730F4F60181916F010E94C406D7 +:1011D000F6CF85E20E94C4060E94D502E09122016A +:1011E000F0E0E75DFE4F849161E00E94B3068FE17D +:1011F0009EE40197F1F700C000002DCFAA1BBB1B96 +:1012000051E107C0AA1FBB1FA617B70710F0A61B06 +:10121000B70B881F991F5A95A9F780959095BC0127 +:10122000CD01089597FB072E16F4009407D077FDA3 +:1012300009D00E94FE0807FC05D03EF490958195E8 +:101240009F4F0895709561957F4F0895A1E21A2EE2 +:10125000AA1BBB1BFD010DC0AA1FBB1FEE1FFF1F5A +:10126000A217B307E407F50720F0A21BB30BE40BAA +:10127000F50B661F771F881F991F1A9469F76095F1 +:101280007095809590959B01AC01BD01CF010895AB +:10129000052E97FB1EF400940E945F0957FD07D0AE +:1012A0000E94260907FC03D04EF40C945F09509568 +:1012B0004095309521953F4F4F4F5F4F0895909542 +:1012C0008095709561957F4F8F4F9F4F0895A29F96 +:1012D000B001B39FC001A39F700D811D1124911D0A +:1012E000B29F700D811D1124911D0895B7FF0C94BC +:1012F0007E090E947E09821B930B08950E94670954 +:10130000A59F900DB49F900DA49F800D911D112459 +:101310000895BB274A3031F4992322F4BDE2909519 +:1013200081959F4F0C949509BB27FB015527AA2750 +:10133000880F991FAA1FA41710F0A41B8395505162 +:10134000B9F7A05DAA3308F0A95DA193009779F7DA +:10135000B111B1931192CB010C94AE09DC01FC01E7 +:10136000672F71917723E1F7329704C07C916D93D9 +:1013700070836291AE17BF07C8F30895F999FECF45 +:1013800092BD81BDF89A992780B50895A8E1B0E093 +:1013900042E050E00C94E109262FF999FECF1FBAE4 +:1013A00092BD81BD20BD0FB6F894FA9AF99A0FBE8E +:1013B000019608950E94CC09272F0C94CD09DC01D9 +:1013C000CB01FC01F999FECF06C0F2BDE1BDF89A50 +:1013D000319600B40D9241505040B8F70895F894FA +:0213E000FFCF3D +:1013E20030303030303030303030303030313233F5 +:1013F20034353637383941424344454600001400FB :00000001FF diff --git a/default/VFD_Sinus_AT328.lss b/default/VFD_Sinus_AT328.lss index 87275fcca2b39edea5a9a63c38bdd6a128b6000c..1c85b9ed69e34f9e2146fb875817b466b6b9e6e4 100644 --- a/default/VFD_Sinus_AT328.lss +++ b/default/VFD_Sinus_AT328.lss @@ -3,33 +3,33 @@ VFD_Sinus_AT328.elf: file format elf32-avr Sections: Idx Name Size VMA LMA File off Algn - 0 .data 00000020 00800100 000013ba 0000146e 2**0 + 0 .data 00000020 00800100 000013e2 00001496 2**0 CONTENTS, ALLOC, LOAD, DATA - 1 .text 000013ba 00000000 00000000 000000b4 2**1 + 1 .text 000013e2 00000000 00000000 000000b4 2**1 CONTENTS, ALLOC, LOAD, READONLY, CODE - 2 .bss 0000001d 00800120 00800120 0000148e 2**0 + 2 .bss 0000001d 00800120 00800120 000014b6 2**0 ALLOC - 3 .eeprom 00000009 00810000 00810000 0000148e 2**0 + 3 .eeprom 00000009 00810000 00810000 000014b6 2**0 CONTENTS, ALLOC, LOAD, DATA - 4 .comment 00000011 00000000 00000000 00001497 2**0 + 4 .comment 00000011 00000000 00000000 000014bf 2**0 CONTENTS, READONLY - 5 .note.gnu.avr.deviceinfo 0000003c 00000000 00000000 000014a8 2**2 + 5 .note.gnu.avr.deviceinfo 0000003c 00000000 00000000 000014d0 2**2 CONTENTS, READONLY - 6 .debug_aranges 00000068 00000000 00000000 000014e4 2**0 + 6 .debug_aranges 00000068 00000000 00000000 0000150c 2**0 CONTENTS, READONLY, DEBUGGING - 7 .debug_info 00001f6e 00000000 00000000 0000154c 2**0 + 7 .debug_info 00001f87 00000000 00000000 00001574 2**0 CONTENTS, READONLY, DEBUGGING - 8 .debug_abbrev 000007bf 00000000 00000000 000034ba 2**0 + 8 .debug_abbrev 000007bf 00000000 00000000 000034fb 2**0 CONTENTS, READONLY, DEBUGGING - 9 .debug_line 00000c8d 00000000 00000000 00003c79 2**0 + 9 .debug_line 00000ca1 00000000 00000000 00003cba 2**0 CONTENTS, READONLY, DEBUGGING - 10 .debug_frame 000003ec 00000000 00000000 00004908 2**2 + 10 .debug_frame 000003ec 00000000 00000000 0000495c 2**2 CONTENTS, READONLY, DEBUGGING - 11 .debug_str 00000781 00000000 00000000 00004cf4 2**0 + 11 .debug_str 000007be 00000000 00000000 00004d48 2**0 CONTENTS, READONLY, DEBUGGING - 12 .debug_loc 0000128f 00000000 00000000 00005475 2**0 + 12 .debug_loc 0000129a 00000000 00000000 00005506 2**0 CONTENTS, READONLY, DEBUGGING - 13 .debug_ranges 00000060 00000000 00000000 00006704 2**0 + 13 .debug_ranges 00000060 00000000 00000000 000067a0 2**0 CONTENTS, READONLY, DEBUGGING Disassembly of section .text: @@ -85,11 +85,11 @@ Disassembly of section .text: 9b: 52 65 61 64 69 6e 67 20 45 45 50 52 4f 4d 20 20 Reading EEPROM ... -000000ac <__c.2429>: +000000ac <__c.2430>: ac: 46 72 65 71 20 20 56 2f 48 7a 20 20 41 6d 70 20 Freq V/Hz Amp ... -000000bd <__c.2427>: +000000bd <__c.2428>: bd: 56 46 20 4d 6f 74 6f 72 20 44 72 69 76 65 0a 00 VF Motor Drive.. 000000cd <__c.2341>: @@ -166,7 +166,7 @@ Disassembly of section .text: 37c: 11 e0 ldi r17, 0x01 ; 1 37e: a0 e0 ldi r26, 0x00 ; 0 380: b1 e0 ldi r27, 0x01 ; 1 - 382: ea eb ldi r30, 0xBA ; 186 + 382: e2 ee ldi r30, 0xE2 ; 226 384: f3 e1 ldi r31, 0x13 ; 19 386: 02 c0 rjmp .+4 ; 0x38c <__do_copy_data+0x10> 388: 05 90 lpm r0, Z+ @@ -189,51 +189,35 @@ Disassembly of section .text: 39e: b2 07 cpc r27, r18 3a0: e1 f7 brne .-8 ; 0x39a <.do_clear_bss_loop> 3a2: 0e 94 2b 07 call 0xe56 ; 0xe56 <main> - 3a6: 0c 94 db 09 jmp 0x13b6 ; 0x13b6 <_exit> + 3a6: 0c 94 ef 09 jmp 0x13de ; 0x13de <_exit> 000003aa <__bad_interrupt>: 3aa: 0c 94 00 00 jmp 0 ; 0x0 <__vectors> 000003ae <PID_Init>: - * \param d_factor Derivate term. - * \param pid Struct with PID status. - */ -void PID_Init(int16_t p_factor, int16_t i_factor, int16_t d_factor, pidData_t *pid) -// Set up PID controller parameters -{ 3ae: cf 93 push r28 3b0: df 93 push r29 3b2: dc 01 movw r26, r24 3b4: fb 01 movw r30, r22 3b6: e9 01 movw r28, r18 - // Start values for PID controller - pid->sumError = 0; 3b8: 1a 82 std Y+2, r1 ; 0x02 3ba: 1b 82 std Y+3, r1 ; 0x03 3bc: 1c 82 std Y+4, r1 ; 0x04 3be: 1d 82 std Y+5, r1 ; 0x05 - pid->lastProcessValue = 0; 3c0: 19 82 std Y+1, r1 ; 0x01 3c2: 18 82 st Y, r1 - // Tuning constants for PID loop - pid->P_Factor = p_factor; 3c4: 9f 83 std Y+7, r25 ; 0x07 3c6: 8e 83 std Y+6, r24 ; 0x06 - pid->I_Factor = i_factor; 3c8: 79 87 std Y+9, r23 ; 0x09 3ca: 68 87 std Y+8, r22 ; 0x08 - pid->D_Factor = d_factor; 3cc: 5b 87 std Y+11, r21 ; 0x0b 3ce: 4a 87 std Y+10, r20 ; 0x0a - // Limits to avoid overflow - pid->maxError = MAX_INT / pid->P_Factor; 3d0: 8f ef ldi r24, 0xFF ; 255 3d2: 9f e7 ldi r25, 0x7F ; 127 3d4: bd 01 movw r22, r26 - 3d6: 0e 94 fe 08 call 0x11fc ; 0x11fc <__divmodhi4> + 3d6: 0e 94 12 09 call 0x1224 ; 0x1224 <__divmodhi4> 3da: 7d 87 std Y+13, r23 ; 0x0d 3dc: 6c 87 std Y+12, r22 ; 0x0c - pid->maxSumError = MAX_I_TERM / pid->I_Factor; 3de: 9f 01 movw r18, r30 3e0: ff 0f add r31, r31 3e2: 44 0b sbc r20, r20 @@ -242,23 +226,16 @@ void PID_Init(int16_t p_factor, int16_t i_factor, int16_t d_factor, pidData_t *p 3e8: 70 e0 ldi r23, 0x00 ; 0 3ea: 8f ef ldi r24, 0xFF ; 255 3ec: 9f e7 ldi r25, 0x7F ; 127 - 3ee: 0e 94 34 09 call 0x1268 ; 0x1268 <__divmodsi4> + 3ee: 0e 94 48 09 call 0x1290 ; 0x1290 <__divmodsi4> 3f2: 2e 87 std Y+14, r18 ; 0x0e 3f4: 3f 87 std Y+15, r19 ; 0x0f 3f6: 48 8b std Y+16, r20 ; 0x10 3f8: 59 8b std Y+17, r21 ; 0x11 -} 3fa: df 91 pop r29 3fc: cf 91 pop r28 3fe: 08 95 ret 00000400 <PID_Controller>: - * \param setPoint Desired value. - * \param processValue Measured value. - * \param pid_st PID status struct. - */ -int16_t PID_Controller(int16_t setPoint, int16_t processValue, pidData_t *pid_st) -{ 400: ef 92 push r14 402: ff 92 push r15 404: 0f 93 push r16 @@ -267,39 +244,20 @@ int16_t PID_Controller(int16_t setPoint, int16_t processValue, pidData_t *pid_st 40a: df 93 push r29 40c: 8b 01 movw r16, r22 40e: fa 01 movw r30, r20 - int16_t error, p_term, d_term; - int32_t i_term; - int32_t ret; - int32_t temp; - - error = setPoint - processValue; 410: 9c 01 movw r18, r24 412: 26 1b sub r18, r22 414: 37 0b sbc r19, r23 - - // Calculate Pterm and limit error overflow - if (error > pid_st->maxError) 416: 84 85 ldd r24, Z+12 ; 0x0c 418: 95 85 ldd r25, Z+13 ; 0x0d 41a: 82 17 cp r24, r18 41c: 93 07 cpc r25, r19 41e: 84 f0 brlt .+32 ; 0x440 <PID_Controller+0x40> - { - p_term = MAX_INT; - } - else if (error < -pid_st->maxError) 420: 91 95 neg r25 422: 81 95 neg r24 424: 91 09 sbc r25, r1 426: 28 17 cp r18, r24 428: 39 07 cpc r19, r25 42a: 6c f0 brlt .+26 ; 0x446 <PID_Controller+0x46> - { - p_term = -MAX_INT; - } - else - { - p_term = pid_st->P_Factor * error; 42c: 86 81 ldd r24, Z+6 ; 0x06 42e: 97 81 ldd r25, Z+7 ; 0x07 430: 28 9f mul r18, r24 @@ -310,27 +268,11 @@ int16_t PID_Controller(int16_t setPoint, int16_t processValue, pidData_t *pid_st 43a: d0 0d add r29, r0 43c: 11 24 eor r1, r1 43e: 05 c0 rjmp .+10 ; 0x44a <PID_Controller+0x4a> - error = setPoint - processValue; - - // Calculate Pterm and limit error overflow - if (error > pid_st->maxError) - { - p_term = MAX_INT; 440: cf ef ldi r28, 0xFF ; 255 442: df e7 ldi r29, 0x7F ; 127 444: 02 c0 rjmp .+4 ; 0x44a <PID_Controller+0x4a> - } - else if (error < -pid_st->maxError) - { - p_term = -MAX_INT; 446: c1 e0 ldi r28, 0x01 ; 1 448: d0 e8 ldi r29, 0x80 ; 128 - { - p_term = pid_st->P_Factor * error; - } - - // Calculate Iterm and limit integral runaway - temp = pid_st->sumError + error; 44a: c9 01 movw r24, r18 44c: 33 0f add r19, r19 44e: aa 0b sbc r26, r26 @@ -345,7 +287,6 @@ int16_t PID_Controller(int16_t setPoint, int16_t processValue, pidData_t *pid_st 460: 39 1f adc r19, r25 462: 4a 1f adc r20, r26 464: 5b 1f adc r21, r27 - if(temp > pid_st->maxSumError) 466: 86 85 ldd r24, Z+14 ; 0x0e 468: 97 85 ldd r25, Z+15 ; 0x0f 46a: a0 89 ldd r26, Z+16 ; 0x10 @@ -355,27 +296,15 @@ int16_t PID_Controller(int16_t setPoint, int16_t processValue, pidData_t *pid_st 472: a4 07 cpc r26, r20 474: b5 07 cpc r27, r21 476: 4c f4 brge .+18 ; 0x48a <PID_Controller+0x8a> - { - i_term = MAX_I_TERM; - pid_st->sumError = pid_st->maxSumError; 478: 82 83 std Z+2, r24 ; 0x02 47a: 93 83 std Z+3, r25 ; 0x03 47c: a4 83 std Z+4, r26 ; 0x04 47e: b5 83 std Z+5, r27 ; 0x05 - - // Calculate Iterm and limit integral runaway - temp = pid_st->sumError + error; - if(temp > pid_st->maxSumError) - { - i_term = MAX_I_TERM; 480: 61 e0 ldi r22, 0x01 ; 1 482: 70 e0 ldi r23, 0x00 ; 0 484: 8f ef ldi r24, 0xFF ; 255 486: 9f e7 ldi r25, 0x7F ; 127 488: 1d c0 rjmp .+58 ; 0x4c4 <PID_Controller+0xc4> - pid_st->sumError = pid_st->maxSumError; - } - else if(temp < -pid_st->maxSumError) 48a: b0 95 com r27 48c: a0 95 com r26 48e: 90 95 com r25 @@ -388,41 +317,22 @@ int16_t PID_Controller(int16_t setPoint, int16_t processValue, pidData_t *pid_st 49c: 4a 07 cpc r20, r26 49e: 5b 07 cpc r21, r27 4a0: 4c f4 brge .+18 ; 0x4b4 <PID_Controller+0xb4> - { - i_term = -MAX_I_TERM; - pid_st->sumError = -pid_st->maxSumError; 4a2: 82 83 std Z+2, r24 ; 0x02 4a4: 93 83 std Z+3, r25 ; 0x03 4a6: a4 83 std Z+4, r26 ; 0x04 4a8: b5 83 std Z+5, r27 ; 0x05 - i_term = MAX_I_TERM; - pid_st->sumError = pid_st->maxSumError; - } - else if(temp < -pid_st->maxSumError) - { - i_term = -MAX_I_TERM; 4aa: 6f ef ldi r22, 0xFF ; 255 4ac: 7f ef ldi r23, 0xFF ; 255 4ae: 80 e0 ldi r24, 0x00 ; 0 4b0: 90 e8 ldi r25, 0x80 ; 128 4b2: 08 c0 rjmp .+16 ; 0x4c4 <PID_Controller+0xc4> - pid_st->sumError = -pid_st->maxSumError; - } - else - { - pid_st->sumError = temp; 4b4: 22 83 std Z+2, r18 ; 0x02 4b6: 33 83 std Z+3, r19 ; 0x03 4b8: 44 83 std Z+4, r20 ; 0x04 4ba: 55 83 std Z+5, r21 ; 0x05 - i_term = pid_st->I_Factor * pid_st->sumError; 4bc: a0 85 ldd r26, Z+8 ; 0x08 4be: b1 85 ldd r27, Z+9 ; 0x09 - 4c0: 0e 94 62 09 call 0x12c4 ; 0x12c4 <__mulshisi3> - } - - // Calculate Dterm - d_term = pid_st->D_Factor * (pid_st->lastProcessValue - processValue); + 4c0: 0e 94 76 09 call 0x12ec ; 0x12ec <__mulshisi3> 4c4: 20 81 ld r18, Z 4c6: 31 81 ldd r19, Z+1 ; 0x01 4c8: 20 1b sub r18, r16 @@ -436,12 +346,8 @@ int16_t PID_Controller(int16_t setPoint, int16_t processValue, pidData_t *pid_st 4d8: 3a 9f mul r19, r26 4da: f0 0c add r15, r0 4dc: 11 24 eor r1, r1 - - pid_st->lastProcessValue = processValue; 4de: 11 83 std Z+1, r17 ; 0x01 4e0: 00 83 st Z, r16 - - ret = (p_term + i_term + d_term) / SCALING_FACTOR; 4e2: 8e 01 movw r16, r28 4e4: dd 0f add r29, r29 4e6: 22 0b sbc r18, r18 @@ -468,7 +374,7 @@ int16_t PID_Controller(int16_t setPoint, int16_t processValue, pidData_t *pid_st 510: 31 e0 ldi r19, 0x01 ; 1 512: 40 e0 ldi r20, 0x00 ; 0 514: 50 e0 ldi r21, 0x00 ; 0 - 516: 0e 94 34 09 call 0x1268 ; 0x1268 <__divmodsi4> + 516: 0e 94 48 09 call 0x1290 ; 0x1290 <__divmodsi4> 51a: 21 30 cpi r18, 0x01 ; 1 51c: 10 e8 ldi r17, 0x80 ; 128 51e: 31 07 cpc r19, r17 @@ -492,12 +398,6 @@ int16_t PID_Controller(int16_t setPoint, int16_t processValue, pidData_t *pid_st 542: 9f e7 ldi r25, 0x7F ; 127 544: a0 e0 ldi r26, 0x00 ; 0 546: b0 e0 ldi r27, 0x00 ; 0 - { - ret = -MAX_INT; - } - - return((int16_t)ret); -} 548: df 91 pop r29 54a: cf 91 pop r28 54c: 1f 91 pop r17 @@ -507,12 +407,6 @@ int16_t PID_Controller(int16_t setPoint, int16_t processValue, pidData_t *pid_st 554: 08 95 ret 00000556 <PID_Reset_Integrator>: - * - * Calling this function will reset the integrator in the PID regulator. - */ -void PID_Reset_Integrator(pidData_t *pid_st) -{ - pid_st->sumError = 0; 556: fc 01 movw r30, r24 558: 12 82 std Z+2, r1 ; 0x02 55a: 13 82 std Z+3, r1 ; 0x03 @@ -625,7 +519,7 @@ static void printdec(int16_t number) { 5be: 4a e0 ldi r20, 0x0A ; 10 5c0: 60 e0 ldi r22, 0x00 ; 0 5c2: 71 e0 ldi r23, 0x01 ; 1 - 5c4: 0e 94 75 09 call 0x12ea ; 0x12ea <__itoa_ncheck> + 5c4: 0e 94 89 09 call 0x1312 ; 0x1312 <__itoa_ncheck> uint8_t n,i; /* yeah, yeah warning "pointer to integer without a cast" * Am i tired of this or what @@ -782,7 +676,7 @@ void wrEEPROM(void) { 68e: 60 91 1e 01 lds r22, 0x011E ; 0x80011e <DEAD_TIME_HALF> 692: 88 e0 ldi r24, 0x08 ; 8 694: 90 e0 ldi r25, 0x00 ; 0 - 696: 0e 94 b8 09 call 0x1370 ; 0x1370 <eeprom_write_byte> + 696: 0e 94 cc 09 call 0x1398 ; 0x1398 <eeprom_write_byte> eeprom_busy_wait(); 69a: f9 99 sbic 0x1f, 1 ; 31 69c: fe cf rjmp .-4 ; 0x69a <wrEEPROM+0x26> @@ -790,7 +684,7 @@ void wrEEPROM(void) { 69e: 68 2d mov r22, r8 6a0: 87 e0 ldi r24, 0x07 ; 7 6a2: 90 e0 ldi r25, 0x00 ; 0 - 6a4: 0e 94 b8 09 call 0x1370 ; 0x1370 <eeprom_write_byte> + 6a4: 0e 94 cc 09 call 0x1398 ; 0x1398 <eeprom_write_byte> eeprom_busy_wait(); 6a8: f9 99 sbic 0x1f, 1 ; 31 6aa: fe cf rjmp .-4 ; 0x6a8 <wrEEPROM+0x34> @@ -798,7 +692,7 @@ void wrEEPROM(void) { 6ac: 67 2d mov r22, r7 6ae: 86 e0 ldi r24, 0x06 ; 6 6b0: 90 e0 ldi r25, 0x00 ; 0 - 6b2: 0e 94 b8 09 call 0x1370 ; 0x1370 <eeprom_write_byte> + 6b2: 0e 94 cc 09 call 0x1398 ; 0x1398 <eeprom_write_byte> eeprom_busy_wait(); 6b6: f9 99 sbic 0x1f, 1 ; 31 6b8: fe cf rjmp .-4 ; 0x6b6 <wrEEPROM+0x42> @@ -808,7 +702,7 @@ void wrEEPROM(void) { 6be: 70 91 2e 01 lds r23, 0x012E ; 0x80012e <pidParameters+0x7> 6c2: 84 e0 ldi r24, 0x04 ; 4 6c4: 90 e0 ldi r25, 0x00 ; 0 - 6c6: 0e 94 c6 09 call 0x138c ; 0x138c <eeprom_write_word> + 6c6: 0e 94 da 09 call 0x13b4 ; 0x13b4 <eeprom_write_word> eeprom_busy_wait(); 6ca: f9 99 sbic 0x1f, 1 ; 31 6cc: fe cf rjmp .-4 ; 0x6ca <wrEEPROM+0x56> @@ -817,7 +711,7 @@ void wrEEPROM(void) { 6d2: 70 91 30 01 lds r23, 0x0130 ; 0x800130 <pidParameters+0x9> 6d6: 82 e0 ldi r24, 0x02 ; 2 6d8: 90 e0 ldi r25, 0x00 ; 0 - 6da: 0e 94 c6 09 call 0x138c ; 0x138c <eeprom_write_word> + 6da: 0e 94 da 09 call 0x13b4 ; 0x13b4 <eeprom_write_word> eeprom_busy_wait(); 6de: f9 99 sbic 0x1f, 1 ; 31 6e0: fe cf rjmp .-4 ; 0x6de <wrEEPROM+0x6a> @@ -826,7 +720,7 @@ void wrEEPROM(void) { 6e6: 70 91 32 01 lds r23, 0x0132 ; 0x800132 <pidParameters+0xb> 6ea: 80 e0 ldi r24, 0x00 ; 0 6ec: 90 e0 ldi r25, 0x00 ; 0 - 6ee: 0e 94 c6 09 call 0x138c ; 0x138c <eeprom_write_word> + 6ee: 0e 94 da 09 call 0x13b4 ; 0x13b4 <eeprom_write_word> eeprom_busy_wait(); 6f2: f9 99 sbic 0x1f, 1 ; 31 6f4: fe cf rjmp .-4 ; 0x6f2 <wrEEPROM+0x7e> @@ -1586,9 +1480,9 @@ static void AdjustSineTableIndex(const uint16_t increment) } // regular task calls the SpeedController speedRegTicks++; - b5e: 80 91 23 01 lds r24, 0x0123 ; 0x800123 <speedRegTicks.2488> + b5e: 80 91 23 01 lds r24, 0x0123 ; 0x800123 <speedRegTicks.2489> b62: 8f 5f subi r24, 0xFF ; 255 - b64: 80 93 23 01 sts 0x0123, r24 ; 0x800123 <speedRegTicks.2488> + b64: 80 93 23 01 sts 0x0123, r24 ; 0x800123 <speedRegTicks.2489> if (speedRegTicks >= SPEED_CONTROLLER_TIME_BASE) b68: 88 3c cpi r24, 0xC8 ; 200 b6a: 08 f4 brcc .+2 ; 0xb6e <__vector_10+0x176> @@ -1619,7 +1513,7 @@ if (fastFlags.externalControl) { b7e: 30 e0 ldi r19, 0x00 ; 0 b80: af ef ldi r26, 0xFF ; 255 b82: b0 e0 ldi r27, 0x00 ; 0 - b84: 0e 94 53 09 call 0x12a6 ; 0x12a6 <__umulhisi3> + b84: 0e 94 67 09 call 0x12ce ; 0x12ce <__umulhisi3> b88: bb 27 eor r27, r27 b8a: a9 2f mov r26, r25 b8c: 98 2f mov r25, r24 @@ -1641,7 +1535,7 @@ if (fastFlags.externalControl) { ba0: 70 e0 ldi r23, 0x00 ; 0 ba2: 80 e0 ldi r24, 0x00 ; 0 ba4: 9b e4 ldi r25, 0x4B ; 75 - ba6: 0e 94 ea 08 call 0x11d4 ; 0x11d4 <__udivmodhi4> + ba6: 0e 94 fe 08 call 0x11fc ; 0x11fc <__udivmodhi4> baa: 9b 01 movw r18, r22 bac: 40 e0 ldi r20, 0x00 ; 0 bae: 50 e0 ldi r21, 0x00 ; 0 @@ -1649,14 +1543,14 @@ if (fastFlags.externalControl) { bb2: 7c ed ldi r23, 0xDC ; 220 bb4: 81 e0 ldi r24, 0x01 ; 1 bb6: 90 e0 ldi r25, 0x00 ; 0 - bb8: 0e 94 12 09 call 0x1224 ; 0x1224 <__udivmodsi4> + bb8: 0e 94 26 09 call 0x124c ; 0x124c <__udivmodsi4> bbc: 30 93 26 01 sts 0x0126, r19 ; 0x800126 <freq+0x1> bc0: 20 93 25 01 sts 0x0125, r18 ; 0x800125 <freq> amplitudeValue = (freq/10)*VperHz; bc4: c9 01 movw r24, r18 bc6: 6a e0 ldi r22, 0x0A ; 10 bc8: 70 e0 ldi r23, 0x00 ; 0 - bca: 0e 94 ea 08 call 0x11d4 ; 0x11d4 <__udivmodhi4> + bca: 0e 94 fe 08 call 0x11fc ; 0x11fc <__udivmodhi4> bce: 76 9e mul r7, r22 bd0: 90 01 movw r18, r0 bd2: 77 9e mul r7, r23 @@ -1704,7 +1598,7 @@ if (fastFlags.externalControl) { c00: 30 e0 ldi r19, 0x00 ; 0 c02: 40 e0 ldi r20, 0x00 ; 0 c04: 50 e0 ldi r21, 0x00 ; 0 - c06: 0e 94 34 09 call 0x1268 ; 0x1268 <__divmodsi4> + c06: 0e 94 48 09 call 0x1290 ; 0x1290 <__divmodsi4> c0a: 62 2e mov r6, r18 // regular task calls the SpeedController speedRegTicks++; @@ -1712,7 +1606,7 @@ if (fastFlags.externalControl) { { SpeedController(); speedRegTicks = 0; - c0c: 10 92 23 01 sts 0x0123, r1 ; 0x800123 <speedRegTicks.2488> + c0c: 10 92 23 01 sts 0x0123, r1 ; 0x800123 <speedRegTicks.2489> } } c10: 0f 90 pop r0 @@ -1865,7 +1759,7 @@ static void lcd_write(uint8_t data,uint8_t rs) ccc: 2c 98 cbi 0x05, 4 ; 5 } lcd_rw_low(); - cce: 2d 98 cbi 0x05, 5 ; 5 + cce: 5c 98 cbi 0x0b, 4 ; 11 if ( ( &LCD_DATA0_PORT == &LCD_DATA1_PORT) && ( &LCD_DATA1_PORT == &LCD_DATA2_PORT ) && ( &LCD_DATA2_PORT == &LCD_DATA3_PORT ) && (LCD_DATA0_PIN == 0) && (LCD_DATA1_PIN == 1) && (LCD_DATA2_PIN == 2) && (LCD_DATA3_PIN == 3) ) @@ -1925,7 +1819,7 @@ static void lcd_write(uint8_t data,uint8_t rs) lcd_rs_low(); /* RS=0: read busy flag */ d06: 2c 98 cbi 0x05, 4 ; 5 lcd_rw_high(); /* RW=1 read mode */ - d08: 2d 9a sbi 0x05, 5 ; 5 + d08: 5c 9a sbi 0x0b, 4 ; 11 if ( ( &LCD_DATA0_PORT == &LCD_DATA1_PORT) && ( &LCD_DATA1_PORT == &LCD_DATA2_PORT ) && ( &LCD_DATA2_PORT == &LCD_DATA3_PORT ) && ( LCD_DATA0_PIN == 0 )&& (LCD_DATA1_PIN == 1) && (LCD_DATA2_PIN == 2) && (LCD_DATA3_PIN == 3) ) @@ -2260,7 +2154,7 @@ void lcd_init(uint8_t dispAttr) DDR(LCD_RS_PORT) |= _BV(LCD_RS_PIN); df4: 24 9a sbi 0x04, 4 ; 4 DDR(LCD_RW_PORT) |= _BV(LCD_RW_PIN); - df6: 25 9a sbi 0x04, 5 ; 4 + df6: 54 9a sbi 0x0a, 4 ; 10 DDR(LCD_E_PORT) |= _BV(LCD_E_PIN); df8: 20 9a sbi 0x04, 0 ; 4 static inline void _delayFourCycles(unsigned int __count) @@ -2414,8 +2308,8 @@ static void PortsInit(void) e72: 87 79 andi r24, 0x97 ; 151 e74: 8b b9 out 0x0b, r24 ; 11 // output enable is active low: - PORTD |= _BV(OUTPUT_ENABLE_PIN); - e76: 5c 9a sbi 0x0b, 4 ; 11 + PORTB |= _BV(OUTPUT_ENABLE_PIN); + e76: 2d 9a sbi 0x05, 5 ; 5 // Set the inputs on Port D for the three buttons DDRD &= ~BUTTON_MASK; @@ -2423,8 +2317,8 @@ static void PortsInit(void) e7a: 88 7f andi r24, 0xF8 ; 248 e7c: 8a b9 out 0x0a, r24 ; 10 - DDRD |= _BV(OUTPUT_ENABLE_PIN); - e7e: 54 9a sbi 0x0a, 4 ; 10 + DDRB |= _BV(OUTPUT_ENABLE_PIN); + e7e: 25 9a sbi 0x04, 5 ; 4 // Enable pull-up on input signals. PORTD |= _BV(DIRECTION_COMMAND_PIN) | _BV(EXTERNAL_CONTROL_PIN) | BUTTON_MASK ; e80: 8b b1 in r24, 0x0b ; 11 @@ -2660,7 +2554,7 @@ static void EEPROMInit(void) DEAD_TIME_HALF = eeprom_read_byte(&ee_DEAD_TIME_HALF); fa0: 88 e0 ldi r24, 0x08 ; 8 fa2: 90 e0 ldi r25, 0x00 ; 0 - fa4: 0e 94 aa 09 call 0x1354 ; 0x1354 <eeprom_read_byte> + fa4: 0e 94 be 09 call 0x137c ; 0x137c <eeprom_read_byte> fa8: 80 93 1e 01 sts 0x011E, r24 ; 0x80011e <DEAD_TIME_HALF> if (DEAD_TIME_HALF < MIN_DEAD_TIME) DEAD_TIME_HALF = MIN_DEAD_TIME; @@ -2673,30 +2567,30 @@ static void EEPROMInit(void) Inco = eeprom_read_byte(&ee_Inco); fba: 87 e0 ldi r24, 0x07 ; 7 fbc: 90 e0 ldi r25, 0x00 ; 0 - fbe: 0e 94 aa 09 call 0x1354 ; 0x1354 <eeprom_read_byte> + fbe: 0e 94 be 09 call 0x137c ; 0x137c <eeprom_read_byte> fc2: 88 2e mov r8, r24 VperHz = eeprom_read_byte(&ee_VperHz); fc4: 86 e0 ldi r24, 0x06 ; 6 fc6: 90 e0 ldi r25, 0x00 ; 0 - fc8: 0e 94 aa 09 call 0x1354 ; 0x1354 <eeprom_read_byte> + fc8: 0e 94 be 09 call 0x137c ; 0x137c <eeprom_read_byte> fcc: 78 2e mov r7, r24 // PID values pidParameters.P_Factor = eeprom_read_word(&ee_pid_P); fce: 84 e0 ldi r24, 0x04 ; 4 fd0: 90 e0 ldi r25, 0x00 ; 0 - fd2: 0e 94 b2 09 call 0x1364 ; 0x1364 <eeprom_read_word> + fd2: 0e 94 c6 09 call 0x138c ; 0x138c <eeprom_read_word> fd6: 90 93 2e 01 sts 0x012E, r25 ; 0x80012e <pidParameters+0x7> fda: 80 93 2d 01 sts 0x012D, r24 ; 0x80012d <pidParameters+0x6> pidParameters.I_Factor = eeprom_read_word(&ee_pid_I); fde: 82 e0 ldi r24, 0x02 ; 2 fe0: 90 e0 ldi r25, 0x00 ; 0 - fe2: 0e 94 b2 09 call 0x1364 ; 0x1364 <eeprom_read_word> + fe2: 0e 94 c6 09 call 0x138c ; 0x138c <eeprom_read_word> fe6: 90 93 30 01 sts 0x0130, r25 ; 0x800130 <pidParameters+0x9> fea: 80 93 2f 01 sts 0x012F, r24 ; 0x80012f <pidParameters+0x8> pidParameters.D_Factor = eeprom_read_word(&ee_pid_D); fee: 80 e0 ldi r24, 0x00 ; 0 ff0: 90 e0 ldi r25, 0x00 ; 0 - ff2: 0e 94 b2 09 call 0x1364 ; 0x1364 <eeprom_read_word> + ff2: 0e 94 c6 09 call 0x138c ; 0x138c <eeprom_read_word> ff6: 90 93 32 01 sts 0x0132, r25 ; 0x800132 <pidParameters+0xb> ffa: 80 93 31 01 sts 0x0131, r24 ; 0x800131 <pidParameters+0xa> ffe: 9f ef ldi r25, 0xFF ; 255 @@ -2779,526 +2673,551 @@ n = keyin(); // first make sure we get inputs from buttons and not from analog inputs if (!fastFlags.externalControl){ 105a: 90 fc sbrc r9, 0 - 105c: 3f c0 rjmp .+126 ; 0x10dc <main+0x286> + 105c: 41 c0 rjmp .+130 ; 0x10e0 <main+0x28a> switch (n) 105e: 82 30 cpi r24, 0x02 ; 2 - 1060: a9 f0 breq .+42 ; 0x108c <main+0x236> + 1060: b9 f0 breq .+46 ; 0x1090 <main+0x23a> 1062: 18 f4 brcc .+6 ; 0x106a <main+0x214> 1064: 81 30 cpi r24, 0x01 ; 1 - 1066: 31 f0 breq .+12 ; 0x1074 <main+0x21e> - 1068: 3e c0 rjmp .+124 ; 0x10e6 <main+0x290> + 1066: 39 f0 breq .+14 ; 0x1076 <main+0x220> + 1068: 52 c0 rjmp .+164 ; 0x110e <main+0x2b8> 106a: 83 30 cpi r24, 0x03 ; 3 - 106c: c9 f1 breq .+114 ; 0x10e0 <main+0x28a> - 106e: 84 30 cpi r24, 0x04 ; 4 - 1070: 01 f1 breq .+64 ; 0x10b2 <main+0x25c> - 1072: 39 c0 rjmp .+114 ; 0x10e6 <main+0x290> + 106c: 09 f4 brne .+2 ; 0x1070 <main+0x21a> + 106e: 4c c0 rjmp .+152 ; 0x1108 <main+0x2b2> + 1070: 84 30 cpi r24, 0x04 ; 4 + 1072: 09 f1 breq .+66 ; 0x10b6 <main+0x260> + 1074: 4c c0 rjmp .+152 ; 0x110e <main+0x2b8> { // black button - cycle through parameters case 1 : parameter++; if (parameter > NUMPARAMS) parameter = 0; - 1074: 80 91 22 01 lds r24, 0x0122 ; 0x800122 <parameter> - 1078: 8f 5f subi r24, 0xFF ; 255 - 107a: 80 93 22 01 sts 0x0122, r24 ; 0x800122 <parameter> - 107e: 80 91 22 01 lds r24, 0x0122 ; 0x800122 <parameter> - 1082: 82 30 cpi r24, 0x02 ; 2 - 1084: 90 f1 brcs .+100 ; 0x10ea <main+0x294> - 1086: 10 92 22 01 sts 0x0122, r1 ; 0x800122 <parameter> - 108a: 2f c0 rjmp .+94 ; 0x10ea <main+0x294> + 1076: 80 91 22 01 lds r24, 0x0122 ; 0x800122 <parameter> + 107a: 8f 5f subi r24, 0xFF ; 255 + 107c: 80 93 22 01 sts 0x0122, r24 ; 0x800122 <parameter> + 1080: 80 91 22 01 lds r24, 0x0122 ; 0x800122 <parameter> + 1084: 82 30 cpi r24, 0x02 ; 2 + 1086: 08 f4 brcc .+2 ; 0x108a <main+0x234> + 1088: 44 c0 rjmp .+136 ; 0x1112 <main+0x2bc> + 108a: 10 92 22 01 sts 0x0122, r1 ; 0x800122 <parameter> + 108e: 41 c0 rjmp .+130 ; 0x1112 <main+0x2bc> break; // red button - decrement parameter case 2 : switch (parameter) { - 108c: 80 91 22 01 lds r24, 0x0122 ; 0x800122 <parameter> - 1090: 88 23 and r24, r24 - 1092: 19 f0 breq .+6 ; 0x109a <main+0x244> - 1094: 81 30 cpi r24, 0x01 ; 1 - 1096: 39 f0 breq .+14 ; 0x10a6 <main+0x250> - 1098: 28 c0 rjmp .+80 ; 0x10ea <main+0x294> + 1090: 80 91 22 01 lds r24, 0x0122 ; 0x800122 <parameter> + 1094: 88 23 and r24, r24 + 1096: 19 f0 breq .+6 ; 0x109e <main+0x248> + 1098: 81 30 cpi r24, 0x01 ; 1 + 109a: 39 f0 breq .+14 ; 0x10aa <main+0x254> + 109c: 3a c0 rjmp .+116 ; 0x1112 <main+0x2bc> case 0 : if (Inco < 1) Inco = 1; - 109a: 81 10 cpse r8, r1 - 109c: 02 c0 rjmp .+4 ; 0x10a2 <main+0x24c> - 109e: 88 24 eor r8, r8 - 10a0: 83 94 inc r8 + 109e: 81 10 cpse r8, r1 + 10a0: 02 c0 rjmp .+4 ; 0x10a6 <main+0x250> + 10a2: 88 24 eor r8, r8 + 10a4: 83 94 inc r8 Inco--; - 10a2: 8a 94 dec r8 - 10a4: 22 c0 rjmp .+68 ; 0x10ea <main+0x294> + 10a6: 8a 94 dec r8 + 10a8: 34 c0 rjmp .+104 ; 0x1112 <main+0x2bc> break; case 1 : if (VperHz < 1) VperHz = 1; - 10a6: 71 10 cpse r7, r1 - 10a8: 02 c0 rjmp .+4 ; 0x10ae <main+0x258> - 10aa: 77 24 eor r7, r7 - 10ac: 73 94 inc r7 + 10aa: 71 10 cpse r7, r1 + 10ac: 02 c0 rjmp .+4 ; 0x10b2 <main+0x25c> + 10ae: 77 24 eor r7, r7 + 10b0: 73 94 inc r7 VperHz--; - 10ae: 7a 94 dec r7 - 10b0: 1c c0 rjmp .+56 ; 0x10ea <main+0x294> + 10b2: 7a 94 dec r7 + 10b4: 2e c0 rjmp .+92 ; 0x1112 <main+0x2bc> default : break; } break; // green button - increment parameter case 4 : switch (parameter) { - 10b2: 80 91 22 01 lds r24, 0x0122 ; 0x800122 <parameter> - 10b6: 88 23 and r24, r24 - 10b8: 19 f0 breq .+6 ; 0x10c0 <main+0x26a> - 10ba: 81 30 cpi r24, 0x01 ; 1 - 10bc: 41 f0 breq .+16 ; 0x10ce <main+0x278> - 10be: 15 c0 rjmp .+42 ; 0x10ea <main+0x294> + 10b6: 80 91 22 01 lds r24, 0x0122 ; 0x800122 <parameter> + 10ba: 88 23 and r24, r24 + 10bc: 19 f0 breq .+6 ; 0x10c4 <main+0x26e> + 10be: 81 30 cpi r24, 0x01 ; 1 + 10c0: 41 f0 breq .+16 ; 0x10d2 <main+0x27c> + 10c2: 27 c0 rjmp .+78 ; 0x1112 <main+0x2bc> case 0 :if (Inco > 254) Inco = 254; - 10c0: ef ef ldi r30, 0xFF ; 255 - 10c2: 8e 12 cpse r8, r30 - 10c4: 02 c0 rjmp .+4 ; 0x10ca <main+0x274> - 10c6: 2e ef ldi r18, 0xFE ; 254 - 10c8: 82 2e mov r8, r18 + 10c4: ef ef ldi r30, 0xFF ; 255 + 10c6: 8e 12 cpse r8, r30 + 10c8: 02 c0 rjmp .+4 ; 0x10ce <main+0x278> + 10ca: 2e ef ldi r18, 0xFE ; 254 + 10cc: 82 2e mov r8, r18 Inco++; - 10ca: 83 94 inc r8 - 10cc: 0e c0 rjmp .+28 ; 0x10ea <main+0x294> + 10ce: 83 94 inc r8 + 10d0: 20 c0 rjmp .+64 ; 0x1112 <main+0x2bc> break; case 1 :if (VperHz > 254) VperHz = 254; - 10ce: ff ef ldi r31, 0xFF ; 255 - 10d0: 7f 12 cpse r7, r31 - 10d2: 02 c0 rjmp .+4 ; 0x10d8 <main+0x282> - 10d4: 9e ef ldi r25, 0xFE ; 254 - 10d6: 79 2e mov r7, r25 + 10d2: ff ef ldi r31, 0xFF ; 255 + 10d4: 7f 12 cpse r7, r31 + 10d6: 02 c0 rjmp .+4 ; 0x10dc <main+0x286> + 10d8: 9e ef ldi r25, 0xFE ; 254 + 10da: 79 2e mov r7, r25 VperHz++; - 10d8: 73 94 inc r7 - 10da: 07 c0 rjmp .+14 ; 0x10ea <main+0x294> + 10dc: 73 94 inc r7 + 10de: 19 c0 rjmp .+50 ; 0x1112 <main+0x2bc> break; default: i = 0; break; } // switch } else { // external control // with external control we only can go to the extended menu switch (n) - 10dc: 83 30 cpi r24, 0x03 ; 3 - 10de: 19 f4 brne .+6 ; 0x10e6 <main+0x290> + 10e0: 81 30 cpi r24, 0x01 ; 1 + 10e2: 19 f0 breq .+6 ; 0x10ea <main+0x294> + 10e4: 83 30 cpi r24, 0x03 ; 3 + 10e6: 81 f0 breq .+32 ; 0x1108 <main+0x2b2> + 10e8: 12 c0 rjmp .+36 ; 0x110e <main+0x2b8> +} + + +static void toggleOutputEnable(void) +{ +OutputEnabled = !OutputEnabled; + 10ea: 90 91 20 01 lds r25, 0x0120 ; 0x800120 <__data_end> + 10ee: 81 e0 ldi r24, 0x01 ; 1 + 10f0: 91 11 cpse r25, r1 + 10f2: 80 e0 ldi r24, 0x00 ; 0 + 10f4: 80 93 20 01 sts 0x0120, r24 ; 0x800120 <__data_end> +if (OutputEnabled) PORTB &= ~(_BV(OUTPUT_ENABLE_PIN)); + 10f8: 80 91 20 01 lds r24, 0x0120 ; 0x800120 <__data_end> + 10fc: 88 23 and r24, r24 + 10fe: 11 f0 breq .+4 ; 0x1104 <main+0x2ae> + 1100: 2d 98 cbi 0x05, 5 ; 5 + 1102: 07 c0 rjmp .+14 ; 0x1112 <main+0x2bc> + else PORTB |= _BV(OUTPUT_ENABLE_PIN); + 1104: 2d 9a sbi 0x05, 5 ; 5 + 1106: 05 c0 rjmp .+10 ; 0x1112 <main+0x2bc> { // with external control first button is output enable/disable -// case 1 : toggleOutputEnable(); -// break; + case 1 : toggleOutputEnable(); + break; // pressing black (1) and red (2) button simultaneously goes to sub menu case 3 : execExtendedCommand(); - 10e0: 0e 94 9b 03 call 0x736 ; 0x736 <execExtendedCommand> - 10e4: 02 c0 rjmp .+4 ; 0x10ea <main+0x294> + 1108: 0e 94 9b 03 call 0x736 ; 0x736 <execExtendedCommand> + 110c: 02 c0 rjmp .+4 ; 0x1112 <main+0x2bc> break; default: i = 0; break; - 10e6: 10 92 24 01 sts 0x0124, r1 ; 0x800124 <i.2400> + 110e: 10 92 24 01 sts 0x0124, r1 ; 0x800124 <i.2400> } // switch } // external control // simple autorepeater if (keyin() > 0) { - 10ea: 0e 94 36 03 call 0x66c ; 0x66c <keyin> - 10ee: 88 23 and r24, r24 - 10f0: c9 f0 breq .+50 ; 0x1124 <main+0x2ce> + 1112: 0e 94 36 03 call 0x66c ; 0x66c <keyin> + 1116: 88 23 and r24, r24 + 1118: c9 f0 breq .+50 ; 0x114c <main+0x2f6> i++; - 10f2: 80 91 24 01 lds r24, 0x0124 ; 0x800124 <i.2400> - 10f6: 8f 5f subi r24, 0xFF ; 255 - 10f8: 80 93 24 01 sts 0x0124, r24 ; 0x800124 <i.2400> + 111a: 80 91 24 01 lds r24, 0x0124 ; 0x800124 <i.2400> + 111e: 8f 5f subi r24, 0xFF ; 255 + 1120: 80 93 24 01 sts 0x0124, r24 ; 0x800124 <i.2400> if (i<10) _delay_ms(60); - 10fc: 8a 30 cpi r24, 0x0A ; 10 - 10fe: 50 f4 brcc .+20 ; 0x1114 <main+0x2be> - 1100: 2f ef ldi r18, 0xFF ; 255 - 1102: 8d ee ldi r24, 0xED ; 237 - 1104: 92 e0 ldi r25, 0x02 ; 2 - 1106: 21 50 subi r18, 0x01 ; 1 - 1108: 80 40 sbci r24, 0x00 ; 0 - 110a: 90 40 sbci r25, 0x00 ; 0 - 110c: e1 f7 brne .-8 ; 0x1106 <main+0x2b0> - 110e: 00 c0 rjmp .+0 ; 0x1110 <main+0x2ba> - 1110: 00 00 nop - 1112: 08 c0 rjmp .+16 ; 0x1124 <main+0x2ce> - 1114: ef e3 ldi r30, 0x3F ; 63 - 1116: fc e9 ldi r31, 0x9C ; 156 - 1118: 31 97 sbiw r30, 0x01 ; 1 - 111a: f1 f7 brne .-4 ; 0x1118 <main+0x2c2> - 111c: 00 c0 rjmp .+0 ; 0x111e <main+0x2c8> - 111e: 00 00 nop + 1124: 8a 30 cpi r24, 0x0A ; 10 + 1126: 50 f4 brcc .+20 ; 0x113c <main+0x2e6> + 1128: 2f ef ldi r18, 0xFF ; 255 + 112a: 8d ee ldi r24, 0xED ; 237 + 112c: 92 e0 ldi r25, 0x02 ; 2 + 112e: 21 50 subi r18, 0x01 ; 1 + 1130: 80 40 sbci r24, 0x00 ; 0 + 1132: 90 40 sbci r25, 0x00 ; 0 + 1134: e1 f7 brne .-8 ; 0x112e <main+0x2d8> + 1136: 00 c0 rjmp .+0 ; 0x1138 <main+0x2e2> + 1138: 00 00 nop + 113a: 08 c0 rjmp .+16 ; 0x114c <main+0x2f6> + 113c: ef e3 ldi r30, 0x3F ; 63 + 113e: fc e9 ldi r31, 0x9C ; 156 + 1140: 31 97 sbiw r30, 0x01 ; 1 + 1142: f1 f7 brne .-4 ; 0x1140 <main+0x2ea> + 1144: 00 c0 rjmp .+0 ; 0x1146 <main+0x2f0> + 1146: 00 00 nop else { _delay_ms(10); i = 11; - 1120: 00 93 24 01 sts 0x0124, r16 ; 0x800124 <i.2400> + 1148: 00 93 24 01 sts 0x0124, r16 ; 0x800124 <i.2400> */ static void showPars(void) { const uint8_t *p = cursorpos; lcd_gotoxy(0,1); - 1124: 61 e0 ldi r22, 0x01 ; 1 - 1126: 80 e0 ldi r24, 0x00 ; 0 - 1128: 0e 94 b3 06 call 0xd66 ; 0xd66 <lcd_gotoxy> + 114c: 61 e0 ldi r22, 0x01 ; 1 + 114e: 80 e0 ldi r24, 0x00 ; 0 + 1150: 0e 94 b3 06 call 0xd66 ; 0xd66 <lcd_gotoxy> printdec(freq);printspc();lcd_gotoxy(6,1); - 112c: 80 91 25 01 lds r24, 0x0125 ; 0x800125 <freq> - 1130: 90 91 26 01 lds r25, 0x0126 ; 0x800126 <freq+0x1> - 1134: 0e 94 d8 02 call 0x5b0 ; 0x5b0 <printdec> - 1138: 0e 94 d5 02 call 0x5aa ; 0x5aa <printspc> - 113c: 61 e0 ldi r22, 0x01 ; 1 - 113e: 86 e0 ldi r24, 0x06 ; 6 - 1140: 0e 94 b3 06 call 0xd66 ; 0xd66 <lcd_gotoxy> + 1154: 80 91 25 01 lds r24, 0x0125 ; 0x800125 <freq> + 1158: 90 91 26 01 lds r25, 0x0126 ; 0x800126 <freq+0x1> + 115c: 0e 94 d8 02 call 0x5b0 ; 0x5b0 <printdec> + 1160: 0e 94 d5 02 call 0x5aa ; 0x5aa <printspc> + 1164: 61 e0 ldi r22, 0x01 ; 1 + 1166: 86 e0 ldi r24, 0x06 ; 6 + 1168: 0e 94 b3 06 call 0xd66 ; 0xd66 <lcd_gotoxy> printdec(VperHz);printspc();printspc();lcd_gotoxy(12,1); - 1144: 87 2d mov r24, r7 - 1146: 90 e0 ldi r25, 0x00 ; 0 - 1148: 0e 94 d8 02 call 0x5b0 ; 0x5b0 <printdec> - 114c: 0e 94 d5 02 call 0x5aa ; 0x5aa <printspc> - 1150: 0e 94 d5 02 call 0x5aa ; 0x5aa <printspc> - 1154: 61 e0 ldi r22, 0x01 ; 1 - 1156: 8c e0 ldi r24, 0x0C ; 12 - 1158: 0e 94 b3 06 call 0xd66 ; 0xd66 <lcd_gotoxy> + 116c: 87 2d mov r24, r7 + 116e: 90 e0 ldi r25, 0x00 ; 0 + 1170: 0e 94 d8 02 call 0x5b0 ; 0x5b0 <printdec> + 1174: 0e 94 d5 02 call 0x5aa ; 0x5aa <printspc> + 1178: 0e 94 d5 02 call 0x5aa ; 0x5aa <printspc> + 117c: 61 e0 ldi r22, 0x01 ; 1 + 117e: 8c e0 ldi r24, 0x0C ; 12 + 1180: 0e 94 b3 06 call 0xd66 ; 0xd66 <lcd_gotoxy> printnum((uint16_t)(amplitude*100)/255);lcd_putc('%');printspc(); - 115c: f4 e6 ldi r31, 0x64 ; 100 - 115e: 6f 9e mul r6, r31 - 1160: c0 01 movw r24, r0 - 1162: 11 24 eor r1, r1 - 1164: be 01 movw r22, r28 - 1166: 0e 94 ea 08 call 0x11d4 ; 0x11d4 <__udivmodhi4> - 116a: cb 01 movw r24, r22 - 116c: 4a e0 ldi r20, 0x0A ; 10 - 116e: 60 e0 ldi r22, 0x00 ; 0 - 1170: 71 e0 ldi r23, 0x01 ; 1 - 1172: 0e 94 75 09 call 0x12ea ; 0x12ea <__itoa_ncheck> + 1184: f4 e6 ldi r31, 0x64 ; 100 + 1186: 6f 9e mul r6, r31 + 1188: c0 01 movw r24, r0 + 118a: 11 24 eor r1, r1 + 118c: be 01 movw r22, r28 + 118e: 0e 94 fe 08 call 0x11fc ; 0x11fc <__udivmodhi4> + 1192: cb 01 movw r24, r22 + 1194: 4a e0 ldi r20, 0x0A ; 10 + 1196: 60 e0 ldi r22, 0x00 ; 0 + 1198: 71 e0 ldi r23, 0x01 ; 1 + 119a: 0e 94 89 09 call 0x1312 ; 0x1312 <__itoa_ncheck> lcd_putc(dectable[n]); } } static void printnum(int16_t number) { uint8_t n,i; a = itoa(number,dectable,10); - 1176: 80 93 3c 01 sts 0x013C, r24 ; 0x80013c <a> + 119e: 80 93 3c 01 sts 0x013C, r24 ; 0x80013c <a> i = strlen(dectable); - 117a: e0 e0 ldi r30, 0x00 ; 0 - 117c: f1 e0 ldi r31, 0x01 ; 1 - 117e: 01 90 ld r0, Z+ - 1180: 00 20 and r0, r0 - 1182: e9 f7 brne .-6 ; 0x117e <main+0x328> - 1184: 31 97 sbiw r30, 0x01 ; 1 - 1186: e0 50 subi r30, 0x00 ; 0 - 1188: f1 40 sbci r31, 0x01 ; 1 - 118a: 1e 2f mov r17, r30 - 118c: 80 e0 ldi r24, 0x00 ; 0 - 118e: e8 2e mov r14, r24 - 1190: 81 e0 ldi r24, 0x01 ; 1 - 1192: f8 2e mov r15, r24 - 1194: 67 01 movw r12, r14 - 1196: 8c 2d mov r24, r12 - 1198: 8e 19 sub r24, r14 + 11a2: e0 e0 ldi r30, 0x00 ; 0 + 11a4: f1 e0 ldi r31, 0x01 ; 1 + 11a6: 01 90 ld r0, Z+ + 11a8: 00 20 and r0, r0 + 11aa: e9 f7 brne .-6 ; 0x11a6 <main+0x350> + 11ac: 31 97 sbiw r30, 0x01 ; 1 + 11ae: e0 50 subi r30, 0x00 ; 0 + 11b0: f1 40 sbci r31, 0x01 ; 1 + 11b2: 1e 2f mov r17, r30 + 11b4: 80 e0 ldi r24, 0x00 ; 0 + 11b6: e8 2e mov r14, r24 + 11b8: 81 e0 ldi r24, 0x01 ; 1 + 11ba: f8 2e mov r15, r24 + 11bc: 67 01 movw r12, r14 + 11be: 8c 2d mov r24, r12 + 11c0: 8e 19 sub r24, r14 for (n=0;n < i;n++) { - 119a: 81 17 cp r24, r17 - 119c: 30 f4 brcc .+12 ; 0x11aa <main+0x354> + 11c2: 81 17 cp r24, r17 + 11c4: 30 f4 brcc .+12 ; 0x11d2 <main+0x37c> lcd_putc(dectable[n]); - 119e: f6 01 movw r30, r12 - 11a0: 81 91 ld r24, Z+ - 11a2: 6f 01 movw r12, r30 - 11a4: 0e 94 c4 06 call 0xd88 ; 0xd88 <lcd_putc> - 11a8: f6 cf rjmp .-20 ; 0x1196 <main+0x340> + 11c6: f6 01 movw r30, r12 + 11c8: 81 91 ld r24, Z+ + 11ca: 6f 01 movw r12, r30 + 11cc: 0e 94 c4 06 call 0xd88 ; 0xd88 <lcd_putc> + 11d0: f6 cf rjmp .-20 ; 0x11be <main+0x368> const uint8_t *p = cursorpos; lcd_gotoxy(0,1); printdec(freq);printspc();lcd_gotoxy(6,1); printdec(VperHz);printspc();printspc();lcd_gotoxy(12,1); printnum((uint16_t)(amplitude*100)/255);lcd_putc('%');printspc(); - 11aa: 85 e2 ldi r24, 0x25 ; 37 - 11ac: 0e 94 c4 06 call 0xd88 ; 0xd88 <lcd_putc> - 11b0: 0e 94 d5 02 call 0x5aa ; 0x5aa <printspc> + 11d2: 85 e2 ldi r24, 0x25 ; 37 + 11d4: 0e 94 c4 06 call 0xd88 ; 0xd88 <lcd_putc> + 11d8: 0e 94 d5 02 call 0x5aa ; 0x5aa <printspc> lcd_gotoxy(pgm_read_byte(p+parameter),1); // set cursor below active parameter - 11b4: e0 91 22 01 lds r30, 0x0122 ; 0x800122 <parameter> - 11b8: f0 e0 ldi r31, 0x00 ; 0 - 11ba: e7 5d subi r30, 0xD7 ; 215 - 11bc: fe 4f sbci r31, 0xFE ; 254 - 11be: 84 91 lpm r24, Z - 11c0: 61 e0 ldi r22, 0x01 ; 1 - 11c2: 0e 94 b3 06 call 0xd66 ; 0xd66 <lcd_gotoxy> - 11c6: 8f e1 ldi r24, 0x1F ; 31 - 11c8: 9e e4 ldi r25, 0x4E ; 78 - 11ca: 01 97 sbiw r24, 0x01 ; 1 - 11cc: f1 f7 brne .-4 ; 0x11ca <main+0x374> - 11ce: 00 c0 rjmp .+0 ; 0x11d0 <main+0x37a> - 11d0: 00 00 nop - 11d2: 41 cf rjmp .-382 ; 0x1056 <main+0x200> - -000011d4 <__udivmodhi4>: - 11d4: aa 1b sub r26, r26 - 11d6: bb 1b sub r27, r27 - 11d8: 51 e1 ldi r21, 0x11 ; 17 - 11da: 07 c0 rjmp .+14 ; 0x11ea <__udivmodhi4_ep> - -000011dc <__udivmodhi4_loop>: - 11dc: aa 1f adc r26, r26 - 11de: bb 1f adc r27, r27 - 11e0: a6 17 cp r26, r22 - 11e2: b7 07 cpc r27, r23 - 11e4: 10 f0 brcs .+4 ; 0x11ea <__udivmodhi4_ep> - 11e6: a6 1b sub r26, r22 - 11e8: b7 0b sbc r27, r23 - -000011ea <__udivmodhi4_ep>: - 11ea: 88 1f adc r24, r24 - 11ec: 99 1f adc r25, r25 - 11ee: 5a 95 dec r21 - 11f0: a9 f7 brne .-22 ; 0x11dc <__udivmodhi4_loop> - 11f2: 80 95 com r24 - 11f4: 90 95 com r25 - 11f6: bc 01 movw r22, r24 - 11f8: cd 01 movw r24, r26 - 11fa: 08 95 ret - -000011fc <__divmodhi4>: - 11fc: 97 fb bst r25, 7 - 11fe: 07 2e mov r0, r23 - 1200: 16 f4 brtc .+4 ; 0x1206 <__divmodhi4+0xa> - 1202: 00 94 com r0 - 1204: 07 d0 rcall .+14 ; 0x1214 <__divmodhi4_neg1> - 1206: 77 fd sbrc r23, 7 - 1208: 09 d0 rcall .+18 ; 0x121c <__divmodhi4_neg2> - 120a: 0e 94 ea 08 call 0x11d4 ; 0x11d4 <__udivmodhi4> - 120e: 07 fc sbrc r0, 7 - 1210: 05 d0 rcall .+10 ; 0x121c <__divmodhi4_neg2> - 1212: 3e f4 brtc .+14 ; 0x1222 <__divmodhi4_exit> - -00001214 <__divmodhi4_neg1>: - 1214: 90 95 com r25 - 1216: 81 95 neg r24 - 1218: 9f 4f sbci r25, 0xFF ; 255 - 121a: 08 95 ret - -0000121c <__divmodhi4_neg2>: - 121c: 70 95 com r23 - 121e: 61 95 neg r22 - 1220: 7f 4f sbci r23, 0xFF ; 255 - -00001222 <__divmodhi4_exit>: + 11dc: e0 91 22 01 lds r30, 0x0122 ; 0x800122 <parameter> + 11e0: f0 e0 ldi r31, 0x00 ; 0 + 11e2: e7 5d subi r30, 0xD7 ; 215 + 11e4: fe 4f sbci r31, 0xFE ; 254 + 11e6: 84 91 lpm r24, Z + 11e8: 61 e0 ldi r22, 0x01 ; 1 + 11ea: 0e 94 b3 06 call 0xd66 ; 0xd66 <lcd_gotoxy> + 11ee: 8f e1 ldi r24, 0x1F ; 31 + 11f0: 9e e4 ldi r25, 0x4E ; 78 + 11f2: 01 97 sbiw r24, 0x01 ; 1 + 11f4: f1 f7 brne .-4 ; 0x11f2 <main+0x39c> + 11f6: 00 c0 rjmp .+0 ; 0x11f8 <main+0x3a2> + 11f8: 00 00 nop + 11fa: 2d cf rjmp .-422 ; 0x1056 <main+0x200> + +000011fc <__udivmodhi4>: + 11fc: aa 1b sub r26, r26 + 11fe: bb 1b sub r27, r27 + 1200: 51 e1 ldi r21, 0x11 ; 17 + 1202: 07 c0 rjmp .+14 ; 0x1212 <__udivmodhi4_ep> + +00001204 <__udivmodhi4_loop>: + 1204: aa 1f adc r26, r26 + 1206: bb 1f adc r27, r27 + 1208: a6 17 cp r26, r22 + 120a: b7 07 cpc r27, r23 + 120c: 10 f0 brcs .+4 ; 0x1212 <__udivmodhi4_ep> + 120e: a6 1b sub r26, r22 + 1210: b7 0b sbc r27, r23 + +00001212 <__udivmodhi4_ep>: + 1212: 88 1f adc r24, r24 + 1214: 99 1f adc r25, r25 + 1216: 5a 95 dec r21 + 1218: a9 f7 brne .-22 ; 0x1204 <__udivmodhi4_loop> + 121a: 80 95 com r24 + 121c: 90 95 com r25 + 121e: bc 01 movw r22, r24 + 1220: cd 01 movw r24, r26 1222: 08 95 ret -00001224 <__udivmodsi4>: - 1224: a1 e2 ldi r26, 0x21 ; 33 - 1226: 1a 2e mov r1, r26 - 1228: aa 1b sub r26, r26 - 122a: bb 1b sub r27, r27 - 122c: fd 01 movw r30, r26 - 122e: 0d c0 rjmp .+26 ; 0x124a <__udivmodsi4_ep> - -00001230 <__udivmodsi4_loop>: - 1230: aa 1f adc r26, r26 - 1232: bb 1f adc r27, r27 - 1234: ee 1f adc r30, r30 - 1236: ff 1f adc r31, r31 - 1238: a2 17 cp r26, r18 - 123a: b3 07 cpc r27, r19 - 123c: e4 07 cpc r30, r20 - 123e: f5 07 cpc r31, r21 - 1240: 20 f0 brcs .+8 ; 0x124a <__udivmodsi4_ep> - 1242: a2 1b sub r26, r18 - 1244: b3 0b sbc r27, r19 - 1246: e4 0b sbc r30, r20 - 1248: f5 0b sbc r31, r21 - -0000124a <__udivmodsi4_ep>: - 124a: 66 1f adc r22, r22 - 124c: 77 1f adc r23, r23 - 124e: 88 1f adc r24, r24 - 1250: 99 1f adc r25, r25 - 1252: 1a 94 dec r1 - 1254: 69 f7 brne .-38 ; 0x1230 <__udivmodsi4_loop> - 1256: 60 95 com r22 - 1258: 70 95 com r23 - 125a: 80 95 com r24 - 125c: 90 95 com r25 - 125e: 9b 01 movw r18, r22 - 1260: ac 01 movw r20, r24 - 1262: bd 01 movw r22, r26 - 1264: cf 01 movw r24, r30 - 1266: 08 95 ret - -00001268 <__divmodsi4>: - 1268: 05 2e mov r0, r21 - 126a: 97 fb bst r25, 7 - 126c: 1e f4 brtc .+6 ; 0x1274 <__divmodsi4+0xc> - 126e: 00 94 com r0 - 1270: 0e 94 4b 09 call 0x1296 ; 0x1296 <__negsi2> - 1274: 57 fd sbrc r21, 7 - 1276: 07 d0 rcall .+14 ; 0x1286 <__divmodsi4_neg2> - 1278: 0e 94 12 09 call 0x1224 ; 0x1224 <__udivmodsi4> - 127c: 07 fc sbrc r0, 7 - 127e: 03 d0 rcall .+6 ; 0x1286 <__divmodsi4_neg2> - 1280: 4e f4 brtc .+18 ; 0x1294 <__divmodsi4_exit> - 1282: 0c 94 4b 09 jmp 0x1296 ; 0x1296 <__negsi2> - -00001286 <__divmodsi4_neg2>: - 1286: 50 95 com r21 - 1288: 40 95 com r20 - 128a: 30 95 com r19 - 128c: 21 95 neg r18 - 128e: 3f 4f sbci r19, 0xFF ; 255 - 1290: 4f 4f sbci r20, 0xFF ; 255 - 1292: 5f 4f sbci r21, 0xFF ; 255 - -00001294 <__divmodsi4_exit>: - 1294: 08 95 ret - -00001296 <__negsi2>: - 1296: 90 95 com r25 - 1298: 80 95 com r24 - 129a: 70 95 com r23 - 129c: 61 95 neg r22 - 129e: 7f 4f sbci r23, 0xFF ; 255 - 12a0: 8f 4f sbci r24, 0xFF ; 255 - 12a2: 9f 4f sbci r25, 0xFF ; 255 - 12a4: 08 95 ret - -000012a6 <__umulhisi3>: - 12a6: a2 9f mul r26, r18 - 12a8: b0 01 movw r22, r0 - 12aa: b3 9f mul r27, r19 - 12ac: c0 01 movw r24, r0 - 12ae: a3 9f mul r26, r19 - 12b0: 70 0d add r23, r0 - 12b2: 81 1d adc r24, r1 - 12b4: 11 24 eor r1, r1 - 12b6: 91 1d adc r25, r1 - 12b8: b2 9f mul r27, r18 - 12ba: 70 0d add r23, r0 - 12bc: 81 1d adc r24, r1 - 12be: 11 24 eor r1, r1 - 12c0: 91 1d adc r25, r1 - 12c2: 08 95 ret - -000012c4 <__mulshisi3>: - 12c4: b7 ff sbrs r27, 7 - 12c6: 0c 94 6a 09 jmp 0x12d4 ; 0x12d4 <__muluhisi3> - -000012ca <__mulohisi3>: - 12ca: 0e 94 6a 09 call 0x12d4 ; 0x12d4 <__muluhisi3> - 12ce: 82 1b sub r24, r18 - 12d0: 93 0b sbc r25, r19 - 12d2: 08 95 ret - -000012d4 <__muluhisi3>: - 12d4: 0e 94 53 09 call 0x12a6 ; 0x12a6 <__umulhisi3> - 12d8: a5 9f mul r26, r21 - 12da: 90 0d add r25, r0 - 12dc: b4 9f mul r27, r20 - 12de: 90 0d add r25, r0 - 12e0: a4 9f mul r26, r20 - 12e2: 80 0d add r24, r0 - 12e4: 91 1d adc r25, r1 +00001224 <__divmodhi4>: + 1224: 97 fb bst r25, 7 + 1226: 07 2e mov r0, r23 + 1228: 16 f4 brtc .+4 ; 0x122e <__divmodhi4+0xa> + 122a: 00 94 com r0 + 122c: 07 d0 rcall .+14 ; 0x123c <__divmodhi4_neg1> + 122e: 77 fd sbrc r23, 7 + 1230: 09 d0 rcall .+18 ; 0x1244 <__divmodhi4_neg2> + 1232: 0e 94 fe 08 call 0x11fc ; 0x11fc <__udivmodhi4> + 1236: 07 fc sbrc r0, 7 + 1238: 05 d0 rcall .+10 ; 0x1244 <__divmodhi4_neg2> + 123a: 3e f4 brtc .+14 ; 0x124a <__divmodhi4_exit> + +0000123c <__divmodhi4_neg1>: + 123c: 90 95 com r25 + 123e: 81 95 neg r24 + 1240: 9f 4f sbci r25, 0xFF ; 255 + 1242: 08 95 ret + +00001244 <__divmodhi4_neg2>: + 1244: 70 95 com r23 + 1246: 61 95 neg r22 + 1248: 7f 4f sbci r23, 0xFF ; 255 + +0000124a <__divmodhi4_exit>: + 124a: 08 95 ret + +0000124c <__udivmodsi4>: + 124c: a1 e2 ldi r26, 0x21 ; 33 + 124e: 1a 2e mov r1, r26 + 1250: aa 1b sub r26, r26 + 1252: bb 1b sub r27, r27 + 1254: fd 01 movw r30, r26 + 1256: 0d c0 rjmp .+26 ; 0x1272 <__udivmodsi4_ep> + +00001258 <__udivmodsi4_loop>: + 1258: aa 1f adc r26, r26 + 125a: bb 1f adc r27, r27 + 125c: ee 1f adc r30, r30 + 125e: ff 1f adc r31, r31 + 1260: a2 17 cp r26, r18 + 1262: b3 07 cpc r27, r19 + 1264: e4 07 cpc r30, r20 + 1266: f5 07 cpc r31, r21 + 1268: 20 f0 brcs .+8 ; 0x1272 <__udivmodsi4_ep> + 126a: a2 1b sub r26, r18 + 126c: b3 0b sbc r27, r19 + 126e: e4 0b sbc r30, r20 + 1270: f5 0b sbc r31, r21 + +00001272 <__udivmodsi4_ep>: + 1272: 66 1f adc r22, r22 + 1274: 77 1f adc r23, r23 + 1276: 88 1f adc r24, r24 + 1278: 99 1f adc r25, r25 + 127a: 1a 94 dec r1 + 127c: 69 f7 brne .-38 ; 0x1258 <__udivmodsi4_loop> + 127e: 60 95 com r22 + 1280: 70 95 com r23 + 1282: 80 95 com r24 + 1284: 90 95 com r25 + 1286: 9b 01 movw r18, r22 + 1288: ac 01 movw r20, r24 + 128a: bd 01 movw r22, r26 + 128c: cf 01 movw r24, r30 + 128e: 08 95 ret + +00001290 <__divmodsi4>: + 1290: 05 2e mov r0, r21 + 1292: 97 fb bst r25, 7 + 1294: 1e f4 brtc .+6 ; 0x129c <__divmodsi4+0xc> + 1296: 00 94 com r0 + 1298: 0e 94 5f 09 call 0x12be ; 0x12be <__negsi2> + 129c: 57 fd sbrc r21, 7 + 129e: 07 d0 rcall .+14 ; 0x12ae <__divmodsi4_neg2> + 12a0: 0e 94 26 09 call 0x124c ; 0x124c <__udivmodsi4> + 12a4: 07 fc sbrc r0, 7 + 12a6: 03 d0 rcall .+6 ; 0x12ae <__divmodsi4_neg2> + 12a8: 4e f4 brtc .+18 ; 0x12bc <__divmodsi4_exit> + 12aa: 0c 94 5f 09 jmp 0x12be ; 0x12be <__negsi2> + +000012ae <__divmodsi4_neg2>: + 12ae: 50 95 com r21 + 12b0: 40 95 com r20 + 12b2: 30 95 com r19 + 12b4: 21 95 neg r18 + 12b6: 3f 4f sbci r19, 0xFF ; 255 + 12b8: 4f 4f sbci r20, 0xFF ; 255 + 12ba: 5f 4f sbci r21, 0xFF ; 255 + +000012bc <__divmodsi4_exit>: + 12bc: 08 95 ret + +000012be <__negsi2>: + 12be: 90 95 com r25 + 12c0: 80 95 com r24 + 12c2: 70 95 com r23 + 12c4: 61 95 neg r22 + 12c6: 7f 4f sbci r23, 0xFF ; 255 + 12c8: 8f 4f sbci r24, 0xFF ; 255 + 12ca: 9f 4f sbci r25, 0xFF ; 255 + 12cc: 08 95 ret + +000012ce <__umulhisi3>: + 12ce: a2 9f mul r26, r18 + 12d0: b0 01 movw r22, r0 + 12d2: b3 9f mul r27, r19 + 12d4: c0 01 movw r24, r0 + 12d6: a3 9f mul r26, r19 + 12d8: 70 0d add r23, r0 + 12da: 81 1d adc r24, r1 + 12dc: 11 24 eor r1, r1 + 12de: 91 1d adc r25, r1 + 12e0: b2 9f mul r27, r18 + 12e2: 70 0d add r23, r0 + 12e4: 81 1d adc r24, r1 12e6: 11 24 eor r1, r1 - 12e8: 08 95 ret - -000012ea <__itoa_ncheck>: - 12ea: bb 27 eor r27, r27 - 12ec: 4a 30 cpi r20, 0x0A ; 10 - 12ee: 31 f4 brne .+12 ; 0x12fc <__itoa_ncheck+0x12> - 12f0: 99 23 and r25, r25 - 12f2: 22 f4 brpl .+8 ; 0x12fc <__itoa_ncheck+0x12> - 12f4: bd e2 ldi r27, 0x2D ; 45 - 12f6: 90 95 com r25 - 12f8: 81 95 neg r24 - 12fa: 9f 4f sbci r25, 0xFF ; 255 - 12fc: 0c 94 81 09 jmp 0x1302 ; 0x1302 <__utoa_common> - -00001300 <__utoa_ncheck>: - 1300: bb 27 eor r27, r27 - -00001302 <__utoa_common>: - 1302: fb 01 movw r30, r22 - 1304: 55 27 eor r21, r21 - 1306: aa 27 eor r26, r26 - 1308: 88 0f add r24, r24 - 130a: 99 1f adc r25, r25 - 130c: aa 1f adc r26, r26 - 130e: a4 17 cp r26, r20 - 1310: 10 f0 brcs .+4 ; 0x1316 <__utoa_common+0x14> - 1312: a4 1b sub r26, r20 - 1314: 83 95 inc r24 - 1316: 50 51 subi r21, 0x10 ; 16 - 1318: b9 f7 brne .-18 ; 0x1308 <__utoa_common+0x6> - 131a: a0 5d subi r26, 0xD0 ; 208 - 131c: aa 33 cpi r26, 0x3A ; 58 - 131e: 08 f0 brcs .+2 ; 0x1322 <__utoa_common+0x20> - 1320: a9 5d subi r26, 0xD9 ; 217 - 1322: a1 93 st Z+, r26 - 1324: 00 97 sbiw r24, 0x00 ; 0 - 1326: 79 f7 brne .-34 ; 0x1306 <__utoa_common+0x4> - 1328: b1 11 cpse r27, r1 - 132a: b1 93 st Z+, r27 - 132c: 11 92 st Z+, r1 - 132e: cb 01 movw r24, r22 - 1330: 0c 94 9a 09 jmp 0x1334 ; 0x1334 <strrev> - -00001334 <strrev>: - 1334: dc 01 movw r26, r24 - 1336: fc 01 movw r30, r24 - 1338: 67 2f mov r22, r23 - 133a: 71 91 ld r23, Z+ - 133c: 77 23 and r23, r23 - 133e: e1 f7 brne .-8 ; 0x1338 <strrev+0x4> - 1340: 32 97 sbiw r30, 0x02 ; 2 - 1342: 04 c0 rjmp .+8 ; 0x134c <strrev+0x18> - 1344: 7c 91 ld r23, X - 1346: 6d 93 st X+, r22 - 1348: 70 83 st Z, r23 - 134a: 62 91 ld r22, -Z - 134c: ae 17 cp r26, r30 - 134e: bf 07 cpc r27, r31 - 1350: c8 f3 brcs .-14 ; 0x1344 <strrev+0x10> - 1352: 08 95 ret - -00001354 <eeprom_read_byte>: - 1354: f9 99 sbic 0x1f, 1 ; 31 - 1356: fe cf rjmp .-4 ; 0x1354 <eeprom_read_byte> - 1358: 92 bd out 0x22, r25 ; 34 - 135a: 81 bd out 0x21, r24 ; 33 - 135c: f8 9a sbi 0x1f, 0 ; 31 - 135e: 99 27 eor r25, r25 - 1360: 80 b5 in r24, 0x20 ; 32 - 1362: 08 95 ret - -00001364 <eeprom_read_word>: - 1364: a8 e1 ldi r26, 0x18 ; 24 - 1366: b0 e0 ldi r27, 0x00 ; 0 - 1368: 42 e0 ldi r20, 0x02 ; 2 - 136a: 50 e0 ldi r21, 0x00 ; 0 - 136c: 0c 94 cd 09 jmp 0x139a ; 0x139a <eeprom_read_blraw> - -00001370 <eeprom_write_byte>: - 1370: 26 2f mov r18, r22 - -00001372 <eeprom_write_r18>: - 1372: f9 99 sbic 0x1f, 1 ; 31 - 1374: fe cf rjmp .-4 ; 0x1372 <eeprom_write_r18> - 1376: 1f ba out 0x1f, r1 ; 31 - 1378: 92 bd out 0x22, r25 ; 34 - 137a: 81 bd out 0x21, r24 ; 33 - 137c: 20 bd out 0x20, r18 ; 32 - 137e: 0f b6 in r0, 0x3f ; 63 - 1380: f8 94 cli - 1382: fa 9a sbi 0x1f, 2 ; 31 - 1384: f9 9a sbi 0x1f, 1 ; 31 - 1386: 0f be out 0x3f, r0 ; 63 - 1388: 01 96 adiw r24, 0x01 ; 1 + 12e8: 91 1d adc r25, r1 + 12ea: 08 95 ret + +000012ec <__mulshisi3>: + 12ec: b7 ff sbrs r27, 7 + 12ee: 0c 94 7e 09 jmp 0x12fc ; 0x12fc <__muluhisi3> + +000012f2 <__mulohisi3>: + 12f2: 0e 94 7e 09 call 0x12fc ; 0x12fc <__muluhisi3> + 12f6: 82 1b sub r24, r18 + 12f8: 93 0b sbc r25, r19 + 12fa: 08 95 ret + +000012fc <__muluhisi3>: + 12fc: 0e 94 67 09 call 0x12ce ; 0x12ce <__umulhisi3> + 1300: a5 9f mul r26, r21 + 1302: 90 0d add r25, r0 + 1304: b4 9f mul r27, r20 + 1306: 90 0d add r25, r0 + 1308: a4 9f mul r26, r20 + 130a: 80 0d add r24, r0 + 130c: 91 1d adc r25, r1 + 130e: 11 24 eor r1, r1 + 1310: 08 95 ret + +00001312 <__itoa_ncheck>: + 1312: bb 27 eor r27, r27 + 1314: 4a 30 cpi r20, 0x0A ; 10 + 1316: 31 f4 brne .+12 ; 0x1324 <__itoa_ncheck+0x12> + 1318: 99 23 and r25, r25 + 131a: 22 f4 brpl .+8 ; 0x1324 <__itoa_ncheck+0x12> + 131c: bd e2 ldi r27, 0x2D ; 45 + 131e: 90 95 com r25 + 1320: 81 95 neg r24 + 1322: 9f 4f sbci r25, 0xFF ; 255 + 1324: 0c 94 95 09 jmp 0x132a ; 0x132a <__utoa_common> + +00001328 <__utoa_ncheck>: + 1328: bb 27 eor r27, r27 + +0000132a <__utoa_common>: + 132a: fb 01 movw r30, r22 + 132c: 55 27 eor r21, r21 + 132e: aa 27 eor r26, r26 + 1330: 88 0f add r24, r24 + 1332: 99 1f adc r25, r25 + 1334: aa 1f adc r26, r26 + 1336: a4 17 cp r26, r20 + 1338: 10 f0 brcs .+4 ; 0x133e <__utoa_common+0x14> + 133a: a4 1b sub r26, r20 + 133c: 83 95 inc r24 + 133e: 50 51 subi r21, 0x10 ; 16 + 1340: b9 f7 brne .-18 ; 0x1330 <__utoa_common+0x6> + 1342: a0 5d subi r26, 0xD0 ; 208 + 1344: aa 33 cpi r26, 0x3A ; 58 + 1346: 08 f0 brcs .+2 ; 0x134a <__utoa_common+0x20> + 1348: a9 5d subi r26, 0xD9 ; 217 + 134a: a1 93 st Z+, r26 + 134c: 00 97 sbiw r24, 0x00 ; 0 + 134e: 79 f7 brne .-34 ; 0x132e <__utoa_common+0x4> + 1350: b1 11 cpse r27, r1 + 1352: b1 93 st Z+, r27 + 1354: 11 92 st Z+, r1 + 1356: cb 01 movw r24, r22 + 1358: 0c 94 ae 09 jmp 0x135c ; 0x135c <strrev> + +0000135c <strrev>: + 135c: dc 01 movw r26, r24 + 135e: fc 01 movw r30, r24 + 1360: 67 2f mov r22, r23 + 1362: 71 91 ld r23, Z+ + 1364: 77 23 and r23, r23 + 1366: e1 f7 brne .-8 ; 0x1360 <strrev+0x4> + 1368: 32 97 sbiw r30, 0x02 ; 2 + 136a: 04 c0 rjmp .+8 ; 0x1374 <strrev+0x18> + 136c: 7c 91 ld r23, X + 136e: 6d 93 st X+, r22 + 1370: 70 83 st Z, r23 + 1372: 62 91 ld r22, -Z + 1374: ae 17 cp r26, r30 + 1376: bf 07 cpc r27, r31 + 1378: c8 f3 brcs .-14 ; 0x136c <strrev+0x10> + 137a: 08 95 ret + +0000137c <eeprom_read_byte>: + 137c: f9 99 sbic 0x1f, 1 ; 31 + 137e: fe cf rjmp .-4 ; 0x137c <eeprom_read_byte> + 1380: 92 bd out 0x22, r25 ; 34 + 1382: 81 bd out 0x21, r24 ; 33 + 1384: f8 9a sbi 0x1f, 0 ; 31 + 1386: 99 27 eor r25, r25 + 1388: 80 b5 in r24, 0x20 ; 32 138a: 08 95 ret -0000138c <eeprom_write_word>: - 138c: 0e 94 b8 09 call 0x1370 ; 0x1370 <eeprom_write_byte> - 1390: 27 2f mov r18, r23 - 1392: 0c 94 b9 09 jmp 0x1372 ; 0x1372 <eeprom_write_r18> - -00001396 <eeprom_read_block>: - 1396: dc 01 movw r26, r24 - 1398: cb 01 movw r24, r22 - -0000139a <eeprom_read_blraw>: - 139a: fc 01 movw r30, r24 - 139c: f9 99 sbic 0x1f, 1 ; 31 - 139e: fe cf rjmp .-4 ; 0x139c <eeprom_read_blraw+0x2> - 13a0: 06 c0 rjmp .+12 ; 0x13ae <eeprom_read_blraw+0x14> - 13a2: f2 bd out 0x22, r31 ; 34 - 13a4: e1 bd out 0x21, r30 ; 33 - 13a6: f8 9a sbi 0x1f, 0 ; 31 - 13a8: 31 96 adiw r30, 0x01 ; 1 - 13aa: 00 b4 in r0, 0x20 ; 32 - 13ac: 0d 92 st X+, r0 - 13ae: 41 50 subi r20, 0x01 ; 1 - 13b0: 50 40 sbci r21, 0x00 ; 0 - 13b2: b8 f7 brcc .-18 ; 0x13a2 <eeprom_read_blraw+0x8> - 13b4: 08 95 ret - -000013b6 <_exit>: - 13b6: f8 94 cli - -000013b8 <__stop_program>: - 13b8: ff cf rjmp .-2 ; 0x13b8 <__stop_program> +0000138c <eeprom_read_word>: + 138c: a8 e1 ldi r26, 0x18 ; 24 + 138e: b0 e0 ldi r27, 0x00 ; 0 + 1390: 42 e0 ldi r20, 0x02 ; 2 + 1392: 50 e0 ldi r21, 0x00 ; 0 + 1394: 0c 94 e1 09 jmp 0x13c2 ; 0x13c2 <eeprom_read_blraw> + +00001398 <eeprom_write_byte>: + 1398: 26 2f mov r18, r22 + +0000139a <eeprom_write_r18>: + 139a: f9 99 sbic 0x1f, 1 ; 31 + 139c: fe cf rjmp .-4 ; 0x139a <eeprom_write_r18> + 139e: 1f ba out 0x1f, r1 ; 31 + 13a0: 92 bd out 0x22, r25 ; 34 + 13a2: 81 bd out 0x21, r24 ; 33 + 13a4: 20 bd out 0x20, r18 ; 32 + 13a6: 0f b6 in r0, 0x3f ; 63 + 13a8: f8 94 cli + 13aa: fa 9a sbi 0x1f, 2 ; 31 + 13ac: f9 9a sbi 0x1f, 1 ; 31 + 13ae: 0f be out 0x3f, r0 ; 63 + 13b0: 01 96 adiw r24, 0x01 ; 1 + 13b2: 08 95 ret + +000013b4 <eeprom_write_word>: + 13b4: 0e 94 cc 09 call 0x1398 ; 0x1398 <eeprom_write_byte> + 13b8: 27 2f mov r18, r23 + 13ba: 0c 94 cd 09 jmp 0x139a ; 0x139a <eeprom_write_r18> + +000013be <eeprom_read_block>: + 13be: dc 01 movw r26, r24 + 13c0: cb 01 movw r24, r22 + +000013c2 <eeprom_read_blraw>: + 13c2: fc 01 movw r30, r24 + 13c4: f9 99 sbic 0x1f, 1 ; 31 + 13c6: fe cf rjmp .-4 ; 0x13c4 <eeprom_read_blraw+0x2> + 13c8: 06 c0 rjmp .+12 ; 0x13d6 <eeprom_read_blraw+0x14> + 13ca: f2 bd out 0x22, r31 ; 34 + 13cc: e1 bd out 0x21, r30 ; 33 + 13ce: f8 9a sbi 0x1f, 0 ; 31 + 13d0: 31 96 adiw r30, 0x01 ; 1 + 13d2: 00 b4 in r0, 0x20 ; 32 + 13d4: 0d 92 st X+, r0 + 13d6: 41 50 subi r20, 0x01 ; 1 + 13d8: 50 40 sbci r21, 0x00 ; 0 + 13da: b8 f7 brcc .-18 ; 0x13ca <eeprom_read_blraw+0x8> + 13dc: 08 95 ret + +000013de <_exit>: + 13de: f8 94 cli + +000013e0 <__stop_program>: + 13e0: ff cf rjmp .-2 ; 0x13e0 <__stop_program> diff --git a/default/VFD_Sinus_AT328.map b/default/VFD_Sinus_AT328.map index c7fa057e3c66dd7ce4be3b4a742a695b7c04eaa6..d41f3e7351708a15899faec3729e01a4c24cf09e 100644 --- a/default/VFD_Sinus_AT328.map +++ b/default/VFD_Sinus_AT328.map @@ -171,7 +171,7 @@ END GROUP .rela.plt *(.rela.plt) -.text 0x0000000000000000 0x13ba +.text 0x0000000000000000 0x13e2 *(.vectors) .vectors 0x0000000000000000 0x68 /usr/lib/gcc/avr/4.9.2/../../../avr/lib/avr5/crtatmega328.o 0x0000000000000000 __vectors @@ -302,193 +302,193 @@ END GROUP .text 0x0000000000000e56 0x0 /usr/lib/gcc/avr/4.9.2/../../../avr/lib/avr5/libatmega328.a(eerd_block.o) 0x0000000000000e56 . = ALIGN (0x2) *(.text.*) - .text.startup 0x0000000000000e56 0x37e main.o + .text.startup 0x0000000000000e56 0x3a6 main.o 0x0000000000000e56 main .text.libgcc.mul - 0x00000000000011d4 0x0 /usr/lib/gcc/avr/4.9.2/avr5/libgcc.a(_udivmodhi4.o) + 0x00000000000011fc 0x0 /usr/lib/gcc/avr/4.9.2/avr5/libgcc.a(_udivmodhi4.o) .text.libgcc.div - 0x00000000000011d4 0x28 /usr/lib/gcc/avr/4.9.2/avr5/libgcc.a(_udivmodhi4.o) - 0x00000000000011d4 __udivmodhi4 - .text.libgcc 0x00000000000011fc 0x0 /usr/lib/gcc/avr/4.9.2/avr5/libgcc.a(_udivmodhi4.o) + 0x00000000000011fc 0x28 /usr/lib/gcc/avr/4.9.2/avr5/libgcc.a(_udivmodhi4.o) + 0x00000000000011fc __udivmodhi4 + .text.libgcc 0x0000000000001224 0x0 /usr/lib/gcc/avr/4.9.2/avr5/libgcc.a(_udivmodhi4.o) .text.libgcc.prologue - 0x00000000000011fc 0x0 /usr/lib/gcc/avr/4.9.2/avr5/libgcc.a(_udivmodhi4.o) + 0x0000000000001224 0x0 /usr/lib/gcc/avr/4.9.2/avr5/libgcc.a(_udivmodhi4.o) .text.libgcc.builtins - 0x00000000000011fc 0x0 /usr/lib/gcc/avr/4.9.2/avr5/libgcc.a(_udivmodhi4.o) + 0x0000000000001224 0x0 /usr/lib/gcc/avr/4.9.2/avr5/libgcc.a(_udivmodhi4.o) .text.libgcc.fmul - 0x00000000000011fc 0x0 /usr/lib/gcc/avr/4.9.2/avr5/libgcc.a(_udivmodhi4.o) + 0x0000000000001224 0x0 /usr/lib/gcc/avr/4.9.2/avr5/libgcc.a(_udivmodhi4.o) .text.libgcc.fixed - 0x00000000000011fc 0x0 /usr/lib/gcc/avr/4.9.2/avr5/libgcc.a(_udivmodhi4.o) + 0x0000000000001224 0x0 /usr/lib/gcc/avr/4.9.2/avr5/libgcc.a(_udivmodhi4.o) .text.libgcc.mul - 0x00000000000011fc 0x0 /usr/lib/gcc/avr/4.9.2/avr5/libgcc.a(_divmodhi4.o) + 0x0000000000001224 0x0 /usr/lib/gcc/avr/4.9.2/avr5/libgcc.a(_divmodhi4.o) .text.libgcc.div - 0x00000000000011fc 0x28 /usr/lib/gcc/avr/4.9.2/avr5/libgcc.a(_divmodhi4.o) - 0x00000000000011fc __divmodhi4 - 0x00000000000011fc _div - .text.libgcc 0x0000000000001224 0x0 /usr/lib/gcc/avr/4.9.2/avr5/libgcc.a(_divmodhi4.o) + 0x0000000000001224 0x28 /usr/lib/gcc/avr/4.9.2/avr5/libgcc.a(_divmodhi4.o) + 0x0000000000001224 __divmodhi4 + 0x0000000000001224 _div + .text.libgcc 0x000000000000124c 0x0 /usr/lib/gcc/avr/4.9.2/avr5/libgcc.a(_divmodhi4.o) .text.libgcc.prologue - 0x0000000000001224 0x0 /usr/lib/gcc/avr/4.9.2/avr5/libgcc.a(_divmodhi4.o) + 0x000000000000124c 0x0 /usr/lib/gcc/avr/4.9.2/avr5/libgcc.a(_divmodhi4.o) .text.libgcc.builtins - 0x0000000000001224 0x0 /usr/lib/gcc/avr/4.9.2/avr5/libgcc.a(_divmodhi4.o) + 0x000000000000124c 0x0 /usr/lib/gcc/avr/4.9.2/avr5/libgcc.a(_divmodhi4.o) .text.libgcc.fmul - 0x0000000000001224 0x0 /usr/lib/gcc/avr/4.9.2/avr5/libgcc.a(_divmodhi4.o) + 0x000000000000124c 0x0 /usr/lib/gcc/avr/4.9.2/avr5/libgcc.a(_divmodhi4.o) .text.libgcc.fixed - 0x0000000000001224 0x0 /usr/lib/gcc/avr/4.9.2/avr5/libgcc.a(_divmodhi4.o) + 0x000000000000124c 0x0 /usr/lib/gcc/avr/4.9.2/avr5/libgcc.a(_divmodhi4.o) .text.libgcc.mul - 0x0000000000001224 0x0 /usr/lib/gcc/avr/4.9.2/avr5/libgcc.a(_udivmodsi4.o) + 0x000000000000124c 0x0 /usr/lib/gcc/avr/4.9.2/avr5/libgcc.a(_udivmodsi4.o) .text.libgcc.div - 0x0000000000001224 0x44 /usr/lib/gcc/avr/4.9.2/avr5/libgcc.a(_udivmodsi4.o) - 0x0000000000001224 __udivmodsi4 - .text.libgcc 0x0000000000001268 0x0 /usr/lib/gcc/avr/4.9.2/avr5/libgcc.a(_udivmodsi4.o) + 0x000000000000124c 0x44 /usr/lib/gcc/avr/4.9.2/avr5/libgcc.a(_udivmodsi4.o) + 0x000000000000124c __udivmodsi4 + .text.libgcc 0x0000000000001290 0x0 /usr/lib/gcc/avr/4.9.2/avr5/libgcc.a(_udivmodsi4.o) .text.libgcc.prologue - 0x0000000000001268 0x0 /usr/lib/gcc/avr/4.9.2/avr5/libgcc.a(_udivmodsi4.o) + 0x0000000000001290 0x0 /usr/lib/gcc/avr/4.9.2/avr5/libgcc.a(_udivmodsi4.o) .text.libgcc.builtins - 0x0000000000001268 0x0 /usr/lib/gcc/avr/4.9.2/avr5/libgcc.a(_udivmodsi4.o) + 0x0000000000001290 0x0 /usr/lib/gcc/avr/4.9.2/avr5/libgcc.a(_udivmodsi4.o) .text.libgcc.fmul - 0x0000000000001268 0x0 /usr/lib/gcc/avr/4.9.2/avr5/libgcc.a(_udivmodsi4.o) + 0x0000000000001290 0x0 /usr/lib/gcc/avr/4.9.2/avr5/libgcc.a(_udivmodsi4.o) .text.libgcc.fixed - 0x0000000000001268 0x0 /usr/lib/gcc/avr/4.9.2/avr5/libgcc.a(_udivmodsi4.o) + 0x0000000000001290 0x0 /usr/lib/gcc/avr/4.9.2/avr5/libgcc.a(_udivmodsi4.o) .text.libgcc.mul - 0x0000000000001268 0x0 /usr/lib/gcc/avr/4.9.2/avr5/libgcc.a(_divmodsi4.o) + 0x0000000000001290 0x0 /usr/lib/gcc/avr/4.9.2/avr5/libgcc.a(_divmodsi4.o) .text.libgcc.div - 0x0000000000001268 0x2e /usr/lib/gcc/avr/4.9.2/avr5/libgcc.a(_divmodsi4.o) - 0x0000000000001268 __divmodsi4 - .text.libgcc 0x0000000000001296 0x0 /usr/lib/gcc/avr/4.9.2/avr5/libgcc.a(_divmodsi4.o) + 0x0000000000001290 0x2e /usr/lib/gcc/avr/4.9.2/avr5/libgcc.a(_divmodsi4.o) + 0x0000000000001290 __divmodsi4 + .text.libgcc 0x00000000000012be 0x0 /usr/lib/gcc/avr/4.9.2/avr5/libgcc.a(_divmodsi4.o) .text.libgcc.prologue - 0x0000000000001296 0x0 /usr/lib/gcc/avr/4.9.2/avr5/libgcc.a(_divmodsi4.o) + 0x00000000000012be 0x0 /usr/lib/gcc/avr/4.9.2/avr5/libgcc.a(_divmodsi4.o) .text.libgcc.builtins - 0x0000000000001296 0x0 /usr/lib/gcc/avr/4.9.2/avr5/libgcc.a(_divmodsi4.o) + 0x00000000000012be 0x0 /usr/lib/gcc/avr/4.9.2/avr5/libgcc.a(_divmodsi4.o) .text.libgcc.fmul - 0x0000000000001296 0x0 /usr/lib/gcc/avr/4.9.2/avr5/libgcc.a(_divmodsi4.o) + 0x00000000000012be 0x0 /usr/lib/gcc/avr/4.9.2/avr5/libgcc.a(_divmodsi4.o) .text.libgcc.fixed - 0x0000000000001296 0x0 /usr/lib/gcc/avr/4.9.2/avr5/libgcc.a(_divmodsi4.o) + 0x00000000000012be 0x0 /usr/lib/gcc/avr/4.9.2/avr5/libgcc.a(_divmodsi4.o) .text.libgcc.mul - 0x0000000000001296 0x0 /usr/lib/gcc/avr/4.9.2/avr5/libgcc.a(_negsi2.o) + 0x00000000000012be 0x0 /usr/lib/gcc/avr/4.9.2/avr5/libgcc.a(_negsi2.o) .text.libgcc.div - 0x0000000000001296 0x10 /usr/lib/gcc/avr/4.9.2/avr5/libgcc.a(_negsi2.o) - 0x0000000000001296 __negsi2 - .text.libgcc 0x00000000000012a6 0x0 /usr/lib/gcc/avr/4.9.2/avr5/libgcc.a(_negsi2.o) + 0x00000000000012be 0x10 /usr/lib/gcc/avr/4.9.2/avr5/libgcc.a(_negsi2.o) + 0x00000000000012be __negsi2 + .text.libgcc 0x00000000000012ce 0x0 /usr/lib/gcc/avr/4.9.2/avr5/libgcc.a(_negsi2.o) .text.libgcc.prologue - 0x00000000000012a6 0x0 /usr/lib/gcc/avr/4.9.2/avr5/libgcc.a(_negsi2.o) + 0x00000000000012ce 0x0 /usr/lib/gcc/avr/4.9.2/avr5/libgcc.a(_negsi2.o) .text.libgcc.builtins - 0x00000000000012a6 0x0 /usr/lib/gcc/avr/4.9.2/avr5/libgcc.a(_negsi2.o) + 0x00000000000012ce 0x0 /usr/lib/gcc/avr/4.9.2/avr5/libgcc.a(_negsi2.o) .text.libgcc.fmul - 0x00000000000012a6 0x0 /usr/lib/gcc/avr/4.9.2/avr5/libgcc.a(_negsi2.o) + 0x00000000000012ce 0x0 /usr/lib/gcc/avr/4.9.2/avr5/libgcc.a(_negsi2.o) .text.libgcc.fixed - 0x00000000000012a6 0x0 /usr/lib/gcc/avr/4.9.2/avr5/libgcc.a(_negsi2.o) + 0x00000000000012ce 0x0 /usr/lib/gcc/avr/4.9.2/avr5/libgcc.a(_negsi2.o) .text.libgcc.mul - 0x00000000000012a6 0x0 /usr/lib/gcc/avr/4.9.2/avr5/libgcc.a(_exit.o) + 0x00000000000012ce 0x0 /usr/lib/gcc/avr/4.9.2/avr5/libgcc.a(_exit.o) .text.libgcc.div - 0x00000000000012a6 0x0 /usr/lib/gcc/avr/4.9.2/avr5/libgcc.a(_exit.o) - .text.libgcc 0x00000000000012a6 0x0 /usr/lib/gcc/avr/4.9.2/avr5/libgcc.a(_exit.o) + 0x00000000000012ce 0x0 /usr/lib/gcc/avr/4.9.2/avr5/libgcc.a(_exit.o) + .text.libgcc 0x00000000000012ce 0x0 /usr/lib/gcc/avr/4.9.2/avr5/libgcc.a(_exit.o) .text.libgcc.prologue - 0x00000000000012a6 0x0 /usr/lib/gcc/avr/4.9.2/avr5/libgcc.a(_exit.o) + 0x00000000000012ce 0x0 /usr/lib/gcc/avr/4.9.2/avr5/libgcc.a(_exit.o) .text.libgcc.builtins - 0x00000000000012a6 0x0 /usr/lib/gcc/avr/4.9.2/avr5/libgcc.a(_exit.o) + 0x00000000000012ce 0x0 /usr/lib/gcc/avr/4.9.2/avr5/libgcc.a(_exit.o) .text.libgcc.fmul - 0x00000000000012a6 0x0 /usr/lib/gcc/avr/4.9.2/avr5/libgcc.a(_exit.o) + 0x00000000000012ce 0x0 /usr/lib/gcc/avr/4.9.2/avr5/libgcc.a(_exit.o) .text.libgcc.fixed - 0x00000000000012a6 0x0 /usr/lib/gcc/avr/4.9.2/avr5/libgcc.a(_exit.o) + 0x00000000000012ce 0x0 /usr/lib/gcc/avr/4.9.2/avr5/libgcc.a(_exit.o) .text.libgcc.mul - 0x00000000000012a6 0x0 /usr/lib/gcc/avr/4.9.2/avr5/libgcc.a(_copy_data.o) + 0x00000000000012ce 0x0 /usr/lib/gcc/avr/4.9.2/avr5/libgcc.a(_copy_data.o) .text.libgcc.div - 0x00000000000012a6 0x0 /usr/lib/gcc/avr/4.9.2/avr5/libgcc.a(_copy_data.o) - .text.libgcc 0x00000000000012a6 0x0 /usr/lib/gcc/avr/4.9.2/avr5/libgcc.a(_copy_data.o) + 0x00000000000012ce 0x0 /usr/lib/gcc/avr/4.9.2/avr5/libgcc.a(_copy_data.o) + .text.libgcc 0x00000000000012ce 0x0 /usr/lib/gcc/avr/4.9.2/avr5/libgcc.a(_copy_data.o) .text.libgcc.prologue - 0x00000000000012a6 0x0 /usr/lib/gcc/avr/4.9.2/avr5/libgcc.a(_copy_data.o) + 0x00000000000012ce 0x0 /usr/lib/gcc/avr/4.9.2/avr5/libgcc.a(_copy_data.o) .text.libgcc.builtins - 0x00000000000012a6 0x0 /usr/lib/gcc/avr/4.9.2/avr5/libgcc.a(_copy_data.o) + 0x00000000000012ce 0x0 /usr/lib/gcc/avr/4.9.2/avr5/libgcc.a(_copy_data.o) .text.libgcc.fmul - 0x00000000000012a6 0x0 /usr/lib/gcc/avr/4.9.2/avr5/libgcc.a(_copy_data.o) + 0x00000000000012ce 0x0 /usr/lib/gcc/avr/4.9.2/avr5/libgcc.a(_copy_data.o) .text.libgcc.fixed - 0x00000000000012a6 0x0 /usr/lib/gcc/avr/4.9.2/avr5/libgcc.a(_copy_data.o) + 0x00000000000012ce 0x0 /usr/lib/gcc/avr/4.9.2/avr5/libgcc.a(_copy_data.o) .text.libgcc.mul - 0x00000000000012a6 0x0 /usr/lib/gcc/avr/4.9.2/avr5/libgcc.a(_clear_bss.o) + 0x00000000000012ce 0x0 /usr/lib/gcc/avr/4.9.2/avr5/libgcc.a(_clear_bss.o) .text.libgcc.div - 0x00000000000012a6 0x0 /usr/lib/gcc/avr/4.9.2/avr5/libgcc.a(_clear_bss.o) - .text.libgcc 0x00000000000012a6 0x0 /usr/lib/gcc/avr/4.9.2/avr5/libgcc.a(_clear_bss.o) + 0x00000000000012ce 0x0 /usr/lib/gcc/avr/4.9.2/avr5/libgcc.a(_clear_bss.o) + .text.libgcc 0x00000000000012ce 0x0 /usr/lib/gcc/avr/4.9.2/avr5/libgcc.a(_clear_bss.o) .text.libgcc.prologue - 0x00000000000012a6 0x0 /usr/lib/gcc/avr/4.9.2/avr5/libgcc.a(_clear_bss.o) + 0x00000000000012ce 0x0 /usr/lib/gcc/avr/4.9.2/avr5/libgcc.a(_clear_bss.o) .text.libgcc.builtins - 0x00000000000012a6 0x0 /usr/lib/gcc/avr/4.9.2/avr5/libgcc.a(_clear_bss.o) + 0x00000000000012ce 0x0 /usr/lib/gcc/avr/4.9.2/avr5/libgcc.a(_clear_bss.o) .text.libgcc.fmul - 0x00000000000012a6 0x0 /usr/lib/gcc/avr/4.9.2/avr5/libgcc.a(_clear_bss.o) + 0x00000000000012ce 0x0 /usr/lib/gcc/avr/4.9.2/avr5/libgcc.a(_clear_bss.o) .text.libgcc.fixed - 0x00000000000012a6 0x0 /usr/lib/gcc/avr/4.9.2/avr5/libgcc.a(_clear_bss.o) + 0x00000000000012ce 0x0 /usr/lib/gcc/avr/4.9.2/avr5/libgcc.a(_clear_bss.o) .text.libgcc.mul - 0x00000000000012a6 0x1e /usr/lib/gcc/avr/4.9.2/avr5/libgcc.a(_umulhisi3.o) - 0x00000000000012a6 __umulhisi3 + 0x00000000000012ce 0x1e /usr/lib/gcc/avr/4.9.2/avr5/libgcc.a(_umulhisi3.o) + 0x00000000000012ce __umulhisi3 .text.libgcc.div - 0x00000000000012c4 0x0 /usr/lib/gcc/avr/4.9.2/avr5/libgcc.a(_umulhisi3.o) - .text.libgcc 0x00000000000012c4 0x0 /usr/lib/gcc/avr/4.9.2/avr5/libgcc.a(_umulhisi3.o) + 0x00000000000012ec 0x0 /usr/lib/gcc/avr/4.9.2/avr5/libgcc.a(_umulhisi3.o) + .text.libgcc 0x00000000000012ec 0x0 /usr/lib/gcc/avr/4.9.2/avr5/libgcc.a(_umulhisi3.o) .text.libgcc.prologue - 0x00000000000012c4 0x0 /usr/lib/gcc/avr/4.9.2/avr5/libgcc.a(_umulhisi3.o) + 0x00000000000012ec 0x0 /usr/lib/gcc/avr/4.9.2/avr5/libgcc.a(_umulhisi3.o) .text.libgcc.builtins - 0x00000000000012c4 0x0 /usr/lib/gcc/avr/4.9.2/avr5/libgcc.a(_umulhisi3.o) + 0x00000000000012ec 0x0 /usr/lib/gcc/avr/4.9.2/avr5/libgcc.a(_umulhisi3.o) .text.libgcc.fmul - 0x00000000000012c4 0x0 /usr/lib/gcc/avr/4.9.2/avr5/libgcc.a(_umulhisi3.o) + 0x00000000000012ec 0x0 /usr/lib/gcc/avr/4.9.2/avr5/libgcc.a(_umulhisi3.o) .text.libgcc.fixed - 0x00000000000012c4 0x0 /usr/lib/gcc/avr/4.9.2/avr5/libgcc.a(_umulhisi3.o) + 0x00000000000012ec 0x0 /usr/lib/gcc/avr/4.9.2/avr5/libgcc.a(_umulhisi3.o) .text.libgcc.mul - 0x00000000000012c4 0x10 /usr/lib/gcc/avr/4.9.2/avr5/libgcc.a(_mulshisi3.o) - 0x00000000000012c4 __mulshisi3 - 0x00000000000012ca __mulohisi3 + 0x00000000000012ec 0x10 /usr/lib/gcc/avr/4.9.2/avr5/libgcc.a(_mulshisi3.o) + 0x00000000000012ec __mulshisi3 + 0x00000000000012f2 __mulohisi3 .text.libgcc.div - 0x00000000000012d4 0x0 /usr/lib/gcc/avr/4.9.2/avr5/libgcc.a(_mulshisi3.o) - .text.libgcc 0x00000000000012d4 0x0 /usr/lib/gcc/avr/4.9.2/avr5/libgcc.a(_mulshisi3.o) + 0x00000000000012fc 0x0 /usr/lib/gcc/avr/4.9.2/avr5/libgcc.a(_mulshisi3.o) + .text.libgcc 0x00000000000012fc 0x0 /usr/lib/gcc/avr/4.9.2/avr5/libgcc.a(_mulshisi3.o) .text.libgcc.prologue - 0x00000000000012d4 0x0 /usr/lib/gcc/avr/4.9.2/avr5/libgcc.a(_mulshisi3.o) + 0x00000000000012fc 0x0 /usr/lib/gcc/avr/4.9.2/avr5/libgcc.a(_mulshisi3.o) .text.libgcc.builtins - 0x00000000000012d4 0x0 /usr/lib/gcc/avr/4.9.2/avr5/libgcc.a(_mulshisi3.o) + 0x00000000000012fc 0x0 /usr/lib/gcc/avr/4.9.2/avr5/libgcc.a(_mulshisi3.o) .text.libgcc.fmul - 0x00000000000012d4 0x0 /usr/lib/gcc/avr/4.9.2/avr5/libgcc.a(_mulshisi3.o) + 0x00000000000012fc 0x0 /usr/lib/gcc/avr/4.9.2/avr5/libgcc.a(_mulshisi3.o) .text.libgcc.fixed - 0x00000000000012d4 0x0 /usr/lib/gcc/avr/4.9.2/avr5/libgcc.a(_mulshisi3.o) + 0x00000000000012fc 0x0 /usr/lib/gcc/avr/4.9.2/avr5/libgcc.a(_mulshisi3.o) .text.libgcc.mul - 0x00000000000012d4 0x16 /usr/lib/gcc/avr/4.9.2/avr5/libgcc.a(_muluhisi3.o) - 0x00000000000012d4 __muluhisi3 + 0x00000000000012fc 0x16 /usr/lib/gcc/avr/4.9.2/avr5/libgcc.a(_muluhisi3.o) + 0x00000000000012fc __muluhisi3 .text.libgcc.div - 0x00000000000012ea 0x0 /usr/lib/gcc/avr/4.9.2/avr5/libgcc.a(_muluhisi3.o) - .text.libgcc 0x00000000000012ea 0x0 /usr/lib/gcc/avr/4.9.2/avr5/libgcc.a(_muluhisi3.o) + 0x0000000000001312 0x0 /usr/lib/gcc/avr/4.9.2/avr5/libgcc.a(_muluhisi3.o) + .text.libgcc 0x0000000000001312 0x0 /usr/lib/gcc/avr/4.9.2/avr5/libgcc.a(_muluhisi3.o) .text.libgcc.prologue - 0x00000000000012ea 0x0 /usr/lib/gcc/avr/4.9.2/avr5/libgcc.a(_muluhisi3.o) + 0x0000000000001312 0x0 /usr/lib/gcc/avr/4.9.2/avr5/libgcc.a(_muluhisi3.o) .text.libgcc.builtins - 0x00000000000012ea 0x0 /usr/lib/gcc/avr/4.9.2/avr5/libgcc.a(_muluhisi3.o) + 0x0000000000001312 0x0 /usr/lib/gcc/avr/4.9.2/avr5/libgcc.a(_muluhisi3.o) .text.libgcc.fmul - 0x00000000000012ea 0x0 /usr/lib/gcc/avr/4.9.2/avr5/libgcc.a(_muluhisi3.o) + 0x0000000000001312 0x0 /usr/lib/gcc/avr/4.9.2/avr5/libgcc.a(_muluhisi3.o) .text.libgcc.fixed - 0x00000000000012ea 0x0 /usr/lib/gcc/avr/4.9.2/avr5/libgcc.a(_muluhisi3.o) + 0x0000000000001312 0x0 /usr/lib/gcc/avr/4.9.2/avr5/libgcc.a(_muluhisi3.o) .text.avr-libc - 0x00000000000012ea 0x16 /usr/lib/gcc/avr/4.9.2/../../../avr/lib/avr5/libc.a(itoa_ncheck.o) - 0x00000000000012ea __itoa_ncheck + 0x0000000000001312 0x16 /usr/lib/gcc/avr/4.9.2/../../../avr/lib/avr5/libc.a(itoa_ncheck.o) + 0x0000000000001312 __itoa_ncheck .text.avr-libc - 0x0000000000001300 0x34 /usr/lib/gcc/avr/4.9.2/../../../avr/lib/avr5/libc.a(utoa_ncheck.o) - 0x0000000000001300 __utoa_ncheck - 0x0000000000001302 __utoa_common + 0x0000000000001328 0x34 /usr/lib/gcc/avr/4.9.2/../../../avr/lib/avr5/libc.a(utoa_ncheck.o) + 0x0000000000001328 __utoa_ncheck + 0x000000000000132a __utoa_common .text.avr-libc - 0x0000000000001334 0x20 /usr/lib/gcc/avr/4.9.2/../../../avr/lib/avr5/libc.a(strrev.o) - 0x0000000000001334 strrev + 0x000000000000135c 0x20 /usr/lib/gcc/avr/4.9.2/../../../avr/lib/avr5/libc.a(strrev.o) + 0x000000000000135c strrev .text.avr-libc - 0x0000000000001354 0x10 /usr/lib/gcc/avr/4.9.2/../../../avr/lib/avr5/libatmega328.a(eerd_byte.o) - 0x0000000000001354 eeprom_read_byte + 0x000000000000137c 0x10 /usr/lib/gcc/avr/4.9.2/../../../avr/lib/avr5/libatmega328.a(eerd_byte.o) + 0x000000000000137c eeprom_read_byte .text.avr-libc - 0x0000000000001364 0xc /usr/lib/gcc/avr/4.9.2/../../../avr/lib/avr5/libatmega328.a(eerd_word.o) - 0x0000000000001364 eeprom_read_word + 0x000000000000138c 0xc /usr/lib/gcc/avr/4.9.2/../../../avr/lib/avr5/libatmega328.a(eerd_word.o) + 0x000000000000138c eeprom_read_word .text.avr-libc - 0x0000000000001370 0x1c /usr/lib/gcc/avr/4.9.2/../../../avr/lib/avr5/libatmega328.a(eewr_byte.o) - 0x0000000000001370 eeprom_write_byte - 0x0000000000001372 eeprom_write_r18 + 0x0000000000001398 0x1c /usr/lib/gcc/avr/4.9.2/../../../avr/lib/avr5/libatmega328.a(eewr_byte.o) + 0x0000000000001398 eeprom_write_byte + 0x000000000000139a eeprom_write_r18 .text.avr-libc - 0x000000000000138c 0xa /usr/lib/gcc/avr/4.9.2/../../../avr/lib/avr5/libatmega328.a(eewr_word.o) - 0x000000000000138c eeprom_write_word + 0x00000000000013b4 0xa /usr/lib/gcc/avr/4.9.2/../../../avr/lib/avr5/libatmega328.a(eewr_word.o) + 0x00000000000013b4 eeprom_write_word .text.avr-libc - 0x0000000000001396 0x20 /usr/lib/gcc/avr/4.9.2/../../../avr/lib/avr5/libatmega328.a(eerd_block.o) - 0x0000000000001396 eeprom_read_block - 0x000000000000139a eeprom_read_blraw - 0x00000000000013b6 . = ALIGN (0x2) + 0x00000000000013be 0x20 /usr/lib/gcc/avr/4.9.2/../../../avr/lib/avr5/libatmega328.a(eerd_block.o) + 0x00000000000013be eeprom_read_block + 0x00000000000013c2 eeprom_read_blraw + 0x00000000000013de . = ALIGN (0x2) *(.fini9) - .fini9 0x00000000000013b6 0x0 /usr/lib/gcc/avr/4.9.2/avr5/libgcc.a(_exit.o) - 0x00000000000013b6 exit - 0x00000000000013b6 _exit + .fini9 0x00000000000013de 0x0 /usr/lib/gcc/avr/4.9.2/avr5/libgcc.a(_exit.o) + 0x00000000000013de exit + 0x00000000000013de _exit *(.fini9) *(.fini8) *(.fini8) @@ -507,11 +507,11 @@ END GROUP *(.fini1) *(.fini1) *(.fini0) - .fini0 0x00000000000013b6 0x4 /usr/lib/gcc/avr/4.9.2/avr5/libgcc.a(_exit.o) + .fini0 0x00000000000013de 0x4 /usr/lib/gcc/avr/4.9.2/avr5/libgcc.a(_exit.o) *(.fini0) - 0x00000000000013ba _etext = . + 0x00000000000013e2 _etext = . -.data 0x0000000000800100 0x20 load address 0x00000000000013ba +.data 0x0000000000800100 0x20 load address 0x00000000000013e2 0x0000000000800100 PROVIDE (__data_start, .) *(.data) .data 0x0000000000800100 0x0 /usr/lib/gcc/avr/4.9.2/../../../avr/lib/avr5/crtatmega328.o @@ -587,8 +587,8 @@ END GROUP 0x000000000080013b speedInput 0x000000000080013c a 0x000000000080013d PROVIDE (__bss_end, .) - 0x00000000000013ba __data_load_start = LOADADDR (.data) - 0x00000000000013da __data_load_end = (__data_load_start + SIZEOF (.data)) + 0x00000000000013e2 __data_load_start = LOADADDR (.data) + 0x0000000000001402 __data_load_end = (__data_load_start + SIZEOF (.data)) .noinit 0x000000000080013d 0x0 [!provide] PROVIDE (__noinit_start, .) @@ -680,11 +680,11 @@ END GROUP .debug_pubnames *(.debug_pubnames) -.debug_info 0x0000000000000000 0x1f6e +.debug_info 0x0000000000000000 0x1f87 *(.debug_info .gnu.linkonce.wi.*) .debug_info 0x0000000000000000 0x21d pid.o - .debug_info 0x000000000000021d 0x179e main.o - .debug_info 0x00000000000019bb 0x5b3 lcd.o + .debug_info 0x000000000000021d 0x17b7 main.o + .debug_info 0x00000000000019d4 0x5b3 lcd.o .debug_abbrev 0x0000000000000000 0x7bf *(.debug_abbrev) @@ -692,11 +692,11 @@ END GROUP .debug_abbrev 0x00000000000000f7 0x451 main.o .debug_abbrev 0x0000000000000548 0x277 lcd.o -.debug_line 0x0000000000000000 0xc8d +.debug_line 0x0000000000000000 0xca1 *(.debug_line .debug_line.* .debug_line_end) .debug_line 0x0000000000000000 0x114 pid.o - .debug_line 0x0000000000000114 0x8b5 main.o - .debug_line 0x00000000000009c9 0x2c4 lcd.o + .debug_line 0x0000000000000114 0x8c9 main.o + .debug_line 0x00000000000009dd 0x2c4 lcd.o .debug_frame 0x0000000000000000 0x3ec *(.debug_frame) @@ -704,20 +704,20 @@ END GROUP .debug_frame 0x0000000000000070 0x230 main.o .debug_frame 0x00000000000002a0 0x14c lcd.o -.debug_str 0x0000000000000000 0x781 +.debug_str 0x0000000000000000 0x7be *(.debug_str) .debug_str 0x0000000000000000 0x1d2 pid.o 0x216 (size before relaxing) - .debug_str 0x00000000000001d2 0x511 main.o - 0x6db (size before relaxing) - .debug_str 0x00000000000006e3 0x9e lcd.o + .debug_str 0x00000000000001d2 0x54e main.o + 0x6ee (size before relaxing) + .debug_str 0x0000000000000720 0x9e lcd.o 0x22f (size before relaxing) -.debug_loc 0x0000000000000000 0x128f +.debug_loc 0x0000000000000000 0x129a *(.debug_loc) .debug_loc 0x0000000000000000 0x397 pid.o - .debug_loc 0x0000000000000397 0x9e7 main.o - .debug_loc 0x0000000000000d7e 0x511 lcd.o + .debug_loc 0x0000000000000397 0x9f2 main.o + .debug_loc 0x0000000000000d89 0x511 lcd.o .debug_macinfo *(.debug_macinfo) diff --git a/default/lcd.o b/default/lcd.o index 7d84c7f0b781c7d9411474c9bf77c44eebdcebd5..79f27febbdfb97bdbca3e7f78e76d76e1a9caf2a 100644 Binary files a/default/lcd.o and b/default/lcd.o differ diff --git a/default/main.o b/default/main.o index 795ce93abd4fe043e0de9b7b9f265130c602f2a4..bd8560a1e180c7f8eb089f6854c47b4bf98d495a 100644 Binary files a/default/main.o and b/default/main.o differ diff --git a/lcd.h b/lcd.h index 373730bf7cfe6158f64d742c7efd1f7bb65cf683..755c680da9f0d3328b3ac823c116240e524eb300 100644 --- a/lcd.h +++ b/lcd.h @@ -95,8 +95,8 @@ #define LCD_DATA3_PIN 3 /**< pin for 4bit data bit 3 */ #define LCD_RS_PORT LCD_CTRL_PORT /**< port for RS line */ #define LCD_RS_PIN 4 /**< pin for RS line */ -#define LCD_RW_PORT LCD_CTRL_PORT /**< port for RW line */ -#define LCD_RW_PIN 5 /**< pin for RW line */ +#define LCD_RW_PORT PORTD /**< port for RW line */ +#define LCD_RW_PIN 4 /**< pin for RW line */ #define LCD_E_PORT LCD_CTRL_PORT /**< port for Enable line */ #define LCD_E_PIN 0 /**< pin for Enable line */ diff --git a/main.c b/main.c index 508be5953062506f161a19108a8853a1e69ead30..84d2cbd406be4ace11ebd002ef97c5ad2cb26984 100644 --- a/main.c +++ b/main.c @@ -185,12 +185,12 @@ static void PortsInit(void) PORTB &= ~(PWM_PATTERN_PORTB); PORTD &= ~(PWM_PATTERN_PORTD); // output enable is active low: - PORTD |= _BV(OUTPUT_ENABLE_PIN); + PORTB |= _BV(OUTPUT_ENABLE_PIN); // Set the inputs on Port D for the three buttons DDRD &= ~BUTTON_MASK; - DDRD |= _BV(OUTPUT_ENABLE_PIN); + DDRB |= _BV(OUTPUT_ENABLE_PIN); // Enable pull-up on input signals. PORTD |= _BV(DIRECTION_COMMAND_PIN) | _BV(EXTERNAL_CONTROL_PIN) | BUTTON_MASK ; @@ -200,8 +200,8 @@ static void PortsInit(void) static void toggleOutputEnable(void) { OutputEnabled = !OutputEnabled; -if (OutputEnabled) PORTD &= ~(_BV(OUTPUT_ENABLE_PIN)); - else PORTD |= _BV(OUTPUT_ENABLE_PIN); +if (OutputEnabled) PORTB &= ~(_BV(OUTPUT_ENABLE_PIN)); + else PORTB |= _BV(OUTPUT_ENABLE_PIN); } @@ -577,8 +577,8 @@ if (!fastFlags.externalControl){ switch (n) { // with external control first button is output enable/disable -// case 1 : toggleOutputEnable(); -// break; + case 1 : toggleOutputEnable(); + break; // pressing black (1) and red (2) button simultaneously goes to sub menu case 3 : execExtendedCommand(); break; diff --git a/vfd.h b/vfd.h index d57ed319d9414360287b00abf4243e951b8959ca..fdde9cbb2b67a00cef92e6ce008942298c53bdb8 100644 --- a/vfd.h +++ b/vfd.h @@ -128,7 +128,7 @@ //////add output enable for line driver instead: -#define OUTPUT_ENABLE_PIN PD4 +#define OUTPUT_ENABLE_PIN PB5 // button inputs #define BUTTON_PORT PIND