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 - USART wysyła (nul) zamiast znaku do RealTerm przez RS232

Alexkun 08 Lis 2013 18:56 2595 6
REKLAMA
  • #1 12929547
    Alexkun
    Poziom 9  
    Witam,

    mam mały problem. Napisałem program mający za zadanie wysyłać przez USART w pętli znak. Wgrałem program podłączyłem wszystko na płytce stykowej przez max232 z portem COM w komputerze, odpaliłem RealTerma. Jednak po włączeniu Atmegi zamiast oczekiwanego znaku zapełniającego konsolę w Realtermie ekran zapełnia się napisem (nul). I nie wiem czy błąd mam w kodzie, źle coś podpiąłem, a może max albo atmega jest uszkodzona albo gdzieś coś źle ustawiłem? Próbowałem też podpinać do laptopa przez adapter USB/rs232 ale taki sam efekt.

    Kod: text
    Zaloguj się, aby zobaczyć kod
  • REKLAMA
  • #2 12929861
    BlueDraco
    Specjalista - Mikrokontrolery
    Usuń podział częstotliwości przez 8 w bitach konfiguracji uC. No i nie definiuj F_CPU w pliku źródłowym, o czym mądrzy ludzie piszą tu min. 2 razy w tygodniu.
  • REKLAMA
  • #3 12930126
    Alexkun
    Poziom 9  
    W Atmega8 nie ma jak np w attiny13 fuse bitu dzielnika przez 8(no chyba, że tylko ja nie widzę go). Usunąłem linię
    Kod: C / C++
    Zaloguj się, aby zobaczyć kod

    i zmieniłem linię
    Kod: C / C++
    Zaloguj się, aby zobaczyć kod

    na
    Kod: C / C++
    Zaloguj się, aby zobaczyć kod
    żeby wyliczało na podstawie prędkości zapisanej w Makefile.
    Jednak dalej odbiera mi NUL w realtermie
  • #4 12930270
    dreamy
    Poziom 12  
    Do obliczania UBRR możesz użyć makra z <util/setbaud.h>.

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


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

    Kiedy zapisujesz do rejestru UCSRC, musisz ustawić bit URSEL,
    jeżeli tego nie zrobisz dane lecą do UBRRH(rejestry mają taki sam adres, wybierasz bitem URSEL to którego chcesz pisać).

    pdf str 150, przykład str 146 --> PDF mega8
  • REKLAMA
  • #5 12930284
    2rs232
    Poziom 18  
    Sprawdź taką zmianę:
    Kod: C / C++
    Zaloguj się, aby zobaczyć kod

    Bitem URSEL wybierasz rejestr do którego zapisujesz (1=UCSRC,0=UBRRH)
    edit.
    dreamy był szybszy ;)
  • REKLAMA
  • #6 12930374
    Alexkun
    Poziom 9  
    dreamy, 2rs232 dzięki za pomoc.
    Próbowałem odpalić na symulatorze swój kod i działało. Cóż jednak nie można tym symulatorom za bardzo wierzyć
REKLAMA