Hardware mikrokontrolera X51 Ryszard J. Barczyński, 2016 Politechnika Gdańska, Wydział FTiMS, Katedra Fizyki Ciała Stałego Materiały dydaktyczne do użytku wewnętrznego
Hardware mikrokontrolera X51 (zegar) Mikrokontroler zawiera wewnętrzne układy zegara systemowego Jeden cykl maszynowy trwa zwykle 12 okresów zegara Są odmiany procesora wykonujące cykl w ciągu 1..2..3..4..6 okresów... Wtedy zwykle możliwe jest przełączanie prędkości (dodatkowy SFR) Klasyczna maksymalna częstotliwość zegara wynosi 12 Mhz...... lecz współczesne wersje są często dużo szybsze
Hardware mikrokontrolera X51 (porty równoległe) Mikrokontroler zawiera cztery ośmiobitowe porty równoległe P0..P3. Porty są dwukierunkowe. Dostęp do portów następuje poprzez odczyt/zapis odpowiednich SFR. Czytanie z portu jest możliwe po uprzednim zapisie jedynki. Porty P0 i P2 są używane także do dostępu do pamięci zewnętrznej. W takim wypadku praktycznie nie da się ich używać w innym celu.
(połączenie pamięci zewnętrznej)
(porty równoległe) W niektórych wersjach mikrokontrolerów porty mają wyrafinowane charakterystyki elektryczne. Możliwy jest odczyt i zapis portu jedną instrukcją. Warto się zastanowić jakie będą skutki wykonania takiej instrukcji. Czytają one zatrzask portu, a nie linię wejściową! Struktura portu P1 (najprostszego)
(liczniki) Mikrokontrolery x51 zawierają dwa 16 bitowe uniwersalne liczniki, T0 i T1, które mogą być indywidualnie zaprogramowane jako zegary lub liczniki zdarzeń. Przy pracy jako zegary zliczają pewien okres czasu (a właściwie pewną liczbę okresów zegara systemowego), a następnie generują przerwanie. Przy pracy jako liczniki odliczają określoną liczbę opadających zboczy sygnału na wejściu, a następnie generują przerwanie.
(liczniki) W podstawowym 16 bitowym trybie pracy rejestry liczników TLx i THx są połączone kaskadowo. Ustawienie bitu TRx uruchamia licznik poprzez przyłączenia źródła sygnału na wejście TLx. Przepełnienie TLx powoduje inkrementowanie THx. Przepełnienie THx powoduje ustawienie wskaźnika TFx i ewentualne wygenerowanie przerwania. Rejestry THx i TLx mogą być pisanie i czytane, ale na okres trwania tej operacji trzeba wyzerować TRx, w przeciwnym wypadku rezultaty mogą być nieokreślone. Bit C/Tx wybiera źródło sygnału dla licznika. Gdy jest równy 0 będzie to zegar systemowy podzielony przez 12. Równy 1 wybierze wejście zewnętrzne.
(liczniki tryb pracy 0) Tryb pracy 0 (określony przez bity M0x i M1x) oznacza licznik ośmiobitowy THx poprzedzony preskalerem modulo 32 zrealizowanym na niższych pięciu bitach rejestru TLx.
(liczniki tryb pracy 1) Tryb pracy 1 (określony przez bity M0x i M1x) jest podobny do trybu 0, ale jest 16 bitowy i używa pełnego rejestru TLx.
(liczniki tryb pracy 2) Tryb pracy 2 (określony przez bity M0x i M1x) jest trybem ośmiobitowym. Rolę licznika pełni rejestr TLx, automatycznie ładowany przy przepełnieniu zawartością rejestru THx.
(liczniki tryb pracy 3) Tryb pracy 3 (określony przez bity M0x i M1x) konfiguruje T0 jako dwa liczniki ośmiobitowe. Drugi licznik może przy tym pełnić tylko rolę zegara. Licznik T1 jest w tym trybie zatrzymany.
(port szeregowy) Port szeregowy może pracować w trybie synchronicznym (tryb 0)... lub dupleksowym asynchronicznym (tryby 1, 2 i 3). Dane odbierane posiadają jednopoziomowy bufor. Dane wysyła się i odbiera za pomocą rejestru SBUF. Zapis bajtu do SBUF powoduje jego wysłanie. Bajt odebrany jest dostępny poprzez odczyt rejestru SBUF.
(port szeregowy tryb 0) Dane są nadawane i odbierane przez linię RxD. Linia TxD nadaje przebieg zegara taktującego transmisję. Kierunek transmisji określa rejestr SCON. 8 bitów danych jest nadawanych/odbieranych w poczynając od LSB. Prędkość jest stała, równa 1/12 zegara systemowego.
(port szeregowy tryb 0) Nadawanie Odbieranie
(port szeregowy tryb 1) 10 bitów jest nadawanych przez TxD (lub odbieranych przez RxD). Są to: bit startu (logiczne 0), osiem bitów danych i bit stopu (logiczna 1). Przy odbiorze bit stopu trafia do RB8 w rejestrze SCON Prędkość transmisji jest określona przez licznik T1
(port szeregowy tryb 1) Nadawanie Odbieranie
(port szeregowy tryb 2) 11 bitów jest nadawanych przez TxD (lub odbieranych przez RxD). Są to: bit startu (logiczne 0), dziewięć bitów danych i bit stopu (logiczna 1). Dziewiąty bit znajduje się na pozycjach TB8/RB8 w rejestrze SCON. Bit stopu jest ignorowany. Prędkość transmisji wynosi 1/32 lub 1/64 zegara systemowego.
(port szeregowy tryb 2) Nadawanie Odbieranie
(port szeregowy tryb 3) 11 bitów jest nadawanych przez TxD (lub odbieranych przez RxD). Są to: bit startu (logiczne 0), dziewięć bitów danych i bit stopu (logiczna 1). Dziewiąty bit znajduje się na pozycjach TB8/RB8 w rejestrze SCON. Bit stopu jest ignorowany. Prędkość transmisji jest programowana za pomocą licznika T1.
(port szeregowy programowanie prędkości) W trybach 1 i 3 prędkość portu szeregowego jest programowana licznikiem T1. Prędkość wynosi V=(2^(SMOD) / 32)*(1/(okres T1) Najczęściej używa się T1 w trybie 2 automatycznie przeładowywanego timera. Wtedy V=(2^(SMOD) / 32) * (Fosc / (12*(265 TH1))) Warto dobrać rozsądną częstotliwość kwarcu oscylatora...
(port szeregowy programowanie prędkości)
(port szeregowy uwagi na marginesie) Współczesne wersje μc 8051 mają często porty szeregowe o jeszcze bardziej złożonej strukturze... Są wersje X51 umożliwiające osobne definiowanie prędkości TxD i RxD. Niektóre wersje X51 umożliwiają automatyczne wykrywanie adresu. Często kontrolery X51 zawierają wiele portów szeregowych. Porty szeregowe miewają wiele wyrafinowanych możliwości...
(przerwania) Przerwanie jest automatycznym wywołaniem specjalnej procedury. Procedura ta jest umieszczona pod odpowiednim, stałym adresem. Obsługa przerwania kończy się specjalnym rozkazem RETI. Procedura przerwania musi zadbać o zachowanie używanych zasobów. Często używa się do tego celu alternatywnych banków rejestrów.
(przerwania)
(przerwania zgłoszone jednocześnie) W przypadku jednoczesnego zgłoszenia przerwań pierwsze obsługiwane jest... przerwanie o wyższym priorytecie... w ramach jednego priorytetu:
(generacja przerwania) Przerwanie wygeneruje wywołanie procedury obsługi (LCALL) gdy NIE jest wykonywana procedura obsługi o jednakowym lub wyższym priorytecie, wykonywana instrukcja RETI, wykonywany dostęp do rejestru EI lub IP. Przerwanie niekiedy czyści flagi, które je wygenerowały: nie są czyszczone flagi portu szeregowego. flagi przerwań zewnętrznych są czyszczone gdy aktywowane są zboczem.
(generacja przerwania) Wygenerowany przez przerwanie rozkaz wywołania (LCALL)... zachowuje na stosie aktualny licznik programu (dwa bajty)... przekazuje sterowanie pod odpowiedni adres wektora przerwań. Rozkaz RETI... odtwarza licznik programu... informuje o zakończeniu obsługi. Przerwanie IE0 TF0 IE1 TF1 RI oraz TI Adres wektora 0003h 000Bh 0013h 001Bh 0023h
(kontrola zasilania)
(kontrola zasilania) By wejść w tryb idle lub power down należy - wpisać jedynkę na odpowiedniej pozycji rejestru PCON Wyjście z trybu idle jest możliwe poprzez przerwanie lub reset Wyjście z trybu power down jest możliwe tylko przez reset