MIKROKONTROLER€C552


    1. MIKROKONTROLER 80C552

Oprócz standardowych zasobów kontrolera 8051, układ 80C552 zawiera w sobie dodatkowe elementy takie jak: interfejs I2C, dodatkowe 128 bajtów pamięci danych, dwa dodatkowe porty wejścia - wyjścia, 10 - bitowy przetwornik A/C posiadający 8 wejść analogowych, dwa przetworniki C/A.

Schemat blokowy budowy wewnętrznej mikrokontrolera 80C552 został przedstawiony na rys. 1.

0x01 graphic

Rys. 1. Schemat blokowy mikrokontrolera 80C552

      1. Pamięć danych i pamięć programu

Mikrokontroler 80C552 oprócz wszystkich właściwości pamięci 8051 posiada dodatkowe 128 bajtów wewnętrznej pamięci danych umieszczone pod adresami 128-255 (80H- 0FFH). Podobnie jak w mikrokontrolerze 8051 blok rejestrów specjalnych SFR może być adresowany jedynie bezpośrednio, natomiast dodatkowe 128 bajtów pamięci mikrokontrolera 80C552 może być adresowane jedynie indeksowo przy użyciu rejestrów R0 i R1. Na podstawie sposobu adresowania mikrokontroler jest w stanie stwierdzić, czy dane odwołanie tyczy się bloku rejestrów specjalnych, czy dodatkowej pamięci danych.

Podstawową cechą różniącą mikrokontroler 80C552 od 8051 jest to, że posiada on nie 4kB, a 8kB wewnętrznej pamięci programu. Zasada współpracy z pamięcią wewnętrzną i zewnętrzną nie uległa zmianie w stosunku do 8051. W związku z rozbudowanymi zasobami mikrokontrolera 80C552 zwiększeniu uległ obszar pamięci przeznaczony na procedury obsługi przerwania.

      1. Układy transmisji szeregowej

Mikrokontroler 80C552 posiada układ transmisji szeregowej identyczny jak w mikrokontrolerze 8051. Zmienione zostały tylko oznaczenia rejestrów sterujących: zamiast SBUF układ '552 posiada rejestr S0BUF - 99h, natomiast zamiast SCON posiada S0CON - 98h, ale funkcje obu rejestrów pozostają bez zmian.

Zmiana nazw rejestrów związana jest z obecnością w układzie '552 drugiego układu transmisji szeregowej. Układ ten jest układem wyspecjalizowanym tylko do obsługi transmisji zachodzącej w standardzie I2C.

        1. Cechy interfejsu I2C

Magistrala tego interfejsu składa się z dwóch dwukierunkowych linii: pierwszej dla sygnału danych - SDA (Serial Data Adress) oraz drugiej dla sygnału zegarowego - SCL (Serial Clock Line). Magistrala umożliwia przesyłanie danych pomiędzy dwoma dowolnymi urządzeniami zgodnie ze zdefiniowanym protokołem :

Każda transmisja inicjowana jest poprzez wystÄ…pienie warunku start i koÅ„czona poprzez wystÄ…pienie warunku stop. Ilość bitów transmitowanych pomiÄ™dzy warunkami nie jest limitowana. Każde z urzÄ…dzeÅ„ rozpoznawane jest przez unikalny adres przesyÅ‚any na poczÄ…tku transmisji. Osiem bitów reprezentuje adres urzÄ…dzenia slave, natomiast najmniej znaczÄ…cy bit (LSB) okreÅ›la kierunek transmisji. Wszystkie urzÄ…dzenia po wykryciu warunku „start” porównujÄ… odebrany adres ze swoim adresem sprzÄ™towym i jeżeli jest on zgodny adresujÄ… siÄ™ jako odbiornik lub nadajnik. UrzÄ…dzenia majÄ… oprócz funkcji nadajników i odbiorników przypisane statusy typu master i slave. MASTER to urzÄ…dzenie, które inicjuje i prowadzi transmisjÄ™ danych generujÄ…c sygnaÅ‚y zegarowe. SLAVE to dowolne poprawnie zaadresowane urzÄ…dzenie.

Możliwe są trzy formaty transmisji :

W trzecim formacie przed każdą zmianą kierunku transmisji musi być generowany sygnał start, adres urządzenia slave oraz nowa wartość bitu kierunku. Interfejs dopuszcza możliwość przyłączenia do magistrali kilku urządzeń o statusie master. Aby uniknąć kolizji (obecność kilku urządzeń sterujących sygnałami na magistrali) w systemie I2C problem ten rozwiązano stosując arbitraż. Arbitraż oparty na zasadzie kontroli zgodności stanu linii SDA z wartością logiczną bitu wyprowadzonego przez dane urządzenie. Odczyty stanu linii SDA odbywają się w ściśle określonych momentach wyznaczonych sygnałem zegarowym. Jeżeli dwa lub więcej urządzeń stara się wysłać jednocześnie dane na magistralę, to pierwsze które wyśle jedynkę, utraci kontrolę nad łączem. Przedstawione rozwiązanie preferuje urządzenie, które w trakcie arbitrażu wysyła najniższą wartość binarną.

Sygnał zegarowy na magistrali generowany jest zawsze przez urządzenie master, nawet gdy urządzenie to odbiera dane. Jedynym przypadkiem gdy inne urządzenia ingerują w przebieg sygnału zegarowego jest proces arbitrażu oraz przypadek, gdy wolne urządzenie odbiorcze chce obniżyć szybkość transmisji wymuszając niski poziom na linii SCL.

Standardowa szybkość transmisji wynosi 100kbps adresując do 128 urządzeń. Możliwa jest również praca w trybie szybkim, z szybkością 400kbps i zaadresowanie 1024 urządzeń. Liczba układów dołączonych do magistrali zależy jedynie od dopuszczalnej pojemności magistrali - 400pF.

        1. Interfejs I2C mikrokontrolera 80C552

Interfejs I2C mikrokontrolera 80C552 może pracować zarówno w trybie urządzenia nadrzędnego jak i podrzędnego, gwarantując pracę z szybkością transmisji do 100kbod. Do sterowania interfejsem służą następujące rejestry: S1CON - D8h - rejestr sterujący, S1STA - D9h - rejestr stanu, S1DAT - DAh - rejestr danych, S1ADR - DBh - rejestr adresowy.

Tab. 1 Rejestry sterujÄ…ce i statusowe interfejsu I2C

Rejestr

Bit 7

Bit 6

Bit 5

Bit 4

Bit 3

Bit 2

Bit 1

Bit 0

S1CON

CR2

ENS1

STA

STO

SI

AA

CR1

CR0

S1STA

SC4

SC3

SC2

SC1

SC0

0

0

0

S1ADR

SA7

SA6

SA5

SA4

SA3

SA2

SA1

GC

S1CON:

ENS1 - bit zezwalajÄ…cy na pracÄ™ interfejsu

STA - bit sygnału początku transmisji

STO - bit sygnału końca transmisji

SI - wskaźnik przerwania od interfejsu I2C

AA - bit określający aktywność interfejsu

CR2, CR1, CR0 - bity ustalające częstotliwość sygnału taktującego wysyłanego linią SCL przy pracy interfejsu w trybie urządzenia nadrzędnego.

S1STA:

SC4, SC3, SC2, SC1, SC0 - bity kodu stanu interfejsu

S1ADR:

SA7, SA6, SA5, SA4, SA3, SA2, SA1 - 7 bitowy adres własny urządzenia pracującego w trybie slave

GC - bit zezwolenia na rozpoznawanie adresu wywołania ogólnego

Rejestr S1DAT zawiera informację przeznaczoną do przekazania na szynę. Podczas wyprowadzania informacji z tego rejestru, na miejsce poszczególnych bitów jest wpisywany aktualny stan linii. W wyniku tego po przesłaniu zawartości rejestru na jej miejscu pojawia się informacja, która rzeczywiście pojawiła się na szynie.

Po wykonaniu każdej operacji (wysłanie lub odebranie informacji lub sygnałów sterujących) modyfikowana jest zawartość rejestru S1STA. Poniższe tabele zawierają opis poszczególnych stanów.

Tab. 2 Kody stanu w trybie nadawania jako urządzenie nadrzędne

Kod stanu

Stan interfejsu i szyny

08h

Wysłano sygnał START

10h

Wysłano powtórny sygnał początku transmisji (START zamiast STOP)

18h

Wysłano adres urządzenia i bit nadawania, i odebrano potwierdzenie

20h

Wysłano adres urządzenia i bit nadawania, i odebrano brak potwierdzenia

28h

Wysłano bajt danych i odebrano potwierdzenie

30h

Wysłano bajt danych i nie odebrano potwierdzenia

38h

Utrata kontroli nad szynÄ… podczas nadawania

Tab. 3. Kody stanu w trybie odbioru jako urządzenie nadrzędne

Kod stanu

Stan interfejsu i szyny

08h

Wysłano sygnał START

10h

Wysłano powtórny sygnał początku transmisji (START zamiast STOP)

38h

Utrata kontroli nad szynÄ… podczas nadawania braku potwierdzenia

40h

Wysłano adres urządzenia i bit odbioru, i odebrano potwierdzenie

48h

Wysłano adres urządzenia i bit odbioru, i odebrano brak potwierdzenia

50h

Odebrano dane i wysłano potwierdzenie

58h

Odebrano dane i wysłano brak potwierdzenia

Tab. 4. Kody stanu w trybie odbioru jako urządzenie podrzędne

Kod stanu

Stan interfejsu i szyny

60h

Odebrano własny adres i bit nadawania, i wysłano potwierdzenie

68h

Utrata kontroli nad szyną podczas nadawania adresu i bitu kierunku,

Odebrano własny adres i bit zapisu, i wysłano potwierdzenie

70h

Odebrano adres wywołania ogólnego i wysłano potwierdzenie

78h

Utrata kontroli nad szyną podczas nadawania adresu i bitu kierunku,

Odebrano adres wywołania ogólnego i wysłano potwierdzenie

80h

Interfejs został zaadresowany, odebrano dane i wysłano potwierdzenie.

88h

Interfejs został zaadresowany, odebrano dane i wysłano brak potwierdzenia

90h

Interfejs został zaadresowany adresem wywołania ogólnego,

Odebrano dane i wysłano potwierdzenie

98h

Interfejs został zaadresowany adresem wywołania ogólnego,

Odebrano dane i wysłano brak potwierdzenia

A0h

Odebrano sygnał STOP, lub powtórny sygnał początku transmisji (START zamiast STOP) podczas pracy jako zaadresowane urządzenie podrzędne

Tab. 5. Kody stanu w trybie nadawania jako urządzenie podrzędne

Kod stanu

Stan interfejsu i szyny

A8h

Odebrano własny adres i bit odbioru, i wysłano potwierdzenie

B0h

Utrata kontroli nad szyną podczas nadawania adresu i bitu kierunku,

Odebrano własny adres i bit odbioru, i wysłano potwierdzenie

B8h

Wysłano dane i odebrano potwierdzenie

C0h

Wysłano dane i odebrano brak potwierdzenia

C8h

Wysłano ostatni bajt danych (AA=0) i odebrano potwierdzenie

Tab. 6. Kody stanu w niejednoznacznych stanach interfejsu

Kod stanu

Stan interfejsu i szyny

00H

Błąd transmisji wskutek niedozwolonego sygnału STOP lub START,

Lub wejście interfejsu w stan nieokreślony w wyniku zakłóceń

F8H

Brak informacji o stanie interfejsu (nie jest ustawiany wskaźnik przerwania SI)

0x01 graphic

Rys. 2. Schemat struktury interfejsu I2C w mikrokontrolerze 80C522

Układy filtrów wejściowych mają za zadanie jednoznaczną dyskryminację stanu logicznego linii SDA i SCL zgodnie ze standardami interfejsu I2C. Sygnały wejściowe synchronizowane są z wewnętrznym układem taktującym i zakłócenia krótsze niż 3 okresy sygnału zegarowego są odfiltrowywane. Stopnie wyjściowe interfejsu mają minimalną obciążalność wynoszącą 3mA prądu wpływającego przy napięciu wyjściowym poniżej 0.4V.

Układ komparatora porównuje odebrany 7 - bitowy adres z własnym adresem urządzenia podrzędnego (S1ADR). Odebrany bajt adresu jest również porównywany z adresem wywołania ogólnego. Wykrycie którejkolwiek równości powoduje ustawienie odpowiedniego kodu stanu i wygenerowanie przerwania.

UkÅ‚ad arbitrażu funkcjonuje jedynie w trybie pracy jako urzÄ…dzenie nadrzÄ™dne. UkÅ‚ad ten sprawdza, czy każdy bit nadawany jako „1” wywoÅ‚uje stan wysoki linii SDA. Jeżeli jakiekolwiek urzÄ…dzenie podłączone do magistrali wymusi wówczas na linii SDA stan niski, to kontrola nad szynÄ… przejmowana jest przez to urzÄ…dzenie, z tym, że interfejs nadal na liniÄ™ SCL wysyÅ‚a impulsy taktujÄ…ce, aż do zakoÅ„czenia przesyÅ‚ania bieżącej informacji. Kontrola nad szynÄ… może być utracona także podczas pracy w trybie odbioru jako ukÅ‚ad nadrzÄ™dny, lecz tego rodzaju utrata kontroli może wystÄ…pić tylko podczas zwracania bitu braku potwierdzenia. Może siÄ™ to zdarzyć tylko przy koÅ„cu nadawania bajtu, tak wiÄ™c interfejs nie musi wysyÅ‚ać dalszych impulsów taktujÄ…cych. Jeżeli w trakcie pracy jako ukÅ‚ad nadrzÄ™dny magistrala zostanie przejÄ™ta przez inne urzÄ…dzenie, interfejs przełącza siÄ™ natychmiast w tryb pracy urzÄ…dzenia podrzÄ™dnego, aby w razie koniecznoÅ›ci mógÅ‚ wykryć w trakcie aktualnej transmisji swój wÅ‚asny adres.

Generator sygnału taktującego wytwarza impulsy wysyłane linią SCL tylko podczas pracy interfejsu w trybie urządzenia nadrzędnego. Wypełnienie sygnału taktującego wynosi normalnie 50%, jednak może się zmienić w wyniku działania układu synchronizacji. Interfejs I2C mikrokontrolera 80C552 wymusza stan niski na linii SCL po przesłaniu każdego bajtu, który otrzymał potwierdzenie. Ustawiany jest wówczas wskaźnik przerwania SI, a zwolnienie linii SCL następuje po wyzerowaniu tego wskaźnika.

Układ taktowania i sterowania wytwarza sygnały sterujące wykorzystywane przy odbiorze i nadawaniu pojedynczego bajtu danych. Zadaniem tego bloku jest wytwarzanie impulsów przesuwających zawartość rejestru S1DAT, sterowanie komparatorem, wytwarzanie i detekcja sygnałów START i STOP, nadawanie i odbiór bitów potwierdzenia, sterowanie w trybie pracy układu nadrzędnego i podrzędnego, zgłaszanie przerwań i testowanie stanu magistrali I2C.

Dekoder stanu interfejsu wykorzystuje różne wewnÄ™trzne sygnaÅ‚y i na ich podstawie generuje 5 - bitowy kod informujÄ…cy o aktualnym stanie interfejsu. Kod ten może być wykorzystany przez procedurÄ™ obsÅ‚ugi przerwania, która w zależnoÅ›ci od stanu rejestru S1STA (w którym znajduje siÄ™ kod) wywoÅ‚a odpowiedni podprogram obsÅ‚ugujÄ…cy dane zdarzenie. Trzy najmÅ‚odsze bity rejestru S1STA sÄ… zawsze równe „0”, co pozwala na wykorzystanie zawartoÅ›ci tego rejestru jako wektora adresowego (poczÄ…tki ewentualnych procedur bÄ™dÄ… rozmieszczone w odstÄ™pach co 8 bajtów).

    1. MIKROKONTROLER DS80C390

      1. Opis

DS80C390 jest szybkim mikroprocesorem kompatybilnym z 8051. Przeprojektowane jądro procesora 8051 wykonuje instrukcje do trzech razy szybciej niż oryginał przy tej samej częstotliwości oscylatora kwarcowego (generatora). Maksymalna częstotliwość generatora kwarcowego, przy której mikroprocesor DS80C390 może pracować wynosi 40MHz, a dzięki ok. 2,5-krotnie szybciej wykonywanym instrukcjom, pozorna częstotliwość wynosi 100MHz. Opcje wewnętrznego mnożnika częstotliwości pozwalają mikroprocesorowi na operacje przy pełnej prędkości ze zmniejszoną częstotliwością generatora kwarcowego. Sprzętowy akcelerator matematyczny przyspiesza między innymi operacje mnożenia i dzielenia liczb 16 i 32 - bitowych.

Mikroprocesor DS80C390 zawiera dwa pełnofunkcyjne kontrolery CAN 2.0B (Controller Area Network). Status i rejestry kontroli rozdzielone są pomiędzy SFRs i 512 bajtów wewnętrznej pamięci adresowanej pośrednio rozkazem MOVX. W dodatku do standardowych 11 - bitowych lub rozszerzonych 29 - bitowych identyfikatorów wiadomości, urządzenie zawiera dwa oddzielne 8 - bitowe maski i pola arbitrażu do obsługi wysokiego poziomu protokołów CAN, takich jak: Device Net i SDS.

Wszystkie zasoby standardowego mikroprocesora 8051, takie jak: trzy układy czasowo - licznikowe, port szeregowy i cztery 8 - bitowe porty wejścia - wyjścia są zawarte w mikroprocesorze DS80C390. Dodatkowo znajdują się jeszcze dwa 8 - bitowe porty do obsługi pamięci, drugi port szeregowy, siedem dodatkowych przerwań, programowalny układ czasowy watchdog, reset błędu zasilania i programowalne wyjście zegara. Dodatkowo urządzenie zawiera podwójny wskaźnik danych z cechą inkrementacji i dekrementacji przyspieszających przenoszenie bloku pamięci danych. Może on również modyfikować dostęp do pamięci danych od dwóch do dwunastu cykli maszynowych.

Urządzenie zawiera 4kB statycznej pamięci SRAM, która może być skonfigurowana jako różne kombinacje: pamięci danych, pamięci programu i stosu pamięci. 22 - bitowy licznik programu wspomaga dostęp do maksymalnie 4MB zewnętrznej pamięci programu i 4MB zewnętrznej pamięci danych. 10 - bitowy wskaźnik stosu adresuje do 1kB pamięci danych MOVX w celu zwiększenia efektywności wykonywania kodu.

Nowy tryb zarządzania mocą Power Management Mode (PMM) pozwala programowo przełączać cykle maszynowe ze standardowych 4 taktów zegara na cykl do 1024 taktów na cykl. Przykładowo przy zegarze 12MHz cykl maszynowy ma wartość 3MHz. W trybie PMM przy tej samej częstotliwości zewnętrznego źródła zegarowego cykl maszynowy wynosi 11.7kHz. Tryb PMM odpowiednio redukuje pobór mocy, kiedy procesor pracuje wolniej.

0x01 graphic

Rys. 3. Schemat blokowy budowy mikrokontrolera DS80C390

        1. Instrukcje

Wszystkie wykonywane instrukcje mają dokładnie te same funkcje co ich odpowiedniki w mikroprocesorze 8051. Ich bity, flagi i inne funkcje są identyczne. Różnią się czasem wykonywania.

WzglÄ™dny czas wykonywania instrukcji przez DS80C390 może być różny od czasu wykonywania tych samych instrukcji przez 8051. PrzykÅ‚adowo w oryginalnej architekturze instrukcje: „MOVX A, @DPTR” i „MOV direct, direct” wymagajÄ… dokÅ‚adnie takiego samego czasu na wykonanie: 2 cykli maszynowych odpowiadajÄ…cych 12 taktom zegara. W DS80C390 instrukcje MOVX wykonywane sÄ… w dwóch cyklach maszynowych, czyli w oÅ›miu taktach oscylatora kwarcowego, natomiast instrukcja „MOV direct, direct” wykonywana jest w trzech cyklach maszynowych, czyli w 12 taktach zegara. Choć obydwie sÄ… szybsze niż oryginalne odpowiedniki, potrzebujÄ… różnych iloÅ›ci cykli maszynowych na wykonanie. Dzieje siÄ™ tak dlatego, ponieważ urzÄ…dzenie zazwyczaj używa jednego cyklu instrukcji na każdy bajt tejże instrukcji. Wiele instrukcji wymaga tylko jednego cyklu maszynowego, choć sÄ… też i instrukcje wymagajÄ…ce aż piÄ™ciu cykli maszynowych.

        1. Blok Rejestrów Specjalnych

Rejestry specjalne (SFR) kontrolują wiele cech mikrokontrolera. Pozwala to urządzeniu nowe zasoby używając przy tym tych samych instrukcji, co 8051. Pisząc oprogramowanie obsługujące nowe zasoby, należy zidentyfikować i zdefiniować rejestry specjalne w asemblerze lub kompilatorze. Jest to jedyna potrzebna zmiana, by uzyskać dostęp do nowych zasobów. Mikrokontroler DS80C390 powiela rejestry specjalne zawarte w standardzie 80C52.

        1. Akcelerator matematyczny

Wbudowany akcelerator matematyczny pozwala mikrokontrolerowi wykonywać 16 i 32 - bitowe operacje mnożenia, dzielenia, przesunięć i normalizacji. Operacje matematyczne wykonywane są przez sekwencyjne ładowanie danych do trzech rejestrów specjalnych. Operacja matematyczna jest określona przez sekwencję trzech dostępnych rejestrów specjalnych (MA - D3h, MB - D4h i MC - D5h), eliminując kroki potrzebne na wykonanie operacji. Funkcja normalizacji ułatwia zamianę 4 - bajtowej binarnej liczby całkowitej bez znaku na format liczby zmiennoprzecinkowej.

Rejestry MA i MB muszą być ładowane i odczytywane w ustalonym porządku dla właściwych operacji, ponad to dostęp do każdego innego rejestru może być wykonany pomiędzy dostępem do rejestru MA lub MB.

        1. 40 - bitowy akumulator

Akcelerator matematyczny zawiera w sobie funkcję automatycznego akumulatora, pozwalającego przeprowadzać operacje mnożenia z akumulacją i dzielenia z akumulacją bez dodatkowych opóźnień. Za każdym razem, gdy akcelerator wykonuje operacje mnożenia lub dzielenia, wynik dodawany jest do 40 - bitowego akumulatora. Funkcja ta może znacznie przyspieszyć matematyczne operacje stosowane w technikach przetwarzania DSP.

      1. Adresowanie pamięci

DS80C390 zawiera w sobie trzy wewnętrzne obszary pamięci:

0x01 graphic

Rys. 5 Mapa pamięci mikrokontrolera 80C390

ZewnÄ™trzna maksymalnie 4MB pamięć jest adresowana przez multipleksowanÄ… lub niemultipleksowanÄ… 20 - bitowÄ… szynÄ™ adresowÄ… i 8 - bitowÄ… szynÄ™ danych i czterema sygnaÅ‚ami „chip enable” (aktywowanych podczas dostÄ™pu do pamiÄ™ci programu) lub czterema sygnaÅ‚ami „peripherial enable” (aktywowanych podczas dostÄ™pu do pamiÄ™ci danych).

        1. Tryby adresowania mikrokontrolera DS80C390

  1. 16 - bitowy tryb adresowania

W 16 - bitowym trybie adresowania dostęp do pamięci jest podobny do trybu stosowanego w tradycjonalnym 8051. Urządzenie wykonując operacje w tym trybie może zaadresować do 64kB pamięci programu i danych. Tryb ten jest ustawiany domyślnie po każdorazowym resecie.

  1. 22 - bitowy tryb adresowania

Tryb ten zachowuje zgodność binarnego kodu z instrukcjami 8051, ale dodaje jeden cykl maszynowy do instrukcji ACALL, LCALL, RET i RETI z uwzględnieniem taktowania fastkontrolerów firmy Dallas Semiconductor. Tryb ten jest dostosowany do standardowych kompilatorów dla mikroprocesora 8051.

  1. 22 - bitowy ciągły tryb adresowania

22 - bitowy ciągły tryb adresowania używa pełnego 22 - bitowego licznika programu i wszystkie zmodyfikowane instrukcje są automatycznie zapisywane i przechowywane w całym liczniku programu. 22 - bitowe instrukcje takie jak, ACALL, AJMP, LCALL, LJMP, MOV DPTR, RET i RETI wymagają asemblera, kompilatora i linkera, który umożliwia wykorzystanie tej własności. Instrukcja INC DPTR jest dłuższa o jeden cykl, ale reszta bajtu licznika jest zgodna z instrukcjami 8051.

Wewnętrznie urządzenie używa 22 - bitowego licznika programu. Niższe 22 - bity rozkazu adresują pamięć, ze specjalnym dwudziestym trzecim bitem używanym do mapowania 4kB pamięci powyżej 4MB przestrzeni adresowej. Bity od 16 do 23 w 22 - bitowym trybie adresowania są generowane przez rejestry specjalne SFRs zależnych od instrukcji.

        1. Adresowanie zewnętrznej pamięci

DostÄ™p sygnałów „chip enable” jest zarzÄ…dzany przez rejestr kontroli portu P4 P4CNT - 92h i rejestr kontroli pamiÄ™ci MCON - 96h. Po wystÄ…pieniu resetu port P4 bÄ™dzie skonfigurowany nastÄ™pujÄ…co: linie P4.7 - P4.4 jako linie adresowe i P4.3 - P4.0 jako linie sygnałów /CE3 - /CE0.

DS80C390 zawiera w sobie funkcjÄ™ pozwalajÄ…cÄ… na łączenie sygnałów PCE i CE. Ustawienie bitów /PDCE3 - /PDCE0 (MCON. 3-0) powoduje zgodnie z sygnaÅ‚ami „chip enable” operacje dla dwóch instrukcji: MOVC i MOVX. Proces zapisu do połączonych bloków pamiÄ™ci programu i danych jest kontrolowany przez sygnaÅ‚ /WR, a proces odczytu kontroluje sygnaÅ‚ /PSEN.

      1. Podwójny wskaźnik danych

DS80C390 zawiera dwa wskaźniki danych, DPTR0 i DPTR1, które ulepszają własności zastosowań wymagających dużej przepustowości danych. Dołączenie drugiego wskaźnika danych pozwala znacznie przyspieszyć przenoszenie bloku danych instrukcją MOVX poprzez użycie jednego wskaźnika danych jako rejestr źródłowy, a drugiego jako rejestr przeznaczenia.

DPTR0 jest zlokalizowany pod tym samym adresem co oryginalny wskaźnik danych 8051, pozwalajÄ…c jednostce DS80C390 wykonywać kod standardu 8051 bez żadnych modyfikacji. Drugi wskaźnik danych DPTR1 jest rozdzielony pomiÄ™dzy rejestry specjalne DPH1 i DPL1, podobnie jak konfiguracja DPTR0. Aktywowanie wskaźnika danych odbywa siÄ™ poprzez bit wyboru wskaźnika danych SEL (DPS.0). Każda instrukcja, która zawiera w sobie wskaźnik „DPTR” (tj. MOVX A, @DPTR) bÄ™dzie wybieraÅ‚a wskaźnik DPTR0 jeżeli bit SEL=0 lub DPTR1 jeżeli bit SEL=1.

W odróżnieniu od 8051, DS80C390 ma możliwość zarówno inkrementacji jak i dekrementacji wskaźnika danych bez używania dodatkowych instrukcji. Wykonanie instrukcji INC DPTR inkrementuje lub dekrementuje aktywny DPTR. Instrukcja ta nie dotyczy nieaktywnego DPTR.

Użyteczną cechą jest dostępność automatycznego przełączania aktywnego wskaźnika danych po wykonaniu podstawowej instrukcji zawierającej DPTR, co znacznie redukuje czas dostępu do rejestrów źródłowych i przeznaczenia.

Tab. 7 Program w asemblerze przełączający aktywne wskaźniki danych

INC DPTR

MOV DPTR, #data16

MOVC A, @A+DPTR

MOVX A, @DPTR

MOVX @DPTR, A

      1. Kontrola zegara

DS80C390 posiada unikalne cechy pozwalające na wybór układów źródeł zegara i częstotliwości operacyjnych. Mnożnik zegara zawarty w obwodach zegarowych zegara pozwala na użycie o generatorów niższej częstotliwości, przy jednoczesnym zachowaniu pełnej szybkości wykonywanych operacji.

0x01 graphic

Rys. 5 Schemat układu kontroli zegara

Układ obwodów kontroli zegara generuje dwa sygnały zegarowe używane przez mikrokontroler. Wewnętrzne układy zegara są źródłem podstawy czasu dla układów czasowych i wewnętrznych układów peryferyjnych. Układ zegara przepuszcza sygnał przez obwody dzielące przez 4 w celu wygenerowania zegara cyklu maszynowego, stanowiącego podstawę czasu dla wszelkich operacji procesora. Wszystkie instrukcje wykonywane są od jednego do pięciu cykli maszynowych.

Tab. 8. Konfiguracja układu zegara

CD1

CD0

4X / 2X

Funkcja

Zegar/Cykl Maszynowy

Max częstotliwość

0

0

0

Mnożnik częstotliwości (2X)

2

20MHz

0

0

1

Mnożnik częstotliwości (4X)

1

10MHz

0

1

N/A

Zarezerwowany

-

-

1

0

N/A

Dzielenie przez cztery (domyślnie)

4

40MHz

1

1

N/A

Power Management Mode

1024

40MHz

      1. Pamięć zewnętrzna dla standardowego mikrokontrolera 8051

Mikrokontroler 8051 komunikuje się z zewnętrzną pamięcią programu i danych przez porty P0 i P2. Przez port P0 przesyłanych jest osiem mniej znaczących bitów adresu A0-A7, natomiast przez port P2 osiem bardziej znaczących bitów adresu A8-A15. 16 bitów pozwala zaadresować do 64kB pamięci (216B=65536B). Dodatkowo port P0 pełni podwójną funkcję (multipleksowana szyna) - oprócz przesyłania 8 mniej znaczących bitów adresu, przesyłanych jest przez niego w obydwu kierunkach 8 bitów danych D0-D7. W tym przypadku istnieje potrzeba zatrzaśnięcia bitów adresu. Na rys. 6 przedstawiono schemat blokowy środowiska pracy mikrokontrolera 8051.

0x01 graphic

Rys. 6. Schemat blokowy zewnętrznego środowiska pracy mikrokontrolera 8051

Układem stosowanym jako bufor rejestru adresowego może być układ przerzutnika D - LATCH. Sygnałem sterującym dla tych układów do zatrzaśnięcia bitów adresu jest narastające zbocze sygnału ALE (Address Latch Enable).

Jako pamięć programu może posłużyć układ pamięci EPROM - 27512 (lub też inne układy np. EEPROM). Jest to pamięć o organizacji 8 - bitowej, a jej maksymalna pojemność wynosi 512kb (64kB). Sygnałem sterującym odczytem z zewnętrznej pamięci danych jest niski poziom sygnału /PSEN (Program Store Enable) mikrokontrolera. Sygnał /PSEN jest generowany rozkazem odczytu zewnętrznej pamięci programu:

MOVC A, @DPTR.

Na rys. 7. przedstawiono przebiegi czasowe sygnałów na zewnętrznych magistralach mikrokontrolera przy odczycie danej z obszaru pamięci programu.

0x01 graphic

Rys. 7. Przebiegi czasowe - cykl odczytu z zewnętrznej pamięci programu dla mikrokontrolera 8051

SygnaÅ‚ /CE - „chip enable” ukÅ‚adu pamiÄ™ci programu musi mieć nadanÄ… wartość logicznÄ… „0”. Uzyskuje siÄ™ to poprzez przyłączenie wyprowadzenia sygnaÅ‚u /CE na staÅ‚e do masy ukÅ‚adu. W ten sposób zapewniony zostanie staÅ‚y dostÄ™p do pamiÄ™ci. Dodatkowo, gdy mikrokontroler ma korzystać jedynie z zewnÄ™trznej pamiÄ™ci programu, sygnaÅ‚ /EA mikrokontrolera również musi mieć nadanÄ… wartość logicznÄ… „0”. Natomiast, gdy ukÅ‚ad zewnÄ™trznej pamiÄ™ci programu bÄ™dzie kontynuacjÄ… wewnÄ™trznej pamiÄ™ci danych, sygnaÅ‚ /EA mikrokontrolera musi mieć wartość logicznÄ… „1”. Uzyskuje siÄ™ to poprzez podanie na wyprowadzenie /EA wartoÅ›ci napiÄ™cia zasilania ukÅ‚adu +5V.

Jako zewnętrzna pamięć danych może posłużyć układ pamięci statycznej RAM (SRAM) - 62256. Podobnie jak pamięć EPROM 27512, jest to pamięć o organizacji 8 - bitowej o pojemności 256kb (32kB). W związku z tym, że mikrokontroler może zaadresować do 64kB zewnętrznej pamięci, jako zewnętrzną pamięć danych można przyłączyć dwa układy pamięci 62256. Sygnałami sterującymi odczytem i zapisem do pamięci są sygnały mikrokontrolera: /WR (Write Strobe) - podłączany do wyprowadzenia pamięci /WR oraz sygnał /RD (Read Strobe) - podłączany do wyprowadzenia pamięci /OE (Output Enable).

Sygnał /WR generowany jest rozkazem zapisu do zewnętrznej pamięci danych:

MOVX @DPTR, A.

Na rys. 8. przedstawiono przebiegi czasowe sygnałów na zewnętrznych magistralach mikrokontrolera przy odczycie danej z obszaru pamięci danych.

0x01 graphic

Rys. 8. Przebiegi czasowe - dwa cykle odczytu z pamięci danych dla mikrokontrolera 8051

Podobnie sygnał /RD generowany jest rozkazem odczytu zewnętrznej pamięci danych:

MOVX A, @DPTR.

MOVX @DPTR, A.

Na rys. 9. przedstawiono przebiegi czasowe sygnałów na zewnętrznych magistralach mikrokontrolera przy zapisie danej do komórki pamięci w zewnętrznym obszarze pamięci danych.

0x01 graphic

Rys. 9. Przebiegi czasowe - dwa cykle zapisu do pamięci danych dla mikrokontrolera 8051

Przy niskim poziomie sygnału /WR następuje zapis danych do zewnętrznej pamięci danych, natomiast przy niskim poziomie sygnału /RD następuje odczyt z zewnętrznej pamięci danych.

W danej chwili możliwe jest wygenerowanie przez mikrokontroler tylko jednego z podanych sygnałów sterujących.

Układ pamięci SRAM 62256 posiada jedynie 15 linii adresowych A0-A14 (wynika to z pojemności układu). Wobec czego 16 linia adresowa mikrokontrolera może posłużyć jako sygnał wyboru układu pamięci, z pomocą prostego dekodera adresów w postaci bramki negującej NOT. Do wyprowadzenia /CE jednego z układów można bezpośrednio przyłączyć sygnał pochodzący z linii A15, natomiast wyprowadzenie /CE drugiego układu należy w tym przypadku dołączyć do wyjścia dekodera adresu z bramką NOT, na którego wejściu podany jest sygnał z linii A15. W ten sposób wybór pierwszego układu nastąpi w chwili, gdy mikrokontroler adresował będzie komórki pamięci o adresach od 0000h do 7FFFh, natomiast wybór drugiego układu nastąpi przy adresowaniu komórek pamięci o adresach od 8000h do 0FFFFh.

Powyższe rozwiązanie jest nie wymaga dodatkowych modyfikacji w programie. Mikrokontroler adresuje całą przestrzeń od 0000h do 0FFFFh, w ten sam sposób, jak dla jednego układu pamięci o pojemności 64kB.

Przebiegi czasowe pokazane na rys. 7-9 przedstawiają cykle odczytu i zapisu danych do układów zewnętrznej pamięci danych. Cykl maszynowy w wypadku mikrokontrolera 8051 trwa 12 taktów zegara. Narastające zbocze sygnału ALE jest rozkazem do zatrzaśnięcia młodszego bajtu adresu z portu P0. Starszy bajt adresu dostępny jest przez cały cykl maszynowy na wyprowadzeniach portu P2. Przy niskim poziomie sygnału /PSEN następuje odczyt z zewnętrznej pamięci programu. Natomiast przy niskim poziomie sygnału /RD następuje odczyt z zewnętrznej pamięci danych. Podobnie podczas niskiego poziomu sygnału /WR następuje zapis do pamięci danych. Należy zwrócić uwagę na fakt, że w przypadku zapisu do pamięci danych czas wystawiania danych przez port P0 jest dłuższy niż czas odczytywania danych.

      1. Pamięć zewnętrzna mikrokontrolera DS80C390 pracującego w trybie 8051

W układzie zaprojektowanym na potrzeby niniejszej pracy dyplomowej, dla układu mikrokontrolera DS80C390 pracującego w trybie 8051, jako pamięć programu użyta została pamięć EPROM - 27512 (podobnie jak w standardzie 8051), a jako pamięć danych dołączono układ pamięci SRAM o pojemności 1Mb o symbolu TC551001 (produkcji firmy TOSHIBA).

Na rys. 510 przedstawiono schemat blokowy mikrokontrolera DS80C390 pracujÄ…cego w trybie zgodnym z 8051.

0x01 graphic

Rys. 10. Schemat blokowy podłączenia zewnętrznej pamięci do mikrokontrolera DS80C390 w trybie pracy 8051

UkÅ‚ad pamiÄ™ci statycznej RAM (SRAM) o 8 - bitowej organizacji i pojemnoÅ›ci 1Mb (128kB) posiada 17 linii adresowych A0-A16. Ponieważ mikrokontroler DS80C390 posiada 20 linii adresowych, nie ma koniecznoÅ›ci stosowania dodatkowych dekoderów adresu. Jednakże, pamięć tej pojemnoÅ›ci wymusza zastosowanie 22 - bitowego trybu adresowania zgodnego ze standardem 8051. W tym trybie używajÄ…c instrukcji MOVX zawierajÄ…cej wskaźnik danych „DPTR” należy zaÅ‚adować trzy rejestry z wartoÅ›ciami odpowiadajÄ…cymi kolejnym bitom adresu: do DPL (82h) bity adresu 7-0, do DPH (83h) bity 15-8, do DPX (93h) bity 23-16.

MOV DPL, 82h

MOV DPH, 83h

MOV DPX, 93h

MOVX A, @DPTR /* generacja sygnału /RD */

MOVX @DPTR, A /* generacja sygnału /WR */

Aby zachować zgodność dostÄ™pu do zewnÄ™trznej pamiÄ™ci (multipleksacja szyny adresowej/ danych) ze standardem 8051, konieczne jest podanie na sygnaÅ‚ /MUX mikrokontrolera DS80C390 wartoÅ›ci logicznej „0”. Tryb ten wymusza (tak jak w 8051) stosowanie buforu adresowego D - LATCH, jako zatrzask dla oÅ›miu najmniej znaczÄ…cych bitów adresu.

Podobnie, jak w mikrokontrolerze 8051 sygnaÅ‚ami sterujÄ…cymi sÄ… sygnaÅ‚y: /PSEN - odczyt z zewnÄ™trznej pamiÄ™ci programu, /RD - odczyt z zewnÄ™trznej pamiÄ™ci danych, /WR - zapis do zewnÄ™trznej pamiÄ™ci danych. SygnaÅ‚y /CE ukÅ‚adów pamiÄ™ci (programu i danych) powinny mieć wartość logicznÄ… „0”.

Ponieważ mikrokontroler nie posiada wewnÄ™trznie wbudowanej pamiÄ™ci programu (dopiero w późniejszym procesie, 4kB wewnÄ™trznej pamiÄ™ci SRAM mogÄ… zostać skonfigurowane jako pamięć programu), konieczne jest podanie na wejÅ›cie sygnaÅ‚u /EA mikrokontrolera wartoÅ›ci logicznej „0”. Na rysunku 11. przedstawiono przebiegi czasowe sygnałów zewnÄ™trznych magistrali mikrokontrolera DS80C390 dla cyklu odczytu z zewnÄ™trznej pamiÄ™ci programu z multipleksacjÄ… szyny adresowej/ danych.

0x01 graphic

Rys. 11. Przebiegi czasowe - cykl odczytu z zewnętrznej pamięci programu z multipleksacją szyny adresowej/ danych mikrokontrolera DS80C390

Przedstawione przebiegi czasowe odpowiadajÄ… rozkazowi:

MOVC A,@DPTR

Podobnie jak dla mikrokontrolera 8051 poniżej przedstawiono przebiegi czasowe odczytu i zapisu do zewnętrznej pamięci danych dla mikrokontrolera 80C390. Rys. 11 - 12 przedstawiają przebiegi czasowe odczytu i zapisu zewnętrznych układów pamięci danych mikrokontrolera DS80C390 pracującego w trybie 8051. W trybie tym następuje generacja sygnału ALE.

0x01 graphic

Rys. 12 Przebiegi czasowe - dwa cykle odczytu z zewnętrznej pamięci danych z multipleksacją szyny adresowej/ danych dla mikrokontrolera DS80C390

0x01 graphic

Rys. 13 Przebiegi czasowe - dwa cykle zapisu do zewnętrznej pamięci danych z multipleksowaną szyną adresową/ danych dla mikrokontrolera DS80C390

Zasada odczytu i zapisu danych w trybie multipleksacji szyny nie uległa zmianie. Jednakże w porównaniu do standardowego 8051 istnieje możliwość wyboru układów pamięci poprzez niską wartość sygnału /CE0-3 (wybór bloku pamięci programu) i /PCE0-3 (wybór bloku pamięci danych). Zmianie natomiast uległ czas wykonywania cyklu maszynowego z 12 do 4 taktów zegara na cykl.

      1. Pamięć zewnętrzna mikrokontrolera DS80C390

Mikrokontroler DS80C390 posiada 20 linii adresowych A0-A19 i dodatkowo sygnały wyboru bloku pamięci (/CE - wybór bloku pamięci programu i /PCE - wybór bloku pamięci danych lub urządzeń peryferyjnych) pozwalające podłączyć 4MB zewnętrznej pamięci programu i 4MB zewnętrznej pamięci danych.

W związku z tym, że mikrokontroler umożliwia wybór pomiędzy multipleksowaną i niemultipleksowaną szyną adresową/ danych, zdecydowano się na wybór szyny bez multipleksacji. Wobec powyższego założenia, na wejście sygnału /MUX mikrokontrolera powinna zostać podana jedynka logiczna.

Demultipleksowana szyna nie wymusza konieczności stosowania buforu adresu (tak jak ma to miejsce w standardowym układzie 8051). Port P0 pełni teraz funkcję jedynie szyny danych D0-D7, port P1 wystawia najmniej znaczących 8 bitów adresu A0-A7, funkcje portu P2 nie uległy zmianie (wystawia kolejnych 8 bitów adresu A8-A15), natomiast kolejne bity adresu dostępne są na wyprowadzeniach portu P4 (P4.4-P4.7 co odpowiada liniom adresowym A16-A19).

W zaprojektowanym układzie dołączona została dołączona pamięć programu EPROM 27512 i dwa układy pamięci danych SRAM TC554001 (lub odpowiednik 628512). Schemat blokowy zaprojektowanego układu przedstawiony został na rys. 14.

0x01 graphic

Rys. 14 Schemat blokowy podłączenia zewnętrznej pamięci w trybie standardowej pracy mikrokontrolera DS80C390

Układ TC554001 jest układem pamięci statycznej RAM (SRAM) o 8 - bitowej organizacji słowa. Układ ten posiada 19 linii adresowych A0-A18, co wskazuje na pojemność układu - 4Mb (512kB). 20 linia adresowa mikrokontrolera DS80C390 posłużyła przy pomocy bramki negującej NOT, jako linia sterująca wyborem jednej z dwu układów bloku pamięci.

Jeżeli zaistnieje potrzeba rozszerzenia bloku pamięci lub dołączenia urządzeń peryferyjnych, należy w tym celu wykorzystać 20 linii adresowych mikrokontrolera i sygnały /CE lub /PCE (co wiąże się z programową modyfikacją rejestrów odpowiedzialnych za porty: P4 - sygnały /CE i P5 - sygnały /PCE). Na rys. 5.10 przedstawiono przebiegi czasowe odczytu zewnętrznej pamięci programu mikrokontrolera DS80C390.

Standardowy rozkaz odczytu pamięci programu nie zmienia się. Dla rozkazu:

MOVC A,@DPTR

mikrokontroler oprócz wystawienia adresu poprzez porty P0, P2 i P4 oraz sygnału /PSEN generuje bit wyboru banku pamięci /CE0.

0x01 graphic

Rys. 15. Przebiegi czasowe - cykl odczytu z pamięci programu bez multipleksacji szyny adresowej/ danych dla mikrokontrolera DS80C390

Zapis i odczyt zewnętrznej pamięci programu dokonywany jest rozkazami dokładnie takimi samymi jak dla mikrokontrolera 8051:

MOVX A, @DPTR.

MOVX @DPTR, A.

Na rys. 16 - 17 przedstawiono przebiegi czasowe odczytu i zapisu zewnętrznej pamięci danych mikrokontrolera DS80C390.

0x01 graphic

Rys. 16 Przebiegi czasowe - dwa cykle odczytu z zewnętrznej pamięci danych bez multipleksacji szyny adresowej/ danych dla mikrokontrolera DS80C390

0x01 graphic

Rys. 17 Przebiegi czasowe - dwa cykle zapisu do zewnętrznej pamięci danych bez multipleksacji szyny adresowej/ danych dla mikrokontrolera DS80C390

W powyższych przebiegach nie występuje już sygnał sterujący /ALE, gdyż nie istnieje potrzeba zatrzaskiwania adresu. Młodszy bajt adresu dostępny jest teraz przez cały cykl maszynowy na wyprowadzeniach portu P1.

Zasada zapisu i odczytu w tym trybie nie uległa zmianie w stosunku do trybu z multipleksacją szyny mikrokontrolera DS80C390.



Wyszukiwarka

Podobne podstrony:
Bootloader dla mikrokontrolerów AVR
02 Mikroklimat
Mikrokontrolery Grodzki Sprawoz Nieznany
evboard, Płytka testowa dla mikrokontrolerów AT89S oraz AVR
Konfiguracja pamięci mikrokontrolera 8051 dla programów napisanych w języku C
Mikroklimat TEST nr 2, inż. BHP, V semestr
mim, studia Polibuda Informatyka, III semestr, mikroprocesory i mikrokontrolery (mim)
sprawozdanie mikroklimat i pomiary jego parametrów w środowisku górniczym
Mikroklimat kalkulatory
Mikrokontrolery F Marecki id 30 Nieznany
mikrokomputer 5
Mikrokomputer edukacyjny z 8051 cz 2
ZL5PRG Programator mikrokontrol Nieznany
06 ERGONOMIA MIKROKLIMAT
Mikrokontrolery ARM cz18
Mikrokontrolery ARM cz5
(at)MEGArewolucja nowe mikrokontrolery Atmela(1)
Przykład-mikroklimat, bhp

więcej podobnych podstron