Elektroda.pl
Elektroda.pl
X
Proszę, dodaj wyjątek www.elektroda.pl do Adblock.
Dzięki temu, że oglądasz reklamy, wspierasz portal i użytkowników.

AVR - Atmega328p - niedziałający USART

song77 22 Lis 2013 19:26 1545 8
  • #1 22 Lis 2013 19:26
    song77
    Poziom 10  

    Witam,

    Mam problem z transmisją przez USART.
    Gdzie tu jest błąd ?

    Kod: c
    Zaloguj się, aby zobaczyć kod

    Fragmenty kodu obsługi:
    Kod: c
    Zaloguj się, aby zobaczyć kod


    Pozdrawiam.

    0 8
  • #2 22 Lis 2013 19:32
    JarekC
    Poziom 27  

    Kod: c
    Zaloguj się, aby zobaczyć kod


    Powinno być tak
    Kod: c
    Zaloguj się, aby zobaczyć kod


    lub po prostu tak
    Kod: c
    Zaloguj się, aby zobaczyć kod


    Pozdrawiam
    JarekC

    0
  • #3 22 Lis 2013 19:35
    excray
    Poziom 39  

    I wartość UBRR jest zła. Dla 1MHz i U2X=0 powinno być 6. Ale jeszcze lepiej jest nie zmieniać tego a ustawić U2X=1 bo wtedy jest mniejszy błąd.

    0
  • #4 22 Lis 2013 19:58
    song77
    Poziom 10  

    Czyli tak ? Mam problem z odbiorem na 9600b/s.

    Kod: c
    Zaloguj się, aby zobaczyć kod


    PS:
    Dlaczego nie mogę dać "Pomógł" ?

    0
  • #6 22 Lis 2013 21:14
    excray
    Poziom 39  

    2rs232 napisał:
    Pamiętaj też o odpowiednim ustawieniu bitu URSEL Link

    W Atmega328 nie ma bitu URSEL. Obecny kod generalnie jest OK.

    0
  • #7 23 Lis 2013 09:49
    song77
    Poziom 10  

    Niestety nawet ostatni kod transmituje "krzaki". Wysyłam przez uart_znak('B');
    Terminal w PC odbiera sygnał przez FT232RL dla 9600N1.

    Test transmisji FT232RL przebiegł OK.

    0
  • #8 23 Lis 2013 10:24
    excray
    Poziom 39  

    Pokaż zdjęcie podłączenia. Sprawdź czy masz na pewno taktowanie 1MHz.

    0
  • #9 23 Lis 2013 10:45
    song77
    Poziom 10  

    Podłączenie standardowe: TX_AVR z RX_FT, tak samo w drugą stronę (oczywiście masy połączone).
    Nie mogę sprawdzić fusów, ale sprawdziłem Timer na 1sek i się zgadza.

    0