Strona Główna
FAQFAQ  SzukajSzukaj  UżytkownicyUżytkownicy RegulaminRegulamin  GrupyGrupy
RejestracjaRejestracja  ZalogujZaloguj






Przyszłość jest w naszych rękach...
...bo przyszłość to robotyka.





Poprzedni temat «» Następny temat
Szybki start z WinAVR
Autor Wiadomość
abxyz 
Expert programowanie


Pomógł: 16 razy
Posty: 158
Otrzymał 26 piw(a)
Skąd: zza winkla
Wysłany: 16 Paź 07 11:40   Szybki start z WinAVR


Szybki start z WinAVR

Pakiet programów WinAVR zawiera w sobie całkiem dobry i zupełnie darmowy (na licencji GPL) kompilator języka C wraz z kompletem narzędzi do tworzenia programów dla 8-bitowych mikroprocesorów AVR firmy ATMEL. Jest to odmiana znanego, np. z systemu Linux, kompilatora GCC (GNU Compiler Collection), która pracuje w systemie Windows, a tworzy kod wynikowy przeznaczony dla mikrokontrolerów AVR. Jednak, w odróżnieniu od programów komercyjnych takich jak np. CodeVisionAVR, pakiet WinAvr nie dostarcza tzw. zintegrowanego środowiska programistycznego IDE (ang. Integrated Development Environment), tj. aplikacji pozwalającej: edytować teksty źródłowe programów, kompilować, debugować (szukać błędów śledząc instrukcja po instrukcji wykonanie programu), programować pamięć układu AVR. Po instalacji WinAvr otrzymujemy w katalogu zbiór programów, z których większość działa w konsoli tekstowej (w wierszu poleceń), i z którymi nie wiadomo co dalej zrobić. Dlatego w tym krótkim artykule opisałem jak, wykorzystując WinAvr, można szybko skompilować przykładowy program w C i zaprogramować pamięć mikrokontrolera AVR.

Instalacja WinAVR

Oczywiście trzeba zacząć od pobrania z Internetu i instalacji najnowszej wersji WinAVR, szukać należy pod adresem:
http://sourceforge.net/news/?group_id=68108. Obecnie najnowszą wersją jest 20070525. Pobrany plik instalacyjny WinAVR-20070525-install.exe ma rozmiar 18 MB, a instalowane pliki zajmą na twardym dysku 91 MB. Program instalujący zapyta między innymi o katalog na dysku gdzie WinAVR ma być zamontowany i które komponenty pakietu mają być zainstalowane, lepiej tu nic nie zmieniać i przyjąć domyślne opcje jakie proponuje instalator. Dodatkowo, by moc korzystać z programatora za pośrednictwem programu avrdude, należy uruchomić skrypt C:\WinAVR-20070525\bin\install_giveio.bat(nie dotyczy Win9x/Me)

WinAVR dostarcza następujące programy:
    GNU Compiler Collection (GCC)
    avr-libc
    GNU Binutils
    GNU Debugger (GDB)
    Insight
    SimulAVR
    AVaRICE
    avrdude
    avrdude-gui
    Programmers Notepad
    MFile
    SRecord


Kompilacja pierwszego programu

Poniżej znajduje się tekst przykładowego programu w C, efektem działania programu będzie miganie diody LED przyłączonej do wyprowadzenia PD1 uC AVR. Zajmniemny się jego kompilacją, a następnie załadujemy wynikowy kod do pamięci flash mikrokontroler AVR. Wcześniej, by uniknąć bałaganu na dysku, warto utworzyć, np. w katalogu Moje dokumenty, podkatalog o nazwie Kurs avr-gcc, a w nim podkatalog o nazwie led, będzie to miejsce dla plików kompilowanego programu.

Kod:
#include <avr/io.h>
#include <util/delay.h>               

int main(void)
{
    DDRD  |= _BV(1);               
    PORTD &= ~_BV(1);                   
    unsigned char i;
    for (;;)
    {
      PORTD ^=_BV(1);           
          for (i = 0; i <100; i++)
                      _delay_ms(10);           
    }
    return 0;
}


Zaczniemy od uruchomienia edytora tekstu Programmers Notepad dołączonego do WinAVR.
Start->Programy->WinAvr-20070525->Programmers Notepad [WinAVR]



Programmers Notepad jest prostym edytorem tekstu, posiada podświetlanie składni wielu języków programowania oraz możliwość tworzenia projektów i pracy z wieloma plikami naraz. Edytor został odpowiednio skonfigurowany do współpracy z programami pakietu WinAVR, można uruchomić kompilacje edytowanego programu i zaprogramować układ AVR wybierając w menu Tools edytora odpowiednią opcję.

Często tekst źródłowy programu w C podzielony bywa na wiele plików. Żeby nie musieć otwierać do edycji każdego z plików osobno, można utworzyć w edytorze projekt, dodać do niego każdy z plików programu, i na koniec zapisać plik opisujący projekt na dysku. Następnym razem, po uruchomieniu edytora i otwarciu pliku projektu, w okienku "Projetcts" pojawią się nazwy wszystkich plików dodanych wcześniej do projektu, by któryś otworzyć do edycji, wystarczy kliknąć w jego nazwę.

Więc tworzymy w edytorze nowy projekt, mimo, że przykładowy program mieści się w jednym pliku (na razie).
File->New->Project



Pojawi się okienko dialogowe "New Project". W pole "Name" wpiszemy nazwę tworzonego projektu "led", w polu "Folder" wpiszemy ścieżkę do katalogu w którym znajdą się pliki przykładowego programu C:\Moje dokumenty\Kurs avr-gcc\led

Następnie kopiujemy i wklejamy tekst przykładowego programu do edytora i zapisujemy plik pod nazwą "led.c" w katalogu projektu.

File->Save As

Następnie dodajemy plik "led.c" do utworzonego wcześniej projektu. W okienku "Projects" trzeba zaznaczyć nazwę projektu "led" i w menu, które pojawi się po wciśnięciu prawego klawisza myszki wybrać opcje "Add Files". Pojawi się okienko dialogowe wyboru pliku "Add Files", w który należy odnaleźć katalog projektu i wybrać plik "led.c".



Następnie zapisujemy wszystko na dysku.
File->Save All

Ale to jeszcze nie wszystko, żeby skompilować przykładowy program potrzebny będzie w katalogu projektu tzw. plik Makefile. Jest to specjalny plik tekstowy, zawiera różne informacje potrzebne do kompilacji, na szczęście nie trzeba go pisać samemu. By szybko utworzyć odpowiedni plik Makefile posłużymy się programem MFile.

Start->Programy->WinAvr-20070525->MFile [WinAVR]




Program MFile jest kreatorem plików Makefile, z jego pomocą można szybko utworzyć gotowy plik Makefile wybierając odpowiednie opcje z menu, bez konieczności poznania reguł pisania plików Makefile.

W programie MFile, w kolejnych pozycjach menu "Makefile" ustawiamy parametry jak poniżej.
    *Main file name: led
    Po kliknięciu w pozycję menu "Main file name" pokaże się okienko z polem do wprowadzania teksu, gdzie należy wpisać nazwę pliku programu, w którym znajduje się funkcja "main"; nazwę pliku należy wpisać bez rozszerzenia ".c" .
    *MCU type: ATmega8
    Tu wybiera się typ mikrokontrolera AVR
    *Output format: ihex
    Tu wybiera się format pliku wynikowego, do wyboru są: plik w formacie hex, plik binarny lub plik z kodem w asemblerze
    *Optimization level: s
    Optymalizacja kodu, można wybrać jeden z trzech poziomów(1,2,3) lub wyłączyć optymalizację(0), albo wybrać optymalizacja pod względem rozmiaru kodu(s)
    *C Standard level: gnu99
    Wybór standardu języka C
    *Debugging format: ELF/stabs
    Wybór formatu pliku do debugowania
    *C/C++ source file(s): (pomijamy, program składa się tylko z jednego pliku)
    Jeśli tekst program podzielony jest na wielu plików, to należy wpisać nazwy wszystkich plików z wyjątkiem pliku zawierającego funkcje "main". Nazwy plików trzeba rozdzielić spacją i tym razem należy wpisać je wraz z rozszerzeniami.
    *Assembler source file(s): (pomijamy, piszemy tylko w C)
    Wpisuje się nazwy plików z kodem w asemblerze
    *printf() options: none/standart ( nie używamy funkcji "printf" )
    Funkcja printf ze standardowej biblioteki jest bardzo rozbudowana i może zająć znaczną część pamięci programu uC. Dla zaoszczędzenia pamięci można zrezygnować z użycia funkcji "printf" lub wybrać jej wersję okrojoną.
    *scanf() options: none/standart (nie używamy funkcji "scanf")
    Podobnie jak z funkcją printf
    *Programmer: stk200 (użyjemy programator zgodny z popularnym STK200)
    Wybiera się typ programatora
    *Port: lpt1 (programator podłączony do portu drukarki lpt1)
    Wybiera się nazwę portu komputera do którego przyłączono programator


Mfile wygląda i zachowuje się jak zwykły edytor tekstu, jednak by móc ręcznie edytować treść tworzonego pliku Makefile trzeba odfajkować w menu "Makefile" pozycję "Enable Editing of Makefile". Wiec robimy to, bo dodatkowo należy wpisać z jaką częstotliwością pracuje mikrokontroler oraz kilka innych informacji, a czego nie można zrobić poprzez menu.

Będziemy programować nowego ATmega8, które domyślnie skonfigurowane są do pracy z wewnętrznym generatorem 1MHz. Więc odnajdujemy w nowo tworzonym pliku Makefile fragment tekstu zaczynającym się od
Kod:
#Processor frequency

i zaraz po nim dopisujemy linię
Kod:
F_CPU = 1000000



Następnie odnajdujemy sekcje, gdzie zapisane są informacje dla programu avrdude, program avrdude służy do programowania pamięci mikrokontrolera (część softwarowa programatora). Sekcja ta zaczyna się od linii:
Kod:
#---------------- Programming Options (avrdude) ----------------

Na końcu sekcji dopisujemy dwie linie, tę na początku i tę na końcu poniższego fragmentu:
Kod:
AVRDUDE_EXITMODE = noreset

AVRDUDE_FLAGS = -p $(MCU) -P $(AVRDUDE_PORT) -c $(AVRDUDE_PROGRAMMER)
AVRDUDE_FLAGS += $(AVRDUDE_NO_VERIFY)
AVRDUDE_FLAGS += $(AVRDUDE_VERBOSE)
AVRDUDE_FLAGS += $(AVRDUDE_ERASE_COUNTER)

AVRDUDE_FLAGS += -E $(AVRDUDE_EXITMODE)



Dzięki temu, po zakończeniu programowania pamięci mikrokontrolera, avrdude wyłączy sygnał reset i procesor rozpocznie pracę z nowym programem. Bo domyślnie avrdude pozostawia reset włączony.

Gotowy plik Makefile zapisujemy w katalogu projektu pod nazwą "Makefile"
File->Save As

Gdy już mamy w katalogu projektu gotowy plik Makefile, możemy powrócić do edytora tekstu Programmers Notepad i uruchomić kompilacje
Tools->[WinAVR]Make All



W trakcie kompilacji pojawi się okienko "Output" z informacjami o jej przebiegu, pod koniec wypisany zostanie komunikat
Kod:
> Process Exit Code: 0

zwrócona wartość zero oznacza, że kompilacja przebiegła bez błędów. Istotną informacją jest też ile kod programu zajmie w pamięci uC.



Programowanie pamięci układu AVR

Gdy kompilacja przebiegła bez błędów i w katalogu projektu jest gotowy plik led.hex, można spróbować zaprogramować pamięć mikrokontrolera AVR

Tools->[WinAVR] Program

Uruchomiony zostanie program avrdude i w okienku Output wypisane zostaną komunikaty o przebiegu programowania pamięci układu AVR.



Problem z Windows 98/ME

W systemie Windows 98/ME kompilator avr-gcc z WinAVR w wersji 20070525 może w ogóle nie działać, na szczęście można w Internecie znaleźć poprawioną wersję pliku avr-gcc.exe.
Jeśli podczas kompilacji otrzymamy komunikat o błędzie:
Kod:
 avr-gcc: _spawnv: No such file or directory



Należy odszukać w Internecie plik o nazwie _spawnv-20070525.zip. Po jego rozpakowaniu otrzymamy plik o nazwie avr-gcc.patched.exe, trzeba zmienić jego nazwę na avr-gcc.exe i podmienić z plikiem C:\WinAVR-20070525\bin\avr-gcc.exe
Postaw piwo autorowi tego posta
 
 
Więcej szczegółów
Wystawiono 4 piw(a):
treker, Master, drukarz, damoon
Wyświetl posty z ostatnich:   
Odpowiedz do tematu
Nie możesz pisać nowych tematów
Nie możesz odpowiadać w tematach
Nie możesz zmieniać swoich postów
Nie możesz usuwać swoich postów
Nie możesz głosować w ankietach
Nie możesz załączać plików na tym forum
Możesz ściągać załączniki na tym forum
Dodaj temat do Ulubionych
Wersja do druku

Skocz do:  


website uptime

Powered by phpBB modified by Przemo © 2003 phpBB Group
kredyt przez internet

Love and Light Dominik Peh kosmetyki nero BearShare taniec nowoczesny Warszawa taniec z gwiazdami Porównywarka cen elektroniki