From 949591a50d73d5f5e984aba8a79d3c41453d140d Mon Sep 17 00:00:00 2001 From: Tristan Krause Date: Mon, 1 Apr 2019 08:37:00 +0200 Subject: [PATCH] block senden stabil --- B15F.elf | Bin 13936 -> 13840 bytes B15F.hex | 388 +++++++++++++++++++++++++++--------------------------- main.cpp | 8 ++ usart.cpp | 50 ++++--- usart.h | 1 + 5 files changed, 229 insertions(+), 218 deletions(-) diff --git a/B15F.elf b/B15F.elf index 8a2740a9cae6e06fae14d60d80e72ebece6cc607..25d6b3405875552c593defcca3f296197b19e72f 100644 GIT binary patch delta 3749 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 MAX_BLOCK_SIZE) + len = 0; - crc ^= next; - for (uint8_t i = 0; i < 8; i++) + for(uint8_t k = 0; k <= len; k++) // len + 1 Durchgänge (+ crc) { - if (crc & 1) - crc ^= CRC7_POLY; - crc >>= 1; + uint8_t next = readByte(); + + crc ^= next; + for (uint8_t i = 0; i < 8; i++) + { + if (crc & 1) + crc ^= CRC7_POLY; + crc >>= 1; + } + + if(k < len) + ptr[k] = next; } - if(k < len) - ptr[k] = next; + + flush(); // leere Eingangspuffer + + writeByte(crc == 0 ? MSG_OK : MSG_FAIL); } - - if(crc == 0) - { - writeByte(MSG_OK); - return; - } - - writeByte(MSG_FAIL); + while(crc != 0); } diff --git a/usart.h b/usart.h index ade6b77..f427f3b 100644 --- a/usart.h +++ b/usart.h @@ -7,6 +7,7 @@ constexpr uint32_t BAUDRATE = 115200; // 38400 constexpr uint8_t CRC7_POLY = 0x91; +constexpr uint8_t MAX_BLOCK_SIZE = 16; class USART {