linux, go!

This commit is contained in:
Tristan Krause 2019-04-02 13:34:59 +02:00
parent 25f313fbf2
commit d5ca50f475
16 changed files with 414 additions and 273 deletions

View file

@ -50,7 +50,6 @@ void B15F::init()
if(!testConnection())
continue;
if(!testIntConv())
continue;
@ -136,12 +135,14 @@ std::vector<std::string> 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<char>(usart.readByte());
std::cout << str << std::endl;
info.push_back(str);
}

Binary file not shown.

Binary file not shown.

BIN
firmware/B15F.elf Normal file → Executable file

Binary file not shown.

View file

@ -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

View file

@ -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 $@

36
firmware/MakefileWindoofs Normal file
View file

@ -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 $@

View file

@ -1 +1 @@
<AVRWorkspace><IOSettings><CurrentRegisters/></IOSettings><part name="ATMEGA1284"/><Files><File00000 Name="E:\main.cpp" Position="289 130 1383 493" LineCol="57 2" State="Maximized"/><File00001 Name="E:\requests.h" Position="311 159 1405 522" LineCol="0 0" State="Maximized"/><File00002 Name="E:\requests.cpp" Position="263 71 1501 646" LineCol="97 14" State="Maximized"/><File00003 Name="E:\usart.cpp" Position="355 217 1449 580" LineCol="47 7" State="Maximized"/><File00004 Name="E:\global_vars.cpp" Position="377 246 1471 609" LineCol="0 0" State="Maximized"/><File00005 Name="E:\global_vars.h" Position="399 275 1493 638" LineCol="0 0" State="Maximized"/><File00006 Name="E:\adu.h" Position="267 101 1361 464" LineCol="14 15" State="Maximized"/><File00007 Name="E:\usart.h" Position="289 130 1387 497" LineCol="19 8" State="Maximized"/></Files></AVRWorkspace>
<AVRWorkspace><IOSettings><CurrentRegisters/></IOSettings><part name="ATMEGA1284"/><Files><File00000 Name="E:\firmware\main.cpp" Position="333 188 1427 551" LineCol="78 14" State="Maximized"/><File00001 Name="E:\firmware\requests.h" Position="355 217 1449 580" LineCol="10 37" State="Maximized"/><File00002 Name="E:\firmware\requests.cpp" Position="377 246 1471 609" LineCol="12 54" State="Maximized"/><File00003 Name="E:\firmware\usart.cpp" Position="399 275 1493 638" LineCol="45 32" State="Maximized"/><File00004 Name="E:\firmware\global_vars.cpp" Position="267 101 1361 464" LineCol="16 0" State="Maximized"/><File00005 Name="E:\firmware\global_vars.h" Position="263 71 1501 646" LineCol="21 33" State="Maximized"/><File00006 Name="E:\firmware\usart.h" Position="333 188 1431 555" LineCol="12 32" State="Maximized"/></Files></AVRWorkspace>

View file

@ -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;

View file

@ -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

View file

@ -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()

View file

@ -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<int16_t>(((USART*) &usart)->readInt());
int16_t count = static_cast<int16_t>(((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)
{

View file

@ -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<<URSEL0)|(1<<UCSZ10)|(1<<UCSZ00);
@ -29,27 +29,25 @@ void USART::clearInputBuffer()
return;
}
void USART::write(void)
{
send_len = send_pos;
send_pos = 0;
while (!(UCSR0A & (1<<UDRE0)));
UDR0 = send_buffer[send_pos++];
}
void USART::writeByte(uint8_t b)
{
while (!(UCSR0A & (1<<UDRE0)));
UDR0 = b;
//while(!(UCSR0A & _BV(TXC0)));
send_buffer[send_pos++] = b;
}
void USART::writeInt(uint16_t v)
{
while (!(UCSR0A & (1<<UDRE0)));
UDR0 = v & 0xFF;
writeByte(v & 0xFF);
v >>= 8;
while (!(UCSR0A & (1<<UDRE0)));
UDR0 = v & 0xFF;
//while(!(UCSR0A & _BV(TXC0)));
writeByte(v & 0xFF);
}
void USART::writeStr(const char* str, uint8_t len)
@ -83,8 +81,7 @@ uint8_t USART::writeBlock(uint8_t* ptr, uint8_t len)
uint8_t USART::readByte()
{
while (!(UCSR0A & (1<<RXC0)));
return UDR0;
return receive_buffer[receive_pos++];
}
uint16_t USART::readInt()

View file

@ -5,6 +5,13 @@
#include <util/delay.h>
#include <stdint.h>
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);