Konference: Počítač SHARP MZ-800 a emulátory
Od: | Michal Hučík |
Datum: | 18.10.2011 14:22 |
Předmět: | SIO - navrh pro obsluhu |
Prozatim si predstavuju, ze by se to mohlo obsluhovat asi takhle:
*
*
* SIO data port: 0x52
* SIO cmd/status port: 0x53
*
* Aktualni velikost prijimaciho a odesilaciho bufferu je 255 bajtu.
*
* Rychlost portu v bps se nastavuje pres API MZFREPO jako dword.
*
*
* Status:
* =======
* 0. bit - nastaven oznamuje data v prijimacim bufferu
* 2. bit - oznamuje volne misto v odesilacim bufferu
*
* Prikazy:
* ========
*
*
* RESET Provede reset portu, tzn.: zlikviduje aktualni obsah prijimaciho i
* odesilaciho bufferu, vynuluje registry RXINT a TXINT, zakaze
* generovani interruptu EINT = 0, zapne HW rizeni toku s nastavenim
* registru RTS0 = 2 a RTS1 = 128.
*
* EINT Povoli generovani interruptu, EINT = 1.
*
* DINT Zakaze generovani interruptu, EINT = 0.
*
* RXINT Nasledujicim zapisem se nastavi minimalni pocet bajtu, ktere musi byt
* v prijimacim bufferu, aby byl vyvolan interrupt. Nulova hodnota zakazuje
* generovani interruptu podle stavu prijimaciho bufferu.
* Pokud po prikazu nasleduje cteni, tak obdrzime hodnotu, ktera je nyni v RXINT.
*
* TXINT Nasledujicim zapisem se nastavi minimalni pocet volnych bajtu, ktere musi byt
* k dispozici v odesilacim bufferu, aby byl vyvolan interrupt. Nulova hodnota zakazuje
* generovani interruptu podle stavu odesilaciho bufferu.
* Pokud po prikazu nasleduje cteni, tak obdrzime hodnotu, ktera je nyni v TXINT.
*
* RXBUF Naslednym ctenim zjistime aktualni pocet bajtu v prijimacim bufferu.
*
* TXBUF Naslednym ctenim zjistime aktualni pocet bajtu v odesilacim bufferu.
*
* RTS0 Nasledujicim zapisem nastavime minimalni pocet volnych bajtu v prijimacim bufferu
* pri kterem unikarta vypne signal RTS a zakaze tim protistrane posilat data.
* Pri nulove hodnote nikdy k vypnuti RTS nedojde.
* Pokud po prikazu nasleduje cteni, tak obdrzime hodnotu, ktera je nyni v RTS0.
*
* Pozn: pri testovani na 115200 bps se mi ukazalo, ze pri hodnote mensi jak 2 uz
* dochazelo ke ztrate dat.
*
* RTS1 Nasledujicim zapisem nastavime minimalni pocet volnych bajtu v prijimacim bufferu
* pri kterem unikarta zapne signal RTS a povoli tim protistrane posilat data.
* Pokud RTS1 <= RTS0, tak k zapnuti RTS nikdy nedojde.
* Pokud po prikazu nasleduje cteni, tak obdrzime hodnotu, ktera je nyni v RTS1.
*
*
* TODO:
* ====
*
* Prozatim se mi nejak nedari obsluha CTS signalu, tak jej ani neuvadim.
*
*/
Ostatní příspěvky vlákna:
[2011/1 (52)] [2011/2 (9)] [2011/3 (2)] [2011/4 (9)] [2011/5 (8)] [2011/7 (1)] [2011/8 (40)] [2011/9 (146)] [2011/10 (116)] [2011/11 (29)] [2011/12 (110)]
[1999 (1)]
[2000 (168)]
[2001 (733)]
[2002 (459)]
[2003 (654)]
[2004 (224)]
[2005 (105)]
[2006 (182)]
[2007 (201)]
[2008 (294)]
[2009 (363)]
[2010 (782)]
[2011 (522)]
[2012 (642)]
[2013 (442)]