Serwis Edukacyjny
Nauczycieli
w I-LO w Tarnowie

Do strony głównej I LO w Tarnowie

Materiały dla uczniów liceum

  Wyjście       Spis treści       Poprzedni       Następny  

©2019 mgr Jerzy Wałaszek
I LO w Tarnowie

Autor artykułu: mgr Jerzy Wałaszek
Konsultacje: Wojciech Grodowski, mgr inż. Janusz Wałaszek

 

 

Mikrokontrolery

Rozdziały artykułu:
Wstęp
Teoria
Warsztat
Elementy
Projekty
Mikrokontrolery
    ATtiny4/5/9/10
    ATtiny11/12
    ATtiny13
    INSTRUKCJE AVR

Educational and Non-Profit Use of Copyrighted Material:

If you use Microchip copyrighted material solely for educational (non-profit) purposes falling under the “fair use” exception of the U.S. Copyright Act of 1976 then you do not need Microchip’s written permission. For example, Microchip’s permission is not required when using copyrighted material in: (1) an academic report, thesis, or dissertation; (2) classroom handouts or textbook; or (3) a presentation or article that is solely educational in nature (e.g., technical article published in a magazine).

https://www.microchip.com/about-us/legal-information/copyright-usage-guidelines

 

Podstawowe definicje

Zanim przejdziemy do opisu popularnych modeli mikrokontrolerów, podamy szybkie definicje ich elementów składowych. Więcej informacji znajdziesz w instrukcjach mikrokontrolerów.

Mikrokontroler (ang. microcontroler, MCU = microcontroler unit, układ mikrokontrolera)

Jest to komputer umieszczony w pojedynczym układzie scalonym. Zawiera wszystkie podstawowe elementy, takie jak mikroprocesor, pamięci, układy we/wy. Służy do sterowania różnych urządzeń. Przemysł elektroniczny produkuje olbrzymią ilość różnych mikrokontrolerów od najprostszych do bardzo zaawansowanych, które potrafią np. obrabiać obraz lub dźwięk. Zaletą mikrokontrolerów jest to, iż można je w prosty sposób programować za pomocą programatorów, a programy mogą być tworzone na komputerze PC w wygodnych środowiskach programowania. Również koszt mikrokontrolerów nie jest wysoki, dzięki czemu stały się one bardzo popularne wśród elektroników-amatorów.

Więcej na temat mikrokontrolerów znajdziesz tutaj.

Pamięć danych (ang. data memory)

Jest to element, który przechowuje informację. Pamięć zbudowana jest z komórek, w których przechowywane są bity. Komórki mają najczęściej rozmiar 8 bitów i przechowują bajty danych. Komórki w pamięci są ponumerowane, a ich numery nazywamy adresami. Przestrzeń adresowa (ang. address space) to spójny obszar komórek o jednolitym sposobie dostępu. W mikrokontrolerze występuje kilka rodzajów pamięci o rozdzielonych przestrzeniach adresowych:

Pamięć RAM (ang. random access memory, pamięć o dostępie swobodnym) jest pamięcią, w której przechowywane są przetwarzane dane, np. wyniki obliczeń. Charakteryzuje się ona krótkim czasem dostępu oraz bezpośrednim dostępem przez mikroprocesor. Po wyłączeniu zasilania traci przechowywaną informację.

Pamięć EEPROM (ang. electrically erasable programmable read-only memory, elektrycznie wymazywalna i programowalna pamięć tylko do odczytu) służy do przechowywania danych, które muszą przetrwać wyłączenie zasilania, np. dane konfiguracyjne. Pamięć taką można odczytywać, wymazywać oraz programować nową zawartością. W porównaniu z pamięcią RAM posiada ona dużo dłuższe czasy dostępu, lecz jak powiedzieliśmy, pamięć ta zachowuje zapisaną w niej informację po wyłączeniu zasilania. Dostęp do poszczególnych komórek pamięci EEPROM dokonywany jest za pomocą odpowiednich rejestrów we/wy i opisujemy go dla każdego mikrokontrolera.

Pamięć FLASH (ang. FLASH memory) jest pamięcią nieulotną (ang. non-volatile memory). W zasadzie jest to pamięć taka sama jak EEPROM. Słowo FLASH oznacza "błysk". Zastosowano je dlatego, iż pamięć FLASH jest programowana dużo szybciej od zwykłej pamięci EEPROM. Osiągnięto to w ten sposób, iż przy programowaniu zawartości kasowane są i zapisywane całe bloki komórek zwane stronami (ang. memory pages). Dzięki temu rozwiązaniu skraca się czas programowania pojedynczych komórek.

W pamięci FLASH przechowywany jest najczęściej program, który realizuje mikrokontroler. Zawartość pamięci można programować za pomocą programatorów. W ten sposób umieszcza się w mikrokontrolerze program do realizacji. Metody programowania opisujemy dla każdego mikrokontrolera.

Więcej na temat pamięci znajdziesz tutaj.

Mikroprocesor (ang. microprocessor, CPU = central processing unit, centralna jednostka przetwarzająca)

Mikroprocesor jest elementem aktywnym, który przetwarza dane w mikrokontrolerze. Mikroprocesor pobiera instrukcje z pamięci programu, którą najczęściej jest pamięć FLASH. Instrukcje są adresowane zawartością rejestru licznika rozkazów (ang. program counter register, PC). Po pobraniu instrukcji z pamięci programu rejestr licznika rozkazów jest automatycznie zwiększany tak, aby zawarty w nim adres wskazywał następną instrukcję do wykonania. Pobrana instrukcja jest rozpoznawana przez dekoder instrukcji, a następnie zostaje wykonana operacja odpowiadająca danej instrukcji. Mikroprocesor zawiera wiele elementów składowych:

Licznik rozkazów (ang. program counter) adresuje komórki w przestrzeni pamięci programu, w których przechowywane są instrukcje do wykonania przez mikroprocesor.

Rejestr instrukcji (ang. instruction register) służy do przechowywania instrukcji pobranej z pamięci programu wg adresu w liczniku rozkazów.

Dekoder instrukcji (ang. instruction decoder) jest siecią logiczną, która rozpoznaje instrukcję pobraną z pamięci programu do rejestru instrukcji. Po rozpoznaniu instrukcji wykonywany jest ciąg mikrooperacji, które realizują instrukcję opisaną pobranym kodem.

Jednostka arytmetyczno/logiczna, JAL (ang. arithmetic logic unit, ALU) jest układem mikroprocesora, który wykonuje operacje arytmetyczne i logiczne. Współpracuje ona z zestawem szybkich rejestrów (ang. register file), w których przechowuje argumenty oraz wyniki wykonywanych operacji. Ilość tych rejestrów i ich funkcje zależą od modelu mikrokontrolera.

Rejestry wejścia/wyjścia (ang. input outpur registers) służą do komunikacji mikroprocesora z układami zawartymi w mikrokontrolerze. Przy ich pomocy mikroprocesor może pobierać dane z tych układów oraz sterować nimi. Funkcje rejestrów we/wy zależą od modelu mikrokontrolera.

Wyprowadzenia zewnętrzne (ang. output pins)

Każdy mikrokontroler posiada wyprowadzenia (końcówki), za pomocą których może on kontrolować sterowane urządzenia, tzn. może odczytywać i przesyłać różnego rodzaju dane. Liczba i funkcje wyprowadzeń zależą ściśle od modelu mikrokontrolera i każdorazowo opisujemy je dokładnie w instrukcjach poszczególnych mikrokontrolerów. Proste mikrokontrolery mają 6 lub 8 wyprowadzeń, a te bardziej zaawansowane mogą ich mieć nawet ponad 100.

Moduły wewnętrzne

Każdy mikrokontroler wyposażony jest w różne dodatkowe moduły, które ułatwiają sterowanie urządzeń zewnętrznych. Rodzaj, liczba i dostępne funkcje tych modułów zależą od modelu mikrokontrolera.

Porty we/wy (ang. input output ports) występują w każdym mikrokontrolerze. Są to cyfrowe linie, za pomocą których mikrokontroler może przesyłać i odczytywać stany logiczne panujące na wyprowadzeniach zewnętrznych. Linie portów mogą być liniami wejścia (odczyt danych) lub wyjścia (przesył danych).

Linia resetu (ang. reset line) jest jednym z wyprowadzeń, które pełni specjalną funkcję – jeśli na tej linii zostanie wymuszony stan niski, to mikrokontroler przerywa wykonywany program i przechodzi w stan resetowania. Gdy linia resetu powróci do stanu wysokiego, mikrokontroler odczekuje zadany czas, a następnie resetuje się, tzn. do wszystkich rejestrów we/wy zostają zapisane wartości początkowe, co powoduje ustawienie wszystkich układów we/wy w stan początkowy, a następnie wykonywany jest program od procedury resetu.

Linia przerwania (ang. interrupt line) jest wyprowadzeniem, które w pewnym stanie generuje tzw. przerwanie (ang. interrupt). Polega to na tym, iż mikroprocesor przerywa wykonywany program, zapamiętuje miejsce przerwania, a następnie przechodzi do procedury obsługi tego przerwania. Po zakończeniu tej procedury mikroprocesor wraca do zapamiętanego miejsca w programie i kontynuuje wykonywanie programu. Rodzaje przerwań zależą od mikrokontrolera. Przerwania można selektywnie aktywować, tzn. zezwalać na ich obsługę, lub blokować. Opisujemy to dokładnie w instrukcjach dla każdego mikrokontrolera.

Oscylator (ang. oscilator) generuje przebieg zegarowy (ciąg impulsów) o zadanej częstotliwości. Impulsy wyjściowe z oscylatora mogą sterować różne moduły wewnętrzne, np. mikroprocesor, timery/liczniki, przetwornik analogowy. Mikrokontroler moze posiadać kilka oscylatorów generujących przebiegi o różnych częstotliwościach.

Preskaler (ang. prescaler) jest programowanym dzielnikiem częstotliwości. Na wejście preskalera podaje się przebieg z wybranego oscylatora wewnętrznego lub zewnętrznego, a na wyjściach otrzymuje się przebiegi o częstotliwościach podzielonych przez wybrane współczynniki, np.: f/2, f/16, f/256, f/1024... Przebiegi wyjściowe z dzielnika trafiają następnie do selektora, który wybiera jeden z nich i przekazuje na wyjście preskalera.

Timer/licznik (ang. timer/counter) jest rejestrem, który może zliczać wybrane impulsy zegarowe z oscylatorów wewnętrznych lub zewnętrznych. W ten sposób mikrokontroler potrafi odmierzać czas. W zależności od modelu mikrokontrolera licznik może być 8- lub 16-bitowy, liczników może również być więcej niż jeden. Dostęp do licznika mikroprocesor uzyskuje poprzez rejestry we/wy. Timery/liczniki mogą generować przerwania oraz mogą zostać wykorzystane do tworzenia przebiegów PWM (ang. pulse width modulation, modulacja szerokości impulsów). Przebiegi takie wykorzystuje się do sterowania elementami analogowymi: silniki, siłowniki, oświetlenie, grzałki, itp.

Output compare jest zdarzeniem polegającym na tym, iż zawartość timera/licznika zrówna się z zawartością rejestru porównawczego. W tym momencie licznik może wygenerować przerwanie lub w odpowiedni sposób zmienić swoją zawartość (np. wyzerować się) albo zmienić stan wybranej końcówki wyjściowej. Nie tłumaczę tego terminu, ponieważ nie ma dobrego odpowiednika w języku polskim.

Input Capture jest zdarzeniem zewnętrznym, które mikrokontroler wykrywa i w momencie jego wystąpienia zapamiętuje w osobnym rejestrze stan wybranego timera/licznika. Może być również generowane przerwanie. Zarejestrowane wartości mogą być później  przetwarzane przez mikrokontroler. W ten sposób można np. wykonywać pomiary częstotliwości jakiegoś przebiegu lub porównywać jego okresy.

Licznik zegarowy (ang. watchdog timer) jest licznikiem sterowanym przez osobny generator impulsów zegarowych. Gdy licznik osiągnie przepełnienie (wartość maksymalną, która przechodzi w zero przy następnym impulsie zegarowym), generuje reset. Ma to zastosowanie tam, gdzie nie chcemy, aby mikroprocesor zawiesił się przy wykonywaniu czasochłonnych operacji. W normalnie działającym programie mikroprocesor zeruje licznik zegarowy co pewien czas, nie dopuszczając do jego przepełnienia. Jednakże jeśli z jakiś powodów tego nie zrobi, to licznik zegarowy zresetuje mikrokontroler, który w ten sposób wyjdzie ze stanu zawieszenia i rozpocznie wykonywanie programu od początku. Licznik zegarowy jest standardowo wyłączony, trzeba go fizycznie włączyć bitami bezpiecznikowymi, aby uzyskać funkcję resetowania co określony przedział czasu.

Komparator analogowy (ang. analog comparator) służy do porównywania napięć analogowych. Posiada on dwa wejścia: nieodwracające oraz odwracające. Na wyjściu komparatora jest stan zero, jeśli napięcie na końcówce nieodwracającej jest niższe lub równe napięciu na końcówce odwracającej. Stan jeden pojawi się, gdy napięcie na końcówce nieodwracającej będzie wyższe od napięcia na końcówce odwracającej. W przypadku zmiany stanu wyjścia komparatora może być generowane przerwanie. Komparator opisujemy tutaj.

Przetwornik analogowo/cyfrowy (ang. analog to digital converter, ADC) jest modułem, który przetwarza wartość napięcia na wybranym wyprowadzeniu mikrokontrolera w liczbę binarną (np. 8- lub 10-bitową). Dzięki przetwornikowi A/C mikrokontroler może dokonywać pomiarów napięć wejściowych, a zatem może reagować na wartości analogowe z różnych czujników pomiarowych lub rejestrować je w pamięci. W mikrokontrolerach wykorzystywane są przetworniki kompensacyjne, których zasadę działania opisujemy tutaj.

Wykrywanie spadku napięcia zasilania (ang. brown-out detection, BOD) umożliwia mikrokontrolerowi reakcję na spadki napięcia zasilającego. Moduł ten musi zostać aktywowane za pomocą bitów bezpiecznikowych, standardowo jest wyłączony. Działa to w ten sposób, iż jeśli napięcie zasilające mikrokontroler spadnie poniżej ustalonego poziomu, moduł BOD resetuje mikrokontroler i umożliwia wykonanie procedury awaryjnej - np. szybki zapis wrażliwych danych w EEPROM.

Bity blokujące (ang. lock bits)

Mikrokontrolery wyposażone są w różne funkcje chroniące zawartość ich pamięci przed niepowołanym dostępem. Jednym z zabezpieczeń są tzw. bity blokujące. Bity te ustawia się na etapie programowania zawartości pamięci mikrokontrolera. Po zaprogramowaniu blokowane są różne funkcje, np. odczyt zewnętrzny (poprzez programator) zawartości pamięci programu i danych, dalsze programowanie pamięci programu lub danych itp. Po zaprogramowaniu bitów blokujących nie można zmienić ich stanu. Jedyna opcja to skasowanie zawartości całego mikrokontrolera, która przywraca go do stanu pierwotnego, lecz usuwa z jego pamięci program oraz dane uniemożliwiając ich skopiowanie.

Bity bezpiecznikowe (ang. fuse bits)

Bity te są ustawiane lub zerowane w trakcie programowania mikrokontrolera. Bity bezpiecznikowe włączają lub wyłączają różne moduły wewnętrzne oraz dodatkowe opcje. Ich funkcje zależą od modelu mikrokontrolera.

 

Mikrokontrolery AVR ATtiny

Zespół Przedmiotowy
Chemii-Fizyki-Informatyki

w I Liceum Ogólnokształcącym
im. Kazimierza Brodzińskiego
w Tarnowie
ul. Piłsudskiego 4
©2019 mgr Jerzy Wałaszek

Materiały tylko do użytku dydaktycznego. Ich kopiowanie i powielanie jest dozwolone
pod warunkiem podania źródła oraz niepobierania za to pieniędzy.

Pytania proszę przesyłać na adres email: i-lo@eduinf.waw.pl

Serwis wykorzystuje pliki cookies. Jeśli nie chcesz ich otrzymywać, zablokuj je w swojej przeglądarce.
Informacje dodatkowe.