Ví někdo jaký je doporučovaný postup pro použití některého z režimů zapínajících datové PINy na LPT portu jako vstupní? Dá se dostupnost "byte mode", EPP či ECP rozšíření nějak softwarově z programu předem otestovat? Anebo se člověk prostě musí spokojit s tím, že když v BIOSu svého PC najde možnost zapnout EPP či ECP mód u paralelního portu, tak že pak klidně může k portu připojit periferii, která bude (zjednodušeně řečeno) do datových PINů na PC tlačit data (bez ohledu na možnost kolize výstup proti výstupu resp. zkratu)? Asi špatně hledám, ale nikde tuhle informaci či doporučený postup jak to naprogramovat nemůžu najít... Předem moc díky za info.
Jak se tak divam na detailni schema paralelniho adapteru IBM PC/AT, tyto odpory dodaval uz vyrobce (coz je pochopitelne). Nicmene firma Robotron byla silnejsi nez IBM a jeji tiskarny obcas nejaky klopny obvod v oddelovacim IO odpraskly, takze tu schazela hacky a carky, jindy zase handshaking; podle toho, co bylo nejslabsi. Nastesti nebyl problem ten IO z desky vyfoukat a vymenit, vse byly bezne typy v DIL pouzdrech :-).
Jinak manual IBM PC/AT Technical Reference (volne prodejny) obsahoval kompletni dokumentaci vcetne vypisu BIOSu a takove lahudky jako schema disketove mechaniky nebo HD 10 MB (mainboard samozrejme take). Dobre slouzil jako referencni, jini vyrobci moc fantazie nemeli.
Jeste k tomu paralelnimu portu - je zajimave, ze (original PC/AT) byl resen jako plne obousmerny, vsech 8 datovych bitu.
Jste si jisty ?
Ten port totiz skutecne ma registr pro cteni, ale precte na nem jen to, co si sam na port zapsal. Takze obousmerny neni.
Je az s podivem, ze kdyz uz tam ten vstupni port dali, proc je jeho funkce tak degradovana.
Mám dojem (ale je to dávno, co jsem na podobný port narazil), že IBM Bi-directional paralelní port pro PS/2 se skutečně dal přepnout do režimu čtení nastavením 5 bitu v řídicím registru. Někdy byl problém v tom, že se v tomto případě připojily pull-up odpory na všechny datové piny, takže to vypadalo, že port vysílá samé jedničky (>2,4 V, vlastně tam bylo skoro Ucc), ale to v TTL logice není zas tak velký problém...
Pro zjištění, zda dokáže port pracovat v byte režimu (čtení datových linek) stačí udělat toto:
1) odpojit vše od portu
2) zapsat do pátého bitu řídicího registru jedničku - to by mělo datové linky přepnout do režimu čtení
3) zapsat hodnotu do datového registru
4) přečíst hodnotu z datového registru - pokud se zapsaná a přečtená hodnota odlišují, jde s velkou pravděpodobností o obousměrný paralelní port
body 3 a 4 by se měly opakovat pro různé hodnoty, třeba 0x00, 0xff, 0x55, 0xaa. Typicky při odpojeném zařízení přečteš vždy 0xff, protože jsou na piny připojeny pull-up odpory na Ucc (ne vždy!), někdy je tam náhodná hodnota.
Aha, díky za radu. Vypadá to docela jednoduše. :-) Určitě to doma vyzkouším, ale pro jistotu to ještě zkombinuju s velmi měkkým odporovým děličem - prostě do série zapojené dva "pevné" odpory (tak 10K Ohm) na obou koncích potenciometru (ten zas tak 10M Ohm). Jezdec potenciometru (proměnného odporu) připojím na (některý) datový PIN portu, napíšu si malý prográmek třeba v assembleru, který bude stále vypisovat hodnotu daného bitu či celého portu/bajtu a budu opatrně hýbat jezdcem "poťáku" z prostřední polohy a sledovat, kam se daná hodnota pohne - pokud vůbec. Oba dva krajní konce pevných odporů budou -samozřejmě- připojeny na +5V a druhý na 0V resp. zem.