8-bitowe maluchy Freescale’a
Jaki przepis na 6-nóżkowy, mikrokontrolerowy sukces wymyślili inżynierowie firmy Freescale? Najbardziej oczywisty: wykorzystali jeden ze swoich klasycznych rdzeni – HC08 – i po drobnych uproszczeniach wykonali na jego bazie rdzeń oznaczony symbolem RS08. W ten sposób powstała rodzina tanich, prostych (pod względem budowy i obsługi) i świetnie oprogramowanych (dostępne są zarówno przykładowe programy, jak i wysokiej klasy programy narzędziowe) mikrokontrolerów.
RS08 vs 6808
Ponieważ RS08 jest rdzeniem „zredukowanym”, to musi w nim czegoś brakować… Oczywiście tak jest: konstruktorzy tego rdzenia skupili się na zminimalizowaniu jego fizycznych wymiarów w krzemie (co się silnie przekłada na cenę układu), a osiągnięto to dzięki usunięciu z rdzenia elementów nadmiarowych z punktu widzenia aplikacji dostępnych dla „małych” mikrokontrolerów.
Rys. 1. Schemat blokowy mikrokontrolerów RS08KA
Najważniejsze zmiany wprowadzone w rdzeniu RS08 w stosunku do HCS08 to:
- usunięcie z listy instrukcji poleceń Mutiply, Divide, Nibble Swap, Decimal Adjust Acc, Negate, Complement, Arithmetic Shift i niektórych instrukcji skoków oraz operacji na stosie,
- w rejestrze znaczników (flag) CCR (Condition Code Register) pozostawiono jedynie dwie flagi: Carry i Zero,
- usunięcie z rdzenia rejestru H oraz wskaźnika stosu SP (Stack Pointer),
- nie jest dozwolone wielopoziomowe wywoływanie procedur z procedur,
- licznik PC ma długość 14 bitów, co ogranicza maksymalny rozmiar pamięci programu do 16 kB,
- wektorowy moduł obsługi przerwań zastąpiono znacznie prostszym mechanizmem, który przerzuca na programistę konieczność ustalenia źródła sygnału przerwania.
Optymalizacji rdzenia RS08 pod kątem dopasowania do „małych” aplikacji nie przeprowadzono wyłącznie za pomocą piły
odcinającej fragmenty uznane za nadmiarowe. Wprowadzono także kilka modyfikacji rozbudowujących rdzeń, które mają służyć zmniejszeniu zajętości
pamięci Flash oraz przyspieszeniu wykonywania programów:
- wprowadzono dwa nowe tryby adresowania: Short oraz Tiny (są to uproszczone tryby adresowania bezpośredniego o ograniczonym zasięgu),
- zastosowano rejestr Shadow PC, który służy do przechowywania adresu powrotu z procedury spełnia rolę jednopoziomowego stosu),
- operacje na rejestrze Shadow PC umożliwiają dwie nowe instrukcje: SHA i SLA (wymiana zawartości rejestru z zawartością akumulatora),
- wprowadzono tzw. pseudoinstrukcje, czyli mechanizm emulacji niektórych instrukcji niedostępnych na liście rdzenia RS08 (mają z niego korzystać automatycznie kompilatory),
- wprowadzono mechanizm stronicowania pamięci w oknie 64-bajtowym, który umożliwia m.in. wykonywanie operacji na całej pamięci Flash o pojemności do 16 kB za pomocą rozkazów o „krótkim” adresowaniu.
Dzięki opisanym modyfikacjom uzyskano zmniejszenie powierzchni zajmowanej przez rdzeń o 30% w stosunku do wersji HCS08 wykonywanej w tej samej technologii, a przy umiejętnym podejściu do programowania mikrokontrolerów, możliwe jest także 15…20-procentowe zmniejszenie zapotrzebowania na pamięć programu.
Nowy rdzeń w nowych mikrokontrolerach
Firma Freescale jest producentem miniaturowych mikrokontrolerów wyposażonych w rdzeń RS08, noszących oznaczenia MC9RS08KA (25 typów), MC9RS08LA/LE (łącznie 6 typów) oraz MC9RS08KB (11 typów). W artykule skupimy się na ultraminiaturowych mikrokontrolerach MC9RS08KA1 i MC9RS08KA2, które mają one identyczną budowę wewnętrzną (rys. 1), różnią się jedynie pojemnością pamięci Flash: pierwszy z wymienionych ma jej 1 kB, drugi – 2 kB. Wewnętrzne peryferia prezentowanych mikrokontrolerów są dość skromne, ale ich przemyślana
budowa i wynikająca z tego uniwersalność pozwalają wykorzystać je m.in. do budowy przetwornika A/C. Oprócz komparatora analogowego z własnym źródłem napięcia odniesienia, timera oraz interfejsu KBI standardowym wyposażeniem mikrokontrolerów MC9RS08KAx jest wewnętrzny generator taktujący ICS (Internal Clock Source), który wyposażono w generator o częstotliwości 31,25 kHz i pętlę FLL o skoku 0,2%. Zastosowany generator charakteryzuje się niezłą stabilnością: +/-2% dla maksymalnych dopuszczalnych zmian wartości napięcia zasilającego i temperatury otoczenia. Maksymalna częstotliwość taktowania CPU wynosi 20 MHz, co przekłada się na prędkość magistrali danych wynoszącą 10 MHz.
Rys. 2. Schemat elektryczny interfejsu ISP
O ile standardowe peryferia prezentowanych mikrokontrolerów trudno uznać za wybitne (aczkolwiek ich elastyczność mocno akcentuje ich pochodzenie z początku XXI wieku), to wbudowany układ wspomagający sprzętowo debugowanie programu BDC (Background Debug Controller) należy – pod względem możliwości i łatwości korzystania z 1-przewodowego interfejsu (schemat elektryczny ilustrujący niezbędne połączenia pokazano na rys. 2) – do światowej ekstraklasy. Warto pamiętać, że niewiele 8-bitowych mikrokontrolerów oferuje podobne wyposażenie.
Mikrokontrolery MC9RS08KA1 i MC9RS08KA2 są oferowane w obudowach DIP8, SOIC8 oraz DFN6 o wymiarach 3 x 3 x 1 mm. W tych ostatnich dla użytkownika są dostępne dwie uniwersalne linie I/O, jedna linia wejściowa i jedna wyjściowa, a w obudowach 8-nóżkowych linii I/O jest 4 plus jedna linia wejściowa i jedna wyjściowa. Linie jednokierunkowe mogą być wykorzystywane podczas pracy interfejsu BDC, co nieco ogranicza ich użyteczność w aplikacjach.Prezentowane mikrokontrolery są przystosowane do zasilania napięciem 1,8…5,5 V, przy czym zawartość pamięci SRAM jest zachowywana do 0,8 V, a maksymalna częstotliwość taktowania – 20 MHz – może być utrzymywana w całym zakresie dopuszczalnych napięć zasilających. Średni pobór prądu podczas pracy przy zasilaniu napięciem 1,8 V wynosi do 2,4 mA, a przy zasilaniu napięciem 5 V – nie więcej niż 5,8 mA. Zakres dopuszczalnych temperatur otoczenia podczas pracy wynosi –40…+85oC.
Cechy użytkowe mikrokontrolerów z rdzeniem RS08 są – wbrew sugestiom producenta, który twierdzi, że są to Low-End Microcontrollers – wystarczające do tego, żeby je stosować w wielu wymagających aplikacjach. Kłopotliwym dla użytkowników niedopatrzeniem, chociaż mającym cechy konsekwencji (podobnie jest w większości, jeśli nie wszystkich, mikrokontrolerów produkowanych przez Freescale), jest brak wbudowanej w mikrokontrolery przetwornicy zapewniającej napięcie programowania dla pamięci Flash.