Witam,
od jakiegoś czasu opracowuję urządzenia komunikujące się po RS485 w protokole PELCO-D. Urządzenia komunikują się albo jedno albo dwukierunkowo-tutaj to nie istotne...
Wszystko działa wyśmienicie i komunikuje się bez najmniejszego błędu gdy nadaje jedno z urządzeń. Urządzenie to nadajnik i odbiornik.
Gdy nadają 2 nadajniki jednocześnie (jednocześnie zwieram wejścia) i jednocześnie wysłana jest ramka, to wszystkie urządzenia (zarówno nadajniki i odbiorniki) blokują się gdzieś w programie. Podejrzewam, że zwis następuje w podprogramie odbioru ramki.
Poniżej wysyłana ramka:
Odbieranie ramki:
Odczyt danych z bufora UARTA Atmegi88 występuje po warunku:
czyli po odebraniu całej ramki 7 bajtów(znaków).
Wcześniej sprawdzałem warunkiem :
Też działało dobrze.
Także odczyt z bufora czy to za pomocą Inputbin czy Inkey nie wpływa na pracę.
Proszę o wskazówki, co może być powodem blokowania się programu gdy jednocześnie próbuje wysłać 2 ramki...oczywiście, że powstają błędy w transmisji ale jak ich się ustrzec lub uodpornić urządzenia na takie sytuacje?
Zastanawiam się czy czasami układy które wykorzystuje do RS485(MAX485) po jednoczesnym włączeniu nadajników nie sieją bzdur na linii RS484 która powoduje może zawieszenie UARTa atmegi, a po chwili namysłu raczej skłaniałbym się ku tej opcji, a więc proszę o jakieś wskazówki lub wytłumaczenie problemu i sposobu rozwiązania, którego aktualnie nie widzę.
Dla chętnych pomóc udostępnię większe fragmenty kodu.
Transmisja prędkością 2400baud lub 9600baud.
od jakiegoś czasu opracowuję urządzenia komunikujące się po RS485 w protokole PELCO-D. Urządzenia komunikują się albo jedno albo dwukierunkowo-tutaj to nie istotne...
Wszystko działa wyśmienicie i komunikuje się bez najmniejszego błędu gdy nadaje jedno z urządzeń. Urządzenie to nadajnik i odbiornik.
Gdy nadają 2 nadajniki jednocześnie (jednocześnie zwieram wejścia) i jednocześnie wysłana jest ramka, to wszystkie urządzenia (zarówno nadajniki i odbiorniki) blokują się gdzieś w programie. Podejrzewam, że zwis następuje w podprogramie odbioru ramki.
Poniżej wysyłana ramka:
Kod: text
Odbieranie ramki:
Kod: text
Odczyt danych z bufora UARTA Atmegi88 występuje po warunku:
Kod: text
czyli po odebraniu całej ramki 7 bajtów(znaków).
Wcześniej sprawdzałem warunkiem :
Kod: text
Też działało dobrze.
Także odczyt z bufora czy to za pomocą Inputbin czy Inkey nie wpływa na pracę.
Proszę o wskazówki, co może być powodem blokowania się programu gdy jednocześnie próbuje wysłać 2 ramki...oczywiście, że powstają błędy w transmisji ale jak ich się ustrzec lub uodpornić urządzenia na takie sytuacje?
Zastanawiam się czy czasami układy które wykorzystuje do RS485(MAX485) po jednoczesnym włączeniu nadajników nie sieją bzdur na linii RS484 która powoduje może zawieszenie UARTa atmegi, a po chwili namysłu raczej skłaniałbym się ku tej opcji, a więc proszę o jakieś wskazówki lub wytłumaczenie problemu i sposobu rozwiązania, którego aktualnie nie widzę.
Dla chętnych pomóc udostępnię większe fragmenty kodu.
Transmisja prędkością 2400baud lub 9600baud.