logo elektroda
logo elektroda
X
logo elektroda
REKLAMA
REKLAMA
Adblock/uBlockOrigin/AdGuard mogą powodować znikanie niektórych postów z powodu nowej reguły.

UART Mega88 i attiny2313 - komunikacja AVR-ów

konstruktor_123456 10 Sty 2012 14:12 1353 2
REKLAMA
  • #1 10376629
    konstruktor_123456
    Poziom 14  
    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.
    Kod: text
    Zaloguj się, aby zobaczyć kod
  • REKLAMA
  • #2 10380263
    FastProject
    Poziom 28  
    Nie liczyłem ile czasu zajmuje wysłanie tych danych Dane_wys, policz ile to będzie ms i może w tym leży problem, że jest to dłużej jak 20ms.

    Dodaj też bufory wejściowe dla obu procesorów i zobacz jak to chodzi.
  • #3 10380938
    Konto nie istnieje
    Poziom 1  
REKLAMA