LPT - wprowadzanie danych do portu

Nov 12, 2006 7 Replies

Witam grupê! Ostatnio du¿o studiowa³em grup, czyta³em na temat LPT i jego sterowania, zaowocowa³o to napisaniem programu dla XP, wysy³aj±cego dane na wyj¶cie. Docelowy mój projekt, to obs³uga urz±dzenia nie tylko w kierunku wysy³ania do niego danych, ale tak¿e odbioru sygna³ów wysy³anych przez urz±dzenie, st±d moje pytanie o kwestie realizacji technicznej:



W jaki sposób, fizycznie, urz±dzenie ma ustawiaæ bity ? Wiem, ¿e trzeba podaæ napiêcie logiczne na dan± nó¿kê, ale sk±d to napiêcie bezpiecznie doprowadziæ ? Chcia³bym, aby by³a separacja galwaniczna miêdzy komputerem, a urz±dzeniem. W zwi±zku z tym, nie ma problemu z wysy³aniem sygna³u - po prostu wysterowujê transoptor, ten z kolei albo tranzystor, albo przeka¼nik. Natomiast jak wprowadziæ w ten sposób dane w drug± stronê (do komputera) ?



Zastanawia mnie te¿ kwestia, czy gdyby podaæ napiêcie na który¶ z pinów np. logiczne "1", a nastêpnie wysterowaæ z komputera ten sam pin i nadaæ mu logiczne "0", to czy takie zabiegi s± dla p³yty g³ównej bezpieczne ? - chodzi mi tu o realizacjê dwukierunkowej transmisji, czy je¶li dany bit ma pe³niæ rolê bitu wej¶ciowego, to trzeba to deklarowaæ w jaki¶ posób ?



Z góry dziêkujê za wszelkie wskazówki.



Dane do komputera wprowadza siê tak, ¿e na porcie ustawiasz 1 i zwierasz przez rezystancjê do masy a nie podajesz 1 na port... zreszta w prockach jest dokladnie tak samo 1 na port i zwarcie to impuls wejsciowy.

X

w 8051 i pochodnych (chociaz nie wszystkich, np FX2) w porzadniejszych sa oddzielne rejestry I/O w przypadku LPT mozliwe ze w biosie musisz ustawic tryb w ECP/EPP

A mniej wiêcej jaka to musi byæ rezystancja ? - bo rozumiem, ¿e nie za ma³a, ¿eby nie przeci±¿yæ portu.

"xaveri" napisal:

Jeszcze takiego portu rownoległego nie widziałem - standardowy port rownoległy nie jest w stanie czytac na liniach danych, jesli sie chce przeslac dane do komputera trzeba je wysyłać w 4-bitowych paczkach po liniach kontrolnych. Praktycznie każdy nowoczesny (no - w miarę nowoczesny, w coraz większej częsci najnowszych kompów niema portu rownoległego :( )ma jednak kontroler portu rownleglego który może pracować w trybach rozszerzonych epp i/lub ecp - w takiej konfiguracji program może zmieniać "kierunek" bitów danych. Całkiem użyteczny opis jak się to robi pod adresem

formatting link
droga - wspominaja tam o twojej metodzie - z komentarzem "or a input only port, once you blow up the latches output" :) GRG

Funkcja czytania jest, pytanie czy zrobi to z linii czy z rejestru. A jak zrobi z linii to czy uda sie go nie spalic przy "przeciaganiu" linii. Na niektorych podobno dzialalo, w tym oryginalnym ibm PC.

Niektorzy nawet twierdza ze dwukierunkowosc [ale uczciwa] byla projektowana, ale komus przeszkadzala. Faktycznie - kwestia jednej sciezki.

Na ttl miala wieksze szanse zadzialac. A od lat to chyba jednak cmos.

J.

Ciekawy link o LPT da³e¶ - czego¶ takiego szuka³em. W skutek przeczytania zacz±³em siê bawiæ. Moja p³yta g³ówna ma 4 tryby pracy do wyboru: SPP, EPP, ECP, ECP+EPP. Obecnie mam wybrany tryb standardowy SPP. Wykona³em nastêpuj±ce czynno¶ci:

  1. Do³±czy³em miernik do jednej z linii danych
  2. Uruchomi³em program - wpisa³em na D0-D7 jedynki - na wyj¶ciu: 4,55 [V]
  3. Teraz wpisa³em na D0-D7 same zera - na wyj¶ciu: 0,08 [V]
  4. Nastêpnie ustawi³em bit 5 rejestru BAZOWY+2 na 1 (czyli niby w³±czam bi-directional) - na wyj¶ciu danych pojawia siê 4,55[V]
  5. Sprawdzam programowo (czytam port), otrzymuje wynik: FF, czyli wszêdzie na liniach danych widzi jedynki, mimo, ¿e na linie danych przez rejestr bazowy wcze¶niej wpisa³em same zera.
  6. Próbujê wpisywaæ na rejestr bazowy (linie danych) ró¿ne kombinacje binarne - czytanie danych z portu ca³y czas daje wynik FF - dopiero po wy³±czeniu bi-directional program wczytuje wpisane do rejestru bazowego warto¶ci.

Tak wiêc bi-directional u mnie dzia³a - teraz pytanie: Czy fakt, ¿e na wyj¶ciach D0-D7 program odczytuje jedynki, to przyczyna standardu TTL (czyli wisz±ce wej¶cia s± jak jedynki) ? Czy mo¿e to efekt dzia³ania PULL-UPów ? Bo gdybym chcia³ czytaæ, to nie wiem teraz, czy robiæ pull-upy i zwieraæ do masy, czy te pull-upy s± ju¿ podpiête ?

A teraz inne pytanie ...O powy¿sze kwestie to bardziej z ciekawo¶ci siê pytam, bo nie widzê zastosowania takiego naprzemiennego czytania/zapisywania w mojej aplikacji i urz±dzeniu. Natomiast zainteresowa³e¶ mnie tymi liniami kontrolnymi. Z odczytaniem ich nie ma problemu. Jak w tym przypadku zrealizowaæ fizyczne podanie na nie odpowiedniego stanu ? Po³±czyæ masê mojego urz±dzenia z mas± na LPT i podaæ napiêcie w standardzie TTL ? A mo¿e jaka¶ separacja galwaniczna ? Jakie¶ propozycje ?

Z góry dziêki za wszystkie wyja¶nienia. Pozdrawiam!

"Grzech" napisal:

Wejścia TTL zachowują się jakby miały wbudowane pull-up - czy zachowanie twojego portu jest spowodowane tym że ma "prawdziwe" wejścia TTL czy producent dodał pull-up niema większego znacznia

Pull-up oznacza "podciągnięty do stanu wysokiego", jeśli chcesz "ściągnąć do 0" potrzebujesz pull-down :) Przy pierwszych eksperymentach z portem równoległym proponowałbym unikanie bezpośredniego przyłączania pinów portu do zasilania (obojętne czy chodzi o 5V czy mase) - przylutuj do pinów rezystorki (jakieś

1kohm powinny być ok.) i przez nie zwieraj do masy lub zasilania a nie będziesz musiał dwa razy sprawdzać czy pin jest w trybie IN czy OUT (pamiętaj że jedna z linii kontrolnych zwraca sygnał zanegowany!)

To najprostsze rozwiązanie

Separacja galwaniczna jest dobrym pomysłem - szczególnie do eksperymentów :) Pamiętaj jednak że nie czyni ona "niezniszczalnym". Najprostsze rozwiązanie to płytka uniwersalna z kilkoma transoptorami i baterią płaska do zasilania strony PC (zasilanie można też pociągnąć z wolnej wtyczki zasilacza lub portu USB ale jeszcze nie widziałem żeby ktoś to zrobił elegancko i bezpiecznie, a do zabawy bateria wystarczy). GRG

Join the Discussion

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

Didn't find your answer?

Ask the community — no account required