5 Materiały pomocnicze architektura mikrokontrolera


  1. Ogólna charakterystyka systemu mikroprocesorowego

Typowy system mikroprocesorowy, czy to realizowany przy użyciu mikroprocesora, czy mikrokontrolera, zawiera (rys. 3.1) [5]:

- centralną jednostkę procesora (CPU),

- pamięć programu (ROM),

- pamięć danych (RAM)

- porty wejścia/wyjścia (I/O).

0x01 graphic

Rysunek 3.1. Schemat funkcjonalny mikrokontrolera 8051. [2]

Centralna jednostka procesora (CPU)

CPU jest mózgiem każdego systemu mikroprocesorowego, ponieważ koordynuje ono działanie wszystkich pozostałych układów, a ponadto wykonuje wszystkie operacje (obliczenia) arytmetyczne i logiczne. Ponadto, podczas wykonywania instrukcji, CPU adresuje pamięć i układy wejścia/wyjścia, oraz odpowiada na zewnętrzne sygnały sterujące. Wewnątrz CPU znajdują się, odpowiednio ze sobą połączone:

- rejestry,

- jednostka arytmetyczno-logiczna (ALU),

- układy sterujące (np. dekoder instrukcji),

- układ obsługi przerwań.

Rejestry stanowią rodzaj pamięci do chwilowego przechowywania różnego rodzaju informacji. Niektóre z rejestrów, jak np. licznik rozkazów pełnią specjalne funkcje. Inne, jak np. akumulator, mają bardziej ogólne zastosowanie.

Jednostka arytmetyczno-logiczna (ALU), jak sama nazwa wskazuje, służy do wykonywania obliczeń arytmetycznych i operacji logicznych. Operacje te są zwykle wykonywane na liczbach dwójkowych. Niektóre mikrokontrolery i mikroprocesory umożliwiają wykonywanie operacji także na liczbach dziesiętnych. Jednostka ALU zawiera sumator, który umożliwia dodanie zawartości dwóch rejestrów. Układ ALU zawiera również specjalne bity tzw. wskaźników, które służą do sygnalizowania określonych stanów, powstałych w wyniku wykony­wania operacji arytmetycznych i lo­gi­cznych. Stan tych wskaźników może być testowany programowo, a wykrycie określonego stanu wybranych wskaźników może być wykorzystane do spowodowania skoku w inne miejsce wykonywanego programu.

Układy sterujące, w oparciu o sygnał zegarowy (taktujący), generują odpo­wiednie sygnały sterujące pobieraniem kodu instrukcji z pamięci programu, dekodowaniem kodu operacji, oraz wysyłają do innych wewnętrznych i zewnętrznych układów sygnały niezbędne do wykonania przez CPU kolejnych operacji. Układy sterujące są również odpowiedzialne za obsługę specjalnych sygnałów zewnętrznych - np. przerwań.

Stosowanie przerwań umożliwia maksymalne wykorzystanie możliwości przetwarzania danych, jakie daje mikrokontroler. Dość często system mikroprocesorowy współpracuje z urządzeniami stosunkowo wolnymi - jak np. drukarki, wyświetlacze, pamięci dyskowe. W takich sytuacjach zamiast wytracać czas, oczekując na gotowość urządzenia zewnętrznego do wykonania następnej operacji (np. prze­słania danych), mikrokontroler może wykonywać inne operacje, a do obsługi danego urządzenia przejść w chwili zgłoszenia przez to urządzenie przerwania sygnalizu­jącego gotowość do dalszej wymiany informacji. Przerwania są również przydatne do obsługi nieregularnych zdarzeń i sytuacji awaryjnych sygnalizowanych z zewnątrz - np. przekroczenia dopuszczalnej wartości ciśnienia płynu, sygnalizowanego przez czujnik pomiarowy. Procedura obsługi takiego przerwania powinna być napisana w taki sposób, by jej wykonanie spowodowało odpowiednią reakcję na sygnalizowane zdarzenie - w podanym przykładzie np. wysłanie sygnału powodującego przym­knięcie odpowiedniego zawora.

Mikrokontroler może współpracować z kilkoma urządzeniami zgłaszającymi przerwania. W takim przypadku każdemu z przerwań przypisany jest inny priorytet. Dzięki temu, przy jednoczesnym zgłoszeniu kilku przerwań, w pierwszej kolejności zostanie wykonana procedura obsługi przerwania o najwyższym priorytecie, czyli przerwania uznanego za najważniejsze.

Pamięć

Do działania mikrokontrolera niezbędny jest odpowiedni program. Pamięć programu musi się zatem znaleźć w proje­ktowanym systemie i musi być ona gotowa do odczytu już w chwili załączania zasilania w układzie. Z tego względu pamięć programu wykonywana jest najczęściej jako pamięć nieulotna typu:

ROM - programowana maską w fazie produkcji,

PROM - programowana jednorazowo przez użytkownika,

EPROM, EEPROM - przystosowane do wielokrotnego programowania przez użytkownika.

Do przechowywania wyników wykonywanych operacji i innych danych wykorzysty­wanych przez CPU, konieczne jest zastosowanie pamięci RAM, której zawartość może być zarówno odczytywana, jak i mody­fi­kowana przez CPU.

Porty wejścia/wyjścia

Porty wejścia/wyjścia są dla mikrokontrolera mostami łączącymi mikrokontroler ze światem zewnętrznym. Porty wejściowe umożliwiają odczytywanie informacji z takich źródeł jak przełączniki i czujniki sygnalizujące zdarzenia zewnętrzne. Porty wyjściowe wykorzysty­wane są do przesyłania informacji do urządzeń zewnętrznych, takich jak diody LED, przekaźniki, silniki, czy nawet inne mikro­kontrolery.

3.1. Procesor - CPU

Mikroprocesor jako jednostka centralna (ang. Central Processing Unit - CPU) wraz z zestawem układów dodatkowych tworzą system mikroprocesorowy zwany również mikrokomputerem [2].

Ośmiobitowa jednostka centralna może wykonywać 111 rozkazów (49 jedno-, 45 dwu- i 17 trzybajtowych) umożliwiających łatwą i efektywną realizację wszelkiego rodzaju algorytmów sterowania (również wymagających złożonych obliczeń) [2, 7]. Lista rozkazów zawiera m.in. rozkazy arytmetyczne (w tym mnożenie i dzielenie) i logiczne, rozkazy dotyczące operacji logicznych na bitach (procesor boolowski) oraz rozbudowane grupy rozkazów skoków warunkowych i wejścia-wyjścia. Prawie wszystkie rozkazy wykonują się w czasie jednego lub dwóch cykli maszynowych. Wyjątek stanowi tu mnożenie i dzielenie, wymagające czterech cykli.

Każdy rejestr stanowi komórkę pamięci, w której może być przechowywane jedno słowo maszynowe. W czasie pracy procesora rejestry są używane do chwilowe­go przechowywania danych i wyników wykonywanych operacji. Przetwarzanie da­nych zapisanych w rejestrach wewnętrznych procesora lub komórkach pamięci jest realizowane przez arytmometr ALU. Zespół rejestrów i arytmometrów tworzy tzw. układ operacyjny procesora.

Przepływ danych i wyników między rejestrami, pamięcią i arytmometrami jest sterowany przez układ sterujący, który decyduje o tym, jakie operacje i na jakich danych maję być wykonane. Układ sterujący jest odpowiedzialny za pobieranie kolejnych roz­kazów programu z pamięci, interpretowanie treści pobranych rozkazów i ich wykonanie w układzie operacyjnym. Działanie procesora jest cykliczne i w kolejnych cyklach pracy (cyklach rozkazowych) z komórki pamięci są pobierane kolejne rozkazy programu. Po­brany rozkaz jest przesyłany do układu sterującego, który rozpoznaje typ rozkazu i ustala rodzaj operacji, która ma być wykonana i identyfikuje argumenty operacji. Następnie steruje pobraniem odpowiednich danych i wykonaniem operacji w układzie operacyj­nym. Dane stanowiące argumenty operacji są pobierane z rejestrów procesora lub z ko­mórki pamięci. Pobranie danych z rejestrów (a nie z pamięci) pozwala na szybsze wy­konanie operacji. Liczba rejestrów uniwersalnych procesora jest zwykle ograniczona.

Zarówno rozkazy, jak i dane są zapisywane w identycznej postaci słów zerojedynko­wych. O tym, jak procesor zidentyfikuje słowo pobrane z pamięci decyduje miejsce, do którego słowo to zostanie przesłane wewnątrz procesora. Słowa przesłane do układu sterującego są traktowane jako rozkazy, słowa przesłane do układu operacyjnego są przetwarzane jako dane. Słowem nazywa się wektor informacji cyfrowej, który może mikroprocesor wymienić z pamięcią w wyniku jednej operacji czytania lub zapisu. Dłu­gość słowa (liczba bitów) mikroprocesora jest jednym z jego najważniejszych parame­trów. Determinuje ona w decydującym stopniu jego efektywność (moc obliczeniową). Liczba bitów w słowie mikroprocesora jest równa liczbie linii jego magistrali danych. Z reguły nie jest ona równa liczbie linii jego wewnętrznej magistrali.

W różnych mikroprocesorach stosuje się różną długość słowa; zwykle jednak jest to wielokrotność 8 bitów (8 bitów = 1 bajt).

Na rysunku 3.3. przedstawiono schemat ideowy struktury mikrokomputera. Rozwój technologii umożliwiający scalanie coraz większych układów dopro­wadził do zbudowania również całych mikrokomputerów zawartych w jednym mikro­układzie. Są to tzw. mikrokomputery jednoukładowe (ang. single chip microcomputer) w postaci układu scalonego zawierającego w sobie wszystkie bloki funkcjonalne (jednostkę centralną, pamięć, układy wejścia-wyjścia) tworzące mikrokomputer zdol­ny do samodzielnego działania.

0x01 graphic

Rysunek 3.3. Struktura wewnętrzna mikrokontrolera 8-bitowego MCS-C51. [11]

Układ sterowania wysyła również sygnały sterujące do elementów zewnętrz­nych (pamięci i układów wejścia-wyjścia) określające rodzaj operacji jaką mają one wykonać. Sygnały sterujące są ge­nerowane w rytmie narzuconym przez częstotliwość podstawowego zegara taktujące­go. Mikroprocesor zawiera pewną liczbę rejestrów niedostępnych programowo dla użytkownika i wykorzystywanych tylko przez układ sterowania. Z punktu widzenia użytkownika istotne są tylko te rejestry mikroprocesora, których zawartość może być przez niego odczytana lub zmieniona (za pomocą odpowiednich rozkazów) i które może on wykorzystywać do pamiętania wyników operacji lub sterowania programem.

3.2. Pamięć - ROM, RAM

Zadaniem pamięci jest przechowywanie informacji [10]. W elektronice cyfrowej informacją będzie stan napięcia określający stan logiczny. Układy cyfrowe przetwarzają i przechowują (pamiętają) informacje w postaci binarnej (0 - 1). Informacje przetwa­rzane muszą być wcześniej zapamiętane.

0x08 graphic
Istotnym zagadnieniem dotyczącym pamięci jest możliwość zapisania informacji w określonym miejscu jak i jej pobranie. Wymaga to uporządkowania rozmieszczenia komórek i realizacji tzw. adresowania, czyli wskazywania komórki do zapisu lub odczytu informacji. Pierwszym kryterium podziału pamięci jest sposób wprowadzania i wyprowadzania danych. Może być on szeregowy lub równoległy. Z tym wiążą się różne struktury pamięci: szeregowa i matrycowa. Struktura szeregowa występuje w rejestrze przesuwnym. Zasadniczym blokiem pamięci matrycowej (rys. 3.5a) jest matryca pamięci zawierająca uporządkowane komórki pamięci. Komórki te rozmieszczone są na płaszczyźnie np. układu scalonego i ich położenie można określić za pomocą współrzędnych X i Y (rys. 3.5b). Adres komórki składa się więc z dwóch części. Dane są wprowadzane lub wyprowadzane z pamięci przez układ we/wy.

Pamięć systemu mikroprocesorowego można również podzielić ze względu na moż­liwość wielokrotnego zapisu informacji do pamięci na dwie odrębne części: pamięć zapisywalną i pamięć stałą. Każda z tych części składa się z pamięciowych układów scalonych, połączonych w sposób zależny od ich organizacji wewnętrznej. Na rysunku 3.6 pokazano podział funkcjonalny pamięci półprzewo­dni­kowych [2].

0x01 graphic

Rysunek 3.6. Podział funkcjonalny pamięci półprzewodnikowych. [2]

W zależności od typu, mikrokontroler może być wyposażony w kilka rodzajów wbudowanej pamięci wewnętrznej [3]. Ze względu na technologię wykonania pamięci te dzieli się na sześć podstawowych odmian.

Pamięć RAM (ang. random access memory) może być zarówno odczytywana, jak i zapisywana przez CPU. Zawartość pamięci jest podtrzymywana tak długo, jak długo jest włączone zasilanie układu. Rozróżnia się statyczne i dynami­czne pamięci RAM. Pa­mięci dynamiczne zachowują swoją zawartość tylko wtedy, gdy jest ona cyklicznie od­świeżana (czas rzędu milisekund). Pamięci statyczne nie wymagają odświeżania i zapewniają krótszy czas dostępu. Pamięci dynamiczne są łatwiejsze do scalenia, dlatego pamięci RAM o dużych pojemno­ściach wykonuje się zwykle jako dynamiczne, natomiast mniejsze pamięci realizuje się jako statyczne.

Do pamięci RAM doprowadzany jest adres, sygnały sterujące CE, R/W (zapis W lub odczyt R) oraz dane (rys. 3.7) [10]. Adres, podawany liniami adresowymi

0x08 graphic
Rysunek 3.7. Pamięci RAM. [10]

służy do wyboru komórki, do której zostanie zapisana informacja lub, z której zostanie odczytana. Sygnał sterujący CE uaktywnia pamięć, tzn. dołącza ją do linii adresowych i danych.

0x08 graphic
Pamięć ROM (ang. read-only memory) może być tylko odczytywana [3]. Zawartość pamięci jest określona na stałe podczas procesu produkcji. Pamięci tego typu są używane jako wewnętrzna pamięć programu do przechowywania kodu firmowego oprogramowa­nia dostarczanego wraz z mikrokontrolerem (ang. firmware).

Schemat budowy tych pamięci przedstawiono na rysunku 3.8.

Rysunek 3.8. Pamięci ROM. [10]

Pamięć EPROM (ang. erasable programmable ROM) służy do przechowywania programów i danych użytkownika (rys. 3.9). Zawartość pamięci może być zmieniana przez skaso­wanie poprzedniej zawartości i wpisanie nowej. Operacja ta wymaga zwykle wyjęcia układu z podstawki. Kasowanie przeprowadza się naświetlając pamięć promieniami ul­trafioletowymi, natomiast programowanie odbywa się
0x08 graphic
Rysunek 3.9. Komórka pamięci EPROM. [10]

w sterowanym przez komputer programatorze, przy użyciu napięcia o wartości równej kilkanaście woltów. Liczba cykli kasowania-programowania jest ograniczona. Podobnie jak pamięć ROM, pamięć EPROM jest nieulotna, to znaczy po wyłączeniu zasilania zachowuje swoją zawartość.

Pamięć jednokrotnie programowalna OTP (ang. one time programmable) ma bu­dowę identyczną jak EPROM, ale proces programowania można wykonać tylko jeden raz. W odróżnieniu od pamięci EPROM, których obudowy są wyposażone w okno z kwarcu umożliwiające kasowanie w ultrafiolecie, pamięci OTP nie mają takiego okien­ka, nie mogą być więc kasowane. Ściślej biorąc, zawartość zaprogramowanej pamięci OTP można modyfikować, ale tylko przez zmianę jedynek na zera. Zaprogramowane wcześniej zera nie mogą być już przeprogramowane na jedynki.

Pamięć EEPROM (ang. electrically erasable PROM) może być przeprogramowana elektrycznie, bez potrzeby kasowania ultrafioletem. Jest pamięcią nieulotną, stosowaną do przechowywania programów i danych. Wadą pamięci tego typu jest długi czas zapisu wynoszący zwykle od kilkuset nanosekund do około 1 milisekundy. Liczba cykli zapisu-kasowania jest ograniczona i wynosi typowo 10 000.

Pamięć błyskowa FLASH łączy w sobie pozytywne cechy pamięci EPROM - szybkie programowanie i EEPROM - elektryczne kasowanie [6]. Zapewnia również zwykle większą liczbę cykli zapisu-kasowania. Jest stosowana jako pamięć wewnętrzna lub zewnętrzna w nowocze­snych mikrokontro­lerach. Ważną zaletą pamięci błyskowej jest możliwość szybkiego kasowania wybranych sektorów pamięci lub całej jej zawartości.

Architektura podsystemu pamięci ma duży wpływ na projektowanie i programowanie systemów cyfrowych z mikrokontrolerami [3]. Ze względu na to, że część pamięci mieści się wewnątrz scalonego układu mikrokontrolera, a część jest dołączana z zewnątrz, budo­wa i działanie tego podsystemu jest na ogół bardziej skomplikowane niż w przypadku konwencjonalnych systemów mikroprocesorowych.

3.3. Układ czasowo-licznikowy

Bloki timerów - liczników umieszczo­ne wewnątrz struktury procesorów '51 są jednymi z najbardziej użytecznych ukła­dów jakie możemy wykorzystywać [5]. Umożliwiają one dokonywanie wszelkich operacji rozgrywających się w czasie rzeczywistym, budowanie zega­rów, timerów, stoperów oraz innych ukła­dów, których działanie uzależnione jest od upływu czasu. Jednocześnie, obsługa ti­merów sprawia zwykle wiele problemów początkującym programistom.

Układ czasowo-licznikowy (ang. timer-counter) mikrokompu­tera 8051 zawiera dwa 16-bitowe (2x8bitów) liczniki: Timer0 i Timer1 [7].

Mogą one zliczać impulsy zewnętrzne, doprowadzone do wejść, odpowiednio, T0 (P3.4) lub T1 (P3.5), spełniając w ten sposób funkcję licznika (ang. event counter).

Mogą też zliczać wewnętrzne impulsy zegarowe, w celu odmierza­nia opóźnień czy generowania przerwań zegarowych o zadanej częstotli­wości. W tym przypadku spełniają funkcję czasomierza (ang. timer) - (zliczanie cykli maszynowych mikrokon­trolera).

Przy pracy w trybie czasomierza inkrementacja licznika następuje w każdym kolejnym cyklu maszynowym, a zatem maksymalna częstotliwość zliczania jest równa 1/12 częstotliwości zegarowej mikrokontrolera [9].

W przypadku wykorzysty­wania układu w trybie licznika, jego zawartość jest zwiększana w odpowiedzi na opadające zbocze sygnału wejściowego. Detekcja zbocza odbywa się jednak synchronicznie z cyklem pracy mikrokontrolera - przez testowanie stanu odpowiedniej linii wejściowej w każdym kolejnym cyklu maszynowym. Jeśli testowanie wykazuje stan wysoki linii w jednym cyklu maszynowym oraz stan niski linii w następnym cyklu maszynowym, zawartość licznika jest zwięk­szana. Tak więc, aby zagwarantować wykrycie wszystkich impulsów, każdy (zarówno niski jak i wysoki) stan testowanej linii wejściowej musi trwać co najmniej jeden pełny cykl maszynowy. Skutkiem tego maksymalna częstotliwość pracy układu w trybie licznika jest ograniczona do 1/24 częstotliwości zegarowej mikrokontrolera.

3.4. Układ wejścia - wyjścia (porty)

Jednym z istotniejszych parametrów mikrokontrolerów jednoukładowych, który często decyduje o wyborze układu jest liczba i możliwości wykorzystania linii wejść/wyjść mikrokontrolera [9]. W celu uelastycznienia struktury mikrokontrolera, a tym samym poszerzenia możliwości jego zastosowań, przy jednoczesnym zachowaniu małych rozmiarów układu, znaczna część linii wejść/wyjść mikrokontrolerów może zwykle pełnić różne funkcje. W przypadku mikrokontrolerów rodziny 51 większości linii wejść/wyjść przypisane są dwie lub trzy alternatywne funkcje. Z reguły, oprócz funkcji zwykłego wejścia/wyjścia cyfrowego, linia może być wejściem lub wyjściem sygnałów strobujących, impulsowych, analogowych, adresu, danych itp. Rodzaj funkcji pełnionej przez daną linię prawie zawsze może być ustalany programowo. Linie pełniące zbliżone funkcje zebrane są w grupy określane mianem portów.

Jeśli linia pracuje jako wyjście cyfrowe, zapis jedynki logicznej do przerzutnika powoduje odcięcie tranzystora i pojawienie się na wyprowadzeniu zewnętrznym mikrokontrolera stanu wysokiego, na skutek działania rezystora podciągającego przyłączonego do dodatniego napięcia zasilania mikrokontrolera. Zapis zera do przerzutnika powoduje wejście tranzystora w przewodzenie i wymu­szenie na wyprowadzeniu zewnętrznym mikrokontrolera stanu niskiego. Aby uniknąć zapamiętywania stanu wyjść w pamięci RAM, co mogłoby być nieodzowne, gdyby informacja o stanie wyjść miała być wykorzystywana w przyszłości, układ wyjściowy został wyposażony w bufor trójstanowy umożliwiający odczyt zawartości przerzutnika.

W przypadku, gdy linia ma pracować jako wejście cyfrowe, wpisanie jedynki do przerzutnika powoduje, że jedynym obciążeniem wyprowadzenia mikrokontrolera staje się rezystor podciągający. Rezystancja tego rezystora wynosi kilkadziesiąt (50-100) kiloomów, co dla układów cyfrowych jest obciążeniem minimalnym. Stan wejścia jest odczytywany przy wykorzystaniu drugiego bufora trójstanowego.

Uwaga: Wpisanie jedynki do przerzutnika jest warunkiem koniecznym, aby linia mogła pracować jako wejście cyfrowe. Wpisanie zera może doprowadzić do konfliktu wyjść, co uniemożliwi odczyt prawidłowej wartości stanu linii.

3.4.1. Budowa wewnętrzna portów

0x08 graphic
Porty, oprócz standardowych funkcji wejścia-wyjścia nie realizują żadnych dodatkowych funkcji. W takim układzie sygnał wyj­ściowy rejestru portu steruje bezpośrednio tranzystorem wyjściowym, wymuszając odpowiedni stan na końcówce układu. Schemat standardowych portów wejścia-wyjścia przedstawiono na rysunku 3.17.

Rysunek 3.17. Schemat standardowych portów wejścia-wyjścia. [2]

Elementem wspólnym w strukturze każdego z portów jest przerzutnik typu D, będący elementem rejestru danego portu. Sterowanie portami odbywa się w podo­bny sposób, jak jest w przy­padku pozostałych rejestrów mikro­kontrolera. Rejestry portów należą do grupy rejestrów adresowanych bitowo i bajtowo. Dzięki temu możliwe jest ustawianie każdego bitu rejestru danego portu (lub odczytanie stanu dowolnego bitu rejestru portu) niezależnie, wykorzystując rozkazy operacji na bi­tach.

Dane przesyłane do portu zapisywane są w buforowym rejestrze wyjścio­wym. Stan tego rejestru nie zmienia się aż do ponownego wpisania nowych war­tości.

Odczytywanie danej z portu odbywa się przez bufory, przy czym dana może zostać odczytana albo z rejestru portu, albo bezpośrednio z końcówki portu: zależy to od użytego rozkazu. Do odczytywania danych z rejestru wyjściowego portu służą rozkazy, których wykonanie powoduje odczytanie, modyfikację i ponowne zapisanie danych do portu.

3.6. Rodzaje przetworników

Układy przetwarzające przebieg jednej wielkości sygnału (wejściowego) na drugą wielkość (wyjściową) nazywamy przetwornikami. Najważniejszymi przetwornikami stosowanymi w systemach mikroprocesorowych są:

3.6.1. Komparator napięć

W systemach mikroprocesorowych, zwłaszcza pełniących funkcję sterow­ników przemysłowych, zachodzi często potrzeba zastosowania komparatorów analo­gowych. Wśród układów rodziny 51 są takie, które posiadają komparatory analo­gowe zintegrowane ze strukturą samego mikrokontrolera. Bardzo często kompara­tory wykorzystywane są do monitorowania napięcia zasilającego [9].

Mikrokontrolery C1051 i C2051 zawierają pojedynczy komparator analo­gowy (rys. 3.22), którego wejścia podłączone są do linii P1.0 (+) i P1.1 (-). Z tego względu linie te pozbawione są standardowych rezystorów podciągających, a ich wejściowy prąd upływu nie przekracza 10 A. Napięcie niezrównoważenia kompa­ratora jest mniejsze od 20 mV, a zakres jego napięć wejściowych jest ograniczony od dołu potencjałem masy, a od góry napięciem zasilania mikrokontrolera. Stan wyjścia komparatora może być testowany wyłącznie programowo, przy czym operacja ta jest realizowana dość nietypowo - przez odczyt bitu P3.6 (port P3 nie posiada wyprowadzenia P3.6). Bit P3.6 ma wartość jedynki logicznej, jeśli napięcie na wejściu nieodwracającym jest wyższe od napięcia na wejściu odwracającym.

0x08 graphic
Rysunek 3.22. Połączenia wewnętrznego komparatora analogowego występującego w mikrokontrolerach C1051 i C2051. [9]

Komparatory mogą generować przerwania (powodujące np. wyjście mikro­kontrolera ze stanu uśpienia). W tym celu wyjścia komparatorów muszą być wyko­rzystane do sterowania wejść przechwytujących układu PCA. Jeśli komparator steruje przechwytującym wejściem układu PCA, ale jego wyjście nie jest dołączone do wyprowadzenia mikrokontrolera, to wyprowadzenie to może być wykorzystane jako linia wejść/wyjść cyfrowych ogólnego zastosowania. Jeśli wyjście komparatora jest dołączone do wyprowadzenia mikrokontrolera, to rezystory podciągające na tym wyprowadzeniu są odłączane i stopień końcowy danej linii pracuje wówczas w konfiguracji otwarty dren.

3.6.2. Przetworniki analogowo-cyfrowe

Przetworniki analogowo-cyfrowe stosowane w mikrokontrolerach wykorzystują najczę­ściej dwie spośród wielu znanych metod przetwarzania napięcia na odpowiadającą mu miarę liczbową [3]:

1) metodę sukcesywnej aproksymacji SAR (ang. successive approximation),

2) metodę jednozboczowego ładowania pojemności SS (ang. single-slope A/D).

Częściej stosowana jest metoda SAR, która nie wymaga dołączania do mikrokon­trolera zewnętrznych elementów dyskretnych i jest łatwiejsza przy programowaniu ob­sługi przetwornika. Zaletą metody SAR jest ponadto stosunkowo krótki czas konwersji, równy zwykle od 10 do 16 cykli zegara w przypadku konwerterów 8-bitowych. Realiza­cja przetworników SAR o większej rozdzielczości napotyka jednak trudności, dlatego w praktyce rozdzielczość przetworników SAR wbudowywanych do mikrokontrolerów nie przekracza 10 bitów. Metoda SS wymaga z kolei stosowania dołączanego z zewnątrz kondensatora, co jest jej oczywistą wadą. Zapewnia jednak stosunkowo prostą realizację przetworników o większej rozdzielczości, na przykład 12- lub nawet 16-bitowej. Czas przetwarzania jest jednak dłuższy niż w przypadku metody SAR.

METODY KONWERSJI ANALOGOWO-CYFROWEJ

Przetwornik SAR składa się z układu próbkująco-pamiętającego (ang. sample-and-hold), komparatora, rejestru aproksymacyjnego i układu sterowania realizującego algo­rytm SAR (rys. 3.23). W rzeczywistych układach stosuje się zazwyczaj kilka (bądź nawet kilkanaście) kanałów przetwarzania A/C, multiplekser kanałów, źródło napięcia odniesienia i niekiedy oddzielny układ zasilania części analogowej w celu wyeliminowa­nia zakłóceń.

0x08 graphic
Rysunek 3.23. Uproszczony schemat blokowy przetwornika A/C pracującego na zasadzie sukcesywnej aproksymacji. [3]

Cykl konwersji w układzie SAR zaczyna się od pobrania próbki mierzonego napię­cia wejściowego i zapamiętania jej w pojemności C. Rejestr aproksymacyjny jest zazwy­czaj inicjowany w taki sposób, że ma ustawiony najbardziej znaczący bit, a pozostałe bity wyzerowane. Zawartość rejestru reprezentuje zatem napięcie równe połowie maksymal­nego napięcia (zakresu pomiarowego). Wartość ta jest zamieniana przez przetwornik C/A na napięcie i porównywana z napięciem mierzonym. W zależności od wyniku po­równania układ sterowania pozostawia najbardziej znaczący bit rejestru niezmieniony albo go neguje. Pierwszy przypadek ma miejsce wtedy, gdy napięcie mierzone jest więk­sze od połowy napięcia maksymalnego, drugi natomiast - gdy jest mniejsze. Po określe­niu wartości najbardziej znaczącego bitu rejestru aproksymacyjnego układ SAR ustawia w rejestrze kolejny bit i powtarza opisaną wyżej procedurę. Przy n-bitowym rejestrze aproksymacyjnym układ określa jego ostateczną zawartość po n cyklach.

3.6.3. Przetworniki cyfrowo-analogowe typu PWM

Niektóre z mikrokontrolerów wyposażone są w jedno lub dwa wyjścia typu PWM o progra­mowanej częstotliwości powtarzania i wypełnienia generowanych przebiegów (szerokości wytwarzanych impulsów).

Realizacja przetwornika cyfrowo-analogowego w oparciu o wyjście typu PWM polega na przepuszczeniu generowanego przebiegu przez filtr dolnoprzepustowy RC o stałej czasowej dużo mniejszej od okresu powtarzania impulsów (rys. 3.26). W ten sposób na wyjściu filtru uzyskuje się napięcie proporcjonalne do wypełnienia wytwarzanego przebiegu (rys. 3.27).

0x08 graphic

Rysunek 3.25. Układ modulacji szerokości impulsu (PWM) pracujący jako przetwornik C/A. [1]

0x08 graphic

Rysunek 3.26. Zależność zmiennego wypełnienia impulsu oraz wartość prądu na wyjściu filtru w funkcji czasu. [8]

3.7. Zegar systemowy - cykl rozkazowy

Generator sygnału zegarowego

Wszystkie mikrokontrolery rodziny 51 posiadają wbudowany generator sygnału zegarowego, który może być wykorzystany jako źródło sygnału taktującego mikrokontroler. W tym celu do wyprowadzeń XTAL1 i XTAL2 mikrokontrolera wystarczy podłączyć rezonator kwarcowy lub ceramiczny oraz dwa kondensatory (rys. 3.27). Wartość pojemności kondensatorów jest niekrytyczna - zwykle stosuje się wartości rzędu 20-40 pF. Omawiany układ generatora sygnału zegarowego powoduje wzbudzenie rezonatora na jego podstawowej częstotliwości rezonansu [9].

0x08 graphic
Rysunek 3.27. Zalecany układ generatora z rezonatorem kwarcowym lub ceramicznym. [9]

Innym rozwiązaniem jest użycie scalonego kwarcowego generatora częstotliwości. Wykorzystanie takiego generatora jest możliwe, ponieważ mikrokontrolery rodziny `51 mogą być także taktowane sygnałem zewnętrznym. W przypadku taktowania mikrokon­trolera sygnałem zewnętrznym pojawiają się jednak między producentami pewne rozbieżności co do wykorzystania wyprowadzeń XTAL1 i XTAL2 oraz parametrów sygnału taktującego.

    1. Inicjowanie systemu - RESET

Wszystkie mikrokontrolery rodziny 51 posiadają specjalne wyprowadzenie służące do zerowania mikrokontrolera. Zerowanie polega na wykonaniu przez mikro­kontroler szeregu operacji, wskutek których znaczna część wewnętrznych rejestrów przybiera standardowe wartości. Dzięki temu początkowe warunki pracy mikro­kontrolera po jego wyzerowaniu są zawsze jednakowe.

Operacja zerowania trwa dwa cykle maszynowe i jest wykonywana w odpo­wiedzi na aktywny sygnał zerowania na wyprowadzeniu RESET (oznaczanym też czasami symbolem RST).

Po włączeniu zasilania zawartość zarówno wewnętrznej pamięci RAM, jak i rejestrów mikrokontrolera jest nieokreślona [9]. Z tego względu zerowanie mikro­kontrolera po włączeniu napięcia zasilania jest warunkiem koniecznym prawidłowej pracy mikrokontrolera. W przypadku mikrokontrolerów rodziny 51 realizacja automatycznego zerowania mikrokontrolera w wyniku załączenia napięcia zasilania jest niezwykle prosta i polega na podłączeniu kondensatora na wyprowadzenie RESET (rys. 3.30). Wartość stosowanego kondensatora wynosi zwykle kilka mikrofaradów. Wybór okładki kondensatora podłączanej na wyprowadzenie RESET (z racji znacznej pojemności jest to zwykle kondensator elektrolityczny) zależy od aktywnego poziomu sygnału zerującego, który nie jest niestety jednakowy dla wszystkich mikrokontrolerów rodziny 51.

0x08 graphic

Rysunek 3.30. Realizowany przy użyciu pojedynczego kondensatora, układ automatycz­nego zerowania po załączeniu zasilania, dla mikrokontrolerów zerowa­nych poziomem wysokim (np. C51) i poziomem niskim (np. C517). [9]

3.9. Budowa wewnętrzna, rozmieszczenie wyprowadzeń

Rodzina mikrokontrolerów x51 jest jedną z najbardziej popularnych rodzin mikrokon­trolerów 8-bitowych ogólnego przeznaczenia. Mikrokontrolery x51 są zbudo­wane z wykorzy­staniem zmodyfikowanej architektury typu Harvard, zgodnie z ogólnym schematem blokowym przedstawionym na rysunku 3.31 [3].

0x08 graphic
Rysunek 3.31. Schemat blokowy mikrokontrolerów rodziny x51. [3, 4]

Mikrokontrolery x51 są produkowane w niemal wszystkich rodzajach obudów. Najbar­dziej popularne są układy w obudowach PLCC-44. Oznaczenia symboliczne i funkcje wyprowadzeń przedstawiono na rysunku 3.32.

0x08 graphic

Rysunek 3.32. Wyprowadzenia i ich symbole w podstawowej wersji mikrokontrolera 80C51. [3]

BIBLIOGRAFIA

  1. Dyrcz K. P. - praca zbiorowa; Podstawy techniki mikroprocesorowej; Oficyna Wydawnicza Politechniki Wrocławskiej; Wrocław 1999.

  1. Pełka R.; Mikrokontrolery architektura programowanie zastosowania; Wydawni­ctwa Komunikacji i Łączności; Warszawa 1999.

  1. Philips Semiconductors - materiały firmowe; 80C51 family hardware description; 01.12.1997

  1. Rudnicki C.; Radioelektronik Audio-HiFi-Video 9/2000.

  1. Rydzewski A.; Mikrokomputery jednoukładowe rodziny MCS-51; Wydawnictwa Naukowo-Techniczne; Wydanie trzecie; Warszawa 1992, 1995.

  1. Scheibert K. / Seth M. / Hollmann A.; Generating sinusoidal three-phase currents with the CCU of C504; Siemens - Semiconductor Group 06/1997.

  1. Starecki T.; Mikrokontrolery jednoukładowe rodziny 51; "NOZOMI"; Warszawa 1996.

  1. „Elektronika inaczej - pamięci półprzewodnikowe”; Elektronik Praktyczny 2/1999.

1

23

a) b)

0x01 graphic
0x01 graphic

Rysunek 3.5. a) Pamięć matrycowa b) Matryca pamięci. [10]



Wyszukiwarka

Podobne podstrony:
5 Materiały pomocnicze architektura mikrokontrolera' (2)
materiały pomocnicze architektura mikrokontrolera
III ROK ARCH projektowanie architektury PRZEMYSŁOWEJ, Zakład produkcji mebli, Materiały pomocnicze
Materialy pomocnicze prezentacja maturalna
Materialy pomocnicze do cwiczen Statystyka cz I
obciazenia wiatr snieg materiały pomocnicze z budownictwa ogólnego
Materiał pomocniczy, Szkoła, wypracowania, ściągi
sciaga z ESP, Uczelnia, Technologia budowy maszyn, Materiały pomocnicze
Materiały pomocne przy nauce podsumowanie powyższych wykładów wersja mini
Materialy pomocnicze cardan AG Nieznany
Materialy pomocnicze 4 id 28534 Nieznany
Ciania PKM, Materiały pomocnicze do projektowania
Kruszarka Jednowalcowa, Uczelnia, Technologia budowy maszyn, Materiały pomocnicze
A.Materiały pomocnicze, BMR, Broń Jądrowa
Motyw dziecka, Materiały pomocnicze, Motywy literackie
Materialy, MBM PWR, Materiałoznawstwo, Materiały pomocnicze
cwiczenie nr 1 materialy pomocn Nieznany

więcej podobnych podstron