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

Atmega8 brak echa UART. Czy mógłby ktoś pomóc poprawić program?

brzydal91 13 Kwi 2011 15:04 1860 4
REKLAMA
  • #1 9395733
    brzydal91
    Poziom 12  
    Witam. Może temat artykułu nie jest za dobry, ale nie wiedziałem jak to opisać dokładniej.
    Mam taki problem, od kilku tygodni próbuję połączyć Amtege8 poprzez UART z komputerem. Kiedy budowałem przejściówkę opartą o układ MAX232 to chyba spaliłem mój port COM w komputerze bo teraz to nawet echo na tym wejściu nie działa. Na wtyku jest napięcie na wszystkich pinach ale chyba RxD albo TxD padło.
    Dzisiaj kupiłem gotową przejściówkę USB -> RS232 opartą o układ FT232. Działa ona bardzo dobrze, echo działa kiedy połączę RxD z TxD. Mam natomiast problem albo z kodem albo sam nie wiem z czym.
    Szukałem po stronach internetowych przykładów i przetestowałem co najmniej 5 różnych wersji soft'u na mikrokontroler. Oto wersja z której korzystam teraz:
    Kod: C / C++
    Zaloguj się, aby zobaczyć kod


    W menadżerze urządzeń na komputerze ustawiłem baudrate portu na 9600, w terminalu do komunikacji przez rs232 także. Niestety kiedy podłączam układ do prądu i próbuję przesłać zwykłą "1" to terminal bardzo długo myśli i po jakimś czasie pokazuje że nic nie odebrał.
    Czy znalazł by się ktoś kto by mi pomógł poprawić ten kod tak, aby chociaż głupie ECHO działało? To było by kluczem do mojej dalszej pracy. O wiele łatwiej jest mi się uczyć na przykładach. Pozdrawiam serdecznie
  • REKLAMA
  • #2 9396614
    Krauser
    Poziom 26  
    1. Wyłącz handshake w opcjach terminala (jeśli jest włączony). Dobry jest terminal Bray Terminal
    2. A co to za przejściówka? Czy to sam FT232R, który ma wyjścia TTL 5V, czy może wyjściem są sygnały RS232? Ten pierwszy możesz podłączyć wprost do mikrokontrolera, a ten drugi wymaga MAX232 lub podobnego konwertera.
    3. Przykłady ze dokumentacji procesora są dobre na początek i zamiast echa proponuję najpierw napisać program który tyko w pętli wysyła wiadomość, a w dalszej kolejności zająć się odbiorem.
  • REKLAMA
  • #3 9397761
    brzydal91
    Poziom 12  
    W instrukcji przejściówki napisali że układ można bezpośrednio do mikrokontrolera podłączyć. To jest już na TTL zrobiona przejściówka. Spróbuję w takim razie kodów z noty katalogowej Atmegi8. Jeśli ktoś by mógł sprawdzić kod który wkleiłem powyżej czy on faktycznie ma szanse działać to byłbym wdzięczny, bo on się kompiluje bez problemów ale jak wspominałem - brak reakcji. Pozdrawiam
  • REKLAMA
  • #4 9406292
    Krauser
    Poziom 26  
    Co do programu to int ReceivedByte = 0; jest za duże do przechowywania bajtu, więc zmień na char. Może masz coś źle podpięte RxD zamienione z TxD.
  • #5 9407198
    BoskiDialer
    Poziom 34  
    Wstępnie kod wygląda znośnie, jednak TXEN i RXEN najlepiej jak są załączanie pod sam koniec, nie na początku.
    Kod dość znacząco polega na wartościach domyślnych używając operacji ustawiania bitów zamiast przypisań, co w przypadku dostępu do UCSRC może źle się odbić (odczyt w rzeczywistości odbędzie się z UBRRH[współdzielenie adresu], jednak ten powinien mieć domyślnie wartość zero).

    Zawsze jeśli nie działało mi echo robiłem prostą pętlę kopiującą wartość z pinu na pin, wykluczało to problemy typu źle wpisana wartość baudrate, źle wpisany f_cpu, zła konfiguracja usart'u lub tym podobne - wtedy wiedziałem, czy problemu szukać w programie czy w elektronice.

    Do ustalenia czy przejściówka daje rs232 czy ttl wystarczy miernik napięcia. Podłączenie przejściówki dającej ttl do wejścia max'a od strony rs232 nie spowoduje więcej niż zanegowanie sygnału, a to niestety uniemożliwiło by poprawną pracę usartu (brak pracy w przeciwnej logice).
REKLAMA