====== 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ą [[integra:avr#avrdude|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.\\
{{:pl:avrc:art:schematic_base.jpg?700}}\\
{{:pl:avrc:art:device1.jpg?700|}}\\
{{:pl:avrc:art:device2.jpg?700|}}\\
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)\\
{{ :pl:avrc:art:eclipse_install_01.jpg }}
- 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__ \\
{{ :pl:avrc:art:eclipse_install_02.jpg }}
- 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__ \\
{{ :pl:avrc:art:eclipse_install_04.jpg }}
- 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''
- Dla USBasp jak na screenie: (Najważniejsze jest żeby zaznaczyć na liście USBasp , reszta jest bez zmian) {{ :pl:avrc:art:eclipse_install_05.jpg }}
- 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 [[#Konfigurujemy_plugin|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