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

V-USB (AVR USB) Tanie urządzenie USB w oparciu o AVR

m_marko 10 Mar 2013 12:23 77711 181
  • PCBway
  • #152
    atom1477
    Poziom 43  
    Dobra, ale to nie rozwiązuje problemu, bo te problemy występują i pod AVRstudio.
    Poza tym to bez sensu ściągać środowisko do projektu który równie dobrze pójdzie na Programmers Notepad.
    No i bez obrazy, ale Twoje odpowiedzi są nie na temat :D
    Tematem jest jak to skompilować pod PN, a nie jak tego nie robić.
  • #154
    atom1477
    Poziom 43  
    Napisałem wyżej: bo moje pytanie dotyczy PN.
  • #155
    slx
    Poziom 18  
    To zmień w makefile odnośniki do includów
    ".." to katalog wyżej
    "." to aktualny katalog
    wszystkie położenia katalogów są względem tego w którym jest makefile


    Dla twojego przypadku to powinno być dobre
    Kod: bash
    Zaloguj się, aby zobaczyć kod
  • #156
    rybek_el
    Poziom 10  
    cześć,
    jak zmodyfikować ten raport:
    Kod: c
    Zaloguj się, aby zobaczyć kod


    1. do przesyłania danych 16 bitowych?
    2. do wysyłania dużo więcej niż 254 bajty w jednym raporcie?

    z góry dzięki za pomoc, bo nie ogarniam tych raportów :|
  • #157
    atom1477
    Poziom 43  
    Nie da się tego zrobić.
    Wysyłanie danych 16-to bitowych to tylko kwestia interpretacji.
    Po prostu wysyłaj 2 po bajty i traktuj to jako jedną daną 16-to bitową.
    A więcej jak 254B chyba się nie da w wysyłać.
  • PCBway
  • #158
    pawel1730
    Poziom 15  
    Witam,
    1) Wiecie może jak pisać deskryptor PID/HID dla FFB?

    2) Według przykładu na stronie: usb.org wygląda to tak jak na zdjęciu poniżej:

    V-USB (AVR USB) Tanie urządzenie USB w oparciu o AVR

    I do tego celu wykorzystuje się stronę: 'Physical Interface', natomiast w narzędziu HID Descriptor Tool po prawej stronie zdjęcia nie widzę właśnie tej strony ;/ , czy wiecie jak to naprawić?
  • #159
    Sparrowhawk
    Poziom 21  
    rybek_el napisał:
    jak zmodyfikować ten raport: ...


    Po pierwsze polecam pobrać HID Descriptor Tool, np. stąd: HID Resources

    Aby przesłać wartość 16 bitową musisz zmienić :"Logical_Maximum" na 65535, oraz wartość REPORT_SIZE na 16.

    O ilości danych wysyłanych decyduje REPORT_COUNT. Ale z tego co pamiętam, to chyba było jakieś ograniczenie, ale mogę być w błędzie.

    Pamiętaj aby w odpowiednich miejscach zmienić też rozmiar usbHidReportDescriptor[]. Rozmiar ten definiowany jest w dwóch miejscach.
  • #160
    pawel1730
    Poziom 15  
    czy wie ktoś może dlaczego u mnie w tym narzędziu HID Descriptor Tool, brakuje strony: "USAGE_PAGE (Physical Interface)" ?
  • #161
    Sparrowhawk
    Poziom 21  
    U mnie też nie ma ;) Ale w końcu można napisać to ręcznie :)
  • #162
    pawel1730
    Poziom 15  
    w jaki sposób to napiszesz żeby później mieć inne możliwości zachowań z zakładki "USAGE" ?
  • #164
    pawel1730
    Poziom 15  
    ale bardzo ułatwia prace i zapobiega zrobieniu błędów z zapisie w hex ;/

    EDIT

    ale wracając do pytania czy wie ktoś jak sprawnie napisać deskryptor PID/HID dla FFB ?
  • #165
    Sparrowhawk
    Poziom 21  
    Temat nie jest prosty.

    Sam deskryptor może wyglądać np. tak:
    Kod: c
    Zaloguj się, aby zobaczyć kod


    Proponuję poczytać tutaj: HID & Force Feedback

    Oraz tutaj: Force Feedback Device

    Może te linki Ci pomogą, pracy widać sporo, czytania również. Powodzenia.
  • #166
    Dragas
    Poziom 26  
    Witam

    Chciałbym poprosić o pomoc przy wysyłaniu danych z avr do PC. Układ zewnętrzny (na USB) pracuje pod kontrolą atmegi8 12MHz. Chciałbym, aby układ wysyłał sam z siebie dane do komputera (a nie kiedy komputer poprosi o te dane). Próbowałem zdefiniować deskryptor, lecz nie wiem jak zrobić, aby wysyłane dane do komputera miały długość 32 bajty (o ile można aż tyle wysłać za jednym razem). Kolejnym problemem jest jako co ustawić "USAGE" bo w postach powyżej widzę tylko joystick (0x04). Czytałem jedną stronę jak to konfigurować, ale nadal nie rozumiem. Dodam, że układ bez problemu działa w drugą stronę - wysyłanie danych z PC do avr.
  • #168
    Dragas
    Poziom 26  
    Urządzenie w menadżerze urządzeń widoczne jest w części "libusb-win32 devices" i trudno mi powiedzieć jaki ma to być dokładny typ urządzenia. Dane będą wysyłane w odstępach czasu od kilku sekund do kilkudziesięciu minut. Jednorazowa paczka ma się składać z maksymalnie 32 znaków (ale nie wiem czy można definiować dynamicznie długość, dlatego przyjąłem że 32 znaki), jednakże jeśli będzie problem z wysłaniem aż takiej ilości znaków (o czym jest mowa kilka postów wyżej), to nawet w 8 znakach dam rade sobie poradzić.
  • #169
    pawel.l89
    Poziom 12  
    Panowie, czy któryś z was używał VUSB z pamięcią zewnętrzną RAM ? Ja mam 64k na mojej płytce z atmega128 i niestety gdy dodaje:

    Kod: c
    Zaloguj się, aby zobaczyć kod


    do przykładu hid-mouse to coś mi nie działa. Generalnie chodzi o przypisanie SP bo po wykomentowaniu tej linijki wszystko śmiga. Widziałem że w usbdrv jest sporo kodu w asemblerze i podejrzewam, że tam jest jakiś problem. Ja niestety z asemblerem nie mam zbyt dużo doswiadczenia. Czy może ktoś pomóc ? Generalnie mam zamiar wykorzystać VUSB w moim projekcie gdzie potrzebuje więcej pamięci niż wbudowana.
  • #171
    Użytkownik usunął konto
    Użytkownik usunął konto  
  • #173
    Użytkownik usunął konto
    Użytkownik usunął konto  
  • #175
    Siadrak
    Poziom 2  
    Witam,
    podpinam się pod temat. Mam problem, próbuję uruchomić hid-mouse, jako sprawdzenie, czy podłączenie działa, czy PC widzi "AVR" jako urządzenie HID.
    Robię wszystko wg zaleceń, tj. schemat- podłączenie VCC przez 2 diody, D- przez 1,5k do VCC, D+ i D- przez 68 omów do nóżek odpowiednio D2 i D3, podłączony zewnętrzny kwarc 16MHz. Zmieniłem ustawienia w usbconfig, ustawiłem fusy, ale PC nie rozpoznaje mi urządzenia, po podłączeniu pojawia mi się komunikat: Urządzenie USB nie zostało rozpoznane. Przejrzałem cały temat, natrafiłem na podobne problemy kolegów, próbowałem dawać jedną diodę, 2 diody, podciągałem D+ przez 1Mom do GND, ale nic nie dało. Może koledzy podsunął jakieś wskazówki, gdzie może leżeć błąd? No i najważniejsze, próbuję wystartować na ATmedze 8.
  • #176
    atom1477
    Poziom 43  
    pawel.l89 napisał:
    Panowie, czy któryś z was używał VUSB z pamięcią zewnętrzną RAM ? Ja mam 64k na mojej płytce z atmega128 i niestety gdy dodaje:

    Kod: c
    Zaloguj się, aby zobaczyć kod


    do przykładu hid-mouse to coś mi nie działa. Generalnie chodzi o przypisanie SP bo po wykomentowaniu tej linijki wszystko śmiga. Widziałem że w usbdrv jest sporo kodu w asemblerze i podejrzewam, że tam jest jakiś problem. Ja niestety z asemblerem nie mam zbyt dużo doswiadczenia. Czy może ktoś pomóc ? Generalnie mam zamiar wykorzystać VUSB w moim projekcie gdzie potrzebuje więcej pamięci niż wbudowana.

    Trochę późno ale może się komuś jeszcze przyda.
    Problem leży w tym ze VUSB wykorzystuje podobierane instrukcje do realizacji odpowiednich Timingów, a niektórymi z tych instrukcji są instrukcje Push i Pop.
    Przy stosie w pamięci wewnętrznej Push/Pop trwa 2 cykle i do takiego czasu trwania jest dostosowane VUSB.
    Przy pamięci zewnętrznej Push/Pop trwa 3 cykle i już VUSB się wysypuje.

    Siadrak napisał:
    Witam,
    podpinam się pod temat. Mam problem, próbuję uruchomić hid-mouse, jako sprawdzenie, czy podłączenie działa, czy PC widzi "AVR" jako urządzenie HID.
    Robię wszystko wg zaleceń, tj. schemat- podłączenie VCC przez 2 diody, D- przez 1,5k do VCC, D+ i D- przez 68 omów do nóżek odpowiednio D2 i D3, podłączony zewnętrzny kwarc 16MHz. Zmieniłem ustawienia w usbconfig, ustawiłem fusy, ale PC nie rozpoznaje mi urządzenia, po podłączeniu pojawia mi się komunikat: Urządzenie USB nie zostało rozpoznane. Przejrzałem cały temat, natrafiłem na podobne problemy kolegów, próbowałem dawać jedną diodę, 2 diody, podciągałem D+ przez 1Mom do GND, ale nic nie dało. Może koledzy podsunął jakieś wskazówki, gdzie może leżeć błąd? No i najważniejsze, próbuję wystartować na ATmedze 8.

    Mi też czasami nie chce działać w takim połączeniu. Spróbuj zasilać to bezpośrednio z USB (tzn. bez tych szeregowych diod) oraz dodać diody Zenera 3,6V na liniach D+ i D-.
  • #177
    Siadrak
    Poziom 2  
    Pokombinowałem wczoraj wieczorem na wszystkie możliwe sposoby z diodami itd. i jednak ruszyło :D
    Jednak mam następne pytanie, chcę się z tym projektem przerzucić na ATmege32, czy ktoś wie jak trzeba ustawić w niej fusebity?
  • #179
    LordBlick
    VIP Zasłużony dla elektroda
    atom1477 napisał:
    Problem leży w tym ze VUSB wykorzystuje podobierane instrukcje do realizacji odpowiednich Timingów, a niektórymi z tych instrukcji są instrukcje Push i Pop.
    Przy stosie w pamięci wewnętrznej Push/Pop trwa 2 cykle i do takiego czasu trwania jest dostosowane VUSB.
    Przy pamięci zewnętrznej Push/Pop trwa 3 cykle i już VUSB się wysypuje.
    Problem ten można ominąć obsługując pamięć zewnętrzną w sposób programowy.
  • #180
    atom1477
    Poziom 43  
    A jak ominiesz instrukcje Push/Pop w sposób programowy? Ich realizacja programowa trwała by wtedy jeszcze dłużej niż 3 cykle.
    To bez sensu.
    Prościej po prostu nie przesuwać stosu na pamięć zewnętrzną.
    Wtedy mimo że pamięć zewnętrzna jest, i mimo że jest obsługiwana sprzętowo, VUSB będzie działało zupełnie dobrze.