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

[Rozwiązano] Jak skompilować bibliotekę UART0 w trybie SPI dla procesora m644?

zbynio_k 11 Maj 2020 14:26 333 3
REKLAMA
  • #1 18684841
    zbynio_k
    Poziom 10  
    witam, próbuję skompilować bibliotekę jak w temacie, dla procka m644 i ... zagwozdka
    używam AVR Studio v4.19

    poniżej procek + opis błędu + linia, w której jest błąd

    1. m644pa
    ../usart.c: In function 'USART_init':
    ../usart.c:95:41: error: 'UCPHA0' undeclared (first use in this function)
    ../usart.c:95:41: note: each undeclared identifier is reported only once for each function it appears in
    ../usart.c:95:65: error: 'UDORD0' undeclared (first use in this function)
    make: *** [usart.o] Błąd 1
    Build failed with 2 errors and 0 warnings...

    //m644
    UCSR0C = (1<<UMSEL01)|(1<<UMSEL00)|(0<<UCPHA0)|(0<<UCPOL0)|(0<<UDORD0);

    2. m644p, m644a, m644

    ../usart.c: In function 'USART_init':
    ../usart.c:95:65: error: 'UDORD0' undeclared (first use in this function)
    ../usart.c:95:65: note: each undeclared identifier is reported only once for each function it appears in
    make: *** [usart.o] Błąd 1
    Build failed with 1 errors and 0 warnings...


    //m644
    UCSR0C = (1<<UMSEL01)|(1<<UMSEL00)|(0<<UCPHA0)|(0<<UCPOL0)|(0<<UDORD0);

    z datasheeta wynika, iż zarówno UART0 jak i UART1 mogą pracować w trybie SPI
    (uart w trybie synchronicznym)
    clock dla UART0 to pin PB0 a dla uart1 pin PD4

    jeżeli zmienię UCPHA0 na UCPHA1 oraz UDORD0 na UDORD1 to także nie kompiluje

    natomiast mam uruchomiony program na m88

    stary toolchain ???
    mam wersję avr-toolchain-installer-3.4.1.1195-win32.win32.x86
    z opisu wynika, że obsługuje procki m644pa, 644a, 644p, 644

    co jest nie tak ????
  • REKLAMA
  • Pomocny post
    #2 18685246
    JarekC
    Poziom 32  
    Zgłaszane błędy wynikają z tego że brakuje definicji bitów dla UART pracującego w trybie SPI.
    Możesz albo poprawić pliki .h związane z danym procesorem lub wykorzystać nazwy bitówz podstawowego trybu UART.

    Dla przykładu definicja z pliku iomx8.h (dla procesora ATMEGA88)
    Kod: C / C++
    Zaloguj się, aby zobaczyć kod


    i iomxx4.h (dla procesora ATMEGA644, 644P, 644A)

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


    i iom644pa.h (dla procesora ATMEGA644PA)
    Kod: C / C++
    Zaloguj się, aby zobaczyć kod
  • REKLAMA
  • #3 18685335
    zbynio_k
    Poziom 10  
    JarekC napisał:
    Zgłaszane błędy wynikają z tego że brakuje definicji bitów dla UART pracującego w trybie SPI.

    sprawdziłem to nieco wcześniej i jest dokładnie jak piszesz, niema ich w plikach, w moim toolchainie, choć w opisie jest obsługa w/w procków

    chyba poprawię pliki *.h i po kłopocie, bo nazwy użyte będą zgodne z datasheetem
    użycie innych bitów do tego celu może w przyszłości zaciemnić kod
    muszę tylko gdzieś zapisać, że to zrobiłem :D
    jeszcze raz dzięki
    BTW-znaczy toolchain stary albo niedopracowany (znaczy do doopy :P )

    temat zamykam
  • #4 18685336
    zbynio_k
    Poziom 10  
    JarekC napisał:
    Zgłaszane błędy wynikają z tego że brakuje definicji bitów dla UART pracującego w trybie SPI.

    sprawdziłem to nieco wcześniej i jest dokładnie jak piszesz, niema ich w plikach, w moim toolchainie, choć w opisie jest obsługa w/w procków

    chyba poprawię pliki *.h i po kłopocie, bo nazwy użyte będą zgodne z datasheetem
    użycie innych bitów do tego celu może w przyszłości zaciemnić kod
    muszę tylko gdzieś zapisać, że to zrobiłem :D
    jeszcze raz dzięki
    BTW-znaczy toolchain stary albo niedopracowany (znaczy do doopy :P )

    temat zamykam

    Dodano po 1 [minuty]:

    brak definicji w/w bitów w plikach io dla procków
REKLAMA