Skocz do zawartości
Zaloguj się, aby obserwować  
OldSkull

[Programowanie] Przygotowanie środowiska do programowania AVR

Pomocna odpowiedź

1. Wstęp

Każda osoba chcąca rozpocząć swoją zabawę z mikrokontrolerami musi w pierwszej kolejności wykonać kilka czynności:

-Przygotować środowisko programistyczne.

-Kupić i przygotować odpowiedni sprzęt i materiały.

-Zakupić bądź wykonać programator.

-Zakupić bądź wykonać płytkę testową.

-Zamrugać diodą 😉 czyli stworzyć pierwszy program.

W tym artykule zajmę się tylko i wyłącznie pierwszym punktem. Od razu chciałbym zaznaczyć, że obrazkami będę się posiłkował tylko i wyłącznie w miejscach, gdzie jest to potrzebne. Zakładam, że osoby zainteresowane potrafią obsłużyć programy okienkowe, w szczególności menu u góry okna oraz menu wywoływane LPM (lewy przycisk myszy). Skupię się na oprogramowaniu pod system operacyjny Windows (w szczególności XP), pomijając inne systemy operacyjne. Jeżeli ktoś czuje się w nich obeznany, na pewno sobie poradzi z programowaniem, gdyż we wszystkich korzysta się z tego samego kompilatora GCC.

2. WinAVR

Zabawę rozpoczynamy od zainstalowania środowiska zawierającego przede wszystkim kompilator języka C/C++ (GNU GCC) z bibliotekami (nieistotne dla osób programujacych w assemblerze) oraz program do obsługi programatorów (avrdude, program konsolowy obsługujący chyba wszystkie nieoryginalne programatory do mikrokontrolerów AVR). Strona projektu:

http://winavr.sourceforge.net/index.html

Program ściągamy z sourceforge:

http://sourceforge.net/projects/winavr/files/

Wybieramy najnowszę wersję. Zdecydowanie unikamy wersji z 2007 roku - w jednej z nich natrafiłem na powazny problem z kompatybilnością, aczkolwiek nie widzę powodu, dla którego ktokolwiek miałby korzystać z tak starej wersji. Następnym krokiem jest instalacja. Należy mieć prawa administratora, gdyż program dodaje swpją ścieżkę do pliku PATH. Można podczas instalacji odznaczyć tą opcję, ale nie polecam. Standardowo przeklikowujemy się przez instalator, pamiętając że:

-nie wyłączamy zalecanych w instalatorze opcji

-instalujemy w folderze o krótkiej nazwie - zostawiamy domyślną, lub skracamy do C:\WinAVR. Jeżeli nie chcemy mieć dodatkowego folderu w katalogu głównym dysku, dbamy o to, aby w ścieżce nie występowała spacja " ", gdyż może to utrudnić kompilowanie programów.

-po zainstalowaniu upewniamy się, czy zainstalwoały się 2 pliki: make.exe (przykładowa ścieżka: C:\WinAVR-20100110\utils\bin\make.exe) oraz avr-gcc.exe (C:\WinAVR-20100110\avr-gcc.exe):

I na tym kończy się ten punkt. W samym WinAVR możemy pisać programy, jednakże nie polecam tego rozwiązania ze względu na problematyczne tworzenie plików makefile (wymaganych podczas kompilowania) oraz problematyczne debuggowanie. Z tego też powodu instalujemy środowisko, które nam to ułatwia.

3. AVRStudio

Zdecydowanie polecam program (zestaw programów) stworzony i udostępniony za darmo przez producenta układów, które chcemy programować. Dlaczego taki wybór? AVRStudio automatycznie tworzy pliki makefile, jest łatwy w obsłudze (całą konfigurację projektu można wyklikać), oraz posiada naprawdę przyjemny debugger. Niestety samo ma wbudowany jedynie kompilator assemblera, jednakże dobrze integruje się z kompilatorem języka C, zawartym w WinAVR (dlatego też instalowaliśmy ten program jako pierwszy).

Ściągnąć możemy z tej strony:

http://www.atmel.com/dyn/products/tools_card.asp?tool_id=2725

Jeżeli nie chcemy się rejestrować, daję link bezpośrednio do pliku: http://www.atmel.com/dyn/resources/prod_documents/AvrStudio4Setup.exe

Instalujemy program, ponownie pamiętajac o prawach administratora i niezmienianiu tego czego nie chcemy zmieniać w opcjach. AVRStudio powinno wykryć, że mamy zainstalowany WinAVR i sobie odpowiednio zapisać konfigurację. Jeżeli by się zdarzyło, że nie wykrył, postępujemy następująco:

uruchamiamy dowolny projekt. Obojętne z jakimi ustawieniami procesora i debuggera.

Wchodzimy w menu Project->Configuration Options. Tutaj w okienku wybieramy po lewej stronie ostatni dział na dole (Custom Options). Ręcznie wybieramy położenie plików avr-gcc.exe oraz make.exe (przykładowe podałem w punkcie 2., oczywiście zależy od wersji i katalogu, w którym instalowaliśmy WinAVR), może być potrzebne zmienienie opcji "Use WinAVR".

Tak przygotowane środowisko jest już gotowe do pisania programów. Niestety edytor w AVRStudio jest zwykłym notatnikiem, który jedynie potrafi kolorować kod źródłowy, ale brakuje w nim możliwości zwijania bloków komentarzy, funkcji, pętli itd. co jest bardzo przydatne przy każdym większym programie, szczególnie jeżeli dbamy o czytelność kodu. Aby poprawić tę niedogodność godzimy się na nieco inną, ale zaręczam: naprawdę warto. Instalujemy notatnik z prawdziwego zdarzenia.

4. Notepad++

Program ten pozwala "zwijać" funkcje, komentarze, pętle i instrukcje warunkowe tak, aby nie były widoczne (a tym samym nie zajmowały miejsca i abyśmy mogli oglądać tylko tę część kodu, która nas w danym momencie interesuje). Poza tym koloruje kod, obsługuje przeglądanie plików w kartach (jak w przeglądarkach www takich jak Opera czy Firefox), konwersję tekstu miedzy kodowaniami i wiele innych, przy czym obsługuje kilkanaście różnych języków programowania. Część funkcjonalności jest widoczna poniżej:

Znakomite narzędzie, które mogę polecić, mimo pewnych wad. Strona projektu:

http://notepad-plus.sourceforge.net/uk/site.htm

Ściągamy ze stronki: http://sourceforge.net/projects/notepad-plus/files/ i instalujemy tak samo jak poprzednie programy.

Pogodzenie Notepad++ i AVRStudio jest dość proste: piszemy kod w notatniku, zapisujemy plik (skrótem klawiszowym). Nastepnie przechodzimy do AVRStudio, które się zapyta przy załadować ponownie plik, oczywiście się zgadzamy, nastepnie kompilujemy komendą Build bądź za pomocą skrótu F7 i już! Jeśli kod nie ma błędów, zostanie skompilowany, w przeciwnym razie pokaże nam błąd, który możemy sprawdzic klikając 2 razy na komendę o błędzie. Oczywiście jeżeli piszemy program, w którym nie skorzystamy z zalet Notepad++, np ze względu na jego prostotę, można pisać tylko i wyłącznie w AVRStudio.

5. Inne oprogramowanie

Po napisaniu prorgamu należy go jeszcze wgrać do mikrokontrolera.W punkcie 2. wspominałem o avrdude, jest to program konsolowy służący do obsługi programatorów. Aby uzyskać liste komend należy uruchomić konsolę (Start->Uruchom i wpisać "cmd")). Tam wpisując samo "avrdude" wywołamy listę poleceń programu:

Przykłądowo jeżeli chcemy wgrać plik nazwa.hex za pomocą programatora usbasp do mikrokontrolera ATmega8 należy wpisać:

avrdude -p m8 -c usbasp -e -U flash:w:[ścieżka do pliku]nazwa.hex:i

Wpisywanie na okrągło może być jednak dość kłopotliwe i męczące, dlatego też lepszym rozwiązaniem jest utworzenie pliku wsadowego i umieszczenie go w folderze z plikiem *.hex. W tym celu tworzymy zwykły plik tekstowy, wpisujemy:

avrdude -p m8 -c usbasp -e -U flash:w:nazwa.hex:i

pause

i zapisujemy jako plik z rozszerzeniem *.bat. Przy każdym uruchomieniu polecenie znajdujące sie w środku będzie wykonywane.

Nie rozwiązuje to jednak problemu wygodnej zmiany "fuse bitów" (bitów konfiguracyjnych) mikrokontrolera. Za pomoca tego programu można co prawda wpisać dowolone ustawienia, ale trzeba wiedzieć co wpisać, gdyż program przyjmuje tylko wartości szesnastkowe (np. 0xA3). Konfigurację można sprawdzic np. na stronie:

http://www.engbedded.com/fusecalc/

lub też zainsttalować dodatkowe oprogramowanie. Polecam drugie rozwiązanie, czyli np. program AVR Burn-o-mat, dostępny na stronie:

http://avr8-burn-o-mat.aaabbb.de/avr8_burn_o_mat_avrdude_gui_en.html

Wszelkie zdjęcia poglądowe znajdują się na podanej stronie. Program korzysta z Javy, przez co uruchamia się stosunkowo wolno, ale powinien działać pod każdym systemem operacyjnym. Pozwala odczytywać i zapisywać program, zawartość EEPROM oraz właśnie fusy bity. Niebezpieczne opcje sa zaznaczone na czerwono, tak więc każdy, nawet nowicjusz, się łatwo zorientuje co i jak. Nie jest jednak pozbawiony wad i zdarza się, że uruchamiając avrdude z konsoli będzie sie dało zaprogramować obszerny program, a korzystajac z AVR Burn-o-mat już nie, czego należy być świadomym. Mimo to polecam.

6. Podsumowanie

Mam nadzieję, że trochę przybliżyłem początki, które mimo iż nudne, muszą być wykonane. Jeżeli coś jest niejasne, niezrozumiałe bądź niepełne, piszcie w komentarzach.

Źródło: własne, jednakże tekst kiedyś umieściłem na swojej stronce - z racji iż liczba odwiedzin nie przekroczyła kilkunastu, postanowiłem wrzucić tutaj, wcześniej go poszerzając.

Udostępnij ten post


Link to post
Share on other sites

Tak się zastanawiam. Czy biorę do ręki jakąś książkę, czy czytam kursy na internecie - wszędzie opisane jest wgrywanie programu przez AVRDUDE. Jako, że chcę zacząć swoją przygodę to na pierwszy rzut kupiłem programator i płytkę uruchomieniową. Zainstalowałem WinAVR i AVRStudio (które chciałem głównie używać). I przykładowe programy wgrywałem bezpośrednio z AVRStudio. Tak samo z poziomu AVRStudio zmieniałem FuseBity odnośnie kwarcu. (wszystko wg instrukcji załączonych do programatora i płytki) To znaczy, że to środowisko zawiera AVRDude, czy od którejś wersji dodano taką możliwość, a może rozwiązanie w AVR Studio jest wadliwe? Osobiście podoba mi się środowisko, w którym mam wszystko "pod ręką", a wszędzie zaleca się avrdude. Jak to jest?

Udostępnij ten post


Link to post
Share on other sites

Ja przez mój krótki czasu używania Usbasp także wykorzystywałem możliwość wgrywania programu przez USB za pomocą kompilatora, tyle że Bascoma. Rozwiązanie jak dla mnie bardzo wygodne i godne polecenia.

Udostępnij ten post


Link to post
Share on other sites

KD93, sory, ze sie czepiam, ale jestem pewien, że nie wgrywałeś programu za pomocą kompilatora.

Udostępnij ten post


Link to post
Share on other sites

Tak trochę się czepiasz bo źle sformułowałem posta, ale myślę że wszyscy wiedzą o co chodzi. My klikamy write flash a kompilator sam uruchamia avrdude i nie musimy tego robić.

Udostępnij ten post


Link to post
Share on other sites

Sciurus, sprawa jest prosta. Środowisko AVRstudio jest darmowym narzędziem Atmela

dla procesorów AVR i możesz w nim zaprogramować procesory jedynie przy pomocy

oryginalnych programatorów sprzętowych wspieranych przez Atmela (MK, MK II, JTAG ice II, AVRdragon),
ewentualnie USB AVR v.2, który emuluje w AVRstudio STK 500.

Bardzo dużo ludzi używa nieorginalnych lub nawet samoróbek (np. USBasp, STK200/300),
które nie są obsługiwane przez AVRstudio.

USBasp jest obsługiwany wyłącznie przez AVRDUDE.

Nie ma obowiązku używać oryginalnych programatorów, tylko trzeba znaleźć programator software'owy obsługujący dany programator sprzętowy.

  • Lubię! 1

Udostępnij ten post


Link to post
Share on other sites

Dołącz do dyskusji, napisz odpowiedź!

Jeśli masz już konto to zaloguj się teraz, aby opublikować wiadomość jako Ty. Możesz też napisać teraz i zarejestrować się później.
Uwaga: wgrywanie zdjęć i załączników dostępne jest po zalogowaniu!

Anonim
Dołącz do dyskusji! Kliknij i zacznij pisać...

×   Wklejony jako tekst z formatowaniem.   Przywróć formatowanie

  Dozwolonych jest tylko 75 emoji.

×   Twój link będzie automatycznie osadzony.   Wyświetlać jako link

×   Twoja poprzednia zawartość została przywrócona.   Wyczyść edytor

×   Nie możesz wkleić zdjęć bezpośrednio. Prześlij lub wstaw obrazy z adresu URL.

Zaloguj się, aby obserwować  

×
×
  • Utwórz nowe...