Szybki start z WinAVR cz.1.pdf

(329 KB) Pobierz
Szybki start z WinAVR cz.1
1 Z 14
Artykuł pochodzi ze strony XYZ HOBBY ROBOT ( xyz.isgreat.org )
Szybki start z WinAVR, cz.1
30.11.08 ABXYZ
Pakiet programów WinAVR zawiera niezłej jakości, całkowicie
darmowy (GPL) kompilator języka C (AVR GCC) wraz z kompletem
narzędzi do tworzenia programów dla 8bitowych mikroprocesorów
AVR ATMEL. Jednak, w odróŜnieniu od programów komercyjnych,
jak np. CodeVisionAVR, WinAvr nie dostarcza Ŝadnego IDE (ang.
Integrated Development Environment) zintegrowanego
środowiska programistycznego, 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ć. W artykule opisałem jak, wykorzystując
programy z pakietu WinAVR, szybko skompilować przykładowy
program w języku C i zaprogramować układ AVR.
Instalacja WinAVR
Zaczynamy od pobrania z Internetu i instalacji najnowszej wersji
WinAVR, szukać naleŜy pod adresem: http://winavr.sourceforge.net
/download.html Obecnie najnowszą wersją jest 20090313. Pobrany
plik instalacyjny WinAVR20090313install.exe ma rozmiar 22 MB,
instalowane pliki zajmą na twardym dysku 123 MB. Program
instalujący zapyta między innymi o nazwę katalogu na dysku gdzie
WinAVR ma być zamontowany i które komponenty pakietu mają
być zainstalowane. MoŜemy tu nic nie zmieniać i przyjąć domyślne
opcje jakie proponuje instalator. Ja skróciłem nazwę katalogu
docelowego do "C:\WinAVR", poniewaŜ zwykle w tym miejscu inne
programy (programy wykorzystujące kompilator avrgcc) poszukują
pakietu WinAVR.
270070162.007.png 270070162.008.png 270070162.009.png 270070162.010.png
2 Z 14
Instalator pakietu WinAVR.
Dodatkowo, jeśli uŜywamy programatora przyłączanego do portu
równoległego komputera, naleŜy uruchomić skrypt:
C:\WinAVR\bin\install_giveio.bat
Więcej szczegółowych informacji na temat instalowanych
programów moŜna znaleźć przeglądając plik:
C:\WinAVR\WinAVRusermanual.html
Wraz z kompilatorem AVRGCC, jako biblioteka standardowa,
dołączona jest specjalna biblioteka AvrLibc , jej szczegółowa
dokumentacja dostępna jest teŜ w katalogu:
C:\WinAVR\doc
W tym katalogu znajdują się teŜ dokumentacje i instrukcje obsługi
wszystkich programów z pakietu WinAVR, warto tam zajrzeć.
Kompilacja przykładowego programu
PoniŜej znajduje się przykładowy programik w języku C, efektem
jego działania będzie miganie dwóch diod LED przyłączonych do
portów we/wy AVRa. Skompilujemy przykładowy program,
następnie, wykorzystując programator ISP załadujemy go do
pamięci Flash układu AVR.
/* Programik do testowania środowiska WinAVR
układ ATmega
PB0,PB1 diody LED (PBx>R>LED>GND);
PD0 przycisk (PD0>Button>GND) */
#include <avr/io.h>
#include <util/delay.h>
int main( void )
{
DDRB |=
|= _BV( 0 )|
)|_BV( 1 );
);
PORTB |=
|= _BV( 0 );
);
PORTB &=
&= ~_BV( 1 );
);
DDRD &=
&= ~_BV( 0 );
);
PORTD |=
|= _BV( 0 );
);
while ( 1 )
{
PORTB ^=
^=_BV( 0 );
);
);
_delay_ms((PIND & _BV( 0 ))?
^=_BV( 1 );
);
))? 1000 : 200 );
);
}
}
Listing przykładowego programu w języku C, programik powoduje migotanie dwóch diod
LED przyłączonych do portów we/wy AVRa
Sprzęt. UŜyty sprzęt to płytka stykowa z układem atmega16 oraz
dwa popularne (schematy z Internetu) typy programatorów ISP:
stk200 i usbasp. Niektóre programatory wymagają instalacji
sterowników oraz dodatkowej konfiguracji, więc naleŜy zapoznać
się dokładnie z instrukcją obsługi programatora lub opisem
schematu. Jeśli brak instrukcji i potrzebnego oprogramowania
(sterowników), moŜna poszukać w Internecie, na stronie
producenta/sprzedawcy sprzętu.
Tworzymy gdzieś na dysku katalog projektu, na przykład: "Moje
|=
)|
|=
&=
&=
);
|=
);
^=
);
PORTB ^=
^=
))?
270070162.001.png
3 Z 14
dokumenty\winavr\start\". Następnie uruchamiamy "ulubiony"
edytor tekstu; ja najchętniej uŜywam gvim'a, lecz tym razem
uŜyjemy dołączonego do WinAVR edytor pn (Programmers
Notepad).
Start>Programy>WinAvr>Programmers Notepad [WinAVR]
Programmers Notepad jest niewielkim edytorem tekstu, posiada podświetlanie składni wielu
języków programowania, moŜliwość tworzenia projektów i pracy z wieloma plikami
jednocześnie, ma szerokie moŜliwości konfiguracji.
Wklejamy tekst przykładowego programu do edytora i zapisujemy
plik pod nazwą "main.c" w katalogu naszego projektu.
File>Save As
Aby skompilować przykładowy program, potrzebujemy w katalogu
projektu plik Makefile; jest to specjalny plik tekstowy z regułami
dla programu make. Program make automatyzuje proces kompilacji
programów. By utworzyć odpowiedni dla naszego projektu plik
Makefile, posłuŜę się dołączonym do WinAVR programem MFile.
Start>Programy>WinAvr>MFile [WinAVR]
270070162.002.png 270070162.003.png
4 Z 14
Program MFile jest kreatoremedytorem plików Makefile, z jego pomocą, szybko i łatwo,
wygenerujemy gotowy plik Makefile wybierając odpowiednie opcje z menu; bez
konieczności poznania reguł tworzenia takich plików.
W programie MFile, w kolejnych pozycjach menu "Makefile"
ustawiamy parametry jak poniŜej:
Main file name: main
Po kliknięciu w pozycję menu "Main file name" pokaŜe się
okienko z polem tekstowym, gdzie naleŜy wpisać nazwę pliku
programu, w którym znajduje się funkcja main programu;
nazwę pliku naleŜy wpisać bez rozszerzenia ".c" .
MCU type: ATmega16
Z listy wybiera się typ mikrokontrolera AVR.
Output format: ihex
Wybiera się format pliku wynikowego, moŜna wybrać: 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 względem rozmiaru kodu(s).
C Standard level: gnu99
Wybór standardu języka C, pozostawiamy bez zmian.
Debugging format: ELF/stabs
Wybór formatu pliku do debugowania, pozostawiamy bez
zmian.
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)
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
270070162.004.png 270070162.005.png
5 Z 14
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. Jeśli uŜywanego typu
programatora brak liście (MFile go nie zna), moŜna wpisać go
ręcznie patrz dalej w tekście.
Port: lpt2 (programator podłączony do portu drukarki lpt2)
Wybiera się rodzaj i numer portu we/wy komputera do
którego przyłączono programator. Ja mam w komputerze dwa
porty równoległe: LPT1 i LPT2.
Mfile działa jak zwykły edytor tekstu, by móc ręcznie edytować
treść tworzonego pliku Makefile trzeba zaznaczyć w menu
"Makefile" opcję "Enable Editing of Makefile". Wiec robimy to, bo
dodatkowo chcemy wpisać z jaką częstotliwością ma pracować
mikrokontroler, a takŜe kilka innych informacji, a czego nie moŜna
zrobić poprzez menu.
Będziemy programować nowego ATmega16, który domyślnie
skonfigurowany jest do pracy z wewnętrznym oscylatorem RC
1MHz. Jeśli trzeba podać częstotliwość sygnału taktującego
procesor, na przykład uŜyjemy w programie funkcji _delay_ms, to
teŜ najlepiej wpisać tę informację w pliku Makefile. Odnajdujemy
w nowo tworzonym pliku Makefile fragment tekstu zaczynającym
się od:
#Processor frequency
i zaraz po nim dopisujemy linię
F_CPU = 1000000
270070162.006.png
Zgłoś jeśli naruszono regulamin