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

USART AVR: Odbieranie i nadawanie znaków, problem z echem danych

wojtektorr 20 Lis 2012 17:46 1665 9
REKLAMA
  • #1 11552653
    wojtektorr
    Poziom 14  
    Witam, zaczynam poznawać AVRki i mam pytanie odnośnie USART, poniżej mam funkcje nadającą i odbierającą. Łączę sie z atmega przez HiperTerminal i zauważyłem że jeśli z programu wyśle np. USART_Transmit('A') to w terminalu otrzymam 'A', więc nadawanie działa. Jednak kiedy chcę wysłać do avr jakis znak i ma odeslać go z powrotem to otrzymuję coś innego niż wysłałem. Dlaczego?

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


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


    program główny:
    Kod: C / C++
    Zaloguj się, aby zobaczyć kod
  • REKLAMA
  • #2 11552794
    McMonster
    Poziom 32  
    Spróbuj tego:
    Kod: C / C++
    Zaloguj się, aby zobaczyć kod

    Z rejestru UDR można czytać tylko raz, robi to funkcja UART_Receive() i zwraca odczytaną wartość. Więcej w karcie katalogowej układu.
  • REKLAMA
  • #3 11553144
    wojtektorr
    Poziom 14  
    niestety efekt jest ten sam, zapomniałem dodać ze do wyjścia lini TxD podłączony jest negator w postaci tranzystora, pomyslałęm żę tak samo należy zrobić z RxD ale wtedy do atmegi nic nie dociera.
    USART AVR: Odbieranie i nadawanie znaków, problem z echem danych
  • #4 11553296
    Piotr Piechota
    Poziom 22  
    Masz podłączone Rx bezpośrednio z portu RS232 PC'ta 8-O ?
  • REKLAMA
  • #5 11554039
    wojtektorr
    Poziom 14  
    Nie, korzystam z adaptera prolific pl-2303 usb<-->rs232. Podobno ta przejściówka działa z avrkami bez problemu więc zakładam że to nie z nią jest problem.
  • #6 11554287
    Piotr Piechota
    Poziom 22  
    Pokaż konfiguracje portu. Używasz kwarcu czy wewnętrznego RC?
  • REKLAMA
  • #7 11554463
    excray
    Poziom 41  
    wojtektorr napisał:
    niestety efekt jest ten sam, zapomniałem dodać ze do wyjścia lini TxD podłączony jest negator w postaci tranzystora, pomyslałęm żę tak samo należy zrobić z RxD ale wtedy do atmegi nic nie dociera.

    Bardzo dobrze pomyślałeś, tyle że musiałeś coś źle podłączyć. Czy Twój układ wygląda teraz tak?
    USART AVR: Odbieranie i nadawanie znaków, problem z echem danych
  • #8 11556929
    wojtektorr
    Poziom 14  
    Nie pomyślałem tylko zastosowałem twoje rady excray, dzieki:) Wszystko już działa jak chciałem, machnąłem się przy połączeniach, po podłączeniu zgodnie z Twoim schematem działa. Czy mógłbyś mi wytłumaczyć o co chodzi tutaj z tranzystorami? Czy dobrze myślę że w bezpośrednim połączeniu przez rs232 i maxa to właśnie max odwraca sygnał i zbija sygnały z 12V do 5V?
  • #9 11556993
    piotrva
    VIP Zasłużony dla elektroda
    Układ PL2303 jak widać nadaje sygnały zanegowane, czyli dla 1 w transmisji wystawia stan niski i na odwrót. I ten tranzystor ma za zadanie spowrotem odwrócić sygnały, żeby 1-ce odpowiadał stan wysoki.
    Na szczęście układ PL2303 nie wystawia napięć +-12V - wtedy Twój procesor dawno by nie żył.
  • #10 11556999
    wojtektorr
    Poziom 14  
    O to mi właśnie chodziło, że to pl-2303 odwraca sygnał teraz jest wszystko jasne, dzięki.
REKLAMA