diff --git a/B15F.elf b/B15F.elf index 01e941a..ef11c2d 100644 Binary files a/B15F.elf and b/B15F.elf differ diff --git a/B15F.hex b/B15F.hex index 8e5321f..a51f56c 100644 --- a/B15F.hex +++ b/B15F.hex @@ -8,14 +8,14 @@ :100070000C9489000C9489000C9489000C948900DC :100080000C9489000C9489000C948900F800FB0002 :10009000FE00EF000101040107010A010D0110013A -:1000A000F5001301AA05A705A4056105A1059E0594 -:1000B0009B059805950592058F05AD05B0051124A2 +:1000A000F5001301D505D205CF058C05CC05C90592 +:1000B000C605C305C005BD05BA05D805DB05112475 :1000C0001FBECFEFD0E4DEBFCDBF11E0A0E0B1E0B6 -:1000D000E4ECFBE000E00BBF02C007900D92A232FF +:1000D000EAE1FCE000E00BBF02C007900D92A23203 :1000E000B107D9F721E0A2E2B1E001C01D92A4332B :1000F000B207E1F710E0CFE5D0E004C02197FE01A0 -:100100000E94D705CE35D107C9F70E944A050C9445 -:10011000E0050C94000083E391E00E94170160E089 +:100100000E940206CE35D107C9F70E9475050C94EE +:100110000B060C94000083E391E00E94170160E05D :1001200080E391E00E945A016FEF80E391E00E942A :100130007B0160E08DE291E00E945A016FEF8DE259 :1001400091E00E947B016FEF8AE291E00E947B01C7 @@ -24,15 +24,15 @@ :10017000A895809160008861809360001092600073 :100180000FBE0895CF930FB6F894A89580916000A4 :10019000886180936000109260000FBE6FEF8DE267 -:1001A00091E00E949C0182E291E00E940E04C82F1F +:1001A00091E00E949C0182E291E00E94F303C82F3B :1001B00060E08DE291E00E949C0199E288E10FB637 :1001C000F894A895809360000FBE90936000A89566 :1001D0008C2F90E0FC013197EC30F10510F0CF91BD -:1001E0000895EA5BFF4F0C94D705CF910C94C60499 -:1001F000CF910C942604CF910C943704CF910C949A -:100200005B04CF910C946804CF910C947B04CF9144 -:100210000C948E04CF910C949704CF910C94A0046D -:10022000CF910C94B304CF910C94D404089584B16D +:1001E0000895EA5BFF4F0C940206CF910C94010531 +:1001F000CF910C947A04CF910C948B04CF910C94F2 +:10020000AA04CF910C94B704CF910C94C504CF915C +:100210000C94D304CF910C94DC04CF910C94E5049E +:10022000CF910C94F304CF910C940F05089584B1F1 :10023000806B84B926988AB18C618AB980E58CBDBF :1002400081E08DBD8BB1837E8BB95A9A5B9A5C9AA3 :1002500008958BB1837E8BB98BB160FD10C090E0A7 @@ -104,90 +104,95 @@ :100670000E940102682F8DE291E00E949C01D9CF77 :100680000E9472020E949B020E94C4020E94E90220 :100690000E940E0382E08093C00088E18093C10035 -:1006A00086E08093C2001092C50080E48093C4006D -:1006B00008958091C00085FFFCCF6093C6008091B3 -:1006C000C00086FFFCCF08958091C00085FFFCCF5D -:1006D0006093C6008091C00085FFFCCF7093C60078 -:1006E0008091C00086FFFCCF87E893E10197F1F786 -:1006F00000C0000008958091C00085FFFCCF4093AA -:10070000C6008091C00086FFFCCFFB019B01240F37 -:10071000311DE217F30761F091918091C00085FFD0 -:10072000FCCF9093C6008091C00086FFFCCFF1CF34 -:1007300008958091C00085FFFCCF4093C600809152 -:10074000C00086FFFCCF5FEF540F442309F464C060 -:10075000FB0120E041E9DF0190818091C00085FF2D -:10076000FCCF9093C6008091C00086FFFCCF3196ED -:100770009C91822F892780FD842790E0959587950D -:10078000282F80FF02C0242F2827822F90E09595E4 -:100790008795282F80FF02C0242F282730E0359529 -:1007A0002795822F20FF02C0842F822790E0959505 -:1007B0008795282F80FF02C0242F282730E0359509 -:1007C0002795822F20FF02C0842F822790E09595E5 -:1007D0008795282F80FF02C0242F282730E03595E9 -:1007E0002795822F20FF02C0842F8227282F26954D -:1007F000515008F0B0CF8091C00085FFFCCF20930E -:10080000C6008091C00086FFFCCF8091C00087FFAA -:10081000FCCF8091C600089520E0EDCF8091C0000C -:1008200087FFFCCF8091C60008958091C00087FFAC -:10083000FCCF2091C60030E09091C00097FFFCCF24 -:100840008091C600A901582BCA010895CF9382E276 -:1008500091E00E940E04C82F6FEF82E291E00E94A7 -:1008600059036C2F82E291E0CF910C94590363E01D -:1008700082E291E00E9459034CE066E171E082E27D -:1008800091E00E947B0349E06DE071E082E291E03B -:100890000E947B034CE061E071E082E291E00E9403 -:1008A0007B0380910001811101C008956FEF82E206 -:1008B00091E00C94590382E291E00E941504BC017E -:1008C000660F771F680F791F82E291E00C94640332 -:1008D00082E291E00E940E04682F80E391E00E9482 -:1008E0009C0180910001811101C008956FEF82E2A7 -:1008F00091E00C94590382E291E00E940E04682F6B -:100900008DE291E00E949C0180910001811101C063 -:1009100008956FEF82E291E00C94590380E391E037 -:100920000E940102682F82E291E00C9459038DE24B -:1009300091E00E940102682F82E291E00C94590339 -:1009400082E291E00E941504BC0187E291E00E94DE -:10095000290280910001811101C008956FEF82E2A8 -:1009600091E00C94590382E291E00E941504BC01CD -:1009700084E291E00E94290280910001811101C06E -:1009800008956FEF82E291E00C94590382E291E0C6 -:100990000E940E04682F83E291E00E945802BC017D -:1009A00082E291E00C9464038F929F92AF92BF9287 -:1009B000CF92DF92EF92FF920F931F93CF93DF932B -:1009C00000D000D0CDB7DEB782E291E00E940E04E5 -:1009D000B82E82E291E00E940E04A82E82E291E0FD -:1009E0000E9415048C0182E291E00E9415047C01B2 -:1009F00082E291E00E9415044C016FEF82E291E0E7 -:100A00000E945903E89C6001E99CD00CF89CD00C32 -:100A100011240C151D05C4F5B80187E291E00E9470 -:100A20002902A8956B2D83E291E00E9458029A83D7 -:100A300089836A2D83E291E00E9458029C838B8314 -:100A400002C08F3FE1F0A89544E0BE016F5F7F4F89 -:100A500082E291E00E9499038111F3CF0F900F90F1 -:100A60000F900F90DF91CF911F910F91FF90EF901A -:100A7000DF90CF90BF90AF909F908F9008950E0D14 -:100A80001F1D0C151D0544F26FEF82E291E00E94DC -:100A90005903E4CF0E948B006FEF80E391E00E9446 -:100AA0009C012FE78AE196E0215080409040E1F7D9 -:100AB00000C0000060E080E391E00E949C0118E12A -:100AC000D9E20FB6F894A895809160008861809370 -:100AD0006000109260000FBE6FEF8DE291E00E9407 -:100AE0009C0182E291E00E940E04C82F60E08DE23A -:100AF00091E00E949C010FB6F894A89510936000B5 -:100B00000FBED0936000A8958C2F90E0FC01319728 -:100B1000EC30F105B0F6EE5AFF4F0C94D7050E9469 -:100B2000C604CFCF0E94B304CCCF0E94A004C9CF8B -:100B30000E949704C6CF0E948E04C3CF0E947B04FC -:100B4000C0CF0E946804BDCF0E945B04BACF0E9450 -:100B50003704B7CF0E942604B4CF0E94D404B1CF8B -:100B600083E391E00E94160142E063E371E080E3D9 -:100B700091E00E94550143E063E371E08DE291E072 -:100B80000E94550145E063E371E08AE291E00E9432 -:100B9000550140E063E371E087E291E00E942402A6 -:100BA00041E063E371E084E291E00C942402EE0FF3 -:100BB000FF1F0024001C0BBE0790F691E02D099446 -:040BC000F894FFCFD7 -:100BC40001626F617264696E666F2E680030383A34 -:100BD40033303A3434004D617220323920323031AE -:020BE4003900D6 +:1006A00086E08093C2001092C50084E18093C4006C +:1006B000089502C08091C6008091C00087FDFACFE6 +:1006C00008958091C00085FFFCCF6093C600089517 +:1006D0008091C00085FFFCCF6093C6008091C00070 +:1006E00085FFFCCF7093C60008958091C00085FF00 +:1006F000FCCF4093C6009FEF940F442351F0FB01C1 +:1007000021918091C00085FFFCCF2093C6009150BD +:10071000B8F708958091C00085FFFCCF4093C600D4 +:100720005FEF540F442309F45CC0FB0120E041E972 +:10073000DF0190818091C00085FFFCCF9093C600BF +:1007400031969C91822F892780FD842790E0959592 +:100750008795282F80FF02C0242F2827822F90E022 +:1007600095958795282F80FF02C0242F282730E0F9 +:1007700035952795822F20FF02C0842F822790E095 +:1007800095958795282F80FF02C0242F282730E0D9 +:1007900035952795822F20FF02C0842F822790E075 +:1007A00095958795282F80FF02C0242F282730E0B9 +:1007B00035952795822F20FF02C0842F8227282F6E +:1007C0002695515008F0B4CF8091C00085FFFCCF32 +:1007D0002093C6008091C00087FFFCCF8091C600A7 +:1007E000089520E0F1CF8091C00087FFFCCF809179 +:1007F000C60008958091C00087FFFCCF2091C600FD +:1008000030E09091C00097FFFCCF8091C600A90115 +:10081000582BCA010895242F30E08091C00087FF33 +:10082000FCCFE091C60040E090E051E9620F731FF9 +:100830008091C00087FFFCCFF091C6008F2F8927E1 +:1008400080FD852790E095958795282F80FF02C031 +:10085000252F2827822F90E095958795282F80FFB8 +:1008600002C0252F282730E035952795822F20FFBD +:1008700002C0852F822790E095958795282F80FFCD +:1008800002C0252F282730E035952795822F20FF9D +:1008900002C0852F822790E095958795282F80FFAD +:1008A00002C0252F282730E035952795822F20FF7D +:1008B00002C0852F8227982F96954E17B0F04F5F74 +:1008C000E41708F0B5CF911108C08091C00085FFF2 +:1008D000FCCF8FEF8093C60008958091C00085FF04 +:1008E000FCCF8EEF8093C6000895DB01A40FB11DED +:1008F000FC93E5CFCF9382E291E00E94F303C82FEF +:100900006FEF82E291E00E9461036C2F82E291E03E +:10091000CF910C94610363E082E291E00E94610355 +:100920004CE065E171E082E291E00E94750349E0EC +:100930006CE071E082E291E00E9475034CE060E0BF +:1009400071E082E291E00E9475036FEF82E291E034 +:100950000C94610382E291E00E94FA03BC01660FED +:10096000771F680F791F82E291E00C94680382E29E +:1009700091E00E94F303682F80E391E00E949C01C4 +:100980006FEF82E291E00C94610382E291E00E94B9 +:10099000F303682F8DE291E00E949C016FEF82E2E9 +:1009A00091E00C94610380E391E00E940102682FC2 +:1009B00082E291E00C9461038DE291E00E940102D9 +:1009C000682F82E291E00C94610382E291E00E9440 +:1009D000FA03BC0187E291E00E9429026FEF82E2F4 +:1009E00091E00C94610382E291E00E94FA03BC0161 +:1009F00084E291E00E9429026FEF82E291E00C9480 +:100A0000610382E291E00E94F303682F83E291E0A8 +:100A10000E945802BC0182E291E00C9468038F921C +:100A20009F92AF92BF92CF92DF92EF92FF920F937D +:100A30001F93CF93DF9382E291E00E94F303882E0D +:100A400082E291E00E94F303982E82E291E00E94FC +:100A5000FA03EC0182E291E00E94FA035C0182E277 +:100A600091E00E94FA038C016FEF82E291E00E9414 +:100A70006103A09E6001A19ED00CB09ED00C1124F9 +:100A8000CC15DD050CF5BE0187E291E00E9429023C +:100A9000A895682D83E291E00E9458027C01692D9F +:100AA00083E291E00E9458028C01B70182E291E05A +:100AB0000E946803B80182E291E00E946803CA0DB7 +:100AC000DB1DCC15DD05FCF26FEF82E291E0DF91DA +:100AD000CF911F910F91FF90EF90DF90CF90BF903B +:100AE000AF909F908F900C9461030E948B006FEFEA +:100AF00080E391E00E949C012FE78AE196E021507B +:100B000080409040E1F700C0000060E080E391E0A9 +:100B10000E949C0118E1D9E20FB6F894A895809143 +:100B20006000886180936000109260000FBE6FEFDC +:100B30008DE291E00E949C0182E291E00E94F30329 +:100B4000C82F60E08DE291E00E949C010FB6F894FE +:100B5000A895109360000FBED0936000A8958C2FCD +:100B600090E0FC013197EC30F105B0F6EE5AFF4F02 +:100B70000C9402060E940105CFCF0E94F304CCCF53 +:100B80000E94E504C9CF0E94DC04C6CF0E94D304B2 +:100B9000C3CF0E94C504C0CF0E94B704BDCF0E943E +:100BA000AA04BACF0E948B04B7CF0E947A04B4CFB4 +:100BB0000E940F05B1CF83E391E00E94160142E04D +:100BC00063E371E080E391E00E94550143E063E359 +:100BD00071E08DE291E00E94550145E063E371E030 +:100BE0008AE291E00E94550140E063E371E087E210 +:100BF00091E00E94240241E063E371E084E291E02D +:100C00000C942402EE0FFF1F0024001C0BBE079063 +:0A0C1000F691E02D0994F894FFCF4F +:100C1A00626F617264696E666F2E680031333A33AF +:100C2A00323A3430004D6172203239203230313953 +:020C3A000000B8 :00000001FF diff --git a/global_vars.cpp b/global_vars.cpp index 9b88db9..35b855c 100644 --- a/global_vars.cpp +++ b/global_vars.cpp @@ -9,4 +9,3 @@ TLC5615 dac1(spi, SPIADR::AA1); ADU adu; USART usart; -bool ACK_MODE = 1; diff --git a/global_vars.h b/global_vars.h index d6206c2..c7ecd0c 100644 --- a/global_vars.h +++ b/global_vars.h @@ -15,6 +15,4 @@ extern TLC5615 dac1; extern ADU adu; extern USART usart; -extern bool ACK_MODE; - #endif // GLOBAL_VARS_H diff --git a/requests.cpp b/requests.cpp index 3a83465..3ab761b 100644 --- a/requests.cpp +++ b/requests.cpp @@ -14,9 +14,7 @@ void rqBoardInfo() usart.writeStr(DATE, sizeof(DATE)); usart.writeStr(TIME, sizeof(TIME)); usart.writeStr(FSRC, sizeof(FSRC)); - - if(ACK_MODE) - usart.writeByte(USART::MSG_OK); + usart.writeByte(USART::MSG_OK); } void rqTestIntConv() @@ -29,8 +27,7 @@ void rqDigitalWrite0() uint8_t port = usart.readByte(); beba0.writePortA(port); - if(ACK_MODE) - usart.writeByte(USART::MSG_OK); + usart.writeByte(USART::MSG_OK); } void rqDigitalWrite1() @@ -38,8 +35,7 @@ void rqDigitalWrite1() uint8_t port = usart.readByte(); beba1.writePortA(port); - if(ACK_MODE) - usart.writeByte(USART::MSG_OK); + usart.writeByte(USART::MSG_OK); } void rqDigitalRead0() @@ -59,8 +55,7 @@ void rqAnalogWrite0() uint16_t value = usart.readInt(); dac0.setValue(value); - if(ACK_MODE) - usart.writeByte(USART::MSG_OK); + usart.writeByte(USART::MSG_OK); } void rqAnalogWrite1() @@ -68,8 +63,7 @@ void rqAnalogWrite1() uint16_t value = usart.readInt(); dac1.setValue(value); - if(ACK_MODE) - usart.writeByte(USART::MSG_OK); + usart.writeByte(USART::MSG_OK); } void rqAnalogRead() @@ -97,7 +91,12 @@ void rqAdcDacStroke() dac0.setValue(i); wdt_reset(); - union doubleword + uint16_t val_a = adu.getValue(channel_a); + uint16_t val_b = adu.getValue(channel_b); + usart.writeInt(val_a); + usart.writeInt(val_b); + + /*union doubleword { uint16_t word[2]; uint8_t byte[4]; @@ -115,7 +114,7 @@ void rqAdcDacStroke() if(ret == 0) return; - } while(ret != USART::MSG_OK); + } while(ret != USART::MSG_OK);*/ } usart.writeByte(USART::MSG_OK); diff --git a/usart.cpp b/usart.cpp index 324e080..57d8f15 100644 --- a/usart.cpp +++ b/usart.cpp @@ -15,12 +15,22 @@ void USART::init() } +void USART::flush() +{ + uint8_t dummy; + while (UCSR0A & (1<>= 1; + } + + if(k < len) + ptr[k] = next; + } + + if(crc == 0) + { + writeByte(MSG_OK); + return; + } + + writeByte(MSG_FAIL); +} diff --git a/usart.h b/usart.h index 81a43c1..ade6b77 100644 --- a/usart.h +++ b/usart.h @@ -5,13 +5,14 @@ #include #include -constexpr uint32_t BAUDRATE = 38400; // 38400 +constexpr uint32_t BAUDRATE = 115200; // 38400 constexpr uint8_t CRC7_POLY = 0x91; class USART { public: void init(void); + void flush(void); void writeByte(uint8_t); void writeInt(uint16_t); @@ -21,6 +22,7 @@ public: uint8_t readByte(void); uint16_t readInt(void); uint32_t readLong(void); + void readBlock(uint8_t*, uint8_t); constexpr static uint8_t MSG_OK = 0xFF; constexpr static uint8_t MSG_FAIL = 0xFE;