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.
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