prędkość machania LPT

Witam. Czy ktoś mógłby mi potwierdzić mój wynik? Macham sobie na zmiane D0:

01010101010101 ... w ciasnej pętli składającej się z outb na 0x378. Wychodzi mi fmax=290kHz. Troche biednie. Macham na Linuxie, ale to chyba nie ma za wiele do rzeczy. Mialem nadzieję na przynajmniej 1MHz. Ktoś może wie czemu tak mizernie to wychodzi?
Reply to
Sebastian Biały
Loading thread data ...

W dniu 13.08.2009 16:11, Sebastian Biały pisze:

W jakim trybie masz ustawiony port w BIOSie? W ECP powinien byc najszybszy i wyciagac ok. 2MHz.

Reply to
T.M.F.

Użytkownik "Sebastian Biały" snipped-for-privacy@poczta.onet.pl> napisał w wiadomości news:h616ue$pia$ snipped-for-privacy@achot.icm.edu.pl...

tak przy okazji mi się przypomniał taki dialog:

-jaką szybkość ma LPT?

-on nie ma szybkości, on ma wolność

;P

a tak serio to nie śadzę ze uda Ci się więcej wyciagnąc, może na rs232 wicej by dało...

Reply to
nuclear2001

Użytkownik "Sebastian Biały" snipped-for-privacy@poczta.onet.pl> napisał w wiadomości news:h616ue$pia$ snipped-for-privacy@achot.icm.edu.pl...

Nie wiem, czy Ci pomogę. Ja próbowałem w drugą stronę, to znaczy przyjmowanie równolegle danych w przerwaniu (od /ACK). Na 'oko' wyszło mi

400-450kHz. Prosty program w Turbo Pascalu 6.0 pod DOSem, Celeron 1GHz, płyta DFI CA-64.

Michał

Reply to
invalid unparseable

Sebastian Biały schrieb:

a to, że na Linuksie też musisz przejść przez port mapping. Jak chcesz szybciej machać, to musisz napisać sterownik, który będzie machał bezpośrednio nóżką. W zależności od rasy ustrojstwa (hardware portu) możesz wyciągnąć nawet ponad 2MHz.

Waldek

Reply to
Waldemar Krzok

Co to jest port mapping w tym kontekście?

A czy on przypadkiem nie będzie robił z grubsza tak samo? outb ...

Reply to
Sebastian Biały

We wszystkich dostępnych trybach osiąga 290kHz.

Reply to
Sebastian Biały

Nie potrzebuje w ogóle miec takich predkosci. Jestem po prostu zdumiony że aż tak malutko, a wyszło to przy okazji zabawy z urzadzeniem na SPI.

Reply to
Sebastian Biały

Mnie tu zastanawia, czy nowe zintegrowane chipsety I/O na nowoczesnych płytach głównych w ogóle ktoś projektuje pod tym kątem. Może po prostu to ograniczenie badziewnego hardware które haltuje CPU na czas dostępu?

Przyznaje bez bicia, że nie mam DOSa zeby to w tej chwili sprawdzić pod nim. Moe rzeczywiście Linux sam z siebie ma spory narzut.

Reply to
Sebastian Biały

formatting link
(3.4kB)

To źródlo produkuje 290kHz na mojej płycie. Procesor >2GHz wiec to nie to ;)

Uruchamiać jako root bo używa ioperm.

Reply to
Sebastian Biały

Ostatnio jak sprawdzalem to IMHO tak wlasnie bylo - operacje na ISA haltowaly procesor na ~1us, co szczegolnie istotne bylo im lepszy procesor, ktory moglby w tym czasie tysiace operacji zrobic.

I jeszcze drobiazg - optymalizacja ISA zakonczyla sie gdzies w czasach

286, plyty 386 i pozniejsze byly nawet wolniejsze.

Niby teraz port LPT na chipsecie nie jest juz powiazany z ISA, ale cos podejrzewam ze nadal ta ~1us zostala.

A osobna sprawa ze jak ambitny system operacyjny zacznie wyjatki generowac, sprawdzac i emulowac, to tez mu tysiac instrukcji zejdzie ..

J.

Reply to
J.F.

Coś mi się przypomina, ze w trybie ECP trzeba chyba coś sprzętowo potwierdzać na złączu LPT.

Paweł

Reply to
Paweł

1.0 GHz -> 285kHz 2.1 GHz -> 291kHz

Nie ma zadnej sensownej zależnosci od prędkości procesora. Wygląda na blokowanie przez hardware.

Reply to
Sebastian Biały

Nie wydaje mi się, żebym korzystał z takiej funkcjonalności która wymaga potwierdzania. W teorii na adresie 0x378 jest zatrzask który powinienem widzieć jako D0-D7 na zewnątrz. Taka prymitywną forme działania miały chyba pierwsze LPT i tak zostało. W kazdym razie ten zatrzask jakiś nieprędki jest.

Reply to
Sebastian Biały

Dawno temu robiłem pewne urządzenie komunikujące się przez LPT. W jednym trybie uzyskiwałem około 1MB w drugim znacznie mniej. Z tego co pamiętam na płytce były jakieś przerzutniki generuje potwierdzenia. Zobacz czy tu nie znajdziesz jakiś informacji:

formatting link
Paweł

Reply to
Paweł

Ale jak ci zalezy na predkosci, to mozesz skorzystac z trybow rozszerzonych. Trzeba bedzie podac zewnetrzny zegar ..

J.

Reply to
J.F.

Nie nie, LPT to w ogóle tylko diagonstycznie jest, pewna zabawka na SPI mi nie działa jak powinna i diagnozuje ja na piechotę. Tylko ze podczas tej diagnozy nie mogłem uwierzyć, że tak powoli dziala i test zrobiłem.

Bede chciał szybko to wykorzystam jakies coś na USB. A na razie sobie tylko tak narzekam.

Reply to
Sebastian Biały

Sebastian Biały pisze:

Jest bardzo duży rozrzut na różnych komputerach, nie zależy to prawie wcale od częstotliwości procesora a raczej od chipsetu (do którego dochodzi port LPT), ew. chipu na karcie PCI LPT.

290kHz to rzeczywiście słabo, powinno dać się wyciągnąć 500-800kHz na większości komputerów.
Reply to
Adam Dybkowski

Sebastian Biały pisze:

Jak na USB to polecam [de]serializer ze stajni FTDI: FT3232 lub nowsze (np. FT4232H). SPI/JTAG/UART serializuje sprzętowo - po początkowych ustawieniach wysyłasz tylko opakowane specjalnie bajty przez USB, a po drugiej stronie wychodzi np. ładna transmisja SPI.

Reply to
Adam Dybkowski

Zrobiłem test na WinXP. Taki program:

int _tmain(int argc, _TCHAR* argv[]) { HANDLE h = CreateFile(L"\\\\.\\giveio", GENERIC_READ, 0, NULL, OPEN_EXISTING, FILE_ATTRIBUTE_NORMAL, NULL); if(h == INVALID_HANDLE_VALUE) { printf("GiveIO not installed\n"); return 1; } CloseHandle(h);

printf("Generuje\n");

while(1){ _outp(0x378, 0xFF); _outp(0x378, 0x00); }

return 0; }

Wygenerował mi częstotliwość 400kHz, co daje zmianę stanu co 1,25us.

Reply to
Zbych

ElectronDepot website is not affiliated with any of the manufacturers or service providers discussed here. All logos and trade names are the property of their respective owners.