logo elektroda
logo elektroda
X
logo elektroda
Adblock/uBlockOrigin/AdGuard mogą powodować znikanie niektórych postów z powodu nowej reguły.

Jak zaprogramować ATmega32U4, by móc korzystać z HUB-a USB?

dan76 27 Mar 2019 15:10 558 8
  • #1 17869653
    dan76
    Poziom 11  
    Hej!
    Czy istnieje możliwość zaprogramowania układu atmega32u4 w taki sposób, aby zakładał funkcjonalność HUBa USB?
    Docelowo urządzenie oparte na tym (lub innym, zobaczymy) procesorze zakłada połączenie z PC przedstawiając się jednocześnie jako pamięć masowa i klawiatura. Mam zamiar wykorzystać bibliotekę LUFA.

    Lista obsługiwanych procesorów przez bibliotekę:
    Atmel 8-Bit AVR (AVR8) Support
    Atmel 32-Bit UC3 AVR (UC3)

    Czy wystarczy, że procesor obsługuje łączność USB, czy jest również wymagany USB host mode?
    Jeżeli jednak okaże się, że wstępnie wybrany przeze mnie procesor nie zakłada takiej funkcjonalności, na jakie cechy procesora mam zwracać uwagę przy ewentualnym doborze?

    Jest to dla mnie stosunkowo świeży temat na płaszczyźnie mikrokontrolerów, dlatego zasięgam po radę kolegów, którzy siedzą w temacie ;>
    Pozdrawiam :)
  • #3 17869894
    tmf
    VIP Zasłużony dla elektroda
    dan76 napisał:
    Docelowo urządzenie oparte na tym (lub innym, zobaczymy) procesorze zakłada połączenie z PC przedstawiając się jednocześnie jako pamięć masowa i klawiatura. Mam zamiar wykorzystać bibliotekę LUFA.

    Jak już napisał kol. @JarekC możesz mieć złożone urządzenie USB, które przedstawia się jednocześnie jako dwa lub więcej różnych urządzeń. W tym celu musisz tylko stworzyć odpowiedni deskryptor.
    dan76 napisał:
    Czy wystarczy, że procesor obsługuje łączność USB, czy jest również wymagany USB host mode?

    Twój układ zakłąda zrobienie urządzeń klasy device, więc obsługa hosta nie jest potrzebna (zresztą to problem o zupełnie inej złożoności).
    dan76 napisał:
    Jeżeli jednak okaże się, że wstępnie wybrany przeze mnie procesor nie zakłada takiej funkcjonalności, na jakie cechy procesora mam zwracać uwagę przy ewentualnym doborze?

    Zapewne zakłada, chociaż na ATMegach U nigdy USB nie robiłem. Z AVR rutynowo wykorzystuję USB na XMEGA. Niemniej przypuszczam, że na obu prockach da się to zrobić. Zobacz przykłady w Atmel Studio - tam masz też przykłady urządzeń złożonych, w tym klawiatury dla XMEGA..
    LUFA jest ok, nie wiem tylko na ile ci pomoże w budowie urządzenia złożónego USB.
  • #4 17870234
    Konto nie istnieje
    Poziom 1  
  • #5 17870435
    tmf
    VIP Zasłużony dla elektroda
    stmx napisał:
    tmf napisał:
    W tym celu musisz tylko stworzyć odpowiedni deskryptor.

    No to troszkę bardziej złożone niż tylko napisanie deskryptora bo ta biedny AVR bedzie obsługiwać więcej endpoint-ów, musi napisać obsługę obydwu klas i odpowiednią maszynę stanów do rozdzielania ruchu do endpoint-ów, dużo więcej pamięci. Generalnie urządzenia composite są dość nieprzyjemne do pisania i uruchamiania.

    Oczywiście to prawda, ale pisałem, że to proste w oparciu o gotowiec Atmela z przykłądów do Atmel Studio. Tam kod biblioteki realizuje to wszystko o czym piszesz. W AVR XMEGA jest obsługa do 16 endpointów, nie wiem jak jest w ATMega.
    stmx napisał:
    To co na pewno mogę Cię zapewnić - bez debugera nie ma szans.

    Jeśli pisze w oparciu o gotowiec, to ten debugger może nie jest niezbędny, ale przydatny. Chociaż nieprzyjemnie się debugguje USB, bo zatrzymanie procka wywala transmisję i PC zgłasza błąd. Chociaż ostatnio coś z tym zrobili, bo widzę, że przerwanie debuggerem sesji nie zrywa mi już połączenia USB.
    Natomiast to co się jeszcze przyda to dobry monitor USB - jest taki fajny kombajn softwarowy do debugowania m.in. USB na PC, którego nazwy nie pamiętam, z jakimśtam trialalem.
  • #6 17870502
    Konto nie istnieje
    Poziom 1  
  • #8 17870585
    Konto nie istnieje
    Poziom 1  
  • #9 17870656
    JarekC
    Poziom 32  
    Z obydwoma miałem problem gdy próbowałem debugować streaming audio w trybie asynchronicznym.
    Ogólnie jest mało narzędzi do testowania USB od strony PC (np. wysyłanie pojedynczych ramek), typu stary program CyConsole od Cypressa.

    Wracając do tematu, tutaj masz przykład:
    https://www.avrfreaks.net/forum/merging-stk526-hid-and-mass-storage
REKLAMA