główna
technologie
indeks tematyczny
indeks alfabetyczny

8253/8254 programowalny układ czasowo - licznikowy

Układ 8253 jest programowalnym timerem/licznikiem i często oznaczany jest jako PIT (Programmable Interval Timer). System ten spełnia w komputerze zadanie zegara, generatora tonu, zapewniając przy tym prawidłowe (jeśli chodzi o czas) odświeżanie dynamicznego RAM-u.

8253

W komputerze typu AT wbudowany jest układ 8254, pracujący z częstotliwością do 10 MHz, w pełni zachowujący kompatybilność z układem 8253, który mógł pracować z maksymalną częstotliwością 2,6 MHz. W niektórych komputerach typu AT można się spotkać z dwoma układami 8254. Pierwszy układ pracuje wówczas w takim trybie, w jakim by pracował w komputerze PC. Z drugiego układu wykorzystywany jest jedynie licznik dla programowania NMI (Non Maskable Interrupt), a oba pozostałe liczniki pozostają niewykorzystane

PIT (programmable interrupt - timer) zawiera trzy, niezależne od siebie 16-bitowe liczniki (liczące wstecz), wyposażone we własne wejścia - Gate oraz Clock, jak i wyjścia (OUT).

Licznik 0 stosowany jest do generowania przerwania (IRQ 0), wykorzystywanego dla zegara systemowego w komputerach typu 8088/86.
Odświeżanie dynamicznego RAM-u sterowane jest przez licznik 1, który (co 15 m s) przetwarza kanał DMA na 0.
Licznik 2 odpowiedzialny jest za generowanie tonu i - w przeciwieństwie do innych liczników - może być również używany do innych celów.

Stany liczników zapisywane są w trzech adresach rejestru (Counter-Address). Dla ich zaadresowania stosowane są kanały adresujące A0 i A1. Zapis i odczyt odbywa się za pomocą linii /WR oraz /RD.
Układ uaktywniany jest przez ustawienie wartości Low na sygnale pinu /CS. Sygnał ten generowany jest przez odpowiedni układ dekodujący adresy.
Przewody danych D0 do D7 połączone są bezpośrednio z magistralą danych, ponieważ bufor danych (Data Bus Buffer) może być ustawiony w stan wysokiej impedancji przez: /CS = High (Tri-State)
Przez dopowiednie wejście GATE licznik jest uruchamiany, zatrzymywany lub cofany.
Takt doprowadzany jest przez wejście CLK. W momencie, kiedy licznik osiąga wartość 0, na wyjściu pojawia się OUT.

Rejestr sterujący

D7 D6 D5 D4 D3 D2 D1 D0
SC1 SC0 RL1 RL0 M2 M1 M0 BCD

Rejestr ten nie jest dostępny dla odczytu. Odpowiedni licznik wybierany jest przez bity SC0 oraz SC1. Zdefiniowanie trybu pracy (Mode) odbywa się przy pomocy bitów M0 - M2. Bit D0 (BCD) określa, czy dany licznik ma pracować jako 16-bitowy licznik binarny (Low), czy jako dziesiętny (High)

SC1 SC0 Licznik
0 0 0
0 1 1
1 0 2
1 1 zablokowany
RL1 RL0 Funkcja
0 0 Zapis stanu licznika
0 1 Odczyt/Zapis MSB
1 0 Odczyt/Zapis LSB
1 1 Odczyt/Zapis LSB przed MSB
M2 M1 M0 Mode
0 0 0 0
0 0 1 1
x 1 0 2
x 1 1 3
1 0 0 4
1 0 1 5

Tryby pracy układu 8253/8254

Licznik 2 może być programowany przez użytkownika w 6 różnych trybach. Typową wartością częstotliwości na wejściach zegara jest 1,19 MHz, przetwarzane przez generator taktowania, znajdujący się na płycie głównej. Wejście GATE licznika 2 sterowane jest przez bit 1 portu B układu PIO

Programowanie liczników.

Pierwszą operacją jest wpisanie konfiguracji do rejestru stanu (Control Word Register). Licznik definiowany jest przez SC1 oraz SC0 (patrz tabela). Z kolei RL1 i RL0 określają, który bajt (MSB, LSB) ma zostać wprowadzony. Tryb pracy definiowany jest przez M2-M0, natomiast typ licznika (binarny, BCD) - przez bit BCD. Określony w ten sposób stan licznika zapisywany jest w rejestrze licznika 2 (Counter 2).

Aby uniknąć zakłóceń wszystkie trzy liczniki powinny być skonfigurowane - także wtedy, gdy wykorzystujemy tylko jeden z nich. W innym przypadku w czasie działania mogą wystąpić błędy.

Jeśli potrzebujemy 16-bitowego licznika, to zazwyczaj powinniśmy zacząć od wprowadzenia bitu LSB, a następnie MSB. Dlatego wcześniej dla RL1 oraz RL0 w rejestrze kontroli należy wpisać wartość "1". Po dwukrotnym zapisaniu stan licznika zostaje ustalony. Rejestr licznika wypełniony zostanie dopiero wtedy, kiedy na wejściu taktowania pojawi się impuls.

Najwyższa wartość pracy licznika w trybie binarnym wynosi 65536, a dla trybu dziesiętnego 10000. Wielkość ta redukowana jest przy każdym impulsie taktowania.

Kolejność programowania - najpierw rejestr kontroli, potem zapis stanu licznika - niekoniecznie musi być zachowana. Można np. zacząć od trzech zapisów rejestru kontroli (po jednym dla każdego licznika), a dopiero później podać trzy stany licznika.
Odczyt stanów licznika może się odbywać w różny sposób:

Specjalne polecenie, służące do odczytu stanu licznika ma postać:

D7 D6 D5 D4 D3 D2 D1 D0
SC1 SC0 0 0 - - - -

Przy pomocy SC1 oraz SC0 wybierany jest ten licznik, którego stan ma zostać zapisany. Informację o tymczasowym zachowaniu sygnalizują licznikowi D5 i D4 = 0.

Przygotował: Łukasz Staropilny


główna | technologie | indeks tematyczny | indeks alfabetyczny