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

ATmega8 - Błąd inicjacji HD44780 w Eclipse, brak pliku defines.h

albert.pracz 29 Lis 2013 17:42 2670 10
  • #1 13006253
    albert.pracz
    Poziom 10  
    Witam, próbuję zainicjować ten LCD lecz bez większych skutków.
    Po wrzuceniu bibliotek Joerg'a Wunchs'a wyrzuca mi błędy jakby nie było pliku "defines.h" co do obwodu to mam wszystko okej, bo na innej bibliotece mogę normalnie wszytko wyświetlać. Program piszę w Eclipse. Jestem świeży w tych sprawach, więc proszę o pomoc ;)
    Tutaj zrzut z eclipse'a:
    ATmega8 - Błąd inicjacji HD44780 w Eclipse, brak pliku defines.h
    Log kompilacji:
    17:32:13 **** Incremental Build of configuration Release for project HD44780 ****
    make all 
    Building file: ../LCD/hd44780.c
    Invoking: AVR Compiler
    avr-gcc -I"C:\Users\Albert\workspace\LCD2x16" -Wall -Os -fpack-struct -fshort-enums -std=gnu99 -funsigned-char -funsigned-bitfields -mmcu=atmega8 -DF_CPU=1000000UL -MMD -MP -MF"LCD/hd44780.d" -MT"LCD/hd44780.d" -c -o "LCD/hd44780.o" "../LCD/hd44780.c"
    ../LCD/hd44780.c:17:21: error: defines.h: No such file or directory
    ../LCD/hd44780.c:62:22: error: macro "SET_" requires 3 arguments, but only 2 given
    ../LCD/hd44780.c: In function 'hd44780_pulse_e':
    ../LCD/hd44780.c:62: error: 'SET_' undeclared (first use in this function)
    ../LCD/hd44780.c:62: error: (Each undeclared identifier is reported only once
    ../LCD/hd44780.c:62: error: for each function it appears in.)
    ../LCD/hd44780.c:89:29: error: macro "READ_" requires 3 arguments, but only 2 given
    ../LCD/hd44780.c:89: error: 'READ_' undeclared (first use in this function)
    ../LCD/hd44780.c:92:22: error: macro "CLR_" requires 3 arguments, but only 2 given
    ../LCD/hd44780.c:92: error: 'CLR_' undeclared (first use in this function)
    ../LCD/hd44780.c:103:23: error: macro "CLR_" requires 3 arguments, but only 2 given
    ../LCD/hd44780.c: In function 'hd44780_outnibble':
    ../LCD/hd44780.c:103: error: 'CLR_' undeclared (first use in this function)
    ../LCD/hd44780.c:105:25: error: macro "SET_" requires 3 arguments, but only 2 given
    ../LCD/hd44780.c:105: error: 'SET_' undeclared (first use in this function)
    ../LCD/hd44780.c:107:25: error: macro "CLR_" requires 3 arguments, but only 2 given
    ../LCD/hd44780.c:108:29: error: macro "ASSIGN_" requires 4 arguments, but only 3 given
    ../LCD/hd44780.c:108: error: 'ASSIGN_' undeclared (first use in this function)
    ../LCD/hd44780.c:131:23: error: macro "SET_" requires 3 arguments, but only 2 given
    ../LCD/hd44780.c: In function 'hd44780_innibble':
    ../LCD/hd44780.c:131: error: 'SET_' undeclared (first use in this function)
    ../LCD/hd44780.c:132:31: error: macro "ASSIGN_" requires 4 arguments, but only 3 given
    ../LCD/hd44780.c:132: error: 'ASSIGN_' undeclared (first use in this function)
    ../LCD/hd44780.c:134:25: error: macro "SET_" requires 3 arguments, but only 2 given
    ../LCD/hd44780.c:136:25: error: macro "CLR_" requires 3 arguments, but only 2 given
    ../LCD/hd44780.c:136: error: 'CLR_' undeclared (first use in this function)
    ../LCD/hd44780.c:138:31: error: macro "ASSIGN_" requires 4 arguments, but only 3 given
    ../LCD/hd44780.c:139:23: error: macro "CLR_" requires 3 arguments, but only 2 given
    ../LCD/hd44780.c:185:22: error: macro "SET_" requires 3 arguments, but only 2 given
    ../LCD/hd44780.c: In function 'hd44780_init':
    ../LCD/hd44780.c:185: error: 'SET_' undeclared (first use in this function)
    ../LCD/hd44780.c:186:22: error: macro "SET_" requires 3 arguments, but only 2 given
    ../LCD/hd44780.c:187:21: error: macro "SET_" requires 3 arguments, but only 2 given
    ../LCD/hd44780.c:188:31: error: macro "ASSIGN_" requires 4 arguments, but only 3 given
    ../LCD/hd44780.c:188: error: 'ASSIGN_' undeclared (first use in this function)
    ../LCD/hd44780.c:212:29: error: macro "ASSIGN_" requires 4 arguments, but only 3 given
    ../LCD/hd44780.c: In function 'hd44780_powerdown':
    ../LCD/hd44780.c:212: error: 'ASSIGN_' undeclared (first use in this function)
    ../LCD/hd44780.c:213:23: error: macro "CLR_" requires 3 arguments, but only 2 given
    ../LCD/hd44780.c:213: error: 'CLR_' undeclared (first use in this function)
    ../LCD/hd44780.c:214:23: error: macro "CLR_" requires 3 arguments, but only 2 given
    ../LCD/hd44780.c:215:22: error: macro "CLR_" requires 3 arguments, but only 2 given
    make: *** [LCD/hd44780.o] Błąd 1
    
    17:32:14 Build Finished (took 458ms)
    


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

    biblioteka hd44780.h
    Kod: C / C++
    Zaloguj się, aby zobaczyć kod

    Plik hd44780.c
    Kod: C / C++
    Zaloguj się, aby zobaczyć kod

    No i mój program, to znaczy tylko fukncje definiujące.
    Kod: C / C++
    Zaloguj się, aby zobaczyć kod
  • #2 13006274
    mickpr
    Poziom 39  
    Jak wrzucasz plik test.c do innego katalogu i podajesz
    Kod: C / C++
    Zaloguj się, aby zobaczyć kod

    to się nie dziw, że go nie znajduje.
    Dodaj katalog LCD do ścieżki "include path" z zmień powyższy kod na :
    Kod: C / C++
    Zaloguj się, aby zobaczyć kod
    , albo wprost na
    Kod: C / C++
    Zaloguj się, aby zobaczyć kod
  • #3 13006304
    albert.pracz
    Poziom 10  
    mickpr napisał:
    Jak wrzucasz plik test.c do innego katalogu i podajesz
    Kod: C / C++
    Zaloguj się, aby zobaczyć kod

    to się nie dziw, że go nie znajduje.
    Dodaj katalog LCD do ścieżki "include path" z zmień powyższy kod na :
    Kod: C / C++
    Zaloguj się, aby zobaczyć kod
    , albo wprost na
    Kod: C / C++
    Zaloguj się, aby zobaczyć kod


    Dodałem teraz LCD do includes, ale czy dam:
    Kod: C / C++
    Zaloguj się, aby zobaczyć kod

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

    To nic nie zmienia i tak tłucze błędami po log'u i daje "no such file or directory".
    ATmega8 - Błąd inicjacji HD44780 w Eclipse, brak pliku defines.h
  • Pomocny post
    #4 13006566
    Pituś Bajtuś
    Poziom 28  
    W archeologię się bawisz? Te bliblioteki są z czasów, gdy avr-gcc był tak naprawdę makroasemblerem. Może użyj jakichś nowszych?
  • #5 13006591
    albert.pracz
    Poziom 10  
    W takim razie poleć mi coś, ja się na tym kompletnie nie znam, szukałem i znajdowałem tylko podobne do tych.
  • #7 13006920
    dondu
    Moderator na urlopie...
    albert.pracz napisał:
    W takim razie poleć mi coś, ja się na tym kompletnie nie znam, szukałem i znajdowałem tylko podobne do tych.

    No przecież stosowałeś dobre i działające biblioteki radzia.
    Dostałeś nawet link do artykułu, gdzie masz wszystko łącznie z programem i schematem i także na bibliotekach radzia.
    https://www.elektroda.pl/rtvforum/topic2699596.html#13004315
    Trzymaj się jednego a nie skacz z kwiatka na kwiatek.

    Po co w tej samej sprawie zakładasz nowy temat?
  • #8 13010838
    albert.pracz
    Poziom 10  
    Myślałem że ta biblioteka, o której pisałem na początku tematu okaże się lepsza. Według was nie. Miałbym jeszcze pytanie, da się dzięki tej bibliotece napisać tekst w dwóch liniach bez przerzucania kursora po napisaniu pierwszej linii do następnej?
  • #9 13011004
    piotrva
    VIP Zasłużony dla elektroda
    O co dokładnie Ci chodzi? Chcesz, żeby kursor nie migał? Czy migał w innym miejscu, niż koniec tekstu?
  • #10 13011120
    albert.pracz
    Poziom 10  
    Chce zrobić tak, że jeśli pisze tekst dłuższy niż 16 znaków to żeby resztę przerzuciło do drugiego wiersza albo po podaniu "/n" lub coś takiego.
  • #11 13011949
    tmf
    VIP Zasłużony dla elektroda
    Pituś Bajtuś napisał:
    W archeologię się bawisz? Te bliblioteki są z czasów, gdy avr-gcc był tak naprawdę makroasemblerem. Może użyj jakichś nowszych?


    Bzdura, biblioteka Jeorga Wunscha to jedna z najlepiej napisanych i najlepszych bibliotek do tego LCD. Napisana jest w C, a standard od chwili jej napisania (C99) nie uległ zmianie.
    Natomiast zdecydowanie w rozwiązywaniu problemów z kompilacjąpomaga czytanie komunikatów kompilatora. Dokładnie wypisuje o co mu chodzi i co jest nie tak.

    Dodano po 2 [minuty]:

    albert.pracz napisał:
    Chce zrobić tak, że jeśli pisze tekst dłuższy niż 16 znaków to żeby resztę przerzuciło do drugiego wiersza albo po podaniu "/n" lub coś takiego.


    Masz funkcję wyświetlającą znaki, w kodzie Wunscha jest to rozwiązane - \n powoduje przejście do nowej linii. Ponieważ funkcje wyświetlające łańcuchy bazują na funkcjach wyświetlających znaki (najczęściej put cośtam) w tych funkcjach taką funkcjonalność należy zaimplementować.
REKLAMA