RTV forum PL | NewsGroups PL

Jak napisać procedurę w ASM 86 do precyzyjnego odmierzania czasu < 1 ms na PC?

Krotkie odcinki czasu w PC

NOWY TEMAT

elektroda NewsGroups Forum Index - Elektronika Polska - Jak napisać procedurę w ASM 86 do precyzyjnego odmierzania czasu < 1 ms na PC?

Goto page 1, 2  Next

Kris
Guest

Mon Nov 15, 2004 9:29 pm   



Pisal moze ktos w asm 86 procedurke, która odmierzala krotkie odcinki
czasu < 1 ms ? Oczywiście chodzi o PCty. Konkretnie chodzi o wystawianie
na złaczu RS odpowiednich stanów w określonym czasie.


--
KK

www.powercontrol.pl

Maksymilian Dutka
Guest

Mon Nov 15, 2004 9:36 pm   



Kris napisał(a):
Quote:
Pisal moze ktos w asm 86 procedurke, która odmierzala krotkie odcinki
czasu < 1 ms ? Oczywiście chodzi o PCty. Konkretnie chodzi o wystawianie
na złaczu RS odpowiednich stanów w określonym czasie.


--
KK

www.powercontrol.pl

Pod DOS-a nie powinno być problemu, trzeba tylko dobrać opóźnienie dla
konkretnej częstotliwości procesora.

Grzegorz Kurczyk
Guest

Mon Nov 15, 2004 10:42 pm   



Użytkownik Maksymilian Dutka napisał:

Quote:
Kris napisał(a):


Pod DOS-a nie powinno być problemu, trzeba tylko dobrać opóźnienie dla
konkretnej częstotliwości procesora.

Witam
W swoich programach "zatrudniałem" do tego celu timer systemowy 8254
zaszyty w chipsecie płyty głownej. jest to o tyle lepsze rozwiązanie, że
czas nie zależy od prędkosci procesora. Metoda ta też nieźle sprawdza
się w windowsach z serii 9x



--
Pozdrawiam
Grzegorz Kurczyk
http://www.control.slupsk.pl
ftp://ftp.control.slupsk.pl
GG: 1445218

UWAGA !!! adres e-mail w nagłówku jest pułapką na spamerów
przed znakiem @ powinno być moje imię małymi literami

Maksymilian Dutka
Guest

Mon Nov 15, 2004 10:44 pm   



Grzegorz Kurczyk napisał(a):
Quote:
Użytkownik Maksymilian Dutka napisał:

Kris napisał(a):


Pod DOS-a nie powinno być problemu, trzeba tylko dobrać opóźnienie dla
konkretnej częstotliwości procesora.


Witam
W swoich programach "zatrudniałem" do tego celu timer systemowy 8254
zaszyty w chipsecie płyty głownej. jest to o tyle lepsze rozwiązanie, że
czas nie zależy od prędkosci procesora. Metoda ta też nieźle sprawdza
się w windowsach z serii 9x



Ale poniżej 1ms to tak nie zajdziesz.


Tomasz Piasecki
Guest

Mon Nov 15, 2004 11:31 pm   



Maksymilian Dutka wrote:

Quote:
Ale poniżej 1ms to tak nie zajdziesz.
Pod win2k można robić pętelkę zależną od wyniku funkcji

QueryPerformanceCounter. I liczyć na to że Twoje zadanie nie zostanie w
brutalny sposób przerwane. Poniżej 1ms się da spokojnie.

TP.

--
| _ _ _ |
| _____ _| |_| | __ (o) | | __ __ @poczta.onet.pl |
| | \ | | |o \| \| |/o |/ _\| \ |
| |_|_|_| \_| |__/|_| |_|\__|\__||_| Tomasz Piasecki |

J.F.
Guest

Mon Nov 15, 2004 11:45 pm   



On Tue, 16 Nov 2004 00:31:06 +0100, Tomasz Piasecki wrote:
Quote:
Maksymilian Dutka wrote:
Ale poniżej 1ms to tak nie zajdziesz.

Pod win2k można robić pętelkę zależną od wyniku funkcji
QueryPerformanceCounter. I liczyć na to że Twoje zadanie nie zostanie w
brutalny sposób przerwane. Poniżej 1ms się da spokojnie.

Niestety - nawet w czasie dzialania procesu z priorytetem Real Time,
niewywlaszczanego - kursor sie rusza a system na pingi odpowiada :-(

J.

Tomasz Piasecki
Guest

Tue Nov 16, 2004 12:09 am   



J.F. wrote:

Quote:
Niestety - nawet w czasie dzialania procesu z priorytetem Real Time,
niewywlaszczanego - kursor sie rusza a system na pingi odpowiada Sad
NO ja się z tym zgadzam, pod windą nigdy nie da się odmierzyć dokładnie

jakiegoś odcinka czasu. Niemniej jednak używam tej funkcji do mierzenia
czasu jakiś czynności - transferu DMA czy coś. Rozdzielczości są tu
rzędu dziesiątek mikrosekund OIDP.

TP.

--
| _ _ _ |
| _____ _| |_| | __ (o) | | __ __ @poczta.onet.pl |
| | \ | | |o \| \| |/o |/ _\| \ |
| |_|_|_| \_| |__/|_| |_|\__|\__||_| Tomasz Piasecki |

Piotr Wyderski
Guest

Tue Nov 16, 2004 12:30 am   



Kris wrote:

Quote:
Pisal moze ktos w asm 86 procedurke, która odmierzala krotkie odcinki
czasu < 1 ms ? Oczywiście chodzi o PCty. Konkretnie chodzi o wystawianie
na złaczu RS odpowiednich stanów w określonym czasie.

Jesli to ma chodzic na golej maszynie/pod DOSem, to skorzystaj
z instrukcji rdtsc, ujawniajaca biezaca wartosc licznika cykli (bedziesz
musial recznie wpisac albo zmierzyc czestotliwosc procesora). Jesli
zas chodzi o Windows/Linuksa, to zapomnij, nie da sie.

Pozdrawiam
Piotr Wyderski

Adam Dybkowski
Guest

Tue Nov 16, 2004 1:01 am   



Piotr Wyderski wrote:

Quote:
Pisal moze ktos w asm 86 procedurke, która odmierzala krotkie odcinki
czasu < 1 ms ? Oczywiście chodzi o PCty. Konkretnie chodzi o wystawianie
na złaczu RS odpowiednich stanów w określonym czasie.

Jesli to ma chodzic na golej maszynie/pod DOSem, to skorzystaj
z instrukcji rdtsc, ujawniajaca biezaca wartosc licznika cykli (bedziesz
musial recznie wpisac albo zmierzyc czestotliwosc procesora). Jesli
zas chodzi o Windows/Linuksa, to zapomnij, nie da sie.

Nie zakładaj, że się nie da, jeżeli się da.

Kwestia tylko wiedzy i czasu, który trzeba na to poświęcić. Polecam
rozpoczęcie zabawy z Windows 2000/XP DDK. Z nim da się zrobić prawie
wszystko, włącznie ze sterownikami blokującymi proca w 100% dla siebie
na prawie dowolny czas.

--
Adam Dybkowski
http://www.amwaw.edu.pl/~adybkows/

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

Grzegorz Kurczyk
Guest

Tue Nov 16, 2004 7:54 am   



Użytkownik Maksymilian Dutka napisał:
Quote:
Grzegorz Kurczyk napisał(a):


Ale poniżej 1ms to tak nie zajdziesz.

A niby czemu nie ?
Na upartego to i 1us się odmierzy, ale nie będzie to już zbyt dokładne
(tzn trzeba troszkę pokombinować)

--
Pozdrawiam
Grzegorz Kurczyk
http://www.control.slupsk.pl
ftp://ftp.control.slupsk.pl
GG: 1445218

UWAGA !!! adres e-mail w nagłówku jest pułapką na spamerów
przed znakiem @ powinno być moje imię małymi literami

neuron
Guest

Tue Nov 16, 2004 10:13 am   



Quote:
Nie zakładaj, że się nie da, jeżeli się da.

Kwestia tylko wiedzy i czasu, który trzeba na to poświęcić. Polecam
rozpoczęcie zabawy z Windows 2000/XP DDK. Z nim da się zrobić prawie
wszystko, włącznie ze sterownikami blokującymi proca w 100% dla siebie
na prawie dowolny czas.

nie da sie poswiecic 100% a trzeba Smile

Problem w przypadku systemow wielozadaniowych z wywlaszczaniem - takich jak
windowzy wszelakie jest nie wygenerowanie odpowiedniego czasu a skorzystanie
z wynikow tego generowania. Co z tego ze uda nam sie wymusic przerwanie
sprzetowe np z 8245 skoro kierowane jest ono do jadra gdzie zostanie
zamienione na komunikat ktory ''utknie'' w kolejce komunikatow docelowej
aplikacji.

System Windows jest systemem wielozadaniowym z tak zwanym wywłaszczaniem -
co to oznacza ?
Pomimo że system przetwarza x procesów to tak naprawdę realizowany w danej
chwili jest jeden i tylko jeden proces. Co ściśle wyznaczony czas zegar
systemowy generuje przerwania kierowane do jądra sytemu, a jądro zawiesza
wykonanie bieżącego procesu bez względu na to co w danej chwili proces robi
i nie ma żadnej możliwości zablokowania tego przerwania. Technikę tę
nazywamy wywłaszczeniem procesu. Pamietajmy tez ze system faworyzuje swoje
wlasne procesy oraz obsluge
systemu plikow i zaden proces nie wygra z obsluga dajmy na to menagera
pamieci i zwiazanego z nim
dyskowego pliku wymiany - a kazda operacja dyskowa to milisekundy.
Reasumujac - nie jest mozliwe napisanie normalnej windosowej aplikacji ktora
by kozystala z interwalow ponizej 1ms nie robiac tego kosztem innych
programow i nie powodujac predzej czy pozniej
braku stabilnosci systemu. Pozostaje albo przezucenie zadania na zewnetrzne
urzadzenie albo
system czasu rzeczywistego ktory pozwala na odpowiednie ksztaltowanie
procesow.
wojtek
www.neuron.com.pl

Roman
Guest

Tue Nov 16, 2004 10:53 am   



"neuron" <neuron@WONTOzipnet.com.pl> wrote in message
news:cncirv$4mq$1@213.238.112.13.adsl.inetia.pl...
Quote:
Reasumujac - nie jest mozliwe napisanie normalnej windosowej aplikacji
ktora
by kozystala z interwalow ponizej 1ms nie robiac tego kosztem innych
programow i nie powodujac predzej czy pozniej
braku stabilnosci systemu.

A w praktyce elektronicznej wygląda to tak, że gdy obserwuje się na
oscyloskopie impulsy np. na prościutkim programatorku pamięci widać
wyraźnie ich rozmycie lewo/prawo, czyli ich długości czasowe nie są
powtarzalne, lecz lekko fluktuują +/-. Jest tak nawet w okienku DOS pod
Win9x. Te same obserwacje prowadzone gdy komp był wystartowany z dyskietki
czystym DOS-em 6.22 pokazują, że impulsy "stoją" w miejscu jak zbój...

Roman

Piotr Wyderski
Guest

Tue Nov 16, 2004 11:01 am   



Adam Dybkowski wrote:

Quote:
Nie zakładaj, że się nie da, jeżeli się da.

Kwestia tylko wiedzy i czasu, który trzeba na to poświęcić.

Odwrotnie, kwestia wiedzy jest uswiadomienie sobie faktu,
ze pisanie sterownikow blokujacych wywlaszczanie na dluzszy
czas jest calkowicie sprzeczne z filozofia systemow operacyjnych
z rodziny Windows NT/Linuksa.

Quote:
Polecam rozpoczęcie zabawy z Windows 2000/XP DDK.

Adamie, pisaniem sterownikow zajmowalem sie przez
kilka lat, w tym i pod wyzej wymienione systemy... :-)

Pozdrawiam
Piotr Wyderski

J.F.
Guest

Tue Nov 16, 2004 11:06 am   



On Tue, 16 Nov 2004 11:13:44 +0100, neuron wrote:
Quote:
System Windows jest systemem wielozadaniowym z tak zwanym wywłaszczaniem -
co to oznacza ?
Pomimo że system przetwarza x procesów to tak naprawdę realizowany w danej
chwili jest jeden i tylko jeden proces.

Trzeba sobie kupic peceta z dwoma procesorami :-)

Quote:
Reasumujac - nie jest mozliwe napisanie normalnej windosowej aplikacji ktora
by kozystala z interwalow ponizej 1ms nie robiac tego kosztem innych
programow

Ale to sie da napisac o bardzo duzej ilosci systemow i komputerow.
W zasadzie to znam tylko jeden ktory to w miare potrafil -
transputery.
Nawiasem mowiac - przy zegarze 2GHz przelaczenie procesow powinno sie
udac w czasie ok 1us :-)

Quote:
i nie powodujac predzej czy pozniej braku stabilnosci systemu.

O przepraszam - czemu ? Moze miec klopoty z odbieraniem danych z RS,
ale poza tym powinien dzialac w miare dobrze ..

J.

Kris
Guest

Tue Nov 16, 2004 11:26 am   



Dziekuje za wszystkie odpowiedzi.

Na pocztaku tez myslalem o wykorzystaniu 8254. Aplikacja ma dzialac pod
Windows.
Chyba pozostaje jakis maly atmelek podlaczany na COM i wymiana
informacji z nim.

Pytanie do Adama: Jak to rozwiazałes w swoim programie ISP Programmer?
Prawdę mówiąc piszę coś bardzo podobnego. Edytor do asemblera i chciałem
z nim zintegrować programator ISP. Obecnie mam to zrobione tak że z
poziomu edytora wywołuję program dosowy z odpowiednimi parametrami i
wszystko gra ale chciałbym to zrobić jako jedną aplikację.

Goto page 1, 2  Next

elektroda NewsGroups Forum Index - Elektronika Polska - Jak napisać procedurę w ASM 86 do precyzyjnego odmierzania czasu < 1 ms na PC?

NOWY TEMAT

Regulamin - Zasady uzytkowania Polityka prywatnosci Kontakt RTV map News map