Csak időnként beleolvasok itt egy-egy témába, lehet hogy nem vagyok teljesen tisztában azzal, hogy mi is itt a cél pontosan?
Jól értem, hogy az eredeti gép soros portjával küzdesz, és azt próbálod megoldani, hogy emulátor alól legyen egy olyan hardvered, ami a külvilág számára ugyanaz, mint az EP soros portja? Szép feladat!
Az első ötlet, hogy egy soros port "egyéb" vezetékeit használod bit-banging módszerrel, az működőképes lehet. Feltéve, hogy az adott soros port az egy natív, a gép rendes buszára kapcsolódó periféria. USB-s verzióval kár is próbálkozni, az USB "by design" nem alkalmas real-time dolgokra. Amit "ma tanultál", az első látásra jónak tűnhetett, de ugyanezért nem jó: pl. ha egy GPIO lábat bemenetre kapcsolsz, annak a változását nem akkor fogod megkapni amikor történt, hanem majd "valamikor" a host OS USB drivere egy csomagban "ráborítja" a lekérdező szoftverre az eltelt idő alatti változásokat. Kifele dettó ugyanez.
Az USB "reklámozott" sebessége ugye csalóka, ezek az eszközök úgy működnek, hogy a host OS időnként lekérdezi az adott USB eszközt, hogy mi van vele. Ez a gyakorisági idő a csatlakoztatáskor derül ki, maga az eszköz mondja meg, hogy milyen időközönként szeretné a host érdeklődését. Ez az idő viszont (ha jók az emlékeim) nem lehet akármi: 125, 250, 500 illetve 1000 lehet másodpercenként. (Legalábbis a 2.0-s USB-ig mintha ezek lettek volna a szabványban.) Azaz: a legjobb esetben is másodpercenként 1000 alkalommal lesz "aktuális" GPIO állapotod, ami még egy soros port szoftveres emulálásához is karcsú. (Ilyen 250 BAUD még talán mehet, de a stabilitásáról én nem vagyok meggyőződve.
)
(Az USB ugye nem a fentiek miatt "gyors", hanem azért tud az lenni, mert az 1000 üzenetváltásban rengeteg adat is mozoghat, de ez a fenti feladatban nem segítség.)