Programowanie mikrokontrolerów
Wstęp
Marcin Engel
Marcin Peczarski
Instytut Informatyki Uniwersytetu Warszawskiego
4 października 2011
Co to jest mikrokontroler?
Układ integrujący w sobie następujące elementy (w zależności od
modelu):
I
jednostkę obliczeniową (8-, 16- lub nawet 32-bitową),
I
pamięć danych (SRAM, EEPROM),
I
pamięć programu (FLASH, ROM, EEPROM),
I
układy taktujące (RC),
I
kontroler przerwań,
I
liczniki,
I
przetworniki analogowo-cyfrowe,
I
przetworniki cyfrowo-analogowe,
I
interfejsy szeregowe (UART, SPI, I2C, 1WIRE, USB),
I
układ nadzorujący (watchdog),
I
zegar czasu rzeczywistego.
mikrokontroler = komputer w jednym układzie
Popularne mikrokontrolery
I
8051 firmy Intel i jego liczne klony
I
PIC firmy Microchip Technology
I
68HC firmy Motorola (obecnie Freescale Semiconductor)
I
Z8 firmy Zilog
I
AVR firmy Atmel
I
MSP430 firmy Texas Instruments
I
ARM produkowane przez wiele firm, np.:
I
Atmel
I
NXP Semiconductors (dawniej Philips)
I
Samsung
I
STMicroelectronics (dawniej SGS Thomson)
I
. . .
Mikrokontrolery firmy Atmel
I
8-bitowa architektura 8051
I
AT80. . .
I
AT83. . .
I
AT87. . .
I
AT89. . .
I
8-bitowa architektura AVR
I
AT90. . .
I
ATtiny. . .
I
ATmega. . .
I
ATxmega. . .
I
32-bitowa architektura AVR
I
AT32. . .
I
32-bitowa architektura ARM
I
AT91. . .
Jak zacząć zabawę?
Trzeba zakupić:
I
mikrokontroler (ATmega16 kosztuje ok. 10 PLN),
I
troszkę innych elementów elektronicznych (diody LED,
mikroswitche, rezystory, kondensatory, złącza, . . . ).
Ponadto należy przygotować:
I
najprostszy programator dołączany do złącza LPT (cena
ok. 26 PLN za gotowy, poniżej 5 PLN przy samodzielnym
montażu) lub
I
programator dołączany do USB (ceny od ok. 70 PLN),
I
komputer z oprogramowaniem (darmowe programy PonyProg,
AVR Studio, VMLAB, . . . ).
A także:
I
laminat, wytrawiacz, lutownicę i inne narzędzia lub
I
płytkę uniwersalną, lutownicę lub
I
płytkę stykową lub . . .
Zestaw uruchomieniowy
I
Umożliwia szybkie tworzenie układów testowych.
I
Zawiera na pokładzie wszystkie niezbędne podzespoły, które
łączy się za pomocą przewodów.
Zestaw uruchomieniowy – typowe wyposażenie
I
wyświetlacz LCD i/lub segmentowy LED
I
zestaw przycisków lub klawiatura matrycowa
I
układ zasilający, kwarc, złącze programatora
Zestaw uruchomieniowy – dodatkowe wyposażenie
I
wyprowadzenia interfejsów szeregowych (z ew. konwersją
napięć)
I
ciekawe peryferia (termometr, odbiornik i nadajnik IR,
akumulator, pamięć Flash, zegar RTC, . . . )
Zestaw uruchomieniowy – własne wyposażenie
I
pole lutownicze do wlutowania własnych układów
Programatory
Programator:
I
składa się z dwóch części: sprzęt (interfejs PC–mikrokontroler)
i oprogramowanie,
I
dwa tryby programowania: równoległy i szeregowy,
I
wśród nich też istnieje wiele różnych rozwiązań.
Programator równoległy (ang. parallel programming ):
I
jest szybki,
I
zawsze jest aktywny,
I
daje (prawie) pełny dostęp do mikrokontrolera,
I
programowany mikrokontroler trzeba wyjąć z układu,
I
jest niezależny od układu, w którym zastosowano
mikrokontroler,
I
jest skomplikowany i drogi.
Programatory, cd.
Programator szeregowy (ang. in system programming ):
I
umożliwia programowanie bez wyjmowania mikrokontrolera
z układu (projektując układ, trzeba przewidzieć taką
możliwość, dodając co najmniej dodatkowe rezystory),
I
może zostać zablokowany programowo,
I
programowany mikrokontroler musi być prawidłowo taktowany,
I
jest tani i prosty w budowie.
Programator wysokonapięciowy szeregowy (ang. high voltage serial
programming ):
I
ma te same własności co programator równoległy,
I
jest stosowany w mikrokontrolerach o małej liczbie
wyprowadzeń, np. 8.
Programator szeregowy
I
Jest przyłączany do wyprowadzeń MOSI, MISO, SCK, RESET
mikrokontrolera.
I
Pobiera zasilanie z programowanego układu.
I
Współpracuje z darmowym oprogramowaniem np. PonyProg.
Standardy złącza programatora ISP:
I
ATMEL
I
KANDA
Interfejsy do programowania i debugowania w układzie
JTAG:
I
Jest przyłączany do wyprowdzeń TDI, TDO, TMS, TCK,
RESET mikrokontrolera.
I
Firmowy interfejs jest drogi.
I
Można go wykonać samodzielnie na podstawie opisów
z Internetu.
I
Blokuje port mikrokontrolera.
dW (debugWIRE):
I
Jest przyłączany do wyprowdzenia RESET mikrokontrolera.
I
Jak na razie interfejs trzeba zakupić od firmy Atmel, np. AVR
Dragon.
I
Nie blokuje portów mikrokontrolera.
I
Jest obecny tylko w najnowszych mikrokontrolerach.
Symulator VMLAB
I
Jest to darmowe środowisko do programowania i wykonywania
symulacji.
I
Używa zewnętrznego asemblera (domyślnie firmowego) lub
kompilatora C.
I
Posiada bardzo dobrą wizualizację stanu mikrokontrolera.
I
Ostrzega o wielu potencjalnych błędach, np. czytanie
niezainicjowanych danych.
I
Niestety zawiera drobne błędy i przestał być rozwijany.
I
Można doprogramować w C++ symulację własnych
komponentów.
I
Obsługuje tylko niektóre mikrokontrolery, ale w tym
ATmega16.
I
Jest to bardzo wygodne środowisko dla początkujących.
Środowisko AVR Studio
I
Jest to darmowe zintegrowane środowisko programistyczne
udostępniane przez firmę Atmel.
I
Regularnie publikowane są uaktualnienia.
I
Obsługuje wszystkie aktualnie dostępne mikrokontrolery.
I
Obsługuje JTAG i dW.
I
Posiada nienajlepszą wizualizację.
I
Zawiera symulator, ale jest on (chyba intencjonalnie)
niedopracowany.
Co możemy podłączyć do mikrokontrolera?
Jako wyjście:
I
diody świecące – LED (ang. Light Emitting Diode)„
I
wyświetlacz segmentowy LED,
I
wyświetlacz ciekłokrystaliczny – LCD (ang. Liquid Crystal
Display),
I
komputer, inny mikrokontroler (np. po złączu szeregowym),
I
inny układ (np. po złączu I
2
C),
I
nadajnik podczerwieni – IR (ang. Infra Red),
I
nadajnik radiowy,
I
. . .
Co możemy podłączyć do mikrokontrolera?
Jako wejście:
I
przycisk,
I
klawiaturę matrycową,
I
klawiaturę PC lub myszkę,
I
komputer, inny mikrokontroler,
I
odbiornik IR lub radiowy,
I
termometr analogowy,
I
. . .
Diody świecące, LED
Charakterystyka diody
I
Typowe parametry pracy
I
prąd od kilku do kilkudziesięciu mA,
I
spadek napięcia od 0,2 V do 3,5 V.
I
Jasność diody świecącej zależy od prądu przez nią płynącego.
I
Żywotność też!
I
Nadmierny prąd może uszkodzić diodę.
I
Dioda przewodzi prąd w jednym kierunku (kierunek
przewodzenia).
I
Zbyt duże napięcie przyłożone w kierunku zaporowym może
uszkodzić diodę.
Jak przyłączyć diodę do mikrokontrolera?
I
Prawo Ohma: U = RI .
I
Dla założonego prądu płynącego
przez diodę:
I
sprawdzamy, jaki będzie spadek
napięcia na niej,
I
włączamy w obwód rezystor
dobrany tak, aby spadki napięcia
na nim i na diodzie sumowały się
do napięcia zasilania.
I
Przykład:
I
prąd diody 5 mA,
I
spadek napięcia na diodzie 1,7 V,
I
napięcie zasilania 5 V,
I
wartość rezystora:
5 V − 1,7 V
5 mA
=
3,3 V
5 mA
= 660 Ω.
I
Wybieramy rezystor 680 Ω.
LED – podsumowanie
Dioda świecąca:
I
przewodzi prąd w jednym kierunku (i wtedy świeci),
I
wymaga ograniczenia prądu za pomocą rezystora.
W zestawie uruchomieniowym:
I
odpowiednie rezystory są wlutowane.
I
po połączeniu diody z portem procesora dioda będzie świecić
po podaniu stanu 0 na odpowiednią nóżkę.
W symulatorze VMLAB:
I
nie trzeba używać rezystorów (ale będą problemy
z oglądaniem przebiegów),
I
dioda będzie świecić po podaniu stanu 0 na odpowiednią
nóżkę.
Jak podłączyć inne układy?
I
Będziemy to poznawać sukcesywnie na kolejnych zajęciach.