Mikrokontroler

Z Wikipedii, wolnej encyklopedii
Skocz do: nawigacja, szukaj
Przykładowe mikrokontrolery Atmel AVR

Mikrokontroler (MCU, μC, uC 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, nie wymagają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 wykorzystuje 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 (kartach rozszerzeń, peryferiach, dongle itd.) itp.

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 – np. mogą to być elementy opcjonalnej magistrali adresowej i danych;
  • układy czasowo-licznikowe;
  • kontrolery przerwań.

Ponadto, mikrokontroler może zawierać:

  • kontrolery transmisji szeregowej (UART, SPI, I2C, USB, CAN, 1-Wire itp.);
  • proste przetworniki analogowo-cyfrowe lub cyfrowo-analogowe;
  • obszar nieulotnej pamięci danych, np. EEPROM lub opartej na dodatkowym podtrzymywaniu bateryjnym;
  • zegar czasu rzeczywistego (RTC);
  • układ kontroli poprawnej pracy, tzw. watchdog, którego zadaniem jest przeprowadzenie restartu mikrokontrolera w przypadku wejścia programu w nieskończoną pętlę;
  • wewnętrzne czujniki wielkości nieelektrycznych, np. temperatury.

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 – jest to 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, ang. In-System Programming) 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, LUT)

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 (np. Actum Realizer).

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ę np.:

  • czasem opuszczenia stanu uśpienia,
  • wyłączeniem podzespołów, tj. timerów, ADC itd.,
  • 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 jednego z przerwań – wówczas wykonuje obsługę przerwania, po czym przechodzi do wykonywania programu poczynają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 najbardziej popularnych mikrokontrolerów należą układy takich firm jak:

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ść wstecz 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]

Linki zewnętrzne[edytuj | edytuj kod]