RS232 - transmisja proc z seri '51

Jan 13, 2005 13 Replies

Witam.



Nurtuje mnie problem transmisji po RS232. Otoz odbieram z portu z komputera dane, ale w pewnym momencie chce poinformowac kompa, zeby przestal, a potem dalej kontynuowal transmisje. Normalinie odbywa sie to poprzez linie RTS,CTS ale w procesorze nie ma takich lini, czyli wypadalo by 2 linie jednego z portow przeznaczyc do obslugi takich sygnalow? Czy mozna do tego wykorzystac dodatkowe linie ukladu MAX232?



Czy moze jest inny sposob powstrzymania komputera od nadawania kolejnych danych i po pewnym czasie wznowienia transmisji.


Rafal



Max ma 4 kana³y 2 (dla rx i tx) oraz 2 do innych celów. Podejrzewam, ¿e s± przewidziane w³a¶nie do tego. Mo¿esz te¿ z chwil± przepe³nienia bufora wysy³aæ do komputera jak±¶ komendê, ¿eby wstrzyma³ transmisjê oczywi¶cie pod warunkiem, ¿e masz wp³yw na program w pececie.

PC

U¿ytkownik "PC" <pch[WYTNIJ_TO]@poczta.onet.pl> napisa³ w wiadomo¶ci news:cs5i4i$teh$ snipped-for-privacy@opal.futuro.pl...

Ta komenda zwykle sie XOFF nazywa :))) ^S

Krzysiek Rudnik

na dobra sprawe jedna.

Po to one sa :-)

Protokol. XON/XOFF, ENQ/ACK, albo ambitniejszy..

J.

[...]

Uwaga: po wystawieniu niegotowości komputer może wysłać jeszcze kilka znaków przed zatrzymaniem transmisji i trzeba być na to przygotowanym (sprawdzone doświadczalnie).

U¿ytkownik "Adam Dybkowski" snipped-for-privacy@amwaw.edu.pl> napisa³ w wiadomo¶ci news:cs6vm4$94s$ snipped-for-privacy@atlantis.news.tpi.pl...

a czy jest jakas norma mowiaca ile to bedzie znakow ? bo ostatnio walczylem z tym problemem i nie bardzo wiem na co sie przygotowac

miejsca na zapas dalem 8 znakow ale nie wiem czy to wystarczy

nie chce dawac za duzo bo mam malo RAM'u

nie ma.

Nie starczy :-(

Pamietaj ze teraz na byle plycie glownej masz uart z 16B fifo. A tu jeszcze mamy obsluge programowa..

J.

UART z 16 bajtami FIFO tu dużo nie zmienia. Miałem do czynienia z prostym UARTem, który w FPGA wcisnął mój znajomy - przerywał transmisję od razu po dokończeniu aktualnie wysyłanego znaku. Po prostu twórcom sprzętu z peceta nie chciało się zbytnio nad tym popracować.

Myślisz, że gotowe UARTy mające 64 bajty FIFO (w każdą stronę), przerywają transmisję po opróżnieniu całego bufora? Nie - ale na kilka znaków "opóźnienia" trzeba być przygotowanym. Powiedzmy max 10.

Trudno miec im za zle - wsadzili dostepnego w tamtych czasach uarta.

Hm .. a jak one to robia ? Jesli sprzetowo - czemu az 10, i czy to nie powoduje klopotow z kompatybilnoscia ? Programowo .. eee - nie bardzo sobie wyobrazam ..

J.

Wsadzili wyjątkowo nieudanego intelowskiego 8250 z wbudowanym błędem - własnie nieprzerywania transmisji :-( Ten sam błąd powielono w 16450 i

- o zgrozo - w pierwszych wersjach 16550. Dopiero 16550A poprawnie obsługuje zarówno FIFO jak i wstrzymywanie transmisji.

Jakby od samego początku nie można było wstawić Z80SIO... Ale to byłoby wspomaganie konkurencji ;-)

W 16550A możesz sam ustalić moment żądania wstrzymania transmisji.

A to bardzo dziwne, bo próby prowadziłem z całkiem nowym komputerem, w którym UARTy są zintegrowane w chipsecie (płyta ASUSa + Athlon XP). I wysyłanie było zatrzymywane nie od razu, ale po kilku znakach. Jako że przy włączonym sprzętowym sterowaniu przepływem, UART samoczynnie reaguje na zabronienie transmisji z zewnątrz, procesor nie ma tu nic do gadania. A żeby się nic nie zgubiło, wynaleziono FIFO.

No ale COMy odchodzą w niepamięć i teraz w firmie męczymy się z USB.

Cale trzy bajty - to zaden blad :-) Ma, chyba do tej pory, inny blad - nie wiadomo kiedy sie konczy transmisja. I jak tu przelaczyc np RS485 na odbior ?

Ale to byla tylko karta rozszerzen - komu sie nie podoba mogl uzyc innej :-)

Nie bardzo bylo jak ..

IBM to nie intel. Poza tym uzyli do dyskietek uPD765 NECa, mimo ze oryginal nazywal sie Intel 8272 [o ile mnie skleroza ..]

A peryferia Z80 wstawic nie tak latwo - trzeba wygenerowac sporo sygnalow kompatybilnych na magistrali ..

Chyba musze doczytac ... a moze juz nie warto ?

J.

[...]

Nie wiem, czy warto - to zależy od Ciebie.

Albo porównujesz ka¿d± ramkê ze wzorcem który sobie ustalisz. Je¿eli sie zgadza ze wzorcem, znaczy ¿e bufor przepe³niony i procek ma przestaæ nadawaæ, je¿eli siê nie zgadza to nadaje dalej. W odwrotn± stronê tak samo mo¿na zrobiæ. To siê nazywa "metoda komunikatów" :D - mia³em ostatnio sprawdzian z tego hehehe :)

Join the Discussion

Have something to add? Share your thoughts — no account required.

Didn't find your answer?

Ask the community — no account required