MSP430, część 5 Co ma takiego, czego inne nie mają?

Podobne dokumenty
Układy czasowo-licznikowe w systemach mikroprocesorowych

Systemy wbudowane. Uniwersytet Łódzki Wydział Fizyki i Informatyki Stosowanej. Witold Kozłowski

Mikrokontroler ATmega32. System przerwań Porty wejścia-wyjścia Układy czasowo-licznikowe

Metody obsługi zdarzeń

Hardware mikrokontrolera X51

Przerwania, polling, timery - wykład 9

Układy czasowo-licznikowe w systemach mikroprocesorowych

Wbudowane układy peryferyjne cz. 2 Wykład 8

ĆWICZENIE 7. Wprowadzenie do funkcji specjalnych sterownika LOGO!

2. Architektura mikrokontrolerów PIC16F8x... 13

Uproszczony schemat blokowy zespołu 8-bitowego timera przedstawiono na rys.1

Licznik rewersyjny MD100 rev. 2.48

PRZERZUTNIKI: 1. Należą do grupy bloków sekwencyjnych, 2. podstawowe układy pamiętające

Programowanie mikrokontrolerów. 8 listopada 2007

Układy czasowe / liczniki (timers/counters)

3.2. Zegar/kalendarz z pamięcią statyczną RAM 256 x 8

Mikroprocesory i Mikrosterowniki Liczniki Timer Counter T/C0, T/C1, T/C2

Programowany układ czasowy APSC

Programowany układ czasowy

LABORATORIUM PROCESORY SYGNAŁOWE W AUTOMATYCE PRZEMYSŁOWEJ. Mechanizm przerwań i menadżer zdarzeń procesora sygnałowego F/C240

Wstęp Architektura... 13

MIKROPROCESORY architektura i programowanie

dwójkę liczącą Licznikiem Podział liczników:

Technika Mikroprocesorowa Laboratorium 5 Obsługa klawiatury

Układy sekwencyjne. Podstawowe informacje o układach cyfrowych i przerzutnikach (rodzaje, sposoby wyzwalania).

Licznik prędkości LP100 rev. 2.48

Research & Development Ultrasonic Technology / Fingerprint recognition

Aby w pełni przetestować układ o trzech wejściach IN_0, IN_1 i IN_2 chcemy wygenerować wszystkie możliwe kombinacje sygnałów wejściowych.

ad a) Konfiguracja licznika T1 Niech nasz program składa się z dwóch fragmentów kodu: inicjacja licznika T1 pętla główna

POLSKIEJ AKADEMII NAUK Gdańsk ul. J. Fiszera 14 Tel. (centr.): Fax:

MIKROPROCESORY architektura i programowanie

Architektura systemu komputerowego. Działanie systemu komputerowego. Przerwania. Obsługa przerwań (Interrupt Handling)

Programowanie mikrokontrolerów 2.0

1. Poznanie właściwości i zasady działania rejestrów przesuwnych. 2. Poznanie właściwości i zasady działania liczników pierścieniowych.

LICZNIKI PODZIAŁ I PARAMETRY

Część 6. Mieszane analogowo-cyfrowe układy sterowania. Łukasz Starzak, Sterowanie przekształtników elektronicznych, zima 2011/12

Ćw. 7: Układy sekwencyjne

PRZETWORNIK ADC w mikrokontrolerach Atmega16-32

Falowniki Wektorowe Rexroth Fv Parametryzacja

Temat ćwiczenia: Przekaźniki półprzewodnikowe

INSTRUKCJA OBSŁUGI. Przekaźnik czasowy ETM ELEKTROTECH Dzierżoniów. 1. Zastosowanie

Wstęp do Techniki Cyfrowej... Synchroniczne układy sekwencyjne

LABORATORIUM PROCESORY SYGNAŁOWE W AUTOMATYCE PRZEMYSŁOWEJ. Przetwornik ADC procesora sygnałowego F/C240 i DAC C240 EVM

Ćwicz. 4 Elementy wykonawcze EWA/PP

Dokumentacja sterownika mikroprocesorowego "MIKSTER MCC 026"

1. Wprowadzenie Programowanie mikrokontrolerów Sprzęt i oprogramowanie... 33

1. Podstawowe wiadomości Możliwości sprzętowe Połączenia elektryczne Elementy funkcjonalne programów...

Zygmunt Kubiak Instytut Informatyki Politechnika Poznańska

Radio FM kuchenne SoundMaster UR 2006, LCD, pamięć 30 stacji

2. PORTY WEJŚCIA/WYJŚCIA (I/O)

LABORATORIUM Komputery przemysłowe i systemy wbudowane

Opis ultradźwiękowego generatora mocy UG-500

Instytut Teleinformatyki

Instrukcja pomocnicza TELMATIK do licznika / timera H8DA

2.1 Porównanie procesorów

Spis treœci. Co to jest mikrokontroler? Kody i liczby stosowane w systemach komputerowych. Podstawowe elementy logiczne

Przerwania w systemie mikroprocesorowym. Obsługa urządzeo wejścia/wyjścia

Adresowanie obiektów. Adresowanie bitów. Adresowanie bajtów i słów. Adresowanie bajtów i słów. Adresowanie timerów i liczników. Adresowanie timerów

Zastosowania mikrokontrolerów w przemyśle

1. Cel ćwiczenia. 2. Podłączenia urządzeń zewnętrznych w sterowniku VersaMax Micro

Dodatek B. Zasady komunikacji z otoczeniem w typowych systemach komputerowych

Część 3. Układy sekwencyjne. Układy sekwencyjne i układy iteracyjne - grafy stanów TCiM Wydział EAIiIB Katedra EiASPE 1

LABORATORIUM. TIMERY w mikrokontrolerach Atmega16-32

Podstawowe elementy układów cyfrowych układy sekwencyjne Rafał Walkowiak Wersja

Programowanie mikrokontrolerów 2.0

LICZNIKI Liczniki scalone serii 749x

Przerzutnik ma pewną liczbę wejść i z reguły dwa wyjścia.

LABORATORIUM. TIMERY w mikrokontrolerach Atmega16-32

Odczyt zegara ze sterownika do panelu serii TIU z możliwością korekty ustawień zegara w sterowniku

Timery w mikrokontrolerach STM32F3

Podstawowe elementy układów cyfrowych układy sekwencyjne. Rafał Walkowiak

Zapoznanie się z podstawowymi strukturami liczników asynchronicznych szeregowych modulo N, zliczających w przód i w tył oraz zasadą ich działania.

Programowanie mikrokontrolerów. 5 grudnia 2007

Zastosowanie procesorów AVR firmy ATMEL w cyfrowych pomiarach częstotliwości

Przerwania w architekturze mikrokontrolera X51

Radio kuchenne Soundmaster DAB 2035, FM, RDS, srebrne

Wydział Elektryczny. Katedra Automatyki i Elektroniki. Instrukcja do ćwiczeń laboratoryjnych z przedmiotu: SYSTEMY CYFROWE 1

Dokumentacja Licznika PLI-2

Programowanie mikrokontrolerów 2.0

Instytut Teleinformatyki

Programator układów HCS

LEKCJA TEMAT: Zasada działania komputera.

Na początek: do firmowych ustawień dodajemy sterowanie wyłącznikiem ściennym.

Opis Ogólny OPIS OGÓLNY LICZNIKA AL154LI01.

Klasyfikacja metod przetwarzania analogowo cyfrowego (A/C, A/D)

dokument DOK wersja 1.0

INSTRUKCJA OBSŁUGI Generatora impulsów PWM

Układy sekwencyjne. 1. Czas trwania: 6h

Kurs Zaawansowany S7. Spis treści. Dzień 1

Instrukcja do ćwiczenia : Matryca komutacyjna

Badanie diod półprzewodnikowych

Architektura mikrokontrolera MCS51

Struktura i działanie jednostki centralnej

U 2 B 1 C 1 =10nF. C 2 =10nF

1. Opis płyty czołowej multimetru METEX MS Uniwersalne zestawy laboratoryjne typu MS-9140, MS-9150, MS-9160 firmy METEX

Architektura mikrokontrolera MCS51

Standardowe bloki funkcjonalne

Część 5. Mieszane analogowo-cyfrowe układy sterowania

Systemy wbudowane. Uniwersytet Łódzki Wydział Fizyki i Informatyki Stosowanej. Witold Kozłowski

Ćwiczenie 9 Częstościomierz oparty na µc 8051(8052)

Transkrypt:

MSP430, część 5 Co ma takiego, czego inne nie mają? Kontynuujemy omawianie możliwości podstawowych liczników timerów, w które wyposażono mikrokontrolery z rodziny MSP430. Autor artykułu, korzystając ze swojej wiedzy i ogromnego doświadczenia odnosi się w tekście do innych mniej i bardziej znanych architektur mikrokontrolerowych, co ułatwi ocenę rozwiązań zastosowanych w MSP430. Można pójść jeszcze krok dalej i zamiast modulowania tylko współczynnika wypełnienia modulować też tenże współczynnik modulacji. Prowadzi to do modulatorów drugiego (a także wyższych rzędów), o jeszcze lepszych potencjalnie parametrach. Istnieją też nieco inne sposoby modulacji sigma delta, chociażby przez modulację współczynnika podziału częstotliwości preskalera poprzedzającego licznik PWM, albo nawet okresu powtarzania impulsów. Taki sposób modulacji przebiegu PWM, mimo swych zalet, nie jest zbyt często spotykany, bo jednak jest trudniejszy realizacyjnie od rozwiązań najprostszych. W znanych autorowi mikrokontrolerach jest zaimplementowany w niezbyt popularnym w Polsce CoolRiscu szwajcarskiej firmy Xemics. Jego parametry są doskonałe. Nieco podobne rozwiązanie przyjęto też w mikrokonwerterach serii ADuC8xx firmy Analog Devices. Pozostaje jeszcze problem zachowania generatora PWM przy zmianach wartości współczynnika modulacji. Chodzi o to, by zmiany te były płynne i pomiędzy wartością początkową i docelową nie występowały jakieś niepożądane zakłócenia i szkodliwe impulsy. Niech w rozpatrywanym poprzednio przykładzie g e n e r a - t o r a P W M o o k r e s i e o d - powiadającym 1000 taktów zegara do rejestru PWM wpisana jest liczba 387, a aktualny stan licznika wynosi 350. W tym momencie do rejestru wpisywana jest nowa wartość, powiedzmy 200. Ponieważ licznik nie osiągnął jeszcze wartości 387, w chwili wpisu nowej wartości stan na wyjściu też nie ulega zmianie. Po modyfikacji zawartości rejestru pozostaje on nadal na dotychczasowym poziomie, bo teraz stan licznika jest większy od zawartości rejestru, a zmiana stanu wyjścia następuje przecież z chwilą zrównania obu wartości. Nastąpi to dopiero w następnym cyklu. W efekcie po impulsach o współczynniku wypełnienia 0,387 pojawi się pojedynczy impuls bardzo długi, odpowiadający pełnemu cyklowi + nowa wartość, a więc aż 1200 taktów. Po tym następne impulsy będą już miały poprawny współczynnik wypełnienia 0,200. Jak zatem widać, nawet w realizacji prostych wydawałoby się układów PWM kryją się pewne pułapki. Stąd rzeczywiście implementowane generatory PWM bywają całkiem wyrafinowane, i często bazują na liczniku o przełączanym k i e r u n k u z l i c z a n i a góra/dół. U k ł a - dy licznikowo czasowe są używ a n e n i e t y l k o do ogólnie pojętego o d m i e r z a n i a c z a s u, mogą także reagować na sygnały zewnętrzne. W 8051 jest dostępna funkcja gate (bramkowanie) pozwalająca licznikowi zliczać tylko wtedy, gdy poziom sygnału zewnętrznego, na skojarzonym z licznikiem wyprowadzeniu, jest wysoki. Gdy jest niski stan licznika nie ulega zmianie. W ten prosty sposób można chociażby zamienić czas trwania impulsu wejściowego na odpowiadający mu stan końcowy licznika. W bardziej zaawansowanych rozwiązaniach zakres ingerencji sygnału zewnętrznego na pracę licznika jest większy. Najbardziej uniwersalna jest funkcja capture przechwytywanie w której aktualny stan licznika jest kopiowany w dodatkowym rejestrze capture register dokładnie w momencie pojawienia się zewnętrznego zdarzenia (event), a licznik kontynuuje normalną pracę. Zdarzeniem tym może być wystąpienie narastającego zbocza sygnału, zbocza opadają- 72

Rys. 8. Schemat blokowy licznika A cego lub dowolnego z tych zboczy. Równocześnie wywoływane jest odpowiednie przerwanie, w obsłudze którego, pomimo nieuniknionych przecież opóźnień, programista ma w rejestrze przechwytywania nadal dostępną informację o faktycznym momencie wystąpienia śledzonego zdarzenia. Możliwe jest nawet wyłączenie w ogóle systemu przerwań i cykliczna kontrola znacznika wystąpienia oczekiwanego zdarzenia. Czasami kopiowanie stanu licznika do rejestru następuje nie z każdym zboczem, a co kilka, np. co 4 lub co 16. Rozszerza to funkcjonalność tej opcji. Bywa też możliwe włączenie filtru przeciwzakłóceniowego, kiedy to muszą być spełnione dodatkowe warunki nałożone na sygnał wejściowy, aby nastąpiło zamrożenie stanu licznika. Zwykle po zmianie stanu sygnał musi być stabilny przez wybrany okres czasu, wyrażany w liczbie taktów zegara. Jeżeli pojawi się tylko krótki impuls, to jest on ignorowany. Ponieważ bardzo rzadko pojawia się potrzeba równoczesnego wykorzystywania w tym samym liczniku zarówno funkcji capture jak i compare, więc często, przede wszystkim dla zmniejszenia liczby rejestrów obsługiwanych programowo, bywa dostępna tylko jedna z nich, na podstawie wyboru w rejestrze konfiguracyjnym. Ten sam rejestr pełni albo funkcję capture register, albo compare register. Oczywiście w licznikach prawie zawsze można wybrać tryb zliczania zboczy zewnętrznego sygnału wejściowego. Jak wynika z tego krótkiego przeglądu, różnorodność spotykanych w mikrokontrolerach układów licznikowo czasowych jest bardzo duża, przy czym niektóre bardziej zaawansowane funkcje compare, capture, PWM należą obecnie do standardu. Poza typowymi układami licznikowymi spotykane bywają liczniki dedykowane, przeznaczone do konkretnych zastosowań. Wymienić tu można układy nadzorujące (watchdog timer, nie ma chyba dobrej polskiej nazwy) oraz przede wszystkim liczniki taktujące układy transmisji szeregowej. Szczególnie te ostatnie wymagają czasem niekonwencjonalnych rozwiązań. Główny problem polega na tym, aby standardowe prędkości transmisji szeregowej dały się uzyskać przy dowolnej częstotliwości zegarowej mikrokontrolera. W starszych rozwiązaniach nie było to możliwe i wymagało stosowania konkretnych częstotliwości generatora kwarcowego (przykładowo chociażby 11,059 MHz w 8051). Obecnie nawet przy taktowaniu mikrokontrolera stosunkowo małymi częstotliwościami zegarowymi daje się często uzyskiwać prędkości transmisji szeregowej nie odbiegające nadmiernie od wartości znamionowych. MSP430 stoi tu znowu na pozycji lidera, gdyż wbudowany w układ transmisji szeregowej licznik taktujący, z modulacją okresu, pozwala na uzyskanie poprawnej transmisji o nawet szybkości 9600 bodów przy częstotliwości pracy mikrokontrolera zegarkowej, zaledwie 32768 Hz! Nie istnieje chyba żadne inne rozwiązanie o aż tak dobrych parametrach. Nawet w najprostszych wersjach mikrokontrolerów MSP430 zawsze występuje jeden układ licznikowo czasowy; nosi on nazwę Timer_A (rys. 8). W bardziej rozbudowanych egzemplarzach występuje jeszcze dodatkowy Timer_B. Pod względem funkcjonalnym są one bardzo do siebie podobne. Liczniki te mają bardzo rozbudowane możliwości konfiguracyjne i mogą wykonywać większość dyskutowanych wyżej zadań. Timer_A jest asynchronicznym licznikiem 16 bitowym, obudowanym co najmniej dwoma, albo nawet trzema rejestrami capture/compare. Może pracować w 4 różnych trybach, z możliwością wyboru jednego z 4 źródeł sygnału taktującego. Źródłami tymi są: ACLK, czyli buforowany przebieg wyjściowy generatora kwarcowego małej częstotliwości; zazwyczaj ma on częstotliwość zegarkową 32768 Hz, która może być dodatkowo podzielona przez 2, 4 lub 8. SMCLK, a więc zasadniczo przebieg wyjściowy generatora RC albo drugiego generatora kwarcowego, dużej częstotliwości (jeżeli istnieje, nie w każdej wersji MSP430 ten generator jest implementowany i jest wtedy zastępowany generatorem małej częstotliwości). Źródłowa częstotliwość sygnału dla SMCLK też może być opcjonalnie podzielona przez 2, 4 lub 8. jeden z 2 sygnałów wejściowych, z wyprowadzeń przyporządkowanych licznikowi A i oznaczonych TACLK oraz TAINCLK. 73

Poza uniwersalnymi układami licznikowo czasowymi w MSP430 zaimplementowano także licznik nadzorujący WDT (WatchgDog Timer). Jego zasadniczym zadaniem, zgodnie z nazwą, jest nadzorowanie poprawnej pracy oprogramowania, które powinno cyklicznie, w określonych ostępach czasu, zerować go. Jeżeli z jakichkolwiek powodów to nie nastąpi, to przepełnienie licznika wywołuje zerowanie, wyprowadzające mikrokontroler ze stanu zawieszenia programu. Układ ten jest konfigurowalny w szerokim zakresie, a jeżeli jego funkcja nadzorcy działania programu nie jest potrzebna, to da się wykorzystać do generowania stabilnej podstawy czasu dla innych zadań. Sam 16 bitowy licznik WDTCNT (WatchDog Timer CouNTer) nie jest bezpośrednio dostępny programowo, czyli nie da się wprost odczytać jego stanu ani niczego do niego zapisać; można go tylko zatrzymać albo wyzerować. Operacje przez niego realizowane są kontrolowane za pośrednictwem rejestru sterującego WDTCTL (Watch Dog ConTroL), dostęp do którego jest chroniony rodzajem hasła. Zabezpiecza to przed niepożądaną zmianą działania układu w przypadku zawieszenia programu i wykonywania przezeń jakichś przypadkowych instrukcji. Każde pogwałcenie hasła skutkuje natychmiastowym zerowaniem mikrokontrolera. Źródłem sygnału zegarowego dla licznika jest do wyboru albo ACLK, albo SMCLK. Przepełnienie licznika, generujące zerowanie systemowy lub przerwanie, jest kontrolowane na jego bicie szóstym, dziewiątym, trzynastym albo piętnastym. Ponieważ normalnie po przepełnieniu licznik jest zerowany, można powiedzieć, że istnieje możliwość wyboru liczby taktów zegarowych wywołujących przepełnienie pomiędzy 64, 512, 8192 i 32768. Aby zapobiec przypadkowemu wygenerowaniu sygnału zerującego, zmiana długości licznika powinna być łączona z równoczesnym jego wyzerowaniem, co daje się zrobić w jednej instrukcji. Podobnie przy zmianie źródła sygnału taktującego należy licznik chwilowo zatrzymać. Gdy wybrana jest funkcja periodycznego odliczania czasu, przepełnienie licznika ustawia odpowiedni znacznik (WDTIFG, WatchDog Timer Interrupt FlaG) i może wygenerować przerwanie, jeżeli tylko jest ono odblokowane bitem WDTIE (WatchDog Timer Interrupt Enable) oraz ustawiony jest bit ogólnego włączenia systemu przerwań GIE (General Interrupt Enable). Przejście do procedury obsługi przerwania automatycznie zeruje znacznik WDTIFG. Wektor tego przerwania jest inny, niż w trybie nadzorującym (czyli nie jest to wektor resetu). Znaczniki WDTIFG oraz WDTIE są umieszczone odpowiednio w rejestrach IFG1 oraz IE1. Po resecie, niezależnie od jego przyczyn, licznik jest automatycznie ustawiany jako watchdog, a źródłem zegara staje się generator RC (DCOCLK). Jeżeli w ciągu około 32 ms nie nastąpi programowa zmiana funkcji, wyzerowanie lub zatrzymanie licznika, zostanie wygenerowany sygnał zerujący i sytuacja będzie się powtarzać. Niezależnie od źródła, częstotliwość sygnału zegarowego licznika ulega podzieleniu w związanym z licznikiem indywidualnym preskalerze o współczynniku podziału 1, 2, 4 lub 8. W efekcie minimalna częstotliwość taktowania licznika sygnałem wewnętrznym mikrokontrolera to zaledwie 512 Hz, podczas gdy maksymalna sięga 16 MHz. Tak ogromnego zakresu wyboru nie zapewnia chyba żaden inny Rys. 9. Ustawianie znacznika przepełnienia licznika w trybie pracy ciągłej (Continuous mode) Rys. 10. Ustawianie znaczników w trybie liczenia w górę (Up mode) Rys. 11. Ustawianie znaczników w trybie pracy dwukierunkowym (Up/Down) mikrokontroler! Przy wykorzystaniu pełnej pojemności przepełnienie licznika następuje po czasie zawierającym się pomiędzy 4 ms a 128 sekund. Pokrywa to w praktyce wszystkie potencjalne potrzeby. Możliwość uzyskiwania szerokiego zakresu odliczanych czasów istnieje także w wielu innych mikrokontrolerach, ale wiąże się ze zmianami częstotliwości zegarowej jednostki centralnej. Gdy potrzebne jest odmierzanie długich czasów, częstotliwość pracy rdzenia musi być po prostu mniejsza. W MSP430 są to parametry całkowicie niezależne jednostka centralna może być taktowana częstotliwością 4 khz, a licznik 16 MHz, albo odwrotnie: rdzeń 16 MHz, a licznik 512 Hz. Za jedyny mankament można uznać brak możliwości wyboru aktywnego zbocza sygnału zegarowego licznika, zawsze zmienia on stan na zboczu narastającym. Wybór zbocza bywa jednak potrzebny w praktyce niezmiernie rzadko. Układ Licznika_A może pracować w 3 trybach: licząc w sposób ciągły w górę od stanu 0000 do FFFFh i ponownie od 0000 (praca ciągła Continuous Mode, rys. 9). licząc w górę od stanu 0000 do wartości zawartej w rejestrze porównania zerowego bloku capture/compare TACCR0 (Timer_ A Capture/Compare Register #0) i ponownie od zera Up Mode (rys. 10). licząc w górę od stanu 0000 do zawartości rejestru TACCR0, a następnie z powrotem w dół aż do zera, po czym cykl taki jest ciągle powtarzany (Up/Down Mode, rys. 11). W trybie pracy ciągłej przejście ze stanu FFFFh do zera ustawia odpowiedni znacznik TAIFG i generuje przerwanie, jeżeli nie jest zablokowane. Aby to nastąpiło, musi mieć miejsce faktyczna zmiana stanu licznika poprzez wejście zegarowe; samo wpisanie do licznika wartości zerowej nie wystarcza. Taka sama akcja ma miejsce w trybie Up przy przejściu ze stanu maksymalnego (czyli zawartości rejestru TACCR0) do zera. O jeden takt zegara wcześniej, po zrównaniu stanu licznika z zawartością rejestru TACCR0, przyjmuje wartość jeden inny 74

OSCYLOSKOPY RĘCZNE HPS10 HPS40 10MHz 40MHz częstotliwość próbkowania 40 Ms/s pasmo analogowe do 12 MHz maksymalne napięcie wejściowe 100 V tryb multimetru z odczytem wartości dbm, dbv, DC, rms pomiar mocy audio markery dla napięcia i czasu wskazanie częstotliwości wyświetlacz LCD o wysokiej rozdzielczości 192x112 punktów z podświetleniem wbudowany układ ładowania akumulatorów izolowane optycznie wyjście do PC standard RS232 częstotliwość próbkowania 10 Ms/s pasmo analogowe do 2 MHz maksymalne napiecie wejsciowe 100 V pełny auto setup odczyt DVM z opcją x10 obliczanie mocy audio (rms i peak) pomiar dbm, dbv, DC, rms... odczyt częstotliwości zapis sygnału (2 pamięci) wyświetlacz LCD niebieski z podświetleniem: 128x64 pikseli wbudowany układ ładowania akumulatorów Zestaw zawiera: oscyloskop HPS10SE instrukcję w języku polskim izolowaną sondę pomiarową PROBE60S walizkę zasilacz 9 V/500 ma Zestaw zawiera: oscyloskop HPS40 instrukcję w języku polskim futerał izolowaną sondę pomiarową PROBE60S przewód RS232 walizkę zasilacz 9 V/500 ma 799 zł 1699 zł AVT Korporacja Sp. z o.o., 01 939 Warszawa, ul. Burleska 9 tel. 022 568 99 50, fax 022 568 99 55, e mail: handlowy@avt.pl www.sklep.avt.pl 75

znacznik TACCR0 CCIFG i także może zostać wywołane przerwanie (ale inne). Znacznik ten jest identycznie ustawiany także w trybie Up/down, jednak flaga przepełnienia licznika TAIFG jest wtedy uaktywniana w fazie liczenia w dół, przy przejściu ze stanu 0001 do 0000. Zatrzymać licznik można wybierając nie ujęty powyżej tryb pracy stop albo też wybierając tryb Up lub Up/down i wpisując do rejestru TACCR0 same zera. Każdy wpis do rejestru licznika TAR ma skutek natychmiastowy, a odczyt jest zawsze poprawny, gdy licznik jest taktowany sygnałem wewnętrznym. Jeżeli źródło sygnału zegarowego jest zewnętrzne, asynchroniczne względem jednostki centralnej, to przy odczycie nie da wykluczyć przypadkowego trafienia dokładnie w moment zmiany stanu licznika i odczyt może być wówczas błędny. W takiej sytuacji lepiej przed odczytem licznik chwilowo zatrzymać. Gdy licznik liczy w górę w trybie Up albo Up/down, wpis do rejestru TACCR0 liczby mniejszej od aktualnego stanu skutkuje jego natychmiastowym wyzerowaniem. Pozostałe bloki capture/compare działają w standardowy sposób; w rejestrze konfiguracyjnym można wybrać dla danego rejestru tylko jedną z tych opcji. W trybie ciągłym blok o numerze 0 działa tak, jak pozostałe. W innych trybach decyduje on o długości cyklu zliczania. Przy wybraniu opcji compare do wyboru pozostaje jedna z aż siedmiu możliwych akcji podejmowanych na zewnętrznym wyprowadzeniu (output modes), a nie tylko jego permanentne wyzerowanie (reset), ustawienie (set) albo zmiana na stan przeciwny (toggle). Zależy to od trybu pracy licznika i generalnie sprowadza się do dodatkowych zmian stanu wyjścia w momencie uaktywnienia uprzywilejowanego bloku zerowego. Przykładowo możliwa jest zmiana stanu wyjścia na przeciwny, gdy stan licznika zrówna się z zawartością rejestru TACCR1 i wyzerowanie tego wyprowadzenia po osiągnięciu przez licznik wartości z rejestru TACCR0. W efekcie blok wyjściowy zapewnia niespotykaną w innych rozwiązaniach możliwość kształtowania przebiegu wyjściowego i ogromną elastyczność zastosowań. W trybie Up/down porównanie następuje zarówno przy liczeniu w górę, jak i w dół. Pozwala to na uzyskanie w ten sposób przebiegu impulsowego o zmiennym wypełnieniu, symetrycznego względem zarówno początku, jak i środka cyklu zliczania. Wykorzystując dwa lub więcej układy compare da się także łatwo wygenerować kilka przebiegów impulsowych nigdy nienachodzących na siebie. Funkcja capture jest aktywowana zboczu na narastającym, opadającym, albo na każdym z nich. Ponieważ zewnętrzne zdarzenie wywołujące zapamiętanie stanu licznika w rejestrze TACCRx może być całkowicie asynchroniczne względem jego sygnału zegarowego, co skutkować może zapisaniem stanu przypadkowego, przewidziano możliwość synchronizacji wpisu najbliższym zboczem zegara. Wtedy wpis jest zawsze poprawny. Gdy kolejne aktywności bloku capture występują w odstępach porównywalnych z czasami obsługi programowej tych zdarzeń, istnieje prawdopodobieństwo pominięcia jakiegoś odczytu i nadpisania poprzedniej zawartości rejestru nową. Sytuacja taka jest wykrywana przez układ sterowania blokiem capture i jest ustawiany odpowiedni znacznik, który może być sprawdzany programowo. Z układem licznikowo czasowym związane są przerwania z dwoma odrębnymi wektorami: jeden przyporządkowany jest przerwaniu z układu capture/compare_0 TACCR0 CCIFG, oraz drugi, TAIV (Timer_A Interrupt Vector), przydzielony w kolejności priorytetów obsługi blokom capture/compare_1, capture/compare_2 oraz przepełnieniu licznika. Aby zidentyfikować konkretne źródło przerwania, programista powinien sprawdzić zawartość rejestru TAIV, zawierającego odpowiednie znaczniki. Najprościej dodawać jego zawartość bezpośrednio albo po jakiejś modyfikacji do licznika rozkazów, co automatycznie pociąga za sobą skok do właściwej procedury. Po raz kolejny obrazuje to efektywność jednostki centralnej w MSP430; sztuczka taka rzadko bywa możliwa w innych mikrokontrolerach. Jakikolwiek zapis lub odczyt rejestru TAIV kasuje automatycznie znacznik przerwania o najwyższym priorytecie. Jeżeli zatem ustawione były dwa znaczniki, z bloku capture/compare_1 i capture/ compare_2, a w programie obsługi W bardziej rozbudowanych wersjach mikrokontrolerów z tej rodziny występuje jeszcze drugi, bardzo podobny układ licznika B. Współpracują z nim trzy, lub nawet aż siedem bloków capture/compare i różni się w pewnych szczegółach od licznika A. W szczególności może mieć programowaną długość 8, 10, 12 lub 16 bitów, a skojarzone z nim wyjścia mogą przyjmować nie tylko stan niski albo wysoki, ale także być wprowadzane w stan wysokiej impedancji. przerwania wystąpił odczyt rejestru TAIV (co wydaje się być oczywistością), to po instrukcji powrotu RETI pozostanie ustawiony już tylko ten drugi i natychmiast, bez żadnej zbędnej zwłoki, nastąpi uruchomienie kolejnego przerwania. Z układem Licznika_A jest związanych 9 rejestrów: rejestr licznika TAR (Timer_A counter), rejestr sterujący TACTL (Timer_ A control), nr 0 TACCR0 (Timer_A capture/compare 0), TACCTL0 (Timer_A capture/compare control 0), nr 1 TACCR1 (Timer_A capture/compare 1), TACCTL1 (Timer_A capture/compare control 1), nr 2 TACCR1 (Timer_A capture/compare 2), TACCTL2 (Timer_A capture/compare control 2), rejestr przerwań Timer_A interrupt vector TAIV (Timer_A interrupt vector). Wszystkie te rejestry są zerowane po wyzerowaniu mikrokontrolera. Jak wynika z powyższej prezentacji, układ licznikowo czasowy A w MSP430 jak żaden inny wyróżnia się wyjątkową elastycznością i różnorodnością możliwych do wyboru opcji. Trzeba się natrudzić, aby znaleźć jakieś mankamenty przychodzi do głowy jedynie brak możliwości wyboru aktywnego zbocza zegarowego i brak modulacji Σ/ PWM. Ten drugi można jednak w stosunkowo prosty sposób ominąć programowo. Maciej Nowiński 76