Programowanie AVR w C - problem

Sep 17, 2010 11 Replies

Zmuszony do przejscia na C zaczalem pierwsze proby z tym jezykiem. Uzywam AVR Studio wraz z AVR-GCC Win AVR. Poki co problemow pelno ale jeden podtsawowy nie daje mi dalej pracowac. Zaczalem na poczatek dla proby test z gotowymi bibliotekami dla sterowania LCD. Zrobilem dwie proby i dwa razy ten sam rezultat. Tworze projekt, wrzucam pliki i przechodze do Build (ustawienia w opcjach projektu nie ruszane) I tu zaczyna sie problem bo wyskakuja setki bledow, a to ze nie ma jakiegos znaku, a to ze funkcje nie zadeklarowane itp itd. Co robie dalej. Odpalam WinAvr, biore pusty szablon makefile jaki tam jest, wpisuje tylko nazwe projektu i tam Make all i wszystko dziala. Potem jest w AVR Studio w opcjach projektu wskaze na zewnetrzny plik Makefile ten uzyty wczesniej rowniez wszystko sie kompiluje i dziala po wgraniu do procka. Czemu wiec AVR studio ma tak dziwnie ustawione standardowe opcje ze poki co nic z gotowcow nie chce sie na tym kompilowac? Co tam poustawiac (tak jak to ma Win AVR) zeby bez problemow wiekszosc rzeczy sie kompilowala? Czy moze odpuscic sobie i kompilacje robic zawsze przy uzyciu Win AVR.


W dniu 17.09.2010 22:11, Chomik pisze:

AVR Studio jest bardzo wrażliwe na używanie dyrektyw include " " lub include < > w pierwszym wypadku musisz mieć pliki bibliotek w folderze projektu w drugim w odpowiednich folderach AVR Studio. Z tego powodu mogą być problemy...

Poza tym może nie do końca udała się integracja AVR Studio z Win AVR. Albo wybierasz nie ten typ projektu w AVR Studio.

RM

Nie potrzeba ¿adnego makefile podawaæ mu w³asnego. Wszystko idzie jak po ma¶le. Zak³adasz projekt i za ka¿dym razem F12 i F7 i wszystko dzia³a jak nale¿y.

Nie ma takich problemów jak opisujesz. Zak³adasz nowy projekt wizardem i kompilujesz co chcesz. Ja przenoszê fragmenty kodu napisane w Builderze do AVRstudio i kompiluj± siê jednym naci¶nieciem.

Bardzo rzeczowa odpowiedz. Gdyby nie bylo problemow to bym nie pytal. Z defaultowymi ustawieniami mi nie kompiluje a Win AVR robi to bez problemu (po wgraniu HEX-a do procka uklad dziala).

Jest to mozliwe bo dzieje sie to wlasnie przy projektach zawierajacych sporo "inkludowanych" rzeczy. Z tego co wyczytalem to includowane pliki musza byc dolaczone w drzewie projektu w odpowiednich kategoriach no i to zrobilem ale efekt bez zmian i dalej nie wiem gdzie szukac. Czytalem troche na roznych forach o problemach z kompilacja w AVR Studio i np. z tym ze roznej wielkosci kod wynikowy wychodzi jak sie robi w AVR S a inny w W AVR. ale nadal nie mam rozwiazania dla mojej sytuacji.

A jak sprawdzic czy sie udala integracja? W project option jest w External tool sciezka do win avr i make ktora sama sie dodala podczas instalacji. Projekt AVR-GCC jest wybrany. Druga opcja to assembler wiec ciezko tu sie pomylic.

Jak otworzysz projekt w AVR Studio po lewej stronie zazwyczaj znajduje się okienko z dwiema zakładkami: AVR GCC i Processor, wybierz zakładkę AVR GCC i upewnij się, że w wyświetlonym drzewie masz załączone wszystkie pliki projektu, te pliki które załąnczasz dyrektywą #include "*.h" muszą być załączonme w drzewie Headers Files, pliki załąnczone dyrektywą #include "*.c" muszą znajdować się w drzewie Sources Files.

Daj jakis przykład tego outputu.

Upewnij się, że ścieżki są poprawne, upewnij się, że wszystkie pliki są dołączone, nie zaczynaj od dużych projektów. Postaraj się przeczytać kod, który wkleisz 'z netu', zanim go skompilujesz, bo często zdarzają się bzdury, które nie mają prawa się kompilować. Sam wielokrotnie się na tym łapałem.

Różna wielkość AVRS/WAVR jest spowodowana prawdopodobnie różnymi opcjami kompilacji/optymalizacji w obu sytuacjach.

Wszystko jest gdzie trzeba to juz przetrenowalem

Testuje na sprawdzonych przez wiele innych osob rzeczach. Tak jak pisalem wczesniej kompilujac z plikiem Makefile zrobionym przez Mfile z WinAVR wszystko jest ok i kod wgrany do procjka dziala bez problemu wiec nie jest to wina zrodla. Kompilowalem z uzyciem Makefil-a dolaczonego przez autora programu i tez jest ok. Wiec dla mnie ewidentnie problem lezy gdzies w tworzeniu Makefila przez AVR Studio ale nie wiem w czym szukac bo po trzech dniach prob skonczyly mi sie pomysly.

Po kolejnym dniu kombinacji, zmianie wersji AVR Studio i wielu innych zabiegach dalem sobie spokoj z szukaniem przyczyny. Kompluje z uzyciem zewnetrznego Makefil-a i jest ok.

Tam prawdopodobnie rzeczywiscie sa jakies problemy w znajdowaniu sciezek bo nawet polecenie Clean nie dziala i nic nie kasuje a przy zewnetrznym Makefil-u chodzi poprawnie.

W dniu 2010-09-19 12:03, Chomik pisze:

I zamiast wkleić te błędy które wyrzuca Ci WinAVR to każesz się się wszystkim we wróżkę bawić...

Join the Discussion

Have something to add? Share your thoughts — no account required.

Didn't find your answer?

Ask the community — no account required