Elektroda.pl
Elektroda.pl
X
Proszę, dodaj wyjątek dla www.elektroda.pl do Adblock.
Dzięki temu, że oglądasz reklamy, wspierasz portal i użytkowników.

Xon/Xoff ??? :(

22 Mar 2004 15:45 4211 7
  • Poziom 12  
    Powtarzam się - wiem , sorry.
    Muszę zrobić urządzonko komunikujące się z drugim przy pomocy RS232 z tym że musi zawierać sterowanie przepływem Xon/Xoff . Jest możliwe wykonanie tego na 8052? Czy to w ogóle idzie zrobić na pojedyńczym UARTcie? Czy widział kto procedurkę takiej komunikacji w assemblerku lub Baskomie ?????????
    Baaardzo proszę o wszelkie info
    Pozdrawiam
  • Specjalista PLD
    Samej procedurki nie widzialem, ale sterowanie przeplywem polega na tym, ze implementujemy bufor cyrkularny o wielkosci n.p. 16 Bajtow, wysylamy do PC sygnal Xon, i PC przesyla nam strumien danych. Zajetosc naszego bufora jest prawie calkowita, wiec wysylamy do PC sygnal Xoff, a ten zaprzestaje wysylac bajty do nas. Gdy oproznimy troche bufora, mozemy wznowic przyjmowanie danych wiec wysylamy znow sygnal Xon do PC, i tak dalej.
    Trzeba tylko uwazac by sygnal Xoff wyslac na tyle wczesnie by nie przepelnic bufora odbiorczego, bo wtedy czolo bufora cyrkularnego wlezie na ogon i zamaze nieobrobione jeszcze dane.

    Wynika stad jasno, ze wystarczy kontrolowac cyklicznie zapelnienie bufora i przy okreslonych stanach jego zajetosci wysylac Xon lub Xoff do PC.

    Pozdrawiam, Y E G O

    PS. Przepraszam jesli pisze truizmy, ale jesli juz to znasz to moze innym sie przyda :) .
  • Poziom 12  
    Wielkie dzięki!
    Przynajmniej wiem już o co chodzi choć ze zrobieniem tego będę miał chyba niezłe "schody"
  • Poziom 34  
    co do buforu to ja sie zbytnio niemęczyłem w pascalu.. stworzyłem sobie tablice, oraz 2 zmienne: jedna wskazująca na początek bloku (miejsce zżucania danych), oraz jedna wskazująca na koniec bloku (wskazuje kolejny odczytywany bajt).. podczas odczytu bądź zapisu następuje inkrementacja wskaźnika, jeśli wskaźnik wskazuje na bajt poza buforem (bufor 32 bajty, wskaźnik wskazuje na 33 bajt) następuje jego programowe przepełnienie poprzez wyzerowanie, w ten sposób zamknołem blok tworząc "okrąg".. może podrzucić kod do analizy.
  • Poziom 12  
    Jeszcze raz bardzo wam dziękuję!!! Domyślam się że pisałeś w Pascalu na PC, więc niezbyt mi się przyda ta procedurka, ale przybliżyliście mi zasadę działania tego CZEGOŚ , ja to muszę wsadzić w 8052 i jeszcze rozpracować kwestie elektroniczno-kabelkowe. Jeśli natkniecie się w necie na jakieś przykłady , schemety, procedurki - będę b. wdzięczny.
    Pozdrawiam i dziękuję!
  • Poziom 21  
    Jeżeli programujesz w C to ściągnij wersję demo kompilatora KEIL'a i tam w przykładach jest chyba projekt o nazwie trafic. W nimże wszystko co potrzeba- bufor kołowy, protokół Xon/Xoff i parę innych szczegółów. Było to co prawda pod mini system czasu rzeczywistego ale wiele z tego da sie wykorzystać. Powodzenia.
  • Specjalista PLD
    :arrow: Kwiatek X ,
    Jesli chodzi o hardware, to bedzie Ci potrzebny jedynie bufor dla linii TxD i RxD procesora. Gotowy uklad z takimi buforami to n.p. MAX232 firmy Maxim - powszechnie stosowany. Jest on zasilany pojedynczym napieciem +5V, wiec problemu raczej z tym nie bedzie. Jako ze transmisja ma byc typu Xon/Xoff nie bedziesz potrzebowal dodatkowych linii handshake'u, totez pojedynczy uklad MAX232 zupelnie Ci wystarczy. Sa tez inne uklady dopasowujace poziomy sygnalu TTL <--> RS232, ale sa bardziej komponentochlonne niz jedna kostka i cztery kondensatory. Caly UART z przerwaniami i obsluga podstawowych typow bledow transmisji jest wbudowany w chyba kazda kostke typu '51, wiec tu tylko soft bedziesz musial uskutecznic :) .
    Powodzenia, Y E G O
  • Poziom 12  
    :D Wielkie Dzięki !!!!!!!!!!!!!!!