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:
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] i [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:
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:
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:
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:
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ą:
- Mini płytka testowa AVR z odzysku – czyli skąd wziąć płytkę;
- Usprawnienie mini płytki testowej AVR z dekodera Cyfrowego Polsatu – modyfikacja płytki;
- Najprostszy programator AVR za 3zł do mini płytki testowej – programator AVR;
- Instalacja narzędzi dla AVR i IDE Eclipse w Linux Mint – konfiguracja oprogramowania w Linuks Mint.
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.
5 komentarzy
[…] 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 […]
[…] 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) […]
[…] 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. […]
[…] 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. […]
[…] 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. […]