diff --git a/Binaries/OpenLog_v43.hex b/Binaries/OpenLog_v43.hex new file mode 100644 index 0000000..4a6fc99 --- /dev/null +++ b/Binaries/OpenLog_v43.hex @@ -0,0 +1,1703 @@ +:100000000C9442050C946A050C946A050C946A05DC +:100010000C946A050C946A050C946A050C946A05A4 +:100020000C946A050C946A050C946A050C946A0594 +:100030000C946A050C946A050C946A050C946A0584 +:100040000C94FE220C946A050C948B230C94482388 +:100050000C946A050C946A050C946A050C946A0564 +:100060000C946A050C946A05636172642E696E696A +:10007000740066696C652E6F70656E00726F6F74C8 +:100080002E696E697400766F6C756D652E696E6988 +:1000900074004572726F7220007E007E007E003C0C +:1000A00000626175642C6573636170652C657363B0 +:1000B000232C6D6F64652C766572622C6563686FA6 +:1000C0002C69676E6F726552582C6D617846696C49 +:1000D0006573697A652C6D617846696C656E756DBE +:1000E0000000256C642C25642C25642C25642C25AB +:1000F000642C25642C25642C25642C256400006365 +:100100006F6E6669672E74787400002000626175F6 +:10011000640909093A204D656E7520746F20636F7C +:100120006E666967757265206261756420726174BC +:1001300065007365740909093A204D656E75207470 +:100140006F20636F6E66696775726520737973746B +:10015000656D206D6F6465007265736574090909CA +:100160003A2043617573657320756E697420746FEE +:100170002072657365742C207573657320706172CD +:10018000616D657465727320696E20636F6E666958 +:10019000672066696C65006469736B0909093A2018 +:1001A00053686F7773206361726420696E666F7243 +:1001B0006D6174696F6E0073697A65203C66696C65 +:1001C000653E09093A2057726974652073697A653A +:1001D000206F66203C66696C653E20746F207465F4 +:1001E000726D696E616C0072656164203C66696C59 +:1001F000653E203C73746172743E203C6C656E6792 +:1002000074683E203C747970653E3A204F75747076 +:10021000757473203C6C656E6774683E20627974F7 +:100220006573206F66203C66696C653E20746F20A4 +:10023000746865207465726D696E616C2073746199 +:100240007274696E67206174203C73746172743ECD +:100250002E204F6D6974203C73746172743E20616E +:100260006E64203C6C656E6774683E20746F20720B +:100270006561642077686F6C652066696C652E2007 +:100280003C747970653E2031207072696E74732001 +:10029000696E2041534349492C203220696E204821 +:1002A00045582E006C730909093A2053686F77731B +:1002B0002074686520636F6E74656E74206F6620AD +:1002C0007468652063757272656E74206469726506 +:1002D00063746F72792E2E006D64203C64697265C0 +:1002E00063746F72793E09093A20437265617465DF +:1002F000732061203C6469726563746F72793E009B +:10030000617070656E64203C66696C653E09093AEF +:1003100020417070656E6473207465787420746F0A +:1003200020656E64206F66203C66696C653E006ED9 +:100330006577203C66696C653E09093A2043726521 +:1003400061746573203C66696C653E004261736947 +:100350006320636F6D6D616E64733A0043757272F2 +:10036000656E742046696C654E756D6265723A20E3 +:10037000004F70656E4C6F672076342E330000009E +:100380000000250028002B000000000023002600AC +:10039000290000000008000201000003040700001B +:1003A000000000000000636F6E6669672E74787449 +:1003B00000003200310021546F6F206D616E792092 +:1003C0006C6F67733A3221004C4F47253035752EDC +:1003D000545854004C4F47253035752E545854000E +:1003E00021546F6F206D616E79206C6F67733A31A5 +:1003F00021004572726F72206372656174696E6765 +:10040000205345514C4F47005345514C4F473030D6 +:100410002E545854000062707300476F696E672055 +:10042000746F20004F7574206F6620626F756E6464 +:10043000730045786974696E67003E00456E7465A7 +:1004400072206E6577206261756420726174652028 +:100450002827782720746F2065786974293A00204E +:10046000627073000A0D43757272656E742072615A +:1004700074653A200045786974696E67000A0D4D0D +:100480006178696D756D2066696C656E756D626504 +:100490007220696E20726F74617465206D6F64657F +:1004A0003A20000A0D456E746572206D6178696DA1 +:1004B000756D206C6F672066696C65206E756D6266 +:1004C000657220696E20726F74617465206D6F644F +:1004D0006520283020746F20323535293A20000AF3 +:1004E0000D4D6178206C6F672066696C65207369BB +:1004F0007A6520696E20726F74617465206D6F6417 +:1005000065206E6F7720284D42293A20000A0D455C +:100510006E746572206D61782073697A65206F66EC +:10052000206C6F672066696C657320696E204D4290 +:1005300020283020746F20323534293A20000A0DEB +:100540004E756D626572206F6620657363617065BC +:100550002063686172616374657273206E6565649F +:1005600065643A20000A0D456E746572206E756DE3 +:10057000626572206F6620657363617065206368D1 +:10058000617261637465727320746F206C6F6F6B3E +:1005900020666F7220283020746F20323535293A5A +:1005A00020000A0D4E6577206573636170652063D6 +:1005B00068617261637465723A2000456E74657299 +:1005C0002061206E657720657363617065206368C4 +:1005D000617261637465723A20004E6577206669C6 +:1005E0006C65206E756D626572207265736574202E +:1005F000746F207A65726F00526F74617465206C3D +:100600006F6767696E6700436F6D6D616E64207020 +:10061000726F6D707400417070656E642066696CF5 +:1006200065206C6F6767696E67004E657720666945 +:100630006C65206C6F6767696E67003E00782920E3 +:1006400045786974003929204D61782066696C65A8 +:10065000206E756D62657220696E20726F746174B0 +:1006600065206D6F6465003829204D6178206669CA +:100670006C652073697A6520284D422920696E20B7 +:10068000726F74617465206D6F6465003729204E48 +:10069000756D626572206F66206573636170652099 +:1006A00063686172616374657273003629204573F3 +:1006B000636170652063686172616374657200359F +:1006C00029205265736574206E65772066696C65B4 +:1006D000206E756D626572003429204D6F6465204F +:1006E000746F20726F74617465206C6F6767696ED8 +:1006F00067003329204D6F646520746F20636F6D30 +:100700006D616E642070726F6D7074003229204DBF +:100710006F646520746F20617070656E6420666917 +:100720006C65206C6F6767696E67003129204D6FBB +:10073000646520746F206E65772066696C65206C37 +:100740006F6767696E67004368616E67653A002C82 +:100750002000526F74617465206D6F6465206D6157 +:10076000782066696C652073697A6520284D422976 +:1007700020616E64206D61782066696C6520636F0E +:10078000756E743A20002078200043757272656E91 +:10079000742065736361706520636861726163745E +:1007A000657220616E6420616D6F756E743A200011 +:1007B000526F7461746500436F6D6D616E640041CA +:1007C0007070656E642066696C65004E65772066A2 +:1007D000696C650043757272656E7420626F6F7428 +:1007E000206D6F64653A20000D0A53797374656D4E +:1007F00020436F6E66696775726174696F6E00750C +:100800006E6B6E6F776E20636F6D6D616E643A20F4 +:10081000006F6666006F6E0065656D006F6666004E +:100820006F6E00766572626F7365006F6666006F4B +:100830006E006563686F005468697320636F6D6D47 +:10084000616E6420686173206265656E2072656DFB +:100850006F7665640070776400617070656E640027 +:100860004572726F72206372656174696E6720668B +:10087000696C653A20006E65770072657365740077 +:1008800073796E63007265616443534420666169E5 +:100890006C656400204D4200436172642053697AA4 +:1008A000653A20002F004D616E7566616374757244 +:1008B000696E6720646174653A20005365726961EE +:1008C0006C206E756D6265723A20002E000A0D561E +:1008D000657273696F6E3A200050726F647563744D +:1008E0003A20004F454D2049443A20004D616E7535 +:1008F00066616374757265722049443A20007265BE +:100900006164434944206661696C656400556E6B9F +:100910006E6F776E00534448430053443200534493 +:1009200031000A4361726420747970653A20006472 +:1009300069736B002D310073697A65006572726F9F +:10094000722077726974696E6720746F2066696CB3 +:1009500065003C004572726F72207365656B696E4D +:100960006720746F20004661696C656420746F2095 +:100970006F70656E2066696C6520007772697465BA +:100980000020002E004572726F72207365656B69DE +:100990006E6720746F20004661696C656420746F17 +:1009A000206F70656E2066696C65200072656164F9 +:1009B000002E2E006364002066696C652873292070 +:1009C00064656C65746564002D726600726D004527 +:1009D00072726F72206372656174696E67206469F8 +:1009E000726563746F72793A20006D6400566F6CA3 +:1009F000756D6520697320464154006C7300736502 +:100A00007400626175640068656C70003F0046693F +:100A10006C652073797374656D20696E69746961A2 +:100A20006C697A656400436C6F73696E6720646FEC +:100A3000776E2066696C652073797374656D0069E3 +:100A40006E6974003E0021000000000024002700B1 +:100A50002A0001020408102040800102040810202E +:100A60000102040810200404040404040404020223 +:100A700002020202030303030303200020002F00ED +:100A80002000073011241FBECFEFD8E0DEBFCDBF5E +:100A900011E0A0E0B1E0E4E2FAE602C005900D92B8 +:100AA000A832B107D9F725E0A8E2B1E001C01D9254 +:100AB000AC3EB207E1F715E0C2E4D5E004C02197EF +:100AC000FE010E94CF34C134D107C9F70E94F82338 +:100AD0000C9410350C9400002FB7F8948091E60523 +:100AE0009091E7054091E8055091E905841B950B2D +:100AF0002FBF97FF06C02091EA053091EB05820FCA +:100B0000931F0895CF92DF92EF92FF926B017C01C9 +:100B10001092C10086E08093C20060E079E08DE32E +:100B200090E0A70196010E94A234C901213060E241 +:100B3000360730F4C11461EED606E104F104B1F4D5 +:100B40001092C000C901969587950197292F269587 +:100B50002093C500969587958093C40088E980937B +:100B6000C100FF90EF90DF90CF90089522E0209396 +:100B7000C000EBCF833081F028F4813099F08230CF +:100B8000A9F008958730A9F08830C9F08430B1F415 +:100B9000809180008F7D03C0809180008F7780934B +:100BA0008000089584B58F7784BD089584B58F7DC6 +:100BB000FBCF8091B0008F778093B0000895809133 +:100BC000B0008F7DF9CFCF93DF93282F30E0F9016C +:100BD000EE56FC4F8491F901EE5AF54FD491F9018C +:100BE000EA59F54FC491CC23A1F081110E94BA05B6 +:100BF000EC2FF0E0EE0FFF1FE857FC4FA591B491EA +:100C0000EC91ED2381E090E009F480E0DF91CF9159 +:100C1000089580E090E0FACF1F93CF93DF93282FC1 +:100C200030E0F901EE56FC4F8491F901EE5AF54F90 +:100C3000D491F901EA59F54FC491CC23A9F0162FAC +:100C400081110E94BA05EC2FF0E0EE0FFF1FE25871 +:100C5000FC4FA591B4918FB7F894EC91111108C095 +:100C6000D095DE23DC938FBFDF91CF911F91089544 +:100C7000DE2BF8CFCF93DF9390E0FC01EE5AF54FD7 +:100C800024918A59954FFC0184918823D1F090E0FA +:100C9000880F991FFC01E85BF54FA591B491FC0109 +:100CA000E258FC4FC591D49161110EC09FB7F894E2 +:100CB0008C91E22FE0958E238C932881E223E883A8 +:100CC0009FBFDF91CF9108958FB7F894EC91E22BFD +:100CD000EC938FBFF6CF3FB7F89480916501909168 +:100CE0006601A0916701B091680126B5A89B05C077 +:100CF0002F3F19F00196A11DB11D3FBFBA2FA92F9B +:100D0000982F8827BC01CD01620F711D811D911D97 +:100D100042E0660F771F881F991F4A95D1F7089503 +:100D20008F929F92AF92BF92CF92DF92EF92FF92FB +:100D30004B015C010E946B066B017C010E946B06FB +:100D40006C197D098E099F09683E734081059105E4 +:100D5000A8F321E0821A9108A108B10888EEC80E14 +:100D600083E0D81EE11CF11C81149104A104B1049C +:100D700029F7FF90EF90DF90CF90BF90AF909F90BA +:100D80008F9008952FB7F89460916101709162017E +:100D900080916301909164012FBF0895CF93DF93F9 +:100DA000EC01E981FA8120819181809156018823AB +:100DB00061F08FB7F89430915601313099F43DB31A +:100DC000309355013DB33DBB8FBF2CBD9DBDE98127 +:100DD000FA8160E082810E940C0681E08B83DF91C2 +:100DE000CF91089580935501F0CF8EBD0DB407FECD +:100DF000FDCF08958FEF8EBD0DB407FEFDCF8EB5EC +:100E000008950F931F93CF93DF93EC010E94C206C6 +:100E10008B010E94FA068F3F69F00E94C206601B98 +:100E2000710BC617D707A8F780E0DF91CF911F910C +:100E30000F91089581E0F9CFCF93DF93FC012381D7 +:100E40002223D1F0EC010180F281E02D61E082816A +:100E50000E940C068FEF0E94F506809156018823B0 +:100E600051F09FB7F894209156018091550121309F +:100E700031F48DBB9FBF1B82DF91CF9108958FBF4F +:100E8000FACFCF92DF92EF92FF920F931F93CF93FF +:100E9000DF93EC018B017A010E94C2066B010E9474 +:100EA000FA068C838F3FB1F40E94C2066C197D094B +:100EB000693E7340A0F385E58883CE010E941C073C +:100EC00080E0DF91CF911F910F91FF90EF90DF9025 +:100ED000CF9008958E3F11F080E5EECFE1E0EE1A5D +:100EE000F1088FEF8EBDF8012FEF0DB407FEFDCF97 +:100EF0008EB52EBD8193CF01801B910B8E159F0562 +:100F0000A0F30DB407FEFDCF8EB50E0D1F1DF80129 +:100F100080831C820E94FA060E94FA0681E0D1CFEB +:100F2000DF92EF92FF920F931F93CF93DF938C0189 +:100F3000C62FD22FF32EE42ED52EFC0183818111F2 +:100F400003C0C8010E94CE06CC2321F08CE291E0C0 +:100F50000E9401078C2F80640E94F5068D2D0E944F +:100F6000F5068E2D0E94F5068F2D0E94F5068D2F19 +:100F70000E94F50687E8C11101C085E90E94F506C7 +:100F80000E94FA06CBE00E94FA06F801848387FFEC +:100F900002C0C150C1F7DF91CF911F910F91FF9017 +:100FA000EF90DF900895CF93DF93EB0120E030E0E6 +:100FB000A901682F8DEC93E00E949007882349F0E7 +:100FC00083E58093CD038DEC93E00E941C07C0E085 +:100FD0000EC040E150E0BE018DEC93E00E9441075D +:100FE000C82F882381F38DEC93E00E941C078C2F7F +:100FF000DF91CF9108950F931F93CF93DF93EC016F +:1010000089018D81833039F089E0440F551F661FB7 +:10101000771F8A95D1F79A01AB0168E1CE010E9452 +:101020009007882319F082E3888339C08EEF0E94ED +:10103000F506F80180818EBD818132961E5F0DB468 +:1010400007FEFDCF8EBDE017F10711F08191F7CFBC +:101050000DB407FEFDCF8FEF0E94F5068FEF0E94C3 +:10106000F5060E94FA068C838F71853099F480ED25 +:1010700097E00E940107182F8AE51123A9F220E0CA +:1010800030E0A9016DE0CE010E949007882361F055 +:1010900089E2CACF87E58883CE010E941C07CE0172 +:1010A0000E941C0710E007C00E94FA068111F0CFD1 +:1010B000CE010E941C07812FDF91CF911F910F91CC +:1010C00008950F931F93CF93DF93EC0189018D81D6 +:1010D000833039F089E0440F551F661F771F8A95CA +:1010E000D1F79A01AB0161E1CE010E9490078823FC +:1010F00039F080E38883CE010E941C0710E00CC009 +:1011000040E052E0B801CE010E944107182F882329 +:1011100091F3CE010E941C07812FDF91CF911F9187 +:101120000F910895EF92FF921F93CF93DF93FC01ED +:10113000208111E020FF14C0EC017C01F7E0EF0EEC +:10114000F11C4B815C816D817E81E981FA8197017F +:10115000808191810E94FB07182F811108C010E047 +:10116000812FDF91CF911F91FF90EF90089588819B +:1011700081FD04C088818E7F8883F2CFE981FA8166 +:101180004B815C816D817E8184859585A685B7853F +:10119000480F591F6A1F7B1F9701808191810E9410 +:1011A000FB078111E7CFDBCFCF92DF92EF92FF9267 +:1011B0001F93CF93DF93EC016A017B01122F8B8188 +:1011C0009C81AD81BE818C159D05AE05BF05B1F03A +:1011D000CE010E94920881110AC090E080E0DF9168 +:1011E000CF911F91FF90EF90DF90CF90089512FF65 +:1011F0000CC01882CB82DC82ED82FE821370888163 +:10120000182B1883CE010796EACFE981FA819E0157 +:10121000295F3F4FB701A601808191810E9461083B +:101220008111E7CFDACF8F929F92AF92BF92CF9288 +:10123000DF92EF92FF920F931F9310928B0141E088 +:1012400050E060E070E040938E0150938F01609316 +:1012500090017093910126E831E03093A80120932A +:10126000A7011092A6014FEF5FEFBA014093A901C9 +:101270005093AA016093AB017093AC01882309F4E9 +:1012800050C020E040E050E0BA0186EA91E00E94C0 +:10129000D408009761F480E01F910F91FF90EF90C8 +:1012A000DF90CF90BF90AF909F908F900895FC01FA +:1012B000E254FE4F20812F7771F78A539E4FFC0135 +:1012C000C080D180E280F380C114D104E104F10434 +:1012D00011F320E0B701A60186EA91E00E94D4084C +:1012E000FC01892BC1F2838594858115924099F682 +:1012F0008089823081F686859785892B61F22585E4 +:10130000209388018FEF820F8093890180E091E024 +:10131000291769F08F5F893041F488E080938A0152 +:10132000BACFC12CD12C7601D4CF990FF1CF8093B5 +:101330008A014689578970E060E04115510521F422 +:1013400044A155A166A177A14093920150939301C6 +:101350006093940170939501268537854601570166 +:10136000820E931EA11CB11C80929A0190929B0147 +:10137000A0929C01B0929D012189328930938D0108 +:1013800020938C01440F551F661F771F480D591D70 +:101390006A1D7B1D4093A2015093A3016093A40199 +:1013A0007093A50121893289A5E0220F331FAA95E8 +:1013B000E1F721503E4F232F33272695420F531F2D +:1013C000611D711D409396015093970160939801A0 +:1013D000709399010389148930E020E0011511050B +:1013E00021F400A111A122A133A1C41AD50AE60A51 +:1013F000F70AC00ED11EE21EF31E04C0F694E79455 +:10140000D794C7948A95D2F7D701C6010196A11D3A +:10141000B11D80939E0190939F01A093A001B09372 +:10142000A10185EFC8168FE0D806E104F10420F48D +:101430008CE080938B012FCF80E125EFC2162FEF38 +:10144000D206E104F10468F084A595A5A6A5B7A588 +:101450008093A2019093A301A093A401B093A5014E +:1014600080E280938B0181E017CF8F929F92AF92A1 +:10147000BF92CF92DF92EF92FF920F931F93423071 +:1014800051056105710560F480E01F910F91FF9097 +:10149000EF90DF90CF90BF90AF909F908F90089586 +:1014A000FC01C08CD18CE28CF38CC416D506E60608 +:1014B000F70650F3480159016A017B0185818032AA +:1014C00041F584899589A689B78917E0769567954E +:1014D000579547951A95D1F7480F591F6A1F7B1FDB +:1014E00023E0CF0180960E94D408009769F2E89427 +:1014F000C7F8DD24EE24FF24CC0CDD1CCC0CDD1C55 +:101500008C0D9D1DFC0180829182A282B38281E0BC +:10151000BCCF803109F0B8CF448955896689778975 +:101520004D0D511D611D711D23E0CF0180960E945C +:10153000D408009709F4A8CFDD24EE24FF24CC0CB6 +:10154000DD1CC80ED91EF60111830083E0CFCF92B7 +:10155000DF92EF92FF920F931F93CF93DF9342306E +:1015600051056105710550F48FEFDF91CF911F9107 +:101570000F91FF90EF90DF90CF900895FC01C08C09 +:10158000D18CE28CF38CC416D506E606F70660F320 +:1015900089016A017B01EC0185818032B9F584897A +:1015A0009589A689B789E7E0769567955795479518 +:1015B000EA95D1F7480F591F6A1F7B1F22E0CE0121 +:1015C00080960E94D408009779F2E894C7F8DD2449 +:1015D000EE24FF24CC0CDD1CCC0CDD1C8C0D9D1DE1 +:1015E000FC0180819181A281B381BF70488D598DAA +:1015F0006A8D7B8D481759076A077B0738F1F80118 +:1016000080839183A283B38381E0AFCF803109F0DF +:10161000ABCF44895589668977894D0D511D611D70 +:10162000711D22E0CF0180960E94D408009709F432 +:101630009BCFDD24EE24FF24CC0CDD1CC80ED91E6C +:10164000F60180819181B0E0A0E0D0CF80E08DCF25 +:101650009F92AF92BF92CF92DF92EF92FF920F9341 +:101660001F93CF93DF9300D000D0CDB7DEB75C01DE +:101670006A017B0119821A821B821C829E012F5FE4 +:101680003F4FB701A601C5010E94A70A982E87FD0A +:1016900034C000E010E09801B701A601C5010E9426 +:1016A000350A882351F1F50140855185628573859E +:1016B0004C155D056E057F0550F0F1E0CF1AD1089D +:1016C000E108F108F501C086D186E286F386C9807B +:1016D000DA80EB80FC809110D1CF0F900F900F90AB +:1016E0000F90DF91CF911F910F91FF90EF90DF90BE +:1016F000CF90BF90AF909F90089580E0EECFBF92C3 +:10170000CF92DF92EF92FF920F931F93CF93DF93CD +:10171000DB01FC019F012F5F3F4F8081803209F484 +:101720009EC01496FC93EE9313979F0189010E1BA4 +:101730001F0B722F632FE90189919E01882379F095 +:101740008F3209F08EC0CF01800F911F782F692F43 +:10175000EC012991CE012032C9F32F32B9F3EA010D +:1017600078836983E801CE0FDF1F8E010E1B1F0BEC +:10177000CE17DF0709F495C08A918E32B1F380321B +:10178000A1F30F3F110511F00CF06DC012961C93E0 +:101790000E931197ED012696CD01419620E22993F3 +:1017A0008C179D07E1F7EF019E012E1B3F0B8991DE +:1017B0008E32D1F38032C1F381E02115310509F079 +:1017C00080E0A80141505109EF01C00FD11F4F3FE8 +:1017D000540709F069C0F12C67E0B12C70E0D8E043 +:1017E000ED2E201731070CF0ACC06F01C20ED31ED6 +:1017F000E6019881903209F483C09E3221F42417C7 +:10180000350709F07DC0D92F9232E1F09C37D1F035 +:10181000C6EDDC2ED90EC5E0CD1510F09D3291F449 +:10182000C6ECDC2ED90EC5E0CD1560F4C5EADC2E81 +:10183000D90EC2E0CD1530F4CFEDDC2ED90ECDE5BA +:10184000CD15C8F52417350709F076C06A3009F4BC +:1018500077C06AE098E0B92EC0E1EC2E52C0F901E1 +:1018600059CF8C3559F480E0DF91CF911F910F91C2 +:10187000FF90EF90DF90CF90BF900895982F977FC3 +:10188000923289F38A3379F3982F9F7B9C3359F3F3 +:1018900092EC980F923038F380528F3508F446CF8F +:1018A000E2CF10E000E072CF9A919E3209F493CF1C +:1018B000415051098CCF2417350741F26B15F0F1D7 +:1018C000CFE9DC2ED90EC9E1CD1508F19052FE28E2 +:1018D000DD24D394DB0CED01CB0DD11D9E83D6E02E +:1018E000DD1518F01596DC921597BD2C0AC042172D +:1018F000530734F19A016AE0D8E0BD2E80E1E82E6A +:1019000080E02F5F3F4F6DCF80E09FE5DFE5D15452 +:10191000DA31F0F67E29DCCF81E08C9315966C915C +:101920001597A60FB11D8EE716968C93169781E337 +:1019300017968C9381E098CF6B1530F76A30B9F623 +:1019400080E016969C911697903209F48CCF8823EC +:1019500019F37F2111F0D2E0FD2EFC9285CFFC011E +:101960009C01255F3F4F80E080FB879587F991912F +:10197000890F2E173F07C1F708954F925F926F921C +:101980007F928F929F92AF92BF92CF92DF92EF920F +:10199000FF920F931F93CF93DF93EC014A015B01FA +:1019A0004C845D846E847F84A881AA2309F486C058 +:1019B000488959896A897B89481559056A057B05D3 +:1019C00069F081149104A104B10451F41C861D86B0 +:1019D0001E861F86888A998AAA8ABB8A81E073C07C +:1019E000A3FF59C0088D198D2A8D3B8D0815190547 +:1019F0002A053B0508F462C0EE81FF81848190E0F6 +:101A000009968A019B010150110921093109082E0B +:101A100004C036952795179507950A94D2F7750156 +:101A20006401B1E0CB1AD108E108F10804C0F694D2 +:101A3000E794D794C7948A95D2F7C016D106E206E8 +:101A4000F30628F0452B462B472B09F052C0A6FF82 +:101A50004BC0848D958DA68DB78D8C879D87AE8765 +:101A6000BF878E01045F1F4FC114D104E104F1044C +:101A700009F4B0CF4C855D856E857F8598018E8198 +:101A80009F810E94A70A91E0C91AD108E108F108D4 +:101A9000181654F313C0A5FFAFCFEE81FF818681E6 +:101AA000978125E0880F991F2A95E1F7B0E0A0E023 +:101AB00088159905AA05BB0508F08CCF4C865D8674 +:101AC0006E867F8680E0DF91CF911F910F91FF900E +:101AD000EF90DF90CF90BF90AF909F908F907F90CE +:101AE0006F905F904F9008958C8D9D8DAE8DBF8DC2 +:101AF000B4CFC01AD10AE20AF30AB3CFCF93DF936F +:101B0000DC01FC0190E048E080E05EE221912032BF +:101B1000D1F0983031F4EB01C80FD11D58838F5F9D +:101B200040E1EF01219728813FEB320F3A3130F449 +:101B30001C963C911C97342309F0205EEB01C80FE2 +:101B4000D11D28838F5F9F5F9B3001F7680F711D48 +:101B5000FB011082DF91CF910895CF93DF93EC01C9 +:101B6000262F4C895D896E897F898E819F81809621 +:101B70000E94D408009771F02C813D812F7033278B +:101B800045E0220F331F4A95E1F7820F931FDF9143 +:101B9000CF91089590E080E0FACFCF93DF93FC01DE +:101BA0002081211104C081E0DF91CF910895EC01E3 +:101BB000828182FF27C061E0CF010E94AD0DFC0150 +:101BC000892B29F489818160898380E0EDCF808130 +:101BD000853EC1F3888183FF08C0888D998DAA8DC9 +:101BE000BB8D848F958FA68FB78F8C8D9D8D938F96 +:101BF000828F8C8D9D8DAE8DBF8DB58BA48B8A8190 +:101C00008B7F8A838E819F8180960E949208882391 +:101C1000C9F2C9CFCF93DF93EC010E94CD0D18829A +:101C2000DF91CF9108953F924F925F926F927F9292 +:101C30008F929F92AF92BF92CF92DF92EF92FF92DC +:101C40000F931F93CF93DF9300D000D0CDB7DEB7B3 +:101C50004C01FC01828184608283A680B780448429 +:101C6000558466847784F501C084D184E284F3844A +:101C7000C414D504E604F70410F011E003C07301A6 +:101C8000620110E0FFEFCF1ADF0AEF0AFF0AF50149 +:101C9000808D918DA28DB38D8C159D05AE05BF05F0 +:101CA00038F4111131C0C084D184E284F384E5CFCB +:101CB0004C145D046E047F0439F19E012F5F3F4F89 +:101CC000B701A601C5010E94A70A87FD1DC0882390 +:101CD000C9F289819A81AB81BC81892B8A2B8B2B9C +:101CE00089F6112329F0F501C086D186E286F386B4 +:101CF0000FEF1FEF2FEF3FE0B701A601C5010E94D4 +:101D0000350A382E811118C0312C832D0F900F9079 +:101D10000F900F90DF91CF911F910F91FF90EF9057 +:101D2000DF90CF90BF90AF909F908F907F906F90FB +:101D30005F904F903F9008954114510461047104E5 +:101D400031F4F401C486D586E686F786DECF9701A6 +:101D50008601B301A201C5010E94350A8111F1CFAC +:101D6000D3CF9FB7F89480918201882319F08150D6 +:101D70008093820180918201811105C08CB58F7B97 +:101D80008CBD109256019FBF08952091E6053091B9 +:101D9000E7058091E8059091E9052817390769F072 +:101DA0008091E8059091E905E091E405F091E50561 +:101DB000E80FF91F808190E008958FEF9FEF08955D +:101DC0000895CF92DF92EF92FF920F931F93CF93DC +:101DD000DF937C018A01EB016B01C40ED51ECC158B +:101DE000DD0551F06991D701ED91FC910190F081F1 +:101DF000E02DC7010995F3CFC801DF91CF911F9165 +:101E00000F91FF90EF90DF90CF9008958091E805BB +:101E10009091E9052091E6053091E7058217930737 +:101E2000C9F09C012F5F3F4FE091E405F091E5057B +:101E3000E80FF91F80814091EA055091EB052417C6 +:101E4000350710F030E020E03093E9052093E805F5 +:101E500090E008958FEF9FEF08950C946C058091AA +:101E6000C00085FFFCCF6093C60081E090E008953C +:101E70000F931F93CF93DF938C01D0E0C0E0F80164 +:101E8000EC0FFD1F6491662341F086ED93E00E9404 +:101E90002F0F892B11F02196F2CFCE01DF91CF9138 +:101EA0001F910F910895682F86ED93E00C942F0FEA +:101EB000FF920F931F93CF93DF9310E000E0CFEFDB +:101EC000DFEF8AE0F82E0E946C05892BE1F386EDA6 +:101ED00093E00E94060F90ED980F9A3080F4F09EE8 +:101EE000E001F19ED00D11248053990BC80FD91F2A +:101EF0008E01CF3FD10539F334F3CFEFDFEFCE01C1 +:101F0000DF91CF911F910F91FF900895CF93C82F2C +:101F10000E94E30560E0892B09F461E08C2FCF91EA +:101F20000C940C06CF93DF939C01DB01F901EB01CC +:101F30008991BE01E90199919E01882361F19A324C +:101F400031F0891791F39F3381F380E02AC050E08C +:101F500040E030E020E008C0981711F08F33A9F47A +:101F6000CF0101961196FC019C918081992399F0F3 +:101F70008A3291F7CF01019621812223A9F09D0198 +:101F80002F5F3F4F582F492FEECFD9012F5F3F4F83 +:101F9000852F942FE8CF91919A32E9F381E0911146 +:101FA000D4CFDF91CF91089581E0FBCFFC0170E0A9 +:101FB0009F01281B390B261737075CF42191022E4D +:101FC000000C330B205331092A30310588F390E09F +:101FD00080E00895E8E2F1E080E020813181232B68 +:101FE00019F0928191118F5F339691E0E733F907F1 +:101FF000A1F70895CF93DF93EC0120E030E0A90131 +:10200000E99180ED8E0F8A3090F4AAE0B0E00E9452 +:10201000C4342E2FEE0F330B20533109032E000C46 +:10202000440B550B260F371F481F591FE9CFCA0114 +:10203000B901DF91CF910895C82F82E990E00E9405 +:10204000380F8CE790E0C83051F082E790E0C9305B +:1020500031F088E690E0C73011F486E890E00E9405 +:10206000380F83E00E94D32304960C94CD0D40E0FA +:1020700050E0BA010C94BD0C90E080E00895AF925E +:10208000BF92CF92DF92EF92FF920F931F93CF9365 +:10209000DF936C015C018FEFA80EB11C7601EA148E +:1020A000FB0408F047C02091E6053091E7058091D8 +:1020B000E8059091E90528173907E1F185010E1926 +:1020C0001F09F8948091E6059091E7057894C091F6 +:1020D000E805D091E9058C179D0730F58091EA0558 +:1020E0009091EB058C1B9D0B8017910708F48C01D8 +:1020F0006091E4057091E5056C0F7D1FA801C70193 +:102100000E94F134C00FD11F8091EA059091EB0538 +:10211000C817D90710F0C81BD90BD093E905C09395 +:10212000E805E00EF11EBBCFC817D907D8F210E0C2 +:1021300000E0F7CFC7018C199D09DF91CF911F9166 +:102140000F91FF90EF90DF90CF90BF90AF900895E8 +:102150008F929F92AF92BF92DF92EF92FF920F9376 +:102160001F93CF93DF93EC017B012881222309F495 +:10217000BBC08A8180FFB8C088889988AA88BB883C +:1021800023FF21C0888D998DAA8DBB8D881999094F +:10219000AA09BB0982309105A105B10518F5009780 +:1021A00009F530E020E0A901481B590BCA01DF9175 +:1021B000CF911F910F91FF90EF90DF90BF90AF9064 +:1021C0009F908F90089525FF0DC0EE81FF8186813D +:1021D000978135E0880F991F3A95E1F788159905A1 +:1021E00009F488C084011170EE81FF81B501A4015A +:1021F00089E076956795579547958A95D1F725FF9C +:1022000027C0848D958DA68DB78D480F591F6A1FE5 +:102210007B1F8E819F8120E080960E94D4080097CA +:1022200009F462C0800F911FFC018081F701808357 +:1022300088899989AA89BB890196A11DB11D888BBE +:10224000998BAA8BBB8B21E030E090E080E0ABCF94 +:10225000D380D4220115110581F4D1100EC0892834 +:102260008A288B2881F526FF29C0848D958DA68D1F +:10227000B78D8C879D87AE87BF87EE81FF814C85A8 +:102280005D856E857F8542505109610971098481A0 +:1022900004C0440F551F661F771F8A95D2F78089A7 +:1022A0009189A289B389840F951FA61FB71FAC011E +:1022B000BD014D0D511D611D711DABCF8C8D9D8DCF +:1022C000AE8DBF8DD6CF4C855D856E857F859E0199 +:1022D000245F3F4FCF010E94A70A87FD05C08111EF +:1022E000CCCF8881807749F48981826089838FEFA0 +:1022F0009FEF5DCF30E020E0A8CF21E030E081E02B +:1023000090E051CFEF92FF920F931F93CF93DF9303 +:102310001F92CDB7DEB77C01962FF7014089518916 +:10232000628973898A019B0185E036952795179507 +:1023300007958A95D1F70F7011F0911129C0BE0150 +:102340006F5F7F4FC7010E94A810813051F090E06D +:1023500080E00F90DF91CF911F910F91FF90EF9050 +:102360000895F70180899189A289B3894F96A11DAB +:10237000B11D808B918BA28BB38BF70186819781E6 +:102380008796F0E20F9F90011124820F931FE1CFF7 +:10239000405E5F4F6F4F7F4F408B518B628B738BD3 +:1023A000ECCF2F923F924F925F926F927F928F92DB +:1023B0009F92AF92BF92CF92DF92EF92FF920F93D4 +:1023C0001F93CF93DF93EC015B014A01888183FF68 +:1023D000C5C08A8181FFC2C083FDB7C0A40170E07F +:1023E00060E088899989AA89BB8980959095A09594 +:1023F000B09584179507A607B70708F4AFC0640126 +:102400001E018CE0280E311C088919892A893B8914 +:10241000C114D10409F4E1C08E819F81B901A801E2 +:1024200029E076956795579547952A95D1F7DC0170 +:102430001396FC90F4221170F1101BC04C855D8541 +:102440006E857F850115110509F0F4C04115510510 +:102450006105710509F488C091010E94A70A87FDF2 +:102460007DC0811106C0CE010E94130E882309F49D +:1024700075C0EE81FF814C855D856E857F854250FC +:10248000510961097109848104C0440F551F661FF9 +:10249000771F8A95D2F780899189A289B389840FA1 +:1024A000951FA61FB71FAC01BD014F0D511D611D2A +:1024B000711D0115110529F4C114B2E0DB0608F005 +:1024C0006EC080E092E0801B910B76018C159D051B +:1024D00008F47C010115110571F4488859886A884F +:1024E0007B88888D998DAA8DBB8D25E0481659066D +:1024F0006A067B0608F421E0CF0180960E94D4088A +:10250000009761F1A701B501800F911F0E94F1347E +:102510000E0D1F1D0115124039F48E819F8180968A +:102520000E9492088823D1F088899989AA89BB8959 +:102530008E0D9F1DA11DB11D888B998BAA8BBB8B06 +:10254000AE0CBF1CCE18DF085FCF488D598D6A8D49 +:102550007B8DCE010E94BD0C811140CF89818160AD +:1025600089838FEF9FEF4DC08C8D9D8DAE8DBF8D7C +:102570000097A105B10571F4CE010E94130E8823C6 +:1025800069F38C859D85AE85BF858C8F9D8FAE8FC1 +:10259000BF8F6FCF8C879D87AE87BF876ACF83A1A0 +:1025A00094A1A5A1B6A1481759076A077B0741F472 +:1025B00010A28FEF9FEFDC0183A394A3A5A3B6A382 +:1025C000EE81FF819501808191810E94FB07882324 +:1025D00029F2E12C82E0F82EA7CF888D998DAA8D63 +:1025E000BB8D80179107A207B30738F48A81088F43 +:1025F000198F2A8F3B8F84608A838A8187FD14C05C +:10260000C401DF91CF911F910F91FF90EF90DF9068 +:10261000CF90BF90AF909F908F907F906F905F9082 +:102620004F903F902F900895CE010E94CD0D8111C3 +:10263000E7CF94CFFC0142505109610971098481AF +:1026400004C0440F551F661F771F8A95D2F78089F3 +:102650009189A289B389480F591F6A1F7B1F31CF07 +:1026600004960C94D111CF93DF931F92CDB7DEB7B0 +:10267000698341E050E0BE016F5F7F4F04960E9486 +:10268000D1110F90DF91CF910895FB0101900020AF +:10269000E9F73197AF01461B570BDC01ED91FC9137 +:1026A0000280F381E02D09946FE171E00C944513F1 +:1026B000CF93DF930E94380FEC0186ED93E00E94E8 +:1026C00054138C0F9D1FDF91CF9108958F929F928D +:1026D000AF92BF920F931F93CF93DF93CDB7DEB727 +:1026E000A1970FB6F894DEBF0FBECDBF19A242303E +:1026F00008F44AE08E010F5D1F4F842E912CB12CFF +:10270000A12CA50194010E94A234E62FB901CA01AF +:10271000EA3004F5E05DD801EE938D01232B242BE4 +:10272000252B79F790E080E0109729F0BD0186ED28 +:1027300093E00E944513A1960FB6F894DEBF0FBE3A +:10274000CDBFDF91CF911F910F91BF90AF909F9020 +:102750008F900895E95CDFCFCF92DF92EF92FF92E6 +:10276000CF93DF9397FF19C06B017C018DE20E942C +:10277000530FEC0166277727CB016C197D098E0971 +:102780009F094AE00E9466138C0F9D1FDF91CF9135 +:10279000FF90EF90DF90CF9008954AE0DF91CF91C6 +:1027A000FF90EF90DF90CF900C946613462F682F28 +:1027B00070E090E080E00C946613CF93DF930E946A +:1027C000D613EC0186ED93E00E9454138C0F9D1FED +:1027D000DF91CF910895CF93DF93D0E0C0E00097D1 +:1027E00031F0BC0186ED93E00E944513EC0186EDCB +:1027F00093E00E9454138C0F9D1FDF91CF91089599 +:10280000FC01808181110FC080E2DF01982F1D92B1 +:102810009A95E9F777836683DB0115969C91903151 +:1028200029F0903211F080E0089580E4808381E007 +:1028300082830895CF93C82F8DEA93E00E940A0EF9 +:1028400066E871E08DEA93E00E940014882369F045 +:10285000CC2359F08091AD03807749F08DEA93E065 +:1028600090938501809384018C2FCF91089580E00F +:10287000FCCF8F929F92AF92BF92CF92DF92EF9256 +:10288000FF920F931F93CF93DF93D82FC92F1092EE +:10289000D0031092CD031092D20383ED93E0909376 +:1028A000CF038093CE030E94C2066B010091CE033A +:1028B0001091CF038AE0F801828361E00E943A061A +:1028C00061E0F80182810E940C061FB7F8948091A4 +:1028D0008201811127C0E0E7FAE08491ECE5FAE09B +:1028E0009491E82FF0E0EE0FFF1FE85BF54FA59104 +:1028F000B491EC91E92321F461E08AE00E940C0696 +:1029000061E08AE00E943A068CB580618CBD8CB58E +:1029100080648CBD61E08DE00E943A0661E08BE04E +:102920000E943A06809182018F5F809382011FBFCF +:10293000E091CE03F091CF0382E5808311828091F4 +:10294000D003811104C08DEC93E00E94CE06E0918B +:10295000CE03F091CF0361E082810E940C061AE061 +:102960008FEF0E94F5061150D9F7E091CE03F09158 +:10297000CF0360E082810E940C061AE020E030E084 +:10298000A90160E08DEC93E00E949007082F813050 +:1029900029F11150A9F480E28093CD038DEC93E0EE +:1029A0000E941C0780E0DF91CF911F910F91FF9053 +:1029B000EF90DF90CF90BF90AF909F908F90089551 +:1029C0008DEF0E94F50698E0A92E92E0B92E0E94A4 +:1029D000FA06F1E0AF1AB108D1F7D0CF2AEA31E018 +:1029E00040E050E068E08DEC93E00E94900714E036 +:1029F000853041F50093D2038091D203812C912C34 +:102A00005401823029F4812C912CA12C80E4B82E21 +:102A100020E030E0A90167E38DEC93E00E9490078D +:102A2000A501940169E28DEC93E00E949007882350 +:102A3000B9F00E94C2066C197D09613D774040F3F0 +:102A400083E4AACF0E94FA068093D1031150D1F7F4 +:102A50008A3A21F482E08093D203CECF85E29CCFE4 +:102A60008091D2038230D1F420E030E0A9016AE302 +:102A70008DEC93E00E949007882311F087E38CCFC0 +:102A80000E94FA06807C803C19F483E08093D20394 +:102A90000E94FA060E94FA060E94FA068DEC93E064 +:102AA0000E941C07E091CE03F091CF03D083C18335 +:102AB0008DEC93E090938701809386018DEA93E0FB +:102AC0000E940A0E81E00E9413098823A9F066E89B +:102AD00071E08DEA93E00E940014882309F462CF2C +:102AE0009091AD03907709F45DCF2DEA33E03093F8 +:102AF00085012093840157CF80E00E941309811142 +:102B0000E6CF50CF9F92AF92BF92CF92DF92EF92DB +:102B1000FF920F931F93CF93DF93CDB7DEB7A097AC +:102B20000FB6F894DEBF0FBECDBF19821A82DC014A +:102B30002C9123FF16C012962C9121FF12C08C01FC +:102B4000FC01448D558D668D778D411551056105CC +:102B5000710549F461E0C8010E94AD0D7C01009748 +:102B600049F480E076C0868197810E94280B81110C +:102B7000F1CFF7CF0E94AF0C982E85EEF70180833E +:102B8000D8011C9216968D919C9180960E94920875 +:102B9000882339F3F8019381992309F45AC0808579 +:102BA0009185A285B385668177819E012F5F3F4F16 +:102BB00069010097A105B10509F05DC0C9010E9436 +:102BC0000014882371F2EE24E394F12C25EEA22E5A +:102BD000D80113968C9113978E1518F214964D9177 +:102BE0005C914E195F0970E060E085E0440F551F6D +:102BF000661F771F8A95D1F7C6010E94BD0C8823F6 +:102C000009F4AFCF60E0C6010E948211FC01892B5C +:102C100009F4A7CF83858F3009F0A3CF9081892F46 +:102C20008F71E8129ECF858589119BCFA082D80134 +:102C30001696ED91FC9180A1816080A3BFEFEB1A05 +:102C4000FB0A96FFC5CFF8018681978180960E9486 +:102C50009208A0960FB6F894DEBF0FBECDBFDF91ED +:102C6000CF911F910F91FF90EF90DF90CF90BF9089 +:102C7000AF909F9008952CE1F60111922A95E9F703 +:102C800020E1298321E02B8378876F838D8F9E8FAE +:102C9000AF8FB8A398CFCF93DF93FC01208124FF9F +:102CA0000CC0EC010E94371061E0CE010E9482113D +:102CB000009739F48981882381F080E0DF91CF91FA +:102CC0000895FC012081222341F0253E69F32E3234 +:102CD00059F3838583FDE8CFF0CF88E088838A812C +:102CE00082608A83CE01DF91CF910C948215CF92BE +:102CF000DF92EF92FF920F93CF93DF93EC0180E28C +:102D0000DE011D928A95E9F7FB01868197819F83F9 +:102D10008E835D834C83C48CD58CE68CF78CC886FF +:102D2000D986EA86FB86FA01EF70FF27DC019796C9 +:102D300045E0EE0FFF1F4A95E1F7BD016E0F7F1FC3 +:102D4000DB011B963C9133FD19C0AC014E0F5F1F98 +:102D5000DA01D2963C9137713883DB011B964C9196 +:102D6000487111F4386038830B83322F337031305F +:102D700009F449C030F0323009F443C0188280E0D1 +:102D800038C031E025FDFACF3A835A8151FF03C0A4 +:102D90004881417199F7322F3878352B3A83DC011D +:102DA00093964D915D916D917C9196974C8B5D8B37 +:102DB0006E8B7F8BE80FF91F43AD54AD70E060E080 +:102DC000BA0155274427DF01AF5BBF4FCD90DC90A0 +:102DD000F12CE12C4C295D296E297F2925FF1AC091 +:102DE000411551056105710581F48A8184608A83EA +:102DF00081E0DF91CF910F91FF90EF90DF90CF9026 +:102E0000089533E0C1CF32E0BFCF0E94280B81117B +:102E1000ECCFB4CF4C8F5D8F6E8F7F8FED5BFF4F0C +:102E200080819181A281B381888F998FAA8FBB8F76 +:102E3000DFCF8F929F92AF92BF92EF92FF920F934C +:102E40001F93CF93DF937C01EB0100E010E08888B3 +:102E50009988AA88BB8860E0CE010E948211009701 +:102E6000A1F1FC012081222381F12E3221F1253EA6 +:102E700011F1338533FD21C0002321F00E94AF0CF6 +:102E8000811323C0B501A40185E076956795579518 +:102E900047958A95D1F720E0BE01C7010E947716B9 +:102EA000DF91CF911F910F91FF90EF90BF90AF9066 +:102EB0009F908F90089500E0CACF3F30E1F726FF42 +:102EC000C6CF022F0F711585C2CF80E0E9CFCF9218 +:102ED000DF92EF92FF920F931F93CF93DF936C01DA +:102EE000EB017A014115510509F44AC041505109DD +:102EF00070E060E085E0440F551F661F771F8A95DC +:102F0000D1F7CE010E94BD0C81110AC080E0DF9193 +:102F1000CF911F910F91FF90EF90DF90CF90089588 +:102F200060E0CE010E948211FC01892B79F3838538 +:102F30008F3049F580818F71813029F515850E2DEF +:102F400085E1E816F10408F004E160E0CE010E949A +:102F500082110097D9F2FC012081253EB9F222238B +:102F6000A9F22E3299F2002321F00E94AF0C8113B6 +:102F7000CDCF20E0A701BE01C6010E947716C7CFC2 +:102F8000CB010E94371000E010E0DFCF8F929F92BC +:102F9000AF92BF92CF92DF92EF92FF920F931F9367 +:102FA000CF93DF93CDB7DEB7C655D1090FB6F894EE +:102FB000DEBF0FBECDBF8C016B01942E19A61AA6E1 +:102FC00018A61FA287E191E09EA38DA3C8010E94CD +:102FD000371097E1A92E91E0B92E2FE2822E1D82A3 +:102FE0001E821C821B82BA82A9828D818111C6C079 +:102FF000F8018081807709F4C1C080899189A28914 +:10300000B3898F719927AA27BB27892B8A2B8B2BF2 +:1030100009F0B4C0B801CE0105960E9419178823A3 +:1030200009F4ACC08D81811105C0CE0105960E94C6 +:103030000A0EDBCF8076D9F02A968FAE2A972B9690 +:103040001FAE2B978D81982F9870887771F39923F5 +:1030500009F486C0BE01675B7F4FC6010E94920FD4 +:10306000882319F381E067968FAF67977DC060E092 +:10307000CE0105960E94AD0D0097B9F2BE01675BC7 +:103080007F4F0E947E0DDECFBE01675B7F4F86EDD6 +:1030900093E00E944513E82E8D8184FF05C08EE7E2 +:1030A0009AE00E94380FE80E8D8183FF14C0FDE086 +:1030B000FE1530F08CE79AE00E94380FE394F7CFCA +:1030C0008AE79AE00E94380F6D8D7E8D8F8D98A1D2 +:1030D0004AE00E94661386ED93E00E945413CE01ED +:1030E00005960E940A0E67968FAD6797823009F0A9 +:1030F00076CFE0908301E1E0EE1508F470CF89A56A +:1031000081116DCFF8018081807709F468CF408903 +:1031100051896289738985E07695679557954795BA +:103120008A95D1F741505109B801CE0189960E9484 +:103130006717882309F453CFE394E092830142E0B8 +:103140004F0DB601CE0189960E94C617809183016A +:10315000815080938301CE0189960E940A0E3FCF51 +:10316000F2E06796FFAF6797F12C9F1409F48CCFBC +:1031700080E89AE00E94380FF394F7CFCA5ADF4FE5 +:103180000FB6F894DEBF0FBECDBFDF91CF911F9178 +:103190000F91FF90EF90DF90CF90BF90AF909F90F6 +:1031A0008F900895CF92DF92EF92FF920F931F932B +:1031B000CF93DF93CDB7DEB7A0970FB6F894DEBFFD +:1031C0000FBECDBFFC0119821A829081907781F4E5 +:1031D00080E0A0960FB6F894DEBF0FBECDBFDF91A2 +:1031E000CF911F910F91FF90EF90DF90CF900895B6 +:1031F0008F01CF010E943710F801C088D188E28882 +:10320000F38860E0C8010E948211009769F4F80118 +:1032100081818111DDCFF8018081807609F057C06E +:10322000C8010E944B16D5CFFC012081222399F3BF +:10323000253E11F32E3201F3838583FDDDCF898195 +:103240008111C6CFF8018081807709F4C1CF95E064 +:10325000F694E794D794C7949A95D1F7A601B8014C +:10326000CE0101960E946717882309F4B1CF8981A6 +:1032700084FF25C0CE0101960E94D218882309F44C +:10328000A7CFFFEFCF1ADF0AA60170E060E085E06C +:10329000440F551F661F771F8A95D1F7F801808963 +:1032A0009189A289B38984179507A607B70709F4FE +:1032B000A3CFC8010E94BD0C81119ECF89CF8B8105 +:1032C00082608B83CE0101960E948215D7CF81E068 +:1032D00080CFAF92BF92CF92DF92EF92FF920F9387 +:1032E0001F93CF93DF93EC01888185FF0DC010E021 +:1032F000812FDF91CF911F910F91FF90EF90DF9081 +:10330000CF90BF90AF90089588899989AA89BB8989 +:1033100081159E4FAF41B10550F7CE010E94130EAB +:10332000182F882321F3EE81FF81CC84DD84EE8485 +:10333000FF8432E0C31AD108E108F108848104C097 +:10334000CC0CDD1CEE1CFF1C8A95D2F7808991897C +:10335000A289B389C80ED91EEA1EFB1E25E0B7015B +:10336000A601CF0180960E94D4085C01892B09F444 +:10337000BECF80E092E0F5019C01119221503040D7 +:10338000E1F701E0EE81FF818281081780F4950169 +:10339000B701A601400F511D611D711D80819181F2 +:1033A0000E94FB07882309F4A2CF0F5FEBCF90E0C8 +:1033B000B0E0A0E029E0880F991FAA1FBB1F2A9543 +:1033C000D1F7488959896A897B89840F951FA61F7F +:1033D000B71F888B998BAA8BBB8B8ACF9F92AF929A +:1033E000BF92CF92DF92EF92FF920F931F93CF93F2 +:1033F000DF937C01962EC62ED12CA60170E060E0F2 +:103400000E94FA34D0E0560181E0A81AB1080D2FCD +:1034100010E00A151B059CF50E946C05892BE1F351 +:1034200086ED93E00E94060FC82F85E00E94860F6C +:10343000C83011F0CF3791F4DD2349F3D150F701B3 +:10344000ED0FF11D108288E00E94530F8BE091E098 +:103450000E94380F88E00E94530FD9CF809100015D +:1034600080FF03C08C2F0E94530FCD3009F586EDED +:1034700093E00E945413F701E00FF11F1082E8E27D +:10348000F1E08FE0DF011D928A95E9F710E0C1E0DD +:103490008C2F90E09C012F5F3F4F8E0D9F1DFC01F4 +:1034A0008081803271F0C216D30621F5C92D0CC07F +:1034B000CA3009F4ACCFF701E00FF11FC083DF5F22 +:1034C000A6CFC216D30691F30E94EA0F853080F48E +:1034D00090E0FC01EE0FFF1FE80FF91FE85DFE4FC3 +:1034E000C701810F911D918380838C2F811B828363 +:1034F000CF5F1C2FCF5FC91558F28D2FDF91CF9171 +:103500001F910F91FF90EF90DF90CF90BF90AF9001 +:103510009F9008952F923F924F925F926F927F9269 +:103520008F929F92AF92BF92CF92DF92EF92FF92D3 +:103530000F931F93CF93DF93CDB7DEB729970FB6C5 +:10354000F894DEBF0FBECDBF4C017F836E83FA01BE +:10355000672BD1F480E029960FB6F894DEBF0FBE3A +:10356000CDBFDF91CF911F910F91FF90EF90DF9032 +:10357000CF90BF90AF909F908F907F906F905F9013 +:103580004F903F902F900895AE81BF818C918077AE +:1035900009F3D4018C918111DDCFA180B2808081AB +:1035A000837033243394882349F0C5010C966DE071 +:1035B00070E00E948E3433243394360E29837F01C9 +:1035C000EE81FF81F987E887CF010E9437101C82C6 +:1035D0001D821A82212C10E000E01B8297012A5FD5 +:1035E0003F4F3F832E83A885B98550964D905D90BF +:1035F0006D907C90539795E0769467945794479498 +:103600009A95D1F7620161E0CD010E948211009785 +:1036100009F062C0E885F985818181119BCFE9813C +:10362000E4FF98CF8E2F83708150823008F092CFC4 +:10363000112311F0CC80DD80131500F560E0888542 +:1036400099850E948211892B09F0E4C0A885B9856B +:1036500011968C9181117ECF888599850E94691978 +:10366000882309F477CFA885B9851696ED91FC914A +:103670008281823018F4105F131570F3BB81BB2375 +:1036800009F4F8C0F701558002E010E08EE7482EFB +:103690003701F6E06F0E711CD70111962D913C9108 +:1036A0001297C801820F931F1396ED91FC912E0F74 +:1036B0003F1F2E173F0709F4AFC0AC01B5E0440F20 +:1036C000551FBA95E1F7840F951F4191042E000C08 +:1036D000550B84279527EDCFDC012C91253E11F069 +:1036E00021110EC0111102C04C825D82131508F425 +:1036F0001F5F222309F493CF253E21F400E073CF0E +:10370000131550F12E32D1F3FC0133853F3009F00F +:103710005AC0011123C026FF66CF022F0F71F58515 +:10372000FA83202EE22DE150FF0BAF01FDE0F49F64 +:103730009001F59F300D11242A153B05F8F6FC0188 +:10374000D12C64E06D1590F081819281A216B306B0 +:10375000B1F4892B99F647CF10E0D4CF2A942211E7 +:10376000CDCF2585BA812B17E9F2C8CF8AE08D1518 +:1037700018F084819581EACF86819781E7CF8F3FCA +:10378000910511F008F0BACF4FEB480F4A3108F419 +:10379000805EB9016F5F7F4FD70113964D915C91A9 +:1037A000240F351FD9019C912FEB290F2A3108F4E2 +:1037B000905E9813A3CFD3943296BDE0DB1609F444 +:1037C00012CF9B01BECF33FD99CF002399F0E1E0EA +:1037D0002E12C0CE0E94AF0CFA818F13BBCEB981DE +:1037E000B6FDB8CE2981A60168857985C4010E94FD +:1037F0007716B1CE4BE050E06E817F810E94E434B9 +:10380000892B09F0F0CED7018C9180FFE8CF31E011 +:103810003B83E9CE1F5F10CFB3E0B51510F4A3E0F2 +:103820005A2E34E0350D282F2F702A3008F08AC028 +:10383000205DF701E30FF11D2683F4E0969587954F +:10384000FA95E1F73150531670F3F701E50DF11DCC +:103850004682888599850E94371061E08885998520 +:103860000E948211009709F06FC0E885F985818177 +:10387000811170CEA60170E060E0E5E0440F551FB5 +:10388000661F771FEA95D1F7888599850E94BD0C40 +:10389000882309F45FCE0FEF030D102F3FE0532E66 +:1038A0003701B6E06B0E711C4DE0442E112309F474 +:1038B00077C060E0888599850E9482116C01892B10 +:1038C00009F448CEA885B9851696ED91FC9180A1A2 +:1038D000816080A3312E101302C0689436F8F6017F +:1038E000308253861486C3010E94AF0CD6011D9608 +:1038F0008C931D975B961C921E925A97F701238119 +:103900003481832D8F718150990B489EA001499E6F +:10391000500D1124F60160E04A155B0570F5D901E0 +:10392000A40FB51F8C91082E000C990B653080F503 +:10393000928381836F5F4F5F5F4F32966D3061F787 +:103940001150B4CF295C75CFDC012C91222309F4EE +:1039500091CF1B962C9123FD80CF4BE050E0BC0112 +:10396000C3010E94E434892B09F077CF0F5F1F4F0A +:103970000436110509F090CEEDCD81E090E0A4165B +:10398000B50611F490E080E0919581959109CECF34 +:103990006B3018F495838483CDCF97838683CACF09 +:1039A000A885B98550964D905D906D907C90539709 +:1039B00060E0CD010E948211009709F4CBCD25E093 +:1039C00076946794579447942A95D1F7620120E240 +:1039D000FC0111922A95E9F7F70136962BE0DC01FC +:1039E00001900D922A95E1F7D7012C912871FC01E5 +:1039F000248721E238E2318B208B40E058E0578762 +:103A00004687338B228B318F208F578B468BA8852F +:103A1000B9851696ED91FC9180A1816080A3E2CEDC +:103A2000DF92EF92FF920F931F93CF93DF93CDB767 +:103A3000DEB7E3970FB6F894DEBF0FBECDBF7C01B3 +:103A40008B015BAB4AABD22E19821A82FC018081BA +:103A5000882379F080E0E3960FB6F894DEBF0FBEBE +:103A6000CDBFDF91CF911F910F91FF90EF90DF902D +:103A700008956115710571F3FB018081807751F321 +:103A8000EAA9FBA980818F32D9F4EAA9FBA9808138 +:103A90008F3221F43196FBABEAABF7CFF8016681A8 +:103AA0007781811104C0C7010E940014D4CFCE01D8 +:103AB00001960E940014882369F28E010F5F1F4F48 +:103AC000AE014E5C5F4FBE016F5D7F4F8AA99BA91F +:103AD0000E947F0B882309F4BDCFEAA9FBA980814E +:103AE0008823B9F020E0AE014F5D5F4FB801C701F8 +:103AF0000E948A1A882309F4ADCF80E2F701DE0123 +:103B0000119601900D928A95E1F7C7010E940A0E65 +:103B1000D4CF2D2DAE014F5D5F4FB801C7010E947C +:103B20008A1A99CF1F93CF93DF93CDB7DEB7A097B3 +:103B30000FB6F894DEBF0FBECDBF162F19821A82C2 +:103B4000FC0120812F3281F4218121110DC0862FAB +:103B50000E941A14A0960FB6F894DEBF0FBECDBF18 +:103B6000DF91CF911F91089520E0AC016DEA73E0E1 +:103B7000CE0101960E94101D882361F399819077F0 +:103B8000B9F090E2FE013196ADEAB3E001900D92FA +:103B90009A95E1F71123F1F28091AD03807731F02E +:103BA0008DEA93E09093850180938401812FD2CF99 +:103BB00080E0D0CFFB01242F6091840170918501BA +:103BC000AF010C94101D2F923F924F925F926F9213 +:103BD0007F928F929F92AF92BF92CF92DF92EF929D +:103BE000FF920F931F93CF93DF93CDB7DEB7CA52E7 +:103BF000D1400FB6F894DEBF0FBECDBFBC01CC5F85 +:103C0000DE4F1882C450D140CB5FDE4F1882C550C2 +:103C1000D140CE5FDE4F19821882C250D14087E179 +:103C200091E0C050DF4F99838883C050D140C0904D +:103C30007C012091810180E091E08C0F9D1F049612 +:103C400041E3233009F049E10E94DA1D811103C0EC +:103C500089E00E941C10C45EDE4F88819981AA8190 +:103C6000BB81CC51D140892B8A2B8B2B61F400E096 +:103C700011E00C0F1D1F0C5F1F4FC8010E94371071 +:103C8000C8010E94CD0DD12CF12CE12C24E1CC0CEB +:103C9000DD1CEE1CFF1C2A95D1F70E94C2064B01C9 +:103CA0005C018FE990E00E94380F61E085E00E949E +:103CB0000C0630907D01332009F468C0312C412C72 +:103CC000512C320180E091E08C0F9D1F0496C75D5E +:103CD000DE4F99838883C952D14090917D01C85DA0 +:103CE000DE4F9883C852D140391608F035C1CE0155 +:103CF00001960E943F108C01282E882309F4E5C00C +:103D0000998180917E019813DEC03394FE01329632 +:103D100081E0821558F421919213D2C03394C85D8A +:103D2000DE4F2881C852D1402311CBC0A8015527AE +:103D3000BE016F5F7F4FCE0193950E94301385E0E7 +:103D40000E94860F80918101833039F6420C511C0C +:103D5000611C711C4C145D046E047F0408F4BDCF1B +:103D600000E011E00C0F1D1F0C5F1F4FC8010E94E7 +:103D7000CD0DC8010E940A0E60E085E00E940C068D +:103D80008BE990E00E94380F312C3EC0412C512C21 +:103D9000320100E011E00C0F1D1F0C5F1F4FCE0120 +:103DA00001960E943F10282E882309F448C0AC01D8 +:103DB0005527BE016F5F7F4FCE0193950E94301350 +:103DC00085E00E94860F80918101833041F7420C8B +:103DD000511C611C711C4C145D046E047F04F8F2CC +:103DE00000E011E00C0F1D1F0C5F1F4FC8010E9467 +:103DF000CD0DC8010E940A0E60E085E00E940C060D +:103E00008DE990E00E94380F832DC65DDE4F0FB61E +:103E1000F894DEBF0FBECDBFDF91CF911F910F9100 +:103E2000FF90EF90DF90CF90BF90AF909F908F90DA +:103E30007F906F905F904F903F902F9008950E94D9 +:103E4000C206681979098A099B09653F7140810595 +:103E5000910508F4A4CFC8010E94CD0D60E085E073 +:103E60000E940C06809164008062809364008091BF +:103E700064008460809364009AE0B92E61E08B2D29 +:103E80000E943A0660E08B2D0E940C06B3948EE0EF +:103E9000B812F4CF83B7816083BF889583B78E7FD4 +:103EA00083BF809164008B7F809364008091640065 +:103EB0008F7D809364000E94C2064B015C016FCF2E +:103EC000312C8F5F26CF312C31CF0E94C20668196A +:103ED00079098A099B09653F71408105910508F4BC +:103EE000FCCEC75DDE4F88819981C952D1400E94C6 +:103EF000CD0D60E085E00E940C0680916400806238 +:103F000080936400809164008460809364008AE000 +:103F1000B82E61E08B2D0E943A0660E08B2D0E9446 +:103F20000C06B3948EE0B812F4CF83B7816083BFE0 +:103F3000889583B78E7F83BF809164008B7F809349 +:103F40006400809164008F7D809364000E94C206AB +:103F50004B015C01302EC1CE00E011E00C0F1D1FA3 +:103F60000C5F1F4FC8010E94CD0D20917D012223BF +:103F700009F4BFC0CC5FDE4F8881C450D14083FFBD +:103F8000B8C0CA5FDE4F8881C650D14081FFB1C042 +:103F9000C45EDE4F88819981AA81BB81CC51D1401A +:103FA0006C017D01C21AD108E108F1088C159D054C +:103FB000AE05BF0508F49DC0892B8A2B8B2B09F415 +:103FC00098C0CC5EDE4F88809980AA80BB80C451A7 +:103FD000D140B701A601C8010E94BD0C882309F495 +:103FE00088C0C65FDE4F88819981CA50D140C11414 +:103FF000D104E104F10409F043C0C05EDE4F488102 +:1040000059816A817B81C052D1400E94280B88234C +:1040100009F46FC0C05EDE4F188219821A821B82BB +:10402000C052D140C45EDE4FC882D982EA82FB8290 +:10403000CC51D140CA5FDE4F8881C650D1408460E8 +:10404000CA5FDE4F8883C650D14080E091E08C0F7C +:104050009D1F04960E94CD0D882309F44AC0B70124 +:10406000A60184169506A606B70610F4B501A401AC +:1040700080E091E08C0F9D1F04960E94BD0C39C01A +:10408000C05FDE4F488159816A817B81C051D14038 +:104090009E012C5D3E4F0E94A70A87FD2AC08823FF +:1040A00009F2CC5DDE4F488159816A817B81C4521F +:1040B000D140C65FDE4F88819981CA50D1400E94AD +:1040C000280B8823B1F0C05FDE4F488159816A8197 +:1040D0007B81C051D1400FEF1FEF2FEF3FE0C65F54 +:1040E000DE4F88819981CA50D1400E94350A8111E2 +:1040F00099CF80E091E08C0F9D1F04960E940A0EDC +:1041000060E085E00E940C0689E990E00E94380F8B +:104110003324339479CEDF92EF92FF920F931F9363 +:10412000CF93DF93CDB7DEB7A0970FB6F894DEBF7D +:104130000FBECDBF8C016115710509F49CC0DB0178 +:104140009C91907709F497C07B0122E5C8010E94F9 +:104150008A1A882309F48FC081E0F801828380E104 +:10416000D82ED082C8010E946919882309F483C01F +:10417000F80184859585A685B785848F958FA68F50 +:10418000B78FC8010E943710C8010E94CD0D882347 +:1041900009F471C061E0C8010E94AD0DFC01892BDA +:1041A00009F469C0D38680E2DE01119601900D9278 +:1041B0008A95E1F78EE28983FE013296CE010C9654 +:1041C00020E22193E817F907E1F7D8011696ED915F +:1041D000FC9117975C964D915D916D917C915F97E5 +:1041E0004250510961097109848104C0440F551F6F +:1041F000661F771F8A95D2F780899189A289B38932 +:10420000480F591F6A1F7B1F21E0CF0180960E9433 +:10421000D408009781F120E2FE013196DC01019083 +:104220000D922A95E1F72EE22A83F701448D558DF0 +:10423000668D778D7E8B6D8B5C8F4B8F20E2FE01C0 +:104240003196DC01909601900D922A95E1F7D80104 +:1042500016968D919C918096A0960FB6F894DEBF2D +:104260000FBECDBFDF91CF911F910F91FF90EF90C7 +:10427000DF900C94920880E0A0960FB6F894DEBF11 +:104280000FBECDBFDF91CF911F910F91FF90EF90A7 +:10429000DF9008950C941F33CF92DF92EF92FF923C +:1042A0006B017C01B701992777FD9095892F89E0F3 +:1042B00090E00E944A219927F7FC9A958F2D7E2D38 +:1042C0006D2D8AE090E00E944A216C2D8BE090E0F9 +:1042D000FF90EF90DF90CF900C944A210C9417330D +:1042E000CF93DF9383E090E00E946E21C82F84E09B +:1042F00090E00E946E21D82F81E793E00E9458132E +:104300008CE593E00E94380FBE0190E080E04AE027 +:104310000E94661386ED93E00E9454138CE493E0B0 +:104320000E9458138FE293E00E94581380E093E0BC +:104330000E94581388ED92E00E94581384EA92E09C +:104340000E94581387EE91E00E94581387EB91E08A +:104350000E94581387E991E00E94581388E591E084 +:104360000E94581382E391E00E9458138DE091E07F +:10437000DF91CF910C9458130F931F93CF93DF933A +:1043800089E090E00E946E21D82F8AE090E00E94A0 +:104390006E21C82F8BE090E00E946E214C2F50E0E0 +:1043A00070E060E0762F652F542F44276D2B8A0133 +:1043B0009B01082BC901B801DF91CF911F910F918B +:1043C00008953F924F925F926F927F928F929F9249 +:1043D000AF92BF92CF92DF92EF92FF920F931F9313 +:1043E000CF93DF93CDB7DEB7CE58D1090FB6F8948F +:1043F000DEBF0FBECDBF26961FAE269727961FAEF7 +:10440000279725961FAE1EAE259787E191E023964C +:104410009FAF8EAF239780E00E941A14811103C0D2 +:1044200088E00E941C106FEF70E0CE018C579F4F08 +:104430000E945D3019821A8220E0AE014C575F4F16 +:104440006DEA73E08E010F5F1F4FC8010E94101DBF +:10445000882381F019821A8221E0AE014C575F4F08 +:104460006DEA73E0C8010E94101D882319F0C8018D +:104470000E94821581E4E82EF12CEC0EFD1E84E0F2 +:10448000E80EF11C49E1BE016C577F4FC7010E9445 +:10449000DA1D0E94BC21D62EC72EB82EA92E85E08B +:1044A00090E00E946E21982E86E090E00E946E219E +:1044B000882E82E090E00E946E21782E87E090E0C6 +:1044C0000E946E21682E88E090E00E946E21582E96 +:1044D0008CE090E00E946E21482E8DE090E00E94DA +:1044E0006E21382E8EE090E00E946E211F928F93F5 +:1044F0001F923F921F924F921F925F921F926F9254 +:104500001F927F921F928F921F929F92AF92BF92A3 +:10451000CF92DF9282EE90E09F938F936E0195E6AB +:10452000C90ED11CDF92CF920E947630F601019025 +:104530000020E9F73197AF014C195D09B601C701B9 +:104540000E94D111CE018F5B9F4F0E94541361EAEC +:1045500070E0C8010E945D30F80101900020E9F789 +:104560003197AF01401B510BB801C7010E94D11117 +:10457000C7010E94CD0DC7010E940A0E0FB6F89424 +:10458000DEBF0FBECDBFC257DF4F0FB6F894DEBF00 +:104590000FBECDBFDF91CF911F910F91FF90EF9094 +:1045A000DF90CF90BF90AF909F908F907F906F9053 +:1045B0005F904F903F900895E7E3F1E09EE1DF01C7 +:1045C0001D929A95E9F790E0FC01EE0FFF1FE80FAE +:1045D000F91FE85DFE4F608171816115710559F029 +:1045E0004281442341F04F3108F04EE150E087E32F +:1045F00091E00C94013590E080E008951F920F92B5 +:104600000FB60F9211242F933F938F939F93AF93E5 +:10461000BF938091610190916201A0916301B0917B +:1046200064013091600123E0230F2D3758F5019686 +:10463000A11DB11D209360018093610190936201DF +:10464000A0936301B093640180916501909166012C +:10465000A0916701B09168010196A11DB11D8093E1 +:10466000650190936601A0936701B0936801BF91C3 +:10467000AF919F918F913F912F910F900FBE0F900F +:104680001F90189526E8230F0296A11DB11DD2CFC9 +:104690001F920F920FB60F9211242F933F934F93B7 +:1046A0005F938F939F93EF93FF9320915C013091E1 +:1046B0005D0180915A0190915B012817390791F4AF +:1046C0008091C1008F7D8093C100FF91EF919F91F8 +:1046D0008F915F914F913F912F910F900FBE0F904F +:1046E0001F901895C9010196E0915801F091590168 +:1046F000E20FF31F208140915E0150915F0184170A +:10470000950710F090E080E090935D0180935C014C +:104710002093C600DACF1F920F920FB60F9211248A +:104720002F933F934F935F938F939F93EF93FF93B9 +:104730008091C0008C719091C6004091E605509127 +:10474000E7059A012F5F3F4FE091E405F091E50501 +:10475000E40FF51F90834091EA055091EB05241773 +:10476000350710F030E020E04091E8055091E90570 +:104770004217530799F4816090915701892B8093D8 +:104780005701FF91EF919F918F915F914F913F91D1 +:104790002F910F900FBE0F901F9018953093E70543 +:1047A0002093E605E9CFC82FD0E010E000E00C1719 +:1047B0001D07BCF461E085E00E940C0668EC70E027 +:1047C00080E090E00E94900660E085E00E940C0688 +:1047D00068EC70E080E090E00E9490060F5F1F4F51 +:1047E000E6CF60ED77E080E090E00E949006DDCFBC +:1047F000CF93DF93CDB7DEB7CA5CD1090FB6F8947B +:10480000DEBF0FBECDBF789484B5826084BD84B511 +:10481000816084BD85B5826085BD85B5816085BDBB +:1048200080916E00816080936E0010928100809173 +:1048300081008260809381008091810081608093FB +:104840008100809180008160809380008091B10020 +:1048500084608093B1008091B00081608093B0004B +:1048600080917A00846080937A0080917A008260DF +:1048700080937A0080917A00816080937A008091A1 +:104880007A00806880937A001092C10061E085E030 +:104890000E943A0683B7817F83BF83B7816083BF5D +:1048A00080917A008F7780937A0080E880BF8FE3D1 +:1048B00080937E0083E080937F0080916400806815 +:1048C000809364008091640088608093640080918C +:1048D00064008064809364008091640081608093B0 +:1048E00064000E94BC218B019C010C5211402109E3 +:1048F0003109053111442F40310508F09AC0609309 +:104900006A0170936B0180936C0190936D0182E05A +:1049100090E00E946E21843008F09EC08093810157 +:1049200085E090E00E946E219FEF980F9E3F08F077 +:104930009BC080937E0186E090E00E946E218F3FB5 +:1049400009F49BC080937D0187E090E00E946E2176 +:10495000823008F09BC080937F0188E090E00E9445 +:104960006E21823008F09BC080938001809100010D +:1049700090917F01913009F09BC08260809300018B +:104980008091000190918001913009F093C0816085 +:10499000809300018CE090E00E946E21823008F04C +:1049A0008BC0809369018DE090E00E946E2180931E +:1049B0007C018EE090E00E946E2180937B01C0908C +:1049C0006A01D0906B01E0906C01F0906D01C7011D +:1049D000B6010E94820584EFC81681E0D806E10482 +:1049E000F104D4F4A7019601A4E0220F331F441F61 +:1049F000551FAA95D1F760E074E284EF90E00E9421 +:104A0000A234215031093093C5002093C400809115 +:104A1000C0008D7F8093C00084EB93E00E94380F2C +:104A200080E591E00E94391481114EC086E00E9419 +:104A30001C1080E895E2A0E0B0E080936A019093BA +:104A40006B01A0936C01B0936D0160E875E280E0AA +:104A500090E00E944C215BCF1092810160E082E0E7 +:104A600090E00E944A215CCF8AE180937E016AE156 +:104A700085E090E00E944A215ECF83E080937D0133 +:104A800063E086E090E00E944A215ECF81E080935F +:104A90007F0161E087E090E00E944A215ECF81E0E3 +:104AA0008093800161E088E090E00E944A215ECF1F +:104AB0008D7F64CF8E7F6CCF1092690160E08CE0B7 +:104AC00090E00E944A216FCF80E00E941A14811169 +:104AD00002C088E0ACCF82EB93E00E94380F2E96A4 +:104AE0001FAE2E972F961FAE2F972D961FAE1EAE80 +:104AF0002D9787E191E02B969FAF8EAF2B9780E0AB +:104B00000E941A14882329F366EA73E0CE01859681 +:104B10000E945D30F9E4CF2ED12CCC0EDD1E94E046 +:104B2000C90ED11C40E0BE016B5D7F4FC6010E94E3 +:104B3000DA1D082F81119DC0C6010E940A0E0E9435 +:104B4000E121809169018111F2C160E00E943A0681 +:104B500061E080E00E940C0680E00E94E30501977E +:104B600009F4E5C10E94B10E61E08DE00E943A06B1 +:104B700061E08DE00E940C0618E269E170E080E0DF +:104B800090E00E94900685E00E94860F80E00E94DF +:104B9000E305019709F4CBC169E170E080E090E0A2 +:104BA0000E9490068DE00E94860F80E00E94E3053F +:104BB000019709F4BCC1115001F760E875E280E08B +:104BC00090E00E944C2160E082E090E00E944A2147 +:104BD0006AE185E090E00E944A2163E086E090E08F +:104BE0000E944A2161E087E090E00E944A2161E052 +:104BF00088E090E00E944A2160E08CE090E00E9412 +:104C00004A2164E68DE090E00E944A216CE38EE048 +:104C100090E00E944A2180E590E00E9439148823A8 +:104C200009F404CF80E00E941A14882309F451CFBC +:104C30000E94E1210E94B10E61E085E00E943A06E7 +:104C400061E08DE00E943A0661E085E00E940C067A +:104C500061E08DE00E940C0664EF71E080E090E07E +:104C60000E94900685E00E94860F8DE00E94860FCC +:104C7000F3CFFE0131967F01512C1C2DBE016359EB +:104C80007F4F812F9D2D0E94A810019709F048C0E9 +:104C9000AE968FADAE97282F8C3219F080538A30A4 +:104CA00038F4F70121937F015394FFE15F12E6CFBF +:104CB00089E490E08C0F9D1F04960E940A0E10E07C +:104CC00080E044E6442E54E6352E912CBB24B39468 +:104CD000AA24A39463E0862E7AE1772E612CE0E883 +:104CE000CE2EE5E2DE2EE12CF12C851508F083C0F6 +:104CF00021E030E02C0F3D1F280F311DDE01A359AC +:104D0000BF4F40E0282E240EF90191919F019C3263 +:104D100051F0251440F4473031F09D934F5FF2CFAE +:104D20008FEF9FEFB8CFEDE6F0E0EC0FFD1FE40F43 +:104D3000F11D1082CE0183599F4F0E943630111110 +:104D40001BC0CE0183599F4F0E94FA0F6B017C015B +:104D5000FCE2CF1AF1E0DF0AE108F10825E1C21612 +:104D600021E4D2062FE0E206F104E0F56B017C01BC +:104D70001F5F81E0820DB9CF113031F4782E181603 +:104D8000BCF32AE1722EF4CF123031F4882E8F3F1B +:104D900079F793E0892EECCF133039F49FEF980F19 +:104DA000682E933028F3612CE3CF143031F4A82E11 +:104DB0008823F1F2AA24A394DBCF153031F4B82E66 +:104DC0008823B1F2BB24B394D3CF163029F4982EA4 +:104DD000823070F2912CCCCF173059F0183059F442 +:104DE000482EC6CF30E8C32E35E2D32EE12CF12C6D +:104DF000BFCF382EBDCF80916A0190916B01A091F9 +:104E00006C01B0916D018C159D05AE05BF0509F4CF +:104E100073C0C701B6010E944C21C0926A01D092B2 +:104E20006B01E0926C01F0926D01C701B6010E9426 +:104E30008205802F90918101961541F06092810149 +:104E4000662D82E090E00E944A21802F90917E01A1 +:104E5000971541F070927E01672D85E090E00E94E9 +:104E60004A21802F90917D01981541F080927D011B +:104E7000682D86E090E00E944A21802F90917F016A +:104E80009A1541F0A0927F016A2D87E090E00E9480 +:104E90004A21802F909180019B1541F0B0928001B2 +:104EA0006B2D88E090E00E944A21802F909169014B +:104EB000991541F090926901692D8CE090E00E9473 +:104EC0004A21802F90917C01931541F030927C0112 +:104ED000632D8DE090E00E944A21802F90917B010C +:104EE000941561F040927B01642D8EE090E00E9469 +:104EF0004A210E94E12104C080E09CCF8111F9CFBA +:104F00008091000190917F01913069F482608093DB +:104F100000018091000190918001913031F4816015 +:104F2000809300010ECE8D7FF2CF8E7FF9CF8091DE +:104F30008101882319F0833009F060C0B7E18B2E1E +:104F4000B1E09B2E18ECA12E13E0B12E0EE6E02E60 +:104F500001E0F02E84EDC82E83E0D82E1D821E8243 +:104F60001C821B829A82898283E090E00E946E21DB +:104F7000782E84E090E00E946E21182F072D4FEFCD +:104F8000741229C08F3F39F560E083E090E00E9401 +:104F90004A2160E084E090E00E944A2110E000E0B5 +:104FA00080918101833009F0A9C080917B01801735 +:104FB000110610F40C9403301F930F93DF92CF92DD +:104FC000FF92EF920E9476300F900F900F900F900B +:104FD0000F900F90D3C00E3F8FEF180709F780EEA8 +:104FE00093E00E94380F90E080E00E94E31D811161 +:104FF00005C080918101833009F4B0CF8091810197 +:105000008130E9F419A61AA618A61FA287E191E03B +:105010009EA38DA368E074E0CE0184549F4F0E944C +:105020005D3041E1BE0164547F4FCE0189960E94FC +:10503000DA1D8111B6C082EF93E00E9458131D82E1 +:105040001E821C821B8287E191E09A83898361E042 +:1050500082E291E00E94921D11E099249394EDE682 +:10506000AE2EB12CAC0EBD1EE8E0AE0EB11CFFE2C0 +:105070008F2EAAE23A2E8091000183FF03C08AE1BD +:105080000E94530F111104C086E49AE00E94380F69 +:1050900084E49AE00E94380F6EE1CE0183579F4F5F +:1050A0000E94EE1911E0882331F380E00E94DC2297 +:1050B0007C016FE37AE00E945430892B09F07BC0B9 +:1050C0008091000181FF04C086E29AE00E9458139B +:1050D00080E591E00E943914882309F4A7CC80E090 +:1050E0000E941A14882309F4F4CC8091000181FFF6 +:1050F0006BC08EE09AE00E94581366C01F930F9316 +:10510000BF92AF92FF92EF920E94763041E56EE639 +:1051100071E0CE0105960E94DA1D0F900F900F905E +:105120000F900F900F90811125C040E06EE671E066 +:10513000CE0105960E94DA1D882399F08D8D9E8DF3 +:10514000AF8DB8A1892B8A2B8B2B39F4CE01059614 +:105150000E940A0E8EE691E048CFCE0105960E948D +:105160000A0E0F5F1F4F0E3F9FEF190739F686EBB0 +:1051700093E037CFCE0105960E940A0E0F5F1F4FB6 +:10518000602F83E090E00E944A2184E090E00E943A +:105190006E211817F9F2612F84E090E00E944A21F5 +:1051A000D9CFCE0189960E940A0ECE0184549F4F1A +:1051B0000E94E31D44CF6CE07AE0C7010E945430A6 +:1051C000892B21F40E94702111E055CF67E07AE02D +:1051D000C7010E945430892BA9F362E07AE0C7012D +:1051E0000E945430892B09F052C00E94BC216B01EF +:1051F0007C0184E694E00E94380FC701B6010E944A +:10520000AC138FE594E00E9458138CE394E00E9465 +:1052100058138AE394E00E94380F68E0CE01875B60 +:105220009F4F0E94EE192A968FAD2A97883729F44E +:1052300082E394E00E9458131ECFCE01875B9F4FFC +:105240000E94FA0F6B017C01DC01CB018C52914072 +:10525000A109B10985319144AF40B10518F084E24C +:1052600094E0E8CF8AE194E00E94380FC701B601CC +:105270000E94AC1386E194E00E945813C701B60166 +:105280000E944C210E94E12185E00E94D3236EEF11 +:1052900079E0C7010E945430892B09F036C182E0C1 +:1052A00090E00E946E21182F88EE97E00E9458131C +:1052B00084ED97E00E94380F8BEC97E0112361F0AA +:1052C0008FEB97E0113041F087EB97E0123021F03F +:1052D000133021F480EB97E00E94380F86ED93E0C5 +:1052E0000E9454138AE897E00E94380F6AE070E049 +:1052F00080917E010E94D61386E897E00E94380FC5 +:105300006AE070E080917D010E94DD1382E597E004 +:105310000E94380F6AE070E080917C010E94D613F1 +:105320008FE497E00E94380F6AE070E080917B0183 +:105330000E94DD1387E497E00E9458138BE297E008 +:105340000E9458138CE097E00E94581382EF96E079 +:105350000E94581388ED96E00E9458138FEB96E058 +:105360000E9458138BEA96E00E9458138CE896E04E +:105370000E94581387E696E00E94581385E496E051 +:105380000E9458138DE396E00E9458138BE396E039 +:105390000E94380F0E946C05892BE1F386ED93E0A3 +:1053A0000E94060F813361F48AE296E00E9458134E +:1053B00060E082E090E00E944A210E94E12104CF57 +:1053C000823331F486E196E00E94581361E0F1CF18 +:1053D000833331F487E096E00E94581362E0E9CF0E +:1053E000843331F488EF95E00E94581363E0E1CFF5 +:1053F000853379F48AED95E00E94581360E083E0EC +:1054000090E00E944A2160E084E090E00E944A21FE +:10541000DBCE863301F58BEB95E00E94380F0E94BE +:105420006C05892BE1F386ED93E00E94060F8093D3 +:105430007E01682F85E090E00E944A210E94E121D0 +:1054400082EA95E00E94380F6AE070E080917E0168 +:105450000E94DD13B9CE8733D1F485E695E00E9432 +:10546000380F0E94580F97FD09C080937D01682F67 +:1054700086E090E00E944A210E94E1218EE395E0BF +:105480000E94380F6AE070E080917D01E1CF88339F +:10549000D1F48DE095E00E94380F0E94580F97FDDF +:1054A00009C080937C01682F8DE090E00E944A2122 +:1054B0000E94E1218FED94E00E94380F6AE070E0D5 +:1054C00080917C01C5CF8933D1F483EA94E00E94B6 +:1054D000380F0E94580F97FD09C080937B01682FF9 +:1054E0008EE090E00E944A210E94E1218DE794E045 +:1054F0000E94380F6AE070E080917B01A9CF883765 +:1055000009F0D2CE85E794E0F6CD6BEF79E0C701E4 +:105510000E945430892B19F58091000181FF0AC047 +:105520008DEE99E00E94380F6AE070E080918B0167 +:105530000E94DD130E94EA0F813051F4F70130829E +:10554000118240E0B7018DEA93E00E94C6173CCE7D +:1055500081E00E94DC227C010E946430F2CF6AEE7E +:1055600079E0C7010E945430892B09F09CC081E08A +:105570000E94DC227C01009711F410E07CCDAE96F5 +:105580001FAEAE97AF961FAEAF97C753DF4F99834D +:105590008883C95CD0402A961FAE2A972B961FAEEF +:1055A0002B978091AD03807709F467C0F701808164 +:1055B0000DEA13E08F3201F5C753DF4FE881F9811F +:1055C000C95CD04080818F3241F43196C753DF4FA0 +:1055D000F983E883C95CD040EFCF6091B303709149 +:1055E000B403CE01875B9F4F0E940014882309F407 +:1055F00044C08E01075B1F4FAE0147535F4FBE0192 +:1056000065557F4FC753DF4F88819981C95CD04072 +:105610000E947F0B882389F1C753DF4FE881F9810E +:10562000C95CD0408081882391F120E0AE014555CE +:105630005F4FB801CE0183599F4F0E948A1A882379 +:1056400089F080E2FE01E359FF4FDE01A75BBF4F07 +:1056500001900D928A95E1F7CE0183599F4F0E94E8 +:105660000A0EC7CFAE0145555F4FB801CE01835931 +:105670009F4F0E948B208111E4CF8091000181FF18 +:105680007CCF8FEC99E00E94380FC7011EC1AE019C +:1056900045555F4FB801CE0183599F4F0E948B2023 +:1056A000811192CDEACF6CEC79E0C7010E945430B1 +:1056B000892B09F0CDC081E00E94DC228C01892B6E +:1056C00009F45BCF0E94EA0F8330F9F468EC79E0CB +:1056D000C8010E945430892BC1F482E00E94DC2270 +:1056E00020E0AC016DEA73E0CE0105960E94101D2A +:1056F000882309F442CFCE0105960E94D218182FB4 +:10570000CE0105960E940A0EB6CC20E0A8016DEAF3 +:1057100073E0CE0105960E94101D81115DC0C80185 +:105720000E94643060E082E291E00E94921DC12CF0 +:10573000D12C76018D81811177C08091AD03807766 +:1057400009F472C08091BD039091BE03A091BF0384 +:10575000B091C0038F719927AA27BB27892B8A2B69 +:105760008B2B09F061C06DEA73E0CE0105960E94B3 +:105770001917882309F458C08D8183FF28C08076CB +:1057800009F445C02A968FAE2A972B961FAE2B9709 +:10579000BE01675B7F4FC8010E94920F8823B9F05A +:1057A000CE0105960E940A0E41E0BE01675B7F4F65 +:1057B000CE0105960E94DA1DCE0105960E94821543 +:1057C000882329F0FFEFCF1ADF0AEF0AFF0ACE0184 +:1057D00005960E940A0EAECF8D81807771F4CE01BE +:1057E00005960E940A0E41E0B801CE0105960E947E +:1057F000DA1D811107C010E083CFCE0105960E940B +:105800004B167DCFCE0105960E94821578CF60E0C1 +:10581000CE0105960E94AD0D0097C9F2BE01675BEF +:105820007F4F0E947E0DB4CF8091000181FF09C09F +:105830004AE0C701B6010E94661387EB99E00E9417 +:10584000581311E0CD28CE28CF2809F014CC95CEDE +:1058500064EB79E0C7010E945430892BB1F481E0F8 +:105860000E94DC228C01009709F487CE61EB79E07D +:105870000E94543060E0892B31F482E291E00E9472 +:10588000921D182FF8CBC801FACF6CEA79E0C70156 +:105890000E945430892B09F0D1C081E00E94DC22A3 +:1058A0008C01009709F469CE40E0BC01CE01059659 +:1058B0000E94DA1D81110CC08091000181FF5DCE34 +:1058C00087E999E00E94380FC8010E94EB1355CE7A +:1058D00082E00E94DC22009739F1FC010190002057 +:1058E000E9F73197BF01681B790B0E94D60F8C0135 +:1058F0000097D1F00E94FA0FAB01BC01CE010596D2 +:105900000E94BD0C811110C08091000181FF07C071 +:1059100085E899E00E94380FC8010E94EB13CE0180 +:1059200005960E940A0E29CE83E00E94DC22009791 +:1059300009F44FC0FC0101900020E9F73197BF0145 +:10594000681B790B0E94D60F009709F442C00E9491 +:10595000FA0F2B013C0184E00E94DC220097F1F158 +:10596000FC0101900020E9F73197BF01681B790B1A +:105970000E94D60F009791F10E94FA0F6B017C01F3 +:1059800010E000E0BE01675B7F4FCE0105960E94EC +:10599000A810019709F045C02A968FAD2A970F5F8E +:1059A0001F4FA80170E060E04416550666067706B2 +:1059B000C0F121E0C216D104E104F104E9F490EE53 +:1059C000980F9F3580F4682F86ED93E00E942F0F8B +:1059D000D9CF44244A94542C3201BDCFC12CD12CB0 +:1059E0007601C394CDCF8A3071F38D3061F383E8B3 +:1059F00099E00E94380FC6CF42E0C416D104E104FA +:105A0000F10439F460E170E00E94D61381E899E076 +:105A1000F0CF93E0C916D104E104F10409F0B2CF4C +:105A2000D2CFCE0105960E940A0E8091000183FD1F +:105A3000CBCB86ED93E00E945413C6CB6BE779E0A5 +:105A4000C7010E945430892B09F06FC081E00E9489 +:105A5000DC228C01009709F490CD41E0BC01CE011D +:105A600005960E94DA1D811107C08091000181FF17 +:105A700084CD86E699E026CF82E00E94DC22F09079 +:105A80000001009731F1FC0101900020E9F7319706 +:105A9000BF01681B790B0E94D60F8C010097C9F0DB +:105AA0000E94FA0FAB01BC01CE0105960E94BD0C0D +:105AB00081110FC084E599E0F1FE31CF2BCF1D316C +:105AC00040F442E050E064E271E0CE0105960E94AD +:105AD000D1118091000183FF03C08AE10E94530F1E +:105AE00082E599E00E94380F6EE1CE0183579F4F07 +:105AF0000E94EE19182F8823B1F0E82EF12CA7018F +:105B0000BE0163577F4FCE0105960E94D111E81662 +:105B1000F906A9F28091000181FF6DCE8CE399E036 +:105B20000E94581368CE11E0EBCD67E379E0C7011E +:105B30000E945430892B69F581E00E94DC22009795 +:105B400009F41BCD40E0BC01CE0105960E94DA1D90 +:105B50008823A9F06D8D7E8D8F8D98A14AE00E94DB +:105B60006613CE0105960E940A0E11E08091000195 +:105B700083FD81CA86ED93E00E9454137CCA809114 +:105B8000000181FF04C084E399E00E94380F10E017 +:105B9000EDCF6FE279E0C7010E945430892B09F004 +:105BA00052C182E299E00E94380F8091D203823084 +:105BB000A9F08330B1F08130B9F48EE199E00E9410 +:105BC0005813BE0163597F4F8AE00E94D3078111A9 +:105BD0000EC08EEF98E00E94380FCFCC8AE199E09A +:105BE000EECF85E199E0EBCF8DE099E0E8CF8CEE48 +:105BF00098E00E94380F60E170E0AE968FADAE97EE +:105C00000E94DD1383EE98E00E94380FAF968FADAF +:105C1000AF970E94530FE0968FADE0970E94530F0D +:105C200086ED93E00E94541389ED98E00E94380FAE +:105C30000DE610E00C0F1D1F0D5F1F4FF801819145 +:105C40008F010E94530FA016B106C1F78DEC98E0AA +:105C50000E94380FE6968FADE6976AE070E0829575 +:105C60008F700E94D6138BEC98E00E94380FE69656 +:105C70008FADE6976AE070E08F700E94DD138BEBCA +:105C800098E00E94380FEA966CAD7DAD8EAD9FAD69 +:105C9000EA974AE00E94661386ED93E00E9454134F +:105CA00086EA98E00E94380FEC968FADEC976AE098 +:105CB00070E08F700E94D61384EA98E00E94380F3B +:105CC000EC966FADEC9762956F7070E06053784F13 +:105CD000EB968FADEB978F70F0E18F9FC001112491 +:105CE000680F791F072E000C880B990B0E94AC13CC +:105CF00086ED93E00E945413BE01675B7F4F89E0FD +:105D00000E94D307882309F499C02A968FAD2A9759 +:105D1000807C09F060C060968FAD60978370C82E5C +:105D2000D12CDC2CCC24DD0CDD0C61968FAD619781 +:105D300024E0829FC0011124C82AD92A62968FAD1F +:105D400062978295869586958370C82A4FEFC41A0C +:105D5000D40AF12CE12C63968FAD63978370880F82 +:105D600064969FAD649797FB992790F9892B2F969E +:105D70009FAD2F979F70890F9927991F079704C090 +:105D8000CC0CDD1CEE1CFF1C8A95D2F7C114D1048B +:105D9000E104F10409F452C0BE01675B7F4F89E062 +:105DA0000E94D307882309F449C088E998E00E943B +:105DB000380FC701B6010E9493332DEB37E346E05D +:105DC0005AE30E94F9330E9464334AE00E9466134A +:105DD00084E998E090C9803489F56396CFAC6397E5 +:105DE000D12CF12CE12C8FEFC81AD80AE80AF80A56 +:105DF00062968FAD629790E0B0E0A0E0BA2FA92F35 +:105E0000982F8827C80ED91EEA1EFB1E61968FADFB +:105E100061978F7390E0B0E0A0E0DC0199278827BC +:105E20008C0D9D1DAE1DBF1D6C017D014AE0CC0C8B +:105E3000DD1CEE1CFF1C4A95D1F7A8CF85E898E041 +:105E40000E9458139ACB60E878E0C7010E94543052 +:105E5000892B09F4B9C96AE778E0C7010E94543078 +:105E6000009719F4FC01099588CB66E778E0C70133 +:105E70000E945430892BD9F481E00E94DC228C01ED +:105E8000009709F47ACB41E5BC01CE0105960E944A +:105E9000DA1D882329F0CE0105960E940A0E94C9C6 +:105EA0008091000181FF69CB80E698E00BCD69E528 +:105EB00078E0C7010E945430892B49F481E00E94A8 +:105EC000DC22009709F459CB0E94E31D7DC965E5EA +:105ED00078E0C7010E945430892B19F487E398E0D9 +:105EE0007ACE62E378E0C7010E945430892B81F5B5 +:105EF00081E00E94DC227C01009709F43ECB6FE236 +:105F000078E00E945430082F811114C090928001D3 +:105F1000809100018160809300016091800188E0A0 +:105F200090E00E944A210E94E12111E0002309F43F +:105F3000A2C823CB6BE278E0C7010E945430082F3F +:105F40008111EBCF10928001809100018E7FE3CF11 +:105F500063E278E0C7010E945430892B41F581E06B +:105F60000E94DC227C01009709F407CB60E278E014 +:105F70000E945430082F81110CC090927F018091B3 +:105F8000000182608093000160917F0187E090E0D2 +:105F9000C8CF6CE178E0C7010E945430082F81110E +:105FA000F3CF10927F01809100018D7FEBCF68E1EC +:105FB00078E0C7010E94543010910001892BF1F460 +:105FC00081E00E94DC227C01009709F4D6CA65E1D9 +:105FD00078E00E945430811108C0186010930001CD +:105FE00011E0882309F447C8C8CA61E178E0C70115 +:105FF0000E9454308111F4CF177FF0CF11FFBDCA3A +:106000008FEF97E040CB10E000E00C94DC27E6ED4A +:10601000F3E01382128288EE93E0A0E0B0E0848384 +:106020009583A683B78385E091E091838083E4EE36 +:10603000F5E082EE93E09183808381E092E09783A4 +:106040008683158214821382128210928B01109221 +:10605000AD031092AE0384E68093CD031092D20379 +:1060600080E58093D3031092D4030895FC01882720 +:106070009927E89421912032E9F3293010F02E304D +:10608000C8F32B3241F02D3239F4689404C00E94D9 +:106090006E30820F911D219120532A30C0F31EF4DF +:1060A000909581959F4F0895FB01DC018D9105909E +:1060B00080190110D9F3990B0895FB01DC010590BB +:1060C0000D920020E1F70895DC016C9161566A3170 +:1060D00008F0605E6F5B6D93C1F708957AE0979F5B +:1060E000902D879F802D910D11240895AEE0B0E092 +:1060F000ECE7F0E30C943B330D891E898EE08C8332 +:106100001A8309838FEF9FE79E838D83AE01475EDD +:106110005F4F6F89788DCE0101960E9499302F8153 +:106120003885020F131FF80110822E96E4E00C94BC +:106130005733ABE0B0E0EFE9F0E30C942D337C0192 +:106140003B018A01FC0117821682838181FFC8C14D +:10615000CE0101965C01F7019381F30193FD8591D6 +:1061600093FF81913F01882309F453C1853239F4AB +:1061700093FD859193FF81913F01853229F4B70109 +:1061800090E00E948932E7CF912C212C312CFFE145 +:10619000F31538F08B3211F190F4803209F183322B +:1061A00029F137FC3CC020ED280F2A3050F536FE8F +:1061B00020C08AE0989E200D1124922E06C08D32B8 +:1061C00091F0803371F7689430F8F30193FD859175 +:1061D00093FF81913F018111DACF21C0689431F89A +:1061E000689432F8F2CF689433F8EFCF689434F8BB +:1061F000ECCFEAE02E9E200D1124222E689435F873 +:10620000E4CF8E3229F436FC04C1689436F8DDCF31 +:106210008C3619F4689437F8D8CF8836B1F2982FB5 +:106220009F7D95549330E0F08336A1F18337C1F11F +:10623000833509F063C02801F2E04F0E511CF801CC +:10624000C080D180692D70E036FC02C06FEF7FEF17 +:10625000C6010E9473324C01689437F882010AC06B +:106260000C5F1F4FFFE3F98388248394912C650111 +:10627000E89437F833FE2DC0522C8114910471F547 +:10628000552009F468CFB70180E290E00E9489327E +:106290005A94F6CFF801808189830E5F1F4FE4CFB7 +:1062A0002801F2E04F0E511CF801C080D180692D09 +:1062B00070E036FC02C06FEF7FEFC6010E947E32B5 +:1062C0004C018201D5CFB70180E290E00E94893273 +:1062D0002A942814190409F0B0F7CECFF60137FC40 +:1062E000859137FE81916F01B70190E00E9489325C +:1062F00051105A94F1E08F1A9108BFCF843619F0EB +:10630000893609F077C0F80137FE6BC06081718172 +:10631000828193810C5F1F4FF32DFF763F2E97FFF5 +:1063200009C090958095709561957F4F8F4F9F4FD5 +:10633000689437F82AE030E0A5010E94B932C82EEF +:10634000CA188C2C432C36FE0CC0E89440F8C914B3 +:1063500040F434FE05C032FC03C0F32DFE7E4F2E08 +:10636000892C44FE95C0FE01EC0DF11D8081803327 +:1063700009F087C0242D297E422E842D8870582E46 +:1063800043FC95C040FE8FC09C2C821418F42C0C4A +:10639000922C981844FE91C0B70180E390E00E94CF +:1063A000893242FE09C088E790E041FE02C088E5DC +:1063B00090E0B7010E948932C91408F48AC0CA94D7 +:1063C000D12C9FEFC91AD90ACA0CDB1CF6018291A5 +:1063D0006F01B70190E00E948932AC14BD04B1F79F +:1063E0004FCF60817181072E000C880B990B0E5FD7 +:1063F0001F4F92CFD32CE894D4F82AE030E08537B1 +:1064000039F1232D297FD22E8F3601F148F48835BA +:10641000A9F0F701868197812B96E2E10C9449332C +:10642000803749F08837A9F7D4FE02C06894D2F8C3 +:1064300020E130E00DC06894D4F8F6CF34FE03C0FC +:10644000822F8660D82E20E132E002C028E030E0C2 +:10645000F801D7FE0FC060817181828193810C5F4A +:106460001F4FA5010E94B932C82ECA183D2CE894CE +:1064700037F867CF6081718190E080E00E5F1F4F39 +:10648000F0CF42FC02C0839478CF8394839475CF7D +:10649000842D867809F471CFF6CFB70180E290E0C1 +:1064A0000E94893283948214C0F3512C73CF522CF2 +:1064B0005818821408F46ECFF8CF842D867809F42A +:1064C0007BCF8BE241FE80E247FC8DE2B70190E09A +:1064D00071CFB70180E390E00E9489329A946CCF2B +:1064E0008FEF9FEF99CFFC01059061507040011034 +:1064F000D8F7809590958E0F9F1F0895FC016150ED +:10650000704001900110D8F7809590958E0F9F1FD5 +:1065100008950F931F93CF93DF93182F092FEB014B +:106520008B8181FD09C01FEF0FEF812F902FDF912D +:10653000CF911F910F91089582FF14C02E813F814A +:106540008C819D81281739073CF4E881F981CF01BE +:1065500001969983888310838E819F8101969F8302 +:106560008E83E3CFE885F985812F0995892BA1F3E7 +:10657000DACFFA01AA27283051F1203181F1E894CD +:106580006F936E7F6E5F7F4F8F4F9F4FAF4FB1E026 +:106590003ED0B4E03CD0670F781F891F9A1FA11D21 +:1065A000680F791F8A1F911DA11D6A0F711D811D22 +:1065B000911DA11D20D009F468943F912AE0269FE7 +:1065C00011243019305D3193DEF6CF010895462F46 +:1065D0004770405D4193B3E00FD0C9F7F6CF462F27 +:1065E0004F70405D4A3318F0495D31FD4052419390 +:1065F00002D0A9F7EACFB4E0A6959795879577954D +:106600006795BA95C9F700976105710508959B01D3 +:10661000AC010A2E06945795479537952795BA955C +:10662000C9F7620F731F841F951FA01D0895F99964 +:10663000FECF92BD81BDF89A992780B50895262F87 +:10664000F999FECF1FBA92BD81BD20BD0FB6F89457 +:10665000FA9AF99A0FBE019608952F923F924F929F +:106660005F926F927F928F929F92AF92BF92CF92E2 +:10667000DF92EF92FF920F931F93CF93DF93CDB7EB +:10668000DEB7CA1BDB0B0FB6F894DEBF0FBECDBF63 +:1066900009942A88398848885F846E847D848C8434 +:1066A0009B84AA84B984C884DF80EE80FD800C813D +:1066B0001B81AA81B981CE0FD11D0FB6F894DEBF20 +:1066C0000FBECDBFED0108950E94D83388F09F57CB +:1066D00098F0B92F9927B751B0F0E1F0660F771F06 +:1066E000881F991F1AF0BA95C9F714C0B13091F0FC +:1066F0000E94F233B1E008950C94F233672F782FA3 +:106700008827B85F39F0B93FCCF3869577956795C0 +:10671000B395D9F73EF490958095709561957F4F2C +:106720008F4F9F4F0895E89409C097FB3EF49095D2 +:106730008095709561957F4F8F4F9F4F9923A9F05A +:10674000F92F96E9BB279395F695879577956795E9 +:10675000B795F111F8CFFAF4BB0F11F460FF1BC02D +:106760006F5F7F4F8F4F9F4F16C0882311F096E9C0 +:1067700011C0772321F09EE8872F762F05C066236E +:1067800071F096E8862F70E060E02AF09A95660F27 +:10679000771F881FDAF7880F9695879597F90895E0 +:1067A00057FD9058440F551F59F05F3F71F04795C2 +:1067B000880F97FB991F61F09F3F79F087950895A7 +:1067C000121613061406551FF2CF4695F1DF08C0C6 +:1067D000161617061806991FF1CF869571056105E3 +:1067E00008940895E894BB2766277727CB0197F98B +:1067F00008950E940C340C947D340E946F3438F05C +:106800000E94763420F0952311F00C9466340C9499 +:106810006C3411240C94F3330E94D03370F3959FA1 +:10682000C1F3950F50E0551F629FF001729FBB2787 +:10683000F00DB11D639FAA27F00DB11DAA1F649F23 +:106840006627B00DA11D661F829F2227B00DA11DD6 +:10685000621F739FB00DA11D621F839FA00D611D5C +:10686000221F749F3327A00D611D231F849F600D7D +:10687000211D822F762F6A2F11249F5750409AF0A6 +:10688000F1F088234AF0EE0FFF1FBB1F661F771F32 +:10689000881F91505040A9F79E3F510580F00C94FD +:1068A00066340C94F3335F3FE4F3983ED4F386955B +:1068B00077956795B795F795E7959F5FC1F7FE2B9D +:1068C000880F911D9695879597F9089597F99F6779 +:1068D00080E870E060E008959FEF80EC0895002468 +:1068E0000A941616170618060906089500240A9435 +:1068F00012161306140605060895092E0394000CBB +:1069000011F4882352F0BB0F40F4BF2B11F460FF49 +:1069100004C06F5F7F4F8F4F9F4F0895AA1BBB1B13 +:1069200051E107C0AA1FBB1FA617B70710F0A61B8F +:10693000B70B881F991F5A95A9F780959095BC01B0 +:10694000CD010895A1E21A2EAA1BBB1BFD010DC0AB +:10695000AA1FBB1FEE1FFF1FA217B307E407F5070F +:1069600020F0A21BB30BE40BF50B661F771F881FEB +:10697000991F1A9469F760957095809590959B0181 +:10698000AC01BD01CF0108950E94D534A59F900DA3 +:10699000B49F900DA49F800D911D11240895EE0FBA +:1069A000FF1F0590F491E02D0994A29FB001B39FC1 +:1069B000C001A39F700D811D1124911DB29F700D08 +:1069C000811D1124911D0895FB01DC0104C08D91EE +:1069D0000190801921F441505040C8F7881B990B51 +:1069E0000895FB01DC0102C001900D92415050401E +:1069F000D8F70895DC0101C06D9341505040E0F795 +:106A00000895FB01DC014150504048F001900D9287 +:106A10000020C9F701C01D9241505040E0F7089591 +:046A2000F894FFCF18 +:106A240003000000002F0FE10E3C10E00E2D0F06B6 +:106A34000FC50E00000000331330133C1034100D4A +:086A44000A002F000A0D0000FA +:00000001FF diff --git a/Binaries/OpenLog_v43_with_bootloader.hex b/Binaries/OpenLog_v43_with_bootloader.hex new file mode 100644 index 0000000..86e7802 --- /dev/null +++ b/Binaries/OpenLog_v43_with_bootloader.hex @@ -0,0 +1,1736 @@ +:020000040000FA +:100000000C9442050C946A050C946A050C946A05DC +:100010000C946A050C946A050C946A050C946A05A4 +:100020000C946A050C946A050C946A050C946A0594 +:100030000C946A050C946A050C946A050C946A0584 +:100040000C94FE220C946A050C948B230C94482388 +:100050000C946A050C946A050C946A050C946A0564 +:100060000C946A050C946A05636172642E696E696A +:10007000740066696C652E6F70656E00726F6F74C8 +:100080002E696E697400766F6C756D652E696E6988 +:1000900074004572726F7220007E007E007E003C0C +:1000A00000626175642C6573636170652C657363B0 +:1000B000232C6D6F64652C766572622C6563686FA6 +:1000C0002C69676E6F726552582C6D617846696C49 +:1000D0006573697A652C6D617846696C656E756DBE +:1000E0000000256C642C25642C25642C25642C25AB +:1000F000642C25642C25642C25642C256400006365 +:100100006F6E6669672E74787400002000626175F6 +:10011000640909093A204D656E7520746F20636F7C +:100120006E666967757265206261756420726174BC +:1001300065007365740909093A204D656E75207470 +:100140006F20636F6E66696775726520737973746B +:10015000656D206D6F6465007265736574090909CA +:100160003A2043617573657320756E697420746FEE +:100170002072657365742C207573657320706172CD +:10018000616D657465727320696E20636F6E666958 +:10019000672066696C65006469736B0909093A2018 +:1001A00053686F7773206361726420696E666F7243 +:1001B0006D6174696F6E0073697A65203C66696C65 +:1001C000653E09093A2057726974652073697A653A +:1001D000206F66203C66696C653E20746F207465F4 +:1001E000726D696E616C0072656164203C66696C59 +:1001F000653E203C73746172743E203C6C656E6792 +:1002000074683E203C747970653E3A204F75747076 +:10021000757473203C6C656E6774683E20627974F7 +:100220006573206F66203C66696C653E20746F20A4 +:10023000746865207465726D696E616C2073746199 +:100240007274696E67206174203C73746172743ECD +:100250002E204F6D6974203C73746172743E20616E +:100260006E64203C6C656E6774683E20746F20720B +:100270006561642077686F6C652066696C652E2007 +:100280003C747970653E2031207072696E74732001 +:10029000696E2041534349492C203220696E204821 +:1002A00045582E006C730909093A2053686F77731B +:1002B0002074686520636F6E74656E74206F6620AD +:1002C0007468652063757272656E74206469726506 +:1002D00063746F72792E2E006D64203C64697265C0 +:1002E00063746F72793E09093A20437265617465DF +:1002F000732061203C6469726563746F72793E009B +:10030000617070656E64203C66696C653E09093AEF +:1003100020417070656E6473207465787420746F0A +:1003200020656E64206F66203C66696C653E006ED9 +:100330006577203C66696C653E09093A2043726521 +:1003400061746573203C66696C653E004261736947 +:100350006320636F6D6D616E64733A0043757272F2 +:10036000656E742046696C654E756D6265723A20E3 +:10037000004F70656E4C6F672076342E330000009E +:100380000000250028002B000000000023002600AC +:10039000290000000008000201000003040700001B +:1003A000000000000000636F6E6669672E74787449 +:1003B00000003200310021546F6F206D616E792092 +:1003C0006C6F67733A3221004C4F47253035752EDC +:1003D000545854004C4F47253035752E545854000E +:1003E00021546F6F206D616E79206C6F67733A31A5 +:1003F00021004572726F72206372656174696E6765 +:10040000205345514C4F47005345514C4F473030D6 +:100410002E545854000062707300476F696E672055 +:10042000746F20004F7574206F6620626F756E6464 +:10043000730045786974696E67003E00456E7465A7 +:1004400072206E6577206261756420726174652028 +:100450002827782720746F2065786974293A00204E +:10046000627073000A0D43757272656E742072615A +:1004700074653A200045786974696E67000A0D4D0D +:100480006178696D756D2066696C656E756D626504 +:100490007220696E20726F74617465206D6F64657F +:1004A0003A20000A0D456E746572206D6178696DA1 +:1004B000756D206C6F672066696C65206E756D6266 +:1004C000657220696E20726F74617465206D6F644F +:1004D0006520283020746F20323535293A20000AF3 +:1004E0000D4D6178206C6F672066696C65207369BB +:1004F0007A6520696E20726F74617465206D6F6417 +:1005000065206E6F7720284D42293A20000A0D455C +:100510006E746572206D61782073697A65206F66EC +:10052000206C6F672066696C657320696E204D4290 +:1005300020283020746F20323534293A20000A0DEB +:100540004E756D626572206F6620657363617065BC +:100550002063686172616374657273206E6565649F +:1005600065643A20000A0D456E746572206E756DE3 +:10057000626572206F6620657363617065206368D1 +:10058000617261637465727320746F206C6F6F6B3E +:1005900020666F7220283020746F20323535293A5A +:1005A00020000A0D4E6577206573636170652063D6 +:1005B00068617261637465723A2000456E74657299 +:1005C0002061206E657720657363617065206368C4 +:1005D000617261637465723A20004E6577206669C6 +:1005E0006C65206E756D626572207265736574202E +:1005F000746F207A65726F00526F74617465206C3D +:100600006F6767696E6700436F6D6D616E64207020 +:10061000726F6D707400417070656E642066696CF5 +:1006200065206C6F6767696E67004E657720666945 +:100630006C65206C6F6767696E67003E00782920E3 +:1006400045786974003929204D61782066696C65A8 +:10065000206E756D62657220696E20726F746174B0 +:1006600065206D6F6465003829204D6178206669CA +:100670006C652073697A6520284D422920696E20B7 +:10068000726F74617465206D6F6465003729204E48 +:10069000756D626572206F66206573636170652099 +:1006A00063686172616374657273003629204573F3 +:1006B000636170652063686172616374657200359F +:1006C00029205265736574206E65772066696C65B4 +:1006D000206E756D626572003429204D6F6465204F +:1006E000746F20726F74617465206C6F6767696ED8 +:1006F00067003329204D6F646520746F20636F6D30 +:100700006D616E642070726F6D7074003229204DBF +:100710006F646520746F20617070656E6420666917 +:100720006C65206C6F6767696E67003129204D6FBB +:10073000646520746F206E65772066696C65206C37 +:100740006F6767696E67004368616E67653A002C82 +:100750002000526F74617465206D6F6465206D6157 +:10076000782066696C652073697A6520284D422976 +:1007700020616E64206D61782066696C6520636F0E +:10078000756E743A20002078200043757272656E91 +:10079000742065736361706520636861726163745E +:1007A000657220616E6420616D6F756E743A200011 +:1007B000526F7461746500436F6D6D616E640041CA +:1007C0007070656E642066696C65004E65772066A2 +:1007D000696C650043757272656E7420626F6F7428 +:1007E000206D6F64653A20000D0A53797374656D4E +:1007F00020436F6E66696775726174696F6E00750C +:100800006E6B6E6F776E20636F6D6D616E643A20F4 +:10081000006F6666006F6E0065656D006F6666004E +:100820006F6E00766572626F7365006F6666006F4B +:100830006E006563686F005468697320636F6D6D47 +:10084000616E6420686173206265656E2072656DFB +:100850006F7665640070776400617070656E640027 +:100860004572726F72206372656174696E6720668B +:10087000696C653A20006E65770072657365740077 +:1008800073796E63007265616443534420666169E5 +:100890006C656400204D4200436172642053697AA4 +:1008A000653A20002F004D616E7566616374757244 +:1008B000696E6720646174653A20005365726961EE +:1008C0006C206E756D6265723A20002E000A0D561E +:1008D000657273696F6E3A200050726F647563744D +:1008E0003A20004F454D2049443A20004D616E7535 +:1008F00066616374757265722049443A20007265BE +:100900006164434944206661696C656400556E6B9F +:100910006E6F776E00534448430053443200534493 +:1009200031000A4361726420747970653A20006472 +:1009300069736B002D310073697A65006572726F9F +:10094000722077726974696E6720746F2066696CB3 +:1009500065003C004572726F72207365656B696E4D +:100960006720746F20004661696C656420746F2095 +:100970006F70656E2066696C6520007772697465BA +:100980000020002E004572726F72207365656B69DE +:100990006E6720746F20004661696C656420746F17 +:1009A000206F70656E2066696C65200072656164F9 +:1009B000002E2E006364002066696C652873292070 +:1009C00064656C65746564002D726600726D004527 +:1009D00072726F72206372656174696E67206469F8 +:1009E000726563746F72793A20006D6400566F6CA3 +:1009F000756D6520697320464154006C7300736502 +:100A00007400626175640068656C70003F0046693F +:100A10006C652073797374656D20696E69746961A2 +:100A20006C697A656400436C6F73696E6720646FEC +:100A3000776E2066696C652073797374656D0069E3 +:100A40006E6974003E0021000000000024002700B1 +:100A50002A0001020408102040800102040810202E +:100A60000102040810200404040404040404020223 +:100A700002020202030303030303200020002F00ED +:100A80002000073011241FBECFEFD8E0DEBFCDBF5E +:100A900011E0A0E0B1E0E4E2FAE602C005900D92B8 +:100AA000A832B107D9F725E0A8E2B1E001C01D9254 +:100AB000AC3EB207E1F715E0C2E4D5E004C02197EF +:100AC000FE010E94CF34C134D107C9F70E94F82338 +:100AD0000C9410350C9400002FB7F8948091E60523 +:100AE0009091E7054091E8055091E905841B950B2D +:100AF0002FBF97FF06C02091EA053091EB05820FCA +:100B0000931F0895CF92DF92EF92FF926B017C01C9 +:100B10001092C10086E08093C20060E079E08DE32E +:100B200090E0A70196010E94A234C901213060E241 +:100B3000360730F4C11461EED606E104F104B1F4D5 +:100B40001092C000C901969587950197292F269587 +:100B50002093C500969587958093C40088E980937B +:100B6000C100FF90EF90DF90CF90089522E0209396 +:100B7000C000EBCF833081F028F4813099F08230CF +:100B8000A9F008958730A9F08830C9F08430B1F415 +:100B9000809180008F7D03C0809180008F7780934B +:100BA0008000089584B58F7784BD089584B58F7DC6 +:100BB000FBCF8091B0008F778093B0000895809133 +:100BC000B0008F7DF9CFCF93DF93282F30E0F9016C +:100BD000EE56FC4F8491F901EE5AF54FD491F9018C +:100BE000EA59F54FC491CC23A1F081110E94BA05B6 +:100BF000EC2FF0E0EE0FFF1FE857FC4FA591B491EA +:100C0000EC91ED2381E090E009F480E0DF91CF9159 +:100C1000089580E090E0FACF1F93CF93DF93282FC1 +:100C200030E0F901EE56FC4F8491F901EE5AF54F90 +:100C3000D491F901EA59F54FC491CC23A9F0162FAC +:100C400081110E94BA05EC2FF0E0EE0FFF1FE25871 +:100C5000FC4FA591B4918FB7F894EC91111108C095 +:100C6000D095DE23DC938FBFDF91CF911F91089544 +:100C7000DE2BF8CFCF93DF9390E0FC01EE5AF54FD7 +:100C800024918A59954FFC0184918823D1F090E0FA +:100C9000880F991FFC01E85BF54FA591B491FC0109 +:100CA000E258FC4FC591D49161110EC09FB7F894E2 +:100CB0008C91E22FE0958E238C932881E223E883A8 +:100CC0009FBFDF91CF9108958FB7F894EC91E22BFD +:100CD000EC938FBFF6CF3FB7F89480916501909168 +:100CE0006601A0916701B091680126B5A89B05C077 +:100CF0002F3F19F00196A11DB11D3FBFBA2FA92F9B +:100D0000982F8827BC01CD01620F711D811D911D97 +:100D100042E0660F771F881F991F4A95D1F7089503 +:100D20008F929F92AF92BF92CF92DF92EF92FF92FB +:100D30004B015C010E946B066B017C010E946B06FB +:100D40006C197D098E099F09683E734081059105E4 +:100D5000A8F321E0821A9108A108B10888EEC80E14 +:100D600083E0D81EE11CF11C81149104A104B1049C +:100D700029F7FF90EF90DF90CF90BF90AF909F90BA +:100D80008F9008952FB7F89460916101709162017E +:100D900080916301909164012FBF0895CF93DF93F9 +:100DA000EC01E981FA8120819181809156018823AB +:100DB00061F08FB7F89430915601313099F43DB31A +:100DC000309355013DB33DBB8FBF2CBD9DBDE98127 +:100DD000FA8160E082810E940C0681E08B83DF91C2 +:100DE000CF91089580935501F0CF8EBD0DB407FECD +:100DF000FDCF08958FEF8EBD0DB407FEFDCF8EB5EC +:100E000008950F931F93CF93DF93EC010E94C206C6 +:100E10008B010E94FA068F3F69F00E94C206601B98 +:100E2000710BC617D707A8F780E0DF91CF911F910C +:100E30000F91089581E0F9CFCF93DF93FC012381D7 +:100E40002223D1F0EC010180F281E02D61E082816A +:100E50000E940C068FEF0E94F506809156018823B0 +:100E600051F09FB7F894209156018091550121309F +:100E700031F48DBB9FBF1B82DF91CF9108958FBF4F +:100E8000FACFCF92DF92EF92FF920F931F93CF93FF +:100E9000DF93EC018B017A010E94C2066B010E9474 +:100EA000FA068C838F3FB1F40E94C2066C197D094B +:100EB000693E7340A0F385E58883CE010E941C073C +:100EC00080E0DF91CF911F910F91FF90EF90DF9025 +:100ED000CF9008958E3F11F080E5EECFE1E0EE1A5D +:100EE000F1088FEF8EBDF8012FEF0DB407FEFDCF97 +:100EF0008EB52EBD8193CF01801B910B8E159F0562 +:100F0000A0F30DB407FEFDCF8EB50E0D1F1DF80129 +:100F100080831C820E94FA060E94FA0681E0D1CFEB +:100F2000DF92EF92FF920F931F93CF93DF938C0189 +:100F3000C62FD22FF32EE42ED52EFC0183818111F2 +:100F400003C0C8010E94CE06CC2321F08CE291E0C0 +:100F50000E9401078C2F80640E94F5068D2D0E944F +:100F6000F5068E2D0E94F5068F2D0E94F5068D2F19 +:100F70000E94F50687E8C11101C085E90E94F506C7 +:100F80000E94FA06CBE00E94FA06F801848387FFEC +:100F900002C0C150C1F7DF91CF911F910F91FF9017 +:100FA000EF90DF900895CF93DF93EB0120E030E0E6 +:100FB000A901682F8DEC93E00E949007882349F0E7 +:100FC00083E58093CD038DEC93E00E941C07C0E085 +:100FD0000EC040E150E0BE018DEC93E00E9441075D +:100FE000C82F882381F38DEC93E00E941C078C2F7F +:100FF000DF91CF9108950F931F93CF93DF93EC016F +:1010000089018D81833039F089E0440F551F661FB7 +:10101000771F8A95D1F79A01AB0168E1CE010E9452 +:101020009007882319F082E3888339C08EEF0E94ED +:10103000F506F80180818EBD818132961E5F0DB468 +:1010400007FEFDCF8EBDE017F10711F08191F7CFBC +:101050000DB407FEFDCF8FEF0E94F5068FEF0E94C3 +:10106000F5060E94FA068C838F71853099F480ED25 +:1010700097E00E940107182F8AE51123A9F220E0CA +:1010800030E0A9016DE0CE010E949007882361F055 +:1010900089E2CACF87E58883CE010E941C07CE0172 +:1010A0000E941C0710E007C00E94FA068111F0CFD1 +:1010B000CE010E941C07812FDF91CF911F910F91CC +:1010C00008950F931F93CF93DF93EC0189018D81D6 +:1010D000833039F089E0440F551F661F771F8A95CA +:1010E000D1F79A01AB0161E1CE010E9490078823FC +:1010F00039F080E38883CE010E941C0710E00CC009 +:1011000040E052E0B801CE010E944107182F882329 +:1011100091F3CE010E941C07812FDF91CF911F9187 +:101120000F910895EF92FF921F93CF93DF93FC01ED +:10113000208111E020FF14C0EC017C01F7E0EF0EEC +:10114000F11C4B815C816D817E81E981FA8197017F +:10115000808191810E94FB07182F811108C010E047 +:10116000812FDF91CF911F91FF90EF90089588819B +:1011700081FD04C088818E7F8883F2CFE981FA8166 +:101180004B815C816D817E8184859585A685B7853F +:10119000480F591F6A1F7B1F9701808191810E9410 +:1011A000FB078111E7CFDBCFCF92DF92EF92FF9267 +:1011B0001F93CF93DF93EC016A017B01122F8B8188 +:1011C0009C81AD81BE818C159D05AE05BF05B1F03A +:1011D000CE010E94920881110AC090E080E0DF9168 +:1011E000CF911F91FF90EF90DF90CF90089512FF65 +:1011F0000CC01882CB82DC82ED82FE821370888163 +:10120000182B1883CE010796EACFE981FA819E0157 +:10121000295F3F4FB701A601808191810E9461083B +:101220008111E7CFDACF8F929F92AF92BF92CF9288 +:10123000DF92EF92FF920F931F9310928B0141E088 +:1012400050E060E070E040938E0150938F01609316 +:1012500090017093910126E831E03093A80120932A +:10126000A7011092A6014FEF5FEFBA014093A901C9 +:101270005093AA016093AB017093AC01882309F4E9 +:1012800050C020E040E050E0BA0186EA91E00E94C0 +:10129000D408009761F480E01F910F91FF90EF90C8 +:1012A000DF90CF90BF90AF909F908F900895FC01FA +:1012B000E254FE4F20812F7771F78A539E4FFC0135 +:1012C000C080D180E280F380C114D104E104F10434 +:1012D00011F320E0B701A60186EA91E00E94D4084C +:1012E000FC01892BC1F2838594858115924099F682 +:1012F0008089823081F686859785892B61F22585E4 +:10130000209388018FEF820F8093890180E091E024 +:10131000291769F08F5F893041F488E080938A0152 +:10132000BACFC12CD12C7601D4CF990FF1CF8093B5 +:101330008A014689578970E060E04115510521F422 +:1013400044A155A166A177A14093920150939301C6 +:101350006093940170939501268537854601570166 +:10136000820E931EA11CB11C80929A0190929B0147 +:10137000A0929C01B0929D012189328930938D0108 +:1013800020938C01440F551F661F771F480D591D70 +:101390006A1D7B1D4093A2015093A3016093A40199 +:1013A0007093A50121893289A5E0220F331FAA95E8 +:1013B000E1F721503E4F232F33272695420F531F2D +:1013C000611D711D409396015093970160939801A0 +:1013D000709399010389148930E020E0011511050B +:1013E00021F400A111A122A133A1C41AD50AE60A51 +:1013F000F70AC00ED11EE21EF31E04C0F694E79455 +:10140000D794C7948A95D2F7D701C6010196A11D3A +:10141000B11D80939E0190939F01A093A001B09372 +:10142000A10185EFC8168FE0D806E104F10420F48D +:101430008CE080938B012FCF80E125EFC2162FEF38 +:10144000D206E104F10468F084A595A5A6A5B7A588 +:101450008093A2019093A301A093A401B093A5014E +:1014600080E280938B0181E017CF8F929F92AF92A1 +:10147000BF92CF92DF92EF92FF920F931F93423071 +:1014800051056105710560F480E01F910F91FF9097 +:10149000EF90DF90CF90BF90AF909F908F90089586 +:1014A000FC01C08CD18CE28CF38CC416D506E60608 +:1014B000F70650F3480159016A017B0185818032AA +:1014C00041F584899589A689B78917E0769567954E +:1014D000579547951A95D1F7480F591F6A1F7B1FDB +:1014E00023E0CF0180960E94D408009769F2E89427 +:1014F000C7F8DD24EE24FF24CC0CDD1CCC0CDD1C55 +:101500008C0D9D1DFC0180829182A282B38281E0BC +:10151000BCCF803109F0B8CF448955896689778975 +:101520004D0D511D611D711D23E0CF0180960E945C +:10153000D408009709F4A8CFDD24EE24FF24CC0CB6 +:10154000DD1CC80ED91EF60111830083E0CFCF92B7 +:10155000DF92EF92FF920F931F93CF93DF9342306E +:1015600051056105710550F48FEFDF91CF911F9107 +:101570000F91FF90EF90DF90CF900895FC01C08C09 +:10158000D18CE28CF38CC416D506E606F70660F320 +:1015900089016A017B01EC0185818032B9F584897A +:1015A0009589A689B789E7E0769567955795479518 +:1015B000EA95D1F7480F591F6A1F7B1F22E0CE0121 +:1015C00080960E94D408009779F2E894C7F8DD2449 +:1015D000EE24FF24CC0CDD1CCC0CDD1C8C0D9D1DE1 +:1015E000FC0180819181A281B381BF70488D598DAA +:1015F0006A8D7B8D481759076A077B0738F1F80118 +:1016000080839183A283B38381E0AFCF803109F0DF +:10161000ABCF44895589668977894D0D511D611D70 +:10162000711D22E0CF0180960E94D408009709F432 +:101630009BCFDD24EE24FF24CC0CDD1CC80ED91E6C +:10164000F60180819181B0E0A0E0D0CF80E08DCF25 +:101650009F92AF92BF92CF92DF92EF92FF920F9341 +:101660001F93CF93DF9300D000D0CDB7DEB75C01DE +:101670006A017B0119821A821B821C829E012F5FE4 +:101680003F4FB701A601C5010E94A70A982E87FD0A +:1016900034C000E010E09801B701A601C5010E9426 +:1016A000350A882351F1F50140855185628573859E +:1016B0004C155D056E057F0550F0F1E0CF1AD1089D +:1016C000E108F108F501C086D186E286F386C9807B +:1016D000DA80EB80FC809110D1CF0F900F900F90AB +:1016E0000F90DF91CF911F910F91FF90EF90DF90BE +:1016F000CF90BF90AF909F90089580E0EECFBF92C3 +:10170000CF92DF92EF92FF920F931F93CF93DF93CD +:10171000DB01FC019F012F5F3F4F8081803209F484 +:101720009EC01496FC93EE9313979F0189010E1BA4 +:101730001F0B722F632FE90189919E01882379F095 +:101740008F3209F08EC0CF01800F911F782F692F43 +:10175000EC012991CE012032C9F32F32B9F3EA010D +:1017600078836983E801CE0FDF1F8E010E1B1F0BEC +:10177000CE17DF0709F495C08A918E32B1F380321B +:10178000A1F30F3F110511F00CF06DC012961C93E0 +:101790000E931197ED012696CD01419620E22993F3 +:1017A0008C179D07E1F7EF019E012E1B3F0B8991DE +:1017B0008E32D1F38032C1F381E02115310509F079 +:1017C00080E0A80141505109EF01C00FD11F4F3FE8 +:1017D000540709F069C0F12C67E0B12C70E0D8E043 +:1017E000ED2E201731070CF0ACC06F01C20ED31ED6 +:1017F000E6019881903209F483C09E3221F42417C7 +:10180000350709F07DC0D92F9232E1F09C37D1F035 +:10181000C6EDDC2ED90EC5E0CD1510F09D3291F449 +:10182000C6ECDC2ED90EC5E0CD1560F4C5EADC2E81 +:10183000D90EC2E0CD1530F4CFEDDC2ED90ECDE5BA +:10184000CD15C8F52417350709F076C06A3009F4BC +:1018500077C06AE098E0B92EC0E1EC2E52C0F901E1 +:1018600059CF8C3559F480E0DF91CF911F910F91C2 +:10187000FF90EF90DF90CF90BF900895982F977FC3 +:10188000923289F38A3379F3982F9F7B9C3359F3F3 +:1018900092EC980F923038F380528F3508F446CF8F +:1018A000E2CF10E000E072CF9A919E3209F493CF1C +:1018B000415051098CCF2417350741F26B15F0F1D7 +:1018C000CFE9DC2ED90EC9E1CD1508F19052FE28E2 +:1018D000DD24D394DB0CED01CB0DD11D9E83D6E02E +:1018E000DD1518F01596DC921597BD2C0AC042172D +:1018F000530734F19A016AE0D8E0BD2E80E1E82E6A +:1019000080E02F5F3F4F6DCF80E09FE5DFE5D15452 +:10191000DA31F0F67E29DCCF81E08C9315966C915C +:101920001597A60FB11D8EE716968C93169781E337 +:1019300017968C9381E098CF6B1530F76A30B9F623 +:1019400080E016969C911697903209F48CCF8823EC +:1019500019F37F2111F0D2E0FD2EFC9285CFFC011E +:101960009C01255F3F4F80E080FB879587F991912F +:10197000890F2E173F07C1F708954F925F926F921C +:101980007F928F929F92AF92BF92CF92DF92EF920F +:10199000FF920F931F93CF93DF93EC014A015B01FA +:1019A0004C845D846E847F84A881AA2309F486C058 +:1019B000488959896A897B89481559056A057B05D3 +:1019C00069F081149104A104B10451F41C861D86B0 +:1019D0001E861F86888A998AAA8ABB8A81E073C07C +:1019E000A3FF59C0088D198D2A8D3B8D0815190547 +:1019F0002A053B0508F462C0EE81FF81848190E0F6 +:101A000009968A019B010150110921093109082E0B +:101A100004C036952795179507950A94D2F7750156 +:101A20006401B1E0CB1AD108E108F10804C0F694D2 +:101A3000E794D794C7948A95D2F7C016D106E206E8 +:101A4000F30628F0452B462B472B09F052C0A6FF82 +:101A50004BC0848D958DA68DB78D8C879D87AE8765 +:101A6000BF878E01045F1F4FC114D104E104F1044C +:101A700009F4B0CF4C855D856E857F8598018E8198 +:101A80009F810E94A70A91E0C91AD108E108F108D4 +:101A9000181654F313C0A5FFAFCFEE81FF818681E6 +:101AA000978125E0880F991F2A95E1F7B0E0A0E023 +:101AB00088159905AA05BB0508F08CCF4C865D8674 +:101AC0006E867F8680E0DF91CF911F910F91FF900E +:101AD000EF90DF90CF90BF90AF909F908F907F90CE +:101AE0006F905F904F9008958C8D9D8DAE8DBF8DC2 +:101AF000B4CFC01AD10AE20AF30AB3CFCF93DF936F +:101B0000DC01FC0190E048E080E05EE221912032BF +:101B1000D1F0983031F4EB01C80FD11D58838F5F9D +:101B200040E1EF01219728813FEB320F3A3130F449 +:101B30001C963C911C97342309F0205EEB01C80FE2 +:101B4000D11D28838F5F9F5F9B3001F7680F711D48 +:101B5000FB011082DF91CF910895CF93DF93EC01C9 +:101B6000262F4C895D896E897F898E819F81809621 +:101B70000E94D408009771F02C813D812F7033278B +:101B800045E0220F331F4A95E1F7820F931FDF9143 +:101B9000CF91089590E080E0FACFCF93DF93FC01DE +:101BA0002081211104C081E0DF91CF910895EC01E3 +:101BB000828182FF27C061E0CF010E94AD0DFC0150 +:101BC000892B29F489818160898380E0EDCF808130 +:101BD000853EC1F3888183FF08C0888D998DAA8DC9 +:101BE000BB8D848F958FA68FB78F8C8D9D8D938F96 +:101BF000828F8C8D9D8DAE8DBF8DB58BA48B8A8190 +:101C00008B7F8A838E819F8180960E949208882391 +:101C1000C9F2C9CFCF93DF93EC010E94CD0D18829A +:101C2000DF91CF9108953F924F925F926F927F9292 +:101C30008F929F92AF92BF92CF92DF92EF92FF92DC +:101C40000F931F93CF93DF9300D000D0CDB7DEB7B3 +:101C50004C01FC01828184608283A680B780448429 +:101C6000558466847784F501C084D184E284F3844A +:101C7000C414D504E604F70410F011E003C07301A6 +:101C8000620110E0FFEFCF1ADF0AEF0AFF0AF50149 +:101C9000808D918DA28DB38D8C159D05AE05BF05F0 +:101CA00038F4111131C0C084D184E284F384E5CFCB +:101CB0004C145D046E047F0439F19E012F5F3F4F89 +:101CC000B701A601C5010E94A70A87FD1DC0882390 +:101CD000C9F289819A81AB81BC81892B8A2B8B2B9C +:101CE00089F6112329F0F501C086D186E286F386B4 +:101CF0000FEF1FEF2FEF3FE0B701A601C5010E94D4 +:101D0000350A382E811118C0312C832D0F900F9079 +:101D10000F900F90DF91CF911F910F91FF90EF9057 +:101D2000DF90CF90BF90AF909F908F907F906F90FB +:101D30005F904F903F9008954114510461047104E5 +:101D400031F4F401C486D586E686F786DECF9701A6 +:101D50008601B301A201C5010E94350A8111F1CFAC +:101D6000D3CF9FB7F89480918201882319F08150D6 +:101D70008093820180918201811105C08CB58F7B97 +:101D80008CBD109256019FBF08952091E6053091B9 +:101D9000E7058091E8059091E9052817390769F072 +:101DA0008091E8059091E905E091E405F091E50561 +:101DB000E80FF91F808190E008958FEF9FEF08955D +:101DC0000895CF92DF92EF92FF920F931F93CF93DC +:101DD000DF937C018A01EB016B01C40ED51ECC158B +:101DE000DD0551F06991D701ED91FC910190F081F1 +:101DF000E02DC7010995F3CFC801DF91CF911F9165 +:101E00000F91FF90EF90DF90CF9008958091E805BB +:101E10009091E9052091E6053091E7058217930737 +:101E2000C9F09C012F5F3F4FE091E405F091E5057B +:101E3000E80FF91F80814091EA055091EB052417C6 +:101E4000350710F030E020E03093E9052093E805F5 +:101E500090E008958FEF9FEF08950C946C058091AA +:101E6000C00085FFFCCF6093C60081E090E008953C +:101E70000F931F93CF93DF938C01D0E0C0E0F80164 +:101E8000EC0FFD1F6491662341F086ED93E00E9404 +:101E90002F0F892B11F02196F2CFCE01DF91CF9138 +:101EA0001F910F910895682F86ED93E00C942F0FEA +:101EB000FF920F931F93CF93DF9310E000E0CFEFDB +:101EC000DFEF8AE0F82E0E946C05892BE1F386EDA6 +:101ED00093E00E94060F90ED980F9A3080F4F09EE8 +:101EE000E001F19ED00D11248053990BC80FD91F2A +:101EF0008E01CF3FD10539F334F3CFEFDFEFCE01C1 +:101F0000DF91CF911F910F91FF900895CF93C82F2C +:101F10000E94E30560E0892B09F461E08C2FCF91EA +:101F20000C940C06CF93DF939C01DB01F901EB01CC +:101F30008991BE01E90199919E01882361F19A324C +:101F400031F0891791F39F3381F380E02AC050E08C +:101F500040E030E020E008C0981711F08F33A9F47A +:101F6000CF0101961196FC019C918081992399F0F3 +:101F70008A3291F7CF01019621812223A9F09D0198 +:101F80002F5F3F4F582F492FEECFD9012F5F3F4F83 +:101F9000852F942FE8CF91919A32E9F381E0911146 +:101FA000D4CFDF91CF91089581E0FBCFFC0170E0A9 +:101FB0009F01281B390B261737075CF42191022E4D +:101FC000000C330B205331092A30310588F390E09F +:101FD00080E00895E8E2F1E080E020813181232B68 +:101FE00019F0928191118F5F339691E0E733F907F1 +:101FF000A1F70895CF93DF93EC0120E030E0A90131 +:10200000E99180ED8E0F8A3090F4AAE0B0E00E9452 +:10201000C4342E2FEE0F330B20533109032E000C46 +:10202000440B550B260F371F481F591FE9CFCA0114 +:10203000B901DF91CF910895C82F82E990E00E9405 +:10204000380F8CE790E0C83051F082E790E0C9305B +:1020500031F088E690E0C73011F486E890E00E9405 +:10206000380F83E00E94D32304960C94CD0D40E0FA +:1020700050E0BA010C94BD0C90E080E00895AF925E +:10208000BF92CF92DF92EF92FF920F931F93CF9365 +:10209000DF936C015C018FEFA80EB11C7601EA148E +:1020A000FB0408F047C02091E6053091E7058091D8 +:1020B000E8059091E90528173907E1F185010E1926 +:1020C0001F09F8948091E6059091E7057894C091F6 +:1020D000E805D091E9058C179D0730F58091EA0558 +:1020E0009091EB058C1B9D0B8017910708F48C01D8 +:1020F0006091E4057091E5056C0F7D1FA801C70193 +:102100000E94F134C00FD11F8091EA059091EB0538 +:10211000C817D90710F0C81BD90BD093E905C09395 +:10212000E805E00EF11EBBCFC817D907D8F210E0C2 +:1021300000E0F7CFC7018C199D09DF91CF911F9166 +:102140000F91FF90EF90DF90CF90BF90AF900895E8 +:102150008F929F92AF92BF92DF92EF92FF920F9376 +:102160001F93CF93DF93EC017B012881222309F495 +:10217000BBC08A8180FFB8C088889988AA88BB883C +:1021800023FF21C0888D998DAA8DBB8D881999094F +:10219000AA09BB0982309105A105B10518F5009780 +:1021A00009F530E020E0A901481B590BCA01DF9175 +:1021B000CF911F910F91FF90EF90DF90BF90AF9064 +:1021C0009F908F90089525FF0DC0EE81FF8186813D +:1021D000978135E0880F991F3A95E1F788159905A1 +:1021E00009F488C084011170EE81FF81B501A4015A +:1021F00089E076956795579547958A95D1F725FF9C +:1022000027C0848D958DA68DB78D480F591F6A1FE5 +:102210007B1F8E819F8120E080960E94D4080097CA +:1022200009F462C0800F911FFC018081F701808357 +:1022300088899989AA89BB890196A11DB11D888BBE +:10224000998BAA8BBB8B21E030E090E080E0ABCF94 +:10225000D380D4220115110581F4D1100EC0892834 +:102260008A288B2881F526FF29C0848D958DA68D1F +:10227000B78D8C879D87AE87BF87EE81FF814C85A8 +:102280005D856E857F8542505109610971098481A0 +:1022900004C0440F551F661F771F8A95D2F78089A7 +:1022A0009189A289B389840F951FA61FB71FAC011E +:1022B000BD014D0D511D611D711DABCF8C8D9D8DCF +:1022C000AE8DBF8DD6CF4C855D856E857F859E0199 +:1022D000245F3F4FCF010E94A70A87FD05C08111EF +:1022E000CCCF8881807749F48981826089838FEFA0 +:1022F0009FEF5DCF30E020E0A8CF21E030E081E02B +:1023000090E051CFEF92FF920F931F93CF93DF9303 +:102310001F92CDB7DEB77C01962FF7014089518916 +:10232000628973898A019B0185E036952795179507 +:1023300007958A95D1F70F7011F0911129C0BE0150 +:102340006F5F7F4FC7010E94A810813051F090E06D +:1023500080E00F90DF91CF911F910F91FF90EF9050 +:102360000895F70180899189A289B3894F96A11DAB +:10237000B11D808B918BA28BB38BF70186819781E6 +:102380008796F0E20F9F90011124820F931FE1CFF7 +:10239000405E5F4F6F4F7F4F408B518B628B738BD3 +:1023A000ECCF2F923F924F925F926F927F928F92DB +:1023B0009F92AF92BF92CF92DF92EF92FF920F93D4 +:1023C0001F93CF93DF93EC015B014A01888183FF68 +:1023D000C5C08A8181FFC2C083FDB7C0A40170E07F +:1023E00060E088899989AA89BB8980959095A09594 +:1023F000B09584179507A607B70708F4AFC0640126 +:102400001E018CE0280E311C088919892A893B8914 +:10241000C114D10409F4E1C08E819F81B901A801E2 +:1024200029E076956795579547952A95D1F7DC0170 +:102430001396FC90F4221170F1101BC04C855D8541 +:102440006E857F850115110509F0F4C04115510510 +:102450006105710509F488C091010E94A70A87FDF2 +:102460007DC0811106C0CE010E94130E882309F49D +:1024700075C0EE81FF814C855D856E857F854250FC +:10248000510961097109848104C0440F551F661FF9 +:10249000771F8A95D2F780899189A289B389840FA1 +:1024A000951FA61FB71FAC01BD014F0D511D611D2A +:1024B000711D0115110529F4C114B2E0DB0608F005 +:1024C0006EC080E092E0801B910B76018C159D051B +:1024D00008F47C010115110571F4488859886A884F +:1024E0007B88888D998DAA8DBB8D25E0481659066D +:1024F0006A067B0608F421E0CF0180960E94D4088A +:10250000009761F1A701B501800F911F0E94F1347E +:102510000E0D1F1D0115124039F48E819F8180968A +:102520000E9492088823D1F088899989AA89BB8959 +:102530008E0D9F1DA11DB11D888B998BAA8BBB8B06 +:10254000AE0CBF1CCE18DF085FCF488D598D6A8D49 +:102550007B8DCE010E94BD0C811140CF89818160AD +:1025600089838FEF9FEF4DC08C8D9D8DAE8DBF8D7C +:102570000097A105B10571F4CE010E94130E8823C6 +:1025800069F38C859D85AE85BF858C8F9D8FAE8FC1 +:10259000BF8F6FCF8C879D87AE87BF876ACF83A1A0 +:1025A00094A1A5A1B6A1481759076A077B0741F472 +:1025B00010A28FEF9FEFDC0183A394A3A5A3B6A382 +:1025C000EE81FF819501808191810E94FB07882324 +:1025D00029F2E12C82E0F82EA7CF888D998DAA8D63 +:1025E000BB8D80179107A207B30738F48A81088F43 +:1025F000198F2A8F3B8F84608A838A8187FD14C05C +:10260000C401DF91CF911F910F91FF90EF90DF9068 +:10261000CF90BF90AF909F908F907F906F905F9082 +:102620004F903F902F900895CE010E94CD0D8111C3 +:10263000E7CF94CFFC0142505109610971098481AF +:1026400004C0440F551F661F771F8A95D2F78089F3 +:102650009189A289B389480F591F6A1F7B1F31CF07 +:1026600004960C94D111CF93DF931F92CDB7DEB7B0 +:10267000698341E050E0BE016F5F7F4F04960E9486 +:10268000D1110F90DF91CF910895FB0101900020AF +:10269000E9F73197AF01461B570BDC01ED91FC9137 +:1026A0000280F381E02D09946FE171E00C944513F1 +:1026B000CF93DF930E94380FEC0186ED93E00E94E8 +:1026C00054138C0F9D1FDF91CF9108958F929F928D +:1026D000AF92BF920F931F93CF93DF93CDB7DEB727 +:1026E000A1970FB6F894DEBF0FBECDBF19A242303E +:1026F00008F44AE08E010F5D1F4F842E912CB12CFF +:10270000A12CA50194010E94A234E62FB901CA01AF +:10271000EA3004F5E05DD801EE938D01232B242BE4 +:10272000252B79F790E080E0109729F0BD0186ED28 +:1027300093E00E944513A1960FB6F894DEBF0FBE3A +:10274000CDBFDF91CF911F910F91BF90AF909F9020 +:102750008F900895E95CDFCFCF92DF92EF92FF92E6 +:10276000CF93DF9397FF19C06B017C018DE20E942C +:10277000530FEC0166277727CB016C197D098E0971 +:102780009F094AE00E9466138C0F9D1FDF91CF9135 +:10279000FF90EF90DF90CF9008954AE0DF91CF91C6 +:1027A000FF90EF90DF90CF900C946613462F682F28 +:1027B00070E090E080E00C946613CF93DF930E946A +:1027C000D613EC0186ED93E00E9454138C0F9D1FED +:1027D000DF91CF910895CF93DF93D0E0C0E00097D1 +:1027E00031F0BC0186ED93E00E944513EC0186EDCB +:1027F00093E00E9454138C0F9D1FDF91CF91089599 +:10280000FC01808181110FC080E2DF01982F1D92B1 +:102810009A95E9F777836683DB0115969C91903151 +:1028200029F0903211F080E0089580E4808381E007 +:1028300082830895CF93C82F8DEA93E00E940A0EF9 +:1028400066E871E08DEA93E00E940014882369F045 +:10285000CC2359F08091AD03807749F08DEA93E065 +:1028600090938501809384018C2FCF91089580E00F +:10287000FCCF8F929F92AF92BF92CF92DF92EF9256 +:10288000FF920F931F93CF93DF93D82FC92F1092EE +:10289000D0031092CD031092D20383ED93E0909376 +:1028A000CF038093CE030E94C2066B010091CE033A +:1028B0001091CF038AE0F801828361E00E943A061A +:1028C00061E0F80182810E940C061FB7F8948091A4 +:1028D0008201811127C0E0E7FAE08491ECE5FAE09B +:1028E0009491E82FF0E0EE0FFF1FE85BF54FA59104 +:1028F000B491EC91E92321F461E08AE00E940C0696 +:1029000061E08AE00E943A068CB580618CBD8CB58E +:1029100080648CBD61E08DE00E943A0661E08BE04E +:102920000E943A06809182018F5F809382011FBFCF +:10293000E091CE03F091CF0382E5808311828091F4 +:10294000D003811104C08DEC93E00E94CE06E0918B +:10295000CE03F091CF0361E082810E940C061AE061 +:102960008FEF0E94F5061150D9F7E091CE03F09158 +:10297000CF0360E082810E940C061AE020E030E084 +:10298000A90160E08DEC93E00E949007082F813050 +:1029900029F11150A9F480E28093CD038DEC93E0EE +:1029A0000E941C0780E0DF91CF911F910F91FF9053 +:1029B000EF90DF90CF90BF90AF909F908F90089551 +:1029C0008DEF0E94F50698E0A92E92E0B92E0E94A4 +:1029D000FA06F1E0AF1AB108D1F7D0CF2AEA31E018 +:1029E00040E050E068E08DEC93E00E94900714E036 +:1029F000853041F50093D2038091D203812C912C34 +:102A00005401823029F4812C912CA12C80E4B82E21 +:102A100020E030E0A90167E38DEC93E00E9490078D +:102A2000A501940169E28DEC93E00E949007882350 +:102A3000B9F00E94C2066C197D09613D774040F3F0 +:102A400083E4AACF0E94FA068093D1031150D1F7F4 +:102A50008A3A21F482E08093D203CECF85E29CCFE4 +:102A60008091D2038230D1F420E030E0A9016AE302 +:102A70008DEC93E00E949007882311F087E38CCFC0 +:102A80000E94FA06807C803C19F483E08093D20394 +:102A90000E94FA060E94FA060E94FA068DEC93E064 +:102AA0000E941C07E091CE03F091CF03D083C18335 +:102AB0008DEC93E090938701809386018DEA93E0FB +:102AC0000E940A0E81E00E9413098823A9F066E89B +:102AD00071E08DEA93E00E940014882309F462CF2C +:102AE0009091AD03907709F45DCF2DEA33E03093F8 +:102AF00085012093840157CF80E00E941309811142 +:102B0000E6CF50CF9F92AF92BF92CF92DF92EF92DB +:102B1000FF920F931F93CF93DF93CDB7DEB7A097AC +:102B20000FB6F894DEBF0FBECDBF19821A82DC014A +:102B30002C9123FF16C012962C9121FF12C08C01FC +:102B4000FC01448D558D668D778D411551056105CC +:102B5000710549F461E0C8010E94AD0D7C01009748 +:102B600049F480E076C0868197810E94280B81110C +:102B7000F1CFF7CF0E94AF0C982E85EEF70180833E +:102B8000D8011C9216968D919C9180960E94920875 +:102B9000882339F3F8019381992309F45AC0808579 +:102BA0009185A285B385668177819E012F5F3F4F16 +:102BB00069010097A105B10509F05DC0C9010E9436 +:102BC0000014882371F2EE24E394F12C25EEA22E5A +:102BD000D80113968C9113978E1518F214964D9177 +:102BE0005C914E195F0970E060E085E0440F551F6D +:102BF000661F771F8A95D1F7C6010E94BD0C8823F6 +:102C000009F4AFCF60E0C6010E948211FC01892B5C +:102C100009F4A7CF83858F3009F0A3CF9081892F46 +:102C20008F71E8129ECF858589119BCFA082D80134 +:102C30001696ED91FC9180A1816080A3BFEFEB1A05 +:102C4000FB0A96FFC5CFF8018681978180960E9486 +:102C50009208A0960FB6F894DEBF0FBECDBFDF91ED +:102C6000CF911F910F91FF90EF90DF90CF90BF9089 +:102C7000AF909F9008952CE1F60111922A95E9F703 +:102C800020E1298321E02B8378876F838D8F9E8FAE +:102C9000AF8FB8A398CFCF93DF93FC01208124FF9F +:102CA0000CC0EC010E94371061E0CE010E9482113D +:102CB000009739F48981882381F080E0DF91CF91FA +:102CC0000895FC012081222341F0253E69F32E3234 +:102CD00059F3838583FDE8CFF0CF88E088838A812C +:102CE00082608A83CE01DF91CF910C948215CF92BE +:102CF000DF92EF92FF920F93CF93DF93EC0180E28C +:102D0000DE011D928A95E9F7FB01868197819F83F9 +:102D10008E835D834C83C48CD58CE68CF78CC886FF +:102D2000D986EA86FB86FA01EF70FF27DC019796C9 +:102D300045E0EE0FFF1F4A95E1F7BD016E0F7F1FC3 +:102D4000DB011B963C9133FD19C0AC014E0F5F1F98 +:102D5000DA01D2963C9137713883DB011B964C9196 +:102D6000487111F4386038830B83322F337031305F +:102D700009F449C030F0323009F443C0188280E0D1 +:102D800038C031E025FDFACF3A835A8151FF03C0A4 +:102D90004881417199F7322F3878352B3A83DC011D +:102DA00093964D915D916D917C9196974C8B5D8B37 +:102DB0006E8B7F8BE80FF91F43AD54AD70E060E080 +:102DC000BA0155274427DF01AF5BBF4FCD90DC90A0 +:102DD000F12CE12C4C295D296E297F2925FF1AC091 +:102DE000411551056105710581F48A8184608A83EA +:102DF00081E0DF91CF910F91FF90EF90DF90CF9026 +:102E0000089533E0C1CF32E0BFCF0E94280B81117B +:102E1000ECCFB4CF4C8F5D8F6E8F7F8FED5BFF4F0C +:102E200080819181A281B381888F998FAA8FBB8F76 +:102E3000DFCF8F929F92AF92BF92EF92FF920F934C +:102E40001F93CF93DF937C01EB0100E010E08888B3 +:102E50009988AA88BB8860E0CE010E948211009701 +:102E6000A1F1FC012081222381F12E3221F1253EA6 +:102E700011F1338533FD21C0002321F00E94AF0CF6 +:102E8000811323C0B501A40185E076956795579518 +:102E900047958A95D1F720E0BE01C7010E947716B9 +:102EA000DF91CF911F910F91FF90EF90BF90AF9066 +:102EB0009F908F90089500E0CACF3F30E1F726FF42 +:102EC000C6CF022F0F711585C2CF80E0E9CFCF9218 +:102ED000DF92EF92FF920F931F93CF93DF936C01DA +:102EE000EB017A014115510509F44AC041505109DD +:102EF00070E060E085E0440F551F661F771F8A95DC +:102F0000D1F7CE010E94BD0C81110AC080E0DF9193 +:102F1000CF911F910F91FF90EF90DF90CF90089588 +:102F200060E0CE010E948211FC01892B79F3838538 +:102F30008F3049F580818F71813029F515850E2DEF +:102F400085E1E816F10408F004E160E0CE010E949A +:102F500082110097D9F2FC012081253EB9F222238B +:102F6000A9F22E3299F2002321F00E94AF0C8113B6 +:102F7000CDCF20E0A701BE01C6010E947716C7CFC2 +:102F8000CB010E94371000E010E0DFCF8F929F92BC +:102F9000AF92BF92CF92DF92EF92FF920F931F9367 +:102FA000CF93DF93CDB7DEB7C655D1090FB6F894EE +:102FB000DEBF0FBECDBF8C016B01942E19A61AA6E1 +:102FC00018A61FA287E191E09EA38DA3C8010E94CD +:102FD000371097E1A92E91E0B92E2FE2822E1D82A3 +:102FE0001E821C821B82BA82A9828D818111C6C079 +:102FF000F8018081807709F4C1C080899189A28914 +:10300000B3898F719927AA27BB27892B8A2B8B2BF2 +:1030100009F0B4C0B801CE0105960E9419178823A3 +:1030200009F4ACC08D81811105C0CE0105960E94C6 +:103030000A0EDBCF8076D9F02A968FAE2A972B9690 +:103040001FAE2B978D81982F9870887771F39923F5 +:1030500009F486C0BE01675B7F4FC6010E94920FD4 +:10306000882319F381E067968FAF67977DC060E092 +:10307000CE0105960E94AD0D0097B9F2BE01675BC7 +:103080007F4F0E947E0DDECFBE01675B7F4F86EDD6 +:1030900093E00E944513E82E8D8184FF05C08EE7E2 +:1030A0009AE00E94380FE80E8D8183FF14C0FDE086 +:1030B000FE1530F08CE79AE00E94380FE394F7CFCA +:1030C0008AE79AE00E94380F6D8D7E8D8F8D98A1D2 +:1030D0004AE00E94661386ED93E00E945413CE01ED +:1030E00005960E940A0E67968FAD6797823009F0A9 +:1030F00076CFE0908301E1E0EE1508F470CF89A56A +:1031000081116DCFF8018081807709F468CF408903 +:1031100051896289738985E07695679557954795BA +:103120008A95D1F741505109B801CE0189960E9484 +:103130006717882309F453CFE394E092830142E0B8 +:103140004F0DB601CE0189960E94C617809183016A +:10315000815080938301CE0189960E940A0E3FCF51 +:10316000F2E06796FFAF6797F12C9F1409F48CCFBC +:1031700080E89AE00E94380FF394F7CFCA5ADF4FE5 +:103180000FB6F894DEBF0FBECDBFDF91CF911F9178 +:103190000F91FF90EF90DF90CF90BF90AF909F90F6 +:1031A0008F900895CF92DF92EF92FF920F931F932B +:1031B000CF93DF93CDB7DEB7A0970FB6F894DEBFFD +:1031C0000FBECDBFFC0119821A829081907781F4E5 +:1031D00080E0A0960FB6F894DEBF0FBECDBFDF91A2 +:1031E000CF911F910F91FF90EF90DF90CF900895B6 +:1031F0008F01CF010E943710F801C088D188E28882 +:10320000F38860E0C8010E948211009769F4F80118 +:1032100081818111DDCFF8018081807609F057C06E +:10322000C8010E944B16D5CFFC012081222399F3BF +:10323000253E11F32E3201F3838583FDDDCF898195 +:103240008111C6CFF8018081807709F4C1CF95E064 +:10325000F694E794D794C7949A95D1F7A601B8014C +:10326000CE0101960E946717882309F4B1CF8981A6 +:1032700084FF25C0CE0101960E94D218882309F44C +:10328000A7CFFFEFCF1ADF0AA60170E060E085E06C +:10329000440F551F661F771F8A95D1F7F801808963 +:1032A0009189A289B38984179507A607B70709F4FE +:1032B000A3CFC8010E94BD0C81119ECF89CF8B8105 +:1032C00082608B83CE0101960E948215D7CF81E068 +:1032D00080CFAF92BF92CF92DF92EF92FF920F9387 +:1032E0001F93CF93DF93EC01888185FF0DC010E021 +:1032F000812FDF91CF911F910F91FF90EF90DF9081 +:10330000CF90BF90AF90089588899989AA89BB8989 +:1033100081159E4FAF41B10550F7CE010E94130EAB +:10332000182F882321F3EE81FF81CC84DD84EE8485 +:10333000FF8432E0C31AD108E108F108848104C097 +:10334000CC0CDD1CEE1CFF1C8A95D2F7808991897C +:10335000A289B389C80ED91EEA1EFB1E25E0B7015B +:10336000A601CF0180960E94D4085C01892B09F444 +:10337000BECF80E092E0F5019C01119221503040D7 +:10338000E1F701E0EE81FF818281081780F4950169 +:10339000B701A601400F511D611D711D80819181F2 +:1033A0000E94FB07882309F4A2CF0F5FEBCF90E0C8 +:1033B000B0E0A0E029E0880F991FAA1FBB1F2A9543 +:1033C000D1F7488959896A897B89840F951FA61F7F +:1033D000B71F888B998BAA8BBB8B8ACF9F92AF929A +:1033E000BF92CF92DF92EF92FF920F931F93CF93F2 +:1033F000DF937C01962EC62ED12CA60170E060E0F2 +:103400000E94FA34D0E0560181E0A81AB1080D2FCD +:1034100010E00A151B059CF50E946C05892BE1F351 +:1034200086ED93E00E94060FC82F85E00E94860F6C +:10343000C83011F0CF3791F4DD2349F3D150F701B3 +:10344000ED0FF11D108288E00E94530F8BE091E098 +:103450000E94380F88E00E94530FD9CF809100015D +:1034600080FF03C08C2F0E94530FCD3009F586EDED +:1034700093E00E945413F701E00FF11F1082E8E27D +:10348000F1E08FE0DF011D928A95E9F710E0C1E0DD +:103490008C2F90E09C012F5F3F4F8E0D9F1DFC01F4 +:1034A0008081803271F0C216D30621F5C92D0CC07F +:1034B000CA3009F4ACCFF701E00FF11FC083DF5F22 +:1034C000A6CFC216D30691F30E94EA0F853080F48E +:1034D00090E0FC01EE0FFF1FE80FF91FE85DFE4FC3 +:1034E000C701810F911D918380838C2F811B828363 +:1034F000CF5F1C2FCF5FC91558F28D2FDF91CF9171 +:103500001F910F91FF90EF90DF90CF90BF90AF9001 +:103510009F9008952F923F924F925F926F927F9269 +:103520008F929F92AF92BF92CF92DF92EF92FF92D3 +:103530000F931F93CF93DF93CDB7DEB729970FB6C5 +:10354000F894DEBF0FBECDBF4C017F836E83FA01BE +:10355000672BD1F480E029960FB6F894DEBF0FBE3A +:10356000CDBFDF91CF911F910F91FF90EF90DF9032 +:10357000CF90BF90AF909F908F907F906F905F9013 +:103580004F903F902F900895AE81BF818C918077AE +:1035900009F3D4018C918111DDCFA180B2808081AB +:1035A000837033243394882349F0C5010C966DE071 +:1035B00070E00E948E3433243394360E29837F01C9 +:1035C000EE81FF81F987E887CF010E9437101C82C6 +:1035D0001D821A82212C10E000E01B8297012A5FD5 +:1035E0003F4F3F832E83A885B98550964D905D90BF +:1035F0006D907C90539795E0769467945794479498 +:103600009A95D1F7620161E0CD010E948211009785 +:1036100009F062C0E885F985818181119BCFE9813C +:10362000E4FF98CF8E2F83708150823008F092CFC4 +:10363000112311F0CC80DD80131500F560E0888542 +:1036400099850E948211892B09F0E4C0A885B9856B +:1036500011968C9181117ECF888599850E94691978 +:10366000882309F477CFA885B9851696ED91FC914A +:103670008281823018F4105F131570F3BB81BB2375 +:1036800009F4F8C0F701558002E010E08EE7482EFB +:103690003701F6E06F0E711CD70111962D913C9108 +:1036A0001297C801820F931F1396ED91FC912E0F74 +:1036B0003F1F2E173F0709F4AFC0AC01B5E0440F20 +:1036C000551FBA95E1F7840F951F4191042E000C08 +:1036D000550B84279527EDCFDC012C91253E11F069 +:1036E00021110EC0111102C04C825D82131508F425 +:1036F0001F5F222309F493CF253E21F400E073CF0E +:10370000131550F12E32D1F3FC0133853F3009F00F +:103710005AC0011123C026FF66CF022F0F71F58515 +:10372000FA83202EE22DE150FF0BAF01FDE0F49F64 +:103730009001F59F300D11242A153B05F8F6FC0188 +:10374000D12C64E06D1590F081819281A216B306B0 +:10375000B1F4892B99F647CF10E0D4CF2A942211E7 +:10376000CDCF2585BA812B17E9F2C8CF8AE08D1518 +:1037700018F084819581EACF86819781E7CF8F3FCA +:10378000910511F008F0BACF4FEB480F4A3108F419 +:10379000805EB9016F5F7F4FD70113964D915C91A9 +:1037A000240F351FD9019C912FEB290F2A3108F4E2 +:1037B000905E9813A3CFD3943296BDE0DB1609F444 +:1037C00012CF9B01BECF33FD99CF002399F0E1E0EA +:1037D0002E12C0CE0E94AF0CFA818F13BBCEB981DE +:1037E000B6FDB8CE2981A60168857985C4010E94FD +:1037F0007716B1CE4BE050E06E817F810E94E434B9 +:10380000892B09F0F0CED7018C9180FFE8CF31E011 +:103810003B83E9CE1F5F10CFB3E0B51510F4A3E0F2 +:103820005A2E34E0350D282F2F702A3008F08AC028 +:10383000205DF701E30FF11D2683F4E0969587954F +:10384000FA95E1F73150531670F3F701E50DF11DCC +:103850004682888599850E94371061E08885998520 +:103860000E948211009709F06FC0E885F985818177 +:10387000811170CEA60170E060E0E5E0440F551FB5 +:10388000661F771FEA95D1F7888599850E94BD0C40 +:10389000882309F45FCE0FEF030D102F3FE0532E66 +:1038A0003701B6E06B0E711C4DE0442E112309F474 +:1038B00077C060E0888599850E9482116C01892B10 +:1038C00009F448CEA885B9851696ED91FC9180A1A2 +:1038D000816080A3312E101302C0689436F8F6017F +:1038E000308253861486C3010E94AF0CD6011D9608 +:1038F0008C931D975B961C921E925A97F701238119 +:103900003481832D8F718150990B489EA001499E6F +:10391000500D1124F60160E04A155B0570F5D901E0 +:10392000A40FB51F8C91082E000C990B653080F503 +:10393000928381836F5F4F5F5F4F32966D3061F787 +:103940001150B4CF295C75CFDC012C91222309F4EE +:1039500091CF1B962C9123FD80CF4BE050E0BC0112 +:10396000C3010E94E434892B09F077CF0F5F1F4F0A +:103970000436110509F090CEEDCD81E090E0A4165B +:10398000B50611F490E080E0919581959109CECF34 +:103990006B3018F495838483CDCF97838683CACF09 +:1039A000A885B98550964D905D906D907C90539709 +:1039B00060E0CD010E948211009709F4CBCD25E093 +:1039C00076946794579447942A95D1F7620120E240 +:1039D000FC0111922A95E9F7F70136962BE0DC01FC +:1039E00001900D922A95E1F7D7012C912871FC01E5 +:1039F000248721E238E2318B208B40E058E0578762 +:103A00004687338B228B318F208F578B468BA8852F +:103A1000B9851696ED91FC9180A1816080A3E2CEDC +:103A2000DF92EF92FF920F931F93CF93DF93CDB767 +:103A3000DEB7E3970FB6F894DEBF0FBECDBF7C01B3 +:103A40008B015BAB4AABD22E19821A82FC018081BA +:103A5000882379F080E0E3960FB6F894DEBF0FBEBE +:103A6000CDBFDF91CF911F910F91FF90EF90DF902D +:103A700008956115710571F3FB018081807751F321 +:103A8000EAA9FBA980818F32D9F4EAA9FBA9808138 +:103A90008F3221F43196FBABEAABF7CFF8016681A8 +:103AA0007781811104C0C7010E940014D4CFCE01D8 +:103AB00001960E940014882369F28E010F5F1F4F48 +:103AC000AE014E5C5F4FBE016F5D7F4F8AA99BA91F +:103AD0000E947F0B882309F4BDCFEAA9FBA980814E +:103AE0008823B9F020E0AE014F5D5F4FB801C701F8 +:103AF0000E948A1A882309F4ADCF80E2F701DE0123 +:103B0000119601900D928A95E1F7C7010E940A0E65 +:103B1000D4CF2D2DAE014F5D5F4FB801C7010E947C +:103B20008A1A99CF1F93CF93DF93CDB7DEB7A097B3 +:103B30000FB6F894DEBF0FBECDBF162F19821A82C2 +:103B4000FC0120812F3281F4218121110DC0862FAB +:103B50000E941A14A0960FB6F894DEBF0FBECDBF18 +:103B6000DF91CF911F91089520E0AC016DEA73E0E1 +:103B7000CE0101960E94101D882361F399819077F0 +:103B8000B9F090E2FE013196ADEAB3E001900D92FA +:103B90009A95E1F71123F1F28091AD03807731F02E +:103BA0008DEA93E09093850180938401812FD2CF99 +:103BB00080E0D0CFFB01242F6091840170918501BA +:103BC000AF010C94101D2F923F924F925F926F9213 +:103BD0007F928F929F92AF92BF92CF92DF92EF929D +:103BE000FF920F931F93CF93DF93CDB7DEB7CA52E7 +:103BF000D1400FB6F894DEBF0FBECDBFBC01CC5F85 +:103C0000DE4F1882C450D140CB5FDE4F1882C550C2 +:103C1000D140CE5FDE4F19821882C250D14087E179 +:103C200091E0C050DF4F99838883C050D140C0904D +:103C30007C012091810180E091E08C0F9D1F049612 +:103C400041E3233009F049E10E94DA1D811103C0EC +:103C500089E00E941C10C45EDE4F88819981AA8190 +:103C6000BB81CC51D140892B8A2B8B2B61F400E096 +:103C700011E00C0F1D1F0C5F1F4FC8010E94371071 +:103C8000C8010E94CD0DD12CF12CE12C24E1CC0CEB +:103C9000DD1CEE1CFF1C2A95D1F70E94C2064B01C9 +:103CA0005C018FE990E00E94380F61E085E00E949E +:103CB0000C0630907D01332009F468C0312C412C72 +:103CC000512C320180E091E08C0F9D1F0496C75D5E +:103CD000DE4F99838883C952D14090917D01C85DA0 +:103CE000DE4F9883C852D140391608F035C1CE0155 +:103CF00001960E943F108C01282E882309F4E5C00C +:103D0000998180917E019813DEC03394FE01329632 +:103D100081E0821558F421919213D2C03394C85D8A +:103D2000DE4F2881C852D1402311CBC0A8015527AE +:103D3000BE016F5F7F4FCE0193950E94301385E0E7 +:103D40000E94860F80918101833039F6420C511C0C +:103D5000611C711C4C145D046E047F0408F4BDCF1B +:103D600000E011E00C0F1D1F0C5F1F4FC8010E94E7 +:103D7000CD0DC8010E940A0E60E085E00E940C068D +:103D80008BE990E00E94380F312C3EC0412C512C21 +:103D9000320100E011E00C0F1D1F0C5F1F4FCE0120 +:103DA00001960E943F10282E882309F448C0AC01D8 +:103DB0005527BE016F5F7F4FCE0193950E94301350 +:103DC00085E00E94860F80918101833041F7420C8B +:103DD000511C611C711C4C145D046E047F04F8F2CC +:103DE00000E011E00C0F1D1F0C5F1F4FC8010E9467 +:103DF000CD0DC8010E940A0E60E085E00E940C060D +:103E00008DE990E00E94380F832DC65DDE4F0FB61E +:103E1000F894DEBF0FBECDBFDF91CF911F910F9100 +:103E2000FF90EF90DF90CF90BF90AF909F908F90DA +:103E30007F906F905F904F903F902F9008950E94D9 +:103E4000C206681979098A099B09653F7140810595 +:103E5000910508F4A4CFC8010E94CD0D60E085E073 +:103E60000E940C06809164008062809364008091BF +:103E700064008460809364009AE0B92E61E08B2D29 +:103E80000E943A0660E08B2D0E940C06B3948EE0EF +:103E9000B812F4CF83B7816083BF889583B78E7FD4 +:103EA00083BF809164008B7F809364008091640065 +:103EB0008F7D809364000E94C2064B015C016FCF2E +:103EC000312C8F5F26CF312C31CF0E94C20668196A +:103ED00079098A099B09653F71408105910508F4BC +:103EE000FCCEC75DDE4F88819981C952D1400E94C6 +:103EF000CD0D60E085E00E940C0680916400806238 +:103F000080936400809164008460809364008AE000 +:103F1000B82E61E08B2D0E943A0660E08B2D0E9446 +:103F20000C06B3948EE0B812F4CF83B7816083BFE0 +:103F3000889583B78E7F83BF809164008B7F809349 +:103F40006400809164008F7D809364000E94C206AB +:103F50004B015C01302EC1CE00E011E00C0F1D1FA3 +:103F60000C5F1F4FC8010E94CD0D20917D012223BF +:103F700009F4BFC0CC5FDE4F8881C450D14083FFBD +:103F8000B8C0CA5FDE4F8881C650D14081FFB1C042 +:103F9000C45EDE4F88819981AA81BB81CC51D1401A +:103FA0006C017D01C21AD108E108F1088C159D054C +:103FB000AE05BF0508F49DC0892B8A2B8B2B09F415 +:103FC00098C0CC5EDE4F88809980AA80BB80C451A7 +:103FD000D140B701A601C8010E94BD0C882309F495 +:103FE00088C0C65FDE4F88819981CA50D140C11414 +:103FF000D104E104F10409F043C0C05EDE4F488102 +:1040000059816A817B81C052D1400E94280B88234C +:1040100009F46FC0C05EDE4F188219821A821B82BB +:10402000C052D140C45EDE4FC882D982EA82FB8290 +:10403000CC51D140CA5FDE4F8881C650D1408460E8 +:10404000CA5FDE4F8883C650D14080E091E08C0F7C +:104050009D1F04960E94CD0D882309F44AC0B70124 +:10406000A60184169506A606B70610F4B501A401AC +:1040700080E091E08C0F9D1F04960E94BD0C39C01A +:10408000C05FDE4F488159816A817B81C051D14038 +:104090009E012C5D3E4F0E94A70A87FD2AC08823FF +:1040A00009F2CC5DDE4F488159816A817B81C4521F +:1040B000D140C65FDE4F88819981CA50D1400E94AD +:1040C000280B8823B1F0C05FDE4F488159816A8197 +:1040D0007B81C051D1400FEF1FEF2FEF3FE0C65F54 +:1040E000DE4F88819981CA50D1400E94350A8111E2 +:1040F00099CF80E091E08C0F9D1F04960E940A0EDC +:1041000060E085E00E940C0689E990E00E94380F8B +:104110003324339479CEDF92EF92FF920F931F9363 +:10412000CF93DF93CDB7DEB7A0970FB6F894DEBF7D +:104130000FBECDBF8C016115710509F49CC0DB0178 +:104140009C91907709F497C07B0122E5C8010E94F9 +:104150008A1A882309F48FC081E0F801828380E104 +:10416000D82ED082C8010E946919882309F483C01F +:10417000F80184859585A685B785848F958FA68F50 +:10418000B78FC8010E943710C8010E94CD0D882347 +:1041900009F471C061E0C8010E94AD0DFC01892BDA +:1041A00009F469C0D38680E2DE01119601900D9278 +:1041B0008A95E1F78EE28983FE013296CE010C9654 +:1041C00020E22193E817F907E1F7D8011696ED915F +:1041D000FC9117975C964D915D916D917C915F97E5 +:1041E0004250510961097109848104C0440F551F6F +:1041F000661F771F8A95D2F780899189A289B38932 +:10420000480F591F6A1F7B1F21E0CF0180960E9433 +:10421000D408009781F120E2FE013196DC01019083 +:104220000D922A95E1F72EE22A83F701448D558DF0 +:10423000668D778D7E8B6D8B5C8F4B8F20E2FE01C0 +:104240003196DC01909601900D922A95E1F7D80104 +:1042500016968D919C918096A0960FB6F894DEBF2D +:104260000FBECDBFDF91CF911F910F91FF90EF90C7 +:10427000DF900C94920880E0A0960FB6F894DEBF11 +:104280000FBECDBFDF91CF911F910F91FF90EF90A7 +:10429000DF9008950C941F33CF92DF92EF92FF923C +:1042A0006B017C01B701992777FD9095892F89E0F3 +:1042B00090E00E944A219927F7FC9A958F2D7E2D38 +:1042C0006D2D8AE090E00E944A216C2D8BE090E0F9 +:1042D000FF90EF90DF90CF900C944A210C9417330D +:1042E000CF93DF9383E090E00E946E21C82F84E09B +:1042F00090E00E946E21D82F81E793E00E9458132E +:104300008CE593E00E94380FBE0190E080E04AE027 +:104310000E94661386ED93E00E9454138CE493E0B0 +:104320000E9458138FE293E00E94581380E093E0BC +:104330000E94581388ED92E00E94581384EA92E09C +:104340000E94581387EE91E00E94581387EB91E08A +:104350000E94581387E991E00E94581388E591E084 +:104360000E94581382E391E00E9458138DE091E07F +:10437000DF91CF910C9458130F931F93CF93DF933A +:1043800089E090E00E946E21D82F8AE090E00E94A0 +:104390006E21C82F8BE090E00E946E214C2F50E0E0 +:1043A00070E060E0762F652F542F44276D2B8A0133 +:1043B0009B01082BC901B801DF91CF911F910F918B +:1043C00008953F924F925F926F927F928F929F9249 +:1043D000AF92BF92CF92DF92EF92FF920F931F9313 +:1043E000CF93DF93CDB7DEB7CE58D1090FB6F8948F +:1043F000DEBF0FBECDBF26961FAE269727961FAEF7 +:10440000279725961FAE1EAE259787E191E023964C +:104410009FAF8EAF239780E00E941A14811103C0D2 +:1044200088E00E941C106FEF70E0CE018C579F4F08 +:104430000E945D3019821A8220E0AE014C575F4F16 +:104440006DEA73E08E010F5F1F4FC8010E94101DBF +:10445000882381F019821A8221E0AE014C575F4F08 +:104460006DEA73E0C8010E94101D882319F0C8018D +:104470000E94821581E4E82EF12CEC0EFD1E84E0F2 +:10448000E80EF11C49E1BE016C577F4FC7010E9445 +:10449000DA1D0E94BC21D62EC72EB82EA92E85E08B +:1044A00090E00E946E21982E86E090E00E946E219E +:1044B000882E82E090E00E946E21782E87E090E0C6 +:1044C0000E946E21682E88E090E00E946E21582E96 +:1044D0008CE090E00E946E21482E8DE090E00E94DA +:1044E0006E21382E8EE090E00E946E211F928F93F5 +:1044F0001F923F921F924F921F925F921F926F9254 +:104500001F927F921F928F921F929F92AF92BF92A3 +:10451000CF92DF9282EE90E09F938F936E0195E6AB +:10452000C90ED11CDF92CF920E947630F601019025 +:104530000020E9F73197AF014C195D09B601C701B9 +:104540000E94D111CE018F5B9F4F0E94541361EAEC +:1045500070E0C8010E945D30F80101900020E9F789 +:104560003197AF01401B510BB801C7010E94D11117 +:10457000C7010E94CD0DC7010E940A0E0FB6F89424 +:10458000DEBF0FBECDBFC257DF4F0FB6F894DEBF00 +:104590000FBECDBFDF91CF911F910F91FF90EF9094 +:1045A000DF90CF90BF90AF909F908F907F906F9053 +:1045B0005F904F903F900895E7E3F1E09EE1DF01C7 +:1045C0001D929A95E9F790E0FC01EE0FFF1FE80FAE +:1045D000F91FE85DFE4F608171816115710559F029 +:1045E0004281442341F04F3108F04EE150E087E32F +:1045F00091E00C94013590E080E008951F920F92B5 +:104600000FB60F9211242F933F938F939F93AF93E5 +:10461000BF938091610190916201A0916301B0917B +:1046200064013091600123E0230F2D3758F5019686 +:10463000A11DB11D209360018093610190936201DF +:10464000A0936301B093640180916501909166012C +:10465000A0916701B09168010196A11DB11D8093E1 +:10466000650190936601A0936701B0936801BF91C3 +:10467000AF919F918F913F912F910F900FBE0F900F +:104680001F90189526E8230F0296A11DB11DD2CFC9 +:104690001F920F920FB60F9211242F933F934F93B7 +:1046A0005F938F939F93EF93FF9320915C013091E1 +:1046B0005D0180915A0190915B012817390791F4AF +:1046C0008091C1008F7D8093C100FF91EF919F91F8 +:1046D0008F915F914F913F912F910F900FBE0F904F +:1046E0001F901895C9010196E0915801F091590168 +:1046F000E20FF31F208140915E0150915F0184170A +:10470000950710F090E080E090935D0180935C014C +:104710002093C600DACF1F920F920FB60F9211248A +:104720002F933F934F935F938F939F93EF93FF93B9 +:104730008091C0008C719091C6004091E605509127 +:10474000E7059A012F5F3F4FE091E405F091E50501 +:10475000E40FF51F90834091EA055091EB05241773 +:10476000350710F030E020E04091E8055091E90570 +:104770004217530799F4816090915701892B8093D8 +:104780005701FF91EF919F918F915F914F913F91D1 +:104790002F910F900FBE0F901F9018953093E70543 +:1047A0002093E605E9CFC82FD0E010E000E00C1719 +:1047B0001D07BCF461E085E00E940C0668EC70E027 +:1047C00080E090E00E94900660E085E00E940C0688 +:1047D00068EC70E080E090E00E9490060F5F1F4F51 +:1047E000E6CF60ED77E080E090E00E949006DDCFBC +:1047F000CF93DF93CDB7DEB7CA5CD1090FB6F8947B +:10480000DEBF0FBECDBF789484B5826084BD84B511 +:10481000816084BD85B5826085BD85B5816085BDBB +:1048200080916E00816080936E0010928100809173 +:1048300081008260809381008091810081608093FB +:104840008100809180008160809380008091B10020 +:1048500084608093B1008091B00081608093B0004B +:1048600080917A00846080937A0080917A008260DF +:1048700080937A0080917A00816080937A008091A1 +:104880007A00806880937A001092C10061E085E030 +:104890000E943A0683B7817F83BF83B7816083BF5D +:1048A00080917A008F7780937A0080E880BF8FE3D1 +:1048B00080937E0083E080937F0080916400806815 +:1048C000809364008091640088608093640080918C +:1048D00064008064809364008091640081608093B0 +:1048E00064000E94BC218B019C010C5211402109E3 +:1048F0003109053111442F40310508F09AC0609309 +:104900006A0170936B0180936C0190936D0182E05A +:1049100090E00E946E21843008F09EC08093810157 +:1049200085E090E00E946E219FEF980F9E3F08F077 +:104930009BC080937E0186E090E00E946E218F3FB5 +:1049400009F49BC080937D0187E090E00E946E2176 +:10495000823008F09BC080937F0188E090E00E9445 +:104960006E21823008F09BC080938001809100010D +:1049700090917F01913009F09BC08260809300018B +:104980008091000190918001913009F093C0816085 +:10499000809300018CE090E00E946E21823008F04C +:1049A0008BC0809369018DE090E00E946E2180931E +:1049B0007C018EE090E00E946E2180937B01C0908C +:1049C0006A01D0906B01E0906C01F0906D01C7011D +:1049D000B6010E94820584EFC81681E0D806E10482 +:1049E000F104D4F4A7019601A4E0220F331F441F61 +:1049F000551FAA95D1F760E074E284EF90E00E9421 +:104A0000A234215031093093C5002093C400809115 +:104A1000C0008D7F8093C00084EB93E00E94380F2C +:104A200080E591E00E94391481114EC086E00E9419 +:104A30001C1080E895E2A0E0B0E080936A019093BA +:104A40006B01A0936C01B0936D0160E875E280E0AA +:104A500090E00E944C215BCF1092810160E082E0E7 +:104A600090E00E944A215CCF8AE180937E016AE156 +:104A700085E090E00E944A215ECF83E080937D0133 +:104A800063E086E090E00E944A215ECF81E080935F +:104A90007F0161E087E090E00E944A215ECF81E0E3 +:104AA0008093800161E088E090E00E944A215ECF1F +:104AB0008D7F64CF8E7F6CCF1092690160E08CE0B7 +:104AC00090E00E944A216FCF80E00E941A14811169 +:104AD00002C088E0ACCF82EB93E00E94380F2E96A4 +:104AE0001FAE2E972F961FAE2F972D961FAE1EAE80 +:104AF0002D9787E191E02B969FAF8EAF2B9780E0AB +:104B00000E941A14882329F366EA73E0CE01859681 +:104B10000E945D30F9E4CF2ED12CCC0EDD1E94E046 +:104B2000C90ED11C40E0BE016B5D7F4FC6010E94E3 +:104B3000DA1D082F81119DC0C6010E940A0E0E9435 +:104B4000E121809169018111F2C160E00E943A0681 +:104B500061E080E00E940C0680E00E94E30501977E +:104B600009F4E5C10E94B10E61E08DE00E943A06B1 +:104B700061E08DE00E940C0618E269E170E080E0DF +:104B800090E00E94900685E00E94860F80E00E94DF +:104B9000E305019709F4CBC169E170E080E090E0A2 +:104BA0000E9490068DE00E94860F80E00E94E3053F +:104BB000019709F4BCC1115001F760E875E280E08B +:104BC00090E00E944C2160E082E090E00E944A2147 +:104BD0006AE185E090E00E944A2163E086E090E08F +:104BE0000E944A2161E087E090E00E944A2161E052 +:104BF00088E090E00E944A2160E08CE090E00E9412 +:104C00004A2164E68DE090E00E944A216CE38EE048 +:104C100090E00E944A2180E590E00E9439148823A8 +:104C200009F404CF80E00E941A14882309F451CFBC +:104C30000E94E1210E94B10E61E085E00E943A06E7 +:104C400061E08DE00E943A0661E085E00E940C067A +:104C500061E08DE00E940C0664EF71E080E090E07E +:104C60000E94900685E00E94860F8DE00E94860FCC +:104C7000F3CFFE0131967F01512C1C2DBE016359EB +:104C80007F4F812F9D2D0E94A810019709F048C0E9 +:104C9000AE968FADAE97282F8C3219F080538A30A4 +:104CA00038F4F70121937F015394FFE15F12E6CFBF +:104CB00089E490E08C0F9D1F04960E940A0E10E07C +:104CC00080E044E6442E54E6352E912CBB24B39468 +:104CD000AA24A39463E0862E7AE1772E612CE0E883 +:104CE000CE2EE5E2DE2EE12CF12C851508F083C0F6 +:104CF00021E030E02C0F3D1F280F311DDE01A359AC +:104D0000BF4F40E0282E240EF90191919F019C3263 +:104D100051F0251440F4473031F09D934F5FF2CFAE +:104D20008FEF9FEFB8CFEDE6F0E0EC0FFD1FE40F43 +:104D3000F11D1082CE0183599F4F0E943630111110 +:104D40001BC0CE0183599F4F0E94FA0F6B017C015B +:104D5000FCE2CF1AF1E0DF0AE108F10825E1C21612 +:104D600021E4D2062FE0E206F104E0F56B017C01BC +:104D70001F5F81E0820DB9CF113031F4782E181603 +:104D8000BCF32AE1722EF4CF123031F4882E8F3F1B +:104D900079F793E0892EECCF133039F49FEF980F19 +:104DA000682E933028F3612CE3CF143031F4A82E11 +:104DB0008823F1F2AA24A394DBCF153031F4B82E66 +:104DC0008823B1F2BB24B394D3CF163029F4982EA4 +:104DD000823070F2912CCCCF173059F0183059F442 +:104DE000482EC6CF30E8C32E35E2D32EE12CF12C6D +:104DF000BFCF382EBDCF80916A0190916B01A091F9 +:104E00006C01B0916D018C159D05AE05BF0509F4CF +:104E100073C0C701B6010E944C21C0926A01D092B2 +:104E20006B01E0926C01F0926D01C701B6010E9426 +:104E30008205802F90918101961541F06092810149 +:104E4000662D82E090E00E944A21802F90917E01A1 +:104E5000971541F070927E01672D85E090E00E94E9 +:104E60004A21802F90917D01981541F080927D011B +:104E7000682D86E090E00E944A21802F90917F016A +:104E80009A1541F0A0927F016A2D87E090E00E9480 +:104E90004A21802F909180019B1541F0B0928001B2 +:104EA0006B2D88E090E00E944A21802F909169014B +:104EB000991541F090926901692D8CE090E00E9473 +:104EC0004A21802F90917C01931541F030927C0112 +:104ED000632D8DE090E00E944A21802F90917B010C +:104EE000941561F040927B01642D8EE090E00E9469 +:104EF0004A210E94E12104C080E09CCF8111F9CFBA +:104F00008091000190917F01913069F482608093DB +:104F100000018091000190918001913031F4816015 +:104F2000809300010ECE8D7FF2CF8E7FF9CF8091DE +:104F30008101882319F0833009F060C0B7E18B2E1E +:104F4000B1E09B2E18ECA12E13E0B12E0EE6E02E60 +:104F500001E0F02E84EDC82E83E0D82E1D821E8243 +:104F60001C821B829A82898283E090E00E946E21DB +:104F7000782E84E090E00E946E21182F072D4FEFCD +:104F8000741229C08F3F39F560E083E090E00E9401 +:104F90004A2160E084E090E00E944A2110E000E0B5 +:104FA00080918101833009F0A9C080917B01801735 +:104FB000110610F40C9403301F930F93DF92CF92DD +:104FC000FF92EF920E9476300F900F900F900F900B +:104FD0000F900F90D3C00E3F8FEF180709F780EEA8 +:104FE00093E00E94380F90E080E00E94E31D811161 +:104FF00005C080918101833009F4B0CF8091810197 +:105000008130E9F419A61AA618A61FA287E191E03B +:105010009EA38DA368E074E0CE0184549F4F0E944C +:105020005D3041E1BE0164547F4FCE0189960E94FC +:10503000DA1D8111B6C082EF93E00E9458131D82E1 +:105040001E821C821B8287E191E09A83898361E042 +:1050500082E291E00E94921D11E099249394EDE682 +:10506000AE2EB12CAC0EBD1EE8E0AE0EB11CFFE2C0 +:105070008F2EAAE23A2E8091000183FF03C08AE1BD +:105080000E94530F111104C086E49AE00E94380F69 +:1050900084E49AE00E94380F6EE1CE0183579F4F5F +:1050A0000E94EE1911E0882331F380E00E94DC2297 +:1050B0007C016FE37AE00E945430892B09F07BC0B9 +:1050C0008091000181FF04C086E29AE00E9458139B +:1050D00080E591E00E943914882309F4A7CC80E090 +:1050E0000E941A14882309F4F4CC8091000181FFF6 +:1050F0006BC08EE09AE00E94581366C01F930F9316 +:10510000BF92AF92FF92EF920E94763041E56EE639 +:1051100071E0CE0105960E94DA1D0F900F900F905E +:105120000F900F900F90811125C040E06EE671E066 +:10513000CE0105960E94DA1D882399F08D8D9E8DF3 +:10514000AF8DB8A1892B8A2B8B2B39F4CE01059614 +:105150000E940A0E8EE691E048CFCE0105960E948D +:105160000A0E0F5F1F4F0E3F9FEF190739F686EBB0 +:1051700093E037CFCE0105960E940A0E0F5F1F4FB6 +:10518000602F83E090E00E944A2184E090E00E943A +:105190006E211817F9F2612F84E090E00E944A21F5 +:1051A000D9CFCE0189960E940A0ECE0184549F4F1A +:1051B0000E94E31D44CF6CE07AE0C7010E945430A6 +:1051C000892B21F40E94702111E055CF67E07AE02D +:1051D000C7010E945430892BA9F362E07AE0C7012D +:1051E0000E945430892B09F052C00E94BC216B01EF +:1051F0007C0184E694E00E94380FC701B6010E944A +:10520000AC138FE594E00E9458138CE394E00E9465 +:1052100058138AE394E00E94380F68E0CE01875B60 +:105220009F4F0E94EE192A968FAD2A97883729F44E +:1052300082E394E00E9458131ECFCE01875B9F4FFC +:105240000E94FA0F6B017C01DC01CB018C52914072 +:10525000A109B10985319144AF40B10518F084E24C +:1052600094E0E8CF8AE194E00E94380FC701B601CC +:105270000E94AC1386E194E00E945813C701B60166 +:105280000E944C210E94E12185E00E94D3236EEF11 +:1052900079E0C7010E945430892B09F036C182E0C1 +:1052A00090E00E946E21182F88EE97E00E9458131C +:1052B00084ED97E00E94380F8BEC97E0112361F0AA +:1052C0008FEB97E0113041F087EB97E0123021F03F +:1052D000133021F480EB97E00E94380F86ED93E0C5 +:1052E0000E9454138AE897E00E94380F6AE070E049 +:1052F00080917E010E94D61386E897E00E94380FC5 +:105300006AE070E080917D010E94DD1382E597E004 +:105310000E94380F6AE070E080917C010E94D613F1 +:105320008FE497E00E94380F6AE070E080917B0183 +:105330000E94DD1387E497E00E9458138BE297E008 +:105340000E9458138CE097E00E94581382EF96E079 +:105350000E94581388ED96E00E9458138FEB96E058 +:105360000E9458138BEA96E00E9458138CE896E04E +:105370000E94581387E696E00E94581385E496E051 +:105380000E9458138DE396E00E9458138BE396E039 +:105390000E94380F0E946C05892BE1F386ED93E0A3 +:1053A0000E94060F813361F48AE296E00E9458134E +:1053B00060E082E090E00E944A210E94E12104CF57 +:1053C000823331F486E196E00E94581361E0F1CF18 +:1053D000833331F487E096E00E94581362E0E9CF0E +:1053E000843331F488EF95E00E94581363E0E1CFF5 +:1053F000853379F48AED95E00E94581360E083E0EC +:1054000090E00E944A2160E084E090E00E944A21FE +:10541000DBCE863301F58BEB95E00E94380F0E94BE +:105420006C05892BE1F386ED93E00E94060F8093D3 +:105430007E01682F85E090E00E944A210E94E121D0 +:1054400082EA95E00E94380F6AE070E080917E0168 +:105450000E94DD13B9CE8733D1F485E695E00E9432 +:10546000380F0E94580F97FD09C080937D01682F67 +:1054700086E090E00E944A210E94E1218EE395E0BF +:105480000E94380F6AE070E080917D01E1CF88339F +:10549000D1F48DE095E00E94380F0E94580F97FDDF +:1054A00009C080937C01682F8DE090E00E944A2122 +:1054B0000E94E1218FED94E00E94380F6AE070E0D5 +:1054C00080917C01C5CF8933D1F483EA94E00E94B6 +:1054D000380F0E94580F97FD09C080937B01682FF9 +:1054E0008EE090E00E944A210E94E1218DE794E045 +:1054F0000E94380F6AE070E080917B01A9CF883765 +:1055000009F0D2CE85E794E0F6CD6BEF79E0C701E4 +:105510000E945430892B19F58091000181FF0AC047 +:105520008DEE99E00E94380F6AE070E080918B0167 +:105530000E94DD130E94EA0F813051F4F70130829E +:10554000118240E0B7018DEA93E00E94C6173CCE7D +:1055500081E00E94DC227C010E946430F2CF6AEE7E +:1055600079E0C7010E945430892B09F09CC081E08A +:105570000E94DC227C01009711F410E07CCDAE96F5 +:105580001FAEAE97AF961FAEAF97C753DF4F99834D +:105590008883C95CD0402A961FAE2A972B961FAEEF +:1055A0002B978091AD03807709F467C0F701808164 +:1055B0000DEA13E08F3201F5C753DF4FE881F9811F +:1055C000C95CD04080818F3241F43196C753DF4FA0 +:1055D000F983E883C95CD040EFCF6091B303709149 +:1055E000B403CE01875B9F4F0E940014882309F407 +:1055F00044C08E01075B1F4FAE0147535F4FBE0192 +:1056000065557F4FC753DF4F88819981C95CD04072 +:105610000E947F0B882389F1C753DF4FE881F9810E +:10562000C95CD0408081882391F120E0AE014555CE +:105630005F4FB801CE0183599F4F0E948A1A882379 +:1056400089F080E2FE01E359FF4FDE01A75BBF4F07 +:1056500001900D928A95E1F7CE0183599F4F0E94E8 +:105660000A0EC7CFAE0145555F4FB801CE01835931 +:105670009F4F0E948B208111E4CF8091000181FF18 +:105680007CCF8FEC99E00E94380FC7011EC1AE019C +:1056900045555F4FB801CE0183599F4F0E948B2023 +:1056A000811192CDEACF6CEC79E0C7010E945430B1 +:1056B000892B09F0CDC081E00E94DC228C01892B6E +:1056C00009F45BCF0E94EA0F8330F9F468EC79E0CB +:1056D000C8010E945430892BC1F482E00E94DC2270 +:1056E00020E0AC016DEA73E0CE0105960E94101D2A +:1056F000882309F442CFCE0105960E94D218182FB4 +:10570000CE0105960E940A0EB6CC20E0A8016DEAF3 +:1057100073E0CE0105960E94101D81115DC0C80185 +:105720000E94643060E082E291E00E94921DC12CF0 +:10573000D12C76018D81811177C08091AD03807766 +:1057400009F472C08091BD039091BE03A091BF0384 +:10575000B091C0038F719927AA27BB27892B8A2B69 +:105760008B2B09F061C06DEA73E0CE0105960E94B3 +:105770001917882309F458C08D8183FF28C08076CB +:1057800009F445C02A968FAE2A972B961FAE2B9709 +:10579000BE01675B7F4FC8010E94920F8823B9F05A +:1057A000CE0105960E940A0E41E0BE01675B7F4F65 +:1057B000CE0105960E94DA1DCE0105960E94821543 +:1057C000882329F0FFEFCF1ADF0AEF0AFF0ACE0184 +:1057D00005960E940A0EAECF8D81807771F4CE01BE +:1057E00005960E940A0E41E0B801CE0105960E947E +:1057F000DA1D811107C010E083CFCE0105960E940B +:105800004B167DCFCE0105960E94821578CF60E0C1 +:10581000CE0105960E94AD0D0097C9F2BE01675BEF +:105820007F4F0E947E0DB4CF8091000181FF09C09F +:105830004AE0C701B6010E94661387EB99E00E9417 +:10584000581311E0CD28CE28CF2809F014CC95CEDE +:1058500064EB79E0C7010E945430892BB1F481E0F8 +:105860000E94DC228C01009709F487CE61EB79E07D +:105870000E94543060E0892B31F482E291E00E9472 +:10588000921D182FF8CBC801FACF6CEA79E0C70156 +:105890000E945430892B09F0D1C081E00E94DC22A3 +:1058A0008C01009709F469CE40E0BC01CE01059659 +:1058B0000E94DA1D81110CC08091000181FF5DCE34 +:1058C00087E999E00E94380FC8010E94EB1355CE7A +:1058D00082E00E94DC22009739F1FC010190002057 +:1058E000E9F73197BF01681B790B0E94D60F8C0135 +:1058F0000097D1F00E94FA0FAB01BC01CE010596D2 +:105900000E94BD0C811110C08091000181FF07C071 +:1059100085E899E00E94380FC8010E94EB13CE0180 +:1059200005960E940A0E29CE83E00E94DC22009791 +:1059300009F44FC0FC0101900020E9F73197BF0145 +:10594000681B790B0E94D60F009709F442C00E9491 +:10595000FA0F2B013C0184E00E94DC220097F1F158 +:10596000FC0101900020E9F73197BF01681B790B1A +:105970000E94D60F009791F10E94FA0F6B017C01F3 +:1059800010E000E0BE01675B7F4FCE0105960E94EC +:10599000A810019709F045C02A968FAD2A970F5F8E +:1059A0001F4FA80170E060E04416550666067706B2 +:1059B000C0F121E0C216D104E104F104E9F490EE53 +:1059C000980F9F3580F4682F86ED93E00E942F0F8B +:1059D000D9CF44244A94542C3201BDCFC12CD12CB0 +:1059E0007601C394CDCF8A3071F38D3061F383E8B3 +:1059F00099E00E94380FC6CF42E0C416D104E104FA +:105A0000F10439F460E170E00E94D61381E899E076 +:105A1000F0CF93E0C916D104E104F10409F0B2CF4C +:105A2000D2CFCE0105960E940A0E8091000183FD1F +:105A3000CBCB86ED93E00E945413C6CB6BE779E0A5 +:105A4000C7010E945430892B09F06FC081E00E9489 +:105A5000DC228C01009709F490CD41E0BC01CE011D +:105A600005960E94DA1D811107C08091000181FF17 +:105A700084CD86E699E026CF82E00E94DC22F09079 +:105A80000001009731F1FC0101900020E9F7319706 +:105A9000BF01681B790B0E94D60F8C010097C9F0DB +:105AA0000E94FA0FAB01BC01CE0105960E94BD0C0D +:105AB00081110FC084E599E0F1FE31CF2BCF1D316C +:105AC00040F442E050E064E271E0CE0105960E94AD +:105AD000D1118091000183FF03C08AE10E94530F1E +:105AE00082E599E00E94380F6EE1CE0183579F4F07 +:105AF0000E94EE19182F8823B1F0E82EF12CA7018F +:105B0000BE0163577F4FCE0105960E94D111E81662 +:105B1000F906A9F28091000181FF6DCE8CE399E036 +:105B20000E94581368CE11E0EBCD67E379E0C7011E +:105B30000E945430892B69F581E00E94DC22009795 +:105B400009F41BCD40E0BC01CE0105960E94DA1D90 +:105B50008823A9F06D8D7E8D8F8D98A14AE00E94DB +:105B60006613CE0105960E940A0E11E08091000195 +:105B700083FD81CA86ED93E00E9454137CCA809114 +:105B8000000181FF04C084E399E00E94380F10E017 +:105B9000EDCF6FE279E0C7010E945430892B09F004 +:105BA00052C182E299E00E94380F8091D203823084 +:105BB000A9F08330B1F08130B9F48EE199E00E9410 +:105BC0005813BE0163597F4F8AE00E94D3078111A9 +:105BD0000EC08EEF98E00E94380FCFCC8AE199E09A +:105BE000EECF85E199E0EBCF8DE099E0E8CF8CEE48 +:105BF00098E00E94380F60E170E0AE968FADAE97EE +:105C00000E94DD1383EE98E00E94380FAF968FADAF +:105C1000AF970E94530FE0968FADE0970E94530F0D +:105C200086ED93E00E94541389ED98E00E94380FAE +:105C30000DE610E00C0F1D1F0D5F1F4FF801819145 +:105C40008F010E94530FA016B106C1F78DEC98E0AA +:105C50000E94380FE6968FADE6976AE070E0829575 +:105C60008F700E94D6138BEC98E00E94380FE69656 +:105C70008FADE6976AE070E08F700E94DD138BEBCA +:105C800098E00E94380FEA966CAD7DAD8EAD9FAD69 +:105C9000EA974AE00E94661386ED93E00E9454134F +:105CA00086EA98E00E94380FEC968FADEC976AE098 +:105CB00070E08F700E94D61384EA98E00E94380F3B +:105CC000EC966FADEC9762956F7070E06053784F13 +:105CD000EB968FADEB978F70F0E18F9FC001112491 +:105CE000680F791F072E000C880B990B0E94AC13CC +:105CF00086ED93E00E945413BE01675B7F4F89E0FD +:105D00000E94D307882309F499C02A968FAD2A9759 +:105D1000807C09F060C060968FAD60978370C82E5C +:105D2000D12CDC2CCC24DD0CDD0C61968FAD619781 +:105D300024E0829FC0011124C82AD92A62968FAD1F +:105D400062978295869586958370C82A4FEFC41A0C +:105D5000D40AF12CE12C63968FAD63978370880F82 +:105D600064969FAD649797FB992790F9892B2F969E +:105D70009FAD2F979F70890F9927991F079704C090 +:105D8000CC0CDD1CEE1CFF1C8A95D2F7C114D1048B +:105D9000E104F10409F452C0BE01675B7F4F89E062 +:105DA0000E94D307882309F449C088E998E00E943B +:105DB000380FC701B6010E9493332DEB37E346E05D +:105DC0005AE30E94F9330E9464334AE00E9466134A +:105DD00084E998E090C9803489F56396CFAC6397E5 +:105DE000D12CF12CE12C8FEFC81AD80AE80AF80A56 +:105DF00062968FAD629790E0B0E0A0E0BA2FA92F35 +:105E0000982F8827C80ED91EEA1EFB1E61968FADFB +:105E100061978F7390E0B0E0A0E0DC0199278827BC +:105E20008C0D9D1DAE1DBF1D6C017D014AE0CC0C8B +:105E3000DD1CEE1CFF1C4A95D1F7A8CF85E898E041 +:105E40000E9458139ACB60E878E0C7010E94543052 +:105E5000892B09F4B9C96AE778E0C7010E94543078 +:105E6000009719F4FC01099588CB66E778E0C70133 +:105E70000E945430892BD9F481E00E94DC228C01ED +:105E8000009709F47ACB41E5BC01CE0105960E944A +:105E9000DA1D882329F0CE0105960E940A0E94C9C6 +:105EA0008091000181FF69CB80E698E00BCD69E528 +:105EB00078E0C7010E945430892B49F481E00E94A8 +:105EC000DC22009709F459CB0E94E31D7DC965E5EA +:105ED00078E0C7010E945430892B19F487E398E0D9 +:105EE0007ACE62E378E0C7010E945430892B81F5B5 +:105EF00081E00E94DC227C01009709F43ECB6FE236 +:105F000078E00E945430082F811114C090928001D3 +:105F1000809100018160809300016091800188E0A0 +:105F200090E00E944A210E94E12111E0002309F43F +:105F3000A2C823CB6BE278E0C7010E945430082F3F +:105F40008111EBCF10928001809100018E7FE3CF11 +:105F500063E278E0C7010E945430892B41F581E06B +:105F60000E94DC227C01009709F407CB60E278E014 +:105F70000E945430082F81110CC090927F018091B3 +:105F8000000182608093000160917F0187E090E0D2 +:105F9000C8CF6CE178E0C7010E945430082F81110E +:105FA000F3CF10927F01809100018D7FEBCF68E1EC +:105FB00078E0C7010E94543010910001892BF1F460 +:105FC00081E00E94DC227C01009709F4D6CA65E1D9 +:105FD00078E00E945430811108C0186010930001CD +:105FE00011E0882309F447C8C8CA61E178E0C70115 +:105FF0000E9454308111F4CF177FF0CF11FFBDCA3A +:106000008FEF97E040CB10E000E00C94DC27E6ED4A +:10601000F3E01382128288EE93E0A0E0B0E0848384 +:106020009583A683B78385E091E091838083E4EE36 +:10603000F5E082EE93E09183808381E092E09783A4 +:106040008683158214821382128210928B01109221 +:10605000AD031092AE0384E68093CD031092D20379 +:1060600080E58093D3031092D4030895FC01882720 +:106070009927E89421912032E9F3293010F02E304D +:10608000C8F32B3241F02D3239F4689404C00E94D9 +:106090006E30820F911D219120532A30C0F31EF4DF +:1060A000909581959F4F0895FB01DC018D9105909E +:1060B00080190110D9F3990B0895FB01DC010590BB +:1060C0000D920020E1F70895DC016C9161566A3170 +:1060D00008F0605E6F5B6D93C1F708957AE0979F5B +:1060E000902D879F802D910D11240895AEE0B0E092 +:1060F000ECE7F0E30C943B330D891E898EE08C8332 +:106100001A8309838FEF9FE79E838D83AE01475EDD +:106110005F4F6F89788DCE0101960E9499302F8153 +:106120003885020F131FF80110822E96E4E00C94BC +:106130005733ABE0B0E0EFE9F0E30C942D337C0192 +:106140003B018A01FC0117821682838181FFC8C14D +:10615000CE0101965C01F7019381F30193FD8591D6 +:1061600093FF81913F01882309F453C1853239F4AB +:1061700093FD859193FF81913F01853229F4B70109 +:1061800090E00E948932E7CF912C212C312CFFE145 +:10619000F31538F08B3211F190F4803209F183322B +:1061A00029F137FC3CC020ED280F2A3050F536FE8F +:1061B00020C08AE0989E200D1124922E06C08D32B8 +:1061C00091F0803371F7689430F8F30193FD859175 +:1061D00093FF81913F018111DACF21C0689431F89A +:1061E000689432F8F2CF689433F8EFCF689434F8BB +:1061F000ECCFEAE02E9E200D1124222E689435F873 +:10620000E4CF8E3229F436FC04C1689436F8DDCF31 +:106210008C3619F4689437F8D8CF8836B1F2982FB5 +:106220009F7D95549330E0F08336A1F18337C1F11F +:10623000833509F063C02801F2E04F0E511CF801CC +:10624000C080D180692D70E036FC02C06FEF7FEF17 +:10625000C6010E9473324C01689437F882010AC06B +:106260000C5F1F4FFFE3F98388248394912C650111 +:10627000E89437F833FE2DC0522C8114910471F547 +:10628000552009F468CFB70180E290E00E9489327E +:106290005A94F6CFF801808189830E5F1F4FE4CFB7 +:1062A0002801F2E04F0E511CF801C080D180692D09 +:1062B00070E036FC02C06FEF7FEFC6010E947E32B5 +:1062C0004C018201D5CFB70180E290E00E94893273 +:1062D0002A942814190409F0B0F7CECFF60137FC40 +:1062E000859137FE81916F01B70190E00E9489325C +:1062F00051105A94F1E08F1A9108BFCF843619F0EB +:10630000893609F077C0F80137FE6BC06081718172 +:10631000828193810C5F1F4FF32DFF763F2E97FFF5 +:1063200009C090958095709561957F4F8F4F9F4FD5 +:10633000689437F82AE030E0A5010E94B932C82EEF +:10634000CA188C2C432C36FE0CC0E89440F8C914B3 +:1063500040F434FE05C032FC03C0F32DFE7E4F2E08 +:10636000892C44FE95C0FE01EC0DF11D8081803327 +:1063700009F087C0242D297E422E842D8870582E46 +:1063800043FC95C040FE8FC09C2C821418F42C0C4A +:10639000922C981844FE91C0B70180E390E00E94CF +:1063A000893242FE09C088E790E041FE02C088E5DC +:1063B00090E0B7010E948932C91408F48AC0CA94D7 +:1063C000D12C9FEFC91AD90ACA0CDB1CF6018291A5 +:1063D0006F01B70190E00E948932AC14BD04B1F79F +:1063E0004FCF60817181072E000C880B990B0E5FD7 +:1063F0001F4F92CFD32CE894D4F82AE030E08537B1 +:1064000039F1232D297FD22E8F3601F148F48835BA +:10641000A9F0F701868197812B96E2E10C9449332C +:10642000803749F08837A9F7D4FE02C06894D2F8C3 +:1064300020E130E00DC06894D4F8F6CF34FE03C0FC +:10644000822F8660D82E20E132E002C028E030E0C2 +:10645000F801D7FE0FC060817181828193810C5F4A +:106460001F4FA5010E94B932C82ECA183D2CE894CE +:1064700037F867CF6081718190E080E00E5F1F4F39 +:10648000F0CF42FC02C0839478CF8394839475CF7D +:10649000842D867809F471CFF6CFB70180E290E0C1 +:1064A0000E94893283948214C0F3512C73CF522CF2 +:1064B0005818821408F46ECFF8CF842D867809F42A +:1064C0007BCF8BE241FE80E247FC8DE2B70190E09A +:1064D00071CFB70180E390E00E9489329A946CCF2B +:1064E0008FEF9FEF99CFFC01059061507040011034 +:1064F000D8F7809590958E0F9F1F0895FC016150ED +:10650000704001900110D8F7809590958E0F9F1FD5 +:1065100008950F931F93CF93DF93182F092FEB014B +:106520008B8181FD09C01FEF0FEF812F902FDF912D +:10653000CF911F910F91089582FF14C02E813F814A +:106540008C819D81281739073CF4E881F981CF01BE +:1065500001969983888310838E819F8101969F8302 +:106560008E83E3CFE885F985812F0995892BA1F3E7 +:10657000DACFFA01AA27283051F1203181F1E894CD +:106580006F936E7F6E5F7F4F8F4F9F4FAF4FB1E026 +:106590003ED0B4E03CD0670F781F891F9A1FA11D21 +:1065A000680F791F8A1F911DA11D6A0F711D811D22 +:1065B000911DA11D20D009F468943F912AE0269FE7 +:1065C00011243019305D3193DEF6CF010895462F46 +:1065D0004770405D4193B3E00FD0C9F7F6CF462F27 +:1065E0004F70405D4A3318F0495D31FD4052419390 +:1065F00002D0A9F7EACFB4E0A6959795879577954D +:106600006795BA95C9F700976105710508959B01D3 +:10661000AC010A2E06945795479537952795BA955C +:10662000C9F7620F731F841F951FA01D0895F99964 +:10663000FECF92BD81BDF89A992780B50895262F87 +:10664000F999FECF1FBA92BD81BD20BD0FB6F89457 +:10665000FA9AF99A0FBE019608952F923F924F929F +:106660005F926F927F928F929F92AF92BF92CF92E2 +:10667000DF92EF92FF920F931F93CF93DF93CDB7EB +:10668000DEB7CA1BDB0B0FB6F894DEBF0FBECDBF63 +:1066900009942A88398848885F846E847D848C8434 +:1066A0009B84AA84B984C884DF80EE80FD800C813D +:1066B0001B81AA81B981CE0FD11D0FB6F894DEBF20 +:1066C0000FBECDBFED0108950E94D83388F09F57CB +:1066D00098F0B92F9927B751B0F0E1F0660F771F06 +:1066E000881F991F1AF0BA95C9F714C0B13091F0FC +:1066F0000E94F233B1E008950C94F233672F782FA3 +:106700008827B85F39F0B93FCCF3869577956795C0 +:10671000B395D9F73EF490958095709561957F4F2C +:106720008F4F9F4F0895E89409C097FB3EF49095D2 +:106730008095709561957F4F8F4F9F4F9923A9F05A +:10674000F92F96E9BB279395F695879577956795E9 +:10675000B795F111F8CFFAF4BB0F11F460FF1BC02D +:106760006F5F7F4F8F4F9F4F16C0882311F096E9C0 +:1067700011C0772321F09EE8872F762F05C066236E +:1067800071F096E8862F70E060E02AF09A95660F27 +:10679000771F881FDAF7880F9695879597F90895E0 +:1067A00057FD9058440F551F59F05F3F71F04795C2 +:1067B000880F97FB991F61F09F3F79F087950895A7 +:1067C000121613061406551FF2CF4695F1DF08C0C6 +:1067D000161617061806991FF1CF869571056105E3 +:1067E00008940895E894BB2766277727CB0197F98B +:1067F00008950E940C340C947D340E946F3438F05C +:106800000E94763420F0952311F00C9466340C9499 +:106810006C3411240C94F3330E94D03370F3959FA1 +:10682000C1F3950F50E0551F629FF001729FBB2787 +:10683000F00DB11D639FAA27F00DB11DAA1F649F23 +:106840006627B00DA11D661F829F2227B00DA11DD6 +:10685000621F739FB00DA11D621F839FA00D611D5C +:10686000221F749F3327A00D611D231F849F600D7D +:10687000211D822F762F6A2F11249F5750409AF0A6 +:10688000F1F088234AF0EE0FFF1FBB1F661F771F32 +:10689000881F91505040A9F79E3F510580F00C94FD +:1068A00066340C94F3335F3FE4F3983ED4F386955B +:1068B00077956795B795F795E7959F5FC1F7FE2B9D +:1068C000880F911D9695879597F9089597F99F6779 +:1068D00080E870E060E008959FEF80EC0895002468 +:1068E0000A941616170618060906089500240A9435 +:1068F00012161306140605060895092E0394000CBB +:1069000011F4882352F0BB0F40F4BF2B11F460FF49 +:1069100004C06F5F7F4F8F4F9F4F0895AA1BBB1B13 +:1069200051E107C0AA1FBB1FA617B70710F0A61B8F +:10693000B70B881F991F5A95A9F780959095BC01B0 +:10694000CD010895A1E21A2EAA1BBB1BFD010DC0AB +:10695000AA1FBB1FEE1FFF1FA217B307E407F5070F +:1069600020F0A21BB30BE40BF50B661F771F881FEB +:10697000991F1A9469F760957095809590959B0181 +:10698000AC01BD01CF0108950E94D534A59F900DA3 +:10699000B49F900DA49F800D911D11240895EE0FBA +:1069A000FF1F0590F491E02D0994A29FB001B39FC1 +:1069B000C001A39F700D811D1124911DB29F700D08 +:1069C000811D1124911D0895FB01DC0104C08D91EE +:1069D0000190801921F441505040C8F7881B990B51 +:1069E0000895FB01DC0102C001900D92415050401E +:1069F000D8F70895DC0101C06D9341505040E0F795 +:106A00000895FB01DC014150504048F001900D9287 +:106A10000020C9F701C01D9241505040E0F7089591 +:106A2000F894FFCF03000000002F0FE10E3C10E0B0 +:106A30000E2D0F060FC50E00000000331330133C5F +:0C6A40001034100D0A002F000A0D000099 +:107E0000112484B714BE81FFF0D085E080938100F7 +:107E100082E08093C00088E18093C10086E0809377 +:107E2000C20080E18093C4008EE0C9D0259A86E02C +:107E300020E33CEF91E0309385002093840096BBD3 +:107E4000B09BFECF1D9AA8958150A9F7CC24DD24C4 +:107E500088248394B5E0AB2EA1E19A2EF3E0BF2EE7 +:107E6000A2D0813461F49FD0082FAFD0023811F036 +:107E7000013811F484E001C083E08DD089C08234E0 +:107E800011F484E103C0853419F485E0A6D080C0E4 +:107E9000853579F488D0E82EFF2485D0082F10E0AE +:107EA000102F00270E291F29000F111F8ED06801E7 +:107EB0006FC0863521F484E090D080E0DECF843638 +:107EC00009F040C070D06FD0082F6DD080E0C81688 +:107ED00080E7D80618F4F601B7BEE895C0E0D1E017 +:107EE00062D089930C17E1F7F0E0CF16F0E7DF06D8 +:107EF00018F0F601B7BEE89568D007B600FCFDCFD4 +:107F0000A601A0E0B1E02C9130E011968C91119780 +:107F100090E0982F8827822B932B1296FA010C0160 +:107F200087BEE89511244E5F5F4FF1E0A038BF0790 +:107F300051F7F601A7BEE89507B600FCFDCF97BE46 +:107F4000E89526C08437B1F42ED02DD0F82E2BD052 +:107F50003CD0F601EF2C8F010F5F1F4F84911BD097 +:107F6000EA94F801C1F70894C11CD11CFA94CF0C13 +:107F7000D11C0EC0853739F428D08EE10CD085E9AC +:107F80000AD08FE07ACF813511F488E018D01DD067 +:107F900080E101D065CF982F8091C00085FFFCCF94 +:107FA0009093C60008958091C00087FFFCCF809118 +:107FB000C00084FD01C0A8958091C6000895E0E648 +:107FC000F0E098E1908380830895EDDF803219F02E +:107FD00088E0F5DFFFCF84E1DECF1F93182FE3DFCA +:107FE0001150E9F7F2DF1F91089580E0E8DFEE27F6 +:047FF000FF270994CA +:027FFE00040479 +:00000001FF diff --git a/Binaries/avrdude.conf b/Binaries/avrdude.conf new file mode 100644 index 0000000..0765c15 --- /dev/null +++ b/Binaries/avrdude.conf @@ -0,0 +1,16085 @@ +# $Id$ -*- text -*- +# +# AVRDUDE Configuration File +# +# This file contains configuration data used by AVRDUDE which describes +# the programming hardware pinouts and also provides part definitions. +# AVRDUDE's "-C" command line option specifies the location of the +# configuration file. The "-c" option names the programmer configuration +# which must match one of the entry's "id" parameter. The "-p" option +# identifies which part AVRDUDE is going to be programming and must match +# one of the parts' "id" parameter. +# +# DO NOT MODIFY THIS FILE. Modifications will be overwritten the next +# time a "make install" is run. For user-specific additions, use the +# "-C +filename" commandline option. +# +# Possible entry formats are: +# +# programmer +# parent # optional parent +# id = [, [, ] ...] ; # are quoted strings +# desc = ; # quoted string +# type = ; # programmer type, quoted string +# # supported programmer types can be listed by "-c ?type" +# connection_type = parallel | serial | usb +# baudrate = ; # baudrate for avr910-programmer +# vcc = [, ... ] ; # pin number(s) +# buff = [, ... ] ; # pin number(s) +# reset = ; # pin number +# sck = ; # pin number +# mosi = ; # pin number +# miso = ; # pin number +# errled = ; # pin number +# rdyled = ; # pin number +# pgmled = ; # pin number +# vfyled = ; # pin number +# usbvid = ; # USB VID (Vendor ID) +# usbpid = [, ...] # USB PID (Product ID) (1) +# usbdev = ; # USB interface or other device info +# usbvendor = ; # USB Vendor Name +# usbproduct = ; # USB Product Name +# usbsn = ; # USB Serial Number +# +# To invert a bit, use = ~ , the spaces are important. +# For a pin list all pins must be inverted. +# A single pin can be specified as usual = ~ , for lists +# specify it as follows = ~ ( [, ... ] ) . +# +# (1) Not all programmer types can process a list of PIDs. +# ; +# +# part +# id = ; # quoted string +# desc = ; # quoted string +# has_jtag = ; # part has JTAG i/f +# has_debugwire = ; # part has debugWire i/f +# has_pdi = ; # part has PDI i/f +# has_updi = ; # part has UPDI i/f +# has_tpi = ; # part has TPI i/f +# devicecode = ; # deprecated, use stk500_devcode +# stk500_devcode = ; # numeric +# avr910_devcode = ; # numeric +# signature = ; # signature bytes +# usbpid = ; # DFU USB PID +# chip_erase_delay = ; # micro-seconds +# reset = dedicated | io; +# retry_pulse = reset | sck; +# pgm_enable = ; +# chip_erase = ; +# chip_erase_delay = ; # chip erase delay (us) +# # STK500 parameters (parallel programming IO lines) +# pagel = ; # pin name in hex, i.e., 0xD7 +# bs2 = ; # pin name in hex, i.e., 0xA0 +# serial = ; # can use serial downloading +# parallel = ; # can use par. programming +# # STK500v2 parameters, to be taken from Atmel's XML files +# timeout = ; +# stabdelay = ; +# cmdexedelay = ; +# synchloops = ; +# bytedelay = ; +# pollvalue = ; +# pollindex = ; +# predelay = ; +# postdelay = ; +# pollmethod = ; +# mode = ; +# delay = ; +# blocksize = ; +# readsize = ; +# hvspcmdexedelay = ; +# # STK500v2 HV programming parameters, from XML +# pp_controlstack = , , ...; # PP only +# hvsp_controlstack = , , ...; # HVSP only +# hventerstabdelay = ; +# progmodedelay = ; # PP only +# latchcycles = ; +# togglevtg = ; +# poweroffdelay = ; +# resetdelayms = ; +# resetdelayus = ; +# hvleavestabdelay = ; +# resetdelay = ; +# synchcycles = ; # HVSP only +# chiperasepulsewidth = ; # PP only +# chiperasepolltimeout = ; +# chiperasetime = ; # HVSP only +# programfusepulsewidth = ; # PP only +# programfusepolltimeout = ; +# programlockpulsewidth = ; # PP only +# programlockpolltimeout = ; +# # JTAG ICE mkII parameters, also from XML files +# allowfullpagebitstream = ; +# enablepageprogramming = ; +# idr = ; # IO addr of IDR (OCD) reg. +# rampz = ; # IO addr of RAMPZ reg. +# spmcr = ; # mem addr of SPMC[S]R reg. +# eecr = ; # mem addr of EECR reg. +# # (only when != 0x3c) +# is_at90s1200 = ; # AT90S1200 part +# is_avr32 = ; # AVR32 part +# +# memory +# paged = ; # yes / no +# size = ; # bytes +# page_size = ; # bytes +# num_pages = ; # numeric +# min_write_delay = ; # micro-seconds +# max_write_delay = ; # micro-seconds +# readback_p1 = ; # byte value +# readback_p2 = ; # byte value +# pwroff_after_write = ; # yes / no +# read = ; +# write = ; +# read_lo = ; +# read_hi = ; +# write_lo = ; +# write_hi = ; +# loadpage_lo = ; +# loadpage_hi = ; +# writepage = ; +# ; +# ; +# +# If any of the above parameters are not specified, the default value +# of 0 is used for numerics or the empty string ("") for string +# values. If a required parameter is left empty, AVRDUDE will +# complain. +# +# Parts can also inherit parameters from previously defined parts +# using the following syntax. In this case specified integer and +# string values override parameter values from the parent part. New +# memory definitions are added to the definitions inherited from the +# parent. +# +# part parent # quoted string +# id = ; # quoted string +# +# ; +# +# NOTES: +# * 'devicecode' is the device code used by the STK500 (see codes +# listed below) +# * Not all memory types will implement all instructions. +# * AVR Fuse bits and Lock bits are implemented as a type of memory. +# * Example memory types are: +# "flash", "eeprom", "fuse", "lfuse" (low fuse), "hfuse" (high +# fuse), "signature", "calibration", "lock" +# * The memory type specified on the avrdude command line must match +# one of the memory types defined for the specified chip. +# * The pwroff_after_write flag causes avrdude to attempt to +# power the device off and back on after an unsuccessful write to +# the affected memory area if VCC programmer pins are defined. If +# VCC pins are not defined for the programmer, a message +# indicating that the device needs a power-cycle is printed out. +# This flag was added to work around a problem with the +# at90s4433/2333's; see the at90s4433 errata at: +# +# http://www.atmel.com/dyn/resources/prod_documents/doc1280.pdf +# +# INSTRUCTION FORMATS +# +# Instruction formats are specified as a comma seperated list of +# string values containing information (bit specifiers) about each +# of the 32 bits of the instruction. Bit specifiers may be one of +# the following formats: +# +# '1' = the bit is always set on input as well as output +# +# '0' = the bit is always clear on input as well as output +# +# 'x' = the bit is ignored on input and output +# +# 'a' = the bit is an address bit, the bit-number matches this bit +# specifier's position within the current instruction byte +# +# 'aN' = the bit is the Nth address bit, bit-number = N, i.e., a12 +# is address bit 12 on input, a0 is address bit 0. +# +# 'i' = the bit is an input data bit +# +# 'o' = the bit is an output data bit +# +# Each instruction must be composed of 32 bit specifiers. The +# instruction specification closely follows the instruction data +# provided in Atmel's data sheets for their parts. +# +# See below for some examples. +# +# +# The following are STK500 part device codes to use for the +# "devicecode" field of the part. These came from Atmel's software +# section avr061.zip which accompanies the application note +# AVR061 available from: +# +# http://www.atmel.com/dyn/resources/prod_documents/doc2525.pdf +# + +#define ATTINY10 0x10 /* the _old_ one that never existed! */ +#define ATTINY11 0x11 +#define ATTINY12 0x12 +#define ATTINY15 0x13 +#define ATTINY13 0x14 + +#define ATTINY22 0x20 +#define ATTINY26 0x21 +#define ATTINY28 0x22 +#define ATTINY2313 0x23 + +#define AT90S1200 0x33 + +#define AT90S2313 0x40 +#define AT90S2323 0x41 +#define AT90S2333 0x42 +#define AT90S2343 0x43 + +#define AT90S4414 0x50 +#define AT90S4433 0x51 +#define AT90S4434 0x52 +#define ATMEGA48 0x59 + +#define AT90S8515 0x60 +#define AT90S8535 0x61 +#define AT90C8534 0x62 +#define ATMEGA8515 0x63 +#define ATMEGA8535 0x64 + +#define ATMEGA8 0x70 +#define ATMEGA88 0x73 +#define ATMEGA168 0x86 + +#define ATMEGA161 0x80 +#define ATMEGA163 0x81 +#define ATMEGA16 0x82 +#define ATMEGA162 0x83 +#define ATMEGA169 0x84 + +#define ATMEGA323 0x90 +#define ATMEGA32 0x91 + +#define ATMEGA64 0xA0 + +#define ATMEGA103 0xB1 +#define ATMEGA128 0xB2 +#define AT90CAN128 0xB3 +#define AT90CAN64 0xB3 +#define AT90CAN32 0xB3 + +#define AT86RF401 0xD0 + +#define AT89START 0xE0 +#define AT89S51 0xE0 +#define AT89S52 0xE1 + +# The following table lists the devices in the original AVR910 +# appnote: +# |Device |Signature | Code | +# +-------+----------+------+ +# |tiny12 | 1E 90 05 | 0x55 | +# |tiny15 | 1E 90 06 | 0x56 | +# | | | | +# | S1200 | 1E 90 01 | 0x13 | +# | | | | +# | S2313 | 1E 91 01 | 0x20 | +# | S2323 | 1E 91 02 | 0x48 | +# | S2333 | 1E 91 05 | 0x34 | +# | S2343 | 1E 91 03 | 0x4C | +# | | | | +# | S4414 | 1E 92 01 | 0x28 | +# | S4433 | 1E 92 03 | 0x30 | +# | S4434 | 1E 92 02 | 0x6C | +# | | | | +# | S8515 | 1E 93 01 | 0x38 | +# | S8535 | 1E 93 03 | 0x68 | +# | | | | +# |mega32 | 1E 95 01 | 0x72 | +# |mega83 | 1E 93 05 | 0x65 | +# |mega103| 1E 97 01 | 0x41 | +# |mega161| 1E 94 01 | 0x60 | +# |mega163| 1E 94 02 | 0x64 | + +# Appnote AVR109 also has a table of AVR910 device codes, which +# lists: +# dev avr910 signature +# ATmega8 0x77 0x1E 0x93 0x07 +# ATmega8515 0x3B 0x1E 0x93 0x06 +# ATmega8535 0x6A 0x1E 0x93 0x08 +# ATmega16 0x75 0x1E 0x94 0x03 +# ATmega162 0x63 0x1E 0x94 0x04 +# ATmega163 0x66 0x1E 0x94 0x02 +# ATmega169 0x79 0x1E 0x94 0x05 +# ATmega32 0x7F 0x1E 0x95 0x02 +# ATmega323 0x73 0x1E 0x95 0x01 +# ATmega64 0x46 0x1E 0x96 0x02 +# ATmega128 0x44 0x1E 0x97 0x02 +# +# These codes refer to "BOOT" device codes which are apparently +# different than standard device codes, for whatever reasons +# (often one above the standard code). + +# There are several extended versions of AVR910 implementations around +# in the Internet. These add the following codes (only devices that +# actually exist are listed): + +# ATmega8515 0x3A +# ATmega128 0x43 +# ATmega64 0x45 +# ATtiny26 0x5E +# ATmega8535 0x69 +# ATmega32 0x72 +# ATmega16 0x74 +# ATmega8 0x76 +# ATmega169 0x78 + +# +# Overall avrdude defaults; suitable for ~/.avrduderc +# +default_parallel = "lpt1"; +default_serial = "com1"; +# default_bitclock = 2.5; + +# Turn off safemode by default +#default_safemode = no; + + +# +# PROGRAMMER DEFINITIONS +# + +# http://wiring.org.co/ +# Basically STK500v2 protocol, with some glue to trigger the +# bootloader. +programmer + id = "wiring"; + desc = "Wiring"; + type = "wiring"; + connection_type = serial; +; + +programmer + id = "arduino"; + desc = "Arduino"; + type = "arduino"; + connection_type = serial; +; +# this will interface with the chips on these programmers: +# +# http://real.kiev.ua/old/avreal/en/adapters +# http://www.amontec.com/jtagkey.shtml, jtagkey-tiny.shtml +# http://www.olimex.com/dev/arm-usb-ocd.html, arm-usb-tiny.html +# http://www.ethernut.de/en/hardware/turtelizer/index.html +# http://elk.informatik.fh-augsburg.de/hhweb/doc/openocd/usbjtag/usbjtag.html +# http://dangerousprototypes.com/docs/FT2232_breakout_board +# http://www.ftdichip.com/Products/Modules/DLPModules.htm,DLP-2232*,DLP-USB1232H +# http://flashrom.org/FT2232SPI_Programmer +# +# The drivers will look for a specific device and use the first one found. +# If you have mulitple devices, then look for unique information (like SN) +# And fill that in here. +# +# Note that the pin numbers for the main ISP signals (reset, sck, +# mosi, miso) are fixed and cannot be changed, since they must match +# the way the Multi-Protocol Synchronous Serial Engine (MPSSE) of +# these FTDI ICs has been designed. + +programmer + id = "avrftdi"; + desc = "FT2232D based generic programmer"; + type = "avrftdi"; + connection_type = usb; + usbvid = 0x0403; + usbpid = 0x6010; + usbvendor = ""; + usbproduct = ""; + usbdev = "A"; + usbsn = ""; +#ISP-signals - lower ADBUS-Nibble (default) + reset = 3; + sck = 0; + mosi = 1; + miso = 2; +#LED SIGNALs - higher ADBUS-Nibble +# errled = 4; +# rdyled = 5; +# pgmled = 6; +# vfyled = 7; +#Buffer Signal - ACBUS - Nibble +# buff = 8; +; +# This is an implementation of the above with a buffer IC (74AC244) and +# 4 LEDs directly attached, all active low. +programmer + id = "2232HIO"; + desc = "FT2232H based generic programmer"; + type = "avrftdi"; + connection_type = usb; + usbvid = 0x0403; +# Note: This PID is reserved for generic H devices and +# should be programmed into the EEPROM +# usbpid = 0x8A48; + usbpid = 0x6010; + usbdev = "A"; + usbvendor = ""; + usbproduct = ""; + usbsn = ""; +#ISP-signals + reset = 3; + sck = 0; + mosi = 1; + miso = 2; + buff = ~4; +#LED SIGNALs + errled = ~ 11; + rdyled = ~ 14; + pgmled = ~ 13; + vfyled = ~ 12; +; + +#The FT4232H can be treated as FT2232H, but it has a different USB +#device ID of 0x6011. +programmer parent "avrftdi" + id = "4232h"; + desc = "FT4232H based generic programmer"; + usbpid = 0x6011; +; + +programmer + id = "jtagkey"; + desc = "Amontec JTAGKey, JTAGKey-Tiny and JTAGKey2"; + type = "avrftdi"; + connection_type = usb; + usbvid = 0x0403; +# Note: This PID is used in all JTAGKey variants + usbpid = 0xCFF8; + usbdev = "A"; + usbvendor = ""; + usbproduct = ""; + usbsn = ""; +#ISP-signals => 20 - Pin connector on JTAGKey + reset = 3; # TMS 7 violet + sck = 0; # TCK 9 white + mosi = 1; # TDI 5 green + miso = 2; # TDO 13 orange + buff = ~4; +# VTG VREF 1 brown with red tip +# GND GND 20 black +# The colors are on the 20 pin breakout cable +# from Amontec +; + +# UM232H module from FTDI and Glyn.com.au. +# See helix.air.net.au for detailed usage information. +# J1: Connect pin 2 and 3 for USB power. +# J2: Connect pin 2 and 3 for USB power. +# J2: Pin 7 is SCK +# : Pin 8 is MOSI +# : Pin 9 is MISO +# : Pin 11 is RST +# : Pin 6 is ground +# Use the -b flag to set the SPI clock rate eg -b 3750000 is the fastest I could get +# a 16MHz Atmega1280 to program reliably. The 232H is conveniently 5V tolerant. +programmer + id = "UM232H"; + desc = "FT232H based module from FTDI and Glyn.com.au"; + type = "avrftdi"; + usbvid = 0x0403; +# Note: This PID is reserved for generic 232H devices and +# should be programmed into the EEPROM + usbpid = 0x6014; + usbdev = "A"; + usbvendor = ""; + usbproduct = ""; + usbsn = ""; +#ISP-signals + sck = 0; + mosi = 1; + miso = 2; + reset = 3; +; + +# C232HM module from FTDI and Glyn.com.au. +# : Orange is SCK +# : Yellow is MOSI +# : Green is MISO +# : Brown is RST +# : Black is ground +# Use the -b flag to set the SPI clock rate eg -b 3750000 is the fastest I could get +# a 16MHz Atmega1280 to program reliably. The 232H is conveniently 5V tolerant. +programmer + id = "C232HM"; + desc = "FT232H based module from FTDI and Glyn.com.au"; + type = "avrftdi"; + usbvid = 0x0403; +# Note: This PID is reserved for generic 232H devices and +# should be programmed into the EEPROM + usbpid = 0x6014; + usbdev = "A"; + usbvendor = ""; + usbproduct = ""; + usbsn = ""; +#ISP-signals + sck = 0; + mosi = 1; + miso = 2; + reset = 3; +; + + +# On the adapter you can read "O-Link". On the PCB is printed "OpenJTAG v3.1" +# You can find it as "OpenJTAG ARM JTAG USB" in the internet. +# (But there are also several projects called Open JTAG, eg. +# http://www.openjtag.org, which are completely different.) +# http://www.100ask.net/shop/english.html (website seems to be outdated) +# http://item.taobao.com/item.htm?id=1559277013 +# http://www.micro4you.com/store/openjtag-arm-jtag-usb.html (schematics!) +# some other sources which call it O-Link +# http://www.andahammer.com/olink/ +# http://www.developmentboard.net/31-o-link-debugger.html +# http://armwerks.com/catalog/o-link-debugger-copy/ +# or just have a look at ebay ... +# It is basically the same entry as jtagkey with different usb ids. +programmer parent "jtagkey" + id = "o-link"; + desc = "O-Link, OpenJTAG from www.100ask.net"; + usbvid = 0x1457; + usbpid = 0x5118; + usbvendor = "www.100ask.net"; + usbproduct = "USB<=>JTAG&RS232"; +; + +# http://wiki.openmoko.org/wiki/Debug_Board_v3 +programmer + id = "openmoko"; + desc = "Openmoko debug board (v3)"; + type = "avrftdi"; + usbvid = 0x1457; + usbpid = 0x5118; + usbdev = "A"; + usbvendor = ""; + usbproduct = ""; + usbsn = ""; + reset = 3; # TMS 7 + sck = 0; # TCK 9 + mosi = 1; # TDI 5 + miso = 2; # TDO 13 +; + +# Only Rev. A boards. +# Schematic and user manual: http://www.cs.put.poznan.pl/wswitala/download/pdf/811EVBK.pdf +programmer + id = "lm3s811"; + desc = "Luminary Micro LM3S811 Eval Board (Rev. A)"; + type = "avrftdi"; + connection_type = usb; + usbvid = 0x0403; + usbpid = 0xbcd9; + usbvendor = "LMI"; + usbproduct = "LM3S811 Evaluation Board"; + usbdev = "A"; + usbsn = ""; +#ISP-signals - lower ACBUS-Nibble (default) + reset = 3; + sck = 0; + mosi = 1; + miso = 2; +# Enable correct buffers + buff = 7; +; + +# submitted as bug #46020 +programmer + id = "tumpa"; + desc = "TIAO USB Multi-Protocol Adapter"; + type = "avrftdi"; + connection_type = usb; + usbvid = 0x0403; + usbpid = 0x8A98; + usbdev = "A"; + usbvendor = "TIAO"; + usbproduct = ""; + usbsn = ""; + sck = 0; # TCK 9 + mosi = 1; # TDI 5 + miso = 2; # TDO 13 + reset = 3; # TMS 7 +; + +programmer + id = "avrisp"; + desc = "Atmel AVR ISP"; + type = "stk500"; + connection_type = serial; +; + +programmer + id = "avrispv2"; + desc = "Atmel AVR ISP V2"; + type = "stk500v2"; + connection_type = serial; +; + +programmer + id = "avrispmkII"; + desc = "Atmel AVR ISP mkII"; + type = "stk500v2"; + connection_type = usb; +; + +programmer parent "avrispmkII" + id = "avrisp2"; +; + +programmer + id = "buspirate"; + desc = "The Bus Pirate"; + type = "buspirate"; + connection_type = serial; +; + +programmer + id = "buspirate_bb"; + desc = "The Bus Pirate (bitbang interface, supports TPI)"; + type = "buspirate_bb"; + connection_type = serial; + # pins are bits in bitbang byte (numbers are 87654321) + # 1|POWER|PULLUP|AUX|MOSI|CLK|MISO|CS + reset = 1; + sck = 3; + mosi = 4; + miso = 2; + #vcc = 7; This is internally set independent of this setting. +; + +# This is supposed to be the "default" STK500 entry. +# Attempts to select the correct firmware version +# by probing for it. Better use one of the entries +# below instead. +programmer + id = "stk500"; + desc = "Atmel STK500"; + type = "stk500generic"; + connection_type = serial; +; + +programmer + id = "stk500v1"; + desc = "Atmel STK500 Version 1.x firmware"; + type = "stk500"; + connection_type = serial; +; + +programmer + id = "mib510"; + desc = "Crossbow MIB510 programming board"; + type = "stk500"; + connection_type = serial; +; + +programmer + id = "stk500v2"; + desc = "Atmel STK500 Version 2.x firmware"; + type = "stk500v2"; + connection_type = serial; +; + +programmer + id = "stk500pp"; + desc = "Atmel STK500 V2 in parallel programming mode"; + type = "stk500pp"; + connection_type = serial; +; + +programmer + id = "stk500hvsp"; + desc = "Atmel STK500 V2 in high-voltage serial programming mode"; + type = "stk500hvsp"; + connection_type = serial; +; + +programmer + id = "stk600"; + desc = "Atmel STK600"; + type = "stk600"; + connection_type = usb; +; + +programmer + id = "stk600pp"; + desc = "Atmel STK600 in parallel programming mode"; + type = "stk600pp"; + connection_type = usb; +; + +programmer + id = "stk600hvsp"; + desc = "Atmel STK600 in high-voltage serial programming mode"; + type = "stk600hvsp"; + connection_type = usb; +; + +programmer + id = "avr910"; + desc = "Atmel Low Cost Serial Programmer"; + type = "avr910"; + connection_type = serial; +; + +programmer + id = "ft245r"; + desc = "FT245R Synchronous BitBang"; + type = "ftdi_syncbb"; + connection_type = usb; + miso = 1; # D1 + sck = 0; # D0 + mosi = 2; # D2 + reset = 4; # D4 +; + +programmer + id = "ft232r"; + desc = "FT232R Synchronous BitBang"; + type = "ftdi_syncbb"; + connection_type = usb; + miso = 1; # RxD + sck = 0; # TxD + mosi = 2; # RTS + reset = 4; # DTR +; + +# see http://www.bitwizard.nl/wiki/index.php/FTDI_ATmega +programmer + id = "bwmega"; + desc = "BitWizard ftdi_atmega builtin programmer"; + type = "ftdi_syncbb"; + connection_type = usb; + miso = 5; # DSR + sck = 6; # DCD + mosi = 3; # CTS + reset = 7; # RI +; + +# see http://www.geocities.jp/arduino_diecimila/bootloader/index_en.html +# Note: pins are numbered from 1! +programmer + id = "arduino-ft232r"; + desc = "Arduino: FT232R connected to ISP"; + type = "ftdi_syncbb"; + connection_type = usb; + miso = 3; # CTS X3(1) + sck = 5; # DSR X3(2) + mosi = 6; # DCD X3(3) + reset = 7; # RI X3(4) +; + +# website mentioned above uses this id +programmer parent "arduino-ft232r" + id = "diecimila"; + desc = "alias for arduino-ft232r"; +; + +# There is a ATmega328P kit PCB called "uncompatino". +# This board allows ISP via its on-board FT232R. +# This is designed like Arduino Duemilanove but has no standard ICPS header. +# Its 4 pairs of pins are shorted to enable ftdi_syncbb. +# http://akizukidenshi.com/catalog/g/gP-07487/ +# http://akizukidenshi.com/download/ds/akizuki/k6096_manual_20130816.pdf +programmer + id = "uncompatino"; + desc = "uncompatino with all pairs of pins shorted"; + type = "ftdi_syncbb"; + connection_type = usb; + miso = 3; # cts + sck = 5; # dsr + mosi = 6; # dcd + reset = 7; # ri +; + +# FTDI USB to serial cable TTL-232R-5V with a custom adapter for ICSP +# http://www.ftdichip.com/Products/Cables/USBTTLSerial.htm +# http://www.ftdichip.com/Support/Documents/DataSheets/Cables/DS_TTL-232R_CABLES.pdf +# For ICSP pinout see for example http://www.atmel.com/images/doc2562.pdf +# (Figure 1. ISP6PIN header pinout and Table 1. Connections required for ISP ...) +# TTL-232R GND 1 Black -> ICPS GND (pin 6) +# TTL-232R CTS 2 Brown -> ICPS MOSI (pin 4) +# TTL-232R VCC 3 Red -> ICPS VCC (pin 2) +# TTL-232R TXD 4 Orange -> ICPS RESET (pin 5) +# TTL-232R RXD 5 Yellow -> ICPS SCK (pin 3) +# TTL-232R RTS 6 Green -> ICPS MISO (pin 1) +# Except for VCC and GND, you can connect arbitual pairs as long as +# the following table is adjusted. +programmer + id = "ttl232r"; + desc = "FTDI TTL232R-5V with ICSP adapter"; + type = "ftdi_syncbb"; + connection_type = usb; + miso = 2; # rts + sck = 1; # rxd + mosi = 3; # cts + reset = 0; # txd +; + +programmer + id = "usbasp"; + desc = "USBasp, http://www.fischl.de/usbasp/"; + type = "usbasp"; + connection_type = usb; + usbvid = 0x16C0; # VOTI + usbpid = 0x05DC; # Obdev's free shared PID + usbvendor = "www.fischl.de"; + usbproduct = "USBasp"; + + # following variants are autodetected for id "usbasp" + + # original usbasp from fischl.de + # see above "usbasp" + + # old usbasp from fischl.de + #usbvid = 0x03EB; # ATMEL + #usbpid = 0xC7B4; # (unoffical) USBasp + #usbvendor = "www.fischl.de"; + #usbproduct = "USBasp"; + + # NIBObee (only if -P nibobee is given on command line) + # see below "nibobee" +; + +programmer + id = "nibobee"; + desc = "NIBObee"; + type = "usbasp"; + connection_type = usb; + usbvid = 0x16C0; # VOTI + usbpid = 0x092F; # NIBObee PID + usbvendor = "www.nicai-systems.com"; + usbproduct = "NIBObee"; +; + +programmer + id = "usbasp-clone"; + desc = "Any usbasp clone with correct VID/PID"; + type = "usbasp"; + connection_type = usb; + usbvid = 0x16C0; # VOTI + usbpid = 0x05DC; # Obdev's free shared PID + #usbvendor = ""; + #usbproduct = ""; +; + +# USBtiny can also be used for TPI programming. +# In that case, a resistor of 1 kOhm is needed between MISO and MOSI +# pins of the connector, and MISO (pin 1 of the 6-pin connector) +# connects to TPIDATA. +programmer + id = "usbtiny"; + desc = "USBtiny simple USB programmer, https://learn.adafruit.com/usbtinyisp"; + type = "usbtiny"; + connection_type = usb; + usbvid = 0x1781; + usbpid = 0x0c9f; +; + +# commercial version of USBtiny, using a separate VID/PID +programmer + id = "ehajo-isp"; + desc = "avr-isp-programmer from eHaJo, http://www.eHaJo.de"; + type = "usbtiny"; + connection_type = usb; + usbvid = 0x16D0; + usbpid = 0x0BA5; +; + +programmer + id = "arduinoisp"; + desc = "Arduino ISP Programmer"; + type = "usbtiny"; + connection_type = usb; + usbvid = 0x2341; + usbpid = 0x0049; +; + +programmer + id = "arduinoisporg"; + desc = "Arduino ISP Programmer"; + type = "usbtiny"; + connection_type = usb; + usbvid = 0x2A03; + usbpid = 0x0049; +; + +programmer + id = "butterfly"; + desc = "Atmel Butterfly Development Board"; + type = "butterfly"; + connection_type = serial; +; + +programmer + id = "avr109"; + desc = "Atmel AppNote AVR109 Boot Loader"; + type = "butterfly"; + connection_type = serial; +; + +programmer + id = "avr911"; + desc = "Atmel AppNote AVR911 AVROSP"; + type = "butterfly"; + connection_type = serial; +; + +# suggested in http://forum.mikrokopter.de/topic-post48317.html +programmer + id = "mkbutterfly"; + desc = "Mikrokopter.de Butterfly"; + type = "butterfly_mk"; + connection_type = serial; +; + +programmer parent "mkbutterfly" + id = "butterfly_mk"; +; + +programmer + id = "jtagmkI"; + desc = "Atmel JTAG ICE (mkI)"; + baudrate = 115200; # default is 115200 + type = "jtagmki"; + connection_type = serial; +; + +# easier to type +programmer parent "jtagmkI" + id = "jtag1"; +; + +# easier to type +programmer parent "jtag1" + id = "jtag1slow"; + baudrate = 19200; +; + +# The JTAG ICE mkII has both, serial and USB connectivity. As it is +# mostly used through USB these days (AVR Studio 5 only supporting it +# that way), we make connection_type = usb the default. Users are +# still free to use a serial port with the -P option. + +programmer + id = "jtagmkII"; + desc = "Atmel JTAG ICE mkII"; + baudrate = 19200; # default is 19200 + type = "jtagmkii"; + connection_type = usb; +; + +# easier to type +programmer parent "jtagmkII" + id = "jtag2slow"; +; + +# JTAG ICE mkII @ 115200 Bd +programmer parent "jtag2slow" + id = "jtag2fast"; + baudrate = 115200; +; + +# make the fast one the default, people will love that +programmer parent "jtag2fast" + id = "jtag2"; +; + +# JTAG ICE mkII in ISP mode +programmer + id = "jtag2isp"; + desc = "Atmel JTAG ICE mkII in ISP mode"; + baudrate = 115200; + type = "jtagmkii_isp"; + connection_type = usb; +; + +# JTAG ICE mkII in debugWire mode +programmer + id = "jtag2dw"; + desc = "Atmel JTAG ICE mkII in debugWire mode"; + baudrate = 115200; + type = "jtagmkii_dw"; + connection_type = usb; +; + +# JTAG ICE mkII in AVR32 mode +programmer + id = "jtagmkII_avr32"; + desc = "Atmel JTAG ICE mkII im AVR32 mode"; + baudrate = 115200; + type = "jtagmkii_avr32"; + connection_type = usb; +; + +# JTAG ICE mkII in AVR32 mode +programmer + id = "jtag2avr32"; + desc = "Atmel JTAG ICE mkII im AVR32 mode"; + baudrate = 115200; + type = "jtagmkii_avr32"; + connection_type = usb; +; + +# JTAG ICE mkII in PDI mode +programmer + id = "jtag2pdi"; + desc = "Atmel JTAG ICE mkII PDI mode"; + baudrate = 115200; + type = "jtagmkii_pdi"; + connection_type = usb; +; + +# AVR Dragon in JTAG mode +programmer + id = "dragon_jtag"; + desc = "Atmel AVR Dragon in JTAG mode"; + baudrate = 115200; + type = "dragon_jtag"; + connection_type = usb; +; + +# AVR Dragon in ISP mode +programmer + id = "dragon_isp"; + desc = "Atmel AVR Dragon in ISP mode"; + baudrate = 115200; + type = "dragon_isp"; + connection_type = usb; +; + +# AVR Dragon in PP mode +programmer + id = "dragon_pp"; + desc = "Atmel AVR Dragon in PP mode"; + baudrate = 115200; + type = "dragon_pp"; + connection_type = usb; +; + +# AVR Dragon in HVSP mode +programmer + id = "dragon_hvsp"; + desc = "Atmel AVR Dragon in HVSP mode"; + baudrate = 115200; + type = "dragon_hvsp"; + connection_type = usb; +; + +# AVR Dragon in debugWire mode +programmer + id = "dragon_dw"; + desc = "Atmel AVR Dragon in debugWire mode"; + baudrate = 115200; + type = "dragon_dw"; + connection_type = usb; +; + +# AVR Dragon in PDI mode +programmer + id = "dragon_pdi"; + desc = "Atmel AVR Dragon in PDI mode"; + baudrate = 115200; + type = "dragon_pdi"; + connection_type = usb; +; + +programmer + id = "jtag3"; + desc = "Atmel AVR JTAGICE3 in JTAG mode"; + type = "jtagice3"; + connection_type = usb; + usbpid = 0x2110, 0x2140; +; + +programmer + id = "jtag3pdi"; + desc = "Atmel AVR JTAGICE3 in PDI mode"; + type = "jtagice3_pdi"; + connection_type = usb; + usbpid = 0x2110, 0x2140; +; + +programmer + id = "jtag3dw"; + desc = "Atmel AVR JTAGICE3 in debugWIRE mode"; + type = "jtagice3_dw"; + connection_type = usb; + usbpid = 0x2110, 0x2140; +; + +programmer + id = "jtag3isp"; + desc = "Atmel AVR JTAGICE3 in ISP mode"; + type = "jtagice3_isp"; + connection_type = usb; + usbpid = 0x2110, 0x2140; +; + +programmer + id = "xplainedpro"; + desc = "Atmel AVR XplainedPro in JTAG mode"; + type = "jtagice3"; + connection_type = usb; + usbpid = 0x2111; +; + +programmer + id = "xplainedpro_updi"; + desc = "Atmel AVR XplainedPro in UPDI mode"; + type = "jtagice3_updi"; + connection_type = usb; + usbpid = 0x2111; +; + +programmer + id = "xplainedmini"; + desc = "Atmel AVR XplainedMini in ISP mode"; + type = "jtagice3_isp"; + connection_type = usb; + usbpid = 0x2145; +; + +programmer + id = "xplainedmini_dw"; + desc = "Atmel AVR XplainedMini in debugWIRE mode"; + type = "jtagice3_dw"; + connection_type = usb; + usbpid = 0x2145; +; + +programmer + id = "xplainedmini_updi"; + desc = "Atmel AVR XplainedMini in UPDI mode"; + type = "jtagice3_updi"; + connection_type = usb; + usbpid = 0x2145; +; + +programmer + id = "atmelice"; + desc = "Atmel-ICE (ARM/AVR) in JTAG mode"; + type = "jtagice3"; + connection_type = usb; + usbpid = 0x2141; +; + +programmer + id = "atmelice_pdi"; + desc = "Atmel-ICE (ARM/AVR) in PDI mode"; + type = "jtagice3_pdi"; + connection_type = usb; + usbpid = 0x2141; +; + +programmer + id = "atmelice_updi"; + desc = "Atmel-ICE (ARM/AVR) in UPDI mode"; + type = "jtagice3_updi"; + connection_type = usb; + usbpid = 0x2141; +; + +programmer + id = "atmelice_dw"; + desc = "Atmel-ICE (ARM/AVR) in debugWIRE mode"; + type = "jtagice3_dw"; + connection_type = usb; + usbpid = 0x2141; +; + +programmer + id = "atmelice_isp"; + desc = "Atmel-ICE (ARM/AVR) in ISP mode"; + type = "jtagice3_isp"; + connection_type = usb; + usbpid = 0x2141; +; + +programmer + id = "powerdebugger"; + desc = "Atmel PowerDebugger (ARM/AVR) in JTAG mode"; + type = "jtagice3"; + connection_type = usb; + usbpid = 0x2144; +; + +programmer + id = "powerdebugger_pdi"; + desc = "Atmel PowerDebugger (ARM/AVR) in PDI mode"; + type = "jtagice3_pdi"; + connection_type = usb; + usbpid = 0x2144; +; + +programmer + id = "powerdebugger_updi"; + desc = "Atmel PowerDebugger (ARM/AVR) in UPDI mode"; + type = "jtagice3_updi"; + connection_type = usb; + usbpid = 0x2144; +; + +programmer + id = "powerdebugger_dw"; + desc = "Atmel PowerDebugger (ARM/AVR) in debugWire mode"; + type = "jtagice3_dw"; + connection_type = usb; + usbpid = 0x2144; +; + +programmer + id = "powerdebugger_isp"; + desc = "Atmel PowerDebugger (ARM/AVR) in ISP mode"; + type = "jtagice3_isp"; + connection_type = usb; + usbpid = 0x2144; +; + +programmer + id = "pavr"; + desc = "Jason Kyle's pAVR Serial Programmer"; + type = "avr910"; + connection_type = serial; +; + +programmer + id = "pickit2"; + desc = "MicroChip's PICkit2 Programmer"; + type = "pickit2"; + connection_type = usb; +; + +programmer + id = "flip1"; + desc = "FLIP USB DFU protocol version 1 (doc7618)"; + type = "flip1"; + connection_type = usb; +; + +programmer + id = "flip2"; + desc = "FLIP USB DFU protocol version 2 (AVR4023)"; + type = "flip2"; + connection_type = usb; +; + +# Parallel port programmers. + +programmer + id = "bsd"; + desc = "Brian Dean's Programmer, http://www.bsdhome.com/avrdude/"; + type = "par"; + connection_type = parallel; + vcc = 2, 3, 4, 5; + reset = 7; + sck = 8; + mosi = 9; + miso = 10; +; + +programmer + id = "stk200"; + desc = "STK200"; + type = "par"; + connection_type = parallel; + buff = 4, 5; + sck = 6; + mosi = 7; + reset = 9; + miso = 10; +; + +# The programming dongle used by the popular Ponyprog +# utility. It is almost similar to the STK200 one, +# except that there is a LED indicating that the +# programming is currently in progress. + +programmer parent "stk200" + id = "pony-stk200"; + desc = "Pony Prog STK200"; + pgmled = 8; +; + +programmer + id = "dt006"; + desc = "Dontronics DT006"; + type = "par"; + connection_type = parallel; + reset = 4; + sck = 5; + mosi = 2; + miso = 11; +; + +programmer parent "dt006" + id = "bascom"; + desc = "Bascom SAMPLE programming cable"; +; + +programmer + id = "alf"; + desc = "Nightshade ALF-PgmAVR, http://nightshade.homeip.net/"; + type = "par"; + connection_type = parallel; + vcc = 2, 3, 4, 5; + buff = 6; + reset = 7; + sck = 8; + mosi = 9; + miso = 10; + errled = 1; + rdyled = 14; + pgmled = 16; + vfyled = 17; +; + +programmer + id = "sp12"; + desc = "Steve Bolt's Programmer"; + type = "par"; + connection_type = parallel; + vcc = 4,5,6,7,8; + reset = 3; + sck = 2; + mosi = 9; + miso = 11; +; + +programmer + id = "picoweb"; + desc = "Picoweb Programming Cable, http://www.picoweb.net/"; + type = "par"; + connection_type = parallel; + reset = 2; + sck = 3; + mosi = 4; + miso = 13; +; + +programmer + id = "abcmini"; + desc = "ABCmini Board, aka Dick Smith HOTCHIP"; + type = "par"; + connection_type = parallel; + reset = 4; + sck = 3; + mosi = 2; + miso = 10; +; + +programmer + id = "futurlec"; + desc = "Futurlec.com programming cable."; + type = "par"; + connection_type = parallel; + reset = 3; + sck = 2; + mosi = 1; + miso = 10; +; + + +# From the contributor of the "xil" jtag cable: +# The "vcc" definition isn't really vcc (the cable gets its power from +# the programming circuit) but is necessary to switch one of the +# buffer lines (trying to add it to the "buff" lines doesn't work in +# avrdude versions before 5.5j). +# With this, TMS connects to RESET, TDI to MOSI, TDO to MISO and TCK +# to SCK (plus vcc/gnd of course) +programmer + id = "xil"; + desc = "Xilinx JTAG cable"; + type = "par"; + connection_type = parallel; + mosi = 2; + sck = 3; + reset = 4; + buff = 5; + miso = 13; + vcc = 6; +; + + +programmer + id = "dapa"; + desc = "Direct AVR Parallel Access cable"; + type = "par"; + connection_type = parallel; + vcc = 3; + reset = 16; + sck = 1; + mosi = 2; + miso = 11; +; + +programmer + id = "atisp"; + desc = "AT-ISP V1.1 programming cable for AVR-SDK1 from micro-research.co.th"; + type = "par"; + connection_type = parallel; + reset = ~6; + sck = ~8; + mosi = ~7; + miso = ~10; +; + +programmer + id = "ere-isp-avr"; + desc = "ERE ISP-AVR "; + type = "par"; + connection_type = parallel; + reset = ~4; + sck = 3; + mosi = 2; + miso = 10; +; + +programmer + id = "blaster"; + desc = "Altera ByteBlaster"; + type = "par"; + connection_type = parallel; + sck = 2; + miso = 11; + reset = 3; + mosi = 8; + buff = 14; +; + +# It is almost same as pony-stk200, except vcc on pin 5 to auto +# disconnect port (download on http://electropol.free.fr/spip/spip.php?article27) +programmer parent "pony-stk200" + id = "frank-stk200"; + desc = "Frank STK200"; + buff = ; # delete buff pin assignment + vcc = 5; +; + +# The AT98ISP Cable is a simple parallel dongle for AT89 family. +# http://www.atmel.com/dyn/products/tools_card.asp?tool_id=2877 +programmer + id = "89isp"; + desc = "Atmel at89isp cable"; + type = "par"; + connection_type = parallel; + reset = 17; + sck = 1; + mosi = 2; + miso = 10; +; + + +#This programmer bitbangs GPIO lines using the Linux sysfs GPIO interface +# +#To enable it set the configuration below to match the GPIO lines connected to the +#relevant ISP header pins and uncomment the entry definition. In case you don't +#have the required permissions to edit this system wide config file put the +#entry in a separate .conf file and use it with -C+.conf +#on the command line. +# +#To check if your avrdude build has support for the linuxgpio programmer compiled in, +#use -c?type on the command line and look for linuxgpio in the list. If it's not available +#you need pass the --enable-linuxgpio=yes option to configure and recompile avrdude. +# +#programmer +# id = "linuxgpio"; +# desc = "Use the Linux sysfs interface to bitbang GPIO lines"; +# type = "linuxgpio"; +# reset = ?; +# sck = ?; +# mosi = ?; +# miso = ?; +#; + + +#This programmer uses the built in linux SPI bus devices to program an +#attached AVR. A GPIO accessed through the sysfs GPIO interface needs to +#be specified for a reset pin since the linux SPI userspace functions do +#not allow for control over the slave select/chip select signal. +# +programmer + id = "linuxspi"; + desc = "Use Linux SPI device in /dev/spidev*"; + type = "linuxspi"; + reset = 25; +; + +# some ultra cheap programmers use bitbanging on the +# serialport. +# +# PC - DB9 - Pins for RS232: +# +# GND 5 -- |O +# | O| <- 9 RI +# DTR 4 <- |O | +# | O| <- 8 CTS +# TXD 3 <- |O | +# | O| -> 7 RTS +# RXD 2 -> |O | +# | O| <- 6 DSR +# DCD 1 -> |O +# +# Using RXD is currently not supported. +# Using RI is not supported under Win32 but is supported under Posix. + +# serial ponyprog design (dasa2 in uisp) +# reset=!txd sck=rts mosi=dtr miso=cts + +programmer + id = "ponyser"; + desc = "design ponyprog serial, reset=!txd sck=rts mosi=dtr miso=cts"; + type = "serbb"; + connection_type = serial; + reset = ~3; + sck = 7; + mosi = 4; + miso = 8; +; + +# Same as above, different name +# reset=!txd sck=rts mosi=dtr miso=cts + +programmer parent "ponyser" + id = "siprog"; + desc = "Lancos SI-Prog "; +; + +# unknown (dasa in uisp) +# reset=rts sck=dtr mosi=txd miso=cts + +programmer + id = "dasa"; + desc = "serial port banging, reset=rts sck=dtr mosi=txd miso=cts"; + type = "serbb"; + connection_type = serial; + reset = 7; + sck = 4; + mosi = 3; + miso = 8; +; + +# unknown (dasa3 in uisp) +# reset=!dtr sck=rts mosi=txd miso=cts + +programmer + id = "dasa3"; + desc = "serial port banging, reset=!dtr sck=rts mosi=txd miso=cts"; + type = "serbb"; + connection_type = serial; + reset = ~4; + sck = 7; + mosi = 3; + miso = 8; +; + +# C2N232i (jumper configuration "auto") +# reset=dtr sck=!rts mosi=!txd miso=!cts + +programmer + id = "c2n232i"; + desc = "serial port banging, reset=dtr sck=!rts mosi=!txd miso=!cts"; + type = "serbb"; + connection_type = serial; + reset = 4; + sck = ~7; + mosi = ~3; + miso = ~8; +; + +# +# PART DEFINITIONS +# + +#------------------------------------------------------------ +# ATtiny11 +#------------------------------------------------------------ + +# This is an HVSP-only device. + +part + id = "t11"; + desc = "ATtiny11"; + stk500_devcode = 0x11; + signature = 0x1e 0x90 0x04; + chip_erase_delay = 20000; + + timeout = 200; + hvsp_controlstack = + 0x4C, 0x0C, 0x1C, 0x2C, 0x3C, 0x64, 0x74, 0x00, + 0x68, 0x78, 0x68, 0x68, 0x00, 0x00, 0x68, 0x78, + 0x78, 0x00, 0x6D, 0x0C, 0x80, 0x40, 0x20, 0x10, + 0x11, 0x08, 0x04, 0x02, 0x03, 0x08, 0x04, 0x00; + hventerstabdelay = 100; + progmodedelay = 0; + hvspcmdexedelay = 0; + synchcycles = 6; + latchcycles = 1; + togglevtg = 1; + poweroffdelay = 25; + resetdelayms = 0; + resetdelayus = 50; + hvleavestabdelay = 100; + resetdelay = 25; + chiperasepolltimeout = 40; + chiperasetime = 0; + programfusepolltimeout = 25; + programlockpolltimeout = 25; + + memory "eeprom" + size = 64; + blocksize = 64; + readsize = 256; + delay = 5; + ; + + memory "flash" + size = 1024; + blocksize = 128; + readsize = 256; + delay = 3; + ; + + memory "signature" + size = 3; + ; + + memory "lock" + size = 1; + ; + + memory "calibration" + size = 1; + ; + + memory "fuse" + size = 1; + ; +; + +#------------------------------------------------------------ +# ATtiny12 +#------------------------------------------------------------ + +part + id = "t12"; + desc = "ATtiny12"; + stk500_devcode = 0x12; + avr910_devcode = 0x55; + signature = 0x1e 0x90 0x05; + chip_erase_delay = 20000; + pgm_enable = "1 0 1 0 1 1 0 0 0 1 0 1 0 0 1 1", + "x x x x x x x x x x x x x x x x"; + + chip_erase = "1 0 1 0 1 1 0 0 1 0 0 x x x x x", + "x x x x x x x x x x x x x x x x"; + + timeout = 200; + stabdelay = 100; + cmdexedelay = 25; + synchloops = 32; + bytedelay = 0; + pollindex = 3; + pollvalue = 0x53; + predelay = 1; + postdelay = 1; + pollmethod = 0; + + hvsp_controlstack = + 0x4C, 0x0C, 0x1C, 0x2C, 0x3C, 0x64, 0x74, 0x00, + 0x68, 0x78, 0x68, 0x68, 0x00, 0x00, 0x68, 0x78, + 0x78, 0x00, 0x6D, 0x0C, 0x80, 0x40, 0x20, 0x10, + 0x11, 0x08, 0x04, 0x02, 0x03, 0x08, 0x04, 0x00; + hventerstabdelay = 100; + hvspcmdexedelay = 0; + synchcycles = 6; + latchcycles = 1; + togglevtg = 1; + poweroffdelay = 25; + resetdelayms = 0; + resetdelayus = 50; + hvleavestabdelay = 100; + resetdelay = 25; + chiperasepolltimeout = 40; + chiperasetime = 0; + programfusepolltimeout = 25; + programlockpolltimeout = 25; + + memory "eeprom" + size = 64; + min_write_delay = 9000; + max_write_delay = 20000; + readback_p1 = 0xff; + readback_p2 = 0xff; + read = "1 0 1 0 0 0 0 0 x x x x x x x x", + "x x a5 a4 a3 a2 a1 a0 o o o o o o o o"; + + write = "1 1 0 0 0 0 0 0 x x x x x x x x", + "x x a5 a4 a3 a2 a1 a0 i i i i i i i i"; + + mode = 0x04; + delay = 8; + blocksize = 64; + readsize = 256; + ; + + memory "flash" + size = 1024; + min_write_delay = 4500; + max_write_delay = 20000; + readback_p1 = 0xff; + readback_p2 = 0xff; + read_lo = " 0 0 1 0 0 0 0 0", + " x x x x x x x a8", + " a7 a6 a5 a4 a3 a2 a1 a0", + " o o o o o o o o"; + + read_hi = " 0 0 1 0 1 0 0 0", + " x x x x x x x a8", + " a7 a6 a5 a4 a3 a2 a1 a0", + " o o o o o o o o"; + + write_lo = " 0 1 0 0 0 0 0 0", + " x x x x x x x a8", + " a7 a6 a5 a4 a3 a2 a1 a0", + " i i i i i i i i"; + + write_hi = " 0 1 0 0 1 0 0 0", + " x x x x x x x a8", + " a7 a6 a5 a4 a3 a2 a1 a0", + " i i i i i i i i"; + + mode = 0x04; + delay = 5; + blocksize = 128; + readsize = 256; + ; + + memory "signature" + size = 3; + read = "0 0 1 1 0 0 0 0 x x x x x x x x", + "0 0 0 0 0 0 a1 a0 o o o o o o o o"; + ; + + memory "lock" + size = 1; + read = "0 1 0 1 1 0 0 0 x x x x x x x x", + "x x x x x x x x x x x x x o o x"; + + write = "1 0 1 0 1 1 0 0 1 1 1 1 1 i i 1", + "x x x x x x x x x x x x x x x x"; + min_write_delay = 9000; + max_write_delay = 9000; + ; + + memory "calibration" + size = 1; + read = "0 0 1 1 1 0 0 0 x x x x x x x x", + "0 0 0 0 0 0 0 0 o o o o o o o o"; + ; + + memory "fuse" + size = 1; + read = "0 1 0 1 0 0 0 0 x x x x x x x x", + "x x x x x x x x o o o o o o o o"; + + write = "1 0 1 0 1 1 0 0 1 0 1 x x x x x", + "x x x x x x x x i i i i i i i i"; + min_write_delay = 9000; + max_write_delay = 9000; + ; +; + +#------------------------------------------------------------ +# ATtiny13 +#------------------------------------------------------------ + +part + id = "t13"; + desc = "ATtiny13"; + has_debugwire = yes; + flash_instr = 0xB4, 0x0E, 0x1E; + eeprom_instr = 0xBB, 0xFE, 0xBB, 0xEE, 0xBB, 0xCC, 0xB2, 0x0D, + 0xBC, 0x0E, 0xB4, 0x0E, 0xBA, 0x0D, 0xBB, 0xBC, + 0x99, 0xE1, 0xBB, 0xAC; + stk500_devcode = 0x14; + signature = 0x1e 0x90 0x07; + chip_erase_delay = 4000; + pgm_enable = "1 0 1 0 1 1 0 0 0 1 0 1 0 0 1 1", + "x x x x x x x x x x x x x x x x"; + + chip_erase = "1 0 1 0 1 1 0 0 1 0 0 x x x x x", + "x x x x x x x x x x x x x x x x"; + + timeout = 200; + stabdelay = 100; + cmdexedelay = 25; + synchloops = 32; + bytedelay = 0; + pollindex = 3; + pollvalue = 0x53; + predelay = 1; + postdelay = 1; + pollmethod = 1; + + hvsp_controlstack = + 0x4C, 0x0C, 0x1C, 0x2C, 0x3C, 0x64, 0x74, 0x66, + 0x68, 0x78, 0x68, 0x68, 0x7A, 0x6A, 0x68, 0x78, + 0x78, 0x7D, 0x6D, 0x0C, 0x80, 0x40, 0x20, 0x10, + 0x11, 0x08, 0x04, 0x02, 0x03, 0x08, 0x04, 0x00; + hventerstabdelay = 100; + progmodedelay = 0; + hvspcmdexedelay = 0; + synchcycles = 6; + latchcycles = 1; + togglevtg = 1; + poweroffdelay = 25; + resetdelayms = 0; + resetdelayus = 90; + hvleavestabdelay = 100; + resetdelay = 25; + chiperasepolltimeout = 40; + chiperasetime = 0; + programfusepolltimeout = 25; + programlockpolltimeout = 25; + + ocdrev = 0; + + memory "eeprom" + size = 64; + page_size = 4; + min_write_delay = 4000; + max_write_delay = 4000; + readback_p1 = 0xff; + readback_p2 = 0xff; + read = "1 0 1 0 0 0 0 0 0 0 0 x x x x x", + "x x a5 a4 a3 a2 a1 a0 o o o o o o o o"; + + write = "1 1 0 0 0 0 0 0 0 0 0 x x x x x", + "x x a5 a4 a3 a2 a1 a0 i i i i i i i i"; + + loadpage_lo = " 1 1 0 0 0 0 0 1", + " 0 0 0 0 0 0 0 0", + " 0 0 0 0 0 0 a1 a0", + " i i i i i i i i"; + + writepage = " 1 1 0 0 0 0 1 0", + " 0 0 x x x x x x", + " x x a5 a4 a3 a2 0 0", + " x x x x x x x x"; + + mode = 0x41; + delay = 5; + blocksize = 4; + readsize = 256; + ; + + memory "flash" + paged = yes; + size = 1024; + page_size = 32; + num_pages = 32; + min_write_delay = 4500; + max_write_delay = 4500; + readback_p1 = 0xff; + readback_p2 = 0xff; + read_lo = " 0 0 1 0 0 0 0 0", + " 0 0 0 0 0 0 0 a8", + " a7 a6 a5 a4 a3 a2 a1 a0", + " o o o o o o o o"; + + read_hi = " 0 0 1 0 1 0 0 0", + " 0 0 0 0 0 0 0 a8", + " a7 a6 a5 a4 a3 a2 a1 a0", + " o o o o o o o o"; + + loadpage_lo = " 0 1 0 0 0 0 0 0", + " 0 0 0 x x x x x", + " x x x x a3 a2 a1 a0", + " i i i i i i i i"; + + loadpage_hi = " 0 1 0 0 1 0 0 0", + " 0 0 0 x x x x x", + " x x x x a3 a2 a1 a0", + " i i i i i i i i"; + + writepage = " 0 1 0 0 1 1 0 0", + " 0 0 0 0 0 0 0 a8", + " a7 a6 a5 a4 x x x x", + " x x x x x x x x"; + + mode = 0x41; + delay = 6; + blocksize = 32; + readsize = 256; + ; + + memory "signature" + size = 3; + read = "0 0 1 1 0 0 0 0 0 0 0 x x x x x", + "x x x x x x a1 a0 o o o o o o o o"; + ; + + memory "lock" + size = 1; + min_write_delay = 4500; + max_write_delay = 4500; + + read = "0 1 0 1 1 0 0 0 0 0 0 0 0 0 0 0", + "x x x x x x x x x x o o o o o o"; + + write = "1 0 1 0 1 1 0 0 1 1 1 x x x x x", + "x x x x x x x x 1 1 i i i i i i"; + ; + + memory "calibration" + size = 2; + read = "0 0 1 1 1 0 0 0 0 0 0 x x x x x", + "0 0 0 0 0 0 0 a0 o o o o o o o o"; + ; + + memory "lfuse" + size = 1; + min_write_delay = 4500; + max_write_delay = 4500; + + write = "1 0 1 0 1 1 0 0 1 0 1 0 0 0 0 0", + "x x x x x x x x i i i i i i i i"; + + read = "0 1 0 1 0 0 0 0 0 0 0 0 0 0 0 0", + "x x x x x x x x o o o o o o o o"; + ; + + memory "hfuse" + size = 1; + min_write_delay = 4500; + max_write_delay = 4500; + + write = "1 0 1 0 1 1 0 0 1 0 1 0 1 0 0 0", + "x x x x x x x x i i i i i i i i"; + + read = "0 1 0 1 1 0 0 0 0 0 0 0 1 0 0 0", + "x x x x x x x x o o o o o o o o"; + ; + +; + + +#------------------------------------------------------------ +# ATtiny15 +#------------------------------------------------------------ + +part + id = "t15"; + desc = "ATtiny15"; + stk500_devcode = 0x13; + avr910_devcode = 0x56; + signature = 0x1e 0x90 0x06; + chip_erase_delay = 8200; + pgm_enable = "1 0 1 0 1 1 0 0 0 1 0 1 0 0 1 1", + "x x x x x x x x x x x x x x x x"; + + chip_erase = "1 0 1 0 1 1 0 0 1 0 0 x x x x x", + "x x x x x x x x x x x x x x x x"; + + timeout = 200; + stabdelay = 100; + cmdexedelay = 25; + synchloops = 32; + bytedelay = 0; + pollindex = 3; + pollvalue = 0x53; + predelay = 1; + postdelay = 1; + pollmethod = 0; + + hvsp_controlstack = + 0x4C, 0x0C, 0x1C, 0x2C, 0x3C, 0x64, 0x74, 0x00, + 0x68, 0x78, 0x68, 0x68, 0x00, 0x00, 0x68, 0x78, + 0x78, 0x00, 0x6D, 0x0C, 0x80, 0x40, 0x20, 0x10, + 0x11, 0x08, 0x04, 0x02, 0x03, 0x08, 0x04, 0x00; + hventerstabdelay = 100; + hvspcmdexedelay = 5; + synchcycles = 6; + latchcycles = 16; + togglevtg = 1; + poweroffdelay = 25; + resetdelayms = 0; + resetdelayus = 50; + hvleavestabdelay = 100; + resetdelay = 25; + chiperasepolltimeout = 40; + chiperasetime = 0; + programfusepolltimeout = 25; + programlockpolltimeout = 25; + + memory "eeprom" + size = 64; + min_write_delay = 8200; + max_write_delay = 8200; + readback_p1 = 0xff; + readback_p2 = 0xff; + read = "1 0 1 0 0 0 0 0 x x x x x x x x", + "x x a5 a4 a3 a2 a1 a0 o o o o o o o o"; + + write = "1 1 0 0 0 0 0 0 x x x x x x x x", + "x x a5 a4 a3 a2 a1 a0 i i i i i i i i"; + + mode = 0x04; + delay = 10; + blocksize = 64; + readsize = 256; + ; + + memory "flash" + size = 1024; + min_write_delay = 4100; + max_write_delay = 4100; + readback_p1 = 0xff; + readback_p2 = 0xff; + read_lo = " 0 0 1 0 0 0 0 0", + " x x x x x x x a8", + " a7 a6 a5 a4 a3 a2 a1 a0", + " o o o o o o o o"; + + read_hi = " 0 0 1 0 1 0 0 0", + " x x x x x x x a8", + " a7 a6 a5 a4 a3 a2 a1 a0", + " o o o o o o o o"; + + write_lo = " 0 1 0 0 0 0 0 0", + " x x x x x x x a8", + " a7 a6 a5 a4 a3 a2 a1 a0", + " i i i i i i i i"; + + write_hi = " 0 1 0 0 1 0 0 0", + " x x x x x x x a8", + " a7 a6 a5 a4 a3 a2 a1 a0", + " i i i i i i i i"; + + mode = 0x04; + delay = 5; + blocksize = 128; + readsize = 256; + ; + + memory "signature" + size = 3; + read = "0 0 1 1 0 0 0 0 x x x x x x x x", + "0 0 0 0 0 0 a1 a0 o o o o o o o o"; + ; + + memory "lock" + size = 1; + read = "0 1 0 1 1 0 0 0 x x x x x x x x", + "x x x x x x x x x x x x x o o x"; + + write = "1 0 1 0 1 1 0 0 1 1 1 1 1 i i 1", + "x x x x x x x x x x x x x x x x"; + min_write_delay = 9000; + max_write_delay = 9000; + ; + + memory "calibration" + size = 1; + read = "0 0 1 1 1 0 0 0 x x x x x x x x", + "0 0 0 0 0 0 0 0 o o o o o o o o"; + ; + + memory "fuse" + size = 1; + read = "0 1 0 1 0 0 0 0 x x x x x x x x", + "x x x x x x x x o o o o x x o o"; + + write = "1 0 1 0 1 1 0 0 1 0 1 x x x x x", + "x x x x x x x x i i i i 1 1 i i"; + min_write_delay = 9000; + max_write_delay = 9000; + ; +; + +#------------------------------------------------------------ +# AT90s1200 +#------------------------------------------------------------ + +part + id = "1200"; + desc = "AT90S1200"; + is_at90s1200 = yes; + stk500_devcode = 0x33; + avr910_devcode = 0x13; + signature = 0x1e 0x90 0x01; + pagel = 0xd7; + bs2 = 0xa0; + chip_erase_delay = 20000; + pgm_enable = "1 0 1 0 1 1 0 0 0 1 0 1 0 0 1 1", + "x x x x x x x x x x x x x x x x"; + + chip_erase = "1 0 1 0 1 1 0 0 1 0 0 0 0 0 0 0", + "x x x x x x x x x x x x x x x x"; + + timeout = 200; + stabdelay = 100; + cmdexedelay = 25; + synchloops = 1; + bytedelay = 0; + pollindex = 0; + pollvalue = 0xFF; + predelay = 1; + postdelay = 1; + pollmethod = 0; + + pp_controlstack = + 0x0E, 0x1E, 0x0F, 0x1F, 0x2E, 0x3E, 0x2F, 0x3F, + 0x4E, 0x5E, 0x4F, 0x5F, 0x6E, 0x7E, 0x6F, 0x7F, + 0x66, 0x76, 0x67, 0x77, 0x6A, 0x7A, 0x6B, 0x7B, + 0xBE, 0xFD, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00; + hventerstabdelay = 100; + progmodedelay = 0; + latchcycles = 0; + togglevtg = 0; + poweroffdelay = 0; + resetdelayms = 0; + resetdelayus = 0; + hvleavestabdelay = 15; + chiperasepulsewidth = 15; + chiperasepolltimeout = 0; + programfusepulsewidth = 2; + programfusepolltimeout = 0; + programlockpulsewidth = 0; + programlockpolltimeout = 1; + + memory "eeprom" + size = 64; + min_write_delay = 4000; + max_write_delay = 9000; + readback_p1 = 0x00; + readback_p2 = 0xff; + read = "1 0 1 0 0 0 0 0 x x x x x x x x", + "x x a5 a4 a3 a2 a1 a0 o o o o o o o o"; + + write = "1 1 0 0 0 0 0 0 x x x x x x x x", + "x x a5 a4 a3 a2 a1 a0 i i i i i i i i"; + + mode = 0x04; + delay = 20; + blocksize = 32; + readsize = 256; + ; + memory "flash" + size = 1024; + min_write_delay = 4000; + max_write_delay = 9000; + readback_p1 = 0xff; + readback_p2 = 0xff; + read_lo = " 0 0 1 0 0 0 0 0", + " x x x x x x x a8", + " a7 a6 a5 a4 a3 a2 a1 a0", + " o o o o o o o o"; + + read_hi = " 0 0 1 0 1 0 0 0", + " x x x x x x x a8", + " a7 a6 a5 a4 a3 a2 a1 a0", + " o o o o o o o o"; + + write_lo = " 0 1 0 0 0 0 0 0", + " x x x x x x x a8", + " a7 a6 a5 a4 a3 a2 a1 a0", + " i i i i i i i i"; + + write_hi = " 0 1 0 0 1 0 0 0", + " x x x x x x x a8", + " a7 a6 a5 a4 a3 a2 a1 a0", + " i i i i i i i i"; + + mode = 0x02; + delay = 15; + blocksize = 128; + readsize = 256; + ; + memory "signature" + size = 3; + read = "0 0 1 1 0 0 0 0 x x x x x x x x", + "x x x x x x a1 a0 o o o o o o o o"; + ; + memory "fuse" + size = 1; + ; + memory "lock" + size = 1; + min_write_delay = 9000; + max_write_delay = 20000; + write = "1 0 1 0 1 1 0 0 1 1 1 1 1 i i 1", + "x x x x x x x x x x x x x x x x"; + ; + ; + +#------------------------------------------------------------ +# AT90s4414 +#------------------------------------------------------------ + +part + id = "4414"; + desc = "AT90S4414"; + stk500_devcode = 0x50; + avr910_devcode = 0x28; + signature = 0x1e 0x92 0x01; + chip_erase_delay = 20000; + pgm_enable = "1 0 1 0 1 1 0 0 0 1 0 1 0 0 1 1", + "x x x x x x x x x x x x x x x x"; + + chip_erase = "1 0 1 0 1 1 0 0 1 0 0 0 0 0 0 0", + "x x x x x x x x x x x x x x x x"; + + timeout = 200; + stabdelay = 100; + cmdexedelay = 25; + synchloops = 32; + bytedelay = 0; + pollindex = 3; + pollvalue = 0x53; + predelay = 1; + postdelay = 1; + pollmethod = 0; + + pp_controlstack = + 0x0E, 0x1E, 0x0F, 0x1F, 0x2E, 0x3E, 0x2F, 0x3F, + 0x4E, 0x5E, 0x4F, 0x5F, 0x6E, 0x7E, 0x6F, 0x7F, + 0x66, 0x76, 0x67, 0x77, 0x6A, 0x7A, 0x6B, 0x7B, + 0xBE, 0xFD, 0x00, 0x01, 0x00, 0x00, 0x00, 0x01; + hventerstabdelay = 100; + progmodedelay = 0; + latchcycles = 0; + togglevtg = 0; + poweroffdelay = 0; + resetdelayms = 0; + resetdelayus = 0; + hvleavestabdelay = 15; + chiperasepulsewidth = 15; + chiperasepolltimeout = 0; + programfusepulsewidth = 2; + programfusepolltimeout = 0; + programlockpulsewidth = 0; + programlockpolltimeout = 1; + + memory "eeprom" + size = 256; + min_write_delay = 9000; + max_write_delay = 20000; + readback_p1 = 0x80; + readback_p2 = 0x7f; + read = " 1 0 1 0 0 0 0 0 x x x x x x x a8", + "a7 a6 a5 a4 a3 a2 a1 a0 o o o o o o o o"; + + write = " 1 1 0 0 0 0 0 0 x x x x x x x a8", + "a7 a6 a5 a4 a3 a2 a1 a0 i i i i i i i i"; + + mode = 0x04; + delay = 12; + blocksize = 64; + readsize = 256; + ; + memory "flash" + size = 4096; + min_write_delay = 9000; + max_write_delay = 20000; + readback_p1 = 0x7f; + readback_p2 = 0x7f; + read_lo = " 0 0 1 0 0 0 0 0", + " x x x x a11 a10 a9 a8", + " a7 a6 a5 a4 a3 a2 a1 a0", + " o o o o o o o o"; + + read_hi = " 0 0 1 0 1 0 0 0", + " x x x x a11 a10 a9 a8", + " a7 a6 a5 a4 a3 a2 a1 a0", + " o o o o o o o o"; + + write_lo = " 0 1 0 0 0 0 0 0", + " x x x x a11 a10 a9 a8", + " a7 a6 a5 a4 a3 a2 a1 a0", + " i i i i i i i i"; + + write_hi = " 0 1 0 0 1 0 0 0", + " x x x x a11 a10 a9 a8", + " a7 a6 a5 a4 a3 a2 a1 a0", + " i i i i i i i i"; + + mode = 0x04; + delay = 12; + blocksize = 64; + readsize = 256; + ; + memory "signature" + size = 3; + read = "0 0 1 1 0 0 0 0 x x x x x x x x", + "x x x x x x a1 a0 o o o o o o o o"; + ; + memory "fuse" + size = 1; + ; + memory "lock" + size = 1; + write = "1 0 1 0 1 1 0 0 1 1 1 1 1 i i 1", + "x x x x x x x x x x x x x x x x"; + min_write_delay = 9000; + max_write_delay = 9000; + ; + ; + +#------------------------------------------------------------ +# AT90s2313 +#------------------------------------------------------------ + +part + id = "2313"; + desc = "AT90S2313"; + stk500_devcode = 0x40; + avr910_devcode = 0x20; + signature = 0x1e 0x91 0x01; + chip_erase_delay = 20000; + pgm_enable = "1 0 1 0 1 1 0 0 0 1 0 1 0 0 1 1", + "x x x x x x x x x x x x x x x x"; + + chip_erase = "1 0 1 0 1 1 0 0 1 0 0 0 0 0 0 0", + "x x x x x x x x x x x x x x x x"; + + timeout = 200; + stabdelay = 100; + cmdexedelay = 25; + synchloops = 32; + bytedelay = 0; + pollindex = 3; + pollvalue = 0x53; + predelay = 1; + postdelay = 1; + pollmethod = 0; + + pp_controlstack = + 0x0E, 0x1E, 0x0F, 0x1F, 0x2E, 0x3E, 0x2F, 0x3F, + 0x4E, 0x5E, 0x4F, 0x5F, 0x6E, 0x7E, 0x6F, 0x7F, + 0x66, 0x76, 0x67, 0x77, 0x6A, 0x7A, 0x6B, 0x7B, + 0xBE, 0xFD, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00; + hventerstabdelay = 100; + progmodedelay = 0; + latchcycles = 0; + togglevtg = 0; + poweroffdelay = 0; + resetdelayms = 0; + resetdelayus = 0; + hvleavestabdelay = 15; + chiperasepulsewidth = 15; + chiperasepolltimeout = 0; + programfusepulsewidth = 2; + programfusepolltimeout = 0; + programlockpulsewidth = 0; + programlockpolltimeout = 1; + + memory "eeprom" + size = 128; + min_write_delay = 4000; + max_write_delay = 9000; + readback_p1 = 0x80; + readback_p2 = 0x7f; + read = "1 0 1 0 0 0 0 0 x x x x x x x x", + "x a6 a5 a4 a3 a2 a1 a0 o o o o o o o o"; + + write = "1 1 0 0 0 0 0 0 x x x x x x x x", + "x a6 a5 a4 a3 a2 a1 a0 i i i i i i i i"; + + mode = 0x04; + delay = 12; + blocksize = 64; + readsize = 256; + ; + memory "flash" + size = 2048; + min_write_delay = 4000; + max_write_delay = 9000; + readback_p1 = 0x7f; + readback_p2 = 0x7f; + read_lo = " 0 0 1 0 0 0 0 0", + " x x x x x x a9 a8", + " a7 a6 a5 a4 a3 a2 a1 a0", + " o o o o o o o o"; + + read_hi = " 0 0 1 0 1 0 0 0", + " x x x x x x a9 a8", + " a7 a6 a5 a4 a3 a2 a1 a0", + " o o o o o o o o"; + + write_lo = " 0 1 0 0 0 0 0 0", + " x x x x x x a9 a8", + " a7 a6 a5 a4 a3 a2 a1 a0", + " i i i i i i i i"; + + write_hi = " 0 1 0 0 1 0 0 0", + " x x x x x x a9 a8", + " a7 a6 a5 a4 a3 a2 a1 a0", + " i i i i i i i i"; + + mode = 0x04; + delay = 12; + blocksize = 128; + readsize = 256; + ; + memory "signature" + size = 3; + read = "0 0 1 1 0 0 0 0 x x x x x x x x", + "x x x x x x a1 a0 o o o o o o o o"; + ; + memory "fuse" + size = 1; + ; + memory "lock" + size = 1; + write = "1 0 1 0 1 1 0 0 1 1 1 x x i i x", + "x x x x x x x x x x x x x x x x"; + min_write_delay = 9000; + max_write_delay = 9000; + ; + ; + +#------------------------------------------------------------ +# AT90s2333 +#------------------------------------------------------------ + +part + id = "2333"; +##### WARNING: No XML file for device 'AT90S2333'! ##### + desc = "AT90S2333"; + stk500_devcode = 0x42; + avr910_devcode = 0x34; + signature = 0x1e 0x91 0x05; + chip_erase_delay = 20000; + pgm_enable = "1 0 1 0 1 1 0 0 0 1 0 1 0 0 1 1", + "x x x x x x x x x x x x x x x x"; + + chip_erase = "1 0 1 0 1 1 0 0 1 0 0 0 0 0 0 0", + "x x x x x x x x x x x x x x x x"; + + timeout = 200; + stabdelay = 100; + cmdexedelay = 25; + synchloops = 32; + bytedelay = 0; + pollindex = 3; + pollvalue = 0x53; + predelay = 1; + postdelay = 1; + pollmethod = 0; + + pp_controlstack = + 0x0E, 0x1E, 0x0F, 0x1F, 0x2E, 0x3E, 0x2F, 0x3F, + 0x4E, 0x5E, 0x4F, 0x5F, 0x6E, 0x7E, 0x6F, 0x7F, + 0x66, 0x76, 0x67, 0x77, 0x6A, 0x7A, 0x6B, 0x7B, + 0xBE, 0xFD, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00; + hventerstabdelay = 100; + progmodedelay = 0; + latchcycles = 0; + togglevtg = 0; + poweroffdelay = 0; + resetdelayms = 0; + resetdelayus = 0; + hvleavestabdelay = 15; + chiperasepulsewidth = 15; + chiperasepolltimeout = 0; + programfusepulsewidth = 2; + programfusepolltimeout = 0; + programlockpulsewidth = 0; + programlockpolltimeout = 1; + + memory "eeprom" + size = 128; + min_write_delay = 9000; + max_write_delay = 20000; + readback_p1 = 0x00; + readback_p2 = 0xff; + read = "1 0 1 0 0 0 0 0 x x x x x x x x", + "x a6 a5 a4 a3 a2 a1 a0 o o o o o o o o"; + + write = "1 1 0 0 0 0 0 0 x x x x x x x x", + "x a6 a5 a4 a3 a2 a1 a0 i i i i i i i i"; + + mode = 0x04; + delay = 12; + blocksize = 128; + readsize = 256; + ; + + memory "flash" + size = 2048; + min_write_delay = 9000; + max_write_delay = 20000; + readback_p1 = 0xff; + readback_p2 = 0xff; + read_lo = " 0 0 1 0 0 0 0 0", + " x x x x x x a9 a8", + " a7 a6 a5 a4 a3 a2 a1 a0", + " o o o o o o o o"; + + read_hi = " 0 0 1 0 1 0 0 0", + " x x x x x x a9 a8", + " a7 a6 a5 a4 a3 a2 a1 a0", + " o o o o o o o o"; + + write_lo = " 0 1 0 0 0 0 0 0", + " x x x x x x a9 a8", + " a7 a6 a5 a4 a3 a2 a1 a0", + " i i i i i i i i"; + + write_hi = " 0 1 0 0 1 0 0 0", + " x x x x x x a9 a8", + " a7 a6 a5 a4 a3 a2 a1 a0", + " i i i i i i i i"; + + mode = 0x04; + delay = 12; + blocksize = 128; + readsize = 256; + ; + + memory "signature" + size = 3; + read = "0 0 1 1 0 0 0 0 x x x x x x x x", + "x x x x x x a1 a0 o o o o o o o o"; + ; + memory "fuse" + size = 1; + min_write_delay = 9000; + max_write_delay = 20000; + pwroff_after_write = yes; + read = "0 1 0 1 0 0 0 0 x x x x x x x x", + "x x x x x x x x x x o o o o o o"; + + write = "1 0 1 0 1 1 0 0 1 0 1 i i i i i", + "x x x x x x x x x x x x x x x x"; + ; + memory "lock" + size = 1; + min_write_delay = 9000; + max_write_delay = 20000; + read = "0 1 0 1 1 0 0 0 x x x x x x x x", + "x x x x x x x x x x x x x o o x"; + + write = "1 0 1 0 1 1 0 0 1 1 1 1 1 i i 1", + "x x x x x x x x x x x x x x x x"; + ; + ; + + +#------------------------------------------------------------ +# AT90s2343 (also AT90s2323 and ATtiny22) +#------------------------------------------------------------ + +part + id = "2343"; + desc = "AT90S2343"; + stk500_devcode = 0x43; + avr910_devcode = 0x4c; + signature = 0x1e 0x91 0x03; + chip_erase_delay = 18000; + pgm_enable = "1 0 1 0 1 1 0 0 0 1 0 1 0 0 1 1", + "x x x x x x x x x x x x x x x x"; + + chip_erase = "1 0 1 0 1 1 0 0 1 0 0 x x x x x", + "x x x x x x x x x x x x x x x x"; + + timeout = 200; + stabdelay = 100; + cmdexedelay = 25; + synchloops = 32; + bytedelay = 0; + pollindex = 3; + pollvalue = 0x53; + predelay = 1; + postdelay = 1; + pollmethod = 0; + + hvsp_controlstack = + 0x4C, 0x0C, 0x1C, 0x2C, 0x3C, 0x64, 0x74, 0x00, + 0x68, 0x78, 0x68, 0x68, 0x00, 0x00, 0x68, 0x78, + 0x78, 0x00, 0x6D, 0x0C, 0x80, 0x40, 0x20, 0x10, + 0x11, 0x08, 0x04, 0x02, 0x03, 0x08, 0x04, 0x00; + hventerstabdelay = 100; + hvspcmdexedelay = 0; + synchcycles = 6; + latchcycles = 1; + togglevtg = 0; + poweroffdelay = 25; + resetdelayms = 0; + resetdelayus = 50; + hvleavestabdelay = 100; + resetdelay = 25; + chiperasepolltimeout = 40; + chiperasetime = 0; + programfusepolltimeout = 25; + programlockpolltimeout = 25; + + memory "eeprom" + size = 128; + min_write_delay = 9000; + max_write_delay = 20000; + readback_p1 = 0x00; + readback_p2 = 0xff; + read = "1 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0", + "x a6 a5 a4 a3 a2 a1 a0 o o o o o o o o"; + + write = "1 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0", + "x a6 a5 a4 a3 a2 a1 a0 i i i i i i i i"; + + mode = 0x04; + delay = 12; + blocksize = 64; + readsize = 256; + ; + memory "flash" + size = 2048; + min_write_delay = 9000; + max_write_delay = 20000; + readback_p1 = 0xff; + readback_p2 = 0xff; + read_lo = " 0 0 1 0 0 0 0 0", + " x x x x x x a9 a8", + " a7 a6 a5 a4 a3 a2 a1 a0", + " o o o o o o o o"; + + read_hi = " 0 0 1 0 1 0 0 0", + " x x x x x x a9 a8", + " a7 a6 a5 a4 a3 a2 a1 a0", + " o o o o o o o o"; + + write_lo = " 0 1 0 0 0 0 0 0", + " x x x x x x a9 a8", + " a7 a6 a5 a4 a3 a2 a1 a0", + " i i i i i i i i"; + + write_hi = " 0 1 0 0 1 0 0 0", + " x x x x x x a9 a8", + " a7 a6 a5 a4 a3 a2 a1 a0", + " i i i i i i i i"; + + mode = 0x04; + delay = 12; + blocksize = 128; + readsize = 128; + ; + memory "signature" + size = 3; + read = "0 0 1 1 0 0 0 0 x x x x x x x x", + "x x x x x x a1 a0 o o o o o o o o"; + ; + memory "fuse" + size = 1; + min_write_delay = 9000; + max_write_delay = 20000; + read = "0 1 0 1 1 0 0 0 x x x x x x x x", + "x x x x x x x x o o o x x x x o"; + + write = "1 0 1 0 1 1 0 0 1 0 1 1 1 1 1 i", + "x x x x x x x x x x x x x x x x"; + ; + memory "lock" + size = 1; + min_write_delay = 9000; + max_write_delay = 20000; + read = "0 1 0 1 1 0 0 0 x x x x x x x x", + "x x x x x x x x o o o x x x x o"; + + write = "1 0 1 0 1 1 0 0 1 1 1 1 1 i i 1", + "x x x x x x x x x x x x x x x x"; + ; + ; + + +#------------------------------------------------------------ +# AT90s4433 +#------------------------------------------------------------ + +part + id = "4433"; + desc = "AT90S4433"; + stk500_devcode = 0x51; + avr910_devcode = 0x30; + signature = 0x1e 0x92 0x03; + chip_erase_delay = 20000; + pgm_enable = "1 0 1 0 1 1 0 0 0 1 0 1 0 0 1 1", + "x x x x x x x x x x x x x x x x"; + + chip_erase = "1 0 1 0 1 1 0 0 1 0 0 0 0 0 0 0", + "x x x x x x x x x x x x x x x x"; + + timeout = 200; + stabdelay = 100; + cmdexedelay = 25; + synchloops = 32; + bytedelay = 0; + pollindex = 3; + pollvalue = 0x53; + predelay = 1; + postdelay = 1; + pollmethod = 0; + + pp_controlstack = + 0x0E, 0x1E, 0x0F, 0x1F, 0x2E, 0x3E, 0x2F, 0x3F, + 0x4E, 0x5E, 0x4F, 0x5F, 0x6E, 0x7E, 0x6F, 0x7F, + 0x66, 0x76, 0x67, 0x77, 0x6A, 0x7A, 0x6B, 0x7B, + 0xBE, 0xFD, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00; + hventerstabdelay = 100; + progmodedelay = 0; + latchcycles = 0; + togglevtg = 0; + poweroffdelay = 0; + resetdelayms = 0; + resetdelayus = 0; + hvleavestabdelay = 15; + chiperasepulsewidth = 15; + chiperasepolltimeout = 0; + programfusepulsewidth = 2; + programfusepolltimeout = 0; + programlockpulsewidth = 0; + programlockpolltimeout = 1; + + memory "eeprom" + size = 256; + min_write_delay = 9000; + max_write_delay = 20000; + readback_p1 = 0x00; + readback_p2 = 0xff; + read = " 1 0 1 0 0 0 0 0 x x x x x x x x", + "a7 a6 a5 a4 a3 a2 a1 a0 o o o o o o o o"; + + write = " 1 1 0 0 0 0 0 0 x x x x x x x x", + "a7 a6 a5 a4 a3 a2 a1 a0 i i i i i i i i"; + + mode = 0x04; + delay = 12; + blocksize = 128; + readsize = 256; + ; + memory "flash" + size = 4096; + min_write_delay = 9000; + max_write_delay = 20000; + readback_p1 = 0xff; + readback_p2 = 0xff; + read_lo = " 0 0 1 0 0 0 0 0", + " x x x x x a10 a9 a8", + " a7 a6 a5 a4 a3 a2 a1 a0", + " o o o o o o o o"; + + read_hi = " 0 0 1 0 1 0 0 0", + " x x x x x a10 a9 a8", + " a7 a6 a5 a4 a3 a2 a1 a0", + " o o o o o o o o"; + + write_lo = " 0 1 0 0 0 0 0 0", + " x x x x x a10 a9 a8", + " a7 a6 a5 a4 a3 a2 a1 a0", + " i i i i i i i i"; + + write_hi = " 0 1 0 0 1 0 0 0", + " x x x x x a10 a9 a8", + " a7 a6 a5 a4 a3 a2 a1 a0", + " i i i i i i i i"; + + mode = 0x04; + delay = 12; + blocksize = 128; + readsize = 256; + ; + memory "signature" + size = 3; + read = "0 0 1 1 0 0 0 0 x x x x x x x x", + "x x x x x x a1 a0 o o o o o o o o"; + ; + memory "fuse" + size = 1; + min_write_delay = 9000; + max_write_delay = 20000; + pwroff_after_write = yes; + read = "0 1 0 1 0 0 0 0 x x x x x x x x", + "x x x x x x x x x x o o o o o o"; + + write = "1 0 1 0 1 1 0 0 1 0 1 i i i i i", + "x x x x x x x x x x x x x x x x"; + ; + memory "lock" + size = 1; + min_write_delay = 9000; + max_write_delay = 20000; + read = "0 1 0 1 1 0 0 0 x x x x x x x x", + "x x x x x x x x x x x x x o o x"; + + write = "1 0 1 0 1 1 0 0 1 1 1 1 1 i i 1", + "x x x x x x x x x x x x x x x x"; + ; + ; + +#------------------------------------------------------------ +# AT90s4434 +#------------------------------------------------------------ + +part + id = "4434"; +##### WARNING: No XML file for device 'AT90S4434'! ##### + desc = "AT90S4434"; + stk500_devcode = 0x52; + avr910_devcode = 0x6c; + signature = 0x1e 0x92 0x02; + chip_erase_delay = 20000; + pgm_enable = "1 0 1 0 1 1 0 0 0 1 0 1 0 0 1 1", + "x x x x x x x x x x x x x x x x"; + + chip_erase = "1 0 1 0 1 1 0 0 1 0 0 0 0 0 0 0", + "x x x x x x x x x x x x x x x x"; + + memory "eeprom" + size = 256; + min_write_delay = 9000; + max_write_delay = 20000; + readback_p1 = 0x00; + readback_p2 = 0xff; + read = " 1 0 1 0 0 0 0 0 x x x x x x x x", + "a7 a6 a5 a4 a3 a2 a1 a0 o o o o o o o o"; + + write = " 1 1 0 0 0 0 0 0 x x x x x x x x", + "a7 a6 a5 a4 a3 a2 a1 a0 i i i i i i i i"; + ; + memory "flash" + size = 4096; + min_write_delay = 9000; + max_write_delay = 20000; + readback_p1 = 0xff; + readback_p2 = 0xff; + read_lo = " 0 0 1 0 0 0 0 0", + " x x x x x a10 a9 a8", + " a7 a6 a5 a4 a3 a2 a1 a0", + " o o o o o o o o"; + + read_hi = " 0 0 1 0 1 0 0 0", + " x x x x x a10 a9 a8", + " a7 a6 a5 a4 a3 a2 a1 a0", + " o o o o o o o o"; + + write_lo = " 0 1 0 0 0 0 0 0", + " x x x x x a10 a9 a8", + " a7 a6 a5 a4 a3 a2 a1 a0", + " i i i i i i i i"; + + write_hi = " 0 1 0 0 1 0 0 0", + " x x x x x a10 a9 a8", + " a7 a6 a5 a4 a3 a2 a1 a0", + " i i i i i i i i"; + ; + memory "signature" + size = 3; + read = "0 0 1 1 0 0 0 0 x x x x x x x x", + "x x x x x x a1 a0 o o o o o o o o"; + ; + memory "fuse" + size = 1; + min_write_delay = 9000; + max_write_delay = 20000; + read = "0 1 0 1 0 0 0 0 x x x x x x x x", + "x x x x x x x x x x o o o o o o"; + + write = "1 0 1 0 1 1 0 0 1 0 1 i i i i i", + "x x x x x x x x x x x x x x x x"; + ; + memory "lock" + size = 1; + min_write_delay = 9000; + max_write_delay = 20000; + read = "0 1 0 1 1 0 0 0 x x x x x x x x", + "x x x x x x x x x x x x x o o x"; + + write = "1 0 1 0 1 1 0 0 1 1 1 1 1 i i 1", + "x x x x x x x x x x x x x x x x"; + ; + ; + +#------------------------------------------------------------ +# AT90s8515 +#------------------------------------------------------------ + +part + id = "8515"; + desc = "AT90S8515"; + stk500_devcode = 0x60; + avr910_devcode = 0x38; + signature = 0x1e 0x93 0x01; + chip_erase_delay = 20000; + pgm_enable = "1 0 1 0 1 1 0 0 0 1 0 1 0 0 1 1", + "x x x x x x x x x x x x x x x x"; + + chip_erase = "1 0 1 0 1 1 0 0 1 0 0 x x x x x", + "x x x x x x x x x x x x x x x x"; + + timeout = 200; + stabdelay = 100; + cmdexedelay = 25; + synchloops = 32; + bytedelay = 0; + pollindex = 3; + pollvalue = 0x53; + predelay = 1; + postdelay = 1; + pollmethod = 0; + + pp_controlstack = + 0x0E, 0x1E, 0x0F, 0x1F, 0x2E, 0x3E, 0x2F, 0x3F, + 0x4E, 0x5E, 0x4F, 0x5F, 0x6E, 0x7E, 0x6F, 0x7F, + 0x66, 0x76, 0x67, 0x77, 0x6A, 0x7A, 0x6B, 0x7B, + 0xBE, 0xFD, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00; + hventerstabdelay = 100; + progmodedelay = 0; + latchcycles = 0; + togglevtg = 0; + poweroffdelay = 0; + resetdelayms = 0; + resetdelayus = 0; + hvleavestabdelay = 15; + resetdelay = 15; + chiperasepulsewidth = 15; + chiperasepolltimeout = 0; + programfusepulsewidth = 2; + programfusepolltimeout = 0; + programlockpulsewidth = 0; + programlockpolltimeout = 1; + + memory "eeprom" + size = 512; + min_write_delay = 4000; + max_write_delay = 9000; + readback_p1 = 0x80; + readback_p2 = 0x7f; + read = " 1 0 1 0 0 0 0 0 x x x x x x x a8", + "a7 a6 a5 a4 a3 a2 a1 a0 o o o o o o o o"; + + write = " 1 1 0 0 0 0 0 0 x x x x x x x a8", + "a7 a6 a5 a4 a3 a2 a1 a0 i i i i i i i i"; + + mode = 0x04; + delay = 12; + blocksize = 128; + readsize = 256; + ; + memory "flash" + size = 8192; + min_write_delay = 4000; + max_write_delay = 9000; + readback_p1 = 0x7f; + readback_p2 = 0x7f; + read_lo = " 0 0 1 0 0 0 0 0", + " x x x x a11 a10 a9 a8", + " a7 a6 a5 a4 a3 a2 a1 a0", + " o o o o o o o o"; + + read_hi = " 0 0 1 0 1 0 0 0", + " x x x x a11 a10 a9 a8", + " a7 a6 a5 a4 a3 a2 a1 a0", + " o o o o o o o o"; + + write_lo = " 0 1 0 0 0 0 0 0", + " x x x x a11 a10 a9 a8", + " a7 a6 a5 a4 a3 a2 a1 a0", + " i i i i i i i i"; + + write_hi = " 0 1 0 0 1 0 0 0", + " x x x x a11 a10 a9 a8", + " a7 a6 a5 a4 a3 a2 a1 a0", + " i i i i i i i i"; + + mode = 0x04; + delay = 12; + blocksize = 128; + readsize = 256; + ; + memory "signature" + size = 3; + read = "0 0 1 1 0 0 0 0 x x x x x x x x", + "x x x x x x a1 a0 o o o o o o o o"; + ; + memory "fuse" + size = 1; + ; + memory "lock" + size = 1; + write = "1 0 1 0 1 1 0 0 1 1 1 1 1 i i 1", + "x x x x x x x x x x x x x x x x"; + min_write_delay = 9000; + max_write_delay = 9000; + ; + ; + +#------------------------------------------------------------ +# AT90s8535 +#------------------------------------------------------------ + +part + id = "8535"; + desc = "AT90S8535"; + stk500_devcode = 0x61; + avr910_devcode = 0x68; + signature = 0x1e 0x93 0x03; + chip_erase_delay = 20000; + pgm_enable = "1 0 1 0 1 1 0 0 0 1 0 1 0 0 1 1", + "x x x x x x x x x x x x x x x x"; + + chip_erase = "1 0 1 0 1 1 0 0 1 0 0 0 0 0 0 0", + "x x x x x x x x x x x x x x x x"; + + timeout = 200; + stabdelay = 100; + cmdexedelay = 25; + synchloops = 32; + bytedelay = 0; + pollindex = 3; + pollvalue = 0x53; + predelay = 1; + postdelay = 1; + pollmethod = 0; + + pp_controlstack = + 0x0E, 0x1E, 0x0F, 0x1F, 0x2E, 0x3E, 0x2F, 0x3F, + 0x4E, 0x5E, 0x4F, 0x5F, 0x6E, 0x7E, 0x6F, 0x7F, + 0x66, 0x76, 0x67, 0x77, 0x6A, 0x7A, 0x6B, 0x7B, + 0xBE, 0xFD, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00; + hventerstabdelay = 100; + progmodedelay = 0; + latchcycles = 0; + togglevtg = 0; + poweroffdelay = 0; + resetdelayms = 0; + resetdelayus = 0; + hvleavestabdelay = 15; + chiperasepulsewidth = 15; + chiperasepolltimeout = 0; + programfusepulsewidth = 2; + programfusepolltimeout = 0; + programlockpulsewidth = 0; + programlockpolltimeout = 1; + + memory "eeprom" + size = 512; + min_write_delay = 9000; + max_write_delay = 20000; + readback_p1 = 0x00; + readback_p2 = 0xff; + read = " 1 0 1 0 0 0 0 0 x x x x x x x a8", + "a7 a6 a5 a4 a3 a2 a1 a0 o o o o o o o o"; + + write = " 1 1 0 0 0 0 0 0 x x x x x x x a8", + "a7 a6 a5 a4 a3 a2 a1 a0 i i i i i i i i"; + + mode = 0x04; + delay = 12; + blocksize = 128; + readsize = 256; + ; + memory "flash" + size = 8192; + min_write_delay = 9000; + max_write_delay = 20000; + readback_p1 = 0xff; + readback_p2 = 0xff; + read_lo = " 0 0 1 0 0 0 0 0", + " x x x x a11 a10 a9 a8", + " a7 a6 a5 a4 a3 a2 a1 a0", + " o o o o o o o o"; + + read_hi = " 0 0 1 0 1 0 0 0", + " x x x x a11 a10 a9 a8", + " a7 a6 a5 a4 a3 a2 a1 a0", + " o o o o o o o o"; + + write_lo = " 0 1 0 0 0 0 0 0", + " x x x x a11 a10 a9 a8", + " a7 a6 a5 a4 a3 a2 a1 a0", + " i i i i i i i i"; + + write_hi = " 0 1 0 0 1 0 0 0", + " x x x x a11 a10 a9 a8", + " a7 a6 a5 a4 a3 a2 a1 a0", + " i i i i i i i i"; + + mode = 0x04; + delay = 12; + blocksize = 128; + readsize = 256; + ; + memory "signature" + size = 3; + read = "0 0 1 1 0 0 0 0 x x x x x x x x", + "x x x x x x a1 a0 o o o o o o o o"; + ; + memory "fuse" + size = 1; + read = "0 1 0 1 1 0 0 0 x x x x x x x x", + "x x x x x x x x x x x x x x x o"; + write = "1 0 1 0 1 1 0 0 1 0 1 1 1 1 1 i", + "x x x x x x x x x x x x x x x x"; + min_write_delay = 9000; + max_write_delay = 9000; + ; + memory "lock" + size = 1; + read = "0 1 0 1 1 0 0 0 x x x x x x x x", + "x x x x x x x x o o x x x x x x"; + write = "1 0 1 0 1 1 0 0 1 1 1 1 1 i i 1", + "x x x x x x x x x x x x x x x x"; + min_write_delay = 9000; + max_write_delay = 9000; + ; + ; + +#------------------------------------------------------------ +# ATmega103 +#------------------------------------------------------------ + +part + id = "m103"; + desc = "ATmega103"; + stk500_devcode = 0xB1; + avr910_devcode = 0x41; + signature = 0x1e 0x97 0x01; + chip_erase_delay = 112000; + pgm_enable = "1 0 1 0 1 1 0 0 0 1 0 1 0 0 1 1", + "x x x x x x x x x x x x x x x x"; + + chip_erase = "1 0 1 0 1 1 0 0 1 0 0 0 0 0 0 0", + "x x x x x x x x x x x x x x x x"; + + timeout = 200; + stabdelay = 100; + cmdexedelay = 25; + synchloops = 32; + bytedelay = 0; + pollindex = 3; + pollvalue = 0x53; + predelay = 1; + postdelay = 1; + pollmethod = 0; + + pp_controlstack = + 0x0E, 0x1E, 0x8E, 0x9E, 0x2E, 0x3E, 0xAE, 0xBE, + 0x4E, 0x5E, 0xCE, 0xDE, 0x6E, 0x7E, 0xEE, 0xDE, + 0x66, 0x76, 0xE6, 0xF6, 0x6A, 0x7A, 0xEA, 0x7A, + 0x7F, 0xFD, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00; + hventerstabdelay = 100; + progmodedelay = 0; + latchcycles = 0; + togglevtg = 0; + poweroffdelay = 0; + resetdelayms = 0; + resetdelayus = 0; + hvleavestabdelay = 15; + chiperasepulsewidth = 15; + chiperasepolltimeout = 0; + programfusepulsewidth = 2; + programfusepolltimeout = 0; + programlockpulsewidth = 0; + programlockpolltimeout = 10; + + memory "eeprom" + size = 4096; + min_write_delay = 4000; + max_write_delay = 9000; + readback_p1 = 0x80; + readback_p2 = 0x7f; + read = " 1 0 1 0 0 0 0 0", + " x x x x a11 a10 a9 a8", + " a7 a6 a5 a4 a3 a2 a1 a0", + " o o o o o o o o"; + + write = " 1 1 0 0 0 0 0 0", + " x x x x a11 a10 a9 a8", + " a7 a6 a5 a4 a3 a2 a1 a0", + " i i i i i i i i"; + + mode = 0x04; + delay = 12; + blocksize = 64; + readsize = 256; + ; + + memory "flash" + paged = yes; + size = 131072; + page_size = 256; + num_pages = 512; + min_write_delay = 22000; + max_write_delay = 56000; + readback_p1 = 0xff; + readback_p2 = 0xff; + read_lo = " 0 0 1 0 0 0 0 0", + "a15 a14 a13 a12 a11 a10 a9 a8", + " a7 a6 a5 a4 a3 a2 a1 a0", + " o o o o o o o o"; + + read_hi = " 0 0 1 0 1 0 0 0", + "a15 a14 a13 a12 a11 a10 a9 a8", + " a7 a6 a5 a4 a3 a2 a1 a0", + " o o o o o o o o"; + + loadpage_lo = " 0 1 0 0 0 0 0 0", + " x x x x x x x x", + " x a6 a5 a4 a3 a2 a1 a0", + " i i i i i i i i"; + + loadpage_hi = " 0 1 0 0 1 0 0 0", + " x x x x x x x x", + " x a6 a5 a4 a3 a2 a1 a0", + " i i i i i i i i"; + + writepage = " 0 1 0 0 1 1 0 0", + "a15 a14 a13 a12 a11 a10 a9 a8", + " a7 x x x x x x x", + " x x x x x x x x"; + + mode = 0x11; + delay = 70; + blocksize = 256; + readsize = 256; + ; + + memory "fuse" + size = 1; + read = "0 1 0 1 0 0 0 0 x x x x x x x x", + "x x x x x x x x x x o x o 1 o o"; + + write = "1 0 1 0 1 1 0 0 1 0 1 1 i 1 i i", + "x x x x x x x x x x x x x x x x"; + min_write_delay = 9000; + max_write_delay = 9000; + ; + + memory "lock" + size = 1; + read = "0 1 0 1 1 0 0 0 x x x x x x x x", + "x x x x x x x x x x x x x o o x"; + + write = "1 0 1 0 1 1 0 0 1 1 1 1 1 i i 1", + "x x x x x x x x x x x x x x x x"; + min_write_delay = 9000; + max_write_delay = 9000; + ; + + memory "signature" + size = 3; + read = "0 0 1 1 0 0 0 0 x x x x x x x x", + "x x x x x x a1 a0 o o o o o o o o"; + ; + ; + + +#------------------------------------------------------------ +# ATmega64 +#------------------------------------------------------------ + +part + id = "m64"; + desc = "ATmega64"; + has_jtag = yes; + stk500_devcode = 0xA0; + avr910_devcode = 0x45; + signature = 0x1e 0x96 0x02; + chip_erase_delay = 9000; + pagel = 0xD7; + bs2 = 0xA0; + reset = dedicated; + pgm_enable = "1 0 1 0 1 1 0 0 0 1 0 1 0 0 1 1", + "x x x x x x x x x x x x x x x x"; + + chip_erase = "1 0 1 0 1 1 0 0 1 0 0 0 0 0 0 0", + "x x x x x x x x x x x x x x x x"; + + timeout = 200; + stabdelay = 100; + cmdexedelay = 25; + synchloops = 32; + bytedelay = 0; + pollindex = 3; + pollvalue = 0x53; + predelay = 1; + postdelay = 1; + pollmethod = 0; + + pp_controlstack = + 0x0E, 0x1E, 0x0F, 0x1F, 0x2E, 0x3E, 0x2F, 0x3F, + 0x4E, 0x5E, 0x4F, 0x5F, 0x6E, 0x7E, 0x6F, 0x7F, + 0x66, 0x76, 0x67, 0x77, 0x6A, 0x7A, 0x6B, 0x7B, + 0xBE, 0xFD, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00; + hventerstabdelay = 100; + progmodedelay = 0; + latchcycles = 6; + togglevtg = 0; + poweroffdelay = 0; + resetdelayms = 0; + resetdelayus = 0; + hvleavestabdelay = 15; + chiperasepulsewidth = 0; + chiperasepolltimeout = 10; + programfusepulsewidth = 0; + programfusepolltimeout = 5; + programlockpulsewidth = 0; + programlockpolltimeout = 5; + + idr = 0x22; + spmcr = 0x68; + allowfullpagebitstream = yes; + + ocdrev = 2; + + memory "eeprom" + paged = no; /* leave this "no" */ + page_size = 8; /* for parallel programming */ + size = 2048; + min_write_delay = 9000; + max_write_delay = 9000; + readback_p1 = 0xff; + readback_p2 = 0xff; + read = " 1 0 1 0 0 0 0 0", + " x x x x a11 a10 a9 a8", + " a7 a6 a5 a4 a3 a2 a1 a0", + " o o o o o o o o"; + + write = " 1 1 0 0 0 0 0 0", + " x x x x a11 a10 a9 a8", + " a7 a6 a5 a4 a3 a2 a1 a0", + " i i i i i i i i"; + + mode = 0x04; + delay = 20; + blocksize = 64; + readsize = 256; + ; + + memory "flash" + paged = yes; + size = 65536; + page_size = 256; + num_pages = 256; + min_write_delay = 4500; + max_write_delay = 4500; + readback_p1 = 0xff; + readback_p2 = 0xff; + read_lo = " 0 0 1 0 0 0 0 0", + " x a14 a13 a12 a11 a10 a9 a8", + " a7 a6 a5 a4 a3 a2 a1 a0", + " o o o o o o o o"; + + read_hi = " 0 0 1 0 1 0 0 0", + " x a14 a13 a12 a11 a10 a9 a8", + " a7 a6 a5 a4 a3 a2 a1 a0", + " o o o o o o o o"; + + + loadpage_lo = " 0 1 0 0 0 0 0 0", + " x x x x x x x x", + " x a6 a5 a4 a3 a2 a1 a0", + " i i i i i i i i"; + + loadpage_hi = " 0 1 0 0 1 0 0 0", + " x x x x x x x x", + " x a6 a5 a4 a3 a2 a1 a0", + " i i i i i i i i"; + + writepage = " 0 1 0 0 1 1 0 0", + " x a14 a13 a12 a11 a10 a9 a8", + " a7 x x x x x x x", + " x x x x x x x x"; + + mode = 0x21; + delay = 6; + blocksize = 128; + readsize = 256; + ; + + memory "lfuse" + size = 1; + write = "1 0 1 0 1 1 0 0 1 0 1 0 0 0 0 0", + "x x x x x x x x i i i i i i i i"; + + read = "0 1 0 1 0 0 0 0 0 0 0 0 0 0 0 0", + "x x x x x x x x o o o o o o o o"; + min_write_delay = 9000; + max_write_delay = 9000; + ; + + memory "hfuse" + size = 1; + write = "1 0 1 0 1 1 0 0 1 0 1 0 1 0 0 0", + "x x x x x x x x i i i i i i i i"; + + read = "0 1 0 1 1 0 0 0 0 0 0 0 1 0 0 0", + "x x x x x x x x o o o o o o o o"; + min_write_delay = 9000; + max_write_delay = 9000; + ; + + memory "efuse" + size = 1; + write = "1 0 1 0 1 1 0 0 1 0 1 0 0 1 0 0", + "x x x x x x x x x x x x x x i i"; + + read = "0 1 0 1 0 0 0 0 0 0 0 0 1 0 0 0", + "x x x x x x x x o o o o o o o o"; + min_write_delay = 9000; + max_write_delay = 9000; + ; + + memory "lock" + size = 1; + read = "0 1 0 1 1 0 0 0 0 0 0 0 0 0 0 0", + "x x x x x x x x x x o o o o o o"; + + write = "1 0 1 0 1 1 0 0 1 1 1 x x x x x", + "x x x x x x x x 1 1 i i i i i i"; + min_write_delay = 9000; + max_write_delay = 9000; + ; + + memory "calibration" + size = 4; + read = "0 0 1 1 1 0 0 0 x x x x x x x x", + "0 0 0 0 0 0 a1 a0 o o o o o o o o"; + ; + + memory "signature" + size = 3; + read = "0 0 1 1 0 0 0 0 x x x x x x x x", + "x x x x x x a1 a0 o o o o o o o o"; + ; + ; + + + + +#------------------------------------------------------------ +# ATmega128 +#------------------------------------------------------------ + +part + id = "m128"; + desc = "ATmega128"; + has_jtag = yes; + stk500_devcode = 0xB2; + avr910_devcode = 0x43; + signature = 0x1e 0x97 0x02; + chip_erase_delay = 9000; + pagel = 0xD7; + bs2 = 0xA0; + reset = dedicated; + pgm_enable = "1 0 1 0 1 1 0 0 0 1 0 1 0 0 1 1", + "x x x x x x x x x x x x x x x x"; + + chip_erase = "1 0 1 0 1 1 0 0 1 0 0 0 0 0 0 0", + "x x x x x x x x x x x x x x x x"; + + timeout = 200; + stabdelay = 100; + cmdexedelay = 25; + synchloops = 32; + bytedelay = 0; + pollindex = 3; + pollvalue = 0x53; + predelay = 1; + postdelay = 1; + pollmethod = 0; + + pp_controlstack = + 0x0E, 0x1E, 0x0F, 0x1F, 0x2E, 0x3E, 0x2F, 0x3F, + 0x4E, 0x5E, 0x4F, 0x5F, 0x6E, 0x7E, 0x6F, 0x7F, + 0x66, 0x76, 0x67, 0x77, 0x6A, 0x7A, 0x6B, 0x7B, + 0xBE, 0xFD, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00; + hventerstabdelay = 100; + progmodedelay = 0; + latchcycles = 6; + togglevtg = 0; + poweroffdelay = 0; + resetdelayms = 0; + resetdelayus = 0; + hvleavestabdelay = 15; + chiperasepulsewidth = 0; + chiperasepolltimeout = 10; + programfusepulsewidth = 0; + programfusepolltimeout = 5; + programlockpulsewidth = 0; + programlockpolltimeout = 5; + + idr = 0x22; + spmcr = 0x68; + rampz = 0x3b; + allowfullpagebitstream = yes; + + ocdrev = 1; + + memory "eeprom" + paged = no; /* leave this "no" */ + page_size = 8; /* for parallel programming */ + size = 4096; + min_write_delay = 9000; + max_write_delay = 9000; + readback_p1 = 0xff; + readback_p2 = 0xff; + read = " 1 0 1 0 0 0 0 0", + " x x x x a11 a10 a9 a8", + " a7 a6 a5 a4 a3 a2 a1 a0", + " o o o o o o o o"; + + write = " 1 1 0 0 0 0 0 0", + " x x x x a11 a10 a9 a8", + " a7 a6 a5 a4 a3 a2 a1 a0", + " i i i i i i i i"; + + mode = 0x04; + delay = 12; + blocksize = 64; + readsize = 256; + ; + + memory "flash" + paged = yes; + size = 131072; + page_size = 256; + num_pages = 512; + min_write_delay = 4500; + max_write_delay = 4500; + readback_p1 = 0xff; + readback_p2 = 0xff; + read_lo = " 0 0 1 0 0 0 0 0", + "a15 a14 a13 a12 a11 a10 a9 a8", + " a7 a6 a5 a4 a3 a2 a1 a0", + " o o o o o o o o"; + + read_hi = " 0 0 1 0 1 0 0 0", + "a15 a14 a13 a12 a11 a10 a9 a8", + " a7 a6 a5 a4 a3 a2 a1 a0", + " o o o o o o o o"; + + loadpage_lo = " 0 1 0 0 0 0 0 0", + " x x x x x x x x", + " x a6 a5 a4 a3 a2 a1 a0", + " i i i i i i i i"; + + loadpage_hi = " 0 1 0 0 1 0 0 0", + " x x x x x x x x", + " x a6 a5 a4 a3 a2 a1 a0", + " i i i i i i i i"; + + writepage = " 0 1 0 0 1 1 0 0", + "a15 a14 a13 a12 a11 a10 a9 a8", + " a7 x x x x x x x", + " x x x x x x x x"; + + mode = 0x21; + delay = 6; + blocksize = 128; + readsize = 256; + ; + + memory "lfuse" + size = 1; + write = "1 0 1 0 1 1 0 0 1 0 1 0 0 0 0 0", + "x x x x x x x x i i i i i i i i"; + + read = "0 1 0 1 0 0 0 0 0 0 0 0 0 0 0 0", + "x x x x x x x x o o o o o o o o"; + min_write_delay = 9000; + max_write_delay = 9000; + ; + + memory "hfuse" + size = 1; + write = "1 0 1 0 1 1 0 0 1 0 1 0 1 0 0 0", + "x x x x x x x x i i i i i i i i"; + + read = "0 1 0 1 1 0 0 0 0 0 0 0 1 0 0 0", + "x x x x x x x x o o o o o o o o"; + min_write_delay = 9000; + max_write_delay = 9000; + ; + + memory "efuse" + size = 1; + write = "1 0 1 0 1 1 0 0 1 0 1 0 0 1 0 0", + "x x x x x x x x x x x x x x i i"; + + read = "0 1 0 1 0 0 0 0 0 0 0 0 1 0 0 0", + "x x x x x x x x o o o o o o o o"; + min_write_delay = 9000; + max_write_delay = 9000; + ; + + memory "lock" + size = 1; + read = "0 1 0 1 1 0 0 0 0 0 0 0 0 0 0 0", + "x x x x x x x x x x o o o o o o"; + + write = "1 0 1 0 1 1 0 0 1 1 1 x x x x x", + "x x x x x x x x 1 1 i i i i i i"; + min_write_delay = 9000; + max_write_delay = 9000; + ; + + memory "calibration" + size = 4; + read = "0 0 1 1 1 0 0 0 x x x x x x x x", + "0 0 0 0 0 0 a1 a0 o o o o o o o o"; + ; + + memory "signature" + size = 3; + read = "0 0 1 1 0 0 0 0 x x x x x x x x", + "x x x x x x a1 a0 o o o o o o o o"; + ; + ; + +#------------------------------------------------------------ +# AT90CAN128 +#------------------------------------------------------------ + +part + id = "c128"; + desc = "AT90CAN128"; + has_jtag = yes; + stk500_devcode = 0xB3; +# avr910_devcode = 0x43; + signature = 0x1e 0x97 0x81; + chip_erase_delay = 9000; + pagel = 0xD7; + bs2 = 0xA0; + reset = dedicated; + pgm_enable = "1 0 1 0 1 1 0 0 0 1 0 1 0 0 1 1", + "x x x x x x x x x x x x x x x x"; + + chip_erase = "1 0 1 0 1 1 0 0 1 0 0 x x x x x", + "x x x x x x x x x x x x x x x x"; + + timeout = 200; + stabdelay = 100; + cmdexedelay = 25; + synchloops = 32; + bytedelay = 0; + pollindex = 3; + pollvalue = 0x53; + predelay = 1; + postdelay = 1; + pollmethod = 1; + + pp_controlstack = + 0x0E, 0x1E, 0x0F, 0x1F, 0x2E, 0x3E, 0x2F, 0x3F, + 0x4E, 0x5E, 0x4F, 0x5F, 0x6E, 0x7E, 0x6F, 0x7F, + 0x66, 0x76, 0x67, 0x77, 0x6A, 0x7A, 0x6B, 0x7B, + 0xBE, 0xFD, 0x00, 0x01, 0x00, 0x00, 0x00, 0x01; + hventerstabdelay = 100; + progmodedelay = 0; + latchcycles = 6; + togglevtg = 0; + poweroffdelay = 0; + resetdelayms = 0; + resetdelayus = 0; + hvleavestabdelay = 15; + chiperasepulsewidth = 0; + chiperasepolltimeout = 10; + programfusepulsewidth = 0; + programfusepolltimeout = 5; + programlockpulsewidth = 0; + programlockpolltimeout = 5; + + idr = 0x31; + spmcr = 0x57; + rampz = 0x3b; + eecr = 0x3f; + allowfullpagebitstream = no; + + ocdrev = 3; + + memory "eeprom" + paged = no; /* leave this "no" */ + page_size = 8; /* for parallel programming */ + size = 4096; + min_write_delay = 9000; + max_write_delay = 9000; + readback_p1 = 0xff; + readback_p2 = 0xff; + read = " 1 0 1 0 0 0 0 0", + " 0 0 0 x a11 a10 a9 a8", + " a7 a6 a5 a4 a3 a2 a1 a0", + " o o o o o o o o"; + + write = " 1 1 0 0 0 0 0 0", + " 0 0 0 x a11 a10 a9 a8", + " a7 a6 a5 a4 a3 a2 a1 a0", + " i i i i i i i i"; + + loadpage_lo = " 1 1 0 0 0 0 0 1", + " 0 0 0 0 0 0 0 0", + " 0 0 0 0 0 a2 a1 a0", + " i i i i i i i i"; + + writepage = " 1 1 0 0 0 0 1 0", + " 0 0 x x a11 a10 a9 a8", + " a7 a6 a5 a4 a3 0 0 0", + " x x x x x x x x"; + + + mode = 0x41; + delay = 20; + blocksize = 8; + readsize = 256; + ; + + memory "flash" + paged = yes; + size = 131072; + page_size = 256; + num_pages = 512; + min_write_delay = 4500; + max_write_delay = 4500; + readback_p1 = 0xff; + readback_p2 = 0xff; + read_lo = " 0 0 1 0 0 0 0 0", + "a15 a14 a13 a12 a11 a10 a9 a8", + " a7 a6 a5 a4 a3 a2 a1 a0", + " o o o o o o o o"; + + read_hi = " 0 0 1 0 1 0 0 0", + "a15 a14 a13 a12 a11 a10 a9 a8", + " a7 a6 a5 a4 a3 a2 a1 a0", + " o o o o o o o o"; + + loadpage_lo = " 0 1 0 0 0 0 0 0", + " 0 0 0 x x x x x", + " x a6 a5 a4 a3 a2 a1 a0", + " i i i i i i i i"; + + loadpage_hi = " 0 1 0 0 1 0 0 0", + " 0 0 0 x x x x x", + " x a6 a5 a4 a3 a2 a1 a0", + " i i i i i i i i"; + + writepage = " 0 1 0 0 1 1 0 0", + "a15 a14 a13 a12 a11 a10 a9 a8", + " a7 x x x x x x x", + " x x x x x x x x"; + + mode = 0x41; + delay = 6; + blocksize = 256; + readsize = 256; + ; + + memory "lfuse" + size = 1; + write = "1 0 1 0 1 1 0 0 1 0 1 0 0 0 0 0", + "x x x x x x x x i i i i i i i i"; + + read = "0 1 0 1 0 0 0 0 0 0 0 0 0 0 0 0", + "x x x x x x x x o o o o o o o o"; + min_write_delay = 9000; + max_write_delay = 9000; + ; + + memory "hfuse" + size = 1; + write = "1 0 1 0 1 1 0 0 1 0 1 0 1 0 0 0", + "x x x x x x x x i i i i i i i i"; + + read = "0 1 0 1 1 0 0 0 0 0 0 0 1 0 0 0", + "x x x x x x x x o o o o o o o o"; + min_write_delay = 9000; + max_write_delay = 9000; + ; + + memory "efuse" + size = 1; + write = "1 0 1 0 1 1 0 0 1 0 1 0 0 1 0 0", + "x x x x x x x x x x x x i i i i"; + + read = "0 1 0 1 0 0 0 0 0 0 0 0 1 0 0 0", + "x x x x x x x x o o o o o o o o"; + min_write_delay = 9000; + max_write_delay = 9000; + ; + + memory "lock" + size = 1; + read = "0 1 0 1 1 0 0 0 0 0 0 0 0 0 0 0", + "x x x x x x x x x x o o o o o o"; + + write = "1 0 1 0 1 1 0 0 1 1 1 x x x x x", + "x x x x x x x x 1 1 i i i i i i"; + min_write_delay = 9000; + max_write_delay = 9000; + ; + + memory "calibration" + size = 1; + read = "0 0 1 1 1 0 0 0 0 0 0 x x x x x", + "0 0 0 0 0 0 0 0 o o o o o o o o"; + ; + + memory "signature" + size = 3; + read = "0 0 1 1 0 0 0 0 x x x x x x x x", + "x x x x x x a1 a0 o o o o o o o o"; + ; + ; + +#------------------------------------------------------------ +# AT90CAN64 +#------------------------------------------------------------ + +part + id = "c64"; + desc = "AT90CAN64"; + has_jtag = yes; + stk500_devcode = 0xB3; +# avr910_devcode = 0x43; + signature = 0x1e 0x96 0x81; + chip_erase_delay = 9000; + pagel = 0xD7; + bs2 = 0xA0; + reset = dedicated; + pgm_enable = "1 0 1 0 1 1 0 0 0 1 0 1 0 0 1 1", + "x x x x x x x x x x x x x x x x"; + + chip_erase = "1 0 1 0 1 1 0 0 1 0 0 x x x x x", + "x x x x x x x x x x x x x x x x"; + + timeout = 200; + stabdelay = 100; + cmdexedelay = 25; + synchloops = 32; + bytedelay = 0; + pollindex = 3; + pollvalue = 0x53; + predelay = 1; + postdelay = 1; + pollmethod = 1; + + pp_controlstack = + 0x0E, 0x1E, 0x0F, 0x1F, 0x2E, 0x3E, 0x2F, 0x3F, + 0x4E, 0x5E, 0x4F, 0x5F, 0x6E, 0x7E, 0x6F, 0x7F, + 0x66, 0x76, 0x67, 0x77, 0x6A, 0x7A, 0x6B, 0x7B, + 0xBE, 0xFD, 0x00, 0x01, 0x00, 0x00, 0x00, 0x01; + hventerstabdelay = 100; + progmodedelay = 0; + latchcycles = 6; + togglevtg = 0; + poweroffdelay = 0; + resetdelayms = 0; + resetdelayus = 0; + hvleavestabdelay = 15; + chiperasepulsewidth = 0; + chiperasepolltimeout = 10; + programfusepulsewidth = 0; + programfusepolltimeout = 5; + programlockpulsewidth = 0; + programlockpolltimeout = 5; + + idr = 0x31; + spmcr = 0x57; + rampz = 0x3b; + eecr = 0x3f; + allowfullpagebitstream = no; + + ocdrev = 3; + + memory "eeprom" + paged = no; /* leave this "no" */ + page_size = 8; /* for parallel programming */ + size = 2048; + min_write_delay = 9000; + max_write_delay = 9000; + readback_p1 = 0xff; + readback_p2 = 0xff; + read = " 1 0 1 0 0 0 0 0", + " 0 0 0 x x a10 a9 a8", + " a7 a6 a5 a4 a3 a2 a1 a0", + " o o o o o o o o"; + + write = " 1 1 0 0 0 0 0 0", + " 0 0 0 x x a10 a9 a8", + " a7 a6 a5 a4 a3 a2 a1 a0", + " i i i i i i i i"; + + loadpage_lo = " 1 1 0 0 0 0 0 1", + " 0 0 0 0 0 0 0 0", + " 0 0 0 0 0 a2 a1 a0", + " i i i i i i i i"; + + writepage = " 1 1 0 0 0 0 1 0", + " 0 0 x x x a10 a9 a8", + " a7 a6 a5 a4 a3 0 0 0", + " x x x x x x x x"; + + + mode = 0x41; + delay = 20; + blocksize = 8; + readsize = 256; + ; + + memory "flash" + paged = yes; + size = 65536; + page_size = 256; + num_pages = 256; + min_write_delay = 4500; + max_write_delay = 4500; + readback_p1 = 0xff; + readback_p2 = 0xff; + read_lo = " 0 0 1 0 0 0 0 0", + "a15 a14 a13 a12 a11 a10 a9 a8", + " a7 a6 a5 a4 a3 a2 a1 a0", + " o o o o o o o o"; + + read_hi = " 0 0 1 0 1 0 0 0", + "a15 a14 a13 a12 a11 a10 a9 a8", + " a7 a6 a5 a4 a3 a2 a1 a0", + " o o o o o o o o"; + + loadpage_lo = " 0 1 0 0 0 0 0 0", + " 0 0 0 x x x x x", + " x a6 a5 a4 a3 a2 a1 a0", + " i i i i i i i i"; + + loadpage_hi = " 0 1 0 0 1 0 0 0", + " 0 0 0 x x x x x", + " x a6 a5 a4 a3 a2 a1 a0", + " i i i i i i i i"; + + writepage = " 0 1 0 0 1 1 0 0", + "a15 a14 a13 a12 a11 a10 a9 a8", + " a7 x x x x x x x", + " x x x x x x x x"; + + mode = 0x41; + delay = 6; + blocksize = 256; + readsize = 256; + ; + + memory "lfuse" + size = 1; + write = "1 0 1 0 1 1 0 0 1 0 1 0 0 0 0 0", + "x x x x x x x x i i i i i i i i"; + + read = "0 1 0 1 0 0 0 0 0 0 0 0 0 0 0 0", + "x x x x x x x x o o o o o o o o"; + min_write_delay = 9000; + max_write_delay = 9000; + ; + + memory "hfuse" + size = 1; + write = "1 0 1 0 1 1 0 0 1 0 1 0 1 0 0 0", + "x x x x x x x x i i i i i i i i"; + + read = "0 1 0 1 1 0 0 0 0 0 0 0 1 0 0 0", + "x x x x x x x x o o o o o o o o"; + min_write_delay = 9000; + max_write_delay = 9000; + ; + + memory "efuse" + size = 1; + write = "1 0 1 0 1 1 0 0 1 0 1 0 0 1 0 0", + "x x x x x x x x x x x x i i i i"; + + read = "0 1 0 1 0 0 0 0 0 0 0 0 1 0 0 0", + "x x x x x x x x o o o o o o o o"; + min_write_delay = 9000; + max_write_delay = 9000; + ; + + memory "lock" + size = 1; + read = "0 1 0 1 1 0 0 0 0 0 0 0 0 0 0 0", + "x x x x x x x x x x o o o o o o"; + + write = "1 0 1 0 1 1 0 0 1 1 1 x x x x x", + "x x x x x x x x 1 1 i i i i i i"; + min_write_delay = 9000; + max_write_delay = 9000; + ; + + memory "calibration" + size = 1; + read = "0 0 1 1 1 0 0 0 0 0 0 x x x x x", + "0 0 0 0 0 0 0 0 o o o o o o o o"; + ; + + memory "signature" + size = 3; + read = "0 0 1 1 0 0 0 0 x x x x x x x x", + "x x x x x x a1 a0 o o o o o o o o"; + ; + ; + +#------------------------------------------------------------ +# AT90CAN32 +#------------------------------------------------------------ + +part + id = "c32"; + desc = "AT90CAN32"; + has_jtag = yes; + stk500_devcode = 0xB3; +# avr910_devcode = 0x43; + signature = 0x1e 0x95 0x81; + chip_erase_delay = 9000; + pagel = 0xD7; + bs2 = 0xA0; + reset = dedicated; + pgm_enable = "1 0 1 0 1 1 0 0 0 1 0 1 0 0 1 1", + "x x x x x x x x x x x x x x x x"; + + chip_erase = "1 0 1 0 1 1 0 0 1 0 0 x x x x x", + "x x x x x x x x x x x x x x x x"; + + timeout = 200; + stabdelay = 100; + cmdexedelay = 25; + synchloops = 32; + bytedelay = 0; + pollindex = 3; + pollvalue = 0x53; + predelay = 1; + postdelay = 1; + pollmethod = 1; + + pp_controlstack = + 0x0E, 0x1E, 0x0F, 0x1F, 0x2E, 0x3E, 0x2F, 0x3F, + 0x4E, 0x5E, 0x4F, 0x5F, 0x6E, 0x7E, 0x6F, 0x7F, + 0x66, 0x76, 0x67, 0x77, 0x6A, 0x7A, 0x6B, 0x7B, + 0xBE, 0xFD, 0x00, 0x01, 0x00, 0x00, 0x00, 0x01; + hventerstabdelay = 100; + progmodedelay = 0; + latchcycles = 6; + togglevtg = 0; + poweroffdelay = 0; + resetdelayms = 0; + resetdelayus = 0; + hvleavestabdelay = 15; + chiperasepulsewidth = 0; + chiperasepolltimeout = 10; + programfusepulsewidth = 0; + programfusepolltimeout = 5; + programlockpulsewidth = 0; + programlockpolltimeout = 5; + + idr = 0x31; + spmcr = 0x57; + rampz = 0x3b; + eecr = 0x3f; + allowfullpagebitstream = no; + + ocdrev = 3; + + memory "eeprom" + paged = no; /* leave this "no" */ + page_size = 8; /* for parallel programming */ + size = 1024; + min_write_delay = 9000; + max_write_delay = 9000; + readback_p1 = 0xff; + readback_p2 = 0xff; + read = " 1 0 1 0 0 0 0 0", + " 0 0 0 x x x a9 a8", + " a7 a6 a5 a4 a3 a2 a1 a0", + " o o o o o o o o"; + + write = " 1 1 0 0 0 0 0 0", + " 0 0 0 x x x a9 a8", + " a7 a6 a5 a4 a3 a2 a1 a0", + " i i i i i i i i"; + + loadpage_lo = " 1 1 0 0 0 0 0 1", + " 0 0 0 0 0 0 0 0", + " 0 0 0 0 0 a2 a1 a0", + " i i i i i i i i"; + + writepage = " 1 1 0 0 0 0 1 0", + " 0 0 x x x x a9 a8", + " a7 a6 a5 a4 a3 0 0 0", + " x x x x x x x x"; + + + mode = 0x41; + delay = 20; + blocksize = 8; + readsize = 256; + ; + + memory "flash" + paged = yes; + size = 32768; + page_size = 256; + num_pages = 128; + min_write_delay = 4500; + max_write_delay = 4500; + readback_p1 = 0xff; + readback_p2 = 0xff; + read_lo = " 0 0 1 0 0 0 0 0", + "a15 a14 a13 a12 a11 a10 a9 a8", + " a7 a6 a5 a4 a3 a2 a1 a0", + " o o o o o o o o"; + + read_hi = " 0 0 1 0 1 0 0 0", + "a15 a14 a13 a12 a11 a10 a9 a8", + " a7 a6 a5 a4 a3 a2 a1 a0", + " o o o o o o o o"; + + loadpage_lo = " 0 1 0 0 0 0 0 0", + " 0 0 0 x x x x x", + " x a6 a5 a4 a3 a2 a1 a0", + " i i i i i i i i"; + + loadpage_hi = " 0 1 0 0 1 0 0 0", + " 0 0 0 x x x x x", + " x a6 a5 a4 a3 a2 a1 a0", + " i i i i i i i i"; + + writepage = " 0 1 0 0 1 1 0 0", + "a15 a14 a13 a12 a11 a10 a9 a8", + " a7 x x x x x x x", + " x x x x x x x x"; + + mode = 0x41; + delay = 6; + blocksize = 256; + readsize = 256; + ; + + memory "lfuse" + size = 1; + write = "1 0 1 0 1 1 0 0 1 0 1 0 0 0 0 0", + "x x x x x x x x i i i i i i i i"; + + read = "0 1 0 1 0 0 0 0 0 0 0 0 0 0 0 0", + "x x x x x x x x o o o o o o o o"; + min_write_delay = 9000; + max_write_delay = 9000; + ; + + memory "hfuse" + size = 1; + write = "1 0 1 0 1 1 0 0 1 0 1 0 1 0 0 0", + "x x x x x x x x i i i i i i i i"; + + read = "0 1 0 1 1 0 0 0 0 0 0 0 1 0 0 0", + "x x x x x x x x o o o o o o o o"; + min_write_delay = 9000; + max_write_delay = 9000; + ; + + memory "efuse" + size = 1; + write = "1 0 1 0 1 1 0 0 1 0 1 0 0 1 0 0", + "x x x x x x x x x x x x i i i i"; + + read = "0 1 0 1 0 0 0 0 0 0 0 0 1 0 0 0", + "x x x x x x x x o o o o o o o o"; + min_write_delay = 9000; + max_write_delay = 9000; + ; + + memory "lock" + size = 1; + read = "0 1 0 1 1 0 0 0 0 0 0 0 0 0 0 0", + "x x x x x x x x x x o o o o o o"; + + write = "1 0 1 0 1 1 0 0 1 1 1 x x x x x", + "x x x x x x x x 1 1 i i i i i i"; + min_write_delay = 9000; + max_write_delay = 9000; + ; + + memory "calibration" + size = 1; + read = "0 0 1 1 1 0 0 0 0 0 0 x x x x x", + "0 0 0 0 0 0 0 0 o o o o o o o o"; + ; + + memory "signature" + size = 3; + read = "0 0 1 1 0 0 0 0 x x x x x x x x", + "x x x x x x a1 a0 o o o o o o o o"; + ; + ; + + +#------------------------------------------------------------ +# ATmega16 +#------------------------------------------------------------ + +part + id = "m16"; + desc = "ATmega16"; + has_jtag = yes; + stk500_devcode = 0x82; + avr910_devcode = 0x74; + signature = 0x1e 0x94 0x03; + pagel = 0xd7; + bs2 = 0xa0; + chip_erase_delay = 9000; + pgm_enable = "1 0 1 0 1 1 0 0 0 1 0 1 0 0 1 1", + "x x x x x x x x x x x x x x x x"; + + chip_erase = "1 0 1 0 1 1 0 0 1 0 0 x x x x x", + "x x x x x x x x x x x x x x x x"; + + timeout = 200; + stabdelay = 100; + cmdexedelay = 25; + synchloops = 32; + bytedelay = 0; + pollindex = 3; + pollvalue = 0x53; + predelay = 1; + postdelay = 1; + pollmethod = 0; + + pp_controlstack = + 0x0E, 0x1E, 0x0F, 0x1F, 0x2E, 0x3E, 0x2F, 0x3F, + 0x4E, 0x5E, 0x4F, 0x5F, 0x6E, 0x7E, 0x6F, 0x7F, + 0x66, 0x76, 0x67, 0x77, 0x6A, 0x7A, 0x6B, 0x7B, + 0xBE, 0xFD, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00; + hventerstabdelay = 100; + progmodedelay = 100; + latchcycles = 6; + togglevtg = 0; + poweroffdelay = 0; + resetdelayms = 0; + resetdelayus = 0; + hvleavestabdelay = 15; + resetdelay = 15; + chiperasepulsewidth = 0; + chiperasepolltimeout = 10; + programfusepulsewidth = 0; + programfusepolltimeout = 5; + programlockpulsewidth = 0; + programlockpolltimeout = 5; + + idr = 0x31; + spmcr = 0x57; + allowfullpagebitstream = yes; + + ocdrev = 2; + + memory "eeprom" + paged = no; /* leave this "no" */ + page_size = 4; /* for parallel programming */ + size = 512; + min_write_delay = 9000; + max_write_delay = 9000; + readback_p1 = 0xff; + readback_p2 = 0xff; + read = " 1 0 1 0 0 0 0 0", + " 0 0 x x x x a9 a8", + " a7 a6 a5 a4 a3 a2 a1 a0", + " o o o o o o o o"; + + write = " 1 1 0 0 0 0 0 0", + " 0 0 x x x x a9 a8", + " a7 a6 a5 a4 a3 a2 a1 a0", + " i i i i i i i i"; + + loadpage_lo = " 1 1 0 0 0 0 0 1", + " 0 0 0 0 0 0 0 0", + " 0 0 0 0 0 0 a1 a0", + " i i i i i i i i"; + + writepage = " 1 1 0 0 0 0 1 0", + " 0 0 x x x x a9 a8", + " a7 a6 a5 a4 a3 a2 0 0", + " x x x x x x x x"; + + mode = 0x04; + delay = 10; + blocksize = 128; + readsize = 256; + ; + + memory "flash" + paged = yes; + size = 16384; + page_size = 128; + num_pages = 128; + min_write_delay = 4500; + max_write_delay = 4500; + readback_p1 = 0xff; + readback_p2 = 0xff; + read_lo = " 0 0 1 0 0 0 0 0", + " 0 0 a13 a12 a11 a10 a9 a8", + " a7 a6 a5 a4 a3 a2 a1 a0", + " o o o o o o o o"; + + read_hi = " 0 0 1 0 1 0 0 0", + " 0 0 a13 a12 a11 a10 a9 a8", + " a7 a6 a5 a4 a3 a2 a1 a0", + " o o o o o o o o"; + + loadpage_lo = " 0 1 0 0 0 0 0 0", + " 0 0 x x x x x x", + " x x a5 a4 a3 a2 a1 a0", + " i i i i i i i i"; + + loadpage_hi = " 0 1 0 0 1 0 0 0", + " 0 0 x x x x x x", + " x x a5 a4 a3 a2 a1 a0", + " i i i i i i i i"; + + writepage = " 0 1 0 0 1 1 0 0", + " 0 0 a13 a12 a11 a10 a9 a8", + " a7 a6 x x x x x x", + " x x x x x x x x"; + + mode = 0x21; + delay = 6; + blocksize = 128; + readsize = 256; + ; + + memory "lock" + size = 1; + read = "0 1 0 1 1 0 0 0 0 0 0 0 0 0 0 0", + "x x x x x x x x x x o o o o o o"; + + write = "1 0 1 0 1 1 0 0 1 1 1 x x x x x", + "x x x x x x x x 1 1 i i i i i i"; + min_write_delay = 9000; + max_write_delay = 9000; + ; + + memory "lfuse" + size = 1; + read = "0 1 0 1 0 0 0 0 0 0 0 0 0 0 0 0", + "x x x x x x x x o o o o o o o o"; + + write = "1 0 1 0 1 1 0 0 1 0 1 0 0 0 0 0", + "x x x x x x x x i i i i i i i i"; + min_write_delay = 9000; + max_write_delay = 9000; + ; + + memory "hfuse" + size = 1; + read = "0 1 0 1 1 0 0 0 0 0 0 0 1 0 0 0", + "x x x x x x x x o o o o o o o o"; + + write = "1 0 1 0 1 1 0 0 1 0 1 0 1 0 0 0", + "x x x x x x x x i i i i i i i i"; + min_write_delay = 9000; + max_write_delay = 9000; + ; + memory "signature" + size = 3; + read = "0 0 1 1 0 0 0 0 x x x x x x x x", + "x x x x x x a1 a0 o o o o o o o o"; + ; + memory "calibration" + size = 4; + + read = "0 0 1 1 1 0 0 0 0 0 0 x x x x x", + "0 0 0 0 0 0 a1 a0 o o o o o o o o"; + ; + ; + + +#------------------------------------------------------------ +# ATmega164P +#------------------------------------------------------------ + +# close to ATmega16 + +part parent "m16" + id = "m164p"; + desc = "ATmega164P"; + signature = 0x1e 0x94 0x0a; + + progmodedelay = 0; + latchcycles = 5; + togglevtg = 1; + poweroffdelay = 15; + resetdelayms = 1; + allowfullpagebitstream = no; + chip_erase_delay = 55000; + + ocdrev = 3; + ; + + +#------------------------------------------------------------ +# ATmega324P +#------------------------------------------------------------ + +# similar to ATmega164P + +part + id = "m324p"; + desc = "ATmega324P"; + has_jtag = yes; + stk500_devcode = 0x82; # no STK500v1 support, use the ATmega16 one + avr910_devcode = 0x74; + signature = 0x1e 0x95 0x08; + pagel = 0xd7; + bs2 = 0xa0; + chip_erase_delay = 55000; + pgm_enable = "1 0 1 0 1 1 0 0 0 1 0 1 0 0 1 1", + "x x x x x x x x x x x x x x x x"; + + chip_erase = "1 0 1 0 1 1 0 0 1 0 0 x x x x x", + "x x x x x x x x x x x x x x x x"; + + timeout = 200; + stabdelay = 100; + cmdexedelay = 25; + synchloops = 32; + bytedelay = 0; + pollindex = 3; + pollvalue = 0x53; + predelay = 1; + postdelay = 1; + pollmethod = 0; + + pp_controlstack = + 0x0E, 0x1E, 0x0F, 0x1F, 0x2E, 0x3E, 0x2F, 0x3F, + 0x4E, 0x5E, 0x4F, 0x5F, 0x6E, 0x7E, 0x6F, 0x7F, + 0x66, 0x76, 0x67, 0x77, 0x6A, 0x7A, 0x6B, 0x7B, + 0xBE, 0xFD, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00; + hventerstabdelay = 100; + progmodedelay = 0; + latchcycles = 5; + togglevtg = 1; + poweroffdelay = 15; + resetdelayms = 1; + resetdelayus = 0; + hvleavestabdelay = 15; + chiperasepulsewidth = 0; + chiperasepolltimeout = 10; + programfusepulsewidth = 0; + programfusepolltimeout = 5; + programlockpulsewidth = 0; + programlockpolltimeout = 5; + + idr = 0x31; + spmcr = 0x57; + allowfullpagebitstream = no; + + ocdrev = 3; + + memory "eeprom" + paged = no; /* leave this "no" */ + page_size = 4; /* for parallel programming */ + size = 1024; + min_write_delay = 9000; + max_write_delay = 9000; + readback_p1 = 0xff; + readback_p2 = 0xff; + read = " 1 0 1 0 0 0 0 0", + " 0 0 x x x a10 a9 a8", + " a7 a6 a5 a4 a3 a2 a1 a0", + " o o o o o o o o"; + + write = " 1 1 0 0 0 0 0 0", + " 0 0 x x x a10 a9 a8", + " a7 a6 a5 a4 a3 a2 a1 a0", + " i i i i i i i i"; + + loadpage_lo = " 1 1 0 0 0 0 0 1", + " 0 0 0 0 0 0 0 0", + " 0 0 0 0 0 0 a1 a0", + " i i i i i i i i"; + + writepage = " 1 1 0 0 0 0 1 0", + " 0 0 x x x a10 a9 a8", + " a7 a6 a5 a4 a3 a2 0 0", + " x x x x x x x x"; + + mode = 0x41; + delay = 10; + blocksize = 128; + readsize = 256; + ; + + memory "flash" + paged = yes; + size = 32768; + page_size = 128; + num_pages = 256; + min_write_delay = 4500; + max_write_delay = 4500; + readback_p1 = 0xff; + readback_p2 = 0xff; + read_lo = " 0 0 1 0 0 0 0 0", + " 0 a14 a13 a12 a11 a10 a9 a8", + " a7 a6 a5 a4 a3 a2 a1 a0", + " o o o o o o o o"; + + read_hi = " 0 0 1 0 1 0 0 0", + " 0 a14 a13 a12 a11 a10 a9 a8", + " a7 a6 a5 a4 a3 a2 a1 a0", + " o o o o o o o o"; + + loadpage_lo = " 0 1 0 0 0 0 0 0", + " 0 0 x x x x x x", + " x x a5 a4 a3 a2 a1 a0", + " i i i i i i i i"; + + loadpage_hi = " 0 1 0 0 1 0 0 0", + " 0 0 x x x x x x", + " x x a5 a4 a3 a2 a1 a0", + " i i i i i i i i"; + + writepage = " 0 1 0 0 1 1 0 0", + " 0 a14 a13 a12 a11 a10 a9 a8", + " a7 a6 x x x x x x", + " x x x x x x x x"; + + mode = 0x21; + delay = 6; + blocksize = 256; + readsize = 256; + ; + + memory "lock" + size = 1; + read = "0 1 0 1 1 0 0 0 0 0 0 0 0 0 0 0", + "x x x x x x x x x x o o o o o o"; + + write = "1 0 1 0 1 1 0 0 1 1 1 x x x x x", + "x x x x x x x x 1 1 i i i i i i"; + min_write_delay = 9000; + max_write_delay = 9000; + ; + + memory "lfuse" + size = 1; + read = "0 1 0 1 0 0 0 0 0 0 0 0 0 0 0 0", + "x x x x x x x x o o o o o o o o"; + + write = "1 0 1 0 1 1 0 0 1 0 1 0 0 0 0 0", + "x x x x x x x x i i i i i i i i"; + min_write_delay = 9000; + max_write_delay = 9000; + ; + + memory "hfuse" + size = 1; + read = "0 1 0 1 1 0 0 0 0 0 0 0 1 0 0 0", + "x x x x x x x x o o o o o o o o"; + + write = "1 0 1 0 1 1 0 0 1 0 1 0 1 0 0 0", + "x x x x x x x x i i i i i i i i"; + min_write_delay = 9000; + max_write_delay = 9000; + ; + + memory "efuse" + size = 1; + + read = "0 1 0 1 0 0 0 0 0 0 0 0 1 0 0 0", + "x x x x x x x x o o o o o o o o"; + + write = "1 0 1 0 1 1 0 0 1 0 1 0 0 1 0 0", + "x x x x x x x x 1 1 1 1 1 i i i"; + min_write_delay = 9000; + max_write_delay = 9000; + ; + + memory "signature" + size = 3; + read = "0 0 1 1 0 0 0 0 x x x x x x x x", + "x x x x x x a1 a0 o o o o o o o o"; + ; + + memory "calibration" + size = 1; + + read = "0 0 1 1 1 0 0 0 0 0 0 x x x x x", + "0 0 0 0 0 0 0 0 o o o o o o o o"; + ; + ; + + +#------------------------------------------------------------ +# ATmega324PA +#------------------------------------------------------------ + +# similar to ATmega324P + +part parent "m324p" + id = "m324pa"; + desc = "ATmega324PA"; + signature = 0x1e 0x95 0x11; + + ocdrev = 3; + ; + + +#------------------------------------------------------------ +# ATmega644 +#------------------------------------------------------------ + +# similar to ATmega164 + +part + id = "m644"; + desc = "ATmega644"; + has_jtag = yes; + stk500_devcode = 0x82; # no STK500v1 support, use the ATmega16 one + avr910_devcode = 0x74; + signature = 0x1e 0x96 0x09; + pagel = 0xd7; + bs2 = 0xa0; + chip_erase_delay = 55000; + pgm_enable = "1 0 1 0 1 1 0 0 0 1 0 1 0 0 1 1", + "x x x x x x x x x x x x x x x x"; + + chip_erase = "1 0 1 0 1 1 0 0 1 0 0 x x x x x", + "x x x x x x x x x x x x x x x x"; + + timeout = 200; + stabdelay = 100; + cmdexedelay = 25; + synchloops = 32; + bytedelay = 0; + pollindex = 3; + pollvalue = 0x53; + predelay = 1; + postdelay = 1; + pollmethod = 0; + + pp_controlstack = + 0x0E, 0x1E, 0x0F, 0x1F, 0x2E, 0x3E, 0x2F, 0x3F, + 0x4E, 0x5E, 0x4F, 0x5F, 0x6E, 0x7E, 0x6F, 0x7F, + 0x66, 0x76, 0x67, 0x77, 0x6A, 0x7A, 0x6B, 0x7B, + 0xBE, 0xFD, 0x00, 0x01, 0x00, 0x00, 0x00, 0x02; + hventerstabdelay = 100; + progmodedelay = 0; + latchcycles = 6; + togglevtg = 0; + poweroffdelay = 0; + resetdelayms = 0; + resetdelayus = 0; + hvleavestabdelay = 15; + chiperasepulsewidth = 0; + chiperasepolltimeout = 10; + programfusepulsewidth = 0; + programfusepolltimeout = 5; + programlockpulsewidth = 0; + programlockpolltimeout = 5; + + idr = 0x31; + spmcr = 0x57; + allowfullpagebitstream = no; + + ocdrev = 3; + + memory "eeprom" + paged = no; /* leave this "no" */ + page_size = 8; /* for parallel programming */ + size = 2048; + min_write_delay = 9000; + max_write_delay = 9000; + readback_p1 = 0xff; + readback_p2 = 0xff; + read = " 1 0 1 0 0 0 0 0", + " 0 0 x x a11 a10 a9 a8", + " a7 a6 a5 a4 a3 a2 a1 a0", + " o o o o o o o o"; + + write = " 1 1 0 0 0 0 0 0", + " 0 0 x x a11 a10 a9 a8", + " a7 a6 a5 a4 a3 a2 a1 a0", + " i i i i i i i i"; + + loadpage_lo = " 1 1 0 0 0 0 0 1", + " 0 0 0 0 0 0 0 0", + " 0 0 0 0 0 a2 a1 a0", + " i i i i i i i i"; + + writepage = " 1 1 0 0 0 0 1 0", + " 0 0 x x a11 a10 a9 a8", + " a7 a6 a5 a4 a3 0 0 0", + " x x x x x x x x"; + + mode = 0x41; + delay = 10; + blocksize = 128; + readsize = 256; + ; + + memory "flash" + paged = yes; + size = 65536; + page_size = 256; + num_pages = 256; + min_write_delay = 4500; + max_write_delay = 4500; + readback_p1 = 0xff; + readback_p2 = 0xff; + read_lo = " 0 0 1 0 0 0 0 0", + "a15 a14 a13 a12 a11 a10 a9 a8", + " a7 a6 a5 a4 a3 a2 a1 a0", + " o o o o o o o o"; + + read_hi = " 0 0 1 0 1 0 0 0", + "a15 a14 a13 a12 a11 a10 a9 a8", + " a7 a6 a5 a4 a3 a2 a1 a0", + " o o o o o o o o"; + + loadpage_lo = " 0 1 0 0 0 0 0 0", + " 0 0 x x x x x x", + " x a6 a5 a4 a3 a2 a1 a0", + " i i i i i i i i"; + + loadpage_hi = " 0 1 0 0 1 0 0 0", + " 0 0 x x x x x x", + " x a6 a5 a4 a3 a2 a1 a0", + " i i i i i i i i"; + + writepage = " 0 1 0 0 1 1 0 0", + "a15 a14 a13 a12 a11 a10 a9 a8", + " a7 x x x x x x x", + " x x x x x x x x"; + + mode = 0x21; + delay = 6; + blocksize = 256; + readsize = 256; + ; + + memory "lock" + size = 1; + read = "0 1 0 1 1 0 0 0 0 0 0 0 0 0 0 0", + "x x x x x x x x x x o o o o o o"; + + write = "1 0 1 0 1 1 0 0 1 1 1 x x x x x", + "x x x x x x x x 1 1 i i i i i i"; + min_write_delay = 9000; + max_write_delay = 9000; + ; + + memory "lfuse" + size = 1; + read = "0 1 0 1 0 0 0 0 0 0 0 0 0 0 0 0", + "x x x x x x x x o o o o o o o o"; + + write = "1 0 1 0 1 1 0 0 1 0 1 0 0 0 0 0", + "x x x x x x x x i i i i i i i i"; + min_write_delay = 9000; + max_write_delay = 9000; + ; + + memory "hfuse" + size = 1; + read = "0 1 0 1 1 0 0 0 0 0 0 0 1 0 0 0", + "x x x x x x x x o o o o o o o o"; + + write = "1 0 1 0 1 1 0 0 1 0 1 0 1 0 0 0", + "x x x x x x x x i i i i i i i i"; + min_write_delay = 9000; + max_write_delay = 9000; + ; + + memory "efuse" + size = 1; + + read = "0 1 0 1 0 0 0 0 0 0 0 0 1 0 0 0", + "x x x x x x x x o o o o o o o o"; + + write = "1 0 1 0 1 1 0 0 1 0 1 0 0 1 0 0", + "x x x x x x x x 1 1 1 1 1 i i i"; + min_write_delay = 9000; + max_write_delay = 9000; + ; + + memory "signature" + size = 3; + read = "0 0 1 1 0 0 0 0 x x x x x x x x", + "x x x x x x a1 a0 o o o o o o o o"; + ; + + memory "calibration" + size = 1; + + read = "0 0 1 1 1 0 0 0 0 0 0 x x x x x", + "0 0 0 0 0 0 0 0 o o o o o o o o"; + ; + ; + +#------------------------------------------------------------ +# ATmega644P +#------------------------------------------------------------ + +# similar to ATmega164p + +part parent "m644" + id = "m644p"; + desc = "ATmega644P"; + signature = 0x1e 0x96 0x0a; + + ocdrev = 3; + ; + + + +#------------------------------------------------------------ +# ATmega1284 +#------------------------------------------------------------ + +# similar to ATmega164 + +part + id = "m1284"; + desc = "ATmega1284"; + has_jtag = yes; + stk500_devcode = 0x82; # no STK500v1 support, use the ATmega16 one + avr910_devcode = 0x74; + signature = 0x1e 0x97 0x06; + pagel = 0xd7; + bs2 = 0xa0; + chip_erase_delay = 55000; + pgm_enable = "1 0 1 0 1 1 0 0 0 1 0 1 0 0 1 1", + "x x x x x x x x x x x x x x x x"; + + chip_erase = "1 0 1 0 1 1 0 0 1 0 0 x x x x x", + "x x x x x x x x x x x x x x x x"; + + timeout = 200; + stabdelay = 100; + cmdexedelay = 25; + synchloops = 32; + bytedelay = 0; + pollindex = 3; + pollvalue = 0x53; + predelay = 1; + postdelay = 1; + pollmethod = 1; + + pp_controlstack = + 0x0E, 0x1E, 0x0F, 0x1F, 0x2E, 0x3E, 0x2F, 0x3F, + 0x4E, 0x5E, 0x4F, 0x5F, 0x6E, 0x7E, 0x6F, 0x7F, + 0x66, 0x76, 0x67, 0x77, 0x6A, 0x7A, 0x6B, 0x7B, + 0xBE, 0xFD, 0x00, 0x01, 0x00, 0x00, 0x00, 0x02; + hventerstabdelay = 100; + progmodedelay = 0; + latchcycles = 6; + togglevtg = 1; + poweroffdelay = 15; + resetdelayms = 1; + resetdelayus = 0; + hvleavestabdelay = 15; + chiperasepulsewidth = 0; + chiperasepolltimeout = 10; + programfusepulsewidth = 0; + programfusepolltimeout = 5; + programlockpulsewidth = 0; + programlockpolltimeout = 5; + + idr = 0x31; + spmcr = 0x57; + allowfullpagebitstream = no; + + ocdrev = 3; + + memory "eeprom" + paged = no; /* leave this "no" */ + page_size = 8; /* for parallel programming */ + size = 4096; + min_write_delay = 9000; + max_write_delay = 9000; + readback_p1 = 0xff; + readback_p2 = 0xff; + read = " 1 0 1 0 0 0 0 0", + " 0 0 x x a11 a10 a9 a8", + " a7 a6 a5 a4 a3 a2 a1 a0", + " o o o o o o o o"; + + write = " 1 1 0 0 0 0 0 0", + " 0 0 x x a11 a10 a9 a8", + " a7 a6 a5 a4 a3 a2 a1 a0", + " i i i i i i i i"; + + loadpage_lo = " 1 1 0 0 0 0 0 1", + " 0 0 0 0 0 0 0 0", + " 0 0 0 0 0 a2 a1 a0", + " i i i i i i i i"; + + writepage = " 1 1 0 0 0 0 1 0", + " 0 0 x x a11 a10 a9 a8", + " a7 a6 a5 a4 a3 0 0 0", + " x x x x x x x x"; + + mode = 0x41; + delay = 10; + blocksize = 128; + readsize = 256; + ; + + memory "flash" + paged = yes; + size = 131072; + page_size = 256; + num_pages = 512; + min_write_delay = 4500; + max_write_delay = 4500; + readback_p1 = 0xff; + readback_p2 = 0xff; + read_lo = " 0 0 1 0 0 0 0 0", + "a15 a14 a13 a12 a11 a10 a9 a8", + " a7 a6 a5 a4 a3 a2 a1 a0", + " o o o o o o o o"; + + read_hi = " 0 0 1 0 1 0 0 0", + "a15 a14 a13 a12 a11 a10 a9 a8", + " a7 a6 a5 a4 a3 a2 a1 a0", + " o o o o o o o o"; + + loadpage_lo = " 0 1 0 0 0 0 0 0", + " 0 0 x x x x x x", + " x a6 a5 a4 a3 a2 a1 a0", + " i i i i i i i i"; + + loadpage_hi = " 0 1 0 0 1 0 0 0", + " 0 0 x x x x x x", + " x a6 a5 a4 a3 a2 a1 a0", + " i i i i i i i i"; + + writepage = " 0 1 0 0 1 1 0 0", + "a15 a14 a13 a12 a11 a10 a9 a8", + " a7 x x x x x x x", + " x x x x x x x x"; + + mode = 0x41; + delay = 10; + blocksize = 256; + readsize = 256; + ; + + memory "lock" + size = 1; + read = "0 1 0 1 1 0 0 0 0 0 0 0 0 0 0 0", + "x x x x x x x x x x o o o o o o"; + + write = "1 0 1 0 1 1 0 0 1 1 1 x x x x x", + "x x x x x x x x 1 1 i i i i i i"; + min_write_delay = 9000; + max_write_delay = 9000; + ; + + memory "lfuse" + size = 1; + read = "0 1 0 1 0 0 0 0 0 0 0 0 0 0 0 0", + "x x x x x x x x o o o o o o o o"; + + write = "1 0 1 0 1 1 0 0 1 0 1 0 0 0 0 0", + "x x x x x x x x i i i i i i i i"; + min_write_delay = 9000; + max_write_delay = 9000; + ; + + memory "hfuse" + size = 1; + read = "0 1 0 1 1 0 0 0 0 0 0 0 1 0 0 0", + "x x x x x x x x o o o o o o o o"; + + write = "1 0 1 0 1 1 0 0 1 0 1 0 1 0 0 0", + "x x x x x x x x i i i i i i i i"; + min_write_delay = 9000; + max_write_delay = 9000; + ; + + memory "efuse" + size = 1; + + read = "0 1 0 1 0 0 0 0 0 0 0 0 1 0 0 0", + "x x x x x x x x o o o o o o o o"; + + write = "1 0 1 0 1 1 0 0 1 0 1 0 0 1 0 0", + "x x x x x x x x 1 1 1 1 1 i i i"; + min_write_delay = 9000; + max_write_delay = 9000; + ; + + memory "signature" + size = 3; + read = "0 0 1 1 0 0 0 0 x x x x x x x x", + "x x x x x x a1 a0 o o o o o o o o"; + ; + + memory "calibration" + size = 1; + + read = "0 0 1 1 1 0 0 0 0 0 0 x x x x x", + "0 0 0 0 0 0 0 0 o o o o o o o o"; + ; + ; + + + +#------------------------------------------------------------ +# ATmega1284P +#------------------------------------------------------------ + +# similar to ATmega164p + +part + id = "m1284p"; + desc = "ATmega1284P"; + has_jtag = yes; + stk500_devcode = 0x82; # no STK500v1 support, use the ATmega16 one + avr910_devcode = 0x74; + signature = 0x1e 0x97 0x05; + pagel = 0xd7; + bs2 = 0xa0; + chip_erase_delay = 55000; + pgm_enable = "1 0 1 0 1 1 0 0 0 1 0 1 0 0 1 1", + "x x x x x x x x x x x x x x x x"; + + chip_erase = "1 0 1 0 1 1 0 0 1 0 0 x x x x x", + "x x x x x x x x x x x x x x x x"; + + timeout = 200; + stabdelay = 100; + cmdexedelay = 25; + synchloops = 32; + bytedelay = 0; + pollindex = 3; + pollvalue = 0x53; + predelay = 1; + postdelay = 1; + pollmethod = 1; + + pp_controlstack = + 0x0E, 0x1E, 0x0F, 0x1F, 0x2E, 0x3E, 0x2F, 0x3F, + 0x4E, 0x5E, 0x4F, 0x5F, 0x6E, 0x7E, 0x6F, 0x7F, + 0x66, 0x76, 0x67, 0x77, 0x6A, 0x7A, 0x6B, 0x7B, + 0xBE, 0xFD, 0x00, 0x01, 0x00, 0x00, 0x00, 0x02; + hventerstabdelay = 100; + progmodedelay = 0; + latchcycles = 6; + togglevtg = 1; + poweroffdelay = 15; + resetdelayms = 1; + resetdelayus = 0; + hvleavestabdelay = 15; + chiperasepulsewidth = 0; + chiperasepolltimeout = 10; + programfusepulsewidth = 0; + programfusepolltimeout = 5; + programlockpulsewidth = 0; + programlockpolltimeout = 5; + + idr = 0x31; + spmcr = 0x57; + allowfullpagebitstream = no; + + ocdrev = 3; + + memory "eeprom" + paged = no; /* leave this "no" */ + page_size = 8; /* for parallel programming */ + size = 4096; + min_write_delay = 9000; + max_write_delay = 9000; + readback_p1 = 0xff; + readback_p2 = 0xff; + read = " 1 0 1 0 0 0 0 0", + " 0 0 x x a11 a10 a9 a8", + " a7 a6 a5 a4 a3 a2 a1 a0", + " o o o o o o o o"; + + write = " 1 1 0 0 0 0 0 0", + " 0 0 x x a11 a10 a9 a8", + " a7 a6 a5 a4 a3 a2 a1 a0", + " i i i i i i i i"; + + loadpage_lo = " 1 1 0 0 0 0 0 1", + " 0 0 0 0 0 0 0 0", + " 0 0 0 0 0 a2 a1 a0", + " i i i i i i i i"; + + writepage = " 1 1 0 0 0 0 1 0", + " 0 0 x x a11 a10 a9 a8", + " a7 a6 a5 a4 a3 0 0 0", + " x x x x x x x x"; + + mode = 0x41; + delay = 10; + blocksize = 128; + readsize = 256; + ; + + memory "flash" + paged = yes; + size = 131072; + page_size = 256; + num_pages = 512; + min_write_delay = 4500; + max_write_delay = 4500; + readback_p1 = 0xff; + readback_p2 = 0xff; + read_lo = " 0 0 1 0 0 0 0 0", + "a15 a14 a13 a12 a11 a10 a9 a8", + " a7 a6 a5 a4 a3 a2 a1 a0", + " o o o o o o o o"; + + read_hi = " 0 0 1 0 1 0 0 0", + "a15 a14 a13 a12 a11 a10 a9 a8", + " a7 a6 a5 a4 a3 a2 a1 a0", + " o o o o o o o o"; + + loadpage_lo = " 0 1 0 0 0 0 0 0", + " 0 0 x x x x x x", + " x a6 a5 a4 a3 a2 a1 a0", + " i i i i i i i i"; + + loadpage_hi = " 0 1 0 0 1 0 0 0", + " 0 0 x x x x x x", + " x a6 a5 a4 a3 a2 a1 a0", + " i i i i i i i i"; + + writepage = " 0 1 0 0 1 1 0 0", + "a15 a14 a13 a12 a11 a10 a9 a8", + " a7 x x x x x x x", + " x x x x x x x x"; + + mode = 0x41; + delay = 10; + blocksize = 256; + readsize = 256; + ; + + memory "lock" + size = 1; + read = "0 1 0 1 1 0 0 0 0 0 0 0 0 0 0 0", + "x x x x x x x x x x o o o o o o"; + + write = "1 0 1 0 1 1 0 0 1 1 1 x x x x x", + "x x x x x x x x 1 1 i i i i i i"; + min_write_delay = 9000; + max_write_delay = 9000; + ; + + memory "lfuse" + size = 1; + read = "0 1 0 1 0 0 0 0 0 0 0 0 0 0 0 0", + "x x x x x x x x o o o o o o o o"; + + write = "1 0 1 0 1 1 0 0 1 0 1 0 0 0 0 0", + "x x x x x x x x i i i i i i i i"; + min_write_delay = 9000; + max_write_delay = 9000; + ; + + memory "hfuse" + size = 1; + read = "0 1 0 1 1 0 0 0 0 0 0 0 1 0 0 0", + "x x x x x x x x o o o o o o o o"; + + write = "1 0 1 0 1 1 0 0 1 0 1 0 1 0 0 0", + "x x x x x x x x i i i i i i i i"; + min_write_delay = 9000; + max_write_delay = 9000; + ; + + memory "efuse" + size = 1; + + read = "0 1 0 1 0 0 0 0 0 0 0 0 1 0 0 0", + "x x x x x x x x o o o o o o o o"; + + write = "1 0 1 0 1 1 0 0 1 0 1 0 0 1 0 0", + "x x x x x x x x 1 1 1 1 1 i i i"; + min_write_delay = 9000; + max_write_delay = 9000; + ; + + memory "signature" + size = 3; + read = "0 0 1 1 0 0 0 0 x x x x x x x x", + "x x x x x x a1 a0 o o o o o o o o"; + ; + + memory "calibration" + size = 1; + + read = "0 0 1 1 1 0 0 0 0 0 0 x x x x x", + "0 0 0 0 0 0 0 0 o o o o o o o o"; + ; + ; + + + +#------------------------------------------------------------ +# ATmega162 +#------------------------------------------------------------ + +part + id = "m162"; + desc = "ATmega162"; + has_jtag = yes; + stk500_devcode = 0x83; + avr910_devcode = 0x63; + signature = 0x1e 0x94 0x04; + chip_erase_delay = 9000; + pagel = 0xd7; + bs2 = 0xa0; + + idr = 0x04; + spmcr = 0x57; + allowfullpagebitstream = yes; + + pgm_enable = "1 0 1 0 1 1 0 0 0 1 0 1 0 0 1 1", + "x x x x x x x x x x x x x x x x"; + + chip_erase = "1 0 1 0 1 1 0 0 1 0 0 x x x x x", + "x x x x x x x x x x x x x x x x"; + + ocdrev = 2; + + memory "flash" + paged = yes; + size = 16384; + page_size = 128; + num_pages = 128; + min_write_delay = 4500; + max_write_delay = 4500; + readback_p1 = 0xff; + readback_p2 = 0xff; + + read_lo = " 0 0 1 0 0 0 0 0", + " 0 0 a13 a12 a11 a10 a9 a8", + " a7 a6 a5 a4 a3 a2 a1 a0", + " o o o o o o o o"; + + read_hi = " 0 0 1 0 1 0 0 0", + " 0 0 a13 a12 a11 a10 a9 a8", + " a7 a6 a5 a4 a3 a2 a1 a0", + " o o o o o o o o"; + + loadpage_lo = " 0 1 0 0 0 0 0 0", + " 0 0 x x x x x x", + " x x a5 a4 a3 a2 a1 a0", + " i i i i i i i i"; + + loadpage_hi = " 0 1 0 0 1 0 0 0", + " 0 0 x x x x x x", + " x x a5 a4 a3 a2 a1 a0", + " i i i i i i i i"; + + writepage = " 0 1 0 0 1 1 0 0", + " 0 0 a13 a12 a11 a10 a9 a8", + " a7 a6 x x x x x x", + " x x x x x x x x"; + mode = 0x41; + delay = 10; + blocksize = 128; + readsize = 256; + + ; + + timeout = 200; + stabdelay = 100; + cmdexedelay = 25; + synchloops = 32; + bytedelay = 0; + pollindex = 3; + pollvalue = 0x53; + predelay = 1; + postdelay = 1; + pollmethod = 0; + + pp_controlstack = + 0x0E, 0x1E, 0x0F, 0x1F, 0x2E, 0x3E, 0x2F, 0x3F, + 0x4E, 0x5E, 0x4F, 0x5F, 0x6E, 0x7E, 0x6F, 0x7F, + 0x66, 0x76, 0x67, 0x77, 0x6A, 0x7A, 0x6B, 0x7B, + 0xBE, 0xFD, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00; + hventerstabdelay = 100; + progmodedelay = 0; + latchcycles = 6; + togglevtg = 0; + poweroffdelay = 0; + resetdelayms = 0; + resetdelayus = 0; + hvleavestabdelay = 15; + chiperasepulsewidth = 0; + chiperasepolltimeout = 10; + programfusepulsewidth = 0; + programfusepolltimeout = 5; + programlockpulsewidth = 0; + programlockpolltimeout = 5; + + memory "eeprom" + paged = no; /* leave this "no" */ + page_size = 4; /* for parallel programming */ + size = 512; + min_write_delay = 9000; + max_write_delay = 9000; + readback_p1 = 0xff; + readback_p2 = 0xff; + + read = " 1 0 1 0 0 0 0 0", + " 0 0 x x x x a9 a8", + " a7 a6 a5 a4 a3 a2 a1 a0", + " o o o o o o o o"; + + write = " 1 1 0 0 0 0 0 0", + " 0 0 x x x x a9 a8", + " a7 a6 a5 a4 a3 a2 a1 a0", + " i i i i i i i i"; + + loadpage_lo = " 1 1 0 0 0 0 0 1", + " 0 0 0 0 0 0 0 0", + " 0 0 0 0 0 0 a1 a0", + " i i i i i i i i"; + + writepage = " 1 1 0 0 0 0 1 0", + " 0 0 x x x x a9 a8", + " a7 a6 a5 a4 a3 a2 0 0", + " x x x x x x x x"; + + mode = 0x41; + delay = 20; + blocksize = 4; + readsize = 256; + ; + + memory "lfuse" + size = 1; + min_write_delay = 16000; + max_write_delay = 16000; + read = "0 1 0 1 0 0 0 0 0 0 0 0 0 0 0 0", + "x x x x x x x x o o o o o o o o"; + + write = "1 0 1 0 1 1 0 0 1 0 1 0 0 0 0 0", + "x x x x x x x x i i i i i i i i"; + ; + + memory "hfuse" + size = 1; + min_write_delay = 16000; + max_write_delay = 16000; + + read = "0 1 0 1 1 0 0 0 0 0 0 0 1 0 0 0", + "x x x x x x x x o o o o o o o o"; + + write = "1 0 1 0 1 1 0 0 1 0 1 0 1 0 0 0", + "x x x x x x x x i i i i i i i i"; + ; + + memory "efuse" + size = 1; + min_write_delay = 16000; + max_write_delay = 16000; + + read = "0 1 0 1 0 0 0 0 0 0 0 0 1 0 0 0", + "x x x x x x x x o o o o o o o o"; + + write = "1 0 1 0 1 1 0 0 1 0 1 0 0 1 0 0", + "x x x x x x x x 1 1 1 1 1 i i i"; + ; + + memory "lock" + size = 1; + min_write_delay = 16000; + max_write_delay = 16000; + + read = "0 1 0 1 1 0 0 0 0 0 0 0 0 0 0 0", + "x x x x x x x x x x o o o o o o"; + + write = "1 0 1 0 1 1 0 0 1 1 1 x x x x x", + "x x x x x x x x 1 1 i i i i i i"; + ; + + memory "signature" + size = 3; + + read = "0 0 1 1 0 0 0 0 0 0 x x x x x x", + "x x x x x x a1 a0 o o o o o o o o"; + ; + + memory "calibration" + size = 1; + + read = "0 0 1 1 1 0 0 0 0 0 x x x x x x", + "0 0 0 0 0 0 0 0 o o o o o o o o"; + ; +; + + + +#------------------------------------------------------------ +# ATmega163 +#------------------------------------------------------------ + +part + id = "m163"; + desc = "ATmega163"; + stk500_devcode = 0x81; + avr910_devcode = 0x64; + signature = 0x1e 0x94 0x02; + chip_erase_delay = 32000; + pagel = 0xd7; + bs2 = 0xa0; + pgm_enable = "1 0 1 0 1 1 0 0 0 1 0 1 0 0 1 1", + "x x x x x x x x x x x x x x x x"; + + chip_erase = "1 0 1 0 1 1 0 0 1 0 0 0 0 0 0 0", + "x x x x x x x x x x x x x x x x"; + + timeout = 200; + stabdelay = 100; + cmdexedelay = 25; + synchloops = 32; + bytedelay = 0; + pollindex = 3; + pollvalue = 0x53; + predelay = 1; + postdelay = 1; + pollmethod = 0; + + pp_controlstack = + 0x0E, 0x1E, 0x0F, 0x1F, 0x2E, 0x3E, 0x2F, 0x3F, + 0x4E, 0x5E, 0x4F, 0x5F, 0x6E, 0x7E, 0x6F, 0x7F, + 0x66, 0x76, 0x67, 0x77, 0x6A, 0x7A, 0x6B, 0x7B, + 0xBE, 0xFD, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00; + hventerstabdelay = 100; + progmodedelay = 0; + latchcycles = 0; + togglevtg = 0; + poweroffdelay = 0; + resetdelayms = 0; + resetdelayus = 0; + hvleavestabdelay = 15; + chiperasepulsewidth = 0; + chiperasepolltimeout = 30; + programfusepulsewidth = 0; + programfusepolltimeout = 2; + programlockpulsewidth = 0; + programlockpolltimeout = 2; + + + memory "eeprom" + size = 512; + min_write_delay = 4000; + max_write_delay = 4000; + readback_p1 = 0xff; + readback_p2 = 0xff; + read = " 1 0 1 0 0 0 0 0", + " x x x x x x x a8", + " a7 a6 a5 a4 a3 a2 a1 a0", + " o o o o o o o o"; + + write = " 1 1 0 0 0 0 0 0", + " x x x x x x x a8", + " a7 a6 a5 a4 a3 a2 a1 a0", + " i i i i i i i i"; + mode = 0x41; + delay = 20; + blocksize = 4; + readsize = 256; + ; + + memory "flash" + paged = yes; + size = 16384; + page_size = 128; + num_pages = 128; + min_write_delay = 16000; + max_write_delay = 16000; + readback_p1 = 0xff; + readback_p2 = 0xff; + read_lo = " 0 0 1 0 0 0 0 0", + " x x x a12 a11 a10 a9 a8", + " a7 a6 a5 a4 a3 a2 a1 a0", + " o o o o o o o o"; + + read_hi = " 0 0 1 0 1 0 0 0", + " x x x a12 a11 a10 a9 a8", + " a7 a6 a5 a4 a3 a2 a1 a0", + " o o o o o o o o"; + + loadpage_lo = " 0 1 0 0 0 0 0 0", + " x x x x x x x x", + " x x a5 a4 a3 a2 a1 a0", + " i i i i i i i i"; + + loadpage_hi = " 0 1 0 0 1 0 0 0", + " x x x x x x x x", + " x x a5 a4 a3 a2 a1 a0", + " i i i i i i i i"; + + writepage = " 0 1 0 0 1 1 0 0", + " x x x a12 a11 a10 a9 a8", + " a7 a6 x x x x x x", + " x x x x x x x x"; + + mode = 0x11; + delay = 20; + blocksize = 128; + readsize = 256; + ; + + memory "lfuse" + size = 1; + min_write_delay = 2000; + max_write_delay = 2000; + read = "0 1 0 1 0 0 0 0 0 0 0 0 0 0 0 0", + "x x x x x x x x o o x x o o o o"; + + write = "1 0 1 0 1 1 0 0 1 0 1 0 0 0 0 0", + "x x x x x x x x i i 1 1 i i i i"; + ; + + memory "hfuse" + size = 1; + min_write_delay = 2000; + max_write_delay = 2000; + read = "0 1 0 1 1 0 0 0 0 0 0 0 1 0 0 0", + "x x x x x x x x x x x x 1 o o o"; + + write = "1 0 1 0 1 1 0 0 1 0 1 0 1 0 0 0", + "x x x x x x x x 1 1 1 1 1 i i i"; + ; + + memory "lock" + size = 1; + min_write_delay = 2000; + max_write_delay = 2000; + read = "0 1 0 1 1 0 0 0 0 0 0 0 0 0 0 0", + "x x x x 0 x x x x x o o o o o o"; + + write = "1 0 1 0 1 1 0 0 1 1 1 x x x x x", + "x x x x x x x x 1 1 i i i i i i"; + ; + + memory "signature" + size = 3; + read = "0 0 1 1 0 0 0 0 x x x x x x x x", + "x x x x x x a1 a0 o o o o o o o o"; + ; + + memory "calibration" + size = 1; + read = "0 0 1 1 1 0 0 0 x x x x x x x x", + "0 0 0 0 0 0 0 0 o o o o o o o o"; + ; + ; + +#------------------------------------------------------------ +# ATmega169 +#------------------------------------------------------------ + +part + id = "m169"; + desc = "ATmega169"; + has_jtag = yes; + stk500_devcode = 0x85; + avr910_devcode = 0x78; + signature = 0x1e 0x94 0x05; + chip_erase_delay = 9000; + pgm_enable = "1 0 1 0 1 1 0 0 0 1 0 1 0 0 1 1", + "x x x x x x x x x x x x x x x x"; + + chip_erase = "1 0 1 0 1 1 0 0 1 0 0 0 0 0 0 0", + "x x x x x x x x x x x x x x x x"; + timeout = 200; + stabdelay = 100; + cmdexedelay = 25; + synchloops = 32; + bytedelay = 0; + pollindex = 3; + pollvalue = 0x53; + predelay = 1; + postdelay = 1; + pollmethod = 1; + + pp_controlstack = + 0x0E, 0x1E, 0x0F, 0x1F, 0x2E, 0x3E, 0x2F, 0x3F, + 0x4E, 0x5E, 0x4F, 0x5F, 0x6E, 0x7E, 0x6F, 0x7F, + 0x66, 0x76, 0x67, 0x77, 0x6A, 0x7A, 0x6B, 0x7B, + 0xBE, 0xFD, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00; + hventerstabdelay = 100; + progmodedelay = 0; + latchcycles = 5; + togglevtg = 1; + poweroffdelay = 15; + resetdelayms = 1; + resetdelayus = 0; + hvleavestabdelay = 15; + chiperasepulsewidth = 0; + chiperasepolltimeout = 10; + programfusepulsewidth = 0; + programfusepolltimeout = 5; + programlockpulsewidth = 0; + programlockpolltimeout = 5; + + idr = 0x31; + spmcr = 0x57; + + ocdrev = 2; + + memory "eeprom" + paged = no; /* leave this "no" */ + page_size = 4; /* for parallel programming */ + size = 512; + min_write_delay = 9000; + max_write_delay = 9000; + readback_p1 = 0xff; + readback_p2 = 0xff; + read = " 1 0 1 0 0 0 0 0", + " x x x x x x x a8", + " a7 a6 a5 a4 a3 a2 a1 a0", + " o o o o o o o o"; + + write = " 1 1 0 0 0 0 0 0", + " x x x x x x x a8", + " a7 a6 a5 a4 a3 a2 a1 a0", + " i i i i i i i i"; + + loadpage_lo = " 1 1 0 0 0 0 0 1", + " 0 0 0 0 0 0 0 0", + " 0 0 0 0 0 0 a1 a0", + " i i i i i i i i"; + + writepage = " 1 1 0 0 0 0 1 0", + " 0 0 x x x x x a8", + " a7 a6 a5 a4 a3 a2 0 0", + " x x x x x x x x"; + + mode = 0x41; + delay = 20; + blocksize = 4; + readsize = 256; + ; + + memory "flash" + paged = yes; + size = 16384; + page_size = 128; + num_pages = 128; + min_write_delay = 4500; + max_write_delay = 4500; + readback_p1 = 0xff; + readback_p2 = 0xff; + read_lo = " 0 0 1 0 0 0 0 0", + " x x x a12 a11 a10 a9 a8", + " a7 a6 a5 a4 a3 a2 a1 a0", + " o o o o o o o o"; + + read_hi = " 0 0 1 0 1 0 0 0", + " x x x a12 a11 a10 a9 a8", + " a7 a6 a5 a4 a3 a2 a1 a0", + " o o o o o o o o"; + + loadpage_lo = " 0 1 0 0 0 0 0 0", + " x x x x x x x x", + " x x a5 a4 a3 a2 a1 a0", + " i i i i i i i i"; + + loadpage_hi = " 0 1 0 0 1 0 0 0", + " x x x x x x x x", + " x x a5 a4 a3 a2 a1 a0", + " i i i i i i i i"; + + writepage = " 0 1 0 0 1 1 0 0", + " x x x a12 a11 a10 a9 a8", + " a7 a6 x x x x x x", + " x x x x x x x x"; + + mode = 0x41; + delay = 6; + blocksize = 128; + readsize = 256; + ; + + memory "lfuse" + size = 1; + min_write_delay = 2000; + max_write_delay = 2000; + read = "0 1 0 1 0 0 0 0 0 0 0 0 0 0 0 0", + "x x x x x x x x o o o o o o o o"; + + write = "1 0 1 0 1 1 0 0 1 0 1 0 0 0 0 0", + "x x x x x x x x i i i i i i i i"; + ; + + memory "hfuse" + size = 1; + min_write_delay = 2000; + max_write_delay = 2000; + read = "0 1 0 1 1 0 0 0 0 0 0 0 1 0 0 0", + "x x x x x x x x o o o o o o o o"; + + write = "1 0 1 0 1 1 0 0 1 0 1 0 1 0 0 0", + "x x x x x x x x i i i i i i i i"; + ; + + memory "efuse" + size = 1; + write = "1 0 1 0 1 1 0 0 1 0 1 0 0 1 0 0", + "x x x x x x x x x x x x i i i i"; + + read = "0 1 0 1 0 0 0 0 0 0 0 0 1 0 0 0", + "x x x x x x x x o o o o o o o o"; + ; + + memory "lock" + size = 1; + min_write_delay = 2000; + max_write_delay = 2000; + read = "0 1 0 1 1 0 0 0 0 0 0 0 0 0 0 0", + "x x x x x x x x x x o o o o o o"; + + write = "1 0 1 0 1 1 0 0 1 1 1 x x x x x", + "x x x x x x x x 1 1 i i i i i i"; + ; + + memory "signature" + size = 3; + read = "0 0 1 1 0 0 0 0 0 0 0 x x x x x", + "x x x x x x a1 a0 o o o o o o o o"; + ; + + memory "calibration" + size = 1; + read = "0 0 1 1 1 0 0 0 0 0 0 x x x x x", + "0 0 0 0 0 0 0 0 o o o o o o o o"; + ; + ; + +#------------------------------------------------------------ +# ATmega329 +#------------------------------------------------------------ + +part + id = "m329"; + desc = "ATmega329"; + has_jtag = yes; +# stk500_devcode = 0x85; # no STK500 support, only STK500v2 +# avr910_devcode = 0x?; # try the ATmega169 one: + avr910_devcode = 0x75; + signature = 0x1e 0x95 0x03; + chip_erase_delay = 9000; + pgm_enable = "1 0 1 0 1 1 0 0 0 1 0 1 0 0 1 1", + "x x x x x x x x x x x x x x x x"; + + chip_erase = "1 0 1 0 1 1 0 0 1 0 0 0 0 0 0 0", + "x x x x x x x x x x x x x x x x"; + timeout = 200; + stabdelay = 100; + cmdexedelay = 25; + synchloops = 32; + bytedelay = 0; + pollindex = 3; + pollvalue = 0x53; + predelay = 1; + postdelay = 1; + pollmethod = 1; + + pp_controlstack = + 0x0E, 0x1E, 0x0F, 0x1F, 0x2E, 0x3E, 0x2F, 0x3F, + 0x4E, 0x5E, 0x4F, 0x5F, 0x6E, 0x7E, 0x6F, 0x7F, + 0x66, 0x76, 0x67, 0x77, 0x6A, 0x7A, 0x6B, 0x7B, + 0xBE, 0xFD, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00; + hventerstabdelay = 100; + progmodedelay = 0; + latchcycles = 5; + togglevtg = 1; + poweroffdelay = 15; + resetdelayms = 1; + resetdelayus = 0; + hvleavestabdelay = 15; + chiperasepulsewidth = 0; + chiperasepolltimeout = 10; + programfusepulsewidth = 0; + programfusepolltimeout = 5; + programlockpulsewidth = 0; + programlockpolltimeout = 5; + + idr = 0x31; + spmcr = 0x57; + + ocdrev = 3; + + memory "eeprom" + paged = no; /* leave this "no" */ + page_size = 4; /* for parallel programming */ + size = 1024; + min_write_delay = 9000; + max_write_delay = 9000; + readback_p1 = 0xff; + readback_p2 = 0xff; + read = " 1 0 1 0 0 0 0 0", + " x x x x x x a9 a8", + " a7 a6 a5 a4 a3 a2 a1 a0", + " o o o o o o o o"; + + write = " 1 1 0 0 0 0 0 0", + " x x x x x x a9 a8", + " a7 a6 a5 a4 a3 a2 a1 a0", + " i i i i i i i i"; + + loadpage_lo = " 1 1 0 0 0 0 0 1", + " 0 0 0 0 0 0 0 0", + " 0 0 0 0 0 0 a1 a0", + " i i i i i i i i"; + + writepage = " 1 1 0 0 0 0 1 0", + " 0 0 x x x x a9 a8", + " a7 a6 a5 a4 a3 a2 0 0", + " x x x x x x x x"; + + mode = 0x41; + delay = 20; + blocksize = 8; + readsize = 256; + ; + + memory "flash" + paged = yes; + size = 32768; + page_size = 128; + num_pages = 256; + min_write_delay = 4500; + max_write_delay = 4500; + readback_p1 = 0xff; + readback_p2 = 0xff; + read_lo = " 0 0 1 0 0 0 0 0", + " x a14 a13 a12 a11 a10 a9 a8", + " a7 a6 a5 a4 a3 a2 a1 a0", + " o o o o o o o o"; + + read_hi = " 0 0 1 0 1 0 0 0", + " x a14 a13 a12 a11 a10 a9 a8", + " a7 a6 a5 a4 a3 a2 a1 a0", + " o o o o o o o o"; + + loadpage_lo = " 0 1 0 0 0 0 0 0", + " x x x x x x x x", + " x x a5 a4 a3 a2 a1 a0", + " i i i i i i i i"; + + loadpage_hi = " 0 1 0 0 1 0 0 0", + " x x x x x x x x", + " x x a5 a4 a3 a2 a1 a0", + " i i i i i i i i"; + + writepage = " 0 1 0 0 1 1 0 0", + " x x x a12 a11 a10 a9 a8", + " a7 a6 x x x x x x", + " x x x x x x x x"; + + mode = 0x41; + delay = 6; + blocksize = 256; + readsize = 256; + ; + + memory "lfuse" + size = 1; + min_write_delay = 4500; + max_write_delay = 4500; + read = "0 1 0 1 0 0 0 0 0 0 0 0 0 0 0 0", + "x x x x x x x x o o o o o o o o"; + + write = "1 0 1 0 1 1 0 0 1 0 1 0 0 0 0 0", + "x x x x x x x x i i i i i i i i"; + ; + + memory "hfuse" + size = 1; + min_write_delay = 4500; + max_write_delay = 4500; + read = "0 1 0 1 1 0 0 0 0 0 0 0 1 0 0 0", + "x x x x x x x x o o o o o o o o"; + + write = "1 0 1 0 1 1 0 0 1 0 1 0 1 0 0 0", + "x x x x x x x x i i i i i i i i"; + ; + + memory "efuse" + size = 1; + min_write_delay = 4500; + max_write_delay = 4500; + read = "0 1 0 1 0 0 0 0 0 0 0 0 1 0 0 0", + "x x x x x x x x o o o o o o o o"; + + write = "1 0 1 0 1 1 0 0 1 0 1 0 0 1 0 0", + "x x x x x x x x x x x x x i i i"; + ; + + memory "lock" + size = 1; + min_write_delay = 4500; + max_write_delay = 4500; + read = "0 1 0 1 1 0 0 0 0 0 0 0 0 0 0 0", + "x x x x x x x x x x o o o o o o"; + + write = "1 0 1 0 1 1 0 0 1 1 1 x x x x x", + "x x x x x x x x 1 1 i i i i i i"; + ; + + memory "signature" + size = 3; + read = "0 0 1 1 0 0 0 0 0 0 0 x x x x x", + "x x x x x x a1 a0 o o o o o o o o"; + ; + + memory "calibration" + size = 1; + read = "0 0 1 1 1 0 0 0 0 0 0 x x x x x", + "0 0 0 0 0 0 0 0 o o o o o o o o"; + ; + ; + +#------------------------------------------------------------ +# ATmega329P +#------------------------------------------------------------ +# Identical to ATmega329 except of the signature + +part parent "m329" + id = "m329p"; + desc = "ATmega329P"; + signature = 0x1e 0x95 0x0b; + + ocdrev = 3; + ; + +#------------------------------------------------------------ +# ATmega3290 +#------------------------------------------------------------ + +# identical to ATmega329 + +part parent "m329" + id = "m3290"; + desc = "ATmega3290"; + signature = 0x1e 0x95 0x04; + + ocdrev = 3; + ; + +#------------------------------------------------------------ +# ATmega3290P +#------------------------------------------------------------ + +# identical to ATmega3290 except of the signature + +part parent "m3290" + id = "m3290p"; + desc = "ATmega3290P"; + signature = 0x1e 0x95 0x0c; + + ocdrev = 3; + ; + +#------------------------------------------------------------ +# ATmega649 +#------------------------------------------------------------ + +part + id = "m649"; + desc = "ATmega649"; + has_jtag = yes; +# stk500_devcode = 0x85; # no STK500 support, only STK500v2 +# avr910_devcode = 0x?; # try the ATmega169 one: + avr910_devcode = 0x75; + signature = 0x1e 0x96 0x03; + chip_erase_delay = 9000; + pgm_enable = "1 0 1 0 1 1 0 0 0 1 0 1 0 0 1 1", + "x x x x x x x x x x x x x x x x"; + + chip_erase = "1 0 1 0 1 1 0 0 1 0 0 0 0 0 0 0", + "x x x x x x x x x x x x x x x x"; + timeout = 200; + stabdelay = 100; + cmdexedelay = 25; + synchloops = 32; + bytedelay = 0; + pollindex = 3; + pollvalue = 0x53; + predelay = 1; + postdelay = 1; + pollmethod = 1; + + pp_controlstack = + 0x0E, 0x1E, 0x0F, 0x1F, 0x2E, 0x3E, 0x2F, 0x3F, + 0x4E, 0x5E, 0x4F, 0x5F, 0x6E, 0x7E, 0x6F, 0x7F, + 0x66, 0x76, 0x67, 0x77, 0x6A, 0x7A, 0x6B, 0x7B, + 0xBE, 0xFD, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00; + hventerstabdelay = 100; + progmodedelay = 0; + latchcycles = 5; + togglevtg = 1; + poweroffdelay = 15; + resetdelayms = 1; + resetdelayus = 0; + hvleavestabdelay = 15; + chiperasepulsewidth = 0; + chiperasepolltimeout = 10; + programfusepulsewidth = 0; + programfusepolltimeout = 5; + programlockpulsewidth = 0; + programlockpolltimeout = 5; + + idr = 0x31; + spmcr = 0x57; + + ocdrev = 3; + + memory "eeprom" + paged = no; /* leave this "no" */ + page_size = 8; /* for parallel programming */ + size = 2048; + min_write_delay = 9000; + max_write_delay = 9000; + readback_p1 = 0xff; + readback_p2 = 0xff; + read = " 1 0 1 0 0 0 0 0", + " x x x x x a10 a9 a8", + " a7 a6 a5 a4 a3 a2 a1 a0", + " o o o o o o o o"; + + write = " 1 1 0 0 0 0 0 0", + " x x x x x a10 a9 a8", + " a7 a6 a5 a4 a3 a2 a1 a0", + " i i i i i i i i"; + + loadpage_lo = " 1 1 0 0 0 0 0 1", + " 0 0 0 0 0 0 0 0", + " 0 0 0 0 0 a2 a1 a0", + " i i i i i i i i"; + + writepage = " 1 1 0 0 0 0 1 0", + " 0 0 x x x a10 a9 a8", + " a7 a6 a5 a4 a3 0 0 0", + " x x x x x x x x"; + + mode = 0x41; + delay = 20; + blocksize = 8; + readsize = 256; + ; + + memory "flash" + paged = yes; + size = 65536; + page_size = 256; + num_pages = 256; + min_write_delay = 4500; + max_write_delay = 4500; + readback_p1 = 0xff; + readback_p2 = 0xff; + read_lo = " 0 0 1 0 0 0 0 0", + "a15 a14 a13 a12 a11 a10 a9 a8", + " a7 a6 a5 a4 a3 a2 a1 a0", + " o o o o o o o o"; + + read_hi = " 0 0 1 0 1 0 0 0", + "a15 a14 a13 a12 a11 a10 a9 a8", + " a7 a6 a5 a4 a3 a2 a1 a0", + " o o o o o o o o"; + + loadpage_lo = " 0 1 0 0 0 0 0 0", + " x x x x x x x x", + " x a6 a5 a4 a3 a2 a1 a0", + " i i i i i i i i"; + + loadpage_hi = " 0 1 0 0 1 0 0 0", + " x x x x x x x x", + " x a6 a5 a4 a3 a2 a1 a0", + " i i i i i i i i"; + + writepage = " 0 1 0 0 1 1 0 0", + " x x x a12 a11 a10 a9 a8", + " a7 x x x x x x x", + " x x x x x x x x"; + + mode = 0x41; + delay = 6; + blocksize = 256; + readsize = 256; + ; + + memory "lfuse" + size = 1; + min_write_delay = 4500; + max_write_delay = 4500; + read = "0 1 0 1 0 0 0 0 0 0 0 0 0 0 0 0", + "x x x x x x x x o o o o o o o o"; + + write = "1 0 1 0 1 1 0 0 1 0 1 0 0 0 0 0", + "x x x x x x x x i i i i i i i i"; + ; + + memory "hfuse" + size = 1; + min_write_delay = 4500; + max_write_delay = 4500; + read = "0 1 0 1 1 0 0 0 0 0 0 0 1 0 0 0", + "x x x x x x x x o o o o o o o o"; + + write = "1 0 1 0 1 1 0 0 1 0 1 0 1 0 0 0", + "x x x x x x x x i i i i i i i i"; + ; + + memory "efuse" + size = 1; + min_write_delay = 4500; + max_write_delay = 4500; + read = "0 1 0 1 0 0 0 0 0 0 0 0 1 0 0 0", + "x x x x x x x x o o o o o o o o"; + + write = "1 0 1 0 1 1 0 0 1 0 1 0 0 1 0 0", + "x x x x x x x x x x x x x i i i"; + ; + + memory "lock" + size = 1; + min_write_delay = 4500; + max_write_delay = 4500; + read = "0 1 0 1 1 0 0 0 0 0 0 0 0 0 0 0", + "x x x x x x x x x x o o o o o o"; + + write = "1 0 1 0 1 1 0 0 1 1 1 x x x x x", + "x x x x x x x x 1 1 i i i i i i"; + ; + + memory "signature" + size = 3; + read = "0 0 1 1 0 0 0 0 0 0 0 x x x x x", + "x x x x x x a1 a0 o o o o o o o o"; + ; + + memory "calibration" + size = 1; + read = "0 0 1 1 1 0 0 0 0 0 0 x x x x x", + "0 0 0 0 0 0 0 0 o o o o o o o o"; + ; + ; + +#------------------------------------------------------------ +# ATmega6490 +#------------------------------------------------------------ + +# identical to ATmega649 + +part parent "m649" + id = "m6490"; + desc = "ATmega6490"; + signature = 0x1e 0x96 0x04; + + ocdrev = 3; + ; + +#------------------------------------------------------------ +# ATmega32 +#------------------------------------------------------------ + +part + id = "m32"; + desc = "ATmega32"; + has_jtag = yes; + stk500_devcode = 0x91; + avr910_devcode = 0x72; + signature = 0x1e 0x95 0x02; + chip_erase_delay = 9000; + pagel = 0xd7; + bs2 = 0xa0; + reset = dedicated; + pgm_enable = "1 0 1 0 1 1 0 0 0 1 0 1 0 0 1 1", + "x x x x x x x x x x x x x x x x"; + + chip_erase = "1 0 1 0 1 1 0 0 1 0 0 0 0 0 0 0", + "x x x x x x x x x x x x x x x x"; + timeout = 200; + stabdelay = 100; + cmdexedelay = 25; + synchloops = 32; + bytedelay = 0; + pollindex = 3; + pollvalue = 0x53; + predelay = 1; + postdelay = 1; + pollmethod = 0; + + pp_controlstack = + 0x0E, 0x1E, 0x0F, 0x1F, 0x2E, 0x3E, 0x2F, 0x3F, + 0x4E, 0x5E, 0x4F, 0x5F, 0x6E, 0x7E, 0x6F, 0x7F, + 0x66, 0x76, 0x67, 0x77, 0x6A, 0x7A, 0x6B, 0x7B, + 0xBE, 0xFD, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00; + hventerstabdelay = 100; + progmodedelay = 0; + latchcycles = 6; + togglevtg = 0; + poweroffdelay = 0; + resetdelayms = 0; + resetdelayus = 0; + hvleavestabdelay = 15; + chiperasepulsewidth = 0; + chiperasepolltimeout = 10; + programfusepulsewidth = 0; + programfusepolltimeout = 5; + programlockpulsewidth = 0; + programlockpolltimeout = 5; + + idr = 0x31; + spmcr = 0x57; + allowfullpagebitstream = yes; + + ocdrev = 2; + + memory "eeprom" + paged = no; /* leave this "no" */ + page_size = 4; /* for parallel programming */ + size = 1024; + min_write_delay = 9000; + max_write_delay = 9000; + readback_p1 = 0xff; + readback_p2 = 0xff; + read = " 1 0 1 0 0 0 0 0", + " 0 0 x x x x a9 a8", + " a7 a6 a5 a4 a3 a2 a1 a0", + " o o o o o o o o"; + + write = " 1 1 0 0 0 0 0 0", + " 0 0 x x x x a9 a8", + " a7 a6 a5 a4 a3 a2 a1 a0", + " i i i i i i i i"; + + loadpage_lo = " 1 1 0 0 0 0 0 1", + " 0 0 0 0 0 0 0 0", + " 0 0 0 0 0 0 a1 a0", + " i i i i i i i i"; + + writepage = " 1 1 0 0 0 0 1 0", + " 0 0 x x x x a9 a8", + " a7 a6 a5 a4 a3 a2 0 0", + " x x x x x x x x"; + + mode = 0x04; + delay = 10; + blocksize = 64; + readsize = 256; + ; + + memory "flash" + paged = yes; + size = 32768; + page_size = 128; + num_pages = 256; + min_write_delay = 4500; + max_write_delay = 4500; + readback_p1 = 0xff; + readback_p2 = 0xff; + read_lo = " 0 0 1 0 0 0 0 0", + " 0 0 a13 a12 a11 a10 a9 a8", + " a7 a6 a5 a4 a3 a2 a1 a0", + " o o o o o o o o"; + + read_hi = " 0 0 1 0 1 0 0 0", + " 0 0 a13 a12 a11 a10 a9 a8", + " a7 a6 a5 a4 a3 a2 a1 a0", + " o o o o o o o o"; + + loadpage_lo = " 0 1 0 0 0 0 0 0", + " 0 0 x x x x x x", + " x x a5 a4 a3 a2 a1 a0", + " i i i i i i i i"; + + loadpage_hi = " 0 1 0 0 1 0 0 0", + " 0 0 x x x x x x", + " x x a5 a4 a3 a2 a1 a0", + " i i i i i i i i"; + + writepage = " 0 1 0 0 1 1 0 0", + " 0 0 a13 a12 a11 a10 a9 a8", + " a7 a6 x x x x x x", + " x x x x x x x x"; + + mode = 0x21; + delay = 6; + blocksize = 64; + readsize = 256; + ; + + memory "lfuse" + size = 1; + min_write_delay = 2000; + max_write_delay = 2000; + read = "0 1 0 1 0 0 0 0 0 0 0 0 0 0 0 0", + "x x x x x x x x o o o o o o o o"; + + write = "1 0 1 0 1 1 0 0 1 0 1 0 0 0 0 0", + "x x x x x x x x i i i i i i i i"; + ; + + memory "hfuse" + size = 1; + min_write_delay = 2000; + max_write_delay = 2000; + read = "0 1 0 1 1 0 0 0 0 0 0 0 1 0 0 0", + "x x x x x x x x o o o o o o o o"; + + write = "1 0 1 0 1 1 0 0 1 0 1 0 1 0 0 0", + "x x x x x x x x i i i i i i i i"; + ; + + memory "lock" + size = 1; + min_write_delay = 2000; + max_write_delay = 2000; + read = "0 1 0 1 1 0 0 0 0 0 0 0 0 0 0 0", + "x x x x x x x x x x o o o o o o"; + + write = "1 0 1 0 1 1 0 0 1 1 1 x x x x x", + "x x x x x x x x 1 1 i i i i i i"; + ; + + memory "signature" + size = 3; + read = "0 0 1 1 0 0 0 0 x x x x x x x x", + "x x x x x x a1 a0 o o o o o o o o"; + ; + + memory "calibration" + size = 4; + read = "0 0 1 1 1 0 0 0 0 0 x x x x x x", + "0 0 0 0 0 0 a1 a0 o o o o o o o o"; + ; + ; + +#------------------------------------------------------------ +# ATmega161 +#------------------------------------------------------------ + +part + id = "m161"; + desc = "ATmega161"; + stk500_devcode = 0x80; + avr910_devcode = 0x60; + signature = 0x1e 0x94 0x01; + chip_erase_delay = 28000; + pagel = 0xd7; + bs2 = 0xa0; + pgm_enable = "1 0 1 0 1 1 0 0 0 1 0 1 0 0 1 1", + "x x x x x x x x x x x x x x x x"; + + chip_erase = "1 0 1 0 1 1 0 0 1 0 0 0 0 0 0 0", + "x x x x x x x x x x x x x x x x"; + timeout = 200; + stabdelay = 100; + cmdexedelay = 25; + synchloops = 32; + bytedelay = 0; + pollindex = 3; + pollvalue = 0x53; + predelay = 1; + postdelay = 1; + pollmethod = 0; + + pp_controlstack = + 0x0E, 0x1E, 0x0F, 0x1F, 0x2E, 0x3E, 0x2F, 0x3F, + 0x4E, 0x5E, 0x4F, 0x5F, 0x6E, 0x7E, 0x6F, 0x7F, + 0x66, 0x76, 0x67, 0x77, 0x6A, 0x7A, 0x6B, 0x7B, + 0xBE, 0xFD, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00; + hventerstabdelay = 100; + progmodedelay = 0; + latchcycles = 0; + togglevtg = 0; + poweroffdelay = 0; + resetdelayms = 0; + resetdelayus = 0; + hvleavestabdelay = 15; + chiperasepulsewidth = 0; + chiperasepolltimeout = 30; + programfusepulsewidth = 0; + programfusepolltimeout = 2; + programlockpulsewidth = 0; + programlockpolltimeout = 2; + + memory "eeprom" + size = 512; + min_write_delay = 3400; + max_write_delay = 3400; + readback_p1 = 0xff; + readback_p2 = 0xff; + read = " 1 0 1 0 0 0 0 0", + " x x x x x x x a8", + " a7 a6 a5 a4 a3 a2 a1 a0", + " o o o o o o o o"; + + write = " 1 1 0 0 0 0 0 0", + " x x x x x x x a8", + " a7 a6 a5 a4 a3 a2 a1 a0", + " i i i i i i i i"; + + mode = 0x04; + delay = 5; + blocksize = 128; + readsize = 256; + ; + + memory "flash" + paged = yes; + size = 16384; + page_size = 128; + num_pages = 128; + min_write_delay = 14000; + max_write_delay = 14000; + readback_p1 = 0xff; + readback_p2 = 0xff; + read_lo = " 0 0 1 0 0 0 0 0", + " x x x a12 a11 a10 a9 a8", + " a7 a6 a5 a4 a3 a2 a1 a0", + " o o o o o o o o"; + + read_hi = " 0 0 1 0 1 0 0 0", + " x x x a12 a11 a10 a9 a8", + " a7 a6 a5 a4 a3 a2 a1 a0", + " o o o o o o o o"; + + loadpage_lo = " 0 1 0 0 0 0 0 0", + " x x x x x x x x", + " x x a5 a4 a3 a2 a1 a0", + " i i i i i i i i"; + + loadpage_hi = " 0 1 0 0 1 0 0 0", + " x x x x x x x x", + " x x a5 a4 a3 a2 a1 a0", + " i i i i i i i i"; + + writepage = " 0 1 0 0 1 1 0 0", + " x x x a12 a11 a10 a9 a8", + " a7 a6 x x x x x x", + " x x x x x x x x"; + + mode = 0x21; + delay = 16; + blocksize = 128; + readsize = 256; + ; + + memory "fuse" + size = 1; + min_write_delay = 2000; + max_write_delay = 2000; + read = "0 1 0 1 0 0 0 0 x x x x x x x x", + "x x x x x x x x x o x o o o o o"; + + write = "1 0 1 0 1 1 0 0 1 0 1 x x x x x", + "x x x x x x x x 1 i 1 i i i i i"; + ; + + memory "lock" + size = 1; + min_write_delay = 2000; + max_write_delay = 2000; + read = "0 1 0 1 1 0 0 0 0 0 0 0 0 0 0 0", + "x x x x x x x x x x o o o o o o"; + + write = "1 0 1 0 1 1 0 0 1 1 1 x x x x x", + "x x x x x x x x 1 1 i i i i i i"; + ; + memory "signature" + size = 3; + read = "0 0 1 1 0 0 0 0 x x x x x x x x", + "x x x x x x a1 a0 o o o o o o o o"; + ; + ; + + +#------------------------------------------------------------ +# ATmega8 +#------------------------------------------------------------ + +part + id = "m8"; + desc = "ATmega8"; + stk500_devcode = 0x70; + avr910_devcode = 0x76; + signature = 0x1e 0x93 0x07; + pagel = 0xd7; + bs2 = 0xc2; + chip_erase_delay = 10000; + pgm_enable = "1 0 1 0 1 1 0 0 0 1 0 1 0 0 1 1", + "x x x x x x x x x x x x x x x x"; + + chip_erase = "1 0 1 0 1 1 0 0 1 0 0 x x x x x", + "x x x x x x x x x x x x x x x x"; + + timeout = 200; + stabdelay = 100; + cmdexedelay = 25; + synchloops = 32; + bytedelay = 0; + pollindex = 3; + pollvalue = 0x53; + predelay = 1; + postdelay = 1; + pollmethod = 0; + + pp_controlstack = + 0x0E, 0x1E, 0x0F, 0x1F, 0x2E, 0x3E, 0x2F, 0x3F, + 0x4E, 0x5E, 0x4F, 0x5F, 0x6E, 0x7E, 0x6F, 0x7F, + 0x66, 0x76, 0x67, 0x77, 0x6A, 0x7A, 0x6B, 0x7B, + 0xBE, 0xFD, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00; + hventerstabdelay = 100; + progmodedelay = 0; + latchcycles = 5; + togglevtg = 1; + poweroffdelay = 15; + resetdelayms = 2; + resetdelayus = 0; + hvleavestabdelay = 15; + resetdelay = 15; + chiperasepulsewidth = 0; + chiperasepolltimeout = 10; + programfusepulsewidth = 0; + programfusepolltimeout = 5; + programlockpulsewidth = 0; + programlockpolltimeout = 5; + + memory "eeprom" + size = 512; + page_size = 4; + min_write_delay = 9000; + max_write_delay = 9000; + readback_p1 = 0xff; + readback_p2 = 0xff; + read = " 1 0 1 0 0 0 0 0", + " 0 0 x x x x x a8", + " a7 a6 a5 a4 a3 a2 a1 a0", + " o o o o o o o o"; + + write = " 1 1 0 0 0 0 0 0", + " 0 0 x x x x x a8", + " a7 a6 a5 a4 a3 a2 a1 a0", + " i i i i i i i i"; + + mode = 0x04; + delay = 20; + blocksize = 128; + readsize = 256; + ; + memory "flash" + paged = yes; + size = 8192; + page_size = 64; + num_pages = 128; + min_write_delay = 4500; + max_write_delay = 4500; + readback_p1 = 0xff; + readback_p2 = 0x00; + read_lo = " 0 0 1 0 0 0 0 0", + " 0 0 0 0 a11 a10 a9 a8", + " a7 a6 a5 a4 a3 a2 a1 a0", + " o o o o o o o o"; + + read_hi = " 0 0 1 0 1 0 0 0", + " 0 0 0 0 a11 a10 a9 a8", + " a7 a6 a5 a4 a3 a2 a1 a0", + " o o o o o o o o"; + + loadpage_lo = " 0 1 0 0 0 0 0 0", + " 0 0 0 0 x x x x", + " x x x a4 a3 a2 a1 a0", + " i i i i i i i i"; + + loadpage_hi = " 0 1 0 0 1 0 0 0", + " 0 0 0 0 x x x x", + " x x x a4 a3 a2 a1 a0", + " i i i i i i i i"; + + writepage = " 0 1 0 0 1 1 0 0", + " 0 0 0 0 a11 a10 a9 a8", + " a7 a6 a5 x x x x x", + " x x x x x x x x"; + + mode = 0x21; + delay = 10; + blocksize = 64; + readsize = 256; + ; + + memory "lfuse" + size = 1; + min_write_delay = 2000; + max_write_delay = 2000; + read = "0 1 0 1 0 0 0 0 0 0 0 0 0 0 0 0", + "x x x x x x x x o o o o o o o o"; + + write = "1 0 1 0 1 1 0 0 1 0 1 0 0 0 0 0", + "x x x x x x x x i i i i i i i i"; + ; + + memory "hfuse" + size = 1; + min_write_delay = 2000; + max_write_delay = 2000; + read = "0 1 0 1 1 0 0 0 0 0 0 0 1 0 0 0", + "x x x x x x x x o o o o o o o o"; + + write = "1 0 1 0 1 1 0 0 1 0 1 0 1 0 0 0", + "x x x x x x x x i i i i i i i i"; + ; + + # Required for Arduino IDE + # see: https://github.com/arduino/Arduino/issues/2075 + # https://github.com/arduino/Arduino/issues/2075#issuecomment-238031689 + memory "efuse" + size = 0; + ; + + memory "lock" + size = 1; + min_write_delay = 2000; + max_write_delay = 2000; + read = "0 1 0 1 1 0 0 0 0 0 0 0 0 0 0 0", + "x x x x x x x x x x o o o o o o"; + + write = "1 0 1 0 1 1 0 0 1 1 1 x x x x x", + "x x x x x x x x 1 1 i i i i i i"; + ; + + memory "calibration" + size = 4; + read = "0 0 1 1 1 0 0 0 0 0 x x x x x x", + "0 0 0 0 0 0 a1 a0 o o o o o o o o"; + ; + + memory "signature" + size = 3; + read = "0 0 1 1 0 0 0 0 x x x x x x x x", + "x x x x x x a1 a0 o o o o o o o o"; + ; + ; + + + +#------------------------------------------------------------ +# ATmega8515 +#------------------------------------------------------------ + +part + id = "m8515"; + desc = "ATmega8515"; + stk500_devcode = 0x63; + avr910_devcode = 0x3A; + signature = 0x1e 0x93 0x06; + chip_erase_delay = 9000; + pgm_enable = "1 0 1 0 1 1 0 0 0 1 0 1 0 0 1 1", + "x x x x x x x x x x x x x x x x"; + + chip_erase = "1 0 1 0 1 1 0 0 1 0 0 x x x x x", + "x x x x x x x x x x x x x x x x"; + + timeout = 200; + stabdelay = 100; + cmdexedelay = 25; + synchloops = 32; + bytedelay = 0; + pollindex = 3; + pollvalue = 0x53; + predelay = 1; + postdelay = 1; + pollmethod = 0; + + pp_controlstack = + 0x0E, 0x1E, 0x0F, 0x1F, 0x2E, 0x3E, 0x2F, 0x3F, + 0x4E, 0x5E, 0x4F, 0x5F, 0x6E, 0x7E, 0x6F, 0x7F, + 0x66, 0x76, 0x67, 0x77, 0x6A, 0x7A, 0x6B, 0x7B, + 0xBE, 0xFD, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00; + hventerstabdelay = 100; + progmodedelay = 0; + latchcycles = 6; + togglevtg = 0; + poweroffdelay = 0; + resetdelayms = 0; + resetdelayus = 0; + hvleavestabdelay = 15; + chiperasepulsewidth = 0; + chiperasepolltimeout = 10; + programfusepulsewidth = 0; + programfusepolltimeout = 5; + programlockpulsewidth = 0; + programlockpolltimeout = 5; + + memory "eeprom" + size = 512; + min_write_delay = 9000; + max_write_delay = 9000; + readback_p1 = 0xff; + readback_p2 = 0xff; + read = " 1 0 1 0 0 0 0 0", + " 0 0 x x x x x a8", + " a7 a6 a5 a4 a3 a2 a1 a0", + " o o o o o o o o"; + + write = " 1 1 0 0 0 0 0 0", + " 0 0 x x x x x a8", + " a7 a6 a5 a4 a3 a2 a1 a0", + " i i i i i i i i"; + + mode = 0x04; + delay = 20; + blocksize = 128; + readsize = 256; + ; + memory "flash" + paged = yes; + size = 8192; + page_size = 64; + num_pages = 128; + min_write_delay = 4500; + max_write_delay = 4500; + readback_p1 = 0xff; + readback_p2 = 0xff; + read_lo = " 0 0 1 0 0 0 0 0", + " 0 0 0 0 a11 a10 a9 a8", + " a7 a6 a5 a4 a3 a2 a1 a0", + " o o o o o o o o"; + + read_hi = " 0 0 1 0 1 0 0 0", + " 0 0 0 0 a11 a10 a9 a8", + " a7 a6 a5 a4 a3 a2 a1 a0", + " o o o o o o o o"; + + loadpage_lo = " 0 1 0 0 0 0 0 0", + " 0 0 0 0 x x x x", + " x x x a4 a3 a2 a1 a0", + " i i i i i i i i"; + + loadpage_hi = " 0 1 0 0 1 0 0 0", + " 0 0 0 0 x x x x", + " x x x a4 a3 a2 a1 a0", + " i i i i i i i i"; + + writepage = " 0 1 0 0 1 1 0 0", + " 0 0 0 0 a11 a10 a9 a8", + " a7 a6 a5 x x x x x", + " x x x x x x x x"; + + mode = 0x21; + delay = 6; + blocksize = 64; + readsize = 256; + ; + + memory "lfuse" + size = 1; + min_write_delay = 4500; + max_write_delay = 4500; + read = "0 1 0 1 0 0 0 0 0 0 0 0 0 0 0 0", + "x x x x x x x x o o o o o o o o"; + + write = "1 0 1 0 1 1 0 0 1 0 1 0 0 0 0 0", + "x x x x x x x x i i i i i i i i"; + ; + + memory "hfuse" + size = 1; + min_write_delay = 4500; + max_write_delay = 4500; + read = "0 1 0 1 1 0 0 0 0 0 0 0 1 0 0 0", + "x x x x x x x x o o o o o o o o"; + + write = "1 0 1 0 1 1 0 0 1 0 1 0 1 0 0 0", + "x x x x x x x x i i i i i i i i"; + ; + + memory "lock" + size = 1; + min_write_delay = 4500; + max_write_delay = 4500; + read = "0 1 0 1 1 0 0 0 0 0 0 0 0 0 0 0", + "x x x x x x x x x x o o o o o o"; + + write = "1 0 1 0 1 1 0 0 1 1 1 x x x x x", + "x x x x x x x x 1 1 i i i i i i"; + ; + + memory "calibration" + size = 4; + read = "0 0 1 1 1 0 0 0 0 0 x x x x x x", + "0 0 0 0 0 0 a1 a0 o o o o o o o o"; + ; + + memory "signature" + size = 3; + read = "0 0 1 1 0 0 0 0 x x x x x x x x", + "x x x x x x a1 a0 o o o o o o o o"; + ; + ; + + + + +#------------------------------------------------------------ +# ATmega8535 +#------------------------------------------------------------ + +part + id = "m8535"; + desc = "ATmega8535"; + stk500_devcode = 0x64; + avr910_devcode = 0x69; + signature = 0x1e 0x93 0x08; + pagel = 0xd7; + bs2 = 0xa0; + chip_erase_delay = 9000; + pgm_enable = "1 0 1 0 1 1 0 0 0 1 0 1 0 0 1 1", + "x x x x x x x x x x x x x x x x"; + + chip_erase = "1 0 1 0 1 1 0 0 1 0 0 x x x x x", + "x x x x x x x x x x x x x x x x"; + + timeout = 200; + stabdelay = 100; + cmdexedelay = 25; + synchloops = 32; + bytedelay = 0; + pollindex = 3; + pollvalue = 0x53; + predelay = 1; + postdelay = 1; + pollmethod = 0; + + pp_controlstack = + 0x0E, 0x1E, 0x0F, 0x1F, 0x2E, 0x3E, 0x2F, 0x3F, + 0x4E, 0x5E, 0x4F, 0x5F, 0x6E, 0x7E, 0x6F, 0x7F, + 0x66, 0x76, 0x67, 0x77, 0x6A, 0x7A, 0x6B, 0x7B, + 0xBE, 0xFD, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00; + hventerstabdelay = 100; + progmodedelay = 0; + latchcycles = 6; + togglevtg = 0; + poweroffdelay = 0; + resetdelayms = 0; + resetdelayus = 0; + hvleavestabdelay = 15; + chiperasepulsewidth = 0; + chiperasepolltimeout = 10; + programfusepulsewidth = 0; + programfusepolltimeout = 5; + programlockpulsewidth = 0; + programlockpolltimeout = 5; + + memory "eeprom" + size = 512; + min_write_delay = 9000; + max_write_delay = 9000; + readback_p1 = 0xff; + readback_p2 = 0xff; + read = " 1 0 1 0 0 0 0 0", + " 0 0 x x x x x a8", + " a7 a6 a5 a4 a3 a2 a1 a0", + " o o o o o o o o"; + + write = " 1 1 0 0 0 0 0 0", + " 0 0 x x x x x a8", + " a7 a6 a5 a4 a3 a2 a1 a0", + " i i i i i i i i"; + + mode = 0x04; + delay = 20; + blocksize = 128; + readsize = 256; + ; + memory "flash" + paged = yes; + size = 8192; + page_size = 64; + num_pages = 128; + min_write_delay = 4500; + max_write_delay = 4500; + readback_p1 = 0xff; + readback_p2 = 0xff; + read_lo = " 0 0 1 0 0 0 0 0", + " 0 0 0 0 a11 a10 a9 a8", + " a7 a6 a5 a4 a3 a2 a1 a0", + " o o o o o o o o"; + + read_hi = " 0 0 1 0 1 0 0 0", + " 0 0 0 0 a11 a10 a9 a8", + " a7 a6 a5 a4 a3 a2 a1 a0", + " o o o o o o o o"; + + loadpage_lo = " 0 1 0 0 0 0 0 0", + " 0 0 0 0 x x x x", + " x x x a4 a3 a2 a1 a0", + " i i i i i i i i"; + + loadpage_hi = " 0 1 0 0 1 0 0 0", + " 0 0 0 0 x x x x", + " x x x a4 a3 a2 a1 a0", + " i i i i i i i i"; + + writepage = " 0 1 0 0 1 1 0 0", + " 0 0 0 0 a11 a10 a9 a8", + " a7 a6 a5 x x x x x", + " x x x x x x x x"; + + mode = 0x21; + delay = 6; + blocksize = 64; + readsize = 256; + ; + + memory "lfuse" + size = 1; + min_write_delay = 2000; + max_write_delay = 2000; + read = "0 1 0 1 0 0 0 0 0 0 0 0 0 0 0 0", + "x x x x x x x x o o o o o o o o"; + + write = "1 0 1 0 1 1 0 0 1 0 1 0 0 0 0 0", + "x x x x x x x x i i i i i i i i"; + ; + + memory "hfuse" + size = 1; + min_write_delay = 2000; + max_write_delay = 2000; + read = "0 1 0 1 1 0 0 0 0 0 0 0 1 0 0 0", + "x x x x x x x x o o o o o o o o"; + + write = "1 0 1 0 1 1 0 0 1 0 1 0 1 0 0 0", + "x x x x x x x x i i i i i i i i"; + ; + + memory "lock" + size = 1; + min_write_delay = 2000; + max_write_delay = 2000; + read = "0 1 0 1 1 0 0 0 0 0 0 0 0 0 0 0", + "x x x x x x x x x x o o o o o o"; + + write = "1 0 1 0 1 1 0 0 1 1 1 x x x x x", + "x x x x x x x x 1 1 i i i i i i"; + ; + + memory "calibration" + size = 4; + read = "0 0 1 1 1 0 0 0 0 0 x x x x x x", + "0 0 0 0 0 0 a1 a0 o o o o o o o o"; + ; + + memory "signature" + size = 3; + read = "0 0 1 1 0 0 0 0 x x x x x x x x", + "x x x x x x a1 a0 o o o o o o o o"; + ; + ; + + +#------------------------------------------------------------ +# ATtiny26 +#------------------------------------------------------------ + +part + id = "t26"; + desc = "ATtiny26"; + stk500_devcode = 0x21; + avr910_devcode = 0x5e; + signature = 0x1e 0x91 0x09; + pagel = 0xb3; + bs2 = 0xb2; + chip_erase_delay = 9000; + pgm_enable = "1 0 1 0 1 1 0 0 0 1 0 1 0 0 1 1", + "x x x x x x x x x x x x x x x x"; + + chip_erase = "1 0 1 0 1 1 0 0 1 0 0 x x x x x", + "x x x x x x x x x x x x x x x x"; + + timeout = 200; + stabdelay = 100; + cmdexedelay = 25; + synchloops = 32; + bytedelay = 0; + pollindex = 3; + pollvalue = 0x53; + predelay = 1; + postdelay = 1; + pollmethod = 0; + + pp_controlstack = + 0xC4, 0xE4, 0xC4, 0xE4, 0xCC, 0xEC, 0xCC, 0xEC, + 0xD4, 0xF4, 0xD4, 0xF4, 0xDC, 0xFC, 0xDC, 0xFC, + 0xC8, 0xE8, 0xD8, 0xF8, 0x4C, 0x6C, 0x5C, 0x7C, + 0xEC, 0xBC, 0x00, 0x06, 0x00, 0x00, 0x00, 0x00; + hventerstabdelay = 100; + progmodedelay = 0; + latchcycles = 5; + togglevtg = 1; + poweroffdelay = 15; + resetdelayms = 2; + resetdelayus = 0; + hvleavestabdelay = 15; + chiperasepulsewidth = 0; + chiperasepolltimeout = 10; + programfusepulsewidth = 0; + programfusepolltimeout = 5; + programlockpulsewidth = 0; + programlockpolltimeout = 5; + + memory "eeprom" + size = 128; + min_write_delay = 9000; + max_write_delay = 9000; + readback_p1 = 0xff; + readback_p2 = 0xff; + read = "1 0 1 0 0 0 0 0 x x x x x x x x", + "x a6 a5 a4 a3 a2 a1 a0 o o o o o o o o"; + + write = "1 1 0 0 0 0 0 0 x x x x x x x x", + "x a6 a5 a4 a3 a2 a1 a0 i i i i i i i i"; + + mode = 0x04; + delay = 10; + blocksize = 64; + readsize = 256; + ; + + memory "flash" + paged = yes; + size = 2048; + page_size = 32; + num_pages = 64; + min_write_delay = 4500; + max_write_delay = 4500; + readback_p1 = 0xff; + readback_p2 = 0xff; + read_lo = " 0 0 1 0 0 0 0 0", + " x x x x x x a9 a8", + " a7 a6 a5 a4 a3 a2 a1 a0", + " o o o o o o o o"; + + read_hi = " 0 0 1 0 1 0 0 0", + " x x x x x x a9 a8", + " a7 a6 a5 a4 a3 a2 a1 a0", + " o o o o o o o o"; + + loadpage_lo = " 0 1 0 0 0 0 0 0", + " x x x x x x x x", + " x x x x a3 a2 a1 a0", + " i i i i i i i i"; + + loadpage_hi = " 0 1 0 0 1 0 0 0", + " x x x x x x x x", + " x x x x a3 a2 a1 a0", + " i i i i i i i i"; + + writepage = " 0 1 0 0 1 1 0 0", + " x x x x x x a9 a8", + " a7 a6 a5 a4 x x x x", + " x x x x x x x x"; + + mode = 0x21; + delay = 6; + blocksize = 16; + readsize = 256; + ; + + memory "signature" + size = 3; + read = "0 0 1 1 0 0 0 0 x x x x x x x x", + "0 0 0 0 0 0 a1 a0 o o o o o o o o"; + ; + + memory "lock" + size = 1; + read = "0 1 0 1 1 0 0 0 x x x x x x x x", + "x x x x x x x x x x x x x x o o"; + + write = "1 0 1 0 1 1 0 0 1 1 1 1 1 1 i i", + "x x x x x x x x x x x x x x x x"; + min_write_delay = 9000; + max_write_delay = 9000; + ; + + memory "lfuse" + size = 1; + write = "1 0 1 0 1 1 0 0 1 0 1 0 0 0 0 0", + "x x x x x x x x i i i i i i i i"; + + read = "0 1 0 1 0 0 0 0 0 0 0 0 0 0 0 0", + "x x x x x x x x o o o o o o o o"; + min_write_delay = 9000; + max_write_delay = 9000; + ; + + memory "hfuse" + size = 1; + write = "1 0 1 0 1 1 0 0 1 0 1 0 1 0 0 0", + "x x x x x x x x x x x i i i i i"; + + read = "0 1 0 1 1 0 0 0 0 0 0 0 1 0 0 0", + "x x x x x x x x o o o o o o o o"; + min_write_delay = 9000; + max_write_delay = 9000; + ; + + memory "calibration" + size = 4; + read = "0 0 1 1 1 0 0 0 x x x x x x x x", + "0 0 0 0 0 0 a1 a0 o o o o o o o o"; + ; + +; + + +#------------------------------------------------------------ +# ATtiny261 +#------------------------------------------------------------ +# Close to ATtiny26 + +part + id = "t261"; + desc = "ATtiny261"; + has_debugwire = yes; + flash_instr = 0xB4, 0x00, 0x10; + eeprom_instr = 0xBB, 0xFF, 0xBB, 0xEE, 0xBB, 0xCC, 0xB2, 0x0D, + 0xBC, 0x00, 0xB4, 0x00, 0xBA, 0x0D, 0xBB, 0xBC, + 0x99, 0xE1, 0xBB, 0xAC; +# stk500_devcode = 0x21; +# avr910_devcode = 0x5e; + signature = 0x1e 0x91 0x0c; + pagel = 0xb3; + bs2 = 0xb2; + chip_erase_delay = 4000; + + pgm_enable = "1 0 1 0 1 1 0 0 0 1 0 1 0 0 1 1", + "x x x x x x x x x x x x x x x x"; + + chip_erase = "1 0 1 0 1 1 0 0 1 0 0 x x x x x", + "x x x x x x x x x x x x x x x x"; + + timeout = 200; + stabdelay = 100; + cmdexedelay = 25; + synchloops = 32; + bytedelay = 0; + pollindex = 3; + pollvalue = 0x53; + predelay = 1; + postdelay = 1; + pollmethod = 0; + + pp_controlstack = + 0xC4, 0xE4, 0xC4, 0xE4, 0xCC, 0xEC, 0xCC, 0xEC, + 0xD4, 0xF4, 0xD4, 0xF4, 0xDC, 0xFC, 0xDC, 0xFC, + 0xC8, 0xE8, 0xD8, 0xF8, 0x4C, 0x6C, 0x5C, 0x7C, + 0xEC, 0xBC, 0x00, 0x06, 0x00, 0x00, 0x00, 0x00; + hventerstabdelay = 100; + progmodedelay = 0; + latchcycles = 5; + togglevtg = 1; + poweroffdelay = 15; + resetdelayms = 2; + resetdelayus = 0; + hvleavestabdelay = 15; + chiperasepulsewidth = 0; + chiperasepolltimeout = 10; + programfusepulsewidth = 0; + programfusepolltimeout = 5; + programlockpulsewidth = 0; + programlockpolltimeout = 5; + + ocdrev = 1; + + memory "eeprom" + paged = no; + size = 128; + page_size = 4; + num_pages = 32; + min_write_delay = 4000; + max_write_delay = 4000; + readback_p1 = 0xff; + readback_p2 = 0xff; + + read = "1 0 1 0 0 0 0 0 x x x x x x x x", + "x a6 a5 a4 a3 a2 a1 a0 o o o o o o o o"; + + write = "1 1 0 0 0 0 0 0 x x x x x x x x", + "x a6 a5 a4 a3 a2 a1 a0 i i i i i i i i"; + + loadpage_lo = " 1 1 0 0 0 0 0 1", + " 0 0 0 0 0 0 0 0", + " 0 0 0 0 0 0 a1 a0", + " i i i i i i i i"; + + writepage = " 1 1 0 0 0 0 1 0", + " 0 0 x x x x x x", + " x a6 a5 a4 a3 a2 0 0", + " x x x x x x x x"; + + mode = 0x41; + delay = 10; + blocksize = 4; + readsize = 256; + ; + + memory "flash" + paged = yes; + size = 2048; + page_size = 32; + num_pages = 64; + min_write_delay = 4500; + max_write_delay = 4500; + readback_p1 = 0xff; + readback_p2 = 0xff; + + read_lo = " 0 0 1 0 0 0 0 0", + " x x x x x x a9 a8", + " a7 a6 a5 a4 a3 a2 a1 a0", + " o o o o o o o o"; + + read_hi = " 0 0 1 0 1 0 0 0", + " x x x x x x a9 a8", + " a7 a6 a5 a4 a3 a2 a1 a0", + " o o o o o o o o"; + + loadpage_lo = " 0 1 0 0 0 0 0 0", + " x x x x x x x x", + " x x x x a3 a2 a1 a0", + " i i i i i i i i"; + + loadpage_hi = " 0 1 0 0 1 0 0 0", + " x x x x x x x x", + " x x x x a3 a2 a1 a0", + " i i i i i i i i"; + + writepage = " 0 1 0 0 1 1 0 0", + " x x x x x x a9 a8", + " a7 a6 a5 a4 x x x x", + " x x x x x x x x"; + + mode = 0x41; + delay = 6; + blocksize = 32; + readsize = 256; + ; + + memory "signature" + size = 3; + read = "0 0 1 1 0 0 0 0 x x x x x x x x", + "0 0 0 0 0 0 a1 a0 o o o o o o o o"; + ; + + memory "lock" + size = 1; + read = "0 1 0 1 1 0 0 0 x x x x x x x x", + "x x x x x x x x x x x x x x o o"; + + write = "1 0 1 0 1 1 0 0 1 1 1 1 1 1 i i", + "x x x x x x x x x x x x x x x x"; + min_write_delay = 4500; + max_write_delay = 4500; + ; + + memory "lfuse" + size = 1; + write = "1 0 1 0 1 1 0 0 1 0 1 0 0 0 0 0", + "x x x x x x x x i i i i i i i i"; + + read = "0 1 0 1 0 0 0 0 0 0 0 0 0 0 0 0", + "x x x x x x x x o o o o o o o o"; + min_write_delay = 4500; + max_write_delay = 4500; + ; + + memory "hfuse" + size = 1; + write = "1 0 1 0 1 1 0 0 1 0 1 0 1 0 0 0", + "x x x x x x x x i i i i i i i i"; + + read = "0 1 0 1 1 0 0 0 0 0 0 0 1 0 0 0", + "x x x x x x x x o o o o o o o o"; + min_write_delay = 4500; + max_write_delay = 4500; + ; + + memory "efuse" + size = 1; + write = "1 0 1 0 1 1 0 0 1 0 1 0 0 1 0 0", + "x x x x x x x x x x x x x x x i"; + + read = "0 1 0 1 0 0 0 0 0 0 0 0 1 0 0 0", + "x x x x x x x x o o o o o o o o"; + min_write_delay = 4500; + max_write_delay = 4500; + ; + + memory "calibration" + size = 1; + read = "0 0 1 1 1 0 0 0 x x x x x x x x", + "0 0 0 0 0 0 0 0 o o o o o o o o"; + ; + +; + + +#------------------------------------------------------------ +# ATtiny461 +#------------------------------------------------------------ +# Close to ATtiny261 + +part + id = "t461"; + desc = "ATtiny461"; + has_debugwire = yes; + flash_instr = 0xB4, 0x00, 0x10; + eeprom_instr = 0xBB, 0xFF, 0xBB, 0xEE, 0xBB, 0xCC, 0xB2, 0x0D, + 0xBC, 0x00, 0xB4, 0x00, 0xBA, 0x0D, 0xBB, 0xBC, + 0x99, 0xE1, 0xBB, 0xAC; +# stk500_devcode = 0x21; +# avr910_devcode = 0x5e; + signature = 0x1e 0x92 0x08; + pagel = 0xb3; + bs2 = 0xb2; + chip_erase_delay = 4000; + + pgm_enable = "1 0 1 0 1 1 0 0 0 1 0 1 0 0 1 1", + "x x x x x x x x x x x x x x x x"; + + chip_erase = "1 0 1 0 1 1 0 0 1 0 0 x x x x x", + "x x x x x x x x x x x x x x x x"; + + timeout = 200; + stabdelay = 100; + cmdexedelay = 25; + synchloops = 32; + bytedelay = 0; + pollindex = 3; + pollvalue = 0x53; + predelay = 1; + postdelay = 1; + pollmethod = 0; + + pp_controlstack = + 0xC4, 0xE4, 0xC4, 0xE4, 0xCC, 0xEC, 0xCC, 0xEC, + 0xD4, 0xF4, 0xD4, 0xF4, 0xDC, 0xFC, 0xDC, 0xFC, + 0xC8, 0xE8, 0xD8, 0xF8, 0x4C, 0x6C, 0x5C, 0x7C, + 0xEC, 0xBC, 0x00, 0x06, 0x00, 0x00, 0x00, 0x00; + hventerstabdelay = 100; + progmodedelay = 0; + latchcycles = 5; + togglevtg = 1; + poweroffdelay = 15; + resetdelayms = 2; + resetdelayus = 0; + hvleavestabdelay = 15; + chiperasepulsewidth = 0; + chiperasepolltimeout = 10; + programfusepulsewidth = 0; + programfusepolltimeout = 5; + programlockpulsewidth = 0; + programlockpolltimeout = 5; + + ocdrev = 1; + + memory "eeprom" + paged = no; + size = 256; + page_size = 4; + num_pages = 64; + min_write_delay = 4000; + max_write_delay = 4000; + readback_p1 = 0xff; + readback_p2 = 0xff; + + read = " 1 0 1 0 0 0 0 0 x x x x x x x x", + "a7 a6 a5 a4 a3 a2 a1 a0 o o o o o o o o"; + + write = " 1 1 0 0 0 0 0 0 x x x x x x x x", + "a7 a6 a5 a4 a3 a2 a1 a0 i i i i i i i i"; + + loadpage_lo = " 1 1 0 0 0 0 0 1", + " 0 0 0 0 0 0 0 0", + " 0 0 0 0 0 0 a1 a0", + " i i i i i i i i"; + + writepage = " 1 1 0 0 0 0 1 0", + " 0 0 x x x x x x", + " a7 a6 a5 a4 a3 a2 0 0", + " x x x x x x x x"; + + mode = 0x41; + delay = 10; + blocksize = 4; + readsize = 256; + ; + + memory "flash" + paged = yes; + size = 4096; + page_size = 64; + num_pages = 64; + min_write_delay = 4500; + max_write_delay = 4500; + readback_p1 = 0xff; + readback_p2 = 0xff; + + read_lo = " 0 0 1 0 0 0 0 0", + " x x x x x a10 a9 a8", + " a7 a6 a5 a4 a3 a2 a1 a0", + " o o o o o o o o"; + + read_hi = " 0 0 1 0 1 0 0 0", + " x x x x x a10 a9 a8", + " a7 a6 a5 a4 a3 a2 a1 a0", + " o o o o o o o o"; + + loadpage_lo = " 0 1 0 0 0 0 0 0", + " x x x x x x x x", + " x x x a4 a3 a2 a1 a0", + " i i i i i i i i"; + + loadpage_hi = " 0 1 0 0 1 0 0 0", + " x x x x x x x x", + " x x x a4 a3 a2 a1 a0", + " i i i i i i i i"; + + writepage = " 0 1 0 0 1 1 0 0", + " x x x x x a10 a9 a8", + " a7 a6 a5 x x x x x", + " x x x x x x x x"; + + mode = 0x41; + delay = 6; + blocksize = 64; + readsize = 256; + ; + + memory "signature" + size = 3; + read = "0 0 1 1 0 0 0 0 x x x x x x x x", + "0 0 0 0 0 0 a1 a0 o o o o o o o o"; + ; + + memory "lock" + size = 1; + read = "0 1 0 1 1 0 0 0 x x x x x x x x", + "x x x x x x x x x x x x x x o o"; + + write = "1 0 1 0 1 1 0 0 1 1 1 1 1 1 i i", + "x x x x x x x x x x x x x x x x"; + min_write_delay = 4500; + max_write_delay = 4500; + ; + + memory "lfuse" + size = 1; + write = "1 0 1 0 1 1 0 0 1 0 1 0 0 0 0 0", + "x x x x x x x x i i i i i i i i"; + + read = "0 1 0 1 0 0 0 0 0 0 0 0 0 0 0 0", + "x x x x x x x x o o o o o o o o"; + min_write_delay = 4500; + max_write_delay = 4500; + ; + + memory "hfuse" + size = 1; + write = "1 0 1 0 1 1 0 0 1 0 1 0 1 0 0 0", + "x x x x x x x x i i i i i i i i"; + + read = "0 1 0 1 1 0 0 0 0 0 0 0 1 0 0 0", + "x x x x x x x x o o o o o o o o"; + min_write_delay = 4500; + max_write_delay = 4500; + ; + + memory "efuse" + size = 1; + write = "1 0 1 0 1 1 0 0 1 0 1 0 0 1 0 0", + "x x x x x x x x x x x x x x x i"; + + read = "0 1 0 1 0 0 0 0 0 0 0 0 1 0 0 0", + "x x x x x x x x o o o o o o o o"; + min_write_delay = 4500; + max_write_delay = 4500; + ; + + memory "calibration" + size = 1; + read = "0 0 1 1 1 0 0 0 x x x x x x x x", + "0 0 0 0 0 0 0 0 o o o o o o o o"; + ; + +; + + +#------------------------------------------------------------ +# ATtiny861 +#------------------------------------------------------------ +# Close to ATtiny461 + +part + id = "t861"; + desc = "ATtiny861"; + has_debugwire = yes; + flash_instr = 0xB4, 0x00, 0x10; + eeprom_instr = 0xBB, 0xFF, 0xBB, 0xEE, 0xBB, 0xCC, 0xB2, 0x0D, + 0xBC, 0x00, 0xB4, 0x00, 0xBA, 0x0D, 0xBB, 0xBC, + 0x99, 0xE1, 0xBB, 0xAC; +# stk500_devcode = 0x21; +# avr910_devcode = 0x5e; + signature = 0x1e 0x93 0x0d; + pagel = 0xb3; + bs2 = 0xb2; + chip_erase_delay = 4000; + + pgm_enable = "1 0 1 0 1 1 0 0 0 1 0 1 0 0 1 1", + "x x x x x x x x x x x x x x x x"; + + chip_erase = "1 0 1 0 1 1 0 0 1 0 0 x x x x x", + "x x x x x x x x x x x x x x x x"; + + timeout = 200; + stabdelay = 100; + cmdexedelay = 25; + synchloops = 32; + bytedelay = 0; + pollindex = 3; + pollvalue = 0x53; + predelay = 1; + postdelay = 1; + pollmethod = 0; + + pp_controlstack = + 0xC4, 0xE4, 0xC4, 0xE4, 0xCC, 0xEC, 0xCC, 0xEC, + 0xD4, 0xF4, 0xD4, 0xF4, 0xDC, 0xFC, 0xDC, 0xFC, + 0xC8, 0xE8, 0xD8, 0xF8, 0x4C, 0x6C, 0x5C, 0x7C, + 0xEC, 0xBC, 0x00, 0x06, 0x00, 0x00, 0x00, 0x00; + hventerstabdelay = 100; + progmodedelay = 0; + latchcycles = 5; + togglevtg = 1; + poweroffdelay = 15; + resetdelayms = 2; + resetdelayus = 0; + hvleavestabdelay = 15; + chiperasepulsewidth = 0; + chiperasepolltimeout = 10; + programfusepulsewidth = 0; + programfusepolltimeout = 5; + programlockpulsewidth = 0; + programlockpolltimeout = 5; + + ocdrev = 1; + + memory "eeprom" + paged = no; + size = 512; + num_pages = 128; + page_size = 4; + min_write_delay = 4000; + max_write_delay = 4000; + readback_p1 = 0xff; + readback_p2 = 0xff; + + read = " 1 0 1 0 0 0 0 0 x x x x x x x a8", + "a7 a6 a5 a4 a3 a2 a1 a0 o o o o o o o o"; + + write = " 1 1 0 0 0 0 0 0 x x x x x x x a8", + "a7 a6 a5 a4 a3 a2 a1 a0 i i i i i i i i"; + + loadpage_lo = " 1 1 0 0 0 0 0 1", + " 0 0 0 0 0 0 0 0", + " 0 0 0 0 0 0 a1 a0", + " i i i i i i i i"; + + writepage = " 1 1 0 0 0 0 1 0", + " 0 0 x x x x x a8", + " a7 a6 a5 a4 a3 a2 0 0", + " x x x x x x x x"; + + mode = 0x41; + delay = 10; + blocksize = 4; + readsize = 256; + ; + + memory "flash" + paged = yes; + size = 8192; + page_size = 64; + num_pages = 128; + min_write_delay = 4500; + max_write_delay = 4500; + readback_p1 = 0xff; + readback_p2 = 0xff; + + read_lo = " 0 0 1 0 0 0 0 0", + " x x x x a11 a10 a9 a8", + " a7 a6 a5 a4 a3 a2 a1 a0", + " o o o o o o o o"; + + read_hi = " 0 0 1 0 1 0 0 0", + " x x x x a11 a10 a9 a8", + " a7 a6 a5 a4 a3 a2 a1 a0", + " o o o o o o o o"; + + loadpage_lo = " 0 1 0 0 0 0 0 0", + " x x x x x x x x", + " x x x a4 a3 a2 a1 a0", + " i i i i i i i i"; + + loadpage_hi = " 0 1 0 0 1 0 0 0", + " x x x x x x x x", + " x x x a4 a3 a2 a1 a0", + " i i i i i i i i"; + + writepage = " 0 1 0 0 1 1 0 0", + " x x x x a11 a10 a9 a8", + " a7 a6 a5 x x x x x", + " x x x x x x x x"; + + mode = 0x41; + delay = 6; + blocksize = 64; + readsize = 256; + ; + + memory "signature" + size = 3; + read = "0 0 1 1 0 0 0 0 x x x x x x x x", + "0 0 0 0 0 0 a1 a0 o o o o o o o o"; + ; + + memory "lock" + size = 1; + read = "0 1 0 1 1 0 0 0 x x x x x x x x", + "x x x x x x x x x x x x x x o o"; + + write = "1 0 1 0 1 1 0 0 1 1 1 1 1 1 i i", + "x x x x x x x x x x x x x x x x"; + min_write_delay = 4500; + max_write_delay = 4500; + ; + + memory "lfuse" + size = 1; + write = "1 0 1 0 1 1 0 0 1 0 1 0 0 0 0 0", + "x x x x x x x x i i i i i i i i"; + + read = "0 1 0 1 0 0 0 0 0 0 0 0 0 0 0 0", + "x x x x x x x x o o o o o o o o"; + min_write_delay = 4500; + max_write_delay = 4500; + ; + + memory "hfuse" + size = 1; + write = "1 0 1 0 1 1 0 0 1 0 1 0 1 0 0 0", + "x x x x x x x x i i i i i i i i"; + + read = "0 1 0 1 1 0 0 0 0 0 0 0 1 0 0 0", + "x x x x x x x x o o o o o o o o"; + min_write_delay = 4500; + max_write_delay = 4500; + ; + + memory "efuse" + size = 1; + write = "1 0 1 0 1 1 0 0 1 0 1 0 0 1 0 0", + "x x x x x x x x x x x x x x x i"; + + read = "0 1 0 1 0 0 0 0 0 0 0 0 1 0 0 0", + "x x x x x x x x o o o o o o o o"; + min_write_delay = 4500; + max_write_delay = 4500; + ; + + memory "calibration" + size = 1; + read = "0 0 1 1 1 0 0 0 x x x x x x x x", + "0 0 0 0 0 0 0 0 o o o o o o o o"; + ; + +; + + +#------------------------------------------------------------ +# ATtiny28 +#------------------------------------------------------------ + +# This is an HVPP-only device. + +part + id = "t28"; + desc = "ATtiny28"; + stk500_devcode = 0x22; + avr910_devcode = 0x5c; + signature = 0x1e 0x91 0x07; + + pp_controlstack = + 0x0E, 0x1E, 0x0F, 0x1F, 0x2E, 0x3E, 0x2F, 0x3F, + 0x4E, 0x5E, 0x4F, 0x5F, 0x6E, 0x7E, 0x6F, 0x7F, + 0x66, 0x76, 0x67, 0x77, 0x6A, 0x7A, 0x6B, 0x7B, + 0xBE, 0xFD, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00; + hventerstabdelay = 100; + progmodedelay = 0; + latchcycles = 0; + togglevtg = 0; + poweroffdelay = 0; + resetdelayms = 0; + resetdelayus = 0; + hvleavestabdelay = 15; + resetdelay = 15; + chiperasepulsewidth = 0; + chiperasepolltimeout = 10; + programfusepulsewidth = 0; + programfusepolltimeout = 5; + programlockpulsewidth = 0; + programlockpolltimeout = 5; + + memory "flash" + size = 2048; + page_size = 2; + readsize = 256; + delay = 5; + ; + + memory "signature" + size = 3; + ; + + memory "lock" + size = 1; + ; + + memory "calibration" + size = 1; + ; + + memory "fuse" + size = 1; + ; +; + + + +#------------------------------------------------------------ +# ATmega48 +#------------------------------------------------------------ + +part + id = "m48"; + desc = "ATmega48"; + has_debugwire = yes; + flash_instr = 0xB6, 0x01, 0x11; + eeprom_instr = 0xBD, 0xF2, 0xBD, 0xE1, 0xBB, 0xCF, 0xB4, 0x00, + 0xBE, 0x01, 0xB6, 0x01, 0xBC, 0x00, 0xBB, 0xBF, + 0x99, 0xF9, 0xBB, 0xAF; + stk500_devcode = 0x59; +# avr910_devcode = 0x; + signature = 0x1e 0x92 0x05; + pagel = 0xd7; + bs2 = 0xc2; + chip_erase_delay = 45000; + pgm_enable = "1 0 1 0 1 1 0 0 0 1 0 1 0 0 1 1", + "x x x x x x x x x x x x x x x x"; + + chip_erase = "1 0 1 0 1 1 0 0 1 0 0 x x x x x", + "x x x x x x x x x x x x x x x x"; + + timeout = 200; + stabdelay = 100; + cmdexedelay = 25; + synchloops = 32; + bytedelay = 0; + pollindex = 3; + pollvalue = 0x53; + predelay = 1; + postdelay = 1; + pollmethod = 1; + + pp_controlstack = + 0x0E, 0x1E, 0x0F, 0x1F, 0x2E, 0x3E, 0x2F, 0x3F, + 0x4E, 0x5E, 0x4F, 0x5F, 0x6E, 0x7E, 0x6F, 0x7F, + 0x66, 0x76, 0x67, 0x77, 0x6A, 0x7A, 0x6B, 0x7B, + 0xBE, 0xFD, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00; + hventerstabdelay = 100; + progmodedelay = 0; + latchcycles = 5; + togglevtg = 1; + poweroffdelay = 15; + resetdelayms = 1; + resetdelayus = 0; + hvleavestabdelay = 15; + resetdelay = 15; + chiperasepulsewidth = 0; + chiperasepolltimeout = 10; + programfusepulsewidth = 0; + programfusepolltimeout = 5; + programlockpulsewidth = 0; + programlockpolltimeout = 5; + + ocdrev = 1; + + memory "eeprom" + paged = no; + page_size = 4; + size = 256; + min_write_delay = 3600; + max_write_delay = 3600; + readback_p1 = 0xff; + readback_p2 = 0xff; + read = " 1 0 1 0 0 0 0 0", + " 0 0 0 x x x x x", + " a7 a6 a5 a4 a3 a2 a1 a0", + " o o o o o o o o"; + + write = " 1 1 0 0 0 0 0 0", + " 0 0 0 x x x x x", + " a7 a6 a5 a4 a3 a2 a1 a0", + " i i i i i i i i"; + + loadpage_lo = " 1 1 0 0 0 0 0 1", + " 0 0 0 0 0 0 0 0", + " 0 0 0 0 0 0 a1 a0", + " i i i i i i i i"; + + writepage = " 1 1 0 0 0 0 1 0", + " 0 0 x x x x x x", + " a7 a6 a5 a4 a3 a2 0 0", + " x x x x x x x x"; + + mode = 0x41; + delay = 20; + blocksize = 4; + readsize = 256; + ; + memory "flash" + paged = yes; + size = 4096; + page_size = 64; + num_pages = 64; + min_write_delay = 4500; + max_write_delay = 4500; + readback_p1 = 0x00; + readback_p2 = 0x00; + read_lo = " 0 0 1 0 0 0 0 0", + " 0 0 0 0 0 a10 a9 a8", + " a7 a6 a5 a4 a3 a2 a1 a0", + " o o o o o o o o"; + + read_hi = " 0 0 1 0 1 0 0 0", + " 0 0 0 0 0 a10 a9 a8", + " a7 a6 a5 a4 a3 a2 a1 a0", + " o o o o o o o o"; + + loadpage_lo = " 0 1 0 0 0 0 0 0", + " 0 0 0 x x x x x", + " x x x a4 a3 a2 a1 a0", + " i i i i i i i i"; + + loadpage_hi = " 0 1 0 0 1 0 0 0", + " 0 0 0 x x x x x", + " x x x a4 a3 a2 a1 a0", + " i i i i i i i i"; + + writepage = " 0 1 0 0 1 1 0 0", + " 0 0 0 0 0 a10 a9 a8", + " a7 a6 a5 x x x x x", + " x x x x x x x x"; + + mode = 0x41; + delay = 6; + blocksize = 64; + readsize = 256; + ; + + memory "lfuse" + size = 1; + min_write_delay = 4500; + max_write_delay = 4500; + read = "0 1 0 1 0 0 0 0 0 0 0 0 0 0 0 0", + "x x x x x x x x o o o o o o o o"; + + write = "1 0 1 0 1 1 0 0 1 0 1 0 0 0 0 0", + "x x x x x x x x i i i i i i i i"; + ; + + memory "hfuse" + size = 1; + min_write_delay = 4500; + max_write_delay = 4500; + read = "0 1 0 1 1 0 0 0 0 0 0 0 1 0 0 0", + "x x x x x x x x o o o o o o o o"; + + write = "1 0 1 0 1 1 0 0 1 0 1 0 1 0 0 0", + "x x x x x x x x i i i i i i i i"; + ; + + memory "efuse" + size = 1; + min_write_delay = 4500; + max_write_delay = 4500; + read = "0 1 0 1 0 0 0 0 0 0 0 0 1 0 0 0", + "x x x x x x x x o o o o o o o o"; + + write = "1 0 1 0 1 1 0 0 1 0 1 0 0 1 0 0", + "x x x x x x x x x x x x x x x i"; + ; + + memory "lock" + size = 1; + min_write_delay = 4500; + max_write_delay = 4500; + read = "0 1 0 1 1 0 0 0 0 0 0 0 0 0 0 0", + "x x x x x x x x x x o o o o o o"; + + write = "1 0 1 0 1 1 0 0 1 1 1 x x x x x", + "x x x x x x x x 1 1 i i i i i i"; + ; + + memory "calibration" + size = 1; + read = "0 0 1 1 1 0 0 0 0 0 0 x x x x x", + "0 0 0 0 0 0 0 0 o o o o o o o o"; + ; + + memory "signature" + size = 3; + read = "0 0 1 1 0 0 0 0 0 0 0 x x x x x", + "x x x x x x a1 a0 o o o o o o o o"; + ; + ; + +#------------------------------------------------------------ +# ATmega48P +#------------------------------------------------------------ + +part parent "m48" + id = "m48p"; + desc = "ATmega48P"; + signature = 0x1e 0x92 0x0a; + + ocdrev = 1; + ; + +#------------------------------------------------------------ +# ATmega48PB +#------------------------------------------------------------ + +part parent "m48" + id = "m48pb"; + desc = "ATmega48PB"; + signature = 0x1e 0x92 0x10; + + ocdrev = 1; + ; + +#------------------------------------------------------------ +# ATmega88 +#------------------------------------------------------------ + +part + id = "m88"; + desc = "ATmega88"; + has_debugwire = yes; + flash_instr = 0xB6, 0x01, 0x11; + eeprom_instr = 0xBD, 0xF2, 0xBD, 0xE1, 0xBB, 0xCF, 0xB4, 0x00, + 0xBE, 0x01, 0xB6, 0x01, 0xBC, 0x00, 0xBB, 0xBF, + 0x99, 0xF9, 0xBB, 0xAF; + stk500_devcode = 0x73; +# avr910_devcode = 0x; + signature = 0x1e 0x93 0x0a; + pagel = 0xd7; + bs2 = 0xc2; + chip_erase_delay = 9000; + pgm_enable = "1 0 1 0 1 1 0 0 0 1 0 1 0 0 1 1", + "x x x x x x x x x x x x x x x x"; + + chip_erase = "1 0 1 0 1 1 0 0 1 0 0 x x x x x", + "x x x x x x x x x x x x x x x x"; + + timeout = 200; + stabdelay = 100; + cmdexedelay = 25; + synchloops = 32; + bytedelay = 0; + pollindex = 3; + pollvalue = 0x53; + predelay = 1; + postdelay = 1; + pollmethod = 1; + + pp_controlstack = + 0x0E, 0x1E, 0x0F, 0x1F, 0x2E, 0x3E, 0x2F, 0x3F, + 0x4E, 0x5E, 0x4F, 0x5F, 0x6E, 0x7E, 0x6F, 0x7F, + 0x66, 0x76, 0x67, 0x77, 0x6A, 0x7A, 0x6B, 0x7B, + 0xBE, 0xFD, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00; + hventerstabdelay = 100; + progmodedelay = 0; + latchcycles = 5; + togglevtg = 1; + poweroffdelay = 15; + resetdelayms = 1; + resetdelayus = 0; + hvleavestabdelay = 15; + resetdelay = 15; + chiperasepulsewidth = 0; + chiperasepolltimeout = 10; + programfusepulsewidth = 0; + programfusepolltimeout = 5; + programlockpulsewidth = 0; + programlockpolltimeout = 5; + + ocdrev = 1; + + memory "eeprom" + paged = no; + page_size = 4; + size = 512; + min_write_delay = 3600; + max_write_delay = 3600; + readback_p1 = 0xff; + readback_p2 = 0xff; + read = " 1 0 1 0 0 0 0 0", + " 0 0 0 x x x x a8", + " a7 a6 a5 a4 a3 a2 a1 a0", + " o o o o o o o o"; + + write = " 1 1 0 0 0 0 0 0", + " 0 0 0 x x x x a8", + " a7 a6 a5 a4 a3 a2 a1 a0", + " i i i i i i i i"; + + loadpage_lo = " 1 1 0 0 0 0 0 1", + " 0 0 0 0 0 0 0 0", + " 0 0 0 0 0 0 a1 a0", + " i i i i i i i i"; + + writepage = " 1 1 0 0 0 0 1 0", + " 0 0 x x x x x a8", + " a7 a6 a5 a4 a3 a2 0 0", + " x x x x x x x x"; + + mode = 0x41; + delay = 20; + blocksize = 4; + readsize = 256; + ; + memory "flash" + paged = yes; + size = 8192; + page_size = 64; + num_pages = 128; + min_write_delay = 4500; + max_write_delay = 4500; + readback_p1 = 0xff; + readback_p2 = 0xff; + read_lo = " 0 0 1 0 0 0 0 0", + " 0 0 0 0 a11 a10 a9 a8", + " a7 a6 a5 a4 a3 a2 a1 a0", + " o o o o o o o o"; + + read_hi = " 0 0 1 0 1 0 0 0", + " 0 0 0 0 a11 a10 a9 a8", + " a7 a6 a5 a4 a3 a2 a1 a0", + " o o o o o o o o"; + + loadpage_lo = " 0 1 0 0 0 0 0 0", + " 0 0 0 x x x x x", + " x x x a4 a3 a2 a1 a0", + " i i i i i i i i"; + + loadpage_hi = " 0 1 0 0 1 0 0 0", + " 0 0 0 x x x x x", + " x x x a4 a3 a2 a1 a0", + " i i i i i i i i"; + + writepage = " 0 1 0 0 1 1 0 0", + " 0 0 0 0 a11 a10 a9 a8", + " a7 a6 a5 x x x x x", + " x x x x x x x x"; + + mode = 0x41; + delay = 6; + blocksize = 64; + readsize = 256; + ; + + memory "lfuse" + size = 1; + min_write_delay = 4500; + max_write_delay = 4500; + read = "0 1 0 1 0 0 0 0 0 0 0 0 0 0 0 0", + "x x x x x x x x o o o o o o o o"; + + write = "1 0 1 0 1 1 0 0 1 0 1 0 0 0 0 0", + "x x x x x x x x i i i i i i i i"; + ; + + memory "hfuse" + size = 1; + min_write_delay = 4500; + max_write_delay = 4500; + read = "0 1 0 1 1 0 0 0 0 0 0 0 1 0 0 0", + "x x x x x x x x o o o o o o o o"; + + write = "1 0 1 0 1 1 0 0 1 0 1 0 1 0 0 0", + "x x x x x x x x i i i i i i i i"; + ; + + memory "efuse" + size = 1; + min_write_delay = 4500; + max_write_delay = 4500; + read = "0 1 0 1 0 0 0 0 0 0 0 0 1 0 0 0", + "x x x x x x x x o o o o o o o o"; + + write = "1 0 1 0 1 1 0 0 1 0 1 0 0 1 0 0", + "x x x x x x x x x x x x x i i i"; + ; + + memory "lock" + size = 1; + min_write_delay = 4500; + max_write_delay = 4500; + read = "0 1 0 1 1 0 0 0 0 0 0 0 0 0 0 0", + "x x x x x x x x x x o o o o o o"; + + write = "1 0 1 0 1 1 0 0 1 1 1 x x x x x", + "x x x x x x x x 1 1 i i i i i i"; + ; + + memory "calibration" + size = 1; + read = "0 0 1 1 1 0 0 0 0 0 0 x x x x x", + "0 0 0 0 0 0 0 0 o o o o o o o o"; + ; + + memory "signature" + size = 3; + read = "0 0 1 1 0 0 0 0 0 0 0 x x x x x", + "x x x x x x a1 a0 o o o o o o o o"; + ; + ; + +#------------------------------------------------------------ +# ATmega88P +#------------------------------------------------------------ + +part parent "m88" + id = "m88p"; + desc = "ATmega88P"; + signature = 0x1e 0x93 0x0f; + + ocdrev = 1; + ; + +#------------------------------------------------------------ +# ATmega88PB +#------------------------------------------------------------ + +part parent "m88" + id = "m88pb"; + desc = "ATmega88PB"; + signature = 0x1e 0x93 0x16; + + ocdrev = 1; + ; + +#------------------------------------------------------------ +# ATmega168 +#------------------------------------------------------------ + +part + id = "m168"; + desc = "ATmega168"; + has_debugwire = yes; + flash_instr = 0xB6, 0x01, 0x11; + eeprom_instr = 0xBD, 0xF2, 0xBD, 0xE1, 0xBB, 0xCF, 0xB4, 0x00, + 0xBE, 0x01, 0xB6, 0x01, 0xBC, 0x00, 0xBB, 0xBF, + 0x99, 0xF9, 0xBB, 0xAF; + stk500_devcode = 0x86; + # avr910_devcode = 0x; + signature = 0x1e 0x94 0x06; + pagel = 0xd7; + bs2 = 0xc2; + chip_erase_delay = 9000; + pgm_enable = "1 0 1 0 1 1 0 0 0 1 0 1 0 0 1 1", + "x x x x x x x x x x x x x x x x"; + + chip_erase = "1 0 1 0 1 1 0 0 1 0 0 x x x x x", + "x x x x x x x x x x x x x x x x"; + + timeout = 200; + stabdelay = 100; + cmdexedelay = 25; + synchloops = 32; + bytedelay = 0; + pollindex = 3; + pollvalue = 0x53; + predelay = 1; + postdelay = 1; + pollmethod = 1; + + pp_controlstack = + 0x0E, 0x1E, 0x0F, 0x1F, 0x2E, 0x3E, 0x2F, 0x3F, + 0x4E, 0x5E, 0x4F, 0x5F, 0x6E, 0x7E, 0x6F, 0x7F, + 0x66, 0x76, 0x67, 0x77, 0x6A, 0x7A, 0x6B, 0x7B, + 0xBE, 0xFD, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00; + hventerstabdelay = 100; + progmodedelay = 0; + latchcycles = 5; + togglevtg = 1; + poweroffdelay = 15; + resetdelayms = 1; + resetdelayus = 0; + hvleavestabdelay = 15; + resetdelay = 15; + chiperasepulsewidth = 0; + chiperasepolltimeout = 10; + programfusepulsewidth = 0; + programfusepolltimeout = 5; + programlockpulsewidth = 0; + programlockpolltimeout = 5; + + ocdrev = 1; + + memory "eeprom" + paged = no; + page_size = 4; + size = 512; + min_write_delay = 3600; + max_write_delay = 3600; + readback_p1 = 0xff; + readback_p2 = 0xff; + read = " 1 0 1 0 0 0 0 0", + " 0 0 0 x x x x a8", + " a7 a6 a5 a4 a3 a2 a1 a0", + " o o o o o o o o"; + + write = " 1 1 0 0 0 0 0 0", + " 0 0 0 x x x x a8", + " a7 a6 a5 a4 a3 a2 a1 a0", + " i i i i i i i i"; + + loadpage_lo = " 1 1 0 0 0 0 0 1", + " 0 0 0 0 0 0 0 0", + " 0 0 0 0 0 0 a1 a0", + " i i i i i i i i"; + + writepage = " 1 1 0 0 0 0 1 0", + " 0 0 x x x x x a8", + " a7 a6 a5 a4 a3 a2 0 0", + " x x x x x x x x"; + + mode = 0x41; + delay = 20; + blocksize = 4; + readsize = 256; + ; + + memory "flash" + paged = yes; + size = 16384; + page_size = 128; + num_pages = 128; + min_write_delay = 4500; + max_write_delay = 4500; + readback_p1 = 0xff; + readback_p2 = 0xff; + read_lo = " 0 0 1 0 0 0 0 0", + " 0 0 0 a12 a11 a10 a9 a8", + " a7 a6 a5 a4 a3 a2 a1 a0", + " o o o o o o o o"; + + read_hi = " 0 0 1 0 1 0 0 0", + " 0 0 0 a12 a11 a10 a9 a8", + " a7 a6 a5 a4 a3 a2 a1 a0", + " o o o o o o o o"; + + loadpage_lo = " 0 1 0 0 0 0 0 0", + " 0 0 0 x x x x x", + " x x a5 a4 a3 a2 a1 a0", + " i i i i i i i i"; + + loadpage_hi = " 0 1 0 0 1 0 0 0", + " 0 0 0 x x x x x", + " x x a5 a4 a3 a2 a1 a0", + " i i i i i i i i"; + + writepage = " 0 1 0 0 1 1 0 0", + " 0 0 0 a12 a11 a10 a9 a8", + " a7 a6 x x x x x x", + " x x x x x x x x"; + + mode = 0x41; + delay = 6; + blocksize = 128; + readsize = 256; + + ; + + memory "lfuse" + size = 1; + min_write_delay = 4500; + max_write_delay = 4500; + read = "0 1 0 1 0 0 0 0 0 0 0 0 0 0 0 0", + "x x x x x x x x o o o o o o o o"; + + write = "1 0 1 0 1 1 0 0 1 0 1 0 0 0 0 0", + "x x x x x x x x i i i i i i i i"; + ; + + memory "hfuse" + size = 1; + min_write_delay = 4500; + max_write_delay = 4500; + read = "0 1 0 1 1 0 0 0 0 0 0 0 1 0 0 0", + "x x x x x x x x o o o o o o o o"; + + write = "1 0 1 0 1 1 0 0 1 0 1 0 1 0 0 0", + "x x x x x x x x i i i i i i i i"; + ; + + memory "efuse" + size = 1; + min_write_delay = 4500; + max_write_delay = 4500; + read = "0 1 0 1 0 0 0 0 0 0 0 0 1 0 0 0", + "x x x x x x x x o o o o o o o o"; + + write = "1 0 1 0 1 1 0 0 1 0 1 0 0 1 0 0", + "x x x x x x x x x x x x x i i i"; + ; + + memory "lock" + size = 1; + min_write_delay = 4500; + max_write_delay = 4500; + read = "0 1 0 1 1 0 0 0 0 0 0 0 0 0 0 0", + "x x x x x x x x x x o o o o o o"; + + write = "1 0 1 0 1 1 0 0 1 1 1 x x x x x", + "x x x x x x x x 1 1 i i i i i i"; + ; + + memory "calibration" + size = 1; + read = "0 0 1 1 1 0 0 0 0 0 0 x x x x x", + "0 0 0 0 0 0 0 0 o o o o o o o o"; + ; + + memory "signature" + size = 3; + read = "0 0 1 1 0 0 0 0 0 0 0 x x x x x", + "x x x x x x a1 a0 o o o o o o o o"; + ; +; + +#------------------------------------------------------------ +# ATmega168P +#------------------------------------------------------------ + +part parent "m168" + id = "m168p"; + desc = "ATmega168P"; + signature = 0x1e 0x94 0x0b; + + ocdrev = 1; +; + +#------------------------------------------------------------ +# ATmega168PB +#------------------------------------------------------------ + +part parent "m168" + id = "m168pb"; + desc = "ATmega168PB"; + signature = 0x1e 0x94 0x15; + + ocdrev = 1; +; + +#------------------------------------------------------------ +# ATtiny88 +#------------------------------------------------------------ + +part + id = "t88"; + desc = "ATtiny88"; + has_debugwire = yes; + flash_instr = 0xB6, 0x01, 0x11; + eeprom_instr = 0xBD, 0xF2, 0xBD, 0xE1, 0xBB, 0xCF, 0xB4, 0x00, + 0xBE, 0x01, 0xB6, 0x01, 0xBC, 0x00, 0xBB, 0xBF, + 0x99, 0xF9, 0xBB, 0xAF; + stk500_devcode = 0x73; +# avr910_devcode = 0x; + signature = 0x1e 0x93 0x11; + pagel = 0xd7; + bs2 = 0xc2; + chip_erase_delay = 9000; + pgm_enable = "1 0 1 0 1 1 0 0 0 1 0 1 0 0 1 1", + "x x x x x x x x x x x x x x x x"; + + chip_erase = "1 0 1 0 1 1 0 0 1 0 0 x x x x x", + "x x x x x x x x x x x x x x x x"; + + timeout = 200; + stabdelay = 100; + cmdexedelay = 25; + synchloops = 32; + bytedelay = 0; + pollindex = 3; + pollvalue = 0x53; + predelay = 1; + postdelay = 1; + pollmethod = 1; + + pp_controlstack = + 0x0E, 0x1E, 0x0F, 0x1F, 0x2E, 0x3E, 0x2F, 0x3F, + 0x4E, 0x5E, 0x4F, 0x5F, 0x6E, 0x7E, 0x6F, 0x7F, + 0x66, 0x76, 0x67, 0x77, 0x6A, 0x7A, 0x6B, 0x7B, + 0xBE, 0xFD, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00; + hventerstabdelay = 100; + progmodedelay = 0; + latchcycles = 5; + togglevtg = 1; + poweroffdelay = 15; + resetdelayms = 1; + resetdelayus = 0; + hvleavestabdelay = 15; + resetdelay = 15; + chiperasepulsewidth = 0; + chiperasepolltimeout = 10; + programfusepulsewidth = 0; + programfusepolltimeout = 5; + programlockpulsewidth = 0; + programlockpolltimeout = 5; + + ocdrev = 1; + + memory "eeprom" + paged = no; + page_size = 4; + size = 64; + min_write_delay = 3600; + max_write_delay = 3600; + readback_p1 = 0xff; + readback_p2 = 0xff; + read = " 1 0 1 0 0 0 0 0", + " 0 0 0 x x x x x", + " x a6 a5 a4 a3 a2 a1 a0", + " o o o o o o o o"; + + write = " 1 1 0 0 0 0 0 0", + " 0 0 0 x x x x x", + " x a6 a5 a4 a3 a2 a1 a0", + " i i i i i i i i"; + + loadpage_lo = " 1 1 0 0 0 0 0 1", + " 0 0 0 0 0 0 0 0", + " 0 0 0 0 0 0 a1 a0", + " i i i i i i i i"; + + writepage = " 1 1 0 0 0 0 1 0", + " 0 0 x x x x x x", + " x a6 a5 a4 a3 a2 0 0", + " x x x x x x x x"; + + mode = 0x41; + delay = 20; + blocksize = 4; + readsize = 64; + ; + memory "flash" + paged = yes; + size = 8192; + page_size = 64; + num_pages = 128; + min_write_delay = 4500; + max_write_delay = 4500; + readback_p1 = 0xff; + readback_p2 = 0xff; + read_lo = " 0 0 1 0 0 0 0 0", + " 0 0 0 0 a11 a10 a9 a8", + " a7 a6 a5 a4 a3 a2 a1 a0", + " o o o o o o o o"; + + read_hi = " 0 0 1 0 1 0 0 0", + " 0 0 0 0 a11 a10 a9 a8", + " a7 a6 a5 a4 a3 a2 a1 a0", + " o o o o o o o o"; + + loadpage_lo = " 0 1 0 0 0 0 0 0", + " 0 0 0 x x x x x", + " x x x a4 a3 a2 a1 a0", + " i i i i i i i i"; + + loadpage_hi = " 0 1 0 0 1 0 0 0", + " 0 0 0 x x x x x", + " x x x a4 a3 a2 a1 a0", + " i i i i i i i i"; + + writepage = " 0 1 0 0 1 1 0 0", + " 0 0 0 0 a11 a10 a9 a8", + " a7 a6 a5 x x x x x", + " x x x x x x x x"; + + mode = 0x41; + delay = 6; + blocksize = 64; + readsize = 256; + ; + + memory "lfuse" + size = 1; + min_write_delay = 4500; + max_write_delay = 4500; + read = "0 1 0 1 0 0 0 0 0 0 0 0 0 0 0 0", + "x x x x x x x x o o o o o o o o"; + + write = "1 0 1 0 1 1 0 0 1 0 1 0 0 0 0 0", + "x x x x x x x x i i i i i i i i"; + ; + + memory "hfuse" + size = 1; + min_write_delay = 4500; + max_write_delay = 4500; + read = "0 1 0 1 1 0 0 0 0 0 0 0 1 0 0 0", + "x x x x x x x x o o o o o o o o"; + + write = "1 0 1 0 1 1 0 0 1 0 1 0 1 0 0 0", + "x x x x x x x x i i i i i i i i"; + ; + + memory "efuse" + size = 1; + min_write_delay = 4500; + max_write_delay = 4500; + read = "0 1 0 1 0 0 0 0 0 0 0 0 1 0 0 0", + "x x x x x x x x o o o o o o o o"; + + write = "1 0 1 0 1 1 0 0 1 0 1 0 0 1 0 0", + "x x x x x x x x x x x x x x x i"; + ; + + memory "lock" + size = 1; + min_write_delay = 4500; + max_write_delay = 4500; + read = "0 1 0 1 1 0 0 0 0 0 0 0 0 0 0 0", + "x x x x x x x x x x o o o o o o"; + + write = "1 0 1 0 1 1 0 0 1 1 1 x x x x x", + "x x x x x x x x 1 1 i i i i i i"; + ; + + memory "calibration" + size = 1; + read = "0 0 1 1 1 0 0 0 0 0 0 x x x x x", + "0 0 0 0 0 0 0 0 o o o o o o o o"; + ; + + memory "signature" + size = 3; + read = "0 0 1 1 0 0 0 0 0 0 0 x x x x x", + "x x x x x x a1 a0 o o o o o o o o"; + ; + ; + +#------------------------------------------------------------ +# ATmega328 +#------------------------------------------------------------ + +part + id = "m328"; + desc = "ATmega328"; + has_debugwire = yes; + flash_instr = 0xB6, 0x01, 0x11; + eeprom_instr = 0xBD, 0xF2, 0xBD, 0xE1, 0xBB, 0xCF, 0xB4, 0x00, + 0xBE, 0x01, 0xB6, 0x01, 0xBC, 0x00, 0xBB, 0xBF, + 0x99, 0xF9, 0xBB, 0xAF; + stk500_devcode = 0x86; + # avr910_devcode = 0x; + signature = 0x1e 0x95 0x14; + pagel = 0xd7; + bs2 = 0xc2; + chip_erase_delay = 9000; + pgm_enable = "1 0 1 0 1 1 0 0 0 1 0 1 0 0 1 1", + "x x x x x x x x x x x x x x x x"; + + chip_erase = "1 0 1 0 1 1 0 0 1 0 0 x x x x x", + "x x x x x x x x x x x x x x x x"; + + timeout = 200; + stabdelay = 100; + cmdexedelay = 25; + synchloops = 32; + bytedelay = 0; + pollindex = 3; + pollvalue = 0x53; + predelay = 1; + postdelay = 1; + pollmethod = 1; + + pp_controlstack = + 0x0E, 0x1E, 0x0F, 0x1F, 0x2E, 0x3E, 0x2F, 0x3F, + 0x4E, 0x5E, 0x4F, 0x5F, 0x6E, 0x7E, 0x6F, 0x7F, + 0x66, 0x76, 0x67, 0x77, 0x6A, 0x7A, 0x6B, 0x7B, + 0xBE, 0xFD, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00; + hventerstabdelay = 100; + progmodedelay = 0; + latchcycles = 5; + togglevtg = 1; + poweroffdelay = 15; + resetdelayms = 1; + resetdelayus = 0; + hvleavestabdelay = 15; + resetdelay = 15; + chiperasepulsewidth = 0; + chiperasepolltimeout = 10; + programfusepulsewidth = 0; + programfusepolltimeout = 5; + programlockpulsewidth = 0; + programlockpolltimeout = 5; + + ocdrev = 1; + + memory "eeprom" + paged = no; + page_size = 4; + size = 1024; + min_write_delay = 3600; + max_write_delay = 3600; + readback_p1 = 0xff; + readback_p2 = 0xff; + read = " 1 0 1 0 0 0 0 0", + " 0 0 0 x x x a9 a8", + " a7 a6 a5 a4 a3 a2 a1 a0", + " o o o o o o o o"; + + write = " 1 1 0 0 0 0 0 0", + " 0 0 0 x x x a9 a8", + " a7 a6 a5 a4 a3 a2 a1 a0", + " i i i i i i i i"; + + loadpage_lo = " 1 1 0 0 0 0 0 1", + " 0 0 0 0 0 0 0 0", + " 0 0 0 0 0 0 a1 a0", + " i i i i i i i i"; + + writepage = " 1 1 0 0 0 0 1 0", + " 0 0 x x x x a9 a8", + " a7 a6 a5 a4 a3 a2 0 0", + " x x x x x x x x"; + + mode = 0x41; + delay = 20; + blocksize = 4; + readsize = 256; + ; + + memory "flash" + paged = yes; + size = 32768; + page_size = 128; + num_pages = 256; + min_write_delay = 4500; + max_write_delay = 4500; + readback_p1 = 0xff; + readback_p2 = 0xff; + read_lo = " 0 0 1 0 0 0 0 0", + " 0 0 a13 a12 a11 a10 a9 a8", + " a7 a6 a5 a4 a3 a2 a1 a0", + " o o o o o o o o"; + + read_hi = " 0 0 1 0 1 0 0 0", + " 0 0 a13 a12 a11 a10 a9 a8", + " a7 a6 a5 a4 a3 a2 a1 a0", + " o o o o o o o o"; + + loadpage_lo = " 0 1 0 0 0 0 0 0", + " 0 0 0 x x x x x", + " x x a5 a4 a3 a2 a1 a0", + " i i i i i i i i"; + + loadpage_hi = " 0 1 0 0 1 0 0 0", + " 0 0 0 x x x x x", + " x x a5 a4 a3 a2 a1 a0", + " i i i i i i i i"; + + writepage = " 0 1 0 0 1 1 0 0", + " 0 0 a13 a12 a11 a10 a9 a8", + " a7 a6 x x x x x x", + " x x x x x x x x"; + + mode = 0x41; + delay = 6; + blocksize = 128; + readsize = 256; + + ; + + memory "lfuse" + size = 1; + min_write_delay = 4500; + max_write_delay = 4500; + read = "0 1 0 1 0 0 0 0 0 0 0 0 0 0 0 0", + "x x x x x x x x o o o o o o o o"; + + write = "1 0 1 0 1 1 0 0 1 0 1 0 0 0 0 0", + "x x x x x x x x i i i i i i i i"; + ; + + memory "hfuse" + size = 1; + min_write_delay = 4500; + max_write_delay = 4500; + read = "0 1 0 1 1 0 0 0 0 0 0 0 1 0 0 0", + "x x x x x x x x o o o o o o o o"; + + write = "1 0 1 0 1 1 0 0 1 0 1 0 1 0 0 0", + "x x x x x x x x i i i i i i i i"; + ; + + memory "efuse" + size = 1; + min_write_delay = 4500; + max_write_delay = 4500; + read = "0 1 0 1 0 0 0 0 0 0 0 0 1 0 0 0", + "x x x x x x x x o o o o o o o o"; + + write = "1 0 1 0 1 1 0 0 1 0 1 0 0 1 0 0", + "x x x x x x x x x x x x x i i i"; + ; + + memory "lock" + size = 1; + min_write_delay = 4500; + max_write_delay = 4500; + read = "0 1 0 1 1 0 0 0 0 0 0 0 0 0 0 0", + "x x x x x x x x x x o o o o o o"; + + write = "1 0 1 0 1 1 0 0 1 1 1 x x x x x", + "x x x x x x x x 1 1 i i i i i i"; + ; + + memory "calibration" + size = 1; + read = "0 0 1 1 1 0 0 0 0 0 0 x x x x x", + "0 0 0 0 0 0 0 0 o o o o o o o o"; + ; + + memory "signature" + size = 3; + read = "0 0 1 1 0 0 0 0 0 0 0 x x x x x", + "x x x x x x a1 a0 o o o o o o o o"; + ; +; + +part parent "m328" + id = "m328p"; + desc = "ATmega328P"; + signature = 0x1e 0x95 0x0F; + + ocdrev = 1; +; + +part parent "m328" + id = "m328pb"; + desc = "ATmega328PB"; + signature = 0x1e 0x95 0x16; + + ocdrev = 1; +; + +#------------------------------------------------------------ +# ATmega32m1 +#------------------------------------------------------------ + +part parent "m328" + id = "m32m1"; + desc = "ATmega32M1"; + # stk500_devcode = 0x; + # avr910_devcode = 0x; + signature = 0x1e 0x95 0x84; + bs2 = 0xe2; + + memory "efuse" + read = "0 1 0 1 0 0 0 0 0 0 0 0 1 0 0 0", + "x x x x x x x x o o o o o o o o"; + write = "1 0 1 0 1 1 0 0 1 0 1 0 0 1 0 0", + "x x x x x x x x x x i i i i i i"; + ; +; + +#------------------------------------------------------------ +# ATmega64m1 +#------------------------------------------------------------ + +part parent "m328" + id = "m64m1"; + desc = "ATmega64M1"; + # stk500_devcode = 0x; + # avr910_devcode = 0x; + signature = 0x1e 0x96 0x84; + bs2 = 0xe2; + + memory "efuse" + size = 1; + min_write_delay = 4500; + max_write_delay = 4500; + read = "0 1 0 1 0 0 0 0 0 0 0 0 1 0 0 0", + "x x x x x x x x o o o o o o o o"; + + write = "1 0 1 0 1 1 0 0 1 0 1 0 0 1 0 0", + "x x x x x x x x x x i i i i i i"; + ; +; + +#------------------------------------------------------------ +# ATtiny2313 +#------------------------------------------------------------ + +part + id = "t2313"; + desc = "ATtiny2313"; + has_debugwire = yes; + flash_instr = 0xB2, 0x0F, 0x1F; + eeprom_instr = 0xBB, 0xFE, 0xBB, 0xEE, 0xBB, 0xCC, 0xB2, 0x0D, + 0xBA, 0x0F, 0xB2, 0x0F, 0xBA, 0x0D, 0xBB, 0xBC, + 0x99, 0xE1, 0xBB, 0xAC; + stk500_devcode = 0x23; +## Use the ATtiny26 devcode: + avr910_devcode = 0x5e; + signature = 0x1e 0x91 0x0a; + pagel = 0xD4; + bs2 = 0xD6; + reset = io; + chip_erase_delay = 9000; + + pgm_enable = "1 0 1 0 1 1 0 0 0 1 0 1 0 0 1 1", + "x x x x x x x x x x x x x x x x"; + + chip_erase = "1 0 1 0 1 1 0 0 1 0 0 x x x x x", + "x x x x x x x x x x x x x x x x"; + + timeout = 200; + stabdelay = 100; + cmdexedelay = 25; + synchloops = 32; + bytedelay = 0; + pollindex = 3; + pollvalue = 0x53; + predelay = 1; + postdelay = 1; + pollmethod = 1; + + pp_controlstack = + 0x0E, 0x1E, 0x0E, 0x1E, 0x2E, 0x3E, 0x2E, 0x3E, + 0x4E, 0x5E, 0x4E, 0x5E, 0x6E, 0x7E, 0x6E, 0x7E, + 0x26, 0x36, 0x66, 0x76, 0x2A, 0x3A, 0x6A, 0x7A, + 0x2E, 0xFD, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00; + hventerstabdelay = 100; + progmodedelay = 0; + latchcycles = 5; + togglevtg = 1; + poweroffdelay = 15; + resetdelayms = 1; + resetdelayus = 0; + hvleavestabdelay = 15; + chiperasepulsewidth = 0; + chiperasepolltimeout = 10; + programfusepulsewidth = 0; + programfusepolltimeout = 5; + programlockpulsewidth = 0; + programlockpolltimeout = 5; + + ocdrev = 0; + + memory "eeprom" + size = 128; + paged = no; + page_size = 4; + min_write_delay = 4000; + max_write_delay = 4500; + readback_p1 = 0xff; + readback_p2 = 0xff; + read = "1 0 1 0 0 0 0 0 0 0 0 x x x x x", + "x a6 a5 a4 a3 a2 a1 a0 o o o o o o o o"; + + write = "1 1 0 0 0 0 0 0 0 0 0 x x x x x", + "x a6 a5 a4 a3 a2 a1 a0 i i i i i i i i"; + + loadpage_lo = " 1 1 0 0 0 0 0 1", + " 0 0 0 0 0 0 0 0", + " 0 0 0 0 0 0 a1 a0", + " i i i i i i i i"; + + writepage = " 1 1 0 0 0 0 1 0", + " 0 0 x x x x x x", + " x a6 a5 a4 a3 a2 0 0", + " x x x x x x x x"; + + mode = 0x41; + delay = 6; + blocksize = 4; + readsize = 256; + ; + memory "flash" + paged = yes; + size = 2048; + page_size = 32; + num_pages = 64; + min_write_delay = 4500; + max_write_delay = 4500; + readback_p1 = 0xff; + readback_p2 = 0xff; + read_lo = " 0 0 1 0 0 0 0 0", + " 0 0 0 0 0 0 a9 a8", + " a7 a6 a5 a4 a3 a2 a1 a0", + " o o o o o o o o"; + + read_hi = " 0 0 1 0 1 0 0 0", + " 0 0 0 0 0 0 a9 a8", + " a7 a6 a5 a4 a3 a2 a1 a0", + " o o o o o o o o"; + +# The information in the data sheet of April/2004 is wrong, this works: + loadpage_lo = " 0 1 0 0 0 0 0 0", + " 0 0 0 x x x x x", + " x x x x a3 a2 a1 a0", + " i i i i i i i i"; + +# The information in the data sheet of April/2004 is wrong, this works: + loadpage_hi = " 0 1 0 0 1 0 0 0", + " 0 0 0 x x x x x", + " x x x x a3 a2 a1 a0", + " i i i i i i i i"; + +# The information in the data sheet of April/2004 is wrong, this works: + writepage = " 0 1 0 0 1 1 0 0", + " 0 0 0 0 0 0 a9 a8", + " a7 a6 a5 a4 x x x x", + " x x x x x x x x"; + + mode = 0x41; + delay = 6; + blocksize = 32; + readsize = 256; + ; +# ATtiny2313 has Signature Bytes: 0x1E 0x91 0x0A. + memory "signature" + size = 3; + read = "0 0 1 1 0 0 0 0 0 0 0 x x x x x", + "x x x x x x a1 a0 o o o o o o o o"; + ; + memory "lock" + size = 1; + write = "1 0 1 0 1 1 0 0 1 1 1 x x x x x", + "x x x x x x x x 1 1 i i i i i i"; + read = "0 1 0 1 1 0 0 0 0 0 0 0 0 0 0 0", + "x x x x x x x x x x o o o o o o"; + min_write_delay = 9000; + max_write_delay = 9000; + ; + + memory "lfuse" + size = 1; + write = "1 0 1 0 1 1 0 0 1 0 1 0 0 0 0 0", + "x x x x x x x x i i i i i i i i"; + + read = "0 1 0 1 0 0 0 0 0 0 0 0 0 0 0 0", + "x x x x x x x x o o o o o o o o"; + min_write_delay = 9000; + max_write_delay = 9000; + ; + + memory "hfuse" + size = 1; + write = "1 0 1 0 1 1 0 0 1 0 1 0 1 0 0 0", + "x x x x x x x x i i i i i i i i"; + + read = "0 1 0 1 1 0 0 0 0 0 0 0 1 0 0 0", + "x x x x x x x x o o o o o o o o"; + min_write_delay = 9000; + max_write_delay = 9000; + ; + + memory "efuse" + size = 1; + write = "1 0 1 0 1 1 0 0 1 0 1 0 0 1 0 0", + "x x x x x x x x x x x x x x x i"; + + read = "0 1 0 1 0 0 0 0 0 0 0 0 1 0 0 0", + "x x x x x x x x o o o o o o o o"; + min_write_delay = 9000; + max_write_delay = 9000; + ; +# The Tiny2313 has calibration data for both 4 MHz and 8 MHz. +# The information in the data sheet of April/2004 is wrong, this works: + + memory "calibration" + size = 2; + read = "0 0 1 1 1 0 0 0 0 0 0 x x x x x", + "0 0 0 0 0 0 0 a0 o o o o o o o o"; + ; + ; + +#------------------------------------------------------------ +# ATtiny4313 +#------------------------------------------------------------ + +part + id = "t4313"; + desc = "ATtiny4313"; + has_debugwire = yes; + flash_instr = 0xB2, 0x0F, 0x1F; + eeprom_instr = 0xBB, 0xFE, 0xBB, 0xEE, 0xBB, 0xCC, 0xB2, 0x0D, + 0xBA, 0x0F, 0xB2, 0x0F, 0xBA, 0x0D, 0xBB, 0xBC, + 0x99, 0xE1, 0xBB, 0xAC; + stk500_devcode = 0x23; +## Use the ATtiny26 devcode: + avr910_devcode = 0x5e; + signature = 0x1e 0x92 0x0d; + pagel = 0xD4; + bs2 = 0xD6; + reset = io; + chip_erase_delay = 9000; + + pgm_enable = "1 0 1 0 1 1 0 0 0 1 0 1 0 0 1 1", + "x x x x x x x x x x x x x x x x"; + + chip_erase = "1 0 1 0 1 1 0 0 1 0 0 x x x x x", + "x x x x x x x x x x x x x x x x"; + + timeout = 200; + stabdelay = 100; + cmdexedelay = 25; + synchloops = 32; + bytedelay = 0; + pollindex = 3; + pollvalue = 0x53; + predelay = 1; + postdelay = 1; + pollmethod = 1; + + pp_controlstack = + 0x0E, 0x1E, 0x0E, 0x1E, 0x2E, 0x3E, 0x2E, 0x3E, + 0x4E, 0x5E, 0x4E, 0x5E, 0x6E, 0x7E, 0x6E, 0x7E, + 0x26, 0x36, 0x66, 0x76, 0x2A, 0x3A, 0x6A, 0x7A, + 0x2E, 0xFD, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00; + hventerstabdelay = 100; + progmodedelay = 0; + latchcycles = 5; + togglevtg = 1; + poweroffdelay = 15; + resetdelayms = 1; + resetdelayus = 0; + hvleavestabdelay = 15; + chiperasepulsewidth = 0; + chiperasepolltimeout = 10; + programfusepulsewidth = 0; + programfusepolltimeout = 5; + programlockpulsewidth = 0; + programlockpolltimeout = 5; + + ocdrev = 0; + + memory "eeprom" + size = 256; + paged = no; + page_size = 4; + min_write_delay = 4000; + max_write_delay = 4500; + readback_p1 = 0xff; + readback_p2 = 0xff; + read = "1 0 1 0 0 0 0 0 0 0 0 x x x x x", + "a7 a6 a5 a4 a3 a2 a1 a0 o o o o o o o o"; + + write = "1 1 0 0 0 0 0 0 0 0 0 x x x x x", + "a7 a6 a5 a4 a3 a2 a1 a0 i i i i i i i i"; + + loadpage_lo = " 1 1 0 0 0 0 0 1", + " 0 0 0 0 0 0 0 0", + " 0 0 0 0 0 0 a1 a0", + " i i i i i i i i"; + + writepage = " 1 1 0 0 0 0 1 0", + " 0 0 x x x x x x", + " a7 a6 a5 a4 a3 a2 0 0", + " x x x x x x x x"; + + mode = 0x41; + delay = 6; + blocksize = 4; + readsize = 256; + ; + memory "flash" + paged = yes; + size = 4096; + page_size = 64; + num_pages = 64; + min_write_delay = 4500; + max_write_delay = 4500; + readback_p1 = 0xff; + readback_p2 = 0xff; + read_lo = " 0 0 1 0 0 0 0 0", + " 0 0 0 0 0 a10 a9 a8", + " a7 a6 a5 a4 a3 a2 a1 a0", + " o o o o o o o o"; + + read_hi = " 0 0 1 0 1 0 0 0", + " 0 0 0 0 0 a10 a9 a8", + " a7 a6 a5 a4 a3 a2 a1 a0", + " o o o o o o o o"; + + loadpage_lo = " 0 1 0 0 0 0 0 0", + " 0 0 0 x x x x x", + " x x x a4 a3 a2 a1 a0", + " i i i i i i i i"; + + loadpage_hi = " 0 1 0 0 1 0 0 0", + " 0 0 0 x x x x x", + " x x x a4 a3 a2 a1 a0", + " i i i i i i i i"; + + writepage = " 0 1 0 0 1 1 0 0", + " 0 0 0 0 0 a10 a9 a8", + " a7 a6 a5 x x x x x", + " x x x x x x x x"; + + mode = 0x41; + delay = 6; + blocksize = 32; + readsize = 256; + ; +# ATtiny4313 has Signature Bytes: 0x1E 0x92 0x0D. + memory "signature" + size = 3; + read = "0 0 1 1 0 0 0 0 0 0 0 x x x x x", + "x x x x x x a1 a0 o o o o o o o o"; + ; + memory "lock" + size = 1; + write = "1 0 1 0 1 1 0 0 1 1 1 x x x x x", + "x x x x x x x x 1 1 i i i i i i"; + read = "0 1 0 1 1 0 0 0 0 0 0 0 0 0 0 0", + "x x x x x x x x x x o o o o o o"; + min_write_delay = 9000; + max_write_delay = 9000; + ; + + memory "lfuse" + size = 1; + write = "1 0 1 0 1 1 0 0 1 0 1 0 0 0 0 0", + "x x x x x x x x i i i i i i i i"; + + read = "0 1 0 1 0 0 0 0 0 0 0 0 0 0 0 0", + "x x x x x x x x o o o o o o o o"; + min_write_delay = 9000; + max_write_delay = 9000; + ; + + memory "hfuse" + size = 1; + write = "1 0 1 0 1 1 0 0 1 0 1 0 1 0 0 0", + "x x x x x x x x i i i i i i i i"; + + read = "0 1 0 1 1 0 0 0 0 0 0 0 1 0 0 0", + "x x x x x x x x o o o o o o o o"; + min_write_delay = 9000; + max_write_delay = 9000; + ; + + memory "efuse" + size = 1; + write = "1 0 1 0 1 1 0 0 1 0 1 0 0 1 0 0", + "x x x x x x x x x x x x x x x i"; + + read = "0 1 0 1 0 0 0 0 0 0 0 0 1 0 0 0", + "x x x x x x x x o o o o o o o o"; + min_write_delay = 9000; + max_write_delay = 9000; + ; + + memory "calibration" + size = 2; + read = "0 0 1 1 1 0 0 0 0 0 0 x x x x x", + "0 0 0 0 0 0 0 a0 o o o o o o o o"; + ; + ; + +#------------------------------------------------------------ +# AT90PWM2 +#------------------------------------------------------------ + +part + id = "pwm2"; + desc = "AT90PWM2"; + has_debugwire = yes; + flash_instr = 0xB6, 0x01, 0x11; + eeprom_instr = 0xBD, 0xF2, 0xBD, 0xE1, 0xBB, 0xCF, 0xB4, 0x00, + 0xBE, 0x01, 0xB6, 0x01, 0xBC, 0x00, 0xBB, 0xBF, + 0x99, 0xF9, 0xBB, 0xAF; + stk500_devcode = 0x65; +## avr910_devcode = ?; + signature = 0x1e 0x93 0x81; + pagel = 0xD8; + bs2 = 0xE2; + reset = io; + chip_erase_delay = 9000; + + pgm_enable = "1 0 1 0 1 1 0 0 0 1 0 1 0 0 1 1", + "x x x x x x x x x x x x x x x x"; + + chip_erase = "1 0 1 0 1 1 0 0 1 0 0 x x x x x", + "x x x x x x x x x x x x x x x x"; + + timeout = 200; + stabdelay = 100; + cmdexedelay = 25; + synchloops = 32; + bytedelay = 0; + pollindex = 3; + pollvalue = 0x53; + predelay = 1; + postdelay = 1; + pollmethod = 1; + + pp_controlstack = + 0x0E, 0x1E, 0x0F, 0x1F, 0x2E, 0x3E, 0x2F, 0x3F, + 0x4E, 0x5E, 0x4F, 0x5F, 0x6E, 0x7E, 0x6F, 0x7F, + 0x66, 0x76, 0x67, 0x77, 0x6A, 0x7A, 0x6B, 0x7B, + 0xBE, 0xFD, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00; + hventerstabdelay = 100; + progmodedelay = 0; + latchcycles = 5; + togglevtg = 1; + poweroffdelay = 15; + resetdelayms = 1; + resetdelayus = 0; + hvleavestabdelay = 15; + chiperasepulsewidth = 0; + chiperasepolltimeout = 10; + programfusepulsewidth = 0; + programfusepolltimeout = 5; + programlockpulsewidth = 0; + programlockpolltimeout = 5; + + memory "eeprom" + size = 512; + paged = no; + page_size = 4; + min_write_delay = 4000; + max_write_delay = 4500; + readback_p1 = 0xff; + readback_p2 = 0xff; + read = "1 0 1 0 0 0 0 0 0 0 0 x x x x a8", + "a7 a6 a5 a4 a3 a2 a1 a0 o o o o o o o o"; + + write = "1 1 0 0 0 0 0 0 0 0 0 x x x x a8", + "a7 a6 a5 a4 a3 a2 a1 a0 i i i i i i i i"; + + loadpage_lo = " 1 1 0 0 0 0 0 1", + " 0 0 0 0 0 0 0 0", + " 0 0 0 0 0 0 a1 a0", + " i i i i i i i i"; + + writepage = " 1 1 0 0 0 0 1 0", + " 0 0 x x x x x x", + " a7 a6 a5 a4 a3 a2 0 0", + " x x x x x x x x"; + + mode = 0x41; + delay = 6; + blocksize = 4; + readsize = 256; + ; + memory "flash" + paged = yes; + size = 8192; + page_size = 64; + num_pages = 128; + min_write_delay = 4500; + max_write_delay = 4500; + readback_p1 = 0xff; + readback_p2 = 0xff; + read_lo = " 0 0 1 0 0 0 0 0", + " 0 0 0 0 a11 a10 a9 a8", + " a7 a6 a5 a4 a3 a2 a1 a0", + " o o o o o o o o"; + + read_hi = " 0 0 1 0 1 0 0 0", + " 0 0 0 0 a11 a10 a9 a8", + " a7 a6 a5 a4 a3 a2 a1 a0", + " o o o o o o o o"; + + loadpage_lo = " 0 1 0 0 0 0 0 0", + " 0 0 0 x x x x x", + " x x x a4 a3 a2 a1 a0", + " i i i i i i i i"; + + loadpage_hi = " 0 1 0 0 1 0 0 0", + " 0 0 0 x x x x x", + " x x x a4 a3 a2 a1 a0", + " i i i i i i i i"; + + writepage = " 0 1 0 0 1 1 0 0", + " 0 0 0 0 a11 a10 a9 a8", + " a7 a6 a5 x x x x x", + " x x x x x x x x"; + + mode = 0x41; + delay = 6; + blocksize = 64; + readsize = 256; + ; +# AT90PWM2 has Signature Bytes: 0x1E 0x93 0x81. + memory "signature" + size = 3; + read = "0 0 1 1 0 0 0 0 0 0 x x x x x x", + "x x x x x x a1 a0 o o o o o o o o"; + ; + memory "lock" + size = 1; + write = "1 0 1 0 1 1 0 0 1 1 1 x x x x x", + "x x x x x x x x 1 1 i i i i i i"; + + read = "0 1 0 1 1 0 0 0 0 0 0 0 0 0 0 0", + "x x x x x x x x x x o o o o o o"; + min_write_delay = 9000; + max_write_delay = 9000; + ; + + memory "lfuse" + size = 1; + write = "1 0 1 0 1 1 0 0 1 0 1 0 0 0 0 0", + "x x x x x x x x i i i i i i i i"; + + read = "0 1 0 1 0 0 0 0 0 0 0 0 0 0 0 0", + "x x x x x x x x o o o o o o o o"; + min_write_delay = 9000; + max_write_delay = 9000; + ; + + memory "hfuse" + size = 1; + write = "1 0 1 0 1 1 0 0 1 0 1 0 1 0 0 0", + "x x x x x x x x i i i i i i i i"; + + read = "0 1 0 1 1 0 0 0 0 0 0 0 1 0 0 0", + "x x x x x x x x o o o o o o o o"; + min_write_delay = 9000; + max_write_delay = 9000; + ; + + memory "efuse" + size = 1; + write = "1 0 1 0 1 1 0 0 1 0 1 0 0 1 0 0", + "x x x x x x x x i i i i i i i i"; + + read = "0 1 0 1 0 0 0 0 0 0 0 0 1 0 0 0", + "x x x x x x x x o o o o o o o o"; + min_write_delay = 9000; + max_write_delay = 9000; + ; + + memory "calibration" + size = 1; + read = "0 0 1 1 1 0 0 0 0 0 0 x x x x x", + "0 0 0 0 0 0 0 0 o o o o o o o o"; + ; + ; + +#------------------------------------------------------------ +# AT90PWM3 +#------------------------------------------------------------ + +# Completely identical to AT90PWM2 (including the signature!) + +part parent "pwm2" + id = "pwm3"; + desc = "AT90PWM3"; + ; + +#------------------------------------------------------------ +# AT90PWM2B +#------------------------------------------------------------ +# Same as AT90PWM2 but different signature. + +part parent "pwm2" + id = "pwm2b"; + desc = "AT90PWM2B"; + signature = 0x1e 0x93 0x83; + + ocdrev = 1; + ; + +#------------------------------------------------------------ +# AT90PWM3B +#------------------------------------------------------------ + +# Completely identical to AT90PWM2B (including the signature!) + +part parent "pwm2b" + id = "pwm3b"; + desc = "AT90PWM3B"; + + ocdrev = 1; + ; + +#------------------------------------------------------------ +# AT90PWM316 +#------------------------------------------------------------ + +# Similar to AT90PWM3B, but with 16 kiB flash, 512 B EEPROM, and 1024 B SRAM. + +part parent "pwm3b" + id = "pwm316"; + desc = "AT90PWM316"; + signature = 0x1e 0x94 0x83; + + ocdrev = 1; + + memory "flash" + paged = yes; + size = 16384; + page_size = 128; + num_pages = 128; + min_write_delay = 4500; + max_write_delay = 4500; + readback_p1 = 0xff; + readback_p2 = 0xff; + read_lo = " 0 0 1 0 0 0 0 0", + " 0 0 a13 a12 a11 a10 a9 a8", + " a7 a6 a5 a4 a3 a2 a1 a0", + " o o o o o o o o"; + + read_hi = " 0 0 1 0 1 0 0 0", + " 0 0 a13 a12 a11 a10 a9 a8", + " a7 a6 a5 a4 a3 a2 a1 a0", + " o o o o o o o o"; + + loadpage_lo = " 0 1 0 0 0 0 0 0", + " 0 0 x x x x x x", + " x x a5 a4 a3 a2 a1 a0", + " i i i i i i i i"; + + loadpage_hi = " 0 1 0 0 1 0 0 0", + " 0 0 x x x x x x", + " x x a5 a4 a3 a2 a1 a0", + " i i i i i i i i"; + + writepage = " 0 1 0 0 1 1 0 0", + " 0 0 a13 a12 a11 a10 a9 a8", + " a7 a6 x x x x x x", + " x x x x x x x x"; + + mode = 0x21; + delay = 6; + blocksize = 128; + readsize = 256; + ; + ; + +#------------------------------------------------------------ +# AT90PWM216 +#------------------------------------------------------------ +# Completely identical to AT90PWM316 (including the signature!) + +part parent "pwm316" + id = "pwm216"; + desc = "AT90PWM216"; + ; + +#------------------------------------------------------------ +# ATtiny25 +#------------------------------------------------------------ + +part + id = "t25"; + desc = "ATtiny25"; + has_debugwire = yes; + flash_instr = 0xB4, 0x02, 0x12; + eeprom_instr = 0xBB, 0xFF, 0xBB, 0xEE, 0xBB, 0xCC, 0xB2, 0x0D, + 0xBC, 0x02, 0xB4, 0x02, 0xBA, 0x0D, 0xBB, 0xBC, + 0x99, 0xE1, 0xBB, 0xAC; +## no STK500 devcode in XML file, use the ATtiny45 one + stk500_devcode = 0x14; +## avr910_devcode = ?; +## Try the AT90S2313 devcode: + avr910_devcode = 0x20; + signature = 0x1e 0x91 0x08; + reset = io; + chip_erase_delay = 4500; + + pgm_enable = "1 0 1 0 1 1 0 0 0 1 0 1 0 0 1 1", + "x x x x x x x x x x x x x x x x"; + + chip_erase = "1 0 1 0 1 1 0 0 1 0 0 x x x x x", + "x x x x x x x x x x x x x x x x"; + + timeout = 200; + stabdelay = 100; + cmdexedelay = 25; + synchloops = 32; + bytedelay = 0; + pollindex = 3; + pollvalue = 0x53; + predelay = 1; + postdelay = 1; + pollmethod = 1; + + hvsp_controlstack = + 0x4C, 0x0C, 0x1C, 0x2C, 0x3C, 0x64, 0x74, 0x66, + 0x68, 0x78, 0x68, 0x68, 0x7A, 0x6A, 0x68, 0x78, + 0x78, 0x7D, 0x6D, 0x0C, 0x80, 0x40, 0x20, 0x10, + 0x11, 0x08, 0x04, 0x02, 0x03, 0x08, 0x04, 0x00; + hventerstabdelay = 100; + hvspcmdexedelay = 0; + synchcycles = 6; + latchcycles = 1; + togglevtg = 1; + poweroffdelay = 25; + resetdelayms = 1; + resetdelayus = 0; + hvleavestabdelay = 100; + resetdelay = 25; + chiperasepolltimeout = 40; + chiperasetime = 0; + programfusepolltimeout = 25; + programlockpolltimeout = 25; + + ocdrev = 1; + + memory "eeprom" + size = 128; + paged = no; + page_size = 4; + min_write_delay = 4000; + max_write_delay = 4500; + readback_p1 = 0xff; + readback_p2 = 0xff; + read = "1 0 1 0 0 0 0 0 0 0 0 x x x x x", + "x a6 a5 a4 a3 a2 a1 a0 o o o o o o o o"; + + write = "1 1 0 0 0 0 0 0 0 0 0 x x x x x", + "x a6 a5 a4 a3 a2 a1 a0 i i i i i i i i"; + + loadpage_lo = " 1 1 0 0 0 0 0 1", + " 0 0 0 0 0 0 0 0", + " 0 0 0 0 0 0 a1 a0", + " i i i i i i i i"; + + writepage = " 1 1 0 0 0 0 1 0", + " 0 0 x x x x x x", + " x a6 a5 a4 a3 a2 0 0", + " x x x x x x x x"; + + mode = 0x41; + delay = 6; + blocksize = 4; + readsize = 256; + ; + memory "flash" + paged = yes; + size = 2048; + page_size = 32; + num_pages = 64; + min_write_delay = 4500; + max_write_delay = 4500; + readback_p1 = 0xff; + readback_p2 = 0xff; + read_lo = " 0 0 1 0 0 0 0 0", + " 0 0 0 0 0 0 a9 a8", + " a7 a6 a5 a4 a3 a2 a1 a0", + " o o o o o o o o"; + + read_hi = " 0 0 1 0 1 0 0 0", + " 0 0 0 0 0 0 a9 a8", + " a7 a6 a5 a4 a3 a2 a1 a0", + " o o o o o o o o"; + + loadpage_lo = " 0 1 0 0 0 0 0 0", + " 0 0 0 x x x x x", + " x x x x a3 a2 a1 a0", + " i i i i i i i i"; + + loadpage_hi = " 0 1 0 0 1 0 0 0", + " 0 0 0 x x x x x", + " x x x x a3 a2 a1 a0", + " i i i i i i i i"; + + writepage = " 0 1 0 0 1 1 0 0", + " 0 0 0 0 0 0 a9 a8", + " a7 a6 a5 a4 x x x x", + " x x x x x x x x"; + + mode = 0x41; + delay = 6; + blocksize = 32; + readsize = 256; + ; +# ATtiny25 has Signature Bytes: 0x1E 0x91 0x08. + memory "signature" + size = 3; + read = "0 0 1 1 0 0 0 0 0 0 0 x x x x x", + "x x x x x x a1 a0 o o o o o o o o"; + ; + memory "lock" + size = 1; + write = "1 0 1 0 1 1 0 0 1 1 1 x x x x x", + "x x x x x x x x 1 1 i i i i i i"; + read = "0 1 0 1 1 0 0 0 0 0 0 0 0 0 0 0", + "0 0 0 0 0 0 0 0 o o o o o o o o"; + min_write_delay = 9000; + max_write_delay = 9000; + ; + + memory "lfuse" + size = 1; + write = "1 0 1 0 1 1 0 0 1 0 1 0 0 0 0 0", + "x x x x x x x x i i i i i i i i"; + + read = "0 1 0 1 0 0 0 0 0 0 0 0 0 0 0 0", + "x x x x x x x x o o o o o o o o"; + min_write_delay = 9000; + max_write_delay = 9000; + ; + + memory "hfuse" + size = 1; + write = "1 0 1 0 1 1 0 0 1 0 1 0 1 0 0 0", + "x x x x x x x x i i i i i i i i"; + + read = "0 1 0 1 1 0 0 0 0 0 0 0 1 0 0 0", + "x x x x x x x x o o o o o o o o"; + min_write_delay = 9000; + max_write_delay = 9000; + ; + + memory "efuse" + size = 1; + write = "1 0 1 0 1 1 0 0 1 0 1 0 0 1 0 0", + "x x x x x x x x x x x x x x x i"; + + read = "0 1 0 1 0 0 0 0 0 0 0 0 1 0 0 0", + "x x x x x x x x o o o o o o o o"; + min_write_delay = 9000; + max_write_delay = 9000; + ; + + memory "calibration" + size = 1; + read = "0 0 1 1 1 0 0 0 0 0 0 x x x x x", + "0 0 0 0 0 0 0 a0 o o o o o o o o"; + ; + ; + +#------------------------------------------------------------ +# ATtiny45 +#------------------------------------------------------------ + +part + id = "t45"; + desc = "ATtiny45"; + has_debugwire = yes; + flash_instr = 0xB4, 0x02, 0x12; + eeprom_instr = 0xBB, 0xFF, 0xBB, 0xEE, 0xBB, 0xCC, 0xB2, 0x0D, + 0xBC, 0x02, 0xB4, 0x02, 0xBA, 0x0D, 0xBB, 0xBC, + 0x99, 0xE1, 0xBB, 0xAC; + stk500_devcode = 0x14; +## avr910_devcode = ?; +## Try the AT90S2313 devcode: + avr910_devcode = 0x20; + signature = 0x1e 0x92 0x06; + reset = io; + chip_erase_delay = 4500; + + pgm_enable = "1 0 1 0 1 1 0 0 0 1 0 1 0 0 1 1", + "x x x x x x x x x x x x x x x x"; + + chip_erase = "1 0 1 0 1 1 0 0 1 0 0 x x x x x", + "x x x x x x x x x x x x x x x x"; + + timeout = 200; + stabdelay = 100; + cmdexedelay = 25; + synchloops = 32; + bytedelay = 0; + pollindex = 3; + pollvalue = 0x53; + predelay = 1; + postdelay = 1; + pollmethod = 1; + + hvsp_controlstack = + 0x4C, 0x0C, 0x1C, 0x2C, 0x3C, 0x64, 0x74, 0x66, + 0x68, 0x78, 0x68, 0x68, 0x7A, 0x6A, 0x68, 0x78, + 0x78, 0x7D, 0x6D, 0x0C, 0x80, 0x40, 0x20, 0x10, + 0x11, 0x08, 0x04, 0x02, 0x03, 0x08, 0x04, 0x00; + hventerstabdelay = 100; + progmodedelay = 0; + hvspcmdexedelay = 0; + synchcycles = 6; + latchcycles = 1; + togglevtg = 1; + poweroffdelay = 25; + resetdelayms = 1; + resetdelayus = 0; + hvleavestabdelay = 100; + resetdelay = 25; + chiperasepolltimeout = 40; + chiperasetime = 0; + programfusepolltimeout = 25; + programlockpolltimeout = 25; + + ocdrev = 1; + + memory "eeprom" + size = 256; + page_size = 4; + min_write_delay = 4000; + max_write_delay = 4500; + readback_p1 = 0xff; + readback_p2 = 0xff; + read = "1 0 1 0 0 0 0 0 0 0 0 x x x x x", + "a7 a6 a5 a4 a3 a2 a1 a0 o o o o o o o o"; + + write = "1 1 0 0 0 0 0 0 0 0 0 x x x x x", + "a7 a6 a5 a4 a3 a2 a1 a0 i i i i i i i i"; + + loadpage_lo = " 1 1 0 0 0 0 0 1", + " 0 0 0 0 0 0 0 0", + " 0 0 0 0 0 0 a1 a0", + " i i i i i i i i"; + + writepage = " 1 1 0 0 0 0 1 0", + " 0 0 x x x x x x", + " a7 a6 a5 a4 a3 a2 0 0", + " x x x x x x x x"; + + mode = 0x41; + delay = 6; + blocksize = 4; + readsize = 256; + ; + memory "flash" + paged = yes; + size = 4096; + page_size = 64; + num_pages = 64; + min_write_delay = 4500; + max_write_delay = 4500; + readback_p1 = 0xff; + readback_p2 = 0xff; + read_lo = " 0 0 1 0 0 0 0 0", + " 0 0 0 0 0 a10 a9 a8", + " a7 a6 a5 a4 a3 a2 a1 a0", + " o o o o o o o o"; + + read_hi = " 0 0 1 0 1 0 0 0", + " 0 0 0 0 0 a10 a9 a8", + " a7 a6 a5 a4 a3 a2 a1 a0", + " o o o o o o o o"; + + loadpage_lo = " 0 1 0 0 0 0 0 0", + " 0 0 0 x x x x x", + " x x x a4 a3 a2 a1 a0", + " i i i i i i i i"; + + loadpage_hi = " 0 1 0 0 1 0 0 0", + " 0 0 0 x x x x x", + " x x x a4 a3 a2 a1 a0", + " i i i i i i i i"; + + writepage = " 0 1 0 0 1 1 0 0", + " 0 0 0 0 0 a10 a9 a8", + " a7 a6 a5 x x x x x", + " x x x x x x x x"; + + mode = 0x41; + delay = 6; + blocksize = 32; + readsize = 256; + ; +# ATtiny45 has Signature Bytes: 0x1E 0x92 0x08. (Data sheet 2586C-AVR-06/05 (doc2586.pdf) indicates otherwise!) + memory "signature" + size = 3; + read = "0 0 1 1 0 0 0 0 0 0 0 x x x x x", + "x x x x x x a1 a0 o o o o o o o o"; + ; + memory "lock" + size = 1; + write = "1 0 1 0 1 1 0 0 1 1 1 x x x x x", + "x x x x x x x x 1 1 i i i i i i"; + read = "0 1 0 1 1 0 0 0 0 0 0 0 0 0 0 0", + "0 0 0 0 0 0 0 0 o o o o o o o o"; + min_write_delay = 9000; + max_write_delay = 9000; + ; + + memory "lfuse" + size = 1; + write = "1 0 1 0 1 1 0 0 1 0 1 0 0 0 0 0", + "x x x x x x x x i i i i i i i i"; + + read = "0 1 0 1 0 0 0 0 0 0 0 0 0 0 0 0", + "x x x x x x x x o o o o o o o o"; + min_write_delay = 9000; + max_write_delay = 9000; + ; + + memory "hfuse" + size = 1; + write = "1 0 1 0 1 1 0 0 1 0 1 0 1 0 0 0", + "x x x x x x x x i i i i i i i i"; + + read = "0 1 0 1 1 0 0 0 0 0 0 0 1 0 0 0", + "x x x x x x x x o o o o o o o o"; + min_write_delay = 9000; + max_write_delay = 9000; + ; + + memory "efuse" + size = 1; + write = "1 0 1 0 1 1 0 0 1 0 1 0 0 1 0 0", + "x x x x x x x x x x x x x x x i"; + + read = "0 1 0 1 0 0 0 0 0 0 0 0 1 0 0 0", + "x x x x x x x x o o o o o o o o"; + min_write_delay = 9000; + max_write_delay = 9000; + ; + + memory "calibration" + size = 1; + read = "0 0 1 1 1 0 0 0 0 0 0 x x x x x", + "0 0 0 0 0 0 0 a0 o o o o o o o o"; + ; + ; + +#------------------------------------------------------------ +# ATtiny85 +#------------------------------------------------------------ + +part + id = "t85"; + desc = "ATtiny85"; + has_debugwire = yes; + flash_instr = 0xB4, 0x02, 0x12; + eeprom_instr = 0xBB, 0xFF, 0xBB, 0xEE, 0xBB, 0xCC, 0xB2, 0x0D, + 0xBC, 0x02, 0xB4, 0x02, 0xBA, 0x0D, 0xBB, 0xBC, + 0x99, 0xE1, 0xBB, 0xAC; +## no STK500 devcode in XML file, use the ATtiny45 one + stk500_devcode = 0x14; +## avr910_devcode = ?; +## Try the AT90S2313 devcode: + avr910_devcode = 0x20; + signature = 0x1e 0x93 0x0b; + reset = io; + chip_erase_delay = 400000; + + pgm_enable = "1 0 1 0 1 1 0 0 0 1 0 1 0 0 1 1", + "x x x x x x x x x x x x x x x x"; + + chip_erase = "1 0 1 0 1 1 0 0 1 0 0 x x x x x", + "x x x x x x x x x x x x x x x x"; + + timeout = 200; + stabdelay = 100; + cmdexedelay = 25; + synchloops = 32; + bytedelay = 0; + pollindex = 3; + pollvalue = 0x53; + predelay = 1; + postdelay = 1; + pollmethod = 1; + + hvsp_controlstack = + 0x4C, 0x0C, 0x1C, 0x2C, 0x3C, 0x64, 0x74, 0x66, + 0x68, 0x78, 0x68, 0x68, 0x7A, 0x6A, 0x68, 0x78, + 0x78, 0x7D, 0x6D, 0x0C, 0x80, 0x40, 0x20, 0x10, + 0x11, 0x08, 0x04, 0x02, 0x03, 0x08, 0x04, 0x00; + hventerstabdelay = 100; + hvspcmdexedelay = 0; + synchcycles = 6; + latchcycles = 1; + togglevtg = 1; + poweroffdelay = 25; + resetdelayms = 1; + resetdelayus = 0; + hvleavestabdelay = 100; + resetdelay = 25; + chiperasepolltimeout = 40; + chiperasetime = 0; + programfusepolltimeout = 25; + programlockpolltimeout = 25; + + ocdrev = 1; + + memory "eeprom" + size = 512; + paged = no; + page_size = 4; + min_write_delay = 4000; + max_write_delay = 4500; + readback_p1 = 0xff; + readback_p2 = 0xff; + read = "1 0 1 0 0 0 0 0 0 0 0 x x x x a8", + "a7 a6 a5 a4 a3 a2 a1 a0 o o o o o o o o"; + + write = "1 1 0 0 0 0 0 0 0 0 0 x x x x a8", + "a7 a6 a5 a4 a3 a2 a1 a0 i i i i i i i i"; + + loadpage_lo = " 1 1 0 0 0 0 0 1", + " 0 0 0 0 0 0 0 0", + " 0 0 0 0 0 0 a1 a0", + " i i i i i i i i"; + + writepage = " 1 1 0 0 0 0 1 0", + " 0 0 x x x x x a8", + " a7 a6 a5 a4 a3 a2 0 0", + " x x x x x x x x"; + + mode = 0x41; + delay = 12; + blocksize = 4; + readsize = 256; + ; + memory "flash" + paged = yes; + size = 8192; + page_size = 64; + num_pages = 128; + min_write_delay = 30000; + max_write_delay = 30000; + readback_p1 = 0xff; + readback_p2 = 0xff; + read_lo = " 0 0 1 0 0 0 0 0", + " 0 0 0 0 a11 a10 a9 a8", + " a7 a6 a5 a4 a3 a2 a1 a0", + " o o o o o o o o"; + + read_hi = " 0 0 1 0 1 0 0 0", + " 0 0 0 0 a11 a10 a9 a8", + " a7 a6 a5 a4 a3 a2 a1 a0", + " o o o o o o o o"; + + loadpage_lo = " 0 1 0 0 0 0 0 0", + " 0 0 0 x x x x x", + " x x x a4 a3 a2 a1 a0", + " i i i i i i i i"; + + loadpage_hi = " 0 1 0 0 1 0 0 0", + " 0 0 0 x x x x x", + " x x x a4 a3 a2 a1 a0", + " i i i i i i i i"; + + writepage = " 0 1 0 0 1 1 0 0", + " 0 0 0 0 a11 a10 a9 a8", + " a7 a6 a5 x x x x x", + " x x x x x x x x"; + + mode = 0x41; + delay = 6; + blocksize = 32; + readsize = 256; + ; +# ATtiny85 has Signature Bytes: 0x1E 0x93 0x08. + memory "signature" + size = 3; + read = "0 0 1 1 0 0 0 0 0 0 0 x x x x x", + "x x x x x x a1 a0 o o o o o o o o"; + ; + memory "lock" + size = 1; + write = "1 0 1 0 1 1 0 0 1 1 1 x x x x x", + "x x x x x x x x 1 1 i i i i i i"; + read = "0 1 0 1 1 0 0 0 0 0 0 0 0 0 0 0", + "0 0 0 0 0 0 0 0 o o o o o o o o"; + min_write_delay = 9000; + max_write_delay = 9000; + ; + + memory "lfuse" + size = 1; + write = "1 0 1 0 1 1 0 0 1 0 1 0 0 0 0 0", + "x x x x x x x x i i i i i i i i"; + + read = "0 1 0 1 0 0 0 0 0 0 0 0 0 0 0 0", + "x x x x x x x x o o o o o o o o"; + min_write_delay = 9000; + max_write_delay = 9000; + ; + + memory "hfuse" + size = 1; + write = "1 0 1 0 1 1 0 0 1 0 1 0 1 0 0 0", + "x x x x x x x x i i i i i i i i"; + + read = "0 1 0 1 1 0 0 0 0 0 0 0 1 0 0 0", + "x x x x x x x x o o o o o o o o"; + min_write_delay = 9000; + max_write_delay = 9000; + ; + + memory "efuse" + size = 1; + write = "1 0 1 0 1 1 0 0 1 0 1 0 0 1 0 0", + "x x x x x x x x x x x x x x x i"; + + read = "0 1 0 1 0 0 0 0 0 0 0 0 1 0 0 0", + "x x x x x x x x o o o o o o o o"; + min_write_delay = 9000; + max_write_delay = 9000; + ; + + memory "calibration" + size = 1; + read = "0 0 1 1 1 0 0 0 0 0 0 x x x x x", + "0 0 0 0 0 0 0 a0 o o o o o o o o"; + ; + ; + +#------------------------------------------------------------ +# ATmega640 +#------------------------------------------------------------ +# Almost same as ATmega1280, except for different memory sizes + +part + id = "m640"; + desc = "ATmega640"; + signature = 0x1e 0x96 0x08; + has_jtag = yes; +# stk500_devcode = 0xB2; +# avr910_devcode = 0x43; + chip_erase_delay = 9000; + pagel = 0xD7; + bs2 = 0xA0; + reset = dedicated; + pgm_enable = "1 0 1 0 1 1 0 0 0 1 0 1 0 0 1 1", + "x x x x x x x x x x x x x x x x"; + + chip_erase = "1 0 1 0 1 1 0 0 1 0 0 0 0 0 0 0", + "x x x x x x x x x x x x x x x x"; + + timeout = 200; + stabdelay = 100; + cmdexedelay = 25; + synchloops = 32; + bytedelay = 0; + pollindex = 3; + pollvalue = 0x53; + predelay = 1; + postdelay = 1; + pollmethod = 1; + + pp_controlstack = + 0x0E, 0x1E, 0x0F, 0x1F, 0x2E, 0x3E, 0x2F, 0x3F, + 0x4E, 0x5E, 0x4F, 0x5F, 0x6E, 0x7E, 0x6F, 0x7F, + 0x66, 0x76, 0x67, 0x77, 0x6A, 0x7A, 0x6B, 0x7B, + 0xBE, 0xFD, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00; + hventerstabdelay = 100; + progmodedelay = 0; + latchcycles = 5; + togglevtg = 1; + poweroffdelay = 15; + resetdelayms = 1; + resetdelayus = 0; + hvleavestabdelay = 15; + chiperasepulsewidth = 0; + chiperasepolltimeout = 10; + programfusepulsewidth = 0; + programfusepolltimeout = 5; + programlockpulsewidth = 0; + programlockpolltimeout = 5; + + idr = 0x31; + spmcr = 0x57; + rampz = 0x3b; + allowfullpagebitstream = no; + + ocdrev = 3; + + memory "eeprom" + paged = no; /* leave this "no" */ + page_size = 8; /* for parallel programming */ + size = 4096; + min_write_delay = 9000; + max_write_delay = 9000; + readback_p1 = 0x00; + readback_p2 = 0x00; + read = " 1 0 1 0 0 0 0 0", + " x x x x a11 a10 a9 a8", + " a7 a6 a5 a4 a3 a2 a1 a0", + " o o o o o o o o"; + + write = " 1 1 0 0 0 0 0 0", + " x x x x a11 a10 a9 a8", + " a7 a6 a5 a4 a3 a2 a1 a0", + " i i i i i i i i"; + + loadpage_lo = " 1 1 0 0 0 0 0 1", + " 0 0 0 0 0 0 0 0", + " 0 0 0 0 0 a2 a1 a0", + " i i i i i i i i"; + + writepage = " 1 1 0 0 0 0 1 0", + " 0 0 x x a11 a10 a9 a8", + " a7 a6 a5 a4 a3 0 0 0", + " x x x x x x x x"; + + mode = 0x41; + delay = 10; + blocksize = 8; + readsize = 256; + ; + + memory "flash" + paged = yes; + size = 65536; + page_size = 256; + num_pages = 256; + min_write_delay = 4500; + max_write_delay = 4500; + readback_p1 = 0x00; + readback_p2 = 0x00; + read_lo = " 0 0 1 0 0 0 0 0", + " 0 a14 a13 a12 a11 a10 a9 a8", + " a7 a6 a5 a4 a3 a2 a1 a0", + " o o o o o o o o"; + + read_hi = " 0 0 1 0 1 0 0 0", + " 0 a14 a13 a12 a11 a10 a9 a8", + " a7 a6 a5 a4 a3 a2 a1 a0", + " o o o o o o o o"; + + loadpage_lo = " 0 1 0 0 0 0 0 0", + " x x x x x x x x", + " x a6 a5 a4 a3 a2 a1 a0", + " i i i i i i i i"; + + loadpage_hi = " 0 1 0 0 1 0 0 0", + " x x x x x x x x", + " x a6 a5 a4 a3 a2 a1 a0", + " i i i i i i i i"; + + writepage = " 0 1 0 0 1 1 0 0", + " 0 a14 a13 a12 a11 a10 a9 a8", + " a7 x x x x x x x", + " x x x x x x x x"; + + mode = 0x41; + delay = 10; + blocksize = 256; + readsize = 256; + ; + + memory "lfuse" + size = 1; + write = "1 0 1 0 1 1 0 0 1 0 1 0 0 0 0 0", + "x x x x x x x x i i i i i i i i"; + + read = "0 1 0 1 0 0 0 0 0 0 0 0 0 0 0 0", + "x x x x x x x x o o o o o o o o"; + min_write_delay = 9000; + max_write_delay = 9000; + ; + + memory "hfuse" + size = 1; + write = "1 0 1 0 1 1 0 0 1 0 1 0 1 0 0 0", + "x x x x x x x x i i i i i i i i"; + + read = "0 1 0 1 1 0 0 0 0 0 0 0 1 0 0 0", + "x x x x x x x x o o o o o o o o"; + min_write_delay = 9000; + max_write_delay = 9000; + ; + + memory "efuse" + size = 1; + write = "1 0 1 0 1 1 0 0 1 0 1 0 0 1 0 0", + "x x x x x x x x x x x x x i i i"; + + read = "0 1 0 1 0 0 0 0 0 0 0 0 1 0 0 0", + "x x x x x x x x o o o o o o o o"; + min_write_delay = 9000; + max_write_delay = 9000; + ; + + memory "lock" + size = 1; + read = "0 1 0 1 1 0 0 0 0 0 0 0 0 0 0 0", + "x x x x x x x x x x o o o o o o"; + + write = "1 0 1 0 1 1 0 0 1 1 1 x x x x x", + "x x x x x x x x 1 1 i i i i i i"; + min_write_delay = 9000; + max_write_delay = 9000; + ; + + memory "calibration" + size = 1; + read = "0 0 1 1 1 0 0 0 x x x x x x x x", + "0 0 0 0 0 0 0 0 o o o o o o o o"; + ; + + memory "signature" + size = 3; + read = "0 0 1 1 0 0 0 0 x x x x x x x x", + "x x x x x x a1 a0 o o o o o o o o"; + ; + ; + +#------------------------------------------------------------ +# ATmega1280 +#------------------------------------------------------------ + +part + id = "m1280"; + desc = "ATmega1280"; + signature = 0x1e 0x97 0x03; + has_jtag = yes; +# stk500_devcode = 0xB2; +# avr910_devcode = 0x43; + chip_erase_delay = 9000; + pagel = 0xD7; + bs2 = 0xA0; + reset = dedicated; + pgm_enable = "1 0 1 0 1 1 0 0 0 1 0 1 0 0 1 1", + "x x x x x x x x x x x x x x x x"; + + chip_erase = "1 0 1 0 1 1 0 0 1 0 0 0 0 0 0 0", + "x x x x x x x x x x x x x x x x"; + + timeout = 200; + stabdelay = 100; + cmdexedelay = 25; + synchloops = 32; + bytedelay = 0; + pollindex = 3; + pollvalue = 0x53; + predelay = 1; + postdelay = 1; + pollmethod = 1; + + pp_controlstack = + 0x0E, 0x1E, 0x0F, 0x1F, 0x2E, 0x3E, 0x2F, 0x3F, + 0x4E, 0x5E, 0x4F, 0x5F, 0x6E, 0x7E, 0x6F, 0x7F, + 0x66, 0x76, 0x67, 0x77, 0x6A, 0x7A, 0x6B, 0x7B, + 0xBE, 0xFD, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00; + hventerstabdelay = 100; + progmodedelay = 0; + latchcycles = 5; + togglevtg = 1; + poweroffdelay = 15; + resetdelayms = 1; + resetdelayus = 0; + hvleavestabdelay = 15; + chiperasepulsewidth = 0; + chiperasepolltimeout = 10; + programfusepulsewidth = 0; + programfusepolltimeout = 5; + programlockpulsewidth = 0; + programlockpolltimeout = 5; + + idr = 0x31; + spmcr = 0x57; + rampz = 0x3b; + allowfullpagebitstream = no; + + ocdrev = 3; + + memory "eeprom" + paged = no; /* leave this "no" */ + page_size = 8; /* for parallel programming */ + size = 4096; + min_write_delay = 9000; + max_write_delay = 9000; + readback_p1 = 0x00; + readback_p2 = 0x00; + read = " 1 0 1 0 0 0 0 0", + " x x x x a11 a10 a9 a8", + " a7 a6 a5 a4 a3 a2 a1 a0", + " o o o o o o o o"; + + write = " 1 1 0 0 0 0 0 0", + " x x x x a11 a10 a9 a8", + " a7 a6 a5 a4 a3 a2 a1 a0", + " i i i i i i i i"; + + loadpage_lo = " 1 1 0 0 0 0 0 1", + " 0 0 0 0 0 0 0 0", + " 0 0 0 0 0 a2 a1 a0", + " i i i i i i i i"; + + writepage = " 1 1 0 0 0 0 1 0", + " 0 0 x x a11 a10 a9 a8", + " a7 a6 a5 a4 a3 0 0 0", + " x x x x x x x x"; + + mode = 0x41; + delay = 10; + blocksize = 8; + readsize = 256; + ; + + memory "flash" + paged = yes; + size = 131072; + page_size = 256; + num_pages = 512; + min_write_delay = 4500; + max_write_delay = 4500; + readback_p1 = 0x00; + readback_p2 = 0x00; + read_lo = " 0 0 1 0 0 0 0 0", + "a15 a14 a13 a12 a11 a10 a9 a8", + " a7 a6 a5 a4 a3 a2 a1 a0", + " o o o o o o o o"; + + read_hi = " 0 0 1 0 1 0 0 0", + "a15 a14 a13 a12 a11 a10 a9 a8", + " a7 a6 a5 a4 a3 a2 a1 a0", + " o o o o o o o o"; + + loadpage_lo = " 0 1 0 0 0 0 0 0", + " x x x x x x x x", + " x a6 a5 a4 a3 a2 a1 a0", + " i i i i i i i i"; + + loadpage_hi = " 0 1 0 0 1 0 0 0", + " x x x x x x x x", + " x a6 a5 a4 a3 a2 a1 a0", + " i i i i i i i i"; + + writepage = " 0 1 0 0 1 1 0 0", + "a15 a14 a13 a12 a11 a10 a9 a8", + " a7 x x x x x x x", + " x x x x x x x x"; + + mode = 0x41; + delay = 10; + blocksize = 256; + readsize = 256; + ; + + memory "lfuse" + size = 1; + write = "1 0 1 0 1 1 0 0 1 0 1 0 0 0 0 0", + "x x x x x x x x i i i i i i i i"; + + read = "0 1 0 1 0 0 0 0 0 0 0 0 0 0 0 0", + "x x x x x x x x o o o o o o o o"; + min_write_delay = 9000; + max_write_delay = 9000; + ; + + memory "hfuse" + size = 1; + write = "1 0 1 0 1 1 0 0 1 0 1 0 1 0 0 0", + "x x x x x x x x i i i i i i i i"; + + read = "0 1 0 1 1 0 0 0 0 0 0 0 1 0 0 0", + "x x x x x x x x o o o o o o o o"; + min_write_delay = 9000; + max_write_delay = 9000; + ; + + memory "efuse" + size = 1; + write = "1 0 1 0 1 1 0 0 1 0 1 0 0 1 0 0", + "x x x x x x x x x x x x x i i i"; + + read = "0 1 0 1 0 0 0 0 0 0 0 0 1 0 0 0", + "x x x x x x x x o o o o o o o o"; + min_write_delay = 9000; + max_write_delay = 9000; + ; + + memory "lock" + size = 1; + read = "0 1 0 1 1 0 0 0 0 0 0 0 0 0 0 0", + "x x x x x x x x x x o o o o o o"; + + write = "1 0 1 0 1 1 0 0 1 1 1 x x x x x", + "x x x x x x x x 1 1 i i i i i i"; + min_write_delay = 9000; + max_write_delay = 9000; + ; + + memory "calibration" + size = 1; + read = "0 0 1 1 1 0 0 0 x x x x x x x x", + "0 0 0 0 0 0 0 0 o o o o o o o o"; + ; + + memory "signature" + size = 3; + read = "0 0 1 1 0 0 0 0 x x x x x x x x", + "x x x x x x a1 a0 o o o o o o o o"; + ; + ; + +#------------------------------------------------------------ +# ATmega1281 +#------------------------------------------------------------ +# Identical to ATmega1280 + +part parent "m1280" + id = "m1281"; + desc = "ATmega1281"; + signature = 0x1e 0x97 0x04; + + ocdrev = 3; + ; + +#------------------------------------------------------------ +# ATmega2560 +#------------------------------------------------------------ + +part + id = "m2560"; + desc = "ATmega2560"; + signature = 0x1e 0x98 0x01; + has_jtag = yes; + stk500_devcode = 0xB2; +# avr910_devcode = 0x43; + chip_erase_delay = 9000; + pagel = 0xD7; + bs2 = 0xA0; + reset = dedicated; + pgm_enable = "1 0 1 0 1 1 0 0 0 1 0 1 0 0 1 1", + "x x x x x x x x x x x x x x x x"; + + chip_erase = "1 0 1 0 1 1 0 0 1 0 0 0 0 0 0 0", + "x x x x x x x x x x x x x x x x"; + + timeout = 200; + stabdelay = 100; + cmdexedelay = 25; + synchloops = 32; + bytedelay = 0; + pollindex = 3; + pollvalue = 0x53; + predelay = 1; + postdelay = 1; + pollmethod = 1; + + pp_controlstack = + 0x0E, 0x1E, 0x0F, 0x1F, 0x2E, 0x3E, 0x2F, 0x3F, + 0x4E, 0x5E, 0x4F, 0x5F, 0x6E, 0x7E, 0x6F, 0x7F, + 0x66, 0x76, 0x67, 0x77, 0x6A, 0x7A, 0x6B, 0x7B, + 0xBE, 0xFD, 0x00, 0x01, 0x00, 0x00, 0x00, 0x02; + hventerstabdelay = 100; + progmodedelay = 0; + latchcycles = 5; + togglevtg = 1; + poweroffdelay = 15; + resetdelayms = 1; + resetdelayus = 0; + hvleavestabdelay = 15; + chiperasepulsewidth = 0; + chiperasepolltimeout = 10; + programfusepulsewidth = 0; + programfusepolltimeout = 5; + programlockpulsewidth = 0; + programlockpolltimeout = 5; + + idr = 0x31; + spmcr = 0x57; + rampz = 0x3b; + allowfullpagebitstream = no; + + ocdrev = 4; + + memory "eeprom" + paged = no; /* leave this "no" */ + page_size = 8; /* for parallel programming */ + size = 4096; + min_write_delay = 9000; + max_write_delay = 9000; + readback_p1 = 0x00; + readback_p2 = 0x00; + read = " 1 0 1 0 0 0 0 0", + " x x x x a11 a10 a9 a8", + " a7 a6 a5 a4 a3 a2 a1 a0", + " o o o o o o o o"; + + write = " 1 1 0 0 0 0 0 0", + " x x x x a11 a10 a9 a8", + " a7 a6 a5 a4 a3 a2 a1 a0", + " i i i i i i i i"; + + loadpage_lo = " 1 1 0 0 0 0 0 1", + " 0 0 0 0 0 0 0 0", + " 0 0 0 0 0 a2 a1 a0", + " i i i i i i i i"; + + writepage = " 1 1 0 0 0 0 1 0", + " 0 0 x x a11 a10 a9 a8", + " a7 a6 a5 a4 a3 0 0 0", + " x x x x x x x x"; + + mode = 0x41; + delay = 10; + blocksize = 8; + readsize = 256; + ; + + memory "flash" + paged = yes; + size = 262144; + page_size = 256; + num_pages = 1024; + min_write_delay = 4500; + max_write_delay = 4500; + readback_p1 = 0x00; + readback_p2 = 0x00; + read_lo = " 0 0 1 0 0 0 0 0", + "a15 a14 a13 a12 a11 a10 a9 a8", + " a7 a6 a5 a4 a3 a2 a1 a0", + " o o o o o o o o"; + + read_hi = " 0 0 1 0 1 0 0 0", + "a15 a14 a13 a12 a11 a10 a9 a8", + " a7 a6 a5 a4 a3 a2 a1 a0", + " o o o o o o o o"; + + loadpage_lo = " 0 1 0 0 0 0 0 0", + " x x x x x x x x", + " x a6 a5 a4 a3 a2 a1 a0", + " i i i i i i i i"; + + loadpage_hi = " 0 1 0 0 1 0 0 0", + " x x x x x x x x", + " x a6 a5 a4 a3 a2 a1 a0", + " i i i i i i i i"; + + writepage = " 0 1 0 0 1 1 0 0", + "a15 a14 a13 a12 a11 a10 a9 a8", + " a7 x x x x x x x", + " x x x x x x x x"; + + load_ext_addr = " 0 1 0 0 1 1 0 1", + " 0 0 0 0 0 0 0 0", + " 0 0 0 0 0 0 0 a16", + " 0 0 0 0 0 0 0 0"; + + mode = 0x41; + delay = 10; + blocksize = 256; + readsize = 256; + ; + + memory "lfuse" + size = 1; + write = "1 0 1 0 1 1 0 0 1 0 1 0 0 0 0 0", + "x x x x x x x x i i i i i i i i"; + + read = "0 1 0 1 0 0 0 0 0 0 0 0 0 0 0 0", + "x x x x x x x x o o o o o o o o"; + min_write_delay = 9000; + max_write_delay = 9000; + ; + + memory "hfuse" + size = 1; + write = "1 0 1 0 1 1 0 0 1 0 1 0 1 0 0 0", + "x x x x x x x x i i i i i i i i"; + + read = "0 1 0 1 1 0 0 0 0 0 0 0 1 0 0 0", + "x x x x x x x x o o o o o o o o"; + min_write_delay = 9000; + max_write_delay = 9000; + ; + + memory "efuse" + size = 1; + write = "1 0 1 0 1 1 0 0 1 0 1 0 0 1 0 0", + "x x x x x x x x x x x x x i i i"; + + read = "0 1 0 1 0 0 0 0 0 0 0 0 1 0 0 0", + "x x x x x x x x o o o o o o o o"; + min_write_delay = 9000; + max_write_delay = 9000; + ; + + memory "lock" + size = 1; + read = "0 1 0 1 1 0 0 0 0 0 0 0 0 0 0 0", + "x x x x x x x x x x o o o o o o"; + + write = "1 0 1 0 1 1 0 0 1 1 1 x x x x x", + "x x x x x x x x 1 1 i i i i i i"; + min_write_delay = 9000; + max_write_delay = 9000; + ; + + memory "calibration" + size = 1; + read = "0 0 1 1 1 0 0 0 x x x x x x x x", + "0 0 0 0 0 0 0 0 o o o o o o o o"; + ; + + memory "signature" + size = 3; + read = "0 0 1 1 0 0 0 0 x x x x x x x x", + "x x x x x x a1 a0 o o o o o o o o"; + ; + ; + +#------------------------------------------------------------ +# ATmega2561 +#------------------------------------------------------------ + +part parent "m2560" + id = "m2561"; + desc = "ATmega2561"; + signature = 0x1e 0x98 0x02; + + ocdrev = 4; + ; + +#------------------------------------------------------------ +# ATmega128RFA1 +#------------------------------------------------------------ +# Identical to ATmega2561 but half the ROM + +part parent "m2561" + id = "m128rfa1"; + desc = "ATmega128RFA1"; + signature = 0x1e 0xa7 0x01; + chip_erase_delay = 55000; + bs2 = 0xE2; + + ocdrev = 3; + + memory "flash" + paged = yes; + size = 131072; + page_size = 256; + num_pages = 512; + min_write_delay = 50000; + max_write_delay = 50000; + readback_p1 = 0x00; + readback_p2 = 0x00; + read_lo = " 0 0 1 0 0 0 0 0", + "a15 a14 a13 a12 a11 a10 a9 a8", + " a7 a6 a5 a4 a3 a2 a1 a0", + " o o o o o o o o"; + + read_hi = " 0 0 1 0 1 0 0 0", + "a15 a14 a13 a12 a11 a10 a9 a8", + " a7 a6 a5 a4 a3 a2 a1 a0", + " o o o o o o o o"; + + loadpage_lo = " 0 1 0 0 0 0 0 0", + " x x x x x x x x", + " x a6 a5 a4 a3 a2 a1 a0", + " i i i i i i i i"; + + loadpage_hi = " 0 1 0 0 1 0 0 0", + " x x x x x x x x", + " x a6 a5 a4 a3 a2 a1 a0", + " i i i i i i i i"; + + writepage = " 0 1 0 0 1 1 0 0", + "a15 a14 a13 a12 a11 a10 a9 a8", + " a7 x x x x x x x", + " x x x x x x x x"; + + mode = 0x41; + delay = 20; + blocksize = 256; + readsize = 256; + ; + ; + +#------------------------------------------------------------ +# ATmega256RFR2 +#------------------------------------------------------------ + +part parent "m2561" + id = "m256rfr2"; + desc = "ATmega256RFR2"; + signature = 0x1e 0xa8 0x02; + chip_erase_delay = 18500; + bs2 = 0xE2; + + memory "eeprom" + paged = no; /* leave this "no" */ + page_size = 8; /* for parallel programming */ + size = 8192; + min_write_delay = 13000; + max_write_delay = 13000; + readback_p1 = 0x00; + readback_p2 = 0x00; + read = " 1 0 1 0 0 0 0 0", + " x x x a12 a11 a10 a9 a8", + " a7 a6 a5 a4 a3 a2 a1 a0", + " o o o o o o o o"; + + write = " 1 1 0 0 0 0 0 0", + " x x x a12 a11 a10 a9 a8", + " a7 a6 a5 a4 a3 a2 a1 a0", + " i i i i i i i i"; + + loadpage_lo = " 1 1 0 0 0 0 0 1", + " 0 0 0 0 0 0 0 0", + " 0 0 0 0 0 a2 a1 a0", + " i i i i i i i i"; + + writepage = " 1 1 0 0 0 0 1 0", + " 0 0 x a12 a11 a10 a9 a8", + " a7 a6 a5 a4 a3 0 0 0", + " x x x x x x x x"; + + mode = 0x41; + delay = 10; + blocksize = 8; + readsize = 256; + ; + + + ocdrev = 4; + ; + +#------------------------------------------------------------ +# ATmega128RFR2 +#------------------------------------------------------------ + +part parent "m128rfa1" + id = "m128rfr2"; + desc = "ATmega128RFR2"; + signature = 0x1e 0xa7 0x02; + + + ocdrev = 3; + ; + +#------------------------------------------------------------ +# ATmega64RFR2 +#------------------------------------------------------------ + +part parent "m128rfa1" + id = "m64rfr2"; + desc = "ATmega64RFR2"; + signature = 0x1e 0xa6 0x02; + + + ocdrev = 3; + + memory "flash" + paged = yes; + size = 65536; + page_size = 256; + num_pages = 256; + min_write_delay = 50000; + max_write_delay = 50000; + readback_p1 = 0x00; + readback_p2 = 0x00; + read_lo = " 0 0 1 0 0 0 0 0", + " 0 a14 a13 a12 a11 a10 a9 a8", + " a7 a6 a5 a4 a3 a2 a1 a0", + " o o o o o o o o"; + + read_hi = " 0 0 1 0 1 0 0 0", + " 0 a14 a13 a12 a11 a10 a9 a8", + " a7 a6 a5 a4 a3 a2 a1 a0", + " o o o o o o o o"; + + loadpage_lo = " 0 1 0 0 0 0 0 0", + " x x x x x x x x", + " x a6 a5 a4 a3 a2 a1 a0", + " i i i i i i i i"; + + loadpage_hi = " 0 1 0 0 1 0 0 0", + " x x x x x x x x", + " x a6 a5 a4 a3 a2 a1 a0", + " i i i i i i i i"; + + writepage = " 0 1 0 0 1 1 0 0", + " 0 a14 a13 a12 a11 a10 a9 a8", + " a7 x x x x x x x", + " x x x x x x x x"; + + mode = 0x41; + delay = 20; + blocksize = 256; + readsize = 256; + ; + + memory "eeprom" + paged = no; /* leave this "no" */ + page_size = 8; /* for parallel programming */ + size = 2048; + min_write_delay = 13000; + max_write_delay = 13000; + readback_p1 = 0x00; + readback_p2 = 0x00; + read = " 1 0 1 0 0 0 0 0", + " x x x x x a10 a9 a8", + " a7 a6 a5 a4 a3 a2 a1 a0", + " o o o o o o o o"; + + write = " 1 1 0 0 0 0 0 0", + " x x x x x a10 a9 a8", + " a7 a6 a5 a4 a3 a2 a1 a0", + " i i i i i i i i"; + + loadpage_lo = " 1 1 0 0 0 0 0 1", + " 0 0 0 0 0 0 0 0", + " 0 0 0 0 0 a2 a1 a0", + " i i i i i i i i"; + + writepage = " 1 1 0 0 0 0 1 0", + " 0 0 x x x a10 a9 a8", + " a7 a6 a5 a4 a3 0 0 0", + " x x x x x x x x"; + + mode = 0x41; + delay = 10; + blocksize = 8; + readsize = 256; + ; + + + ; + +#------------------------------------------------------------ +# ATmega2564RFR2 +#------------------------------------------------------------ + +part parent "m256rfr2" + id = "m2564rfr2"; + desc = "ATmega2564RFR2"; + signature = 0x1e 0xa8 0x03; + ; + +#------------------------------------------------------------ +# ATmega1284RFR2 +#------------------------------------------------------------ + +part parent "m128rfr2" + id = "m1284rfr2"; + desc = "ATmega1284RFR2"; + signature = 0x1e 0xa7 0x03; + ; + +#------------------------------------------------------------ +# ATmega644RFR2 +#------------------------------------------------------------ + +part parent "m64rfr2" + id = "m644rfr2"; + desc = "ATmega644RFR2"; + signature = 0x1e 0xa6 0x03; + ; + +#------------------------------------------------------------ +# ATtiny24 +#------------------------------------------------------------ + +part + id = "t24"; + desc = "ATtiny24"; + has_debugwire = yes; + flash_instr = 0xB4, 0x07, 0x17; + eeprom_instr = 0xBB, 0xFF, 0xBB, 0xEE, 0xBB, 0xCC, 0xB2, 0x0D, + 0xBC, 0x07, 0xB4, 0x07, 0xBA, 0x0D, 0xBB, 0xBC, + 0x99, 0xE1, 0xBB, 0xAC; +## no STK500 devcode in XML file, use the ATtiny45 one + stk500_devcode = 0x14; +## avr910_devcode = ?; +## Try the AT90S2313 devcode: + avr910_devcode = 0x20; + signature = 0x1e 0x91 0x0b; + reset = io; + chip_erase_delay = 4500; + + pgm_enable = "1 0 1 0 1 1 0 0 0 1 0 1 0 0 1 1", + "x x x x x x x x x x x x x x x x"; + + chip_erase = "1 0 1 0 1 1 0 0 1 0 0 x x x x x", + "x x x x x x x x x x x x x x x x"; + + timeout = 200; + stabdelay = 100; + cmdexedelay = 25; + synchloops = 32; + bytedelay = 0; + pollindex = 3; + pollvalue = 0x53; + predelay = 1; + postdelay = 1; + pollmethod = 1; + + hvsp_controlstack = + 0x4C, 0x0C, 0x1C, 0x2C, 0x3C, 0x64, 0x74, 0x66, + 0x68, 0x78, 0x68, 0x68, 0x7A, 0x6A, 0x68, 0x78, + 0x78, 0x7D, 0x6D, 0x0C, 0x80, 0x40, 0x20, 0x10, + 0x11, 0x08, 0x04, 0x02, 0x03, 0x08, 0x04, 0x0F; + hventerstabdelay = 100; + hvspcmdexedelay = 0; + synchcycles = 6; + latchcycles = 1; + togglevtg = 1; + poweroffdelay = 25; + resetdelayms = 0; + resetdelayus = 70; + hvleavestabdelay = 100; + resetdelay = 25; + chiperasepolltimeout = 40; + chiperasetime = 0; + programfusepolltimeout = 25; + programlockpolltimeout = 25; + + ocdrev = 1; + + memory "eeprom" + size = 128; + paged = no; + page_size = 4; + min_write_delay = 4000; + max_write_delay = 4500; + readback_p1 = 0xff; + readback_p2 = 0xff; + read = "1 0 1 0 0 0 0 0 0 0 0 x x x x x", + "x a6 a5 a4 a3 a2 a1 a0 o o o o o o o o"; + + write = "1 1 0 0 0 0 0 0 0 0 0 x x x x x", + "x a6 a5 a4 a3 a2 a1 a0 i i i i i i i i"; + + loadpage_lo = " 1 1 0 0 0 0 0 1", + " 0 0 0 0 0 0 0 0", + " 0 0 0 0 0 0 a1 a0", + " i i i i i i i i"; + + writepage = " 1 1 0 0 0 0 1 0", + " 0 0 x x x x x x", + " x a6 a5 a4 a3 a2 0 0", + " x x x x x x x x"; + + mode = 0x41; + delay = 6; + blocksize = 4; + readsize = 256; + ; + memory "flash" + paged = yes; + size = 2048; + page_size = 32; + num_pages = 64; + min_write_delay = 4500; + max_write_delay = 4500; + readback_p1 = 0xff; + readback_p2 = 0xff; + read_lo = " 0 0 1 0 0 0 0 0", + " 0 0 0 0 0 0 a9 a8", + " a7 a6 a5 a4 a3 a2 a1 a0", + " o o o o o o o o"; + + read_hi = " 0 0 1 0 1 0 0 0", + " 0 0 0 0 0 0 a9 a8", + " a7 a6 a5 a4 a3 a2 a1 a0", + " o o o o o o o o"; + + loadpage_lo = " 0 1 0 0 0 0 0 0", + " 0 0 0 x x x x x", + " x x x x a3 a2 a1 a0", + " i i i i i i i i"; + + loadpage_hi = " 0 1 0 0 1 0 0 0", + " 0 0 0 x x x x x", + " x x x x a3 a2 a1 a0", + " i i i i i i i i"; + + writepage = " 0 1 0 0 1 1 0 0", + " 0 0 0 0 0 0 a9 a8", + " a7 a6 a5 a4 x x x x", + " x x x x x x x x"; + + mode = 0x41; + delay = 6; + blocksize = 32; + readsize = 256; + ; +# ATtiny24 has Signature Bytes: 0x1E 0x91 0x0B. + memory "signature" + size = 3; + read = "0 0 1 1 0 0 0 0 0 0 0 x x x x x", + "x x x x x x a1 a0 o o o o o o o o"; + ; + memory "lock" + size = 1; + write = "1 0 1 0 1 1 0 0 1 1 1 x x x x x", + "x x x x x x x x x x x x x x i i"; + read = "0 1 0 1 1 0 0 0 0 0 0 0 0 0 0 0", + "0 0 0 0 0 0 0 0 o o o o o o o o"; + min_write_delay = 9000; + max_write_delay = 9000; + ; + + memory "lfuse" + size = 1; + write = "1 0 1 0 1 1 0 0 1 0 1 0 0 0 0 0", + "x x x x x x x x i i i i i i i i"; + + read = "0 1 0 1 0 0 0 0 0 0 0 0 0 0 0 0", + "x x x x x x x x o o o o o o o o"; + min_write_delay = 9000; + max_write_delay = 9000; + ; + + memory "hfuse" + size = 1; + write = "1 0 1 0 1 1 0 0 1 0 1 0 1 0 0 0", + "x x x x x x x x i i i i i i i i"; + + read = "0 1 0 1 1 0 0 0 0 0 0 0 1 0 0 0", + "x x x x x x x x o o o o o o o o"; + min_write_delay = 9000; + max_write_delay = 9000; + ; + + memory "efuse" + size = 1; + write = "1 0 1 0 1 1 0 0 1 0 1 0 0 1 0 0", + "x x x x x x x x x x x x x x x i"; + + read = "0 1 0 1 0 0 0 0 0 0 0 0 1 0 0 0", + "x x x x x x x x o o o o o o o o"; + min_write_delay = 9000; + max_write_delay = 9000; + ; + + memory "calibration" + size = 1; + read = "0 0 1 1 1 0 0 0 0 0 0 x x x x x", + "0 0 0 0 0 0 0 a0 o o o o o o o o"; + ; + ; + +#------------------------------------------------------------ +# ATtiny44 +#------------------------------------------------------------ + +part + id = "t44"; + desc = "ATtiny44"; + has_debugwire = yes; + flash_instr = 0xB4, 0x07, 0x17; + eeprom_instr = 0xBB, 0xFF, 0xBB, 0xEE, 0xBB, 0xCC, 0xB2, 0x0D, + 0xBC, 0x07, 0xB4, 0x07, 0xBA, 0x0D, 0xBB, 0xBC, + 0x99, 0xE1, 0xBB, 0xAC; +## no STK500 devcode in XML file, use the ATtiny45 one + stk500_devcode = 0x14; +## avr910_devcode = ?; +## Try the AT90S2313 devcode: + avr910_devcode = 0x20; + signature = 0x1e 0x92 0x07; + reset = io; + chip_erase_delay = 4500; + + pgm_enable = "1 0 1 0 1 1 0 0 0 1 0 1 0 0 1 1", + "x x x x x x x x x x x x x x x x"; + + chip_erase = "1 0 1 0 1 1 0 0 1 0 0 x x x x x", + "x x x x x x x x x x x x x x x x"; + + timeout = 200; + stabdelay = 100; + cmdexedelay = 25; + synchloops = 32; + bytedelay = 0; + pollindex = 3; + pollvalue = 0x53; + predelay = 1; + postdelay = 1; + pollmethod = 1; + + hvsp_controlstack = + 0x4C, 0x0C, 0x1C, 0x2C, 0x3C, 0x64, 0x74, 0x66, + 0x68, 0x78, 0x68, 0x68, 0x7A, 0x6A, 0x68, 0x78, + 0x78, 0x7D, 0x6D, 0x0C, 0x80, 0x40, 0x20, 0x10, + 0x11, 0x08, 0x04, 0x02, 0x03, 0x08, 0x04, 0x0F; + hventerstabdelay = 100; + hvspcmdexedelay = 0; + synchcycles = 6; + latchcycles = 1; + togglevtg = 1; + poweroffdelay = 25; + resetdelayms = 0; + resetdelayus = 70; + hvleavestabdelay = 100; + resetdelay = 25; + chiperasepolltimeout = 40; + chiperasetime = 0; + programfusepolltimeout = 25; + programlockpolltimeout = 25; + + ocdrev = 1; + + memory "eeprom" + size = 256; + paged = no; + page_size = 4; + min_write_delay = 4000; + max_write_delay = 4500; + readback_p1 = 0xff; + readback_p2 = 0xff; + read = "1 0 1 0 0 0 0 0 0 0 0 x x x x x", + "a7 a6 a5 a4 a3 a2 a1 a0 o o o o o o o o"; + + write = "1 1 0 0 0 0 0 0 0 0 0 x x x x x", + "a7 a6 a5 a4 a3 a2 a1 a0 i i i i i i i i"; + + loadpage_lo = " 1 1 0 0 0 0 0 1", + " 0 0 0 0 0 0 0 0", + " 0 0 0 0 0 0 a1 a0", + " i i i i i i i i"; + + writepage = " 1 1 0 0 0 0 1 0", + " 0 0 x x x x x x", + " x a6 a5 a4 a3 a2 0 0", + " x x x x x x x x"; + + mode = 0x41; + delay = 6; + blocksize = 4; + readsize = 256; + ; + memory "flash" + paged = yes; + size = 4096; + page_size = 64; + num_pages = 64; + min_write_delay = 4500; + max_write_delay = 4500; + readback_p1 = 0xff; + readback_p2 = 0xff; + read_lo = " 0 0 1 0 0 0 0 0", + " 0 0 0 0 0 a10 a9 a8", + " a7 a6 a5 a4 a3 a2 a1 a0", + " o o o o o o o o"; + + read_hi = " 0 0 1 0 1 0 0 0", + " 0 0 0 0 0 a10 a9 a8", + " a7 a6 a5 a4 a3 a2 a1 a0", + " o o o o o o o o"; + + loadpage_lo = " 0 1 0 0 0 0 0 0", + " 0 0 0 x x x x x", + " x x x a4 a3 a2 a1 a0", + " i i i i i i i i"; + + loadpage_hi = " 0 1 0 0 1 0 0 0", + " 0 0 0 x x x x x", + " x x x a4 a3 a2 a1 a0", + " i i i i i i i i"; + + writepage = " 0 1 0 0 1 1 0 0", + " 0 0 0 0 0 a10 a9 a8", + " a7 a6 a5 x x x x x", + " x x x x x x x x"; + + mode = 0x41; + delay = 6; + blocksize = 32; + readsize = 256; + ; +# ATtiny44 has Signature Bytes: 0x1E 0x92 0x07. + memory "signature" + size = 3; + read = "0 0 1 1 0 0 0 0 0 0 0 x x x x x", + "x x x x x x a1 a0 o o o o o o o o"; + ; + memory "lock" + size = 1; + write = "1 0 1 0 1 1 0 0 1 1 1 x x x x x", + "x x x x x x x x x x x x x x i i"; + read = "0 1 0 1 1 0 0 0 0 0 0 0 0 0 0 0", + "0 0 0 0 0 0 0 0 o o o o o o o o"; + min_write_delay = 9000; + max_write_delay = 9000; + ; + + memory "lfuse" + size = 1; + write = "1 0 1 0 1 1 0 0 1 0 1 0 0 0 0 0", + "x x x x x x x x i i i i i i i i"; + + read = "0 1 0 1 0 0 0 0 0 0 0 0 0 0 0 0", + "x x x x x x x x o o o o o o o o"; + min_write_delay = 9000; + max_write_delay = 9000; + ; + + memory "hfuse" + size = 1; + write = "1 0 1 0 1 1 0 0 1 0 1 0 1 0 0 0", + "x x x x x x x x i i i i i i i i"; + + read = "0 1 0 1 1 0 0 0 0 0 0 0 1 0 0 0", + "x x x x x x x x o o o o o o o o"; + min_write_delay = 9000; + max_write_delay = 9000; + ; + + memory "efuse" + size = 1; + write = "1 0 1 0 1 1 0 0 1 0 1 0 0 1 0 0", + "x x x x x x x x x x x x x x x i"; + + read = "0 1 0 1 0 0 0 0 0 0 0 0 1 0 0 0", + "x x x x x x x x o o o o o o o o"; + min_write_delay = 9000; + max_write_delay = 9000; + ; + + memory "calibration" + size = 1; + read = "0 0 1 1 1 0 0 0 0 0 0 x x x x x", + "0 0 0 0 0 0 0 a0 o o o o o o o o"; + ; + ; + +#------------------------------------------------------------ +# ATtiny84 +#------------------------------------------------------------ + +part + id = "t84"; + desc = "ATtiny84"; + has_debugwire = yes; + flash_instr = 0xB4, 0x07, 0x17; + eeprom_instr = 0xBB, 0xFF, 0xBB, 0xEE, 0xBB, 0xCC, 0xB2, 0x0D, + 0xBC, 0x07, 0xB4, 0x07, 0xBA, 0x0D, 0xBB, 0xBC, + 0x99, 0xE1, 0xBB, 0xAC; +## no STK500 devcode in XML file, use the ATtiny45 one + stk500_devcode = 0x14; +## avr910_devcode = ?; +## Try the AT90S2313 devcode: + avr910_devcode = 0x20; + signature = 0x1e 0x93 0x0c; + reset = io; + chip_erase_delay = 4500; + + pgm_enable = "1 0 1 0 1 1 0 0 0 1 0 1 0 0 1 1", + "x x x x x x x x x x x x x x x x"; + + chip_erase = "1 0 1 0 1 1 0 0 1 0 0 x x x x x", + "x x x x x x x x x x x x x x x x"; + + timeout = 200; + stabdelay = 100; + cmdexedelay = 25; + synchloops = 32; + bytedelay = 0; + pollindex = 3; + pollvalue = 0x53; + predelay = 1; + postdelay = 1; + pollmethod = 1; + + hvsp_controlstack = + 0x4C, 0x0C, 0x1C, 0x2C, 0x3C, 0x64, 0x74, 0x66, + 0x68, 0x78, 0x68, 0x68, 0x7A, 0x6A, 0x68, 0x78, + 0x78, 0x7D, 0x6D, 0x0C, 0x80, 0x40, 0x20, 0x10, + 0x11, 0x08, 0x04, 0x02, 0x03, 0x08, 0x04, 0x0F; + hventerstabdelay = 100; + hvspcmdexedelay = 0; + synchcycles = 6; + latchcycles = 1; + togglevtg = 1; + poweroffdelay = 25; + resetdelayms = 0; + resetdelayus = 70; + hvleavestabdelay = 100; + resetdelay = 25; + chiperasepolltimeout = 40; + chiperasetime = 0; + programfusepolltimeout = 25; + programlockpolltimeout = 25; + + ocdrev = 1; + + memory "eeprom" + size = 512; + paged = no; + page_size = 4; + min_write_delay = 4000; + max_write_delay = 4500; + readback_p1 = 0xff; + readback_p2 = 0xff; + read = "1 0 1 0 0 0 0 0 0 0 0 x x x x a8", + "a7 a6 a5 a4 a3 a2 a1 a0 o o o o o o o o"; + + write = "1 1 0 0 0 0 0 0 0 0 0 x x x x a8", + "a7 a6 a5 a4 a3 a2 a1 a0 i i i i i i i i"; + + loadpage_lo = " 1 1 0 0 0 0 0 1", + " 0 0 0 0 0 0 0 0", + " 0 0 0 0 0 0 a1 a0", + " i i i i i i i i"; + + writepage = " 1 1 0 0 0 0 1 0", + " 0 0 x x x x x x", + " x a6 a5 a4 a3 a2 0 0", + " x x x x x x x x"; + + mode = 0x41; + delay = 6; + blocksize = 4; + readsize = 256; + ; + memory "flash" + paged = yes; + size = 8192; + page_size = 64; + num_pages = 128; + min_write_delay = 4500; + max_write_delay = 4500; + readback_p1 = 0xff; + readback_p2 = 0xff; + read_lo = " 0 0 1 0 0 0 0 0", + " 0 0 0 0 a11 a10 a9 a8", + " a7 a6 a5 a4 a3 a2 a1 a0", + " o o o o o o o o"; + + read_hi = " 0 0 1 0 1 0 0 0", + " 0 0 0 0 a11 a10 a9 a8", + " a7 a6 a5 a4 a3 a2 a1 a0", + " o o o o o o o o"; + + loadpage_lo = " 0 1 0 0 0 0 0 0", + " 0 0 0 x x x x x", + " x x x a4 a3 a2 a1 a0", + " i i i i i i i i"; + + loadpage_hi = " 0 1 0 0 1 0 0 0", + " 0 0 0 x x x x x", + " x x x a4 a3 a2 a1 a0", + " i i i i i i i i"; + + writepage = " 0 1 0 0 1 1 0 0", + " 0 0 0 0 a11 a10 a9 a8", + " a7 a6 a5 x x x x x", + " x x x x x x x x"; + + mode = 0x41; + delay = 6; + blocksize = 32; + readsize = 256; + ; +# ATtiny84 has Signature Bytes: 0x1E 0x93 0x0C. + memory "signature" + size = 3; + read = "0 0 1 1 0 0 0 0 0 0 0 x x x x x", + "x x x x x x a1 a0 o o o o o o o o"; + ; + + memory "lock" + size = 1; + write = "1 0 1 0 1 1 0 0 1 1 1 x x x x x", + "x x x x x x x x x x x x x x i i"; + read = "0 1 0 1 1 0 0 0 0 0 0 0 0 0 0 0", + "0 0 0 0 0 0 0 0 o o o o o o o o"; + min_write_delay = 9000; + max_write_delay = 9000; + ; + + memory "lfuse" + size = 1; + write = "1 0 1 0 1 1 0 0 1 0 1 0 0 0 0 0", + "x x x x x x x x i i i i i i i i"; + + read = "0 1 0 1 0 0 0 0 0 0 0 0 0 0 0 0", + "x x x x x x x x o o o o o o o o"; + min_write_delay = 9000; + max_write_delay = 9000; + ; + + memory "hfuse" + size = 1; + write = "1 0 1 0 1 1 0 0 1 0 1 0 1 0 0 0", + "x x x x x x x x i i i i i i i i"; + + read = "0 1 0 1 1 0 0 0 0 0 0 0 1 0 0 0", + "x x x x x x x x o o o o o o o o"; + min_write_delay = 9000; + max_write_delay = 9000; + ; + + memory "efuse" + size = 1; + write = "1 0 1 0 1 1 0 0 1 0 1 0 0 1 0 0", + "x x x x x x x x x x x x x x x i"; + + read = "0 1 0 1 0 0 0 0 0 0 0 0 1 0 0 0", + "x x x x x x x x o o o o o o o o"; + min_write_delay = 9000; + max_write_delay = 9000; + ; + + memory "calibration" + size = 1; + read = "0 0 1 1 1 0 0 0 0 0 0 x x x x x", + "0 0 0 0 0 0 0 a0 o o o o o o o o"; + ; + ; + +#------------------------------------------------------------ +# ATtiny441 +#------------------------------------------------------------ + +part parent "t44" + id = "t441"; + desc = "ATtiny441"; + signature = 0x1e 0x92 0x15; + + memory "flash" + paged = yes; + size = 4096; + page_size = 16; + num_pages = 256; + min_write_delay = 4500; + max_write_delay = 4500; + readback_p1 = 0xff; + readback_p2 = 0xff; + read_lo = " 0 0 1 0 0 0 0 0", + " 0 0 0 0 0 a10 a9 a8", + " a7 a6 a5 a4 a3 a2 a1 a0", + " o o o o o o o o"; + + read_hi = " 0 0 1 0 1 0 0 0", + " 0 0 0 0 0 a10 a9 a8", + " a7 a6 a5 a4 a3 a2 a1 a0", + " o o o o o o o o"; + + loadpage_lo = " 0 1 0 0 0 0 0 0", + " 0 0 0 x x x x x", + " x x x x x a2 a1 a0", + " i i i i i i i i"; + + loadpage_hi = " 0 1 0 0 1 0 0 0", + " 0 0 0 x x x x x", + " x x x x x a2 a1 a0", + " i i i i i i i i"; + + writepage = " 0 1 0 0 1 1 0 0", + " 0 0 0 0 0 a10 a9 a8", + " a7 a6 a5 a4 a3 x x x", + " x x x x x x x x"; + + mode = 0x41; + delay = 6; + blocksize = 16; + readsize = 256; + ; + + memory "efuse" + size = 1; + write = "1 0 1 0 1 1 0 0 1 0 1 0 0 1 0 0", + "x x x x x x x x i i i i i i i i"; + + read = "0 1 0 1 0 0 0 0 0 0 0 0 1 0 0 0", + "x x x x x x x x o o o o o o o o"; + min_write_delay = 9000; + max_write_delay = 9000; + ; +; + +#------------------------------------------------------------ +# ATtiny841 +#------------------------------------------------------------ + +part parent "t84" + id = "t841"; + desc = "ATtiny841"; + signature = 0x1e 0x93 0x15; + + memory "flash" + paged = yes; + size = 8192; + page_size = 16; + num_pages = 512; + min_write_delay = 4500; + max_write_delay = 4500; + readback_p1 = 0xff; + readback_p2 = 0xff; + read_lo = " 0 0 1 0 0 0 0 0", + " 0 0 0 0 a11 a10 a9 a8", + " a7 a6 a5 a4 a3 a2 a1 a0", + " o o o o o o o o"; + + read_hi = " 0 0 1 0 1 0 0 0", + " 0 0 0 0 a11 a10 a9 a8", + " a7 a6 a5 a4 a3 a2 a1 a0", + " o o o o o o o o"; + + loadpage_lo = " 0 1 0 0 0 0 0 0", + " 0 0 0 x x x x x", + " x x x x x a2 a1 a0", + " i i i i i i i i"; + + loadpage_hi = " 0 1 0 0 1 0 0 0", + " 0 0 0 x x x x x", + " x x x x x a2 a1 a0", + " i i i i i i i i"; + + writepage = " 0 1 0 0 1 1 0 0", + " 0 0 0 0 a11 a10 a9 a8", + " a7 a6 a5 a4 a3 x x x", + " x x x x x x x x"; + + mode = 0x41; + delay = 6; + blocksize = 16; + readsize = 256; + ; + + memory "efuse" + size = 1; + write = "1 0 1 0 1 1 0 0 1 0 1 0 0 1 0 0", + "x x x x x x x x i i i i i i i i"; + + read = "0 1 0 1 0 0 0 0 0 0 0 0 1 0 0 0", + "x x x x x x x x o o o o o o o o"; + min_write_delay = 9000; + max_write_delay = 9000; + ; +; + +#------------------------------------------------------------ +# ATtiny43U +#------------------------------------------------------------ + +part + id = "t43u"; + desc = "ATtiny43u"; + has_debugwire = yes; + flash_instr = 0xB4, 0x07, 0x17; + eeprom_instr = 0xBB, 0xFF, 0xBB, 0xEE, 0xBB, 0xCC, 0xB2, 0x0D, + 0xBC, 0x07, 0xB4, 0x07, 0xBA, 0x0D, 0xBB, 0xBC, + 0x99, 0xE1, 0xBB, 0xAC; + stk500_devcode = 0x14; +## avr910_devcode = ?; +## Try the AT90S2313 devcode: + avr910_devcode = 0x20; + signature = 0x1e 0x92 0x0C; + reset = io; + chip_erase_delay = 1000; + + pgm_enable = "1 0 1 0 1 1 0 0 0 1 0 1 0 0 1 1", + "x x x x x x x x x x x x x x x x"; + + chip_erase = "1 0 1 0 1 1 0 0 1 0 0 x x x x x", + "x x x x x x x x x x x x x x x x"; + + timeout = 200; + stabdelay = 100; + cmdexedelay = 25; + synchloops = 32; + bytedelay = 0; + pollindex = 3; + pollvalue = 0x53; + predelay = 1; + postdelay = 1; + pollmethod = 1; + pp_controlstack = 0x0E, 0x1E, 0x0E, 0x1E, 0x2E, 0x3E, 0x2E, 0x3E, 0x4E, 0x5E, + 0x4E, 0x5E, 0x6E, 0x7E, 0x6E, 0x7E, 0x06, 0x16, 0x46, 0x56, + 0x0A, 0x1A, 0x4A, 0x5A, 0x1E, 0x7C, 0x00, 0x01, 0x00, 0x00, + 0x00, 0x00; + hventerstabdelay = 100; + progmodedelay = 0; + hvspcmdexedelay = 0; + latchcycles = 5; + togglevtg = 1; + poweroffdelay = 20; + resetdelayms = 1; + resetdelayus = 0; + hvleavestabdelay = 15; + resetdelay = 15; + chiperasepulsewidth = 0; + chiperasepolltimeout = 10; + programfusepulsewidth = 0; + programfusepolltimeout = 5; + programlockpulsewidth = 0; + programlockpolltimeout = 5; + memory "eeprom" + size = 64; + paged = yes; + page_size = 4; + num_pages = 16; + min_write_delay = 4000; + max_write_delay = 4500; + readback_p1 = 0xff; + readback_p2 = 0xff; + read = "1 0 1 0 0 0 0 0 0 0 0 x x x x x", + "0 0 a4 a3 a2 a1 a0 o o o o o o o o"; + + write = "1 1 0 0 0 0 0 0 0 0 0 x x x x x", + "0 0 a5 a4 a3 a2 a1 a0 i i i i i i i i"; + + loadpage_lo = " 1 1 0 0 0 0 0 1", + " 0 0 0 0 0 0 0 0", + " 0 0 0 0 0 0 a1 a0", + " i i i i i i i i"; + + writepage = " 1 1 0 0 0 0 1 0", + " 0 0 x x x x x x", + " 0 0 a5 a4 a3 a2 0 0", + " x x x x x x x x"; + + mode = 0x41; + delay = 5; + blocksize = 4; + readsize = 256; + ; + memory "flash" + paged = yes; + size = 4096; + page_size = 64; + num_pages = 64; + min_write_delay = 4500; + max_write_delay = 4500; + readback_p1 = 0xff; + readback_p2 = 0xff; + + read_lo = " 0 0 1 0 0 0 0 0", + " 0 0 0 0 0 a10 a9 a8", + " a7 a6 a5 a4 a3 a2 a1 a0", + " o o o o o o o o"; + + read_hi = " 0 0 1 0 1 0 0 0", + " 0 0 0 0 0 a10 a9 a8", + " a7 a6 a5 a4 a3 a2 a1 a0", + " o o o o o o o o"; + + loadpage_lo = " 0 1 0 0 0 0 0 0", + " 0 0 0 x x x x x", + " x x x a4 a3 a2 a1 a0", + " i i i i i i i i"; + + loadpage_hi = " 0 1 0 0 1 0 0 0", + " 0 0 0 x x x x x", + " x x x a4 a3 a2 a1 a0", + " i i i i i i i i"; + + writepage = " 0 1 0 0 1 1 0 0", + " 0 0 0 0 0 a10 a9 a8", + " a7 a6 a5 x x x x x", + " x x x x x x x x"; + + mode = 0x41; + delay = 10; + blocksize = 64; + readsize = 256; + ; + memory "signature" + size = 3; + read = "0 0 1 1 0 0 0 0 0 0 0 x x x x x", + "x x x x x x a1 a0 o o o o o o o o"; + ; + memory "lock" + size = 1; + write = "1 0 1 0 1 1 0 0 1 1 1 x x x x x", + "x x x x x x x x 1 1 i i i i i i"; + min_write_delay = 4500; + max_write_delay = 4500; + ; + + memory "lfuse" + size = 1; + write = "1 0 1 0 1 1 0 0 1 0 1 0 0 0 0 0", + "x x x x x x x x i i i i i i i i"; + + read = "0 1 0 1 0 0 0 0 0 0 0 0 0 0 0 0", + "x x x x x x x x o o o o o o o o"; + min_write_delay = 4500; + max_write_delay = 4500; + ; + + memory "hfuse" + size = 1; + write = "1 0 1 0 1 1 0 0 1 0 1 0 1 0 0 0", + "x x x x x x x x i i i i i i i i"; + + read = "0 1 0 1 1 0 0 0 0 0 0 0 1 0 0 0", + "x x x x x x x x o o o o o o o o"; + min_write_delay = 4500; + max_write_delay = 4500; + ; + + memory "efuse" + size = 1; + write = "1 0 1 0 1 1 0 0 1 0 1 0 0 1 0 0", + "x x x x x x x x x x x x x x x i"; + + read = "0 1 0 1 0 0 0 0 0 0 0 0 1 0 0 0", + "x x x x x x x x o o o o o o o o"; + min_write_delay = 4500; + max_write_delay = 4500; + ; + + memory "calibration" + size = 2; + read = "0 0 1 1 1 0 0 0 0 0 0 x x x x x", + "0 0 0 0 0 0 0 a0 o o o o o o o o"; + ; +; + +#------------------------------------------------------------ +# ATmega32u4 +#------------------------------------------------------------ + +part + id = "m32u4"; + desc = "ATmega32U4"; + signature = 0x1e 0x95 0x87; + usbpid = 0x2ff4; + has_jtag = yes; +# stk500_devcode = 0xB2; +# avr910_devcode = 0x43; + chip_erase_delay = 9000; + pagel = 0xD7; + bs2 = 0xA0; + reset = dedicated; + pgm_enable = "1 0 1 0 1 1 0 0 0 1 0 1 0 0 1 1", + "x x x x x x x x x x x x x x x x"; + + chip_erase = "1 0 1 0 1 1 0 0 1 0 0 0 0 0 0 0", + "x x x x x x x x x x x x x x x x"; + + timeout = 200; + stabdelay = 100; + cmdexedelay = 25; + synchloops = 32; + bytedelay = 0; + pollindex = 3; + pollvalue = 0x53; + predelay = 1; + postdelay = 1; + pollmethod = 1; + + pp_controlstack = + 0x0E, 0x1E, 0x0F, 0x1F, 0x2E, 0x3E, 0x2F, 0x3F, + 0x4E, 0x5E, 0x4F, 0x5F, 0x6E, 0x7E, 0x6F, 0x7F, + 0x66, 0x76, 0x67, 0x77, 0x6A, 0x7A, 0x6B, 0x7B, + 0xBE, 0xFD, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00; + hventerstabdelay = 100; + progmodedelay = 0; + latchcycles = 5; + togglevtg = 1; + poweroffdelay = 15; + resetdelayms = 1; + resetdelayus = 0; + hvleavestabdelay = 15; + chiperasepulsewidth = 0; + chiperasepolltimeout = 10; + programfusepulsewidth = 0; + programfusepolltimeout = 5; + programlockpulsewidth = 0; + programlockpolltimeout = 5; + + idr = 0x31; + spmcr = 0x57; + rampz = 0x3b; + allowfullpagebitstream = no; + + ocdrev = 3; + + memory "eeprom" + paged = no; /* leave this "no" */ + page_size = 4; /* for parallel programming */ + size = 1024; + min_write_delay = 9000; + max_write_delay = 9000; + readback_p1 = 0x00; + readback_p2 = 0x00; + read = " 1 0 1 0 0 0 0 0", + " x x x x x a10 a9 a8", + " a7 a6 a5 a4 a3 a2 a1 a0", + " o o o o o o o o"; + + write = " 1 1 0 0 0 0 0 0", + " x x x x x a10 a9 a8", + " a7 a6 a5 a4 a3 a2 a1 a0", + " i i i i i i i i"; + + loadpage_lo = " 1 1 0 0 0 0 0 1", + " 0 0 0 0 0 0 0 0", + " 0 0 0 0 0 a2 a1 a0", + " i i i i i i i i"; + + writepage = " 1 1 0 0 0 0 1 0", + " 0 0 x x x a10 a9 a8", + " a7 a6 a5 a4 a3 0 0 0", + " x x x x x x x x"; + + mode = 0x41; + delay = 20; + blocksize = 4; + readsize = 256; + ; + + memory "flash" + paged = yes; + size = 32768; + page_size = 128; + num_pages = 256; + min_write_delay = 4500; + max_write_delay = 4500; + readback_p1 = 0x00; + readback_p2 = 0x00; + read_lo = " 0 0 1 0 0 0 0 0", + " 0 a14 a13 a12 a11 a10 a9 a8", + " a7 a6 a5 a4 a3 a2 a1 a0", + " o o o o o o o o"; + + read_hi = " 0 0 1 0 1 0 0 0", + " 0 a14 a13 a12 a11 a10 a9 a8", + " a7 a6 a5 a4 a3 a2 a1 a0", + " o o o o o o o o"; + + loadpage_lo = " 0 1 0 0 0 0 0 0", + " x x x x x x x x", + " x x a5 a4 a3 a2 a1 a0", + " i i i i i i i i"; + + loadpage_hi = " 0 1 0 0 1 0 0 0", + " x x x x x x x x", + " x x a5 a4 a3 a2 a1 a0", + " i i i i i i i i"; + + writepage = " 0 1 0 0 1 1 0 0", + " a15 a14 a13 a12 a11 a10 a9 a8", + " a7 a6 x x x x x x", + " x x x x x x x x"; + + mode = 0x41; + delay = 6; + blocksize = 128; + readsize = 256; + ; + + memory "lfuse" + size = 1; + write = "1 0 1 0 1 1 0 0 1 0 1 0 0 0 0 0", + "x x x x x x x x i i i i i i i i"; + + read = "0 1 0 1 0 0 0 0 0 0 0 0 0 0 0 0", + "x x x x x x x x o o o o o o o o"; + min_write_delay = 9000; + max_write_delay = 9000; + ; + + memory "hfuse" + size = 1; + write = "1 0 1 0 1 1 0 0 1 0 1 0 1 0 0 0", + "x x x x x x x x i i i i i i i i"; + + read = "0 1 0 1 1 0 0 0 0 0 0 0 1 0 0 0", + "x x x x x x x x o o o o o o o o"; + min_write_delay = 9000; + max_write_delay = 9000; + ; + + memory "efuse" + size = 1; + write = "1 0 1 0 1 1 0 0 1 0 1 0 0 1 0 0", + "x x x x x x x x x x x x i i i i"; + + read = "0 1 0 1 0 0 0 0 0 0 0 0 1 0 0 0", + "x x x x x x x x o o o o o o o o"; + min_write_delay = 9000; + max_write_delay = 9000; + ; + + memory "lock" + size = 1; + read = "0 1 0 1 1 0 0 0 0 0 0 0 0 0 0 0", + "x x x x x x x x x x o o o o o o"; + + write = "1 0 1 0 1 1 0 0 1 1 1 x x x x x", + "x x x x x x x x 1 1 i i i i i i"; + min_write_delay = 9000; + max_write_delay = 9000; + ; + + memory "calibration" + size = 1; + read = "0 0 1 1 1 0 0 0 x x x x x x x x", + "0 0 0 0 0 0 0 0 o o o o o o o o"; + ; + + memory "signature" + size = 3; + read = "0 0 1 1 0 0 0 0 x x x x x x x x", + "x x x x x x a1 a0 o o o o o o o o"; + ; + ; + +#------------------------------------------------------------ +# AT90USB646 +#------------------------------------------------------------ + +part + id = "usb646"; + desc = "AT90USB646"; + signature = 0x1e 0x96 0x82; + usbpid = 0x2ff9; + has_jtag = yes; +# stk500_devcode = 0xB2; +# avr910_devcode = 0x43; + chip_erase_delay = 9000; + pagel = 0xD7; + bs2 = 0xA0; + reset = dedicated; + pgm_enable = "1 0 1 0 1 1 0 0 0 1 0 1 0 0 1 1", + "x x x x x x x x x x x x x x x x"; + + chip_erase = "1 0 1 0 1 1 0 0 1 0 0 0 0 0 0 0", + "x x x x x x x x x x x x x x x x"; + + timeout = 200; + stabdelay = 100; + cmdexedelay = 25; + synchloops = 32; + bytedelay = 0; + pollindex = 3; + pollvalue = 0x53; + predelay = 1; + postdelay = 1; + pollmethod = 1; + + pp_controlstack = + 0x0E, 0x1E, 0x0F, 0x1F, 0x2E, 0x3E, 0x2F, 0x3F, + 0x4E, 0x5E, 0x4F, 0x5F, 0x6E, 0x7E, 0x6F, 0x7F, + 0x66, 0x76, 0x67, 0x77, 0x6A, 0x7A, 0x6B, 0x7B, + 0xBE, 0xFD, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00; + hventerstabdelay = 100; + progmodedelay = 0; + latchcycles = 5; + togglevtg = 1; + poweroffdelay = 15; + resetdelayms = 1; + resetdelayus = 0; + hvleavestabdelay = 15; + chiperasepulsewidth = 0; + chiperasepolltimeout = 10; + programfusepulsewidth = 0; + programfusepolltimeout = 5; + programlockpulsewidth = 0; + programlockpolltimeout = 5; + + idr = 0x31; + spmcr = 0x57; + rampz = 0x3b; + allowfullpagebitstream = no; + + ocdrev = 3; + + memory "eeprom" + paged = no; /* leave this "no" */ + page_size = 8; /* for parallel programming */ + size = 2048; + min_write_delay = 9000; + max_write_delay = 9000; + readback_p1 = 0x00; + readback_p2 = 0x00; + read = " 1 0 1 0 0 0 0 0", + " x x x x x a10 a9 a8", + " a7 a6 a5 a4 a3 a2 a1 a0", + " o o o o o o o o"; + + write = " 1 1 0 0 0 0 0 0", + " x x x x x a10 a9 a8", + " a7 a6 a5 a4 a3 a2 a1 a0", + " i i i i i i i i"; + + loadpage_lo = " 1 1 0 0 0 0 0 1", + " 0 0 0 0 0 0 0 0", + " 0 0 0 0 0 a2 a1 a0", + " i i i i i i i i"; + + writepage = " 1 1 0 0 0 0 1 0", + " 0 0 x x x a10 a9 a8", + " a7 a6 a5 a4 a3 0 0 0", + " x x x x x x x x"; + + mode = 0x41; + delay = 10; + blocksize = 8; + readsize = 256; + ; + + memory "flash" + paged = yes; + size = 65536; + page_size = 256; + num_pages = 256; + min_write_delay = 4500; + max_write_delay = 4500; + readback_p1 = 0x00; + readback_p2 = 0x00; + read_lo = " 0 0 1 0 0 0 0 0", + " 0 a14 a13 a12 a11 a10 a9 a8", + " a7 a6 a5 a4 a3 a2 a1 a0", + " o o o o o o o o"; + + read_hi = " 0 0 1 0 1 0 0 0", + " 0 a14 a13 a12 a11 a10 a9 a8", + " a7 a6 a5 a4 a3 a2 a1 a0", + " o o o o o o o o"; + + loadpage_lo = " 0 1 0 0 0 0 0 0", + " x x x x x x x x", + " x a6 a5 a4 a3 a2 a1 a0", + " i i i i i i i i"; + + loadpage_hi = " 0 1 0 0 1 0 0 0", + " x x x x x x x x", + " x a6 a5 a4 a3 a2 a1 a0", + " i i i i i i i i"; + + writepage = " 0 1 0 0 1 1 0 0", + " 0 a14 a13 a12 a11 a10 a9 a8", + " a7 x x x x x x x", + " x x x x x x x x"; + + mode = 0x41; + delay = 6; + blocksize = 256; + readsize = 256; + ; + + memory "lfuse" + size = 1; + write = "1 0 1 0 1 1 0 0 1 0 1 0 0 0 0 0", + "x x x x x x x x i i i i i i i i"; + + read = "0 1 0 1 0 0 0 0 0 0 0 0 0 0 0 0", + "x x x x x x x x o o o o o o o o"; + min_write_delay = 9000; + max_write_delay = 9000; + ; + + memory "hfuse" + size = 1; + write = "1 0 1 0 1 1 0 0 1 0 1 0 1 0 0 0", + "x x x x x x x x i i i i i i i i"; + + read = "0 1 0 1 1 0 0 0 0 0 0 0 1 0 0 0", + "x x x x x x x x o o o o o o o o"; + min_write_delay = 9000; + max_write_delay = 9000; + ; + + memory "efuse" + size = 1; + write = "1 0 1 0 1 1 0 0 1 0 1 0 0 1 0 0", + "x x x x x x x x x x x x i i i i"; + + read = "0 1 0 1 0 0 0 0 0 0 0 0 1 0 0 0", + "x x x x x x x x o o o o o o o o"; + min_write_delay = 9000; + max_write_delay = 9000; + ; + + memory "lock" + size = 1; + read = "0 1 0 1 1 0 0 0 0 0 0 0 0 0 0 0", + "x x x x x x x x x x o o o o o o"; + + write = "1 0 1 0 1 1 0 0 1 1 1 x x x x x", + "x x x x x x x x 1 1 i i i i i i"; + min_write_delay = 9000; + max_write_delay = 9000; + ; + + memory "calibration" + size = 1; + read = "0 0 1 1 1 0 0 0 x x x x x x x x", + "0 0 0 0 0 0 0 0 o o o o o o o o"; + ; + + memory "signature" + size = 3; + read = "0 0 1 1 0 0 0 0 x x x x x x x x", + "x x x x x x a1 a0 o o o o o o o o"; + ; + ; + +#------------------------------------------------------------ +# AT90USB647 +#------------------------------------------------------------ +# identical to AT90USB646 + +part parent "usb646" + id = "usb647"; + desc = "AT90USB647"; + signature = 0x1e 0x96 0x82; + + ocdrev = 3; + ; + +#------------------------------------------------------------ +# AT90USB1286 +#------------------------------------------------------------ + +part + id = "usb1286"; + desc = "AT90USB1286"; + signature = 0x1e 0x97 0x82; + usbpid = 0x2ffb; + has_jtag = yes; +# stk500_devcode = 0xB2; +# avr910_devcode = 0x43; + chip_erase_delay = 9000; + pagel = 0xD7; + bs2 = 0xA0; + reset = dedicated; + pgm_enable = "1 0 1 0 1 1 0 0 0 1 0 1 0 0 1 1", + "x x x x x x x x x x x x x x x x"; + + chip_erase = "1 0 1 0 1 1 0 0 1 0 0 0 0 0 0 0", + "x x x x x x x x x x x x x x x x"; + + timeout = 200; + stabdelay = 100; + cmdexedelay = 25; + synchloops = 32; + bytedelay = 0; + pollindex = 3; + pollvalue = 0x53; + predelay = 1; + postdelay = 1; + pollmethod = 1; + + pp_controlstack = + 0x0E, 0x1E, 0x0F, 0x1F, 0x2E, 0x3E, 0x2F, 0x3F, + 0x4E, 0x5E, 0x4F, 0x5F, 0x6E, 0x7E, 0x6F, 0x7F, + 0x66, 0x76, 0x67, 0x77, 0x6A, 0x7A, 0x6B, 0x7B, + 0xBE, 0xFD, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00; + hventerstabdelay = 100; + progmodedelay = 0; + latchcycles = 5; + togglevtg = 1; + poweroffdelay = 15; + resetdelayms = 1; + resetdelayus = 0; + hvleavestabdelay = 15; + chiperasepulsewidth = 0; + chiperasepolltimeout = 10; + programfusepulsewidth = 0; + programfusepolltimeout = 5; + programlockpulsewidth = 0; + programlockpolltimeout = 5; + + idr = 0x31; + spmcr = 0x57; + rampz = 0x3b; + allowfullpagebitstream = no; + + ocdrev = 3; + + memory "eeprom" + paged = no; /* leave this "no" */ + page_size = 8; /* for parallel programming */ + size = 4096; + min_write_delay = 9000; + max_write_delay = 9000; + readback_p1 = 0x00; + readback_p2 = 0x00; + read = " 1 0 1 0 0 0 0 0", + " x x x x a11 a10 a9 a8", + " a7 a6 a5 a4 a3 a2 a1 a0", + " o o o o o o o o"; + + write = " 1 1 0 0 0 0 0 0", + " x x x x a11 a10 a9 a8", + " a7 a6 a5 a4 a3 a2 a1 a0", + " i i i i i i i i"; + + loadpage_lo = " 1 1 0 0 0 0 0 1", + " 0 0 0 0 0 0 0 0", + " 0 0 0 0 0 a2 a1 a0", + " i i i i i i i i"; + + writepage = " 1 1 0 0 0 0 1 0", + " 0 0 x x x a10 a9 a8", + " a7 a6 a5 a4 a3 0 0 0", + " x x x x x x x x"; + + mode = 0x41; + delay = 10; + blocksize = 8; + readsize = 256; + ; + + memory "flash" + paged = yes; + size = 131072; + page_size = 256; + num_pages = 512; + min_write_delay = 4500; + max_write_delay = 4500; + readback_p1 = 0x00; + readback_p2 = 0x00; + read_lo = " 0 0 1 0 0 0 0 0", + "a15 a14 a13 a12 a11 a10 a9 a8", + " a7 a6 a5 a4 a3 a2 a1 a0", + " o o o o o o o o"; + + read_hi = " 0 0 1 0 1 0 0 0", + "a15 a14 a13 a12 a11 a10 a9 a8", + " a7 a6 a5 a4 a3 a2 a1 a0", + " o o o o o o o o"; + + loadpage_lo = " 0 1 0 0 0 0 0 0", + " x x x x x x x x", + " x a6 a5 a4 a3 a2 a1 a0", + " i i i i i i i i"; + + loadpage_hi = " 0 1 0 0 1 0 0 0", + " x x x x x x x x", + " x a6 a5 a4 a3 a2 a1 a0", + " i i i i i i i i"; + + writepage = " 0 1 0 0 1 1 0 0", + "a15 a14 a13 a12 a11 a10 a9 a8", + " a7 x x x x x x x", + " x x x x x x x x"; + + mode = 0x41; + delay = 6; + blocksize = 256; + readsize = 256; + ; + + memory "lfuse" + size = 1; + write = "1 0 1 0 1 1 0 0 1 0 1 0 0 0 0 0", + "x x x x x x x x i i i i i i i i"; + + read = "0 1 0 1 0 0 0 0 0 0 0 0 0 0 0 0", + "x x x x x x x x o o o o o o o o"; + min_write_delay = 9000; + max_write_delay = 9000; + ; + + memory "hfuse" + size = 1; + write = "1 0 1 0 1 1 0 0 1 0 1 0 1 0 0 0", + "x x x x x x x x i i i i i i i i"; + + read = "0 1 0 1 1 0 0 0 0 0 0 0 1 0 0 0", + "x x x x x x x x o o o o o o o o"; + min_write_delay = 9000; + max_write_delay = 9000; + ; + + memory "efuse" + size = 1; + write = "1 0 1 0 1 1 0 0 1 0 1 0 0 1 0 0", + "x x x x x x x x x x x x i i i i"; + + read = "0 1 0 1 0 0 0 0 0 0 0 0 1 0 0 0", + "x x x x x x x x o o o o o o o o"; + min_write_delay = 9000; + max_write_delay = 9000; + ; + + memory "lock" + size = 1; + read = "0 1 0 1 1 0 0 0 0 0 0 0 0 0 0 0", + "x x x x x x x x x x o o o o o o"; + + write = "1 0 1 0 1 1 0 0 1 1 1 x x x x x", + "x x x x x x x x 1 1 i i i i i i"; + min_write_delay = 9000; + max_write_delay = 9000; + ; + + memory "calibration" + size = 1; + read = "0 0 1 1 1 0 0 0 x x x x x x x x", + "0 0 0 0 0 0 0 0 o o o o o o o o"; + ; + + memory "signature" + size = 3; + read = "0 0 1 1 0 0 0 0 x x x x x x x x", + "x x x x x x a1 a0 o o o o o o o o"; + ; + ; + +#------------------------------------------------------------ +# AT90USB1287 +#------------------------------------------------------------ +# identical to AT90USB1286 + +part parent "usb1286" + id = "usb1287"; + desc = "AT90USB1287"; + signature = 0x1e 0x97 0x82; + + ocdrev = 3; + ; + +#------------------------------------------------------------ +# AT90USB162 +#------------------------------------------------------------ + +part + id = "usb162"; + desc = "AT90USB162"; + has_jtag = no; + has_debugwire = yes; + signature = 0x1e 0x94 0x82; + usbpid = 0x2ffa; + chip_erase_delay = 9000; + reset = io; + pgm_enable = "1 0 1 0 1 1 0 0 0 1 0 1 0 0 1 1", + "x x x x x x x x x x x x x x x x"; + chip_erase = "1 0 1 0 1 1 0 0 1 0 0 x x x x x", + "x x x x x x x x x x x x x x x x"; + pagel = 0xD7; + bs2 = 0xC6; + + timeout = 200; + stabdelay = 100; + cmdexedelay = 25; + synchloops = 32; + bytedelay = 0; + pollindex = 3; + pollvalue = 0x53; + predelay = 1; + postdelay = 1; + pollmethod = 1; + pp_controlstack = + 0x0E, 0x1E, 0x0F, 0x1F, 0x2E, 0x3E, 0x2F, 0x3F, + 0x4E, 0x5E, 0x4F, 0x5F, 0x6E, 0x7E, 0x6F, 0x7F, + 0x66, 0x76, 0x67, 0x77, 0x6A, 0x7A, 0x6B, 0x7B, + 0xBE, 0xFD, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00; + hventerstabdelay = 100; + progmodedelay = 0; + latchcycles = 5; + togglevtg = 1; + poweroffdelay = 15; + resetdelayms = 1; + resetdelayus = 0; + hvleavestabdelay = 15; + chiperasepulsewidth = 0; + chiperasepolltimeout = 10; + programfusepulsewidth = 0; + programfusepolltimeout = 5; + programlockpulsewidth = 0; + programlockpolltimeout = 5; + + ocdrev = 1; + + memory "eeprom" + paged = no; /* leave this "no" */ + page_size = 4; /* for parallel programming */ + size = 512; + num_pages = 128; + min_write_delay = 9000; + max_write_delay = 9000; + readback_p1 = 0x00; + readback_p2 = 0x00; + read = " 1 0 1 0 0 0 0 0", + " 0 0 0 0 a11 a10 a9 a8", + " a7 a6 a5 a4 a3 a2 a1 a0", + " o o o o o o o o"; + + write = " 1 1 0 0 0 0 0 0", + " 0 0 0 0 a11 a10 a9 a8", + " a7 a6 a5 a4 a3 a2 a1 a0", + " i i i i i i i i"; + + loadpage_lo = " 1 1 0 0 0 0 0 1", + " 0 0 0 0 0 0 0 0", + " 0 0 0 0 0 0 a1 a0", + " i i i i i i i i"; + + writepage = " 1 1 0 0 0 0 1 0", + " 0 0 0 0 a11 a10 a9 a8", + " a7 a6 a5 a4 a3 a2 0 0", + " x x x x x x x x"; + + mode = 0x41; + delay = 20; + blocksize = 4; + readsize = 256; + ; + + memory "flash" + paged = yes; + size = 16384; + page_size = 128; + num_pages = 128; + min_write_delay = 4500; + max_write_delay = 4500; + readback_p1 = 0x00; + readback_p2 = 0x00; + read_lo = " 0 0 1 0 0 0 0 0", + "a15 a14 a13 a12 a11 a10 a9 a8", + " a7 a6 a5 a4 a3 a2 a1 a0", + " o o o o o o o o"; + + read_hi = " 0 0 1 0 1 0 0 0", + "a15 a14 a13 a12 a11 a10 a9 a8", + " a7 a6 a5 a4 a3 a2 a1 a0", + " o o o o o o o o"; + + loadpage_lo = " 0 1 0 0 0 0 0 0", + " x x x x x x x x", + " x x a5 a4 a3 a2 a1 a0", + " i i i i i i i i"; + + loadpage_hi = " 0 1 0 0 1 0 0 0", + " x x x x x x x x", + " x x a5 a4 a3 a2 a1 a0", + " i i i i i i i i"; + + writepage = " 0 1 0 0 1 1 0 0", + "a15 a14 a13 a12 a11 a10 a9 a8", + " a7 a6 x x x x x x", + " x x x x x x x x"; + + mode = 0x41; + delay = 6; + blocksize = 128; + readsize = 256; + ; + + memory "lfuse" + size = 1; + write = "1 0 1 0 1 1 0 0 1 0 1 0 0 0 0 0", + "x x x x x x x x i i i i i i i i"; + + read = "0 1 0 1 0 0 0 0 0 0 0 0 0 0 0 0", + "x x x x x x x x o o o o o o o o"; + min_write_delay = 9000; + max_write_delay = 9000; + ; + + memory "hfuse" + size = 1; + write = "1 0 1 0 1 1 0 0 1 0 1 0 1 0 0 0", + "x x x x x x x x i i i i i i i i"; + + read = "0 1 0 1 1 0 0 0 0 0 0 0 1 0 0 0", + "x x x x x x x x o o o o o o o o"; + min_write_delay = 9000; + max_write_delay = 9000; + ; + + memory "efuse" + size = 1; + write = "1 0 1 0 1 1 0 0 1 0 1 0 0 1 0 0", + "x x x x x x x x i i i i i i i i"; + + read = "0 1 0 1 0 0 0 0 0 0 0 0 1 0 0 0", + "x x x x x x x x o o o o o o o o"; + min_write_delay = 9000; + max_write_delay = 9000; + ; + + memory "lock" + size = 1; + read = "0 1 0 1 1 0 0 0 0 0 0 0 0 0 0 0", + "x x x x x x x x x x o o o o o o"; + + write = "1 0 1 0 1 1 0 0 1 1 1 x x x x x", + "x x x x x x x x 1 1 i i i i i i"; + min_write_delay = 9000; + max_write_delay = 9000; + ; + + memory "calibration" + size = 1; + read = "0 0 1 1 1 0 0 0 0 0 0 x x x x x", + "0 0 0 0 0 0 0 0 o o o o o o o o"; + ; + memory "signature" + size = 3; + read = "0 0 1 1 0 0 0 0 0 0 0 x x x x x", + "x x x x x x a1 a0 o o o o o o o o"; + ; + ; + +#------------------------------------------------------------ +# AT90USB82 +#------------------------------------------------------------ +# Changes against AT90USB162 (beside IDs) +# memory "flash" +# size = 8192; +# num_pages = 64; + +part + id = "usb82"; + desc = "AT90USB82"; + has_jtag = no; + has_debugwire = yes; + signature = 0x1e 0x93 0x82; + usbpid = 0x2ff7; + chip_erase_delay = 9000; + reset = io; + pgm_enable = "1 0 1 0 1 1 0 0 0 1 0 1 0 0 1 1", + "x x x x x x x x x x x x x x x x"; + chip_erase = "1 0 1 0 1 1 0 0 1 0 0 x x x x x", + "x x x x x x x x x x x x x x x x"; + pagel = 0xD7; + bs2 = 0xC6; + + timeout = 200; + stabdelay = 100; + cmdexedelay = 25; + synchloops = 32; + bytedelay = 0; + pollindex = 3; + pollvalue = 0x53; + predelay = 1; + postdelay = 1; + pollmethod = 1; + pp_controlstack = + 0x0E, 0x1E, 0x0F, 0x1F, 0x2E, 0x3E, 0x2F, 0x3F, + 0x4E, 0x5E, 0x4F, 0x5F, 0x6E, 0x7E, 0x6F, 0x7F, + 0x66, 0x76, 0x67, 0x77, 0x6A, 0x7A, 0x6B, 0x7B, + 0xBE, 0xFD, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00; + hventerstabdelay = 100; + progmodedelay = 0; + latchcycles = 5; + togglevtg = 1; + poweroffdelay = 15; + resetdelayms = 1; + resetdelayus = 0; + hvleavestabdelay = 15; + chiperasepulsewidth = 0; + chiperasepolltimeout = 10; + programfusepulsewidth = 0; + programfusepolltimeout = 5; + programlockpulsewidth = 0; + programlockpolltimeout = 5; + + ocdrev = 1; + + memory "eeprom" + paged = no; /* leave this "no" */ + page_size = 4; /* for parallel programming */ + size = 512; + num_pages = 128; + min_write_delay = 9000; + max_write_delay = 9000; + readback_p1 = 0x00; + readback_p2 = 0x00; + read = " 1 0 1 0 0 0 0 0", + " 0 0 0 0 a11 a10 a9 a8", + " a7 a6 a5 a4 a3 a2 a1 a0", + " o o o o o o o o"; + + write = " 1 1 0 0 0 0 0 0", + " 0 0 0 0 a11 a10 a9 a8", + " a7 a6 a5 a4 a3 a2 a1 a0", + " i i i i i i i i"; + + loadpage_lo = " 1 1 0 0 0 0 0 1", + " 0 0 0 0 0 0 0 0", + " 0 0 0 0 0 0 a1 a0", + " i i i i i i i i"; + + writepage = " 1 1 0 0 0 0 1 0", + " 0 0 0 0 a11 a10 a9 a8", + " a7 a6 a5 a4 a3 a2 0 0", + " x x x x x x x x"; + + mode = 0x41; + delay = 20; + blocksize = 4; + readsize = 256; + ; + + memory "flash" + paged = yes; + size = 8192; + page_size = 128; + num_pages = 64; + min_write_delay = 4500; + max_write_delay = 4500; + readback_p1 = 0x00; + readback_p2 = 0x00; + read_lo = " 0 0 1 0 0 0 0 0", + "a15 a14 a13 a12 a11 a10 a9 a8", + " a7 a6 a5 a4 a3 a2 a1 a0", + " o o o o o o o o"; + + read_hi = " 0 0 1 0 1 0 0 0", + "a15 a14 a13 a12 a11 a10 a9 a8", + " a7 a6 a5 a4 a3 a2 a1 a0", + " o o o o o o o o"; + + loadpage_lo = " 0 1 0 0 0 0 0 0", + " x x x x x x x x", + " x x a5 a4 a3 a2 a1 a0", + " i i i i i i i i"; + + loadpage_hi = " 0 1 0 0 1 0 0 0", + " x x x x x x x x", + " x x a5 a4 a3 a2 a1 a0", + " i i i i i i i i"; + + writepage = " 0 1 0 0 1 1 0 0", + "a15 a14 a13 a12 a11 a10 a9 a8", + " a7 a6 x x x x x x", + " x x x x x x x x"; + + mode = 0x41; + delay = 6; + blocksize = 128; + readsize = 256; + ; + + memory "lfuse" + size = 1; + write = "1 0 1 0 1 1 0 0 1 0 1 0 0 0 0 0", + "x x x x x x x x i i i i i i i i"; + + read = "0 1 0 1 0 0 0 0 0 0 0 0 0 0 0 0", + "x x x x x x x x o o o o o o o o"; + min_write_delay = 9000; + max_write_delay = 9000; + ; + + memory "hfuse" + size = 1; + write = "1 0 1 0 1 1 0 0 1 0 1 0 1 0 0 0", + "x x x x x x x x i i i i i i i i"; + + read = "0 1 0 1 1 0 0 0 0 0 0 0 1 0 0 0", + "x x x x x x x x o o o o o o o o"; + min_write_delay = 9000; + max_write_delay = 9000; + ; + + memory "efuse" + size = 1; + write = "1 0 1 0 1 1 0 0 1 0 1 0 0 1 0 0", + "x x x x x x x x i i i i i i i i"; + + read = "0 1 0 1 0 0 0 0 0 0 0 0 1 0 0 0", + "x x x x x x x x o o o o o o o o"; + min_write_delay = 9000; + max_write_delay = 9000; + ; + + memory "lock" + size = 1; + read = "0 1 0 1 1 0 0 0 0 0 0 0 0 0 0 0", + "x x x x x x x x x x o o o o o o"; + + write = "1 0 1 0 1 1 0 0 1 1 1 x x x x x", + "x x x x x x x x 1 1 i i i i i i"; + min_write_delay = 9000; + max_write_delay = 9000; + ; + + memory "calibration" + size = 1; + read = "0 0 1 1 1 0 0 0 0 0 0 x x x x x", + "0 0 0 0 0 0 0 0 o o o o o o o o"; + ; + memory "signature" + size = 3; + read = "0 0 1 1 0 0 0 0 0 0 0 x x x x x", + "x x x x x x a1 a0 o o o o o o o o"; + ; + ; + +#------------------------------------------------------------ +# ATmega32U2 +#------------------------------------------------------------ +# Changes against AT90USB162 (beside IDs) +# memory "flash" +# size = 32768; +# num_pages = 256; +# memory "eeprom" +# size = 1024; +# num_pages = 256; +part + id = "m32u2"; + desc = "ATmega32U2"; + has_jtag = no; + has_debugwire = yes; + signature = 0x1e 0x95 0x8a; + usbpid = 0x2ff0; + chip_erase_delay = 9000; + reset = io; + pgm_enable = "1 0 1 0 1 1 0 0 0 1 0 1 0 0 1 1", + "x x x x x x x x x x x x x x x x"; + chip_erase = "1 0 1 0 1 1 0 0 1 0 0 x x x x x", + "x x x x x x x x x x x x x x x x"; + pagel = 0xD7; + bs2 = 0xC6; + + timeout = 200; + stabdelay = 100; + cmdexedelay = 25; + synchloops = 32; + bytedelay = 0; + pollindex = 3; + pollvalue = 0x53; + predelay = 1; + postdelay = 1; + pollmethod = 1; + pp_controlstack = + 0x0E, 0x1E, 0x0F, 0x1F, 0x2E, 0x3E, 0x2F, 0x3F, + 0x4E, 0x5E, 0x4F, 0x5F, 0x6E, 0x7E, 0x6F, 0x7F, + 0x66, 0x76, 0x67, 0x77, 0x6A, 0x7A, 0x6B, 0x7B, + 0xBE, 0xFD, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00; + hventerstabdelay = 100; + progmodedelay = 0; + latchcycles = 5; + togglevtg = 1; + poweroffdelay = 15; + resetdelayms = 1; + resetdelayus = 0; + hvleavestabdelay = 15; + chiperasepulsewidth = 0; + chiperasepolltimeout = 10; + programfusepulsewidth = 0; + programfusepolltimeout = 5; + programlockpulsewidth = 0; + programlockpolltimeout = 5; + + ocdrev = 1; + + memory "eeprom" + paged = no; /* leave this "no" */ + page_size = 4; /* for parallel programming */ + size = 1024; + num_pages = 256; + min_write_delay = 9000; + max_write_delay = 9000; + readback_p1 = 0x00; + readback_p2 = 0x00; + read = " 1 0 1 0 0 0 0 0", + " 0 0 0 0 a11 a10 a9 a8", + " a7 a6 a5 a4 a3 a2 a1 a0", + " o o o o o o o o"; + + write = " 1 1 0 0 0 0 0 0", + " 0 0 0 0 a11 a10 a9 a8", + " a7 a6 a5 a4 a3 a2 a1 a0", + " i i i i i i i i"; + + loadpage_lo = " 1 1 0 0 0 0 0 1", + " 0 0 0 0 0 0 0 0", + " 0 0 0 0 0 0 a1 a0", + " i i i i i i i i"; + + writepage = " 1 1 0 0 0 0 1 0", + " 0 0 0 0 a11 a10 a9 a8", + " a7 a6 a5 a4 a3 a2 0 0", + " x x x x x x x x"; + + mode = 0x41; + delay = 20; + blocksize = 4; + readsize = 256; + ; + + memory "flash" + paged = yes; + size = 32768; + page_size = 128; + num_pages = 256; + min_write_delay = 4500; + max_write_delay = 4500; + readback_p1 = 0x00; + readback_p2 = 0x00; + read_lo = " 0 0 1 0 0 0 0 0", + "a15 a14 a13 a12 a11 a10 a9 a8", + " a7 a6 a5 a4 a3 a2 a1 a0", + " o o o o o o o o"; + + read_hi = " 0 0 1 0 1 0 0 0", + "a15 a14 a13 a12 a11 a10 a9 a8", + " a7 a6 a5 a4 a3 a2 a1 a0", + " o o o o o o o o"; + + loadpage_lo = " 0 1 0 0 0 0 0 0", + " x x x x x x x x", + " x x a5 a4 a3 a2 a1 a0", + " i i i i i i i i"; + + loadpage_hi = " 0 1 0 0 1 0 0 0", + " x x x x x x x x", + " x x a5 a4 a3 a2 a1 a0", + " i i i i i i i i"; + + writepage = " 0 1 0 0 1 1 0 0", + "a15 a14 a13 a12 a11 a10 a9 a8", + " a7 a6 x x x x x x", + " x x x x x x x x"; + + mode = 0x41; + delay = 6; + blocksize = 128; + readsize = 256; + ; + + memory "lfuse" + size = 1; + write = "1 0 1 0 1 1 0 0 1 0 1 0 0 0 0 0", + "x x x x x x x x i i i i i i i i"; + + read = "0 1 0 1 0 0 0 0 0 0 0 0 0 0 0 0", + "x x x x x x x x o o o o o o o o"; + min_write_delay = 9000; + max_write_delay = 9000; + ; + + memory "hfuse" + size = 1; + write = "1 0 1 0 1 1 0 0 1 0 1 0 1 0 0 0", + "x x x x x x x x i i i i i i i i"; + + read = "0 1 0 1 1 0 0 0 0 0 0 0 1 0 0 0", + "x x x x x x x x o o o o o o o o"; + min_write_delay = 9000; + max_write_delay = 9000; + ; + + memory "efuse" + size = 1; + write = "1 0 1 0 1 1 0 0 1 0 1 0 0 1 0 0", + "x x x x x x x x i i i i i i i i"; + + read = "0 1 0 1 0 0 0 0 0 0 0 0 1 0 0 0", + "x x x x x x x x o o o o o o o o"; + min_write_delay = 9000; + max_write_delay = 9000; + ; + + memory "lock" + size = 1; + read = "0 1 0 1 1 0 0 0 0 0 0 0 0 0 0 0", + "x x x x x x x x x x o o o o o o"; + + write = "1 0 1 0 1 1 0 0 1 1 1 x x x x x", + "x x x x x x x x 1 1 i i i i i i"; + min_write_delay = 9000; + max_write_delay = 9000; + ; + + memory "calibration" + size = 1; + read = "0 0 1 1 1 0 0 0 0 0 0 x x x x x", + "0 0 0 0 0 0 0 0 o o o o o o o o"; + ; + memory "signature" + size = 3; + read = "0 0 1 1 0 0 0 0 0 0 0 x x x x x", + "x x x x x x a1 a0 o o o o o o o o"; + ; + ; +#------------------------------------------------------------ +# ATmega16U2 +#------------------------------------------------------------ +# Changes against ATmega32U2 (beside IDs) +# memory "flash" +# size = 16384; +# num_pages = 128; +# memory "eeprom" +# size = 512; +# num_pages = 128; +part + id = "m16u2"; + desc = "ATmega16U2"; + has_jtag = no; + has_debugwire = yes; + signature = 0x1e 0x94 0x89; + usbpid = 0x2fef; + chip_erase_delay = 9000; + reset = io; + pgm_enable = "1 0 1 0 1 1 0 0 0 1 0 1 0 0 1 1", + "x x x x x x x x x x x x x x x x"; + chip_erase = "1 0 1 0 1 1 0 0 1 0 0 x x x x x", + "x x x x x x x x x x x x x x x x"; + pagel = 0xD7; + bs2 = 0xC6; + + timeout = 200; + stabdelay = 100; + cmdexedelay = 25; + synchloops = 32; + bytedelay = 0; + pollindex = 3; + pollvalue = 0x53; + predelay = 1; + postdelay = 1; + pollmethod = 1; + pp_controlstack = + 0x0E, 0x1E, 0x0F, 0x1F, 0x2E, 0x3E, 0x2F, 0x3F, + 0x4E, 0x5E, 0x4F, 0x5F, 0x6E, 0x7E, 0x6F, 0x7F, + 0x66, 0x76, 0x67, 0x77, 0x6A, 0x7A, 0x6B, 0x7B, + 0xBE, 0xFD, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00; + hventerstabdelay = 100; + progmodedelay = 0; + latchcycles = 5; + togglevtg = 1; + poweroffdelay = 15; + resetdelayms = 1; + resetdelayus = 0; + hvleavestabdelay = 15; + chiperasepulsewidth = 0; + chiperasepolltimeout = 10; + programfusepulsewidth = 0; + programfusepolltimeout = 5; + programlockpulsewidth = 0; + programlockpolltimeout = 5; + + ocdrev = 1; + + memory "eeprom" + paged = no; /* leave this "no" */ + page_size = 4; /* for parallel programming */ + size = 512; + num_pages = 128; + min_write_delay = 9000; + max_write_delay = 9000; + readback_p1 = 0x00; + readback_p2 = 0x00; + read = " 1 0 1 0 0 0 0 0", + " 0 0 0 0 a11 a10 a9 a8", + " a7 a6 a5 a4 a3 a2 a1 a0", + " o o o o o o o o"; + + write = " 1 1 0 0 0 0 0 0", + " 0 0 0 0 a11 a10 a9 a8", + " a7 a6 a5 a4 a3 a2 a1 a0", + " i i i i i i i i"; + + loadpage_lo = " 1 1 0 0 0 0 0 1", + " 0 0 0 0 0 0 0 0", + " 0 0 0 0 0 0 a1 a0", + " i i i i i i i i"; + + writepage = " 1 1 0 0 0 0 1 0", + " 0 0 0 0 a11 a10 a9 a8", + " a7 a6 a5 a4 a3 a2 0 0", + " x x x x x x x x"; + + mode = 0x41; + delay = 20; + blocksize = 4; + readsize = 256; + ; + + memory "flash" + paged = yes; + size = 16384; + page_size = 128; + num_pages = 128; + min_write_delay = 4500; + max_write_delay = 4500; + readback_p1 = 0x00; + readback_p2 = 0x00; + read_lo = " 0 0 1 0 0 0 0 0", + "a15 a14 a13 a12 a11 a10 a9 a8", + " a7 a6 a5 a4 a3 a2 a1 a0", + " o o o o o o o o"; + + read_hi = " 0 0 1 0 1 0 0 0", + "a15 a14 a13 a12 a11 a10 a9 a8", + " a7 a6 a5 a4 a3 a2 a1 a0", + " o o o o o o o o"; + + loadpage_lo = " 0 1 0 0 0 0 0 0", + " x x x x x x x x", + " x x a5 a4 a3 a2 a1 a0", + " i i i i i i i i"; + + loadpage_hi = " 0 1 0 0 1 0 0 0", + " x x x x x x x x", + " x x a5 a4 a3 a2 a1 a0", + " i i i i i i i i"; + + writepage = " 0 1 0 0 1 1 0 0", + "a15 a14 a13 a12 a11 a10 a9 a8", + " a7 a6 x x x x x x", + " x x x x x x x x"; + + mode = 0x41; + delay = 6; + blocksize = 128; + readsize = 256; + ; + + memory "lfuse" + size = 1; + write = "1 0 1 0 1 1 0 0 1 0 1 0 0 0 0 0", + "x x x x x x x x i i i i i i i i"; + + read = "0 1 0 1 0 0 0 0 0 0 0 0 0 0 0 0", + "x x x x x x x x o o o o o o o o"; + min_write_delay = 9000; + max_write_delay = 9000; + ; + + memory "hfuse" + size = 1; + write = "1 0 1 0 1 1 0 0 1 0 1 0 1 0 0 0", + "x x x x x x x x i i i i i i i i"; + + read = "0 1 0 1 1 0 0 0 0 0 0 0 1 0 0 0", + "x x x x x x x x o o o o o o o o"; + min_write_delay = 9000; + max_write_delay = 9000; + ; + + memory "efuse" + size = 1; + write = "1 0 1 0 1 1 0 0 1 0 1 0 0 1 0 0", + "x x x x x x x x i i i i i i i i"; + + read = "0 1 0 1 0 0 0 0 0 0 0 0 1 0 0 0", + "x x x x x x x x o o o o o o o o"; + min_write_delay = 9000; + max_write_delay = 9000; + ; + + memory "lock" + size = 1; + read = "0 1 0 1 1 0 0 0 0 0 0 0 0 0 0 0", + "x x x x x x x x x x o o o o o o"; + + write = "1 0 1 0 1 1 0 0 1 1 1 x x x x x", + "x x x x x x x x 1 1 i i i i i i"; + min_write_delay = 9000; + max_write_delay = 9000; + ; + + memory "calibration" + size = 1; + read = "0 0 1 1 1 0 0 0 0 0 0 x x x x x", + "0 0 0 0 0 0 0 0 o o o o o o o o"; + ; + memory "signature" + size = 3; + read = "0 0 1 1 0 0 0 0 0 0 0 x x x x x", + "x x x x x x a1 a0 o o o o o o o o"; + ; + ; + +#------------------------------------------------------------ +# ATmega8U2 +#------------------------------------------------------------ +# Changes against ATmega16U2 (beside IDs) +# memory "flash" +# size = 8192; +# page_size = 64; +# blocksize = 64; + +part + id = "m8u2"; + desc = "ATmega8U2"; + has_jtag = no; + has_debugwire = yes; + signature = 0x1e 0x93 0x89; + usbpid = 0x2fee; + chip_erase_delay = 9000; + reset = io; + pgm_enable = "1 0 1 0 1 1 0 0 0 1 0 1 0 0 1 1", + "x x x x x x x x x x x x x x x x"; + chip_erase = "1 0 1 0 1 1 0 0 1 0 0 x x x x x", + "x x x x x x x x x x x x x x x x"; + pagel = 0xD7; + bs2 = 0xC6; + + timeout = 200; + stabdelay = 100; + cmdexedelay = 25; + synchloops = 32; + bytedelay = 0; + pollindex = 3; + pollvalue = 0x53; + predelay = 1; + postdelay = 1; + pollmethod = 1; + pp_controlstack = + 0x0E, 0x1E, 0x0F, 0x1F, 0x2E, 0x3E, 0x2F, 0x3F, + 0x4E, 0x5E, 0x4F, 0x5F, 0x6E, 0x7E, 0x6F, 0x7F, + 0x66, 0x76, 0x67, 0x77, 0x6A, 0x7A, 0x6B, 0x7B, + 0xBE, 0xFD, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00; + hventerstabdelay = 100; + progmodedelay = 0; + latchcycles = 5; + togglevtg = 1; + poweroffdelay = 15; + resetdelayms = 1; + resetdelayus = 0; + hvleavestabdelay = 15; + chiperasepulsewidth = 0; + chiperasepolltimeout = 10; + programfusepulsewidth = 0; + programfusepolltimeout = 5; + programlockpulsewidth = 0; + programlockpolltimeout = 5; + + ocdrev = 1; + + memory "eeprom" + paged = no; /* leave this "no" */ + page_size = 4; /* for parallel programming */ + size = 512; + num_pages = 128; + min_write_delay = 9000; + max_write_delay = 9000; + readback_p1 = 0x00; + readback_p2 = 0x00; + read = " 1 0 1 0 0 0 0 0", + " 0 0 0 0 a11 a10 a9 a8", + " a7 a6 a5 a4 a3 a2 a1 a0", + " o o o o o o o o"; + + write = " 1 1 0 0 0 0 0 0", + " 0 0 0 0 a11 a10 a9 a8", + " a7 a6 a5 a4 a3 a2 a1 a0", + " i i i i i i i i"; + + loadpage_lo = " 1 1 0 0 0 0 0 1", + " 0 0 0 0 0 0 0 0", + " 0 0 0 0 0 0 a1 a0", + " i i i i i i i i"; + + writepage = " 1 1 0 0 0 0 1 0", + " 0 0 0 0 a11 a10 a9 a8", + " a7 a6 a5 a4 a3 a2 0 0", + " x x x x x x x x"; + + mode = 0x41; + delay = 20; + blocksize = 4; + readsize = 256; + ; + + memory "flash" + paged = yes; + size = 8192; + page_size = 128; + num_pages = 64; + min_write_delay = 4500; + max_write_delay = 4500; + readback_p1 = 0x00; + readback_p2 = 0x00; + read_lo = " 0 0 1 0 0 0 0 0", + "a15 a14 a13 a12 a11 a10 a9 a8", + " a7 a6 a5 a4 a3 a2 a1 a0", + " o o o o o o o o"; + + read_hi = " 0 0 1 0 1 0 0 0", + "a15 a14 a13 a12 a11 a10 a9 a8", + " a7 a6 a5 a4 a3 a2 a1 a0", + " o o o o o o o o"; + + loadpage_lo = " 0 1 0 0 0 0 0 0", + " x x x x x x x x", + " x x a5 a4 a3 a2 a1 a0", + " i i i i i i i i"; + + loadpage_hi = " 0 1 0 0 1 0 0 0", + " x x x x x x x x", + " x x a5 a4 a3 a2 a1 a0", + " i i i i i i i i"; + + writepage = " 0 1 0 0 1 1 0 0", + "a15 a14 a13 a12 a11 a10 a9 a8", + " a7 a6 x x x x x x", + " x x x x x x x x"; + + mode = 0x41; + delay = 6; + blocksize = 128; + readsize = 256; + ; + + memory "lfuse" + size = 1; + write = "1 0 1 0 1 1 0 0 1 0 1 0 0 0 0 0", + "x x x x x x x x i i i i i i i i"; + + read = "0 1 0 1 0 0 0 0 0 0 0 0 0 0 0 0", + "x x x x x x x x o o o o o o o o"; + min_write_delay = 9000; + max_write_delay = 9000; + ; + + memory "hfuse" + size = 1; + write = "1 0 1 0 1 1 0 0 1 0 1 0 1 0 0 0", + "x x x x x x x x i i i i i i i i"; + + read = "0 1 0 1 1 0 0 0 0 0 0 0 1 0 0 0", + "x x x x x x x x o o o o o o o o"; + min_write_delay = 9000; + max_write_delay = 9000; + ; + + memory "efuse" + size = 1; + write = "1 0 1 0 1 1 0 0 1 0 1 0 0 1 0 0", + "x x x x x x x x i i i i i i i i"; + + read = "0 1 0 1 0 0 0 0 0 0 0 0 1 0 0 0", + "x x x x x x x x o o o o o o o o"; + min_write_delay = 9000; + max_write_delay = 9000; + ; + + memory "lock" + size = 1; + read = "0 1 0 1 1 0 0 0 0 0 0 0 0 0 0 0", + "x x x x x x x x x x o o o o o o"; + + write = "1 0 1 0 1 1 0 0 1 1 1 x x x x x", + "x x x x x x x x 1 1 i i i i i i"; + min_write_delay = 9000; + max_write_delay = 9000; + ; + + memory "calibration" + size = 1; + read = "0 0 1 1 1 0 0 0 0 0 0 x x x x x", + "0 0 0 0 0 0 0 0 o o o o o o o o"; + ; + memory "signature" + size = 3; + read = "0 0 1 1 0 0 0 0 0 0 0 x x x x x", + "x x x x x x a1 a0 o o o o o o o o"; + ; + ; +#------------------------------------------------------------ +# ATmega325 +#------------------------------------------------------------ + +part + id = "m325"; + desc = "ATmega325"; + signature = 0x1e 0x95 0x05; + has_jtag = yes; +# stk500_devcode = 0x??; # No STK500v1 support? +# avr910_devcode = 0x??; # Try the ATmega16 one + avr910_devcode = 0x74; + pagel = 0xd7; + bs2 = 0xa0; + chip_erase_delay = 9000; + pgm_enable = "1 0 1 0 1 1 0 0 0 1 0 1 0 0 1 1", + "0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0"; + + chip_erase = "1 0 1 0 1 1 0 0 1 0 0 0 0 0 0 0", + "0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0"; + + timeout = 200; + stabdelay = 100; + cmdexedelay = 25; + synchloops = 32; + bytedelay = 0; + pollindex = 3; + pollvalue = 0x53; + predelay = 1; + postdelay = 1; + pollmethod = 1; + + pp_controlstack = + 0x0E, 0x1E, 0x0F, 0x1F, 0x2E, 0x3E, 0x2F, 0x3F, + 0x4E, 0x5E, 0x4F, 0x5F, 0x6E, 0x7E, 0x6F, 0x7F, + 0x66, 0x76, 0x67, 0x77, 0x6A, 0x7A, 0x6B, 0x7B, + 0xBE, 0xFD, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00; + hventerstabdelay = 100; + progmodedelay = 0; + latchcycles = 5; + togglevtg = 1; + poweroffdelay = 15; + resetdelayms = 1; + resetdelayus = 0; + hvleavestabdelay = 15; + chiperasepulsewidth = 0; + chiperasepolltimeout = 10; + programfusepulsewidth = 0; + programfusepolltimeout = 5; + programlockpulsewidth = 0; + programlockpolltimeout = 5; + + idr = 0x31; + spmcr = 0x57; + allowfullpagebitstream = no; + + ocdrev = 3; + + memory "eeprom" + paged = no; /* leave this "no" */ + page_size = 4; /* for parallel programming */ + size = 1024; + min_write_delay = 9000; + max_write_delay = 9000; + readback_p1 = 0xff; + readback_p2 = 0xff; + read = " 1 0 1 0 0 0 0 0", + " 0 0 0 0 0 0 a9 a8", + " a7 a6 a5 a4 a3 a2 a1 a0", + " o o o o o o o o"; + + write = " 1 1 0 0 0 0 0 0", + " 0 0 0 0 0 0 a9 a8", + " a7 a6 a5 a4 a3 a2 a1 a0", + " i i i i i i i i"; + + loadpage_lo = " 1 1 0 0 0 0 0 1", + " 0 0 0 0 0 0 0 0", + " 0 0 0 0 0 0 a1 a0", + " i i i i i i i i"; + + writepage = " 1 1 0 0 0 0 1 0", + " 0 0 0 0 0 0 a9 a8", + " a7 a6 a5 a4 a3 a2 0 0", + " x x x x x x x x"; + + mode = 0x41; + delay = 10; + blocksize = 4; + readsize = 256; + ; + + memory "flash" + paged = yes; + size = 32768; + page_size = 128; + num_pages = 256; + min_write_delay = 4500; + max_write_delay = 4500; + readback_p1 = 0xff; + readback_p2 = 0xff; + read_lo = " 0 0 1 0 0 0 0 0", + " 0 a14 a13 a12 a11 a10 a9 a8", + " a7 a6 a5 a4 a3 a2 a1 a0", + " o o o o o o o o"; + + read_hi = " 0 0 1 0 1 0 0 0", + " 0 a14 a13 a12 a11 a10 a9 a8", + " a7 a6 a5 a4 a3 a2 a1 a0", + " o o o o o o o o"; + + loadpage_lo = " 0 1 0 0 0 0 0 0", + " 0 0 0 0 0 0 0 0", + " a7 a6 a5 a4 a3 a2 a1 a0", + " i i i i i i i i"; + + loadpage_hi = " 0 1 0 0 1 0 0 0", + " 0 0 0 0 0 0 0 0", + " a7 a6 a5 a4 a3 a2 a1 a0", + " i i i i i i i i"; + + writepage = " 0 1 0 0 1 1 0 0", + " 0 a14 a13 a12 a11 a10 a9 a8", + " a7 a6 a5 a4 a3 a2 a1 a0", + " x x x x x x x x"; + + mode = 0x41; + delay = 10; + blocksize = 128; + readsize = 256; + ; + + memory "lock" + size = 1; + read = "0 1 0 1 1 0 0 0 0 0 0 0 0 0 0 0", + "x x x x x x x x x x o o o o o o"; + + write = "1 0 1 0 1 1 0 0 1 1 1 0 0 0 0 0", + "0 0 0 0 0 0 0 0 1 1 i i i i i i"; + min_write_delay = 9000; + max_write_delay = 9000; + ; + + memory "lfuse" + size = 1; + read = "0 1 0 1 0 0 0 0 0 0 0 0 0 0 0 0", + "0 0 0 0 0 0 0 0 o o o o o o o o"; + + write = "1 0 1 0 1 1 0 0 1 0 1 0 0 0 0 0", + "0 0 0 0 0 0 0 0 i i i i i i i i"; + min_write_delay = 9000; + max_write_delay = 9000; + ; + + memory "hfuse" + size = 1; + read = "0 1 0 1 1 0 0 0 0 0 0 0 1 0 0 0", + "0 0 0 0 0 0 0 0 o o o o o o o o"; + + write = "1 0 1 0 1 1 0 0 1 0 1 0 1 0 0 0", + "0 0 0 0 0 0 0 0 i i i i i i i i"; + min_write_delay = 9000; + max_write_delay = 9000; + ; + + memory "efuse" + size = 1; + + read = "0 1 0 1 0 0 0 0 0 0 0 0 1 0 0 0", + "0 0 0 0 0 0 0 0 o o o o o o o o"; + + write = "1 0 1 0 1 1 0 0 1 0 1 0 0 1 0 0", + "0 0 0 0 0 0 0 0 1 1 1 1 1 i i i"; + min_write_delay = 9000; + max_write_delay = 9000; + ; + + memory "signature" + size = 3; + read = "0 0 1 1 0 0 0 0 0 0 0 0 0 0 0 0", + "0 0 0 0 0 0 a1 a0 o o o o o o o o"; + ; + + memory "calibration" + size = 1; + + read = "0 0 1 1 1 0 0 0 0 0 0 0 0 0 0 0", + "0 0 0 0 0 0 0 0 o o o o o o o o"; + ; + ; + +#------------------------------------------------------------ +# ATmega645 +#------------------------------------------------------------ + +part + id = "m645"; + desc = "ATmega645"; + signature = 0x1E 0x96 0x05; + has_jtag = yes; +# stk500_devcode = 0x??; # No STK500v1 support? +# avr910_devcode = 0x??; # Try the ATmega16 one + avr910_devcode = 0x74; + pagel = 0xd7; + bs2 = 0xa0; + chip_erase_delay = 9000; + pgm_enable = "1 0 1 0 1 1 0 0 0 1 0 1 0 0 1 1", + "0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0"; + + chip_erase = "1 0 1 0 1 1 0 0 1 0 0 0 0 0 0 0", + "0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0"; + + timeout = 200; + stabdelay = 100; + cmdexedelay = 25; + synchloops = 32; + bytedelay = 0; + pollindex = 3; + pollvalue = 0x53; + predelay = 1; + postdelay = 1; + pollmethod = 1; + + pp_controlstack = + 0x0E, 0x1E, 0x0F, 0x1F, 0x2E, 0x3E, 0x2F, 0x3F, + 0x4E, 0x5E, 0x4F, 0x5F, 0x6E, 0x7E, 0x6F, 0x7F, + 0x66, 0x76, 0x67, 0x77, 0x6A, 0x7A, 0x6B, 0x7B, + 0xBE, 0xFD, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00; + hventerstabdelay = 100; + progmodedelay = 0; + latchcycles = 5; + togglevtg = 1; + poweroffdelay = 15; + resetdelayms = 1; + resetdelayus = 0; + hvleavestabdelay = 15; + chiperasepulsewidth = 0; + chiperasepolltimeout = 10; + programfusepulsewidth = 0; + programfusepolltimeout = 5; + programlockpulsewidth = 0; + programlockpolltimeout = 5; + + idr = 0x31; + spmcr = 0x57; + allowfullpagebitstream = no; + + ocdrev = 3; + + memory "eeprom" + paged = no; /* leave this "no" */ + page_size = 8; /* for parallel programming */ + size = 2048; + min_write_delay = 9000; + max_write_delay = 9000; + readback_p1 = 0xff; + readback_p2 = 0xff; + read = " 1 0 1 0 0 0 0 0", + " 0 0 0 0 0 a10 a9 a8", + " a7 a6 a5 a4 a3 a2 a1 a0", + " o o o o o o o o"; + + write = " 1 1 0 0 0 0 0 0", + " 0 0 0 0 0 a10 a9 a8", + " a7 a6 a5 a4 a3 a2 a1 a0", + " i i i i i i i i"; + + loadpage_lo = " 1 1 0 0 0 0 0 1", + " 0 0 0 0 0 0 0 0", + " 0 0 0 0 0 a2 a1 a0", + " i i i i i i i i"; + + writepage = " 1 1 0 0 0 0 1 0", + " 0 0 0 0 0 a10 a9 a8", + " a7 a6 a5 a4 a3 0 0 0", + " x x x x x x x x"; + + mode = 0x41; + delay = 10; + blocksize = 8; + readsize = 256; + ; + + memory "flash" + paged = yes; + size = 65536; + page_size = 256; + num_pages = 256; + min_write_delay = 4500; + max_write_delay = 4500; + readback_p1 = 0xff; + readback_p2 = 0xff; + read_lo = " 0 0 1 0 0 0 0 0", + " a15 a14 a13 a12 a11 a10 a9 a8", + " a7 a6 a5 a4 a3 a2 a1 a0", + " o o o o o o o o"; + + read_hi = " 0 0 1 0 1 0 0 0", + " a15 a14 a13 a12 a11 a10 a9 a8", + " a7 a6 a5 a4 a3 a2 a1 a0", + " o o o o o o o o"; + + loadpage_lo = " 0 1 0 0 0 0 0 0", + " 0 0 0 0 0 0 0 0", + " a7 a6 a5 a4 a3 a2 a1 a0", + " i i i i i i i i"; + + loadpage_hi = " 0 1 0 0 1 0 0 0", + " 0 0 0 0 0 0 0 0", + " a7 a6 a5 a4 a3 a2 a1 a0", + " i i i i i i i i"; + + writepage = " 0 1 0 0 1 1 0 0", + " a15 a14 a13 a12 a11 a10 a9 a8", + " a7 a6 a5 a4 a3 a2 a1 a0", + " 0 0 0 0 0 0 0 0"; + + mode = 0x41; + delay = 10; + blocksize = 128; + readsize = 256; + ; + + memory "lock" + size = 1; + read = "0 1 0 1 1 0 0 0 0 0 0 0 0 0 0 0", + "x x x x x x x x x x o o o o o o"; + + write = "1 0 1 0 1 1 0 0 1 1 1 0 0 0 0 0", + "0 0 0 0 0 0 0 0 1 1 i i i i i i"; + min_write_delay = 9000; + max_write_delay = 9000; + ; + + memory "lfuse" + size = 1; + read = "0 1 0 1 0 0 0 0 0 0 0 0 0 0 0 0", + "0 0 0 0 0 0 0 0 o o o o o o o o"; + + write = "1 0 1 0 1 1 0 0 1 0 1 0 0 0 0 0", + "0 0 0 0 0 0 0 0 i i i i i i i i"; + min_write_delay = 9000; + max_write_delay = 9000; + ; + + memory "hfuse" + size = 1; + read = "0 1 0 1 1 0 0 0 0 0 0 0 1 0 0 0", + "0 0 0 0 0 0 0 0 o o o o o o o o"; + + write = "1 0 1 0 1 1 0 0 1 0 1 0 1 0 0 0", + "0 0 0 0 0 0 0 0 i i i i i i i i"; + min_write_delay = 9000; + max_write_delay = 9000; + ; + + memory "efuse" + size = 1; + + read = "0 1 0 1 0 0 0 0 0 0 0 0 1 0 0 0", + "0 0 0 0 0 0 0 0 o o o o o o o o"; + + write = "1 0 1 0 1 1 0 0 1 0 1 0 0 1 0 0", + "0 0 0 0 0 0 0 0 1 1 1 1 1 i i i"; + min_write_delay = 9000; + max_write_delay = 9000; + ; + + memory "signature" + size = 3; + read = "0 0 1 1 0 0 0 0 0 0 0 0 0 0 0 0", + "0 0 0 0 0 0 a1 a0 o o o o o o o o"; + ; + + memory "calibration" + size = 1; + + read = "0 0 1 1 1 0 0 0 0 0 0 0 0 0 0 0", + "0 0 0 0 0 0 0 0 o o o o o o o o"; + ; + ; + +#------------------------------------------------------------ +# ATmega3250 +#------------------------------------------------------------ + +part parent "m325" + id = "m3250"; + desc = "ATmega3250"; + signature = 0x1E 0x95 0x06; + + ocdrev = 3; + ; + +#------------------------------------------------------------ +# ATmega6450 +#------------------------------------------------------------ + +part parent "m645" + id = "m6450"; + desc = "ATmega6450"; + signature = 0x1E 0x96 0x06; + + ocdrev = 3; + ; + +#------------------------------------------------------------ +# AVR XMEGA family common values +#------------------------------------------------------------ + +part + id = ".xmega"; + desc = "AVR XMEGA family common values"; + has_pdi = yes; + nvm_base = 0x01c0; + mcu_base = 0x0090; + + memory "signature" + size = 3; + offset = 0x1000090; + ; + + memory "prodsig" + size = 0x32; + offset = 0x8e0200; + page_size = 0x32; + readsize = 0x32; + ; + + memory "fuse1" + size = 1; + offset = 0x8f0021; + ; + + memory "fuse2" + size = 1; + offset = 0x8f0022; + ; + + memory "fuse4" + size = 1; + offset = 0x8f0024; + ; + + memory "fuse5" + size = 1; + offset = 0x8f0025; + ; + + memory "lock" + size = 1; + offset = 0x8f0027; + ; + + memory "data" + # SRAM, only used to supply the offset + offset = 0x1000000; + ; +; + +#------------------------------------------------------------ +# ATxmega16A4U +#------------------------------------------------------------ + +part parent ".xmega" + id = "x16a4u"; + desc = "ATxmega16A4U"; + signature = 0x1e 0x94 0x41; + usbpid = 0x2fe3; + + memory "eeprom" + size = 0x400; + offset = 0x8c0000; + page_size = 0x20; + readsize = 0x100; + ; + + memory "application" + size = 0x4000; + offset = 0x800000; + page_size = 0x100; + readsize = 0x100; + ; + + memory "apptable" + size = 0x1000; + offset = 0x803000; + page_size = 0x100; + readsize = 0x100; + ; + + memory "boot" + size = 0x1000; + offset = 0x804000; + page_size = 0x100; + readsize = 0x100; + ; + + memory "flash" + size = 0x5000; + offset = 0x800000; + page_size = 0x100; + readsize = 0x100; + ; + + memory "usersig" + size = 0x100; + offset = 0x8e0400; + page_size = 0x100; + readsize = 0x100; + ; +; + +#------------------------------------------------------------ +# ATxmega16C4 +#------------------------------------------------------------ + +part parent "x16a4u" + id = "x16c4"; + desc = "ATxmega16C4"; + signature = 0x1e 0x94 0x43; +; + +#------------------------------------------------------------ +# ATxmega16D4 +#------------------------------------------------------------ + +part parent "x16a4u" + id = "x16d4"; + desc = "ATxmega16D4"; + signature = 0x1e 0x94 0x42; +; + +#------------------------------------------------------------ +# ATxmega16A4 +#------------------------------------------------------------ + +part parent "x16a4u" + id = "x16a4"; + desc = "ATxmega16A4"; + signature = 0x1e 0x94 0x41; + has_jtag = yes; + + memory "fuse0" + size = 1; + offset = 0x8f0020; + ; +; + +#------------------------------------------------------------ +# ATxmega32A4U +#------------------------------------------------------------ + +part parent ".xmega" + id = "x32a4u"; + desc = "ATxmega32A4U"; + signature = 0x1e 0x95 0x41; + usbpid = 0x2fe4; + + memory "eeprom" + size = 0x400; + offset = 0x8c0000; + page_size = 0x20; + readsize = 0x100; + ; + + memory "application" + size = 0x8000; + offset = 0x800000; + page_size = 0x100; + readsize = 0x100; + ; + + memory "apptable" + size = 0x1000; + offset = 0x807000; + page_size = 0x100; + readsize = 0x100; + ; + + memory "boot" + size = 0x1000; + offset = 0x808000; + page_size = 0x100; + readsize = 0x100; + ; + + memory "flash" + size = 0x9000; + offset = 0x800000; + page_size = 0x100; + readsize = 0x100; + ; + + memory "usersig" + size = 0x100; + offset = 0x8e0400; + page_size = 0x100; + readsize = 0x100; + ; +; + +#------------------------------------------------------------ +# ATxmega32C4 +#------------------------------------------------------------ + +part parent "x32a4u" + id = "x32c4"; + desc = "ATxmega32C4"; + signature = 0x1e 0x95 0x44; +; + +#------------------------------------------------------------ +# ATxmega32D4 +#------------------------------------------------------------ + +part parent "x32a4u" + id = "x32d4"; + desc = "ATxmega32D4"; + signature = 0x1e 0x95 0x42; +; + +#------------------------------------------------------------ +# ATxmega32A4 +#------------------------------------------------------------ + +part parent "x32a4u" + id = "x32a4"; + desc = "ATxmega32A4"; + signature = 0x1e 0x95 0x41; + has_jtag = yes; + + memory "fuse0" + size = 1; + offset = 0x8f0020; + ; +; + +#------------------------------------------------------------ +# ATxmega64A4U +#------------------------------------------------------------ + +part parent ".xmega" + id = "x64a4u"; + desc = "ATxmega64A4U"; + signature = 0x1e 0x96 0x46; + usbpid = 0x2fe5; + + memory "eeprom" + size = 0x800; + offset = 0x8c0000; + page_size = 0x20; + readsize = 0x100; + ; + + memory "application" + size = 0x10000; + offset = 0x800000; + page_size = 0x100; + readsize = 0x100; + ; + + memory "apptable" + size = 0x1000; + offset = 0x80f000; + page_size = 0x100; + readsize = 0x100; + ; + + memory "boot" + size = 0x1000; + offset = 0x810000; + page_size = 0x100; + readsize = 0x100; + ; + + memory "flash" + size = 0x11000; + offset = 0x800000; + page_size = 0x100; + readsize = 0x100; + ; + + memory "usersig" + size = 0x100; + offset = 0x8e0400; + page_size = 0x100; + readsize = 0x100; + ; +; + +#------------------------------------------------------------ +# ATxmega64C3 +#------------------------------------------------------------ + +part parent "x64a4u" + id = "x64c3"; + desc = "ATxmega64C3"; + signature = 0x1e 0x96 0x49; + usbpid = 0x2fd6; +; + +#------------------------------------------------------------ +# ATxmega64D3 +#------------------------------------------------------------ + +part parent "x64a4u" + id = "x64d3"; + desc = "ATxmega64D3"; + signature = 0x1e 0x96 0x4a; +; + +#------------------------------------------------------------ +# ATxmega64D4 +#------------------------------------------------------------ + +part parent "x64a4u" + id = "x64d4"; + desc = "ATxmega64D4"; + signature = 0x1e 0x96 0x47; +; + +#------------------------------------------------------------ +# ATxmega64A1 +#------------------------------------------------------------ + +part parent "x64a4u" + id = "x64a1"; + desc = "ATxmega64A1"; + signature = 0x1e 0x96 0x4e; + has_jtag = yes; + + memory "fuse0" + size = 1; + offset = 0x8f0020; + ; +; + +#------------------------------------------------------------ +# ATxmega64A1U +#------------------------------------------------------------ + +part parent "x64a1" + id = "x64a1u"; + desc = "ATxmega64A1U"; + signature = 0x1e 0x96 0x4e; + usbpid = 0x2fe8; +; + +#------------------------------------------------------------ +# ATxmega64A3 +#------------------------------------------------------------ + +part parent "x64a1" + id = "x64a3"; + desc = "ATxmega64A3"; + signature = 0x1e 0x96 0x42; +; + +#------------------------------------------------------------ +# ATxmega64A3U +#------------------------------------------------------------ + +part parent "x64a1" + id = "x64a3u"; + desc = "ATxmega64A3U"; + signature = 0x1e 0x96 0x42; + usbpid = 0x2fe5; +; + +#------------------------------------------------------------ +# ATxmega64A4 +#------------------------------------------------------------ + +part parent "x64a1" + id = "x64a4"; + desc = "ATxmega64A4"; + signature = 0x1e 0x96 0x46; +; + +#------------------------------------------------------------ +# ATxmega64B1 +#------------------------------------------------------------ + +part parent "x64a1" + id = "x64b1"; + desc = "ATxmega64B1"; + signature = 0x1e 0x96 0x52; + usbpid = 0x2fe1; +; + +#------------------------------------------------------------ +# ATxmega64B3 +#------------------------------------------------------------ + +part parent "x64a1" + id = "x64b3"; + desc = "ATxmega64B3"; + signature = 0x1e 0x96 0x51; + usbpid = 0x2fdf; +; + +#------------------------------------------------------------ +# ATxmega128C3 +#------------------------------------------------------------ + +part parent ".xmega" + id = "x128c3"; + desc = "ATxmega128C3"; + signature = 0x1e 0x97 0x52; + usbpid = 0x2fd7; + + memory "eeprom" + size = 0x800; + offset = 0x8c0000; + page_size = 0x20; + readsize = 0x100; + ; + + memory "application" + size = 0x20000; + offset = 0x800000; + page_size = 0x200; + readsize = 0x100; + ; + + memory "apptable" + size = 0x2000; + offset = 0x81e000; + page_size = 0x200; + readsize = 0x100; + ; + + memory "boot" + size = 0x2000; + offset = 0x820000; + page_size = 0x200; + readsize = 0x100; + ; + + memory "flash" + size = 0x22000; + offset = 0x800000; + page_size = 0x200; + readsize = 0x100; + ; + + memory "usersig" + size = 0x200; + offset = 0x8e0400; + page_size = 0x200; + readsize = 0x100; + ; +; + +#------------------------------------------------------------ +# ATxmega128D3 +#------------------------------------------------------------ + +part parent "x128c3" + id = "x128d3"; + desc = "ATxmega128D3"; + signature = 0x1e 0x97 0x48; +; + +#------------------------------------------------------------ +# ATxmega128D4 +#------------------------------------------------------------ + +part parent "x128c3" + id = "x128d4"; + desc = "ATxmega128D4"; + signature = 0x1e 0x97 0x47; +; + +#------------------------------------------------------------ +# ATxmega128A1 +#------------------------------------------------------------ + +part parent "x128c3" + id = "x128a1"; + desc = "ATxmega128A1"; + signature = 0x1e 0x97 0x4c; + has_jtag = yes; + + memory "fuse0" + size = 1; + offset = 0x8f0020; + ; +; + +#------------------------------------------------------------ +# ATxmega128A1 revision D +#------------------------------------------------------------ + +part parent "x128a1" + id = "x128a1d"; + desc = "ATxmega128A1revD"; + signature = 0x1e 0x97 0x41; +; + +#------------------------------------------------------------ +# ATxmega128A1U +#------------------------------------------------------------ + +part parent "x128a1" + id = "x128a1u"; + desc = "ATxmega128A1U"; + signature = 0x1e 0x97 0x4c; + usbpid = 0x2fed; +; + +#------------------------------------------------------------ +# ATxmega128A3 +#------------------------------------------------------------ + +part parent "x128a1" + id = "x128a3"; + desc = "ATxmega128A3"; + signature = 0x1e 0x97 0x42; +; + +#------------------------------------------------------------ +# ATxmega128A3U +#------------------------------------------------------------ + +part parent "x128a1" + id = "x128a3u"; + desc = "ATxmega128A3U"; + signature = 0x1e 0x97 0x42; + usbpid = 0x2fe6; +; + +#------------------------------------------------------------ +# ATxmega128A4 +#------------------------------------------------------------ + +part parent ".xmega" + id = "x128a4"; + desc = "ATxmega128A4"; + signature = 0x1e 0x97 0x46; + has_jtag = yes; + + memory "eeprom" + size = 0x800; + offset = 0x8c0000; + page_size = 0x20; + readsize = 0x100; + ; + + memory "application" + size = 0x20000; + offset = 0x800000; + page_size = 0x200; + readsize = 0x100; + ; + + memory "apptable" + size = 0x1000; + offset = 0x81f000; + page_size = 0x200; + readsize = 0x100; + ; + + memory "boot" + size = 0x2000; + offset = 0x820000; + page_size = 0x200; + readsize = 0x100; + ; + + memory "flash" + size = 0x22000; + offset = 0x800000; + page_size = 0x200; + readsize = 0x100; + ; + + memory "usersig" + size = 0x200; + offset = 0x8e0400; + page_size = 0x200; + readsize = 0x100; + ; + + memory "fuse0" + size = 1; + offset = 0x8f0020; + ; +; + +#------------------------------------------------------------ +# ATxmega128A4U +#------------------------------------------------------------ + +part parent ".xmega" + id = "x128a4u"; + desc = "ATxmega128A4U"; + signature = 0x1e 0x97 0x46; + usbpid = 0x2fde; + + memory "eeprom" + size = 0x800; + offset = 0x8c0000; + page_size = 0x20; + readsize = 0x100; + ; + + memory "application" + size = 0x20000; + offset = 0x800000; + page_size = 0x100; + readsize = 0x100; + ; + + memory "apptable" + size = 0x1000; + offset = 0x81f000; + page_size = 0x100; + readsize = 0x100; + ; + + memory "boot" + size = 0x2000; + offset = 0x820000; + page_size = 0x100; + readsize = 0x100; + ; + + memory "flash" + size = 0x22000; + offset = 0x800000; + page_size = 0x100; + readsize = 0x100; + ; + + memory "usersig" + size = 0x100; + offset = 0x8e0400; + page_size = 0x100; + readsize = 0x100; + ; +; + +#------------------------------------------------------------ +# ATxmega128B1 +#------------------------------------------------------------ + +part parent ".xmega" + id = "x128b1"; + desc = "ATxmega128B1"; + signature = 0x1e 0x97 0x4d; + usbpid = 0x2fea; + has_jtag = yes; + + memory "eeprom" + size = 0x800; + offset = 0x8c0000; + page_size = 0x20; + readsize = 0x100; + ; + + memory "application" + size = 0x20000; + offset = 0x800000; + page_size = 0x100; + readsize = 0x100; + ; + + memory "apptable" + size = 0x2000; + offset = 0x81e000; + page_size = 0x100; + readsize = 0x100; + ; + + memory "boot" + size = 0x2000; + offset = 0x820000; + page_size = 0x100; + readsize = 0x100; + ; + + memory "flash" + size = 0x22000; + offset = 0x800000; + page_size = 0x100; + readsize = 0x100; + ; + + memory "usersig" + size = 0x100; + offset = 0x8e0400; + page_size = 0x100; + readsize = 0x100; + ; + + memory "fuse0" + size = 1; + offset = 0x8f0020; + ; +; + +#------------------------------------------------------------ +# ATxmega128B3 +#------------------------------------------------------------ + +part parent "x128b1" + id = "x128b3"; + desc = "ATxmega128B3"; + signature = 0x1e 0x97 0x4b; + usbpid = 0x2fe0; +; + +#------------------------------------------------------------ +# ATxmega192C3 +#------------------------------------------------------------ + +part parent ".xmega" + id = "x192c3"; + desc = "ATxmega192C3"; + signature = 0x1e 0x97 0x51; + # usbpid = 0x2f??; + + memory "eeprom" + size = 0x800; + offset = 0x8c0000; + page_size = 0x20; + readsize = 0x100; + ; + + memory "application" + size = 0x30000; + offset = 0x800000; + page_size = 0x200; + readsize = 0x100; + ; + + memory "apptable" + size = 0x2000; + offset = 0x82e000; + page_size = 0x200; + readsize = 0x100; + ; + + memory "boot" + size = 0x2000; + offset = 0x830000; + page_size = 0x200; + readsize = 0x100; + ; + + memory "flash" + size = 0x32000; + offset = 0x800000; + page_size = 0x200; + readsize = 0x100; + ; + + memory "usersig" + size = 0x200; + offset = 0x8e0400; + page_size = 0x200; + readsize = 0x100; + ; +; + +#------------------------------------------------------------ +# ATxmega192D3 +#------------------------------------------------------------ + +part parent "x192c3" + id = "x192d3"; + desc = "ATxmega192D3"; + signature = 0x1e 0x97 0x49; +; + +#------------------------------------------------------------ +# ATxmega192A1 +#------------------------------------------------------------ + +part parent "x192c3" + id = "x192a1"; + desc = "ATxmega192A1"; + signature = 0x1e 0x97 0x4e; + has_jtag = yes; + + memory "fuse0" + size = 1; + offset = 0x8f0020; + ; +; + +#------------------------------------------------------------ +# ATxmega192A3 +#------------------------------------------------------------ + +part parent "x192a1" + id = "x192a3"; + desc = "ATxmega192A3"; + signature = 0x1e 0x97 0x44; +; + +#------------------------------------------------------------ +# ATxmega192A3U +#------------------------------------------------------------ + +part parent "x192a1" + id = "x192a3u"; + desc = "ATxmega192A3U"; + signature = 0x1e 0x97 0x44; + usbpid = 0x2fe7; +; + +#------------------------------------------------------------ +# ATxmega256C3 +#------------------------------------------------------------ + +part parent ".xmega" + id = "x256c3"; + desc = "ATxmega256C3"; + signature = 0x1e 0x98 0x46; + usbpid = 0x2fda; + + memory "eeprom" + size = 0x1000; + offset = 0x8c0000; + page_size = 0x20; + readsize = 0x100; + ; + + memory "application" + size = 0x40000; + offset = 0x800000; + page_size = 0x200; + readsize = 0x100; + ; + + memory "apptable" + size = 0x2000; + offset = 0x83e000; + page_size = 0x200; + readsize = 0x100; + ; + + memory "boot" + size = 0x2000; + offset = 0x840000; + page_size = 0x200; + readsize = 0x100; + ; + + memory "flash" + size = 0x42000; + offset = 0x800000; + page_size = 0x200; + readsize = 0x100; + ; + + memory "usersig" + size = 0x200; + offset = 0x8e0400; + page_size = 0x200; + readsize = 0x100; + ; +; + +#------------------------------------------------------------ +# ATxmega256D3 +#------------------------------------------------------------ + +part parent "x256c3" + id = "x256d3"; + desc = "ATxmega256D3"; + signature = 0x1e 0x98 0x44; +; + +#------------------------------------------------------------ +# ATxmega256A1 +#------------------------------------------------------------ + +part parent "x256c3" + id = "x256a1"; + desc = "ATxmega256A1"; + signature = 0x1e 0x98 0x46; + has_jtag = yes; + + memory "fuse0" + size = 1; + offset = 0x8f0020; + ; +; + +#------------------------------------------------------------ +# ATxmega256A3 +#------------------------------------------------------------ + +part parent "x256a1" + id = "x256a3"; + desc = "ATxmega256A3"; + signature = 0x1e 0x98 0x42; +; + +#------------------------------------------------------------ +# ATxmega256A3U +#------------------------------------------------------------ + +part parent "x256a1" + id = "x256a3u"; + desc = "ATxmega256A3U"; + signature = 0x1e 0x98 0x42; + usbpid = 0x2fec; +; + +#------------------------------------------------------------ +# ATxmega256A3B +#------------------------------------------------------------ + +part parent "x256a1" + id = "x256a3b"; + desc = "ATxmega256A3B"; + signature = 0x1e 0x98 0x43; +; + +#------------------------------------------------------------ +# ATxmega256A3BU +#------------------------------------------------------------ + +part parent "x256a1" + id = "x256a3bu"; + desc = "ATxmega256A3BU"; + signature = 0x1e 0x98 0x43; + usbpid = 0x2fe2; +; + +#------------------------------------------------------------ +# ATxmega384C3 +#------------------------------------------------------------ + +part parent ".xmega" + id = "x384c3"; + desc = "ATxmega384C3"; + signature = 0x1e 0x98 0x45; + usbpid = 0x2fdb; + + memory "eeprom" + size = 0x1000; + offset = 0x8c0000; + page_size = 0x20; + readsize = 0x100; + ; + + memory "application" + size = 0x60000; + offset = 0x800000; + page_size = 0x200; + readsize = 0x100; + ; + + memory "apptable" + size = 0x2000; + offset = 0x85e000; + page_size = 0x200; + readsize = 0x100; + ; + + memory "boot" + size = 0x2000; + offset = 0x860000; + page_size = 0x200; + readsize = 0x100; + ; + + memory "flash" + size = 0x62000; + offset = 0x800000; + page_size = 0x200; + readsize = 0x100; + ; + + memory "usersig" + size = 0x200; + offset = 0x8e0400; + page_size = 0x200; + readsize = 0x100; + ; +; + +#------------------------------------------------------------ +# ATxmega384D3 +#------------------------------------------------------------ + +part parent "x384c3" + id = "x384d3"; + desc = "ATxmega384D3"; + signature = 0x1e 0x98 0x47; +; + +#------------------------------------------------------------ +# ATxmega8E5 +#------------------------------------------------------------ + +part parent ".xmega" + id = "x8e5"; + desc = "ATxmega8E5"; + signature = 0x1e 0x93 0x41; + + memory "eeprom" + size = 0x0200; + offset = 0x08c0000; + page_size = 0x20; + readsize = 0x100; + ; + + memory "application" + size = 0x2000; + offset = 0x0800000; + page_size = 0x80; + readsize = 0x100; + ; + + memory "apptable" + size = 0x800; + offset = 0x00801800; + page_size = 0x80; + readsize = 0x100; + ; + + memory "boot" + size = 0x800; + offset = 0x00802000; + page_size = 0x80; + readsize = 0x100; + ; + + memory "flash" + size = 0x2800; + offset = 0x0800000; + page_size = 0x80; + readsize = 0x100; + ; + + memory "usersig" + size = 0x80; + offset = 0x8e0400; + page_size = 0x80; + readsize = 0x100; + ; +; + +#------------------------------------------------------------ +# ATxmega16E5 +#------------------------------------------------------------ + +part parent ".xmega" + id = "x16e5"; + desc = "ATxmega16E5"; + signature = 0x1e 0x94 0x45; + + memory "eeprom" + size = 0x0200; + offset = 0x08c0000; + page_size = 0x20; + readsize = 0x100; + ; + + memory "application" + size = 0x4000; + offset = 0x0800000; + page_size = 0x80; + readsize = 0x100; + ; + + memory "apptable" + size = 0x1000; + offset = 0x00803000; + page_size = 0x80; + readsize = 0x100; + ; + + memory "boot" + size = 0x1000; + offset = 0x00804000; + page_size = 0x80; + readsize = 0x100; + ; + + memory "flash" + size = 0x5000; + offset = 0x0800000; + page_size = 0x80; + readsize = 0x100; + ; + + memory "usersig" + size = 0x80; + offset = 0x8e0400; + page_size = 0x80; + readsize = 0x100; + ; +; + +#------------------------------------------------------------ +# ATxmega32E5 +#------------------------------------------------------------ + +part parent ".xmega" + id = "x32e5"; + desc = "ATxmega32E5"; + signature = 0x1e 0x95 0x4c; + + memory "eeprom" + size = 0x0400; + offset = 0x08c0000; + page_size = 0x20; + readsize = 0x100; + ; + + memory "application" + size = 0x8000; + offset = 0x0800000; + page_size = 0x80; + readsize = 0x100; + ; + + memory "apptable" + size = 0x1000; + offset = 0x00807000; + page_size = 0x80; + readsize = 0x100; + ; + + memory "boot" + size = 0x1000; + offset = 0x00808000; + page_size = 0x80; + readsize = 0x100; + ; + + memory "flash" + size = 0x9000; + offset = 0x0800000; + page_size = 0x80; + readsize = 0x100; + ; + + memory "usersig" + size = 0x80; + offset = 0x8e0400; + page_size = 0x80; + readsize = 0x100; + ; +; + +#------------------------------------------------------------ +# AVR32UC3A0512 +#------------------------------------------------------------ + +part + id = "uc3a0512"; + desc = "AT32UC3A0512"; + signature = 0xED 0xC0 0x3F; + has_jtag = yes; + is_avr32 = yes; + + memory "flash" + paged = yes; + page_size = 512; # bytes + readsize = 512; # bytes + num_pages = 1024; # could be set dynamicly + size = 0x00080000; # could be set dynamicly + offset = 0x80000000; + ; +; + +part parent "uc3a0512" + id = "ucr2"; + desc = "deprecated, use 'uc3a0512'"; +; + +#------------------------------------------------------------ +# ATtiny1634. +#------------------------------------------------------------ + +part + id = "t1634"; + desc = "ATtiny1634"; + has_debugwire = yes; + flash_instr = 0xB6, 0x01, 0x11; + eeprom_instr = 0xBD, 0xF2, 0xBD, 0xE1, 0xBB, 0xCF, 0xB4, 0x00, + 0xBE, 0x01, 0xB6, 0x01, 0xBC, 0x00, 0xBB, 0xBF, + 0x99, 0xF9, 0xBB, 0xAF; + stk500_devcode = 0x86; + # avr910_devcode = 0x; + signature = 0x1e 0x94 0x12; + pagel = 0xB3; + bs2 = 0xB1; + reset = io; + chip_erase_delay = 9000; + pgm_enable = "1 0 1 0 1 1 0 0 0 1 0 1 0 0 1 1", + "x x x x x x x x x x x x x x x x"; + + chip_erase = "1 0 1 0 1 1 0 0 1 0 0 x x x x x", + "x x x x x x x x x x x x x x x x"; + + timeout = 200; + stabdelay = 100; + cmdexedelay = 25; + synchloops = 32; + bytedelay = 0; + pollindex = 3; + pollvalue = 0x53; + predelay = 1; + postdelay = 1; + pollmethod = 1; + + pp_controlstack = + 0x0E, 0x1E, 0x0E, 0x1E, 0x2E, 0x3E, 0x2E, 0x3E, + 0x4E, 0x5E, 0x4E, 0x5E, 0x6E, 0x7E, 0x6E, 0x7E, + 0x26, 0x36, 0x66, 0x76, 0x2A, 0x3A, 0x6A, 0x7A, + 0x2E, 0xFD, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00; + hventerstabdelay = 100; + progmodedelay = 0; + latchcycles = 0; + togglevtg = 1; + poweroffdelay = 15; + resetdelayms = 1; + resetdelayus = 0; + hvleavestabdelay = 15; + resetdelay = 15; + chiperasepulsewidth = 0; + chiperasepolltimeout = 10; + programfusepulsewidth = 0; + programfusepolltimeout = 5; + programlockpulsewidth = 0; + programlockpolltimeout = 5; + + memory "eeprom" + paged = no; + page_size = 4; + size = 256; + min_write_delay = 3600; + max_write_delay = 3600; + readback_p1 = 0xff; + readback_p2 = 0xff; + read = " 1 0 1 0 0 0 0 0", + " 0 0 0 x x x x a8", + " a7 a6 a5 a4 a3 a2 a1 a0", + " o o o o o o o o"; + + write = " 1 1 0 0 0 0 0 0", + " 0 0 0 x x x x a8", + " a7 a6 a5 a4 a3 a2 a1 a0", + " i i i i i i i i"; + + loadpage_lo = " 1 1 0 0 0 0 0 1", + " 0 0 0 0 0 0 0 0", + " 0 0 0 0 0 0 a1 a0", + " i i i i i i i i"; + + writepage = " 1 1 0 0 0 0 1 0", + " 0 0 x x x x x a8", + " a7 a6 a5 a4 a3 a2 0 0", + " x x x x x x x x"; + + mode = 0x41; + delay = 5; + blocksize = 4; + readsize = 256; + ; + + memory "flash" + paged = yes; + size = 16384; + page_size = 32; + num_pages = 512; + min_write_delay = 4500; + max_write_delay = 4500; + readback_p1 = 0xff; + readback_p2 = 0xff; + read_lo = " 0 0 1 0 0 0 0 0", + " 0 0 0 a12 a11 a10 a9 a8", + " a7 a6 a5 a4 a3 a2 a1 a0", + " o o o o o o o o"; + + read_hi = " 0 0 1 0 1 0 0 0", + " 0 0 0 a12 a11 a10 a9 a8", + " a7 a6 a5 a4 a3 a2 a1 a0", + " o o o o o o o o"; + + loadpage_lo = " 0 1 0 0 0 0 0 0", + " 0 0 0 x x x x x", + " x x a5 a4 a3 a2 a1 a0", + " i i i i i i i i"; + + loadpage_hi = " 0 1 0 0 1 0 0 0", + " 0 0 0 x x x x x", + " x x a5 a4 a3 a2 a1 a0", + " i i i i i i i i"; + + writepage = " 0 1 0 0 1 1 0 0", + " 0 0 0 a12 a11 a10 a9 a8", + " a7 a6 x x x x x x", + " x x x x x x x x"; + + mode = 0x41; + delay = 6; + blocksize = 128; + readsize = 256; + + ; + + memory "lfuse" + size = 1; + min_write_delay = 4500; + max_write_delay = 4500; + read = "0 1 0 1 0 0 0 0 0 0 0 0 0 0 0 0", + "x x x x x x x x o o o o o o o o"; + + write = "1 0 1 0 1 1 0 0 1 0 1 0 0 0 0 0", + "x x x x x x x x i i i i i i i i"; + ; + + memory "hfuse" + size = 1; + min_write_delay = 4500; + max_write_delay = 4500; + read = "0 1 0 1 1 0 0 0 0 0 0 0 1 0 0 0", + "x x x x x x x x o o o o o o o o"; + + write = "1 0 1 0 1 1 0 0 1 0 1 0 1 0 0 0", + "x x x x x x x x i i i i i i i i"; + ; + + memory "efuse" + size = 1; + min_write_delay = 4500; + max_write_delay = 4500; + read = "0 1 0 1 0 0 0 0 0 0 0 0 1 0 0 0", + "x x x x x x x x o o o o o o o o"; + + write = "1 0 1 0 1 1 0 0 1 0 1 0 0 1 0 0", + "x x x x x x x x x x x i i i i i"; + ; + + memory "lock" + size = 1; + min_write_delay = 4500; + max_write_delay = 4500; + read = "0 1 0 1 1 0 0 0 0 0 0 0 0 0 0 0", + "x x x x x x x x x x x x x x o o"; + + write = "1 0 1 0 1 1 0 0 1 1 1 x x x x x", + "x x x x x x x x 1 1 1 1 1 1 i i"; + ; + + memory "calibration" + size = 1; + read = "0 0 1 1 1 0 0 0 0 0 0 x x x x x", + "0 0 0 0 0 0 0 0 o o o o o o o o"; + ; + + memory "signature" + size = 3; + read = "0 0 1 1 0 0 0 0 0 0 0 x x x x x", + "x x x x x x a1 a0 o o o o o o o o"; + ; +; + +#------------------------------------------------------------ +# Common values for reduced core tinys (4/5/9/10/20/40) +#------------------------------------------------------------ + +part + id = ".reduced_core_tiny"; + desc = "Common values for reduced core tinys"; + has_tpi = yes; + + memory "signature" + size = 3; + offset = 0x3fc0; + page_size = 16; + ; + + memory "fuse" + size = 1; + offset = 0x3f40; + page_size = 16; + blocksize = 4; + ; + + memory "calibration" + size = 1; + offset = 0x3f80; + page_size = 16; + ; + + memory "lockbits" + size = 1; + offset = 0x3f00; + page_size = 16; + ; +; + +#------------------------------------------------------------ +# ATtiny4 +#------------------------------------------------------------ + +part parent ".reduced_core_tiny" + id = "t4"; + desc = "ATtiny4"; + signature = 0x1e 0x8f 0x0a; + + memory "flash" + size = 512; + offset = 0x4000; + page_size = 16; + blocksize = 128; + ; +; + +#------------------------------------------------------------ +# ATtiny5 +#------------------------------------------------------------ + +part parent "t4" + id = "t5"; + desc = "ATtiny5"; + signature = 0x1e 0x8f 0x09; +; + +#------------------------------------------------------------ +# ATtiny9 +#------------------------------------------------------------ + +part parent ".reduced_core_tiny" + id = "t9"; + desc = "ATtiny9"; + signature = 0x1e 0x90 0x08; + + memory "flash" + size = 1024; + offset = 0x4000; + page_size = 16; + blocksize = 128; + ; +; + +#------------------------------------------------------------ +# ATtiny10 +#------------------------------------------------------------ + +part parent "t9" + id = "t10"; + desc = "ATtiny10"; + signature = 0x1e 0x90 0x03; +; + +#------------------------------------------------------------ +# ATtiny20 +#------------------------------------------------------------ + +part parent ".reduced_core_tiny" + id = "t20"; + desc = "ATtiny20"; + signature = 0x1e 0x91 0x0F; + + memory "flash" + size = 2048; + offset = 0x4000; + page_size = 16; + blocksize = 128; + ; +; + +#------------------------------------------------------------ +# ATtiny40 +#------------------------------------------------------------ + +part parent ".reduced_core_tiny" + id = "t40"; + desc = "ATtiny40"; + signature = 0x1e 0x92 0x0E; + + memory "flash" + size = 4096; + offset = 0x4000; + page_size = 64; + blocksize = 128; + ; +; + +#------------------------------------------------------------ +# ATmega406 +#------------------------------------------------------------ + +part + id = "m406"; + desc = "ATMEGA406"; + has_jtag = yes; + signature = 0x1e 0x95 0x07; + + # STK500 parameters (parallel programming IO lines) + pagel = 0xa7; + bs2 = 0xa0; + serial = no; + parallel = yes; + + # STK500v2 HV programming parameters, from XML + pp_controlstack = 0x0e, 0x1e, 0x0f, 0x1f, 0x2e, 0x3e, 0x2f, 0x3f, + 0x4e, 0x5e, 0x4f, 0x5f, 0x6e, 0x7e, 0x6f, 0x7f, + 0x66, 0x76, 0x67, 0x77, 0x6a, 0x7a, 0x6b, 0x7b, + 0xbe, 0xfd, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00; + + # JTAG ICE mkII parameters, also from XML files + allowfullpagebitstream = no; + enablepageprogramming = yes; + idr = 0x51; + rampz = 0x00; + spmcr = 0x57; + eecr = 0x3f; + + memory "eeprom" + paged = no; + size = 512; + page_size = 4; + blocksize = 4; + readsize = 4; + num_pages = 128; + ; + + memory "flash" + paged = yes; + size = 40960; + page_size = 128; + blocksize = 128; + readsize = 128; + num_pages = 320; + ; + + memory "hfuse" + size = 1; + ; + + memory "lfuse" + size = 1; + ; + + memory "lockbits" + size = 1; + ; + + memory "signature" + size = 3; + ; +; + +#------------------------------------------------------------ +# AVR8X family common values +#------------------------------------------------------------ + +part + id = ".avr8x"; + desc = "AVR8X family common values"; + has_updi = yes; + nvm_base = 0x1000; + ocd_base = 0x0F80; + + memory "signature" + size = 3; + offset = 0x1100; + ; + + memory "prodsig" + size = 0x3D; + offset = 0x1103; + page_size = 0x3D; + readsize = 0x3D; + ; + + memory "fuses" + size = 9; + offset = 0x1280; + ; + + memory "fuse0" + size = 1; + offset = 0x1280; + ; + + memory "fuse1" + size = 1; + offset = 0x1281; + ; + + memory "fuse2" + size = 1; + offset = 0x1282; + ; + + memory "fuse4" + size = 1; + offset = 0x1284; + ; + + memory "fuse5" + size = 1; + offset = 0x1285; + ; + + memory "fuse6" + size = 1; + offset = 0x1286; + ; + + memory "fuse7" + size = 1; + offset = 0x1287; + ; + + memory "fuse8" + size = 1; + offset = 0x1288; + ; + + memory "lock" + size = 1; + offset = 0x128a; + ; + + memory "data" + # SRAM, only used to supply the offset + offset = 0x1000000; + ; +; + +#------------------------------------------------------------ +# AVR8X tiny family common values +#------------------------------------------------------------ + +part parent ".avr8x" + id = ".avr8x_tiny"; + desc = "AVR8X tiny family common values"; + family_id = "tinyAVR"; + + memory "usersig" + size = 0x20; + offset = 0x1300; + page_size = 0x20; + readsize = 0x100; + ; +; + +#------------------------------------------------------------ +# AVR8X mega family common values +#------------------------------------------------------------ + +part parent ".avr8x" + id = ".avr8x_mega"; + desc = "AVR8X mega family common values"; + family_id = "megaAVR"; + + memory "usersig" + size = 0x40; + offset = 0x1300; + page_size = 0x40; + readsize = 0x100; + ; +; + +#------------------------------------------------------------ +# ATtiny202 +#------------------------------------------------------------ + +part parent ".avr8x_tiny" + id = "t202"; + desc = "ATtiny202"; + signature = 0x1E 0x91 0x23; + + memory "flash" + size = 0x800; + offset = 0x8000; + page_size = 0x40; + readsize = 0x100; + ; + + memory "eeprom" + size = 0x40; + offset = 0x1400; + page_size = 0x20; + readsize = 0x100; + ; +; + +#------------------------------------------------------------ +# ATtiny204 +#------------------------------------------------------------ + +part parent ".avr8x_tiny" + id = "t204"; + desc = "ATtiny204"; + signature = 0x1E 0x91 0x22; + + memory "flash" + size = 0x800; + offset = 0x8000; + page_size = 0x40; + readsize = 0x100; + ; + + memory "eeprom" + size = 0x40; + offset = 0x1400; + page_size = 0x20; + readsize = 0x100; + ; +; + +#------------------------------------------------------------ +# ATtiny402 +#------------------------------------------------------------ + +part parent ".avr8x_tiny" + id = "t402"; + desc = "ATtiny402"; + signature = 0x1E 0x92 0x23; + + memory "flash" + size = 0x1000; + offset = 0x8000; + page_size = 0x40; + readsize = 0x100; + ; + + memory "eeprom" + size = 0x80; + offset = 0x1400; + page_size = 0x20; + readsize = 0x100; + ; +; + +#------------------------------------------------------------ +# ATtiny404 +#------------------------------------------------------------ + +part parent ".avr8x_tiny" + id = "t404"; + desc = "ATtiny404"; + signature = 0x1E 0x92 0x26; + + memory "flash" + size = 0x1000; + offset = 0x8000; + page_size = 0x40; + readsize = 0x100; + ; + + memory "eeprom" + size = 0x80; + offset = 0x1400; + page_size = 0x20; + readsize = 0x100; + ; +; + +#------------------------------------------------------------ +# ATtiny406 +#------------------------------------------------------------ + +part parent ".avr8x_tiny" + id = "t406"; + desc = "ATtiny406"; + signature = 0x1E 0x92 0x25; + + memory "flash" + size = 0x1000; + offset = 0x8000; + page_size = 0x40; + readsize = 0x100; + ; + + memory "eeprom" + size = 0x80; + offset = 0x1400; + page_size = 0x20; + readsize = 0x100; + ; +; + +#------------------------------------------------------------ +# ATtiny804 +#------------------------------------------------------------ + +part parent ".avr8x_tiny" + id = "t804"; + desc = "ATtiny804"; + signature = 0x1E 0x93 0x25; + + memory "flash" + size = 0x2000; + offset = 0x8000; + page_size = 0x40; + readsize = 0x100; + ; + + memory "eeprom" + size = 0x80; + offset = 0x1400; + page_size = 0x20; + readsize = 0x100; + ; +; + +#------------------------------------------------------------ +# ATtiny806 +#------------------------------------------------------------ + +part parent ".avr8x_tiny" + id = "t806"; + desc = "ATtiny806"; + signature = 0x1E 0x93 0x24; + + memory "flash" + size = 0x2000; + offset = 0x8000; + page_size = 0x40; + readsize = 0x100; + ; + + memory "eeprom" + size = 0x80; + offset = 0x1400; + page_size = 0x20; + readsize = 0x100; + ; +; + +#------------------------------------------------------------ +# ATtiny807 +#------------------------------------------------------------ + +part parent ".avr8x_tiny" + id = "t807"; + desc = "ATtiny807"; + signature = 0x1E 0x93 0x23; + + memory "flash" + size = 0x2000; + offset = 0x8000; + page_size = 0x40; + readsize = 0x100; + ; + + memory "eeprom" + size = 0x80; + offset = 0x1400; + page_size = 0x20; + readsize = 0x100; + ; +; + +#------------------------------------------------------------ +# ATtiny1604 +#------------------------------------------------------------ + +part parent ".avr8x_tiny" + id = "t1604"; + desc = "ATtiny1604"; + signature = 0x1E 0x94 0x25; + + memory "flash" + size = 0x4000; + offset = 0x8000; + page_size = 0x40; + readsize = 0x100; + ; + + memory "eeprom" + size = 0x100; + offset = 0x1400; + page_size = 0x20; + readsize = 0x100; + ; +; + +#------------------------------------------------------------ +# ATtiny1606 +#------------------------------------------------------------ + +part parent ".avr8x_tiny" + id = "t1606"; + desc = "ATtiny1606"; + signature = 0x1E 0x94 0x24; + + memory "flash" + size = 0x4000; + offset = 0x8000; + page_size = 0x40; + readsize = 0x100; + ; + + memory "eeprom" + size = 0x100; + offset = 0x1400; + page_size = 0x20; + readsize = 0x100; + ; +; + +#------------------------------------------------------------ +# ATtiny1607 +#------------------------------------------------------------ + +part parent ".avr8x_tiny" + id = "t1607"; + desc = "ATtiny1607"; + signature = 0x1E 0x94 0x23; + + memory "flash" + size = 0x4000; + offset = 0x8000; + page_size = 0x40; + readsize = 0x100; + ; + + memory "eeprom" + size = 0x100; + offset = 0x1400; + page_size = 0x20; + readsize = 0x100; + ; +; + +#------------------------------------------------------------ +# ATtiny212 +#------------------------------------------------------------ + +part parent ".avr8x_tiny" + id = "t212"; + desc = "ATtiny212"; + signature = 0x1E 0x91 0x21; + + memory "flash" + size = 0x800; + offset = 0x8000; + page_size = 0x40; + readsize = 0x100; + ; + + memory "eeprom" + size = 0x40; + offset = 0x1400; + page_size = 0x20; + readsize = 0x100; + ; +; + +#------------------------------------------------------------ +# ATtiny214 +#------------------------------------------------------------ + +part parent ".avr8x_tiny" + id = "t214"; + desc = "ATtiny214"; + signature = 0x1E 0x91 0x20; + + memory "flash" + size = 0x800; + offset = 0x8000; + page_size = 0x40; + readsize = 0x100; + ; + + memory "eeprom" + size = 0x40; + offset = 0x1400; + page_size = 0x20; + readsize = 0x100; + ; +; + +#------------------------------------------------------------ +# ATtiny412 +#------------------------------------------------------------ + +part parent ".avr8x_tiny" + id = "t412"; + desc = "ATtiny412"; + signature = 0x1E 0x92 0x23; + + memory "flash" + size = 0x1000; + offset = 0x8000; + page_size = 0x40; + readsize = 0x100; + ; + + memory "eeprom" + size = 0x80; + offset = 0x1400; + page_size = 0x20; + readsize = 0x100; + ; +; + + +#------------------------------------------------------------ +# ATtiny414 +#------------------------------------------------------------ + +part parent ".avr8x_tiny" + id = "t414"; + desc = "ATtiny414"; + signature = 0x1E 0x92 0x22; + + memory "flash" + size = 0x1000; + offset = 0x8000; + page_size = 0x40; + readsize = 0x100; + ; + + memory "eeprom" + size = 0x80; + offset = 0x1400; + page_size = 0x20; + readsize = 0x100; + ; +; + +#------------------------------------------------------------ +# ATtiny416 +#------------------------------------------------------------ + +part parent ".avr8x_tiny" + id = "t416"; + desc = "ATtiny416"; + signature = 0x1E 0x92 0x21; + + memory "flash" + size = 0x1000; + offset = 0x8000; + page_size = 0x40; + readsize = 0x100; + ; + + memory "eeprom" + size = 0x80; + offset = 0x1400; + page_size = 0x20; + readsize = 0x100; + ; +; + + +#------------------------------------------------------------ +# ATtiny417 +#------------------------------------------------------------ + +part parent ".avr8x_tiny" + id = "t417"; + desc = "ATtiny417"; + signature = 0x1E 0x92 0x20; + + memory "flash" + size = 0x1000; + offset = 0x8000; + page_size = 0x40; + readsize = 0x100; + ; + + memory "eeprom" + size = 0x80; + offset = 0x1400; + page_size = 0x20; + readsize = 0x100; + ; +; + + +#------------------------------------------------------------ +# ATtiny814 +#------------------------------------------------------------ + +part parent ".avr8x_tiny" + id = "t814"; + desc = "ATtiny814"; + signature = 0x1E 0x93 0x22; + + memory "flash" + size = 0x2000; + offset = 0x8000; + page_size = 0x40; + readsize = 0x100; + ; + + memory "eeprom" + size = 0x80; + offset = 0x1400; + page_size = 0x20; + readsize = 0x100; + ; +; + + +#------------------------------------------------------------ +# ATtiny816 +#------------------------------------------------------------ + +part parent ".avr8x_tiny" + id = "t816"; + desc = "ATtiny816"; + signature = 0x1E 0x93 0x21; + + memory "flash" + size = 0x2000; + offset = 0x8000; + page_size = 0x40; + readsize = 0x100; + ; + + memory "eeprom" + size = 0x80; + offset = 0x1400; + page_size = 0x20; + readsize = 0x100; + ; +; + +#------------------------------------------------------------ +# ATtiny817 +#------------------------------------------------------------ + +part parent ".avr8x_tiny" + id = "t817"; + desc = "ATtiny817"; + signature = 0x1E 0x93 0x20; + + memory "flash" + size = 0x2000; + offset = 0x8000; + page_size = 0x40; + readsize = 0x100; + ; + + memory "eeprom" + size = 0x80; + offset = 0x1400; + page_size = 0x20; + readsize = 0x100; + ; +; + +#------------------------------------------------------------ +# ATtiny1614 +#------------------------------------------------------------ + +part parent ".avr8x_tiny" + id = "t1614"; + desc = "ATtiny1614"; + signature = 0x1E 0x94 0x22; + + memory "flash" + size = 0x4000; + offset = 0x8000; + page_size = 0x40; + readsize = 0x100; + ; + + memory "eeprom" + size = 0x100; + offset = 0x1400; + page_size = 0x20; + readsize = 0x100; + ; +; + +#------------------------------------------------------------ +# ATtiny1616 +#------------------------------------------------------------ + +part parent ".avr8x_tiny" + id = "t1616"; + desc = "ATtiny1616"; + signature = 0x1E 0x94 0x21; + + memory "flash" + size = 0x4000; + offset = 0x8000; + page_size = 0x40; + readsize = 0x100; + ; + + memory "eeprom" + size = 0x100; + offset = 0x1400; + page_size = 0x20; + readsize = 0x100; + ; +; + +#------------------------------------------------------------ +# ATtiny1617 +#------------------------------------------------------------ + +part parent ".avr8x_tiny" + id = "t1617"; + desc = "ATtiny1617"; + signature = 0x1E 0x94 0x20; + + memory "flash" + size = 0x4000; + offset = 0x8000; + page_size = 0x40; + readsize = 0x100; + ; + + memory "eeprom" + size = 0x100; + offset = 0x1400; + page_size = 0x20; + readsize = 0x100; + ; +; + +#------------------------------------------------------------ +# ATtiny3214 +#------------------------------------------------------------ + +part parent ".avr8x_tiny" + id = "t3214"; + desc = "ATtiny3214"; + signature = 0x1E 0x95 0x20; + + memory "flash" + size = 0x8000; + offset = 0x8000; + page_size = 0x80; + readsize = 0x100; + ; + + memory "eeprom" + size = 0x100; + offset = 0x1400; + page_size = 0x40; + readsize = 0x100; + ; +; + +#------------------------------------------------------------ +# ATtiny3216 +#------------------------------------------------------------ + +part parent ".avr8x_tiny" + id = "t3216"; + desc = "ATtiny3216"; + signature = 0x1E 0x95 0x21; + + memory "flash" + size = 0x8000; + offset = 0x8000; + page_size = 0x80; + readsize = 0x100; + ; + + memory "eeprom" + size = 0x100; + offset = 0x1400; + page_size = 0x40; + readsize = 0x100; + ; +; + +#------------------------------------------------------------ +# ATtiny3217 +#------------------------------------------------------------ + +part parent ".avr8x_tiny" + id = "t3217"; + desc = "ATtiny3217"; + signature = 0x1E 0x95 0x22; + + memory "flash" + size = 0x8000; + offset = 0x8000; + page_size = 0x80; + readsize = 0x100; + ; + + memory "eeprom" + size = 0x100; + offset = 0x1400; + page_size = 0x40; + readsize = 0x100; + ; +; + +#------------------------------------------------------------ +# ATmega3208 +#------------------------------------------------------------ + +part parent ".avr8x_mega" + id = "m3208"; + desc = "ATmega3208"; + signature = 0x1E 0x95 0x52; + + memory "flash" + size = 0x8000; + offset = 0x4000; + page_size = 0x80; + readsize = 0x100; + ; + + memory "eeprom" + size = 0x100; + offset = 0x1400; + page_size = 0x40; + readsize = 0x100; + ; +; + +#------------------------------------------------------------ +# ATmega3209 +#------------------------------------------------------------ + +part parent ".avr8x_mega" + id = "m3209"; + desc = "ATmega3209"; + signature = 0x1E 0x95 0x53; + + memory "flash" + size = 0x8000; + offset = 0x4000; + page_size = 0x80; + readsize = 0x100; + ; + + memory "eeprom" + size = 0x100; + offset = 0x1400; + page_size = 0x40; + readsize = 0x100; + ; +; + +#------------------------------------------------------------ +# ATmega4808 +#------------------------------------------------------------ + +part parent ".avr8x_mega" + id = "m4808"; + desc = "ATmega4808"; + signature = 0x1E 0x96 0x50; + + memory "flash" + size = 0xC000; + offset = 0x4000; + page_size = 0x80; + readsize = 0x100; + ; + + memory "eeprom" + size = 0x100; + offset = 0x1400; + page_size = 0x40; + readsize = 0x100; + ; +; + +#------------------------------------------------------------ +# ATmega4809 +#------------------------------------------------------------ + +part parent ".avr8x_mega" + id = "m4809"; + desc = "ATmega4809"; + signature = 0x1E 0x96 0x51; + + memory "flash" + size = 0xC000; + offset = 0x4000; + page_size = 0x80; + readsize = 0x100; + ; + + memory "eeprom" + size = 0x100; + offset = 0x1400; + page_size = 0x40; + readsize = 0x100; + ; +; + +programmer + id = "jtag2updi"; + desc = "JTAGv2 to UPDI bridge"; + type = "jtagmkii_pdi"; + connection_type = serial; + baudrate = 115200; +; diff --git a/Binaries/avrdude.exe b/Binaries/avrdude.exe new file mode 100644 index 0000000..47a0519 Binary files /dev/null and b/Binaries/avrdude.exe differ diff --git a/Binaries/batch_program.bat b/Binaries/batch_program.bat new file mode 100644 index 0000000..1b6b32c --- /dev/null +++ b/Binaries/batch_program.bat @@ -0,0 +1,21 @@ +@echo off +rem This batch file does not set the fuse bits. We assume you are updating a pre-existing OpenLog + +if [%1]==[] goto usage + +@echo Programming the SparkFun OpenLog +@pause +:loop + +@echo - +@echo Programming binary: %1 on %2 + +@avrdude -Cavrdude.conf -v -V -patmega328p -carduino -P %2 -b115200 -D -Uflash:w:%1:i + +@echo Done programming! Ready for next board. +@pause + +goto loop + +:usage +@echo Missing the binary file and com port arguments. Ex: batch_program.bat OpenLog_v43.hex COM3 diff --git a/Binaries/readme.md b/Binaries/readme.md new file mode 100644 index 0000000..b844bf9 --- /dev/null +++ b/Binaries/readme.md @@ -0,0 +1,4 @@ +Programming OpenLog via Serial +=========================================================== + +The SparkFun OpenLog can be updated using a USB to serial adapter and 5 jumper wires. Run batch_program.bat with a given COM port and HEX file. \ No newline at end of file