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 kompilacji przy pierwszym projekcie z mikrokontrolerami

lobuzp 26 Lip 2015 14:14 1320 13
  • #1 14876212
    lobuzp
    Poziom 9  
    Witam, chciałbym zacząć swoję przygodę z mikrokontrolerami. Myślałem, aby zacząć z tym kursem Link.
    Niestety już na samym początku pojawiły się problemy. Podaję komunikat, kod i plik makefile.
    Kod: Text
    Zaloguj się, aby zobaczyć kod


    Wiem, że ogólnie się nie poleca tworzenia własnych plików makefile i lepiej przejść na Atmel Studio 6.2 lub avr studio 5, ale chciałbym iść z kursem, ponieważ najzwyczajniej w świecie "nie ogarnę" tych programów, a tak dokładnych kursów od A do Z jak ten powyżej w internecie nie znalazłem.

    Co do samego problemu to prosiłbym o wytłumaczenia jak dla "zielonego" przystało

    Z góry dziękuję za pomoc.
  • #2 14876298
    Tomasz Gutewicz
    Poziom 12  
    Czy kod programu zapisany jest jako led.c ?
  • Pomocny post
    #3 14876315
    marekhab
    Poziom 33  
    Dziwne ale przepisałem Twój kod i skompilował się poprawnie . Używałem Eclipse, na dowód że wszystko OK zamieszczam plik main.c i skompilowany .hex.
    Mała uwaga pomyliłem tylko czas opóźnienia zamiast 1000 ms dałem 100 ms, lecz to na pewno nie jest przyczyną.
  • Pomocny post
    #4 14876333
    dondu
    Moderator na urlopie...
    Po to producent tworzy i rozwija środowisko programistyczne (IDE), by go używać. Zainstaluj więc aktualną wersję oryginalnego Atmel Studio i zapomnij o ręcznym tworzeniu plików makefile: http://mikrokontrolery.blogspot.com/2011/04/atmel-studio-spis-tresci.html

    Zaglądnij także, do spisu treści na powyższej stronie i czerp z niej do woli :)
  • #5 14876351
    lobuzp
    Poziom 9  
    tak kod programu zapisuje jako led.c
    mam na pulpicie folder tam zapisuje plik "makefile" w którym Main file name wpisuję "led" bez ".c" następnie do tego samego folderu zapisuję kod programu z nazwą "led.c"
  • #6 14876599
    Tomasz Gutewicz
    Poziom 12  
    Krzyczy, że brak pliku led.o.d, może za bardzo namieszałeś w Makefile. Tak jak wcześniej wspomniano przeżuć się na AVRStudio bądź ewentualnie Eclipse, które jest o tyle fajne że bazują na nim niektóre środowiska programistyczne dla ARM i w razie przesiadki na nie IDE masz poznane.
  • Pomocny post
    #7 14876618
    dondu
    Moderator na urlopie...
    Tomasz Gutewicz napisał:
    Tak jak wcześniej wspomniano przeżuć się na AVRStudio ...

    Nie na AVRStudio tylko najnowsze Atmel Studio 6.2 to istotna różnica: http://mikrokontrolery.blogspot.com/2011/04/kompilator-i-srodowisko-programistyczne.html


    Tomasz Gutewicz napisał:
    ... ewentualnie Eclipse, które jest o tyle fajne że bazują na nim niektóre środowiska programistyczne dla ARM i w razie przesiadki na nie IDE masz poznane.

    Najgorsze co może zrobić początkujący z AVR, to wybrać Eclipse i pozbawić się symulatora, który zawiera Atmel Studio.
    Symulator to niezbędny każdemu początkującemu (i nie tylko) element środowiska programistycznego, znacząco przyspieszający naukę i wyszukiwanie błędów w pisanych programach
    tym bardziej, gdy nie posiada się debuggera.

    Atmel Studio także obsługuje ARMy Atmela.
  • #8 14876774
    lobuzp
    Poziom 9  
    W sumie racja, nie ma po co wbijać gwoździa czołem, skoro pod ręką jest młotek.
    Przerzucę się zgodnie z zaleceniem pana "dondu" na Atmel Studio 6.2 Mam nadzieję, że da rade się w tym połapać. Z powyższego kursu (link w 1 poście) mogę dalej czerpać pełnymi garściami, zmieni się tylko środowisko pisania programu, dobrze rozumiem?
  • #10 14877458
    lobuzp
    Poziom 9  
    na stronie Link czytamy: "Zakładam więc dalej, że masz poprawnie skonfigurowany programator (jest widoczny w systemie operacyjnym), masz zainstalowane avrdude i avrdude jest w stanie komunikować się z programatorem. "
    jak to sprawdzić? Dodam, że jeszcze nie połączyłem programatora z mikrokontrolerem Atmegi, dopiero wgrałem sterowniki na dany programator.

    oraz czy zamiast stosować się do kroków z powyższego poradnika, mogę zastosować się do tego?
    Link

    I ostatnie pytanie, dlaczego gdy przepisałem ten kod do Atmela Studio:
    Link
    Kompilator wykrzyczał, że nie mam zdefiniowanych DDRA, PORTA, PA7? Skoro wklejając kod z pierwszego postu, nie ma żadnych problemów?
  • Pomocny post
    #11 14878470
    dondu
    Moderator na urlopie...
    1. programator musi być widoczny w Menadżerze urządzeń jako libusb... lub usbasp.
    2. avrdude musi się uruchamiać gdy wywołasz go w linii poleceń Windows.
    3. mkavrcalculator nie jest Ci potrzebny - są dostępne darmowe nakładki na AVRdude np. eXtreme Burner: http://extremeelectronics.co.in/avr-tutorials...oftware-for-usbasp-based-usb-avr-programmers/

    Poza tym USBasp współpracuje z Atmel Studio: http://mikrokontrolery.blogspot.com/2011/03/Atmel-Studio-Programator-USBasp-USBTiny.html

    lobuzp napisał:
    Kompilator wykrzyczał, że nie mam zdefiniowanych DDRA, PORTA, PA7?

    Zapewne mikrokontroler dla którego kompilujesz program nie posiada portu A.
  • #12 14880365
    lobuzp
    Poziom 9  
    Wielkie dzięki, mam nadzieję że dobrze połączyłem USBasp z Atmel Studio (jedno pytanie do tego).
    Możecie mi powiedzieć, dlaczego:
    1) nie tworza mi się pliki .hex? znaczy tworzyły, ale przestały (ad.1- komunikat jaki otrzymuję)
    2) Na blogu od użytkownika "dondu" pojawia się taka linijka
    -e -U flash:w:$(ProjectDir)Release\$(ItemFileName).hex:a
    pogrubione, mam dać Release czy Debug? wydaje mi się, że debug tak?
    3) mkavrcalulator wyrzuca błąd programatora i mikrokontrolera. Mimo, że są połączone poprawnie (program jeszcze nie wgrany) ale zasilanie jest przekazywane, bo dioda się świeci.

    Ad 1. komunikat "
    Kod: Text
    Zaloguj się, aby zobaczyć kod


    AD 3
    Kod: Text
    Zaloguj się, aby zobaczyć kod
  • #13 14880701
    dondu
    Moderator na urlopie...
    1. Skoro nie tworzą Ci się pliki hex to programator nie ma czym zaprogramować.

    2. To zależy co wybrałeś w Atmel Studio Realase, czy Debug zgodnie z artykułem wskazanym wyżej. Ale to nieważne na razie bo wystarczy, że znajdziesz plik hex i wtedy będziesz wiedział.

    Zrób tak:
    - uruchom kompilację (menu Bulid>Rebuild Solution),
    - spakuj cały folder projektu i załącz tutaj.
  • #14 14881212
    lobuzp
    Poziom 9  
    Teraz poszło, lepiej. Zapewne wcześniej coś naskrobałem, ale i tak jak ktoś zerknie będzie miło. (jednak usbasp mam dane release) "-e -P usb -c USBasp -p Atmega8 -e -U flash:w:$(ProjectDir)Release\$(ItemFileName).hex:a"

    I jak chciałem z poziomu avrdude wywołać komendę "avrdude -c usbasp -p m8" to dostaje w zwrocie, że aplikacja nie będzie działać na moim komputerze. Więc teraz muszę szukać innej wersji, mam win 8.1.

    Trochę roboty jest, ale każdy mały krok do przodu cieszy.
REKLAMA