Test mini płytki AVR z ATtiny2313 – pierwszy program

W poprzednich wpisach zamieściłem garść informacji, gdzie zaopatrzyć się w płytkę z mikroprocesorem AVR ATtiny2313 z 4 wyświetlaczami 7-segmentowymi LED, jak ją zmodernizować, jak wykonać samemu bardzo prosty programator AVR i jak zainstalować w Linuksie niezbędne pakiety i wygodne środowisko Eclipse by móc komfortowo pisać programy. Lista powiązanych wpisów znajduje się na końcu tego tekstu.
Dzisiaj pokażę prościutki program, który przetestuje naszą płytkę i przy okazji opiszę podstawową obsługę IDE Eclipse. Z części sprzętowej będzie potrzebna płytka stykowa (można się bez  niej obejść, ale będzie mało wygodnie), 6 diod led – ja użyłem pomarańczowe o średnicy 3mm, sześć rezystorów o oporności z przedziału 470Ω…1kΩ, zasilacz o napięciu 5V, programator AVR i oczywiście mini płytka testowa z kabelkiem.

Podłączenie programatora i płytki

Opis podłączenia programatora do płytki można znaleźć w tym wpisie Najprostszy programator AVR za 3zł do mini płytki testowej. Kabelki z wtyczką, odzyskane z dekodera DSB-616 są różnokolorowe, opisałem je, zakładając, że biały kabel jest założony na pin 1 (czyli znajduje się najbliżej kondensatorów elektrolitycznych płytki). Pierwsza kolumna to numery pinów w gniazdku płytki, druga to kolory kabli, trzecia to ich przeznaczenie, czwarta zawiera tylko niezbędne do programowania:

Pin 1 - biały        - +5V   - +5V
Pin 2 - szary        - PB.7  - SCK
Pin 3 - pomarańczowy - PB.5  - MOSI
Pin 4 - niebieski    - PB.4
Pin 5 - zielony      - GND   - GND
Pin 6 - zółty        - Reset - Reset
Pin 7 - czerwony     - PB.6  - MISO
Pin 8 - brązowy      - PA.0
Pin 9 - czarny       - PA.1

Jeśli mamy już prawidłowo podłączony programator i zasilanie do płytki, to w linuksie trzeba nadać uprawnienia do portu LPT, poprzez wydanie komendy w terminalu:

sudo chmod a+rw /dev/parport0

Po wpisaniu hasła roota, zalogowany użytkownik dostanie odpowiednie prawa i będzie można bez przeszkód programować mikrokontroler.

Pierwszy program w Eclipse

Kolejny etap to uruchomienie Eclipse. O jego instalacji i konfiguracji pisałem tutaj: Instalacja narzędzi dla AVR i IDE Eclipse w Linux Mint. Podczas startu standardowo zostaniemy zapytani o domyślną ścieżkę dla projektów – można ustawić swoją lub zostawić domyślną. Gdy środowisko się uruchomi, wybieramy z górnego menu File->New…->C Project, w oknie jak niżej, w polu Project name wpisujemy nazwę projektu – będzie ona jednocześnie nazwą folderu – tutaj nie używamy polskich znaków i spacji:

C Project

Zatwierdzamy przyciskiem [Next >]. W następnym oknie Select Configurations odznaczamy opcję Debug, pozostawiamy tylko zaznaczoną pozycję Release. Po wciśnięciu [Next >] możemy zatwierdzić ustawienia przyciskiem [Finish] mimo iż wybrany jest zły MCU – ustawimy to później. W okienku po lewej o nazwie Project Explore powinniśmy widzieć swój projekt. Podświetlamy go klikając lewym klawiszem myszy, a z górnego menu wybieramy Project->Properties. W kolumnie po lewej rozwijamy grupę AVR i wybieramy AVRDude. W zakładce Programmer, klikamy na [New…] w polu Programmer Configuration. W polu Configuration Name wpisujemy nazwę dla tworzonej konfiguracji, np: Bascom_prog. Z lewej kolumny Programmer Hardware (-c) wybieramy posiadany programator, w naszym przypadku Bascom SAMPLE programming cable. Przycisk [OK] zamknie to okno, sprawdzamy czy konfiguracja jest ustawiona i wciskamy [Apply]. Teraz w kolumnie po lewej wybieramy Target Hardware – w polu MCU Type ustawiamy ATtiny2313, a w MCU Clock Frequence wpisujemy 8000000. Zatwierdzamy przyciskiem [Apply] [OK].

Teraz klikając prawym myszy na naszym projekcie w lewej kolumnie wybieramy New…->Source File, wpisujemy nazwę pliku (bez spacji i polskich znaków) z rozszerzeniem .c:

Source File

Zatwierdzamy przyciskiem [Finish], w Eclipsie pojawi się edytor, w którym możemy pisać kod.

Napisałem kilka linijek w C. Jest to bardzo prosty program, jego zadaniem jest przetestowanie wszystkich portów pod kątem prawidłowego połączenia i braku zwarć. Oto cały kod:

#include <avr/io.h>
#include <util/delay.h>
int main (void)
{
 unsigned char segment, cyfra;
 DDRA |= 0x03;
 DDRB = 0xFF;
 DDRD = 0xFF;
 PORTA &= 0xFC;
 PORTD = 0xFF;
 while (1)
 {
 for (cyfra = 0; cyfra < 8; cyfra++)
 {
 PORTD = 0xFF;
 PORTB = (1<<cyfra);
 _delay_ms(500);
 if (cyfra < 4)
 {
 for (segment = 0; segment < 7; segment++)
 {
 PORTD = ~(1<<segment);
 _delay_ms(500);
 }
 }
 }
 PORTB = 0x00;
 PORTA |= 0xFD;
 _delay_ms(500);
 PORTA &= 0xFC;
 PORTA |= 0xFE;
 _delay_ms(500);
 PORTA &= 0xFC;
 }
}

Kod w takim zapisie jak wyżej jest średnio czytelny. Edytor w Eclipse posiada kolorowanie składni, dzięki czemu wszystko staje się o wiele bardziej przejrzyste. Plik mini_test.c i mini_test.hex można ściągnąć korzystając z linku na końcu tekstu.

Kod źródłowy w języku C musi zostać skompilowany i przetłumaczony na język maszynowy zrozumiały dla mikroprocesora. W tym celu upewniamy się, że nasz plik jest podświetlony w kolumnie po lewej, zapisujemy go ikonką dyskietki lub skrótem [CTRL]+[S] i wciskamy ikonkę młotka z menu w górnej części lub korzystamy z wygodnego skrótu [CTRL]+[B], przeglądamy okienko Console w poszukiwaniu ewentualnych problemów:

Okienko Console po kompilacji

Załadowanie programu do mikroprocesora jest również łatwe – za pomocą ikony z napisem AVR* i strzałką w dół, lub wygodniej, skrótem [CTRL]+[ALT]+[U]. Również wynik działania otrzymamy w konsoli:

Upload programu

Jak widać, wszystko się powiodło i program został załadowany. Teraz od płytki koniecznie trzeba odłączyć zasilanie i programator oraz podłączyć diody LED plusem do portów mikrokontrolera i przez rezystor do masy. Poniżej schemat, który to ułatwi – dodatkowo przewody zostały oznaczone kolorami, tak jak w oryginale:

Płytka i diody

Po dwukrotnym sprawdzeniu poprawności połączeń – szczególnie zasilania, można podłączyć napięcie +5V do płytki. Jeśli wszystko jest OK, powinny zapalać się pojedyncze segmenty pierwszego wyświetlacza, później drugiego itd., a na końcu diody LED. Jeśli podczas całego testu świeci się jednocześnie tylko jeden segment lub tylko jedna dioda, to płytkę możemy uznać za w pełni sprawną.

Poniżej krótki filmik z działania mojego programu (diody LED nie zapalają się w kolejności, bo tak zostały podłączone):

Przydatne linki

Jak pisałem na wstępnie, podaję linki do poprzednich wpisów związanych z płytką testową:

Jeśli chciałbyś szybko przyswoić język C i programować mikroprocesory AVR, polecam ten kurs: KURS C programowania mikrokontrolerów AVR.

Kod źródłowy i plik wynikowy użyty w tym wpisie pobierzesz tu:
>> POBIERZ pliki mini_test

W kolejnym wpisie dotyczącym mini płytki AVR udostępnię program termometru z wykorzystaniem popularnego czujnika DS18b20.

Możesz również polubić…

5 komentarzy

  1. 30.03.2013

    […] i skompilowanego programu z komputera do mikrokontrolera. Jakiś czas temu, przy okazji zabaw z mini płytka testową AVR opisałem bardzo prosty programator, który umożliwia łatwe i szybkie programowanie układów […]

  2. 12.05.2013

    […] W następnych wpisach pokażę jak zainstalować środowisko programistyczne Eclipse, które bardzo zwiększy komfort pracy (tutaj: Instalacja narzędzi dla AVR i IDE Eclipse w Linux Mint) i udostępnię prosty program, który po skompilowaniu i wgraniu przetestuje wyświetlacz i porty mikrokontrolera ATtiny2313 (tutaj: Test mini płytki AVR z ATtiny2313 – pierwszy program) […]

  3. 12.05.2013

    […] Opis niewielkiej przeróbki zwiększającej funkcjonalność płytki znajduje się tutaj: Usprawnienie mini płytki testowej AVR z dekodera Cyfrowego Polsatu. Instrukcję budowy banalnie prostego, ale użytecznego programatora zamieściłem tutaj: Najprostszy programator AVR za 3zł do mini płytki testowej. W tym wpisie udostępniłem prosty program, który sprawdza, czy płytka działa prawidłowo: Test mini płytki AVR z ATtiny2313 – pierwszy program. […]

  4. 15.05.2013

    […] Test mini płytki AVR z ATtiny2313 – pierwszy program – kilka linijek kodu napisanego w C, dzięki którym dowiemy się, czy nasza płytka jest sprawna. […]

  5. 13.12.2013

    […] Właściwie wszystko mamy już zainstalowane, można więc zacząć pisać programy i ładować je do AVRów. W następnej części cyklu pokażę jak stworzyć projekt, napisać prosty program, skompilować go i zaprogramować mikrokontroler. Przy okazji sprawdzimy czy nasza mini płytka testowa jest w pełni sprawna – Test mini płytki AVR z ATtiny2313 – pierwszy program. […]

Leave a Reply

Witryna wykorzystuje Akismet, aby ograniczyć spam. Dowiedz się więcej jak przetwarzane są dane komentarzy.