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

AVR ATmega16A - błędne znaki przy transmisji USART z Prolific USB-RS232

werczak90 08 Wrz 2013 18:30 2292 10
REKLAMA
  • #1 12714495
    werczak90
    Poziom 10  
    Witam! Próbuję nawiązać połączenie miedzy ATmega16A a terminalem na laptopie.
    Używam przejściówki USB - RS232 na chipie Prolific. Podczas transmisji otrzymuję inne znaki niż te które wysyłam. Nie są to losowe znaki, gdy wysyłam "f" zawsze otrzymuję "&" niezależnie od kierunku transmisji (na uP wyświetlam wynik transmisji na LCD). Usart skonfigurowany jest zgodnie z notą katalogową na terminalu te same ustawienia co w uP tj 8 bit, 1 bit stopu, no parity, no handshake. UBRR w ATmedze ustawiony zgodnie z notą katalogową, tj dla transmisji 9600 kwarc 8 MHz UBRR=52
    identyczne przekłamania występują na innych prędkościach. Wydaje mi się że nie jest to problem z bitratem ponieważ uP taktowany jest zewnętrznym kwarcem, próbowałem też sprawdzić czy transmisja się posypie (lub poprawi) gdy zmienię wartość UBRR na zbliżoną do tej z noty katalogowej (48-55),nie zmieniło to sytuacji dalej każdy wysłany znak ma swój odpowiednik. Porty uP połączone są bezpośrednio z liniami RXD iTXD przejściówki we właściwy sposób. Przejściówkę sprawdzałem zwierając jej linie RXD z TXD w terminalu pojawiało się poprawne echo. Dodam jeszcze, że konfigurację USART sprawdzałem z notą katalogową kilka razy, a procedury wysyłania i obierania są wręcz skopiowane z noty katalogowej uP. Jeżeli ktoś wie co może być przyczyną proszę o odpowiedź
    Pozdrawiam
  • REKLAMA
  • #2 12714570
    mat_rosner
    Poziom 15  
    witam,
    z tego co piszesz wynika, że może masz jakiś problem w samym programie. Wrzucisz jakiś listing?
  • #3 12714612
    Konto nie istnieje
    Poziom 1  
  • REKLAMA
  • #4 12714624
    Konto nie istnieje
    Poziom 1  
  • #5 12714695
    werczak90
    Poziom 10  
    Zdaję sobie sprawę z tego że standard RS232 przewiduje logiczne stany jako -15V +15V, ta przejściówka z tego co wiem ma wyjście TTL więc nie szukałem problemu tutaj. Jednak będę to musiał zweryfikować.
  • #6 12714851
    BlueDraco
    Specjalista - Mikrokontrolery
    1. Jaką ustawiłeś częstotliwość taktowania procesora i szybkość transmisji?

    2. Czy przejściówka, której używasz, ma wtyk DB9, czy wyjście na szpilkach? Jeśli to pierwsze - musisz mieć przynajmniej inwertery jak na obrazku powyżej.
  • #7 12714930
    tomekgl
    Poziom 16  
    Sprawdź czy poprawnie ustawiłeś fusebity, aby źródłem sygnału zegarowego był zewnętrzny kwarc? Twoje objawy wskazują, że jedną z przyczyn może być niezgodność taktowania. Spróbuj ustawić UBRR o kilka mniejsze bądź większe. Takie problemy występują czasami na wewnętrznym generatorze i można je skorygować poprawiając wartość rejestru OSCCAL.
  • REKLAMA
  • #8 12715044
    werczak90
    Poziom 10  
    BlueDraco napisał:
    Czy przejściówka, której używasz, ma wtyk DB9, czy wyjście na szpilkach? Jeśli to pierwsze - musisz mieć przynajmniej inwertery jak na obrazku powyżej.
    Przejściówka ma na wyjściu męski wtyk DB9 (wydaje mi się że inwerter jaki przytoczył kolega atom1477 zaneguje sygnał )

    tomekgl napisał:
    Sprawdź czy poprawnie ustawiłeś fusebity, aby źródłem sygnału zegarowego był zewnętrzny kwarc? Twoje objawy wskazują, że jedną z przyczyn może być niezgodność taktowania. Spróbuj ustawić UBRR o kilka mniejsze bądź większe
    przypuszczałem że może to być spowodowane niedokładnością wewnętrznego generatora więc zamontowałem zewnętrzny kwarc i ustawiłem odpowiednio fusebity z pomocą programu AVR Burn-O-Mat (robi to automatycznie ale również sprawdzałem)
    prówbowałem też zmieniać wartość UBRR dla transmisji o szybkości 9600 i kwarcu 8MHz z noty katalogowej UBRR=51 próbowałem na przedziale 48-55 bez żadnych efektów.

    Jutro zmierzę napięcie wyjściowe na lini TXD przejściówki w stanie IDLE. wydaje mi się że pomiar powinien wskazać czy wyjście pod względem poziomów napięć jest zgodne z TTL czy RS232
  • REKLAMA
  • #9 12715074
    BlueDraco
    Specjalista - Mikrokontrolery
    Nieważne, jaki masz zakres napięć - musisz zanegować sygnały. To zapewne wystarczy.
  • #10 12715098
    Konto nie istnieje
    Poziom 1  
  • #11 12717223
    werczak90
    Poziom 10  
    Sprawdziłem przejściówka ma jednak na wyjściu +- 9V zatem jeżeli uP to przeżył to układ max 232 powinien rozwiązać problem. Dziękuję za szybką odpowiedź i pozdrawiam.
REKLAMA