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

XMega - XMega USART przykład

m72 08 Kwi 2015 22:31 1467 7
  • #1 08 Kwi 2015 22:31
    m72
    Poziom 12  

    Witam, sprawa dotyczy podstawowej MINIMALNEJ konfiguracji i użycia usarta w X-mega.
    Wiem, że jest CDC i inne odchudzone jego wersje ale mi chodzi o przykład kompletnego i działającego kodu na którym można się będzie dalej uczyć, kod który choćby wysyła jeden znak na terminal z prędkością 9600. USB podpięte jak na schemacie. Jak to odpali to można dalej coś działać ale ja nie mogę nawet wystartować :D (pod atmegami było chyba prościej )
    XMega - XMega USART przykład

    Sterowniki USB Atmela mam zainstalowane poprawnie.
    Przerobiłem wiele przykładowych kodów z internetu, jedynie CDC mi odpaliło ale to jest taki przerost formy nad treścią że strach się bać.
    Jeśli ktoś będzie tak uprzejmy to niech poda taki minimalistyczny kod, myślę że wielu startującym z x-megą forumowiczom też by się przydał do nauki.

    0 7
  • #2 09 Kwi 2015 10:37
    m72
    Poziom 12  

    No dobra, może tak, z tej strony mam taki kod, wybrałem tylko minimum (chyba). Wszystko się kompiluje ale coś dalej nie gra. Czy coś się wysyła nie wiem bo problem jest tym razem ze sterownikiem usb atmela, "nie rozpoznano urządzenia" czyli ogóle system coś wykrywa ale gdzieś jest błąd. Korzystając z CDC wirtualny port się instaluje poprawnie więc coś musi być nie tak po stronie tego kodu.
    ps. pozmieniałem bauderaty bo mam zegar 2mhz, nie wiem czy dobrze.

    Kod: c
    Zaloguj się, aby zobaczyć kod

    0
  • #3 09 Kwi 2015 11:26
    mpier
    Poziom 16  

    Hej,
    USART to nie jest USB. Xemaga raczej nie ma wbudowanego konwertera usb na serial i zostaje Ci albo komunikacja przez usb, albo usart z przejściówką na usb, ew rs232.

    0
  • #4 09 Kwi 2015 11:42
    tmf
    Moderator Mikrokontrolery Projektowanie

    @m72 Poczytaj co to USART. Bo mylisz go z USB CDC. Realizacja wirtualnego RS232 na USB wymaga sporego kodu, który masz dostępny np. tutaj:
    http://mikrokontrolery.blogspot.com/2011/03/X...emulacja-portu-szeregowego-rs-232-na-USB.html
    Wszystko robi biblioteka, a aplikacji wydaje się, że ma normalny port szeregowy. W tym przypadku łączysz XMEGA z PC przy pomocy USB. Jednak jeśli chcesz wykorzystać normalne interfejsy USART to kod co prawda jest znacznie prostszy, lecz XMEGA łączysz z PC, który musi mieć RS232 (co obecnie jest rzadkie) i potrzebujesz konwertera poziomów i transceivera np. MAX232.

    0
  • #5 09 Kwi 2015 12:05
    m72
    Poziom 12  

    No trochę mi się powoli przejaśnia. Czyli ten kod powyżej to jest do obsługi rs232 przy połączeniu go przez zwykłego COM-a albo przez przejściówkę i nie odpali przy podłączeniu bezpośrednio do USB ? Sory za głupie pytania ale wogóle nie miałem styczności z X-megą tylko się naczytałem o sprzętowym wsparciu USB przez nie ale nie potrafię jeszcze tego poskładać do kupy.

    0
  • #6 09 Kwi 2015 12:55
    tmf
    Moderator Mikrokontrolery Projektowanie

    m72 napisał:
    No trochę mi się powoli przejaśnia. Czyli ten kod powyżej to jest do obsługi rs232 przy połączeniu go przez zwykłego COM-a albo przez przejściówkę i nie odpali przy podłączeniu bezpośrednio do USB ? Sory za głupie pytania ale wogóle nie miałem styczności z X-megą tylko się naczytałem o sprzętowym wsparciu USB przez nie ale nie potrafię jeszcze tego poskładać do kupy.


    Tak, to zadziała tylko z USART połączonym pod zwykłego COMa. XMEGA ma sprzętowy interfejs USB, ale klasa device którą sobie implementujesz zależy od programu. Jedną z klas jest USB CDC czyli wirtualny interfejs RS232. Implementacja klasy wymaga sporego kawałka kodu, co jest związane ze złożonością USB.

    0
  • #7 09 Kwi 2015 13:46
    m72
    Poziom 12  

    Ok dzięki za rozjaśnienie tematu ale nasuwa mi się jeszcze jedno pytanie. Czym zatem różnią się Xmegi ze wsparciem sprzętowym USB i bez niego skoro na tych ze wsparciem i tak trzeba zastosować jak to nazwałeś "sporego kawałka kodu" ?
    Na Xmegach "bez wsparcia" w ogóle się nie da uruchomić wirtualnego USB ?

    0
  • #8 09 Kwi 2015 14:05
    tmf
    Moderator Mikrokontrolery Projektowanie

    Na procesorach bez wsparcia sprzętowego dla USB jego uruchomienie jest bardzo trudne i nieefektywne, a osiągane transfery są żałosne. USB jak każdy złożony protokół składa się z kilku warstw - interfejs sprzętowy zapewnia realizację warstwy elektrycznej i łącza, wraz z podstawowymi elementami wymiany danych - odbiór i nadawanie pakietów, enumeracja itd. Lecz do tego wymagana jest programowa obsługa urządzenia USB, które realizujesz (klasy device) i do tego potrzebny jest program. Przez porównanie - interfejs RS232 tylko zapewnia wymianę danych, ale jeśli z jednej strony podłączysz myszkę lub klawiaturę to od strony PC coś te urządzenia będzie musiało obsłużyć - potrzebujesz sterownika. Podobnie jest z USB - interfejs zapewnia wymianę danych, ale ich interpretacja, reakcja na konkretne zdarzenia wymaga sterownika (softu). Ponieważ złożoność uSB jest dalece większa niż RS232 to i implementacja softwarowa jest o wiele bardziej złożona.

    1