Mikrokontroler

Mikrokontroler PIC18F8720 firmy Microchip Technology
Przykładowe mikrokontrolery Atmel AVR

Mikrokontroler (MCU lub μC, od ang. microcontroller), mikrokomputer jednoukładowy – scalony system mikroprocesorowy, zrealizowany w postaci pojedynczego układu scalonego zawierającego jednostkę centralną (CPU), pamięć RAM oraz rozbudowane układy wejścia-wyjścia i na ogół pamięć programu jako FRAM, MRAM, ROM lub flash.

Określenie mikrokontroler pochodzi od głównego obszaru jego zastosowań, jakim jest sterowanie urządzeniami elektronicznymi, takimi jak: urządzenia biurowe, urządzenia medyczne (w tym implanty), zdalnego sterowania, elektronarzędzia, systemy sterowania silnikami samochodowymi, a nawet zabawki i inne systemy wbudowane.

Mikrokontroler stanowi użyteczny i całkowicie autonomiczny system mikroprocesorowy, niewymagający użycia dodatkowych elementów, których wymagałby do pracy tradycyjny mikroprocesor. Skądinąd, mikrokontrolery przystosowane są do bezpośredniej współpracy z rozmaitymi urządzeniami zewnętrznymi, w tym również takimi, do których obsługi tradycyjny mikroprocesor wymagałby użycia dodatkowych układów peryferyjnych.

Mikrokontrolery stosuje się powszechnie w sprzęcie AGD i RTV, układach kontrolno-pomiarowych, w przemysłowych układach automatyki, w telekomunikacji, podzespołach i urządzeniach podłączanych do komputerów (peryferyjnych, kartach rozszerzeń, kluczach sprzętowych)[1].

Budowa[edytuj | edytuj kod]

Wśród wbudowanych w typowy mikrokontroler bloków funkcjonalnych można wyróżnić:

  • jednostkę obliczeniową (ALU) – przeważnie 8-bitową, ale także 16-, 32- lub 64-bitową
  • pamięć danych (RAM)
  • pamięć programu (FRAM, MRAM, ROM lub flash)
  • uniwersalne porty wejścia-wyjścia (na ogół przypisane do konkretnych wyprowadzeń układu scalonego); część tych portów może pełnić alternatywne funkcje wybierane programowo – mogą to być elementy opcjonalnej magistrali adresowej i danych
  • układy czasowo-licznikowe
  • kontrolery przerwań.

Ponadto mikrokontroler może zawierać:

Pamięć programu[edytuj | edytuj kod]

Ze względu na rodzaj użytej pamięci programu, możemy wyróżnić mikrokontrolery:

  • z pamięcią stałą (ROM) programowaną fabrycznie – najtańsze rozwiązanie w produkcji masowej
  • wielokrotnie programowalne – wyposażone w pamięć EPROM, EEPROM, flash, MRAM lub FRAM wymagające użycia zewnętrznych programatorów. Tego rodzaju mikrokontrolery nadają się szczególnie dobrze do zastosowań prototypowych i w niewielkich seriach produkcyjnych.
  • programowalne wielokrotnie w zmontowanym urządzeniu docelowym (ISP) przez interfejs komunikacyjny – wyposażone w pamięć EEPROM, flash, MRAM lub FRAM
  • bez własnej pamięci programu. Niektóre mikrokontrolery mogą wykonywać jedynie programy zapisane w pamięci zewnętrznej; rozwiązanie to bywa stosowane w przypadku, gdy pamięć programu musi mieć szczególnie duży rozmiar, np. z uwagi na przechowywane w niej tablice stałych (lookup table)

Taktowanie[edytuj | edytuj kod]

Zegar systemowy mikrokontrolera może być taktowany:

  • zewnętrznym sygnałem taktującym (rozwiązanie często stosowane w dużych układach wymagających synchronicznej współpracy wielu jednostek)
  • rezonatorem, wymagającym podłączenia zewnętrznych elementów ustalających częstotliwość taktowania (najczęściej jest to rezonator kwarcowy lub rezonator ceramiczny i dwa kondensatory)
  • wewnętrznym układem taktującym, nie wymagającym podłączania dodatkowych elementów (wiele nowoczesnych mikrokontrolerów ma wbudowane układy taktujące; w bardziej rozbudowanych wersjach oparte na syntezie częstotliwości przy pomocy pętli synchronizacji fazowej).

Zegary współczesnych mikrokontrolerów osiągają częstotliwości do kilkuset MHz, jednak w większości zastosowań taktowanie może być znacznie wolniejsze. Ustalenie odpowiedniej częstości taktowania rzadko wiąże się z zapotrzebowaniem na moc obliczeniową; najczęściej branym pod uwagę parametrem jest czas reakcji na sygnały oraz szybkość realizowanej transmisji danych. Z uwagi na zależność poboru mocy od częstotliwości taktowania, wiele mikrokontrolerów może działać w tzw. trybach uśpienia – na przykład z całkowicie wyłączonym zegarem; wówczas aktywność mikrokontrolera ograniczona jest jedynie do podtrzymywania stanu pamięci oraz oczekiwania na sygnał wybudzający (np. przerwanie zewnętrzne).

Programowanie[edytuj | edytuj kod]

Jako języki programowania mikrokontrolerów najczęściej wykorzystywane są asemblery, język C, oraz uproszczone dialekty języka BASIC. Asembler pozwala lepiej wykorzystać możliwości mikrokontrolera (w tym również ograniczone zasoby pamięci), jednak z reguły wymaga większego nakładu pracy programisty. Istnieją również wyspecjalizowane narzędzia umożliwiające zaprogramowanie mikrokontrolera w oparciu o schemat blokowy algorytmu, schemat automatu skończonego lub układ połączeń bloków operacyjnych.

Ograniczanie poboru mocy[edytuj | edytuj kod]

Niektóre mikrokontrolery umożliwiają przełączenie się w tryb z ograniczonym poborem mocy. Zazwyczaj istnieje kilka takich trybów, różniących się przykładowo:

  • czasem wyjścia ze stanu uśpienia
  • wyłączeniem podzespołów (np. timerów, ADC)
  • poborem mocy.

Uśpienie (wstrzymanie) polega na wyłączeniu jednostki centralnej i zatrzymaniu wykonywania programu. Mikrokontroler może wyjść z trybu uśpienia po wywołaniu przerwania – wówczas wykonuje obsługę przerwania, po czym przechodzi do wykonywania programu, zaczynając od następnej instrukcji po instrukcji wstrzymania. W czasie uśpienia rejestry oraz pamięć RAM nie ulegają zmianie. Wstrzymanie działania układu może być realizowane poprzez:

  • odłączenie zegara systemowego od jednostki centralnej – płytkie wstrzymanie, krótki czas powrotu
  • zatrzymanie zegara systemowego – głębokie wstrzymanie, długi czas powrotu wynikający z konieczności ustabilizowania się częstotliwości zegara.

Historia, producenci i ewolucja mikrokontrolerów[edytuj | edytuj kod]

Pierwszym seryjnie produkowanym mikrokontrolerem był układ Intel 8048, sprzedawany od 1976 roku. Niemniej, za wynalazcę mikrokontrolera należałoby uznać Gary'ego Boone'a z firmy Texas Instruments – zgodnie z ustaleniami urzędu patentowego w USA. Pierwszymi układami firmy Texas Instruments, które można uznać za mikrokontrolery były, przeznaczone do kalkulatorów, układy TMS1000 produkowane już w roku 1972.

Rozwój technologii, oprócz wzrostu niezawodności, zasobów i poprawy parametrów, umożliwił także zmiany w architekturze tych układów. Do mikrokontrolerów wprowadza się rozbudowane układy peryferyjne (sterowniki wyświetlaczy LCD, dekodery MP3, sterowniki magistrali ATA, radiomodemy i inne). Oprócz klasycznych rozwiązań ośmio- i szesnastobitowych, pojawiają się układy ze słowem 32-bitowym. Jednym z kierunków rozwojowych jest oferowanie sprzętowego wsparcie języków wysokiego poziomu, takich jak Java. Produkowane są również uproszczone wersje mikrokontrolerów, w niewielkich obudowach (począwszy od trzech wyprowadzeń), co zapewnia zminimalizowanie kosztów w prostych aplikacjach.

Z drugiej strony można się spotkać z tendencją do wbudowywania gotowych rdzeni popularnych mikrokontrolerów do bardziej złożonych układów – np. układów ASIC lub programowalnych matryc FPGA. Pozwala to na ujednolicenie standardów programowania wytwarzanych urządzeń, w połączeniu z możliwością realizacji praktycznie dowolnych układów wejścia-wyjścia w postaci sprzętowej (w odróżnieniu od implementacji programowej tych samych układów, kiedy to sterowanie sygnałami na konkretnych wyprowadzeniach odbywać się musi z aktywnym wykorzystaniem realizowanego przez mikrokontroler programu).

Do najpopularniejszych mikrokontrolerów należą układy firm:

Niekwestionowany standard dla rynku masowego narzuciła firma Intel, która wprowadziła na rynek mikrokontroler 8051 – prototyp rodziny MCS-51. Obecnie wielu producentów stara się zachować zgodność wsteczną z tą rodziną (oznaczaną także jako S51 lub x51). Bardzo popularne są również mikrokontrolery AVR firmy Atmel oraz PIC firmy Microchip Technology.

Zobacz też[edytuj | edytuj kod]

Przypisy[edytuj | edytuj kod]

Linki zewnętrzne[edytuj | edytuj kod]