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

[Atmaga8] USART ATmega8 - Odbiór błędnych danych na PC przez PL2303, jak rozwiązać?

Daniel880 01 Sty 2014 14:21 1587 15
REKLAMA
  • #1 13123154
    Daniel880
    Poziom 9  
    Witam!
    Od wczoraj męczę się z przesłaniem czegokolwiek z uC ATmega 8 do mojego PC poprzez USART. Przejściówka jaką posiadam jest oparta na pl2303 i jak wynika z noty to pracuje na poziomie napiec TTL. Schematu nie mam ale podłączone jest na 100% dobrze. Masy są połączone:) Problem jest taki, że mój PC odbiera całkowicie inne dane niż wyślę uC. Na początku wgrałem do uC program mirkka36 napisany w odcinku o ADC ale na terminalu były same krzaczki, wysyłanie jednego znaku daje w terminalu całkiem coś innego. Procek się nie resetuje bo gdzieś tam po drodze dodałem miganie diodą i było ok. Przejściówka jest sprawna bo po złączeniu Tx i Rx sygnał wraca. Terminal jakiego używam to Terminal v1.9b ale w putty jest to samo. Testowałem różne baud rate i różne wzory na UBRR w końcu napisałem swój prosty programik i dalej to samo. Nie mam pojęcia co jest nie tak. Poniżej podaje screen z terminala i kod programy myślę, że to powie wam więcej. Przepraszam za brak opisu ale program jest tak prosty, że nie ma co opisywać;)
    Procek taktowany zewnętrznym kwarcem 18.432MHz
    Pozdrawiam!

    Kod: C / C++
    Zaloguj się, aby zobaczyć kod


    [Atmaga8] USART ATmega8 - Odbiór błędnych danych na PC przez PL2303, jak rozwiązać?
  • REKLAMA
  • #2 13123214
    michalko12
    Specjalista - Mikrokontrolery
    A jaką masz pewność, że uC pracuje na tej częstotliwości?

    Wygeneruj dla testu 1Hz albo 0.1Hz na jakimś pinie za pomocą delay();

    Poza tym 18.432MHz to już trochę poza specyfikacją, ale to nie powinno robić problemu.
  • REKLAMA
  • #3 13123218
    Daniel880
    Poziom 9  
    Dane do terminala są dostarczane równo co jedną sekundę. Na 8MHz sytuacja podobna.
  • #4 13123227
    michalko12
    Specjalista - Mikrokontrolery
    Przed zapisem do UBRRH wyzeruj bit URSEL w rejestrze UCSRC.
  • REKLAMA
  • #5 13123258
    Daniel880
    Poziom 9  
    Żadnej zmiany.. Nawet programy znalezione w internecie nie działają tak jak powinny. Tak się zastanawiam czy ta przejściówka może jest zła. Dodam jeszcze, że jak rozłączę masy to jest identycznie.
  • #6 13123371
    michalko12
    Specjalista - Mikrokontrolery
    To zewrzyj Rx i Tx przejściówki i sprawdź czy wysyłane dane z terminala wracają do niego.
  • REKLAMA
  • #7 13123400
    Daniel880
    Poziom 9  
    Wraca. Pisalem w pierwszym poście juz;)
  • #8 13123440
    michalko12
    Specjalista - Mikrokontrolery
    Nie pamiętałem co czytałem wcześniej...

    Wysyłaj co sekundę 0xAA i daj znać co odbiera terminal.
  • #9 13123495
    Daniel880
    Poziom 9  
    [Atmaga8] USART ATmega8 - Odbiór błędnych danych na PC przez PL2303, jak rozwiązać?

    Spróbuje zmienić sterowniki od przejściówki
  • #10 13123499
    szczywronek
    Poziom 28  
    1. Linie TxD i RxD łączysz na krzyż?
    2. Nie jest to czasem jakaś atmega8-8 - z maksymalną częstotliwością 8MHz?
    3. F_CPU jest dobrze zdefiniowane w projekcie? Spróbuj na próbę ustawić UBRR na sztywno na np. 119 (zegar 18,432MHz; 9600bps)
    4. Musi działać ;)
  • #11 13123562
    Daniel880
    Poziom 9  
    No linie to oczywiście na krzyż;) Atmega 8A do 16MHz ale 18 ponoć nie robi dla niej problemu ale na innych częstotliwościach to samo. Co ciekawe zmiana UBRR na 110 albo 120 nie zmienia nic w tym co odbiera terminal. Druga sprawa to coś mi z tą masa nie pasuje bo czy ją podłącze czy nie to odbiór taki sam..
  • Pomocny post
    #12 13123610
    excray
    Poziom 41  
    Zaneguj sygnały. Nie wystarczy poziom TTL. Sygnał musi być w odpowiedniej fazie. Zaneguj Tx i Rx np. tranzystorami.
  • Pomocny post
    #13 13123664
    michalko12
    Specjalista - Mikrokontrolery
    excray napisał:

    Zaneguj sygnały. Nie wystarczy poziom TTL. Sygnał musi być w odpowiedniej fazie. Zaneguj Tx i Rx np. tranzystorami.


    No bez przesady. Myślisz, że przejściówka o której pisze Daniel880 ma konwerter poziomów?
    Nic na ten temat nie wspominał.
  • Pomocny post
    #14 13123688
    excray
    Poziom 41  
    michalko12 napisał:

    No bez przesady. Myślisz, że przejściówka o której pisze Daniel880 ma konwerter poziomów?
    Nic na ten temat nie wspominał.

    Daniel880 napisał:
    Przejściówka jaką posiadam jest oparta na pl2303 i jak wynika z noty to pracuje na poziomie napiec TTL.

    Jeśli wyjścia z niej są TTL to moim zdaniem tak właśnie jest.
  • Pomocny post
    #15 13123709
    michalko12
    Specjalista - Mikrokontrolery
    Skoro TTL to nie ma żadnego konwertera poziomów. Niech autor doprecyzuje się jak właściwie ma podłączony ten uC. Najlepiej jakieś zdjęcie przydałby się.
  • #16 13123733
    Daniel880
    Poziom 9  
    DZIAŁA!! Dzięki wielkie!

    Dodano po 2 [minuty]:

    Czyli moja przejściówka neguje sygnał drugi raz tak?
REKLAMA