Napisałem sobie obsługę protokołu modbus pod Atmege8 (taką prowizoryczną). W fazie projektowej symulowałem zapytanie od Mastera które było analizowane zaraz po wystartowaniu. uC reaguje prawidłowo tzn. Wysyła ramkę zgodną z oczekiwaniami. Problemy zaczęły się przy odbiorze danych po interfejsie UART. Otóż dane odbierane przez uC nie zgadzają się z tym co wysyłam z PC. Dla testów w przerwaniu natychmiast zwracam otrzymany bajt i zauważyłem, że pierwszy bajt zawsze jest poprawny. Każdy następny jest już uszkodzony, ponadto występuje zjawisko gubienia bajtów. Np. wysyłam 4 to zwraca 3, wysyłam 8 zwraca 6. Przykładowa ramka:
Błędy są konsekwentny, tzn. nie pojawiają się losowe dane lecz powtarzalne.
Próbowałem zmieniać konfigurację połączenia itp. ale raczej wtedy wszystko by się sypało a nie tylko odbiór na sprzężeniu.
Help
M: [05][03][00][00][00][02][C5][8F]
S: [05][20][00][02][71][FC]Błędy są konsekwentny, tzn. nie pojawiają się losowe dane lecz powtarzalne.
Kod: C / C++
Próbowałem zmieniać konfigurację połączenia itp. ale raczej wtedy wszystko by się sypało a nie tylko odbiór na sprzężeniu.
Help