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

Błąd kompilacji w Atmel Studio 6: hd44780 no such file or directory

Wojtkel243 17 Sty 2015 18:49 1275 9
REKLAMA
  • #1 14340363
    Wojtkel243
    Poziom 9  
    Posty: 14
    Ocena: 1
    Witam.
    Od niedawna zacząłem przygodę z mikro kontrolerami avr.
    I właśnie w atmel studio 6 wyskakuje mi taki błąd przy probie kompilacji przykładowego programu z tej strony http://hobby.abxyz.bplaced.net/index.php?pid=4&aid=8 . Szukałem sporo o przyczynach ale próbowałem już wszystkiego i ten błąd wyskakuje dalej... Biblioteki dodane , optymalizacja zrobiona ,częstotliwość zdefiniowana według poradnika http://mikrokontrolery.blogspot.com/2011/04/atmel-studio-pelne-ide-avr-arm-cz1.html i dalej nic.
    Mieliście podobny problem? jaka możne być przyczyna tego ?
  • REKLAMA
  • #3 14342175
    Wojtkel243
    Poziom 9  
    Posty: 14
    Ocena: 1
    Witam i dziękuje za zainteresowanie tematem.
    Po kompilacji jest tylko ten 1 error i 0 warnings i 0 messages.
    Mam windowsa 8.1 ale to chyba nie ma nic do tego.
    Załaczam zrzut ekranu. Błąd kompilacji w Atmel Studio 6: hd44780 no such file or directory
  • REKLAMA
  • #4 14342241
    tmf
    VIP Zasłużony dla elektroda
    Posty: 14318
    Pomógł: 2090
    Ocena: 2205
    Pliki HDxxx to nie biblioteki - należy je więc dodać jako zwykłe pliki projektu. Jak już to zrobisz i nadal nie będzie działać, to zmień #include <HDxx> na #include "HDxx".
  • REKLAMA
  • #5 14342288
    Wojtkel243
    Poziom 9  
    Posty: 14
    Ocena: 1
    Wiem że jako początkujący popełniam na pewno proste błędy.
    TMF jeśli są to pliki projektu jak mam je dodać do projektu? Bo teraz sa dołączone jako biblioteki tak ?
    Jeszcze jedno Lamerskie pytanie , jak rozpoznać czy dany plik jest biblioteka czy tym zwykłym plikiem projektu?
    Dziękuje za cierpliwość i zainteresowanie.
  • #6 14342340
    krzysssztof
    Poziom 21  
    Posty: 385
    Pomógł: 52
    Ocena: 54
    Pliki hd44780.c i hd44780.h nie są bibliotekami w tym sensie, że nie są wbudowane w struktury kompilatora i nie wie on, gdzie ich szukać.

    Dołącza się je do pliku projektu poprzez użycie #include "ścieżka do pliku .h", w tym wypadku powinieneś użyć #include "hd44780.h" pod warunkiem, że wcześniej skopiujesz pliki hd44780.c i hd44780.h do folderu w którym przechowywany jest dany projekt.

    Pliki mogą znajdować się również gdziekolwiek indziej, ale wtedy trzeba podać pełną ścieżkę dostępu ( #include "C:\users\.........\projekty\blablabla\hd44780.h" ).

    Proponuję rozwiązanie pierwsze - łatwiejsze, czytelniejsze, mniej potencjalnych problemów.
  • #7 14342484
    tmf
    VIP Zasłużony dla elektroda
    Posty: 14318
    Pomógł: 2090
    Ocena: 2205
    @Wojtkel243 Biblioteki to prekompilowane pliki C połączone razem właście w plik o roszerzeniu .a (czyli w takim pliku masz jeden lub więcej plików obiektowych .obj). Oprócz rozszerzenia .a tradycyjnie ich nazwa musi w gcc zaczynać się od lib. W świecie MCU bibliotek nie stosuje się często, bo pliki źródłowe wymagają prekompilacji na konkretny MCU, w związku z tym stosowanie bibliotek jest małowygodne/niemożliwe i stosuje się je tylko wyjątkowo (np. libm). Nieprawidłowo bibliotekami często nazywane są ściągnięte z internetu pliki źródłowe realizujące określone funkcjonalności. Niemniej są to zwykłe pliki źródłowe C i należy je tak właśnie dodawać do projektu.
    @krzysssztof W Atmel Studio nie trzeba nic kopiować - dodając plik do projektu można wybrać jedną z dwóch opcji - AS kopiuje wskazany plik do pliku projektu, tworząc jego lokalną kopię (domyślne) lub tworzy łącze do pliku - jest to wygodne jeśli mamy kolekcję plików źródłowych wspólnych dla wielu projektów. W przypadku plików nagłówkowych, katalog w których się one znajdują (zwykle jest to jeden katalog, np. Include) należy dodać do ścieżki wysuzkiwania plików nagłówkowych - Project/Properties/Toolchain/AVR/GNU C Compiler/Directories - Include Path. Jeśli używasz #inlcude "" to plik wyszukiwany jest w bieżącym katalogu i jeśli tam się znajduje to nie trzeba zmieniać ścieżki przeszukiwania dla kompilatora.

    krzysssztof napisał:

    Pliki mogą znajdować się również gdziekolwiek indziej, ale wtedy trzeba podać pełną ścieżkę dostępu ( #include "C:\users\.........\projekty\blablabla\hd44780.h" ).


    Zasadniczo nigdy nie należy stosować ścieżek bezwzględnych - wystarczy skopiować projekt do innego katalogu i wszystko się sypie. Warto też używać '/' zamiast '\' - taki program będzie się dało też poprawnie skompilować w GNU/Linuks.
  • REKLAMA
  • #8 14343197
    Wojtkel243
    Poziom 9  
    Posty: 14
    Ocena: 1
    No uporałem się z jednym problemem. Faktycznie żle były dodane te pliki , dodałem poprzez add i existing project i skompilowało. Taki komunikat wyskoczył Kompilacja rozpoczęła się.
    Kod: C#
    Zaloguj się, aby zobaczyć kod


    Teraz jest problem bo nigdznie nie widzę pliku hex
    Chcę programować przez mkavrcalculator dodany do atmel dzieki temu poradnikowi http://mirekk36.blogspot.com/2013/06/atmelstudio-mkavrcalculator-all-avrdude.html
    Z tego co wyczytałem plik powinien powstać w folderze release tak?
    Kod: C#
    Zaloguj się, aby zobaczyć kod
  • #9 14343336
    tmf
    VIP Zasłużony dla elektroda
    Posty: 14318
    Pomógł: 2090
    Ocena: 2205
    Plik hex powstaje w katalogu Debug lub Release w zależności od wybranego celu.
    Można sobie komplikować życie stosując różne narzędzia zewnętrzne, a można po prostu zintegrować posiadany programator (któy swoją drogą jest raczej kiepski i przy najbliższej okazji warto pomyśleć nad zakupem czegoś sensownego) z Atmel Studio:
    http://mikrokontrolery.blogspot.com/2011/03/Atmel-Studio-Programator-USBasp-USBTiny.html
  • #10 14349429
    Wojtkel243
    Poziom 9  
    Posty: 14
    Ocena: 1
    Dziękuję za odpowiedzi problem rozwiązany.
    Nie chce zakładać nowego tematu a mam jeszcze małe pytanie.
    Potrzebuje wykonać timer który odliczał by ustawiony mu czas ale żeby nie był wyzwalany jednym impulsem tylko żeby sumował czasy trwania stanu wysokiego. Czyli ma podawane napięcie 5V impulsowo i zlicza czas trwania tych impulsów jeśli czas przekroczy to daje pojedynczy impuls na wyjście i zlicza od początku. Wiem że można by łatwo to na avr zrobić ale nie znam sie jeszcze az tak na pisaniu programów. Czy na ne555 dałoby rade ?
    Jeszcze raz dziękuje i pozdrawiam

Podsumowanie tematu

✨ Użytkownik napotkał błąd kompilacji w Atmel Studio 6, związany z brakiem pliku hd44780. Po kilku interakcjach, okazało się, że pliki hd44780.c i hd44780.h nie są bibliotekami wbudowanymi w kompilator, a użytkownik musiał je dodać jako zwykłe pliki projektu. Wskazówki obejmowały użycie dyrektywy #include "hd44780.h" oraz skopiowanie plików do folderu projektu. Po poprawnym dodaniu plików, kompilacja zakończyła się sukcesem. Użytkownik zadał również pytanie o implementację timera, który zliczałby czas trwania impulsów, co sugerowało użycie układu NE555.
Podsumowanie AI na podstawie dyskusji. Może zawierać błędy.
REKLAMA