Witam, od wczoraj walczę z moją implementacją protokołu modbus. Procesor to Atmega16, realizacja ASCII i baud 9600. Mój problem dotyczy czasu zwłoki w odpowiedzi. Mam następujący kod:
main.c:
hexutils.c:
modbus.c:
Problem dotyczy tego, że posiadam znaczną zwłokę w odpowiedzi od slave'a. Korzystam z Bray terminal który generalnie jest dość szybki. Chodzi mi o moment kiedy wszystko zostanie odebrane i chcę wysłać 'OK' (wiem niezgodność typów itd, ale nawet chcąc wyświetlić informację na LCD że wszystko jest poprawnie trwa to za długo na płynną pracę - ok. 1s.) Czy winę za stan rzeczy ponosi sprawdzanie LRC, czy ta konwersja hex->ASCII i vice versa? Czy to tak drastycznie spowalnia? Przecież to tylko operacje bitowe i sumy na małych tablicach.
PS. Wywaliłem nawet funkcje LRC, też jest opóźnienie. Urządzenia mają pracować szybko i mieć krótki czas na reakcję, co jest nie tak? Jeśli pozwolę nadawać dalej, dane wychodzą na terminal w zastraszającym tempie
Pozdrawiam, prosząc o pomoc
main.c:
Kod: C / C++
hexutils.c:
Kod: C / C++
modbus.c:
Kod: C / C++
Problem dotyczy tego, że posiadam znaczną zwłokę w odpowiedzi od slave'a. Korzystam z Bray terminal który generalnie jest dość szybki. Chodzi mi o moment kiedy wszystko zostanie odebrane i chcę wysłać 'OK' (wiem niezgodność typów itd, ale nawet chcąc wyświetlić informację na LCD że wszystko jest poprawnie trwa to za długo na płynną pracę - ok. 1s.) Czy winę za stan rzeczy ponosi sprawdzanie LRC, czy ta konwersja hex->ASCII i vice versa? Czy to tak drastycznie spowalnia? Przecież to tylko operacje bitowe i sumy na małych tablicach.
PS. Wywaliłem nawet funkcje LRC, też jest opóźnienie. Urządzenia mają pracować szybko i mieć krótki czas na reakcję, co jest nie tak? Jeśli pozwolę nadawać dalej, dane wychodzą na terminal w zastraszającym tempie
Pozdrawiam, prosząc o pomoc
