Witam,
Komunikuje ze sobą dwa Uc:
Atmega8 - panel z wyświetlaczem i guzikami
Atmega32 - baza gdzie mam wszystkie czujniki
Kwarce 14.746 Mhz w obydwu przypadkach
Transmisja dwukierunkowa half-duplex przez rs-485.
W uproszczeniu panel z wyświetlaczem ma za zadanie wyświetlać wszystko co mu wyśle baza, czyli 21 znaków x 8 lini = 168 bajtów.
Wysyłanie realizuję tak:
Niestety nie wiem dlaczego ale bez tego opóźnienia nie działa, tz może być większe ale nie mniejsze.
Skutkuje to tym że wyświetlacz zapełnia mi się zdecydowanie za wolno
168 bajtów , każde opóźnione o 2ms a to daje mi prawie 350ms.
Odbiór w panelu z wyświetlaczem jest na przerwaniu:
a potem w pętli głównej lata sobie:
Wydawało mi się że może zbyt wcześnie zmieniałem kierunek transmisji na odbieranie. Przeniosłem zmianę kierunku do przerwania które wykonuje się już po udanej transmisji (USART_TXC_vect) a bez tego delaja nadal nie dziala...
Co to może być?
Komunikuje ze sobą dwa Uc:
Atmega8 - panel z wyświetlaczem i guzikami
Atmega32 - baza gdzie mam wszystkie czujniki
Kwarce 14.746 Mhz w obydwu przypadkach
Transmisja dwukierunkowa half-duplex przez rs-485.
W uproszczeniu panel z wyświetlaczem ma za zadanie wyświetlać wszystko co mu wyśle baza, czyli 21 znaków x 8 lini = 168 bajtów.
Wysyłanie realizuję tak:
Kod: C / C++
Niestety nie wiem dlaczego ale bez tego opóźnienia nie działa, tz może być większe ale nie mniejsze.
Skutkuje to tym że wyświetlacz zapełnia mi się zdecydowanie za wolno
168 bajtów , każde opóźnione o 2ms a to daje mi prawie 350ms.
Odbiór w panelu z wyświetlaczem jest na przerwaniu:
Kod: C / C++
a potem w pętli głównej lata sobie:
Kod: C / C++
Wydawało mi się że może zbyt wcześnie zmieniałem kierunek transmisji na odbieranie. Przeniosłem zmianę kierunku do przerwania które wykonuje się już po udanej transmisji (USART_TXC_vect) a bez tego delaja nadal nie dziala...
Co to może być?