Mikrokontroler
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ć:
- 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,
- układ kontroli poprawnej pracy, tak zwany 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 – 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, uproszczone dialekty języka BASIC oraz (rzadziej) język Pascal (np. mikroPascal[2]). 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). Dostępne są rozwiązania 8, 16 i 32-bitowe. 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:
- Analog Devices,
- Atmel (od 2016 przejęte przez Microchip Technology),
- Espressif Systems,
- Freescale Semiconductor (dawniej Motorola),
- Hitachi,
- Infineon,
- Intel,
- Microchip,
- NXP (do 2006 roku oddział firmy Philips),
- Renesas,
- STMicroelectronics.
Niekwestionowany standard dla rynku masowego narzuciła firma Intel, która wprowadziła na rynek mikrokontroler 8051 – prototyp rodziny MCS-51. Przez wiele lat producenci mikrokontrolerów starali się zachować zgodność wsteczną z tą rodziną (oznaczaną także jako S51 lub x51). Spośród 8-bitowych mikrokontrolerów obecnie najpopularniejsze są mikrokontrolery AVR (firmy Atmel) oraz PIC (firmy Microchip Technology). Mikrokontrolery 16-bitowe są stosunkowo mniej popularne. Wiele z nich jest wyposażonych w bloku DSP (np. rodziny MSP430 firmy Texas Instruments czy dsPIC24 firmy Microchip). Natomiast wśród mikrokontrolerów 32-bitowych zdecydowanie dominują te, które są oparte na architekturze ARM. Wyjątkiem są 32-btowe mikrokontrolery z rodziny PIC32, które wykorzystują architekturę MIPS. Od niedawna są także oferowane mikrokontrolery 32-bitowe, używające architektury RISC-V (np. firm GigaDevice i WCH), ale są one na razie mało popularne.
Zobacz też
[edytuj | edytuj kod]Przypisy
[edytuj | edytuj kod]- ↑ T. Marciniak, A. Dąbrowski, R. Puchalski, D. Dratwiak, W. Marciniak: Zastosowanie mikrokontrolera STM32F410 do prezentacji zagadnień cyfrowego przetwarzania sygnałów, Przegląd Elektrotechniczny 95 (2019): 118-120, doi:10.15199/48.2019.10.26
- ↑ P. Borkowski: AVR i ARM7. Programowanie mikrokontrolerów dla każdego, Helion, Gliwice (2010)
Linki zewnętrzne
[edytuj | edytuj kod]- O mikrokontrolerach jednoukładowych
- Atmel Microcontrolers. atmel.com. [zarchiwizowane z tego adresu (2017-12-30)].
- Microchip Microcontrolers
- mikroPascal PRO for PIC
- AVR Embedded Tutorials