Navigátorposledních 10 z diskuze |
USB-IDE64 cardV tomto článku jsem se rozhodl popsat projekt, kterému jsem poslední dobou věnoval dost energie - jak přenášet data mezi C64 a PC pomocí USB. Tento článek jsem plánoval vydat dříve a v angličtině, ale okolnosti mu nepřály, tak alespoň českým příznivcům předkládám tuto verzi (doplněnou o pár poznámek). Příčinou, proč jsem se začal zajímat o to, jak využít USB, byla jednak mučivá pomalost prvních verzí PC-link pro IDEDOS 0.90 pod WinXP (i přes user port) a za druhé nepoužitelnost kabelu X1541 pod stejným operačním systémem. Zmiňovaný PC-link se v počátcích potýkal se známou problematikou přímého přístupu na piny LPT na NT platformě a používal velice jednoduchou, ale zároveň velice pomalou, knihovnu která spřístupnila jeden hardwarový register, poslala na něj 1 byte, a zase ho "uzavřela". Při porovnávání byl C64 schopen v assembleru několikrát rychleji číst stav userportu, než PC zapisovalo na LPT. Tento problém bylo možné obejít např. pomocí programů Userport nebo Porttalk (ten používá současná verze PC-link, pokud vím), ale to by bylo na jiný článek (pozn. tato problematika je popsána např. na lpt.hw.cz). Jelikož moje znalosti elektroniky jsou dost omezené, od začátku jsem kladl důraz na co největší jednoduchost hardwaru. Po nějakém tom hledání padla moje volba na integráč FT245BM od firma FTDI (www.ftdichip.com) a jeho mód FIFO - 8mi bitový synchronní přenos. Skvělý (a levný) obvod, ke kterému výrobce zdarma dodává driver s DLLkem a hlavičkovým souborem, takže napsat si vlastní aplikaci pracující s USB portem ve WinAPI (nebo jeho nadstavbách) není nepřekonatelná překážka. Priorita byla, aby spojení bylo co nejrychlejší, tedy aby používalo všech 8 datových pinů. Původně jsem tento obvod chtěl připojit do C64 userportu, ale jak se záhy ukázalo, dostat kromě 8mi datových pinů z userpotu i 4 synchronizační (obvod FT245 pracuje se čtyřmi synchronizačními signály, dva pro vstup a dva pro výstup) je dost nesnadný úkol. Musel bych používat seriovou linku s časovačem, které jsou na userportu na SP1(2) a CNT1(2). O této problematice je dost nesnadné sehnat nějaké informace a ještě težší je je v praxi aplikovat. Nakonec jsem se rozhodl připojit USB do shortbusu - rozhraní, které je na kartě IDE64. Tím se sice hardware rozrostl o několik dalších součástek, ale odpadl problém s nedostatkem použitelných pinů. Za pomoc s připojením do shortbusu patří můj dík Visáčovi! Díky jeho schématu jsou na adrese $DE48 přístupné datové bity a na $DE49 synchonizační bity. Rád bych teď vyvedl z omylu všechny, co doufají, že se by se IDE64 na PC hlásilo jako USB disk nebo něco podobného. Nic takového integráč s driverem od FTDI neumí. Dělá "jen" to, že se v Control Panels / System hlásí jako další USB zařízení (podobně jako např. datový kabel telefonu, na liště vidět není). Funkcemi v DLL se pak může otevřít a posílat/přijímat data. Aby se IDE64 hlásilo jako USB disk by vyžadovalo spoustu složitého kódu jak na straně PC, tak i na straně C64 (pozn. taková šajba zase nejsem, ale tento obvod má i více možností, kromě v této aplikaci použitých funkcí OPEN, READ, WRITE atd. umí "emulovat" funkce pro klasický přístup na porty pod WinNT - CreateFile, ReadFile atd., má samozřejmě driver pro Linux a je možné ho mapovat i jako "klasický" COM port). Prototyp karty jsem dělal jako dva samostatné tišťáky propojené CANNON konektorem a při jejich drátovém propojení do karty vnikalo mnoho rušení, které bylo potřeba odstínit. Proto první verze USB-IDE64 vypadala dost zběsile. Plnou verzi jsem už udělal na jeden tišťák, který je položen na IDE64 a s PC se propojuje obyčeným USB kabelem A-B. Tato druhá verze už také obsahuje novou verzi integráče FT245 - FT245RL, která oproti FT245BM má v sobě eepromku i krystal a došlo tedy k zjednodušení hardwaru. Integráč FT245RL má ještě nějaký mód 8mi bitového přenosu synchronizovaném pouze dvěma piny a teoreticky by ho bylo možné připojit do useportu, ale je to novinka a tuto možnost jsem ještě nezkoumal. Pochopitelně pro kartu USB-IDE64 neexistoval žádný software a všechno jsem si musel napsat sám. A jak by bylo možné tuto kartu získat? To je trochu problém, mám v současnosti pouze dva prototypy. Možná bych v budoucnu udělal nějaké kusy na prodej, ale brzy se budu stěhovat, takže se mi do toho zatím nechce. A také jsou určité potíže s výrobou tišťáku pro tuto kartu (pozn. jak jsem se přesvědčil, tišťák vyrobený podomácku fotocestou, ikdyž zmáknutým postupem, není úplně dostačující kvalita a bylo by lepší nechat si vyrobit profi tišťák, což by dle předběžných propočtů zdvojnásobilo cenu karty). LHS |
Poslední recenzereakce na článkyTOP 10 HRY
|