Potrzebuję stworzyć wydajny protokół do komunikacji Atmegi 8 z PC oraz w drugą stronę po RS232. Wiem jak wysyłać pojedyncze bajty. Napisałem też pewien prosty protokół, poniżej kluczowe funkcje (send_packet, receive_packet)
Czyli w skrócie - protokół składa się z:
* 4 bajtów synchronizacyjnych (0xAA, 0x55, 0xAA, 0x55)
* bajtu określającego długość pakietu
* kolejnych bajtów pakietu
* bajt zawierający crc z bajtów pakietu oraz długości.
Po stronie PC napisałem program w C# do odbierania/wysyłania danych.
W nim są oczywiście funkcje send/receive napisane podobnie jak powyżej na AVR-rze.
Jaki jest więc problem? Ano taki, że często gubione są bajty (retries dość mocno wzrasta). Czy można jakoś temu zaradzić?
Kod: C / C++
Czyli w skrócie - protokół składa się z:
* 4 bajtów synchronizacyjnych (0xAA, 0x55, 0xAA, 0x55)
* bajtu określającego długość pakietu
* kolejnych bajtów pakietu
* bajt zawierający crc z bajtów pakietu oraz długości.
Po stronie PC napisałem program w C# do odbierania/wysyłania danych.
W nim są oczywiście funkcje send/receive napisane podobnie jak powyżej na AVR-rze.
Jaki jest więc problem? Ano taki, że często gubione są bajty (retries dość mocno wzrasta). Czy można jakoś temu zaradzić?