Jo to byly casy, kdy se pouzivaly disky na paralelni port
Este doma nekde mam TransDisk 3000 ve verzi ktera este neni EPP takze s opravdu luxusni rychlosti prenosu do pocitace
Na paralel port jsem vyvinul I2C rozhrani s full duplexnim optickym oddelenim, ktery obsahuje spinany zdroj ktery se napaji i ze slabych vystupu toho puvodniho parportu. Viz http://i2c2p.twibright.com
Ja zase pripojil EEPROM a LCD na pport. Dokonce muj driver byl v lm_sensors :-)
2c-pport.o: i2c Primitive parallel port adapter module version 2.7.0 (20021208)
i2c-dev.o: Registered 'Primitive Parallel port adaptor' as minor 0
i2c-core.o: adapter Primitive Parallel port adaptor registered as adapter 0.
i2c-pport.o: found device at 0x378.
Ja jsem na I2C zadne soucastky ani nepouzil. Tu EEPROM jsem pripojil primo a jede to jak z praku.
Pokud bude zájem (asi bude), tak se budu věnovat i MIDI. Na fyzické úrovni je to vlastně sériový port (datová smyčka), logická úroveň už je docela složitá.
PS: zapomnel jsem cely serial pochvalit, meli jsme neco podobneho ve skole, a musim rict, kam se hrabe Bittner, to se neda srovnat ;) Ve skole jsem spal, tady cekam na kazdy novy dil.
V roce 1998 jsem si koupil první kameru (webcam). Vyráběla je firma ComPro (typové označení PS39), u nás ji prodávala nějaká firma z Přerova, stála něco přes 6000,-, měla fyzické rozlišení 640x480, používala nějaký čip VISTA IMAGING VII-CAM-1 a připojovala se právě přes paralelní port. Napájení si brala z průchozí redukce DIN/(PS/2) pro klávesnici. Na svou dobu byla skvělá, užil jsem si s ní spoustu zábavy.
Krátce na to se ale začala prodávat USB verze a tato kuriozita upadla v zapomnění. Dnes se o ní na netu mnoho najít nedá, nabízím odkaz jen na tehdejší recenzi:
Moje kamera stále funguje, jen je problém s ovladači. Pod linuxem se možná dá rozjet zmíněná USB verze, ale paralelní ne. Dokud výrobce existoval, ještě jsem stáhnul ovladače pro W2k, ty fungují i v XP.
Člověk si musel vybírat mezi rozlišením/kvalitou/barevností a framerate, přes ten paralelní port se těch dat vážně moc protlačit nedá...
Marně dumám, co s ní. Je mi už k ničemu, ale je mi líto ji vyhodit. Kdyby ji snad někdo chtěl...
Zajímalo by mne zda má někdo nějakou spolehlivou informaci, jak je to s adresami paralelních portů.
V současnosti se všude uvádí, že LPT1 má 0x378 a LPT2 0x278. Pokud však máte MDA kartu s paralelním portem, má tato typicky adresu 0x3bc a v BIOSu se vždy hlásí jako první, tedy LPT1. Jeden pamětník mi tvrdil, že 0x3bc je opravdu původní adresa LPT1 a tato informace se vyskytuje i na některých webech. Odpovídalo by tomu i to, že "současný" LPT1 má vyšší adresu než "současný" LPT2 a 0x3bc je ještě výš.
To tedy znamená, že v současnosti se vlastně používaji LPT2 a LPT3, zatímco LPT1 se vynechává.
No, asi bude lepší nad tím nefilozofovat a spokojit se s vysvětlením, že "hardwareový pohled" je jiný než "softwareový" (tedy ve smyslu přiřazení jména konkrétní adrese portu).
Adresy portu se kontroluji v poradi 0x3BC, 0x378, 0x278. Pokud se na uvedene adrese nalezne port (tj. napr. ze datova brana ($port+0) si uchova zapsanou informaci) tak se tato adresa zapise do tabulky LPT portu - viz popis BIOS-u, realmode adresy 40:08, 40:0A, 40:0C, 40:E (LPT1-LPT4).
Spravne napsany sw tedy po vyberu LPT1 si precte adresu z teto tabulku a pak ji pouziva.
Daniel Rozsnyó to napsal přesně - BIOS po základní inicializaci začne s detekcí paralelních portů na adresách 0x3bc, 0x378 a 0x278 v tomto pořadí a postupně jejich adresy (pokud porty nalezne) uloží do oblasti proměnných BIOSu, od adresy 0x0408. Záleží tedy na konkrétní konfiguraci počítače, které adresy se skutečně do proměnných BIOSu uloží. Aby to bylo ještě trošku složitější, tak původní IBM BIOS dokáže pracovat se čtyřmi porty, tj. LPT1-LPT4, ale umí naplnit odkazy pouze na porty tři - zbývající si musí obsloužit například nějaký jednoduchý inicializační program, který adresu portu uloží do 0x0408, 0x040a, 0x040c či 0x040e.
Jinak paralelní porty mohou být i na PCI kartách, nějaký obrázek jsem dával i do článku. Funguje to tak, že PCI zařízení může být pomocí BADDR0-BADDR5 nakonfigurováno do "šestnáctibitového" rozsahu a ještě k tomu mapováno do I/O space, takže může emulovat klidně i chybějící LPT1, včetně přerušení.
Ještě to trošku doplním - původní IBM BIOS také dokáže pracovat se čtyřmi sériovými porty (COM1-COM4), ale sám nalezne pouze první dva, takže podobná situace, jako u LPT.
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.
Popsané to je právě v IEEE 1284 (má i několik příloh, jedna právě o detekci typu a schopnosti zařízení), ale je to (ostatně jako každá norma, zvláště z IEEE) docela nudné čtení :-)
Propojení dvou počítačů pomocí PLIP nebo PMAC protokolů nepoužívá ECP, používá obyčejný mód paralelního portu (kdy hodnoty v registrech odpovídají signálům, některé jsou znegované) a kabel, který má 5 drátů v každém směru (4 na data, jeden na synchronizaci).
Nepříjemný efekt je ten, že ovladaš žere 100% CPU, když vysílá nebo přijímá, protože ty porty pořád polluje.
Pokud někdo ví o nějaké metodě, jak propojit dva počítače přes ECP, ať to napíše. Ale nikdy jsem o tom neslyšel.
Kdysi jsem na propojeni 386 a pentia po paralelni lince pouzival jakysi program, tusim, ze se jmenoval doslan (nebo landos?). Umel propojit po parportu v modech SPP, EPP a ECP. Na to ECP byl potreba specialni kabel. Bylo u toho i schema kabelu. Pouzil jsem standardni kabel a preletoval nejake asi 4 piny. Prenosovku psali myslim 1.2Mb/s (nejsem si jistej), ale nikdy jsem ji netestoval. Chodilo to bajecne. Kdyby byl zajem, muzu to nekde vyhrabat. (na te 386 :-)
Kdybys měl nějakej článek, kde se popisuje, jak zprovoznit to propojení přes IEEE, tak to sem hoď. V Linuxu pokud vím na nic takového driver není, tam je jen standardní plip. Dva počítače tu přes paralelní port propojeny mám...
A nebyl to náhodou klasický Laplink? Nechci si moc vymýšlet, ale mám dojem, že novější verze přes EPP/ECP fungovaly, protože jsme pro to nějaké kabely "vyráběli" ze dvou starých Centronics kabelů, které se uprostřed propojily vrabčím hnízdem :-)