diff --git a/driver/drv/b15f.cpp b/driver/drv/b15f.cpp index aa9c449..1130b0b 100644 --- a/driver/drv/b15f.cpp +++ b/driver/drv/b15f.cpp @@ -50,7 +50,6 @@ void B15F::init() if(!testConnection()) continue; - if(!testIntConv()) continue; @@ -136,12 +135,14 @@ std::vector B15F::getBoardInfo(void) uint8_t n = usart.readByte(); while(n--) { - uint8_t len = usart.readByte(); + uint8_t len = usart.readByte(); + std::cout << (int) len << std::endl; std::string str; - + while(len--) str += static_cast(usart.readByte()); + std::cout << str << std::endl; info.push_back(str); } diff --git a/driver/drv/b15f.o b/driver/drv/b15f.o index 0a9c58b..31747e1 100644 Binary files a/driver/drv/b15f.o and b/driver/drv/b15f.o differ diff --git a/driver/main b/driver/main index 3370cd8..289cfc6 100755 Binary files a/driver/main and b/driver/main differ diff --git a/firmware/B15F.elf b/firmware/B15F.elf old mode 100644 new mode 100755 index c153cbd..b340924 Binary files a/firmware/B15F.elf and b/firmware/B15F.elf differ diff --git a/firmware/B15F.hex b/firmware/B15F.hex index 582abad..10ac7c3 100644 --- a/firmware/B15F.hex +++ b/firmware/B15F.hex @@ -3,235 +3,264 @@ :100020000C947D000C947D000C947D000C947D005C :100030000C947D000C947D000C947D000C947D004C :100040000C947D000C947D000C947D000C947D003C -:100050000C947F000C947D000C947D000C947D002A +:100050000C9429010C947D000C947F000C947D007D :100060000C947D000C947D000C947D000C947D001C :100070000C947D000C947D000C947D000C947D000C -:100080000C947D000C947D000C947D0023012601CE -:1000900029011A012C012F013201350138013B01E0 -:1000A00020013E010D0711241FBECFEFD0E4DEBFBB -:1000B000CDBF11E0A0E0B1E0ECE8FEE000E00BBF56 -:1000C00002C007900D92A232B107D9F721E0A2E257 -:1000D000B1E001C01D92AA37B207E1F710E0C3E515 -:1000E000D0E004C02197FE010E943B07C235D10732 -:1000F000C9F70E94F1060C9444070C9400001F926B -:100100000F920FB60F9211240BB60F922F933F93BD -:100110004F935F936F937F938F939F93AF93BF930F -:10012000EF93FF938091C00083FF05C06FEF86E7D8 -:1001300091E00E94C701F8946091C60082E291E0CC -:100140000E943B047894FF91EF91BF91AF919F91F2 -:100150008F917F916F915F914F913F912F910F9070 -:100160000BBE0F900FBE0F901F90189589E791E07E -:100170000E94420160E086E791E00E9485016FEFF6 -:1001800086E791E00E94A60160E083E791E00E948B -:1001900085016FEF83E791E00E94A6016FEF80E792 -:1001A00091E00E94A60189E691E00E947D0282E230 -:1001B00091E00E947503789484B7877F84BF109282 -:1001C00060000FB6F894A8958091600088618093D4 -:1001D0006000109260000FBE0895CF930FB6F894A0 -:1001E000A895809160008861809360001092600003 -:1001F0000FBE6FEF83E791E00E94C70182E291E0BA -:100200000E942304C82F60E083E791E00E94C701A9 -:1002100098E088E10FB6F894A895809360000FBE2F -:1002200090936000A8958C2F90E0FC013197EC3002 -:10023000F10510F0CF910895EA5BFF4F0C943B0756 -:10024000CF910C947D06CF910C94F605CF910C9430 -:100250000706CF910C942606CF910C943306CF91CC -:100260000C944106CF910C944F06CF910C945806F4 -:10027000CF910C946106CF910C946F06CF910C94A2 -:100280008B06089584B1806B84B926988AB18C61FD -:100290008AB980E58CBD81E08DBD8BB1837E8BB941 -:1002A0005A9A5B9A5C9A08958BB1837E8BB98BB115 -:1002B00060FD10C090E0892B8BB98BB161FD10C03F -:1002C00090E0892B8BB98BB162FD10C090E0892B37 -:1002D0008BB9089594E0892B8BB98BB161FFF0CF76 -:1002E00098E0892B8BB98BB162FFF0CF90E1892B1D -:1002F0008BB908956EBD0DB407FEFDCF8EB5089580 -:10030000FC0171836083428308951F93CF93DF9331 -:10031000EC01162F6A81888199810E94540160E462 -:10032000888199810E947A0160E0888199810E9488 -:100330007A01612F888199810E947A0167E0888122 -:100340009981DF91CF911F910C9454011F93CF930A -:10035000DF93EC01162F6A81888199810E945401F4 -:1003600060E4888199810E947A0161E088819981A5 -:100370000E947A01612F888199810E947A0167E049 -:1003800088819981DF91CF911F910C9454011F9323 -:10039000CF93DF93EC01162F6A81888199810E94A7 -:1003A000540160E4888199810E947A0162E1888128 -:1003B00099810E947A01612F888199810E947A0136 -:1003C00067E088819981DF91CF911F910C9454014E -:1003D0001F93CF93DF93EC01162F6A818881998157 -:1003E0000E94540160E4888199810E947A0163E14E -:1003F000888199810E947A01612F888199810E9468 -:100400007A0167E088819981DF91CF911F910C94E7 -:1004100054011F93CF93DF93EC016A818881998106 -:100420000E94540161E4888199810E947A0162E10D -:10043000888199810E947A0160E0888199810E9477 -:100440007A01182F67E0888199810E945401812FD9 -:10045000DF91CF911F9108951F93CF93DF93EC010C -:100460006A81888199810E94540161E4888199811F -:100470000E947A0163E1888199810E947A0160E09B -:10048000888199810E947A01182F67E0888199817B -:100490000E945401812FDF91CF911F910895FC019B -:1004A00071836083428308950F931F93CF93DF93EB -:1004B000EC018B016A81888199810E945401B80105 -:1004C0000024660F771F001C660F771F001C672F24 -:1004D000702D888199810E947A01602F660F660FC6 -:1004E000888199810E947A0167E088819981DF91F2 -:1004F000CF911F910F910C94540110927C0087E8CA -:1005000080937A00089580917C00807E682B6093B0 -:100510007C0080917A00806480937A0083EA91E085 -:100520000197F1F700C0000080917A0086FDFCCFB2 -:10053000809178009091790008950F931F93CF9345 -:10054000DF9361E086E791E00E94C701C1E0D0E05F -:1005500001E010E02FEF84E39CE0215080409040C8 -:10056000E1F700C00000B8010C2E01C0660F0A942C -:10057000EAF786E791E00E94C7012196C930D105CC -:1005800049F7DF91CF911F910F9108950F931F931A -:10059000CF93DF9361E083E791E00E94C701C1E060 -:1005A000D0E001E010E02FEF84E39CE02150804098 -:1005B0009040E1F700C00000B8010C2E01C0660FAA -:1005C0000A94EAF783E791E00E94C7012196C930B7 -:1005D000D10549F7DF91CF911F910F910895CF93E6 -:1005E000DF93C0E0D0E0BE018DE691E00E945402AE -:1005F00087E893E10197F1F700C000002196C1154B -:1006000094E0D90781F72FE78AE196E021508040F6 -:100610009040E1F700C0000060E070E08DE691E0FE -:10062000DF91CF910C945402CF93DF93C0E0D0E0E0 -:10063000BE018AE691E00E94540287E893E10197A7 -:10064000F1F700C000002196C11594E0D90781F7A9 -:100650002FE78AE196E0215080409040E1F700C00A -:10066000000060E070E08AE691E0DF91CF910C94A9 -:1006700054020FB6F894A895809160008861809329 -:100680006000109260000FBE60E089E691E00E9479 -:100690008302BC018DE691E00E94540261E089E68C -:1006A00091E00E948302BC018AE691E00E9454021C -:1006B00086E791E00E942C02682F86E791E00E9475 -:1006C000C70180E791E00E942C02682F83E791E048 -:1006D0000E94C701D9CF0E949D020E94C6020E94BB -:1006E000EF020E9414030E94390382E08093C0004D -:1006F00088E98093C10086E08093C2001092C50013 -:1007000084E18093C40008958091C6008FE792E051 -:100710000197F1F700C000008091C00087FDF4CF81 -:1007200008958091C00085FFFCCF6093C6000895B6 -:100730008091C00085FFFCCF6093C6008091C0000F -:1007400085FFFCCF7093C60008958091C00085FF9F -:10075000FCCF4093C6009FEF940F442351F0FB0160 -:1007600021918091C00085FFFCCF2093C60091505D -:10077000B8F708958091C00085FFFCCF4093C60074 -:100780005FEF540F442309F45CC0FB0120E041E912 -:10079000DF0190818091C00085FFFCCF9093C6005F -:1007A00031969C91822F892780FD842790E0959532 -:1007B0008795282F80FF02C0242F2827822F90E0C2 -:1007C00095958795282F80FF02C0242F282730E099 -:1007D00035952795822F20FF02C0842F822790E035 -:1007E00095958795282F80FF02C0242F282730E079 -:1007F00035952795822F20FF02C0842F822790E015 -:1008000095958795282F80FF02C0242F282730E058 -:1008100035952795822F20FF02C0842F8227282F0D -:100820002695515008F0B4CF8091C00085FFFCCFD1 -:100830002093C6008091C00087FFFCCF8091C60046 -:10084000089520E0F1CF8091C00087FFFCCF809118 -:10085000C60008958091C00087FFFCCF2091C6009C -:1008600030E09091C00097FFFCCF8091C600A901B5 -:10087000582BCA010895CF93DF93FC01DC01AB5BD9 -:10088000BF4F8D919C9111978230910509F4ACC0B6 -:1008900098F4009709F48AC0019771F58081EF01FF -:1008A000C80FD11D698322E030E02D933C938F5F08 -:1008B0008083DF91CF9108958330910519F10497DA -:1008C000D9F48091C6008FE792E00197F1F700C05C -:1008D00000008091C00087FDF4CFEF01CC5BDF4FBB -:1008E00088818111E7C09FEF8091C00085FFFCCF18 -:1008F0009093C6001D921C9280818F5F8083DF9150 -:10090000CF9108958081EF01C80FD11D6983EF0158 -:10091000CC5BDF4F9881692760FF02C091E96927AE -:1009200070E075956795462F60FF02C041E9462744 -:1009300050E055954795242F40FF02C021E9242718 -:1009400030E035952795422F20FF02C041E942272C -:1009500050E055954795242F40FF02C021E92427F8 -:1009600030E035952795422F20FF02C041E942270C -:1009700050E055954795242F40FF02C021E92427D8 -:1009800030E035952795922F20FF02C091E99227FC -:10099000292F30E035952795288324E030E02D93EA -:1009A0003C938F5F8083DF91CF910895613408F489 -:1009B00083C08091C6008FE792E00197F1F700C0F5 -:1009C00000008091C00087FDF4CF8091C00085FFBA -:1009D000FCCF8EEF8093C6001D921C9280818F5FAA -:1009E0008083DF91CF9108958081EF01C80FD11DE1 -:1009F0006983EF01CC5BDF4F9881692760FF02C0FC -:100A000091E9692770E075956795462F60FF02C0F0 -:100A100041E9462750E055954795242F40FF02C0F5 -:100A200021E9242730E035952795422F20FF02C089 -:100A300041E9422750E055954795242F40FF02C0D9 -:100A400021E9242730E035952795422F20FF02C069 -:100A500041E9422750E055954795242F40FF02C0B9 -:100A600021E9242730E035952795922F20FF02C0F9 -:100A700091E99227292F30E0359527952883918198 -:100A8000891721F1891708F438CF8091C6008FE7C4 -:100A900092E00197F1F700C000008091C00087FD4F -:100AA000F4CF8091C00085FD94CF8091C00085FF78 -:100AB000F8CF8FCF9EEF18CF6183EF01CC5BDF4F74 -:100AC000188281E090E08D939C9318CF23E030E072 -:100AD0002D933C938F5F12CFCF93DF93CB0171E9BE -:100AE0009C01240F311DA901AEEF8091C00087FF4A -:100AF000FCCFE091C600E03809F46AC0E13408F0A8 -:100B0000E0E060E090E08091C00087FFFCCFF091D2 -:100B1000C6008F2F892780FD872790E095958795C0 -:100B2000282F80FF02C0272F2827822F90E095953D -:100B30008795282F80FF02C0272F282730E0359582 -:100B40002795822F20FF02C0872F822790E095955E -:100B50008795282F80FF02C0272F282730E0359562 -:100B60002795822F20FF02C0872F822790E095953E -:100B70008795282F80FF02C0272F282730E0359542 -:100B80002795822F20FF02C0872F8227982F9695C6 -:100B90006E1738F16F5FE61708F0B5CF8091C60089 -:100BA000EFE7F2E03197F1F700C000008091C0005C -:100BB00087FDF4CF992399F02EEF8091C00085FF37 -:100BC000FCCF2093C600911190CFDF91CF91089573 -:100BD0008091C00085FFFCCFA093C60086CF2FEF89 -:100BE000ECCFEA01C60FD11DF883D4CFCF9382E2B8 -:100BF00091E00E942304C82F6FEF82E291E00E94EF -:100C000091036C2F82E291E0CF910C94910363E009 -:100C100082E291E00E9491034CE065E171E082E2A2 -:100C200091E00E94A50349E06CE071E082E291E06E -:100C30000E94A5034CE060E071E082E291E00E9436 -:100C4000A5036FEF82E291E00C94910382E291E0C0 -:100C50000E942A04BC01660F771F680F791F82E289 -:100C600091E00C94980382E291E00E942304682FA3 -:100C700086E791E00E94C7016FEF82E291E00C9459 -:100C8000910382E291E00E942304682F83E791E0C0 -:100C90000E94C7016FEF82E291E00C94910386E716 -:100CA00091E00E942C02682F82E291E00C94910363 -:100CB00083E791E00E942C02682F82E291E00C947D -:100CC000910382E291E00E942A04BC018DE691E04A -:100CD0000E9454026FEF82E291E00C94910382E251 -:100CE00091E00E942A04BC018AE691E00E9454022D -:100CF0006FEF82E291E00C94910382E291E00E9416 -:100D00002304682F89E691E00E948302BC0182E2FD -:100D100091E00C9498038F929F92AF92BF92CF92E2 -:100D2000DF92EF92FF920F931F93CF93DF9382E2B4 -:100D300091E00E942304882E82E291E00E94230425 -:100D4000982E82E291E00E942A04EC0182E291E076 -:100D50000E942A045C0182E291E00E942A048C0134 -:100D60006FEF82E291E00E949103A09E6001A19E3C -:100D7000D00CB09ED00C1124CC15DD050CF5BE01B5 -:100D80008DE691E00E945402A895682D89E691E0D5 -:100D90000E9483027C01692D89E691E00E94830212 -:100DA0008C01B70182E291E00E949803B80182E2CF -:100DB00091E00E949803CA0DDB1DCC15DD05FCF205 -:100DC0006FEF82E291E0DF91CF911F910F91FF9041 -:100DD000EF90DF90CF90BF90AF909F908F900C944A -:100DE00091030E94B6006FEF86E791E00E94C70171 -:100DF0002FE78AE196E0215080409040E1F700C063 -:100E0000000060E086E791E00E94C70187E893E177 -:100E10000197F1F700C00000F9CF89E791E00E9447 -:100E2000410142E069E771E086E791E00E948001BC -:100E300043E069E771E083E791E00E94800145E0CB -:100E400069E771E080E791E00E94800140E069E796 -:100E500071E08DE691E00E944F0241E069E771E0A8 -:100E60008AE691E00E944F021092220110926801DE -:100E7000109267010895EE0FFF1F0024001C0BBEA7 -:0C0E80000790F691E02D0994F894FFCF44 -:100E8C00626F617264696E666F2E680031303A343D -:100E9C00333A3130004170722020322032303139F7 -:020EAC00000044 +:100080000C947D000C947D000C947D000E011101F8 +:100090001401080117011A011D01200123010601A5 +:1000A0000B012601F60711241FBECFEFD0E4DEBFFF +:1000B000CDBF11E0A0E0B1E0EEE5F0E100E00BBF64 +:1000C00002C007900D92AE32B107D9F721E0AEE23F +:1000D000B1E001C01D92A93CB207E1F710E0C3E511 +:1000E000D0E004C02197FE010E942408C235D10748 +:1000F000C9F70E94DA070C942D080C9400001F9297 +:100100000F920FB60F9211240BB60F928F939F93FD +:10011000EF93FF9390912F0180912E01981760F437 +:10012000E0912F0181E08E0F80932F01F0E0E05DE0 +:10013000FE4F80818093C600FF91EF919F918F9138 +:100140000F900BBE0F900FBE0F901F90189588EC6C +:1001500091E00E946C0160E085EC91E00E94AF01AB +:100160006FEF85EC91E00E94D00160E082EC91E0BD +:100170000E94AF016FEF82EC91E00E94D0016FEF1F +:100180008FEB91E00E94D00188EB91E00E94A702E2 +:1001900081E791E00E949F03789484B7877F84BFB2 +:1001A000109260000FB6F894A89580916000886165 +:1001B00080936000109260000FBE08950FB6F8940F +:1001C000A895809160008861809360001092600023 +:1001D0000FBE81E791E00E94BE04E82F10922F012C +:1001E0009EE088E10FB6F894A895809360000FBE5A +:1001F00090936000A8958E2F90E0FC013197EC3031 +:10020000F10530F4EA5BFF4F0C9424080E9451077B +:100210001092500108950E946307FACF0E94A6062B +:10022000F7CF0E94BB06F4CF0E94F006F1CF0E94E8 +:100230000107EECF0E941307EBCF0E942507E8CFFE +:100240000E943207E5CF0E943F07E2CF0E94750768 +:10025000DFCF1F920F920FB60F9211240BB60F92A1 +:100260002F933F934F935F936F937F938F939F93BE +:10027000AF93BF93EF93FF93E0915001F0E0809133 +:10028000C600EF5AFE4F8083809150018F5F8093AC +:100290005001E091510180915001F0E0E050FF4F9A +:1002A0009081981799F0FF91EF91BF91AF919F9135 +:1002B0008F917F916F915F914F913F912F910F900F +:1002C0000BBE0F900FBE0F901F901895109250010B +:1002D0000E94DE00E8CF089584B1806B84B926982F +:1002E0008AB18C618AB980E58CBD81E08DBD8BB10E +:1002F000837E8BB95A9A5B9A5C9A08958BB1837E00 +:100300008BB98BB160FD10C090E0892B8BB98BB19C +:1003100061FD10C090E0892B8BB98BB162FD10C0DC +:1003200090E0892B8BB9089594E0892B8BB98BB120 +:1003300061FFF0CF98E0892B8BB98BB162FFF0CFD2 +:1003400090E1892B8BB908956EBD0DB407FEFDCFEA +:100350008EB50895FC0171836083428308951F93D5 +:10036000CF93DF93EC01162F6A81888199810E94D7 +:100370007E0160E4888199810E94A40160E0888107 +:1003800099810E94A401612F888199810E94A40112 +:1003900067E088819981DF91CF911F910C947E0154 +:1003A0001F93CF93DF93EC01162F6A818881998187 +:1003B0000E947E0160E4888199810E94A40161E02D +:1003C000888199810E94A401612F888199810E946E +:1003D000A40167E088819981DF91CF911F910C94EE +:1003E0007E011F93CF93DF93EC01162F6A818881E2 +:1003F00099810E947E0160E4888199810E94A40114 +:1004000062E1888199810E94A401612F888199818C +:100410000E94A40167E088819981DF91CF911F91AB +:100420000C947E011F93CF93DF93EC01162F6A810A +:10043000888199810E947E0160E4888199810E946F +:10044000A40163E1888199810E94A401612F8881C0 +:1004500099810E94A40167E088819981DF91CF9101 +:100460001F910C947E011F93CF93DF93EC016A815F +:10047000888199810E947E0161E4888199810E942E +:10048000A40162E1888199810E94A40160E08881D1 +:1004900099810E94A401182F67E0888199810E94A8 +:1004A0007E01812FDF91CF911F9108951F93CF93EC +:1004B000DF93EC016A81888199810E947E0161E469 +:1004C000888199810E94A40163E1888199810E94B9 +:1004D000A40160E0888199810E94A401182F67E03F +:1004E000888199810E947E01812FDF91CF911F9198 +:1004F0000895FC0171836083428308950F931F93D5 +:10050000CF93DF93EC018B016A81888199810E94EE +:100510007E01B8010024660F771F001C660F771F4D +:10052000001C672F702D888199810E94A401602F83 +:10053000660F660F888199810E94A40167E0888117 +:100540009981DF91CF911F910F910C947E011092B0 +:100550007C0087E880937A00089580917C00807EFB +:10056000682B60937C0080917A00806480937A008D +:1005700083EA91E00197F1F700C0000080917A00D2 +:1005800086FDFCCF809178009091790008950F93BB +:100590001F93CF93DF9361E085EC91E00E94F1011E +:1005A000C1E0D0E001E010E02FEF84E39CE02150B7 +:1005B00080409040E1F700C00000B8010C2E01C05F +:1005C000660F0A94EAF785EC91E00E94F10121960A +:1005D000C930D10549F7DF91CF911F910F9108954F +:1005E0000F931F93CF93DF9361E082EC91E00E9421 +:1005F000F101C1E0D0E001E010E02FEF84E39CE0E6 +:10060000215080409040E1F700C00000B8010C2E5E +:1006100001C0660F0A94EAF782EC91E00E94F101B2 +:100620002196C930D10549F7DF91CF911F910F91E4 +:100630000895CF93DF93C0E0D0E0BE018CEB91E052 +:100640000E947E0287E893E10197F1F700C0000065 +:100650002196C11594E0D90781F72FE78AE196E04A +:10066000215080409040E1F700C0000060E070E061 +:100670008CEB91E0DF91CF910C947E02CF93DF93CE +:10068000C0E0D0E0BE0189EB91E00E947E0287E8E5 +:1006900093E10197F1F700C000002196C11594E0A5 +:1006A000D90781F72FE78AE196E0215080409040FA +:1006B000E1F700C0000060E070E089EB91E0DF91BD +:1006C000CF910C947E020FB6F894A89580916000AB +:1006D000886180936000109260000FBE60E088EB3C +:1006E00091E00E94AD02BC018CEB91E00E947E0281 +:1006F00061E088EB91E00E94AD02BC0189EB91E0E2 +:100700000E947E0285EC91E00E945602682F85ECE3 +:1007100091E00E94F1018FEB91E00E945602682F58 +:1007200082EC91E00E94F101D9CF0E94C7020E94A1 +:10073000F0020E9419030E943E030E94630382E0BC +:100740008093C00088ED8093C10086E08093C20052 +:100750001092C50084E18093C40008958091C60082 +:100760008FE792E00197F1F700C000008091C00090 +:1007700087FDF4CF089580912F0180932E01109270 +:100780002F018091C00085FFFCCFE0912F0181E017 +:100790008E0F80932F01F0E0E05DFE4F808180930B +:1007A000C6000895E0912F0181E08E0F80932F0104 +:1007B000F0E0E05DFE4F60830895E0912F0181E05D +:1007C0008E0F80932F01F0E0E05DFE4F6083E0919B +:1007D0002F0181E08E0F80932F01F0E0E05DFE4F4E +:1007E00070830895E0912F0181E08E0F80932F0197 +:1007F000F0E0E05DFE4F40838FEF840F442371F003 +:10080000DB019D91E0912F0121E02E0F20932F011C +:10081000F0E0E05DFE4F9083815098F70895CF930C +:10082000DF93E0912F0181E08E0F80932F01F0E0A4 +:10083000E05DFE4F40835FEF540F442309F486C010 +:10084000FB0180E041E939C0822F90E09C013595A1 +:100850002795942F922720FD53C0822F90E09C0172 +:1008600035952795942F922720FD53C0822F90E035 +:100870009C0135952795942F922720FD53C0822FF8 +:1008800090E09C0135952795942F922720FD53C029 +:10089000822F90E09C0135952795942F922720FD7B +:1008A00053C0822F90E095958795242F282780FDAF +:1008B000822F8695515008F44AC0EF019191A09182 +:1008C0002F0121E02A0F20932F01B0E0A05DBE4F41 +:1008D0009C9328818227982F942780FD892F90E070 +:1008E0009C0135952795942F922720FFADCF892F16 +:1008F00090E09C0135952795942F922720FFADCF4E +:10090000892F90E09C0135952795942F922720FF01 +:10091000ADCF892F90E09C0135952795942F922794 +:1009200020FFADCF892F90E09C0135952795942F1E +:10093000922720FFADCF892F90E09C013595279518 +:10094000942F922720FFADCF892FACCF80E0E0918C +:100950002F0191E09E0F90932F01F0E0E05DFE4F9C +:100960008083E091500181E08E0F80935001F0E090 +:10097000EF5AFE4F8081DF91CF910895E0915001B1 +:1009800081E08E0F80935001F0E0EF5AFE4F80819E +:100990000895E091500181E08E0F80935001F0E0C6 +:1009A000EF5AFE4F8081E091500191E09E0F9093AD +:1009B0005001F0E0EF5AFE4F208190E0922B089515 +:1009C000CF93DF93FC01DC01AB5BBF4F8D919C911A +:1009D00011978230910509F460C090F40097D9F125 +:1009E000019799F58081EF01C80FD11D698322E03D +:1009F00030E02D933C938F5F8083DF91CF910895FA +:100A00008330910509F4A8C00497F9F48091C600D9 +:100A10008FE792E00197F1F700C000008091C000DD +:100A200087FDF4CFEF01CC5BDF4F88818111E8C0F7 +:100A30008FEFC0912F0191E09C0F90932F01D0E098 +:100A4000C05DDE4F88831D921C9280818F5F808302 +:100A5000DF91CF910895613408F4D4C08091C6002D +:100A60008FE792E00197F1F700C000008091C0008D +:100A700087FDF4CFC0912F0181E08C0F80932F016F +:100A8000D0E0C05DDE4F8EEF88831D921C92808186 +:100A90008F5F8083DF91CF9108958081EF01C80F30 +:100AA000D11D6983EF01CC5BDF4F9881692760FF1F +:100AB00002C091E9692770E075956795462F60FF40 +:100AC00002C041E9462750E055954795242F40FF45 +:100AD00002C021E9242730E035952795422F20FFD9 +:100AE00002C041E9422750E055954795242F40FF29 +:100AF00002C021E9242730E035952795422F20FFB9 +:100B000002C041E9422750E055954795242F40FF08 +:100B100002C021E9242730E035952795922F20FF48 +:100B200002C091E99227292F30E035952795288337 +:100B30009181891709F470C0891708F487CF8091D3 +:100B4000C6008FE792E00197F1F700C000008091A6 +:100B5000C00087FDF4CF8ECF8081EF01C80FD11D7B +:100B60006983EF01CC5BDF4F9881692760FF02C08A +:100B700091E9692770E075956795462F60FF02C07F +:100B800041E9462750E055954795242F40FF02C084 +:100B900021E9242730E035952795422F20FF02C018 +:100BA00041E9422750E055954795242F40FF02C068 +:100BB00021E9242730E035952795422F20FF02C0F8 +:100BC00041E9422750E055954795242F40FF02C048 +:100BD00021E9242730E035952795922F20FF02C088 +:100BE00091E99227292F30E035952795288324E035 +:100BF00030E02D933C938F5F8083DF91CF910895F8 +:100C00008EEF17CF6183EF01CC5BDF4F188281E05D +:100C100090E08D939C931BCF23E030E02D933C9389 +:100C20008F5F15CFCF93DF93CB0171E99C01240F28 +:100C3000311DA901AEEFE091500181E08E0F80934C +:100C40005001F0E0EF5AFE4FE081E03809F46EC049 +:100C5000E13408F0E0E060E080E0C091500191E014 +:100C60009C0F90935001D0E0CF5ADE4FF8818F2730 +:100C700080FD872790E095958795282F80FF02C0FB +:100C8000272F2827822F90E095958795282F80FF82 +:100C900002C0272F282730E035952795822F20FF87 +:100CA00002C0872F822790E095958795282F80FF97 +:100CB00002C0272F282730E035952795822F20FF67 +:100CC00002C0872F822790E095958795282F80FF77 +:100CD00002C0272F282730E035952795822F20FF47 +:100CE00002C0872F822786956E1758F16F5FE6172F +:100CF00008F0B3CF9091C600EFE7F2E03197F1F73B +:100D000000C000009091C00097FDF4CF81110EC08B +:100D1000E0912F0181E08E0F80932F01F0E0E05DE4 +:100D2000FE4F8FEF8083DF91CF910895E0912F01E7 +:100D300081E08E0F80932F01F0E0E05DFE4FA083F5 +:100D40007ACFEA01C60FD11DF883D0CFCF9381E7C8 +:100D500091E00E94BE04C82F6FEF81E791E00E94EE +:100D6000D2036C2F81E791E00E94D20381E791E0EA +:100D7000CF910C94BB0363E081E791E00E94D20322 +:100D800081E791E00E94BB0310922F014CE062E2E8 +:100D900071E081E791E00E94F20381E791E00E9417 +:100DA000BB0310922F0149E069E171E081E791E016 +:100DB0000E94F20381E791E00E94BB0310922F0191 +:100DC0004CE06DE071E081E791E00E94F2036FEF8B +:100DD00081E791E00E94D20381E791E00C94BB038C +:100DE00081E791E00E94C904BC01660F771F680F7C +:100DF000791F81E791E00E94DD0381E791E00C9487 +:100E0000BB0381E791E00E94BE04682F85EC91E06E +:100E10000E94F1016FEF81E791E00E94D20381E728 +:100E200091E00C94BB0381E791E00E94BE04682F1F +:100E300082EC91E00E94F1016FEF81E791E00E9466 +:100E4000D20381E791E00C94BB0385EC91E00E9412 +:100E50005602682F81E791E00E94D20381E791E07A +:100E60000C94BB0382EC91E00E945602682F81E74C +:100E700091E00E94D20381E791E00C94BB0381E7EB +:100E800091E00E94C904BC018CEB91E00E947E02BB +:100E90006FEF81E791E00E94D20381E791E00C942B +:100EA000BB0381E791E00E94C904BC0189EB91E09A +:100EB0000E947E026FEF81E791E00E94D20381E7FA +:100EC00091E00C94BB0381E791E00E94BE04682F7F +:100ED00088EB91E00E94AD02BC0181E791E00E94A5 +:100EE000DD0381E791E00C94BB038F929F92AF9258 +:100EF000BF92CF92DF92EF92FF920F931F93CF9307 +:100F0000DF9381E791E00E94BE04882E81E791E0A3 +:100F10000E94BE04982E81E791E00E94C904EC0172 +:100F200081E791E00E94C9045C0181E791E00E94A1 +:100F3000C904A89E6001A99ED00CB89ED00C1124B3 +:100F40006FEF82EC91E00E94F101CC15DD050CF50C +:100F5000BE018CEB91E00E947E02A895682D88EB83 +:100F600091E00E94AD027C01692D88EB91E00E9426 +:100F7000AD028C01B70181E791E00E94DD03B80169 +:100F800081E791E00E94DD03CA0DDB1DCC15DD0574 +:100F9000FCF26FEF81E791E0DF91CF911F910F910C +:100FA000FF90EF90DF90CF90BF90AF909F908F9089 +:100FB0000C94D2030E94A7006FEF85EC91E00E9491 +:100FC000F1012FE78AE196E0215080409040E1F75F +:100FD00000C0000060E085EC91E00E94F10187E82C +:100FE00093E10197F1F700C00000F9CF88EC91E0A0 +:100FF0000E946B0142E068EC71E085EC91E00E9498 +:10100000AA0143E068EC71E082EC91E00E94AA0141 +:1010100045E068EC71E08FEB91E00E94AA0140E0AE +:1010200068EC71E08CEB91E00E94790241E068ECA1 +:1010300071E089EB91E00E947902109271011092A7 +:10104000B7011092B6010895EE0FFF1F0024001C97 +:0E1050000BBE0790F691E02D0994F894FFCFA7 +:10105E0001020103000202010103030209626F6132 +:10106E007264696E666F2E680031323A31303A35ED +:0E107E003400417072202032203230313900AF :00000001FF diff --git a/firmware/Makefile b/firmware/Makefile index 7846f59..ce89319 100644 --- a/firmware/Makefile +++ b/firmware/Makefile @@ -1,26 +1,27 @@ # Name: Makefile # Project: B15F (board15 Famulus Edition) # Author: Tristan Krause -# Creation Date: 2019-03-22 - -# Umgebungseinstellungen -COMPILER_PATH = C:\avr8-gnu-toolchain-win32_x86\bin\avr-g++.exe -OBJCOPY_PATH = C:\avr8-gnu-toolchain-win32_x86\bin\avr-objcopy.exe - +# Creation Date: 2019-03-22 -OUTPUT = B15F.elf -HEX = B15F.hex -CFLAGS = -Wall -Wextra -std=c++14 -O3 -mmcu=atmega1284 -DF_CPU=20000000 +# Umgebungseinstellungen +COMPILER_PATH = avr-g++ +OBJCOPY_PATH = avr-objcopy + + +OUTPUT = B15F.elf +HEX = B15F.hex +MCU = atmega1284p +CFLAGS = -Wall -Wextra -std=c++14 -O3 -mmcu=$(MCU) -DF_CPU=20000000 LDFLAGS = OBJECTS = main.o spi.o mcp23s17.o tlc5615.o adu.o selftest.o global_vars.o usart.o requests.o - + COMPILE = $(COMPILER_PATH) $(CFLAGS) B15F: $(OBJECTS) @echo "Linking..." - $(COMPILE) $(OBJECTS) -o $(OUTPUT) $(LDFLAGS) - + $(COMPILE) $(OBJECTS) -o $(OUTPUT) $(LDFLAGS) + $(OBJCOPY_PATH) -O ihex -R .eeprom -R .fuse -R .lock -R .signature $(OUTPUT) $(HEX) help: @@ -28,9 +29,12 @@ help: @echo "make B15F .... to compile (default)" @echo "make clean ... to delete objects, elf and hex file" -clean: +clean: @echo "Cleaning..." rm -f $(OBJECTS) $(OUTPUT) $(HEX) +upload: + avrdude -Pusb -p $(MCU) -c avrispmkII -U flash:w:$(HEX) + .cpp.o: $(COMPILE) -c $< -o $@ diff --git a/firmware/MakefileWindoofs b/firmware/MakefileWindoofs new file mode 100644 index 0000000..7846f59 --- /dev/null +++ b/firmware/MakefileWindoofs @@ -0,0 +1,36 @@ +# Name: Makefile +# Project: B15F (board15 Famulus Edition) +# Author: Tristan Krause +# Creation Date: 2019-03-22 + +# Umgebungseinstellungen +COMPILER_PATH = C:\avr8-gnu-toolchain-win32_x86\bin\avr-g++.exe +OBJCOPY_PATH = C:\avr8-gnu-toolchain-win32_x86\bin\avr-objcopy.exe + + +OUTPUT = B15F.elf +HEX = B15F.hex +CFLAGS = -Wall -Wextra -std=c++14 -O3 -mmcu=atmega1284 -DF_CPU=20000000 +LDFLAGS = +OBJECTS = main.o spi.o mcp23s17.o tlc5615.o adu.o selftest.o global_vars.o usart.o requests.o + + +COMPILE = $(COMPILER_PATH) $(CFLAGS) + +B15F: $(OBJECTS) + @echo "Linking..." + $(COMPILE) $(OBJECTS) -o $(OUTPUT) $(LDFLAGS) + + $(OBJCOPY_PATH) -O ihex -R .eeprom -R .fuse -R .lock -R .signature $(OUTPUT) $(HEX) + +help: + @echo "This Makefile has the following rules:" + @echo "make B15F .... to compile (default)" + @echo "make clean ... to delete objects, elf and hex file" + +clean: + @echo "Cleaning..." + rm -f $(OBJECTS) $(OUTPUT) $(HEX) + +.cpp.o: + $(COMPILE) -c $< -o $@ diff --git a/firmware/b15f.aws b/firmware/b15f.aws index 2372df2..2f1dc2d 100644 --- a/firmware/b15f.aws +++ b/firmware/b15f.aws @@ -1 +1 @@ - + diff --git a/firmware/global_vars.cpp b/firmware/global_vars.cpp index 88e73ca..0622545 100644 --- a/firmware/global_vars.cpp +++ b/firmware/global_vars.cpp @@ -9,3 +9,9 @@ volatile TLC5615 dac1(*((SPI*) &spi), SPIADR::AA1); volatile ADU adu; volatile USART usart; + +volatile uint8_t receive_buffer[32]; +volatile uint8_t receive_pos; +volatile uint8_t send_buffer[32]; +volatile uint8_t send_pos; +volatile uint8_t send_len; diff --git a/firmware/global_vars.h b/firmware/global_vars.h index 94511ec..45ac856 100644 --- a/firmware/global_vars.h +++ b/firmware/global_vars.h @@ -15,4 +15,10 @@ extern volatile TLC5615 dac1; extern volatile ADU adu; extern volatile USART usart; +extern volatile uint8_t receive_buffer[32]; +extern volatile uint8_t receive_pos; +extern volatile uint8_t send_buffer[32]; +extern volatile uint8_t send_pos; +extern volatile uint8_t send_len; +extern volatile bool send_active; #endif // GLOBAL_VARS_H diff --git a/firmware/main.cpp b/firmware/main.cpp index a243042..2a86cde 100644 --- a/firmware/main.cpp +++ b/firmware/main.cpp @@ -7,17 +7,46 @@ #include "requests.h" -#define WDT_TIMEOUT WDTO_15MS +#define WDT_TIMEOUT WDTO_1S + +uint8_t const rq_len[] = { + /* RQ_DISC */ 1, + /* RQ_TEST */ 2, + /* RQ_INFO */ 1, + /* RQ_INT */ 3, + /* [ reserved ] */ 0, + /* RQ_BA0 */ 2, + /* RQ_BA1 */ 2, + /* RQ_BE0 */ 1, + /* RQ_BE1 */ 1, + /* RQ_AA0 */ 3, + /* RQ_AA1 */ 3, + /* RQ_ADC */ 2, + /* RQ_ADC_DAC_STROKE */ 9 +}; + + + + + +void handleRequest(void); ISR(USART0_RX_vect) { - if(UCSR0A & _BV(DOR0)) + receive_buffer[receive_pos] = UDR0; + receive_pos++; + + if(receive_pos == rq_len[receive_buffer[0]]) // last byte { - ((MCP23S17*) &beba0)->writePortA(0xFF); + receive_pos = 0; + handleRequest(); } - cli(); - ((USART*) &usart)->nextByte(UDR0); - sei(); +} + +ISR(USART0_TX_vect) +{ + if(send_pos < send_len) + UDR0 = send_buffer[send_pos++]; } void initAll() @@ -46,14 +75,14 @@ void handleRequest() { wdt_disable(); - ((MCP23S17*) &beba1)->writePortA(0xFF); const uint8_t req = ((USART*) &usart)->readByte(); - ((MCP23S17*) &beba1)->writePortA(0x00); + send_pos = 0; // starte WDT wdt_enable(WDT_TIMEOUT); wdt_reset(); + //((MCP23S17*) &beba0)->writePortA(receive_buffer[0]); switch(req) { case RQ_DISC: @@ -106,6 +135,10 @@ void handleRequest() default: break; } + //((MCP23S17*) &beba1)->writePortA(0x00); + + receive_pos = 0; + } int main() diff --git a/firmware/requests.cpp b/firmware/requests.cpp index 4d870e7..968a18d 100644 --- a/firmware/requests.cpp +++ b/firmware/requests.cpp @@ -5,21 +5,33 @@ void rqTestConnection() uint8_t dummy = ((USART*) &usart)->readByte(); ((USART*) &usart)->writeByte(USART::MSG_OK); ((USART*) &usart)->writeByte(dummy); + ((USART*) &usart)->write(); } void rqBoardInfo() { ((USART*) &usart)->writeByte(3); // Anzahl an Strings - + ((USART*) &usart)->write(); + + send_pos = 0; ((USART*) &usart)->writeStr(DATE, sizeof(DATE)); + ((USART*) &usart)->write(); + + send_pos = 0; ((USART*) &usart)->writeStr(TIME, sizeof(TIME)); + ((USART*) &usart)->write(); + + send_pos = 0; ((USART*) &usart)->writeStr(FSRC, sizeof(FSRC)); ((USART*) &usart)->writeByte(USART::MSG_OK); + ((USART*) &usart)->write(); } void rqTestIntConv() { - ((USART*) &usart)->writeInt(((USART*) &usart)->readInt() * 3); + uint16_t d = ((USART*) &usart)->readInt(); + ((USART*) &usart)->writeInt(d * 3); + ((USART*) &usart)->write(); } void rqDigitalWrite0() @@ -28,6 +40,7 @@ void rqDigitalWrite0() ((MCP23S17*) &beba0)->writePortA(port); ((USART*) &usart)->writeByte(USART::MSG_OK); + ((USART*) &usart)->write(); } void rqDigitalWrite1() @@ -36,18 +49,21 @@ void rqDigitalWrite1() ((MCP23S17*) &beba1)->writePortA(port); ((USART*) &usart)->writeByte(USART::MSG_OK); + ((USART*) &usart)->write(); } void rqDigitalRead0() { uint8_t port = ((MCP23S17*) &beba0)->readPortB(); ((USART*) &usart)->writeByte(port); + ((USART*) &usart)->write(); } void rqDigitalRead1() { uint8_t port = ((MCP23S17*) &beba1)->readPortB(); ((USART*) &usart)->writeByte(port); + ((USART*) &usart)->write(); } void rqAnalogWrite0() @@ -56,6 +72,7 @@ void rqAnalogWrite0() ((TLC5615*) &dac0)->setValue(value); ((USART*) &usart)->writeByte(USART::MSG_OK); + ((USART*) &usart)->write(); } void rqAnalogWrite1() @@ -64,6 +81,7 @@ void rqAnalogWrite1() ((TLC5615*) &dac1)->setValue(value); ((USART*) &usart)->writeByte(USART::MSG_OK); + ((USART*) &usart)->write(); } void rqAnalogRead() @@ -71,6 +89,7 @@ void rqAnalogRead() uint8_t channel = ((USART*) &usart)->readByte(); uint16_t value = ((ADU*) &adu)->getValue(channel); ((USART*) &usart)->writeInt(value); + ((USART*) &usart)->write(); } void rqAdcDacStroke() @@ -82,9 +101,10 @@ void rqAdcDacStroke() int16_t delta = static_cast(((USART*) &usart)->readInt()); int16_t count = static_cast(((USART*) &usart)->readInt()); - ((USART*) &usart)->writeByte(USART::MSG_OK); + //((USART*) &usart)->writeByte(USART::MSG_OK); count *= delta; + ((MCP23S17*) &beba1)->writePortA(0xFF); for(int16_t i = start; i < count; i += delta) { diff --git a/firmware/TLC5615.cpp b/firmware/tlc5615.cpp similarity index 100% rename from firmware/TLC5615.cpp rename to firmware/tlc5615.cpp diff --git a/firmware/TLC5615.h b/firmware/tlc5615.h similarity index 100% rename from firmware/TLC5615.h rename to firmware/tlc5615.h diff --git a/firmware/usart.cpp b/firmware/usart.cpp index dc78264..5e78bcc 100644 --- a/firmware/usart.cpp +++ b/firmware/usart.cpp @@ -4,7 +4,7 @@ void USART::init() { UCSR0A = _BV(U2X0); - UCSR0B = _BV(RXEN0) | _BV(TXEN0) | _BV(RXCIE0); + UCSR0B = _BV(RXEN0) | _BV(TXEN0) | _BV(RXCIE0) | _BV(TXCIE0); // Einstellen des Datenformats: 8 Datenbits, 1 Stoppbit UCSR0C = _BV(UCSZ00) |_BV(UCSZ01);// (1<>= 8; - while (!(UCSR0A & (1< #include + +extern volatile uint8_t receive_buffer[32]; +extern volatile uint8_t receive_pos; +extern volatile uint8_t send_buffer[32]; +extern volatile uint8_t send_pos; +extern volatile uint8_t send_len; + enum BlockSequence { IDLE = 0, @@ -24,10 +31,12 @@ public: void writeInt(uint16_t); void writeLong(uint32_t); void writeStr(const char*, uint8_t); + uint8_t writeBlock(uint8_t*, uint8_t); uint8_t readByte(void); uint16_t readInt(void); uint32_t readLong(void); + void write(void); void nextByte(uint8_t byte); void readBlock(uint8_t*, uint8_t);