Rozdział 7.
Układy czasowe
W systemach mikroprocesorowych często stosuje się układy czasowe. Służą one najczęściej do odmierzania czasu, wytwarzania przebiegów o określonej częstotliwości, podziału częstotliwości wejściowej itp. Zadania takie wykonuje się na potrzeby samego systemu mikroprocesorowego. Ponadto układy czasowe mogą także pełnić funkcje pomiarowo-kontrolne, zliczając impulsy pochodzące ze sterowanego obiektu lub wysyłające określone przebiegi do tego obiektu.
Programowalne układy czasowe
Programowalne układy czasowe zawierają po kilka niezależnych liczników, z których każdy może pracować w jednym z kilku dostępnych trybów. Tryby te można zmieniać w czasie pracy systemu, zależnie od potrzeb w danej chwili.
Układ 8253
Układ 8253 firmy Intel jest programowalnym układem czasowym, zawierającym trzy niezależne liczniki o pojemności 16 bitów każdy. Liczniki mogą zliczać w kodzie dwójkowym lub BCD. Każdy licznik posiada trzy sygnały:
CLK —[Author ID1: at Sun Dec 16 14:24:00 2001
]-[Author ID1: at Sun Dec 16 14:23:00 2001
] wejście zliczanych impulsów lub podstawy czasu,
GATE —[Author ID1: at Sun Dec 16 14:24:00 2001
]-[Author ID1: at Sun Dec 16 14:24:00 2001
] wejście bramkujące,
Znaczenie poszczególnych sygnałów zmienia się w zależności od trybu pracy licznika. Każdy licznik może pracować w jednym z sześciu trybów. Liczniki zliczają od zadanej wartości do zera.
W trybie „0” układ pracuje jako licznik. Zapisanie trybu zeruje wyjście OUT, a zapisanie stałej —[Author ID1: at Sun Dec 16 14:25:00 2001
]-[Author ID1: at Sun Dec 16 14:25:00 2001
] rozpoczęcie zliczania (jeżeli GATE jest w stanie wysokim). Wyzerowanie licznika powoduje przejście wyjścia w stan wysoki.
W trybie „1” układ pracuje jako uniwibrator, tj. generator pojedynczego impulsu o zadanym czasie trwania. Narastające zbocze na wejściu GATE powoduje rozpoczęcie zliczania, czemu towarzyszy wyzerowanie wyjścia OUT. Po wyzerowaniu licznika wyjście to przyjmuje stan „1”.
W trybie „2” układ jest dzielnikiem częstotliwości. Narastające zbocze sygnału GATE powoduje automatyczne załadowanie licznika. Gdy GATE [Author ID1: at Sun Dec 16 14:28:00 2001 ]= [Author ID1: at Sun Dec 16 14:28:00 2001 ]„1”, to licznik zlicza impulsy wejściowe, a wyjście jest w stanie wysokim. Wyzerowanie licznika powoduje ustawienie stanu niskiego na wyjściu. Stan ten trwa przez jeden okres sygnału CLK. Jeżeli w czasie zliczania na wejściu GATE pojawi się stan niski, to zliczanie jest wstrzymywane, a licznik przechodzi do stanu czekania na zbocze narastające tego wejścia.
W trybie „3” układ jest generatorem fali prostokątnej. Zbocze narastające sygnału GATE rozpoczyna pracę licznika, a jego wyjście przyjmuje stan przeciwny logicznie do stanu poprzedniego. Po wyzerowaniu licznika wyjście także przechodzi w przeciwny stan logiczny. Pojawienie się stanu niskiego na wejściu GATE powoduje zatrzymanie zliczania i wysłanie na wyjście stanu wysokiego.
W trybie „4” układ działa jak programowo wyzwalany generator impuslu. Zapisanie trybu powoduje przejście wyjścia w stan wysoki. Zapisanie stałej rozpoczyna zliczanie, o ile wejście GATE jest w stanie wysokim. Wyzerowanie licznika powoduje ustawienie wyjścia OUT w stan niski przez jeden okres sygnału CLK.
W trybie „5” układ jest generatorem impulsu wyzwalanym sprzętowo. Rozpoczęcie zliczania następuje na [Author ID1: at Sun Dec 16 15:50:00 2001
]w[Author ID1: at Sun Dec 16 15:50:00 2001
]skutek wystąpienia zbocza narastającego na wejściu GATE, czemu towarzyszy przejście wyjścia OUT w stan wysoki. Wyzerowanie licznika powoduje ustawienie wyjścia OUT w stan niski przez jeden okres sygnału CLK.
Prócz sygnałów sterujących pracą liczników układ 8253 ma oczywiście także wyprowadzenia umożliwiające dołączenie go do magistrali systemowej. Są to sygnały:
D0 - [Author ID1: at Sun Dec 16 14:30:00 2001
]-[Author ID1: at Sun Dec 16 14:30:00 2001
]D7 —[Author ID1: at Sun Dec 16 14:30:00 2001
]-[Author ID1: at Sun Dec 16 14:30:00 2001
] dwukierunkowa, 8-bitowa magistrala danych z wyjściami trójstanowymi;[Author ID1: at Sun Dec 16 14:31:00 2001
],[Author ID1: at Sun Dec 16 14:31:00 2001
]
A0 - [Author ID1: at Sun Dec 16 14:30:00 2001
]-[Author ID1: at Sun Dec 16 14:30:00 2001
]A1 —[Author ID1: at Sun Dec 16 14:30:00 2001
]-[Author ID1: at Sun Dec 16 14:30:00 2001
] wejścia adresowe układu, służące do wyboru jego rejestrów wewnętrznych;[Author ID1: at Sun Dec 16 14:31:00 2001
],[Author ID1: at Sun Dec 16 14:31:00 2001
]
[Author ID1: at Sun Dec 16 14:31:00 2001
]—[Author ID1: at Sun Dec 16 14:30:00 2001
]-[Author ID1: at Sun Dec 16 14:30:00 2001
] wejście uaktywnienia układu, aktywne w[Author ID1: at Sun Dec 16 14:31:00 2001
] [Author ID1: at Sun Dec 16 14:32:00 2001
]stani[Author ID1: at Sun Dec 16 14:31:00 2001
]em[Author ID1: at Sun Dec 16 14:31:00 2001
] niskim;[Author ID1: at Sun Dec 16 14:32:00 2001
],[Author ID1: at Sun Dec 16 14:32:00 2001
]
—[Author ID1: at Sun Dec 16 14:31:00 2001
]-[Author ID1: at Sun Dec 16 14:31:00 2001
] wejście żądania odczytu informacji z układu, aktywne w [Author ID1: at Sun Dec 16 14:32:00 2001
]stani[Author ID1: at Sun Dec 16 14:32:00 2001
]em[Author ID1: at Sun Dec 16 14:32:00 2001
] niskim;[Author ID1: at Sun Dec 16 14:32:00 2001
],[Author ID1: at Sun Dec 16 14:32:00 2001
]
—[Author ID1: at Sun Dec 16 14:31:00 2001
]-[Author ID1: at Sun Dec 16 14:31:00 2001
] wejście żądania zapisu informacji do układu, aktywne w [Author ID1: at Sun Dec 16 14:32:00 2001
]stani[Author ID1: at Sun Dec 16 14:32:00 2001
]em[Author ID1: at Sun Dec 16 14:32:00 2001
] niskim.
Rysunek 7.1. [Author ID1: at Sun Dec 16 14:34:00 2001
][Author ID1: at Sun Dec 16 14:34:00 2001
][Author ID1: at Sun Dec 16 14:34:00 2001
][Author ID1: at Sun Dec 16 14:34:00 2001
]1[Author ID1: at Sun Dec 16 14:34:00 2001
][Author ID1: at Sun Dec 16 14:34:00 2001
]. [Author ID1: at Sun Dec 16 14:34:00 2001
]Wyprowadzenia układów 8253 i Z-80 CTC
Układ Z-[Author ID1: at Sun Dec 16 14:34:00 2001 ]80 CTC
Układ Z-[Author ID1: at Sun Dec 16 14:34:00 2001 ]80 PIO firmy Zilog jest programowalnym układem czasowym, zawierającym cztery niezależne liczniki o pojemności 8 bitów każdy. Liczniki mogą zliczać w kodzie binarnym, a każdy może pracować w jednym z dwóch trybów (licznikowym lub czasowym). Każdy licznik posiada dwa sygnały:
CLK/TRG —[Author ID1: at Sun Dec 16 14:35:00 2001
]-[Author ID1: at Sun Dec 16 14:35:00 2001
] wejście impulsów zliczanych lub sygnałów wyzwalających,
ZC/TO —[Author ID1: at Sun Dec 16 14:35:00 2001
]-[Author ID1: at Sun Dec 16 14:35:00 2001
] wyjście informujące o wyzerowaniu licznika (stan aktywny —[Author ID1: at Sun Dec 16 14:35:00 2001
]-[Author ID1: at Sun Dec 16 14:35:00 2001
] wysoki).
Wyjątkiem jest licznik 3.[Author ID1: at Sun Dec 16 14:37:00 2001
], który nie ma wyjścia ZC/TO. Może on jednak, podobnie jak pozostałe liczniki, zgłaszać przerwania. Stan aktywny wejścia[Author ID1: at Sun Dec 16 14:37:00 2001
]e[Author ID1: at Sun Dec 16 14:37:00 2001
] CLK/TRG można ustalić programowo jako wysoki lub niski. Zmiana ze stanu nieaktywnego na aktywny powoduje:
w trybie licznikowym —[Author ID1: at Sun Dec 16 14:38:00 2001
]-[Author ID1: at Sun Dec 16 14:38:00 2001
] dekrementację licznika,
w trybie czasowym —[Author ID1: at Sun Dec 16 14:38:00 2001
]-[Author ID1: at Sun Dec 16 14:38:00 2001
] rozpoczęcie pomiaru czasu.
W trybie czasowym wejściem podstawy czasu nie jest sygnał CLK/TRG, lecz CLK. Dokładność odmierzania czasu wynosi 16 okresów tego sygnału. Częstotliwość fali taktującej układ można podzielić wewnątrz układu przez 16 lub 256, a następnie przez dowolną liczbę z zakresu 1 - [Author ID1: at Sun Dec 16 14:38:00 2001
]-[Author ID1: at Sun Dec 16 14:38:00 2001
]256. Wyzerowanie licznika powoduje ustawienie wyjścia ZC/TO, może też być powodem zgłoszenia przerwania.
Oprócz sygnałów sterujących pracą liczników układ posiada także wyprowadzenia umożliwiające podłączenie go do magistrali systemowej. Są to sygnały:
D0 - [Author ID1: at Sun Dec 16 14:39:00 2001
]-[Author ID1: at Sun Dec 16 14:39:00 2001
]D7 —[Author ID1: at Sun Dec 16 14:39:00 2001
]-[Author ID1: at Sun Dec 16 14:39:00 2001
] dwukierunkowa, 8-bitowa magistrala danych z wyjściami trójstanowymi;[Author ID1: at Sun Dec 16 14:41:00 2001
],[Author ID1: at Sun Dec 16 14:41:00 2001
]
CS0 - [Author ID1: at Sun Dec 16 14:39:00 2001
]-[Author ID1: at Sun Dec 16 14:39:00 2001
]CS1 —[Author ID1: at Sun Dec 16 14:39:00 2001
]-[Author ID1: at Sun Dec 16 14:39:00 2001
] wejścia adresowe układu, służące do wyboru rejestrów wewnętrznych liczników;[Author ID1: at Sun Dec 16 14:42:00 2001
],[Author ID1: at Sun Dec 16 14:42:00 2001
]
[Author ID1: at Sun Dec 16 14:44:00 2001
]—[Author ID1: at Sun Dec 16 14:40:00 2001
]-[Author ID1: at Sun Dec 16 14:40:00 2001
] wejście uaktywnienia układu, aktywne w [Author ID1: at Sun Dec 16 14:42:00 2001
]stani[Author ID1: at Sun Dec 16 14:43:00 2001
]em[Author ID1: at Sun Dec 16 14:43:00 2001
] niskim;[Author ID1: at Sun Dec 16 14:42:00 2001
],[Author ID1: at Sun Dec 16 14:42:00 2001
]
[Author ID1: at Sun Dec 16 14:44:00 2001
]—[Author ID1: at Sun Dec 16 14:40:00 2001
]-[Author ID1: at Sun Dec 16 14:40:00 2001
] wejście żądania odczytu informacji z układu, aktywne w [Author ID1: at Sun Dec 16 14:43:00 2001
]stani[Author ID1: at Sun Dec 16 14:43:00 2001
]em[Author ID1: at Sun Dec 16 14:43:00 2001
] niskim;[Author ID1: at Sun Dec 16 14:42:00 2001
],[Author ID1: at Sun Dec 16 14:42:00 2001
]
IEI —[Author ID1: at Sun Dec 16 14:40:00 2001
]-[Author ID1: at Sun Dec 16 14:40:00 2001
] wejście zezwolenia na generację przerwania;[Author ID1: at Sun Dec 16 14:42:00 2001
],[Author ID1: at Sun Dec 16 14:42:00 2001
]
IEO —[Author ID1: at Sun Dec 16 14:41:00 2001
]-[Author ID1: at Sun Dec 16 14:41:00 2001
] wyjście zezwolenia na generację przerwania;[Author ID1: at Sun Dec 16 14:42:00 2001
],[Author ID1: at Sun Dec 16 14:42:00 2001
]
[Author ID1: at Sun Dec 16 14:44:00 2001
]—[Author ID1: at Sun Dec 16 14:41:00 2001
]-[Author ID1: at Sun Dec 16 14:41:00 2001
] wyjście zgłoszenia przerwania, aktywne w [Author ID1: at Sun Dec 16 14:43:00 2001
]stani[Author ID1: at Sun Dec 16 14:43:00 2001
]em[Author ID1: at Sun Dec 16 14:43:00 2001
] niskim;[Author ID1: at Sun Dec 16 14:42:00 2001
],[Author ID1: at Sun Dec 16 14:42:00 2001
]
CLK —[Author ID1: at Sun Dec 16 14:41:00 2001
]-[Author ID1: at Sun Dec 16 14:41:00 2001
] wejście zegarowe.
Układ generuje cztery różne wektory przerwań w zależności od tego, który licznik zgłasza przerwanie. Można zatem wykorzystać układ jako sterownik przerwań wektorowych dla mikroprocesora Z-80 (tryb IM 2) dla układów, które nie mają możliwości bezpośredniej pracy w tym trybie — [Author ID1: at Sun Dec 16 14:45:00 2001
]-[Author ID1: at Sun Dec 16 14:45:00 2001
]czyli właściwie wszystkich układów spoza rodziny Z-80. W tym celu należy podłączyć sygnały przerwań do wejść liczników. Każdy licznik powinien pracować w trybie licznikowym ze stałą 1. Wówczas sygnał zgłoszenia przerwania (którego stan aktywny można określić programowo) powoduje wyzerowanie licznika i w konsekwencji zgłoszenie odpowiedniego przerwania do mikroprocesora Z-80. Praca niektórych liczników w roli sterownika przerwań nie wyklucza stosowania innych liczników [Author ID1: at Sun Dec 16 14:56:00 2001
]jako „normalnych” [Author ID1: at Sun Dec 16 14:56:00 2001
] liczników [Author ID1: at Sun Dec 16 14:56:00 2001
]—[Author ID1: at Sun Dec 16 14:54:00 2001
]-[Author ID1: at Sun Dec 16 14:54:00 2001
] dla układu CTC sygnał przerwania jest po prostu zliczanym impulsem. Z punktu widzenia całego systemu przerwań Z-80 licznik 0.[Author ID1: at Sun Dec 16 14:58:00 2001
] ma najwyższy priorytet, a licznik 3.[Author ID1: at Sun Dec 16 14:58:00 2001
] —[Author ID1: at Sun Dec 16 14:58:00 2001
]-[Author ID1: at Sun Dec 16 14:58:00 2001
] najniższy. Jeśli liczba przerwań przekracza 4, można dołączyć kolejny układ CTC, a priorytety między nimi ustala się na podstawie sygnałów IEI i IEO.
Przykłady
Przykład 1.[Author ID1: at Sun Dec 16 14:58:00 2001 ]
Zaprojektować miernik częstotliwości. Układ powinien sygnalizować koniec pomiaru oraz przekroczenie zakresu pomiarowego. Rozpoczęcie pomiaru następuje na [Author ID1: at Sun Dec 16 15:51:00 2001
]w[Author ID1: at Sun Dec 16 15:51:00 2001
]skutek sygnału od mikroprocesora. Wykorzystać układ 8253.
--> Rysunek 7.2.[Author ID1: at Sun Dec 16 14:59:00 2001 ][Author:EK] [Author ID1: at Sun Dec 16 14:59:00 2001 ][Author ID1: at Sun Dec 16 14:59:00 2001 ]
Pomiar częstotliwości polega na zliczeniu impulsów w zadanym czasie. Układ musi więc zawierać generator impulsu o zadanym czasie trwania oraz licznik impulsów bramkowany wyjściem generatora. Obie funkcje da się zrealizować przy użyciu układu 8253.
Licznik 0.[Author ID1: at Sun Dec 16 15:00:00 2001
] układu pełni funkcję dzielnika częstotliwości i pracuje w trybie 2.[Author ID1: at Sun Dec 16 15:01:00 2001
] lub 3.[Author ID1: at Sun Dec 16 15:01:00 2001
], dzięki czemu na jego wyjściu pojawia się fala prostokątna o częstotliwości równej częstotliwości wejściowej podzielonej przez zawartość licznika. Wyjście licznika 0.[Author ID1: at Sun Dec 16 15:01:00 2001
] steruje wejściem licznika 1.[Author ID1: at Sun Dec 16 15:01:00 2001
], który pracuje jako licznik (tryb 0.[Author ID1: at Sun Dec 16 15:01:00 2001
]). Póki licznik 1.[Author ID1: at Sun Dec 16 15:02:00 2001
] nie jest wyzerowany, jego wyjście jest w stanie niskim. Natomiast wyzerowanie go (czyli przekroczenie zakresu miernika) powoduje ustawienie wyjścia w stan „1”, co można traktować jako sygnał przekroczenia zakresu. Sygnał ten można wykorzystać na kilka sposobów, m. [Author ID1: at Sun Dec 16 15:02:00 2001
]in. sygnał ten [Author ID1: at Sun Dec 16 15:03:00 2001
]może być zródłem przerwania lub tylko sygnałem stanu modułu, można także wyprowadzić go do otoczenia.
Licznik 2.[Author ID1: at Sun Dec 16 15:03:00 2001 ] jest generatorem podstawy czasu i pracuje w trybie 1. Do rozpoczęcia odmierzania czasu licznik ten [Author ID1: at Sun Dec 16 15:04:00 2001 ]potrzebuje zatem sygnału zewnętrznego (zbocze narastające sygnału Beg). Sygnał ten można wytworzyć w mikroprocesorze, ale może też pochodzić z otoczenia. Do wejścia licznika powinien dochodzić przebieg taktujący o dużej stałości częstotliwości, np. sygnał taktowania mikroprocesora. Wyjście licznika jest w stanie niskim podczas zliczania, a po jego zakończeniu przyjmuje stan wysoki, który można potraktować jak sygnał zakończenia pomiaru bez błędów (przepełnienia). Jest to możliwe dzięki temu, że wystąpienie przepełnienia blokuje dalsze zliczanie impulsów wejściowych. Także i ten sygnał może być źródłem przerwania, można go także wyprowadzić do otoczenia.
Wynik pomiaru częstotliwości można uzyskać, odczytując liczniki 0.[Author ID1: at Sun Dec 16 15:05:00 2001
] i 1. Ponieważ są to liczniki zliczające wstecz, odczytane wartości należy odjąć od wartości maksymalnej (65 [Author ID1: at Sun Dec 16 15:05:00 2001
]535 dla trybu dwójkowego i 9 [Author ID1: at Sun Dec 16 15:05:00 2001
]999 dla BCD). Zmiana zakresu pomiaru wymaga wpisania innej wartości do licznika 2.[Author ID1: at Sun Dec 16 15:05:00 2001
], co pociąga za sobą zmianę czasu trwania impulsu wyjściowego. Przykładowo, jeżeli czas trwania tego impulsu wynosi 1 s, to uzyskany wynik jest wyrażony w Hz, 1 ms —[Author ID1: at Sun Dec 16 15:06:00 2001
]-[Author ID1: at Sun Dec 16 15:06:00 2001
] w kHz, 1 μs —[Author ID1: at Sun Dec 16 15:06:00 2001
]-[Author ID1: at Sun Dec 16 15:06:00 2001
] w MHz.
Przykład 2.[Author ID1: at Sun Dec 16 15:07:00 2001 ]
Zaprojektować moduł, realizujący pomiar częstotliwości jednego z ośmiu wejść, wytwarzanie fali prostokątnej o zadanej częstotliwości oraz generowanie przerwania po zadanym czasie. Wykorzystać układ 8253.
--> Rysunek 7.3.[Author ID1: at Sun Dec 16 15:07:00 2001 ][Author:EK] [Author ID1: at Sun Dec 16 15:08:00 2001 ][Author ID1: at Sun Dec 16 15:07:00 2001 ]
Licznik 0.[Author ID1: at Sun Dec 16 15:08:00 2001
] układu 8253 pracuje jako licznik w trybie 0 i zlicza impulsy wejściowe, pochodzące z multipleksera 74152, który wybiera jedno z ośmiu wejść do modułu. Zliczanie jest możliwe, gdy zarówno wyjście licznika 1.[Author ID1: at Sun Dec 16 15:08:00 2001
], jak i wyjście Q3 rejestru 74574, są w stanie niskim. Licznik 1.[Author ID1: at Sun Dec 16 15:09:00 2001
] pracuje w trybie 0.[Author ID1: at Sun Dec 16 15:09:00 2001
] i wytwarza podstawę czasu dla pomiaru częstotliwości w [Author ID1: at Sun Dec 16 15:53:00 2001
]opierając się na [Author ID1: at Sun Dec 16 15:53:00 2001
]oparciu o [Author ID1: at Sun Dec 16 15:53:00 2001
]sygnale[Author ID1: at Sun Dec 16 15:54:00 2001
]ł[Author ID1: at Sun Dec 16 15:54:00 2001
] zegarowym[Author ID1: at Sun Dec 16 15:54:00 2001
] mikroprocesora. Podczas zliczania wyjście licznika 1.[Author ID1: at Sun Dec 16 15:09:00 2001
] jest w stanie niskim. Licznik 2.[Author ID1: at Sun Dec 16 15:09:00 2001
] pracuje w trybie 3.[Author ID1: at Sun Dec 16 15:09:00 2001
] jako generator fali prostokątnej, która jest dostępna na wyjściu F.
Aby wygenerować przerwanie po określonym czasie, należy zablokować pomiar częstotliwości. Służy do tego bit Q3 rejestru sterującego 74574. Jeśli jest on równy 1, pomiar częstotliwości jest zablokowany. Jednocześnie licznik 1.[Author ID1: at Sun Dec 16 15:14:00 2001
] powinien pracować w trybie 4.[Author ID1: at Sun Dec 16 15:14:00 2001
] jako generator impulsu wyzwalany programowo, choć także może kontynuować pracę w trybie 0.[Author ID1: at Sun Dec 16 15:14:00 2001
] —[Author ID1: at Sun Dec 16 15:14:00 2001
]-[Author ID1: at Sun Dec 16 15:14:00 2001
] różnice między tymi trybami nie są duże i dotyczą głównie sposobu określania stanu wyjścia licznika.
Prócz włączania i wyłączania pomiaru częstotliwości, rejestr 74754 pozwala także określić, które z wejść I0 - [Author ID1: at Sun Dec 16 15:15:00 2001
]-[Author ID1: at Sun Dec 16 15:14:00 2001
]I7 podlega temu pomiarowi.
Przykład 3.[Author ID1: at Sun Dec 16 15:15:00 2001 ]
Zaprojektować układ, realizujący pomiar okresu sygnału wejściowego. Przekroczenie zakresu i koniec pomiaru powinny być zgłaszane odpowiednimi sygnałami. Wykorzystać układ 8253.
Pomiar okresu polega na zliczaniu impulsów zegarowych, które pojawiają się w czasie równym okresowi sygnału wejściowego. Ponieważ okres sygnału obejmuje zarówno stan wysoki, jak i niski, bramkowanie sygnału jest kłopotliwe. Dlatego też konieczne jest podzielenie częstotliwości wejściowej przez 2. Można to zrealizować w przerzutniku 7474 albo korzystając z licznika układu 8253. Dzięki temu pomiar okresu przebiegu wejściowego jest możliwy w co drugim okresie tego przebiegu.
--> Rysunek 7.4.[Author ID1: at Sun Dec 16 15:26:00 2001 ][Author:EK] [Author ID1: at Sun Dec 16 15:27:00 2001 ][Author ID1: at Sun Dec 16 15:26:00 2001 ]
Licznik 0.[Author ID1: at Sun Dec 16 15:28:00 2001
] pracuje w trybie 2.[Author ID1: at Sun Dec 16 15:28:00 2001
] jako dzielnik częstotliwości, a licznik 1.[Author ID1: at Sun Dec 16 15:28:00 2001
] —[Author ID1: at Sun Dec 16 15:28:00 2001
]-[Author ID1: at Sun Dec 16 15:28:00 2001
] jako licznik impulsów w trybie 0. Liczniki te pracują, gdy na ich wejściach bramkujących jest stan wysoki. Sytuacja taka ma miejsce w co drugim okresie przebiegu wejściowego i trwa przez cały jego okres. Zatem liczba zliczonych impulsów zegarowych (o stałej częstotliwości) pozwala wyznaczyć okres przebiegu wejściowego. Wystąpienie przepełnienia (stan wysoki wyjścia licznika 1.[Author ID1: at Sun Dec 16 15:28:00 2001
]) zatrzymuje zliczanie i jest sygnalizowane do otoczenia lub mikroprocesora. Bezbłędny koniec pomiaru także powoduje wytworzenie odpowiedniego sygnału. W omawianym przykładzie wystąpienie przepełnienia powoduje również zgłoszenie końca pomiaru.
Jeżeli do podziału częstotliwości przez 2 użyty jest licznik układu 8253, to powinien on pracować w takim trybie, który zapewnia stan niski na wyjściu przez jeden okres sygnału wejściowego. Warunku tego nie spełnia tylko tryb 0. Najwygodniejszy w użyciu jest tryb 4.[Author ID1: at Sun Dec 16 15:29:00 2001
], ponieważ rozpoczęcie pomiaru nie wymaga dodatkowego sygnału zewnętrznego —[Author ID1: at Sun Dec 16 15:29:00 2001
]-[Author ID1: at Sun Dec 16 15:29:00 2001
] licznik rozpoczyna pracę, gdy tylko wpisze się do niego stałą czasową. Stan niski na wyjściu trwa dokładnie jeden okres przebiegu wejściowego, ale pojawia się dopiero po wyzerowaniu licznika. Pomiar będzie zatem opóźniony. Ta sama uwaga dotyczy także trybów 2.[Author ID1: at Sun Dec 16 15:30:00 2001
] i 5. Można więc zaprogramować licznik do pracy w trybie 1.[Author ID1: at Sun Dec 16 15:30:00 2001
] lub 3. Pomiar się rozpoczyna, gdy na wejściu bramkującym licznika pojawia się zbocze narastające. W trybie 3.[Author ID1: at Sun Dec 16 15:30:00 2001
] jest on jednak opóźniony o jeden okres sygnału wejściowego —[Author ID1: at Sun Dec 16 15:30:00 2001
]-[Author ID1: at Sun Dec 16 15:30:00 2001
] generator fali prostokątnej zaczyna pracę od stanu „1” na wyjściu. Dlatego też najlepiej zastosować tryb 1.[Author ID1: at Sun Dec 16 15:31:00 2001
] licznika.
Przykład 4.[Author ID1: at Sun Dec 16 15:31:00 2001 ]
Zaprojektować miernik częstotliwości. Układ powinien sygnalizować koniec pomiaru oraz przekroczenie zakresu pomiarowego. Rozpoczęcie pomiaru następuje na [Author ID1: at Sun Dec 16 15:31:00 2001
]w[Author ID1: at Sun Dec 16 15:31:00 2001
]skutek sygnału od mikroprocesora. W zadaniu należy również [Author ID1: at Sun Dec 16 15:31:00 2001
]w[Author ID1: at Sun Dec 16 15:32:00 2001
]W[Author ID1: at Sun Dec 16 15:32:00 2001
]ykorzystać układ Z-80 CTC. Dodatkowo układ powinien pełnić funkcję zegara czasu rzeczywistego.
--> Rysunek 7.5.[Author ID1: at Sun Dec 16 15:32:00 2001 ][Author:EK] [Author ID1: at Sun Dec 16 15:33:00 2001 ][Author ID1: at Sun Dec 16 15:32:00 2001 ]
Licznik 0.[Author ID1: at Sun Dec 16 15:33:00 2001
] pracuje w trybie licznikowym, a jego zadaniem jest zliczanie impulsów podawanych na wejście CLK/TRG. Impulsy te są wytwarzane na podstawie przebiegu wejściowego Fx, którego częstotliwość jest mierzona. Bramka przepuszcza te[Author ID1: at Sun Dec 16 15:34:00 2001
] impulsy na wejście licznika tylko podczas pomiaru. Czas trwania pomiaru wyznaczany jest przez licznik 1. Pracuje on w trybie licznikowym, dzieląc częstotliwość zegara systemowego CLK. Wyzerowanie licznika powoduje przejście wyjścia ZC/TO w stan wysoki, co można wykorzystać do wytworzenia sygnału informującego otoczenie o zakończeniu pomiaru. Z kolei sygnał przepełnienia licznika 1.[Author ID1: at Sun Dec 16 15:35:00 2001
] informuje o przekroczeniu zakresu. Do poinformowania mikroprocesora o tych zdarzeniach wystarczy sygnał przerwania
. Przerwanie można wygenerować w każdym liczniku z osobna, o ile zostały one odpowiednio zaprogramowane.
Licznik 1.[Author ID1: at Sun Dec 16 15:36:00 2001
] może także pracować w trybie czasowym. Wówczas do jego wejścia CLK/TRG można dołączyć sygnał rozpoczęcia pomiaru. Sygnał ten nie jest jednak niezbędny dla poprawnej pracy układu, ponieważ licznik można zaprogramować tak, aby nie korzystał z tego wejścia. Faktyczny początek pomiaru może się jednak nieco opóźnić —[Author ID1: at Sun Dec 16 15:36:00 2001
]-[Author ID1: at Sun Dec 16 15:36:00 2001
] do momentu, aż wyjście tego licznika przyjmie stan niski.
Liczniki 2.[Author ID1: at Sun Dec 16 15:36:00 2001 ] i 3.[Author ID1: at Sun Dec 16 15:36:00 2001 ] pełnią funkcję zegara czasu rzeczywistego. Pracują one w trybie licznikowym. Licznik 2.[Author ID1: at Sun Dec 16 15:36:00 2001 ] dzieli częstotliwość 32 [Author ID1: at Sun Dec 16 15:37:00 2001 ]768 Hz (pochodzącą z generatora) przez 256, dzięki czemu na wejściu licznika 3.[Author ID1: at Sun Dec 16 15:37:00 2001 ] jest fala prostokątna o częstotliwości 128 Hz. Licznik ten dzieli ją przez 128. Wyzerowanie licznika powinno powodować zgłoszenie przerwania, ponieważ licznik 3.[Author ID1: at Sun Dec 16 15:38:00 2001 ] nie ma innej możliwości poinformowania o tym fakcie (brak wyjścia ZC/TO). W ten sposób mikroprocesor otrzymuje przerwanie dokładnie co 1 sekundę.
Przykład 5.[Author ID1: at Sun Dec 16 15:38:00 2001 ]
Zaprojektować sterownik przerwań, umożliwiający dołączenie ośmiu urządzeń spoza rodziny Z-80. Urządzenia te powinny mieć możliwość generowania przerwań wektorowych zgodnych z trybem IM 2 mikroprocesora. W zadaniu należy również [Author ID1: at Sun Dec 16 15:39:00 2001
]w[Author ID1: at Sun Dec 16 15:40:00 2001
]W[Author ID1: at Sun Dec 16 15:40:00 2001
]ykorzystać układ Z-80 CTC.
Aby dołączyć osiem urządzeń, potrzebne są dwa układy CTC. Każdy z nich obsługuje cztery urządzenia. Żądania obsługi zgłasza się na wejścia licznikowe. Każdy licznik powinien być zaprogramowany tak, aby każde zgłoszenie spowodowało wygenerowanie przerwania przez ten licznik. W tym celu do licznika należy zapisać stałą 1 oraz odpowiednio ustalić stan aktywny wejścia (zbocze narastające lub opadające). Licznik musi także mieć możliwość zgłaszania przerwań.
--> Rysunek [Author ID1: at Sun Dec 16 15:40:00 2001 ]7.6.[Author ID1: at Sun Dec 16 15:40:00 2001 ][Author:EK] [Author ID1: at Sun Dec 16 15:41:00 2001 ][Author ID1: at Sun Dec 16 15:40:00 2001 ]
Jeden z układów CTC ma wejście IEI ustawione w stan wysoki. Przerwania pochodzące od tego układu mają zatem wyższy priorytet, niż przerwania pochodzące od układu drugiego. Wejście IEI drugiego układu jest bowiem dołączone do wyjścia[Author ID1: at Sun Dec 16 15:42:00 2001
]e[Author ID1: at Sun Dec 16 15:42:00 2001
] IEO pierwszego układu[Author ID1: at Sun Dec 16 15:42:00 2001
]. Dlatego też możliwość obsługi przerwania z drugiego układu zależy od tego, czy pierwszy układ ma jakieś nie obsłużone zgłoszenie przerwania. Jeśli tak, to zostanie ono uwzględnione przed jakimkolwiek zgłoszeniem z drugiego układu.
Wyjścia
obu układów CTC są zwarte razem i sterują wejściem zgłoszenia przerwania maskowalnego w mikroprocesorze.
Przykład 6.[Author ID1: at Sun Dec 16 15:43:00 2001 ]
Zaprojektować miernik okresu lub częstotliwości, wykorzystując liczniki wewnętrzne mikroprocesora 8051.
W trakcie pomiaru częstotliwości licznik 0.[Author ID1: at Sun Dec 16 15:44:00 2001
] mikroprocesora pracuje w trybie licznikowym i zlicza impulsy wejściowe. Licznik 1.[Author ID1: at Sun Dec 16 15:44:00 2001
] pełni wówczas funkcję czasomierza i wytwarza podstawę czasu w oparciu o [Author ID1: at Sun Dec 16 15:57:00 2001
]op[Author ID1: at Sun Dec 16 15:56:00 2001
]ierając się[Author ID1: at Sun Dec 16 16:02:00 2001
] na [Author ID1: at Sun Dec 16 15:56:00 2001
]węwnętrznym[Author ID1: at Sun Dec 16 15:57:00 2001
] sygnale[Author ID1: at Sun Dec 16 15:57:00 2001
]ł[Author ID1: at Sun Dec 16 15:57:00 2001
] zegarowym[Author ID1: at Sun Dec 16 15:57:00 2001
] mikroprocesora o częstotliwości równej [Author ID1: at Sun Dec 16 16:03:00 2001
]1/12 częstotliwości oscylatora kwarcowego. Rozpoczęcie pomiaru wywołuje się programowo przez włączenie obu liczników. Bezbłędne zakończenie pomiaru następuje, gdy przepełni się licznik 1. Przekroczenie zakresu natomiast jest wywołane przepełnieniem licznika 0. Obie sytuacje mogą powodować zgłoszenie wewnętrznego przerwania od układu czasowo-licznikowego, jeżeli tylko odpowiednio zaprogramowano układ przerwań. Oba liczniki należy zaprogramować tak, aby ignorowały stan wejść
, które mogą bramkować określone sygnały.
W trakcie pomiaru okresu licznik 0.[Author ID1: at Sun Dec 16 15:46:00 2001
] pracuje jako czasomierz i zlicza wewnętrzne impulsy zegarowe mikroprocesora. Powinien być
-->
on[Author:EK]
[Author ID1: at Sun Dec 16 15:47:00 2001
] zaprogramowany tak, aby stan wysoki na wejściu
blokował dochodzenie impulsów do licznika. Wówczas zliczanie następuje tylko wtedy, gdy na wyjściu przerzutnika 7474 jest stan niski. Ponieważ przerzutnik dzieli częstotliwość sygnału wejściowego przez 2, zliczanie jest odblokowywane w co drugim okresie sygnału wejściowego. Przepełnienie licznika 0.[Author ID1: at Sun Dec 16 15:47:00 2001
] oznacza przekroczenie zakresu i może stanowić źródło przerwania wewnętrznego. Koniec pomiaru sygnalizuje się stanem wysokim na wejściu
. Aby zgłosić przerwanie, można wyjście zanegowane przerzutnika (
) wykorzystać jako sygnał zgłoszenia przerwania
. Przerwanie to powinno być nieaktywne podczas pomiaru częstotliwości.
--> Rysunek 7.7.[Author ID1: at Sun Dec 16 15:48:00 2001 ][Author:EK] [Author ID1: at Sun Dec 16 15:48:00 2001 ][Author ID1: at Sun Dec 16 15:48:00 2001 ]
Zarówno podczas pomiaru częstotliwości, jak i okresu, liczniki powinny pracować w trybie 1. Mają one wówczas pojemność 16 bitów, co umożliwia pomiary z większą dokładnością.
Przykład 7.[Author ID1: at Sun Dec 16 15:49:00 2001 ]
Podać koncepcję pomiaru szerokości impulsów i pomiaru stopnia wypełnienia fali prostokątnej.
Pomiar szerokości impulsów jest zbliżony do pomiaru okresu. Jedyna różnica to ta, że szerokość impulsu wymaga pomiaru tylko przez czas równy czasowi trwania wybranego stanu logicznego sygnału wejściowego. Załóżmy, że jest to stan wysoki. Podczas trwania tego stanu należy zliczać impulsy zegarowe. Liczba zliczonych impulsów zegarowych określa szerokość impulsu wejściowego.
Pomiar szerokości impulsu można wykorzystać także do pomiaru stopnia wypełnienia fali prostokątnej. W tym przypadku należy jednocześnie dokonać pomiaru okresu i szerokości impulsu. Czas trwania impulsu podzielony przez okres sygnału wejściowego określa stopień wypełnienia.
2 Część I ♦ Podstawy obsługi systemu WhizBang (Nagłówek strony)
2 C:\Moje dokumenty\Korekta\Uklady mikro\1 Od autora\r7-1.doc
[Author ID1: at Sun Dec 16 14:59:00 2001 ][Author ID1: at Sun Dec 16 14:59:00 2001 ][Author ID1: at Sun Dec 16 14:59:00 2001 ][Author ID1: at Sun Dec 16 14:59:00 2001 ][Author ID1: at Sun Dec 16 14:59:00 2001 ] Brak podpisu.[Author ID1: at Sun Dec 16 14:59:00 2001 ]
[Author ID1: at Sun Dec 16 15:08:00 2001 ][Author ID1: at Sun Dec 16 15:08:00 2001 ][Author ID1: at Sun Dec 16 15:08:00 2001 ][Author ID1: at Sun Dec 16 15:08:00 2001 ][Author ID1: at Sun Dec 16 15:08:00 2001 ] Brak podpisu.[Author ID1: at Sun Dec 16 15:08:00 2001 ]
[Author ID1: at Sun Dec 16 15:27:00 2001 ][Author ID1: at Sun Dec 16 15:27:00 2001 ][Author ID1: at Sun Dec 16 15:27:00 2001 ][Author ID1: at Sun Dec 16 15:27:00 2001 ][Author ID1: at Sun Dec 16 15:27:00 2001 ] Brak podpisu.[Author ID1: at Sun Dec 16 15:27:00 2001 ]
[Author ID1: at Sun Dec 16 15:33:00 2001 ][Author ID1: at Sun Dec 16 15:33:00 2001 ][Author ID1: at Sun Dec 16 15:33:00 2001 ][Author ID1: at Sun Dec 16 15:33:00 2001 ][Author ID1: at Sun Dec 16 15:33:00 2001 ] Brak podpisu.[Author ID1: at Sun Dec 16 15:33:00 2001 ]
[Author ID1: at Sun Dec 16 15:41:00 2001 ][Author ID1: at Sun Dec 16 15:41:00 2001 ][Author ID1: at Sun Dec 16 15:41:00 2001 ][Author ID1: at Sun Dec 16 15:41:00 2001 ][Author ID1: at Sun Dec 16 15:41:00 2001 ] Brak podpisu.[Author ID1: at Sun Dec 16 15:41:00 2001 ]
[Author ID1: at Sun Dec 16 15:47:00 2001 ][Author ID1: at Sun Dec 16 15:47:00 2001 ][Author ID1: at Sun Dec 16 15:47:00 2001 ][Author ID1: at Sun Dec 16 15:47:00 2001 ][Author ID1: at Sun Dec 16 15:47:00 2001 ] Mikroprocesor czy licznik?[Author ID1: at Sun Dec 16 15:47:00 2001 ]
[Author ID1: at Sun Dec 16 15:48:00 2001 ][Author ID1: at Sun Dec 16 15:48:00 2001 ][Author ID1: at Sun Dec 16 15:48:00 2001 ][Author ID1: at Sun Dec 16 15:48:00 2001 ][Author ID1: at Sun Dec 16 15:48:00 2001 ] Brak podpisu.[Author ID1: at Sun Dec 16 15:48:00 2001 ]