RTV forum PL | NewsGroups PL

Sprawdzenie maksymalnej prędkości machania LPT dlaczego tylko 290 kHz?

Graniczna prędkość machania LPT

NOWY TEMAT

elektroda NewsGroups Forum Index - Elektronika Polska - Sprawdzenie maksymalnej prędkości machania LPT dlaczego tylko 290 kHz?

Goto page Previous  1, 2, 3, 4, 5  Next

J.F.
Guest

Thu Aug 13, 2009 7:35 pm   



On Thu, 13 Aug 2009 20:24:12 +0200, Sebastian Biały wrote:
Quote:
Paweł wrote:
Coś mi się przypomina, ze w trybie ECP trzeba chyba coś sprzętowo
potwierdzać na złączu LPT.

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.

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

J.

Sebastian Biały
Guest

Thu Aug 13, 2009 7:50 pm   



J.F. wrote:
Quote:
Ale jak ci zalezy na predkosci, to mozesz skorzystac z trybow
rozszerzonych. Trzeba bedzie podac zewnetrzny zegar ..

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.

Adam Dybkowski
Guest

Thu Aug 13, 2009 9:53 pm   



Sebastian Biały pisze:

Quote:
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?

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.

--
Adam Dybkowski
http://dybkowski.net/

Uwaga: przed wysłaniem do mnie maila usuń cyfry z adresu.

Adam Dybkowski
Guest

Thu Aug 13, 2009 9:54 pm   



Sebastian Biały pisze:

Quote:
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.

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.

--
Adam Dybkowski
http://dybkowski.net/

Uwaga: przed wysłaniem do mnie maila usuń cyfry z adresu.

Zbych
Guest

Fri Aug 14, 2009 7:17 am   



Sebastian Biały pisze:
Quote:
Sebastian Biały wrote:
Witam.
Czy ktoś mógłby mi potwierdzić mój wynik?

http://sebobialy.net/lcd.tar.gz (3.4kB)

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

Uruchamiać jako root bo używa ioperm.

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.

Sebastian Biały
Guest

Fri Aug 14, 2009 8:20 am   



Adam Dybkowski wrote:
Quote:
Jak na USB to polecam [de]serializer ze stajni FTDI: FT3232 lub nowsze
(np. FT4232H).

Tak, dokladnie o tym myslę.

Quote:
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.

A da się zrobić SPI 9 bit z ustawionym na stale ostatnim bitem na ileś ?
Bo jakiś $%^#*@ zrobił mi wlaśnie coś takiego...

Sebastian Biały
Guest

Fri Aug 14, 2009 8:22 am   



Adam Dybkowski wrote:
Quote:
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.

Wszystjo wskazuje na to że to koniec przydatności LPT :/ Chyba jednak
poświęcę chwilkę i zrobie coś na USB.

Waldemar Krzok
Guest

Fri Aug 14, 2009 8:34 am   



Sebastian Biały schrieb:
Quote:
Waldemar Krzok wrote:
a to, że na Linuksie też musisz przejść przez port mapping.

Co to jest port mapping w tym kontekście?
to, że program w User Space nie widzi hardware tylko HAL (hardware

abstraction layer). Wchodzisz na wirtualnym porcie, a wychodzisz na
hardware. Po drodze jest driver HAL.

Quote:
Jak chcesz szybciej machać, to musisz napisać sterownik, który będzie
machał bezpośrednio nóżką.

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

dokładnie tak. Tylko to outb nie będzie na wirtualnym porcie, jak w
programach w User Space, tylko idzie bezpośrednio na hardware. Każde
twoje outb prowadzi do zmiany kontekstu w obie strony, a to chwilkę trwa.

Waldek

J.F.
Guest

Fri Aug 14, 2009 8:40 am   



On Fri, 14 Aug 2009 09:22:30 +0200, Sebastian Biały wrote:
Quote:
Wszystjo wskazuje na to że to koniec przydatności LPT :/ Chyba jednak
poświęcę chwilkę i zrobie coś na USB.

Zalezy co chcesz osiagnac .. ale tak - koniec przydatnosci LPT, i
koniec LPT w ogole. Jesli nie jest to cos doraznego - czas na USB,
a i w doraznych latwiej opanowac jakiegos procka z USB i sie nie
meczyc z windowsami Smile.

J.

Sebastian Biały
Guest

Fri Aug 14, 2009 8:41 am   



Waldemar Krzok wrote:
Quote:
Co to jest port mapping w tym kontekście?
to, że program w User Space nie widzi hardware tylko HAL (hardware
abstraction layer). Wchodzisz na wirtualnym porcie, a wychodzisz na
hardware. Po drodze jest driver HAL.

Jesteś w stanie ocenić ten narzut? czy HAL w tym wypadku nie robi po
prostu outb->real_outb ? Bo tutaj traci się za dużo mocy procesora i
prędkośc tej operacji prawie nie zalezy od predkości CPU.

Sebastian Biały
Guest

Fri Aug 14, 2009 8:47 am   



J.F. wrote:
Quote:
Zalezy co chcesz osiagnac .. ale tak - koniec przydatnosci LPT, i
koniec LPT w ogole. Jesli nie jest to cos doraznego - czas na USB,
a i w doraznych latwiej opanowac jakiegos procka z USB i sie nie
meczyc z windowsami Smile.

Ale ja pod innym kątem: zamiast męczyć się z debugowaniem w uC kodu wole
napisać go i przetestować na PC. Czesto wsad po wrzuceniu w uC działa mi
od razu poprawnie, a przyjemnośc debugowania na PC jest znaczna. Dlatego
czasem coś podpinam pod LPT "na szybko" zeby sprawdzić komunikacje z
jakims scalakiem i znaleźć buga. Po to mi LPT. Ale własnie mam w tej
chwili problem, bo urzadzenie wymaga szybkiej komunikacji a LPT nie
wyrabia się dostatecznie. Więc zaczynam się rozglądać za FTDI jakimś co
by mi pasowal do potrzeb.

Sebastian Biały
Guest

Fri Aug 14, 2009 8:55 am   



Zbych wrote:
Quote:
Zrobiłem test na WinXP. [...]
Wygenerował mi częstotliwość 400kHz, co daje zmianę stanu co 1,25us.

Mi wygenerowal 290kHz :D

Wygląda na to że:

a) mam badziewny hardware
b) hal-e windowsa i linuxa są identyczne Smile
c) czas kupić coś na USB

Waldemar Krzok
Guest

Fri Aug 14, 2009 9:11 am   



Sebastian Biały schrieb:
Quote:
Waldemar Krzok wrote:
Co to jest port mapping w tym kontekście?
to, że program w User Space nie widzi hardware tylko HAL (hardware
abstraction layer). Wchodzisz na wirtualnym porcie, a wychodzisz na
hardware. Po drodze jest driver HAL.

Jesteś w stanie ocenić ten narzut? czy HAL w tym wypadku nie robi po
prostu outb->real_outb ? Bo tutaj traci się za dużo mocy procesora i
prędkośc tej operacji prawie nie zalezy od predkości CPU.

w zależności od implementacji jaja może być dużo. Kompletne przełączenie
kontekstu z user na kernel i na oborot trochę może potrwać, rzędu
kilkadziesiąt ns do pojedynczych mikro-s. Możesz poszukać jakiegoś
rt-kernela, ale tu chyba nie będzie szybciej, ale za to z definiowalnym
opóźnieniem. Wszystkie SO multitasking lepiej sobie radzą z pakietami
danych: sterownik operuje bezpośrednio na nóżkach, a dane dostaje (i ew.
wysyła) w pakietach. Wtedy ograniczasz zmiany kontekstu do minimum.
Spróbuj napisać mały sterowniczek z twoim programem i zobacz ile
hardware naprawdę może. Albo ściągnij sobie free-dos z sieci i
przetestuj na real-mode w DOSie.
Aha, USB też pracuje najlepiej przetwarzając dane pakietami, więc dużo
chyba nie zyskasz, oprócz tego, że USB ma teraz każda husteczka do nosa,
a LPT jest dinozaurem Wink.

Waldek

Sebastian Biały
Guest

Fri Aug 14, 2009 9:11 am   



Waldemar Krzok wrote:
Quote:
Albo ściągnij sobie free-dos z sieci i
przetestuj na real-mode w DOSie.

Jak znajdę gdzieś TurboC w wygodnej wersji to z ciekawości sprawdze.

Quote:
Aha, USB też pracuje najlepiej przetwarzając dane pakietami, więc dużo
chyba nie zyskasz, oprócz tego, że USB ma teraz każda husteczka do nosa,
a LPT jest dinozaurem Wink.

Ja mam wlasnie pakietowo - najczęsciej to dane SPI. Jesli tylko scalak
bedzie w stanie mi przygarnąć cała ramkę i wypluć ją na SPI to luksus.

Waldemar Krzok
Guest

Fri Aug 14, 2009 10:02 am   



Sebastian Biały schrieb:
Quote:
Waldemar Krzok wrote:
Albo ściągnij sobie free-dos z sieci i przetestuj na real-mode w DOSie.

Jak znajdę gdzieś TurboC w wygodnej wersji to z ciekawości sprawdze.

Aha, USB też pracuje najlepiej przetwarzając dane pakietami, więc dużo
chyba nie zyskasz, oprócz tego, że USB ma teraz każda husteczka do
nosa, a LPT jest dinozaurem Wink.

Ja mam wlasnie pakietowo - najczęsciej to dane SPI. Jesli tylko scalak
bedzie w stanie mi przygarnąć cała ramkę i wypluć ją na SPI to luksus.

no to spróbuj z driverem Linuxowym. Tu ło masz artykuł:
http://www.freesoftwaremagazine.com/articles/drivers_linux

Na stronie 11 jest listing drivera LPT. Musisz go przerobić tak, by brał
twój cały pakiet i wypluwał za jednym zamachem. A najpierw zrobić tylko
driver testowy, który przy init_module startuje mruganie a przy
exit_module zwalnia port.

Waldek

Goto page Previous  1, 2, 3, 4, 5  Next

elektroda NewsGroups Forum Index - Elektronika Polska - Sprawdzenie maksymalnej prędkości machania LPT dlaczego tylko 290 kHz?

NOWY TEMAT

Regulamin - Zasady uzytkowania Polityka prywatnosci Kontakt RTV map News map