Kanał - ATNEL tech-forum
Wszystkie działy
Najnowsze wątki



Teraz jest 20 kwi 2024, o 06:16


Strefa czasowa: UTC + 1





Utwórz nowy wątek Odpowiedz w wątku  [ Posty: 10 ] 
Autor Wiadomość
PostNapisane: 18 mar 2018, o 18:34 
Offline
Nowy

Dołączył(a): 18 mar 2018
Posty: 8
Pomógł: 0

Dzień dobry,

Brnę sobie przez Bluebooka i utknąłem na rozdziale poświęconym wyświetlaczowi LCD (hd44780). Napisałem już wszystko zgodnie z książką, mam swój plik main.c, plik lcd_hd44780.c oraz plik lcd_hd44780.h. Niestety po kompilacji projektu w Eclipse pokazuje mi się w konsoli następujący komunikat:

'Building target: 04_LCD_HD44780.elf'
'Invoking: AVR C Linker'
avr-gcc -Wl,-Map,04_LCD_HD44780.map -mmcu=atmega32 -o "04_LCD_HD44780.elf" ./lcd_hd44780.o ./main.o
./main.o: In function `main':
main.c:(.text.startup.main+0x4): undefined reference to `lcd_init'
collect2.exe: error: ld returned 1 exit status
make: *** [04_LCD_HD44780.elf] Błąd 1

Obrazek

Dodam, że pracuję na płytce ewaluacyjnej ATB 1.05 z Atmegą 32.



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 18 mar 2018, o 18:49 
Offline
Użytkownik
Avatar użytkownika

Dołączył(a): 31 lip 2012
Posty: 157
Pomógł: 8

mhmm.... ja tam się za bardzo nie znam, ale wydaje mi się, ze w main nie widzi funkcji lcd_init. I albo jej niema albo jest nie zainkludowana.



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 18 mar 2018, o 18:51 
Offline
Użytkownik
Avatar użytkownika

Dołączył(a): 23 paź 2014
Posty: 1021
Lokalizacja: Trójmiasto
Pomógł: 188

A masz poprawnie zainkludowaną bibliotekę hd44780, poprawnie udostępnioną na zewnątrz funkcję lcd_init?
Linker krzyczy że nie widzi definicji takiej funkcji jak lcd_init.



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 18 mar 2018, o 20:53 
Offline
Nowy

Dołączył(a): 18 mar 2018
Posty: 8
Pomógł: 0

No właśnie chodzi o to, że funkcja istnieje. W pliku nagłówkowym lcd_hd44780.h mam jej deklarację, natomiast w pliku lcd_hd44780.c definicję. Plik .h zaiklidowałem zarówno do lcd_44780.c jak i do main.c



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 18 mar 2018, o 21:21 
Offline
Użytkownik
Avatar użytkownika

Dołączył(a): 23 paź 2014
Posty: 1021
Lokalizacja: Trójmiasto
Pomógł: 188

A nie masz literówki w nazwie funkcji?



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 18 mar 2018, o 21:32 
Offline
Nowy

Dołączył(a): 18 mar 2018
Posty: 8
Pomógł: 0

Nie, to też już sprawdzałem. Dlatego nie ogarniam, co jest nie tak ;p



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 18 mar 2018, o 21:35 
Offline
Użytkownik
Avatar użytkownika

Dołączył(a): 23 paź 2014
Posty: 1021
Lokalizacja: Trójmiasto
Pomógł: 188

Zrób clean projektu + Index -> Freshen All Files następnie ponownie Build



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 19 mar 2018, o 11:49 
Offline
Nowy

Dołączył(a): 18 mar 2018
Posty: 8
Pomógł: 0

Cleaning projektu i freshen all files też niestety nie pomogły. Dziś jeszcze raz do tego wszystkiego usiądę i przejrzę od dechy do dechy.



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 19 mar 2018, o 13:25 
Offline
Moderator
Avatar użytkownika

Dołączył(a): 03 paź 2011
Posty: 27224
Lokalizacja: Szczecin
Pomógł: 1041

Frantic napisał(a):
Napisałem już wszystko zgodnie z książką, mam swój plik main.c,

Dlaczego nie pokazujesz swojego kodu w main.c ? przecież pisałem tobie na maila żebyś go pokazał - przecież nikt tu nie jest wróżką żeby wróżyć z czegoś czego nie ma

Druga sprawa razem z książką otrzymałeś kody źródłowe - sprawdzałeś jak one działają i się kompilują ? przecież można wtedy też sobie porównywać czego np u ciebie brakuje

_________________
zapraszam na blog: http://www.mirekk36.blogspot.com (mój nick Skype: mirekk36 ) [ obejrzyj Kurs EAGLE ] [ mój kanał YT TV www.youtube.com/mirekk36 ]



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 20 mar 2018, o 11:04 
Offline
Nowy

Dołączył(a): 18 mar 2018
Posty: 8
Pomógł: 0

Dobra, wybaczcie popelinę, wszystko się wyjaśniło :D. Brakowało nawiasu klamrowego przy jednej z funkcji gdzieś na początku pliku lcd_hd44780.c i tym samym w ciele tej funkcji znalazły się wszystkie pozostałe, w tym mój lcd_init. A że w main.c wywołałem tylko lcd_init oraz funkcje do wyświetlania napisów z RAM-u, która nie była w ciele innej funkcji, kompilator krzyczał tylko o lcd_init i na tej funkcji się skupiłem, a wystarczyłoby dodać więcej funkcji i pewnie bym się zorientował, że krzyczy o funkcje od pewnego miejsca w pliku :D. Niemniej jednak dzięki za odpowiedzi.



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
Wyświetl posty nie starsze niż:  Sortuj wg  
Utwórz nowy wątek Odpowiedz w wątku  [ Posty: 10 ] 

Strefa czasowa: UTC + 1


Kto przegląda forum

Użytkownicy przeglądający ten dział: Brak zidentyfikowanych użytkowników i 16 gości


Nie możesz rozpoczynać nowych wątków
Nie możesz odpowiadać w wątkach
Nie możesz edytować swoich postów
Nie możesz usuwać swoich postów
Nie możesz dodawać załączników

Szukaj:
Skocz do:  
Sitemap
Technologię dostarcza phpBB® Forum Software © phpBB Group phpBB3.PL
phpBB SEO