Mam taki problem
Robię komunikacje dwóch AVR-ów. Pierwszy wysyła ciąg 30 bajtów drugi odbiera zawsze bezbłędnie z tym nie ma problemu. Gdy odbierze dane poprawnie od razu odsyła pierwszemu znak "T" dając pozwolenie na wysłanie nowych danych.
Zrobiłem sobie taką próbę że pierwszy wysyła dane co 20ms nie czekając na zgodę na nadawanie czyli tą zwrotną literkę "T". Chciałem tym sprawdzić jak szybko poradzi sobie z odbiorem ten drugi testy wyszły OK.
Problem pojawił się gdy dołożyłem kontrolę "czyli sprawdzam czy mam "T" odesłane" i dopiero wtedy wysyłam.
Nie wiem dlaczego ale ten pierwszy AVR często nie zauważa że już do niego wróciło "T" i może wysłać kolejne dane.Problem rozwiązuje dopiero wprowadzenie opóźnienia w AVR drugim i odesłanie "T" robię jakieś 30ms później.
Wyśle ze ten drugi AVR robi wszystko dobrze odbiera sprawdza i odsyła "T" a ten pierwszy też dużo do roboty nie ma bo wysyła i od razu przechodzi do sprawdzania czy dostał "T". Mam bufor wejsciowy w pierwszym wiec nie wiem jak on przegapia ten zwrotny znak "T".
Moja próba z wysyłaniem danych z pierwszego do drugiego co 20ms dowiodła że drugi robi wszystko dobrze.
Zamieszczam jeszcze program z pierwszego AVR-a.wysyłającego. Co może być powodem że on nie zauważa tego bajtu odpowiedzi ("T") jak przychodzi on zaraz po wysłaniu danych.
Robię komunikacje dwóch AVR-ów. Pierwszy wysyła ciąg 30 bajtów drugi odbiera zawsze bezbłędnie z tym nie ma problemu. Gdy odbierze dane poprawnie od razu odsyła pierwszemu znak "T" dając pozwolenie na wysłanie nowych danych.
Zrobiłem sobie taką próbę że pierwszy wysyła dane co 20ms nie czekając na zgodę na nadawanie czyli tą zwrotną literkę "T". Chciałem tym sprawdzić jak szybko poradzi sobie z odbiorem ten drugi testy wyszły OK.
Problem pojawił się gdy dołożyłem kontrolę "czyli sprawdzam czy mam "T" odesłane" i dopiero wtedy wysyłam.
Nie wiem dlaczego ale ten pierwszy AVR często nie zauważa że już do niego wróciło "T" i może wysłać kolejne dane.Problem rozwiązuje dopiero wprowadzenie opóźnienia w AVR drugim i odesłanie "T" robię jakieś 30ms później.
Wyśle ze ten drugi AVR robi wszystko dobrze odbiera sprawdza i odsyła "T" a ten pierwszy też dużo do roboty nie ma bo wysyła i od razu przechodzi do sprawdzania czy dostał "T". Mam bufor wejsciowy w pierwszym wiec nie wiem jak on przegapia ten zwrotny znak "T".
Moja próba z wysyłaniem danych z pierwszego do drugiego co 20ms dowiodła że drugi robi wszystko dobrze.
Zamieszczam jeszcze program z pierwszego AVR-a.wysyłającego. Co może być powodem że on nie zauważa tego bajtu odpowiedzi ("T") jak przychodzi on zaraz po wysłaniu danych.
Kod: text