Aktyw Forum

Zarejestruj się na forum.ep.com.pl i zgłoś swój akces do Aktywu Forum. Jeśli jesteś już zarejestrowany wystarczy, że się zalogujesz.

Sprawdź punkty Zarejestruj się

odczyt z lpt $278

marcind
-
-
Posty:1
Rejestracja:4 wrz 2003, o 11:19
Lokalizacja:sosnowiec
odczyt z lpt $278

Postautor: marcind » 4 wrz 2003, o 11:25

mam takie pytanie
w jaki sposob odczytac dana ktora zostala podana na port LPT piny 2...8
normalnie powinienem odczytac rejestr $278h ale w rzeczywistosci w ten sposob odczytuje dana ktora wczesniej tam zapisalem a nie ta ktora jest podawana na ten port fizycznie
tylko zapisana dana do $278h pojawia sie od razu

czy tam jest jakis zatzask, lub rejestr powodujacy przpisanie danej ze zlacza do rejestru ??
kiedy odczytuje (zapisuje) dane z rejestru $379h wszystko dziala bez zarzutu

moze ktos ma jakis pomysl, kawalek kodu
z gory dziekuje

(acha i nie jest to wina tryby EPP... czy innych bo probowalem wszystkich :)

Awatar użytkownika
sapero
-
-
Posty:29
Rejestracja:5 cze 2003, o 21:35
Lokalizacja:Gliwice
Kontaktowanie:

Postautor: sapero » 4 wrz 2003, o 16:01

ustaw sobie w biosie LPT na tryb BiDir, a z poziomu programu żeby odczytywać dane - musisz ustawić piąty bit w (baza LPT +2) w Twoim przypadku $27A [albo wyzerować] - chodzi o bit sterujący enable bidir

rdt
-
-
Posty:87
Rejestracja:20 sie 2003, o 18:03
Lokalizacja:100km od Wawy

Postautor: rdt » 4 wrz 2003, o 21:40

odczyt "fizycznych wymuszen" z portu LPT to mozliwy jest tylko z portu 278+1 (oznaczenie dla ulatwienia)

i teraz tak :
od D0 do D7 nie odczytasz
odczytujesz ustawienia tylko z pinow sluzacych do komunikacji
mozna zakladac tak zwane maski ( jest to wynik mnozenia logicznego)
i wtedy nie musisz sobie obliczac co i ktory pina daje jaka liczbe ( znaczy musisz ale kod jest czytelniejszy)
na przyklad zalozmy ze pin ACK to ktorys tam i jak zmieni sie jego wartosc to program (pascal) ma wykonac jakas tam petle

robie to tak :
[278+1]=0; {wyzerowanie portu}
a=[278+1];
read a;
if a = 56; { zalozmy ze to 56 odpowiada wymuszeniu na tym nieszczesnym ACK i pozostawieniu "nie wymuszen" czyli zer na
pozostalych pinach sluzacych do komunikacji z drukarka }
then
begin
{................blok z jakas tam czysto hipotetyczna petelka}
end;
else
{...........dalszy ciag programu bez petelki}
.............
.............
............
end.

jt

Postautor: jt » 5 wrz 2003, o 12:07

odczyt "fizycznych wymuszen" z portu LPT to mozliwy jest tylko z portu 278+1 (oznaczenie dla ulatwienia)
Co oczywiście nie jest prawdą. Linie danych LPT pracują zarówno jako wejścia jak i wyjścia. Przed transmisją danych trzeba okreslić kierunek (rozwiązanie podane wyżej). Port Bazowy+1 po prostu zawsze jest wejściem i nie ma potrzeby jakiego kolwiek konfigurowania. Nie nadaje się do transmisji danych poniewaz ma za mało linii. Jeden bajt trzeba by wysyłać w kilku krokach i komplikować program by złożył go ponownie. Większy wysiłek, mniejsze kożyści. A gdyby jeszcze uwzględnić negację niektórych linii (np. Busy) - tylko usiąść i zapłakać.

JS

Postautor: JS » 5 wrz 2003, o 15:23

odczyt "fizycznych wymuszen" z portu LPT to mozliwy jest tylko z portu 278+1 (oznaczenie dla ulatwienia)
Co oczywiście nie jest prawdą.

Mała poprawka : to _było_ jak najbardziej prawdą w czasach starych, najprostszych portów Centronics. Niestety mnóstwo tych niektualnych opisów pokutuje w sieci i wprowadza ludzi w błąd :-(

Pozdrowienia JS

rdt
-
-
Posty:87
Rejestracja:20 sie 2003, o 18:03
Lokalizacja:100km od Wawy

Postautor: rdt » 5 wrz 2003, o 18:09

wiec tak:
czy waszym zdaniem adres 278+1 to to samo co 278 ??
bo moim nie
co do dalszych rozwazan to poprosze o przykladowy program (najchetniej w pascalu ) obslugujący bity portu od D0 do D7 tak ze jak na nich wymusze poziom 1 TTL to zeby ten program zarejestrowal zmiane
Aha poprosze rowniez opis ustawien biosu itp
i zeby to nie bylo tak ze najpierw wystawiacie jedynke na port a potem ja odczytujecie bo takie rzeczy to wiem ze sie da dlatego pisalem o "fizycznych wymuszeniach"
Bede baaaaaaardzo wdzięczny
Pozdrawiam
rdt
a co do negacji to po to są maski wlasnie zeby nie siadac i nie plakac

jt

Postautor: jt » 8 wrz 2003, o 11:33

To są moje wypociny :

http://4programmers.net/view_file.html?id=950

Są tam tylko źródła (regulamin strony nie pozwala na binaria) napisane w Delphi. Nie powinieneś mieć problemów z przeróbką na Pascal, bo to prawie to samo. Domyślny odres to 378h, więc bedziesz musiał przed testami go zmienić.
Natomiast pod adresem :
http://4programmers.net/view.html?id=294

opisałem o co w tym chodzi. Ponieważ było to dla programistów więc o sprzęcie jest niewiele, ale za to istotne informacje oprogramowaniu.

W biosie najlepiej jest ustawić na ECP (chyba teraz wszystkie płyty tak mają domyslnie).

Miłej zabawy!

rdt
-
-
Posty:87
Rejestracja:20 sie 2003, o 18:03
Lokalizacja:100km od Wawy

Postautor: rdt » 8 wrz 2003, o 15:14

świetnie wyśmienicie - przeczytalem jak wroce to bede sie bawil
dzieki bo do tej pory nie moglem znalesc info (zadneg) jak odczytywac wymuszone bity na liniach D0-D7 mi byly potrzebne tylko dwa
i dlatego poradzilem sobie na adresie 378+1

rdt
-
-
Posty:87
Rejestracja:20 sie 2003, o 18:03
Lokalizacja:100km od Wawy

Postautor: rdt » 8 wrz 2003, o 15:15

świetnie wyśmienicie - przeczytalem jak wroce to bede sie bawil
dzieki bo do tej pory nie moglem znalesc info (zadneg) jak odczytywac wymuszone bity na liniach D0-D7 mi byly potrzebne tylko dwa
i dlatego poradzilem sobie na adresie 378+1

Awatar użytkownika
gawel
-
-
Posty:683
Rejestracja:24 lis 2003, o 11:19
Lokalizacja:Białystok

Postautor: gawel » 24 gru 2003, o 10:19

Odszukaj w necie opis układu 8211 (wypromował go INTEL). Jest to klasyczy układ stosowany do budowy portów w kompach. Ponieważ układ jest stary, możesz mieć kłopoty z dotarciem do niego. Możesz ewentualnie przejżeć dokumentacje od układu 16C452 (opis jest dostępny na www.ti.com). Tam znajdziesz wszystkie niezbędne dane opisujące porty drukarkowe, tj adresację, znaczenie bitów w porcie sterującym itp.

prompt
-
-
Posty:116
Rejestracja:30 sty 2004, o 23:25
Lokalizacja:Bydgoszcz

Postautor: prompt » 8 lut 2004, o 00:00

Port równoległy może pracować w trybie dwukierunkowym. Najprościej jest skorzystać z trybu EPP. Wówczas dwukierunkowy rejestr komunikacyjny ma adres 378+4. Należy też pamiętać o wyzerowaniu rejestru 378+2 (nie pamiętam dokładnie który z bitów, można wyzerować wszystkie). Port w trybie EPP pracuje normalnie, tzn. pierwsze 3 rejestry zachowują swoje znaczenie i działają tak jak w podstawowym trybie SPP.

prompt
-
-
Posty:116
Rejestracja:30 sty 2004, o 23:25
Lokalizacja:Bydgoszcz

Postautor: prompt » 8 lut 2004, o 00:08

Jeżeli chcesz więcej na temat trybu EPP, to odsyłam do artykułu w Elektronice Praktycznej 1/2002.

Wróć do „PLD/FPGA i inne zagadnienia techniki cyfrowej”

Kto jest online

Użytkownicy przeglądający to forum: Obecnie na forum nie ma żadnego zarejestrowanego użytkownika i 0 gości