Elektroda.pl
Elektroda.pl
X
Arrow Multisolution Day
Proszę, dodaj wyjątek www.elektroda.pl do Adblock.
Dzięki temu, że oglądasz reklamy, wspierasz portal i użytkowników.

ATMega8 + enkoder myszy + USB HID, czy wystarczy wydajności ?

keeller 03 Mar 2012 15:24 1291 1
  • #1 03 Mar 2012 15:24
    keeller
    Poziom 11  

    Witam

    Chcę zastosować mikrokontroler ATMega8 do sprawdzania pozycji z 4 enkoderów z myszy kulkowych i komunikowania jako joystick przez USB jako interfejs HID.

    Biblioteke zastosowałbym z projektu:

    http://www.obdev.at/products/vusb/hidkeys.html

    Oczywiście zgłaszając jako joystick i wysyłając dane o pozycji poszczególnych osi w raporcie.

    Ma to być kierownica. Dla 3 pedałów wystarczą mi wartości 0-255, sama kierownica chciałbym aby wysyłała zakres wartości conajmniej -1024 - 1024 (o ile się nie myle maksymalnie dla USB HID jako oś joysticka to 16bit). Możemy pominąć pedały bo wymagają mniejszej częstotliwości i rozdzielczości.

    Nie chciałbym zgubić żadnego "zęba", żeby nie stracić wyśrodkowania/kalibracji.

    Z pewnym zapasem wyliczyłem, że musiałbym zliczyć w przypadku najszybszego ruchu 2000 szczelin głównego enkodera/s.

    I teraz zastanawiam się czy w ogóle jest to możliwe zakładając użycie podanej wyżej biblioteki, wysyłając raporty o stanie kontrolera najrzadziej co 30-40ms.

    Można założyć użycie maksymalnej dopuszczonej częstotliwości kwarcu - 16 Mhz.

    Czy żeby pogodzić komunikację USB z pobieraniem danych z encoderów powinienem zewnętrzenie wykryć zmianę stanu na którymkolwiek z encodrów i zgłosić przerwanie do mikrokontrolera, aby ten sprawdził na którym encoderze i w którą stronę przeskoczył ząb czy może programowo wystarczy i wysyłanie komunikatu USB zawsze uda się wstrzelić pomiędzy sprawdzanie stanów loginczych na wyjściach encoderów ?

    Czy ktoś używał tej biblioteki i wie ile ms zajmuje wysłanie raportu HID ?

    Pewnie żeby wszystko działało bezbłędnie trzeba by na każdy ruch szczeliny dokonać 4-5 sprawdzeń stanów logicznych na wyjściach encodera co daje ok. 10000 sprawdzeń/s.

    Czy w razie czego dobrym pomysłem byłoby zmodyfikowanie biblioteki tak, aby w wysyłanie raportu USB wpleść kilka krótkich przerw na sprawdzenie stanu enkoderów, jeżeli wysyłanie raportu trwało by np. dłużej niż przeskok szczeliny przez encoder i uC byłby wtedy zajęty ?

    0 1
  • Arrow Multisolution Day
  • #2 03 Mar 2012 16:08
    tmf
    Moderator Mikrokontrolery Projektowanie

    A nie prościej kupić AVR ze sprzętowym interfejsem USB i skorzystać z LUFA gdzie jako przykład ma m.in. HID i kilka urządzeń, w tym joystick?

    0