Új hozzászólás Aktív témák

  • dobragab

    addikt

    válasz SP!T #59796 üzenetére

    Értékelem. Privátban kaptam tőled még pár grafikont, az illusztrációhoz jól jön.

    Alapprobléma: MouseTester grafikonon miért két párhuzamos görbe van (mármint amit a pöttyök kirajzolnak), hiszen normális esetben egy görbe van.

    Ezt tudja okozni az instabil polling rate is, itt azonban nem erről van szó, fix 1000 Hz.

    Az xCounts grafikonon viszont egyértelműen látszik, hogy a count-ok értékei ennyire kiugróak.

    Ha alaposabban megnézed, kb. állandó sebességnél minden második pollnál valahányszor akkora a count- mint az előzőnél. Pl. 30-60-30-60-... Jelen esetben az arányuk 1:2.

    Az egerek működéséről röviden annyit, hogy a szenzor mellett van benne egy MCU is, ami a szenzort (és kapcsolókat, világítást, stb.) vezérli, és adatait továbbítja USB-n. A szenzor a count változó értékét folyamatosan (valójában frame-enként, ami egy jófajta WMO-nál pl. 9000 Hz) növeli, ahogy mozog az egér. Az MCU ezt időnként kiolvassa, nullázza, és az USB frame-ben már a magának cache-elt értéket tudja továbbküldeni, nem akkor kell a szenzorból kiolvasni. Adalék: régebbi szenzoroknál pollonként többször érdemes kiolvasni. Hiszen ha csak 8 bites a szenzor count változója, de az MCU-é 16 bites, akkor 1 ms-onkénti kiolvasással betelik a 8 bit 1 m/s-nál 1600 DPI-n, míg 0,25 ms-onkénti kiolvasással 1600 DPI-n is csak 4 m/s-nál telik be.

    Az MCU valamilyen A gyakorisággal olvassa ki a szenzorból a count-ot, és B gyakorisággal küldi el az adatot USB-n. Akkor alakul ki ilyen kettős görbe, ha A és B nincsenek szinkronizálva. Az alábbi, szakszerűen összepaintelt ábra remélhetőleg segít a megértésben.

    A fekete az idő-tengely, skála 1 ms-onként. A kék nyilak az USB pollok, jelen esetben ez 1000 Hz. A piros nyilaknál olvassa ki az értékeket az MCU a szenzorból.

    Tehát két kék nyíl között hol kétszer olvassa ki a count-ot (ekkor lesz pl. 60), hol csak egyszer (ekkor lesz 30). Ez semmiféle problémát nem okoz, csak rondán mutat. Akkor nem lesz ilyen ronda, ha a két framerate szinkronizált, azaz A többszöröse B-nek.

    Ebből pár dolog még megfigyelhető. Először is, ha állandó a Read frekvenciája, akkor a két görbe közti eltérés arányának (ami itt 1:2) szomszédos számoknak kell lennie.

    Másrészt ebből meghatározható maga a Read frekvenciája (A) is. B ugye ismert, 1000 Hz. 2 ms alatt 3-szor olvasta ki, azaz 2/3 ms-onként, 1500 Hz-en. A két görbe pontjainak száma is fontos, itt 1:1 arányban vannak, azaz ugyanannyi pont van az egyik görbén, mint a másikon.

    Erre nem mind magamtól jöttem rá, pár hónapja olvastam qsxcv egy vonatkozó hozzászólását, talán a smoothing-gal kapcsolatban.

    [ Szerkesztve ]

    Tudom, tudom, akasszak a tökömre egy lámpát, hogy sötétben is tudjak kaszálni.

Új hozzászólás Aktív témák