Table of Contents
0x00 Przygotowanie środowiska pracy
Instrukcja dotyczy osób korzystających z systemu Windows. Kolejność instalacji jest znacząca.
Zaczynając ten rozdział należy:
- Posiadać sprawne połączenie [komputer→programator→układ] za pomocą avrdude
Podstawowa konfiguracja sprzętowa
Podczas wszystkich ćwiczeń będziemy korzystać z podstawowego układu. Można zrezygnować z diody sygnalizującej obecność napięcia zasilania, jednak polecam takie rozwiązanie. Przycisk reset również nie jest konieczny. Kondensatory i rezystor podciągający linię reset są konieczne. Poniżej przedstawiam schemat ideowy oraz rozwiązanie jakie zastosowałem ja. Elementy można rozmieścić wedle własnego uznania zamieszczam zdjęcia jedynie poglądowo. Wydrukowałem 40 opisów wyprowadzeń. Oprócz złącza programatora moje rozwiązanie zawiera jeszcze złącze zasilające.
Kondensatory niwelują zakłócenia jakie mogą zaburzyć pracę uC. Rezystor podciągający ustala napięcie na linii reset na poziomie wysokim czyli nieaktywnym. Szyna zasilania górna oraz dolna składają się z 2 rzędów, wyższy to plus (kolor czerwony na niektórych płytkach) niższy to masa (niebieski lub czarny [specjalnie pomazałem swoją płytkę])
Instalacja oprogramowania
1. Instalujemy WinAVR
- Ściągamy najnowszy pakiet ze strony http://sourceforge.net/projects/winavr/files/WinAVR/
- Uruchamiamy instalator, wybieramy język polski i instalujemy zgodnie z poleceniami.
2. Instalujemy Java SE Runtime Environment
JRE jest wymagane do uruchomienia Eclipse.
- Ściągamy instalator JRE ze strony http://www.oracle.com/technetwork/java/javase/downloads/index.html
- Uruchamiamy instalator, instalujemy zgodnie z poleceniami.
3. Instalujemy Eclipse
- Ściągamy najnowsze Eclipse dla C/C++ ze strony http://www.eclipse.org/downloads/
- Eclipse nie posiada instalatora, zawartość paczki zip rozpakowywujemy w dowolne miejsce. Ja na przykład posiadam specjalny folder na programy które nie znajdują się w Program Files (C:\Bin)
- Tworzyny skrót do eclipse.exe np. na pulpicie (menu kontekstowe→wyślij do→pulpit)
- Uruchamiamy Eclipse
- Po uruchomieniu pojawi się okno dialogowe w którym wybieramy miejsce docelowe dla katalogu zawierającego ustawienia i projekty. Wybieramy dowolne miejsce. (U mnie jest to np. Dokumenty/Projekty/AVReclipse)
- Aktualizujemy program: Help→Check for Updates
4. Instalujemy plugin AVR Eclipse
- W Eclipse wybieramy opcje Help→Install New Software…
- Klikamy przycisk Add znajdujący się w górnym prawym rogu okna. W oknie które się pojawiło wpisujemy Name: AVR Location:
http://avr-eclipse.sourceforge.net/updatesite/
Klikamy OK.
- Po chwili na liście pojawia się opcja CDT Optional Features, którą rozwijamy i zaznaczamy AVR Eclipse Plugin
- Klikamy Next, Next, Zaznaczamy opcję I accept the terms…, Finish
- Pojawi się okno pobierania plików
- Jeżeli pojawi się okno Security Warning klikamy OK
- W ostatnim oknie klikamy Restart Now
4. Konfigurujemy plugin
- Klikamy Window→Preferences
- Rozwijamy opcję AVR→AVRDude
- Klikamy przycisk Add…
- Uzupełniamy dane w zależności od posiadanego programatora:
- Dla AVRISPmk2:
- Zaznaczamy na liście Atmel AVR ISP mkII
- Wpisujemy w polu Override default port (-P) :
usb
- Klikamy OK, OK
Pierwszy projekt
Tworzymy projekt
- Klikamy File→New→Project…
- Wybieramy z listy C/C++→C Priject i klikamy Next >
- Wpisujemy nazwę projektu (np. NowyProjekt)
- Wybieramy Project type: AVR Cross Target Application→Empty Project
- Klikamy Next
- Z listy konfiguracji odznaczamy Debug tak żeby jedyną opcją było Release
- Klimamy Next
- Wybieramy układ ATmega8
- Częstotliwość pozostawiamy 1MHz
- Klikamy Finish
- Jeżeli jest widoczna zakładka Welcome to the Eclipse IDE for C/C++ Developers klikamy Workbench(strzałka w okręgu)
Konfigurujemy projekt
- Klikamy Project→Properties
- Wybieramy z listy po lewej AVR→AVRDude
- Z listy Programmer configuration wybieramy Konfiguracja USBasp(Zgodnie z nazwą jaką podaliśmy podczas konfiguracji)
- Klikamy Apply
Kompilujemy projekt
- W nowo powstałym pliku wpisujemy:
int main() { for(;;); }
- Zapisujemy plik (Ctrl+S) oraz kompilujemy program (Projecy→Build All, Ctrl+B)
- Wykonanie powyższych czynności powinno zaskutkować skompilowaniem programu wykonującego martwą pętlę. W zakładce Project Explorer w folderze projektu powinien powstać nowy podfolder: Binaries
- Warto zwrócić uwagę na zakładki znajdujące się pod polem edycji pliku: Problems oraz Console:
- Problems zawiera błędy oraz ostrzerzenia od kompilatora
- Console zawiera wyniki pracy programów działających w tle. W przypadku kompilacji zakończonej sukcesem konsola zawiera następujące informacje:
**** Build of configuration Debug for project NowyProjekt **** make all Building file: ../main.c Invoking: AVR Compiler avr-gcc -Wall -g2 -gstabs -O0 -fpack-struct -fshort-enums -std=gnu99 -funsigned-char -funsigned-bitfields -mmcu=atmega8 -DF_CPU=1000000UL -MMD -MP -MF"main.d" -MT"main.d" -c -o"main.o" "../main.c" Finished building: ../main.c Building target: NowyProjekt.elf Invoking: AVR C Linker avr-gcc -Wl,-Map,NowyProjekt.map -mmcu=atmega8 -o"NowyProjekt.elf" ./main.o Finished building target: NowyProjekt.elf Invoking: AVR Create Extended Listing avr-objdump -h -S NowyProjekt.elf >"NowyProjekt.lss" Finished building: NowyProjekt.lss Invoking: Print Size avr-size --format=avr --mcu=atmega8 NowyProjekt.elf AVR Memory Usage ---------------- Device: atmega8 Program: 122 bytes (0.7% Full) (.text + .data + .bootloader) Data: 0 bytes (0.0% Full) (.data + .bss + .noinit) Finished building: sizedummy
Pamięć układu jest ograniczona, dlatego przydatna jest informacja dotycząca wielkości wynikowego programu. W powyższym przykładzie program zajmuje 122 bajty pamięci Flash (pamięć programu) i nie wykorzystuje pamięci RAM (pamięć danych).
Programowanie układu
- Aby zaprogramować układ wystarczy kliknąć AVR→Upload Poroject to Target Device
- Jakiekolwiek błędy i problemy będą wylistowane w zakładce konsoli