Współpraca mikrokontrolera z wyświetlaczami: ciekłokrystalicznym i siedmiosegmentowym



Podobne dokumenty
Współpraca mikrokontrolera z klawiaturą

Pomiar napięcia i szeregowa transmisja danych z uŝyciem mikrokontrolera

Cwiczenie nr 1 Pierwszy program w języku C na mikrokontroler AVR

Mikrokontrolery AVR Wprowadzenie

Uniwersalny zestaw uruchomieniowy ZL4PIC

Inż. Kamil Kujawski Inż. Krzysztof Krefta. Wykład w ramach zajęć Akademia ETI

Poradnik programowania procesorów AVR na przykładzie ATMEGA8

ZL4PIC. Uniwersalny zestaw uruchomieniowy dla mikrokontrolerów PIC

Organizacja pamięci VRAM monitora znakowego. 1. Tryb pracy automatycznej

Systemy wbudowane. Uniwersytet Łódzki Wydział Fizyki i Informatyki Stosowanej. Witold Kozłowski

Funkcje standardowej biblioteki wejść-wyjść do wyświetlania i pobierania danych

Ćwiczenie 2. Siedmiosegmentowy wyświetlacz LED

Wstęp do programowania INP003203L rok akademicki 2018/19 semestr zimowy. Laboratorium 3. Karol Tarnowski A-1 p.

ZL2AVR. Zestaw uruchomieniowy z mikrokontrolerem ATmega8

Uniwersalny zestaw uruchomieniowy dla mikrokontrolerów AVR

ZL4PIC uniwersalny zestaw uruchomieniowy dla mikrokontrolerów PIC (v.1.0) Uniwersalny zestaw uruchomieniowy dla mikrokontrolerów PIC

Instytut Teleinformatyki

Język C. Wykład 9: Mikrokontrolery cz.2. Łukasz Gaweł Chemia C pokój 307

Instytut Teleinformatyki

Systemy wbudowane. Uniwersytet Łódzki Wydział Fizyki i Informatyki Stosowanej. Witold Kozłowski

Programowanie mikrokontrolerów AVR

Programowanie mikrokontrolerów AVR z rodziny ATmega.

Instytut Teleinformatyki

ZL4PIC. Uniwersalny zestaw uruchomieniowy dla mikrokontrolerów PIC

Uczeń/Uczennica po zestawieniu połączeń zgłasza nauczycielowi gotowość do sprawdzenia układu i wszystkich połączeń.

Laboratorium Systemów wbudowanych Wyższa Szkoła Zarządzania i Bankowości, Informatyka studia inżynierskie

KOMUNIKACJA Z OTOCZENIEM MIKROKONTROLERA

Szkolenia specjalistyczne

Badanie układów średniej skali integracji - ćwiczenie Cel ćwiczenia. 2. Wykaz przyrządów i elementów: 3. Przedmiot badań

Programowanie w językach asemblera i C

Opis procedur asemblera AVR

SML3 październik 2008

Ćwiczenie 5 Zegar czasu rzeczywistego na mikrokontrolerze AT90S8515

Programowanie mikrokontrolerów - laboratorium

Wydział Elektryczny. Katedra Telekomunikacji i Aparatury Elektronicznej. Konstrukcje i Technologie w Aparaturze Elektronicznej.

Instytut Teleinformatyki

2. Architektura mikrokontrolerów PIC16F8x... 13

Podstawy techniki mikroprocesorowej

1. Pierwszy program. Kompilator ignoruje komentarze; zadaniem komentarza jest bowiem wyjaśnienie programu człowiekowi.

ZL15AVR. Zestaw uruchomieniowy dla mikrokontrolerów ATmega32

ZL16AVR. Zestaw uruchomieniowy dla mikrokontrolerów ATmega8/48/88/168

Programowanie mikrokontrolerów. 8 listopada 2007

1. Wprowadzenie Programowanie mikrokontrolerów Sprzęt i oprogramowanie... 33

Wprowadzenie do podstaw programowania AVR (na przykładzie mikrokontrolera ATmega 16 / 32)

Programowanie mikrokontrolerów AVR z rodziny ATmega.

1.2 Schemat blokowy oraz opis sygnałów wejściowych i wyjściowych

Bramki logiczne Instrukcja do ćwiczeń laboratoryjnych

AVREVB1. Zestaw uruchomieniowy dla mikrokontrolerów AVR. Zestawy uruchomieniowe

Klawiatura matrycowa

Opis układów wykorzystanych w aplikacji

Program dopisujący gwiazdkę na końcu pliku tekstowego o nazwie podanej przez uŝytkownika oraz wypisujący zawartość tego pliku.

High Speed USB 2.0 Development Board

POWIADOMIENIE SMS ALBATROSS S2. Opis aplikacji do programowania

ZL15AVR. Zestaw uruchomieniowy dla mikrokontrolerów ATmega32

Podstawowe urządzenia peryferyjne mikrokontrolera ATmega8 Spis treści

Ćwiczenie 7 Matryca RGB

Wstęp do programowania INP003203L rok akademicki 2018/19 semestr zimowy. Laboratorium 2. Karol Tarnowski A-1 p.

Wydział Elektryczny. Katedra Automatyki i Elektroniki. Instrukcja. do ćwiczeń laboratoryjnych z przedmiotu: SYSTEMY CYFROWE 1.

Edukacyjny sterownik silnika krokowego z mikrokontrolerem AT90S1200 na płycie E100. Zestaw do samodzielnego montażu.

E-TRONIX Sterownik Uniwersalny SU 1.2

MultiTool instrukcja użytkownika 2010 SFAR

Niektóre piny mogą pełnić różne role, zależnie od aktualnej wartości sygnałów sterujących.

1.1 Co to jest USBasp? Parametry techniczne Obsługiwane procesory Zawartość zestawu... 4

ZL9AVR. Płyta bazowa dla modułów ZL7AVR (ATmega128) i ZL1ETH (RTL8019)

Wyświetlacz alfanumeryczny LCD zbudowany na sterowniku HD44780

SML3 październik

Licznik obiektów. Model M-03. do Dydaktycznego Systemu Mikroprocesorowego DSM-51. Instrukcja uŝytkowania

Wstęp Architektura... 13

Podstawy programowania, Poniedziałek , 8-10 Projekt, część 1

ĆWICZENIE 5. TEMAT: OBSŁUGA PORTU SZEREGOWEGO W PAKIECIE KEILuVISON WYSYŁANIE PORTEM SZEREGOWYM

Informatyka, Ćwiczenie Uruchomienie Microsoft Visual C++ Politechnika Rzeszowska, Wojciech Szydełko. I. ZałoŜenie nowego projektu

1 Podstawy c++ w pigułce.

1 Podstawy c++ w pigułce.

Programowalne Układy Cyfrowe Laboratorium

Wyjście do drukarki Centronix

Zestaw uruchomieniowy z mikrokontrolerem LPC1114 i wbudowanym programatorem ISP

Wyświetlacze graficzne : 162x64 z kontrolerem S1D x60 z kontrolerem S1D15710

Laboratorium 1: Wprowadzenie do środowiska programowego. oraz podstawowe operacje na rejestrach i komórkach pamięci

LABORATORIUM nr 2. Temat: Obsługa wyświetlacza siedmiosegmentowego LED

Instrukcja obsługi programatora AVR Prog USB v2

prostych wyświetlaczy

RSD Uniwersalny rejestrator danych Zaprojektowany do pracy w przemyśle

MCAR Robot mobilny z procesorem AVR Atmega32

ZL27ARM. Zestaw uruchomieniowy dla mikrokontrolerów STM32F103


ZL6PLD zestaw uruchomieniowy dla układów FPGA z rodziny Spartan 3 firmy Xilinx

Wydział Elektryczny. Katedra Automatyki i Elektroniki. Instrukcja do ćwiczeń laboratoryjnych z przedmiotu: TECHNIKA CYFROWA 2 TS1C

LITEcomp. Zestaw uruchomieniowy z mikrokontrolerem ST7FLITE19

Mikrokontroler ATmega32. System przerwań Porty wejścia-wyjścia Układy czasowo-licznikowe

POWIADOMIENIE SMS ALBATROSS S2. Opis aplikacji do programowania

Murasaki Zou むらさきぞう v1.1 Opis programowania modułu LPC2368/LPC1768 z wykorzystaniem ISP

LITEcompLPC1114. Zestaw ewaluacyjny z mikrokontrolerem LPC1114 (Cortex-M0) Sponsorzy:

#include <stdio.h> void main(void) { int x = 10; long y = 20; double s; s = x + y; printf ( %s obliczen %d + %ld = %f, Wynik, x, y, s ); }

Wizualizacja stanu czujników robota mobilnego. Sprawozdanie z wykonania projektu.

Stałe, znaki, łańcuchy znaków, wejście i wyjście sformatowane

Politechnika Gdańska Wydział Elektrotechniki i Automatyki Katedra Inżynierii Systemów Sterowania

KONSMETAL Zamek elektroniczny NT C496-L250 (RAPTOR)

Instytut Teleinformatyki

Mikroprocesory i Mikrosterowniki Laboratorium

Opracowano na podstawie: Rysunki złoŝeniowe. Rysunek części

Transkrypt:

Instrukcja do ćwiczenia: Współpraca mikrokontrolera z wyświetlaczami: ciekłokrystalicznym i siedmiosegmentowym Materiał do samodzielnego opracowania: elementy języka C: typy danych i ich deklarowanie, operatory, instrukcje, pętle, funkcje definiowanie, deklarowanie i wywoływanie, tablice i wskaźniki, pliki nagłówkowe, dyrektywy kompilatora: include, define. 1. Wyświetlacz ciekłokrystaliczny Jednym z najczęściej stosowanych urządzeń zewnętrznych w układach wykorzystujących mikrokontrolery są wyświetlacze ciekłokrystaliczne (LCD). Swoistym standardem przemysłowym stały się wyświetlacze z wbudowanym sterownikiem opartym o układ scalony HD44780. W uŝywanym na zajęciach zestawie ZL3AVR znajduje się taki wyświetlacz posiadający 2 linie po 16 znaków kaŝda (rys.1). Rys. 1. Wyświetlacz LCD 2 x 16 znaków źródło: www.kamami.pl Wysyłanie znaków do wyświetlacza musi być poprzedzone procedurą inicjalizacji. NaleŜy wybrać czcionkę, ilość linii tekstu, tryb pracy wyświetlacza: sterowanie z cztero- lub ośmiobitową szyną danych, zainicjować port sterujący wyświetlaczem, itd. Do sterowania wyświetlacza potrzeba min. 6 wyprowadzeń mikrokontrolera. 2. Wyświetlacz siedmiosegmentowy LED Oprócz wyświetlaczy LCD do wizualizacji wyników liczbowych i niektórych liter (A F) stosuje się wyświetlacze LED. Pojedynczy wyświetlacz składa się z siedmiu diod LED ułoŝonych na kształt cyfry 8 oraz dodatkowej diody LED symbolizującej punkt dziesiętny (kropka, przecinek) - rys. 2. Wyświetlacz tego typu, ze względu na emisję światła zapewnia lepszą czytelność w trudnych warunkach oświetleniowych, oraz w przeciwieństwie do wyświetlaczy LCD moŝe być odczytany praktycznie z dowolnego kierunku. Nazwy poszczególnych segmentów (a... h) są znormalizowane (rys. 3). Występują dwa wykonania wyświetlacza: ze wspólną anodą i ze wspólną katodą. W pierwszym przypadku wszystkie anody składowych diod LED są połączone razem i wyprowadzone jako dodatkowa końcówka na obudowie wyświetlacza, w drugim - są to katody.

2 Rys. 2. Wyświetlacz siedmiosegmentowy LED źródło: http://en.wikipedia.org/wiki/seven-segment_display Rys. 3. Oznaczenie segmentów wyświetlacza LED źródło: http://en.wikipedia.org/wiki/seven-segment_display Ze względu na liczbę segmentów do sterowania pojedynczego wyświetlacza LED (1 cyfra) potrzeba 8 wyprowadzeń mikrokontrolera. Do sterowania np. 4 cyfr aŝ 32 wyprowadzeń. Ogranicza to w znacznym stopniu moŝliwość realizacji innych funkcji przez mikrokontroler: układ ATMega32 ma 40 wyprowadzeń (nowocześniejsze mikrokontrolery mają ok. 100 wyprowadzeń). W związku z powyŝszym opracowano specjalny algorytm sterowania wyświetlaczy LED, tzw. multipleksowanie. Polega on na sekwencyjnym zaświecaniu poszczególnych cyfr z odpowiednio duŝą częstotliwością (np. 250 Hz). Zmysł wzroku człowieka nie rozróŝnia takich szybkich bodźców i widać ciągłe świecenie wszystkich cyfr. 3. UŜyteczne funkcje języka C a) Wiadomości podstawowe W celu poprawienia przejrzystości programu za pomocą dyrektywy kompilatora define moŝna nadać dowolnemu elementowi programu własną nazwę: np.: #define zastępujący_ciąg_znaków zastępowany_ciąg_znaków #define SEGMENT_A PB0 Zamiast odwoływać się w programie do małointuicyjnej nazwy PB0 oznaczającej 0 wyprowadzenie portu B, moŝna stosować nazwę SEGMENT_A jednoznacznie określającej co jest sterowane z tego wyprowadzenia. Przy stosowaniu w programie funkcji generujących opóźnienie czasowe wymaga się podania kompilatorowi częstotliwości taktowania procesora. SłuŜy do tego makro:

3 #define F_CPU 16000000 Liczba występująca powyŝej to częstotliwość rezonatora kwarcowego w [Hz]. Z praktyki programowania mikrokontrolerów wynika, Ŝe wszelkie konfiguracje części sprzętowej mikrokontrolera (wejścia, wyjścia, przetwornika A/C, itd.) powinny być umieszczone w oddzielnym pliku (tzw. nagłówkowym *.h) i dołączane w momencie kompilacji do właściwego pliku z tekstem programu. Owo dołączanie uzyskuje się stosując dyrektywę kompilatora: #include nazwa.pliku Nazwa pliku obejmuje jego rozszerzenie (*.h). Do zapisywania w rejestrze zera lub jedynki logicznej słuŝy makro _BV(...). Aby z niego skorzystać naleŝy na początku programu dołączyć plik nagłówkowy io.h znajdujący się w katalogu z bibliotekami /avr: #include <avr/io.h> Ustawienie jedynki logicznej na wyprowadzeniu x portu X uzyskuje się za pomocą: PORTX = _BV(PXx) Dla kilku wyprowadzeń jednocześnie instrukcja powinna wyglądać: gdzie: X = {A, B, C, D}, x = {0 7}, np. DDRX = _BV(PXx1) _BV(PXx2) _BV(PXx3) PORTB = _BV(PB0) ustawia stan 1 na wyjściu 0 portu B. Stan niski ustawia się za pomocą instrukcji dla kilku wyprowadzeń jednocześnie: PORTX &= ~(_BV(PXx)) PORTX &= ~(_BV(PXx1)) & ~(_BV(PXx2)) & ~(_BV(PXx3)) Konfigurację wyprowadzenia x portu X jako wejścia uzyskuje się instrukcją: jako wyjścia: DDRX &= ~(_BV(PXx)) DDRX = _BV(PXx) Do odmierzania czasu i uzyskiwania opóźnienia czasowego przydatna jest funkcja: void _delay_ms(float liczba_ms) Aby z niej skorzystać naleŝy dołączyć plik delay.h dyrektywą:

4 #include <avr/delay.h> b) Sterowanie wyświetlacza LCD Do sterowania wyświetlacza LCD zostaną wykorzystane funkcje z biblioteki tavrlib autorstwa Tomasza Wasilczyka [1]. Biblioteka objęta jest licencją GNU LGPL v3. W folderze z zadaniem muszą być dostępne pliki hd44780.c, hd44780.h i macros.h naleŝy je skopiować z katalogu tavrlib. Drugi z plików naleŝy dołączyć do programu dyrektywą: #include "hd44780.h" W pliku zawierającym konfigurację części sprzętowej naleŝy umieścić następujący kod: // pod którym portem jest szyna danych #define HD44780_DATA_GPIO X //port wyświetlacza X = {A, B,C, D} // jaką część portu zajmuje szyna danych: // jeŝeli wyświetlacz dołączono do wyprowadzeń portu 4 7 to Y = 1 // jeŝeli wyświetlacz dołączono do wyprowadzeń portu 0 3 to Y = 0 #define HD44780_DATA_HIGHHALFBYTE Y //Do jakiego portu X i nr wyprowadzenia x podłączono linię RS wyświetlacza: #define HD44780_RS_GPIO X #define HD44780_RS_BIT x //j. w. ale llinia E wyświetlacza: #define HD44780_E1_GPIO X #define HD44780_E1_BIT x //parametry wyświetlacza w znakach #define HD44780_WIDTH 16 #define HD44780_HEIGHT 2 Plik konfiguracyjny powinien być dołączony w programie (#include...) wcześniej niŝ plik hd44780.h. Inicjalizacji wyświetlacza dokonuje się na początku programu za pomocą funkcji: void hd44780_init(void) Kasowanie znaków z wyświetlacza umoŝliwia funkcja: void hd44780_clear (void) Wyświetlenie znaków na konkretnym polu wyświetlacza umoŝliwia funkcja: void hd44780_goto (uint8_t x, uint8_t y) gdzie: x - Ŝądana kolumna, y - Ŝądany wiersz, uint8_t liczba całkowita bez znaku (typ danej). Wyświetlenie ciągu znaków (łańcucha znaków zdefiniowanego jako tablica znaków) uzyskuje się dzięki funkcji:

5 void hd44780_putstr (char *str, uint8_t length) gdzie: *str wskaźnik do tablicy znaków, lenght ilość znaków do wyświetlenia. JeŜeli lenght = - 1 funkcja wyświetla wszystkie znaki z tablicy. c) sterowanie wyświetlacza LED Zaświecenie dowolnej cyfry po podłączeniu pojedynczego wyświetlacza LED do mikrokontrolera moŝliwe jest dzięki zadawaniu na wybranym porcie odpowiednich stanów logicznych za pomocą funkcji opisanych w podpunkcie a). Do sterowania czterech cyfr wyświetlacza w trybie multipleksowania naleŝy wykorzystać bibliotekę RklibAVR autorstwa Roberta Krysztofa [2]. Biblioteka jest dostępna na stronie http://diy.exxl.pl/avr.elektroda.eu/index0f22.html?q=node/4. Musi zostać dołączona do programu za pomocą dyrektywy: #include <led7seg.h> W pliku zawierającym konfigurację części sprzętowej naleŝy umieścić następujący kod [2]: #define LED7SEG_F_MUX 250 // częstotliwość multipleksowania w Hz //#define LED7SEG_DIGITS_H // Odkomentować gdy wybieranie cyfr stanem wysokim //#define LED7SEG_SEGMENTS_H // Odkomentować gdy wybieranie segmentów stanem wysokim // ----- definicje dotyczące cyfr wyświetlacza ----- #define LED7SEG_DIGIT1_PORT PORTX // port cyfry 1 #define LED7SEG_DIGIT1_BIT x // bit cyfry 1 #define LED7SEG_DIGIT2_PORT PORTX // port cyfry 2 #define LED7SEG_DIGIT2_BIT x // bit cyfry 2 #define LED7SEG_DIGIT3_PORT PORTX // port cyfry 3 #define LED7SEG_DIGIT3_BIT x // bit cyfry 3 #define LED7SEG_DIGIT4_PORT PORTX // port cyfry 4 #define LED7SEG_DIGIT4_BIT x // bit cyfry 4 // ----- definicje dotyczące segmentów wyświetlacza ----- #define LED7SEG_SEGMENTS PORTX // port segmentów wyświetlacza // bity segmentów na wyświetlaczu: #define LED7SEG_A 0 // bit segmentu A #define LED7SEG_B 1 // bit segmentu B #define LED7SEG_C 2 // bit segmentu C #define LED7SEG_D 3 // bit segmentu D #define LED7SEG_E 4 // bit segmentu E #define LED7SEG_F 5 // bit segmentu F #define LED7SEG_G 6 // bit segmentu G #define LED7SEG_H 7 // bit segmentu H (kropki) Ponadto w pliku makefile naleŝy umieścić następujący kod (zastępując istniejącą treść) [2]: # Nazwa pliku z funkcją main() - BEZ ROZSZERZENIA! TARGET = nazwa_bez_rozszerzenia

6 # Lista plików, których zmiana powoduje przebudowanie projektu CONFIG = config.h # Lista plików źródłowych w języku C SRC = $(TARGET).c # Lista plików źródłowych w asemblerze (rozszerzenie S - DUśE S!) ASRC = # typ mikrokontrolera MCU = atmega32 # Format pliku wyjściowego (srec, ihex) FORMAT = ihex # Poziom optymalizacji (0, 1, 2, 3, s) # (Uwaga: 3 nie zawsze jest najlepszym wyborem) OPT = s # Katalog z bibliotekami uŝytkownika USRLIB = C:/WinAVR-20100110/lib # Lista plików źródłowych bibliotek w języku C SRCLIB = include $(USRLIB)/led7seg/sources include $(USRLIB)/delay/sources # Dodatkowe biblioteki # # Minimalna wersja printf #LDFLAGS += -Wl,-u,vfprintf -lprintf_min # # Zmiennoprzecinkowa wersja printf (wymaga biblioteki matematycznej) #LDFLAGS += -Wl,-u,vfprintf -lprintf_flt # # Biblioteka matematyczna #LDFLAGS += -lm include $(USRLIB)/avr_make Inicjalizacja wyświetlacza LED odbywa się poprzez jednokrotne wywołanie sekwencji dwóch funkcji: Kasowanie wyświetlacza: void LED7SEG_init (void) sei() void LED7SEG_clear (void) Wyświetlanie łańcucha znaków:

7 void LED7SEG_putstr (char *s) Wyświetlanie liczby całkowitej: void LED7SEG_putU16 (u16 liczba ) gdzie: u16 liczba całkowita 16 bitowa ( 0 65535, czyli 2 16-1). W celu uzyskania ciągłego świecenia wyświetlacza dwie wyŝej wymienione funkcje muszą być powtarzane w pętli. Przesuwanie zawartości wyświetlacza o jedną pozycję w lewo: void LED7SEG_shift_left (void) Przesuwanie zawartości wyświetlacza o jedną pozycję w lewo: void LED7SEG_shift_right (void) 4. Przebieg ćwiczenia W ćwiczeniu naleŝy wykorzystać wyświetlacz LCD znajdujący się w prawej, górnej części zestawu ZL3AVR. Jego wyprowadzenia są dostępne na złączu JP29 (LCD4bit). Wyprowadzenia złącza JP29 naleŝy podłączyć do wyprowadzeń wybranego portu mikrokontrolera. Następnie naleŝy poinformować kompilator o dokonanym wyborze wpisując odpowiednie ustawienia w pliku z konfiguracją sprzętową (patrz p. 3 b)). Potencjometr PR1 słuŝy do regulacji kontrastu wyświetlacza. Przykładowe zadania do wykonania: a) Napisać i uruchomić program, który spowoduje wypisanie na wyświetlaczu LCD tekstu w 1 linii. b) J. w. ale w drugiej linii. c) Napisać i uruchomić program, który spowoduje wypisanie na wyświetlaczu LCD liczby zmiennoprzecinkowej. Złącze wyświetlacza LED oznaczone jest jako JP24 (Cyfra) i JP28 (Kolumna). Pierwsze z nich odpowiada za sterowanie poszczególnych segmentów wyświetlacza, drugie sterowanie cyfr. Wyprowadzenie C1 złącza JP28 steruje cyfrą pierwszą od prawej. Na wstępie naleŝy zidentyfikować jaki stan logiczny powoduje świecenie wybranego segmentu cyfry wyświetlacza, łącząc po jednym wyprowadzeniu złączy JP24 i JP28 z polami +VCC (stan wysoki) lub GND (stan niski) złącza JP9. Tylko jedna z czterech kombinacji spowoduje zaświecenie się wyświetlacza. Stosownie do ustaleń naleŝy zmodyfikować plik nagłówkowy z konfiguracją części sprzętowej (p. 3 c)). Przykładowe zadania do wykonania: d) Napisać i uruchomić program, który spowoduje wypisanie na pojedynczym wyświetlaczu LED wybranej dowolnej cyfry. e) Napisać i uruchomić program, który spowoduje wypisanie na wyświetlaczu LED wybranej liczby 4 cyfrowej w trybie multipleksowania. f) Napisać i uruchomić program, który spowoduje odliczanie na wyświetlaczu LED kolejnych cyfr z opóźnieniem 1 s. 5. Literatura [1] T. Wasilczyk, Dokumentacja biblioteki tavrlib, http://tavrlib.wasilczyk.pl, [2] R. Krzysztof, Dokumentacja biblioteki RKlibAVR, http://www.isaa.pl/download/doc_details/89-rklibavr-uniwersalna-biblioteka-dla-avr-gcc. Wersja z dn. 27.01.2012 r.