Cteni portu ISA
Igor Cesko
cesko
Středa Březen 17 11:49:09 CET 2004
Zdravim Vas
> Neposkytl byste prosim kousek kodu jak an to?
> Potreboval bych prenaset data do PC rychlosti
> 384kB/s. Nevite jestli se u portu, ktery je nastaveny
> na ECP/EPP daji cist (na ktere adrese?) datove piny?
> Ja bych totiz potreboval ve skutecnosti prenaset 256Kslov/s
> a ta slova jsou 12b, takze bych cetl datove piny + ty 4 ridici.
>
> Diky Pavel Krejci
Ak potrebujete 256kHz x 12bitov prenasat cez ECP do PC tak
musite citat rychlostou 512kHz, lebo musite precitat 2porty -
datove a riadiace piny sa totiz nedaju nacitat jednou 8-bitovou
instrukciou instrukciou.
Ale je tu dobra sprava na zrychlenie software: tie 2 porty sa daju
nacitat jednou 16-bitovou instrukciou, lebo lezia za sebou (378-
datovy register, 379-status register). Do programu jednoducho date
citanie zo 16-bitovej adresy (in ax,dx ; slovo:=portw[$378] ;
inpw(0x378,slovo) ) a hardware ked zisti, ze nie je mozne citat zo
16-bitovej adresy, tak to rozdeli na dve 8-bitove citania z adries za
sebou. Trochu to zrychli software, ale v skutocnosti sa aj tak cita 8-
bitovo (mame mensi pocet cyklov citacej slucky a odpada urcita
rezia programu).
Osobne mam skusenosti z ECP prenosom - to vsak chce
hanshake od externeho HW. Ale cez DMA prenos cez ECP
dosahujem asi 500kB/s (pod Windows). Dalsia vyhoda DMA
prenosu je, ze to ide na pozadi (ja s tymi cca 300kB/s generujem
priebeh do externeho HW na pozadi Windows a vytazenie
procesora je asi 30%) a prenos je plynuly - neseka ho ako pri
programovej slucke, ked Windowsy prepinaju tasky.
S pozdravom
Igor Cesko
P.S.: Prave som to 16-bitove citanie v slucke otestoval v Pascale a
vyslo mi z toho ze 1milion vycitani 16 bitoveho slova (obidva porty)
trva 2.25 sekundy => cca 450kslov/s (pre vasich 256kslov/s je to
vcelku vyhovujuce). Tu je ten test (da sa este optimalizovat):
GetTime(Hour1, Minute1, Second1, Sec1001);
for i:=0 to pocetLoop do
begin
asm
push ax;
push dx;
mov dx,$378;
in ax,dx;
mov slovo,ax;
pop dx;
pop ax;
end;
end;
GetTime(Hour2, Minute2, Second2, Sec1002);
{tu je vypocet casu}
writeln('cas citania portu 378: ',cas);
-------------------------
Ing. Igor Cesko
Hardware & Software
E-mail: cesko@appliedp.sk
Applied Precision Ltd.
Technicka 5
821 04 Bratislava
SLOVAKIA
Tel,Fax: +421-7-4342 6628
Tel: +421-7-4363 3151
Tel: +421-7-4333 7340
E-mail: info@appliedp.sk
Web: www.appliedp.sk
-------------------------
Další informace o konferenci Hw-list