Kurs AVR dla języka C – przygotowania

Dodane przez 30 października 2011

Witam w pierwszej części kursu AVR dla języka C, w której zajmiemy się przygotowaniem do praktyki – programowania.  Kurs ten jest oparty na moich doświadczeniu – nie jestem specjalistą w dziedzinie mikrokontrolerów AVR, lecz na pewno nie będę “kursantów” wprowadzał w błąd, ponieważ wszystko co piszę jest sprawdzone w praktyce, jak i w teorii.

Mikrokontroler

Czym jest mikrokontroler? Pozwolę sobie na zaczerpnięcie definicji z Wikipedii:

Mikrokontroler (skrót ang. MCU lub µC) – system mikroprocesorowy zrealizowany w postaci pojedynczego układu scalonego, zawierającego jednostkę centralną (CPU), pamięć RAM oraz na ogół pamięć programu i rozbudowane układy wejścia-wyjścia. Określenie mikrokontroler pochodzi od głównego obszaru zastosowań, jakim jest sterowanie urządzeniami elektronicznymi.

Kurs AVR dla języka C będę opierał o mikrokontroler ATmega8 – przynajmniej na razie. Potrzebna w ramach kursu będzie również płytka stykowa i programator. Nie będę wszystkiego dokładnie wypisywać, ponieważ zrobiłem to w artykule Jak tanio zacząć przygodę z mikrokontrolerami AVR. Wszystkie części potrzebne do kursu można zakupić w sklepie internetowym www.lispol.pl.

Przygotowanie

Pierwsza część kursu jest przygotowaniem do drugiej, w której zaczniemy już programować i bawić się z diodami LED. A więc, mając już płytkę stykową (zakładam, że wiecie jak budować na niej układy :) ) należy złożyć następujący schemat:
Schemat
Zasilacz najlepiej złożyć na płytce drukowanej, lecz jeśli ktoś nie czuje się na siłach w wytrawianiu, może zmontować zasilacz na płytce stykowej.

Mając już złożony schemat, musimy pobrać z internetu środowisko + kompilator (program do tłumaczenia kodu źródłowego w języku programowania na język maszynowy), oraz aplikację przez którą będziemy programować nasz mikrokontroler. Tworzymy również folder, w którym będziemy trzymać wszystkie pliki, które potrzebne będą podczas naszego kursu.

Oto linki do stron, z których możemy pobrać potrzebne nam oprogramowanie:

WinAVR – http://sourceforge.net/projects/winavr/files/WinAVR/20100110/WinAVR-20100110-install.exe/download

MkAvrCalculator (program w wersji darmowej z ograniczeniami), można wykorzystać inny do zaprogramowania pamięci mikrokontrolera, lecz ten program jest bardzo wygodny dla początkujących  – http://atnel.pl/oprogramowanie-pc/mkavrcalculator

 

Gdy mamy już potrzebne oprogramowanie, należy je zainstalować. WinAVR instalujemy jak każdy inny program – zalecam zainstalować na partycji C, a MkAvrCalculator wypakowywujemy do folderu np. gdzieś na pulpicie. Do pełni szczęścia, czyli możliwości programowania potrzebujemy jeszcze AVRDUDE. W tym celu włączamy program MkAvrCalculator, oraz wystarczy użyć klawisza „Instaluj” znajdującego się w zakładce
„Ustawienia” i ramce „AVRDUDE”. Zakładam, że sterowniki do programatora są zainstalowane.

Konfiguracja

Gdy mamy wszystko zainstalowane i przygotowane, zabieramy się za konfigurację.
Z Menu Start wybieramy Wszystkie programy → WinAVR → MFile. W programie wybieramy Makefile → Main file name…, gdzie wprowadzamy nazwę pliku z kodem C bez rozszerzenia .c . Na potrzeby wpisujemy w okno dialogowe „kurs“. Następnie wybieramy Makefile → MCU Type→ ATmega → atmega8 (oczywiście jeśli akurat ATmega8 jest naszym mikrokontrolerem, na potrzeby kursu to właśnie ten model jest nam potrzebny).

Przyszedł czas na ustalenie jakiego typu programatora używamy. Ja zakładam, że wszyscy kursanci będą używać USBasp. Jeśli będą problemy z powodu użycia innego programatora, proszę pisać swoje uwagi w komentarzach.
W programie MFile, wybieramy Makefile → Port -> usb oraz Makefile→ Enable Editing of Makefile. Nie wybieramy za to typu programatora, lecz szukamy w tekście w okienku MFile fragmentu „AVRDUDE_PROGRAMMER = …“,  gdzie wpisujemy po znaku równości:
„usbasp“ (bez cudzysłowiu). Ostatni krok – wybieramy File → Save as… i zapisujemy w folderze przeznaczonym na potrzeby kursu.

Podsumowanie

To by było na tyle w tej części kursu. W następnej przejdziemy do praktyki, czyli programowania i mrugania diodami LED. Zapewniam, że następna część kursu będzie bardziej pasjonująca niż ta. :) Ciąg dalszy wkrótce nastąpi… :)

  • http://forum.majsterkowicza.pl/user-473.html szermier1

    fajne fajne ale spodziewałem się czegoś więcej………….

  • http://forum.majsterkowicza.pl/user-465.html hazor90

    A dokładniej? :)
    Ta część jest można powiedzieć “nudna”, ponieważ to tylko przygotowania.

  • http://forum.majsterkowicza.pl/user-473.html szermier1

    No spodziewałem się od razu np. napisanego programu i potem analizy jego krok po kroku aby w łatwy i przyjemny sposób można było to zrozumieć.

  • http://forum.majsterkowicza.pl/user-465.html hazor90

    Jak mówiłem, pierwsza część to przygotowanie. W części drugiej będziemy już programować i analizować kod. Co nam da od razu przeanalizowanie kodu, jeśli nawet nie wiemy jak podłączyć mikrokontroler i jak go zaprogramować?

  • http://forum.majsterkowicza.pl/user-473.html szermier1

    spoko to tylko sugestia……

  • http://forum.majsterkowicza.pl/user-392.html StoQ

    Jeśli ktoś ma taki programator czyli kopie STK500v2 http://allegro.pl/programator-usb-avr-isp-ii-stk500-tasma-idc-10-i1901369429.html

    wybiera z Makefile→ Enable Editing of Makefile
    potem Makefile → Port -> avrdoper
    AVRDUDE_PROGRAMMER = stk500v2

  • http://forum.majsterkowicza.pl/user-465.html hazor90

    Dzięki za opisanie tego dla STK500. ;)
    Jesteś początkujący czy ponad-początkujący? :D

  • http://forum.majsterkowicza.pl/user-392.html StoQ

    kupiłem sobie programator i zrobilem prawie caly kurs z bylej diody. aktualnie forbota :)
    czyli poczatkujacy znajacy mniej wiecej podstawy przynajmniej teoretyczne.

  • http://forum.majsterkowicza.pl/user-465.html hazor90

    Tamten kurs jest “troszkę” niedorobiony. :) W tym wszystko będzie bardziej przyjazne dla “uczniów”, przynajmniej mam taką nadzieję :D

  • http://forum.majsterkowicza.pl/user-473.html szermier1

    Mam pytanie co jeśli nie mam portu lpt ale mam rs232 można też na nim programować?

  • http://forum.majsterkowicza.pl/user-1.html btomasz

    Można, sam sobie kiedyś zrobiłem programator pod port COM i spisuje się jak najbardziej OK.
    W wortalu jest opis:
    http://wortal.majsterkowicza.pl/2009/09/programator-avr-pod-port-com/

    Poza tym jest jeszcze opcja zakupu programatora podpinanego pod USB.

  • http://forum.majsterkowicza.pl/user-473.html szermier1

    no ok. ale chodzi mi tu o sterowanie kartą przekaźników z tego portu czy jest taka możliwość oglądałem schematy do takiego sterowania ale wszystkie pod lpt a nie pod rs232 ale i tak postaram sie zrobić ten programator

  • http://forum.majsterkowicza.pl/user-1.html btomasz

    Można też zrobić komunikację przez RS232, programatora do tego nie trzeba, choć może się przydać układ konwertujący poziomy napięć (standardowo jest tam ok. 15V, mikroprocesory wymagają 1/3 tego lub mniej). Przy komunikacji jednostronnej (tylko odbieranie danych) od biedy można sobie poradzić bez tego, wystarczą dzielniki rezystorowe. Taki układ konwertujący poziomy to np. MAX232.

  • http://forum.majsterkowicza.pl/user-473.html szermier1

    kiedy następna część kursu?

  • http://forum.majsterkowicza.pl/user-465.html hazor90

    Zbyt dużo obowiązków na głowie :(

  • adam

    Gdzie jest następna część kursu?