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

[ATtiny2313][C] Wzór na UBRR jak to z nim jest.

yasec 11 Mar 2010 14:26 1659 3
REKLAMA
  • #1 7814201
    yasec
    Poziom 10  
    Witam.

    Tak wygląda init usart:
    
    UBRRH=0; //Bity w UBRRH sa zarezerwowane i nalezy je zerowac.
    UBRRL=155; //ustalamy predkosc transmisji uart na 9600
    UCSRC=0b10000110; //tryb asynchroniczny, bit parzystosci
    //(disabled), 1 bit stopu, slowo 8bit 
    UCSRB=0b10011000; //wlaczenie obslugi przerwan od RX,
    //wlaczenie odbiornika i nadajnika
    UCSRA=0b00000010; //wyzerowanie znacznikow,podwojona
    //prędkość transmisji, komunikacja NIE wieloprocesorowa
    


    Aby obliczyć UBRRL mamy wzór
    UBRR = (fosc / (8*baud)) - 1
    czyi UBRR = (12000000 / (8*9600)) - 1 = 155

    i problem polega na tym że transmisja działa prawidłowo na prędkości 1200 na 9600 latają krzaki.
    Fusebity dla zewnętrznego kwarcu 12MHz:
    [ATtiny2313][C] Wzór na UBRR jak to z nim jest.

    o co tu chodzi?
    pozdrawiam.
  • REKLAMA
  • Pomocny post
    #2 7814256
    Jerzy_W
    Poziom 14  
    W fusebitach masz Clkdiv8. Wygląda na to, że twój procesor pracuje na 1,5Mhz, odznacz to i sprawdź.
  • REKLAMA
  • Pomocny post
    #3 7814303
    chudybyk
    Poziom 31  
    Ten wzór jest dobry dla transmisji z podwojoną szybkością. Jeśli szybkość jest normalna, to zamiast 8 powinno być 16.
    Częstotliwość procka to 12/8, bo masz zaznaczone CKDIV8 w fuse-bitach. Odznacz i powinno być ok.
    Pozdrawiam!
  • #4 7814609
    yasec
    Poziom 10  
    Dziękuje za pomoc, odznaczyłem CKDIV8 i już wszystko jest ok.
    Pozdrawiam serdecznie!
REKLAMA