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

Jak skonfigurować UART w Xmega128A3U z użyciem przerwań?

dawid.barracuda 05 Sie 2016 22:08 1767 12
  • #1 15851534
    dawid.barracuda
    Poziom 13  
    Szanowni Forumowicze,
    postawiłem sobie za zadanie opanowanie UARTa w prockach xmega, co nie powinno być zadaniem bardzo trudnym. Na początek zajrzałem na stronę producenta i znalazłem pdf z opisem UARTa i przykładowy kod dla wykorzystania sprzętowego na przerwaniach i software'owego. Zacząłem od przerwań. Utworzyłem projekt i skompilowałem program. Oto kod pliku main.c:
    Kod: C / C++
    Zaloguj się, aby zobaczyć kod


    W ramach debuggera (pod koniec programu w miejscu: // sprawdzenie poprawności transmisji) zapalam diodę jeśli wszystko poszło jak trzeba. I dioda się zaświeca, gdy mam zwarte piny 2 i 3 portu C.
    Jednakże ja chcę połączyć się z komputerem przez FTDI. I tu mam problem. Podpięcie linii RxD i TxD do mostka nic nie daje, nie mam nic na konsoli w komputerze. Potem wyłączyłem ten fragment i chciałem użyć funkcji PutChar i dalej nic nie widzę na monitorze. FTDI jest sprawne, bo w przypadku Atmegi8 nie mam problemu z transmisją.
    Podejrzewam, że coś nie tak napisałem w kodzie, tylko nie wiem co. Czy w ogóle powinienem coś widzieć na terminalu przy tak napisanym programie?
    Bardzo proszę o wskazówki co robię źle i pozdrawiam :)

    W załącznikach dorzucam pozostałe pliki nagłówkowe wraz z projektem.
  • #2 15853457
    dawid.barracuda
    Poziom 13  
    Spróbowałem z UARTem programowym. Kod wygląda tak:
    Kod: C / C++
    Zaloguj się, aby zobaczyć kod


    Widzę na oscyloskopie, że dane są wysyłane, widać wyraźne ramki danych. Jednak podpięcie pinu PC3 na mostek FTDI i podpięcie mostka do komputera nie daje rezultatów. Dane są podawane, a terminal milczy. Zresztą na UART'cie sprzętowym też widać ramki, a mostek nic nie przesyła. W czym może leżeć problem? Korzystam z modułów, do których DSy wysyłam w załącznikach.
    Podkreślam, że FTDI jest sprawne, gdyż na tym samym podłączeniu co mam obecnie komunikowałem się bez problemu atmegą8.
  • Pomocny post
    #3 15853664
    jnk0le
    Poziom 18  
    dawid.barracuda napisał:

    Widzę na oscyloskopie, że dane są wysyłane, widać wyraźne ramki danych. Jednak podpięcie pinu PC3 na mostek FTDI i podpięcie mostka do komputera nie daje rezultatów. Dane są podawane, a terminal milczy. Zresztą na UART'cie sprzętowym też widać ramki, a mostek nic nie przesyła.

    Masy połączone?
    ft232 pracuje na 3.3V?
  • #4 15853681
    dawid.barracuda
    Poziom 13  
    Tak, masy połączone. Sam ft232 potrzebuje zasilania z 5V, ale napięcie na pinach danych ustawiam napięciem na pinie VIO, więc mogę tam podpiąć 3V3 i będzie działał prawidłowo.
    Problem udało mi się rozwiązać. Głupia sprawa... nie scrossowałem TxD i RxD. Terminal ożył i wyświetla prawidłowo. Znowu zabieram się w nieodpowiednich godzinach wieczornych po pracy za takie rzeczy. No trudno, przepraszam za tak głupie niedopatrzenie.

    Ale korzystając z okazji chciałbym o coś jeszcze zapytać. Otóż w dokumentacji do modułu z ft232 mamy piny: 1 TXL i 21 RXL. W opisie obok stoi: wyjście (otwarty kolektor); źródło dla diody Tx/Rx. O ile rozumiem to jak otwarty kolektor to podpinam sobie +5V i diody powinny świecić przy transmisji. Podpinam i nic się nie dzieje. Diody są sprawne, bo świecą traktowane miernikiem. Czy coś pominąłem, czegoś znowu nie rozumiem? Czemu diody mogą nie świecić mimo podanego napięcia?
  • Pomocny post
    #5 15853701
    piotrva
    VIP Zasłużony dla elektroda
    Albo podpinasz je odwrotnie, albo bez rezystora ;)
  • #6 15853722
    dawid.barracuda
    Poziom 13  
    Jak mogę podpiąć odwrotnie kiedy dioda jest przylutowana do modułu mostka? :) Sprawdziłem z rezystorem 110R i dalej bez rezultatu.
  • #7 15853957
    piotrva
    VIP Zasłużony dla elektroda
    Nie doczytałem, że te diody masz na płytce.
    No to teraz zadanie - zobacz na schemat i pomyśl, jaki punkt zwierałeś do zasilania podając w to miejsce napięcie 5V.
    Mogłeś przez to upalić te wyjścia w przejściówce.
  • #8 15853982
    dawid.barracuda
    Poziom 13  
    Na schemacie te diody nie są szeregowo z rezystorami 270R? Jednakże widać też na schemacie, że TXLED i RXLED mają zanegowane wejścia do scalaka, ale po co? Widzę też zworki J4 i J5 i również nie wiem po co...
    Ale zaraz... RxLEDEN i TxLEDEN wchodzą do IOVCC?
  • Pomocny post
    #9 15854027
    Konto nie istnieje
    Konto nie istnieje  
  • Pomocny post
    #10 15854062
    piotrva
    VIP Zasłużony dla elektroda
    A podpinając pin RXLED i TXLED do zasilania mogłeś spowodować zwarcie (skoro "układ" zwiera do masy) i uszkodzenie tych wyjść.
  • #11 15854064
    dawid.barracuda
    Poziom 13  
    No tak, nie pomyślałem o tym, żeby wrzucić screen...
    I rzeczywiście widziałem wcześniej te pola. W takim razie po co mi są piny RXL i TXL i opisanie ich jako otwarty kolektor?
    Zlutowałem te pola i diody migają jak należy.
  • Pomocny post
    #12 15854068
    piotrva
    VIP Zasłużony dla elektroda
    Bo możesz do nich podłączyć jakiś zewnętrzny obwód?
  • #13 15854089
    dawid.barracuda
    Poziom 13  
    Dziękuję wszystkim z Was za pomoc. Diody świecą i transmisja działa, reszta to już wariacja na temat.
    Teraz już chyba widzę co robiłem... podając +5V na piny RxLED i TxLED wpinałem się niejako przed diodą, bliżej scalaka i w ogóle omijałem te diody.
    Temat zamykam, problemy rozwiązane.
    Pozdrawiam!
REKLAMA