Migracje pomiędzy miniaturowymi mikrokontrolerami z rodziny HCS08, część 2
Opcje systemu
Kolejną różnicą między układami stanowią rejestry opcji systemu jednokrotnego zapisu (write-once system option register, SOPT). Jeśli podczas zmian w projekcie redukujemy funkcjonalność, nie ma niebezpieczeństwa, gdyż ustawianie nieużywanych bitów nie spowoduje problemów. Jeśli jednak rozszerzamy projekt, trzeba koniecznie zadbać o zapis wszystkich koniecznych bitów w rejestrze konfiguracyjnym. Układ MC9RS08KA2 jest wyposażony w tylko jeden rejestr SOPT, natomiast mikrokontrolery z rdzeniem S08 mają po dwa takie rejestry (SOPT1 i SOPT2).
Generator
Tylko 16-pinowa wersja układu MC9S08QG8 może pracować z zewnętrznym oscylatorem. Jako, że mikrokontrolery typu QD i KA są dostępne w obudowach najwyżej 8-pinowych, możliwość wykorzystania zewnętrznego oscylatora jest dostępna tylko przy poruszaniu się przy rozwoju projektu w kierunku bardziej zaawansowanych układów. Wewnętrzne oscylatory są sterowane przez moduł ICS (Internal Clock Source).
Wewnętrzne źródło zegara (ICS)
Moduł ICS w układzie MC9S08QG8 różni się od tego zastosowanego w MC0S08QD4 i MC9RS08KA2, gdyż jest wyposażony w możliwość pracy z zewnętrznym oscylatorem, co zostało wspomniane w punkcie 1.4.6. Moduły są jednak kompatybilne i przy migracji z MC9S08QG8 (pracującego z wewnętrznym zegarem) bity CLKS w rejestrze ICSC1 mogą pozostać niezmienione, jako że próba zapisu bitu 7 zostanie zignorowana, a bit 6 spełnia tę samą rolę. Próby zapisu bitów RDIV, IREFS oraz IRCLKEN również zostaną zignorowane przez ICS mikrokontrolerów MC9S08QD4 oraz MC9RS08KA2. Pole IREFSTEN pełni we wszystkich układach tę samą funkcję i jest zlokalizowane w tym samym miejscu, więc napisany wcześniej kod będzie działał po przeniesieniu. To samo można powiedzieć o rejestrach ICSC2, ICSSC oraz ICSTRM. Jeśli projekt jest przenoszony z MC9S08QD4 lub MC9RS08KA2 na MC9S08QG8, programista musi zadbać o inicjalizację wszystkich bitów w rejestrach.
W tabeli 3 przedstawiono strukturę rejestrów ICS dla wszystkich trzech mikrokontrolerów.
Tab. 3. Rejestry ICS układów MC9S08QG8, MC9S08QD4 i MC9RS08KA2
Tryby pracy
Wszystkie trzy mikrokontrolery mają tryby pracy Run, Wait, Stop3 oraz Active BDM (praca krokowa, debugowanie), ale MC9S08QD4 nie jest wyposażony w tryb Stop1, a MC9RS08KA2 nie może pracować w trybach Stop1 i Stop2.
Stop1 to tryb całkowitego wyłączenia. Mikrokontroler reaguje tylko na przerwania IRQ i reset oraz jest całkowicie resetowany po wyjściu z tego stanu. Tracona jest cała zawartość pamięci RAM, resetowane wszystkie rejestry, wszystkie piny wejścia/wyjścia są w stanie resetu.
Stop2 to częściowe wyłączenie. Mikrokontroler reaguje na IRQ, reset lub wewnętrzne przerwanie zegara czasu rzeczywistego (RTI) oraz jest resetowany po wyjściu z tego stanu. Zachowywana jest jednak zawartość pamięci RAM, stany wejść/wyjść są zatrzaskiwane, a RTI mogą być użyte do obudzenia mikrokontrolera bez użycia przerwań zewnętrznych. Rejestry są resetowane, ale wartości w nich zapisane można zabezpieczyć przepisując je do pamięci RAM i odczytując stamtąd po wybudzeniu.
Stop3 jest bardziej elastycznym trybem wyłączenia, okupione jest to jednak większym zużyciem energii. Mikrokontroler obsługuje wszelkie aktywne przerwania: IRQ, KBI (Keyboard Interrupt), LVD (Low Voltage Detection), RTI oraz reset. Pamięć RAM i rejestry zachowują swoją zawartość, co oznacza, że nie trzeba ponownie inicjalizować peryferiów oraz można użyć zewnętrznego zegara jako źródła dla RTI. W mikrokontrolerach MC9RS08KA2 instrukcje STOP i WAIT zachowują się nieco inaczej, aby skompensować brak obsługi stosu, gdy kod wraca z następnej instrukcji na końcu.
Typowy pobór prądu w trybie Stop3 dla układów MC9S08QG8, MC9S08QD4 i MC9RS08KA2 to odpowiednio: 750 nA, 900 nA i 2,5 µA (dla napięcia zasilania 3 V, w temperaturze 85°C). |
Komparator analogowy (ACMP)
Funkcje modułu ACMP (Analog Comparator) są takie same w mikrokontrolerach MC9S08QG8 i MC9RS08KA2. Identyczne są zestawy rejestrów oraz charakterystyki elektryczne. Układ MC9S08QD4 nie ma wbudowanego modułu ACMP, ale często można tę funkcję zrealizować za pomocą przetwornika A/C, który używa tych samych wyprowadzeń.
Przetwornik A/C
Jedyną różnicą między układami MC9S08QG8 i MC9S08QD4, jeśli chodzi o przetwornik A/C jest liczba kanałów – QG8 w obudowie 16-pinowej ma ich o cztery więcej. MC9RS08KA2 nie ma ADC, ale jako, że komparator analogowy wykorzystuje te same wyprowadzenia, przetwornik można zaimplementować używając ACMP i modułu MTIM (Modulo Timer, patrz: 1.4.13). Omówienie tego problemu można znaleźć w opublikowanym przez Freescale dokumencie „RS08 Peripheral Module Quick Reference”, dostępnym pod adresem: http://www.freescale.com/files/microcontrollers/ doc/user_guide/RS08QRUG.pdf?srch=1.
Interfejsy I2C, SCI, SPI
Mikrokontroler MC9S08QG8 jest bogato wyposażony jeśli chodzi o interfejsy szeregowe, natomiast MC9S08QD4 i MC9RS08KA2 nie posiadają wbudowanych modułów IIC, SCI i SPI. Interfejsy te można jednak w różnym stopniu symulować programowo, a konkretne rozwiązania emulacji tych interfejsów zostały omówione w licznych notach aplikacyjnych opublikowanych przez firmę Freescale.
Interfejs KBI
Moduły przerwań klawiaturowych w trzech omawianych układach różnią się jedynie liczbą kanałów.
Moduły timerów MTIM i TPM
Moduł MTIM (Modulo Timer) to prosty 8-bitowy licznik z czterema źródłami sygnału zegarowego oraz dziewięcioma wartościami podziału częstotliwości zegara do wyboru. Jest on wbudowany w mikrokontrolery MC9S08QG8 i MC9RS08KA2.
Układy MC9S08QG8 i MC9S08QD4 są z kolei wyposażone w moduł TPM (Timer/PWM Module). Jest to bardziej wyrafinowany, 16-bitowy timer.
MC9S08QG8 ma jeden dwukanałowy moduł TPM z dwiema dodatkowymi opcjami konfiguracji, w które nie jest wyposażony TPM mikrokontrolera MC0S08QD4.
Poprzez ustawienie bitu ACIC w rejestrze konfiguracyjnym SOPT2 można połączyć wyjście komparatora analogowego z wejściem kanału 0 TPM (pracującego w trybie zapamiętywania stanu licznika przy zdarzeniu zewnętrznym – input-capture). Przy ustawionym ASIC, wyprowadzenie TPMCH0 nie jest dostępne z zewnątrz, niezależnie od trybu pracy modułu TPM. MTIM oraz TPM mogą być taktowane jednocześnie. W przypadku wyboru (poprzez ustawienie CLKS[B:A] =1:1 w TPMSC) zewnętrznego zegara dla modułu TPM (TPMCLK), pin PTA5 będzie traktowany jako zewnętrzne źródło zegara (TCLK) dla MTIM oraz TPM. Mikrokontroler MC9S08QD4 ma dwa niezależne moduły TPM: jednokanałowy i dwukanałowy.
Każdy moduł TPM może zostać skonfigurowany do pracy jako buforowany generator symetrycznego (center-aligned) sygnału PWM we wszystkich kanałach. Źródła sygnału zegarowego można wybierać niezależnie dla każdego modułu (w przypadku układów wyposażonych w więcej niż jeden TPM, np. MC9S08QD4). Do dyspozycji jest też preskaler (dzielnik częstotliwości) sygnału zegarowego, który może dzielić przez 1, 2, 4, 8, 16, 32, 64 lub 128. Moduł TPM można skonfigurować do pracy jako 16-bitowy licznik swobodnego zliczania (free-running counter), licznik PWM w dół/w górę lub 16-bitowy rejestr modulo. Każdy kanał ma własne przerwanie, a każdy moduł (w układach z kilkoma TPM) – przerwanie przy zakończeniu zliczania.
Każdy kanał może pracować w trybie zapamiętywania stanu licznika przy zdarzeniu zewnętrznym (input capture), generowania sygnału przy odpowiednim stanie licznika (output compare) lub buforowanego, asymetrycznego (egde-aligned) PWM wyzwalanego zboczem narastającym, opadającym lub którymkolwiek zboczem sygnału zdarzenia zewnętrznego. Każdy kanał obsługuje polecenia set, clear, toggle (ustaw, wyzeruj, przełącz) oraz pozwala na ustawienie polaryzacji wyjść PWM.
Na podstawie AN3325 firmy Freescale (autorstwa Ingi Harris) opracował Dominik Maj.
Następna część artykułu jest dostępna tu. Poprzednia część artykułu jest dostępna tu. |