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:

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.

schematic_base.jpg


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

  1. Ściągamy najnowszy pakiet ze strony http://sourceforge.net/projects/winavr/files/WinAVR/
  2. Uruchamiamy instalator, wybieramy język polski i instalujemy zgodnie z poleceniami.

2. Instalujemy Java SE Runtime Environment

JRE jest wymagane do uruchomienia Eclipse.

  1. Uruchamiamy instalator, instalujemy zgodnie z poleceniami.

3. Instalujemy Eclipse

  1. Ściągamy najnowsze Eclipse dla C/C++ ze strony http://www.eclipse.org/downloads/
  2. 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)
  3. Tworzyny skrót do eclipse.exe np. na pulpicie (menu kontekstowe→wyślij do→pulpit)
  4. Uruchamiamy Eclipse
  5. 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)

eclipse_install_01.jpg

  1. Aktualizujemy program: Help→Check for Updates

4. Instalujemy plugin AVR Eclipse

  1. W Eclipse wybieramy opcje Help→Install New Software…
  2. 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.

  3. Po chwili na liście pojawia się opcja CDT Optional Features, którą rozwijamy i zaznaczamy AVR Eclipse Plugin

eclipse_install_02.jpg

  1. Klikamy Next, Next, Zaznaczamy opcję I accept the terms…, Finish
  2. Pojawi się okno pobierania plików
  3. Jeżeli pojawi się okno Security Warning klikamy OK
  4. W ostatnim oknie klikamy Restart Now

4. Konfigurujemy plugin

  1. Klikamy Window→Preferences
  2. Rozwijamy opcję AVR→AVRDude

eclipse_install_04.jpg

  1. Klikamy przycisk Add…
  2. Uzupełniamy dane w zależności od posiadanego programatora:
    1. Dla AVRISPmk2:
      1. Zaznaczamy na liście Atmel AVR ISP mkII
      2. Wpisujemy w polu Override default port (-P) : usb
    2. Dla USBasp jak na screenie: (Najważniejsze jest żeby zaznaczyć na liście USBasp , reszta jest bez zmian) eclipse_install_05.jpg
  3. Klikamy OK, OK

Pierwszy projekt

Tworzymy projekt

  1. Klikamy File→New→Project…
  2. Wybieramy z listy C/C++→C Priject i klikamy Next >
  3. Wpisujemy nazwę projektu (np. NowyProjekt)
  4. Wybieramy Project type: AVR Cross Target Application→Empty Project
  5. Klikamy Next
  6. Z listy konfiguracji odznaczamy Debug tak żeby jedyną opcją było Release
  7. Klimamy Next
  8. Wybieramy układ ATmega8
  9. Częstotliwość pozostawiamy 1MHz
  10. Klikamy Finish
  11. Jeżeli jest widoczna zakładka Welcome to the Eclipse IDE for C/C++ Developers klikamy Workbench(strzałka w okręgu)

Konfigurujemy projekt

  1. Klikamy Project→Properties
  2. Wybieramy z listy po lewej AVR→AVRDude
  3. Z listy Programmer configuration wybieramy Konfiguracja USBasp(Zgodnie z nazwą jaką podaliśmy podczas konfiguracji)
  4. Klikamy Apply

Kompilujemy projekt

  1. W nowo powstałym pliku wpisujemy:
    int main()
    {
       for(;;);
    }
  2. Zapisujemy plik (Ctrl+S) oraz kompilujemy program (Projecy→Build All, Ctrl+B)
  3. 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
  4. 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

  1. Aby zaprogramować układ wystarczy kliknąć AVR→Upload Poroject to Target Device
  2. Jakiekolwiek błędy i problemy będą wylistowane w zakładce konsoli