From afc1ad217dc62a54d7d06ccea2554d8918174027 Mon Sep 17 00:00:00 2001 From: 42loop <ulf.freyhoff@hfbk-hamburg.de> Date: Tue, 29 Oct 2019 11:25:30 +0100 Subject: [PATCH] swapped lcd-r/w pin with output_enable which is now on LED pin --- default/VFD_Sinus_AT328.elf | Bin 32444 -> 32600 bytes default/VFD_Sinus_AT328.hex | 171 +++--- default/VFD_Sinus_AT328.lss | 1119 ++++++++++++++++------------------- default/VFD_Sinus_AT328.map | 260 ++++---- default/lcd.o | Bin 13508 -> 13508 bytes default/main.o | Bin 40904 -> 41236 bytes lcd.h | 4 +- main.c | 12 +- vfd.h | 2 +- 9 files changed, 745 insertions(+), 823 deletions(-) diff --git a/default/VFD_Sinus_AT328.elf b/default/VFD_Sinus_AT328.elf index 5c813f5471b283d704e9ee16fd5fc13e189a2caf..4047edc92a068b577581509a503b6b1b050d80f9 100755 GIT binary patch delta 6477 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 delta 6240 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 diff --git a/default/VFD_Sinus_AT328.hex b/default/VFD_Sinus_AT328.hex index d487a96..2247d84 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 87275fc..1c85b9e 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 c7fa057..d41f3e7 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 GIT binary patch delta 124 zcmX?-c_ec}5M#{5U`xiBiM?+bLpE14?iUbFNi0cZNK8p7N-ZvS&M(a?NiCY3FC@=x zY-FLIlA4xSno}~_S4esDETJ$CM%&3BrQ8_{CR<9!^J+3MFwACPU|<wsU`U_5R63YZ ebMsH>dPYXg$(6GDjCGS&%06b)+uSQ>E(QR9^(XrP delta 124 zcmX?-c_ec}5TowIU`s~biM?+bRX0~N?iUbFOi3w9EiQJ>FU>1SEn-MXEJ>VPE~Gr! zPe_j2(9A+VB{eOvG^b?qOrdZN#`wt}rQ8|aCR<9!^I9-4FwACPU|<wsV6dIMR63Z^ eV)IYwdPYWz$(6GDj3JX(%06b)+}tZ?E(QQaXD37e diff --git a/default/main.o b/default/main.o index 795ce93abd4fe043e0de9b7b9f265130c602f2a4..bd8560a1e180c7f8eb089f6854c47b4bf98d495a 100644 GIT binary patch delta 11061 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 N)D#9`&{_r%4FDW3FsT3l delta 10765 zcmbPoi0Q<BrU?p66J~Ezn$OM|GplQ3M}61Mkj<yq-!V#lXfa^?z;K{pA_GHze8Xf0 z1`w;sfZ@aBtDIph%?6BLHV1RDurSWr9KpAQiQ86;fkB3Wfq{Y1b~3wQ4x{bl62U&k zz{$))TB0Dir_2lt@{Acw9C{4WAZ50jorF{vB}>E@7?fDSQj7-jjA@L94C)~1-pTdC zDy(b77#NZ#KM)pYTr>HAur%YE$#;aMS&xb_Fl+~jf?1bAEXJdg4Me2Drm?eOF>P~- zNFO6($>h(XzS1BoAvQ5Uobp7B0cL5mm>JVMvB{Igl)1#k;i3n`E_3sMT*b)7#K@RG zdAYa|<GjhY#O)bnCre2<Glox&lTc#xncOIm#<ZDh@^2w+)q@-$^$^Usg(;GUfk82r z5yA(Nj9QG$+>?I`S+M9b+JhKcljlpa%7WY$&W*(bVhjw$lMhOYvnq-+F!aM&tKqEU zV3wsg1H)rD>pzIa1`?Cznfy>#Ob%qcF%Nd*{dp!Qh)GS}AtlIob@C}G#d;e~kV7Gu zF_g)LkAcAȡ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 VZh;!3$K<OE)R|s*PyV++3;;)j=gj~B diff --git a/lcd.h b/lcd.h index 373730b..755c680 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 508be59..84d2cbd 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 d57ed31..fdde9cb 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 -- GitLab