From 4a69f4c1b2ac56dea4f28b029648f03633411f9f Mon Sep 17 00:00:00 2001 From: wagiminator Date: Fri, 5 Jun 2020 22:03:07 +0200 Subject: [PATCH] Uploading new firmware version --- software/binaries/USB_Tester_t45_v1.1.hex | 238 ++++++++++++++++++++++ software/binaries/USB_Tester_t85_v1.1.hex | 238 ++++++++++++++++++++++ software/binaries/readme.txt | 4 +- software/sources/USB_Tester_v1.1.ino | 210 +++++++++++++++++++ software/sources/font8x16a.h | 5 +- 5 files changed, 692 insertions(+), 3 deletions(-) create mode 100644 software/binaries/USB_Tester_t45_v1.1.hex create mode 100644 software/binaries/USB_Tester_t85_v1.1.hex create mode 100644 software/sources/USB_Tester_v1.1.ino diff --git a/software/binaries/USB_Tester_t45_v1.1.hex b/software/binaries/USB_Tester_t45_v1.1.hex new file mode 100644 index 0000000..1d69c8f --- /dev/null +++ b/software/binaries/USB_Tester_t45_v1.1.hex @@ -0,0 +1,238 @@ +:10000000CFC0F3C0F2C0F1C0F0C0C8C3EEC0EDC0B5 +:10001000ECC0EBC0EAC0E9C0E8C0E7C0E6C0000041 +:100020000000000000000030300000000000000070 +:1000300000000000000000010101010101010000B9 +:1000400000000000000000000000000000000000B0 +:10005000C038E0000000203C230202273820087846 +:10006000880000C83808000007380E010000F808B2 +:1000700000F80008F800033C0700073C03008080FC +:10008000808080808000203F20003F20003F08F8D3 +:10009000008080800000203F210000203F2000E001 +:1000A00010080810E000000F102020100F000010B2 +:1000B00010F8000000000020203F20200000007009 +:1000C0000808088870000030282422213000003001 +:1000D0000888884830000018202020110E000000F9 +:1000E000C02010F8000000070424243F240000F87A +:1000F0000888880808000019212020110E0000E05F +:10010000108888180000000F112020110E00003800 +:100110000808C83808000000003F00000000007018 +:10012000880808887000001C222121221C0000E0A1 +:1001300010080810E0000000312222110F0000001A +:1001400000C0C00000000000003030000000C030DF +:10015000C828E810E0000718272423140B00C8A1C2 +:10016000A81FDA028D143A003A002E2D2F00280025 +:100170002E2B2F0028002E2D2A002A292A002E2B74 +:100180002A002A292A002E2C2A002A292A002E2B6E +:100190002F002E2B2A002E2D2A002E2C2A00DA06C4 +:1001A00011241FBECFE5D1E0DEBFCDBF20E0A8E720 +:1001B000B0E001C01D92A43BB207E1F710E0A0E659 +:1001C000B0E0E0EBFEE002C005900D92A837B10769 +:1001D000D9F710E0C0EDD0E003C02197FE0160D652 +:1001E000CF3CD107D1F724D361C60ACFC09AC29AB7 +:1001F000BA9AB89A8FEF8FB98AE28DB980EF8EB92B +:1002000008953FB7F8948091A8009091A900A0911B +:10021000AA00B091AB0022B708B601FE05C02F3F7F +:1002200019F00196A11DB11D3FBFBA2FA92F982F1C +:100230008827BC01CD01620F711D811D911D43E016 +:10024000660F771F881F991F4A95D1F70895CF929F +:10025000DF92EF92FF92CF93DF936B017C01D1DFAE +:10026000EB01CFDF6C1B7D0B683E7340A0F0C11427 +:10027000D104E104F10439F4DF91CF91FF90EF90C4 +:10028000DF90CF90089581E0C81AD108E108F10805 +:10029000C851DC4FE6CFC114D104E104F10409F7E1 +:1002A000EBCFCF92DF92EF92FF920F931F93CF93FA +:1002B000DF936C01EB017B01E40EF51E10E000E022 +:1002C000CE15DF0561F06991D601ED91FC910190A9 +:1002D000F081E02DC6010995080F191FF1CFC80163 +:1002E000DF91CF911F910F91FF90EF90DF90CF9012 +:1002F0000895E0917A00F0917B000994E0917800F4 +:10030000F09179000994E0917C00F0917D000995CD +:1003100080E4F4CFE0917C00F0917D00099580E0CD +:10032000EDCF1F93CF93DF93C82F162FD62FD77003 +:1003300080916800D82BEEDF8D2FE0DF8C2F829527 +:100340008F708061DBDF8C2F8F70D8DFD2DFC0939E +:10035000B1001093B000DF91CF911F9108950F93DA +:100360001F93CF93DF93C0E010E86C2F80E0D9DFBC +:100370008091B100012F081B81F01093B100C3DF01 +:10038000D0E080E0BBDF811104C0B3DFBCDF80E0E0 +:10039000B5DFDF5F0D13F5CFACDFCF5FC43029F7DA +:1003A00060E080E0DF91CF911F910F91BACF8091F3 +:1003B000B000860F24E030E0261B310982171306B7 +:1003C00009F034F48093B0006091B00080E0A9CFD0 +:1003D00084E0861BF7CFAF92BF92CF92DF92EF926D +:1003E000FF920F931F93CF93DF93E0918000F091E2 +:1003F0008100309741F06D3031F0D62FC3816A30E3 +:1004000079F46C2FD4DF81E090E0DF91CF911F91E0 +:100410000F91FF90EF90DF90CF90BF90AF90089535 +:10042000A2804091B100EA2CF12C20E830E02E1996 +:100430003F094217130619F014F06C2FB8DFE09152 +:100440008000F091810024818C2F90E0B701DCD4F2 +:10045000BC014D2F421B550BCA01D6D48C01BC2EBA +:1004600052DFC801282F201B2A15C0F46C015FEF52 +:10047000C51AD50AE0918000F09181000190F081C9 +:10048000E02DE80FF91FD4918D2F38DF811104C0C2 +:1004900030DF39DF8D2F32DFC601E4CF0E0D1F1D97 +:1004A00028DF8091B100C13039F48A0D8093B1000A +:1004B000BA94B110D5CFA7CF6091B0006F5F91E033 +:1004C0009B1510F42EDFF4CF6C1B8A0DFBCF0F931E +:1004D0001F93CF93DF938C01D0E0C0E0F801EC0FC5 +:1004E000FD1F6491662339F08CEA90E074DF892B5C +:1004F00011F02196F3CFCE01DF91CF911F910F9193 +:1005000008958EB98BE295E09A95F1F700008DB9C8 +:10051000B29BFECF92E09A95F1F700C08DB9769B21 +:10052000F2CF85E08A95F1F700008FB19FEF9FB978 +:10053000B89A0895C2988FB980EFE3DFB8988EEF2C +:10054000E0DF809581700895F5CFCF938091B20060 +:100550009091B3009C012F5F3F4F2230310528F06E +:1005600001979093B3008093B200B89880EFC9DFF1 +:10057000C82F8091B2009091B300892B39F48FEF8E +:100580008FB98EEFBEDF8C2FCF9108951FB8F9CFB2 +:100590006115710531F07093B3006093B20061E0B2 +:1005A00070E0C29AB29BFECF92E09A95F1F700C03C +:1005B000C09892E09A95F1F700C0C298C09A779BD4 +:1005C0000CC0C298880F862B8FB980EF9ADFB8983D +:1005D0008EEF97DF80958170089580E0089570E038 +:1005E00060E08CE3D5CFC098C29AB29BFECF82E088 +:1005F0008A95F1F700C0C09A85E08A95F1F700006E +:100600000895F1DF80E00895F1DDE9DF811106C092 +:100610006AE070E080E090E01ADEF7CFF2CFCF938F +:10062000DF93C82F70E060E080E4B2DF8C2F82DFC0 +:1006300062E070E080E4ACDF88DFC82F86DFDC2F6B +:10064000C82FD1DFCE01DF91CF9108951F93CF93B3 +:10065000DF93182FEB0170E060E080E499DF812FD9 +:1006600069DF8D2F67DF8C2F65DFDF91CF911F91C1 +:10067000BACF4F925F926F927F928F929F92AF927A +:10068000BF92CF92DF92EF92FF920F931F93CF937F +:10069000DF93CDB7DEB7A1970FB6F894DEBF0FBEDC +:1006A000CDBF6B017C01142F022F812C912C5401A2 +:1006B0008394C114D104E104F10411F04B015C01F5 +:1006C000412C512C32014394115051F02AE030E07A +:1006D00040E050E0C301B201A8D32B013C01F4CFAC +:1006E00084149504A604B70470F4602F8CEA90E09B +:1006F00072DE2AE030E040E050E0C501B40195D35D +:100700004B015C01EDCF19A28E010F5D1F4F8AE0F6 +:10071000882E912CA12CB12CC701B601A501940102 +:100720009DD3822F6AE067D39C2D981B892F9A3026 +:100730006CF5805DF80182938F0169017A01C11423 +:10074000D104E104F10441F701900020E9F7319769 +:10075000AF01401B510BB8018CEA90E0A2DDA196DD +:100760000FB6F894DEBF0FBECDBFDF91CF911F91C2 +:100770000F91FF90EF90DF90CF90BF90AF909F9040 +:100780008F907F906F905F904F900895895CD2CF4B +:10079000BC0190E080E02AE245E06BCF1F920F920F +:1007A0000FB60F9211242F933F938F939F93AF9384 +:1007B000BF938091A4009091A500A091A600B09154 +:1007C000A7003091A30026E0230F2D3768F129E818 +:1007D000230F0396A11DB11D2093A3008093A400B5 +:1007E0009093A500A093A600B093A7008091A800C5 +:1007F0009091A900A091AA00B091AB000196A11D13 +:10080000B11D8093A8009093A900A093AA00B09373 +:10081000AB00BF91AF919F918F913F912F910F901E +:100820000FBE0F901F9018950296A11DB11DD4CF39 +:10083000CF93DF9300D000D000D0CDB7DEB781B723 +:1008400081BF78948AB582608ABD8AB581608ABD8D +:1008500083B7887F836083BF789489B7826089BFBC +:1008600080B7807F80BF80B7806880BF80B780649A +:1008700080BF8CB580648CBD8FEF8DBD80B78760E5 +:1008800080BF86B18877866886B9379A17BA88E0BC +:1008900088BBACDC67E676E080E0D8DE60E074E13F +:1008A00085E0D4DEE0917E00F0917F00099532DD95 +:1008B0002EE531E03A83298356E6E52E51E0F52E08 +:1008C000E981FA811491812F19DD811104C011DDB4 +:1008D00021DD812F13DD29813A812F5F3F4F3A833C +:1008E0002983E216F30661F704DD81E790E0909337 +:1008F00081008093800033DD0DDD8FEAFFDCF9DCC1 +:100900008091680094E08927809368002FB7F8945D +:100910008091A4009091A500A091A600B091A7009D +:100920002FBF8093950090939600A0939700B0936B +:1009300098008093990090939A00A0939B00B093A5 +:100940009C0038EEC32E33E0D32EE12CF12C40E195 +:10095000442E4EE0542E612C712C3324339482E0CB +:100960005EDE969587958C7F9093A2008093A10080 +:1009700084E055DE97FD15C19093A00080939F0001 +:100980006091A1007091A20090E080E020919F0012 +:100990003091A00050E040E048D2A70196015ED21D +:1009A00030939E0020939D008FB7F8948090A40010 +:1009B0009090A500A090A600B090A7008FBF809156 +:1009C000990090919A00A0919B00B0919C00A50184 +:1009D0009401281B390B4A0B5B0B29833A834B8309 +:1009E0005C838091950090919600A0919700B091C2 +:1009F0009800A5019401281B390B4A0B5B0BCA0117 +:100A0000B901A70196012AD2209391003093920058 +:100A100040939300509394008092990090929A0092 +:100A2000A0929B00B0929C0000919F001091A000AA +:100A3000B80190E080E029813A814B815C81F5D159 +:100A4000A30192010BD280918D0090918E00A09114 +:100A50008F00B0919000820F931FA41FB51F809349 +:100A60008D0090938E00A0938F00B09390004091E2 +:100A70009D0050919E005E834D83BA0190E080E01E +:100A800029813A814B815C81D0D1A3019201E6D1C9 +:100A90008091890090918A00A0918B00B0918C0088 +:100AA000820F931FA41FB51F8093890090938A0023 +:100AB000A0938B00B0938C008091A1009091A20034 +:100AC00020916600309167008217930720F490937D +:100AD0006700809366002091870030918800281776 +:100AE000390720F4909388008093870080916400F8 +:100AF000909165000817190720F410936500009382 +:100B0000640080918500909186008017910720F401 +:100B1000109386000093850080916200909163009D +:100B2000ED81FE81E817F90720F4F0936300E0936C +:100B3000620080918300909184002D813E81821714 +:100B4000930720F43093840020938300B39B2EC03E +:100B50001092610004DC60E080E0E3DB80918200C1 +:100B6000823009F4C9C098F5882309F47CC081302B +:100B700009F4A2C03091600080E2382739833093B5 +:100B80006000C8DB8981BADBB4DB8091680094E047 +:100B900089278093680064E670E080E090E057DB8E +:100BA000DECE1092A00010929F00EACE80916100EC +:100BB0008111D0CF809182008F5F853028F480939F +:100BC000820030926100C6CF10928200FACF83304B +:100BD00009F4A5C0843071F661E080E2A2DB609187 +:100BE0009100709192008091930090919400A301E4 +:100BF000920134D1CA01B90120E342E03ADD88E62E +:100C000091E065DC60919100709192008091930079 +:100C100090919400A301920121D16093910070936F +:100C2000920080939300909394002CE330E040E096 +:100C300050E014D1CA01B90120E342E01ADD86E692 +:100C400091E045DC60919100709192008091930059 +:100C5000909194002CE330E040E050E0FFD020E39E +:100C600042E007DD87CF8091A1009091A20090DD46 +:100C70008AE991E02CDC80919D0090919E0088DDB6 +:100C800086E991E024DC80919F009091A00080DDB6 +:100C900082E991E01CDC60918D0070918E00809162 +:100CA0008F0090919000A7019601D8D0C90170DD06 +:100CB0008EE891E00CDC5ECF809166009091670039 +:100CC00067DD8AE891E003DC8091870090918800DD +:100CD0005FDD86E891E0FBDB809164009091650028 +:100CE00057DD82E891E0F3DB8091850090918600EA +:100CF0004FDD8EE791E0DECF61E080E012DB809196 +:100D000062009091630044DD8AE791E0E0DB80912E +:100D10008300909184003CDD86E791E0CBCF609129 +:100D20008D0070918E0080918F0090919000A701AE +:100D3000960194D0CA01B9012AE247E09ADC84E71F +:100D400091E0C5DB60918D0070918E0080918F00E5 +:100D500090919000A701960181D020E343E089DCC7 +:100D600080E791E0B4DB62E080E0DBDA609189004B +:100D700070918A0080918B0090918C00A701960160 +:100D80006DD0CA01B9012AE247E073DC8EE691E03A +:100D90009EDB6091890070918A0080918B00909118 +:100DA0008C00A70196015AD020E343E062DC8AE67A +:100DB00091E080CFECEAF0E0138212828DE690E0C1 +:100DC0009183808384E093E090937F0080937E0002 +:100DD0008FEE92E090937D0080937C0084EA92E015 +:100DE000909379008093780081E093E090937B006A +:100DF00080937A000895002480FD060E660F11F09E +:100E00008695D1F7802D08950024552704C0080E3B +:100E1000591F880F991F009729F076956795B8F3A9 +:100E20007105B9F7802D952F0895EE27FF27AA2782 +:100E3000BB2708C0A20FB31FE41FF51F220F331FEB +:100E4000441F551F969587957795679598F3704041 +:100E5000A9F7009799F7BD01CF010895A1E21A2ED5 +:100E6000AA1BBB1BFD010DC0AA1FBB1FEE1FFF1F4E +:100E7000A217B307E407F50720F0A21BB30BE40B9E +:100E8000F50B661F771F881F991F1A9469F76095E5 +:100E90007095809590959B01AC01BD01CF0108959F +:100EA000EE0FFF1F0590F491E02D0994F894FFCF09 +:100EB0004001FFFFFFFFFFFFB000000000EB01510A +:080EC000011E000802283B009E +:00000001FF diff --git a/software/binaries/USB_Tester_t85_v1.1.hex b/software/binaries/USB_Tester_t85_v1.1.hex new file mode 100644 index 0000000..4ecf07c --- /dev/null +++ b/software/binaries/USB_Tester_t85_v1.1.hex @@ -0,0 +1,238 @@ +:10000000CFC0F3C0F2C0F1C0F0C0C8C3EEC0EDC0B5 +:10001000ECC0EBC0EAC0E9C0E8C0E7C0E6C0000041 +:100020000000000000000030300000000000000070 +:1000300000000000000000010101010101010000B9 +:1000400000000000000000000000000000000000B0 +:10005000C038E0000000203C230202273820087846 +:10006000880000C83808000007380E010000F808B2 +:1000700000F80008F800033C0700073C03008080FC +:10008000808080808000203F20003F20003F08F8D3 +:10009000008080800000203F210000203F2000E001 +:1000A00010080810E000000F102020100F000010B2 +:1000B00010F8000000000020203F20200000007009 +:1000C0000808088870000030282422213000003001 +:1000D0000888884830000018202020110E000000F9 +:1000E000C02010F8000000070424243F240000F87A +:1000F0000888880808000019212020110E0000E05F +:10010000108888180000000F112020110E00003800 +:100110000808C83808000000003F00000000007018 +:10012000880808887000001C222121221C0000E0A1 +:1001300010080810E0000000312222110F0000001A +:1001400000C0C00000000000003030000000C030DF +:10015000C828E810E0000718272423140B00C8A1C2 +:10016000A81FDA028D143A003A002E2D2F00280025 +:100170002E2B2F0028002E2D2A002A292A002E2B74 +:100180002A002A292A002E2C2A002A292A002E2B6E +:100190002F002E2B2A002E2D2A002E2C2A00DA06C4 +:1001A00011241FBECFE5D2E0DEBFCDBF20E0A8E71F +:1001B000B0E001C01D92A43BB207E1F710E0A0E659 +:1001C000B0E0E0EBFEE002C005900D92A837B10769 +:1001D000D9F710E0C0EDD0E003C02197FE0160D652 +:1001E000CF3CD107D1F724D361C60ACFC09AC29AB7 +:1001F000BA9AB89A8FEF8FB98AE28DB980EF8EB92B +:1002000008953FB7F8948091A8009091A900A0911B +:10021000AA00B091AB0022B708B601FE05C02F3F7F +:1002200019F00196A11DB11D3FBFBA2FA92F982F1C +:100230008827BC01CD01620F711D811D911D43E016 +:10024000660F771F881F991F4A95D1F70895CF929F +:10025000DF92EF92FF92CF93DF936B017C01D1DFAE +:10026000EB01CFDF6C1B7D0B683E7340A0F0C11427 +:10027000D104E104F10439F4DF91CF91FF90EF90C4 +:10028000DF90CF90089581E0C81AD108E108F10805 +:10029000C851DC4FE6CFC114D104E104F10409F7E1 +:1002A000EBCFCF92DF92EF92FF920F931F93CF93FA +:1002B000DF936C01EB017B01E40EF51E10E000E022 +:1002C000CE15DF0561F06991D601ED91FC910190A9 +:1002D000F081E02DC6010995080F191FF1CFC80163 +:1002E000DF91CF911F910F91FF90EF90DF90CF9012 +:1002F0000895E0917A00F0917B000994E0917800F4 +:10030000F09179000994E0917C00F0917D000995CD +:1003100080E4F4CFE0917C00F0917D00099580E0CD +:10032000EDCF1F93CF93DF93C82F162FD62FD77003 +:1003300080916800D82BEEDF8D2FE0DF8C2F829527 +:100340008F708061DBDF8C2F8F70D8DFD2DFC0939E +:10035000B1001093B000DF91CF911F9108950F93DA +:100360001F93CF93DF93C0E010E86C2F80E0D9DFBC +:100370008091B100012F081B81F01093B100C3DF01 +:10038000D0E080E0BBDF811104C0B3DFBCDF80E0E0 +:10039000B5DFDF5F0D13F5CFACDFCF5FC43029F7DA +:1003A00060E080E0DF91CF911F910F91BACF8091F3 +:1003B000B000860F24E030E0261B310982171306B7 +:1003C00009F034F48093B0006091B00080E0A9CFD0 +:1003D00084E0861BF7CFAF92BF92CF92DF92EF926D +:1003E000FF920F931F93CF93DF93E0918000F091E2 +:1003F0008100309741F06D3031F0D62FC3816A30E3 +:1004000079F46C2FD4DF81E090E0DF91CF911F91E0 +:100410000F91FF90EF90DF90CF90BF90AF90089535 +:10042000A2804091B100EA2CF12C20E830E02E1996 +:100430003F094217130619F014F06C2FB8DFE09152 +:100440008000F091810024818C2F90E0B701DCD4F2 +:10045000BC014D2F421B550BCA01D6D48C01BC2EBA +:1004600052DFC801282F201B2A15C0F46C015FEF52 +:10047000C51AD50AE0918000F09181000190F081C9 +:10048000E02DE80FF91FD4918D2F38DF811104C0C2 +:1004900030DF39DF8D2F32DFC601E4CF0E0D1F1D97 +:1004A00028DF8091B100C13039F48A0D8093B1000A +:1004B000BA94B110D5CFA7CF6091B0006F5F91E033 +:1004C0009B1510F42EDFF4CF6C1B8A0DFBCF0F931E +:1004D0001F93CF93DF938C01D0E0C0E0F801EC0FC5 +:1004E000FD1F6491662339F08CEA90E074DF892B5C +:1004F00011F02196F3CFCE01DF91CF911F910F9193 +:1005000008958EB98BE295E09A95F1F700008DB9C8 +:10051000B29BFECF92E09A95F1F700C08DB9769B21 +:10052000F2CF85E08A95F1F700008FB19FEF9FB978 +:10053000B89A0895C2988FB980EFE3DFB8988EEF2C +:10054000E0DF809581700895F5CFCF938091B20060 +:100550009091B3009C012F5F3F4F2230310528F06E +:1005600001979093B3008093B200B89880EFC9DFF1 +:10057000C82F8091B2009091B300892B39F48FEF8E +:100580008FB98EEFBEDF8C2FCF9108951FB8F9CFB2 +:100590006115710531F07093B3006093B20061E0B2 +:1005A00070E0C29AB29BFECF92E09A95F1F700C03C +:1005B000C09892E09A95F1F700C0C298C09A779BD4 +:1005C0000CC0C298880F862B8FB980EF9ADFB8983D +:1005D0008EEF97DF80958170089580E0089570E038 +:1005E00060E08CE3D5CFC098C29AB29BFECF82E088 +:1005F0008A95F1F700C0C09A85E08A95F1F700006E +:100600000895F1DF80E00895F1DDE9DF811106C092 +:100610006AE070E080E090E01ADEF7CFF2CFCF938F +:10062000DF93C82F70E060E080E4B2DF8C2F82DFC0 +:1006300062E070E080E4ACDF88DFC82F86DFDC2F6B +:10064000C82FD1DFCE01DF91CF9108951F93CF93B3 +:10065000DF93182FEB0170E060E080E499DF812FD9 +:1006600069DF8D2F67DF8C2F65DFDF91CF911F91C1 +:10067000BACF4F925F926F927F928F929F92AF927A +:10068000BF92CF92DF92EF92FF920F931F93CF937F +:10069000DF93CDB7DEB7A1970FB6F894DEBF0FBEDC +:1006A000CDBF6B017C01142F022F812C912C5401A2 +:1006B0008394C114D104E104F10411F04B015C01F5 +:1006C000412C512C32014394115051F02AE030E07A +:1006D00040E050E0C301B201A8D32B013C01F4CFAC +:1006E00084149504A604B70470F4602F8CEA90E09B +:1006F00072DE2AE030E040E050E0C501B40195D35D +:100700004B015C01EDCF19A28E010F5D1F4F8AE0F6 +:10071000882E912CA12CB12CC701B601A501940102 +:100720009DD3822F6AE067D39C2D981B892F9A3026 +:100730006CF5805DF80182938F0169017A01C11423 +:10074000D104E104F10441F701900020E9F7319769 +:10075000AF01401B510BB8018CEA90E0A2DDA196DD +:100760000FB6F894DEBF0FBECDBFDF91CF911F91C2 +:100770000F91FF90EF90DF90CF90BF90AF909F9040 +:100780008F907F906F905F904F900895895CD2CF4B +:10079000BC0190E080E02AE245E06BCF1F920F920F +:1007A0000FB60F9211242F933F938F939F93AF9384 +:1007B000BF938091A4009091A500A091A600B09154 +:1007C000A7003091A30026E0230F2D3768F129E818 +:1007D000230F0396A11DB11D2093A3008093A400B5 +:1007E0009093A500A093A600B093A7008091A800C5 +:1007F0009091A900A091AA00B091AB000196A11D13 +:10080000B11D8093A8009093A900A093AA00B09373 +:10081000AB00BF91AF919F918F913F912F910F901E +:100820000FBE0F901F9018950296A11DB11DD4CF39 +:10083000CF93DF9300D000D000D0CDB7DEB781B723 +:1008400081BF78948AB582608ABD8AB581608ABD8D +:1008500083B7887F836083BF789489B7826089BFBC +:1008600080B7807F80BF80B7806880BF80B780649A +:1008700080BF8CB580648CBD8FEF8DBD80B78760E5 +:1008800080BF86B18877866886B9379A17BA88E0BC +:1008900088BBACDC67E676E080E0D8DE60E074E13F +:1008A00085E0D4DEE0917E00F0917F00099532DD95 +:1008B0002EE531E03A83298356E6E52E51E0F52E08 +:1008C000E981FA811491812F19DD811104C011DDB4 +:1008D00021DD812F13DD29813A812F5F3F4F3A833C +:1008E0002983E216F30661F704DD81E790E0909337 +:1008F00081008093800033DD0DDD8FEAFFDCF9DCC1 +:100900008091680094E08927809368002FB7F8945D +:100910008091A4009091A500A091A600B091A7009D +:100920002FBF8093950090939600A0939700B0936B +:1009300098008093990090939A00A0939B00B093A5 +:100940009C0038EEC32E33E0D32EE12CF12C40E195 +:10095000442E4EE0542E612C712C3324339482E0CB +:100960005EDE969587958C7F9093A2008093A10080 +:1009700084E055DE97FD15C19093A00080939F0001 +:100980006091A1007091A20090E080E020919F0012 +:100990003091A00050E040E048D2A70196015ED21D +:1009A00030939E0020939D008FB7F8948090A40010 +:1009B0009090A500A090A600B090A7008FBF809156 +:1009C000990090919A00A0919B00B0919C00A50184 +:1009D0009401281B390B4A0B5B0B29833A834B8309 +:1009E0005C838091950090919600A0919700B091C2 +:1009F0009800A5019401281B390B4A0B5B0BCA0117 +:100A0000B901A70196012AD2209391003093920058 +:100A100040939300509394008092990090929A0092 +:100A2000A0929B00B0929C0000919F001091A000AA +:100A3000B80190E080E029813A814B815C81F5D159 +:100A4000A30192010BD280918D0090918E00A09114 +:100A50008F00B0919000820F931FA41FB51F809349 +:100A60008D0090938E00A0938F00B09390004091E2 +:100A70009D0050919E005E834D83BA0190E080E01E +:100A800029813A814B815C81D0D1A3019201E6D1C9 +:100A90008091890090918A00A0918B00B0918C0088 +:100AA000820F931FA41FB51F8093890090938A0023 +:100AB000A0938B00B0938C008091A1009091A20034 +:100AC00020916600309167008217930720F490937D +:100AD0006700809366002091870030918800281776 +:100AE000390720F4909388008093870080916400F8 +:100AF000909165000817190720F410936500009382 +:100B0000640080918500909186008017910720F401 +:100B1000109386000093850080916200909163009D +:100B2000ED81FE81E817F90720F4F0936300E0936C +:100B3000620080918300909184002D813E81821714 +:100B4000930720F43093840020938300B39B2EC03E +:100B50001092610004DC60E080E0E3DB80918200C1 +:100B6000823009F4C9C098F5882309F47CC081302B +:100B700009F4A2C03091600080E2382739833093B5 +:100B80006000C8DB8981BADBB4DB8091680094E047 +:100B900089278093680064E670E080E090E057DB8E +:100BA000DECE1092A00010929F00EACE80916100EC +:100BB0008111D0CF809182008F5F853028F480939F +:100BC000820030926100C6CF10928200FACF83304B +:100BD00009F4A5C0843071F661E080E2A2DB609187 +:100BE0009100709192008091930090919400A301E4 +:100BF000920134D1CA01B90120E342E03ADD88E62E +:100C000091E065DC60919100709192008091930079 +:100C100090919400A301920121D16093910070936F +:100C2000920080939300909394002CE330E040E096 +:100C300050E014D1CA01B90120E342E01ADD86E692 +:100C400091E045DC60919100709192008091930059 +:100C5000909194002CE330E040E050E0FFD020E39E +:100C600042E007DD87CF8091A1009091A20090DD46 +:100C70008AE991E02CDC80919D0090919E0088DDB6 +:100C800086E991E024DC80919F009091A00080DDB6 +:100C900082E991E01CDC60918D0070918E00809162 +:100CA0008F0090919000A7019601D8D0C90170DD06 +:100CB0008EE891E00CDC5ECF809166009091670039 +:100CC00067DD8AE891E003DC8091870090918800DD +:100CD0005FDD86E891E0FBDB809164009091650028 +:100CE00057DD82E891E0F3DB8091850090918600EA +:100CF0004FDD8EE791E0DECF61E080E012DB809196 +:100D000062009091630044DD8AE791E0E0DB80912E +:100D10008300909184003CDD86E791E0CBCF609129 +:100D20008D0070918E0080918F0090919000A701AE +:100D3000960194D0CA01B9012AE247E09ADC84E71F +:100D400091E0C5DB60918D0070918E0080918F00E5 +:100D500090919000A701960181D020E343E089DCC7 +:100D600080E791E0B4DB62E080E0DBDA609189004B +:100D700070918A0080918B0090918C00A701960160 +:100D80006DD0CA01B9012AE247E073DC8EE691E03A +:100D90009EDB6091890070918A0080918B00909118 +:100DA0008C00A70196015AD020E343E062DC8AE67A +:100DB00091E080CFECEAF0E0138212828DE690E0C1 +:100DC0009183808384E093E090937F0080937E0002 +:100DD0008FEE92E090937D0080937C0084EA92E015 +:100DE000909379008093780081E093E090937B006A +:100DF00080937A000895002480FD060E660F11F09E +:100E00008695D1F7802D08950024552704C0080E3B +:100E1000591F880F991F009729F076956795B8F3A9 +:100E20007105B9F7802D952F0895EE27FF27AA2782 +:100E3000BB2708C0A20FB31FE41FF51F220F331FEB +:100E4000441F551F969587957795679598F3704041 +:100E5000A9F7009799F7BD01CF010895A1E21A2ED5 +:100E6000AA1BBB1BFD010DC0AA1FBB1FEE1FFF1F4E +:100E7000A217B307E407F50720F0A21BB30BE40B9E +:100E8000F50B661F771F881F991F1A9469F76095E5 +:100E90007095809590959B01AC01BD01CF0108959F +:100EA000EE0FFF1F0590F491E02D0994F894FFCF09 +:100EB0004001FFFFFFFFFFFFB000000000EB01510A +:080EC000011E000802283B009E +:00000001FF diff --git a/software/binaries/readme.txt b/software/binaries/readme.txt index 11af7de..08b3cae 100644 --- a/software/binaries/readme.txt +++ b/software/binaries/readme.txt @@ -1,7 +1,7 @@ For ATtiny85: ------------- -avrdude -c usbtiny -p t85 -U lfuse:w:0xe2:m -U hfuse:w:0xdf:m -U flash:w:USB_Tester_t85_v1.0.hex +avrdude -c usbtiny -p t85 -U lfuse:w:0xe2:m -U hfuse:w:0xdf:m -U flash:w:USB_Tester_t85_v1.1.hex For ATtiny45: ------------- -avrdude -c usbtiny -p t45 -U lfuse:w:0xe2:m -U hfuse:w:0xdf:m -U flash:w:USB_Tester_t45_v1.0.hex +avrdude -c usbtiny -p t45 -U lfuse:w:0xe2:m -U hfuse:w:0xdf:m -U flash:w:USB_Tester_t45_v1.1.hex diff --git a/software/sources/USB_Tester_v1.1.ino b/software/sources/USB_Tester_v1.1.ino new file mode 100644 index 0000000..c57ff9b --- /dev/null +++ b/software/sources/USB_Tester_v1.1.ino @@ -0,0 +1,210 @@ +// USB Power Tester - Basic +// +// This code implements the basic functionality for the USB Power Tester. +// It reads voltage, current and power from the INA219, calculates capacity +// and shows the values on the OLED. It uses a reduced character set in order +// to make it fit on an ATtiny45. The SET button is used to switch between +// the "recent value screen" and the "min/max value screen". +// +// +-\/-+ +// RESET --- A0 (D5) PB5 1| |8 Vcc +// SET ----- A3 (D3) PB3 2| |7 PB2 (D2) A1 ---- OLED/INA (SCK) +// A2 (D4) PB4 3| |6 PB1 (D1) +// GND 4| |5 PB0 (D0) ------- OLED/INA (SDA) +// +----+ +// +// Controller: ATtiny45/85 +// Core: ATTinyCore (https://github.com/SpenceKonde/ATTinyCore) +// Clockspeed: 8 MHz internal +// Millis: enabled +// +// 2020 by Stefan Wagner (https://easyeda.com/wagiminator) +// License: http://creativecommons.org/licenses/by-sa/3.0/ + + +//Libraries +#include // https://github.com/technoblogy/tiny-i2c +#include // https://github.com/datacute/Tiny4kOLED +#include // for using data in program space +#include "font8x16a.h" // reduced character set + +// Pin definitions +#define SETBUTTON 3 + +// INA219 register values +#define INA_ADDR 0b01000000 // I2C address of INA219 +#define INA_CONFIG 0b0000011001100111 // INA config register according to datasheet +#define INA_CALIB 5120 // INA calibration register according to R_SHUNT +#define CONFIG_REG 0x00 // INA configuration register address +#define CALIB_REG 0x05 // INA calibration register address +#define SHUNT_REG 0x01 // INA shunt voltage register address +#define VOLTAGE_REG 0x02 // INA bus voltage register address +#define POWER_REG 0x03 // INA power register address +#define CURRENT_REG 0x04 // INA current register address + +// Conversions for the reduced character set +#define mV ".,*" +#define mA ".+*" +#define mW ".-*" +#define mAh ".+/" +#define mWh ".-/" +#define SEP "*)*" +#define SPACE '*' +#define ZERO '0' +#define DECIMAL "(" +#define AVERAGE ";*" + +// Variables (voltage in mV, current in mA, power in mW) +uint16_t voltage, current, power; +uint16_t minvoltage = 65535, maxvoltage = 0; +uint16_t mincurrent = 65535, maxcurrent = 0; +uint16_t minpower = 65535, maxpower = 0; +uint32_t startmillis, lastmillis, nowmillis, interval, duration, seconds; +uint32_t capacity = 0, energy = 0; +uint8_t primescreen = 0; +bool lastbutton = true; + + +void setup() { + // setup pins + DDRB = 0; // all pins input now + PORTB = bit (SETBUTTON); // pullup for set button + + // start I2C + TinyI2C.init(); + + // start INA219 + initINA(); + + // start OLED + oled.begin(); + oled.setFont(FONT8X16A); + oled.clear(); + oled.on(); + oled.switchRenderFrame(); + + // init some variables + startmillis = millis(); + lastmillis = startmillis; +} + +void loop() { + // read voltage, current and power from INA219 + updateINA(); + + // calculate power in mW + power = (uint32_t)voltage * current / 1000; + + // calculate capacity in uAh and energy in uWh + nowmillis = millis(); + interval = nowmillis - lastmillis; // calculate time interval + duration = nowmillis - startmillis; // calculate total duration + seconds = duration / 1000; // calculate total seconds + lastmillis = nowmillis; + capacity += interval * current / 3600; // calculate uAh + energy += interval * power / 3600; // calculate uWh + + // update min/max values + if (minvoltage > voltage) minvoltage = voltage; + if (maxvoltage < voltage) maxvoltage = voltage; + if (mincurrent > current) mincurrent = current; + if (maxcurrent < current) maxcurrent = current; + if (minpower > power ) minpower = power; + if (maxpower < power ) maxpower = power; + + // check button + if (bitRead(PINB, SETBUTTON)) lastbutton = false; + else if (!lastbutton) { + if (++primescreen > 4) primescreen = 0; + lastbutton = true; + } + + // display values on the oled + oled.clear(); + oled.setCursor(0, 0); + switch (primescreen) { + case 0: printValue(voltage); oled.print(F(mV)); + printValue(power); oled.print(F(mW)); + printValue(current); oled.print(F(mA)); + printValue(capacity / 1000); oled.print(F(mAh)); + break; + case 1: printValue(minvoltage); oled.print(F(SEP)); + printValue(maxvoltage); oled.print(F(mV)); + printValue(mincurrent); oled.print(F(SEP)); + printValue(maxcurrent); oled.print(F(mA)); + break; + case 2: oled.setCursor(0, 1); + printValue(minpower); oled.print(F(SEP)); + printValue(maxpower); oled.print(F(mW)); + break; + case 3: printDigits(capacity / 1000, 7, SPACE); oled.print(F(DECIMAL)); + printDigits(capacity % 1000, 3, ZERO); oled.print(F(mAh)); + oled.setCursor(0, 2); + printDigits(energy / 1000, 7, SPACE); oled.print(F(DECIMAL)); + printDigits(energy % 1000, 3, ZERO); oled.print(F(mWh)); + break; + case 4: oled.setCursor(32, 1); + printDigits(seconds / 3600, 2, ZERO); oled.print(F(":")); + seconds %= 3600; + printDigits(seconds / 60, 2, ZERO); oled.print(F(":")); + printDigits(seconds % 60, 2, ZERO); + break; + default: break; + } + oled.switchFrame(); + + // a little delay + delay(100); +} + + +// writes a register value to the INA219 +void writeRegister(uint8_t reg, uint16_t value) { + TinyI2C.start(INA_ADDR, 0); + TinyI2C.write(reg); + TinyI2C.write((value >> 8) & 0xff); + TinyI2C.write(value & 0xff); + TinyI2C.stop(); +} + +// reads a register from the INA219 +uint16_t readRegister(uint8_t reg) { + uint16_t result; + TinyI2C.start(INA_ADDR, 0); + TinyI2C.write(reg); + TinyI2C.restart(INA_ADDR, 2); + result = (uint16_t)(TinyI2C.read() << 8) | TinyI2C.read(); + TinyI2C.stop(); + return(result); +} + +// writes inital configuration and calibration values to the INA +void initINA() { + writeRegister(CONFIG_REG, INA_CONFIG); + writeRegister(CALIB_REG, INA_CALIB); +} + +// read sensor values from INA219 +void updateINA() { + voltage = (readRegister(VOLTAGE_REG) >> 1) & 0xfffc; + current = readRegister(CURRENT_REG); + if (current > 32767) current = 0; +} + +// prints 5-digit value right aligned +void printValue(uint16_t value) { + printDigits(value, 5, SPACE); +} + +// prints value right aligned +void printDigits(uint32_t value, uint8_t digits, char filler) { + uint32_t counter = value; + if (counter == 0) counter = 1; + uint32_t limit = 1; + while (--digits) limit *= 10; + while (counter < limit) { + oled.print(filler); + counter *= 10; + } + oled.print(value); +} diff --git a/software/sources/font8x16a.h b/software/sources/font8x16a.h index 6a73c96..d0f4884 100644 --- a/software/sources/font8x16a.h +++ b/software/sources/font8x16a.h @@ -25,6 +25,7 @@ /* Standard ASCII 8x16 font */ const uint8_t ssd1306xled_font8x16a [] PROGMEM = { + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x30,0x30,0x00,0x00,0x00,0x00,0x00, // ( 40 = . 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x01,0x01,0x01,0x01,0x01,0x01, // ) 41 = - 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, // * 42 = SPACE 0x00,0x00,0xC0,0x38,0xE0,0x00,0x00,0x00,0x20,0x3C,0x23,0x02,0x02,0x27,0x38,0x20, // + 43 = A @@ -42,6 +43,8 @@ const uint8_t ssd1306xled_font8x16a [] PROGMEM = { 0x00,0x38,0x08,0x08,0xC8,0x38,0x08,0x00,0x00,0x00,0x00,0x3F,0x00,0x00,0x00,0x00, // 7 55 0x00,0x70,0x88,0x08,0x08,0x88,0x70,0x00,0x00,0x1C,0x22,0x21,0x21,0x22,0x1C,0x00, // 8 56 0x00,0xE0,0x10,0x08,0x08,0x10,0xE0,0x00,0x00,0x00,0x31,0x22,0x22,0x11,0x0F,0x00, // 9 57 + 0x00,0x00,0x00,0xC0,0xC0,0x00,0x00,0x00,0x00,0x00,0x00,0x30,0x30,0x00,0x00,0x00, // : 58 + 0xC0,0x30,0xC8,0x28,0xE8,0x10,0xE0,0x00,0x07,0x18,0x27,0x24,0x23,0x14,0x0B,0x00, // ; 59 = AVG }; // ---------------------------------------------------------------------------- @@ -50,7 +53,7 @@ const DCfont TinyOLED4kfont8x16a = { (uint8_t *)ssd1306xled_font8x16a, 8, // character width in pixels 2, // character height in pages (8 pixels) - 41,57 // ASCII extents + 40,59 // ASCII extents }; // for backwards compatibility