Mikrokontrolery w systemach pomiarowo sterujących
Mikrokontrolery czyli o czym to będzie... Mikrokontroler to cały komputer w kawałku krzemu, zoptymalizowany pod kątem sterowania różnorakimi urządzeniami. Typowy mikrokontroler zawiera praktycznie wszystko, co mu jest potrzebne do pracy - tym różni się od zwykłego mikroprocesora.
Mikrokontrolery Mikrokontroler nie jest... wolny niektóre mikrokontrolery osiągają częstotliwości w zakresie GHz; prosty oprócz znanych ze zwykłej techniki mikroprocesorowej składników mikrokontrolery mogą zawierać na przykład przetworniki A/C i C/A, modemy radiowe, kompletne podsystemy sieciowe, kontrolery zasilania... tani a przynajmniej nie zawsze jest tani... zawodny mikrokontrolery są projektowane tak, by odznaczać się niezawodnością;
Standardowa architektura mikrokontrolera
Jednostka centralna * Jednostka centralna (zwana też procesorem rdzeniowym, rdzeniem, procesorem lub układem wykonawczym) cyklicznie wykonuje instrukcje zawarte w programie mikrokontrolera. * Lista instrukcji dla danego mikrokontrolera jest z góry określona. * Jednostka centralna jest synchronicznym i sekwencyjnym układem cyfrowym.
Podział mikroprocesorów Ze względu na mapy pamięci * architektura harwardzka * architektura Von Neumanna Ze względu na typ listy instrukcji * RISC (Reduced Instruction Set Computer) o zredukowanej liczbie instrukcji * CISC (Complex Instruction Set Computer) z rozbudowaną liczbą instrukcji
Podział mikroprocesorów Architektura harwardzka charakteryzuje się zastosowaniem oddzielnych szyn dla danych i programu. * Magistrale danych i adresów mogą mieć różną szerokość (długość słowa)
Podział mikroprocesorów Architektura Von Neumanna cechuje się jednolitą przestrzenią adresową. Mapa pamięci układu serii ST7 (ST72215G)
Podstawowe układy pamięci mikrokontrolera Zawartość pamięci nie zanika wraz z wyłączeniem zasilania Z pamięci można czytać, ale nie można do niej zapisywać danych. Umieszczenie danych wymaga specjalnego procesu programowania. * ROM (Read Only Memory) programowanie następuje w procesie produkcyjnym mikrokontrolera. * EPROM (Erasable Programmable ROM) można kasować dotychczasową zawartość promieniowaniem UV i programować za pomocą specjalnego urządzenia. * OTP (One Time Programmable) można jednorazowo programować za pomocą specjalnego urządzenia. * FLASH (Bulk Erasable Non Volatile Memory) możliwe jest wielokrotne elektryczne wymazanie zawartości i programowanie, często bezpośrednio w systemie (ISP In System Programmable)
Podstawowe układy pamięci mikrokontrolera Zawartość pamięci nie zanika wraz z wyłączeniem zasilania Z pamięci można zarówno czytać, jak i pisać do niej dane. Często tworzy się specjalne konstrukcje podtrzymujące jej zawartość przy wyłączeniu zasilania urządzenia. * SRAM (Static Random Access Memory) pamięci RAM statyczne. Krótkie czasy dostępu, proste w obsłudze przez CPU, drogie. * DRAM (Dynamic Random Access Memory) wymagają przeprowadzania w określonych odstępach czasu pewnych operacji na pamięci (odświeżanie), w przeciwnym wypadku dane zanikają. Charakteryzują się dużymi pojemnościami, są tanie.
Architektura mikrokontrolera X51
Architektura mikrokontrolera X51 8 bitowy procesor optymalizowany pod kątem sterowania rozbudowane operacje logiczne (również bitowe) 64 kb przestrzeni adresowej programu 64 kb przestrzeni adresowej danych 128 B wewnętrznej pamięci RAM dwa 16 bitowe liczniki/zegary dwukierunkowy UART 6 źródeł przerwań z 5 pozycyjnym wektorem i priorytetami wewnętrzny zegar systemowy
Architektura mikrokontrolera X51
Architektura mikrokontrolera X51 (wyprowadzenia)
Architektura mikrokontrolera X51 (obszary adresowe) Pamięć programu Pamięć RAM
8051 Pamięć programu Po uruchomieniu procesora wykonywanie programu rozpoczyna się od adresu 0000h Adres ma długość 16 bitów. Zatem 8051 może zaadresować 216 = 64k słów programu. Każde słowo ma długość jednego bajtu. CPU może wykonywać instrukcje jedynie z pamięci programu.
Lista rozkazów Lista rozkazów (instrukcji) to zestaw wszystkich rozkazów, które jest w stanie wykonać dany procesor.. Każdy procesor ma własną listę rozkazów. Rozkazy możemy podzielić na zasadnicze grupy: Arytmetyczno logiczne Przesłania danych Przeniesienia sterowania Testowania i porównania (w zasadzie nieobecne w 8051) Wejścia wyjścia (tylko niektóre procesory; 8051 ich nie ma) Inne Niektóre procesory (szczególnie RISC) mają rozkazy o ujednoliconej długości, inne (w tym 8051) nie.
Kodowanie rozkazów Rozkaz zawiera informację jaką operację wykonać, operandy (jeżeli są). przeznaczenie wyniku (jeżeli jest) Część rozkazu zawierająca informację o operacji nazywa się często kodem instrukcji (rozkazu) albo opcode Operand może być wartością natychmiastową, adresem pamięci lub rejestrem. Przeznaczeniem może być adres pamięci lub rejestr. Rozkaz procesora 8051 może mieć długość 1, 2 lub 3 bajtów
Lista rozkazów 8051 ACALL addr11 ADD A,<src> ADDC A,<src> AJMP addr11 ANL <dest>,<src> ANL C,<bit> CJNE <dest>,<src>,rel8 CLR A CLR bit CPL A CPL bit DA A DEC <byte> DIV AB DJNZ <byte>,<rel8> INC <byte> INC DPTR JB bit,rel8 JBC bit,rel8 JC rel8 JMP @A+DPTR JNB bit,rel8 JNC rel8 JNZ rel8 JZ rel8 LCALL addr16 LJMP addr16 MOV <dest>,<src> MOV DPTR,#data16 MOV bit,bit MOVC A,@A+<base> MOVX <dest>,<src> MUL AB NOP ORL <dest>,<src> ORL C,bit POP direct PUSH direct RET RETI RL A RLC A RR A RRC A SETB bit SJMP rel8 SUBB A,<src> SWAP A XCH A,<byte> XCHD A,@Ri XRL <dest>,<src>
Zwiększanie liczby wejść i wyjść Zdarza się, że liczba wyprowadzeń portów mikrokontrolera nie wystarcza do naszego zastosowania musimy wtedy odpowiednio zwiększyć ich liczbę. Mamy do dyspozycji: Standardowe układy cyfrowe (na przykład CMOS lub TTL) Specjalizowane układy rozszerzeń łączone z szyną procesora Układy łączone poprzez specjalny interface szeregowy (I2C, SPI, 1 Wire)
Lokalne interfejsy szeregowe Umożliwiają... połączenie sporej liczby układów peryferyjnych... przy niewielkiej liczbie użytych linii sterujących... przy małej liczbie dodatkowych elementów... zwykle nie potrzebują miejsca w przestrzeni adresowej Mają też wady... niezbędny specjalizowany hardware... albo skomplikowane (i wolno działające) oprogramowanie... ograniczoną prędkość transmisji danych
Lokalne interfejsy szeregowe Najczęściej spotyka się interfejsy I2C Inter Integrated Circuits... opracowany przez firmę Philips SMBus System Management Bus... podobny do I2C, utworzony przez firmę Intel SPI Serial Peripherial Interface... opracowany przez firmę Motorola Microwire... podobny do SPI 1 Wire... opracowany przez firmę Dallas (aktualnie Maxim)
Lokalny interfejs szeregowy I2C Zawiera dwie dwukierunkowe linie typu otwarty kolektor:... SDA (linia danych)... SCL (linia zegara) Transmisja jest synchroniczna... z prędkością maksymalną 3.4Mb/s (typowo 100 kb/s)... w trybie master slave (master steruje transmisją za pomocą SCL) Każdy układ slave ma swój unikalny identyfikator
Lokalny interfejs szeregowy I2C Zwykle system zbudowany jest z jednego mikrokontrolera... pracującego jako master... oraz szeregu układów slave Możliwe są jedna bardziej skomplikowane konfiguracje Każdy z układów slave ma adres unikalny dla typu układów... sprzętowo ustalany przez producenta... jednakoż użytkownik ma zwykle możliwość wpływu na część adresu... za pomocą wyprowadzeń układu scalonego
Lokalny interfejs szeregowy I2C W przykładzie obok... połączono dwa przetworniki C/A... firmy Maxim
Lokalny interfejs szeregowy I2C Dane przesyłane są sformatowane w ramki o długości jednego bajtu Po każdym bajcie następuje potwierdzenie jego odbioru (ACK) Bajty przesyłane są od bardziej znaczących Transmisją danych steruje układ master za pomocą linii zegara SCL Odbiornik może chwilowo wstrzymać nadawanie... wymuszając stan niski na linii SCL Każdą transmisję rozpoczyna sekwencja START, a kończy STOP
Lokalny interfejs szeregowy I2C Parametry czasowe:... transmisja może odbywać się dowolnie wolno Maksymalna prędkość transmisji... w trybie standard wynosi 100 kb/s... w trybie szybkim 400 kb/s... w trybie high speed 3.4 Mb/s W trybie standard pracują wszystkie układy... w trybie szybkim tylko niektóre... w trybie high speed bardzo nieliczne
Lokalny interfejs szeregowy I2 C Przykład sterownika wyświetlacza LED i klawiatury
Lokalny interfejs szeregowy I2 C System procesora telewizyjnego SAA56XX firmy Philips
Lokalny interfejs szeregowy I2C Szeregowe układy pamięci
Lokalny interfejs szeregowy SMBus Jest uproszczeniem interfejsu I2C... wprowadza dolny limit czasu operacji (25 ms)... minimalną częstotliwość zegara (10 khz)... pracuje z maksymalną częstotliwością zegara 100 khz... istnieje jeszcze parę mało istotnych różnic Wprowadza też dodatkowe funkcje (alarm, general call) W praktyce układy z oboma interfejsami dają się łączyć jednocześnie
Lokalny interfejs szeregowy SPI Jest to interfejs czteroprzewodowy, synchroniczny Jeden z układów (zwykle mikrokontroler) pełni rolę master... sterując transmisją Gwarantowana prędkość transmisji wynosi 2.1 Mb/s Układy nie mają unikalnych identyfikatorów... ale dodatkowe wejście wyboru (SS)... stan niski na tym wejściu wybiera aktywny układ slave
Lokalny interfejs szeregowy SPI Teoretycznie nie ma ograniczeń na liczbę układów W praktyce ograniczeniem jest suma pojemności montażowych... ograniczająca prędkość transmisji
Lokalny interfejs szeregowy SPI Co prawda SPI... jest prostszy niż I2C... ma za to cztery tryby pracy... różniące się zboczem zegara, na którym jest próbkowane wejście... oraz ustawiane wyjście Na szczęście mikrokontrolery radzą sobie ze wszystkimi trybami
Lokalny interfejs szeregowy SPI Przykład odczytu bajtowej danej z pamięci EEProm z interfejsem SPI... (X5323 firmy Xicor)
Lokalny interfejs szeregowy SPI Realizacja programowa interfejsu SPI jest prostsza niż I2C Zestaw istniejących układów jest również obfity... choć mniej jest układów specjalizowanych (na przykład TV) Wykorzystując rozszerzony interfejs SPI... firma Atmel stworzyła standard programowania procesora... ISP (In System Programming)
Lokalny interfejs szeregowy Microwire Został opracowany w firmie National Semiconductor Jest praktycznie identyczny z SPI pracującym w trybie 0 Masterem jest zawsze mikrokontroler (nie ma on lini SS)... interface jest więc w zasadzie trójprzewodowy Jest popularny
Lokalny interfejs szeregowy 1 Wire Został opracowany w firmie Dallas (aktualnie Maxim) Używa jednego przewodu do transmisji w obie strony... oraz opcjonalnie zasilania układów (!)... linia jest sterowana przez wyjścia z otwartym kolektorem Transmisja ma prędkość do 16.3kb/s (standard)... lub 115.2 kb/s (overdrive) Do pojedynczej linii można dołączyć wiele układów Każdy układ (egzemplarz!) ma swój unikalny identyfikator... do ich identyfikacji służy specjalna procedura wyszukiwania... przeprowadzana przez kontroler,... który zawsze pełni rolę nadrzędną (master)
Lokalny interfejs szeregowy 1 Wire W stanie spoczynkowym linia znajduje się na wysokim poziomie Każdy impuls niskiego poziomu o czasie dłuższym niż 480 us... jest traktowany jako reset... po którym układy slave... zgłaszają swoją obecność Następnie układ master... przeprowadza przeszukiwanie... identyfikując układy slave
Lokalny interfejs szeregowy 1 Wire Zapis przez mastera bitu 1 do rejestru wejściowego slave
Lokalny interfejs szeregowy 1 Wire Zapis przez mastera bitu 0 do rejestru wejściowego slave
Lokalny interfejs szeregowy 1 Wire Odczyt przez mastera bitu ze slave
Lokalny interfejs szeregowy 1 Wire Do budowy interface 1 Wire można wykorzystać dwa bity we/wy
Lokalny interfejs szeregowy 1 Wire 1 Wire to niewątpliwie interfejs bardzo ciekawy... i bardzo zaawansowany technologicznie Choć układy produkuje praktycznie jedna firma Maxim/Dallas... to są wśród nich różne propozycje o uniwersalnym zastosowaniu... niestety, nie są tanie Algorytm wyszukiwania układów jest skomplikowany... lecz producent dostarcza źródła gotowych procedur Interfejs nadaje się do budowy sporych sieci czujników pomiarowych
Lokalny interfejs szeregowy 1 Wire ibutton Interfejs 1 Wire jest również wykorzystywany w elementach ibutton Są to układy zamknięte w obudowach stalowych... i bardzo odporne na wpływy zewnętrzne Na przykład pamięci (również z szyfrowanym dostępem)... mogą być wykorzystywane w szeroko pojętym security Istnieją również autonomiczne (z własnym zasilaniem)... układy pomiarowe mierzące temperaturę i wilgotność... i magazynujące zmierzone wielkości