diff --git a/PIDMotorController/.vs/PIDMotorController/v14/.atsuo b/PIDMotorController/.vs/PIDMotorController/v14/.atsuo index e86d2f4627dd84e8039771b41c0f4239f10a6a1f..15e1fd4c77a8aad4e513a1f0c1022ce8a128d574 100644 Binary files a/PIDMotorController/.vs/PIDMotorController/v14/.atsuo and b/PIDMotorController/.vs/PIDMotorController/v14/.atsuo differ diff --git a/PIDMotorController/PIDMotorController/Debug/PIDMotorController.elf b/PIDMotorController/PIDMotorController/Debug/PIDMotorController.elf index d3327ee3bbfa55c8983584d53c4b6749bcd35ff2..41f79f7e01a53f5fe39a7c3bbb76f4c72a0ee6ab 100644 Binary files a/PIDMotorController/PIDMotorController/Debug/PIDMotorController.elf and b/PIDMotorController/PIDMotorController/Debug/PIDMotorController.elf differ diff --git a/PIDMotorController/PIDMotorController/Debug/PIDMotorController.hex b/PIDMotorController/PIDMotorController/Debug/PIDMotorController.hex index 3ef6d9940ed81bc7a41c5fbf62c25ba17b39c632..cd474bb8f794f9ef213d324d1e368f8e886c4284 100644 --- a/PIDMotorController/PIDMotorController/Debug/PIDMotorController.hex +++ b/PIDMotorController/PIDMotorController/Debug/PIDMotorController.hex @@ -1,9 +1,9 @@ -:100000000C94FE000C9412010C9428020C944D02E6 +:100000000C94FE000C9412010C9422020C944702F2 :100010000C9412010C9412010C9412010C94120114 :100020000C9412010C9412010C9412010C94120104 :100030000C9412010C9412010C9412010C941201F4 :100040000C9412010C9412010C9412010C941201E4 -:100050000C94DA050C9412010C9412010C94120108 +:100050000C940B060C9412010C9412010C941201D6 :100060000C9412010C9412010C9412010C941201C4 :100070000C9412010C9412010C9412010C941201B4 :100080000C9412010C9412010C9412010C941201A4 @@ -31,337 +31,340 @@ :1001E0000C9412010C9412010C9412010C94120143 :1001F0000C9412010C9412010C94120111241FBED4 :10020000CFEFCDBFDFE5DEBF00E00CBF20E2A0E016 -:10021000B0E201C01D92AF38B207E1F70E940E05AF -:100220000C946C0B0C940000FB01DC016D937C932F -:10023000119712964D935C93139781E080831182FE -:1002400080E1828385E084838FE1FA0180832760E7 -:1002500021830895CF93DF93FC01A281B3819C9108 -:1002600090689C93C281D38188818823ECF36D814F -:100270008C8170E0762F6627680F711D625E774073 -:10028000072E000C880B990B0E94220A2DEC3CECE7 -:100290004CEA5FE30E94D70A20E030E0A9010E9407 -:1002A00073098823B4F16D818C8170E0762F662705 -:1002B000680F711D625E7740072E000C880B990B4A -:1002C0000E94220A2DEC3CEC4CEA5FE30E94D70A24 -:1002D00020E030EF4FE755E40E94D20A1816E4F010 -:1002E0006D818C8170E0762F6627680F711D625ECC -:1002F0007740072E000C880B990B0E94220A2DECE8 -:100300003CEC4CEA5FE30E94D70A0E94F109CB0162 -:1003100005C080E090E002C08FEF9FE0DF91CF91B9 -:100320000895E0E5F0E083EC828388E080838181BA -:1003300083FFFDCFE0E5F0E083EC85838081806181 -:100340008083818184FFFDCF88ED84BF84E080932A -:100350004000089580FF09C0E0E2F3E0958190FF3E -:10036000FDCF609338037093390381FF09C0E0E249 -:10037000F3E0858181FFFDCF60933A0370933B03E7 -:100380000895CF93C82F88E080932203C23021F4D0 -:1003900080E48093210307C010922103C0FD03C0B5 -:1003A000C1FF23C017C0E0E2F3E080818560808355 -:1003B00060E070E081E00E94AA01C1FF16C0E0E2A7 -:1003C000F3E080818960808360E070E082E00E94D9 -:1003D000AA010BC0E0E2F3E080818560808360E0E9 -:1003E00070E081E00E94AA01EACFCF910895E1E494 -:1003F000F6E02081297F2083E0E4F6E024E02187F5 -:1004000032E03287318B238721E0228B1092022049 -:10041000109203206093042070930520809306209F -:100420009093072008956091022070910320072E79 -:10043000000C880B990B0E94220A20910420309115 -:10044000052040910620509107200E9478090895C8 -:100450001F920F920FB60F9211248F939F9380914A -:10046000480682FD0AC080910220909103200A96DE -:10047000809302209093032009C0809102209091E4 -:1004800003200A9780930220909303209F918F91DD -:100490000F900FBE0F901F9018951F920F920FB6DE -:1004A0000F9211248F939F938091480681FF0AC079 -:1004B00080910220909103200A96809302209093CD -:1004C000032009C080910220909103200A97809315 -:1004D0000220909303209F918F910F900FBE0F9059 -:1004E0001F9018952F923F924F925F926F927F923A -:1004F0008F929F92AF92BF92CF92DF92EF92FF9234 -:100500000F931F93CF93DF93EC019A01AB0168A582 -:1005100079A58AA59BA50E9406096B017C01688FBD -:10052000798F8A8F9B8F288539854A855B850E94C4 -:10053000D70A2C8D3D8D4E8D5F8D0E940709162F99 -:10054000072FB82EA92E9CA08DA03EA02FA0292D4C -:10055000382D432D522D0E9473098823A4F098A0B2 -:1005600089A03AA02BA0292D382D432D522D612F83 -:10057000702F8B2D9A2D0E94D20A181624F0912EDE -:10058000802E3B2C2A2C892D982DA32DB22D8C8FBB -:100590009D8FAE8FBF8F288139814A815B81C701D2 -:1005A000B6010E94D70A2B013C012C813D814E816E -:1005B0005F81692D782D832D922D0E94D70A4B01E2 -:1005C0005C01CC8ADD8AEE8AFF8AC701B6010E94EF -:1005D000EA099B01772324F422273327261B370BB4 -:1005E000B901330F880B990B0E94220A2CA53DA557 -:1005F0004EA55FA50E947309882334F488A999A9A0 -:10060000019688AB99AB02C018AA19AAA50194015A -:10061000C301B2010E940709162F072FB82EA92E79 -:100620006A897B89072E000C880B990B0E94220A8D -:10063000D62EE72EF82EC92E262F372F482F592FCA -:10064000612F702F8B2D9A2D0E9473098823E4F05F -:1006500068897989072E000C880B990B0E94220A61 -:10066000D62EE72EF82EC92E262F372F482F592F9A -:10067000612F702F8B2D9A2D0E94D20A181624F00C -:10068000D12EE02EFB2CCA2C6D2D7E2D8F2D9C2D76 -:10069000DF91CF911F910F91FF90EF90DF90CF905E -:1006A000BF90AF909F908F907F906F905F904F9092 -:1006B0003F902F900895FC0140A751A762A773A710 -:1006C0000895FC0144A755A766A777A708952F9220 -:1006D0003F924F925F926F927F928F929F92AF92D2 -:1006E000BF92CF92DF92EF92FF920F931F93CF931F -:1006F000DF93CDB7DEB73C01180129018E899F89B0 -:10070000088D198DF30140835183628373832482A2 -:10071000358246825782C086D186E286F386A686D7 -:10072000B78684869586828B938B008B118BBC0158 -:10073000990F880B990B0E94220AA20191010E9435 -:100740007809F30164A375A386A397A3B801110FD9 -:10075000880B990B0E94220AA20191010E9478093C -:10076000F30160A371A382A393A3148A158A168A46 -:10077000178A108E118E128E138E148E158E168E71 -:10078000178E10A611A612A613A680E090E0A0EF87 -:10079000B1E484A795A7A6A7B7A710AA11AADF91CD -:1007A000CF911F910F91FF90EF90DF90CF90BF906E -:1007B000AF909F908F907F906F905F904F903F9001 -:1007C0002F900895CF92DF92EF92FF92FC018181EA -:1007D0009281A381B48120816C017D01022E04C02D -:1007E000F594E794D794C7940A94D2F78C199D098D -:1007F000AE09BF09AB0102C0559547952A95E2F7AE -:10080000052E000C660B770B840F951FA61FB71FD4 -:1008100081839283A383B483FF90EF90DF90CF9086 -:100820000895FC011182128213821482608308955C -:10083000FC01838184FF09C0A081B181D9967C939A -:100840000190F081E02D60AF089585FF09C0A0817F -:10085000B181DB967C930190F081E02D62AF089529 -:1008600086FF09C0A081B181DD967C930190F08163 -:10087000E02D64AF0895882344F4A081B181DF9610 -:100880007C930190F081E02D66AF0895CF92DF92C6 -:10089000EF92FF92CF93DF93EC016A017B0120E09E -:1008A00030E0A901C701B6010E9473098823ACF0AA -:1008B00020E030E048EC52E4C701B6010E94D20AC1 -:1008C00018167CF020E030E048EC52E4C701B60195 -:1008D0000E9478096B017C010CC0C12CD12C7601DF -:1008E00008C00F2EC12CD12CF0E8EF2EFFE3FF2E15 -:1008F000F02D609108207091092080E090E00E9426 -:10090000200AA70196010E94D70A0E94F109CE0190 -:100910000E941804DF91CF91FF90EF90DF90CF906D -:100920000895EF92FF920F931F93CF93DF93FC01F3 -:10093000EB01C801B701C083D183428323830483C1 -:100940001583E682F7824883236029830E94440B43 -:1009500060930820709309206EAB7FAB60E070E07D -:10096000CF010E94180480E090E0DF91CF911F91A9 -:100970000F91FF90EF900895CF93DF93EC01CB019F -:10098000688379834A835B832C833D830E94CE06F0 -:100990008A819B810E94D606DF91CF910895CF92E4 -:1009A000DF92EF92FF92CF93DF93EC016A017B011C -:1009B00020E030E0A901C701B6010E947309882335 -:1009C0006CF4F7FAF094F7F8F094888199810E941A -:1009D000CE068A819B810E94D60608C08A819B81AF -:1009E0000E94CE06888199810E94D606B701A60191 -:1009F0008C819D810E944604DF91CF91FF90EF9002 -:100A0000DF90CF900895E0E4F8E081E0808380EC0F -:100A100086AB8DE587AB82E0868308950E949101C5 -:100A20007894E0EAF0E0828187608283E0E8F6E093 -:100A300081818860818382E00E94C10160E070E072 -:100A400080E89FE30E94F701E0E4F6E081818160A5 -:100A5000818301E021E040E160E476E086E890E215 -:100A60000E94BF0620E048E060E476E082E490E285 -:100A70000E94BF060F2EF4E1EF2EF12CF02D00E8BE -:100A80001BEB20E141E060E078E08CE490E20E9422 -:100A900091042CE430E242E450E266E870E286E43D -:100AA00090E20E94BC0420E040E652E060E472E084 -:100AB0008AE090E20E9414011F9284E68F931F92B5 -:100AC0001F920F2EF8E88F2EF3E19F2EF02DA12C10 -:100AD000B12C0F2EFFE6CF2EF2E1DF2EF3E0EF2E4A -:100AE000FAE3FF2EF02D00E010E020E031E440E0DA -:100AF00050E060E070E484E590E20E94670340E02B -:100B000050E06AEF73E484E590E20E945B0340E00A -:100B100050E068E472E484E590E20E94610366E0DC -:100B20008AE890E20E94110486E08F9381E08F931F -:100B30008CE28F938EEF8F9384ED8F931F921F9291 -:100B40001F921F921F920F2EFCEA8F2EF5EC9F2E04 -:100B5000F7E2AF2EF9E3BF2EF02DC12CD12C760198 -:100B600000E010E020EA30E440E050E060EA71E4A8 -:100B70008EE090E20E94A608E0E2F6E081818C60BF -:100B8000818368EE73E08CE490E20E9418048CE0AC -:100B90008093810640E050E068E372E48EE090E2EA -:100BA0000E9481080E9403058DB79EB70E968DBFE7 -:100BB0009EBFFFCF1F920F920FB60F9211240BB65C -:100BC0000F928F929F92AF92BF92CF92DF92EF924D -:100BD000FF922F933F934F935F936F937F938F93E6 -:100BE0009F93AF93BF93EF93FF93809100209091D9 -:100BF00001200196809300209093012068EE73E01D -:100C00000E94580B892B19F484E0809383060E947C -:100C1000130220E030E040E853E40E9407090E94FC -:100C2000F10981E00E94AA018EE090E20E9487080B -:100C3000882321F188E08093830620E030E04AEFAA -:100C400053E460913320709134208091352090914D -:100C500036200E947309811109C040E050E060EF26 -:100C600071E48EE090E20E94810808C040E050E00C -:100C70006AEF73E48EE090E20E9481080E94130202 -:100C8000AB01BC018EE090E20E94DE064B015C01EC -:100C90000E94EA099B01772324F422273327261B8D -:100CA000370BB901330F880B990B0E94220AAB0155 -:100CB000BC0184E590E20E945B038AE090E20E941E -:100CC0002A01BC0180E090E00E94200A20E030E090 -:100CD00048EB50E40E94D70A0E94EA098AE890E2B1 -:100CE0000E94E203BC01990F880B990B0E94220A13 -:100CF000AB01BC0184E590E20E9472026B017C01B1 -:100D000020E030E048EF51E40E94D70A20E030E8CC -:100D100049E054E40E9407090E94F10982E00E9420 -:100D2000AA0120E030E0A901C501B4010E94D20A65 -:100D3000181624F0B701A601705802C0B701A60129 -:100D400086E490E20E94CF04FF91EF91BF91AF91B2 -:100D50009F918F917F916F915F914F913F912F91D3 -:100D6000FF90EF90DF90CF90BF90AF909F908F90CB -:100D70000F900BBE0F900FBE0F901F9018950F9302 -:100D8000FC016083718342832383002319F0FB01FC -:100D9000418302C0FB0142830F910895DC01ED9174 -:100DA000FC91119712968C9185830895DC01ED9149 -:100DB000FC91119712968C91868308954F925F92C1 -:100DC0006F927F928F929F92AF92BF92CF92DF925B -:100DD000EF92FF92CF93DF9300D000D0CDB7DEB774 -:100DE0008D839E839A01AB01FC0165A176A187A149 -:100DF00090A50E9406096B017C01ED81FE81658F43 -:100E0000768F878F90A3808980FF5EC081889288CB -:100E1000A388B488C701B6010E94EA099B01772321 -:100E200024F422273327261B370BA4014A195B0918 -:100E3000CA0199230CF4019695958795821793071B -:100E40000CF042C020E030E0A901C701B6010E94C9 -:100E5000D20A1816DCF4B401990C880B990B0E9485 -:100E6000220A9B01AC01C701B6010E9406096B0171 -:100E70007C01B501BB0C880B990B0E94220A9B01D7 -:100E8000AC01C701B6010E94070918C0B401990C52 -:100E9000880B990B0E94220AA70196010E9407095C -:100EA0006B017C01B501BB0C880B990B0E94220AD7 -:100EB0009B01AC01C701B6010E940609ED81FE81CC -:100EC000658F768F878F90A3ED81FE81858C968CC0 -:100ED000A78CB0A02081318142815381C501B4012A -:100EE0000E94D70A6B017C01ED81FE8165897689BC -:100EF000072E000C880B990B0E94220A9B01AC0163 -:100F0000C701B6010E94730988231CF5ED81FE819B -:100F10006789708D072E000C880B990B0E94220A9E -:100F20009B01AC01C701B6010E94D20A18168CF4CD -:100F3000A5019401ED81FE8161A172A183A194A11B -:100F40000E940709ED81FE8161A372A383A394A38C -:100F500006C0ED81FE8111A212A213A214A2ED819E -:100F6000FE81448455846684778421A132A143A103 -:100F700054A164817581868197810E94D70AA3015B -:100F800092010E94D70A69837A838B839C83ED81C7 -:100F9000FE81218D328D438D548DC501B4010E9497 -:100FA0000609A30192010E9478090E94EA098D8135 -:100FB0009E818F960E94E203BC01990F880B990BCA -:100FC0000E94220AED81FE8120853185428553856C -:100FD0000E94D70A0E94EA09072E000C880B990B81 -:100FE0000E94220A4B015C01ED81FE81658D768DA8 -:100FF000878D90A1618F728F838F948F0E94EA09F1 -:101000009B01772324F422273327261B370BB901B2 -:10101000330F880B990B0E94220AED81FE8121A5D6 -:1010200032A543A554A50E947309882344F4ED8199 -:10103000FE8185A596A5019685A796A704C0ED819A -:10104000FE8115A616A629813A814B815C81C701D4 -:10105000B6010E940709A50194010E940709B62E56 -:10106000A72E982E892EED81FE816789708D072E1F -:10107000000C880B990B0E94220AD62EE72EF82E20 -:10108000C92E262F372F482F592F6B2D7A2D892DBA -:10109000982D0E9473098823F4F0ED81FE81658903 -:1010A0007689072E000C880B990B0E94220AD62EF7 -:1010B000E72EF82EC92E262F372F482F592F6B2DAC -:1010C0007A2D892D982D0E94D20A181624F0DB2C37 -:1010D000EA2CF92CC82C6D2D7E2D8F2D9C2D26965B -:1010E000CDBFDEBFDF91CF91FF90EF90DF90CF902B -:1010F000BF90AF909F908F907F906F905F904F9038 -:101100000895FC0145A356A367A370A70895CF9344 -:10111000DF93EC016DA57EA5072E000C880B990BC3 -:101120000E94220A2C853D854E855F850E94D70A44 -:10113000C1E02AE939E949E15EE30E94D20A1816C2 -:101140000CF0C0E08C2FDF91CF9108958F929F9289 -:10115000AF92BF92CF92DF92EF92FF920F931F93C5 -:10116000CF93DF93CDB7DEB7FC0140835183628319 -:1011700073830483158326833783C086D186E286F2 -:10118000F38684869586A686B7868089988990FBA3 -:1011900080F9808B89899A89838B948B8B899C8930 -:1011A000818B928B8D899E89878B908F8F89988D6B -:1011B000858B968B118E128E138E148E158E168E35 -:1011C000178E10A211A212A213A214A215A216A287 -:1011D00017A210A680E090E0A8E4B2E481A792A74D -:1011E000A3A7B4A715A616A6698DCF018F960E9456 -:1011F0001104DF91CF911F910F91FF90EF90DF903D -:10120000CF90BF90AF909F908F9008955058BB277C -:10121000AA270E941E090C94980A0E948A0A38F094 -:101220000E94910A20F039F49F3F19F426F40C949F -:10123000870A0EF4E095E7FB0C94810AE92F0E94DF -:10124000A90A58F3BA17620773078407950720F0B5 -:1012500079F4A6F50C94CB0A0EF4E0950B2EBA2F78 -:10126000A02D0B01B90190010C01CA01A0011124AC -:10127000FF27591B99F0593F50F4503E68F11A1658 -:10128000F040A22F232F342F4427585FF3CF4695E9 -:1012900037952795A795F0405395C9F77EF41F160B -:1012A000BA0B620B730B840BBAF09150A1F0FF0FD5 -:1012B000BB1F661F771F881FC2F70EC0BA0F621FC1 -:1012C000731F841F48F4879577956795B795F795B1 -:1012D0009E3F08F0B0CF9395880F08F09927EE0F46 -:1012E0009795879508950E945D0A08F481E0089516 -:1012F0000E948C090C94980A0E94910A58F00E944E -:101300008A0A40F029F45F3F29F00C94810A5111B8 -:101310000C94CC0A0C94870A0E94A90A68F39923BA -:10132000B1F3552391F3951B550BBB27AA276217E1 -:101330007307840738F09F5F5F4F220F331F441FEE -:10134000AA1FA9F335D00E2E3AF0E0E832D0915022 -:101350005040E695001CCAF72BD0FE2F29D0660F0F -:10136000771F881FBB1F261737074807AB07B0E852 -:1013700009F0BB0B802DBF01FF2793585F4F3AF058 -:101380009E3F510578F00C94810A0C94CC0A5F3F83 -:10139000E4F3983ED4F3869577956795B795F795DE -:1013A0009F5FC9F7880F911D9695879597F90895C6 -:1013B000E1E0660F771F881FBB1F62177307840762 -:1013C000BA0720F0621B730B840BBA0BEE1F88F771 -:1013D000E09508950E94F1096894B1110C94CC0A2B -:1013E00008950E94B10A88F09F5798F0B92F992765 -:1013F000B751B0F0E1F0660F771F881F991F1AF000 -:10140000BA95C9F714C0B13091F00E94CB0AB1E08F -:1014100008950C94CB0A672F782F8827B85F39F08E -:10142000B93FCCF3869577956795B395D9F73EF498 -:1014300090958095709561957F4F8F4F9F4F089540 -:10144000E89409C097FB3EF490958095709561955E -:101450007F4F8F4F9F4F9923A9F0F92F96E9BB2714 -:101460009395F695879577956795B795F111F8CF90 -:10147000FAF4BB0F11F460FF1BC06F5F7F4F8F4FFB -:101480009F4F16C0882311F096E911C0772321F0F1 -:101490009EE8872F762F05C0662371F096E8862F89 -:1014A00070E060E02AF09A95660F771F881FDAF7E0 -:1014B000880F9695879597F90895990F0008550F0D -:1014C000AA0BE0E8FEEF16161706E807F907C0F0CA -:1014D00012161306E407F50798F0621B730B840BD2 -:1014E000950B39F40A2661F0232B242B252B21F4AC -:1014F00008950A2609F4A140A6958FEF811D811D4C -:10150000089597F99F6780E870E060E008959FEF85 -:1015100080EC089500240A9416161706180609068A -:10152000089500240A941216130614060506089559 -:10153000092E0394000C11F4882352F0BB0F40F4E1 -:10154000BF2B11F460FF04C06F5F7F4F8F4F9F4F21 -:10155000089557FD9058440F551F59F05F3F71F0A3 -:101560004795880F97FB991F61F09F3F79F087950A -:101570000895121613061406551FF2CF4695F1DF93 -:1015800008C0161617061806991FF1CF8695710523 -:10159000610508940895E894BB2766277727CB0157 -:1015A00097F908950E945D0A08F48FEF08950E944C -:1015B000EA0A0C94980A0E948A0A38F00E94910A5A -:1015C00020F0952311F00C94810A0C94870A1124C1 -:1015D0000C94CC0A0E94A90A70F3959FC1F3950F51 -:1015E00050E0551F629FF001729FBB27F00DB11DA7 -:1015F000639FAA27F00DB11DAA1F649F6627B00D37 -:10160000A11D661F829F2227B00DA11D621F739F1F -:10161000B00DA11D621F839FA00D611D221F749F2D -:101620003327A00D611D231F849F600D211D822F74 -:10163000762F6A2F11249F5750409AF0F1F088239B -:101640004AF0EE0FFF1FBB1F661F771F881F9150C8 -:101650005040A9F79E3F510580F00C94810A0C94EC -:10166000CC0A5F3FE4F3983ED4F38695779567956F -:10167000B795F795E7959F5FC1F7FE2B880F911DF2 -:101680009695879597F90895AA1BBB1B51E107C052 -:10169000AA1FBB1FA617B70710F0A61BB70B881F02 -:1016A000991F5A95A9F780959095BC01CD01089591 -:1016B00097FB072E16F4009407D077FD09D00E94FF -:1016C000440B07FC05D03EF4909581959F4F0895FB -:0C16D000709561957F4F0895F894FFCF4E +:10021000B0E201C01D92AB38B207E1F70E9432058F +:100220000C94840B0C940000FB01DC016D937C9317 +:10023000119712964D935C93139781E0808388E029 +:10024000818380E1828387E084838FE1FA01808368 +:10025000276021830895CF93DF93FC01C281D3816E +:100260006D818C8170E0762F6627680F711D625E4C +:100270007740072E000C880B990B0E943A0A2DEC50 +:100280003CEC4CEA5FE30E94EF0A20E030E040E8FB +:100290005FE30E948B098823B4F16D818C8170E04B +:1002A000762F6627680F711D625E7740072E000C5F +:1002B000880B990B0E943A0A2DEC3CEC4CEA5FE368 +:1002C0000E94EF0A20E030EF4FE755E40E94EA0A6F +:1002D0001816E4F06D818C8170E0762F6627680F28 +:1002E000711D625E7740072E000C880B990B0E94EF +:1002F0003A0A2DEC3CEC4CEA5FE30E94EF0A0E94C4 +:10030000090ACB0105C081E090E002C08FEF9FE0B9 +:10031000DF91CF910895E0E5F0E083EC828388E0FF +:100320008083818183FFFDCFE0E5F0E083EC85836E +:10033000808180618083818184FFFDCF88ED84BFCF +:1003400084E080934000089580FF09C0E0E2F3E07C +:10035000958190FFFDCF609338037093390381FF3F +:1003600009C0E0E2F3E0858181FFFDCF60933A03AD +:1003700070933B030895CF93C82F88E080932203A6 +:10038000C23021F480E48093210307C0109221033E +:10039000C0FD03C0C1FF23C017C0E0E2F3E08081CD +:1003A0008560808360E070E081E00E94A401C1FF6D +:1003B00016C0E0E2F3E080818960808360E070E055 +:1003C00082E00E94A4010BC0E0E2F3E0808185603E +:1003D000808360E070E081E00E94A401EACFCF91C9 +:1003E0000895E1E4F6E02081297F2083E0E4F6E04F +:1003F00024E0218732E03287318B238721E0228B72 +:100400001092022010920320609304207093052024 +:1004100080930620909307200895609102207091A8 +:100420000320072E000C880B990B0E943A0A20919A +:1004300004203091052040910620509107200E9411 +:10044000900908951F920F920FB60F9211248F9367 +:100450009F938091480682FD0AC08091022090916E +:1004600003200A96809302209093032009C0809174 +:100470000220909103200A978093022090930320FA +:100480009F918F910F900FBE0F901F9018951F9204 +:100490000F920FB60F9211248F939F93809148066D +:1004A00081FF0AC080910220909103200A968093D8 +:1004B00002209093032009C0809102209091032094 +:1004C0000A9780930220909303209F918F910F9021 +:1004D0000FBE0F901F9018952F923F924F925F92F0 +:1004E0006F927F928F929F92AF92BF92CF92DF9244 +:1004F000EF92FF920F931F93CF93DF93EC019A013A +:10050000AB0168A579A58AA59BA50E941E096B0170 +:100510007C01688F798F8A8F9B8F288539854A85E2 +:100520005B850E94EF0A2C8D3D8D4E8D5F8D0E9464 +:100530001F09162F072FB82EA92E9CA08DA03EA014 +:100540002FA0292D382D432D522D0E948B09882351 +:10055000A4F098A089A03AA02BA0292D382D432DD6 +:10056000522D612F702F8B2D9A2D0E94EA0A18169A +:1005700024F0912E802E3B2C2A2C892D982DA32DF2 +:10058000B22D8C8F9D8FAE8FBF8F288139814A818C +:100590005B81C701B6010E94EF0A2B013C012C814F +:1005A0003D814E815F81692D782D832D922D0E9492 +:1005B000EF0A4B015C01CC8ADD8AEE8AFF8AC70113 +:1005C000B6010E94020A9B01772324F422273327D5 +:1005D000261B370BB901330F880B990B0E943A0A7F +:1005E0002CA53DA54EA55FA50E948B09882334F458 +:1005F00088A999A9019688AB99AB02C018AA19AA33 +:10060000A5019401C301B2010E941F09162F072FF3 +:10061000B82EA92E6A897B89072E000C880B990BAE +:100620000E943A0AD62EE72EF82EC92E262F372FF3 +:10063000482F592F612F702F8B2D9A2D0E948B09D7 +:100640008823E4F068897989072E000C880B990BC0 +:100650000E943A0AD62EE72EF82EC92E262F372FC3 +:10066000482F592F612F702F8B2D9A2D0E94EA0A47 +:10067000181624F0D12EE02EFB2CCA2C6D2D7E2DC9 +:100680008F2D9C2DDF91CF911F910F91FF90EF90B7 +:10069000DF90CF90BF90AF909F908F907F906F90A2 +:1006A0005F904F903F902F900895FC0140A751A775 +:1006B00062A773A70895FC0144A755A766A777A76B +:1006C0000895CF93DF93EC0168A979A9072E000C58 +:1006D000880B990B0E943A0A288539854A855B85E3 +:1006E0000E94EF0AC1E02DEC3CEC4CEC5DE30E9473 +:1006F000EA0A18160CF0C0E08C2FDF91CF91089514 +:100700002F923F924F925F926F927F928F929F9221 +:10071000AF92BF92CF92DF92EF92FF920F931F930F +:10072000CF93DF93CDB7DEB73C01180129018E8945 +:100730009F89088D198DF3014083518362837383F0 +:100740002482358246825782C086D186E286F3862D +:10075000A686B78684869586828B938B008B118BB9 +:10076000BC01990F880B990B0E943A0AA2019101D2 +:100770000E949009F30164A375A386A397A3B8010F +:10078000110F880B990B0E943A0AA20191010E9455 +:100790009009F30160A371A382A393A3148A158A1D +:1007A000168A178A108E118E128E138E148E158E45 +:1007B000168E178E10A611A612A613A680E090E042 +:1007C000A0EAB1E484A795A7A6A7B7A710AA11AA83 +:1007D000DF91CF911F910F91FF90EF90DF90CF901D +:1007E000BF90AF909F908F907F906F905F904F9051 +:1007F0003F902F900895CF92DF92EF92FF920F9348 +:100800001F93CF93DF938C01EB01FC016181728117 +:10081000072E000C880B990B0E943A0A26EF38E24B +:100820004CE75FE30E94EF0A6B017C01BE01DD0F24 +:10083000880B990B0E943A0A2FE832EC45E75CE3FB +:100840000E94EF0A9B01AC01C701B6010E941F097B +:100850000E94020AF80161837283CB01DF91CF917C +:100860001F910F91FF90EF90DF90CF900895FC01C2 +:100870001182128260830895FC01838184FF09C084 +:10088000A081B181D9967C930190F081E02D60AF79 +:10089000089585FF09C0A081B181DB967C9301900A +:1008A000F081E02D62AF089586FF09C0A081B1817B +:1008B000DD967C930190F081E02D64AF089588234C +:1008C00044F4A081B181DF967C930190F081E02D0A +:1008D00066AF0895CF92DF92EF92FF92CF93DF93AE +:1008E000EC016A017B0120E030E0A901C701B601FB +:1008F0000E948B098823ACF020E030E048EC52E401 +:10090000C701B6010E94EA0A18167CF020E030E028 +:1009100048EC52E4C701B6010E9490096B017C01CA +:100920000CC0C12CD12C760108C00F2EC12CD12CAB +:10093000F0E8EF2EFFE3FF2EF02D6091082070917C +:10094000092080E090E00E94380AA70196010E94E9 +:10095000EF0A0E94090ACE010E943C04DF91CF9168 +:10096000FF90EF90DF90CF900895EF92FF920F935A +:100970001F93CF93DF93FC01EB01C801B701C08344 +:10098000D1834283238304831583E682F7824883DD +:10099000236029830E945C0B6093082070930920D8 +:1009A0006EAB7FAB60E070E0CF010E943C0480E062 +:1009B00090E0DF91CF911F910F91FF90EF900895FC +:1009C000CF93DF93EC01CB01688379834A835B8308 +:1009D0002C833D830E94E6068A819B810E94EE065D +:1009E000DF91CF910895CF92DF92EF92FF92CF9354 +:1009F000DF93EC016A017B0120E030E0A901C7012F +:100A0000B6010E948B0988236CF4F7FAF094F7F88A +:100A1000F094888199810E94E6068A819B810E94D8 +:100A2000EE0608C08A819B810E94E6068881998132 +:100A30000E94EE06B701A6018C819D810E946A0486 +:100A4000DF91CF91FF90EF90DF90CF900895E0E499 +:100A5000F8E081E0808380EC86AB8DE587AB82E0B7 +:100A6000868308950E948B017894E0EAF0E0828109 +:100A700087608283E0E8F6E081818C60818382E098 +:100A80000E94BB0160E070E080E89FE30E94F101FA +:100A9000E0E4F6E0818181608183E1E4F6E0808139 +:100AA00080628083E5E4F6E080818062808301E0FB +:100AB00021E040E160E476E084E890E20E94D7061D +:100AC00020E048E060E476E080E490E20E94D7060F +:100AD0000F2EFAE0EF2EF12CF02D00E81BEB20E1B9 +:100AE00041E060E078E08AE490E20E94B5042AE404 +:100AF00030E240E450E264E870E284E490E20E9474 +:100B0000E004E2E2F6E080818160808320E040E65C +:100B100052E060E472E08AE090E20E9414011F92C9 +:100B200084E68F931F921F920F2EF8E88F2EF3E129 +:100B30009F2EF02DA12CB12C0F2EFFE6CF2EF2E12F +:100B4000DF2EF3E0EF2EFAE3FF2EF02D00E010E0B1 +:100B500020E031E440E050E060E070E482E590E2C3 +:100B60000E94800340E050E06AEF73E482E590E287 +:100B70000E94550340E050E068E472E482E590E2B0 +:100B80000E945B0366E088E890E20E94370486E0FA +:100B90008F9381E08F938CE28F938EEF8F9384ED10 +:100BA0008F931F921F921F921F921F920F2EFCEA8B +:100BB0008F2EF5EC9F2EF7E2AF2EF9E3BF2EF02D2E +:100BC000C12CD12C76019701860140E050E060EA0B +:100BD00070E48EE090E20E94BE08E0E2F6E08181DF +:100BE0008C60818368EE73E08AE490E20E943C04AA +:100BF0008CE08093810640E050E068E372E48EE090 +:100C000090E20E9499080E9427058DB79EB70E9624 +:100C10008DBF9EBFFFCF1F920F920FB60F92112470 +:100C20000BB60F92CF92DF92EF92FF922F933F93EA +:100C30004F935F936F937F938F939F93AF93BF93E4 +:100C4000CF93DF93EF93FF93809100209091012049 +:100C50000196809300209093012068EE73E00E943B +:100C6000700B892B19F484E0809383068EE090E268 +:100C70000E949F08882309F120E030E04AEF53E406 +:100C800060913320709134208091352090913620EE +:100C90000E948B09811109C040E050E060EF71E4CF +:100CA0008EE090E20E94990808C040E050E06AEFB0 +:100CB00073E48EE090E20E9499080E940D02AB015D +:100CC000BC018EE090E20E94F60640E050E068EC45 +:100CD00072E482E590E20E94550382E590E20E9470 +:100CE0006103882321F088E08093860603C088E0B2 +:100CF000809385068AE090E20E942B01BC0180E08F +:100D000090E00E94380A20E030E048EB50E40E9476 +:100D1000EF0A0E94020A6B017C0188E890E20E94BF +:100D2000FB03EC01BC0180E090E00E94380AAB01BB +:100D3000BC0182E590E20E946C02B601660F771F4B +:100D4000C60ED71ECC0CDD1CB60164597D4F82E067 +:100D50000E94A401BE01660F771F6C0F7D1F660FF6 +:100D6000771F64597D4F81E00E94A40140E050E06C +:100D700060E272E484E490E20E94F304FF91EF9158 +:100D8000DF91CF91BF91AF919F918F917F916F91A3 +:100D90005F914F913F912F91FF90EF90DF90CF9017 +:100DA0000F900BBE0F900FBE0F901F9018950F93D2 +:100DB000FC016083718342832383002319F0FB01CC +:100DC000418302C0FB0142830F910895DC01ED9144 +:100DD000FC91119712968C9185830895DC01ED9119 +:100DE000FC91119712968C91868308954F925F9291 +:100DF0006F927F928F929F92AF92BF92CF92DF922B +:100E0000EF92FF92CF93DF9300D000D0CDB7DEB743 +:100E10008D839E839A01AB01FC0165A176A187A118 +:100E200090A50E941E096B017C01ED81FE81658FFA +:100E3000768F878F90A3808980FF5EC0818892889B +:100E4000A388B488C701B6010E94020A9B017723D8 +:100E500024F422273327261B370BA4014A195B09E8 +:100E6000CA0199230CF401969595879582179307EB +:100E70000CF042C020E030E0A901C701B6010E9499 +:100E8000EA0A1816DCF4B401990C880B990B0E943D +:100E90003A0A9B01AC01C701B6010E941E096B0111 +:100EA0007C01B501BB0C880B990B0E943A0A9B018F +:100EB000AC01C701B6010E941F0918C0B401990C0A +:100EC000880B990B0E943A0AA70196010E941F09FC +:100ED0006B017C01B501BB0C880B990B0E943A0A8F +:100EE0009B01AC01C701B6010E941E09ED81FE8184 +:100EF000658F768F878F90A3ED81FE81858C968C90 +:100F0000A78CB0A02081318142815381C501B401F9 +:100F10000E94EF0A6B017C01ED81FE816589768973 +:100F2000072E000C880B990B0E943A0A9B01AC011A +:100F3000C701B6010E948B0988231CF5ED81FE8153 +:100F40006789708D072E000C880B990B0E943A0A56 +:100F50009B01AC01C701B6010E94EA0A18168CF485 +:100F6000A5019401ED81FE8161A172A183A194A1EB +:100F70000E941F09ED81FE8161A372A383A394A344 +:100F800006C0ED81FE8111A212A213A214A2ED816E +:100F9000FE81448455846684778421A132A143A1D3 +:100FA00054A164817581868197810E94EF0AA30113 +:100FB00092010E94EF0A69837A838B839C83ED817F +:100FC000FE81218D328D438D548DC501B4010E9467 +:100FD0001E09A30192010E9490090E94020A8D81BC +:100FE0009E818F960E94FB03BC01990F880B990B81 +:100FF0000E943A0AED81FE81208531854285538524 +:101000000E94EF0A0E94020A072E000C880B990B1F +:101010000E943A0A4B015C01ED81FE81658D768D5F +:10102000878D90A1618F728F838F948F0E94020AA7 +:101030009B01772324F422273327261B370BB90182 +:10104000330F880B990B0E943A0AED81FE8121A58E +:1010500032A543A554A50E948B09882344F4ED8151 +:10106000FE8185A596A5019685A796A704C0ED816A +:10107000FE8115A616A629813A814B815C81C701A4 +:10108000B6010E941F09A50194010E941F09B62EF6 +:10109000A72E982E892EED81FE816789708D072EEF +:1010A000000C880B990B0E943A0AD62EE72EF82ED8 +:1010B000C92E262F372F482F592F6B2D7A2D892D8A +:1010C000982D0E948B098823F4F0ED81FE816589BB +:1010D0007689072E000C880B990B0E943A0AD62EAF +:1010E000E72EF82EC92E262F372F482F592F6B2D7C +:1010F0007A2D892D982D0E94EA0A181624F0DB2CEF +:10110000EA2CF92CC82C6D2D7E2D8F2D9C2D26962A +:10111000CDBFDEBFDF91CF91FF90EF90DF90CF90FA +:10112000BF90AF909F908F907F906F905F904F9007 +:101130000895FC0145A356A367A370A70895CF9314 +:10114000DF93EC016DA57EA5072E000C880B990B93 +:101150000E943A0A2C853D854E855F850E94EF0AE4 +:10116000C1E02AE939E949E15EE30E94EA0A18167A +:101170000CF0C0E08C2FDF91CF9108958F929F9259 +:10118000AF92BF92CF92DF92EF92FF920F931F9395 +:10119000CF93DF93CDB7DEB7FC01408351836283E9 +:1011A00073830483158326833783C086D186E286C2 +:1011B000F38684869586A686B7868089988990FB73 +:1011C00080F9808B89899A89838B948B8B899C8900 +:1011D000818B928B8D899E89878B908F8F89988D3B +:1011E000858B968B118E128E138E148E158E168E05 +:1011F000178E10A211A212A213A214A215A216A257 +:1012000017A210A680E090E0A8E4B2E481A792A71C +:10121000A3A7B4A715A616A6698DCF018F960E9425 +:101220003704DF91CF911F910F91FF90EF90DF90E6 +:10123000CF90BF90AF909F908F9008955058BB274C +:10124000AA270E9436090C94B00A0E94A20A38F01C +:101250000E94A90A20F039F49F3F19F426F40C9457 +:101260009F0A0EF4E095E7FB0C94990AE92F0E947F +:10127000C10A58F3BA17620773078407950720F06D +:1012800079F4A6F50C94E30A0EF4E0950B2EBA2F30 +:10129000A02D0B01B90190010C01CA01A00111247C +:1012A000FF27591B99F0593F50F4503E68F11A1628 +:1012B000F040A22F232F342F4427585FF3CF4695B9 +:1012C00037952795A795F0405395C9F77EF41F16DB +:1012D000BA0B620B730B840BBAF09150A1F0FF0FA5 +:1012E000BB1F661F771F881FC2F70EC0BA0F621F91 +:1012F000731F841F48F4879577956795B795F79581 +:101300009E3F08F0B0CF9395880F08F09927EE0F15 +:101310009795879508950E94750A08F481E00895CD +:101320000E94A4090C94B00A0E94A90A58F00E94D5 +:10133000A20A40F029F45F3F29F00C94990A511158 +:101340000C94E40A0C949F0A0E94C10A68F3992342 +:10135000B1F3552391F3951B550BBB27AA276217B1 +:101360007307840738F09F5F5F4F220F331F441FBE +:10137000AA1FA9F335D00E2E3AF0E0E832D09150F2 +:101380005040E695001CCAF72BD0FE2F29D0660FDF +:10139000771F881FBB1F261737074807AB07B0E822 +:1013A00009F0BB0B802DBF01FF2793585F4F3AF028 +:1013B0009E3F510578F00C94990A0C94E40A5F3F23 +:1013C000E4F3983ED4F3869577956795B795F795AE +:1013D0009F5FC9F7880F911D9695879597F9089596 +:1013E000E1E0660F771F881FBB1F62177307840732 +:1013F000BA0720F0621B730B840BBA0BEE1F88F741 +:10140000E09508950E94090A6894B1110C94E40AC9 +:1014100008950E94C90A88F09F5798F0B92F99271C +:10142000B751B0F0E1F0660F771F881F991F1AF0CF +:10143000BA95C9F714C0B13091F00E94E30AB1E047 +:1014400008950C94E30A672F782F8827B85F39F046 +:10145000B93FCCF3869577956795B395D9F73EF468 +:1014600090958095709561957F4F8F4F9F4F089510 +:10147000E89409C097FB3EF490958095709561952E +:101480007F4F8F4F9F4F9923A9F0F92F96E9BB27E4 +:101490009395F695879577956795B795F111F8CF60 +:1014A000FAF4BB0F11F460FF1BC06F5F7F4F8F4FCB +:1014B0009F4F16C0882311F096E911C0772321F0C1 +:1014C0009EE8872F762F05C0662371F096E8862F59 +:1014D00070E060E02AF09A95660F771F881FDAF7B0 +:1014E000880F9695879597F90895990F0008550FDD +:1014F000AA0BE0E8FEEF16161706E807F907C0F09A +:1015000012161306E407F50798F0621B730B840BA1 +:10151000950B39F40A2661F0232B242B252B21F47B +:1015200008950A2609F4A140A6958FEF811D811D1B +:10153000089597F99F6780E870E060E008959FEF55 +:1015400080EC089500240A9416161706180609065A +:10155000089500240A941216130614060506089529 +:10156000092E0394000C11F4882352F0BB0F40F4B1 +:10157000BF2B11F460FF04C06F5F7F4F8F4F9F4FF1 +:10158000089557FD9058440F551F59F05F3F71F073 +:101590004795880F97FB991F61F09F3F79F08795DA +:1015A0000895121613061406551FF2CF4695F1DF63 +:1015B00008C0161617061806991FF1CF86957105F3 +:1015C000610508940895E894BB2766277727CB0127 +:1015D00097F908950E94750A08F48FEF08950E9404 +:1015E000020B0C94B00A0E94A20A38F00E94A90AC9 +:1015F00020F0952311F00C94990A0C949F0A112461 +:101600000C94E40A0E94C10A70F3959FC1F3950FF0 +:1016100050E0551F629FF001729FBB27F00DB11D76 +:10162000639FAA27F00DB11DAA1F649F6627B00D06 +:10163000A11D661F829F2227B00DA11D621F739FEF +:10164000B00DA11D621F839FA00D611D221F749FFD +:101650003327A00D611D231F849F600D211D822F44 +:10166000762F6A2F11249F5750409AF0F1F088236B +:101670004AF0EE0FFF1FBB1F661F771F881F915098 +:101680005040A9F79E3F510580F00C94990A0C94A4 +:10169000E40A5F3FE4F3983ED4F386957795679527 +:1016A000B795F795E7959F5FC1F7FE2B880F911DC2 +:1016B0009695879597F90895AA1BBB1B51E107C022 +:1016C000AA1FBB1FA617B70710F0A61BB70B881FD2 +:1016D000991F5A95A9F780959095BC01CD01089561 +:1016E00097FB072E16F4009407D077FD09D00E94CF +:1016F0005C0B07FC05D03EF4909581959F4F0895B3 +:0C170000709561957F4F0895F894FFCF1D :00000001FF diff --git a/PIDMotorController/PIDMotorController/Debug/PIDMotorController.lss b/PIDMotorController/PIDMotorController/Debug/PIDMotorController.lss index 1376024a6cfd17332ef07dbee3bc32d808a5733c..569b57da114c81ce29fca0cb8090b41934688511 100644 --- a/PIDMotorController/PIDMotorController/Debug/PIDMotorController.lss +++ b/PIDMotorController/PIDMotorController/Debug/PIDMotorController.lss @@ -3,31 +3,31 @@ PIDMotorController.elf: file format elf32-avr Sections: Idx Name Size VMA LMA File off Algn - 0 .text 000016dc 00000000 00000000 00000074 2**1 + 0 .text 0000170c 00000000 00000000 00000074 2**1 CONTENTS, ALLOC, LOAD, READONLY, CODE - 1 .data 00000000 00802000 00802000 00001750 2**0 + 1 .data 00000000 00802000 00802000 00001780 2**0 CONTENTS, ALLOC, LOAD, DATA - 2 .bss 0000008f 00802000 00802000 00001750 2**0 + 2 .bss 0000008b 00802000 00802000 00001780 2**0 ALLOC - 3 .comment 00000030 00000000 00000000 00001750 2**0 + 3 .comment 00000030 00000000 00000000 00001780 2**0 CONTENTS, READONLY - 4 .note.gnu.avr.deviceinfo 00000040 00000000 00000000 00001780 2**2 + 4 .note.gnu.avr.deviceinfo 00000040 00000000 00000000 000017b0 2**2 CONTENTS, READONLY - 5 .debug_aranges 00000248 00000000 00000000 000017c0 2**0 + 5 .debug_aranges 00000248 00000000 00000000 000017f0 2**0 CONTENTS, READONLY, DEBUGGING - 6 .debug_info 00008229 00000000 00000000 00001a08 2**0 + 6 .debug_info 00008273 00000000 00000000 00001a38 2**0 CONTENTS, READONLY, DEBUGGING - 7 .debug_abbrev 0000403f 00000000 00000000 00009c31 2**0 + 7 .debug_abbrev 0000405b 00000000 00000000 00009cab 2**0 CONTENTS, READONLY, DEBUGGING - 8 .debug_line 000016e5 00000000 00000000 0000dc70 2**0 + 8 .debug_line 000016cb 00000000 00000000 0000dd06 2**0 CONTENTS, READONLY, DEBUGGING - 9 .debug_frame 00000620 00000000 00000000 0000f358 2**2 + 9 .debug_frame 00000628 00000000 00000000 0000f3d4 2**2 CONTENTS, READONLY, DEBUGGING - 10 .debug_str 000039b1 00000000 00000000 0000f978 2**0 + 10 .debug_str 000039b4 00000000 00000000 0000f9fc 2**0 CONTENTS, READONLY, DEBUGGING - 11 .debug_loc 00001369 00000000 00000000 00013329 2**0 + 11 .debug_loc 000013c2 00000000 00000000 000133b0 2**0 CONTENTS, READONLY, DEBUGGING - 12 .debug_ranges 00000198 00000000 00000000 00014692 2**0 + 12 .debug_ranges 00000198 00000000 00000000 00014772 2**0 CONTENTS, READONLY, DEBUGGING Disassembly of section .text: @@ -35,8 +35,8 @@ Disassembly of section .text: 00000000 <__vectors>: 0: 0c 94 fe 00 jmp 0x1fc ; 0x1fc <__ctors_end> 4: 0c 94 12 01 jmp 0x224 ; 0x224 <__bad_interrupt> - 8: 0c 94 28 02 jmp 0x450 ; 0x450 <__vector_2> - c: 0c 94 4d 02 jmp 0x49a ; 0x49a <__vector_3> + 8: 0c 94 22 02 jmp 0x444 ; 0x444 <__vector_2> + c: 0c 94 47 02 jmp 0x48e ; 0x48e <__vector_3> 10: 0c 94 12 01 jmp 0x224 ; 0x224 <__bad_interrupt> 14: 0c 94 12 01 jmp 0x224 ; 0x224 <__bad_interrupt> 18: 0c 94 12 01 jmp 0x224 ; 0x224 <__bad_interrupt> @@ -53,7 +53,7 @@ Disassembly of section .text: 44: 0c 94 12 01 jmp 0x224 ; 0x224 <__bad_interrupt> 48: 0c 94 12 01 jmp 0x224 ; 0x224 <__bad_interrupt> 4c: 0c 94 12 01 jmp 0x224 ; 0x224 <__bad_interrupt> - 50: 0c 94 da 05 jmp 0xbb4 ; 0xbb4 <__vector_20> + 50: 0c 94 0b 06 jmp 0xc16 ; 0xc16 <__vector_20> 54: 0c 94 12 01 jmp 0x224 ; 0x224 <__bad_interrupt> 58: 0c 94 12 01 jmp 0x224 ; 0x224 <__bad_interrupt> 5c: 0c 94 12 01 jmp 0x224 ; 0x224 <__bad_interrupt> @@ -181,11 +181,11 @@ Disassembly of section .text: 214: 1d 92 st X+, r1 00000216 <.do_clear_bss_start>: - 216: af 38 cpi r26, 0x8F ; 143 + 216: ab 38 cpi r26, 0x8B ; 139 218: b2 07 cpc r27, r18 21a: e1 f7 brne .-8 ; 0x214 <.do_clear_bss_loop> - 21c: 0e 94 0e 05 call 0xa1c ; 0xa1c <main> - 220: 0c 94 6c 0b jmp 0x16d8 ; 0x16d8 <_exit> + 21c: 0e 94 32 05 call 0xa64 ; 0xa64 <main> + 220: 0c 94 84 0b jmp 0x1708 ; 0x1708 <_exit> 00000224 <__bad_interrupt>: 224: 0c 94 00 00 jmp 0 ; 0x0 <__vectors> @@ -213,2945 +213,3024 @@ Disassembly of section .text: adc->CTRLA= 1<<0;//enable ADC 23a: 81 e0 ldi r24, 0x01 ; 1 23c: 80 83 st Z, r24 - adc->CTRLB= ADC_RESOLUTION_12BIT_gc; - 23e: 11 82 std Z+1, r1 ; 0x01 + adc->CTRLB= ADC_RESOLUTION_12BIT_gc | ADC_FREERUN_bm; + 23e: 88 e0 ldi r24, 0x08 ; 8 + 240: 81 83 std Z+1, r24 ; 0x01 adc->REFCTRL= ADC_REFSEL_INTVCC_gc; - 240: 80 e1 ldi r24, 0x10 ; 16 - 242: 82 83 std Z+2, r24 ; 0x02 - adc->PRESCALER= ADC_PRESCALER_DIV128_gc; - 244: 85 e0 ldi r24, 0x05 ; 5 - 246: 84 83 std Z+4, r24 ; 0x04 + 242: 80 e1 ldi r24, 0x10 ; 16 + 244: 82 83 std Z+2, r24 ; 0x02 + adc->PRESCALER= ADC_PRESCALER_DIV512_gc; + 246: 87 e0 ldi r24, 0x07 ; 7 + 248: 84 83 std Z+4, r24 ; 0x04 //setup ADCChannel ch->CTRL=ADC_CH_INPUTMODE_DIFFWGAIN_gc | ADC_CH_GAIN_DIV2_gc; - 248: 8f e1 ldi r24, 0x1F ; 31 - 24a: fa 01 movw r30, r20 - 24c: 80 83 st Z, r24 + 24a: 8f e1 ldi r24, 0x1F ; 31 + 24c: fa 01 movw r30, r20 + 24e: 80 83 st Z, r24 ch->MUXCTRL = ADC_CH_MUXNEG_GND_MODE4_gc | posPin; - 24e: 27 60 ori r18, 0x07 ; 7 - 250: 21 83 std Z+1, r18 ; 0x01 - 252: 08 95 ret + 250: 27 60 ori r18, 0x07 ; 7 + 252: 21 83 std Z+1, r18 ; 0x01 + 254: 08 95 ret -00000254 <r_adc_scan>: +00000256 <r_adc_scan>: + //ch->CTRL = ADC } uint16_t r_adc_scan(r_adc_t *r_adc){ - 254: cf 93 push r28 - 256: df 93 push r29 - 258: fc 01 movw r30, r24 - r_adc->ch->CTRL |= 1<<7; //start scan - 25a: a2 81 ldd r26, Z+2 ; 0x02 - 25c: b3 81 ldd r27, Z+3 ; 0x03 - 25e: 9c 91 ld r25, X - 260: 90 68 ori r25, 0x80 ; 128 - 262: 9c 93 st X, r25 - while(r_adc->ch->CTRL & (1<<7));//wait for scan to end - 264: c2 81 ldd r28, Z+2 ; 0x02 - 266: d3 81 ldd r29, Z+3 ; 0x03 - 268: 88 81 ld r24, Y - 26a: 88 23 and r24, r24 - 26c: ec f3 brlt .-6 ; 0x268 <r_adc_scan+0x14> - return CONSTRAIN( ((r_adc->ch->RESH<<8) + r_adc->ch->RESL -2018)*1.35 , 0,4095); - 26e: 6d 81 ldd r22, Y+5 ; 0x05 - 270: 8c 81 ldd r24, Y+4 ; 0x04 - 272: 70 e0 ldi r23, 0x00 ; 0 - 274: 76 2f mov r23, r22 - 276: 66 27 eor r22, r22 - 278: 68 0f add r22, r24 - 27a: 71 1d adc r23, r1 - 27c: 62 5e subi r22, 0xE2 ; 226 - 27e: 77 40 sbci r23, 0x07 ; 7 - 280: 07 2e mov r0, r23 - 282: 00 0c add r0, r0 - 284: 88 0b sbc r24, r24 - 286: 99 0b sbc r25, r25 - 288: 0e 94 22 0a call 0x1444 ; 0x1444 <__floatsisf> - 28c: 2d ec ldi r18, 0xCD ; 205 - 28e: 3c ec ldi r19, 0xCC ; 204 - 290: 4c ea ldi r20, 0xAC ; 172 - 292: 5f e3 ldi r21, 0x3F ; 63 - 294: 0e 94 d7 0a call 0x15ae ; 0x15ae <__mulsf3> - 298: 20 e0 ldi r18, 0x00 ; 0 - 29a: 30 e0 ldi r19, 0x00 ; 0 - 29c: a9 01 movw r20, r18 - 29e: 0e 94 73 09 call 0x12e6 ; 0x12e6 <__cmpsf2> - 2a2: 88 23 and r24, r24 - 2a4: b4 f1 brlt .+108 ; 0x312 <r_adc_scan+0xbe> - 2a6: 6d 81 ldd r22, Y+5 ; 0x05 - 2a8: 8c 81 ldd r24, Y+4 ; 0x04 - 2aa: 70 e0 ldi r23, 0x00 ; 0 - 2ac: 76 2f mov r23, r22 - 2ae: 66 27 eor r22, r22 - 2b0: 68 0f add r22, r24 - 2b2: 71 1d adc r23, r1 - 2b4: 62 5e subi r22, 0xE2 ; 226 - 2b6: 77 40 sbci r23, 0x07 ; 7 - 2b8: 07 2e mov r0, r23 - 2ba: 00 0c add r0, r0 - 2bc: 88 0b sbc r24, r24 - 2be: 99 0b sbc r25, r25 - 2c0: 0e 94 22 0a call 0x1444 ; 0x1444 <__floatsisf> - 2c4: 2d ec ldi r18, 0xCD ; 205 - 2c6: 3c ec ldi r19, 0xCC ; 204 - 2c8: 4c ea ldi r20, 0xAC ; 172 - 2ca: 5f e3 ldi r21, 0x3F ; 63 - 2cc: 0e 94 d7 0a call 0x15ae ; 0x15ae <__mulsf3> - 2d0: 20 e0 ldi r18, 0x00 ; 0 - 2d2: 30 ef ldi r19, 0xF0 ; 240 - 2d4: 4f e7 ldi r20, 0x7F ; 127 - 2d6: 55 e4 ldi r21, 0x45 ; 69 - 2d8: 0e 94 d2 0a call 0x15a4 ; 0x15a4 <__gesf2> - 2dc: 18 16 cp r1, r24 - 2de: e4 f0 brlt .+56 ; 0x318 <r_adc_scan+0xc4> - 2e0: 6d 81 ldd r22, Y+5 ; 0x05 - 2e2: 8c 81 ldd r24, Y+4 ; 0x04 - 2e4: 70 e0 ldi r23, 0x00 ; 0 - 2e6: 76 2f mov r23, r22 - 2e8: 66 27 eor r22, r22 - 2ea: 68 0f add r22, r24 - 2ec: 71 1d adc r23, r1 - 2ee: 62 5e subi r22, 0xE2 ; 226 - 2f0: 77 40 sbci r23, 0x07 ; 7 - 2f2: 07 2e mov r0, r23 - 2f4: 00 0c add r0, r0 - 2f6: 88 0b sbc r24, r24 - 2f8: 99 0b sbc r25, r25 - 2fa: 0e 94 22 0a call 0x1444 ; 0x1444 <__floatsisf> - 2fe: 2d ec ldi r18, 0xCD ; 205 - 300: 3c ec ldi r19, 0xCC ; 204 - 302: 4c ea ldi r20, 0xAC ; 172 - 304: 5f e3 ldi r21, 0x3F ; 63 - 306: 0e 94 d7 0a call 0x15ae ; 0x15ae <__mulsf3> - 30a: 0e 94 f1 09 call 0x13e2 ; 0x13e2 <__fixunssfsi> - 30e: cb 01 movw r24, r22 - 310: 05 c0 rjmp .+10 ; 0x31c <r_adc_scan+0xc8> - 312: 80 e0 ldi r24, 0x00 ; 0 - 314: 90 e0 ldi r25, 0x00 ; 0 - 316: 02 c0 rjmp .+4 ; 0x31c <r_adc_scan+0xc8> - 318: 8f ef ldi r24, 0xFF ; 255 - 31a: 9f e0 ldi r25, 0x0F ; 15 - 31c: df 91 pop r29 - 31e: cf 91 pop r28 - 320: 08 95 ret - -00000322 <clock_init>: + 256: cf 93 push r28 + 258: df 93 push r29 + //r_adc->ch->CTRL |= 1<<7; //start scan + //while(r_adc->ch->CTRL & (1<<7));//wait for scan to end + return CONSTRAIN( ((r_adc->ch->RESH<<8) + r_adc->ch->RESL -2018)*1.35 , 1,4095); + 25a: fc 01 movw r30, r24 + 25c: c2 81 ldd r28, Z+2 ; 0x02 + 25e: d3 81 ldd r29, Z+3 ; 0x03 + 260: 6d 81 ldd r22, Y+5 ; 0x05 + 262: 8c 81 ldd r24, Y+4 ; 0x04 + 264: 70 e0 ldi r23, 0x00 ; 0 + 266: 76 2f mov r23, r22 + 268: 66 27 eor r22, r22 + 26a: 68 0f add r22, r24 + 26c: 71 1d adc r23, r1 + 26e: 62 5e subi r22, 0xE2 ; 226 + 270: 77 40 sbci r23, 0x07 ; 7 + 272: 07 2e mov r0, r23 + 274: 00 0c add r0, r0 + 276: 88 0b sbc r24, r24 + 278: 99 0b sbc r25, r25 + 27a: 0e 94 3a 0a call 0x1474 ; 0x1474 <__floatsisf> + 27e: 2d ec ldi r18, 0xCD ; 205 + 280: 3c ec ldi r19, 0xCC ; 204 + 282: 4c ea ldi r20, 0xAC ; 172 + 284: 5f e3 ldi r21, 0x3F ; 63 + 286: 0e 94 ef 0a call 0x15de ; 0x15de <__mulsf3> + 28a: 20 e0 ldi r18, 0x00 ; 0 + 28c: 30 e0 ldi r19, 0x00 ; 0 + 28e: 40 e8 ldi r20, 0x80 ; 128 + 290: 5f e3 ldi r21, 0x3F ; 63 + 292: 0e 94 8b 09 call 0x1316 ; 0x1316 <__cmpsf2> + 296: 88 23 and r24, r24 + 298: b4 f1 brlt .+108 ; 0x306 <r_adc_scan+0xb0> + 29a: 6d 81 ldd r22, Y+5 ; 0x05 + 29c: 8c 81 ldd r24, Y+4 ; 0x04 + 29e: 70 e0 ldi r23, 0x00 ; 0 + 2a0: 76 2f mov r23, r22 + 2a2: 66 27 eor r22, r22 + 2a4: 68 0f add r22, r24 + 2a6: 71 1d adc r23, r1 + 2a8: 62 5e subi r22, 0xE2 ; 226 + 2aa: 77 40 sbci r23, 0x07 ; 7 + 2ac: 07 2e mov r0, r23 + 2ae: 00 0c add r0, r0 + 2b0: 88 0b sbc r24, r24 + 2b2: 99 0b sbc r25, r25 + 2b4: 0e 94 3a 0a call 0x1474 ; 0x1474 <__floatsisf> + 2b8: 2d ec ldi r18, 0xCD ; 205 + 2ba: 3c ec ldi r19, 0xCC ; 204 + 2bc: 4c ea ldi r20, 0xAC ; 172 + 2be: 5f e3 ldi r21, 0x3F ; 63 + 2c0: 0e 94 ef 0a call 0x15de ; 0x15de <__mulsf3> + 2c4: 20 e0 ldi r18, 0x00 ; 0 + 2c6: 30 ef ldi r19, 0xF0 ; 240 + 2c8: 4f e7 ldi r20, 0x7F ; 127 + 2ca: 55 e4 ldi r21, 0x45 ; 69 + 2cc: 0e 94 ea 0a call 0x15d4 ; 0x15d4 <__gesf2> + 2d0: 18 16 cp r1, r24 + 2d2: e4 f0 brlt .+56 ; 0x30c <r_adc_scan+0xb6> + 2d4: 6d 81 ldd r22, Y+5 ; 0x05 + 2d6: 8c 81 ldd r24, Y+4 ; 0x04 + 2d8: 70 e0 ldi r23, 0x00 ; 0 + 2da: 76 2f mov r23, r22 + 2dc: 66 27 eor r22, r22 + 2de: 68 0f add r22, r24 + 2e0: 71 1d adc r23, r1 + 2e2: 62 5e subi r22, 0xE2 ; 226 + 2e4: 77 40 sbci r23, 0x07 ; 7 + 2e6: 07 2e mov r0, r23 + 2e8: 00 0c add r0, r0 + 2ea: 88 0b sbc r24, r24 + 2ec: 99 0b sbc r25, r25 + 2ee: 0e 94 3a 0a call 0x1474 ; 0x1474 <__floatsisf> + 2f2: 2d ec ldi r18, 0xCD ; 205 + 2f4: 3c ec ldi r19, 0xCC ; 204 + 2f6: 4c ea ldi r20, 0xAC ; 172 + 2f8: 5f e3 ldi r21, 0x3F ; 63 + 2fa: 0e 94 ef 0a call 0x15de ; 0x15de <__mulsf3> + 2fe: 0e 94 09 0a call 0x1412 ; 0x1412 <__fixunssfsi> + 302: cb 01 movw r24, r22 + 304: 05 c0 rjmp .+10 ; 0x310 <r_adc_scan+0xba> + 306: 81 e0 ldi r24, 0x01 ; 1 + 308: 90 e0 ldi r25, 0x00 ; 0 + 30a: 02 c0 rjmp .+4 ; 0x310 <r_adc_scan+0xba> + 30c: 8f ef ldi r24, 0xFF ; 255 + 30e: 9f e0 ldi r25, 0x0F ; 15 + 310: df 91 pop r29 + 312: cf 91 pop r28 + 314: 08 95 ret + +00000316 <clock_init>: #include <avr/io.h> #include "ATKCLK.h" void clock_init(void){ OSC.XOSCCTRL = OSC_XOSCSEL_XTAL_256CLK_gc | OSC_FRQRANGE_12TO16_gc; // select external source - 322: e0 e5 ldi r30, 0x50 ; 80 - 324: f0 e0 ldi r31, 0x00 ; 0 - 326: 83 ec ldi r24, 0xC3 ; 195 - 328: 82 83 std Z+2, r24 ; 0x02 + 316: e0 e5 ldi r30, 0x50 ; 80 + 318: f0 e0 ldi r31, 0x00 ; 0 + 31a: 83 ec ldi r24, 0xC3 ; 195 + 31c: 82 83 std Z+2, r24 ; 0x02 OSC.CTRL = OSC_XOSCEN_bm; // enable external source - 32a: 88 e0 ldi r24, 0x08 ; 8 - 32c: 80 83 st Z, r24 + 31e: 88 e0 ldi r24, 0x08 ; 8 + 320: 80 83 st Z, r24 while(!(OSC.STATUS & OSC_XOSCRDY_bm)); // wait for external - 32e: 81 81 ldd r24, Z+1 ; 0x01 - 330: 83 ff sbrs r24, 3 - 332: fd cf rjmp .-6 ; 0x32e <clock_init+0xc> + 322: 81 81 ldd r24, Z+1 ; 0x01 + 324: 83 ff sbrs r24, 3 + 326: fd cf rjmp .-6 ; 0x322 <clock_init+0xc> OSC.PLLCTRL = OSC_PLLSRC_XOSC_gc | OSC_PLLFAC0_bm | OSC_PLLFAC1_bm; // select external osc for pll, do pll = source * 3 - 334: e0 e5 ldi r30, 0x50 ; 80 - 336: f0 e0 ldi r31, 0x00 ; 0 - 338: 83 ec ldi r24, 0xC3 ; 195 - 33a: 85 83 std Z+5, r24 ; 0x05 + 328: e0 e5 ldi r30, 0x50 ; 80 + 32a: f0 e0 ldi r31, 0x00 ; 0 + 32c: 83 ec ldi r24, 0xC3 ; 195 + 32e: 85 83 std Z+5, r24 ; 0x05 //OSC.PLLCTRL = OSC_PLLSRC_XOSC_gc | OSC_PLLFAC1_bm; // pll = source * 2 for 32MHz std clock OSC.CTRL |= OSC_PLLEN_bm; // enable PLL - 33c: 80 81 ld r24, Z - 33e: 80 61 ori r24, 0x10 ; 16 - 340: 80 83 st Z, r24 + 330: 80 81 ld r24, Z + 332: 80 61 ori r24, 0x10 ; 16 + 334: 80 83 st Z, r24 while (!(OSC.STATUS & OSC_PLLRDY_bm)); // wait for PLL to be ready - 342: 81 81 ldd r24, Z+1 ; 0x01 - 344: 84 ff sbrs r24, 4 - 346: fd cf rjmp .-6 ; 0x342 <clock_init+0x20> + 336: 81 81 ldd r24, Z+1 ; 0x01 + 338: 84 ff sbrs r24, 4 + 33a: fd cf rjmp .-6 ; 0x336 <clock_init+0x20> CCP = CCP_IOREG_gc; // enable protected register change - 348: 88 ed ldi r24, 0xD8 ; 216 - 34a: 84 bf out 0x34, r24 ; 52 + 33c: 88 ed ldi r24, 0xD8 ; 216 + 33e: 84 bf out 0x34, r24 ; 52 CLK.CTRL = CLK_SCLKSEL_PLL_gc; // switch to PLL for main clock - 34c: 84 e0 ldi r24, 0x04 ; 4 - 34e: 80 93 40 00 sts 0x0040, r24 ; 0x800040 <__TEXT_REGION_LENGTH__+0x700040> - 352: 08 95 ret + 340: 84 e0 ldi r24, 0x04 ; 4 + 342: 80 93 40 00 sts 0x0040, r24 ; 0x800040 <__TEXT_REGION_LENGTH__+0x700040> + 346: 08 95 ret -00000354 <set_dac>: +00000348 <set_dac>: } void set_dac( ATK_DAC_CHANNEL_sel channel, uint16_t val){ //set 12 bit dac value if(channel & ATK_DAC_CHANNEL_0){ - 354: 80 ff sbrs r24, 0 - 356: 09 c0 rjmp .+18 ; 0x36a <set_dac+0x16> + 348: 80 ff sbrs r24, 0 + 34a: 09 c0 rjmp .+18 ; 0x35e <set_dac+0x16> while(!(DACB.STATUS & DAC_CH0DRE_bm)); - 358: e0 e2 ldi r30, 0x20 ; 32 - 35a: f3 e0 ldi r31, 0x03 ; 3 - 35c: 95 81 ldd r25, Z+5 ; 0x05 - 35e: 90 ff sbrs r25, 0 - 360: fd cf rjmp .-6 ; 0x35c <set_dac+0x8> + 34c: e0 e2 ldi r30, 0x20 ; 32 + 34e: f3 e0 ldi r31, 0x03 ; 3 + 350: 95 81 ldd r25, Z+5 ; 0x05 + 352: 90 ff sbrs r25, 0 + 354: fd cf rjmp .-6 ; 0x350 <set_dac+0x8> DACB.CH0DATA = val; - 362: 60 93 38 03 sts 0x0338, r22 ; 0x800338 <__TEXT_REGION_LENGTH__+0x700338> - 366: 70 93 39 03 sts 0x0339, r23 ; 0x800339 <__TEXT_REGION_LENGTH__+0x700339> + 356: 60 93 38 03 sts 0x0338, r22 ; 0x800338 <__TEXT_REGION_LENGTH__+0x700338> + 35a: 70 93 39 03 sts 0x0339, r23 ; 0x800339 <__TEXT_REGION_LENGTH__+0x700339> } if(channel & ATK_DAC_CHANNEL_1){ - 36a: 81 ff sbrs r24, 1 - 36c: 09 c0 rjmp .+18 ; 0x380 <set_dac+0x2c> + 35e: 81 ff sbrs r24, 1 + 360: 09 c0 rjmp .+18 ; 0x374 <set_dac+0x2c> while(!(DACB.STATUS & DAC_CH1DRE_bm)); - 36e: e0 e2 ldi r30, 0x20 ; 32 - 370: f3 e0 ldi r31, 0x03 ; 3 - 372: 85 81 ldd r24, Z+5 ; 0x05 - 374: 81 ff sbrs r24, 1 - 376: fd cf rjmp .-6 ; 0x372 <set_dac+0x1e> + 362: e0 e2 ldi r30, 0x20 ; 32 + 364: f3 e0 ldi r31, 0x03 ; 3 + 366: 85 81 ldd r24, Z+5 ; 0x05 + 368: 81 ff sbrs r24, 1 + 36a: fd cf rjmp .-6 ; 0x366 <set_dac+0x1e> DACB.CH1DATA = val; - 378: 60 93 3a 03 sts 0x033A, r22 ; 0x80033a <__TEXT_REGION_LENGTH__+0x70033a> - 37c: 70 93 3b 03 sts 0x033B, r23 ; 0x80033b <__TEXT_REGION_LENGTH__+0x70033b> - 380: 08 95 ret + 36c: 60 93 3a 03 sts 0x033A, r22 ; 0x80033a <__TEXT_REGION_LENGTH__+0x70033a> + 370: 70 93 3b 03 sts 0x033B, r23 ; 0x80033b <__TEXT_REGION_LENGTH__+0x70033b> + 374: 08 95 ret -00000382 <dac_begin>: +00000376 <dac_begin>: * Author: Ruben Castro */ #include <avr/io.h> #include "ATKDAC.h" void dac_begin( ATK_DAC_CHANNEL_sel channel){ - 382: cf 93 push r28 - 384: c8 2f mov r28, r24 + 376: cf 93 push r28 + 378: c8 2f mov r28, r24 DACB.CTRLC = DAC_REFSEL_AVCC_gc; - 386: 88 e0 ldi r24, 0x08 ; 8 - 388: 80 93 22 03 sts 0x0322, r24 ; 0x800322 <__TEXT_REGION_LENGTH__+0x700322> + 37a: 88 e0 ldi r24, 0x08 ; 8 + 37c: 80 93 22 03 sts 0x0322, r24 ; 0x800322 <__TEXT_REGION_LENGTH__+0x700322> if(channel == ATK_DAC_DUAL_CHANNEL){ - 38c: c2 30 cpi r28, 0x02 ; 2 - 38e: 21 f4 brne .+8 ; 0x398 <dac_begin+0x16> + 380: c2 30 cpi r28, 0x02 ; 2 + 382: 21 f4 brne .+8 ; 0x38c <dac_begin+0x16> DACB.CTRLB = DAC_CHSEL_DUAL_gc; - 390: 80 e4 ldi r24, 0x40 ; 64 - 392: 80 93 21 03 sts 0x0321, r24 ; 0x800321 <__TEXT_REGION_LENGTH__+0x700321> - 396: 07 c0 rjmp .+14 ; 0x3a6 <dac_begin+0x24> + 384: 80 e4 ldi r24, 0x40 ; 64 + 386: 80 93 21 03 sts 0x0321, r24 ; 0x800321 <__TEXT_REGION_LENGTH__+0x700321> + 38a: 07 c0 rjmp .+14 ; 0x39a <dac_begin+0x24> }else{ DACB.CTRLB = DAC_CHSEL_SINGLE_gc; - 398: 10 92 21 03 sts 0x0321, r1 ; 0x800321 <__TEXT_REGION_LENGTH__+0x700321> + 38c: 10 92 21 03 sts 0x0321, r1 ; 0x800321 <__TEXT_REGION_LENGTH__+0x700321> } if(channel & ATK_DAC_CHANNEL_0 || channel & ATK_DAC_DUAL_CHANNEL){ - 39c: c0 fd sbrc r28, 0 - 39e: 03 c0 rjmp .+6 ; 0x3a6 <dac_begin+0x24> - 3a0: c1 ff sbrs r28, 1 - 3a2: 23 c0 rjmp .+70 ; 0x3ea <dac_begin+0x68> - 3a4: 17 c0 rjmp .+46 ; 0x3d4 <dac_begin+0x52> + 390: c0 fd sbrc r28, 0 + 392: 03 c0 rjmp .+6 ; 0x39a <dac_begin+0x24> + 394: c1 ff sbrs r28, 1 + 396: 23 c0 rjmp .+70 ; 0x3de <dac_begin+0x68> + 398: 17 c0 rjmp .+46 ; 0x3c8 <dac_begin+0x52> DACB.CTRLA |= DAC_CH0EN_bm | DAC_ENABLE_bm; //enable output pin 0 - PB2 - 3a6: e0 e2 ldi r30, 0x20 ; 32 - 3a8: f3 e0 ldi r31, 0x03 ; 3 - 3aa: 80 81 ld r24, Z - 3ac: 85 60 ori r24, 0x05 ; 5 - 3ae: 80 83 st Z, r24 + 39a: e0 e2 ldi r30, 0x20 ; 32 + 39c: f3 e0 ldi r31, 0x03 ; 3 + 39e: 80 81 ld r24, Z + 3a0: 85 60 ori r24, 0x05 ; 5 + 3a2: 80 83 st Z, r24 set_dac(ATK_DAC_CHANNEL_0, 0); - 3b0: 60 e0 ldi r22, 0x00 ; 0 - 3b2: 70 e0 ldi r23, 0x00 ; 0 - 3b4: 81 e0 ldi r24, 0x01 ; 1 - 3b6: 0e 94 aa 01 call 0x354 ; 0x354 <set_dac> + 3a4: 60 e0 ldi r22, 0x00 ; 0 + 3a6: 70 e0 ldi r23, 0x00 ; 0 + 3a8: 81 e0 ldi r24, 0x01 ; 1 + 3aa: 0e 94 a4 01 call 0x348 ; 0x348 <set_dac> } if(channel & ATK_DAC_CHANNEL_1 || channel & ATK_DAC_DUAL_CHANNEL){ - 3ba: c1 ff sbrs r28, 1 - 3bc: 16 c0 rjmp .+44 ; 0x3ea <dac_begin+0x68> + 3ae: c1 ff sbrs r28, 1 + 3b0: 16 c0 rjmp .+44 ; 0x3de <dac_begin+0x68> DACB.CTRLA |= DAC_CH1EN_bm | DAC_ENABLE_bm; //enable output pin 1 - PB3 - 3be: e0 e2 ldi r30, 0x20 ; 32 - 3c0: f3 e0 ldi r31, 0x03 ; 3 - 3c2: 80 81 ld r24, Z - 3c4: 89 60 ori r24, 0x09 ; 9 - 3c6: 80 83 st Z, r24 + 3b2: e0 e2 ldi r30, 0x20 ; 32 + 3b4: f3 e0 ldi r31, 0x03 ; 3 + 3b6: 80 81 ld r24, Z + 3b8: 89 60 ori r24, 0x09 ; 9 + 3ba: 80 83 st Z, r24 set_dac(ATK_DAC_CHANNEL_1, 0); - 3c8: 60 e0 ldi r22, 0x00 ; 0 - 3ca: 70 e0 ldi r23, 0x00 ; 0 - 3cc: 82 e0 ldi r24, 0x02 ; 2 - 3ce: 0e 94 aa 01 call 0x354 ; 0x354 <set_dac> + 3bc: 60 e0 ldi r22, 0x00 ; 0 + 3be: 70 e0 ldi r23, 0x00 ; 0 + 3c0: 82 e0 ldi r24, 0x02 ; 2 + 3c2: 0e 94 a4 01 call 0x348 ; 0x348 <set_dac> } } - 3d2: 0b c0 rjmp .+22 ; 0x3ea <dac_begin+0x68> + 3c6: 0b c0 rjmp .+22 ; 0x3de <dac_begin+0x68> }else{ DACB.CTRLB = DAC_CHSEL_SINGLE_gc; } if(channel & ATK_DAC_CHANNEL_0 || channel & ATK_DAC_DUAL_CHANNEL){ DACB.CTRLA |= DAC_CH0EN_bm | DAC_ENABLE_bm; //enable output pin 0 - PB2 - 3d4: e0 e2 ldi r30, 0x20 ; 32 - 3d6: f3 e0 ldi r31, 0x03 ; 3 - 3d8: 80 81 ld r24, Z - 3da: 85 60 ori r24, 0x05 ; 5 - 3dc: 80 83 st Z, r24 + 3c8: e0 e2 ldi r30, 0x20 ; 32 + 3ca: f3 e0 ldi r31, 0x03 ; 3 + 3cc: 80 81 ld r24, Z + 3ce: 85 60 ori r24, 0x05 ; 5 + 3d0: 80 83 st Z, r24 set_dac(ATK_DAC_CHANNEL_0, 0); - 3de: 60 e0 ldi r22, 0x00 ; 0 - 3e0: 70 e0 ldi r23, 0x00 ; 0 - 3e2: 81 e0 ldi r24, 0x01 ; 1 - 3e4: 0e 94 aa 01 call 0x354 ; 0x354 <set_dac> - 3e8: ea cf rjmp .-44 ; 0x3be <dac_begin+0x3c> + 3d2: 60 e0 ldi r22, 0x00 ; 0 + 3d4: 70 e0 ldi r23, 0x00 ; 0 + 3d6: 81 e0 ldi r24, 0x01 ; 1 + 3d8: 0e 94 a4 01 call 0x348 ; 0x348 <set_dac> + 3dc: ea cf rjmp .-44 ; 0x3b2 <dac_begin+0x3c> DACB.CTRLA |= DAC_CH1EN_bm | DAC_ENABLE_bm; //enable output pin 1 - PB3 set_dac(ATK_DAC_CHANNEL_1, 0); } } - 3ea: cf 91 pop r28 - 3ec: 08 95 ret + 3de: cf 91 pop r28 + 3e0: 08 95 ret -000003ee <ATKEncoder_begin>: +000003e2 <ATKEncoder_begin>: tPV = tickPerV; } int ATK_EN_getCounter(){ return counter; } - 3ee: e1 e4 ldi r30, 0x41 ; 65 - 3f0: f6 e0 ldi r31, 0x06 ; 6 - 3f2: 20 81 ld r18, Z - 3f4: 29 7f andi r18, 0xF9 ; 249 - 3f6: 20 83 st Z, r18 - 3f8: e0 e4 ldi r30, 0x40 ; 64 - 3fa: f6 e0 ldi r31, 0x06 ; 6 - 3fc: 24 e0 ldi r18, 0x04 ; 4 - 3fe: 21 87 std Z+9, r18 ; 0x09 - 400: 32 e0 ldi r19, 0x02 ; 2 - 402: 32 87 std Z+10, r19 ; 0x0a - 404: 31 8b std Z+17, r19 ; 0x11 - 406: 23 87 std Z+11, r18 ; 0x0b - 408: 21 e0 ldi r18, 0x01 ; 1 - 40a: 22 8b std Z+18, r18 ; 0x12 - 40c: 10 92 02 20 sts 0x2002, r1 ; 0x802002 <counter> - 410: 10 92 03 20 sts 0x2003, r1 ; 0x802003 <counter+0x1> - 414: 60 93 04 20 sts 0x2004, r22 ; 0x802004 <tPV> - 418: 70 93 05 20 sts 0x2005, r23 ; 0x802005 <tPV+0x1> - 41c: 80 93 06 20 sts 0x2006, r24 ; 0x802006 <tPV+0x2> - 420: 90 93 07 20 sts 0x2007, r25 ; 0x802007 <tPV+0x3> - 424: 08 95 ret - -00000426 <ATK_EN_getValue>: + 3e2: e1 e4 ldi r30, 0x41 ; 65 + 3e4: f6 e0 ldi r31, 0x06 ; 6 + 3e6: 20 81 ld r18, Z + 3e8: 29 7f andi r18, 0xF9 ; 249 + 3ea: 20 83 st Z, r18 + 3ec: e0 e4 ldi r30, 0x40 ; 64 + 3ee: f6 e0 ldi r31, 0x06 ; 6 + 3f0: 24 e0 ldi r18, 0x04 ; 4 + 3f2: 21 87 std Z+9, r18 ; 0x09 + 3f4: 32 e0 ldi r19, 0x02 ; 2 + 3f6: 32 87 std Z+10, r19 ; 0x0a + 3f8: 31 8b std Z+17, r19 ; 0x11 + 3fa: 23 87 std Z+11, r18 ; 0x0b + 3fc: 21 e0 ldi r18, 0x01 ; 1 + 3fe: 22 8b std Z+18, r18 ; 0x12 + 400: 10 92 02 20 sts 0x2002, r1 ; 0x802002 <counter> + 404: 10 92 03 20 sts 0x2003, r1 ; 0x802003 <counter+0x1> + 408: 60 93 04 20 sts 0x2004, r22 ; 0x802004 <tPV> + 40c: 70 93 05 20 sts 0x2005, r23 ; 0x802005 <tPV+0x1> + 410: 80 93 06 20 sts 0x2006, r24 ; 0x802006 <tPV+0x2> + 414: 90 93 07 20 sts 0x2007, r25 ; 0x802007 <tPV+0x3> + 418: 08 95 ret + +0000041a <ATK_EN_getValue>: double ATK_EN_getValue(){ return (double)counter/tPV; - 426: 60 91 02 20 lds r22, 0x2002 ; 0x802002 <counter> - 42a: 70 91 03 20 lds r23, 0x2003 ; 0x802003 <counter+0x1> - 42e: 07 2e mov r0, r23 - 430: 00 0c add r0, r0 - 432: 88 0b sbc r24, r24 - 434: 99 0b sbc r25, r25 - 436: 0e 94 22 0a call 0x1444 ; 0x1444 <__floatsisf> - 43a: 20 91 04 20 lds r18, 0x2004 ; 0x802004 <tPV> - 43e: 30 91 05 20 lds r19, 0x2005 ; 0x802005 <tPV+0x1> - 442: 40 91 06 20 lds r20, 0x2006 ; 0x802006 <tPV+0x2> - 446: 50 91 07 20 lds r21, 0x2007 ; 0x802007 <tPV+0x3> - 44a: 0e 94 78 09 call 0x12f0 ; 0x12f0 <__divsf3> + 41a: 60 91 02 20 lds r22, 0x2002 ; 0x802002 <counter> + 41e: 70 91 03 20 lds r23, 0x2003 ; 0x802003 <counter+0x1> + 422: 07 2e mov r0, r23 + 424: 00 0c add r0, r0 + 426: 88 0b sbc r24, r24 + 428: 99 0b sbc r25, r25 + 42a: 0e 94 3a 0a call 0x1474 ; 0x1474 <__floatsisf> + 42e: 20 91 04 20 lds r18, 0x2004 ; 0x802004 <tPV> + 432: 30 91 05 20 lds r19, 0x2005 ; 0x802005 <tPV+0x1> + 436: 40 91 06 20 lds r20, 0x2006 ; 0x802006 <tPV+0x2> + 43a: 50 91 07 20 lds r21, 0x2007 ; 0x802007 <tPV+0x3> + 43e: 0e 94 90 09 call 0x1320 ; 0x1320 <__divsf3> } - 44e: 08 95 ret + 442: 08 95 ret -00000450 <__vector_2>: +00000444 <__vector_2>: //PC1 is Rising -1 ISR(PORTC_INT0_vect) { - 450: 1f 92 push r1 - 452: 0f 92 push r0 - 454: 0f b6 in r0, 0x3f ; 63 - 456: 0f 92 push r0 - 458: 11 24 eor r1, r1 - 45a: 8f 93 push r24 - 45c: 9f 93 push r25 + 444: 1f 92 push r1 + 446: 0f 92 push r0 + 448: 0f b6 in r0, 0x3f ; 63 + 44a: 0f 92 push r0 + 44c: 11 24 eor r1, r1 + 44e: 8f 93 push r24 + 450: 9f 93 push r25 if(!(PORTC_IN & PIN2_bm)){ - 45e: 80 91 48 06 lds r24, 0x0648 ; 0x800648 <__TEXT_REGION_LENGTH__+0x700648> - 462: 82 fd sbrc r24, 2 - 464: 0a c0 rjmp .+20 ; 0x47a <__vector_2+0x2a> + 452: 80 91 48 06 lds r24, 0x0648 ; 0x800648 <__TEXT_REGION_LENGTH__+0x700648> + 456: 82 fd sbrc r24, 2 + 458: 0a c0 rjmp .+20 ; 0x46e <__vector_2+0x2a> counter+=10; - 466: 80 91 02 20 lds r24, 0x2002 ; 0x802002 <counter> - 46a: 90 91 03 20 lds r25, 0x2003 ; 0x802003 <counter+0x1> - 46e: 0a 96 adiw r24, 0x0a ; 10 - 470: 80 93 02 20 sts 0x2002, r24 ; 0x802002 <counter> - 474: 90 93 03 20 sts 0x2003, r25 ; 0x802003 <counter+0x1> - 478: 09 c0 rjmp .+18 ; 0x48c <__vector_2+0x3c> + 45a: 80 91 02 20 lds r24, 0x2002 ; 0x802002 <counter> + 45e: 90 91 03 20 lds r25, 0x2003 ; 0x802003 <counter+0x1> + 462: 0a 96 adiw r24, 0x0a ; 10 + 464: 80 93 02 20 sts 0x2002, r24 ; 0x802002 <counter> + 468: 90 93 03 20 sts 0x2003, r25 ; 0x802003 <counter+0x1> + 46c: 09 c0 rjmp .+18 ; 0x480 <__vector_2+0x3c> }else{ counter-=10; - 47a: 80 91 02 20 lds r24, 0x2002 ; 0x802002 <counter> - 47e: 90 91 03 20 lds r25, 0x2003 ; 0x802003 <counter+0x1> - 482: 0a 97 sbiw r24, 0x0a ; 10 - 484: 80 93 02 20 sts 0x2002, r24 ; 0x802002 <counter> - 488: 90 93 03 20 sts 0x2003, r25 ; 0x802003 <counter+0x1> + 46e: 80 91 02 20 lds r24, 0x2002 ; 0x802002 <counter> + 472: 90 91 03 20 lds r25, 0x2003 ; 0x802003 <counter+0x1> + 476: 0a 97 sbiw r24, 0x0a ; 10 + 478: 80 93 02 20 sts 0x2002, r24 ; 0x802002 <counter> + 47c: 90 93 03 20 sts 0x2003, r25 ; 0x802003 <counter+0x1> } } - 48c: 9f 91 pop r25 - 48e: 8f 91 pop r24 - 490: 0f 90 pop r0 - 492: 0f be out 0x3f, r0 ; 63 - 494: 0f 90 pop r0 - 496: 1f 90 pop r1 - 498: 18 95 reti + 480: 9f 91 pop r25 + 482: 8f 91 pop r24 + 484: 0f 90 pop r0 + 486: 0f be out 0x3f, r0 ; 63 + 488: 0f 90 pop r0 + 48a: 1f 90 pop r1 + 48c: 18 95 reti -0000049a <__vector_3>: +0000048e <__vector_3>: //PC2 is falling -0 ISR(PORTC_INT1_vect) { - 49a: 1f 92 push r1 - 49c: 0f 92 push r0 - 49e: 0f b6 in r0, 0x3f ; 63 - 4a0: 0f 92 push r0 - 4a2: 11 24 eor r1, r1 - 4a4: 8f 93 push r24 - 4a6: 9f 93 push r25 + 48e: 1f 92 push r1 + 490: 0f 92 push r0 + 492: 0f b6 in r0, 0x3f ; 63 + 494: 0f 92 push r0 + 496: 11 24 eor r1, r1 + 498: 8f 93 push r24 + 49a: 9f 93 push r25 if((PORTC_IN & PIN1_bm)){ - 4a8: 80 91 48 06 lds r24, 0x0648 ; 0x800648 <__TEXT_REGION_LENGTH__+0x700648> - 4ac: 81 ff sbrs r24, 1 - 4ae: 0a c0 rjmp .+20 ; 0x4c4 <__vector_3+0x2a> + 49c: 80 91 48 06 lds r24, 0x0648 ; 0x800648 <__TEXT_REGION_LENGTH__+0x700648> + 4a0: 81 ff sbrs r24, 1 + 4a2: 0a c0 rjmp .+20 ; 0x4b8 <__vector_3+0x2a> counter+=10; - 4b0: 80 91 02 20 lds r24, 0x2002 ; 0x802002 <counter> - 4b4: 90 91 03 20 lds r25, 0x2003 ; 0x802003 <counter+0x1> - 4b8: 0a 96 adiw r24, 0x0a ; 10 - 4ba: 80 93 02 20 sts 0x2002, r24 ; 0x802002 <counter> - 4be: 90 93 03 20 sts 0x2003, r25 ; 0x802003 <counter+0x1> - 4c2: 09 c0 rjmp .+18 ; 0x4d6 <__vector_3+0x3c> + 4a4: 80 91 02 20 lds r24, 0x2002 ; 0x802002 <counter> + 4a8: 90 91 03 20 lds r25, 0x2003 ; 0x802003 <counter+0x1> + 4ac: 0a 96 adiw r24, 0x0a ; 10 + 4ae: 80 93 02 20 sts 0x2002, r24 ; 0x802002 <counter> + 4b2: 90 93 03 20 sts 0x2003, r25 ; 0x802003 <counter+0x1> + 4b6: 09 c0 rjmp .+18 ; 0x4ca <__vector_3+0x3c> }else{ counter-=10; - 4c4: 80 91 02 20 lds r24, 0x2002 ; 0x802002 <counter> - 4c8: 90 91 03 20 lds r25, 0x2003 ; 0x802003 <counter+0x1> - 4cc: 0a 97 sbiw r24, 0x0a ; 10 - 4ce: 80 93 02 20 sts 0x2002, r24 ; 0x802002 <counter> - 4d2: 90 93 03 20 sts 0x2003, r25 ; 0x802003 <counter+0x1> + 4b8: 80 91 02 20 lds r24, 0x2002 ; 0x802002 <counter> + 4bc: 90 91 03 20 lds r25, 0x2003 ; 0x802003 <counter+0x1> + 4c0: 0a 97 sbiw r24, 0x0a ; 10 + 4c2: 80 93 02 20 sts 0x2002, r24 ; 0x802002 <counter> + 4c6: 90 93 03 20 sts 0x2003, r25 ; 0x802003 <counter+0x1> } } - 4d6: 9f 91 pop r25 - 4d8: 8f 91 pop r24 - 4da: 0f 90 pop r0 - 4dc: 0f be out 0x3f, r0 ; 63 - 4de: 0f 90 pop r0 - 4e0: 1f 90 pop r1 - 4e2: 18 95 reti - -000004e4 <currentc_crunch>: - } + 4ca: 9f 91 pop r25 + 4cc: 8f 91 pop r24 + 4ce: 0f 90 pop r0 + 4d0: 0f be out 0x3f, r0 ; 63 + 4d2: 0f 90 pop r0 + 4d4: 1f 90 pop r1 + 4d6: 18 95 reti + +000004d8 <currentc_crunch>: + #include "ATKBBBIO/RBasic.h" + #include "ATKBBBIO/ATKDAC.h" + #include <stdlib.h> + + + double currentc_crunch(currentc_t *cc, double input){ + 4d8: 2f 92 push r2 + 4da: 3f 92 push r3 + 4dc: 4f 92 push r4 + 4de: 5f 92 push r5 + 4e0: 6f 92 push r6 + 4e2: 7f 92 push r7 + 4e4: 8f 92 push r8 + 4e6: 9f 92 push r9 + 4e8: af 92 push r10 + 4ea: bf 92 push r11 + 4ec: cf 92 push r12 + 4ee: df 92 push r13 + 4f0: ef 92 push r14 + 4f2: ff 92 push r15 + 4f4: 0f 93 push r16 + 4f6: 1f 93 push r17 + 4f8: cf 93 push r28 + 4fa: df 93 push r29 + 4fc: ec 01 movw r28, r24 + double pValue, iValue; + cc->currentError = cc->setpoint - input; + 4fe: 9a 01 movw r18, r20 + 500: ab 01 movw r20, r22 + 502: 68 a5 ldd r22, Y+40 ; 0x28 + 504: 79 a5 ldd r23, Y+41 ; 0x29 + 506: 8a a5 ldd r24, Y+42 ; 0x2a + 508: 9b a5 ldd r25, Y+43 ; 0x2b + 50a: 0e 94 1e 09 call 0x123c ; 0x123c <__subsf3> + 50e: 6b 01 movw r12, r22 + 510: 7c 01 movw r14, r24 + 512: 68 8f std Y+24, r22 ; 0x18 + 514: 79 8f std Y+25, r23 ; 0x19 + 516: 8a 8f std Y+26, r24 ; 0x1a + 518: 9b 8f std Y+27, r25 ; 0x1b + + + cc->totalError+=cc->currentError* cc->dt; + 51a: 28 85 ldd r18, Y+8 ; 0x08 + 51c: 39 85 ldd r19, Y+9 ; 0x09 + 51e: 4a 85 ldd r20, Y+10 ; 0x0a + 520: 5b 85 ldd r21, Y+11 ; 0x0b + 522: 0e 94 ef 0a call 0x15de ; 0x15de <__mulsf3> + 526: 2c 8d ldd r18, Y+28 ; 0x1c + 528: 3d 8d ldd r19, Y+29 ; 0x1d + 52a: 4e 8d ldd r20, Y+30 ; 0x1e + 52c: 5f 8d ldd r21, Y+31 ; 0x1f + 52e: 0e 94 1f 09 call 0x123e ; 0x123e <__addsf3> + 532: 16 2f mov r17, r22 + 534: 07 2f mov r16, r23 + 536: b8 2e mov r11, r24 + 538: a9 2e mov r10, r25 + cc->totalError = CONSTRAIN(cc->totalError, cc->minTotalError , cc->maxtotalError); + 53a: 9c a0 ldd r9, Y+36 ; 0x24 + 53c: 8d a0 ldd r8, Y+37 ; 0x25 + 53e: 3e a0 ldd r3, Y+38 ; 0x26 + 540: 2f a0 ldd r2, Y+39 ; 0x27 + 542: 29 2d mov r18, r9 + 544: 38 2d mov r19, r8 + 546: 43 2d mov r20, r3 + 548: 52 2d mov r21, r2 + 54a: 0e 94 8b 09 call 0x1316 ; 0x1316 <__cmpsf2> + 54e: 88 23 and r24, r24 + 550: a4 f0 brlt .+40 ; 0x57a <currentc_crunch+0xa2> + 552: 98 a0 ldd r9, Y+32 ; 0x20 + 554: 89 a0 ldd r8, Y+33 ; 0x21 + 556: 3a a0 ldd r3, Y+34 ; 0x22 + 558: 2b a0 ldd r2, Y+35 ; 0x23 + 55a: 29 2d mov r18, r9 + 55c: 38 2d mov r19, r8 + 55e: 43 2d mov r20, r3 + 560: 52 2d mov r21, r2 + 562: 61 2f mov r22, r17 + 564: 70 2f mov r23, r16 + 566: 8b 2d mov r24, r11 + 568: 9a 2d mov r25, r10 + 56a: 0e 94 ea 0a call 0x15d4 ; 0x15d4 <__gesf2> + 56e: 18 16 cp r1, r24 + 570: 24 f0 brlt .+8 ; 0x57a <currentc_crunch+0xa2> + 572: 91 2e mov r9, r17 + 574: 80 2e mov r8, r16 + 576: 3b 2c mov r3, r11 + 578: 2a 2c mov r2, r10 + 57a: 89 2d mov r24, r9 + 57c: 98 2d mov r25, r8 + 57e: a3 2d mov r26, r3 + 580: b2 2d mov r27, r2 + 582: 8c 8f std Y+28, r24 ; 0x1c + 584: 9d 8f std Y+29, r25 ; 0x1d + 586: ae 8f std Y+30, r26 ; 0x1e + 588: bf 8f std Y+31, r27 ; 0x1f + + //pValue = Math.abs(currentError) < acceptableRange ? 0: p * currentError; + pValue = cc->P * cc->currentError; + 58a: 28 81 ld r18, Y + 58c: 39 81 ldd r19, Y+1 ; 0x01 + 58e: 4a 81 ldd r20, Y+2 ; 0x02 + 590: 5b 81 ldd r21, Y+3 ; 0x03 + 592: c7 01 movw r24, r14 + 594: b6 01 movw r22, r12 + 596: 0e 94 ef 0a call 0x15de ; 0x15de <__mulsf3> + 59a: 2b 01 movw r4, r22 + 59c: 3c 01 movw r6, r24 + iValue = cc->I * cc->totalError; + 59e: 2c 81 ldd r18, Y+4 ; 0x04 + 5a0: 3d 81 ldd r19, Y+5 ; 0x05 + 5a2: 4e 81 ldd r20, Y+6 ; 0x06 + 5a4: 5f 81 ldd r21, Y+7 ; 0x07 + 5a6: 69 2d mov r22, r9 + 5a8: 78 2d mov r23, r8 + 5aa: 83 2d mov r24, r3 + 5ac: 92 2d mov r25, r2 + 5ae: 0e 94 ef 0a call 0x15de ; 0x15de <__mulsf3> + 5b2: 4b 01 movw r8, r22 + 5b4: 5c 01 movw r10, r24 + - uint8_t currentc_onTarget(currentc_t *cc){ // if on target for more than 50 millis + cc->prevError = cc->currentError; + 5b6: cc 8a std Y+20, r12 ; 0x14 + 5b8: dd 8a std Y+21, r13 ; 0x15 + 5ba: ee 8a std Y+22, r14 ; 0x16 + 5bc: ff 8a std Y+23, r15 ; 0x17 + //return pValue + iValue + dValue; + + //check if on target + if(abs(cc->currentError) < cc->acceptableRange){ + 5be: c7 01 movw r24, r14 + 5c0: b6 01 movw r22, r12 + 5c2: 0e 94 02 0a call 0x1404 ; 0x1404 <__fixsfsi> + 5c6: 9b 01 movw r18, r22 + 5c8: 77 23 and r23, r23 + 5ca: 24 f4 brge .+8 ; 0x5d4 <currentc_crunch+0xfc> + 5cc: 22 27 eor r18, r18 + 5ce: 33 27 eor r19, r19 + 5d0: 26 1b sub r18, r22 + 5d2: 37 0b sbc r19, r23 + 5d4: b9 01 movw r22, r18 + 5d6: 33 0f add r19, r19 + 5d8: 88 0b sbc r24, r24 + 5da: 99 0b sbc r25, r25 + 5dc: 0e 94 3a 0a call 0x1474 ; 0x1474 <__floatsisf> + 5e0: 2c a5 ldd r18, Y+44 ; 0x2c + 5e2: 3d a5 ldd r19, Y+45 ; 0x2d + 5e4: 4e a5 ldd r20, Y+46 ; 0x2e + 5e6: 5f a5 ldd r21, Y+47 ; 0x2f + 5e8: 0e 94 8b 09 call 0x1316 ; 0x1316 <__cmpsf2> + 5ec: 88 23 and r24, r24 + 5ee: 34 f4 brge .+12 ; 0x5fc <currentc_crunch+0x124> + cc->onTargetTicks++; + 5f0: 88 a9 ldd r24, Y+48 ; 0x30 + 5f2: 99 a9 ldd r25, Y+49 ; 0x31 + 5f4: 01 96 adiw r24, 0x01 ; 1 + 5f6: 88 ab std Y+48, r24 ; 0x30 + 5f8: 99 ab std Y+49, r25 ; 0x31 + 5fa: 02 c0 rjmp .+4 ; 0x600 <currentc_crunch+0x128> + }else{ + cc->onTargetTicks=0; + 5fc: 18 aa std Y+48, r1 ; 0x30 + 5fe: 19 aa std Y+49, r1 ; 0x31 + } - return cc->onTargetTicks * cc->dt >0.1; + + return CONSTRAIN(pValue + iValue ,cc->MIN_OUT, cc->MAX_OUT); + 600: a5 01 movw r20, r10 + 602: 94 01 movw r18, r8 + 604: c3 01 movw r24, r6 + 606: b2 01 movw r22, r4 + 608: 0e 94 1f 09 call 0x123e ; 0x123e <__addsf3> + 60c: 16 2f mov r17, r22 + 60e: 07 2f mov r16, r23 + 610: b8 2e mov r11, r24 + 612: a9 2e mov r10, r25 + 614: 6a 89 ldd r22, Y+18 ; 0x12 + 616: 7b 89 ldd r23, Y+19 ; 0x13 + 618: 07 2e mov r0, r23 + 61a: 00 0c add r0, r0 + 61c: 88 0b sbc r24, r24 + 61e: 99 0b sbc r25, r25 + 620: 0e 94 3a 0a call 0x1474 ; 0x1474 <__floatsisf> + 624: d6 2e mov r13, r22 + 626: e7 2e mov r14, r23 + 628: f8 2e mov r15, r24 + 62a: c9 2e mov r12, r25 + 62c: 26 2f mov r18, r22 + 62e: 37 2f mov r19, r23 + 630: 48 2f mov r20, r24 + 632: 59 2f mov r21, r25 + 634: 61 2f mov r22, r17 + 636: 70 2f mov r23, r16 + 638: 8b 2d mov r24, r11 + 63a: 9a 2d mov r25, r10 + 63c: 0e 94 8b 09 call 0x1316 ; 0x1316 <__cmpsf2> + 640: 88 23 and r24, r24 + 642: e4 f0 brlt .+56 ; 0x67c <currentc_crunch+0x1a4> + 644: 68 89 ldd r22, Y+16 ; 0x10 + 646: 79 89 ldd r23, Y+17 ; 0x11 + 648: 07 2e mov r0, r23 + 64a: 00 0c add r0, r0 + 64c: 88 0b sbc r24, r24 + 64e: 99 0b sbc r25, r25 + 650: 0e 94 3a 0a call 0x1474 ; 0x1474 <__floatsisf> + 654: d6 2e mov r13, r22 + 656: e7 2e mov r14, r23 + 658: f8 2e mov r15, r24 + 65a: c9 2e mov r12, r25 + 65c: 26 2f mov r18, r22 + 65e: 37 2f mov r19, r23 + 660: 48 2f mov r20, r24 + 662: 59 2f mov r21, r25 + 664: 61 2f mov r22, r17 + 666: 70 2f mov r23, r16 + 668: 8b 2d mov r24, r11 + 66a: 9a 2d mov r25, r10 + 66c: 0e 94 ea 0a call 0x15d4 ; 0x15d4 <__gesf2> + 670: 18 16 cp r1, r24 + 672: 24 f0 brlt .+8 ; 0x67c <currentc_crunch+0x1a4> + 674: d1 2e mov r13, r17 + 676: e0 2e mov r14, r16 + 678: fb 2c mov r15, r11 + 67a: ca 2c mov r12, r10 } - 4e4: 2f 92 push r2 - 4e6: 3f 92 push r3 - 4e8: 4f 92 push r4 - 4ea: 5f 92 push r5 - 4ec: 6f 92 push r6 - 4ee: 7f 92 push r7 - 4f0: 8f 92 push r8 - 4f2: 9f 92 push r9 - 4f4: af 92 push r10 - 4f6: bf 92 push r11 - 4f8: cf 92 push r12 - 4fa: df 92 push r13 - 4fc: ef 92 push r14 - 4fe: ff 92 push r15 - 500: 0f 93 push r16 - 502: 1f 93 push r17 - 504: cf 93 push r28 - 506: df 93 push r29 - 508: ec 01 movw r28, r24 - 50a: 9a 01 movw r18, r20 - 50c: ab 01 movw r20, r22 - 50e: 68 a5 ldd r22, Y+40 ; 0x28 - 510: 79 a5 ldd r23, Y+41 ; 0x29 - 512: 8a a5 ldd r24, Y+42 ; 0x2a - 514: 9b a5 ldd r25, Y+43 ; 0x2b - 516: 0e 94 06 09 call 0x120c ; 0x120c <__subsf3> - 51a: 6b 01 movw r12, r22 - 51c: 7c 01 movw r14, r24 - 51e: 68 8f std Y+24, r22 ; 0x18 - 520: 79 8f std Y+25, r23 ; 0x19 - 522: 8a 8f std Y+26, r24 ; 0x1a - 524: 9b 8f std Y+27, r25 ; 0x1b - 526: 28 85 ldd r18, Y+8 ; 0x08 - 528: 39 85 ldd r19, Y+9 ; 0x09 - 52a: 4a 85 ldd r20, Y+10 ; 0x0a - 52c: 5b 85 ldd r21, Y+11 ; 0x0b - 52e: 0e 94 d7 0a call 0x15ae ; 0x15ae <__mulsf3> - 532: 2c 8d ldd r18, Y+28 ; 0x1c - 534: 3d 8d ldd r19, Y+29 ; 0x1d - 536: 4e 8d ldd r20, Y+30 ; 0x1e - 538: 5f 8d ldd r21, Y+31 ; 0x1f - 53a: 0e 94 07 09 call 0x120e ; 0x120e <__addsf3> - 53e: 16 2f mov r17, r22 - 540: 07 2f mov r16, r23 - 542: b8 2e mov r11, r24 - 544: a9 2e mov r10, r25 - 546: 9c a0 ldd r9, Y+36 ; 0x24 - 548: 8d a0 ldd r8, Y+37 ; 0x25 - 54a: 3e a0 ldd r3, Y+38 ; 0x26 - 54c: 2f a0 ldd r2, Y+39 ; 0x27 - 54e: 29 2d mov r18, r9 - 550: 38 2d mov r19, r8 - 552: 43 2d mov r20, r3 - 554: 52 2d mov r21, r2 - 556: 0e 94 73 09 call 0x12e6 ; 0x12e6 <__cmpsf2> - 55a: 88 23 and r24, r24 - 55c: a4 f0 brlt .+40 ; 0x586 <currentc_crunch+0xa2> - 55e: 98 a0 ldd r9, Y+32 ; 0x20 - 560: 89 a0 ldd r8, Y+33 ; 0x21 - 562: 3a a0 ldd r3, Y+34 ; 0x22 - 564: 2b a0 ldd r2, Y+35 ; 0x23 - 566: 29 2d mov r18, r9 - 568: 38 2d mov r19, r8 - 56a: 43 2d mov r20, r3 - 56c: 52 2d mov r21, r2 - 56e: 61 2f mov r22, r17 - 570: 70 2f mov r23, r16 - 572: 8b 2d mov r24, r11 - 574: 9a 2d mov r25, r10 - 576: 0e 94 d2 0a call 0x15a4 ; 0x15a4 <__gesf2> - 57a: 18 16 cp r1, r24 - 57c: 24 f0 brlt .+8 ; 0x586 <currentc_crunch+0xa2> - 57e: 91 2e mov r9, r17 - 580: 80 2e mov r8, r16 - 582: 3b 2c mov r3, r11 - 584: 2a 2c mov r2, r10 - 586: 89 2d mov r24, r9 - 588: 98 2d mov r25, r8 - 58a: a3 2d mov r26, r3 - 58c: b2 2d mov r27, r2 - 58e: 8c 8f std Y+28, r24 ; 0x1c - 590: 9d 8f std Y+29, r25 ; 0x1d - 592: ae 8f std Y+30, r26 ; 0x1e - 594: bf 8f std Y+31, r27 ; 0x1f - 596: 28 81 ld r18, Y - 598: 39 81 ldd r19, Y+1 ; 0x01 - 59a: 4a 81 ldd r20, Y+2 ; 0x02 - 59c: 5b 81 ldd r21, Y+3 ; 0x03 - 59e: c7 01 movw r24, r14 - 5a0: b6 01 movw r22, r12 - 5a2: 0e 94 d7 0a call 0x15ae ; 0x15ae <__mulsf3> - 5a6: 2b 01 movw r4, r22 - 5a8: 3c 01 movw r6, r24 - 5aa: 2c 81 ldd r18, Y+4 ; 0x04 - 5ac: 3d 81 ldd r19, Y+5 ; 0x05 - 5ae: 4e 81 ldd r20, Y+6 ; 0x06 - 5b0: 5f 81 ldd r21, Y+7 ; 0x07 - 5b2: 69 2d mov r22, r9 - 5b4: 78 2d mov r23, r8 - 5b6: 83 2d mov r24, r3 - 5b8: 92 2d mov r25, r2 - 5ba: 0e 94 d7 0a call 0x15ae ; 0x15ae <__mulsf3> - 5be: 4b 01 movw r8, r22 - 5c0: 5c 01 movw r10, r24 - 5c2: cc 8a std Y+20, r12 ; 0x14 - 5c4: dd 8a std Y+21, r13 ; 0x15 - 5c6: ee 8a std Y+22, r14 ; 0x16 - 5c8: ff 8a std Y+23, r15 ; 0x17 - 5ca: c7 01 movw r24, r14 - 5cc: b6 01 movw r22, r12 - 5ce: 0e 94 ea 09 call 0x13d4 ; 0x13d4 <__fixsfsi> - 5d2: 9b 01 movw r18, r22 - 5d4: 77 23 and r23, r23 - 5d6: 24 f4 brge .+8 ; 0x5e0 <currentc_crunch+0xfc> - 5d8: 22 27 eor r18, r18 - 5da: 33 27 eor r19, r19 - 5dc: 26 1b sub r18, r22 - 5de: 37 0b sbc r19, r23 - 5e0: b9 01 movw r22, r18 - 5e2: 33 0f add r19, r19 - 5e4: 88 0b sbc r24, r24 - 5e6: 99 0b sbc r25, r25 - 5e8: 0e 94 22 0a call 0x1444 ; 0x1444 <__floatsisf> - 5ec: 2c a5 ldd r18, Y+44 ; 0x2c - 5ee: 3d a5 ldd r19, Y+45 ; 0x2d - 5f0: 4e a5 ldd r20, Y+46 ; 0x2e - 5f2: 5f a5 ldd r21, Y+47 ; 0x2f - 5f4: 0e 94 73 09 call 0x12e6 ; 0x12e6 <__cmpsf2> - 5f8: 88 23 and r24, r24 - 5fa: 34 f4 brge .+12 ; 0x608 <currentc_crunch+0x124> - 5fc: 88 a9 ldd r24, Y+48 ; 0x30 - 5fe: 99 a9 ldd r25, Y+49 ; 0x31 - 600: 01 96 adiw r24, 0x01 ; 1 - 602: 88 ab std Y+48, r24 ; 0x30 - 604: 99 ab std Y+49, r25 ; 0x31 - 606: 02 c0 rjmp .+4 ; 0x60c <currentc_crunch+0x128> - 608: 18 aa std Y+48, r1 ; 0x30 - 60a: 19 aa std Y+49, r1 ; 0x31 - 60c: a5 01 movw r20, r10 - 60e: 94 01 movw r18, r8 - 610: c3 01 movw r24, r6 - 612: b2 01 movw r22, r4 - 614: 0e 94 07 09 call 0x120e ; 0x120e <__addsf3> - 618: 16 2f mov r17, r22 - 61a: 07 2f mov r16, r23 - 61c: b8 2e mov r11, r24 - 61e: a9 2e mov r10, r25 - 620: 6a 89 ldd r22, Y+18 ; 0x12 - 622: 7b 89 ldd r23, Y+19 ; 0x13 - 624: 07 2e mov r0, r23 - 626: 00 0c add r0, r0 - 628: 88 0b sbc r24, r24 - 62a: 99 0b sbc r25, r25 - 62c: 0e 94 22 0a call 0x1444 ; 0x1444 <__floatsisf> - 630: d6 2e mov r13, r22 - 632: e7 2e mov r14, r23 - 634: f8 2e mov r15, r24 - 636: c9 2e mov r12, r25 - 638: 26 2f mov r18, r22 - 63a: 37 2f mov r19, r23 - 63c: 48 2f mov r20, r24 - 63e: 59 2f mov r21, r25 - 640: 61 2f mov r22, r17 - 642: 70 2f mov r23, r16 - 644: 8b 2d mov r24, r11 - 646: 9a 2d mov r25, r10 - 648: 0e 94 73 09 call 0x12e6 ; 0x12e6 <__cmpsf2> - 64c: 88 23 and r24, r24 - 64e: e4 f0 brlt .+56 ; 0x688 <currentc_crunch+0x1a4> - 650: 68 89 ldd r22, Y+16 ; 0x10 - 652: 79 89 ldd r23, Y+17 ; 0x11 - 654: 07 2e mov r0, r23 - 656: 00 0c add r0, r0 - 658: 88 0b sbc r24, r24 - 65a: 99 0b sbc r25, r25 - 65c: 0e 94 22 0a call 0x1444 ; 0x1444 <__floatsisf> - 660: d6 2e mov r13, r22 - 662: e7 2e mov r14, r23 - 664: f8 2e mov r15, r24 - 666: c9 2e mov r12, r25 - 668: 26 2f mov r18, r22 - 66a: 37 2f mov r19, r23 - 66c: 48 2f mov r20, r24 - 66e: 59 2f mov r21, r25 - 670: 61 2f mov r22, r17 - 672: 70 2f mov r23, r16 - 674: 8b 2d mov r24, r11 - 676: 9a 2d mov r25, r10 - 678: 0e 94 d2 0a call 0x15a4 ; 0x15a4 <__gesf2> - 67c: 18 16 cp r1, r24 - 67e: 24 f0 brlt .+8 ; 0x688 <currentc_crunch+0x1a4> - 680: d1 2e mov r13, r17 - 682: e0 2e mov r14, r16 - 684: fb 2c mov r15, r11 - 686: ca 2c mov r12, r10 - 688: 6d 2d mov r22, r13 - 68a: 7e 2d mov r23, r14 - 68c: 8f 2d mov r24, r15 - 68e: 9c 2d mov r25, r12 - 690: df 91 pop r29 - 692: cf 91 pop r28 - 694: 1f 91 pop r17 - 696: 0f 91 pop r16 - 698: ff 90 pop r15 - 69a: ef 90 pop r14 - 69c: df 90 pop r13 - 69e: cf 90 pop r12 - 6a0: bf 90 pop r11 - 6a2: af 90 pop r10 - 6a4: 9f 90 pop r9 - 6a6: 8f 90 pop r8 - 6a8: 7f 90 pop r7 - 6aa: 6f 90 pop r6 - 6ac: 5f 90 pop r5 - 6ae: 4f 90 pop r4 - 6b0: 3f 90 pop r3 - 6b2: 2f 90 pop r2 + 67c: 6d 2d mov r22, r13 + 67e: 7e 2d mov r23, r14 + 680: 8f 2d mov r24, r15 + 682: 9c 2d mov r25, r12 + 684: df 91 pop r29 + 686: cf 91 pop r28 + 688: 1f 91 pop r17 + 68a: 0f 91 pop r16 + 68c: ff 90 pop r15 + 68e: ef 90 pop r14 + 690: df 90 pop r13 + 692: cf 90 pop r12 + 694: bf 90 pop r11 + 696: af 90 pop r10 + 698: 9f 90 pop r9 + 69a: 8f 90 pop r8 + 69c: 7f 90 pop r7 + 69e: 6f 90 pop r6 + 6a0: 5f 90 pop r5 + 6a2: 4f 90 pop r4 + 6a4: 3f 90 pop r3 + 6a6: 2f 90 pop r2 + 6a8: 08 95 ret + +000006aa <currentc_setSetpoint>: + + + void currentc_setSetpoint(currentc_t *cc, double val){ + cc->setpoint=val; + 6aa: fc 01 movw r30, r24 + 6ac: 40 a7 std Z+40, r20 ; 0x28 + 6ae: 51 a7 std Z+41, r21 ; 0x29 + 6b0: 62 a7 std Z+42, r22 ; 0x2a + 6b2: 73 a7 std Z+43, r23 ; 0x2b 6b4: 08 95 ret -000006b6 <currentc_setSetpoint>: +000006b6 <currentc_setAcceptableRange>: + } + + void currentc_setAcceptableRange(currentc_t *cc, double range){ + cc->acceptableRange=range; 6b6: fc 01 movw r30, r24 - 6b8: 40 a7 std Z+40, r20 ; 0x28 - 6ba: 51 a7 std Z+41, r21 ; 0x29 - 6bc: 62 a7 std Z+42, r22 ; 0x2a - 6be: 73 a7 std Z+43, r23 ; 0x2b + 6b8: 44 a7 std Z+44, r20 ; 0x2c + 6ba: 55 a7 std Z+45, r21 ; 0x2d + 6bc: 66 a7 std Z+46, r22 ; 0x2e + 6be: 77 a7 std Z+47, r23 ; 0x2f 6c0: 08 95 ret -000006c2 <currentc_setAcceptableRange>: - 6c2: fc 01 movw r30, r24 - 6c4: 44 a7 std Z+44, r20 ; 0x2c - 6c6: 55 a7 std Z+45, r21 ; 0x2d - 6c8: 66 a7 std Z+46, r22 ; 0x2e - 6ca: 77 a7 std Z+47, r23 ; 0x2f - 6cc: 08 95 ret +000006c2 <currentc_onTarget>: + } + + uint8_t currentc_onTarget(currentc_t *cc){ // if on target for more than 50 millis + 6c2: cf 93 push r28 + 6c4: df 93 push r29 + 6c6: ec 01 movw r28, r24 + + return cc->onTargetTicks * cc->dt >0.1; + 6c8: 68 a9 ldd r22, Y+48 ; 0x30 + 6ca: 79 a9 ldd r23, Y+49 ; 0x31 + 6cc: 07 2e mov r0, r23 + 6ce: 00 0c add r0, r0 + 6d0: 88 0b sbc r24, r24 + 6d2: 99 0b sbc r25, r25 + 6d4: 0e 94 3a 0a call 0x1474 ; 0x1474 <__floatsisf> + 6d8: 28 85 ldd r18, Y+8 ; 0x08 + 6da: 39 85 ldd r19, Y+9 ; 0x09 + 6dc: 4a 85 ldd r20, Y+10 ; 0x0a + 6de: 5b 85 ldd r21, Y+11 ; 0x0b + 6e0: 0e 94 ef 0a call 0x15de ; 0x15de <__mulsf3> + 6e4: c1 e0 ldi r28, 0x01 ; 1 + 6e6: 2d ec ldi r18, 0xCD ; 205 + 6e8: 3c ec ldi r19, 0xCC ; 204 + 6ea: 4c ec ldi r20, 0xCC ; 204 + 6ec: 5d e3 ldi r21, 0x3D ; 61 + 6ee: 0e 94 ea 0a call 0x15d4 ; 0x15d4 <__gesf2> + 6f2: 18 16 cp r1, r24 + 6f4: 0c f0 brlt .+2 ; 0x6f8 <currentc_onTarget+0x36> + 6f6: c0 e0 ldi r28, 0x00 ; 0 + } + 6f8: 8c 2f mov r24, r28 + 6fa: df 91 pop r29 + 6fc: cf 91 pop r28 + 6fe: 08 95 ret -000006ce <currentc_init>: +00000700 <currentc_init>: void currentc_init(currentc_t *cc, double P, double I, double dt, int MIN_IN, int MAX_IN, int MIN_OUT, int MAX_OUT){ - 6ce: 2f 92 push r2 - 6d0: 3f 92 push r3 - 6d2: 4f 92 push r4 - 6d4: 5f 92 push r5 - 6d6: 6f 92 push r6 - 6d8: 7f 92 push r7 - 6da: 8f 92 push r8 - 6dc: 9f 92 push r9 - 6de: af 92 push r10 - 6e0: bf 92 push r11 - 6e2: cf 92 push r12 - 6e4: df 92 push r13 - 6e6: ef 92 push r14 - 6e8: ff 92 push r15 - 6ea: 0f 93 push r16 - 6ec: 1f 93 push r17 - 6ee: cf 93 push r28 - 6f0: df 93 push r29 - 6f2: cd b7 in r28, 0x3d ; 61 - 6f4: de b7 in r29, 0x3e ; 62 - 6f6: 3c 01 movw r6, r24 - 6f8: 18 01 movw r2, r16 - 6fa: 29 01 movw r4, r18 - 6fc: 8e 89 ldd r24, Y+22 ; 0x16 - 6fe: 9f 89 ldd r25, Y+23 ; 0x17 - 700: 08 8d ldd r16, Y+24 ; 0x18 - 702: 19 8d ldd r17, Y+25 ; 0x19 + 700: 2f 92 push r2 + 702: 3f 92 push r3 + 704: 4f 92 push r4 + 706: 5f 92 push r5 + 708: 6f 92 push r6 + 70a: 7f 92 push r7 + 70c: 8f 92 push r8 + 70e: 9f 92 push r9 + 710: af 92 push r10 + 712: bf 92 push r11 + 714: cf 92 push r12 + 716: df 92 push r13 + 718: ef 92 push r14 + 71a: ff 92 push r15 + 71c: 0f 93 push r16 + 71e: 1f 93 push r17 + 720: cf 93 push r28 + 722: df 93 push r29 + 724: cd b7 in r28, 0x3d ; 61 + 726: de b7 in r29, 0x3e ; 62 + 728: 3c 01 movw r6, r24 + 72a: 18 01 movw r2, r16 + 72c: 29 01 movw r4, r18 + 72e: 8e 89 ldd r24, Y+22 ; 0x16 + 730: 9f 89 ldd r25, Y+23 ; 0x17 + 732: 08 8d ldd r16, Y+24 ; 0x18 + 734: 19 8d ldd r17, Y+25 ; 0x19 cc->P = P; - 704: f3 01 movw r30, r6 - 706: 40 83 st Z, r20 - 708: 51 83 std Z+1, r21 ; 0x01 - 70a: 62 83 std Z+2, r22 ; 0x02 - 70c: 73 83 std Z+3, r23 ; 0x03 + 736: f3 01 movw r30, r6 + 738: 40 83 st Z, r20 + 73a: 51 83 std Z+1, r21 ; 0x01 + 73c: 62 83 std Z+2, r22 ; 0x02 + 73e: 73 83 std Z+3, r23 ; 0x03 cc->I=I; - 70e: 24 82 std Z+4, r2 ; 0x04 - 710: 35 82 std Z+5, r3 ; 0x05 - 712: 46 82 std Z+6, r4 ; 0x06 - 714: 57 82 std Z+7, r5 ; 0x07 + 740: 24 82 std Z+4, r2 ; 0x04 + 742: 35 82 std Z+5, r3 ; 0x05 + 744: 46 82 std Z+6, r4 ; 0x06 + 746: 57 82 std Z+7, r5 ; 0x07 cc->dt=dt; - 716: c0 86 std Z+8, r12 ; 0x08 - 718: d1 86 std Z+9, r13 ; 0x09 - 71a: e2 86 std Z+10, r14 ; 0x0a - 71c: f3 86 std Z+11, r15 ; 0x0b + 748: c0 86 std Z+8, r12 ; 0x08 + 74a: d1 86 std Z+9, r13 ; 0x09 + 74c: e2 86 std Z+10, r14 ; 0x0a + 74e: f3 86 std Z+11, r15 ; 0x0b cc->MIN_IN=MIN_IN; - 71e: a6 86 std Z+14, r10 ; 0x0e - 720: b7 86 std Z+15, r11 ; 0x0f + 750: a6 86 std Z+14, r10 ; 0x0e + 752: b7 86 std Z+15, r11 ; 0x0f cc->MAX_IN=MAX_IN; - 722: 84 86 std Z+12, r8 ; 0x0c - 724: 95 86 std Z+13, r9 ; 0x0d + 754: 84 86 std Z+12, r8 ; 0x0c + 756: 95 86 std Z+13, r9 ; 0x0d cc->MIN_OUT=MIN_OUT; - 726: 82 8b std Z+18, r24 ; 0x12 - 728: 93 8b std Z+19, r25 ; 0x13 + 758: 82 8b std Z+18, r24 ; 0x12 + 75a: 93 8b std Z+19, r25 ; 0x13 cc->MAX_OUT=MAX_OUT; - 72a: 00 8b std Z+16, r16 ; 0x10 - 72c: 11 8b std Z+17, r17 ; 0x11 + 75c: 00 8b std Z+16, r16 ; 0x10 + 75e: 11 8b std Z+17, r17 ; 0x11 cc->minTotalError = MIN_OUT/ I; - 72e: bc 01 movw r22, r24 - 730: 99 0f add r25, r25 - 732: 88 0b sbc r24, r24 - 734: 99 0b sbc r25, r25 - 736: 0e 94 22 0a call 0x1444 ; 0x1444 <__floatsisf> - 73a: a2 01 movw r20, r4 - 73c: 91 01 movw r18, r2 - 73e: 0e 94 78 09 call 0x12f0 ; 0x12f0 <__divsf3> - 742: f3 01 movw r30, r6 - 744: 64 a3 std Z+36, r22 ; 0x24 - 746: 75 a3 std Z+37, r23 ; 0x25 - 748: 86 a3 std Z+38, r24 ; 0x26 - 74a: 97 a3 std Z+39, r25 ; 0x27 + 760: bc 01 movw r22, r24 + 762: 99 0f add r25, r25 + 764: 88 0b sbc r24, r24 + 766: 99 0b sbc r25, r25 + 768: 0e 94 3a 0a call 0x1474 ; 0x1474 <__floatsisf> + 76c: a2 01 movw r20, r4 + 76e: 91 01 movw r18, r2 + 770: 0e 94 90 09 call 0x1320 ; 0x1320 <__divsf3> + 774: f3 01 movw r30, r6 + 776: 64 a3 std Z+36, r22 ; 0x24 + 778: 75 a3 std Z+37, r23 ; 0x25 + 77a: 86 a3 std Z+38, r24 ; 0x26 + 77c: 97 a3 std Z+39, r25 ; 0x27 cc->maxtotalError = MAX_OUT/ I; - 74c: b8 01 movw r22, r16 - 74e: 11 0f add r17, r17 - 750: 88 0b sbc r24, r24 - 752: 99 0b sbc r25, r25 - 754: 0e 94 22 0a call 0x1444 ; 0x1444 <__floatsisf> - 758: a2 01 movw r20, r4 - 75a: 91 01 movw r18, r2 - 75c: 0e 94 78 09 call 0x12f0 ; 0x12f0 <__divsf3> - 760: f3 01 movw r30, r6 - 762: 60 a3 std Z+32, r22 ; 0x20 - 764: 71 a3 std Z+33, r23 ; 0x21 - 766: 82 a3 std Z+34, r24 ; 0x22 - 768: 93 a3 std Z+35, r25 ; 0x23 + 77e: b8 01 movw r22, r16 + 780: 11 0f add r17, r17 + 782: 88 0b sbc r24, r24 + 784: 99 0b sbc r25, r25 + 786: 0e 94 3a 0a call 0x1474 ; 0x1474 <__floatsisf> + 78a: a2 01 movw r20, r4 + 78c: 91 01 movw r18, r2 + 78e: 0e 94 90 09 call 0x1320 ; 0x1320 <__divsf3> + 792: f3 01 movw r30, r6 + 794: 60 a3 std Z+32, r22 ; 0x20 + 796: 71 a3 std Z+33, r23 ; 0x21 + 798: 82 a3 std Z+34, r24 ; 0x22 + 79a: 93 a3 std Z+35, r25 ; 0x23 cc->prevError=0; - 76a: 14 8a std Z+20, r1 ; 0x14 - 76c: 15 8a std Z+21, r1 ; 0x15 - 76e: 16 8a std Z+22, r1 ; 0x16 - 770: 17 8a std Z+23, r1 ; 0x17 + 79c: 14 8a std Z+20, r1 ; 0x14 + 79e: 15 8a std Z+21, r1 ; 0x15 + 7a0: 16 8a std Z+22, r1 ; 0x16 + 7a2: 17 8a std Z+23, r1 ; 0x17 cc->currentError=0; - 772: 10 8e std Z+24, r1 ; 0x18 - 774: 11 8e std Z+25, r1 ; 0x19 - 776: 12 8e std Z+26, r1 ; 0x1a - 778: 13 8e std Z+27, r1 ; 0x1b + 7a4: 10 8e std Z+24, r1 ; 0x18 + 7a6: 11 8e std Z+25, r1 ; 0x19 + 7a8: 12 8e std Z+26, r1 ; 0x1a + 7aa: 13 8e std Z+27, r1 ; 0x1b cc->totalError=0; - 77a: 14 8e std Z+28, r1 ; 0x1c - 77c: 15 8e std Z+29, r1 ; 0x1d - 77e: 16 8e std Z+30, r1 ; 0x1e - 780: 17 8e std Z+31, r1 ; 0x1f + 7ac: 14 8e std Z+28, r1 ; 0x1c + 7ae: 15 8e std Z+29, r1 ; 0x1d + 7b0: 16 8e std Z+30, r1 ; 0x1e + 7b2: 17 8e std Z+31, r1 ; 0x1f cc->setpoint=0; - 782: 10 a6 std Z+40, r1 ; 0x28 - 784: 11 a6 std Z+41, r1 ; 0x29 - 786: 12 a6 std Z+42, r1 ; 0x2a - 788: 13 a6 std Z+43, r1 ; 0x2b - cc->acceptableRange=30; - 78a: 80 e0 ldi r24, 0x00 ; 0 - 78c: 90 e0 ldi r25, 0x00 ; 0 - 78e: a0 ef ldi r26, 0xF0 ; 240 - 790: b1 e4 ldi r27, 0x41 ; 65 - 792: 84 a7 std Z+44, r24 ; 0x2c - 794: 95 a7 std Z+45, r25 ; 0x2d - 796: a6 a7 std Z+46, r26 ; 0x2e - 798: b7 a7 std Z+47, r27 ; 0x2f + 7b4: 10 a6 std Z+40, r1 ; 0x28 + 7b6: 11 a6 std Z+41, r1 ; 0x29 + 7b8: 12 a6 std Z+42, r1 ; 0x2a + 7ba: 13 a6 std Z+43, r1 ; 0x2b + cc->acceptableRange=20; + 7bc: 80 e0 ldi r24, 0x00 ; 0 + 7be: 90 e0 ldi r25, 0x00 ; 0 + 7c0: a0 ea ldi r26, 0xA0 ; 160 + 7c2: b1 e4 ldi r27, 0x41 ; 65 + 7c4: 84 a7 std Z+44, r24 ; 0x2c + 7c6: 95 a7 std Z+45, r25 ; 0x2d + 7c8: a6 a7 std Z+46, r26 ; 0x2e + 7ca: b7 a7 std Z+47, r27 ; 0x2f cc->onTargetTicks=0; - 79a: 10 aa std Z+48, r1 ; 0x30 - 79c: 11 aa std Z+49, r1 ; 0x31 - 79e: df 91 pop r29 - 7a0: cf 91 pop r28 - 7a2: 1f 91 pop r17 - 7a4: 0f 91 pop r16 - 7a6: ff 90 pop r15 - 7a8: ef 90 pop r14 - 7aa: df 90 pop r13 - 7ac: cf 90 pop r12 - 7ae: bf 90 pop r11 - 7b0: af 90 pop r10 - 7b2: 9f 90 pop r9 - 7b4: 8f 90 pop r8 - 7b6: 7f 90 pop r7 - 7b8: 6f 90 pop r6 - 7ba: 5f 90 pop r5 - 7bc: 4f 90 pop r4 - 7be: 3f 90 pop r3 - 7c0: 2f 90 pop r2 - 7c2: 08 95 ret - -000007c4 <l_filter>: + 7cc: 10 aa std Z+48, r1 ; 0x30 + 7ce: 11 aa std Z+49, r1 ; 0x31 + 7d0: df 91 pop r29 + 7d2: cf 91 pop r28 + 7d4: 1f 91 pop r17 + 7d6: 0f 91 pop r16 + 7d8: ff 90 pop r15 + 7da: ef 90 pop r14 + 7dc: df 90 pop r13 + 7de: cf 90 pop r12 + 7e0: bf 90 pop r11 + 7e2: af 90 pop r10 + 7e4: 9f 90 pop r9 + 7e6: 8f 90 pop r8 + 7e8: 7f 90 pop r7 + 7ea: 6f 90 pop r6 + 7ec: 5f 90 pop r5 + 7ee: 4f 90 pop r4 + 7f0: 3f 90 pop r3 + 7f2: 2f 90 pop r2 + 7f4: 08 95 ret + +000007f6 <l_filter>: */ #include "l_filter.h" #include <avr/io.h> - uint16_t l_filter(l_filter_t *filter, int input){ - 7c4: cf 92 push r12 - 7c6: df 92 push r13 - 7c8: ef 92 push r14 - 7ca: ff 92 push r15 - 7cc: fc 01 movw r30, r24 - filter->filter_reg = (filter->filter_reg) - ((filter->filter_reg) >> filter->K) +(input>>filter->K); // y(n) = (1-2^-k)(y(n-1)) + (2^-k)(x(n)) - 7ce: 81 81 ldd r24, Z+1 ; 0x01 - 7d0: 92 81 ldd r25, Z+2 ; 0x02 - 7d2: a3 81 ldd r26, Z+3 ; 0x03 - 7d4: b4 81 ldd r27, Z+4 ; 0x04 - 7d6: 20 81 ld r18, Z - 7d8: 6c 01 movw r12, r24 - 7da: 7d 01 movw r14, r26 - 7dc: 02 2e mov r0, r18 - 7de: 04 c0 rjmp .+8 ; 0x7e8 <l_filter+0x24> - 7e0: f5 94 asr r15 - 7e2: e7 94 ror r14 - 7e4: d7 94 ror r13 - 7e6: c7 94 ror r12 - 7e8: 0a 94 dec r0 - 7ea: d2 f7 brpl .-12 ; 0x7e0 <l_filter+0x1c> - 7ec: 8c 19 sub r24, r12 - 7ee: 9d 09 sbc r25, r13 - 7f0: ae 09 sbc r26, r14 - 7f2: bf 09 sbc r27, r15 - 7f4: ab 01 movw r20, r22 - 7f6: 02 c0 rjmp .+4 ; 0x7fc <l_filter+0x38> - 7f8: 55 95 asr r21 - 7fa: 47 95 ror r20 - 7fc: 2a 95 dec r18 - 7fe: e2 f7 brpl .-8 ; 0x7f8 <l_filter+0x34> - 800: 05 2e mov r0, r21 - 802: 00 0c add r0, r0 - 804: 66 0b sbc r22, r22 - 806: 77 0b sbc r23, r23 - 808: 84 0f add r24, r20 - 80a: 95 1f adc r25, r21 - 80c: a6 1f adc r26, r22 - 80e: b7 1f adc r27, r23 - 810: 81 83 std Z+1, r24 ; 0x01 - 812: 92 83 std Z+2, r25 ; 0x02 - 814: a3 83 std Z+3, r26 ; 0x03 - 816: b4 83 std Z+4, r27 ; 0x04 + int l_filter(l_filter_t *filter, int input){ + 7f6: cf 92 push r12 + 7f8: df 92 push r13 + 7fa: ef 92 push r14 + 7fc: ff 92 push r15 + 7fe: 0f 93 push r16 + 800: 1f 93 push r17 + 802: cf 93 push r28 + 804: df 93 push r29 + 806: 8c 01 movw r16, r24 + 808: eb 01 movw r28, r22 + //filter->filter_reg = (filter->filter_reg) - ((filter->filter_reg) >> filter->K) +(input>>filter->K); // y(n) = (1-2^-k)(y(n-1)) + (2^-k)(x(n)) + filter->filter_reg = filter->filter_reg*0.985 + 0.015*input; + 80a: fc 01 movw r30, r24 + 80c: 61 81 ldd r22, Z+1 ; 0x01 + 80e: 72 81 ldd r23, Z+2 ; 0x02 + 810: 07 2e mov r0, r23 + 812: 00 0c add r0, r0 + 814: 88 0b sbc r24, r24 + 816: 99 0b sbc r25, r25 + 818: 0e 94 3a 0a call 0x1474 ; 0x1474 <__floatsisf> + 81c: 26 ef ldi r18, 0xF6 ; 246 + 81e: 38 e2 ldi r19, 0x28 ; 40 + 820: 4c e7 ldi r20, 0x7C ; 124 + 822: 5f e3 ldi r21, 0x3F ; 63 + 824: 0e 94 ef 0a call 0x15de ; 0x15de <__mulsf3> + 828: 6b 01 movw r12, r22 + 82a: 7c 01 movw r14, r24 + 82c: be 01 movw r22, r28 + 82e: dd 0f add r29, r29 + 830: 88 0b sbc r24, r24 + 832: 99 0b sbc r25, r25 + 834: 0e 94 3a 0a call 0x1474 ; 0x1474 <__floatsisf> + 838: 2f e8 ldi r18, 0x8F ; 143 + 83a: 32 ec ldi r19, 0xC2 ; 194 + 83c: 45 e7 ldi r20, 0x75 ; 117 + 83e: 5c e3 ldi r21, 0x3C ; 60 + 840: 0e 94 ef 0a call 0x15de ; 0x15de <__mulsf3> + 844: 9b 01 movw r18, r22 + 846: ac 01 movw r20, r24 + 848: c7 01 movw r24, r14 + 84a: b6 01 movw r22, r12 + 84c: 0e 94 1f 09 call 0x123e ; 0x123e <__addsf3> + 850: 0e 94 02 0a call 0x1404 ; 0x1404 <__fixsfsi> + 854: f8 01 movw r30, r16 + 856: 61 83 std Z+1, r22 ; 0x01 + 858: 72 83 std Z+2, r23 ; 0x02 return filter->filter_reg; }; - 818: ff 90 pop r15 - 81a: ef 90 pop r14 - 81c: df 90 pop r13 - 81e: cf 90 pop r12 - 820: 08 95 ret - -00000822 <l_filter_init>: + 85a: cb 01 movw r24, r22 + 85c: df 91 pop r29 + 85e: cf 91 pop r28 + 860: 1f 91 pop r17 + 862: 0f 91 pop r16 + 864: ff 90 pop r15 + 866: ef 90 pop r14 + 868: df 90 pop r13 + 86a: cf 90 pop r12 + 86c: 08 95 ret + +0000086e <l_filter_init>: void l_filter_init(l_filter_t *filter, uint8_t K){ filter->filter_reg=0; - 822: fc 01 movw r30, r24 - 824: 11 82 std Z+1, r1 ; 0x01 - 826: 12 82 std Z+2, r1 ; 0x02 - 828: 13 82 std Z+3, r1 ; 0x03 - 82a: 14 82 std Z+4, r1 ; 0x04 + 86e: fc 01 movw r30, r24 + 870: 11 82 std Z+1, r1 ; 0x01 + 872: 12 82 std Z+2, r1 ; 0x02 filter->K = K; - 82c: 60 83 st Z, r22 - 82e: 08 95 ret + 874: 60 83 st Z, r22 + 876: 08 95 ret -00000830 <pwm_set>: +00000878 <pwm_set>: void pwm_set_dutycycle(pwm_t *pwm, double val){ //setPWM to value between 0 and 100 uint16_t pwm_val = (CONSTRAIN(val,0.0,100.0)/100.0) * per; pwm_set(pwm,pwm_val); } void pwm_set(pwm_t *pwm, uint16_t val){ - 830: fc 01 movw r30, r24 + 878: fc 01 movw r30, r24 uint8_t vall = (uint8_t) val; uint8_t valh = (uint8_t) (val >> 8); uint8_t channel = pwm->pwm_channel; - 832: 83 81 ldd r24, Z+3 ; 0x03 - + 87a: 83 81 ldd r24, Z+3 ; 0x03 if(channel & (TC0_CCAEN_bm)){ - 834: 84 ff sbrs r24, 4 - 836: 09 c0 rjmp .+18 ; 0x84a <pwm_set+0x1a> + 87c: 84 ff sbrs r24, 4 + 87e: 09 c0 rjmp .+18 ; 0x892 <pwm_set+0x1a> pwm->timer->CCABUFH = valh; - 838: a0 81 ld r26, Z - 83a: b1 81 ldd r27, Z+1 ; 0x01 - 83c: d9 96 adiw r26, 0x39 ; 57 - 83e: 7c 93 st X, r23 + 880: a0 81 ld r26, Z + 882: b1 81 ldd r27, Z+1 ; 0x01 + 884: d9 96 adiw r26, 0x39 ; 57 + 886: 7c 93 st X, r23 pwm->timer->CCABUFL = vall; - 840: 01 90 ld r0, Z+ - 842: f0 81 ld r31, Z - 844: e0 2d mov r30, r0 - 846: 60 af std Z+56, r22 ; 0x38 - 848: 08 95 ret + 888: 01 90 ld r0, Z+ + 88a: f0 81 ld r31, Z + 88c: e0 2d mov r30, r0 + 88e: 60 af std Z+56, r22 ; 0x38 + 890: 08 95 ret }else if(channel & (TC0_CCBEN_bm)){ - 84a: 85 ff sbrs r24, 5 - 84c: 09 c0 rjmp .+18 ; 0x860 <pwm_set+0x30> + 892: 85 ff sbrs r24, 5 + 894: 09 c0 rjmp .+18 ; 0x8a8 <pwm_set+0x30> pwm->timer->CCBBUFH = valh; - 84e: a0 81 ld r26, Z - 850: b1 81 ldd r27, Z+1 ; 0x01 - 852: db 96 adiw r26, 0x3b ; 59 - 854: 7c 93 st X, r23 + 896: a0 81 ld r26, Z + 898: b1 81 ldd r27, Z+1 ; 0x01 + 89a: db 96 adiw r26, 0x3b ; 59 + 89c: 7c 93 st X, r23 pwm->timer->CCBBUFL = vall; - 856: 01 90 ld r0, Z+ - 858: f0 81 ld r31, Z - 85a: e0 2d mov r30, r0 - 85c: 62 af std Z+58, r22 ; 0x3a - 85e: 08 95 ret + 89e: 01 90 ld r0, Z+ + 8a0: f0 81 ld r31, Z + 8a2: e0 2d mov r30, r0 + 8a4: 62 af std Z+58, r22 ; 0x3a + 8a6: 08 95 ret }else if(channel & (TC0_CCCEN_bm)){ - 860: 86 ff sbrs r24, 6 - 862: 09 c0 rjmp .+18 ; 0x876 <pwm_set+0x46> + 8a8: 86 ff sbrs r24, 6 + 8aa: 09 c0 rjmp .+18 ; 0x8be <pwm_set+0x46> pwm->timer->CCCBUFH = valh; - 864: a0 81 ld r26, Z - 866: b1 81 ldd r27, Z+1 ; 0x01 - 868: dd 96 adiw r26, 0x3d ; 61 - 86a: 7c 93 st X, r23 + 8ac: a0 81 ld r26, Z + 8ae: b1 81 ldd r27, Z+1 ; 0x01 + 8b0: dd 96 adiw r26, 0x3d ; 61 + 8b2: 7c 93 st X, r23 pwm->timer->CCCBUFL = vall; - 86c: 01 90 ld r0, Z+ - 86e: f0 81 ld r31, Z - 870: e0 2d mov r30, r0 - 872: 64 af std Z+60, r22 ; 0x3c - 874: 08 95 ret + 8b4: 01 90 ld r0, Z+ + 8b6: f0 81 ld r31, Z + 8b8: e0 2d mov r30, r0 + 8ba: 64 af std Z+60, r22 ; 0x3c + 8bc: 08 95 ret }else if(channel & (TC0_CCDEN_bm)){ - 876: 88 23 and r24, r24 - 878: 44 f4 brge .+16 ; 0x88a <pwm_set+0x5a> + 8be: 88 23 and r24, r24 + 8c0: 44 f4 brge .+16 ; 0x8d2 <pwm_set+0x5a> pwm->timer->CCDBUFH = valh; - 87a: a0 81 ld r26, Z - 87c: b1 81 ldd r27, Z+1 ; 0x01 - 87e: df 96 adiw r26, 0x3f ; 63 - 880: 7c 93 st X, r23 + 8c2: a0 81 ld r26, Z + 8c4: b1 81 ldd r27, Z+1 ; 0x01 + 8c6: df 96 adiw r26, 0x3f ; 63 + 8c8: 7c 93 st X, r23 pwm->timer->CCDBUFL = vall; - 882: 01 90 ld r0, Z+ - 884: f0 81 ld r31, Z - 886: e0 2d mov r30, r0 - 888: 66 af std Z+62, r22 ; 0x3e - 88a: 08 95 ret + 8ca: 01 90 ld r0, Z+ + 8cc: f0 81 ld r31, Z + 8ce: e0 2d mov r30, r0 + 8d0: 66 af std Z+62, r22 ; 0x3e + 8d2: 08 95 ret -0000088c <pwm_set_dutycycle>: +000008d4 <pwm_set_dutycycle>: #include <math.h> uint16_t per; void pwm_set_dutycycle(pwm_t *pwm, double val){ //setPWM to value between 0 and 100 - 88c: cf 92 push r12 - 88e: df 92 push r13 - 890: ef 92 push r14 - 892: ff 92 push r15 - 894: cf 93 push r28 - 896: df 93 push r29 - 898: ec 01 movw r28, r24 - 89a: 6a 01 movw r12, r20 - 89c: 7b 01 movw r14, r22 + 8d4: cf 92 push r12 + 8d6: df 92 push r13 + 8d8: ef 92 push r14 + 8da: ff 92 push r15 + 8dc: cf 93 push r28 + 8de: df 93 push r29 + 8e0: ec 01 movw r28, r24 + 8e2: 6a 01 movw r12, r20 + 8e4: 7b 01 movw r14, r22 uint16_t pwm_val = (CONSTRAIN(val,0.0,100.0)/100.0) * per; - 89e: 20 e0 ldi r18, 0x00 ; 0 - 8a0: 30 e0 ldi r19, 0x00 ; 0 - 8a2: a9 01 movw r20, r18 - 8a4: c7 01 movw r24, r14 - 8a6: b6 01 movw r22, r12 - 8a8: 0e 94 73 09 call 0x12e6 ; 0x12e6 <__cmpsf2> - 8ac: 88 23 and r24, r24 - 8ae: ac f0 brlt .+42 ; 0x8da <pwm_set_dutycycle+0x4e> - 8b0: 20 e0 ldi r18, 0x00 ; 0 - 8b2: 30 e0 ldi r19, 0x00 ; 0 - 8b4: 48 ec ldi r20, 0xC8 ; 200 - 8b6: 52 e4 ldi r21, 0x42 ; 66 - 8b8: c7 01 movw r24, r14 - 8ba: b6 01 movw r22, r12 - 8bc: 0e 94 d2 0a call 0x15a4 ; 0x15a4 <__gesf2> - 8c0: 18 16 cp r1, r24 - 8c2: 7c f0 brlt .+30 ; 0x8e2 <pwm_set_dutycycle+0x56> - 8c4: 20 e0 ldi r18, 0x00 ; 0 - 8c6: 30 e0 ldi r19, 0x00 ; 0 - 8c8: 48 ec ldi r20, 0xC8 ; 200 - 8ca: 52 e4 ldi r21, 0x42 ; 66 - 8cc: c7 01 movw r24, r14 - 8ce: b6 01 movw r22, r12 - 8d0: 0e 94 78 09 call 0x12f0 ; 0x12f0 <__divsf3> - 8d4: 6b 01 movw r12, r22 - 8d6: 7c 01 movw r14, r24 - 8d8: 0c c0 rjmp .+24 ; 0x8f2 <pwm_set_dutycycle+0x66> - 8da: c1 2c mov r12, r1 - 8dc: d1 2c mov r13, r1 - 8de: 76 01 movw r14, r12 - 8e0: 08 c0 rjmp .+16 ; 0x8f2 <pwm_set_dutycycle+0x66> - 8e2: 0f 2e mov r0, r31 - 8e4: c1 2c mov r12, r1 - 8e6: d1 2c mov r13, r1 - 8e8: f0 e8 ldi r31, 0x80 ; 128 - 8ea: ef 2e mov r14, r31 - 8ec: ff e3 ldi r31, 0x3F ; 63 - 8ee: ff 2e mov r15, r31 - 8f0: f0 2d mov r31, r0 + 8e6: 20 e0 ldi r18, 0x00 ; 0 + 8e8: 30 e0 ldi r19, 0x00 ; 0 + 8ea: a9 01 movw r20, r18 + 8ec: c7 01 movw r24, r14 + 8ee: b6 01 movw r22, r12 + 8f0: 0e 94 8b 09 call 0x1316 ; 0x1316 <__cmpsf2> + 8f4: 88 23 and r24, r24 + 8f6: ac f0 brlt .+42 ; 0x922 <pwm_set_dutycycle+0x4e> + 8f8: 20 e0 ldi r18, 0x00 ; 0 + 8fa: 30 e0 ldi r19, 0x00 ; 0 + 8fc: 48 ec ldi r20, 0xC8 ; 200 + 8fe: 52 e4 ldi r21, 0x42 ; 66 + 900: c7 01 movw r24, r14 + 902: b6 01 movw r22, r12 + 904: 0e 94 ea 0a call 0x15d4 ; 0x15d4 <__gesf2> + 908: 18 16 cp r1, r24 + 90a: 7c f0 brlt .+30 ; 0x92a <pwm_set_dutycycle+0x56> + 90c: 20 e0 ldi r18, 0x00 ; 0 + 90e: 30 e0 ldi r19, 0x00 ; 0 + 910: 48 ec ldi r20, 0xC8 ; 200 + 912: 52 e4 ldi r21, 0x42 ; 66 + 914: c7 01 movw r24, r14 + 916: b6 01 movw r22, r12 + 918: 0e 94 90 09 call 0x1320 ; 0x1320 <__divsf3> + 91c: 6b 01 movw r12, r22 + 91e: 7c 01 movw r14, r24 + 920: 0c c0 rjmp .+24 ; 0x93a <pwm_set_dutycycle+0x66> + 922: c1 2c mov r12, r1 + 924: d1 2c mov r13, r1 + 926: 76 01 movw r14, r12 + 928: 08 c0 rjmp .+16 ; 0x93a <pwm_set_dutycycle+0x66> + 92a: 0f 2e mov r0, r31 + 92c: c1 2c mov r12, r1 + 92e: d1 2c mov r13, r1 + 930: f0 e8 ldi r31, 0x80 ; 128 + 932: ef 2e mov r14, r31 + 934: ff e3 ldi r31, 0x3F ; 63 + 936: ff 2e mov r15, r31 + 938: f0 2d mov r31, r0 pwm_set(pwm,pwm_val); - 8f2: 60 91 08 20 lds r22, 0x2008 ; 0x802008 <per> - 8f6: 70 91 09 20 lds r23, 0x2009 ; 0x802009 <per+0x1> - 8fa: 80 e0 ldi r24, 0x00 ; 0 - 8fc: 90 e0 ldi r25, 0x00 ; 0 - 8fe: 0e 94 20 0a call 0x1440 ; 0x1440 <__floatunsisf> - 902: a7 01 movw r20, r14 - 904: 96 01 movw r18, r12 - 906: 0e 94 d7 0a call 0x15ae ; 0x15ae <__mulsf3> - 90a: 0e 94 f1 09 call 0x13e2 ; 0x13e2 <__fixunssfsi> - 90e: ce 01 movw r24, r28 - 910: 0e 94 18 04 call 0x830 ; 0x830 <pwm_set> + 93a: 60 91 08 20 lds r22, 0x2008 ; 0x802008 <per> + 93e: 70 91 09 20 lds r23, 0x2009 ; 0x802009 <per+0x1> + 942: 80 e0 ldi r24, 0x00 ; 0 + 944: 90 e0 ldi r25, 0x00 ; 0 + 946: 0e 94 38 0a call 0x1470 ; 0x1470 <__floatunsisf> + 94a: a7 01 movw r20, r14 + 94c: 96 01 movw r18, r12 + 94e: 0e 94 ef 0a call 0x15de ; 0x15de <__mulsf3> + 952: 0e 94 09 0a call 0x1412 ; 0x1412 <__fixunssfsi> + 956: ce 01 movw r24, r28 + 958: 0e 94 3c 04 call 0x878 ; 0x878 <pwm_set> } - 914: df 91 pop r29 - 916: cf 91 pop r28 - 918: ff 90 pop r15 - 91a: ef 90 pop r14 - 91c: df 90 pop r13 - 91e: cf 90 pop r12 - 920: 08 95 ret - -00000922 <pwm_init>: + 95c: df 91 pop r29 + 95e: cf 91 pop r28 + 960: ff 90 pop r15 + 962: ef 90 pop r14 + 964: df 90 pop r13 + 966: cf 90 pop r12 + 968: 08 95 ret + +0000096a <pwm_init>: } //frequencies are limited due to prescalar and 16 bit numbers int pwm_init(pwm_t *pwm, TC0_t *timer, TC_CLKSEL_t prescalar, uint8_t pwm_channel, uint16_t base_frequency, uint16_t desiredFrequency){//frequency in khz - 922: ef 92 push r14 - 924: ff 92 push r15 - 926: 0f 93 push r16 - 928: 1f 93 push r17 - 92a: cf 93 push r28 - 92c: df 93 push r29 - 92e: fc 01 movw r30, r24 - 930: eb 01 movw r28, r22 - 932: c8 01 movw r24, r16 - 934: b7 01 movw r22, r14 + 96a: ef 92 push r14 + 96c: ff 92 push r15 + 96e: 0f 93 push r16 + 970: 1f 93 push r17 + 972: cf 93 push r28 + 974: df 93 push r29 + 976: fc 01 movw r30, r24 + 978: eb 01 movw r28, r22 + 97a: c8 01 movw r24, r16 + 97c: b7 01 movw r22, r14 pwm->timer = timer; - 936: c0 83 st Z, r28 - 938: d1 83 std Z+1, r29 ; 0x01 + 97e: c0 83 st Z, r28 + 980: d1 83 std Z+1, r29 ; 0x01 pwm->prescalar=prescalar; - 93a: 42 83 std Z+2, r20 ; 0x02 + 982: 42 83 std Z+2, r20 ; 0x02 pwm->pwm_channel=pwm_channel; - 93c: 23 83 std Z+3, r18 ; 0x03 + 984: 23 83 std Z+3, r18 ; 0x03 pwm->base_frequency = base_frequency; - 93e: 04 83 std Z+4, r16 ; 0x04 - 940: 15 83 std Z+5, r17 ; 0x05 + 986: 04 83 std Z+4, r16 ; 0x04 + 988: 15 83 std Z+5, r17 ; 0x05 pwm->desired_frequency = desiredFrequency; - 942: e6 82 std Z+6, r14 ; 0x06 - 944: f7 82 std Z+7, r15 ; 0x07 + 98a: e6 82 std Z+6, r14 ; 0x06 + 98c: f7 82 std Z+7, r15 ; 0x07 timer->CTRLA = prescalar; - 946: 48 83 st Y, r20 + 98e: 48 83 st Y, r20 timer->CTRLB = TC_WGMODE_SINGLESLOPE_gc | pwm_channel;//wave generation mode single slope, enabling CCA open port OC - 948: 23 60 ori r18, 0x03 ; 3 - 94a: 29 83 std Y+1, r18 ; 0x01 + 990: 23 60 ori r18, 0x03 ; 3 + 992: 29 83 std Y+1, r18 ; 0x01 int prescalardiv= pow(2,prescalar-1);//gets division from prescalar - taking advantage of way TC_CLKSEL_t is written prescalardiv=1; per = (base_frequency/prescalardiv)/(desiredFrequency); // x = (BF/p)/DF Base Frequency, prescalar, desired frequency - 94c: 0e 94 44 0b call 0x1688 ; 0x1688 <__udivmodhi4> - 950: 60 93 08 20 sts 0x2008, r22 ; 0x802008 <per> - 954: 70 93 09 20 sts 0x2009, r23 ; 0x802009 <per+0x1> + 994: 0e 94 5c 0b call 0x16b8 ; 0x16b8 <__udivmodhi4> + 998: 60 93 08 20 sts 0x2008, r22 ; 0x802008 <per> + 99c: 70 93 09 20 sts 0x2009, r23 ; 0x802009 <per+0x1> } uint8_t perl = (uint8_t) per; uint8_t perh = (uint8_t) (per >> 8); timer->PERBUFL = perl;//for the waveform period - controls TOP value - 958: 6e ab std Y+54, r22 ; 0x36 + 9a0: 6e ab std Y+54, r22 ; 0x36 timer->PERBUFH = perh; - 95a: 7f ab std Y+55, r23 ; 0x37 + 9a2: 7f ab std Y+55, r23 ; 0x37 pwm_set(pwm,0); - 95c: 60 e0 ldi r22, 0x00 ; 0 - 95e: 70 e0 ldi r23, 0x00 ; 0 - 960: cf 01 movw r24, r30 - 962: 0e 94 18 04 call 0x830 ; 0x830 <pwm_set> + 9a4: 60 e0 ldi r22, 0x00 ; 0 + 9a6: 70 e0 ldi r23, 0x00 ; 0 + 9a8: cf 01 movw r24, r30 + 9aa: 0e 94 3c 04 call 0x878 ; 0x878 <pwm_set> return 0; - 966: 80 e0 ldi r24, 0x00 ; 0 - 968: 90 e0 ldi r25, 0x00 ; 0 - 96a: df 91 pop r29 - 96c: cf 91 pop r28 - 96e: 1f 91 pop r17 - 970: 0f 91 pop r16 - 972: ff 90 pop r15 - 974: ef 90 pop r14 - 976: 08 95 ret - -00000978 <motor_init>: + 9ae: 80 e0 ldi r24, 0x00 ; 0 + 9b0: 90 e0 ldi r25, 0x00 ; 0 + 9b2: df 91 pop r29 + 9b4: cf 91 pop r28 + 9b6: 1f 91 pop r17 + 9b8: 0f 91 pop r16 + 9ba: ff 90 pop r15 + 9bc: ef 90 pop r14 + 9be: 08 95 ret + +000009c0 <motor_init>: #include "motor.h" void motor_init(motor_t *motor, pin_t *INA_pin, pin_t *INB_pin, pwm_t *PWM) { - 978: cf 93 push r28 - 97a: df 93 push r29 - 97c: ec 01 movw r28, r24 - 97e: cb 01 movw r24, r22 + 9c0: cf 93 push r28 + 9c2: df 93 push r29 + 9c4: ec 01 movw r28, r24 + 9c6: cb 01 movw r24, r22 motor->INA_pin = INA_pin; - 980: 68 83 st Y, r22 - 982: 79 83 std Y+1, r23 ; 0x01 + 9c8: 68 83 st Y, r22 + 9ca: 79 83 std Y+1, r23 ; 0x01 motor->INB_pin = INB_pin; - 984: 4a 83 std Y+2, r20 ; 0x02 - 986: 5b 83 std Y+3, r21 ; 0x03 + 9cc: 4a 83 std Y+2, r20 ; 0x02 + 9ce: 5b 83 std Y+3, r21 ; 0x03 motor->PWM = PWM; - 988: 2c 83 std Y+4, r18 ; 0x04 - 98a: 3d 83 std Y+5, r19 ; 0x05 + 9d0: 2c 83 std Y+4, r18 ; 0x04 + 9d2: 3d 83 std Y+5, r19 ; 0x05 + pin_set(motor->INA_pin); - 98c: 0e 94 ce 06 call 0xd9c ; 0xd9c <pin_set> + 9d4: 0e 94 e6 06 call 0xdcc ; 0xdcc <pin_set> pin_clear(motor->INB_pin); - 990: 8a 81 ldd r24, Y+2 ; 0x02 - 992: 9b 81 ldd r25, Y+3 ; 0x03 - 994: 0e 94 d6 06 call 0xdac ; 0xdac <pin_clear> + 9d8: 8a 81 ldd r24, Y+2 ; 0x02 + 9da: 9b 81 ldd r25, Y+3 ; 0x03 + 9dc: 0e 94 ee 06 call 0xddc ; 0xddc <pin_clear> } - 998: df 91 pop r29 - 99a: cf 91 pop r28 - 99c: 08 95 ret + 9e0: df 91 pop r29 + 9e2: cf 91 pop r28 + 9e4: 08 95 ret -0000099e <motor_set>: +000009e6 <motor_set>: void motor_set(motor_t *motor, double val){ - 99e: cf 92 push r12 - 9a0: df 92 push r13 - 9a2: ef 92 push r14 - 9a4: ff 92 push r15 - 9a6: cf 93 push r28 - 9a8: df 93 push r29 - 9aa: ec 01 movw r28, r24 - 9ac: 6a 01 movw r12, r20 - 9ae: 7b 01 movw r14, r22 + 9e6: cf 92 push r12 + 9e8: df 92 push r13 + 9ea: ef 92 push r14 + 9ec: ff 92 push r15 + 9ee: cf 93 push r28 + 9f0: df 93 push r29 + 9f2: ec 01 movw r28, r24 + 9f4: 6a 01 movw r12, r20 + 9f6: 7b 01 movw r14, r22 if(val<0){ - 9b0: 20 e0 ldi r18, 0x00 ; 0 - 9b2: 30 e0 ldi r19, 0x00 ; 0 - 9b4: a9 01 movw r20, r18 - 9b6: c7 01 movw r24, r14 - 9b8: b6 01 movw r22, r12 - 9ba: 0e 94 73 09 call 0x12e6 ; 0x12e6 <__cmpsf2> - 9be: 88 23 and r24, r24 - 9c0: 6c f4 brge .+26 ; 0x9dc <motor_set+0x3e> + 9f8: 20 e0 ldi r18, 0x00 ; 0 + 9fa: 30 e0 ldi r19, 0x00 ; 0 + 9fc: a9 01 movw r20, r18 + 9fe: c7 01 movw r24, r14 + a00: b6 01 movw r22, r12 + a02: 0e 94 8b 09 call 0x1316 ; 0x1316 <__cmpsf2> + a06: 88 23 and r24, r24 + a08: 6c f4 brge .+26 ; 0xa24 <motor_set+0x3e> val*=-1; - 9c2: f7 fa bst r15, 7 - 9c4: f0 94 com r15 - 9c6: f7 f8 bld r15, 7 - 9c8: f0 94 com r15 + a0a: f7 fa bst r15, 7 + a0c: f0 94 com r15 + a0e: f7 f8 bld r15, 7 + a10: f0 94 com r15 pin_set(motor->INA_pin); - 9ca: 88 81 ld r24, Y - 9cc: 99 81 ldd r25, Y+1 ; 0x01 - 9ce: 0e 94 ce 06 call 0xd9c ; 0xd9c <pin_set> + a12: 88 81 ld r24, Y + a14: 99 81 ldd r25, Y+1 ; 0x01 + a16: 0e 94 e6 06 call 0xdcc ; 0xdcc <pin_set> pin_clear(motor->INB_pin); - 9d2: 8a 81 ldd r24, Y+2 ; 0x02 - 9d4: 9b 81 ldd r25, Y+3 ; 0x03 - 9d6: 0e 94 d6 06 call 0xdac ; 0xdac <pin_clear> - 9da: 08 c0 rjmp .+16 ; 0x9ec <motor_set+0x4e> + a1a: 8a 81 ldd r24, Y+2 ; 0x02 + a1c: 9b 81 ldd r25, Y+3 ; 0x03 + a1e: 0e 94 ee 06 call 0xddc ; 0xddc <pin_clear> + a22: 08 c0 rjmp .+16 ; 0xa34 <motor_set+0x4e> }else{ pin_set(motor->INB_pin); - 9dc: 8a 81 ldd r24, Y+2 ; 0x02 - 9de: 9b 81 ldd r25, Y+3 ; 0x03 - 9e0: 0e 94 ce 06 call 0xd9c ; 0xd9c <pin_set> + a24: 8a 81 ldd r24, Y+2 ; 0x02 + a26: 9b 81 ldd r25, Y+3 ; 0x03 + a28: 0e 94 e6 06 call 0xdcc ; 0xdcc <pin_set> pin_clear(motor->INA_pin); - 9e4: 88 81 ld r24, Y - 9e6: 99 81 ldd r25, Y+1 ; 0x01 - 9e8: 0e 94 d6 06 call 0xdac ; 0xdac <pin_clear> + a2c: 88 81 ld r24, Y + a2e: 99 81 ldd r25, Y+1 ; 0x01 + a30: 0e 94 ee 06 call 0xddc ; 0xddc <pin_clear> } pwm_set_dutycycle(motor->PWM, val); - 9ec: b7 01 movw r22, r14 - 9ee: a6 01 movw r20, r12 - 9f0: 8c 81 ldd r24, Y+4 ; 0x04 - 9f2: 9d 81 ldd r25, Y+5 ; 0x05 - 9f4: 0e 94 46 04 call 0x88c ; 0x88c <pwm_set_dutycycle> + a34: b7 01 movw r22, r14 + a36: a6 01 movw r20, r12 + a38: 8c 81 ldd r24, Y+4 ; 0x04 + a3a: 9d 81 ldd r25, Y+5 ; 0x05 + a3c: 0e 94 6a 04 call 0x8d4 ; 0x8d4 <pwm_set_dutycycle> } - 9f8: df 91 pop r29 - 9fa: cf 91 pop r28 - 9fc: ff 90 pop r15 - 9fe: ef 90 pop r14 - a00: df 90 pop r13 - a02: cf 90 pop r12 - a04: 08 95 ret - -00000a06 <timing_interrupts_init>: + a40: df 91 pop r29 + a42: cf 91 pop r28 + a44: ff 90 pop r15 + a46: ef 90 pop r14 + a48: df 90 pop r13 + a4a: cf 90 pop r12 + a4c: 08 95 ret + +00000a4e <timing_interrupts_init>: } } void timing_interrupts_init(){ TCC1.CTRLA = TC_CLKSEL_DIV1_gc; - a06: e0 e4 ldi r30, 0x40 ; 64 - a08: f8 e0 ldi r31, 0x08 ; 8 - a0a: 81 e0 ldi r24, 0x01 ; 1 - a0c: 80 83 st Z, r24 + a4e: e0 e4 ldi r30, 0x40 ; 64 + a50: f8 e0 ldi r31, 0x08 ; 8 + a52: 81 e0 ldi r24, 0x01 ; 1 + a54: 80 83 st Z, r24 uint16_t pera = 24000; // 2khz (48MHZ/24000) uint8_t peral = (uint8_t) pera; uint8_t perah = (uint8_t) (pera >> 8); TCC1.PERBUFL = peral; - a0e: 80 ec ldi r24, 0xC0 ; 192 - a10: 86 ab std Z+54, r24 ; 0x36 + a56: 80 ec ldi r24, 0xC0 ; 192 + a58: 86 ab std Z+54, r24 ; 0x36 TCC1.PERBUFH = perah; - a12: 8d e5 ldi r24, 0x5D ; 93 - a14: 87 ab std Z+55, r24 ; 0x37 + a5a: 8d e5 ldi r24, 0x5D ; 93 + a5c: 87 ab std Z+55, r24 ; 0x37 TCC1.INTCTRLA = TC_OVFINTLVL_MED_gc; - a16: 82 e0 ldi r24, 0x02 ; 2 - a18: 86 83 std Z+6, r24 ; 0x06 - a1a: 08 95 ret + a5e: 82 e0 ldi r24, 0x02 ; 2 + a60: 86 83 std Z+6, r24 ; 0x06 + a62: 08 95 ret -00000a1c <main>: +00000a64 <main>: int main(void) { //initialize Clock to 48 Mhz clock_init(); - a1c: 0e 94 91 01 call 0x322 ; 0x322 <clock_init> + a64: 0e 94 8b 01 call 0x316 ; 0x316 <clock_init> //initialize interrupts sei(); - a20: 78 94 sei + a68: 78 94 sei PMIC.CTRL |= PMIC_LOLVLEN_bm | PMIC_MEDLVLEN_bm | PMIC_HILVLEN_bm; - a22: e0 ea ldi r30, 0xA0 ; 160 - a24: f0 e0 ldi r31, 0x00 ; 0 - a26: 82 81 ldd r24, Z+2 ; 0x02 - a28: 87 60 ori r24, 0x07 ; 7 - a2a: 82 83 std Z+2, r24 ; 0x02 + a6a: e0 ea ldi r30, 0xA0 ; 160 + a6c: f0 e0 ldi r31, 0x00 ; 0 + a6e: 82 81 ldd r24, Z+2 ; 0x02 + a70: 87 60 ori r24, 0x07 ; 7 + a72: 82 83 std Z+2, r24 ; 0x02 - PORTE.DIRSET |= PIN3_bm; - a2c: e0 e8 ldi r30, 0x80 ; 128 - a2e: f6 e0 ldi r31, 0x06 ; 6 - a30: 81 81 ldd r24, Z+1 ; 0x01 - a32: 88 60 ori r24, 0x08 ; 8 - a34: 81 83 std Z+1, r24 ; 0x01 + PORTE.DIRSET |= PIN3_bm | PIN2_bm; + a74: e0 e8 ldi r30, 0x80 ; 128 + a76: f6 e0 ldi r31, 0x06 ; 6 + a78: 81 81 ldd r24, Z+1 ; 0x01 + a7a: 8c 60 ori r24, 0x0C ; 12 + a7c: 81 83 std Z+1, r24 ; 0x01 //start DAC, PWM, and Encoder dac_begin(ATK_DAC_DUAL_CHANNEL); - a36: 82 e0 ldi r24, 0x02 ; 2 - a38: 0e 94 c1 01 call 0x382 ; 0x382 <dac_begin> + a7e: 82 e0 ldi r24, 0x02 ; 2 + a80: 0e 94 bb 01 call 0x376 ; 0x376 <dac_begin> ATKEncoder_begin(1);//1 tick/unit - a3c: 60 e0 ldi r22, 0x00 ; 0 - a3e: 70 e0 ldi r23, 0x00 ; 0 - a40: 80 e8 ldi r24, 0x80 ; 128 - a42: 9f e3 ldi r25, 0x3F ; 63 - a44: 0e 94 f7 01 call 0x3ee ; 0x3ee <ATKEncoder_begin> + a84: 60 e0 ldi r22, 0x00 ; 0 + a86: 70 e0 ldi r23, 0x00 ; 0 + a88: 80 e8 ldi r24, 0x80 ; 128 + a8a: 9f e3 ldi r25, 0x3F ; 63 + a8c: 0e 94 f1 01 call 0x3e2 ; 0x3e2 <ATKEncoder_begin> //initialize motor H bridge pins PORTC.DIRSET |= PIN0_bm || PIN4_bm || PIN3_bm; - a48: e0 e4 ldi r30, 0x40 ; 64 - a4a: f6 e0 ldi r31, 0x06 ; 6 - a4c: 81 81 ldd r24, Z+1 ; 0x01 - a4e: 81 60 ori r24, 0x01 ; 1 - a50: 81 83 std Z+1, r24 ; 0x01 + a90: e0 e4 ldi r30, 0x40 ; 64 + a92: f6 e0 ldi r31, 0x06 ; 6 + a94: 81 81 ldd r24, Z+1 ; 0x01 + a96: 81 60 ori r24, 0x01 ; 1 + a98: 81 83 std Z+1, r24 ; 0x01 + PORTC_DIRSET |= PIN5_bm; + a9a: e1 e4 ldi r30, 0x41 ; 65 + a9c: f6 e0 ldi r31, 0x06 ; 6 + a9e: 80 81 ld r24, Z + aa0: 80 62 ori r24, 0x20 ; 32 + aa2: 80 83 st Z, r24 + PORTC_OUTSET |= PIN5_bm; + aa4: e5 e4 ldi r30, 0x45 ; 69 + aa6: f6 e0 ldi r31, 0x06 ; 6 + aa8: 80 81 ld r24, Z + aaa: 80 62 ori r24, 0x20 ; 32 + aac: 80 83 st Z, r24 pin_init(&M_INA, &PORTC, PIN4_bm,1,1); - a52: 01 e0 ldi r16, 0x01 ; 1 - a54: 21 e0 ldi r18, 0x01 ; 1 - a56: 40 e1 ldi r20, 0x10 ; 16 - a58: 60 e4 ldi r22, 0x40 ; 64 - a5a: 76 e0 ldi r23, 0x06 ; 6 - a5c: 86 e8 ldi r24, 0x86 ; 134 - a5e: 90 e2 ldi r25, 0x20 ; 32 - a60: 0e 94 bf 06 call 0xd7e ; 0xd7e <pin_init> + aae: 01 e0 ldi r16, 0x01 ; 1 + ab0: 21 e0 ldi r18, 0x01 ; 1 + ab2: 40 e1 ldi r20, 0x10 ; 16 + ab4: 60 e4 ldi r22, 0x40 ; 64 + ab6: 76 e0 ldi r23, 0x06 ; 6 + ab8: 84 e8 ldi r24, 0x84 ; 132 + aba: 90 e2 ldi r25, 0x20 ; 32 + abc: 0e 94 d7 06 call 0xdae ; 0xdae <pin_init> pin_init(&M_INB, &PORTC, PIN3_bm,0,1); - a64: 20 e0 ldi r18, 0x00 ; 0 - a66: 48 e0 ldi r20, 0x08 ; 8 - a68: 60 e4 ldi r22, 0x40 ; 64 - a6a: 76 e0 ldi r23, 0x06 ; 6 - a6c: 82 e4 ldi r24, 0x42 ; 66 - a6e: 90 e2 ldi r25, 0x20 ; 32 - a70: 0e 94 bf 06 call 0xd7e ; 0xd7e <pin_init> - pwm_init(&M_PWM, &TCC0,TC_CLKSEL_DIV1_gc,TC0_CCAEN_bm,48000,20); - a74: 0f 2e mov r0, r31 - a76: f4 e1 ldi r31, 0x14 ; 20 - a78: ef 2e mov r14, r31 - a7a: f1 2c mov r15, r1 - a7c: f0 2d mov r31, r0 - a7e: 00 e8 ldi r16, 0x80 ; 128 - a80: 1b eb ldi r17, 0xBB ; 187 - a82: 20 e1 ldi r18, 0x10 ; 16 - a84: 41 e0 ldi r20, 0x01 ; 1 - a86: 60 e0 ldi r22, 0x00 ; 0 - a88: 78 e0 ldi r23, 0x08 ; 8 - a8a: 8c e4 ldi r24, 0x4C ; 76 - a8c: 90 e2 ldi r25, 0x20 ; 32 - a8e: 0e 94 91 04 call 0x922 ; 0x922 <pwm_init> + ac0: 20 e0 ldi r18, 0x00 ; 0 + ac2: 48 e0 ldi r20, 0x08 ; 8 + ac4: 60 e4 ldi r22, 0x40 ; 64 + ac6: 76 e0 ldi r23, 0x06 ; 6 + ac8: 80 e4 ldi r24, 0x40 ; 64 + aca: 90 e2 ldi r25, 0x20 ; 32 + acc: 0e 94 d7 06 call 0xdae ; 0xdae <pin_init> + pwm_init(&M_PWM, &TCC0,TC_CLKSEL_DIV1_gc,TC0_CCAEN_bm,48000,10); + ad0: 0f 2e mov r0, r31 + ad2: fa e0 ldi r31, 0x0A ; 10 + ad4: ef 2e mov r14, r31 + ad6: f1 2c mov r15, r1 + ad8: f0 2d mov r31, r0 + ada: 00 e8 ldi r16, 0x80 ; 128 + adc: 1b eb ldi r17, 0xBB ; 187 + ade: 20 e1 ldi r18, 0x10 ; 16 + ae0: 41 e0 ldi r20, 0x01 ; 1 + ae2: 60 e0 ldi r22, 0x00 ; 0 + ae4: 78 e0 ldi r23, 0x08 ; 8 + ae6: 8a e4 ldi r24, 0x4A ; 74 + ae8: 90 e2 ldi r25, 0x20 ; 32 + aea: 0e 94 b5 04 call 0x96a ; 0x96a <pwm_init> motor_init(&M_1,&M_INA,&M_INB,&M_PWM); - a92: 2c e4 ldi r18, 0x4C ; 76 - a94: 30 e2 ldi r19, 0x20 ; 32 - a96: 42 e4 ldi r20, 0x42 ; 66 - a98: 50 e2 ldi r21, 0x20 ; 32 - a9a: 66 e8 ldi r22, 0x86 ; 134 - a9c: 70 e2 ldi r23, 0x20 ; 32 - a9e: 86 e4 ldi r24, 0x46 ; 70 - aa0: 90 e2 ldi r25, 0x20 ; 32 - aa2: 0e 94 bc 04 call 0x978 ; 0x978 <motor_init> + aee: 2a e4 ldi r18, 0x4A ; 74 + af0: 30 e2 ldi r19, 0x20 ; 32 + af2: 40 e4 ldi r20, 0x40 ; 64 + af4: 50 e2 ldi r21, 0x20 ; 32 + af6: 64 e8 ldi r22, 0x84 ; 132 + af8: 70 e2 ldi r23, 0x20 ; 32 + afa: 84 e4 ldi r24, 0x44 ; 68 + afc: 90 e2 ldi r25, 0x20 ; 32 + afe: 0e 94 e0 04 call 0x9c0 ; 0x9c0 <motor_init> //initialize current controller + PORTB_DIRCLR |= PIN0_bm; + b02: e2 e2 ldi r30, 0x22 ; 34 + b04: f6 e0 ldi r31, 0x06 ; 6 + b06: 80 81 ld r24, Z + b08: 81 60 ori r24, 0x01 ; 1 + b0a: 80 83 st Z, r24 r_adc_init(&ADC_CS, &ADCB, &ADCB.CH0, ADC_CH_MUXPOS_PIN0_gc); - aa6: 20 e0 ldi r18, 0x00 ; 0 - aa8: 40 e6 ldi r20, 0x60 ; 96 - aaa: 52 e0 ldi r21, 0x02 ; 2 - aac: 60 e4 ldi r22, 0x40 ; 64 - aae: 72 e0 ldi r23, 0x02 ; 2 - ab0: 8a e0 ldi r24, 0x0A ; 10 - ab2: 90 e2 ldi r25, 0x20 ; 32 - ab4: 0e 94 14 01 call 0x228 ; 0x228 <r_adc_init> + b0c: 20 e0 ldi r18, 0x00 ; 0 + b0e: 40 e6 ldi r20, 0x60 ; 96 + b10: 52 e0 ldi r21, 0x02 ; 2 + b12: 60 e4 ldi r22, 0x40 ; 64 + b14: 72 e0 ldi r23, 0x02 ; 2 + b16: 8a e0 ldi r24, 0x0A ; 10 + b18: 90 e2 ldi r25, 0x20 ; 32 + b1a: 0e 94 14 01 call 0x228 ; 0x228 <r_adc_init> currentc_init(&CC, 2.0,8.0,0.0005,0,5000,0,100); - ab8: 1f 92 push r1 - aba: 84 e6 ldi r24, 0x64 ; 100 - abc: 8f 93 push r24 - abe: 1f 92 push r1 - ac0: 1f 92 push r1 - ac2: 0f 2e mov r0, r31 - ac4: f8 e8 ldi r31, 0x88 ; 136 - ac6: 8f 2e mov r8, r31 - ac8: f3 e1 ldi r31, 0x13 ; 19 - aca: 9f 2e mov r9, r31 - acc: f0 2d mov r31, r0 - ace: a1 2c mov r10, r1 - ad0: b1 2c mov r11, r1 - ad2: 0f 2e mov r0, r31 - ad4: ff e6 ldi r31, 0x6F ; 111 - ad6: cf 2e mov r12, r31 - ad8: f2 e1 ldi r31, 0x12 ; 18 - ada: df 2e mov r13, r31 - adc: f3 e0 ldi r31, 0x03 ; 3 - ade: ef 2e mov r14, r31 - ae0: fa e3 ldi r31, 0x3A ; 58 - ae2: ff 2e mov r15, r31 - ae4: f0 2d mov r31, r0 - ae6: 00 e0 ldi r16, 0x00 ; 0 - ae8: 10 e0 ldi r17, 0x00 ; 0 - aea: 20 e0 ldi r18, 0x00 ; 0 - aec: 31 e4 ldi r19, 0x41 ; 65 - aee: 40 e0 ldi r20, 0x00 ; 0 - af0: 50 e0 ldi r21, 0x00 ; 0 - af2: 60 e0 ldi r22, 0x00 ; 0 - af4: 70 e4 ldi r23, 0x40 ; 64 - af6: 84 e5 ldi r24, 0x54 ; 84 - af8: 90 e2 ldi r25, 0x20 ; 32 - afa: 0e 94 67 03 call 0x6ce ; 0x6ce <currentc_init> + b1e: 1f 92 push r1 + b20: 84 e6 ldi r24, 0x64 ; 100 + b22: 8f 93 push r24 + b24: 1f 92 push r1 + b26: 1f 92 push r1 + b28: 0f 2e mov r0, r31 + b2a: f8 e8 ldi r31, 0x88 ; 136 + b2c: 8f 2e mov r8, r31 + b2e: f3 e1 ldi r31, 0x13 ; 19 + b30: 9f 2e mov r9, r31 + b32: f0 2d mov r31, r0 + b34: a1 2c mov r10, r1 + b36: b1 2c mov r11, r1 + b38: 0f 2e mov r0, r31 + b3a: ff e6 ldi r31, 0x6F ; 111 + b3c: cf 2e mov r12, r31 + b3e: f2 e1 ldi r31, 0x12 ; 18 + b40: df 2e mov r13, r31 + b42: f3 e0 ldi r31, 0x03 ; 3 + b44: ef 2e mov r14, r31 + b46: fa e3 ldi r31, 0x3A ; 58 + b48: ff 2e mov r15, r31 + b4a: f0 2d mov r31, r0 + b4c: 00 e0 ldi r16, 0x00 ; 0 + b4e: 10 e0 ldi r17, 0x00 ; 0 + b50: 20 e0 ldi r18, 0x00 ; 0 + b52: 31 e4 ldi r19, 0x41 ; 65 + b54: 40 e0 ldi r20, 0x00 ; 0 + b56: 50 e0 ldi r21, 0x00 ; 0 + b58: 60 e0 ldi r22, 0x00 ; 0 + b5a: 70 e4 ldi r23, 0x40 ; 64 + b5c: 82 e5 ldi r24, 0x52 ; 82 + b5e: 90 e2 ldi r25, 0x20 ; 32 + b60: 0e 94 80 03 call 0x700 ; 0x700 <currentc_init> currentc_setSetpoint(&CC, OTHERSETPOINT); - afe: 40 e0 ldi r20, 0x00 ; 0 - b00: 50 e0 ldi r21, 0x00 ; 0 - b02: 6a ef ldi r22, 0xFA ; 250 - b04: 73 e4 ldi r23, 0x43 ; 67 - b06: 84 e5 ldi r24, 0x54 ; 84 - b08: 90 e2 ldi r25, 0x20 ; 32 - b0a: 0e 94 5b 03 call 0x6b6 ; 0x6b6 <currentc_setSetpoint> + b64: 40 e0 ldi r20, 0x00 ; 0 + b66: 50 e0 ldi r21, 0x00 ; 0 + b68: 6a ef ldi r22, 0xFA ; 250 + b6a: 73 e4 ldi r23, 0x43 ; 67 + b6c: 82 e5 ldi r24, 0x52 ; 82 + b6e: 90 e2 ldi r25, 0x20 ; 32 + b70: 0e 94 55 03 call 0x6aa ; 0x6aa <currentc_setSetpoint> currentc_setAcceptableRange(&CC, 50); - b0e: 40 e0 ldi r20, 0x00 ; 0 - b10: 50 e0 ldi r21, 0x00 ; 0 - b12: 68 e4 ldi r22, 0x48 ; 72 - b14: 72 e4 ldi r23, 0x42 ; 66 - b16: 84 e5 ldi r24, 0x54 ; 84 - b18: 90 e2 ldi r25, 0x20 ; 32 - b1a: 0e 94 61 03 call 0x6c2 ; 0x6c2 <currentc_setAcceptableRange> + b74: 40 e0 ldi r20, 0x00 ; 0 + b76: 50 e0 ldi r21, 0x00 ; 0 + b78: 68 e4 ldi r22, 0x48 ; 72 + b7a: 72 e4 ldi r23, 0x42 ; 66 + b7c: 82 e5 ldi r24, 0x52 ; 82 + b7e: 90 e2 ldi r25, 0x20 ; 32 + b80: 0e 94 5b 03 call 0x6b6 ; 0x6b6 <currentc_setAcceptableRange> l_filter_init(&CS_filter, 6); - b1e: 66 e0 ldi r22, 0x06 ; 6 - b20: 8a e8 ldi r24, 0x8A ; 138 - b22: 90 e2 ldi r25, 0x20 ; 32 - b24: 0e 94 11 04 call 0x822 ; 0x822 <l_filter_init> + b84: 66 e0 ldi r22, 0x06 ; 6 + b86: 88 e8 ldi r24, 0x88 ; 136 + b88: 90 e2 ldi r25, 0x20 ; 32 + b8a: 0e 94 37 04 call 0x86e ; 0x86e <l_filter_init> //initialize PID - RPID_init(&M_1_pid,20,5.0, 0.0 ,0.00016,0, 0,0,-300,300, 6); - b28: 86 e0 ldi r24, 0x06 ; 6 - b2a: 8f 93 push r24 - b2c: 81 e0 ldi r24, 0x01 ; 1 - b2e: 8f 93 push r24 - b30: 8c e2 ldi r24, 0x2C ; 44 - b32: 8f 93 push r24 - b34: 8e ef ldi r24, 0xFE ; 254 - b36: 8f 93 push r24 - b38: 84 ed ldi r24, 0xD4 ; 212 - b3a: 8f 93 push r24 - b3c: 1f 92 push r1 - b3e: 1f 92 push r1 - b40: 1f 92 push r1 - b42: 1f 92 push r1 - b44: 1f 92 push r1 - b46: 0f 2e mov r0, r31 - b48: fc ea ldi r31, 0xAC ; 172 - b4a: 8f 2e mov r8, r31 - b4c: f5 ec ldi r31, 0xC5 ; 197 - b4e: 9f 2e mov r9, r31 - b50: f7 e2 ldi r31, 0x27 ; 39 - b52: af 2e mov r10, r31 - b54: f9 e3 ldi r31, 0x39 ; 57 - b56: bf 2e mov r11, r31 - b58: f0 2d mov r31, r0 - b5a: c1 2c mov r12, r1 - b5c: d1 2c mov r13, r1 - b5e: 76 01 movw r14, r12 - b60: 00 e0 ldi r16, 0x00 ; 0 - b62: 10 e0 ldi r17, 0x00 ; 0 - b64: 20 ea ldi r18, 0xA0 ; 160 - b66: 30 e4 ldi r19, 0x40 ; 64 - b68: 40 e0 ldi r20, 0x00 ; 0 - b6a: 50 e0 ldi r21, 0x00 ; 0 - b6c: 60 ea ldi r22, 0xA0 ; 160 - b6e: 71 e4 ldi r23, 0x41 ; 65 - b70: 8e e0 ldi r24, 0x0E ; 14 - b72: 90 e2 ldi r25, 0x20 ; 32 - b74: 0e 94 a6 08 call 0x114c ; 0x114c <RPID_init> + RPID_init(&M_1_pid,5.0,0.0, 0.0 ,0.00016,0, 0,0,-300,300, 6); + b8e: 86 e0 ldi r24, 0x06 ; 6 + b90: 8f 93 push r24 + b92: 81 e0 ldi r24, 0x01 ; 1 + b94: 8f 93 push r24 + b96: 8c e2 ldi r24, 0x2C ; 44 + b98: 8f 93 push r24 + b9a: 8e ef ldi r24, 0xFE ; 254 + b9c: 8f 93 push r24 + b9e: 84 ed ldi r24, 0xD4 ; 212 + ba0: 8f 93 push r24 + ba2: 1f 92 push r1 + ba4: 1f 92 push r1 + ba6: 1f 92 push r1 + ba8: 1f 92 push r1 + baa: 1f 92 push r1 + bac: 0f 2e mov r0, r31 + bae: fc ea ldi r31, 0xAC ; 172 + bb0: 8f 2e mov r8, r31 + bb2: f5 ec ldi r31, 0xC5 ; 197 + bb4: 9f 2e mov r9, r31 + bb6: f7 e2 ldi r31, 0x27 ; 39 + bb8: af 2e mov r10, r31 + bba: f9 e3 ldi r31, 0x39 ; 57 + bbc: bf 2e mov r11, r31 + bbe: f0 2d mov r31, r0 + bc0: c1 2c mov r12, r1 + bc2: d1 2c mov r13, r1 + bc4: 76 01 movw r14, r12 + bc6: 97 01 movw r18, r14 + bc8: 86 01 movw r16, r12 + bca: 40 e0 ldi r20, 0x00 ; 0 + bcc: 50 e0 ldi r21, 0x00 ; 0 + bce: 60 ea ldi r22, 0xA0 ; 160 + bd0: 70 e4 ldi r23, 0x40 ; 64 + bd2: 8e e0 ldi r24, 0x0E ; 14 + bd4: 90 e2 ldi r25, 0x20 ; 32 + bd6: 0e 94 be 08 call 0x117c ; 0x117c <RPID_init> //initialize debugging DACs PORTB.DIRSET |= PIN2_bm | PIN3_bm; - b78: e0 e2 ldi r30, 0x20 ; 32 - b7a: f6 e0 ldi r31, 0x06 ; 6 - b7c: 81 81 ldd r24, Z+1 ; 0x01 - b7e: 8c 60 ori r24, 0x0C ; 12 - b80: 81 83 std Z+1, r24 ; 0x01 + bda: e0 e2 ldi r30, 0x20 ; 32 + bdc: f6 e0 ldi r31, 0x06 ; 6 + bde: 81 81 ldd r24, Z+1 ; 0x01 + be0: 8c 60 ori r24, 0x0C ; 12 + be2: 81 83 std Z+1, r24 ; 0x01 //set_dac(ATK_DAC_CHANNEL_0, 1000); //set_dac(ATK_DAC_CHANNEL_1, 1000); pwm_set(&M_PWM,1000); - b82: 68 ee ldi r22, 0xE8 ; 232 - b84: 73 e0 ldi r23, 0x03 ; 3 - b86: 8c e4 ldi r24, 0x4C ; 76 - b88: 90 e2 ldi r25, 0x20 ; 32 - b8a: 0e 94 18 04 call 0x830 ; 0x830 <pwm_set> + be4: 68 ee ldi r22, 0xE8 ; 232 + be6: 73 e0 ldi r23, 0x03 ; 3 + be8: 8a e4 ldi r24, 0x4A ; 74 + bea: 90 e2 ldi r25, 0x20 ; 32 + bec: 0e 94 3c 04 call 0x878 ; 0x878 <pwm_set> PORTE_DIRSET = PIN2_bm | PIN3_bm; - b8e: 8c e0 ldi r24, 0x0C ; 12 - b90: 80 93 81 06 sts 0x0681, r24 ; 0x800681 <__TEXT_REGION_LENGTH__+0x700681> + bf0: 8c e0 ldi r24, 0x0C ; 12 + bf2: 80 93 81 06 sts 0x0681, r24 ; 0x800681 <__TEXT_REGION_LENGTH__+0x700681> RPID_setSetpoint(&M_1_pid, 46); - b94: 40 e0 ldi r20, 0x00 ; 0 - b96: 50 e0 ldi r21, 0x00 ; 0 - b98: 68 e3 ldi r22, 0x38 ; 56 - b9a: 72 e4 ldi r23, 0x42 ; 66 - b9c: 8e e0 ldi r24, 0x0E ; 14 - b9e: 90 e2 ldi r25, 0x20 ; 32 - ba0: 0e 94 81 08 call 0x1102 ; 0x1102 <RPID_setSetpoint> + bf6: 40 e0 ldi r20, 0x00 ; 0 + bf8: 50 e0 ldi r21, 0x00 ; 0 + bfa: 68 e3 ldi r22, 0x38 ; 56 + bfc: 72 e4 ldi r23, 0x42 ; 66 + bfe: 8e e0 ldi r24, 0x0E ; 14 + c00: 90 e2 ldi r25, 0x20 ; 32 + c02: 0e 94 99 08 call 0x1132 ; 0x1132 <RPID_setSetpoint> //initialize tickets timing_interrupts_init(); - ba4: 0e 94 03 05 call 0xa06 ; 0xa06 <timing_interrupts_init> - ba8: 8d b7 in r24, 0x3d ; 61 - baa: 9e b7 in r25, 0x3e ; 62 - bac: 0e 96 adiw r24, 0x0e ; 14 - bae: 8d bf out 0x3d, r24 ; 61 - bb0: 9e bf out 0x3e, r25 ; 62 - bb2: ff cf rjmp .-2 ; 0xbb2 <main+0x196> - -00000bb4 <__vector_20>: + c06: 0e 94 27 05 call 0xa4e ; 0xa4e <timing_interrupts_init> + c0a: 8d b7 in r24, 0x3d ; 61 + c0c: 9e b7 in r25, 0x3e ; 62 + c0e: 0e 96 adiw r24, 0x0e ; 14 + c10: 8d bf out 0x3d, r24 ; 61 + c12: 9e bf out 0x3e, r25 ; 62 + c14: ff cf rjmp .-2 ; 0xc14 <main+0x1b0> + +00000c16 <__vector_20>: int i=0; ISR(TCC1_OVF_vect){ - bb4: 1f 92 push r1 - bb6: 0f 92 push r0 - bb8: 0f b6 in r0, 0x3f ; 63 - bba: 0f 92 push r0 - bbc: 11 24 eor r1, r1 - bbe: 0b b6 in r0, 0x3b ; 59 - bc0: 0f 92 push r0 - bc2: 8f 92 push r8 - bc4: 9f 92 push r9 - bc6: af 92 push r10 - bc8: bf 92 push r11 - bca: cf 92 push r12 - bcc: df 92 push r13 - bce: ef 92 push r14 - bd0: ff 92 push r15 - bd2: 2f 93 push r18 - bd4: 3f 93 push r19 - bd6: 4f 93 push r20 - bd8: 5f 93 push r21 - bda: 6f 93 push r22 - bdc: 7f 93 push r23 - bde: 8f 93 push r24 - be0: 9f 93 push r25 - be2: af 93 push r26 - be4: bf 93 push r27 - be6: ef 93 push r30 - be8: ff 93 push r31 + c16: 1f 92 push r1 + c18: 0f 92 push r0 + c1a: 0f b6 in r0, 0x3f ; 63 + c1c: 0f 92 push r0 + c1e: 11 24 eor r1, r1 + c20: 0b b6 in r0, 0x3b ; 59 + c22: 0f 92 push r0 + c24: cf 92 push r12 + c26: df 92 push r13 + c28: ef 92 push r14 + c2a: ff 92 push r15 + c2c: 2f 93 push r18 + c2e: 3f 93 push r19 + c30: 4f 93 push r20 + c32: 5f 93 push r21 + c34: 6f 93 push r22 + c36: 7f 93 push r23 + c38: 8f 93 push r24 + c3a: 9f 93 push r25 + c3c: af 93 push r26 + c3e: bf 93 push r27 + c40: cf 93 push r28 + c42: df 93 push r29 + c44: ef 93 push r30 + c46: ff 93 push r31 i++; - bea: 80 91 00 20 lds r24, 0x2000 ; 0x802000 <_edata> - bee: 90 91 01 20 lds r25, 0x2001 ; 0x802001 <_edata+0x1> - bf2: 01 96 adiw r24, 0x01 ; 1 - bf4: 80 93 00 20 sts 0x2000, r24 ; 0x802000 <_edata> - bf8: 90 93 01 20 sts 0x2001, r25 ; 0x802001 <_edata+0x1> + c48: 80 91 00 20 lds r24, 0x2000 ; 0x802000 <_edata> + c4c: 90 91 01 20 lds r25, 0x2001 ; 0x802001 <_edata+0x1> + c50: 01 96 adiw r24, 0x01 ; 1 + c52: 80 93 00 20 sts 0x2000, r24 ; 0x802000 <_edata> + c56: 90 93 01 20 sts 0x2001, r25 ; 0x802001 <_edata+0x1> if(!(i%1000)){ //blink per second - bfc: 68 ee ldi r22, 0xE8 ; 232 - bfe: 73 e0 ldi r23, 0x03 ; 3 - c00: 0e 94 58 0b call 0x16b0 ; 0x16b0 <__divmodhi4> - c04: 89 2b or r24, r25 - c06: 19 f4 brne .+6 ; 0xc0e <__vector_20+0x5a> + c5a: 68 ee ldi r22, 0xE8 ; 232 + c5c: 73 e0 ldi r23, 0x03 ; 3 + c5e: 0e 94 70 0b call 0x16e0 ; 0x16e0 <__divmodhi4> + c62: 89 2b or r24, r25 + c64: 19 f4 brne .+6 ; 0xc6c <__vector_20+0x56> PORTE_DIRTGL = PIN2_bm; - c08: 84 e0 ldi r24, 0x04 ; 4 - c0a: 80 93 83 06 sts 0x0683, r24 ; 0x800683 <__TEXT_REGION_LENGTH__+0x700683> - //set_dac(ATK_DAC_CHANNEL_0, -M_1_pid.filter.filter_reg +2048); - //set_dac(ATK_DAC_CHANNEL_0, 2048); - - //set_dac(ATK_DAC_CHANNEL_0, M_1_pid.setpoint); - - set_dac(ATK_DAC_CHANNEL_0, ATK_EN_getValue() +256); - c0e: 0e 94 13 02 call 0x426 ; 0x426 <ATK_EN_getValue> - c12: 20 e0 ldi r18, 0x00 ; 0 - c14: 30 e0 ldi r19, 0x00 ; 0 - c16: 40 e8 ldi r20, 0x80 ; 128 - c18: 53 e4 ldi r21, 0x43 ; 67 - c1a: 0e 94 07 09 call 0x120e ; 0x120e <__addsf3> - c1e: 0e 94 f1 09 call 0x13e2 ; 0x13e2 <__fixunssfsi> - c22: 81 e0 ldi r24, 0x01 ; 1 - c24: 0e 94 aa 01 call 0x354 ; 0x354 <set_dac> + c66: 84 e0 ldi r24, 0x04 ; 4 + c68: 80 93 83 06 sts 0x0683, r24 ; 0x800683 <__TEXT_REGION_LENGTH__+0x700683> //set_dac(ATK_DAC_CHANNEL_1, M_1_pid.setpoint + 256); //set_dac(ATK_DAC_CHANNEL_1, CC.setpoint); //16.8763 degrees to side 977 ticks per rev 2.7ticks per degree 36 is 0 degree 290 is 90deg if(RPID_onTarget(&M_1_pid)){ - c28: 8e e0 ldi r24, 0x0E ; 14 - c2a: 90 e2 ldi r25, 0x20 ; 32 - c2c: 0e 94 87 08 call 0x110e ; 0x110e <RPID_onTarget> - c30: 88 23 and r24, r24 - c32: 21 f1 breq .+72 ; 0xc7c <__vector_20+0xc8> - PORTE_DIRTGL = PIN3_bm; - c34: 88 e0 ldi r24, 0x08 ; 8 - c36: 80 93 83 06 sts 0x0683, r24 ; 0x800683 <__TEXT_REGION_LENGTH__+0x700683> + c6c: 8e e0 ldi r24, 0x0E ; 14 + c6e: 90 e2 ldi r25, 0x20 ; 32 + c70: 0e 94 9f 08 call 0x113e ; 0x113e <RPID_onTarget> + c74: 88 23 and r24, r24 + c76: 09 f1 breq .+66 ; 0xcba <__vector_20+0xa4> + //PORTE_DIRTGL = PIN3_bm; if(M_1_pid.setpoint == OTHERSETPOINT){ - c3a: 20 e0 ldi r18, 0x00 ; 0 - c3c: 30 e0 ldi r19, 0x00 ; 0 - c3e: 4a ef ldi r20, 0xFA ; 250 - c40: 53 e4 ldi r21, 0x43 ; 67 - c42: 60 91 33 20 lds r22, 0x2033 ; 0x802033 <M_1_pid+0x25> - c46: 70 91 34 20 lds r23, 0x2034 ; 0x802034 <M_1_pid+0x26> - c4a: 80 91 35 20 lds r24, 0x2035 ; 0x802035 <M_1_pid+0x27> - c4e: 90 91 36 20 lds r25, 0x2036 ; 0x802036 <M_1_pid+0x28> - c52: 0e 94 73 09 call 0x12e6 ; 0x12e6 <__cmpsf2> - c56: 81 11 cpse r24, r1 - c58: 09 c0 rjmp .+18 ; 0xc6c <__vector_20+0xb8> - RPID_setSetpoint(&M_1_pid, 30); - c5a: 40 e0 ldi r20, 0x00 ; 0 - c5c: 50 e0 ldi r21, 0x00 ; 0 - c5e: 60 ef ldi r22, 0xF0 ; 240 - c60: 71 e4 ldi r23, 0x41 ; 65 - c62: 8e e0 ldi r24, 0x0E ; 14 - c64: 90 e2 ldi r25, 0x20 ; 32 - c66: 0e 94 81 08 call 0x1102 ; 0x1102 <RPID_setSetpoint> - c6a: 08 c0 rjmp .+16 ; 0xc7c <__vector_20+0xc8> - }else{ + c78: 20 e0 ldi r18, 0x00 ; 0 + c7a: 30 e0 ldi r19, 0x00 ; 0 + c7c: 4a ef ldi r20, 0xFA ; 250 + c7e: 53 e4 ldi r21, 0x43 ; 67 + c80: 60 91 33 20 lds r22, 0x2033 ; 0x802033 <M_1_pid+0x25> + c84: 70 91 34 20 lds r23, 0x2034 ; 0x802034 <M_1_pid+0x26> + c88: 80 91 35 20 lds r24, 0x2035 ; 0x802035 <M_1_pid+0x27> + c8c: 90 91 36 20 lds r25, 0x2036 ; 0x802036 <M_1_pid+0x28> + c90: 0e 94 8b 09 call 0x1316 ; 0x1316 <__cmpsf2> + c94: 81 11 cpse r24, r1 + c96: 09 c0 rjmp .+18 ; 0xcaa <__vector_20+0x94> + RPID_setSetpoint(&M_1_pid, 30); + c98: 40 e0 ldi r20, 0x00 ; 0 + c9a: 50 e0 ldi r21, 0x00 ; 0 + c9c: 60 ef ldi r22, 0xF0 ; 240 + c9e: 71 e4 ldi r23, 0x41 ; 65 + ca0: 8e e0 ldi r24, 0x0E ; 14 + ca2: 90 e2 ldi r25, 0x20 ; 32 + ca4: 0e 94 99 08 call 0x1132 ; 0x1132 <RPID_setSetpoint> + ca8: 08 c0 rjmp .+16 ; 0xcba <__vector_20+0xa4> + }else{ RPID_setSetpoint(&M_1_pid, OTHERSETPOINT); - c6c: 40 e0 ldi r20, 0x00 ; 0 - c6e: 50 e0 ldi r21, 0x00 ; 0 - c70: 6a ef ldi r22, 0xFA ; 250 - c72: 73 e4 ldi r23, 0x43 ; 67 - c74: 8e e0 ldi r24, 0x0E ; 14 - c76: 90 e2 ldi r25, 0x20 ; 32 - c78: 0e 94 81 08 call 0x1102 ; 0x1102 <RPID_setSetpoint> + caa: 40 e0 ldi r20, 0x00 ; 0 + cac: 50 e0 ldi r21, 0x00 ; 0 + cae: 6a ef ldi r22, 0xFA ; 250 + cb0: 73 e4 ldi r23, 0x43 ; 67 + cb2: 8e e0 ldi r24, 0x0E ; 14 + cb4: 90 e2 ldi r25, 0x20 ; 32 + cb6: 0e 94 99 08 call 0x1132 ; 0x1132 <RPID_setSetpoint> } } double V_val = RPID_crunch(&M_1_pid, ATK_EN_getValue()); - c7c: 0e 94 13 02 call 0x426 ; 0x426 <ATK_EN_getValue> - c80: ab 01 movw r20, r22 - c82: bc 01 movw r22, r24 - c84: 8e e0 ldi r24, 0x0E ; 14 - c86: 90 e2 ldi r25, 0x20 ; 32 - c88: 0e 94 de 06 call 0xdbc ; 0xdbc <RPID_crunch> - c8c: 4b 01 movw r8, r22 - c8e: 5c 01 movw r10, r24 + cba: 0e 94 0d 02 call 0x41a ; 0x41a <ATK_EN_getValue> + cbe: ab 01 movw r20, r22 + cc0: bc 01 movw r22, r24 + cc2: 8e e0 ldi r24, 0x0E ; 14 + cc4: 90 e2 ldi r25, 0x20 ; 32 + cc6: 0e 94 f6 06 call 0xdec ; 0xdec <RPID_crunch> + V_val = 100; currentc_setSetpoint(&CC, abs(V_val)); - c90: 0e 94 ea 09 call 0x13d4 ; 0x13d4 <__fixsfsi> - c94: 9b 01 movw r18, r22 - c96: 77 23 and r23, r23 - c98: 24 f4 brge .+8 ; 0xca2 <__vector_20+0xee> - c9a: 22 27 eor r18, r18 - c9c: 33 27 eor r19, r19 - c9e: 26 1b sub r18, r22 - ca0: 37 0b sbc r19, r23 - ca2: b9 01 movw r22, r18 - ca4: 33 0f add r19, r19 - ca6: 88 0b sbc r24, r24 - ca8: 99 0b sbc r25, r25 - caa: 0e 94 22 0a call 0x1444 ; 0x1444 <__floatsisf> - cae: ab 01 movw r20, r22 - cb0: bc 01 movw r22, r24 - cb2: 84 e5 ldi r24, 0x54 ; 84 - cb4: 90 e2 ldi r25, 0x20 ; 32 - cb6: 0e 94 5b 03 call 0x6b6 ; 0x6b6 <currentc_setSetpoint> + cca: 40 e0 ldi r20, 0x00 ; 0 + ccc: 50 e0 ldi r21, 0x00 ; 0 + cce: 68 ec ldi r22, 0xC8 ; 200 + cd0: 72 e4 ldi r23, 0x42 ; 66 + cd2: 82 e5 ldi r24, 0x52 ; 82 + cd4: 90 e2 ldi r25, 0x20 ; 32 + cd6: 0e 94 55 03 call 0x6aa ; 0x6aa <currentc_setSetpoint> + //}else { + //currentc_setSetpoint(&CC, OTHERSETPOINT); + //} //} + if(currentc_onTarget(&CC)){ + cda: 82 e5 ldi r24, 0x52 ; 82 + cdc: 90 e2 ldi r25, 0x20 ; 32 + cde: 0e 94 61 03 call 0x6c2 ; 0x6c2 <currentc_onTarget> + ce2: 88 23 and r24, r24 + ce4: 21 f0 breq .+8 ; 0xcee <__vector_20+0xd8> + PORTE_OUTCLR = PIN3_bm; + ce6: 88 e0 ldi r24, 0x08 ; 8 + ce8: 80 93 86 06 sts 0x0686, r24 ; 0x800686 <__TEXT_REGION_LENGTH__+0x700686> + cec: 03 c0 rjmp .+6 ; 0xcf4 <__vector_20+0xde> + }else{ + PORTE_OUTSET = PIN3_bm; + cee: 88 e0 ldi r24, 0x08 ; 8 + cf0: 80 93 85 06 sts 0x0685, r24 ; 0x800685 <__TEXT_REGION_LENGTH__+0x700685> + } //value of 4096 is 3.3v //uint16_t input = l_filter(&CS_filter, r_adc_scan(&ADC_CS)); - int input = l_filter(&CS_filter, r_adc_scan(&ADC_CS)*5.75);//3300mV/ 4096units * unitsmeasured / 0.140mV/mA == MilliAMPS being pulled - cba: 8a e0 ldi r24, 0x0A ; 10 - cbc: 90 e2 ldi r25, 0x20 ; 32 - cbe: 0e 94 2a 01 call 0x254 ; 0x254 <r_adc_scan> - cc2: bc 01 movw r22, r24 - cc4: 80 e0 ldi r24, 0x00 ; 0 - cc6: 90 e0 ldi r25, 0x00 ; 0 - cc8: 0e 94 20 0a call 0x1440 ; 0x1440 <__floatunsisf> - ccc: 20 e0 ldi r18, 0x00 ; 0 - cce: 30 e0 ldi r19, 0x00 ; 0 - cd0: 48 eb ldi r20, 0xB8 ; 184 - cd2: 50 e4 ldi r21, 0x40 ; 64 - cd4: 0e 94 d7 0a call 0x15ae ; 0x15ae <__mulsf3> - cd8: 0e 94 ea 09 call 0x13d4 ; 0x13d4 <__fixsfsi> - cdc: 8a e8 ldi r24, 0x8A ; 138 - cde: 90 e2 ldi r25, 0x20 ; 32 - ce0: 0e 94 e2 03 call 0x7c4 ; 0x7c4 <l_filter> - //input =150; + int unfiltered = r_adc_scan(&ADC_CS)*5.75; + cf4: 8a e0 ldi r24, 0x0A ; 10 + cf6: 90 e2 ldi r25, 0x20 ; 32 + cf8: 0e 94 2b 01 call 0x256 ; 0x256 <r_adc_scan> + cfc: bc 01 movw r22, r24 + cfe: 80 e0 ldi r24, 0x00 ; 0 + d00: 90 e0 ldi r25, 0x00 ; 0 + d02: 0e 94 38 0a call 0x1470 ; 0x1470 <__floatunsisf> + d06: 20 e0 ldi r18, 0x00 ; 0 + d08: 30 e0 ldi r19, 0x00 ; 0 + d0a: 48 eb ldi r20, 0xB8 ; 184 + d0c: 50 e4 ldi r21, 0x40 ; 64 + d0e: 0e 94 ef 0a call 0x15de ; 0x15de <__mulsf3> + d12: 0e 94 02 0a call 0x1404 ; 0x1404 <__fixsfsi> + d16: 6b 01 movw r12, r22 + d18: 7c 01 movw r14, r24 + uint16_t input = l_filter(&CS_filter, unfiltered);//3300mV/ 4096units * unitsmeasured / 0.140mV/mA == MilliAMPS being pulled + d1a: 88 e8 ldi r24, 0x88 ; 136 + d1c: 90 e2 ldi r25, 0x20 ; 32 + d1e: 0e 94 fb 03 call 0x7f6 ; 0x7f6 <l_filter> + d22: ec 01 movw r28, r24 + //int input =100; //set_dac(ATK_DAC_CHANNEL_0, input); double C_val = currentc_crunch(&CC, input);//value of 4096 is 3.3v - ce4: bc 01 movw r22, r24 - ce6: 99 0f add r25, r25 - ce8: 88 0b sbc r24, r24 - cea: 99 0b sbc r25, r25 - cec: 0e 94 22 0a call 0x1444 ; 0x1444 <__floatsisf> - cf0: ab 01 movw r20, r22 - cf2: bc 01 movw r22, r24 - cf4: 84 e5 ldi r24, 0x54 ; 84 - cf6: 90 e2 ldi r25, 0x20 ; 32 - cf8: 0e 94 72 02 call 0x4e4 ; 0x4e4 <currentc_crunch> - cfc: 6b 01 movw r12, r22 - cfe: 7c 01 movw r14, r24 - set_dac(ATK_DAC_CHANNEL_1, C_val*31 + 550); - d00: 20 e0 ldi r18, 0x00 ; 0 - d02: 30 e0 ldi r19, 0x00 ; 0 - d04: 48 ef ldi r20, 0xF8 ; 248 - d06: 51 e4 ldi r21, 0x41 ; 65 - d08: 0e 94 d7 0a call 0x15ae ; 0x15ae <__mulsf3> - d0c: 20 e0 ldi r18, 0x00 ; 0 - d0e: 30 e8 ldi r19, 0x80 ; 128 - d10: 49 e0 ldi r20, 0x09 ; 9 - d12: 54 e4 ldi r21, 0x44 ; 68 - d14: 0e 94 07 09 call 0x120e ; 0x120e <__addsf3> - d18: 0e 94 f1 09 call 0x13e2 ; 0x13e2 <__fixunssfsi> - d1c: 82 e0 ldi r24, 0x02 ; 2 - d1e: 0e 94 aa 01 call 0x354 ; 0x354 <set_dac> - motor_set(&M_1, V_val >0? C_val:-C_val); - d22: 20 e0 ldi r18, 0x00 ; 0 - d24: 30 e0 ldi r19, 0x00 ; 0 - d26: a9 01 movw r20, r18 - d28: c5 01 movw r24, r10 - d2a: b4 01 movw r22, r8 - d2c: 0e 94 d2 0a call 0x15a4 ; 0x15a4 <__gesf2> - d30: 18 16 cp r1, r24 - d32: 24 f0 brlt .+8 ; 0xd3c <__vector_20+0x188> - d34: b7 01 movw r22, r14 - d36: a6 01 movw r20, r12 - d38: 70 58 subi r23, 0x80 ; 128 - d3a: 02 c0 rjmp .+4 ; 0xd40 <__vector_20+0x18c> - d3c: b7 01 movw r22, r14 - d3e: a6 01 movw r20, r12 - d40: 86 e4 ldi r24, 0x46 ; 70 - d42: 90 e2 ldi r25, 0x20 ; 32 - d44: 0e 94 cf 04 call 0x99e ; 0x99e <motor_set> + d24: bc 01 movw r22, r24 + d26: 80 e0 ldi r24, 0x00 ; 0 + d28: 90 e0 ldi r25, 0x00 ; 0 + d2a: 0e 94 38 0a call 0x1470 ; 0x1470 <__floatunsisf> + d2e: ab 01 movw r20, r22 + d30: bc 01 movw r22, r24 + d32: 82 e5 ldi r24, 0x52 ; 82 + d34: 90 e2 ldi r25, 0x20 ; 32 + d36: 0e 94 6c 02 call 0x4d8 ; 0x4d8 <currentc_crunch> + //set_dac(ATK_DAC_CHANNEL_1, C_val*31 + 620);//1% = 25mV + set_dac(ATK_DAC_CHANNEL_1, unfiltered*6 + 620);//100mA = 250mV + d3a: b6 01 movw r22, r12 + d3c: 66 0f add r22, r22 + d3e: 77 1f adc r23, r23 + d40: c6 0e add r12, r22 + d42: d7 1e adc r13, r23 + d44: cc 0c add r12, r12 + d46: dd 1c adc r13, r13 + d48: b6 01 movw r22, r12 + d4a: 64 59 subi r22, 0x94 ; 148 + d4c: 7d 4f sbci r23, 0xFD ; 253 + d4e: 82 e0 ldi r24, 0x02 ; 2 + d50: 0e 94 a4 01 call 0x348 ; 0x348 <set_dac> + set_dac(ATK_DAC_CHANNEL_0, input*6 + 620);//1mA = 5mV + d54: be 01 movw r22, r28 + d56: 66 0f add r22, r22 + d58: 77 1f adc r23, r23 + d5a: 6c 0f add r22, r28 + d5c: 7d 1f adc r23, r29 + d5e: 66 0f add r22, r22 + d60: 77 1f adc r23, r23 + d62: 64 59 subi r22, 0x94 ; 148 + d64: 7d 4f sbci r23, 0xFD ; 253 + d66: 81 e0 ldi r24, 0x01 ; 1 + d68: 0e 94 a4 01 call 0x348 ; 0x348 <set_dac> + //set_dac(ATK_DAC_CHANNEL_0, CONSTRAIN(-20, 0,4096)*20 +620); + //set_dac(ATK_DAC_CHANNEL_1, 620);//100mA = 250mV + + //motor_set(&M_1, C_val); //use for current control only mode + //motor_set(&M_1, V_val >0? C_val:-C_val);//use for position mode + motor_set(&M_1, 40); + d6c: 40 e0 ldi r20, 0x00 ; 0 + d6e: 50 e0 ldi r21, 0x00 ; 0 + d70: 60 e2 ldi r22, 0x20 ; 32 + d72: 72 e4 ldi r23, 0x42 ; 66 + d74: 84 e4 ldi r24, 0x44 ; 68 + d76: 90 e2 ldi r25, 0x20 ; 32 + d78: 0e 94 f3 04 call 0x9e6 ; 0x9e6 <motor_set> // //set_dac(ATK_DAC_CHANNEL_0, 3000); //0 is blue 1 is red //set_dac(ATK_DAC_CHANNEL_1, 500); } - d48: ff 91 pop r31 - d4a: ef 91 pop r30 - d4c: bf 91 pop r27 - d4e: af 91 pop r26 - d50: 9f 91 pop r25 - d52: 8f 91 pop r24 - d54: 7f 91 pop r23 - d56: 6f 91 pop r22 - d58: 5f 91 pop r21 - d5a: 4f 91 pop r20 - d5c: 3f 91 pop r19 - d5e: 2f 91 pop r18 - d60: ff 90 pop r15 - d62: ef 90 pop r14 - d64: df 90 pop r13 - d66: cf 90 pop r12 - d68: bf 90 pop r11 - d6a: af 90 pop r10 - d6c: 9f 90 pop r9 - d6e: 8f 90 pop r8 - d70: 0f 90 pop r0 - d72: 0b be out 0x3b, r0 ; 59 - d74: 0f 90 pop r0 - d76: 0f be out 0x3f, r0 ; 63 - d78: 0f 90 pop r0 - d7a: 1f 90 pop r1 - d7c: 18 95 reti - -00000d7e <pin_init>: + d7c: ff 91 pop r31 + d7e: ef 91 pop r30 + d80: df 91 pop r29 + d82: cf 91 pop r28 + d84: bf 91 pop r27 + d86: af 91 pop r26 + d88: 9f 91 pop r25 + d8a: 8f 91 pop r24 + d8c: 7f 91 pop r23 + d8e: 6f 91 pop r22 + d90: 5f 91 pop r21 + d92: 4f 91 pop r20 + d94: 3f 91 pop r19 + d96: 2f 91 pop r18 + d98: ff 90 pop r15 + d9a: ef 90 pop r14 + d9c: df 90 pop r13 + d9e: cf 90 pop r12 + da0: 0f 90 pop r0 + da2: 0b be out 0x3b, r0 ; 59 + da4: 0f 90 pop r0 + da6: 0f be out 0x3f, r0 ; 63 + da8: 0f 90 pop r0 + daa: 1f 90 pop r1 + dac: 18 95 reti + +00000dae <pin_init>: pin_input(pin); } } void pin_output(pin_t *pin){ pin->port->DIRSET = pin->pin_bm; - d7e: 0f 93 push r16 - d80: fc 01 movw r30, r24 - d82: 60 83 st Z, r22 - d84: 71 83 std Z+1, r23 ; 0x01 - d86: 42 83 std Z+2, r20 ; 0x02 - d88: 23 83 std Z+3, r18 ; 0x03 - d8a: 00 23 and r16, r16 - d8c: 19 f0 breq .+6 ; 0xd94 <pin_init+0x16> - d8e: fb 01 movw r30, r22 - d90: 41 83 std Z+1, r20 ; 0x01 - d92: 02 c0 rjmp .+4 ; 0xd98 <pin_init+0x1a> - d94: fb 01 movw r30, r22 - d96: 42 83 std Z+2, r20 ; 0x02 - d98: 0f 91 pop r16 - d9a: 08 95 ret - -00000d9c <pin_set>: + dae: 0f 93 push r16 + db0: fc 01 movw r30, r24 + db2: 60 83 st Z, r22 + db4: 71 83 std Z+1, r23 ; 0x01 + db6: 42 83 std Z+2, r20 ; 0x02 + db8: 23 83 std Z+3, r18 ; 0x03 + dba: 00 23 and r16, r16 + dbc: 19 f0 breq .+6 ; 0xdc4 <pin_init+0x16> + dbe: fb 01 movw r30, r22 + dc0: 41 83 std Z+1, r20 ; 0x01 + dc2: 02 c0 rjmp .+4 ; 0xdc8 <pin_init+0x1a> + dc4: fb 01 movw r30, r22 + dc6: 42 83 std Z+2, r20 ; 0x02 + dc8: 0f 91 pop r16 + dca: 08 95 ret + +00000dcc <pin_set>: } void pin_set(pin_t *pin){ pin->port->OUTSET = pin->pin_bm; - d9c: dc 01 movw r26, r24 - d9e: ed 91 ld r30, X+ - da0: fc 91 ld r31, X - da2: 11 97 sbiw r26, 0x01 ; 1 - da4: 12 96 adiw r26, 0x02 ; 2 - da6: 8c 91 ld r24, X - da8: 85 83 std Z+5, r24 ; 0x05 - daa: 08 95 ret - -00000dac <pin_clear>: + dcc: dc 01 movw r26, r24 + dce: ed 91 ld r30, X+ + dd0: fc 91 ld r31, X + dd2: 11 97 sbiw r26, 0x01 ; 1 + dd4: 12 96 adiw r26, 0x02 ; 2 + dd6: 8c 91 ld r24, X + dd8: 85 83 std Z+5, r24 ; 0x05 + dda: 08 95 ret + +00000ddc <pin_clear>: } void pin_clear(pin_t *pin){ pin->port->OUTCLR = pin->pin_bm; - dac: dc 01 movw r26, r24 - dae: ed 91 ld r30, X+ - db0: fc 91 ld r31, X - db2: 11 97 sbiw r26, 0x01 ; 1 - db4: 12 96 adiw r26, 0x02 ; 2 - db6: 8c 91 ld r24, X - db8: 86 83 std Z+6, r24 ; 0x06 - dba: 08 95 ret - -00000dbc <RPID_crunch>: + ddc: dc 01 movw r26, r24 + dde: ed 91 ld r30, X+ + de0: fc 91 ld r31, X + de2: 11 97 sbiw r26, 0x01 ; 1 + de4: 12 96 adiw r26, 0x02 ; 2 + de6: 8c 91 ld r24, X + de8: 86 83 std Z+6, r24 ; 0x06 + dea: 08 95 ret + +00000dec <RPID_crunch>: void RPID_setSetpoint(RPID_t *pid, double val){ pid->setpoint=val; } void RPID_setAcceptableRange(RPID_t *pid, double range){ pid->acceptableRange=range; - dbc: 4f 92 push r4 - dbe: 5f 92 push r5 - dc0: 6f 92 push r6 - dc2: 7f 92 push r7 - dc4: 8f 92 push r8 - dc6: 9f 92 push r9 - dc8: af 92 push r10 - dca: bf 92 push r11 - dcc: cf 92 push r12 - dce: df 92 push r13 - dd0: ef 92 push r14 - dd2: ff 92 push r15 - dd4: cf 93 push r28 - dd6: df 93 push r29 - dd8: 00 d0 rcall .+0 ; 0xdda <RPID_crunch+0x1e> - dda: 00 d0 rcall .+0 ; 0xddc <RPID_crunch+0x20> - ddc: cd b7 in r28, 0x3d ; 61 - dde: de b7 in r29, 0x3e ; 62 - de0: 8d 83 std Y+5, r24 ; 0x05 - de2: 9e 83 std Y+6, r25 ; 0x06 - de4: 9a 01 movw r18, r20 - de6: ab 01 movw r20, r22 - de8: fc 01 movw r30, r24 - dea: 65 a1 ldd r22, Z+37 ; 0x25 - dec: 76 a1 ldd r23, Z+38 ; 0x26 - dee: 87 a1 ldd r24, Z+39 ; 0x27 - df0: 90 a5 ldd r25, Z+40 ; 0x28 - df2: 0e 94 06 09 call 0x120c ; 0x120c <__subsf3> - df6: 6b 01 movw r12, r22 - df8: 7c 01 movw r14, r24 - dfa: ed 81 ldd r30, Y+5 ; 0x05 - dfc: fe 81 ldd r31, Y+6 ; 0x06 - dfe: 65 8f std Z+29, r22 ; 0x1d - e00: 76 8f std Z+30, r23 ; 0x1e - e02: 87 8f std Z+31, r24 ; 0x1f - e04: 90 a3 std Z+32, r25 ; 0x20 - e06: 80 89 ldd r24, Z+16 ; 0x10 - e08: 80 ff sbrs r24, 0 - e0a: 5e c0 rjmp .+188 ; 0xec8 <RPID_crunch+0x10c> - e0c: 81 88 ldd r8, Z+17 ; 0x11 - e0e: 92 88 ldd r9, Z+18 ; 0x12 - e10: a3 88 ldd r10, Z+19 ; 0x13 - e12: b4 88 ldd r11, Z+20 ; 0x14 - e14: c7 01 movw r24, r14 - e16: b6 01 movw r22, r12 - e18: 0e 94 ea 09 call 0x13d4 ; 0x13d4 <__fixsfsi> - e1c: 9b 01 movw r18, r22 - e1e: 77 23 and r23, r23 - e20: 24 f4 brge .+8 ; 0xe2a <RPID_crunch+0x6e> - e22: 22 27 eor r18, r18 - e24: 33 27 eor r19, r19 - e26: 26 1b sub r18, r22 - e28: 37 0b sbc r19, r23 - e2a: a4 01 movw r20, r8 - e2c: 4a 19 sub r20, r10 - e2e: 5b 09 sbc r21, r11 - e30: ca 01 movw r24, r20 - e32: 99 23 and r25, r25 - e34: 0c f4 brge .+2 ; 0xe38 <RPID_crunch+0x7c> - e36: 01 96 adiw r24, 0x01 ; 1 - e38: 95 95 asr r25 - e3a: 87 95 ror r24 - e3c: 82 17 cp r24, r18 - e3e: 93 07 cpc r25, r19 - e40: 0c f0 brlt .+2 ; 0xe44 <RPID_crunch+0x88> - e42: 42 c0 rjmp .+132 ; 0xec8 <RPID_crunch+0x10c> - e44: 20 e0 ldi r18, 0x00 ; 0 - e46: 30 e0 ldi r19, 0x00 ; 0 - e48: a9 01 movw r20, r18 - e4a: c7 01 movw r24, r14 - e4c: b6 01 movw r22, r12 - e4e: 0e 94 d2 0a call 0x15a4 ; 0x15a4 <__gesf2> - e52: 18 16 cp r1, r24 - e54: dc f4 brge .+54 ; 0xe8c <RPID_crunch+0xd0> - e56: b4 01 movw r22, r8 - e58: 99 0c add r9, r9 - e5a: 88 0b sbc r24, r24 - e5c: 99 0b sbc r25, r25 - e5e: 0e 94 22 0a call 0x1444 ; 0x1444 <__floatsisf> - e62: 9b 01 movw r18, r22 - e64: ac 01 movw r20, r24 - e66: c7 01 movw r24, r14 - e68: b6 01 movw r22, r12 - e6a: 0e 94 06 09 call 0x120c ; 0x120c <__subsf3> - e6e: 6b 01 movw r12, r22 - e70: 7c 01 movw r14, r24 - e72: b5 01 movw r22, r10 - e74: bb 0c add r11, r11 - e76: 88 0b sbc r24, r24 - e78: 99 0b sbc r25, r25 - e7a: 0e 94 22 0a call 0x1444 ; 0x1444 <__floatsisf> - e7e: 9b 01 movw r18, r22 - e80: ac 01 movw r20, r24 - e82: c7 01 movw r24, r14 - e84: b6 01 movw r22, r12 - e86: 0e 94 07 09 call 0x120e ; 0x120e <__addsf3> - e8a: 18 c0 rjmp .+48 ; 0xebc <RPID_crunch+0x100> - e8c: b4 01 movw r22, r8 - e8e: 99 0c add r9, r9 - e90: 88 0b sbc r24, r24 - e92: 99 0b sbc r25, r25 - e94: 0e 94 22 0a call 0x1444 ; 0x1444 <__floatsisf> - e98: a7 01 movw r20, r14 - e9a: 96 01 movw r18, r12 - e9c: 0e 94 07 09 call 0x120e ; 0x120e <__addsf3> - ea0: 6b 01 movw r12, r22 - ea2: 7c 01 movw r14, r24 - ea4: b5 01 movw r22, r10 - ea6: bb 0c add r11, r11 - ea8: 88 0b sbc r24, r24 - eaa: 99 0b sbc r25, r25 - eac: 0e 94 22 0a call 0x1444 ; 0x1444 <__floatsisf> - eb0: 9b 01 movw r18, r22 - eb2: ac 01 movw r20, r24 - eb4: c7 01 movw r24, r14 - eb6: b6 01 movw r22, r12 - eb8: 0e 94 06 09 call 0x120c ; 0x120c <__subsf3> - ebc: ed 81 ldd r30, Y+5 ; 0x05 - ebe: fe 81 ldd r31, Y+6 ; 0x06 - ec0: 65 8f std Z+29, r22 ; 0x1d - ec2: 76 8f std Z+30, r23 ; 0x1e - ec4: 87 8f std Z+31, r24 ; 0x1f - ec6: 90 a3 std Z+32, r25 ; 0x20 - ec8: ed 81 ldd r30, Y+5 ; 0x05 - eca: fe 81 ldd r31, Y+6 ; 0x06 - ecc: 85 8c ldd r8, Z+29 ; 0x1d - ece: 96 8c ldd r9, Z+30 ; 0x1e - ed0: a7 8c ldd r10, Z+31 ; 0x1f - ed2: b0 a0 ldd r11, Z+32 ; 0x20 - ed4: 20 81 ld r18, Z - ed6: 31 81 ldd r19, Z+1 ; 0x01 - ed8: 42 81 ldd r20, Z+2 ; 0x02 - eda: 53 81 ldd r21, Z+3 ; 0x03 - edc: c5 01 movw r24, r10 - ede: b4 01 movw r22, r8 - ee0: 0e 94 d7 0a call 0x15ae ; 0x15ae <__mulsf3> - ee4: 6b 01 movw r12, r22 - ee6: 7c 01 movw r14, r24 - ee8: ed 81 ldd r30, Y+5 ; 0x05 - eea: fe 81 ldd r31, Y+6 ; 0x06 - eec: 65 89 ldd r22, Z+21 ; 0x15 - eee: 76 89 ldd r23, Z+22 ; 0x16 - ef0: 07 2e mov r0, r23 - ef2: 00 0c add r0, r0 - ef4: 88 0b sbc r24, r24 - ef6: 99 0b sbc r25, r25 - ef8: 0e 94 22 0a call 0x1444 ; 0x1444 <__floatsisf> - efc: 9b 01 movw r18, r22 - efe: ac 01 movw r20, r24 - f00: c7 01 movw r24, r14 - f02: b6 01 movw r22, r12 - f04: 0e 94 73 09 call 0x12e6 ; 0x12e6 <__cmpsf2> - f08: 88 23 and r24, r24 - f0a: 1c f5 brge .+70 ; 0xf52 <RPID_crunch+0x196> - f0c: ed 81 ldd r30, Y+5 ; 0x05 - f0e: fe 81 ldd r31, Y+6 ; 0x06 - f10: 67 89 ldd r22, Z+23 ; 0x17 - f12: 70 8d ldd r23, Z+24 ; 0x18 - f14: 07 2e mov r0, r23 - f16: 00 0c add r0, r0 - f18: 88 0b sbc r24, r24 - f1a: 99 0b sbc r25, r25 - f1c: 0e 94 22 0a call 0x1444 ; 0x1444 <__floatsisf> - f20: 9b 01 movw r18, r22 - f22: ac 01 movw r20, r24 - f24: c7 01 movw r24, r14 - f26: b6 01 movw r22, r12 - f28: 0e 94 d2 0a call 0x15a4 ; 0x15a4 <__gesf2> - f2c: 18 16 cp r1, r24 - f2e: 8c f4 brge .+34 ; 0xf52 <RPID_crunch+0x196> - f30: a5 01 movw r20, r10 - f32: 94 01 movw r18, r8 - f34: ed 81 ldd r30, Y+5 ; 0x05 - f36: fe 81 ldd r31, Y+6 ; 0x06 - f38: 61 a1 ldd r22, Z+33 ; 0x21 - f3a: 72 a1 ldd r23, Z+34 ; 0x22 - f3c: 83 a1 ldd r24, Z+35 ; 0x23 - f3e: 94 a1 ldd r25, Z+36 ; 0x24 - f40: 0e 94 07 09 call 0x120e ; 0x120e <__addsf3> - f44: ed 81 ldd r30, Y+5 ; 0x05 - f46: fe 81 ldd r31, Y+6 ; 0x06 - f48: 61 a3 std Z+33, r22 ; 0x21 - f4a: 72 a3 std Z+34, r23 ; 0x22 - f4c: 83 a3 std Z+35, r24 ; 0x23 - f4e: 94 a3 std Z+36, r25 ; 0x24 - f50: 06 c0 rjmp .+12 ; 0xf5e <RPID_crunch+0x1a2> - f52: ed 81 ldd r30, Y+5 ; 0x05 - f54: fe 81 ldd r31, Y+6 ; 0x06 - f56: 11 a2 std Z+33, r1 ; 0x21 - f58: 12 a2 std Z+34, r1 ; 0x22 - f5a: 13 a2 std Z+35, r1 ; 0x23 - f5c: 14 a2 std Z+36, r1 ; 0x24 - f5e: ed 81 ldd r30, Y+5 ; 0x05 - f60: fe 81 ldd r31, Y+6 ; 0x06 - f62: 44 84 ldd r4, Z+12 ; 0x0c - f64: 55 84 ldd r5, Z+13 ; 0x0d - f66: 66 84 ldd r6, Z+14 ; 0x0e - f68: 77 84 ldd r7, Z+15 ; 0x0f - f6a: 21 a1 ldd r18, Z+33 ; 0x21 - f6c: 32 a1 ldd r19, Z+34 ; 0x22 - f6e: 43 a1 ldd r20, Z+35 ; 0x23 - f70: 54 a1 ldd r21, Z+36 ; 0x24 - f72: 64 81 ldd r22, Z+4 ; 0x04 - f74: 75 81 ldd r23, Z+5 ; 0x05 - f76: 86 81 ldd r24, Z+6 ; 0x06 - f78: 97 81 ldd r25, Z+7 ; 0x07 - f7a: 0e 94 d7 0a call 0x15ae ; 0x15ae <__mulsf3> - f7e: a3 01 movw r20, r6 - f80: 92 01 movw r18, r4 - f82: 0e 94 d7 0a call 0x15ae ; 0x15ae <__mulsf3> - f86: 69 83 std Y+1, r22 ; 0x01 - f88: 7a 83 std Y+2, r23 ; 0x02 - f8a: 8b 83 std Y+3, r24 ; 0x03 - f8c: 9c 83 std Y+4, r25 ; 0x04 + dec: 4f 92 push r4 + dee: 5f 92 push r5 + df0: 6f 92 push r6 + df2: 7f 92 push r7 + df4: 8f 92 push r8 + df6: 9f 92 push r9 + df8: af 92 push r10 + dfa: bf 92 push r11 + dfc: cf 92 push r12 + dfe: df 92 push r13 + e00: ef 92 push r14 + e02: ff 92 push r15 + e04: cf 93 push r28 + e06: df 93 push r29 + e08: 00 d0 rcall .+0 ; 0xe0a <RPID_crunch+0x1e> + e0a: 00 d0 rcall .+0 ; 0xe0c <RPID_crunch+0x20> + e0c: cd b7 in r28, 0x3d ; 61 + e0e: de b7 in r29, 0x3e ; 62 + e10: 8d 83 std Y+5, r24 ; 0x05 + e12: 9e 83 std Y+6, r25 ; 0x06 + e14: 9a 01 movw r18, r20 + e16: ab 01 movw r20, r22 + e18: fc 01 movw r30, r24 + e1a: 65 a1 ldd r22, Z+37 ; 0x25 + e1c: 76 a1 ldd r23, Z+38 ; 0x26 + e1e: 87 a1 ldd r24, Z+39 ; 0x27 + e20: 90 a5 ldd r25, Z+40 ; 0x28 + e22: 0e 94 1e 09 call 0x123c ; 0x123c <__subsf3> + e26: 6b 01 movw r12, r22 + e28: 7c 01 movw r14, r24 + e2a: ed 81 ldd r30, Y+5 ; 0x05 + e2c: fe 81 ldd r31, Y+6 ; 0x06 + e2e: 65 8f std Z+29, r22 ; 0x1d + e30: 76 8f std Z+30, r23 ; 0x1e + e32: 87 8f std Z+31, r24 ; 0x1f + e34: 90 a3 std Z+32, r25 ; 0x20 + e36: 80 89 ldd r24, Z+16 ; 0x10 + e38: 80 ff sbrs r24, 0 + e3a: 5e c0 rjmp .+188 ; 0xef8 <RPID_crunch+0x10c> + e3c: 81 88 ldd r8, Z+17 ; 0x11 + e3e: 92 88 ldd r9, Z+18 ; 0x12 + e40: a3 88 ldd r10, Z+19 ; 0x13 + e42: b4 88 ldd r11, Z+20 ; 0x14 + e44: c7 01 movw r24, r14 + e46: b6 01 movw r22, r12 + e48: 0e 94 02 0a call 0x1404 ; 0x1404 <__fixsfsi> + e4c: 9b 01 movw r18, r22 + e4e: 77 23 and r23, r23 + e50: 24 f4 brge .+8 ; 0xe5a <RPID_crunch+0x6e> + e52: 22 27 eor r18, r18 + e54: 33 27 eor r19, r19 + e56: 26 1b sub r18, r22 + e58: 37 0b sbc r19, r23 + e5a: a4 01 movw r20, r8 + e5c: 4a 19 sub r20, r10 + e5e: 5b 09 sbc r21, r11 + e60: ca 01 movw r24, r20 + e62: 99 23 and r25, r25 + e64: 0c f4 brge .+2 ; 0xe68 <RPID_crunch+0x7c> + e66: 01 96 adiw r24, 0x01 ; 1 + e68: 95 95 asr r25 + e6a: 87 95 ror r24 + e6c: 82 17 cp r24, r18 + e6e: 93 07 cpc r25, r19 + e70: 0c f0 brlt .+2 ; 0xe74 <RPID_crunch+0x88> + e72: 42 c0 rjmp .+132 ; 0xef8 <RPID_crunch+0x10c> + e74: 20 e0 ldi r18, 0x00 ; 0 + e76: 30 e0 ldi r19, 0x00 ; 0 + e78: a9 01 movw r20, r18 + e7a: c7 01 movw r24, r14 + e7c: b6 01 movw r22, r12 + e7e: 0e 94 ea 0a call 0x15d4 ; 0x15d4 <__gesf2> + e82: 18 16 cp r1, r24 + e84: dc f4 brge .+54 ; 0xebc <RPID_crunch+0xd0> + e86: b4 01 movw r22, r8 + e88: 99 0c add r9, r9 + e8a: 88 0b sbc r24, r24 + e8c: 99 0b sbc r25, r25 + e8e: 0e 94 3a 0a call 0x1474 ; 0x1474 <__floatsisf> + e92: 9b 01 movw r18, r22 + e94: ac 01 movw r20, r24 + e96: c7 01 movw r24, r14 + e98: b6 01 movw r22, r12 + e9a: 0e 94 1e 09 call 0x123c ; 0x123c <__subsf3> + e9e: 6b 01 movw r12, r22 + ea0: 7c 01 movw r14, r24 + ea2: b5 01 movw r22, r10 + ea4: bb 0c add r11, r11 + ea6: 88 0b sbc r24, r24 + ea8: 99 0b sbc r25, r25 + eaa: 0e 94 3a 0a call 0x1474 ; 0x1474 <__floatsisf> + eae: 9b 01 movw r18, r22 + eb0: ac 01 movw r20, r24 + eb2: c7 01 movw r24, r14 + eb4: b6 01 movw r22, r12 + eb6: 0e 94 1f 09 call 0x123e ; 0x123e <__addsf3> + eba: 18 c0 rjmp .+48 ; 0xeec <RPID_crunch+0x100> + ebc: b4 01 movw r22, r8 + ebe: 99 0c add r9, r9 + ec0: 88 0b sbc r24, r24 + ec2: 99 0b sbc r25, r25 + ec4: 0e 94 3a 0a call 0x1474 ; 0x1474 <__floatsisf> + ec8: a7 01 movw r20, r14 + eca: 96 01 movw r18, r12 + ecc: 0e 94 1f 09 call 0x123e ; 0x123e <__addsf3> + ed0: 6b 01 movw r12, r22 + ed2: 7c 01 movw r14, r24 + ed4: b5 01 movw r22, r10 + ed6: bb 0c add r11, r11 + ed8: 88 0b sbc r24, r24 + eda: 99 0b sbc r25, r25 + edc: 0e 94 3a 0a call 0x1474 ; 0x1474 <__floatsisf> + ee0: 9b 01 movw r18, r22 + ee2: ac 01 movw r20, r24 + ee4: c7 01 movw r24, r14 + ee6: b6 01 movw r22, r12 + ee8: 0e 94 1e 09 call 0x123c ; 0x123c <__subsf3> + eec: ed 81 ldd r30, Y+5 ; 0x05 + eee: fe 81 ldd r31, Y+6 ; 0x06 + ef0: 65 8f std Z+29, r22 ; 0x1d + ef2: 76 8f std Z+30, r23 ; 0x1e + ef4: 87 8f std Z+31, r24 ; 0x1f + ef6: 90 a3 std Z+32, r25 ; 0x20 + ef8: ed 81 ldd r30, Y+5 ; 0x05 + efa: fe 81 ldd r31, Y+6 ; 0x06 + efc: 85 8c ldd r8, Z+29 ; 0x1d + efe: 96 8c ldd r9, Z+30 ; 0x1e + f00: a7 8c ldd r10, Z+31 ; 0x1f + f02: b0 a0 ldd r11, Z+32 ; 0x20 + f04: 20 81 ld r18, Z + f06: 31 81 ldd r19, Z+1 ; 0x01 + f08: 42 81 ldd r20, Z+2 ; 0x02 + f0a: 53 81 ldd r21, Z+3 ; 0x03 + f0c: c5 01 movw r24, r10 + f0e: b4 01 movw r22, r8 + f10: 0e 94 ef 0a call 0x15de ; 0x15de <__mulsf3> + f14: 6b 01 movw r12, r22 + f16: 7c 01 movw r14, r24 + f18: ed 81 ldd r30, Y+5 ; 0x05 + f1a: fe 81 ldd r31, Y+6 ; 0x06 + f1c: 65 89 ldd r22, Z+21 ; 0x15 + f1e: 76 89 ldd r23, Z+22 ; 0x16 + f20: 07 2e mov r0, r23 + f22: 00 0c add r0, r0 + f24: 88 0b sbc r24, r24 + f26: 99 0b sbc r25, r25 + f28: 0e 94 3a 0a call 0x1474 ; 0x1474 <__floatsisf> + f2c: 9b 01 movw r18, r22 + f2e: ac 01 movw r20, r24 + f30: c7 01 movw r24, r14 + f32: b6 01 movw r22, r12 + f34: 0e 94 8b 09 call 0x1316 ; 0x1316 <__cmpsf2> + f38: 88 23 and r24, r24 + f3a: 1c f5 brge .+70 ; 0xf82 <RPID_crunch+0x196> + f3c: ed 81 ldd r30, Y+5 ; 0x05 + f3e: fe 81 ldd r31, Y+6 ; 0x06 + f40: 67 89 ldd r22, Z+23 ; 0x17 + f42: 70 8d ldd r23, Z+24 ; 0x18 + f44: 07 2e mov r0, r23 + f46: 00 0c add r0, r0 + f48: 88 0b sbc r24, r24 + f4a: 99 0b sbc r25, r25 + f4c: 0e 94 3a 0a call 0x1474 ; 0x1474 <__floatsisf> + f50: 9b 01 movw r18, r22 + f52: ac 01 movw r20, r24 + f54: c7 01 movw r24, r14 + f56: b6 01 movw r22, r12 + f58: 0e 94 ea 0a call 0x15d4 ; 0x15d4 <__gesf2> + f5c: 18 16 cp r1, r24 + f5e: 8c f4 brge .+34 ; 0xf82 <RPID_crunch+0x196> + f60: a5 01 movw r20, r10 + f62: 94 01 movw r18, r8 + f64: ed 81 ldd r30, Y+5 ; 0x05 + f66: fe 81 ldd r31, Y+6 ; 0x06 + f68: 61 a1 ldd r22, Z+33 ; 0x21 + f6a: 72 a1 ldd r23, Z+34 ; 0x22 + f6c: 83 a1 ldd r24, Z+35 ; 0x23 + f6e: 94 a1 ldd r25, Z+36 ; 0x24 + f70: 0e 94 1f 09 call 0x123e ; 0x123e <__addsf3> + f74: ed 81 ldd r30, Y+5 ; 0x05 + f76: fe 81 ldd r31, Y+6 ; 0x06 + f78: 61 a3 std Z+33, r22 ; 0x21 + f7a: 72 a3 std Z+34, r23 ; 0x22 + f7c: 83 a3 std Z+35, r24 ; 0x23 + f7e: 94 a3 std Z+36, r25 ; 0x24 + f80: 06 c0 rjmp .+12 ; 0xf8e <RPID_crunch+0x1a2> + f82: ed 81 ldd r30, Y+5 ; 0x05 + f84: fe 81 ldd r31, Y+6 ; 0x06 + f86: 11 a2 std Z+33, r1 ; 0x21 + f88: 12 a2 std Z+34, r1 ; 0x22 + f8a: 13 a2 std Z+35, r1 ; 0x23 + f8c: 14 a2 std Z+36, r1 ; 0x24 f8e: ed 81 ldd r30, Y+5 ; 0x05 f90: fe 81 ldd r31, Y+6 ; 0x06 - f92: 21 8d ldd r18, Z+25 ; 0x19 - f94: 32 8d ldd r19, Z+26 ; 0x1a - f96: 43 8d ldd r20, Z+27 ; 0x1b - f98: 54 8d ldd r21, Z+28 ; 0x1c - f9a: c5 01 movw r24, r10 - f9c: b4 01 movw r22, r8 - f9e: 0e 94 06 09 call 0x120c ; 0x120c <__subsf3> - fa2: a3 01 movw r20, r6 - fa4: 92 01 movw r18, r4 - fa6: 0e 94 78 09 call 0x12f0 ; 0x12f0 <__divsf3> - faa: 0e 94 ea 09 call 0x13d4 ; 0x13d4 <__fixsfsi> - fae: 8d 81 ldd r24, Y+5 ; 0x05 - fb0: 9e 81 ldd r25, Y+6 ; 0x06 - fb2: 8f 96 adiw r24, 0x2f ; 47 - fb4: 0e 94 e2 03 call 0x7c4 ; 0x7c4 <l_filter> - fb8: bc 01 movw r22, r24 - fba: 99 0f add r25, r25 - fbc: 88 0b sbc r24, r24 - fbe: 99 0b sbc r25, r25 - fc0: 0e 94 22 0a call 0x1444 ; 0x1444 <__floatsisf> - fc4: ed 81 ldd r30, Y+5 ; 0x05 - fc6: fe 81 ldd r31, Y+6 ; 0x06 - fc8: 20 85 ldd r18, Z+8 ; 0x08 - fca: 31 85 ldd r19, Z+9 ; 0x09 - fcc: 42 85 ldd r20, Z+10 ; 0x0a - fce: 53 85 ldd r21, Z+11 ; 0x0b - fd0: 0e 94 d7 0a call 0x15ae ; 0x15ae <__mulsf3> - fd4: 0e 94 ea 09 call 0x13d4 ; 0x13d4 <__fixsfsi> - fd8: 07 2e mov r0, r23 - fda: 00 0c add r0, r0 - fdc: 88 0b sbc r24, r24 - fde: 99 0b sbc r25, r25 - fe0: 0e 94 22 0a call 0x1444 ; 0x1444 <__floatsisf> - fe4: 4b 01 movw r8, r22 - fe6: 5c 01 movw r10, r24 - fe8: ed 81 ldd r30, Y+5 ; 0x05 - fea: fe 81 ldd r31, Y+6 ; 0x06 - fec: 65 8d ldd r22, Z+29 ; 0x1d - fee: 76 8d ldd r23, Z+30 ; 0x1e - ff0: 87 8d ldd r24, Z+31 ; 0x1f - ff2: 90 a1 ldd r25, Z+32 ; 0x20 - ff4: 61 8f std Z+25, r22 ; 0x19 - ff6: 72 8f std Z+26, r23 ; 0x1a - ff8: 83 8f std Z+27, r24 ; 0x1b - ffa: 94 8f std Z+28, r25 ; 0x1c - ffc: 0e 94 ea 09 call 0x13d4 ; 0x13d4 <__fixsfsi> - 1000: 9b 01 movw r18, r22 - 1002: 77 23 and r23, r23 - 1004: 24 f4 brge .+8 ; 0x100e <RPID_crunch+0x252> - 1006: 22 27 eor r18, r18 - 1008: 33 27 eor r19, r19 - 100a: 26 1b sub r18, r22 - 100c: 37 0b sbc r19, r23 - 100e: b9 01 movw r22, r18 - 1010: 33 0f add r19, r19 - 1012: 88 0b sbc r24, r24 - 1014: 99 0b sbc r25, r25 - 1016: 0e 94 22 0a call 0x1444 ; 0x1444 <__floatsisf> - 101a: ed 81 ldd r30, Y+5 ; 0x05 - 101c: fe 81 ldd r31, Y+6 ; 0x06 - 101e: 21 a5 ldd r18, Z+41 ; 0x29 - 1020: 32 a5 ldd r19, Z+42 ; 0x2a - 1022: 43 a5 ldd r20, Z+43 ; 0x2b - 1024: 54 a5 ldd r21, Z+44 ; 0x2c - 1026: 0e 94 73 09 call 0x12e6 ; 0x12e6 <__cmpsf2> - 102a: 88 23 and r24, r24 - 102c: 44 f4 brge .+16 ; 0x103e <RPID_crunch+0x282> - 102e: ed 81 ldd r30, Y+5 ; 0x05 - 1030: fe 81 ldd r31, Y+6 ; 0x06 - 1032: 85 a5 ldd r24, Z+45 ; 0x2d - 1034: 96 a5 ldd r25, Z+46 ; 0x2e - 1036: 01 96 adiw r24, 0x01 ; 1 - 1038: 85 a7 std Z+45, r24 ; 0x2d - 103a: 96 a7 std Z+46, r25 ; 0x2e - 103c: 04 c0 rjmp .+8 ; 0x1046 <RPID_crunch+0x28a> - 103e: ed 81 ldd r30, Y+5 ; 0x05 - 1040: fe 81 ldd r31, Y+6 ; 0x06 - 1042: 15 a6 std Z+45, r1 ; 0x2d - 1044: 16 a6 std Z+46, r1 ; 0x2e - 1046: 29 81 ldd r18, Y+1 ; 0x01 - 1048: 3a 81 ldd r19, Y+2 ; 0x02 - 104a: 4b 81 ldd r20, Y+3 ; 0x03 - 104c: 5c 81 ldd r21, Y+4 ; 0x04 - 104e: c7 01 movw r24, r14 - 1050: b6 01 movw r22, r12 - 1052: 0e 94 07 09 call 0x120e ; 0x120e <__addsf3> - 1056: a5 01 movw r20, r10 - 1058: 94 01 movw r18, r8 - 105a: 0e 94 07 09 call 0x120e ; 0x120e <__addsf3> - 105e: b6 2e mov r11, r22 - 1060: a7 2e mov r10, r23 - 1062: 98 2e mov r9, r24 - 1064: 89 2e mov r8, r25 - 1066: ed 81 ldd r30, Y+5 ; 0x05 - 1068: fe 81 ldd r31, Y+6 ; 0x06 - 106a: 67 89 ldd r22, Z+23 ; 0x17 - 106c: 70 8d ldd r23, Z+24 ; 0x18 - 106e: 07 2e mov r0, r23 - 1070: 00 0c add r0, r0 - 1072: 88 0b sbc r24, r24 - 1074: 99 0b sbc r25, r25 - 1076: 0e 94 22 0a call 0x1444 ; 0x1444 <__floatsisf> - 107a: d6 2e mov r13, r22 - 107c: e7 2e mov r14, r23 - 107e: f8 2e mov r15, r24 - 1080: c9 2e mov r12, r25 - 1082: 26 2f mov r18, r22 - 1084: 37 2f mov r19, r23 - 1086: 48 2f mov r20, r24 - 1088: 59 2f mov r21, r25 - 108a: 6b 2d mov r22, r11 - 108c: 7a 2d mov r23, r10 - 108e: 89 2d mov r24, r9 - 1090: 98 2d mov r25, r8 - 1092: 0e 94 73 09 call 0x12e6 ; 0x12e6 <__cmpsf2> - 1096: 88 23 and r24, r24 - 1098: f4 f0 brlt .+60 ; 0x10d6 <RPID_crunch+0x31a> - 109a: ed 81 ldd r30, Y+5 ; 0x05 - 109c: fe 81 ldd r31, Y+6 ; 0x06 - 109e: 65 89 ldd r22, Z+21 ; 0x15 - 10a0: 76 89 ldd r23, Z+22 ; 0x16 - 10a2: 07 2e mov r0, r23 - 10a4: 00 0c add r0, r0 - 10a6: 88 0b sbc r24, r24 - 10a8: 99 0b sbc r25, r25 - 10aa: 0e 94 22 0a call 0x1444 ; 0x1444 <__floatsisf> - 10ae: d6 2e mov r13, r22 - 10b0: e7 2e mov r14, r23 - 10b2: f8 2e mov r15, r24 - 10b4: c9 2e mov r12, r25 - 10b6: 26 2f mov r18, r22 - 10b8: 37 2f mov r19, r23 - 10ba: 48 2f mov r20, r24 - 10bc: 59 2f mov r21, r25 - 10be: 6b 2d mov r22, r11 - 10c0: 7a 2d mov r23, r10 - 10c2: 89 2d mov r24, r9 - 10c4: 98 2d mov r25, r8 - 10c6: 0e 94 d2 0a call 0x15a4 ; 0x15a4 <__gesf2> - 10ca: 18 16 cp r1, r24 - 10cc: 24 f0 brlt .+8 ; 0x10d6 <RPID_crunch+0x31a> - 10ce: db 2c mov r13, r11 - 10d0: ea 2c mov r14, r10 - 10d2: f9 2c mov r15, r9 - 10d4: c8 2c mov r12, r8 - 10d6: 6d 2d mov r22, r13 - 10d8: 7e 2d mov r23, r14 - 10da: 8f 2d mov r24, r15 - 10dc: 9c 2d mov r25, r12 - 10de: 26 96 adiw r28, 0x06 ; 6 - 10e0: cd bf out 0x3d, r28 ; 61 - 10e2: de bf out 0x3e, r29 ; 62 - 10e4: df 91 pop r29 - 10e6: cf 91 pop r28 - 10e8: ff 90 pop r15 - 10ea: ef 90 pop r14 - 10ec: df 90 pop r13 - 10ee: cf 90 pop r12 - 10f0: bf 90 pop r11 - 10f2: af 90 pop r10 - 10f4: 9f 90 pop r9 - 10f6: 8f 90 pop r8 - 10f8: 7f 90 pop r7 - 10fa: 6f 90 pop r6 - 10fc: 5f 90 pop r5 - 10fe: 4f 90 pop r4 - 1100: 08 95 ret - -00001102 <RPID_setSetpoint>: - 1102: fc 01 movw r30, r24 - 1104: 45 a3 std Z+37, r20 ; 0x25 - 1106: 56 a3 std Z+38, r21 ; 0x26 - 1108: 67 a3 std Z+39, r22 ; 0x27 - 110a: 70 a7 std Z+40, r23 ; 0x28 - 110c: 08 95 ret - -0000110e <RPID_onTarget>: + f92: 44 84 ldd r4, Z+12 ; 0x0c + f94: 55 84 ldd r5, Z+13 ; 0x0d + f96: 66 84 ldd r6, Z+14 ; 0x0e + f98: 77 84 ldd r7, Z+15 ; 0x0f + f9a: 21 a1 ldd r18, Z+33 ; 0x21 + f9c: 32 a1 ldd r19, Z+34 ; 0x22 + f9e: 43 a1 ldd r20, Z+35 ; 0x23 + fa0: 54 a1 ldd r21, Z+36 ; 0x24 + fa2: 64 81 ldd r22, Z+4 ; 0x04 + fa4: 75 81 ldd r23, Z+5 ; 0x05 + fa6: 86 81 ldd r24, Z+6 ; 0x06 + fa8: 97 81 ldd r25, Z+7 ; 0x07 + faa: 0e 94 ef 0a call 0x15de ; 0x15de <__mulsf3> + fae: a3 01 movw r20, r6 + fb0: 92 01 movw r18, r4 + fb2: 0e 94 ef 0a call 0x15de ; 0x15de <__mulsf3> + fb6: 69 83 std Y+1, r22 ; 0x01 + fb8: 7a 83 std Y+2, r23 ; 0x02 + fba: 8b 83 std Y+3, r24 ; 0x03 + fbc: 9c 83 std Y+4, r25 ; 0x04 + fbe: ed 81 ldd r30, Y+5 ; 0x05 + fc0: fe 81 ldd r31, Y+6 ; 0x06 + fc2: 21 8d ldd r18, Z+25 ; 0x19 + fc4: 32 8d ldd r19, Z+26 ; 0x1a + fc6: 43 8d ldd r20, Z+27 ; 0x1b + fc8: 54 8d ldd r21, Z+28 ; 0x1c + fca: c5 01 movw r24, r10 + fcc: b4 01 movw r22, r8 + fce: 0e 94 1e 09 call 0x123c ; 0x123c <__subsf3> + fd2: a3 01 movw r20, r6 + fd4: 92 01 movw r18, r4 + fd6: 0e 94 90 09 call 0x1320 ; 0x1320 <__divsf3> + fda: 0e 94 02 0a call 0x1404 ; 0x1404 <__fixsfsi> + fde: 8d 81 ldd r24, Y+5 ; 0x05 + fe0: 9e 81 ldd r25, Y+6 ; 0x06 + fe2: 8f 96 adiw r24, 0x2f ; 47 + fe4: 0e 94 fb 03 call 0x7f6 ; 0x7f6 <l_filter> + fe8: bc 01 movw r22, r24 + fea: 99 0f add r25, r25 + fec: 88 0b sbc r24, r24 + fee: 99 0b sbc r25, r25 + ff0: 0e 94 3a 0a call 0x1474 ; 0x1474 <__floatsisf> + ff4: ed 81 ldd r30, Y+5 ; 0x05 + ff6: fe 81 ldd r31, Y+6 ; 0x06 + ff8: 20 85 ldd r18, Z+8 ; 0x08 + ffa: 31 85 ldd r19, Z+9 ; 0x09 + ffc: 42 85 ldd r20, Z+10 ; 0x0a + ffe: 53 85 ldd r21, Z+11 ; 0x0b + 1000: 0e 94 ef 0a call 0x15de ; 0x15de <__mulsf3> + 1004: 0e 94 02 0a call 0x1404 ; 0x1404 <__fixsfsi> + 1008: 07 2e mov r0, r23 + 100a: 00 0c add r0, r0 + 100c: 88 0b sbc r24, r24 + 100e: 99 0b sbc r25, r25 + 1010: 0e 94 3a 0a call 0x1474 ; 0x1474 <__floatsisf> + 1014: 4b 01 movw r8, r22 + 1016: 5c 01 movw r10, r24 + 1018: ed 81 ldd r30, Y+5 ; 0x05 + 101a: fe 81 ldd r31, Y+6 ; 0x06 + 101c: 65 8d ldd r22, Z+29 ; 0x1d + 101e: 76 8d ldd r23, Z+30 ; 0x1e + 1020: 87 8d ldd r24, Z+31 ; 0x1f + 1022: 90 a1 ldd r25, Z+32 ; 0x20 + 1024: 61 8f std Z+25, r22 ; 0x19 + 1026: 72 8f std Z+26, r23 ; 0x1a + 1028: 83 8f std Z+27, r24 ; 0x1b + 102a: 94 8f std Z+28, r25 ; 0x1c + 102c: 0e 94 02 0a call 0x1404 ; 0x1404 <__fixsfsi> + 1030: 9b 01 movw r18, r22 + 1032: 77 23 and r23, r23 + 1034: 24 f4 brge .+8 ; 0x103e <RPID_crunch+0x252> + 1036: 22 27 eor r18, r18 + 1038: 33 27 eor r19, r19 + 103a: 26 1b sub r18, r22 + 103c: 37 0b sbc r19, r23 + 103e: b9 01 movw r22, r18 + 1040: 33 0f add r19, r19 + 1042: 88 0b sbc r24, r24 + 1044: 99 0b sbc r25, r25 + 1046: 0e 94 3a 0a call 0x1474 ; 0x1474 <__floatsisf> + 104a: ed 81 ldd r30, Y+5 ; 0x05 + 104c: fe 81 ldd r31, Y+6 ; 0x06 + 104e: 21 a5 ldd r18, Z+41 ; 0x29 + 1050: 32 a5 ldd r19, Z+42 ; 0x2a + 1052: 43 a5 ldd r20, Z+43 ; 0x2b + 1054: 54 a5 ldd r21, Z+44 ; 0x2c + 1056: 0e 94 8b 09 call 0x1316 ; 0x1316 <__cmpsf2> + 105a: 88 23 and r24, r24 + 105c: 44 f4 brge .+16 ; 0x106e <RPID_crunch+0x282> + 105e: ed 81 ldd r30, Y+5 ; 0x05 + 1060: fe 81 ldd r31, Y+6 ; 0x06 + 1062: 85 a5 ldd r24, Z+45 ; 0x2d + 1064: 96 a5 ldd r25, Z+46 ; 0x2e + 1066: 01 96 adiw r24, 0x01 ; 1 + 1068: 85 a7 std Z+45, r24 ; 0x2d + 106a: 96 a7 std Z+46, r25 ; 0x2e + 106c: 04 c0 rjmp .+8 ; 0x1076 <RPID_crunch+0x28a> + 106e: ed 81 ldd r30, Y+5 ; 0x05 + 1070: fe 81 ldd r31, Y+6 ; 0x06 + 1072: 15 a6 std Z+45, r1 ; 0x2d + 1074: 16 a6 std Z+46, r1 ; 0x2e + 1076: 29 81 ldd r18, Y+1 ; 0x01 + 1078: 3a 81 ldd r19, Y+2 ; 0x02 + 107a: 4b 81 ldd r20, Y+3 ; 0x03 + 107c: 5c 81 ldd r21, Y+4 ; 0x04 + 107e: c7 01 movw r24, r14 + 1080: b6 01 movw r22, r12 + 1082: 0e 94 1f 09 call 0x123e ; 0x123e <__addsf3> + 1086: a5 01 movw r20, r10 + 1088: 94 01 movw r18, r8 + 108a: 0e 94 1f 09 call 0x123e ; 0x123e <__addsf3> + 108e: b6 2e mov r11, r22 + 1090: a7 2e mov r10, r23 + 1092: 98 2e mov r9, r24 + 1094: 89 2e mov r8, r25 + 1096: ed 81 ldd r30, Y+5 ; 0x05 + 1098: fe 81 ldd r31, Y+6 ; 0x06 + 109a: 67 89 ldd r22, Z+23 ; 0x17 + 109c: 70 8d ldd r23, Z+24 ; 0x18 + 109e: 07 2e mov r0, r23 + 10a0: 00 0c add r0, r0 + 10a2: 88 0b sbc r24, r24 + 10a4: 99 0b sbc r25, r25 + 10a6: 0e 94 3a 0a call 0x1474 ; 0x1474 <__floatsisf> + 10aa: d6 2e mov r13, r22 + 10ac: e7 2e mov r14, r23 + 10ae: f8 2e mov r15, r24 + 10b0: c9 2e mov r12, r25 + 10b2: 26 2f mov r18, r22 + 10b4: 37 2f mov r19, r23 + 10b6: 48 2f mov r20, r24 + 10b8: 59 2f mov r21, r25 + 10ba: 6b 2d mov r22, r11 + 10bc: 7a 2d mov r23, r10 + 10be: 89 2d mov r24, r9 + 10c0: 98 2d mov r25, r8 + 10c2: 0e 94 8b 09 call 0x1316 ; 0x1316 <__cmpsf2> + 10c6: 88 23 and r24, r24 + 10c8: f4 f0 brlt .+60 ; 0x1106 <RPID_crunch+0x31a> + 10ca: ed 81 ldd r30, Y+5 ; 0x05 + 10cc: fe 81 ldd r31, Y+6 ; 0x06 + 10ce: 65 89 ldd r22, Z+21 ; 0x15 + 10d0: 76 89 ldd r23, Z+22 ; 0x16 + 10d2: 07 2e mov r0, r23 + 10d4: 00 0c add r0, r0 + 10d6: 88 0b sbc r24, r24 + 10d8: 99 0b sbc r25, r25 + 10da: 0e 94 3a 0a call 0x1474 ; 0x1474 <__floatsisf> + 10de: d6 2e mov r13, r22 + 10e0: e7 2e mov r14, r23 + 10e2: f8 2e mov r15, r24 + 10e4: c9 2e mov r12, r25 + 10e6: 26 2f mov r18, r22 + 10e8: 37 2f mov r19, r23 + 10ea: 48 2f mov r20, r24 + 10ec: 59 2f mov r21, r25 + 10ee: 6b 2d mov r22, r11 + 10f0: 7a 2d mov r23, r10 + 10f2: 89 2d mov r24, r9 + 10f4: 98 2d mov r25, r8 + 10f6: 0e 94 ea 0a call 0x15d4 ; 0x15d4 <__gesf2> + 10fa: 18 16 cp r1, r24 + 10fc: 24 f0 brlt .+8 ; 0x1106 <RPID_crunch+0x31a> + 10fe: db 2c mov r13, r11 + 1100: ea 2c mov r14, r10 + 1102: f9 2c mov r15, r9 + 1104: c8 2c mov r12, r8 + 1106: 6d 2d mov r22, r13 + 1108: 7e 2d mov r23, r14 + 110a: 8f 2d mov r24, r15 + 110c: 9c 2d mov r25, r12 + 110e: 26 96 adiw r28, 0x06 ; 6 + 1110: cd bf out 0x3d, r28 ; 61 + 1112: de bf out 0x3e, r29 ; 62 + 1114: df 91 pop r29 + 1116: cf 91 pop r28 + 1118: ff 90 pop r15 + 111a: ef 90 pop r14 + 111c: df 90 pop r13 + 111e: cf 90 pop r12 + 1120: bf 90 pop r11 + 1122: af 90 pop r10 + 1124: 9f 90 pop r9 + 1126: 8f 90 pop r8 + 1128: 7f 90 pop r7 + 112a: 6f 90 pop r6 + 112c: 5f 90 pop r5 + 112e: 4f 90 pop r4 + 1130: 08 95 ret + +00001132 <RPID_setSetpoint>: + 1132: fc 01 movw r30, r24 + 1134: 45 a3 std Z+37, r20 ; 0x25 + 1136: 56 a3 std Z+38, r21 ; 0x26 + 1138: 67 a3 std Z+39, r22 ; 0x27 + 113a: 70 a7 std Z+40, r23 ; 0x28 + 113c: 08 95 ret + +0000113e <RPID_onTarget>: } uint8_t RPID_onTarget(RPID_t *pid){ // if on target for more than 50 millis - 110e: cf 93 push r28 - 1110: df 93 push r29 - 1112: ec 01 movw r28, r24 + 113e: cf 93 push r28 + 1140: df 93 push r29 + 1142: ec 01 movw r28, r24 return pid->onTargetTicks * pid->dt >0.15; - 1114: 6d a5 ldd r22, Y+45 ; 0x2d - 1116: 7e a5 ldd r23, Y+46 ; 0x2e - 1118: 07 2e mov r0, r23 - 111a: 00 0c add r0, r0 - 111c: 88 0b sbc r24, r24 - 111e: 99 0b sbc r25, r25 - 1120: 0e 94 22 0a call 0x1444 ; 0x1444 <__floatsisf> - 1124: 2c 85 ldd r18, Y+12 ; 0x0c - 1126: 3d 85 ldd r19, Y+13 ; 0x0d - 1128: 4e 85 ldd r20, Y+14 ; 0x0e - 112a: 5f 85 ldd r21, Y+15 ; 0x0f - 112c: 0e 94 d7 0a call 0x15ae ; 0x15ae <__mulsf3> - 1130: c1 e0 ldi r28, 0x01 ; 1 - 1132: 2a e9 ldi r18, 0x9A ; 154 - 1134: 39 e9 ldi r19, 0x99 ; 153 - 1136: 49 e1 ldi r20, 0x19 ; 25 - 1138: 5e e3 ldi r21, 0x3E ; 62 - 113a: 0e 94 d2 0a call 0x15a4 ; 0x15a4 <__gesf2> - 113e: 18 16 cp r1, r24 - 1140: 0c f0 brlt .+2 ; 0x1144 <RPID_onTarget+0x36> - 1142: c0 e0 ldi r28, 0x00 ; 0 + 1144: 6d a5 ldd r22, Y+45 ; 0x2d + 1146: 7e a5 ldd r23, Y+46 ; 0x2e + 1148: 07 2e mov r0, r23 + 114a: 00 0c add r0, r0 + 114c: 88 0b sbc r24, r24 + 114e: 99 0b sbc r25, r25 + 1150: 0e 94 3a 0a call 0x1474 ; 0x1474 <__floatsisf> + 1154: 2c 85 ldd r18, Y+12 ; 0x0c + 1156: 3d 85 ldd r19, Y+13 ; 0x0d + 1158: 4e 85 ldd r20, Y+14 ; 0x0e + 115a: 5f 85 ldd r21, Y+15 ; 0x0f + 115c: 0e 94 ef 0a call 0x15de ; 0x15de <__mulsf3> + 1160: c1 e0 ldi r28, 0x01 ; 1 + 1162: 2a e9 ldi r18, 0x9A ; 154 + 1164: 39 e9 ldi r19, 0x99 ; 153 + 1166: 49 e1 ldi r20, 0x19 ; 25 + 1168: 5e e3 ldi r21, 0x3E ; 62 + 116a: 0e 94 ea 0a call 0x15d4 ; 0x15d4 <__gesf2> + 116e: 18 16 cp r1, r24 + 1170: 0c f0 brlt .+2 ; 0x1174 <RPID_onTarget+0x36> + 1172: c0 e0 ldi r28, 0x00 ; 0 } - 1144: 8c 2f mov r24, r28 - 1146: df 91 pop r29 - 1148: cf 91 pop r28 - 114a: 08 95 ret + 1174: 8c 2f mov r24, r28 + 1176: df 91 pop r29 + 1178: cf 91 pop r28 + 117a: 08 95 ret -0000114c <RPID_init>: +0000117c <RPID_init>: void RPID_init(RPID_t *pid, double P, double I, double D, double dt, uint8_t CONT, int MIN_IN, int MAX_IN, int MIN_OUT, int MAX_OUT, uint8_t K){ - 114c: 8f 92 push r8 - 114e: 9f 92 push r9 - 1150: af 92 push r10 - 1152: bf 92 push r11 - 1154: cf 92 push r12 - 1156: df 92 push r13 - 1158: ef 92 push r14 - 115a: ff 92 push r15 - 115c: 0f 93 push r16 - 115e: 1f 93 push r17 - 1160: cf 93 push r28 - 1162: df 93 push r29 - 1164: cd b7 in r28, 0x3d ; 61 - 1166: de b7 in r29, 0x3e ; 62 - 1168: fc 01 movw r30, r24 + 117c: 8f 92 push r8 + 117e: 9f 92 push r9 + 1180: af 92 push r10 + 1182: bf 92 push r11 + 1184: cf 92 push r12 + 1186: df 92 push r13 + 1188: ef 92 push r14 + 118a: ff 92 push r15 + 118c: 0f 93 push r16 + 118e: 1f 93 push r17 + 1190: cf 93 push r28 + 1192: df 93 push r29 + 1194: cd b7 in r28, 0x3d ; 61 + 1196: de b7 in r29, 0x3e ; 62 + 1198: fc 01 movw r30, r24 pid->P = P; - 116a: 40 83 st Z, r20 - 116c: 51 83 std Z+1, r21 ; 0x01 - 116e: 62 83 std Z+2, r22 ; 0x02 - 1170: 73 83 std Z+3, r23 ; 0x03 + 119a: 40 83 st Z, r20 + 119c: 51 83 std Z+1, r21 ; 0x01 + 119e: 62 83 std Z+2, r22 ; 0x02 + 11a0: 73 83 std Z+3, r23 ; 0x03 pid->I=I; - 1172: 04 83 std Z+4, r16 ; 0x04 - 1174: 15 83 std Z+5, r17 ; 0x05 - 1176: 26 83 std Z+6, r18 ; 0x06 - 1178: 37 83 std Z+7, r19 ; 0x07 + 11a2: 04 83 std Z+4, r16 ; 0x04 + 11a4: 15 83 std Z+5, r17 ; 0x05 + 11a6: 26 83 std Z+6, r18 ; 0x06 + 11a8: 37 83 std Z+7, r19 ; 0x07 pid->D=D; - 117a: c0 86 std Z+8, r12 ; 0x08 - 117c: d1 86 std Z+9, r13 ; 0x09 - 117e: e2 86 std Z+10, r14 ; 0x0a - 1180: f3 86 std Z+11, r15 ; 0x0b + 11aa: c0 86 std Z+8, r12 ; 0x08 + 11ac: d1 86 std Z+9, r13 ; 0x09 + 11ae: e2 86 std Z+10, r14 ; 0x0a + 11b0: f3 86 std Z+11, r15 ; 0x0b pid->dt=dt; - 1182: 84 86 std Z+12, r8 ; 0x0c - 1184: 95 86 std Z+13, r9 ; 0x0d - 1186: a6 86 std Z+14, r10 ; 0x0e - 1188: b7 86 std Z+15, r11 ; 0x0f + 11b2: 84 86 std Z+12, r8 ; 0x0c + 11b4: 95 86 std Z+13, r9 ; 0x0d + 11b6: a6 86 std Z+14, r10 ; 0x0e + 11b8: b7 86 std Z+15, r11 ; 0x0f pid->CONT=CONT; - 118a: 80 89 ldd r24, Z+16 ; 0x10 - 118c: 98 89 ldd r25, Y+16 ; 0x10 - 118e: 90 fb bst r25, 0 - 1190: 80 f9 bld r24, 0 - 1192: 80 8b std Z+16, r24 ; 0x10 + 11ba: 80 89 ldd r24, Z+16 ; 0x10 + 11bc: 98 89 ldd r25, Y+16 ; 0x10 + 11be: 90 fb bst r25, 0 + 11c0: 80 f9 bld r24, 0 + 11c2: 80 8b std Z+16, r24 ; 0x10 pid->MIN_IN=MIN_IN; - 1194: 89 89 ldd r24, Y+17 ; 0x11 - 1196: 9a 89 ldd r25, Y+18 ; 0x12 - 1198: 83 8b std Z+19, r24 ; 0x13 - 119a: 94 8b std Z+20, r25 ; 0x14 + 11c4: 89 89 ldd r24, Y+17 ; 0x11 + 11c6: 9a 89 ldd r25, Y+18 ; 0x12 + 11c8: 83 8b std Z+19, r24 ; 0x13 + 11ca: 94 8b std Z+20, r25 ; 0x14 pid->MAX_IN=MAX_IN; - 119c: 8b 89 ldd r24, Y+19 ; 0x13 - 119e: 9c 89 ldd r25, Y+20 ; 0x14 - 11a0: 81 8b std Z+17, r24 ; 0x11 - 11a2: 92 8b std Z+18, r25 ; 0x12 + 11cc: 8b 89 ldd r24, Y+19 ; 0x13 + 11ce: 9c 89 ldd r25, Y+20 ; 0x14 + 11d0: 81 8b std Z+17, r24 ; 0x11 + 11d2: 92 8b std Z+18, r25 ; 0x12 pid->MIN_OUT=MIN_OUT; - 11a4: 8d 89 ldd r24, Y+21 ; 0x15 - 11a6: 9e 89 ldd r25, Y+22 ; 0x16 - 11a8: 87 8b std Z+23, r24 ; 0x17 - 11aa: 90 8f std Z+24, r25 ; 0x18 + 11d4: 8d 89 ldd r24, Y+21 ; 0x15 + 11d6: 9e 89 ldd r25, Y+22 ; 0x16 + 11d8: 87 8b std Z+23, r24 ; 0x17 + 11da: 90 8f std Z+24, r25 ; 0x18 pid->MAX_OUT=MAX_OUT; - 11ac: 8f 89 ldd r24, Y+23 ; 0x17 - 11ae: 98 8d ldd r25, Y+24 ; 0x18 - 11b0: 85 8b std Z+21, r24 ; 0x15 - 11b2: 96 8b std Z+22, r25 ; 0x16 + 11dc: 8f 89 ldd r24, Y+23 ; 0x17 + 11de: 98 8d ldd r25, Y+24 ; 0x18 + 11e0: 85 8b std Z+21, r24 ; 0x15 + 11e2: 96 8b std Z+22, r25 ; 0x16 pid->prevError=0; - 11b4: 11 8e std Z+25, r1 ; 0x19 - 11b6: 12 8e std Z+26, r1 ; 0x1a - 11b8: 13 8e std Z+27, r1 ; 0x1b - 11ba: 14 8e std Z+28, r1 ; 0x1c + 11e4: 11 8e std Z+25, r1 ; 0x19 + 11e6: 12 8e std Z+26, r1 ; 0x1a + 11e8: 13 8e std Z+27, r1 ; 0x1b + 11ea: 14 8e std Z+28, r1 ; 0x1c pid->currentError=0; - 11bc: 15 8e std Z+29, r1 ; 0x1d - 11be: 16 8e std Z+30, r1 ; 0x1e - 11c0: 17 8e std Z+31, r1 ; 0x1f - 11c2: 10 a2 std Z+32, r1 ; 0x20 + 11ec: 15 8e std Z+29, r1 ; 0x1d + 11ee: 16 8e std Z+30, r1 ; 0x1e + 11f0: 17 8e std Z+31, r1 ; 0x1f + 11f2: 10 a2 std Z+32, r1 ; 0x20 pid->totalError=0; - 11c4: 11 a2 std Z+33, r1 ; 0x21 - 11c6: 12 a2 std Z+34, r1 ; 0x22 - 11c8: 13 a2 std Z+35, r1 ; 0x23 - 11ca: 14 a2 std Z+36, r1 ; 0x24 + 11f4: 11 a2 std Z+33, r1 ; 0x21 + 11f6: 12 a2 std Z+34, r1 ; 0x22 + 11f8: 13 a2 std Z+35, r1 ; 0x23 + 11fa: 14 a2 std Z+36, r1 ; 0x24 pid->setpoint=0; - 11cc: 15 a2 std Z+37, r1 ; 0x25 - 11ce: 16 a2 std Z+38, r1 ; 0x26 - 11d0: 17 a2 std Z+39, r1 ; 0x27 - 11d2: 10 a6 std Z+40, r1 ; 0x28 + 11fc: 15 a2 std Z+37, r1 ; 0x25 + 11fe: 16 a2 std Z+38, r1 ; 0x26 + 1200: 17 a2 std Z+39, r1 ; 0x27 + 1202: 10 a6 std Z+40, r1 ; 0x28 pid->acceptableRange=50; - 11d4: 80 e0 ldi r24, 0x00 ; 0 - 11d6: 90 e0 ldi r25, 0x00 ; 0 - 11d8: a8 e4 ldi r26, 0x48 ; 72 - 11da: b2 e4 ldi r27, 0x42 ; 66 - 11dc: 81 a7 std Z+41, r24 ; 0x29 - 11de: 92 a7 std Z+42, r25 ; 0x2a - 11e0: a3 a7 std Z+43, r26 ; 0x2b - 11e2: b4 a7 std Z+44, r27 ; 0x2c + 1204: 80 e0 ldi r24, 0x00 ; 0 + 1206: 90 e0 ldi r25, 0x00 ; 0 + 1208: a8 e4 ldi r26, 0x48 ; 72 + 120a: b2 e4 ldi r27, 0x42 ; 66 + 120c: 81 a7 std Z+41, r24 ; 0x29 + 120e: 92 a7 std Z+42, r25 ; 0x2a + 1210: a3 a7 std Z+43, r26 ; 0x2b + 1212: b4 a7 std Z+44, r27 ; 0x2c pid->onTargetTicks=0; - 11e4: 15 a6 std Z+45, r1 ; 0x2d - 11e6: 16 a6 std Z+46, r1 ; 0x2e + 1214: 15 a6 std Z+45, r1 ; 0x2d + 1216: 16 a6 std Z+46, r1 ; 0x2e l_filter_init(&pid->filter, K); - 11e8: 69 8d ldd r22, Y+25 ; 0x19 - 11ea: cf 01 movw r24, r30 - 11ec: 8f 96 adiw r24, 0x2f ; 47 - 11ee: 0e 94 11 04 call 0x822 ; 0x822 <l_filter_init> - 11f2: df 91 pop r29 - 11f4: cf 91 pop r28 - 11f6: 1f 91 pop r17 - 11f8: 0f 91 pop r16 - 11fa: ff 90 pop r15 - 11fc: ef 90 pop r14 - 11fe: df 90 pop r13 - 1200: cf 90 pop r12 - 1202: bf 90 pop r11 - 1204: af 90 pop r10 - 1206: 9f 90 pop r9 - 1208: 8f 90 pop r8 - 120a: 08 95 ret - -0000120c <__subsf3>: - 120c: 50 58 subi r21, 0x80 ; 128 - -0000120e <__addsf3>: - 120e: bb 27 eor r27, r27 - 1210: aa 27 eor r26, r26 - 1212: 0e 94 1e 09 call 0x123c ; 0x123c <__addsf3x> - 1216: 0c 94 98 0a jmp 0x1530 ; 0x1530 <__fp_round> - 121a: 0e 94 8a 0a call 0x1514 ; 0x1514 <__fp_pscA> - 121e: 38 f0 brcs .+14 ; 0x122e <__addsf3+0x20> - 1220: 0e 94 91 0a call 0x1522 ; 0x1522 <__fp_pscB> - 1224: 20 f0 brcs .+8 ; 0x122e <__addsf3+0x20> - 1226: 39 f4 brne .+14 ; 0x1236 <__addsf3+0x28> - 1228: 9f 3f cpi r25, 0xFF ; 255 - 122a: 19 f4 brne .+6 ; 0x1232 <__addsf3+0x24> - 122c: 26 f4 brtc .+8 ; 0x1236 <__addsf3+0x28> - 122e: 0c 94 87 0a jmp 0x150e ; 0x150e <__fp_nan> - 1232: 0e f4 brtc .+2 ; 0x1236 <__addsf3+0x28> - 1234: e0 95 com r30 - 1236: e7 fb bst r30, 7 - 1238: 0c 94 81 0a jmp 0x1502 ; 0x1502 <__fp_inf> - -0000123c <__addsf3x>: - 123c: e9 2f mov r30, r25 - 123e: 0e 94 a9 0a call 0x1552 ; 0x1552 <__fp_split3> - 1242: 58 f3 brcs .-42 ; 0x121a <__addsf3+0xc> - 1244: ba 17 cp r27, r26 - 1246: 62 07 cpc r22, r18 - 1248: 73 07 cpc r23, r19 - 124a: 84 07 cpc r24, r20 - 124c: 95 07 cpc r25, r21 - 124e: 20 f0 brcs .+8 ; 0x1258 <__addsf3x+0x1c> - 1250: 79 f4 brne .+30 ; 0x1270 <__addsf3x+0x34> - 1252: a6 f5 brtc .+104 ; 0x12bc <__addsf3x+0x80> - 1254: 0c 94 cb 0a jmp 0x1596 ; 0x1596 <__fp_zero> - 1258: 0e f4 brtc .+2 ; 0x125c <__addsf3x+0x20> - 125a: e0 95 com r30 - 125c: 0b 2e mov r0, r27 - 125e: ba 2f mov r27, r26 - 1260: a0 2d mov r26, r0 - 1262: 0b 01 movw r0, r22 - 1264: b9 01 movw r22, r18 - 1266: 90 01 movw r18, r0 - 1268: 0c 01 movw r0, r24 - 126a: ca 01 movw r24, r20 - 126c: a0 01 movw r20, r0 - 126e: 11 24 eor r1, r1 - 1270: ff 27 eor r31, r31 - 1272: 59 1b sub r21, r25 - 1274: 99 f0 breq .+38 ; 0x129c <__addsf3x+0x60> - 1276: 59 3f cpi r21, 0xF9 ; 249 - 1278: 50 f4 brcc .+20 ; 0x128e <__addsf3x+0x52> - 127a: 50 3e cpi r21, 0xE0 ; 224 - 127c: 68 f1 brcs .+90 ; 0x12d8 <__addsf3x+0x9c> - 127e: 1a 16 cp r1, r26 - 1280: f0 40 sbci r31, 0x00 ; 0 - 1282: a2 2f mov r26, r18 - 1284: 23 2f mov r18, r19 - 1286: 34 2f mov r19, r20 - 1288: 44 27 eor r20, r20 - 128a: 58 5f subi r21, 0xF8 ; 248 - 128c: f3 cf rjmp .-26 ; 0x1274 <__addsf3x+0x38> - 128e: 46 95 lsr r20 - 1290: 37 95 ror r19 - 1292: 27 95 ror r18 - 1294: a7 95 ror r26 - 1296: f0 40 sbci r31, 0x00 ; 0 - 1298: 53 95 inc r21 - 129a: c9 f7 brne .-14 ; 0x128e <__addsf3x+0x52> - 129c: 7e f4 brtc .+30 ; 0x12bc <__addsf3x+0x80> - 129e: 1f 16 cp r1, r31 - 12a0: ba 0b sbc r27, r26 - 12a2: 62 0b sbc r22, r18 - 12a4: 73 0b sbc r23, r19 - 12a6: 84 0b sbc r24, r20 - 12a8: ba f0 brmi .+46 ; 0x12d8 <__addsf3x+0x9c> - 12aa: 91 50 subi r25, 0x01 ; 1 - 12ac: a1 f0 breq .+40 ; 0x12d6 <__addsf3x+0x9a> - 12ae: ff 0f add r31, r31 - 12b0: bb 1f adc r27, r27 - 12b2: 66 1f adc r22, r22 - 12b4: 77 1f adc r23, r23 - 12b6: 88 1f adc r24, r24 - 12b8: c2 f7 brpl .-16 ; 0x12aa <__addsf3x+0x6e> - 12ba: 0e c0 rjmp .+28 ; 0x12d8 <__addsf3x+0x9c> - 12bc: ba 0f add r27, r26 - 12be: 62 1f adc r22, r18 - 12c0: 73 1f adc r23, r19 - 12c2: 84 1f adc r24, r20 - 12c4: 48 f4 brcc .+18 ; 0x12d8 <__addsf3x+0x9c> - 12c6: 87 95 ror r24 - 12c8: 77 95 ror r23 - 12ca: 67 95 ror r22 - 12cc: b7 95 ror r27 - 12ce: f7 95 ror r31 - 12d0: 9e 3f cpi r25, 0xFE ; 254 - 12d2: 08 f0 brcs .+2 ; 0x12d6 <__addsf3x+0x9a> - 12d4: b0 cf rjmp .-160 ; 0x1236 <__addsf3+0x28> - 12d6: 93 95 inc r25 - 12d8: 88 0f add r24, r24 - 12da: 08 f0 brcs .+2 ; 0x12de <__addsf3x+0xa2> - 12dc: 99 27 eor r25, r25 - 12de: ee 0f add r30, r30 - 12e0: 97 95 ror r25 - 12e2: 87 95 ror r24 - 12e4: 08 95 ret - -000012e6 <__cmpsf2>: - 12e6: 0e 94 5d 0a call 0x14ba ; 0x14ba <__fp_cmp> - 12ea: 08 f4 brcc .+2 ; 0x12ee <__cmpsf2+0x8> - 12ec: 81 e0 ldi r24, 0x01 ; 1 - 12ee: 08 95 ret - -000012f0 <__divsf3>: - 12f0: 0e 94 8c 09 call 0x1318 ; 0x1318 <__divsf3x> - 12f4: 0c 94 98 0a jmp 0x1530 ; 0x1530 <__fp_round> - 12f8: 0e 94 91 0a call 0x1522 ; 0x1522 <__fp_pscB> - 12fc: 58 f0 brcs .+22 ; 0x1314 <__divsf3+0x24> - 12fe: 0e 94 8a 0a call 0x1514 ; 0x1514 <__fp_pscA> - 1302: 40 f0 brcs .+16 ; 0x1314 <__divsf3+0x24> - 1304: 29 f4 brne .+10 ; 0x1310 <__divsf3+0x20> - 1306: 5f 3f cpi r21, 0xFF ; 255 - 1308: 29 f0 breq .+10 ; 0x1314 <__divsf3+0x24> - 130a: 0c 94 81 0a jmp 0x1502 ; 0x1502 <__fp_inf> - 130e: 51 11 cpse r21, r1 - 1310: 0c 94 cc 0a jmp 0x1598 ; 0x1598 <__fp_szero> - 1314: 0c 94 87 0a jmp 0x150e ; 0x150e <__fp_nan> - -00001318 <__divsf3x>: - 1318: 0e 94 a9 0a call 0x1552 ; 0x1552 <__fp_split3> - 131c: 68 f3 brcs .-38 ; 0x12f8 <__divsf3+0x8> - -0000131e <__divsf3_pse>: - 131e: 99 23 and r25, r25 - 1320: b1 f3 breq .-20 ; 0x130e <__divsf3+0x1e> - 1322: 55 23 and r21, r21 - 1324: 91 f3 breq .-28 ; 0x130a <__divsf3+0x1a> - 1326: 95 1b sub r25, r21 - 1328: 55 0b sbc r21, r21 - 132a: bb 27 eor r27, r27 - 132c: aa 27 eor r26, r26 - 132e: 62 17 cp r22, r18 - 1330: 73 07 cpc r23, r19 - 1332: 84 07 cpc r24, r20 - 1334: 38 f0 brcs .+14 ; 0x1344 <__divsf3_pse+0x26> - 1336: 9f 5f subi r25, 0xFF ; 255 - 1338: 5f 4f sbci r21, 0xFF ; 255 - 133a: 22 0f add r18, r18 - 133c: 33 1f adc r19, r19 - 133e: 44 1f adc r20, r20 - 1340: aa 1f adc r26, r26 - 1342: a9 f3 breq .-22 ; 0x132e <__divsf3_pse+0x10> - 1344: 35 d0 rcall .+106 ; 0x13b0 <__divsf3_pse+0x92> - 1346: 0e 2e mov r0, r30 - 1348: 3a f0 brmi .+14 ; 0x1358 <__divsf3_pse+0x3a> - 134a: e0 e8 ldi r30, 0x80 ; 128 - 134c: 32 d0 rcall .+100 ; 0x13b2 <__divsf3_pse+0x94> - 134e: 91 50 subi r25, 0x01 ; 1 - 1350: 50 40 sbci r21, 0x00 ; 0 - 1352: e6 95 lsr r30 - 1354: 00 1c adc r0, r0 - 1356: ca f7 brpl .-14 ; 0x134a <__divsf3_pse+0x2c> - 1358: 2b d0 rcall .+86 ; 0x13b0 <__divsf3_pse+0x92> - 135a: fe 2f mov r31, r30 - 135c: 29 d0 rcall .+82 ; 0x13b0 <__divsf3_pse+0x92> - 135e: 66 0f add r22, r22 - 1360: 77 1f adc r23, r23 - 1362: 88 1f adc r24, r24 - 1364: bb 1f adc r27, r27 - 1366: 26 17 cp r18, r22 - 1368: 37 07 cpc r19, r23 - 136a: 48 07 cpc r20, r24 - 136c: ab 07 cpc r26, r27 - 136e: b0 e8 ldi r27, 0x80 ; 128 - 1370: 09 f0 breq .+2 ; 0x1374 <__divsf3_pse+0x56> - 1372: bb 0b sbc r27, r27 - 1374: 80 2d mov r24, r0 - 1376: bf 01 movw r22, r30 - 1378: ff 27 eor r31, r31 - 137a: 93 58 subi r25, 0x83 ; 131 - 137c: 5f 4f sbci r21, 0xFF ; 255 - 137e: 3a f0 brmi .+14 ; 0x138e <__divsf3_pse+0x70> - 1380: 9e 3f cpi r25, 0xFE ; 254 - 1382: 51 05 cpc r21, r1 - 1384: 78 f0 brcs .+30 ; 0x13a4 <__divsf3_pse+0x86> - 1386: 0c 94 81 0a jmp 0x1502 ; 0x1502 <__fp_inf> - 138a: 0c 94 cc 0a jmp 0x1598 ; 0x1598 <__fp_szero> - 138e: 5f 3f cpi r21, 0xFF ; 255 - 1390: e4 f3 brlt .-8 ; 0x138a <__divsf3_pse+0x6c> - 1392: 98 3e cpi r25, 0xE8 ; 232 - 1394: d4 f3 brlt .-12 ; 0x138a <__divsf3_pse+0x6c> - 1396: 86 95 lsr r24 - 1398: 77 95 ror r23 - 139a: 67 95 ror r22 - 139c: b7 95 ror r27 - 139e: f7 95 ror r31 - 13a0: 9f 5f subi r25, 0xFF ; 255 - 13a2: c9 f7 brne .-14 ; 0x1396 <__divsf3_pse+0x78> - 13a4: 88 0f add r24, r24 - 13a6: 91 1d adc r25, r1 - 13a8: 96 95 lsr r25 - 13aa: 87 95 ror r24 - 13ac: 97 f9 bld r25, 7 - 13ae: 08 95 ret - 13b0: e1 e0 ldi r30, 0x01 ; 1 - 13b2: 66 0f add r22, r22 - 13b4: 77 1f adc r23, r23 - 13b6: 88 1f adc r24, r24 - 13b8: bb 1f adc r27, r27 - 13ba: 62 17 cp r22, r18 - 13bc: 73 07 cpc r23, r19 - 13be: 84 07 cpc r24, r20 - 13c0: ba 07 cpc r27, r26 - 13c2: 20 f0 brcs .+8 ; 0x13cc <__divsf3_pse+0xae> - 13c4: 62 1b sub r22, r18 - 13c6: 73 0b sbc r23, r19 - 13c8: 84 0b sbc r24, r20 - 13ca: ba 0b sbc r27, r26 - 13cc: ee 1f adc r30, r30 - 13ce: 88 f7 brcc .-30 ; 0x13b2 <__divsf3_pse+0x94> - 13d0: e0 95 com r30 - 13d2: 08 95 ret - -000013d4 <__fixsfsi>: - 13d4: 0e 94 f1 09 call 0x13e2 ; 0x13e2 <__fixunssfsi> - 13d8: 68 94 set - 13da: b1 11 cpse r27, r1 - 13dc: 0c 94 cc 0a jmp 0x1598 ; 0x1598 <__fp_szero> - 13e0: 08 95 ret - -000013e2 <__fixunssfsi>: - 13e2: 0e 94 b1 0a call 0x1562 ; 0x1562 <__fp_splitA> - 13e6: 88 f0 brcs .+34 ; 0x140a <__fixunssfsi+0x28> - 13e8: 9f 57 subi r25, 0x7F ; 127 - 13ea: 98 f0 brcs .+38 ; 0x1412 <__fixunssfsi+0x30> - 13ec: b9 2f mov r27, r25 - 13ee: 99 27 eor r25, r25 - 13f0: b7 51 subi r27, 0x17 ; 23 - 13f2: b0 f0 brcs .+44 ; 0x1420 <__fixunssfsi+0x3e> - 13f4: e1 f0 breq .+56 ; 0x142e <__fixunssfsi+0x4c> - 13f6: 66 0f add r22, r22 - 13f8: 77 1f adc r23, r23 - 13fa: 88 1f adc r24, r24 - 13fc: 99 1f adc r25, r25 - 13fe: 1a f0 brmi .+6 ; 0x1406 <__fixunssfsi+0x24> - 1400: ba 95 dec r27 - 1402: c9 f7 brne .-14 ; 0x13f6 <__fixunssfsi+0x14> - 1404: 14 c0 rjmp .+40 ; 0x142e <__fixunssfsi+0x4c> - 1406: b1 30 cpi r27, 0x01 ; 1 - 1408: 91 f0 breq .+36 ; 0x142e <__fixunssfsi+0x4c> - 140a: 0e 94 cb 0a call 0x1596 ; 0x1596 <__fp_zero> - 140e: b1 e0 ldi r27, 0x01 ; 1 + 1218: 69 8d ldd r22, Y+25 ; 0x19 + 121a: cf 01 movw r24, r30 + 121c: 8f 96 adiw r24, 0x2f ; 47 + 121e: 0e 94 37 04 call 0x86e ; 0x86e <l_filter_init> + 1222: df 91 pop r29 + 1224: cf 91 pop r28 + 1226: 1f 91 pop r17 + 1228: 0f 91 pop r16 + 122a: ff 90 pop r15 + 122c: ef 90 pop r14 + 122e: df 90 pop r13 + 1230: cf 90 pop r12 + 1232: bf 90 pop r11 + 1234: af 90 pop r10 + 1236: 9f 90 pop r9 + 1238: 8f 90 pop r8 + 123a: 08 95 ret + +0000123c <__subsf3>: + 123c: 50 58 subi r21, 0x80 ; 128 + +0000123e <__addsf3>: + 123e: bb 27 eor r27, r27 + 1240: aa 27 eor r26, r26 + 1242: 0e 94 36 09 call 0x126c ; 0x126c <__addsf3x> + 1246: 0c 94 b0 0a jmp 0x1560 ; 0x1560 <__fp_round> + 124a: 0e 94 a2 0a call 0x1544 ; 0x1544 <__fp_pscA> + 124e: 38 f0 brcs .+14 ; 0x125e <__addsf3+0x20> + 1250: 0e 94 a9 0a call 0x1552 ; 0x1552 <__fp_pscB> + 1254: 20 f0 brcs .+8 ; 0x125e <__addsf3+0x20> + 1256: 39 f4 brne .+14 ; 0x1266 <__addsf3+0x28> + 1258: 9f 3f cpi r25, 0xFF ; 255 + 125a: 19 f4 brne .+6 ; 0x1262 <__addsf3+0x24> + 125c: 26 f4 brtc .+8 ; 0x1266 <__addsf3+0x28> + 125e: 0c 94 9f 0a jmp 0x153e ; 0x153e <__fp_nan> + 1262: 0e f4 brtc .+2 ; 0x1266 <__addsf3+0x28> + 1264: e0 95 com r30 + 1266: e7 fb bst r30, 7 + 1268: 0c 94 99 0a jmp 0x1532 ; 0x1532 <__fp_inf> + +0000126c <__addsf3x>: + 126c: e9 2f mov r30, r25 + 126e: 0e 94 c1 0a call 0x1582 ; 0x1582 <__fp_split3> + 1272: 58 f3 brcs .-42 ; 0x124a <__addsf3+0xc> + 1274: ba 17 cp r27, r26 + 1276: 62 07 cpc r22, r18 + 1278: 73 07 cpc r23, r19 + 127a: 84 07 cpc r24, r20 + 127c: 95 07 cpc r25, r21 + 127e: 20 f0 brcs .+8 ; 0x1288 <__addsf3x+0x1c> + 1280: 79 f4 brne .+30 ; 0x12a0 <__addsf3x+0x34> + 1282: a6 f5 brtc .+104 ; 0x12ec <__addsf3x+0x80> + 1284: 0c 94 e3 0a jmp 0x15c6 ; 0x15c6 <__fp_zero> + 1288: 0e f4 brtc .+2 ; 0x128c <__addsf3x+0x20> + 128a: e0 95 com r30 + 128c: 0b 2e mov r0, r27 + 128e: ba 2f mov r27, r26 + 1290: a0 2d mov r26, r0 + 1292: 0b 01 movw r0, r22 + 1294: b9 01 movw r22, r18 + 1296: 90 01 movw r18, r0 + 1298: 0c 01 movw r0, r24 + 129a: ca 01 movw r24, r20 + 129c: a0 01 movw r20, r0 + 129e: 11 24 eor r1, r1 + 12a0: ff 27 eor r31, r31 + 12a2: 59 1b sub r21, r25 + 12a4: 99 f0 breq .+38 ; 0x12cc <__addsf3x+0x60> + 12a6: 59 3f cpi r21, 0xF9 ; 249 + 12a8: 50 f4 brcc .+20 ; 0x12be <__addsf3x+0x52> + 12aa: 50 3e cpi r21, 0xE0 ; 224 + 12ac: 68 f1 brcs .+90 ; 0x1308 <__addsf3x+0x9c> + 12ae: 1a 16 cp r1, r26 + 12b0: f0 40 sbci r31, 0x00 ; 0 + 12b2: a2 2f mov r26, r18 + 12b4: 23 2f mov r18, r19 + 12b6: 34 2f mov r19, r20 + 12b8: 44 27 eor r20, r20 + 12ba: 58 5f subi r21, 0xF8 ; 248 + 12bc: f3 cf rjmp .-26 ; 0x12a4 <__addsf3x+0x38> + 12be: 46 95 lsr r20 + 12c0: 37 95 ror r19 + 12c2: 27 95 ror r18 + 12c4: a7 95 ror r26 + 12c6: f0 40 sbci r31, 0x00 ; 0 + 12c8: 53 95 inc r21 + 12ca: c9 f7 brne .-14 ; 0x12be <__addsf3x+0x52> + 12cc: 7e f4 brtc .+30 ; 0x12ec <__addsf3x+0x80> + 12ce: 1f 16 cp r1, r31 + 12d0: ba 0b sbc r27, r26 + 12d2: 62 0b sbc r22, r18 + 12d4: 73 0b sbc r23, r19 + 12d6: 84 0b sbc r24, r20 + 12d8: ba f0 brmi .+46 ; 0x1308 <__addsf3x+0x9c> + 12da: 91 50 subi r25, 0x01 ; 1 + 12dc: a1 f0 breq .+40 ; 0x1306 <__addsf3x+0x9a> + 12de: ff 0f add r31, r31 + 12e0: bb 1f adc r27, r27 + 12e2: 66 1f adc r22, r22 + 12e4: 77 1f adc r23, r23 + 12e6: 88 1f adc r24, r24 + 12e8: c2 f7 brpl .-16 ; 0x12da <__addsf3x+0x6e> + 12ea: 0e c0 rjmp .+28 ; 0x1308 <__addsf3x+0x9c> + 12ec: ba 0f add r27, r26 + 12ee: 62 1f adc r22, r18 + 12f0: 73 1f adc r23, r19 + 12f2: 84 1f adc r24, r20 + 12f4: 48 f4 brcc .+18 ; 0x1308 <__addsf3x+0x9c> + 12f6: 87 95 ror r24 + 12f8: 77 95 ror r23 + 12fa: 67 95 ror r22 + 12fc: b7 95 ror r27 + 12fe: f7 95 ror r31 + 1300: 9e 3f cpi r25, 0xFE ; 254 + 1302: 08 f0 brcs .+2 ; 0x1306 <__addsf3x+0x9a> + 1304: b0 cf rjmp .-160 ; 0x1266 <__addsf3+0x28> + 1306: 93 95 inc r25 + 1308: 88 0f add r24, r24 + 130a: 08 f0 brcs .+2 ; 0x130e <__addsf3x+0xa2> + 130c: 99 27 eor r25, r25 + 130e: ee 0f add r30, r30 + 1310: 97 95 ror r25 + 1312: 87 95 ror r24 + 1314: 08 95 ret + +00001316 <__cmpsf2>: + 1316: 0e 94 75 0a call 0x14ea ; 0x14ea <__fp_cmp> + 131a: 08 f4 brcc .+2 ; 0x131e <__cmpsf2+0x8> + 131c: 81 e0 ldi r24, 0x01 ; 1 + 131e: 08 95 ret + +00001320 <__divsf3>: + 1320: 0e 94 a4 09 call 0x1348 ; 0x1348 <__divsf3x> + 1324: 0c 94 b0 0a jmp 0x1560 ; 0x1560 <__fp_round> + 1328: 0e 94 a9 0a call 0x1552 ; 0x1552 <__fp_pscB> + 132c: 58 f0 brcs .+22 ; 0x1344 <__divsf3+0x24> + 132e: 0e 94 a2 0a call 0x1544 ; 0x1544 <__fp_pscA> + 1332: 40 f0 brcs .+16 ; 0x1344 <__divsf3+0x24> + 1334: 29 f4 brne .+10 ; 0x1340 <__divsf3+0x20> + 1336: 5f 3f cpi r21, 0xFF ; 255 + 1338: 29 f0 breq .+10 ; 0x1344 <__divsf3+0x24> + 133a: 0c 94 99 0a jmp 0x1532 ; 0x1532 <__fp_inf> + 133e: 51 11 cpse r21, r1 + 1340: 0c 94 e4 0a jmp 0x15c8 ; 0x15c8 <__fp_szero> + 1344: 0c 94 9f 0a jmp 0x153e ; 0x153e <__fp_nan> + +00001348 <__divsf3x>: + 1348: 0e 94 c1 0a call 0x1582 ; 0x1582 <__fp_split3> + 134c: 68 f3 brcs .-38 ; 0x1328 <__divsf3+0x8> + +0000134e <__divsf3_pse>: + 134e: 99 23 and r25, r25 + 1350: b1 f3 breq .-20 ; 0x133e <__divsf3+0x1e> + 1352: 55 23 and r21, r21 + 1354: 91 f3 breq .-28 ; 0x133a <__divsf3+0x1a> + 1356: 95 1b sub r25, r21 + 1358: 55 0b sbc r21, r21 + 135a: bb 27 eor r27, r27 + 135c: aa 27 eor r26, r26 + 135e: 62 17 cp r22, r18 + 1360: 73 07 cpc r23, r19 + 1362: 84 07 cpc r24, r20 + 1364: 38 f0 brcs .+14 ; 0x1374 <__divsf3_pse+0x26> + 1366: 9f 5f subi r25, 0xFF ; 255 + 1368: 5f 4f sbci r21, 0xFF ; 255 + 136a: 22 0f add r18, r18 + 136c: 33 1f adc r19, r19 + 136e: 44 1f adc r20, r20 + 1370: aa 1f adc r26, r26 + 1372: a9 f3 breq .-22 ; 0x135e <__divsf3_pse+0x10> + 1374: 35 d0 rcall .+106 ; 0x13e0 <__divsf3_pse+0x92> + 1376: 0e 2e mov r0, r30 + 1378: 3a f0 brmi .+14 ; 0x1388 <__divsf3_pse+0x3a> + 137a: e0 e8 ldi r30, 0x80 ; 128 + 137c: 32 d0 rcall .+100 ; 0x13e2 <__divsf3_pse+0x94> + 137e: 91 50 subi r25, 0x01 ; 1 + 1380: 50 40 sbci r21, 0x00 ; 0 + 1382: e6 95 lsr r30 + 1384: 00 1c adc r0, r0 + 1386: ca f7 brpl .-14 ; 0x137a <__divsf3_pse+0x2c> + 1388: 2b d0 rcall .+86 ; 0x13e0 <__divsf3_pse+0x92> + 138a: fe 2f mov r31, r30 + 138c: 29 d0 rcall .+82 ; 0x13e0 <__divsf3_pse+0x92> + 138e: 66 0f add r22, r22 + 1390: 77 1f adc r23, r23 + 1392: 88 1f adc r24, r24 + 1394: bb 1f adc r27, r27 + 1396: 26 17 cp r18, r22 + 1398: 37 07 cpc r19, r23 + 139a: 48 07 cpc r20, r24 + 139c: ab 07 cpc r26, r27 + 139e: b0 e8 ldi r27, 0x80 ; 128 + 13a0: 09 f0 breq .+2 ; 0x13a4 <__divsf3_pse+0x56> + 13a2: bb 0b sbc r27, r27 + 13a4: 80 2d mov r24, r0 + 13a6: bf 01 movw r22, r30 + 13a8: ff 27 eor r31, r31 + 13aa: 93 58 subi r25, 0x83 ; 131 + 13ac: 5f 4f sbci r21, 0xFF ; 255 + 13ae: 3a f0 brmi .+14 ; 0x13be <__divsf3_pse+0x70> + 13b0: 9e 3f cpi r25, 0xFE ; 254 + 13b2: 51 05 cpc r21, r1 + 13b4: 78 f0 brcs .+30 ; 0x13d4 <__divsf3_pse+0x86> + 13b6: 0c 94 99 0a jmp 0x1532 ; 0x1532 <__fp_inf> + 13ba: 0c 94 e4 0a jmp 0x15c8 ; 0x15c8 <__fp_szero> + 13be: 5f 3f cpi r21, 0xFF ; 255 + 13c0: e4 f3 brlt .-8 ; 0x13ba <__divsf3_pse+0x6c> + 13c2: 98 3e cpi r25, 0xE8 ; 232 + 13c4: d4 f3 brlt .-12 ; 0x13ba <__divsf3_pse+0x6c> + 13c6: 86 95 lsr r24 + 13c8: 77 95 ror r23 + 13ca: 67 95 ror r22 + 13cc: b7 95 ror r27 + 13ce: f7 95 ror r31 + 13d0: 9f 5f subi r25, 0xFF ; 255 + 13d2: c9 f7 brne .-14 ; 0x13c6 <__divsf3_pse+0x78> + 13d4: 88 0f add r24, r24 + 13d6: 91 1d adc r25, r1 + 13d8: 96 95 lsr r25 + 13da: 87 95 ror r24 + 13dc: 97 f9 bld r25, 7 + 13de: 08 95 ret + 13e0: e1 e0 ldi r30, 0x01 ; 1 + 13e2: 66 0f add r22, r22 + 13e4: 77 1f adc r23, r23 + 13e6: 88 1f adc r24, r24 + 13e8: bb 1f adc r27, r27 + 13ea: 62 17 cp r22, r18 + 13ec: 73 07 cpc r23, r19 + 13ee: 84 07 cpc r24, r20 + 13f0: ba 07 cpc r27, r26 + 13f2: 20 f0 brcs .+8 ; 0x13fc <__divsf3_pse+0xae> + 13f4: 62 1b sub r22, r18 + 13f6: 73 0b sbc r23, r19 + 13f8: 84 0b sbc r24, r20 + 13fa: ba 0b sbc r27, r26 + 13fc: ee 1f adc r30, r30 + 13fe: 88 f7 brcc .-30 ; 0x13e2 <__divsf3_pse+0x94> + 1400: e0 95 com r30 + 1402: 08 95 ret + +00001404 <__fixsfsi>: + 1404: 0e 94 09 0a call 0x1412 ; 0x1412 <__fixunssfsi> + 1408: 68 94 set + 140a: b1 11 cpse r27, r1 + 140c: 0c 94 e4 0a jmp 0x15c8 ; 0x15c8 <__fp_szero> 1410: 08 95 ret - 1412: 0c 94 cb 0a jmp 0x1596 ; 0x1596 <__fp_zero> - 1416: 67 2f mov r22, r23 - 1418: 78 2f mov r23, r24 - 141a: 88 27 eor r24, r24 - 141c: b8 5f subi r27, 0xF8 ; 248 - 141e: 39 f0 breq .+14 ; 0x142e <__fixunssfsi+0x4c> - 1420: b9 3f cpi r27, 0xF9 ; 249 - 1422: cc f3 brlt .-14 ; 0x1416 <__fixunssfsi+0x34> - 1424: 86 95 lsr r24 - 1426: 77 95 ror r23 - 1428: 67 95 ror r22 - 142a: b3 95 inc r27 - 142c: d9 f7 brne .-10 ; 0x1424 <__fixunssfsi+0x42> - 142e: 3e f4 brtc .+14 ; 0x143e <__fixunssfsi+0x5c> - 1430: 90 95 com r25 - 1432: 80 95 com r24 - 1434: 70 95 com r23 - 1436: 61 95 neg r22 - 1438: 7f 4f sbci r23, 0xFF ; 255 - 143a: 8f 4f sbci r24, 0xFF ; 255 - 143c: 9f 4f sbci r25, 0xFF ; 255 - 143e: 08 95 ret - -00001440 <__floatunsisf>: - 1440: e8 94 clt - 1442: 09 c0 rjmp .+18 ; 0x1456 <__floatsisf+0x12> - -00001444 <__floatsisf>: - 1444: 97 fb bst r25, 7 - 1446: 3e f4 brtc .+14 ; 0x1456 <__floatsisf+0x12> - 1448: 90 95 com r25 - 144a: 80 95 com r24 - 144c: 70 95 com r23 - 144e: 61 95 neg r22 - 1450: 7f 4f sbci r23, 0xFF ; 255 - 1452: 8f 4f sbci r24, 0xFF ; 255 - 1454: 9f 4f sbci r25, 0xFF ; 255 - 1456: 99 23 and r25, r25 - 1458: a9 f0 breq .+42 ; 0x1484 <__floatsisf+0x40> - 145a: f9 2f mov r31, r25 - 145c: 96 e9 ldi r25, 0x96 ; 150 - 145e: bb 27 eor r27, r27 - 1460: 93 95 inc r25 - 1462: f6 95 lsr r31 - 1464: 87 95 ror r24 - 1466: 77 95 ror r23 - 1468: 67 95 ror r22 - 146a: b7 95 ror r27 - 146c: f1 11 cpse r31, r1 - 146e: f8 cf rjmp .-16 ; 0x1460 <__floatsisf+0x1c> - 1470: fa f4 brpl .+62 ; 0x14b0 <__floatsisf+0x6c> - 1472: bb 0f add r27, r27 - 1474: 11 f4 brne .+4 ; 0x147a <__floatsisf+0x36> - 1476: 60 ff sbrs r22, 0 - 1478: 1b c0 rjmp .+54 ; 0x14b0 <__floatsisf+0x6c> - 147a: 6f 5f subi r22, 0xFF ; 255 - 147c: 7f 4f sbci r23, 0xFF ; 255 - 147e: 8f 4f sbci r24, 0xFF ; 255 - 1480: 9f 4f sbci r25, 0xFF ; 255 - 1482: 16 c0 rjmp .+44 ; 0x14b0 <__floatsisf+0x6c> - 1484: 88 23 and r24, r24 - 1486: 11 f0 breq .+4 ; 0x148c <__floatsisf+0x48> - 1488: 96 e9 ldi r25, 0x96 ; 150 - 148a: 11 c0 rjmp .+34 ; 0x14ae <__floatsisf+0x6a> - 148c: 77 23 and r23, r23 - 148e: 21 f0 breq .+8 ; 0x1498 <__floatsisf+0x54> - 1490: 9e e8 ldi r25, 0x8E ; 142 - 1492: 87 2f mov r24, r23 - 1494: 76 2f mov r23, r22 - 1496: 05 c0 rjmp .+10 ; 0x14a2 <__floatsisf+0x5e> - 1498: 66 23 and r22, r22 - 149a: 71 f0 breq .+28 ; 0x14b8 <__floatsisf+0x74> - 149c: 96 e8 ldi r25, 0x86 ; 134 - 149e: 86 2f mov r24, r22 - 14a0: 70 e0 ldi r23, 0x00 ; 0 - 14a2: 60 e0 ldi r22, 0x00 ; 0 - 14a4: 2a f0 brmi .+10 ; 0x14b0 <__floatsisf+0x6c> - 14a6: 9a 95 dec r25 - 14a8: 66 0f add r22, r22 - 14aa: 77 1f adc r23, r23 - 14ac: 88 1f adc r24, r24 - 14ae: da f7 brpl .-10 ; 0x14a6 <__floatsisf+0x62> - 14b0: 88 0f add r24, r24 - 14b2: 96 95 lsr r25 - 14b4: 87 95 ror r24 - 14b6: 97 f9 bld r25, 7 - 14b8: 08 95 ret - -000014ba <__fp_cmp>: - 14ba: 99 0f add r25, r25 - 14bc: 00 08 sbc r0, r0 - 14be: 55 0f add r21, r21 - 14c0: aa 0b sbc r26, r26 - 14c2: e0 e8 ldi r30, 0x80 ; 128 - 14c4: fe ef ldi r31, 0xFE ; 254 - 14c6: 16 16 cp r1, r22 - 14c8: 17 06 cpc r1, r23 - 14ca: e8 07 cpc r30, r24 - 14cc: f9 07 cpc r31, r25 - 14ce: c0 f0 brcs .+48 ; 0x1500 <__fp_cmp+0x46> - 14d0: 12 16 cp r1, r18 - 14d2: 13 06 cpc r1, r19 - 14d4: e4 07 cpc r30, r20 - 14d6: f5 07 cpc r31, r21 - 14d8: 98 f0 brcs .+38 ; 0x1500 <__fp_cmp+0x46> - 14da: 62 1b sub r22, r18 - 14dc: 73 0b sbc r23, r19 - 14de: 84 0b sbc r24, r20 - 14e0: 95 0b sbc r25, r21 - 14e2: 39 f4 brne .+14 ; 0x14f2 <__fp_cmp+0x38> - 14e4: 0a 26 eor r0, r26 - 14e6: 61 f0 breq .+24 ; 0x1500 <__fp_cmp+0x46> - 14e8: 23 2b or r18, r19 - 14ea: 24 2b or r18, r20 - 14ec: 25 2b or r18, r21 - 14ee: 21 f4 brne .+8 ; 0x14f8 <__fp_cmp+0x3e> - 14f0: 08 95 ret - 14f2: 0a 26 eor r0, r26 - 14f4: 09 f4 brne .+2 ; 0x14f8 <__fp_cmp+0x3e> - 14f6: a1 40 sbci r26, 0x01 ; 1 - 14f8: a6 95 lsr r26 - 14fa: 8f ef ldi r24, 0xFF ; 255 - 14fc: 81 1d adc r24, r1 - 14fe: 81 1d adc r24, r1 - 1500: 08 95 ret - -00001502 <__fp_inf>: - 1502: 97 f9 bld r25, 7 - 1504: 9f 67 ori r25, 0x7F ; 127 - 1506: 80 e8 ldi r24, 0x80 ; 128 - 1508: 70 e0 ldi r23, 0x00 ; 0 - 150a: 60 e0 ldi r22, 0x00 ; 0 - 150c: 08 95 ret - -0000150e <__fp_nan>: - 150e: 9f ef ldi r25, 0xFF ; 255 - 1510: 80 ec ldi r24, 0xC0 ; 192 - 1512: 08 95 ret - -00001514 <__fp_pscA>: - 1514: 00 24 eor r0, r0 - 1516: 0a 94 dec r0 - 1518: 16 16 cp r1, r22 - 151a: 17 06 cpc r1, r23 - 151c: 18 06 cpc r1, r24 - 151e: 09 06 cpc r0, r25 - 1520: 08 95 ret -00001522 <__fp_pscB>: - 1522: 00 24 eor r0, r0 - 1524: 0a 94 dec r0 - 1526: 12 16 cp r1, r18 - 1528: 13 06 cpc r1, r19 - 152a: 14 06 cpc r1, r20 - 152c: 05 06 cpc r0, r21 - 152e: 08 95 ret - -00001530 <__fp_round>: - 1530: 09 2e mov r0, r25 - 1532: 03 94 inc r0 - 1534: 00 0c add r0, r0 - 1536: 11 f4 brne .+4 ; 0x153c <__fp_round+0xc> - 1538: 88 23 and r24, r24 - 153a: 52 f0 brmi .+20 ; 0x1550 <__fp_round+0x20> - 153c: bb 0f add r27, r27 - 153e: 40 f4 brcc .+16 ; 0x1550 <__fp_round+0x20> - 1540: bf 2b or r27, r31 - 1542: 11 f4 brne .+4 ; 0x1548 <__fp_round+0x18> - 1544: 60 ff sbrs r22, 0 - 1546: 04 c0 rjmp .+8 ; 0x1550 <__fp_round+0x20> - 1548: 6f 5f subi r22, 0xFF ; 255 - 154a: 7f 4f sbci r23, 0xFF ; 255 - 154c: 8f 4f sbci r24, 0xFF ; 255 - 154e: 9f 4f sbci r25, 0xFF ; 255 +00001412 <__fixunssfsi>: + 1412: 0e 94 c9 0a call 0x1592 ; 0x1592 <__fp_splitA> + 1416: 88 f0 brcs .+34 ; 0x143a <__fixunssfsi+0x28> + 1418: 9f 57 subi r25, 0x7F ; 127 + 141a: 98 f0 brcs .+38 ; 0x1442 <__fixunssfsi+0x30> + 141c: b9 2f mov r27, r25 + 141e: 99 27 eor r25, r25 + 1420: b7 51 subi r27, 0x17 ; 23 + 1422: b0 f0 brcs .+44 ; 0x1450 <__fixunssfsi+0x3e> + 1424: e1 f0 breq .+56 ; 0x145e <__fixunssfsi+0x4c> + 1426: 66 0f add r22, r22 + 1428: 77 1f adc r23, r23 + 142a: 88 1f adc r24, r24 + 142c: 99 1f adc r25, r25 + 142e: 1a f0 brmi .+6 ; 0x1436 <__fixunssfsi+0x24> + 1430: ba 95 dec r27 + 1432: c9 f7 brne .-14 ; 0x1426 <__fixunssfsi+0x14> + 1434: 14 c0 rjmp .+40 ; 0x145e <__fixunssfsi+0x4c> + 1436: b1 30 cpi r27, 0x01 ; 1 + 1438: 91 f0 breq .+36 ; 0x145e <__fixunssfsi+0x4c> + 143a: 0e 94 e3 0a call 0x15c6 ; 0x15c6 <__fp_zero> + 143e: b1 e0 ldi r27, 0x01 ; 1 + 1440: 08 95 ret + 1442: 0c 94 e3 0a jmp 0x15c6 ; 0x15c6 <__fp_zero> + 1446: 67 2f mov r22, r23 + 1448: 78 2f mov r23, r24 + 144a: 88 27 eor r24, r24 + 144c: b8 5f subi r27, 0xF8 ; 248 + 144e: 39 f0 breq .+14 ; 0x145e <__fixunssfsi+0x4c> + 1450: b9 3f cpi r27, 0xF9 ; 249 + 1452: cc f3 brlt .-14 ; 0x1446 <__fixunssfsi+0x34> + 1454: 86 95 lsr r24 + 1456: 77 95 ror r23 + 1458: 67 95 ror r22 + 145a: b3 95 inc r27 + 145c: d9 f7 brne .-10 ; 0x1454 <__fixunssfsi+0x42> + 145e: 3e f4 brtc .+14 ; 0x146e <__fixunssfsi+0x5c> + 1460: 90 95 com r25 + 1462: 80 95 com r24 + 1464: 70 95 com r23 + 1466: 61 95 neg r22 + 1468: 7f 4f sbci r23, 0xFF ; 255 + 146a: 8f 4f sbci r24, 0xFF ; 255 + 146c: 9f 4f sbci r25, 0xFF ; 255 + 146e: 08 95 ret + +00001470 <__floatunsisf>: + 1470: e8 94 clt + 1472: 09 c0 rjmp .+18 ; 0x1486 <__floatsisf+0x12> + +00001474 <__floatsisf>: + 1474: 97 fb bst r25, 7 + 1476: 3e f4 brtc .+14 ; 0x1486 <__floatsisf+0x12> + 1478: 90 95 com r25 + 147a: 80 95 com r24 + 147c: 70 95 com r23 + 147e: 61 95 neg r22 + 1480: 7f 4f sbci r23, 0xFF ; 255 + 1482: 8f 4f sbci r24, 0xFF ; 255 + 1484: 9f 4f sbci r25, 0xFF ; 255 + 1486: 99 23 and r25, r25 + 1488: a9 f0 breq .+42 ; 0x14b4 <__floatsisf+0x40> + 148a: f9 2f mov r31, r25 + 148c: 96 e9 ldi r25, 0x96 ; 150 + 148e: bb 27 eor r27, r27 + 1490: 93 95 inc r25 + 1492: f6 95 lsr r31 + 1494: 87 95 ror r24 + 1496: 77 95 ror r23 + 1498: 67 95 ror r22 + 149a: b7 95 ror r27 + 149c: f1 11 cpse r31, r1 + 149e: f8 cf rjmp .-16 ; 0x1490 <__floatsisf+0x1c> + 14a0: fa f4 brpl .+62 ; 0x14e0 <__floatsisf+0x6c> + 14a2: bb 0f add r27, r27 + 14a4: 11 f4 brne .+4 ; 0x14aa <__floatsisf+0x36> + 14a6: 60 ff sbrs r22, 0 + 14a8: 1b c0 rjmp .+54 ; 0x14e0 <__floatsisf+0x6c> + 14aa: 6f 5f subi r22, 0xFF ; 255 + 14ac: 7f 4f sbci r23, 0xFF ; 255 + 14ae: 8f 4f sbci r24, 0xFF ; 255 + 14b0: 9f 4f sbci r25, 0xFF ; 255 + 14b2: 16 c0 rjmp .+44 ; 0x14e0 <__floatsisf+0x6c> + 14b4: 88 23 and r24, r24 + 14b6: 11 f0 breq .+4 ; 0x14bc <__floatsisf+0x48> + 14b8: 96 e9 ldi r25, 0x96 ; 150 + 14ba: 11 c0 rjmp .+34 ; 0x14de <__floatsisf+0x6a> + 14bc: 77 23 and r23, r23 + 14be: 21 f0 breq .+8 ; 0x14c8 <__floatsisf+0x54> + 14c0: 9e e8 ldi r25, 0x8E ; 142 + 14c2: 87 2f mov r24, r23 + 14c4: 76 2f mov r23, r22 + 14c6: 05 c0 rjmp .+10 ; 0x14d2 <__floatsisf+0x5e> + 14c8: 66 23 and r22, r22 + 14ca: 71 f0 breq .+28 ; 0x14e8 <__floatsisf+0x74> + 14cc: 96 e8 ldi r25, 0x86 ; 134 + 14ce: 86 2f mov r24, r22 + 14d0: 70 e0 ldi r23, 0x00 ; 0 + 14d2: 60 e0 ldi r22, 0x00 ; 0 + 14d4: 2a f0 brmi .+10 ; 0x14e0 <__floatsisf+0x6c> + 14d6: 9a 95 dec r25 + 14d8: 66 0f add r22, r22 + 14da: 77 1f adc r23, r23 + 14dc: 88 1f adc r24, r24 + 14de: da f7 brpl .-10 ; 0x14d6 <__floatsisf+0x62> + 14e0: 88 0f add r24, r24 + 14e2: 96 95 lsr r25 + 14e4: 87 95 ror r24 + 14e6: 97 f9 bld r25, 7 + 14e8: 08 95 ret + +000014ea <__fp_cmp>: + 14ea: 99 0f add r25, r25 + 14ec: 00 08 sbc r0, r0 + 14ee: 55 0f add r21, r21 + 14f0: aa 0b sbc r26, r26 + 14f2: e0 e8 ldi r30, 0x80 ; 128 + 14f4: fe ef ldi r31, 0xFE ; 254 + 14f6: 16 16 cp r1, r22 + 14f8: 17 06 cpc r1, r23 + 14fa: e8 07 cpc r30, r24 + 14fc: f9 07 cpc r31, r25 + 14fe: c0 f0 brcs .+48 ; 0x1530 <__fp_cmp+0x46> + 1500: 12 16 cp r1, r18 + 1502: 13 06 cpc r1, r19 + 1504: e4 07 cpc r30, r20 + 1506: f5 07 cpc r31, r21 + 1508: 98 f0 brcs .+38 ; 0x1530 <__fp_cmp+0x46> + 150a: 62 1b sub r22, r18 + 150c: 73 0b sbc r23, r19 + 150e: 84 0b sbc r24, r20 + 1510: 95 0b sbc r25, r21 + 1512: 39 f4 brne .+14 ; 0x1522 <__fp_cmp+0x38> + 1514: 0a 26 eor r0, r26 + 1516: 61 f0 breq .+24 ; 0x1530 <__fp_cmp+0x46> + 1518: 23 2b or r18, r19 + 151a: 24 2b or r18, r20 + 151c: 25 2b or r18, r21 + 151e: 21 f4 brne .+8 ; 0x1528 <__fp_cmp+0x3e> + 1520: 08 95 ret + 1522: 0a 26 eor r0, r26 + 1524: 09 f4 brne .+2 ; 0x1528 <__fp_cmp+0x3e> + 1526: a1 40 sbci r26, 0x01 ; 1 + 1528: a6 95 lsr r26 + 152a: 8f ef ldi r24, 0xFF ; 255 + 152c: 81 1d adc r24, r1 + 152e: 81 1d adc r24, r1 + 1530: 08 95 ret + +00001532 <__fp_inf>: + 1532: 97 f9 bld r25, 7 + 1534: 9f 67 ori r25, 0x7F ; 127 + 1536: 80 e8 ldi r24, 0x80 ; 128 + 1538: 70 e0 ldi r23, 0x00 ; 0 + 153a: 60 e0 ldi r22, 0x00 ; 0 + 153c: 08 95 ret + +0000153e <__fp_nan>: + 153e: 9f ef ldi r25, 0xFF ; 255 + 1540: 80 ec ldi r24, 0xC0 ; 192 + 1542: 08 95 ret + +00001544 <__fp_pscA>: + 1544: 00 24 eor r0, r0 + 1546: 0a 94 dec r0 + 1548: 16 16 cp r1, r22 + 154a: 17 06 cpc r1, r23 + 154c: 18 06 cpc r1, r24 + 154e: 09 06 cpc r0, r25 1550: 08 95 ret -00001552 <__fp_split3>: - 1552: 57 fd sbrc r21, 7 - 1554: 90 58 subi r25, 0x80 ; 128 - 1556: 44 0f add r20, r20 - 1558: 55 1f adc r21, r21 - 155a: 59 f0 breq .+22 ; 0x1572 <__fp_splitA+0x10> - 155c: 5f 3f cpi r21, 0xFF ; 255 - 155e: 71 f0 breq .+28 ; 0x157c <__fp_splitA+0x1a> - 1560: 47 95 ror r20 - -00001562 <__fp_splitA>: - 1562: 88 0f add r24, r24 - 1564: 97 fb bst r25, 7 - 1566: 99 1f adc r25, r25 - 1568: 61 f0 breq .+24 ; 0x1582 <__fp_splitA+0x20> - 156a: 9f 3f cpi r25, 0xFF ; 255 - 156c: 79 f0 breq .+30 ; 0x158c <__fp_splitA+0x2a> - 156e: 87 95 ror r24 - 1570: 08 95 ret - 1572: 12 16 cp r1, r18 - 1574: 13 06 cpc r1, r19 - 1576: 14 06 cpc r1, r20 - 1578: 55 1f adc r21, r21 - 157a: f2 cf rjmp .-28 ; 0x1560 <__fp_split3+0xe> - 157c: 46 95 lsr r20 - 157e: f1 df rcall .-30 ; 0x1562 <__fp_splitA> - 1580: 08 c0 rjmp .+16 ; 0x1592 <__fp_splitA+0x30> - 1582: 16 16 cp r1, r22 - 1584: 17 06 cpc r1, r23 - 1586: 18 06 cpc r1, r24 - 1588: 99 1f adc r25, r25 - 158a: f1 cf rjmp .-30 ; 0x156e <__fp_splitA+0xc> - 158c: 86 95 lsr r24 - 158e: 71 05 cpc r23, r1 - 1590: 61 05 cpc r22, r1 - 1592: 08 94 sec - 1594: 08 95 ret - -00001596 <__fp_zero>: - 1596: e8 94 clt - -00001598 <__fp_szero>: - 1598: bb 27 eor r27, r27 - 159a: 66 27 eor r22, r22 - 159c: 77 27 eor r23, r23 - 159e: cb 01 movw r24, r22 - 15a0: 97 f9 bld r25, 7 - 15a2: 08 95 ret - -000015a4 <__gesf2>: - 15a4: 0e 94 5d 0a call 0x14ba ; 0x14ba <__fp_cmp> - 15a8: 08 f4 brcc .+2 ; 0x15ac <__gesf2+0x8> - 15aa: 8f ef ldi r24, 0xFF ; 255 - 15ac: 08 95 ret - -000015ae <__mulsf3>: - 15ae: 0e 94 ea 0a call 0x15d4 ; 0x15d4 <__mulsf3x> - 15b2: 0c 94 98 0a jmp 0x1530 ; 0x1530 <__fp_round> - 15b6: 0e 94 8a 0a call 0x1514 ; 0x1514 <__fp_pscA> - 15ba: 38 f0 brcs .+14 ; 0x15ca <__mulsf3+0x1c> - 15bc: 0e 94 91 0a call 0x1522 ; 0x1522 <__fp_pscB> - 15c0: 20 f0 brcs .+8 ; 0x15ca <__mulsf3+0x1c> - 15c2: 95 23 and r25, r21 - 15c4: 11 f0 breq .+4 ; 0x15ca <__mulsf3+0x1c> - 15c6: 0c 94 81 0a jmp 0x1502 ; 0x1502 <__fp_inf> - 15ca: 0c 94 87 0a jmp 0x150e ; 0x150e <__fp_nan> - 15ce: 11 24 eor r1, r1 - 15d0: 0c 94 cc 0a jmp 0x1598 ; 0x1598 <__fp_szero> - -000015d4 <__mulsf3x>: - 15d4: 0e 94 a9 0a call 0x1552 ; 0x1552 <__fp_split3> - 15d8: 70 f3 brcs .-36 ; 0x15b6 <__mulsf3+0x8> - -000015da <__mulsf3_pse>: - 15da: 95 9f mul r25, r21 - 15dc: c1 f3 breq .-16 ; 0x15ce <__mulsf3+0x20> - 15de: 95 0f add r25, r21 - 15e0: 50 e0 ldi r21, 0x00 ; 0 - 15e2: 55 1f adc r21, r21 - 15e4: 62 9f mul r22, r18 - 15e6: f0 01 movw r30, r0 - 15e8: 72 9f mul r23, r18 - 15ea: bb 27 eor r27, r27 - 15ec: f0 0d add r31, r0 - 15ee: b1 1d adc r27, r1 - 15f0: 63 9f mul r22, r19 - 15f2: aa 27 eor r26, r26 - 15f4: f0 0d add r31, r0 - 15f6: b1 1d adc r27, r1 - 15f8: aa 1f adc r26, r26 - 15fa: 64 9f mul r22, r20 - 15fc: 66 27 eor r22, r22 - 15fe: b0 0d add r27, r0 - 1600: a1 1d adc r26, r1 - 1602: 66 1f adc r22, r22 - 1604: 82 9f mul r24, r18 - 1606: 22 27 eor r18, r18 - 1608: b0 0d add r27, r0 - 160a: a1 1d adc r26, r1 - 160c: 62 1f adc r22, r18 - 160e: 73 9f mul r23, r19 - 1610: b0 0d add r27, r0 - 1612: a1 1d adc r26, r1 - 1614: 62 1f adc r22, r18 - 1616: 83 9f mul r24, r19 - 1618: a0 0d add r26, r0 - 161a: 61 1d adc r22, r1 - 161c: 22 1f adc r18, r18 - 161e: 74 9f mul r23, r20 - 1620: 33 27 eor r19, r19 - 1622: a0 0d add r26, r0 - 1624: 61 1d adc r22, r1 - 1626: 23 1f adc r18, r19 - 1628: 84 9f mul r24, r20 - 162a: 60 0d add r22, r0 - 162c: 21 1d adc r18, r1 - 162e: 82 2f mov r24, r18 - 1630: 76 2f mov r23, r22 - 1632: 6a 2f mov r22, r26 - 1634: 11 24 eor r1, r1 - 1636: 9f 57 subi r25, 0x7F ; 127 - 1638: 50 40 sbci r21, 0x00 ; 0 - 163a: 9a f0 brmi .+38 ; 0x1662 <__mulsf3_pse+0x88> - 163c: f1 f0 breq .+60 ; 0x167a <__mulsf3_pse+0xa0> - 163e: 88 23 and r24, r24 - 1640: 4a f0 brmi .+18 ; 0x1654 <__mulsf3_pse+0x7a> - 1642: ee 0f add r30, r30 - 1644: ff 1f adc r31, r31 - 1646: bb 1f adc r27, r27 - 1648: 66 1f adc r22, r22 - 164a: 77 1f adc r23, r23 - 164c: 88 1f adc r24, r24 - 164e: 91 50 subi r25, 0x01 ; 1 - 1650: 50 40 sbci r21, 0x00 ; 0 - 1652: a9 f7 brne .-22 ; 0x163e <__mulsf3_pse+0x64> - 1654: 9e 3f cpi r25, 0xFE ; 254 - 1656: 51 05 cpc r21, r1 - 1658: 80 f0 brcs .+32 ; 0x167a <__mulsf3_pse+0xa0> - 165a: 0c 94 81 0a jmp 0x1502 ; 0x1502 <__fp_inf> - 165e: 0c 94 cc 0a jmp 0x1598 ; 0x1598 <__fp_szero> - 1662: 5f 3f cpi r21, 0xFF ; 255 - 1664: e4 f3 brlt .-8 ; 0x165e <__mulsf3_pse+0x84> - 1666: 98 3e cpi r25, 0xE8 ; 232 - 1668: d4 f3 brlt .-12 ; 0x165e <__mulsf3_pse+0x84> - 166a: 86 95 lsr r24 - 166c: 77 95 ror r23 - 166e: 67 95 ror r22 - 1670: b7 95 ror r27 - 1672: f7 95 ror r31 - 1674: e7 95 ror r30 - 1676: 9f 5f subi r25, 0xFF ; 255 - 1678: c1 f7 brne .-16 ; 0x166a <__mulsf3_pse+0x90> - 167a: fe 2b or r31, r30 - 167c: 88 0f add r24, r24 - 167e: 91 1d adc r25, r1 - 1680: 96 95 lsr r25 - 1682: 87 95 ror r24 - 1684: 97 f9 bld r25, 7 - 1686: 08 95 ret - -00001688 <__udivmodhi4>: - 1688: aa 1b sub r26, r26 - 168a: bb 1b sub r27, r27 - 168c: 51 e1 ldi r21, 0x11 ; 17 - 168e: 07 c0 rjmp .+14 ; 0x169e <__udivmodhi4_ep> - -00001690 <__udivmodhi4_loop>: - 1690: aa 1f adc r26, r26 - 1692: bb 1f adc r27, r27 - 1694: a6 17 cp r26, r22 - 1696: b7 07 cpc r27, r23 - 1698: 10 f0 brcs .+4 ; 0x169e <__udivmodhi4_ep> - 169a: a6 1b sub r26, r22 - 169c: b7 0b sbc r27, r23 - -0000169e <__udivmodhi4_ep>: - 169e: 88 1f adc r24, r24 - 16a0: 99 1f adc r25, r25 - 16a2: 5a 95 dec r21 - 16a4: a9 f7 brne .-22 ; 0x1690 <__udivmodhi4_loop> - 16a6: 80 95 com r24 - 16a8: 90 95 com r25 - 16aa: bc 01 movw r22, r24 - 16ac: cd 01 movw r24, r26 - 16ae: 08 95 ret - -000016b0 <__divmodhi4>: - 16b0: 97 fb bst r25, 7 - 16b2: 07 2e mov r0, r23 - 16b4: 16 f4 brtc .+4 ; 0x16ba <__divmodhi4+0xa> - 16b6: 00 94 com r0 - 16b8: 07 d0 rcall .+14 ; 0x16c8 <__divmodhi4_neg1> - 16ba: 77 fd sbrc r23, 7 - 16bc: 09 d0 rcall .+18 ; 0x16d0 <__divmodhi4_neg2> - 16be: 0e 94 44 0b call 0x1688 ; 0x1688 <__udivmodhi4> - 16c2: 07 fc sbrc r0, 7 - 16c4: 05 d0 rcall .+10 ; 0x16d0 <__divmodhi4_neg2> - 16c6: 3e f4 brtc .+14 ; 0x16d6 <__divmodhi4_exit> - -000016c8 <__divmodhi4_neg1>: - 16c8: 90 95 com r25 - 16ca: 81 95 neg r24 - 16cc: 9f 4f sbci r25, 0xFF ; 255 - 16ce: 08 95 ret - -000016d0 <__divmodhi4_neg2>: - 16d0: 70 95 com r23 - 16d2: 61 95 neg r22 - 16d4: 7f 4f sbci r23, 0xFF ; 255 - -000016d6 <__divmodhi4_exit>: - 16d6: 08 95 ret - -000016d8 <_exit>: - 16d8: f8 94 cli - -000016da <__stop_program>: - 16da: ff cf rjmp .-2 ; 0x16da <__stop_program> +00001552 <__fp_pscB>: + 1552: 00 24 eor r0, r0 + 1554: 0a 94 dec r0 + 1556: 12 16 cp r1, r18 + 1558: 13 06 cpc r1, r19 + 155a: 14 06 cpc r1, r20 + 155c: 05 06 cpc r0, r21 + 155e: 08 95 ret + +00001560 <__fp_round>: + 1560: 09 2e mov r0, r25 + 1562: 03 94 inc r0 + 1564: 00 0c add r0, r0 + 1566: 11 f4 brne .+4 ; 0x156c <__fp_round+0xc> + 1568: 88 23 and r24, r24 + 156a: 52 f0 brmi .+20 ; 0x1580 <__fp_round+0x20> + 156c: bb 0f add r27, r27 + 156e: 40 f4 brcc .+16 ; 0x1580 <__fp_round+0x20> + 1570: bf 2b or r27, r31 + 1572: 11 f4 brne .+4 ; 0x1578 <__fp_round+0x18> + 1574: 60 ff sbrs r22, 0 + 1576: 04 c0 rjmp .+8 ; 0x1580 <__fp_round+0x20> + 1578: 6f 5f subi r22, 0xFF ; 255 + 157a: 7f 4f sbci r23, 0xFF ; 255 + 157c: 8f 4f sbci r24, 0xFF ; 255 + 157e: 9f 4f sbci r25, 0xFF ; 255 + 1580: 08 95 ret + +00001582 <__fp_split3>: + 1582: 57 fd sbrc r21, 7 + 1584: 90 58 subi r25, 0x80 ; 128 + 1586: 44 0f add r20, r20 + 1588: 55 1f adc r21, r21 + 158a: 59 f0 breq .+22 ; 0x15a2 <__fp_splitA+0x10> + 158c: 5f 3f cpi r21, 0xFF ; 255 + 158e: 71 f0 breq .+28 ; 0x15ac <__fp_splitA+0x1a> + 1590: 47 95 ror r20 + +00001592 <__fp_splitA>: + 1592: 88 0f add r24, r24 + 1594: 97 fb bst r25, 7 + 1596: 99 1f adc r25, r25 + 1598: 61 f0 breq .+24 ; 0x15b2 <__fp_splitA+0x20> + 159a: 9f 3f cpi r25, 0xFF ; 255 + 159c: 79 f0 breq .+30 ; 0x15bc <__fp_splitA+0x2a> + 159e: 87 95 ror r24 + 15a0: 08 95 ret + 15a2: 12 16 cp r1, r18 + 15a4: 13 06 cpc r1, r19 + 15a6: 14 06 cpc r1, r20 + 15a8: 55 1f adc r21, r21 + 15aa: f2 cf rjmp .-28 ; 0x1590 <__fp_split3+0xe> + 15ac: 46 95 lsr r20 + 15ae: f1 df rcall .-30 ; 0x1592 <__fp_splitA> + 15b0: 08 c0 rjmp .+16 ; 0x15c2 <__fp_splitA+0x30> + 15b2: 16 16 cp r1, r22 + 15b4: 17 06 cpc r1, r23 + 15b6: 18 06 cpc r1, r24 + 15b8: 99 1f adc r25, r25 + 15ba: f1 cf rjmp .-30 ; 0x159e <__fp_splitA+0xc> + 15bc: 86 95 lsr r24 + 15be: 71 05 cpc r23, r1 + 15c0: 61 05 cpc r22, r1 + 15c2: 08 94 sec + 15c4: 08 95 ret + +000015c6 <__fp_zero>: + 15c6: e8 94 clt + +000015c8 <__fp_szero>: + 15c8: bb 27 eor r27, r27 + 15ca: 66 27 eor r22, r22 + 15cc: 77 27 eor r23, r23 + 15ce: cb 01 movw r24, r22 + 15d0: 97 f9 bld r25, 7 + 15d2: 08 95 ret + +000015d4 <__gesf2>: + 15d4: 0e 94 75 0a call 0x14ea ; 0x14ea <__fp_cmp> + 15d8: 08 f4 brcc .+2 ; 0x15dc <__gesf2+0x8> + 15da: 8f ef ldi r24, 0xFF ; 255 + 15dc: 08 95 ret + +000015de <__mulsf3>: + 15de: 0e 94 02 0b call 0x1604 ; 0x1604 <__mulsf3x> + 15e2: 0c 94 b0 0a jmp 0x1560 ; 0x1560 <__fp_round> + 15e6: 0e 94 a2 0a call 0x1544 ; 0x1544 <__fp_pscA> + 15ea: 38 f0 brcs .+14 ; 0x15fa <__mulsf3+0x1c> + 15ec: 0e 94 a9 0a call 0x1552 ; 0x1552 <__fp_pscB> + 15f0: 20 f0 brcs .+8 ; 0x15fa <__mulsf3+0x1c> + 15f2: 95 23 and r25, r21 + 15f4: 11 f0 breq .+4 ; 0x15fa <__mulsf3+0x1c> + 15f6: 0c 94 99 0a jmp 0x1532 ; 0x1532 <__fp_inf> + 15fa: 0c 94 9f 0a jmp 0x153e ; 0x153e <__fp_nan> + 15fe: 11 24 eor r1, r1 + 1600: 0c 94 e4 0a jmp 0x15c8 ; 0x15c8 <__fp_szero> + +00001604 <__mulsf3x>: + 1604: 0e 94 c1 0a call 0x1582 ; 0x1582 <__fp_split3> + 1608: 70 f3 brcs .-36 ; 0x15e6 <__mulsf3+0x8> + +0000160a <__mulsf3_pse>: + 160a: 95 9f mul r25, r21 + 160c: c1 f3 breq .-16 ; 0x15fe <__mulsf3+0x20> + 160e: 95 0f add r25, r21 + 1610: 50 e0 ldi r21, 0x00 ; 0 + 1612: 55 1f adc r21, r21 + 1614: 62 9f mul r22, r18 + 1616: f0 01 movw r30, r0 + 1618: 72 9f mul r23, r18 + 161a: bb 27 eor r27, r27 + 161c: f0 0d add r31, r0 + 161e: b1 1d adc r27, r1 + 1620: 63 9f mul r22, r19 + 1622: aa 27 eor r26, r26 + 1624: f0 0d add r31, r0 + 1626: b1 1d adc r27, r1 + 1628: aa 1f adc r26, r26 + 162a: 64 9f mul r22, r20 + 162c: 66 27 eor r22, r22 + 162e: b0 0d add r27, r0 + 1630: a1 1d adc r26, r1 + 1632: 66 1f adc r22, r22 + 1634: 82 9f mul r24, r18 + 1636: 22 27 eor r18, r18 + 1638: b0 0d add r27, r0 + 163a: a1 1d adc r26, r1 + 163c: 62 1f adc r22, r18 + 163e: 73 9f mul r23, r19 + 1640: b0 0d add r27, r0 + 1642: a1 1d adc r26, r1 + 1644: 62 1f adc r22, r18 + 1646: 83 9f mul r24, r19 + 1648: a0 0d add r26, r0 + 164a: 61 1d adc r22, r1 + 164c: 22 1f adc r18, r18 + 164e: 74 9f mul r23, r20 + 1650: 33 27 eor r19, r19 + 1652: a0 0d add r26, r0 + 1654: 61 1d adc r22, r1 + 1656: 23 1f adc r18, r19 + 1658: 84 9f mul r24, r20 + 165a: 60 0d add r22, r0 + 165c: 21 1d adc r18, r1 + 165e: 82 2f mov r24, r18 + 1660: 76 2f mov r23, r22 + 1662: 6a 2f mov r22, r26 + 1664: 11 24 eor r1, r1 + 1666: 9f 57 subi r25, 0x7F ; 127 + 1668: 50 40 sbci r21, 0x00 ; 0 + 166a: 9a f0 brmi .+38 ; 0x1692 <__mulsf3_pse+0x88> + 166c: f1 f0 breq .+60 ; 0x16aa <__mulsf3_pse+0xa0> + 166e: 88 23 and r24, r24 + 1670: 4a f0 brmi .+18 ; 0x1684 <__mulsf3_pse+0x7a> + 1672: ee 0f add r30, r30 + 1674: ff 1f adc r31, r31 + 1676: bb 1f adc r27, r27 + 1678: 66 1f adc r22, r22 + 167a: 77 1f adc r23, r23 + 167c: 88 1f adc r24, r24 + 167e: 91 50 subi r25, 0x01 ; 1 + 1680: 50 40 sbci r21, 0x00 ; 0 + 1682: a9 f7 brne .-22 ; 0x166e <__mulsf3_pse+0x64> + 1684: 9e 3f cpi r25, 0xFE ; 254 + 1686: 51 05 cpc r21, r1 + 1688: 80 f0 brcs .+32 ; 0x16aa <__mulsf3_pse+0xa0> + 168a: 0c 94 99 0a jmp 0x1532 ; 0x1532 <__fp_inf> + 168e: 0c 94 e4 0a jmp 0x15c8 ; 0x15c8 <__fp_szero> + 1692: 5f 3f cpi r21, 0xFF ; 255 + 1694: e4 f3 brlt .-8 ; 0x168e <__mulsf3_pse+0x84> + 1696: 98 3e cpi r25, 0xE8 ; 232 + 1698: d4 f3 brlt .-12 ; 0x168e <__mulsf3_pse+0x84> + 169a: 86 95 lsr r24 + 169c: 77 95 ror r23 + 169e: 67 95 ror r22 + 16a0: b7 95 ror r27 + 16a2: f7 95 ror r31 + 16a4: e7 95 ror r30 + 16a6: 9f 5f subi r25, 0xFF ; 255 + 16a8: c1 f7 brne .-16 ; 0x169a <__mulsf3_pse+0x90> + 16aa: fe 2b or r31, r30 + 16ac: 88 0f add r24, r24 + 16ae: 91 1d adc r25, r1 + 16b0: 96 95 lsr r25 + 16b2: 87 95 ror r24 + 16b4: 97 f9 bld r25, 7 + 16b6: 08 95 ret + +000016b8 <__udivmodhi4>: + 16b8: aa 1b sub r26, r26 + 16ba: bb 1b sub r27, r27 + 16bc: 51 e1 ldi r21, 0x11 ; 17 + 16be: 07 c0 rjmp .+14 ; 0x16ce <__udivmodhi4_ep> + +000016c0 <__udivmodhi4_loop>: + 16c0: aa 1f adc r26, r26 + 16c2: bb 1f adc r27, r27 + 16c4: a6 17 cp r26, r22 + 16c6: b7 07 cpc r27, r23 + 16c8: 10 f0 brcs .+4 ; 0x16ce <__udivmodhi4_ep> + 16ca: a6 1b sub r26, r22 + 16cc: b7 0b sbc r27, r23 + +000016ce <__udivmodhi4_ep>: + 16ce: 88 1f adc r24, r24 + 16d0: 99 1f adc r25, r25 + 16d2: 5a 95 dec r21 + 16d4: a9 f7 brne .-22 ; 0x16c0 <__udivmodhi4_loop> + 16d6: 80 95 com r24 + 16d8: 90 95 com r25 + 16da: bc 01 movw r22, r24 + 16dc: cd 01 movw r24, r26 + 16de: 08 95 ret + +000016e0 <__divmodhi4>: + 16e0: 97 fb bst r25, 7 + 16e2: 07 2e mov r0, r23 + 16e4: 16 f4 brtc .+4 ; 0x16ea <__divmodhi4+0xa> + 16e6: 00 94 com r0 + 16e8: 07 d0 rcall .+14 ; 0x16f8 <__divmodhi4_neg1> + 16ea: 77 fd sbrc r23, 7 + 16ec: 09 d0 rcall .+18 ; 0x1700 <__divmodhi4_neg2> + 16ee: 0e 94 5c 0b call 0x16b8 ; 0x16b8 <__udivmodhi4> + 16f2: 07 fc sbrc r0, 7 + 16f4: 05 d0 rcall .+10 ; 0x1700 <__divmodhi4_neg2> + 16f6: 3e f4 brtc .+14 ; 0x1706 <__divmodhi4_exit> + +000016f8 <__divmodhi4_neg1>: + 16f8: 90 95 com r25 + 16fa: 81 95 neg r24 + 16fc: 9f 4f sbci r25, 0xFF ; 255 + 16fe: 08 95 ret + +00001700 <__divmodhi4_neg2>: + 1700: 70 95 com r23 + 1702: 61 95 neg r22 + 1704: 7f 4f sbci r23, 0xFF ; 255 + +00001706 <__divmodhi4_exit>: + 1706: 08 95 ret + +00001708 <_exit>: + 1708: f8 94 cli + +0000170a <__stop_program>: + 170a: ff cf rjmp .-2 ; 0x170a <__stop_program> diff --git a/PIDMotorController/PIDMotorController/Debug/PIDMotorController.map b/PIDMotorController/PIDMotorController/Debug/PIDMotorController.map index 515187073bc1aaf84f912993a59234ed3375efda..de18e13f86991deed1abfac6c497fdbf96bc4b18 100644 --- a/PIDMotorController/PIDMotorController/Debug/PIDMotorController.map +++ b/PIDMotorController/PIDMotorController/Debug/PIDMotorController.map @@ -52,7 +52,7 @@ Common symbol size file per 0x2 pwm.o ADC_CS 0x4 main.o -M_1_pid 0x34 main.o +M_1_pid 0x32 main.o M_INB 0x4 main.o M_1 0x6 main.o M_PWM 0x8 main.o @@ -60,7 +60,7 @@ counter 0x2 ATKBBBIO/ATKEncoder.o CC 0x32 main.o tPV 0x4 ATKBBBIO/ATKEncoder.o M_INA 0x4 main.o -CS_filter 0x5 main.o +CS_filter 0x3 main.o Discarded input sections @@ -89,8 +89,6 @@ Discarded input sections .text 0x00000000 0x0 current_controller.o .data 0x00000000 0x0 current_controller.o .bss 0x00000000 0x0 current_controller.o - .text.currentc_onTarget - 0x00000000 0x3e current_controller.o .text 0x00000000 0x0 kinematics.o .data 0x00000000 0x0 kinematics.o .bss 0x00000000 0x0 kinematics.o @@ -384,7 +382,7 @@ END GROUP .rela.plt *(.rela.plt) -.text 0x00000000 0x16dc +.text 0x00000000 0x170c *(.vectors) .vectors 0x00000000 0x1fc C:/Program Files (x86)/Atmel/Studio/7.0/Packs/atmel/XMEGAA_DFP/1.1.68/gcc/dev/atxmega256a3u/avrxmega6/crtatxmega256a3u.o 0x00000000 __vector_default @@ -568,171 +566,174 @@ END GROUP 0x00000228 . = ALIGN (0x2) *(.text.*) .text.r_adc_init - 0x00000228 0x2c r_adc.o + 0x00000228 0x2e r_adc.o 0x00000228 r_adc_init .text.r_adc_scan - 0x00000254 0xce r_adc.o - 0x00000254 r_adc_scan + 0x00000256 0xc0 r_adc.o + 0x00000256 r_adc_scan .text.clock_init - 0x00000322 0x32 ATKBBBIO/ATKCLK.o - 0x00000322 clock_init - .text.set_dac 0x00000354 0x2e ATKBBBIO/ATKDAC.o - 0x00000354 set_dac + 0x00000316 0x32 ATKBBBIO/ATKCLK.o + 0x00000316 clock_init + .text.set_dac 0x00000348 0x2e ATKBBBIO/ATKDAC.o + 0x00000348 set_dac .text.dac_begin - 0x00000382 0x6c ATKBBBIO/ATKDAC.o - 0x00000382 dac_begin + 0x00000376 0x6c ATKBBBIO/ATKDAC.o + 0x00000376 dac_begin .text.ATKEncoder_begin - 0x000003ee 0x38 ATKBBBIO/ATKEncoder.o - 0x000003ee ATKEncoder_begin + 0x000003e2 0x38 ATKBBBIO/ATKEncoder.o + 0x000003e2 ATKEncoder_begin .text.ATK_EN_getValue - 0x00000426 0x2a ATKBBBIO/ATKEncoder.o - 0x00000426 ATK_EN_getValue + 0x0000041a 0x2a ATKBBBIO/ATKEncoder.o + 0x0000041a ATK_EN_getValue .text.__vector_2 - 0x00000450 0x4a ATKBBBIO/ATKEncoder.o - 0x00000450 __vector_2 + 0x00000444 0x4a ATKBBBIO/ATKEncoder.o + 0x00000444 __vector_2 .text.__vector_3 - 0x0000049a 0x4a ATKBBBIO/ATKEncoder.o - 0x0000049a __vector_3 + 0x0000048e 0x4a ATKBBBIO/ATKEncoder.o + 0x0000048e __vector_3 .text.currentc_crunch - 0x000004e4 0x1d2 current_controller.o - 0x000004e4 currentc_crunch + 0x000004d8 0x1d2 current_controller.o + 0x000004d8 currentc_crunch .text.currentc_setSetpoint - 0x000006b6 0xc current_controller.o - 0x000006b6 currentc_setSetpoint + 0x000006aa 0xc current_controller.o + 0x000006aa currentc_setSetpoint .text.currentc_setAcceptableRange - 0x000006c2 0xc current_controller.o - 0x000006c2 currentc_setAcceptableRange + 0x000006b6 0xc current_controller.o + 0x000006b6 currentc_setAcceptableRange + .text.currentc_onTarget + 0x000006c2 0x3e current_controller.o + 0x000006c2 currentc_onTarget .text.currentc_init - 0x000006ce 0xf6 current_controller.o - 0x000006ce currentc_init + 0x00000700 0xf6 current_controller.o + 0x00000700 currentc_init .text.l_filter - 0x000007c4 0x5e l_filter.o - 0x000007c4 l_filter + 0x000007f6 0x78 l_filter.o + 0x000007f6 l_filter .text.l_filter_init - 0x00000822 0xe l_filter.o - 0x00000822 l_filter_init - .text.pwm_set 0x00000830 0x5c pwm.o - 0x00000830 pwm_set + 0x0000086e 0xa l_filter.o + 0x0000086e l_filter_init + .text.pwm_set 0x00000878 0x5c pwm.o + 0x00000878 pwm_set .text.pwm_set_dutycycle - 0x0000088c 0x96 pwm.o - 0x0000088c pwm_set_dutycycle + 0x000008d4 0x96 pwm.o + 0x000008d4 pwm_set_dutycycle .text.pwm_init - 0x00000922 0x56 pwm.o - 0x00000922 pwm_init + 0x0000096a 0x56 pwm.o + 0x0000096a pwm_init .text.motor_init - 0x00000978 0x26 motor.o - 0x00000978 motor_init + 0x000009c0 0x26 motor.o + 0x000009c0 motor_init .text.motor_set - 0x0000099e 0x68 motor.o - 0x0000099e motor_set + 0x000009e6 0x68 motor.o + 0x000009e6 motor_set .text.timing_interrupts_init - 0x00000a06 0x16 main.o - 0x00000a06 timing_interrupts_init - .text.main 0x00000a1c 0x198 main.o - 0x00000a1c main + 0x00000a4e 0x16 main.o + 0x00000a4e timing_interrupts_init + .text.main 0x00000a64 0x1b2 main.o + 0x00000a64 main .text.__vector_20 - 0x00000bb4 0x1ca main.o - 0x00000bb4 __vector_20 + 0x00000c16 0x198 main.o + 0x00000c16 __vector_20 .text.pin_init - 0x00000d7e 0x1e pin.o - 0x00000d7e pin_init - .text.pin_set 0x00000d9c 0x10 pin.o - 0x00000d9c pin_set + 0x00000dae 0x1e pin.o + 0x00000dae pin_init + .text.pin_set 0x00000dcc 0x10 pin.o + 0x00000dcc pin_set .text.pin_clear - 0x00000dac 0x10 pin.o - 0x00000dac pin_clear + 0x00000ddc 0x10 pin.o + 0x00000ddc pin_clear .text.RPID_crunch - 0x00000dbc 0x346 RPID.o - 0x00000dbc RPID_crunch + 0x00000dec 0x346 RPID.o + 0x00000dec RPID_crunch .text.RPID_setSetpoint - 0x00001102 0xc RPID.o - 0x00001102 RPID_setSetpoint + 0x00001132 0xc RPID.o + 0x00001132 RPID_setSetpoint .text.RPID_onTarget - 0x0000110e 0x3e RPID.o - 0x0000110e RPID_onTarget + 0x0000113e 0x3e RPID.o + 0x0000113e RPID_onTarget .text.RPID_init - 0x0000114c 0xc0 RPID.o - 0x0000114c RPID_init + 0x0000117c 0xc0 RPID.o + 0x0000117c RPID_init .text.avr-libc.fplib - 0x0000120c 0xe c:/program files (x86)/atmel/studio/7.0/toolchain/avr8/avr8-gnu-toolchain/bin/../lib/gcc/avr/5.4.0/../../../../avr/lib/avrxmega6\libm.a(addsf3.o) - 0x0000120c __subsf3 - 0x0000120e __addsf3 + 0x0000123c 0xe c:/program files (x86)/atmel/studio/7.0/toolchain/avr8/avr8-gnu-toolchain/bin/../lib/gcc/avr/5.4.0/../../../../avr/lib/avrxmega6\libm.a(addsf3.o) + 0x0000123c __subsf3 + 0x0000123e __addsf3 .text.avr-libc.fplib - 0x0000121a 0xcc c:/program files (x86)/atmel/studio/7.0/toolchain/avr8/avr8-gnu-toolchain/bin/../lib/gcc/avr/5.4.0/../../../../avr/lib/avrxmega6\libm.a(addsf3x.o) - 0x0000123c __addsf3x + 0x0000124a 0xcc c:/program files (x86)/atmel/studio/7.0/toolchain/avr8/avr8-gnu-toolchain/bin/../lib/gcc/avr/5.4.0/../../../../avr/lib/avrxmega6\libm.a(addsf3x.o) + 0x0000126c __addsf3x .text.avr-libc.fplib - 0x000012e6 0xa c:/program files (x86)/atmel/studio/7.0/toolchain/avr8/avr8-gnu-toolchain/bin/../lib/gcc/avr/5.4.0/../../../../avr/lib/avrxmega6\libm.a(cmpsf2.o) - 0x000012e6 __nesf2 - 0x000012e6 __eqsf2 - 0x000012e6 __cmpsf2 - 0x000012e6 __ltsf2 - 0x000012e6 __lesf2 + 0x00001316 0xa c:/program files (x86)/atmel/studio/7.0/toolchain/avr8/avr8-gnu-toolchain/bin/../lib/gcc/avr/5.4.0/../../../../avr/lib/avrxmega6\libm.a(cmpsf2.o) + 0x00001316 __nesf2 + 0x00001316 __eqsf2 + 0x00001316 __cmpsf2 + 0x00001316 __ltsf2 + 0x00001316 __lesf2 .text.avr-libc.fplib - 0x000012f0 0x8 c:/program files (x86)/atmel/studio/7.0/toolchain/avr8/avr8-gnu-toolchain/bin/../lib/gcc/avr/5.4.0/../../../../avr/lib/avrxmega6\libm.a(divsf3.o) - 0x000012f0 __divsf3 + 0x00001320 0x8 c:/program files (x86)/atmel/studio/7.0/toolchain/avr8/avr8-gnu-toolchain/bin/../lib/gcc/avr/5.4.0/../../../../avr/lib/avrxmega6\libm.a(divsf3.o) + 0x00001320 __divsf3 .text.avr-libc.fplib - 0x000012f8 0xdc c:/program files (x86)/atmel/studio/7.0/toolchain/avr8/avr8-gnu-toolchain/bin/../lib/gcc/avr/5.4.0/../../../../avr/lib/avrxmega6\libm.a(divsf3x.o) - 0x00001318 __divsf3x - 0x0000131e __divsf3_pse + 0x00001328 0xdc c:/program files (x86)/atmel/studio/7.0/toolchain/avr8/avr8-gnu-toolchain/bin/../lib/gcc/avr/5.4.0/../../../../avr/lib/avrxmega6\libm.a(divsf3x.o) + 0x00001348 __divsf3x + 0x0000134e __divsf3_pse .text.avr-libc.fplib - 0x000013d4 0xe c:/program files (x86)/atmel/studio/7.0/toolchain/avr8/avr8-gnu-toolchain/bin/../lib/gcc/avr/5.4.0/../../../../avr/lib/avrxmega6\libm.a(fixsfsi.o) - 0x000013d4 __fixsfsi + 0x00001404 0xe c:/program files (x86)/atmel/studio/7.0/toolchain/avr8/avr8-gnu-toolchain/bin/../lib/gcc/avr/5.4.0/../../../../avr/lib/avrxmega6\libm.a(fixsfsi.o) + 0x00001404 __fixsfsi .text.avr-libc.fplib - 0x000013e2 0x5e c:/program files (x86)/atmel/studio/7.0/toolchain/avr8/avr8-gnu-toolchain/bin/../lib/gcc/avr/5.4.0/../../../../avr/lib/avrxmega6\libm.a(fixunssfsi.o) - 0x000013e2 __fixunssfsi + 0x00001412 0x5e c:/program files (x86)/atmel/studio/7.0/toolchain/avr8/avr8-gnu-toolchain/bin/../lib/gcc/avr/5.4.0/../../../../avr/lib/avrxmega6\libm.a(fixunssfsi.o) + 0x00001412 __fixunssfsi .text.avr-libc.fplib - 0x00001440 0x7a c:/program files (x86)/atmel/studio/7.0/toolchain/avr8/avr8-gnu-toolchain/bin/../lib/gcc/avr/5.4.0/../../../../avr/lib/avrxmega6\libm.a(floatsisf.o) - 0x00001440 __floatunsisf - 0x00001444 __floatsisf + 0x00001470 0x7a c:/program files (x86)/atmel/studio/7.0/toolchain/avr8/avr8-gnu-toolchain/bin/../lib/gcc/avr/5.4.0/../../../../avr/lib/avrxmega6\libm.a(floatsisf.o) + 0x00001470 __floatunsisf + 0x00001474 __floatsisf .text.avr-libc.fplib - 0x000014ba 0x48 c:/program files (x86)/atmel/studio/7.0/toolchain/avr8/avr8-gnu-toolchain/bin/../lib/gcc/avr/5.4.0/../../../../avr/lib/avrxmega6\libm.a(fp_cmp.o) - 0x000014ba __fp_cmp + 0x000014ea 0x48 c:/program files (x86)/atmel/studio/7.0/toolchain/avr8/avr8-gnu-toolchain/bin/../lib/gcc/avr/5.4.0/../../../../avr/lib/avrxmega6\libm.a(fp_cmp.o) + 0x000014ea __fp_cmp .text.avr-libc.fplib - 0x00001502 0xc c:/program files (x86)/atmel/studio/7.0/toolchain/avr8/avr8-gnu-toolchain/bin/../lib/gcc/avr/5.4.0/../../../../avr/lib/avrxmega6\libm.a(fp_inf.o) - 0x00001502 __fp_inf + 0x00001532 0xc c:/program files (x86)/atmel/studio/7.0/toolchain/avr8/avr8-gnu-toolchain/bin/../lib/gcc/avr/5.4.0/../../../../avr/lib/avrxmega6\libm.a(fp_inf.o) + 0x00001532 __fp_inf .text.avr-libc.fplib - 0x0000150e 0x6 c:/program files (x86)/atmel/studio/7.0/toolchain/avr8/avr8-gnu-toolchain/bin/../lib/gcc/avr/5.4.0/../../../../avr/lib/avrxmega6\libm.a(fp_nan.o) - 0x0000150e __fp_nan + 0x0000153e 0x6 c:/program files (x86)/atmel/studio/7.0/toolchain/avr8/avr8-gnu-toolchain/bin/../lib/gcc/avr/5.4.0/../../../../avr/lib/avrxmega6\libm.a(fp_nan.o) + 0x0000153e __fp_nan .text.avr-libc.fplib - 0x00001514 0xe c:/program files (x86)/atmel/studio/7.0/toolchain/avr8/avr8-gnu-toolchain/bin/../lib/gcc/avr/5.4.0/../../../../avr/lib/avrxmega6\libm.a(fp_pscA.o) - 0x00001514 __fp_pscA + 0x00001544 0xe c:/program files (x86)/atmel/studio/7.0/toolchain/avr8/avr8-gnu-toolchain/bin/../lib/gcc/avr/5.4.0/../../../../avr/lib/avrxmega6\libm.a(fp_pscA.o) + 0x00001544 __fp_pscA .text.avr-libc.fplib - 0x00001522 0xe c:/program files (x86)/atmel/studio/7.0/toolchain/avr8/avr8-gnu-toolchain/bin/../lib/gcc/avr/5.4.0/../../../../avr/lib/avrxmega6\libm.a(fp_pscB.o) - 0x00001522 __fp_pscB + 0x00001552 0xe c:/program files (x86)/atmel/studio/7.0/toolchain/avr8/avr8-gnu-toolchain/bin/../lib/gcc/avr/5.4.0/../../../../avr/lib/avrxmega6\libm.a(fp_pscB.o) + 0x00001552 __fp_pscB .text.avr-libc.fplib - 0x00001530 0x22 c:/program files (x86)/atmel/studio/7.0/toolchain/avr8/avr8-gnu-toolchain/bin/../lib/gcc/avr/5.4.0/../../../../avr/lib/avrxmega6\libm.a(fp_round.o) - 0x00001530 __fp_round + 0x00001560 0x22 c:/program files (x86)/atmel/studio/7.0/toolchain/avr8/avr8-gnu-toolchain/bin/../lib/gcc/avr/5.4.0/../../../../avr/lib/avrxmega6\libm.a(fp_round.o) + 0x00001560 __fp_round .text.avr-libc.fplib - 0x00001552 0x44 c:/program files (x86)/atmel/studio/7.0/toolchain/avr8/avr8-gnu-toolchain/bin/../lib/gcc/avr/5.4.0/../../../../avr/lib/avrxmega6\libm.a(fp_split3.o) - 0x00001552 __fp_split3 - 0x00001562 __fp_splitA + 0x00001582 0x44 c:/program files (x86)/atmel/studio/7.0/toolchain/avr8/avr8-gnu-toolchain/bin/../lib/gcc/avr/5.4.0/../../../../avr/lib/avrxmega6\libm.a(fp_split3.o) + 0x00001582 __fp_split3 + 0x00001592 __fp_splitA .text.avr-libc.fplib - 0x00001596 0xe c:/program files (x86)/atmel/studio/7.0/toolchain/avr8/avr8-gnu-toolchain/bin/../lib/gcc/avr/5.4.0/../../../../avr/lib/avrxmega6\libm.a(fp_zero.o) - 0x00001596 __fp_zero - 0x00001598 __fp_szero + 0x000015c6 0xe c:/program files (x86)/atmel/studio/7.0/toolchain/avr8/avr8-gnu-toolchain/bin/../lib/gcc/avr/5.4.0/../../../../avr/lib/avrxmega6\libm.a(fp_zero.o) + 0x000015c6 __fp_zero + 0x000015c8 __fp_szero .text.avr-libc.fplib - 0x000015a4 0xa c:/program files (x86)/atmel/studio/7.0/toolchain/avr8/avr8-gnu-toolchain/bin/../lib/gcc/avr/5.4.0/../../../../avr/lib/avrxmega6\libm.a(gesf2.o) - 0x000015a4 __gesf2 - 0x000015a4 __gtsf2 + 0x000015d4 0xa c:/program files (x86)/atmel/studio/7.0/toolchain/avr8/avr8-gnu-toolchain/bin/../lib/gcc/avr/5.4.0/../../../../avr/lib/avrxmega6\libm.a(gesf2.o) + 0x000015d4 __gesf2 + 0x000015d4 __gtsf2 .text.avr-libc.fplib - 0x000015ae 0x8 c:/program files (x86)/atmel/studio/7.0/toolchain/avr8/avr8-gnu-toolchain/bin/../lib/gcc/avr/5.4.0/../../../../avr/lib/avrxmega6\libm.a(mulsf3.o) - 0x000015ae __mulsf3 + 0x000015de 0x8 c:/program files (x86)/atmel/studio/7.0/toolchain/avr8/avr8-gnu-toolchain/bin/../lib/gcc/avr/5.4.0/../../../../avr/lib/avrxmega6\libm.a(mulsf3.o) + 0x000015de __mulsf3 .text.avr-libc.fplib - 0x000015b6 0xd2 c:/program files (x86)/atmel/studio/7.0/toolchain/avr8/avr8-gnu-toolchain/bin/../lib/gcc/avr/5.4.0/../../../../avr/lib/avrxmega6\libm.a(mulsf3x.o) - 0x000015d4 __mulsf3x - 0x000015da __mulsf3_pse + 0x000015e6 0xd2 c:/program files (x86)/atmel/studio/7.0/toolchain/avr8/avr8-gnu-toolchain/bin/../lib/gcc/avr/5.4.0/../../../../avr/lib/avrxmega6\libm.a(mulsf3x.o) + 0x00001604 __mulsf3x + 0x0000160a __mulsf3_pse .text.libgcc.div - 0x00001688 0x28 c:/program files (x86)/atmel/studio/7.0/toolchain/avr8/avr8-gnu-toolchain/bin/../lib/gcc/avr/5.4.0/avrxmega6\libgcc.a(_udivmodhi4.o) - 0x00001688 __udivmodhi4 + 0x000016b8 0x28 c:/program files (x86)/atmel/studio/7.0/toolchain/avr8/avr8-gnu-toolchain/bin/../lib/gcc/avr/5.4.0/avrxmega6\libgcc.a(_udivmodhi4.o) + 0x000016b8 __udivmodhi4 .text.libgcc.div - 0x000016b0 0x28 c:/program files (x86)/atmel/studio/7.0/toolchain/avr8/avr8-gnu-toolchain/bin/../lib/gcc/avr/5.4.0/avrxmega6\libgcc.a(_divmodhi4.o) - 0x000016b0 _div - 0x000016b0 __divmodhi4 - 0x000016d8 . = ALIGN (0x2) + 0x000016e0 0x28 c:/program files (x86)/atmel/studio/7.0/toolchain/avr8/avr8-gnu-toolchain/bin/../lib/gcc/avr/5.4.0/avrxmega6\libgcc.a(_divmodhi4.o) + 0x000016e0 _div + 0x000016e0 __divmodhi4 + 0x00001708 . = ALIGN (0x2) *(.fini9) - .fini9 0x000016d8 0x0 c:/program files (x86)/atmel/studio/7.0/toolchain/avr8/avr8-gnu-toolchain/bin/../lib/gcc/avr/5.4.0/avrxmega6\libgcc.a(_exit.o) - 0x000016d8 _exit - 0x000016d8 exit + .fini9 0x00001708 0x0 c:/program files (x86)/atmel/studio/7.0/toolchain/avr8/avr8-gnu-toolchain/bin/../lib/gcc/avr/5.4.0/avrxmega6\libgcc.a(_exit.o) + 0x00001708 _exit + 0x00001708 exit *(.fini9) *(.fini8) *(.fini8) @@ -751,11 +752,11 @@ END GROUP *(.fini1) *(.fini1) *(.fini0) - .fini0 0x000016d8 0x4 c:/program files (x86)/atmel/studio/7.0/toolchain/avr8/avr8-gnu-toolchain/bin/../lib/gcc/avr/5.4.0/avrxmega6\libgcc.a(_exit.o) + .fini0 0x00001708 0x4 c:/program files (x86)/atmel/studio/7.0/toolchain/avr8/avr8-gnu-toolchain/bin/../lib/gcc/avr/5.4.0/avrxmega6\libgcc.a(_exit.o) *(.fini0) - 0x000016dc _etext = . + 0x0000170c _etext = . -.data 0x00802000 0x0 load address 0x000016dc +.data 0x00802000 0x0 load address 0x0000170c [!provide] PROVIDE (__data_start, .) *(.data) *(.data*) @@ -767,7 +768,7 @@ END GROUP 0x00802000 _edata = . [!provide] PROVIDE (__data_end, .) -.bss 0x00802000 0x8f +.bss 0x00802000 0x8b 0x00802000 PROVIDE (__bss_start, .) *(.bss) *(.bss*) @@ -779,24 +780,24 @@ END GROUP 0x00802004 tPV COMMON 0x00802008 0x2 pwm.o 0x00802008 per - COMMON 0x0080200a 0x85 main.o + COMMON 0x0080200a 0x81 main.o 0x0080200a ADC_CS 0x0080200e M_1_pid - 0x00802042 M_INB - 0x00802046 M_1 - 0x0080204c M_PWM - 0x00802054 CC - 0x00802086 M_INA - 0x0080208a CS_filter - 0x0080208f PROVIDE (__bss_end, .) - 0x000016dc __data_load_start = LOADADDR (.data) - 0x000016dc __data_load_end = (__data_load_start + SIZEOF (.data)) - -.noinit 0x0080208f 0x0 + 0x00802040 M_INB + 0x00802044 M_1 + 0x0080204a M_PWM + 0x00802052 CC + 0x00802084 M_INA + 0x00802088 CS_filter + 0x0080208b PROVIDE (__bss_end, .) + 0x0000170c __data_load_start = LOADADDR (.data) + 0x0000170c __data_load_end = (__data_load_start + SIZEOF (.data)) + +.noinit 0x0080208b 0x0 [!provide] PROVIDE (__noinit_start, .) *(.noinit*) [!provide] PROVIDE (__noinit_end, .) - 0x0080208f _end = . + 0x0080208b _end = . [!provide] PROVIDE (__heap_start, .) .eeprom 0x00810000 0x0 @@ -899,7 +900,7 @@ END GROUP .debug_pubnames *(.debug_pubnames) -.debug_info 0x00000000 0x8229 +.debug_info 0x00000000 0x8273 *(.debug_info .gnu.linkonce.wi.*) .debug_info 0x00000000 0x3409 C:/Program Files (x86)/Atmel/Studio/7.0/Packs/atmel/XMEGAA_DFP/1.1.68/gcc/dev/atxmega256a3u/avrxmega6/crtatxmega256a3u.o .debug_info 0x00003409 0x72c r_adc.o @@ -907,14 +908,14 @@ END GROUP .debug_info 0x00003d83 0x3e8 ATKBBBIO/ATKDAC.o .debug_info 0x0000416b 0x2f1 ATKBBBIO/ATKEncoder.o .debug_info 0x0000445c 0x2ff current_controller.o - .debug_info 0x0000475b 0x132 l_filter.o - .debug_info 0x0000488d 0x93d pwm.o - .debug_info 0x000051ca 0xad9 motor.o - .debug_info 0x00005ca3 0x1d3d main.o - .debug_info 0x000079e0 0x463 pin.o - .debug_info 0x00007e43 0x3e6 RPID.o - -.debug_abbrev 0x00000000 0x403f + .debug_info 0x0000475b 0x119 l_filter.o + .debug_info 0x00004874 0x93d pwm.o + .debug_info 0x000051b1 0xad9 motor.o + .debug_info 0x00005c8a 0x1dab main.o + .debug_info 0x00007a35 0x463 pin.o + .debug_info 0x00007e98 0x3db RPID.o + +.debug_abbrev 0x00000000 0x405b *(.debug_abbrev) .debug_abbrev 0x00000000 0x3148 C:/Program Files (x86)/Atmel/Studio/7.0/Packs/atmel/XMEGAA_DFP/1.1.68/gcc/dev/atxmega256a3u/avrxmega6/crtatxmega256a3u.o .debug_abbrev 0x00003148 0x178 r_adc.o @@ -925,40 +926,40 @@ END GROUP .debug_abbrev 0x000036cb 0xce l_filter.o .debug_abbrev 0x00003799 0x1c0 pwm.o .debug_abbrev 0x00003959 0x1b9 motor.o - .debug_abbrev 0x00003b12 0x263 main.o - .debug_abbrev 0x00003d75 0x184 pin.o - .debug_abbrev 0x00003ef9 0x146 RPID.o + .debug_abbrev 0x00003b12 0x27f main.o + .debug_abbrev 0x00003d91 0x184 pin.o + .debug_abbrev 0x00003f15 0x146 RPID.o -.debug_line 0x00000000 0x16e5 +.debug_line 0x00000000 0x16cb *(.debug_line .debug_line.* .debug_line_end) .debug_line 0x00000000 0x39d C:/Program Files (x86)/Atmel/Studio/7.0/Packs/atmel/XMEGAA_DFP/1.1.68/gcc/dev/atxmega256a3u/avrxmega6/crtatxmega256a3u.o - .debug_line 0x0000039d 0x18c r_adc.o - .debug_line 0x00000529 0x13d ATKBBBIO/ATKCLK.o - .debug_line 0x00000666 0x1ad ATKBBBIO/ATKDAC.o - .debug_line 0x00000813 0x1bb ATKBBBIO/ATKEncoder.o - .debug_line 0x000009ce 0x1fd current_controller.o - .debug_line 0x00000bcb 0xd5 l_filter.o - .debug_line 0x00000ca0 0x1f0 pwm.o - .debug_line 0x00000e90 0x194 motor.o - .debug_line 0x00001024 0x2c8 main.o - .debug_line 0x000012ec 0x1de pin.o - .debug_line 0x000014ca 0x21b RPID.o - -.debug_frame 0x00000000 0x620 + .debug_line 0x0000039d 0x174 r_adc.o + .debug_line 0x00000511 0x13d ATKBBBIO/ATKCLK.o + .debug_line 0x0000064e 0x1ad ATKBBBIO/ATKDAC.o + .debug_line 0x000007fb 0x1bb ATKBBBIO/ATKEncoder.o + .debug_line 0x000009b6 0x1fd current_controller.o + .debug_line 0x00000bb3 0xd5 l_filter.o + .debug_line 0x00000c88 0x1f0 pwm.o + .debug_line 0x00000e78 0x194 motor.o + .debug_line 0x0000100c 0x2cc main.o + .debug_line 0x000012d8 0x1de pin.o + .debug_line 0x000014b6 0x215 RPID.o + +.debug_frame 0x00000000 0x628 *(.debug_frame) .debug_frame 0x00000000 0x40 r_adc.o .debug_frame 0x00000040 0x24 ATKBBBIO/ATKCLK.o .debug_frame 0x00000064 0x3c ATKBBBIO/ATKDAC.o .debug_frame 0x000000a0 0x8c ATKBBBIO/ATKEncoder.o .debug_frame 0x0000012c 0x12c current_controller.o - .debug_frame 0x00000258 0x48 l_filter.o - .debug_frame 0x000002a0 0x84 pwm.o - .debug_frame 0x00000324 0x70 motor.o - .debug_frame 0x00000394 0xe4 main.o - .debug_frame 0x00000478 0xac pin.o - .debug_frame 0x00000524 0xfc RPID.o - -.debug_str 0x00000000 0x39b1 + .debug_frame 0x00000258 0x5c l_filter.o + .debug_frame 0x000002b4 0x84 pwm.o + .debug_frame 0x00000338 0x70 motor.o + .debug_frame 0x000003a8 0xd8 main.o + .debug_frame 0x00000480 0xac pin.o + .debug_frame 0x0000052c 0xfc RPID.o + +.debug_str 0x00000000 0x39b4 *(.debug_str) .debug_str 0x00000000 0x223b C:/Program Files (x86)/Atmel/Studio/7.0/Packs/atmel/XMEGAA_DFP/1.1.68/gcc/dev/atxmega256a3u/avrxmega6/crtatxmega256a3u.o .debug_str 0x0000223b 0x8d0 r_adc.o @@ -971,31 +972,31 @@ END GROUP 0x349 (size before relaxing) .debug_str 0x00003156 0x118 current_controller.o 0x2b2 (size before relaxing) - .debug_str 0x0000326e 0x45 l_filter.o - 0x1dd (size before relaxing) - .debug_str 0x000032b3 0x46e pwm.o + .debug_str 0x0000326e 0x3d l_filter.o + 0x1cc (size before relaxing) + .debug_str 0x000032ab 0x46e pwm.o 0x735 (size before relaxing) - .debug_str 0x00003721 0x77 motor.o + .debug_str 0x00003719 0x77 motor.o 0x730 (size before relaxing) - .debug_str 0x00003798 0x197 main.o - 0xd1c (size before relaxing) - .debug_str 0x0000392f 0x52 pin.o + .debug_str 0x00003790 0x1a2 main.o + 0xd31 (size before relaxing) + .debug_str 0x00003932 0x52 pin.o 0x2df (size before relaxing) - .debug_str 0x00003981 0x30 RPID.o - 0x2bd (size before relaxing) + .debug_str 0x00003984 0x30 RPID.o + 0x2b5 (size before relaxing) -.debug_loc 0x00000000 0x1369 +.debug_loc 0x00000000 0x13c2 *(.debug_loc) .debug_loc 0x00000000 0xae r_adc.o .debug_loc 0x000000ae 0x6f ATKBBBIO/ATKDAC.o .debug_loc 0x0000011d 0x92 ATKBBBIO/ATKEncoder.o .debug_loc 0x000001af 0x433 current_controller.o - .debug_loc 0x000005e2 0x71 l_filter.o - .debug_loc 0x00000653 0x371 pwm.o - .debug_loc 0x000009c4 0x1ca motor.o - .debug_loc 0x00000b8e 0x25f main.o - .debug_loc 0x00000ded 0x163 pin.o - .debug_loc 0x00000f50 0x419 RPID.o + .debug_loc 0x000005e2 0xeb l_filter.o + .debug_loc 0x000006cd 0x371 pwm.o + .debug_loc 0x00000a3e 0x1ca motor.o + .debug_loc 0x00000c08 0x241 main.o + .debug_loc 0x00000e49 0x163 pin.o + .debug_loc 0x00000fac 0x416 RPID.o .debug_macinfo *(.debug_macinfo) diff --git a/PIDMotorController/PIDMotorController/Debug/PIDMotorController.srec b/PIDMotorController/PIDMotorController/Debug/PIDMotorController.srec index ce1cb4957f1a7edecb47c8b84f84f6f4d456ad47..e640895c59e037f5b0824a161bbbbd670a402f3b 100644 --- a/PIDMotorController/PIDMotorController/Debug/PIDMotorController.srec +++ b/PIDMotorController/PIDMotorController/Debug/PIDMotorController.srec @@ -1,10 +1,10 @@ S01A00005049444D6F746F72436F6E74726F6C6C65722E73726563F8 -S11300000C94FE000C9412010C9428020C944D02E2 +S11300000C94FE000C9412010C9422020C944702EE S11300100C9412010C9412010C9412010C94120110 S11300200C9412010C9412010C9412010C94120100 S11300300C9412010C9412010C9412010C941201F0 S11300400C9412010C9412010C9412010C941201E0 -S11300500C94DA050C9412010C9412010C94120104 +S11300500C940B060C9412010C9412010C941201D2 S11300600C9412010C9412010C9412010C941201C0 S11300700C9412010C9412010C9412010C941201B0 S11300800C9412010C9412010C9412010C941201A0 @@ -32,337 +32,340 @@ S11301D00C9412010C9412010C9412010C9412014F S11301E00C9412010C9412010C9412010C9412013F S11301F00C9412010C9412010C94120111241FBED0 S1130200CFEFCDBFDFE5DEBF00E00CBF20E2A0E012 -S1130210B0E201C01D92AF38B207E1F70E940E05AB -S11302200C946C0B0C940000FB01DC016D937C932B -S1130230119712964D935C93139781E080831182FA -S113024080E1828385E084838FE1FA0180832760E3 -S113025021830895CF93DF93FC01A281B3819C9104 -S113026090689C93C281D38188818823ECF36D814B -S11302708C8170E0762F6627680F711D625E77406F -S1130280072E000C880B990B0E94220A2DEC3CECE3 -S11302904CEA5FE30E94D70A20E030E0A9010E9403 -S11302A073098823B4F16D818C8170E0762F662701 -S11302B0680F711D625E7740072E000C880B990B46 -S11302C00E94220A2DEC3CEC4CEA5FE30E94D70A20 -S11302D020E030EF4FE755E40E94D20A1816E4F00C -S11302E06D818C8170E0762F6627680F711D625EC8 -S11302F07740072E000C880B990B0E94220A2DECE4 -S11303003CEC4CEA5FE30E94D70A0E94F109CB015E -S113031005C080E090E002C08FEF9FE0DF91CF91B5 -S11303200895E0E5F0E083EC828388E080838181B6 -S113033083FFFDCFE0E5F0E083EC8583808180617D -S11303408083818184FFFDCF88ED84BF84E0809326 -S11303504000089580FF09C0E0E2F3E0958190FF3A -S1130360FDCF609338037093390381FF09C0E0E245 -S1130370F3E0858181FFFDCF60933A0370933B03E3 -S11303800895CF93C82F88E080932203C23021F4CC -S113039080E48093210307C010922103C0FD03C0B1 -S11303A0C1FF23C017C0E0E2F3E080818560808351 -S11303B060E070E081E00E94AA01C1FF16C0E0E2A3 -S11303C0F3E080818960808360E070E082E00E94D5 -S11303D0AA010BC0E0E2F3E080818560808360E0E5 -S11303E070E081E00E94AA01EACFCF910895E1E490 -S11303F0F6E02081297F2083E0E4F6E024E02187F1 -S113040032E03287318B238721E0228B1092022045 -S1130410109203206093042070930520809306209B -S11304209093072008956091022070910320072E75 -S1130430000C880B990B0E94220A20910420309111 -S1130440052040910620509107200E9478090895C4 -S11304501F920F920FB60F9211248F939F93809146 -S1130460480682FD0AC080910220909103200A96DA -S1130470809302209093032009C0809102209091E0 -S113048003200A9780930220909303209F918F91D9 -S11304900F900FBE0F901F9018951F920F920FB6DA -S11304A00F9211248F939F938091480681FF0AC075 -S11304B080910220909103200A96809302209093C9 -S11304C0032009C080910220909103200A97809311 -S11304D00220909303209F918F910F900FBE0F9055 -S11304E01F9018952F923F924F925F926F927F9236 -S11304F08F929F92AF92BF92CF92DF92EF92FF9230 -S11305000F931F93CF93DF93EC019A01AB0168A57E -S113051079A58AA59BA50E9406096B017C01688FB9 -S1130520798F8A8F9B8F288539854A855B850E94C0 -S1130530D70A2C8D3D8D4E8D5F8D0E940709162F95 -S1130540072FB82EA92E9CA08DA03EA02FA0292D48 -S1130550382D432D522D0E9473098823A4F098A0AE -S113056089A03AA02BA0292D382D432D522D612F7F -S1130570702F8B2D9A2D0E94D20A181624F0912EDA -S1130580802E3B2C2A2C892D982DA32DB22D8C8FB7 -S11305909D8FAE8FBF8F288139814A815B81C701CE -S11305A0B6010E94D70A2B013C012C813D814E816A -S11305B05F81692D782D832D922D0E94D70A4B01DE -S11305C05C01CC8ADD8AEE8AFF8AC701B6010E94EB -S11305D0EA099B01772324F422273327261B370BB0 -S11305E0B901330F880B990B0E94220A2CA53DA553 -S11305F04EA55FA50E947309882334F488A999A99C -S1130600019688AB99AB02C018AA19AAA501940156 -S1130610C301B2010E940709162F072FB82EA92E75 -S11306206A897B89072E000C880B990B0E94220A89 -S1130630D62EE72EF82EC92E262F372F482F592FC6 -S1130640612F702F8B2D9A2D0E9473098823E4F05B -S113065068897989072E000C880B990B0E94220A5D -S1130660D62EE72EF82EC92E262F372F482F592F96 -S1130670612F702F8B2D9A2D0E94D20A181624F008 -S1130680D12EE02EFB2CCA2C6D2D7E2D8F2D9C2D72 -S1130690DF91CF911F910F91FF90EF90DF90CF905A -S11306A0BF90AF909F908F907F906F905F904F908E -S11306B03F902F900895FC0140A751A762A773A70C -S11306C00895FC0144A755A766A777A708952F921C -S11306D03F924F925F926F927F928F929F92AF92CE -S11306E0BF92CF92DF92EF92FF920F931F93CF931B -S11306F0DF93CDB7DEB73C01180129018E899F89AC -S1130700088D198DF301408351836283738324829E -S1130710358246825782C086D186E286F386A686D3 -S1130720B78684869586828B938B008B118BBC0154 -S1130730990F880B990B0E94220AA20191010E9431 -S11307407809F30164A375A386A397A3B801110FD5 -S1130750880B990B0E94220AA20191010E94780938 -S1130760F30160A371A382A393A3148A158A168A42 -S1130770178A108E118E128E138E148E158E168E6D -S1130780178E10A611A612A613A680E090E0A0EF83 -S1130790B1E484A795A7A6A7B7A710AA11AADF91C9 -S11307A0CF911F910F91FF90EF90DF90CF90BF906A -S11307B0AF909F908F907F906F905F904F903F90FD -S11307C02F900895CF92DF92EF92FF92FC018181E6 -S11307D09281A381B48120816C017D01022E04C029 -S11307E0F594E794D794C7940A94D2F78C199D0989 -S11307F0AE09BF09AB0102C0559547952A95E2F7AA -S1130800052E000C660B770B840F951FA61FB71FD0 -S113081081839283A383B483FF90EF90DF90CF9082 -S11308200895FC0111821282138214826083089558 -S1130830FC01838184FF09C0A081B181D9967C9396 -S11308400190F081E02D60AF089585FF09C0A0817B -S1130850B181DB967C930190F081E02D62AF089525 -S113086086FF09C0A081B181DD967C930190F0815F -S1130870E02D64AF0895882344F4A081B181DF960C -S11308807C930190F081E02D66AF0895CF92DF92C2 -S1130890EF92FF92CF93DF93EC016A017B0120E09A -S11308A030E0A901C701B6010E9473098823ACF0A6 -S11308B020E030E048EC52E4C701B6010E94D20ABD -S11308C018167CF020E030E048EC52E4C701B60191 -S11308D00E9478096B017C010CC0C12CD12C7601DB -S11308E008C00F2EC12CD12CF0E8EF2EFFE3FF2E11 -S11308F0F02D609108207091092080E090E00E9422 -S1130900200AA70196010E94D70A0E94F109CE018C -S11309100E941804DF91CF91FF90EF90DF90CF9069 -S11309200895EF92FF920F931F93CF93DF93FC01EF -S1130930EB01C801B701C083D183428323830483BD -S11309401583E682F7824883236029830E94440B3F -S113095060930820709309206EAB7FAB60E070E079 -S1130960CF010E94180480E090E0DF91CF911F91A5 -S11309700F91FF90EF900895CF93DF93EC01CB019B -S1130980688379834A835B832C833D830E94CE06EC -S11309908A819B810E94D606DF91CF910895CF92E0 -S11309A0DF92EF92FF92CF93DF93EC016A017B0118 -S11309B020E030E0A901C701B6010E947309882331 -S11309C06CF4F7FAF094F7F8F094888199810E9416 -S11309D0CE068A819B810E94D60608C08A819B81AB -S11309E00E94CE06888199810E94D606B701A6018D -S11309F08C819D810E944604DF91CF91FF90EF90FE -S1130A00DF90CF900895E0E4F8E081E0808380EC0B -S1130A1086AB8DE587AB82E0868308950E949101C1 -S1130A207894E0EAF0E0828187608283E0E8F6E08F -S1130A3081818860818382E00E94C10160E070E06E -S1130A4080E89FE30E94F701E0E4F6E081818160A1 -S1130A50818301E021E040E160E476E086E890E211 -S1130A600E94BF0620E048E060E476E082E490E281 -S1130A700E94BF060F2EF4E1EF2EF12CF02D00E8BA -S1130A801BEB20E141E060E078E08CE490E20E941E -S1130A9091042CE430E242E450E266E870E286E439 -S1130AA090E20E94BC0420E040E652E060E472E080 -S1130AB08AE090E20E9414011F9284E68F931F92B1 -S1130AC01F920F2EF8E88F2EF3E19F2EF02DA12C0C -S1130AD0B12C0F2EFFE6CF2EF2E1DF2EF3E0EF2E46 -S1130AE0FAE3FF2EF02D00E010E020E031E440E0D6 -S1130AF050E060E070E484E590E20E94670340E027 -S1130B0050E06AEF73E484E590E20E945B0340E006 -S1130B1050E068E472E484E590E20E94610366E0D8 -S1130B208AE890E20E94110486E08F9381E08F931B -S1130B308CE28F938EEF8F9384ED8F931F921F928D -S1130B401F921F921F920F2EFCEA8F2EF5EC9F2E00 -S1130B50F7E2AF2EF9E3BF2EF02DC12CD12C760194 -S1130B6000E010E020EA30E440E050E060EA71E4A4 -S1130B708EE090E20E94A608E0E2F6E081818C60BB -S1130B80818368EE73E08CE490E20E9418048CE0A8 -S1130B908093810640E050E068E372E48EE090E2E6 -S1130BA00E9481080E9403058DB79EB70E968DBFE3 -S1130BB09EBFFFCF1F920F920FB60F9211240BB658 -S1130BC00F928F929F92AF92BF92CF92DF92EF9249 -S1130BD0FF922F933F934F935F936F937F938F93E2 -S1130BE09F93AF93BF93EF93FF93809100209091D5 -S1130BF001200196809300209093012068EE73E019 -S1130C000E94580B892B19F484E0809383060E9478 -S1130C10130220E030E040E853E40E9407090E94F8 -S1130C20F10981E00E94AA018EE090E20E94870807 -S1130C30882321F188E08093830620E030E04AEFA6 -S1130C4053E4609133207091342080913520909149 -S1130C5036200E947309811109C040E050E060EF22 -S1130C6071E48EE090E20E94810808C040E050E008 -S1130C706AEF73E48EE090E20E9481080E941302FE -S1130C80AB01BC018EE090E20E94DE064B015C01E8 -S1130C900E94EA099B01772324F422273327261B89 -S1130CA0370BB901330F880B990B0E94220AAB0151 -S1130CB0BC0184E590E20E945B038AE090E20E941A -S1130CC02A01BC0180E090E00E94200A20E030E08C -S1130CD048EB50E40E94D70A0E94EA098AE890E2AD -S1130CE00E94E203BC01990F880B990B0E94220A0F -S1130CF0AB01BC0184E590E20E9472026B017C01AD -S1130D0020E030E048EF51E40E94D70A20E030E8C8 -S1130D1049E054E40E9407090E94F10982E00E941C -S1130D20AA0120E030E0A901C501B4010E94D20A61 -S1130D30181624F0B701A601705802C0B701A60125 -S1130D4086E490E20E94CF04FF91EF91BF91AF91AE -S1130D509F918F917F916F915F914F913F912F91CF -S1130D60FF90EF90DF90CF90BF90AF909F908F90C7 -S1130D700F900BBE0F900FBE0F901F9018950F93FE -S1130D80FC016083718342832383002319F0FB01F8 -S1130D90418302C0FB0142830F910895DC01ED9170 -S1130DA0FC91119712968C9185830895DC01ED9145 -S1130DB0FC91119712968C91868308954F925F92BD -S1130DC06F927F928F929F92AF92BF92CF92DF9257 -S1130DD0EF92FF92CF93DF9300D000D0CDB7DEB770 -S1130DE08D839E839A01AB01FC0165A176A187A145 -S1130DF090A50E9406096B017C01ED81FE81658F3F -S1130E00768F878F90A3808980FF5EC081889288C7 -S1130E10A388B488C701B6010E94EA099B0177231D -S1130E2024F422273327261B370BA4014A195B0914 -S1130E30CA0199230CF40196959587958217930717 -S1130E400CF042C020E030E0A901C701B6010E94C5 -S1130E50D20A1816DCF4B401990C880B990B0E9481 -S1130E60220A9B01AC01C701B6010E9406096B016D -S1130E707C01B501BB0C880B990B0E94220A9B01D3 -S1130E80AC01C701B6010E94070918C0B401990C4E -S1130E90880B990B0E94220AA70196010E94070958 -S1130EA06B017C01B501BB0C880B990B0E94220AD3 -S1130EB09B01AC01C701B6010E940609ED81FE81C8 -S1130EC0658F768F878F90A3ED81FE81858C968CBC -S1130ED0A78CB0A02081318142815381C501B40126 -S1130EE00E94D70A6B017C01ED81FE8165897689B8 -S1130EF0072E000C880B990B0E94220A9B01AC015F -S1130F00C701B6010E94730988231CF5ED81FE8197 -S1130F106789708D072E000C880B990B0E94220A9A -S1130F209B01AC01C701B6010E94D20A18168CF4C9 -S1130F30A5019401ED81FE8161A172A183A194A117 -S1130F400E940709ED81FE8161A372A383A394A388 -S1130F5006C0ED81FE8111A212A213A214A2ED819A -S1130F60FE81448455846684778421A132A143A1FF -S1130F7054A164817581868197810E94D70AA30157 -S1130F8092010E94D70A69837A838B839C83ED81C3 -S1130F90FE81218D328D438D548DC501B4010E9493 -S1130FA00609A30192010E9478090E94EA098D8131 -S1130FB09E818F960E94E203BC01990F880B990BC6 -S1130FC00E94220AED81FE81208531854285538568 -S1130FD00E94D70A0E94EA09072E000C880B990B7D -S1130FE00E94220A4B015C01ED81FE81658D768DA4 -S1130FF0878D90A1618F728F838F948F0E94EA09ED -S11310009B01772324F422273327261B370BB901AE -S1131010330F880B990B0E94220AED81FE8121A5D2 -S113102032A543A554A50E947309882344F4ED8195 -S1131030FE8185A596A5019685A796A704C0ED8196 -S1131040FE8115A616A629813A814B815C81C701D0 -S1131050B6010E940709A50194010E940709B62E52 -S1131060A72E982E892EED81FE816789708D072E1B -S1131070000C880B990B0E94220AD62EE72EF82E1C -S1131080C92E262F372F482F592F6B2D7A2D892DB6 -S1131090982D0E9473098823F4F0ED81FE816589FF -S11310A07689072E000C880B990B0E94220AD62EF3 -S11310B0E72EF82EC92E262F372F482F592F6B2DA8 -S11310C07A2D892D982D0E94D20A181624F0DB2C33 -S11310D0EA2CF92CC82C6D2D7E2D8F2D9C2D269657 -S11310E0CDBFDEBFDF91CF91FF90EF90DF90CF9027 -S11310F0BF90AF909F908F907F906F905F904F9034 -S11311000895FC0145A356A367A370A70895CF9340 -S1131110DF93EC016DA57EA5072E000C880B990BBF -S11311200E94220A2C853D854E855F850E94D70A40 -S1131130C1E02AE939E949E15EE30E94D20A1816BE -S11311400CF0C0E08C2FDF91CF9108958F929F9285 -S1131150AF92BF92CF92DF92EF92FF920F931F93C1 -S1131160CF93DF93CDB7DEB7FC0140835183628315 -S113117073830483158326833783C086D186E286EE -S1131180F38684869586A686B7868089988990FB9F -S113119080F9808B89899A89838B948B8B899C892C -S11311A0818B928B8D899E89878B908F8F89988D67 -S11311B0858B968B118E128E138E148E158E168E31 -S11311C0178E10A211A212A213A214A215A216A283 -S11311D017A210A680E090E0A8E4B2E481A792A749 -S11311E0A3A7B4A715A616A6698DCF018F960E9452 -S11311F01104DF91CF911F910F91FF90EF90DF9039 -S1131200CF90BF90AF909F908F9008955058BB2778 -S1131210AA270E941E090C94980A0E948A0A38F090 -S11312200E94910A20F039F49F3F19F426F40C949B -S1131230870A0EF4E095E7FB0C94810AE92F0E94DB -S1131240A90A58F3BA17620773078407950720F0B1 -S113125079F4A6F50C94CB0A0EF4E0950B2EBA2F74 -S1131260A02D0B01B90190010C01CA01A0011124A8 -S1131270FF27591B99F0593F50F4503E68F11A1654 -S1131280F040A22F232F342F4427585FF3CF4695E5 -S113129037952795A795F0405395C9F77EF41F1607 -S11312A0BA0B620B730B840BBAF09150A1F0FF0FD1 -S11312B0BB1F661F771F881FC2F70EC0BA0F621FBD -S11312C0731F841F48F4879577956795B795F795AD -S11312D09E3F08F0B0CF9395880F08F09927EE0F42 -S11312E09795879508950E945D0A08F481E0089512 -S11312F00E948C090C94980A0E94910A58F00E944A -S11313008A0A40F029F45F3F29F00C94810A5111B4 -S11313100C94CC0A0C94870A0E94A90A68F39923B6 -S1131320B1F3552391F3951B550BBB27AA276217DD -S11313307307840738F09F5F5F4F220F331F441FEA -S1131340AA1FA9F335D00E2E3AF0E0E832D091501E -S11313505040E695001CCAF72BD0FE2F29D0660F0B -S1131360771F881FBB1F261737074807AB07B0E84E -S113137009F0BB0B802DBF01FF2793585F4F3AF054 -S11313809E3F510578F00C94810A0C94CC0A5F3F7F -S1131390E4F3983ED4F3869577956795B795F795DA -S11313A09F5FC9F7880F911D9695879597F90895C2 -S11313B0E1E0660F771F881FBB1F6217730784075E -S11313C0BA0720F0621B730B840BBA0BEE1F88F76D -S11313D0E09508950E94F1096894B1110C94CC0A27 -S11313E008950E94B10A88F09F5798F0B92F992761 -S11313F0B751B0F0E1F0660F771F881F991F1AF0FC -S1131400BA95C9F714C0B13091F00E94CB0AB1E08B -S113141008950C94CB0A672F782F8827B85F39F08A -S1131420B93FCCF3869577956795B395D9F73EF494 -S113143090958095709561957F4F8F4F9F4F08953C -S1131440E89409C097FB3EF490958095709561955A -S11314507F4F8F4F9F4F9923A9F0F92F96E9BB2710 -S11314609395F695879577956795B795F111F8CF8C -S1131470FAF4BB0F11F460FF1BC06F5F7F4F8F4FF7 -S11314809F4F16C0882311F096E911C0772321F0ED -S11314909EE8872F762F05C0662371F096E8862F85 -S11314A070E060E02AF09A95660F771F881FDAF7DC -S11314B0880F9695879597F90895990F0008550F09 -S11314C0AA0BE0E8FEEF16161706E807F907C0F0C6 -S11314D012161306E407F50798F0621B730B840BCE -S11314E0950B39F40A2661F0232B242B252B21F4A8 -S11314F008950A2609F4A140A6958FEF811D811D48 -S1131500089597F99F6780E870E060E008959FEF81 -S113151080EC089500240A94161617061806090686 -S1131520089500240A941216130614060506089555 -S1131530092E0394000C11F4882352F0BB0F40F4DD -S1131540BF2B11F460FF04C06F5F7F4F8F4F9F4F1D -S1131550089557FD9058440F551F59F05F3F71F09F -S11315604795880F97FB991F61F09F3F79F0879506 -S11315700895121613061406551FF2CF4695F1DF8F -S113158008C0161617061806991FF1CF869571051F -S1131590610508940895E894BB2766277727CB0153 -S11315A097F908950E945D0A08F48FEF08950E9448 -S11315B0EA0A0C94980A0E948A0A38F00E94910A56 -S11315C020F0952311F00C94810A0C94870A1124BD -S11315D00C94CC0A0E94A90A70F3959FC1F3950F4D -S11315E050E0551F629FF001729FBB27F00DB11DA3 -S11315F0639FAA27F00DB11DAA1F649F6627B00D33 -S1131600A11D661F829F2227B00DA11D621F739F1B -S1131610B00DA11D621F839FA00D611D221F749F29 -S11316203327A00D611D231F849F600D211D822F70 -S1131630762F6A2F11249F5750409AF0F1F0882397 -S11316404AF0EE0FFF1FBB1F661F771F881F9150C4 -S11316505040A9F79E3F510580F00C94810A0C94E8 -S1131660CC0A5F3FE4F3983ED4F38695779567956B -S1131670B795F795E7959F5FC1F7FE2B880F911DEE -S11316809695879597F90895AA1BBB1B51E107C04E -S1131690AA1FBB1FA617B70710F0A61BB70B881FFE -S11316A0991F5A95A9F780959095BC01CD0108958D -S11316B097FB072E16F4009407D077FD09D00E94FB -S11316C0440B07FC05D03EF4909581959F4F0895F7 -S10F16D0709561957F4F0895F894FFCF4A +S1130210B0E201C01D92AB38B207E1F70E9432058B +S11302200C94840B0C940000FB01DC016D937C9313 +S1130230119712964D935C93139781E0808388E025 +S1130240818380E1828387E084838FE1FA01808364 +S1130250276021830895CF93DF93FC01C281D3816A +S11302606D818C8170E0762F6627680F711D625E48 +S11302707740072E000C880B990B0E943A0A2DEC4C +S11302803CEC4CEA5FE30E94EF0A20E030E040E8F7 +S11302905FE30E948B098823B4F16D818C8170E047 +S11302A0762F6627680F711D625E7740072E000C5B +S11302B0880B990B0E943A0A2DEC3CEC4CEA5FE364 +S11302C00E94EF0A20E030EF4FE755E40E94EA0A6B +S11302D01816E4F06D818C8170E0762F6627680F24 +S11302E0711D625E7740072E000C880B990B0E94EB +S11302F03A0A2DEC3CEC4CEA5FE30E94EF0A0E94C0 +S1130300090ACB0105C081E090E002C08FEF9FE0B5 +S1130310DF91CF910895E0E5F0E083EC828388E0FB +S11303208083818183FFFDCFE0E5F0E083EC85836A +S1130330808180618083818184FFFDCF88ED84BFCB +S113034084E080934000089580FF09C0E0E2F3E078 +S1130350958190FFFDCF609338037093390381FF3B +S113036009C0E0E2F3E0858181FFFDCF60933A03A9 +S113037070933B030895CF93C82F88E080932203A2 +S1130380C23021F480E48093210307C0109221033A +S1130390C0FD03C0C1FF23C017C0E0E2F3E08081C9 +S11303A08560808360E070E081E00E94A401C1FF69 +S11303B016C0E0E2F3E080818960808360E070E051 +S11303C082E00E94A4010BC0E0E2F3E0808185603A +S11303D0808360E070E081E00E94A401EACFCF91C5 +S11303E00895E1E4F6E02081297F2083E0E4F6E04B +S11303F024E0218732E03287318B238721E0228B6E +S11304001092022010920320609304207093052020 +S113041080930620909307200895609102207091A4 +S11304200320072E000C880B990B0E943A0A209196 +S113043004203091052040910620509107200E940D +S1130440900908951F920F920FB60F9211248F9363 +S11304509F938091480682FD0AC08091022090916A +S113046003200A96809302209093032009C0809170 +S11304700220909103200A978093022090930320F6 +S11304809F918F910F900FBE0F901F9018951F9200 +S11304900F920FB60F9211248F939F938091480669 +S11304A081FF0AC080910220909103200A968093D4 +S11304B002209093032009C0809102209091032090 +S11304C00A9780930220909303209F918F910F901D +S11304D00FBE0F901F9018952F923F924F925F92EC +S11304E06F927F928F929F92AF92BF92CF92DF9240 +S11304F0EF92FF920F931F93CF93DF93EC019A0136 +S1130500AB0168A579A58AA59BA50E941E096B016C +S11305107C01688F798F8A8F9B8F288539854A85DE +S11305205B850E94EF0A2C8D3D8D4E8D5F8D0E9460 +S11305301F09162F072FB82EA92E9CA08DA03EA010 +S11305402FA0292D382D432D522D0E948B0988234D +S1130550A4F098A089A03AA02BA0292D382D432DD2 +S1130560522D612F702F8B2D9A2D0E94EA0A181696 +S113057024F0912E802E3B2C2A2C892D982DA32DEE +S1130580B22D8C8F9D8FAE8FBF8F288139814A8188 +S11305905B81C701B6010E94EF0A2B013C012C814B +S11305A03D814E815F81692D782D832D922D0E948E +S11305B0EF0A4B015C01CC8ADD8AEE8AFF8AC7010F +S11305C0B6010E94020A9B01772324F422273327D1 +S11305D0261B370BB901330F880B990B0E943A0A7B +S11305E02CA53DA54EA55FA50E948B09882334F454 +S11305F088A999A9019688AB99AB02C018AA19AA2F +S1130600A5019401C301B2010E941F09162F072FEF +S1130610B82EA92E6A897B89072E000C880B990BAA +S11306200E943A0AD62EE72EF82EC92E262F372FEF +S1130630482F592F612F702F8B2D9A2D0E948B09D3 +S11306408823E4F068897989072E000C880B990BBC +S11306500E943A0AD62EE72EF82EC92E262F372FBF +S1130660482F592F612F702F8B2D9A2D0E94EA0A43 +S1130670181624F0D12EE02EFB2CCA2C6D2D7E2DC5 +S11306808F2D9C2DDF91CF911F910F91FF90EF90B3 +S1130690DF90CF90BF90AF909F908F907F906F909E +S11306A05F904F903F902F900895FC0140A751A771 +S11306B062A773A70895FC0144A755A766A777A767 +S11306C00895CF93DF93EC0168A979A9072E000C54 +S11306D0880B990B0E943A0A288539854A855B85DF +S11306E00E94EF0AC1E02DEC3CEC4CEC5DE30E946F +S11306F0EA0A18160CF0C0E08C2FDF91CF91089510 +S11307002F923F924F925F926F927F928F929F921D +S1130710AF92BF92CF92DF92EF92FF920F931F930B +S1130720CF93DF93CDB7DEB73C01180129018E8941 +S11307309F89088D198DF3014083518362837383EC +S11307402482358246825782C086D186E286F38629 +S1130750A686B78684869586828B938B008B118BB5 +S1130760BC01990F880B990B0E943A0AA2019101CE +S11307700E949009F30164A375A386A397A3B8010B +S1130780110F880B990B0E943A0AA20191010E9451 +S11307909009F30160A371A382A393A3148A158A19 +S11307A0168A178A108E118E128E138E148E158E41 +S11307B0168E178E10A611A612A613A680E090E03E +S11307C0A0EAB1E484A795A7A6A7B7A710AA11AA7F +S11307D0DF91CF911F910F91FF90EF90DF90CF9019 +S11307E0BF90AF909F908F907F906F905F904F904D +S11307F03F902F900895CF92DF92EF92FF920F9344 +S11308001F93CF93DF938C01EB01FC016181728113 +S1130810072E000C880B990B0E943A0A26EF38E247 +S11308204CE75FE30E94EF0A6B017C01BE01DD0F20 +S1130830880B990B0E943A0A2FE832EC45E75CE3F7 +S11308400E94EF0A9B01AC01C701B6010E941F0977 +S11308500E94020AF80161837283CB01DF91CF9178 +S11308601F910F91FF90EF90DF90CF900895FC01BE +S11308701182128260830895FC01838184FF09C080 +S1130880A081B181D9967C930190F081E02D60AF75 +S1130890089585FF09C0A081B181DB967C93019006 +S11308A0F081E02D62AF089586FF09C0A081B18177 +S11308B0DD967C930190F081E02D64AF0895882348 +S11308C044F4A081B181DF967C930190F081E02D06 +S11308D066AF0895CF92DF92EF92FF92CF93DF93AA +S11308E0EC016A017B0120E030E0A901C701B601F7 +S11308F00E948B098823ACF020E030E048EC52E4FD +S1130900C701B6010E94EA0A18167CF020E030E024 +S113091048EC52E4C701B6010E9490096B017C01C6 +S11309200CC0C12CD12C760108C00F2EC12CD12CA7 +S1130930F0E8EF2EFFE3FF2EF02D60910820709178 +S1130940092080E090E00E94380AA70196010E94E5 +S1130950EF0A0E94090ACE010E943C04DF91CF9164 +S1130960FF90EF90DF90CF900895EF92FF920F9356 +S11309701F93CF93DF93FC01EB01C801B701C08340 +S1130980D1834283238304831583E682F7824883D9 +S1130990236029830E945C0B6093082070930920D4 +S11309A06EAB7FAB60E070E0CF010E943C0480E05E +S11309B090E0DF91CF911F910F91FF90EF900895F8 +S11309C0CF93DF93EC01CB01688379834A835B8304 +S11309D02C833D830E94E6068A819B810E94EE0659 +S11309E0DF91CF910895CF92DF92EF92FF92CF9350 +S11309F0DF93EC016A017B0120E030E0A901C7012B +S1130A00B6010E948B0988236CF4F7FAF094F7F886 +S1130A10F094888199810E94E6068A819B810E94D4 +S1130A20EE0608C08A819B810E94E606888199812E +S1130A300E94EE06B701A6018C819D810E946A0482 +S1130A40DF91CF91FF90EF90DF90CF900895E0E495 +S1130A50F8E081E0808380EC86AB8DE587AB82E0B3 +S1130A60868308950E948B017894E0EAF0E0828105 +S1130A7087608283E0E8F6E081818C60818382E094 +S1130A800E94BB0160E070E080E89FE30E94F101F6 +S1130A90E0E4F6E0818181608183E1E4F6E0808135 +S1130AA080628083E5E4F6E080818062808301E0F7 +S1130AB021E040E160E476E084E890E20E94D70619 +S1130AC020E048E060E476E080E490E20E94D7060B +S1130AD00F2EFAE0EF2EF12CF02D00E81BEB20E1B5 +S1130AE041E060E078E08AE490E20E94B5042AE400 +S1130AF030E240E450E264E870E284E490E20E9470 +S1130B00E004E2E2F6E080818160808320E040E658 +S1130B1052E060E472E08AE090E20E9414011F92C5 +S1130B2084E68F931F921F920F2EF8E88F2EF3E125 +S1130B309F2EF02DA12CB12C0F2EFFE6CF2EF2E12B +S1130B40DF2EF3E0EF2EFAE3FF2EF02D00E010E0AD +S1130B5020E031E440E050E060E070E482E590E2BF +S1130B600E94800340E050E06AEF73E482E590E283 +S1130B700E94550340E050E068E472E482E590E2AC +S1130B800E945B0366E088E890E20E94370486E0F6 +S1130B908F9381E08F938CE28F938EEF8F9384ED0C +S1130BA08F931F921F921F921F921F920F2EFCEA87 +S1130BB08F2EF5EC9F2EF7E2AF2EF9E3BF2EF02D2A +S1130BC0C12CD12C76019701860140E050E060EA07 +S1130BD070E48EE090E20E94BE08E0E2F6E08181DB +S1130BE08C60818368EE73E08AE490E20E943C04A6 +S1130BF08CE08093810640E050E068E372E48EE08C +S1130C0090E20E9499080E9427058DB79EB70E9620 +S1130C108DBF9EBFFFCF1F920F920FB60F9211246C +S1130C200BB60F92CF92DF92EF92FF922F933F93E6 +S1130C304F935F936F937F938F939F93AF93BF93E0 +S1130C40CF93DF93EF93FF93809100209091012045 +S1130C500196809300209093012068EE73E00E9437 +S1130C60700B892B19F484E0809383068EE090E264 +S1130C700E949F08882309F120E030E04AEF53E402 +S1130C8060913320709134208091352090913620EA +S1130C900E948B09811109C040E050E060EF71E4CB +S1130CA08EE090E20E94990808C040E050E06AEFAC +S1130CB073E48EE090E20E9499080E940D02AB0159 +S1130CC0BC018EE090E20E94F60640E050E068EC41 +S1130CD072E482E590E20E94550382E590E20E946C +S1130CE06103882321F088E08093860603C088E0AE +S1130CF0809385068AE090E20E942B01BC0180E08B +S1130D0090E00E94380A20E030E048EB50E40E9472 +S1130D10EF0A0E94020A6B017C0188E890E20E94BB +S1130D20FB03EC01BC0180E090E00E94380AAB01B7 +S1130D30BC0182E590E20E946C02B601660F771F47 +S1130D40C60ED71ECC0CDD1CB60164597D4F82E063 +S1130D500E94A401BE01660F771F6C0F7D1F660FF2 +S1130D60771F64597D4F81E00E94A40140E050E068 +S1130D7060E272E484E490E20E94F304FF91EF9154 +S1130D80DF91CF91BF91AF919F918F917F916F919F +S1130D905F914F913F912F91FF90EF90DF90CF9013 +S1130DA00F900BBE0F900FBE0F901F9018950F93CE +S1130DB0FC016083718342832383002319F0FB01C8 +S1130DC0418302C0FB0142830F910895DC01ED9140 +S1130DD0FC91119712968C9185830895DC01ED9115 +S1130DE0FC91119712968C91868308954F925F928D +S1130DF06F927F928F929F92AF92BF92CF92DF9227 +S1130E00EF92FF92CF93DF9300D000D0CDB7DEB73F +S1130E108D839E839A01AB01FC0165A176A187A114 +S1130E2090A50E941E096B017C01ED81FE81658FF6 +S1130E30768F878F90A3808980FF5EC08188928897 +S1130E40A388B488C701B6010E94020A9B017723D4 +S1130E5024F422273327261B370BA4014A195B09E4 +S1130E60CA0199230CF401969595879582179307E7 +S1130E700CF042C020E030E0A901C701B6010E9495 +S1130E80EA0A1816DCF4B401990C880B990B0E9439 +S1130E903A0A9B01AC01C701B6010E941E096B010D +S1130EA07C01B501BB0C880B990B0E943A0A9B018B +S1130EB0AC01C701B6010E941F0918C0B401990C06 +S1130EC0880B990B0E943A0AA70196010E941F09F8 +S1130ED06B017C01B501BB0C880B990B0E943A0A8B +S1130EE09B01AC01C701B6010E941E09ED81FE8180 +S1130EF0658F768F878F90A3ED81FE81858C968C8C +S1130F00A78CB0A02081318142815381C501B401F5 +S1130F100E94EF0A6B017C01ED81FE81658976896F +S1130F20072E000C880B990B0E943A0A9B01AC0116 +S1130F30C701B6010E948B0988231CF5ED81FE814F +S1130F406789708D072E000C880B990B0E943A0A52 +S1130F509B01AC01C701B6010E94EA0A18168CF481 +S1130F60A5019401ED81FE8161A172A183A194A1E7 +S1130F700E941F09ED81FE8161A372A383A394A340 +S1130F8006C0ED81FE8111A212A213A214A2ED816A +S1130F90FE81448455846684778421A132A143A1CF +S1130FA054A164817581868197810E94EF0AA3010F +S1130FB092010E94EF0A69837A838B839C83ED817B +S1130FC0FE81218D328D438D548DC501B4010E9463 +S1130FD01E09A30192010E9490090E94020A8D81B8 +S1130FE09E818F960E94FB03BC01990F880B990B7D +S1130FF00E943A0AED81FE81208531854285538520 +S11310000E94EF0A0E94020A072E000C880B990B1B +S11310100E943A0A4B015C01ED81FE81658D768D5B +S1131020878D90A1618F728F838F948F0E94020AA3 +S11310309B01772324F422273327261B370BB9017E +S1131040330F880B990B0E943A0AED81FE8121A58A +S113105032A543A554A50E948B09882344F4ED814D +S1131060FE8185A596A5019685A796A704C0ED8166 +S1131070FE8115A616A629813A814B815C81C701A0 +S1131080B6010E941F09A50194010E941F09B62EF2 +S1131090A72E982E892EED81FE816789708D072EEB +S11310A0000C880B990B0E943A0AD62EE72EF82ED4 +S11310B0C92E262F372F482F592F6B2D7A2D892D86 +S11310C0982D0E948B098823F4F0ED81FE816589B7 +S11310D07689072E000C880B990B0E943A0AD62EAB +S11310E0E72EF82EC92E262F372F482F592F6B2D78 +S11310F07A2D892D982D0E94EA0A181624F0DB2CEB +S1131100EA2CF92CC82C6D2D7E2D8F2D9C2D269626 +S1131110CDBFDEBFDF91CF91FF90EF90DF90CF90F6 +S1131120BF90AF909F908F907F906F905F904F9003 +S11311300895FC0145A356A367A370A70895CF9310 +S1131140DF93EC016DA57EA5072E000C880B990B8F +S11311500E943A0A2C853D854E855F850E94EF0AE0 +S1131160C1E02AE939E949E15EE30E94EA0A181676 +S11311700CF0C0E08C2FDF91CF9108958F929F9255 +S1131180AF92BF92CF92DF92EF92FF920F931F9391 +S1131190CF93DF93CDB7DEB7FC01408351836283E5 +S11311A073830483158326833783C086D186E286BE +S11311B0F38684869586A686B7868089988990FB6F +S11311C080F9808B89899A89838B948B8B899C89FC +S11311D0818B928B8D899E89878B908F8F89988D37 +S11311E0858B968B118E128E138E148E158E168E01 +S11311F0178E10A211A212A213A214A215A216A253 +S113120017A210A680E090E0A8E4B2E481A792A718 +S1131210A3A7B4A715A616A6698DCF018F960E9421 +S11312203704DF91CF911F910F91FF90EF90DF90E2 +S1131230CF90BF90AF909F908F9008955058BB2748 +S1131240AA270E9436090C94B00A0E94A20A38F018 +S11312500E94A90A20F039F49F3F19F426F40C9453 +S11312609F0A0EF4E095E7FB0C94990AE92F0E947B +S1131270C10A58F3BA17620773078407950720F069 +S113128079F4A6F50C94E30A0EF4E0950B2EBA2F2C +S1131290A02D0B01B90190010C01CA01A001112478 +S11312A0FF27591B99F0593F50F4503E68F11A1624 +S11312B0F040A22F232F342F4427585FF3CF4695B5 +S11312C037952795A795F0405395C9F77EF41F16D7 +S11312D0BA0B620B730B840BBAF09150A1F0FF0FA1 +S11312E0BB1F661F771F881FC2F70EC0BA0F621F8D +S11312F0731F841F48F4879577956795B795F7957D +S11313009E3F08F0B0CF9395880F08F09927EE0F11 +S11313109795879508950E94750A08F481E00895C9 +S11313200E94A4090C94B00A0E94A90A58F00E94D1 +S1131330A20A40F029F45F3F29F00C94990A511154 +S11313400C94E40A0C949F0A0E94C10A68F399233E +S1131350B1F3552391F3951B550BBB27AA276217AD +S11313607307840738F09F5F5F4F220F331F441FBA +S1131370AA1FA9F335D00E2E3AF0E0E832D09150EE +S11313805040E695001CCAF72BD0FE2F29D0660FDB +S1131390771F881FBB1F261737074807AB07B0E81E +S11313A009F0BB0B802DBF01FF2793585F4F3AF024 +S11313B09E3F510578F00C94990A0C94E40A5F3F1F +S11313C0E4F3983ED4F3869577956795B795F795AA +S11313D09F5FC9F7880F911D9695879597F9089592 +S11313E0E1E0660F771F881FBB1F6217730784072E +S11313F0BA0720F0621B730B840BBA0BEE1F88F73D +S1131400E09508950E94090A6894B1110C94E40AC5 +S113141008950E94C90A88F09F5798F0B92F992718 +S1131420B751B0F0E1F0660F771F881F991F1AF0CB +S1131430BA95C9F714C0B13091F00E94E30AB1E043 +S113144008950C94E30A672F782F8827B85F39F042 +S1131450B93FCCF3869577956795B395D9F73EF464 +S113146090958095709561957F4F8F4F9F4F08950C +S1131470E89409C097FB3EF490958095709561952A +S11314807F4F8F4F9F4F9923A9F0F92F96E9BB27E0 +S11314909395F695879577956795B795F111F8CF5C +S11314A0FAF4BB0F11F460FF1BC06F5F7F4F8F4FC7 +S11314B09F4F16C0882311F096E911C0772321F0BD +S11314C09EE8872F762F05C0662371F096E8862F55 +S11314D070E060E02AF09A95660F771F881FDAF7AC +S11314E0880F9695879597F90895990F0008550FD9 +S11314F0AA0BE0E8FEEF16161706E807F907C0F096 +S113150012161306E407F50798F0621B730B840B9D +S1131510950B39F40A2661F0232B242B252B21F477 +S113152008950A2609F4A140A6958FEF811D811D17 +S1131530089597F99F6780E870E060E008959FEF51 +S113154080EC089500240A94161617061806090656 +S1131550089500240A941216130614060506089525 +S1131560092E0394000C11F4882352F0BB0F40F4AD +S1131570BF2B11F460FF04C06F5F7F4F8F4F9F4FED +S1131580089557FD9058440F551F59F05F3F71F06F +S11315904795880F97FB991F61F09F3F79F08795D6 +S11315A00895121613061406551FF2CF4695F1DF5F +S11315B008C0161617061806991FF1CF86957105EF +S11315C0610508940895E894BB2766277727CB0123 +S11315D097F908950E94750A08F48FEF08950E9400 +S11315E0020B0C94B00A0E94A20A38F00E94A90AC5 +S11315F020F0952311F00C94990A0C949F0A11245D +S11316000C94E40A0E94C10A70F3959FC1F3950FEC +S113161050E0551F629FF001729FBB27F00DB11D72 +S1131620639FAA27F00DB11DAA1F649F6627B00D02 +S1131630A11D661F829F2227B00DA11D621F739FEB +S1131640B00DA11D621F839FA00D611D221F749FF9 +S11316503327A00D611D231F849F600D211D822F40 +S1131660762F6A2F11249F5750409AF0F1F0882367 +S11316704AF0EE0FFF1FBB1F661F771F881F915094 +S11316805040A9F79E3F510580F00C94990A0C94A0 +S1131690E40A5F3FE4F3983ED4F386957795679523 +S11316A0B795F795E7959F5FC1F7FE2B880F911DBE +S11316B09695879597F90895AA1BBB1B51E107C01E +S11316C0AA1FBB1FA617B70710F0A61BB70B881FCE +S11316D0991F5A95A9F780959095BC01CD0108955D +S11316E097FB072E16F4009407D077FD09D00E94CB +S11316F05C0B07FC05D03EF4909581959F4F0895AF +S10F1700709561957F4F0895F894FFCF19 S9030000FC diff --git a/PIDMotorController/PIDMotorController/Debug/RPID.o b/PIDMotorController/PIDMotorController/Debug/RPID.o index 77a5163281941354efadb4837e0f77f0981c1195..25d005179c5dbe3d3b8f785ab4d82a5a26f0b92d 100644 Binary files a/PIDMotorController/PIDMotorController/Debug/RPID.o and b/PIDMotorController/PIDMotorController/Debug/RPID.o differ diff --git a/PIDMotorController/PIDMotorController/Debug/current_controller.o b/PIDMotorController/PIDMotorController/Debug/current_controller.o index 16f67e9218c01b75dff3d0f15d8ab67dc7bd398f..cc052fc7f289fdb288f1549fb508f7337bf39a7e 100644 Binary files a/PIDMotorController/PIDMotorController/Debug/current_controller.o and b/PIDMotorController/PIDMotorController/Debug/current_controller.o differ diff --git a/PIDMotorController/PIDMotorController/Debug/l_filter.o b/PIDMotorController/PIDMotorController/Debug/l_filter.o index d1ac247ee8022188bc31f29f694fc1326131cbdf..4c0979e628f44ffc8768b9078ce15ef1aba68093 100644 Binary files a/PIDMotorController/PIDMotorController/Debug/l_filter.o and b/PIDMotorController/PIDMotorController/Debug/l_filter.o differ diff --git a/PIDMotorController/PIDMotorController/Debug/main.o b/PIDMotorController/PIDMotorController/Debug/main.o index bb9991553e5085c8d9fcab692e0b3f73260225d6..37e7800727c815a76243476e45d391dd00e58cbe 100644 Binary files a/PIDMotorController/PIDMotorController/Debug/main.o and b/PIDMotorController/PIDMotorController/Debug/main.o differ diff --git a/PIDMotorController/PIDMotorController/Debug/motor.o b/PIDMotorController/PIDMotorController/Debug/motor.o index d0d8a3d84da96fe20a0b1b84ae9436f72db34a35..51eae610878c6c488f955e267607af86c66b793a 100644 Binary files a/PIDMotorController/PIDMotorController/Debug/motor.o and b/PIDMotorController/PIDMotorController/Debug/motor.o differ diff --git a/PIDMotorController/PIDMotorController/Debug/pwm.o b/PIDMotorController/PIDMotorController/Debug/pwm.o index ba7979d92d74bd3c0a35b40d360482b62d52e3d4..432faec90e0ebfe4ebeb9ac9afb070aaf505d149 100644 Binary files a/PIDMotorController/PIDMotorController/Debug/pwm.o and b/PIDMotorController/PIDMotorController/Debug/pwm.o differ diff --git a/PIDMotorController/PIDMotorController/Debug/r_adc.o b/PIDMotorController/PIDMotorController/Debug/r_adc.o index 603bde618651e089d61ea3e50ec91777a2fd66d6..2322b15bb834af0304dc2f9e61743f92f91f4a33 100644 Binary files a/PIDMotorController/PIDMotorController/Debug/r_adc.o and b/PIDMotorController/PIDMotorController/Debug/r_adc.o differ diff --git a/PIDMotorController/PIDMotorController/RBasic.h b/PIDMotorController/PIDMotorController/RBasic.h index c6cb3fabaa589548575df4f40d6f69acb51481a9..391054608ed216fcf79cbc65df91d705308f9f8a 100644 --- a/PIDMotorController/PIDMotorController/RBasic.h +++ b/PIDMotorController/PIDMotorController/RBasic.h @@ -9,7 +9,7 @@ #ifndef RBasic_H_ #define RBasic_H_ -#define CONSTRAIN(a, min,max) (a<min? min: a>max? max: a) +#define CONSTRAIN(a, min,max) (a<min? min: (a>max? max: a)) #define MAP(a,in_min, in_max, out_min, out_max) ((a-in_min)*(out_max-out_min/in_max-in_min) + out_min) diff --git a/PIDMotorController/PIDMotorController/current_controller.c b/PIDMotorController/PIDMotorController/current_controller.c index f166bcc438adb401c5c2f5a285da181112449959..2a144ec16f96610a0bf182fd2f4f0d20e0045e57 100644 --- a/PIDMotorController/PIDMotorController/current_controller.c +++ b/PIDMotorController/PIDMotorController/current_controller.c @@ -69,7 +69,7 @@ cc->currentError=0; cc->totalError=0; cc->setpoint=0; - cc->acceptableRange=30; + cc->acceptableRange=20; cc->onTargetTicks=0; } \ No newline at end of file diff --git a/PIDMotorController/PIDMotorController/l_filter.c b/PIDMotorController/PIDMotorController/l_filter.c index bb9889f3594e04a32ca1b5d3abb9042638cc6eba..36e25c40563e3543c502ebc123e180d747cc12e7 100644 --- a/PIDMotorController/PIDMotorController/l_filter.c +++ b/PIDMotorController/PIDMotorController/l_filter.c @@ -8,8 +8,9 @@ #include "l_filter.h" #include <avr/io.h> - uint16_t l_filter(l_filter_t *filter, int input){ - filter->filter_reg = (filter->filter_reg) - ((filter->filter_reg) >> filter->K) +(input>>filter->K); // y(n) = (1-2^-k)(y(n-1)) + (2^-k)(x(n)) + int l_filter(l_filter_t *filter, int input){ + //filter->filter_reg = (filter->filter_reg) - ((filter->filter_reg) >> filter->K) +(input>>filter->K); // y(n) = (1-2^-k)(y(n-1)) + (2^-k)(x(n)) + filter->filter_reg = filter->filter_reg*0.985 + 0.015*input; return filter->filter_reg; }; diff --git a/PIDMotorController/PIDMotorController/l_filter.h b/PIDMotorController/PIDMotorController/l_filter.h index b94a578f1481b898536c24dd9783d0583480f835..be74625a264ff5c32048eea864b68a25dd74a845 100644 --- a/PIDMotorController/PIDMotorController/l_filter.h +++ b/PIDMotorController/PIDMotorController/l_filter.h @@ -13,11 +13,11 @@ typedef struct{ uint8_t K; - int32_t filter_reg; + int filter_reg; }l_filter_t; void l_filter_init(l_filter_t *filter, uint8_t K); -uint16_t l_filter(l_filter_t *filter, int input); +int l_filter(l_filter_t *filter, int input); #endif // L_FILTER_H_ \ No newline at end of file diff --git a/PIDMotorController/PIDMotorController/main.c b/PIDMotorController/PIDMotorController/main.c index 8334004f522d55608257523ae7a3bb67ae465adc..c90aa39f720e8939a9693f36fab035fc6be64f90 100644 --- a/PIDMotorController/PIDMotorController/main.c +++ b/PIDMotorController/PIDMotorController/main.c @@ -43,7 +43,7 @@ int main(void) sei(); PMIC.CTRL |= PMIC_LOLVLEN_bm | PMIC_MEDLVLEN_bm | PMIC_HILVLEN_bm; - PORTE.DIRSET |= PIN3_bm; + PORTE.DIRSET |= PIN3_bm | PIN2_bm; @@ -54,13 +54,16 @@ int main(void) //initialize motor H bridge pins PORTC.DIRSET |= PIN0_bm || PIN4_bm || PIN3_bm; + PORTC_DIRSET |= PIN5_bm; + PORTC_OUTSET |= PIN5_bm; pin_init(&M_INA, &PORTC, PIN4_bm,1,1); pin_init(&M_INB, &PORTC, PIN3_bm,0,1); - pwm_init(&M_PWM, &TCC0,TC_CLKSEL_DIV1_gc,TC0_CCAEN_bm,48000,20); + pwm_init(&M_PWM, &TCC0,TC_CLKSEL_DIV1_gc,TC0_CCAEN_bm,48000,10); motor_init(&M_1,&M_INA,&M_INB,&M_PWM); //initialize current controller + PORTB_DIRCLR |= PIN0_bm; r_adc_init(&ADC_CS, &ADCB, &ADCB.CH0, ADC_CH_MUXPOS_PIN0_gc); currentc_init(&CC, 2.0,8.0,0.0005,0,5000,0,100); currentc_setSetpoint(&CC, OTHERSETPOINT); @@ -71,7 +74,7 @@ int main(void) //initialize PID - RPID_init(&M_1_pid,20,5.0, 0.0 ,0.00016,0, 0,0,-300,300, 6); + RPID_init(&M_1_pid,5.0,0.0, 0.0 ,0.00016,0, 0,0,-300,300, 6); //initialize debugging DACs PORTB.DIRSET |= PIN2_bm | PIN3_bm; @@ -129,21 +132,22 @@ ISR(TCC1_OVF_vect){ //set_dac(ATK_DAC_CHANNEL_0, M_1_pid.setpoint); - set_dac(ATK_DAC_CHANNEL_0, ATK_EN_getValue() +256); + //set_dac(ATK_DAC_CHANNEL_0, ATK_EN_getValue() +256); //set_dac(ATK_DAC_CHANNEL_1, M_1_pid.setpoint + 256); //set_dac(ATK_DAC_CHANNEL_1, CC.setpoint); //16.8763 degrees to side 977 ticks per rev 2.7ticks per degree 36 is 0 degree 290 is 90deg if(RPID_onTarget(&M_1_pid)){ - PORTE_DIRTGL = PIN3_bm; + //PORTE_DIRTGL = PIN3_bm; if(M_1_pid.setpoint == OTHERSETPOINT){ - RPID_setSetpoint(&M_1_pid, 30); - }else{ + RPID_setSetpoint(&M_1_pid, 30); + }else{ RPID_setSetpoint(&M_1_pid, OTHERSETPOINT); } } double V_val = RPID_crunch(&M_1_pid, ATK_EN_getValue()); + V_val = 100; currentc_setSetpoint(&CC, abs(V_val)); //if(currentc_onTarget(&CC) ){ @@ -155,15 +159,29 @@ ISR(TCC1_OVF_vect){ //} //} + if(currentc_onTarget(&CC)){ + PORTE_OUTCLR = PIN3_bm; + }else{ + PORTE_OUTSET = PIN3_bm; + } //value of 4096 is 3.3v //uint16_t input = l_filter(&CS_filter, r_adc_scan(&ADC_CS)); - int input = l_filter(&CS_filter, r_adc_scan(&ADC_CS)*5.75);//3300mV/ 4096units * unitsmeasured / 0.140mV/mA == MilliAMPS being pulled - //input =150; + int unfiltered = r_adc_scan(&ADC_CS)*5.75; + uint16_t input = l_filter(&CS_filter, unfiltered);//3300mV/ 4096units * unitsmeasured / 0.140mV/mA == MilliAMPS being pulled + //int input =100; //set_dac(ATK_DAC_CHANNEL_0, input); double C_val = currentc_crunch(&CC, input);//value of 4096 is 3.3v - set_dac(ATK_DAC_CHANNEL_1, C_val*31 + 550); - motor_set(&M_1, V_val >0? C_val:-C_val); + //set_dac(ATK_DAC_CHANNEL_1, C_val*31 + 620);//1% = 25mV + set_dac(ATK_DAC_CHANNEL_1, unfiltered*6 + 620);//100mA = 250mV + set_dac(ATK_DAC_CHANNEL_0, input*6 + 620);//1mA = 5mV + //set_dac(ATK_DAC_CHANNEL_0, CONSTRAIN(-20, 0,4096)*20 +620); + //set_dac(ATK_DAC_CHANNEL_1, 620);//100mA = 250mV + + //motor_set(&M_1, C_val); //use for current control only mode + //motor_set(&M_1, V_val >0? C_val:-C_val);//use for position mode + motor_set(&M_1, 40); + //set_dac(ATK_DAC_CHANNEL_1, dac2); //set_dac(ATK_DAC_CHANNEL_1, input/5.75 + 124); diff --git a/PIDMotorController/PIDMotorController/motor.c b/PIDMotorController/PIDMotorController/motor.c index 05b6145a7f371d811e3e3c7fe978997e2319b4c5..07bf4efdb9c63735c55f7ffc178027105acb0844 100644 --- a/PIDMotorController/PIDMotorController/motor.c +++ b/PIDMotorController/PIDMotorController/motor.c @@ -13,6 +13,7 @@ void motor_init(motor_t *motor, pin_t *INA_pin, pin_t *INB_pin, pwm_t *PWM) { motor->INA_pin = INA_pin; motor->INB_pin = INB_pin; motor->PWM = PWM; + pin_set(motor->INA_pin); pin_clear(motor->INB_pin); diff --git a/PIDMotorController/PIDMotorController/r_adc.c b/PIDMotorController/PIDMotorController/r_adc.c index 1c794c5cb90cbeafdd0974f56f15bf093a59d1e2..483789cb7a43506a37fd2d1c4c515535b63a419d 100644 --- a/PIDMotorController/PIDMotorController/r_adc.c +++ b/PIDMotorController/PIDMotorController/r_adc.c @@ -15,17 +15,18 @@ //setup ADC adc->CTRLA= 1<<0;//enable ADC - adc->CTRLB= ADC_RESOLUTION_12BIT_gc; + adc->CTRLB= ADC_RESOLUTION_12BIT_gc | ADC_FREERUN_bm; adc->REFCTRL= ADC_REFSEL_INTVCC_gc; - adc->PRESCALER= ADC_PRESCALER_DIV128_gc; + adc->PRESCALER= ADC_PRESCALER_DIV512_gc; //setup ADCChannel ch->CTRL=ADC_CH_INPUTMODE_DIFFWGAIN_gc | ADC_CH_GAIN_DIV2_gc; ch->MUXCTRL = ADC_CH_MUXNEG_GND_MODE4_gc | posPin; + //ch->CTRL = ADC } uint16_t r_adc_scan(r_adc_t *r_adc){ - r_adc->ch->CTRL |= 1<<7; //start scan - while(r_adc->ch->CTRL & (1<<7));//wait for scan to end - return CONSTRAIN( ((r_adc->ch->RESH<<8) + r_adc->ch->RESL -2018)*1.35 , 0,4095); + //r_adc->ch->CTRL |= 1<<7; //start scan + //while(r_adc->ch->CTRL & (1<<7));//wait for scan to end + return CONSTRAIN( ((r_adc->ch->RESH<<8) + r_adc->ch->RESL -2018)*1.35 , 1,4095); } \ No newline at end of file