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

ATmega 128 rs232 c. Błędy. UCSRA undeclared, UDR undeclared.

logingus 23 Lis 2011 17:04 2180 10
REKLAMA
  • #1 10173538
    logingus
    Poziom 9  
    Witam!!
    Mam problem z ożywieniem rs232 na ATmega 128.
    Wykorzystałem kod z książki Mirosława Kardasia "Mikrokontrolery AVR język C podstawy programowania".

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


    Według autora kod ten spowoduje wyświetlanie literki 'A' co 1s na terminalu.
    Jednak podczas kompilacji wyskakują 4 błedy:
    1) 'UCSRA' undeclared (first use in this function)
    2) (Each undeclared identifier is reported only once
    3) for each function it appears in.)
    4) 'UDR' undeclared (first use in this fuction).

    Wie ktoś co jest grane ??
    Z góry wielkie dzięki za pomoc !!!
  • REKLAMA
  • #2 10173583
    alagner
    Poziom 26  
    128 ma dwa UARTy, także nie ma np. rejestru UDR, jest UDR0 i UDR1 o ile dobrze pamiętam. Do datasheeta odsyłam po resztą informacji, ale z pozostałymi powinno być analogicznie.
  • REKLAMA
  • #3 10173594
    Konto nie istnieje
    Poziom 1  
  • #4 10173737
    logingus
    Poziom 9  
    Faktycznie wpisując UCSR0A i UDR0 lub UCSR1A i UDR1 kompilacja przebiega poprawnie. Jak mam rozumieć możliwość wyboru UCSR(0/1)A i UDR(0/1) ??
    Czy to oznacza że wpisując 0 będzie działał jeden rs a wpisując 1 drugi rs ?? jeśli tak co mam wpisać by uruchomić obydwa ?? P.S w dokumentacji nie jest za jasno napisane co i jak dla osoby która zaczyna tą piękną przygodę z AVR-ami :P
  • #5 10173927
    alagner
    Poziom 26  
    obejrzyj pinout. Masz dwa różne TXD i RXD wyprowadzone bezp. na nogi proca.
    A gdzie masz podpiętego MAXa/FT232 to nikt tu nie wie :P
  • REKLAMA
  • #6 10173971
    logingus
    Poziom 9  
    Obydwa gniazda mam podłączone do w max232, gdzie R1OUT i T1IN są podłączone do RXD0 i TXD0 a R2OUT i T2OUT NA RXD1 i TXD1. Deklarując się w programie na rejestr UCSR i UDR na 0 lub 1 oznacza to ze będzie działać tylko jedno z gniazdek ??
  • REKLAMA
  • #7 10174091
    alagner
    Poziom 26  
    To o stosownym numerze.
  • #8 10176653
    logingus
    Poziom 9  
    Witam ponownie !!!
    Jeszcze jedna mała nie ścisłość:
    void USART_Init( unsigned int baud )
    {
    UBRR1H = (unsigned char) (baud>>8); //ustawienie prędkości
    UBRR1L = (unsigned char) baud;
    UCSR1B = (1<<RXEN) | (1<<TXEN); //włączenie nadawania iodbierania
    UCSR1C = (1<<USBS) | (3<<UCSZ0); //format ramki: 8data, 2stop bit
    }
    Jest to kod z dokumentacji który wpisuje w miejsce "//inicjalizacja uart", gdzie mam wpisać obliczoną wartość by zadać prędkość ?? dla 16MHz i prędkości 9600 bodów wartość UBRR = 103 (0.2% - błąd).
    Wpisywałem 103 w miejsce "unsigned char" ale wyskakuje błądy podczas kompilacji.
  • #9 10176719
    Konto nie istnieje
    Poziom 1  
  • #10 10176819
    logingus
    Poziom 9  
    Faktycznie teraz się kompiluje bez problemu.
    Dzięki wielkie !!!!!!!!!!
  • #11 10176998
    Konto nie istnieje
    Poziom 1  
REKLAMA