rovid ideju idozitesek PC-n
Szabo Laci
szala at drotposta.hu
Mon Dec 16 13:24:47 CET 2002
Istvan Retaller <istvan.retaller at evoran.hu> 2002.12.17. 11:18:03 +1h-kor írta:
> 2002.12.17. 11:35:14, "Bodosi Balazs" <BBALAZS at phys.szote.u-szeged.hu>
> wrote:
>
> >PIC programozot irok w98 ala assemblyben, mar teljesen keszen van, de
> >az idoziteseket meg ures ciklussal oldom meg, igy ez gep es
> >sebessegfuggove teszi a progit. Szeretnek valami univerzalisan
> >hasznalhato otletetet a nagyon rovid (100ns) koruli idozitesekre. A
> >portra iras/olvas fix ideig tart vagy az is chipset es sebessegfuggo?
> >Valami 4ms koruli idozitesi otlet is kellene, de ezt talan mar le
> >tudom trukkosen kezelni.
> >Vegso otletkent arra gondoltam, hogy 1s-ig szamoltatok a geppel
> >ures ciklusban es ez a szam fog a gep sebessegenek alapjaul szolgalni.
> >De ez multitaszkos kornyezetben nem tunik tul jo otletnek...
> >Valaki mas esetleg osszefutott-e ezzel a gonddal?
> >A windows WM_TIMER-jet mar probaltam...
> >Udv:
> > BBalazs
> >
> >http://www.phys.szote.u-szeged.hu/bbalazs/bbalazs.htm
> >
>
> Szia, BBalazs,
> eleg rossz hirem van. Ezeket a csapdakat mar bejartam, irtam PIC
> programozot, csinaltam GAL programozot, ami assemblyben egyetlen
> madzagon kommunikalt oda-vissza, de Winfos alatt mindennek lottek.
> http://www.evoran.hu/
> A Win sajat taskvezerlese ugyanis konyortelenul akkor veszi el a
> vezerlest a programodtol, mikor akarja, hiaba az IT tiltas es mas
> DOS-ban alkalmazott trukk. Hiaba minden assembly ravaszkodas, a
Hogy nektek semmi sem jó.
Mondj egy másik multi-task oprendszert amelyik nem igy csinálja!
> Csak a Win sajat idoziteseire tamaszkodhatsz, de ezek is vacakok
> rovid idozites eseten.
nem vacakok
> Esetleg a programod prioritasat novelheted, remlik, hogy erre van
> mod, ez engem is erdekelne, de nem ertek a WIN-hoz.
akkor miért szidod!?
ez egy régi levél egy másik listáról.
> Udv, Mindenki!
>
> Haaat, sracok, azt kell mondjam, hogy Jan Chika a KIRALY!
> Ugyanis (majdnem) mindenki megprobalt lebeszelni arrol, hogy Windows-ban
> nem lehet 1_msec-es idozitest csinalni, de Jan Chikanak van igaza:
> igenis lehet! Meghozza eleg korrektul, sot akar ketfele modszerrel is.
>
> Az egyik megoldas:
>
> >>van a winben egy prezicion timer amit tevesen multimedia idozitonek
> >>>>szoktak hivni
> >>o kepes arra hogy callbackoljon 1msecenkent
>
> >>egyszeru!
> >> a window megtudja mondani hogy az adot gepen milyen felbontast >>tamogat
> >> kerdezd le
> >>
> >>"timeGetDevCaps" hivas a winmm libraryban
> >>
> >>az idozitest a "timeSetEvent"-el allithatod
>
>
> A masik megoldas (szinten Jan Chikatol kaptam a tippet):
>
> A lenyeg a QueryPerformanceCounter() fv. ami egy belso HW regiszterbol
> veszi az erteket, tehat elvileg a pontossaga fuggetlen minden sw
> esemenytol.
>
> Akit erdekel, annak itt egy gyorsan osszedobott pelda, ami csak annyit
> csinal, hogy egy szamlalot 1kHz-el leptet (egeszen pontosan 1000.1526
> Hz-el; a gyorsabb osztas miatt szamoltam csak 1193-mal; nekem eleg volt
> ez a pontossag), es folyamatosan kiirja a displayre az erteket.
>
>
> #include <stdio.h>
> #include <windows.h>
> #include <winnt.h>
>
> long int counter_1000_Hz;
> LARGE_INTEGER counter_1193182_Hz;
>
> void main (void)
> {
> while(1)
> {
> if(QueryPerformanceCounter(&counter_1193182_Hz)!=0)
> {
> counter_1000_Hz=counter_1193182_Hz.LowPart/1193;
> printf("%lu\n\r",counter_1000_Hz);
> }
> }
> }
>
>
> Egyebkent itt lehet olvasni egy-ket okossagot mindket megoldasrol:
> http://www.wideman-one.com/gw/tech/dataacq/wintiming.htm
>
>
> Viktor
>
> ----
> lejelentkezes: maiser at chipcad.hu "unsub lista" tartalmu levellel
> tovabbi info: maiser at chipcad.hu "help" tartalmu levellel
> eszrevetel: postamester at chipcad.hu
More information about the Elektro
mailing list