il temporizzatore d'intervalli 8253

12

Click here to load reader

Upload: sergio-porcu

Post on 14-Jun-2015

656 views

Category:

Education


0 download

TRANSCRIPT

Page 1: Il temporizzatore d'intervalli 8253

Sistemi a Microprocessore 8253

Sergio PORCU 1

1

Sistemi a Microprocessore

IL TEMPORIZZATORE DI INTERVALLI 8253

2

Il timer 8253

Un timer è un dispositivo di I/O che effettua operazioni di temporizzazione, fornendo un determinato segnale di clock che permette di scandire in maniera discreta il tempo. In particolare, il timer di sistema possiede tre canali distinti che adempiono alle seguenti funzioni:

• il canale 0 è utilizzato per temporizzate segnali di interruzioni di tipo 8, la cui frequenza di interruzione è programmabile

• il canale 1 ha il compito di fornire il clock per il refresh della RAM

• il canale 2 può essere connesso all’altoparlante di sistema, generando suoni di frequenza desiderata

Page 2: Il temporizzatore d'intervalli 8253

Sistemi a Microprocessore 8253

Sergio PORCU 2

3

Il timer 8253

4

Gestione degli indirizzi

Il timer di sistema, per una sua gestione completa, necessita di quattro porte logiche: una per la programmazione del dispositivo (registro di controllo del timer) e tre per impostare i valori corrispondenti ad ognuno dei canali.

Page 3: Il temporizzatore d'intervalli 8253

Sistemi a Microprocessore 8253

Sergio PORCU 3

5

Gestione degli indirizzi

• porta 40h: canale 0• porta 41h: canale 1• porta 42h: canale 2• porta 43h: registro di controllo

6

Registro di controllo

bit 7 – 6: valore del canale su cui operare:

• 00, contatore del canale 0• 01, contatore del canale 1• 10, contatore del canale 2

Page 4: Il temporizzatore d'intervalli 8253

Sistemi a Microprocessore 8253

Sergio PORCU 4

7

Registro di controllo

bit 5 – 4: operazione da effettuare sul contatore:

• 00, memorizza staticamente il valore su cui operare, per una successiva lettura

• 01, predispone il timer alla reinizializzazione del byte meno significativo

• 10, abilita il dispositivo per la reinizializzazione del byte più significativo

• 11, permette di inizializzare in sequenza il byte meno significativo e più significativo

8

Registro di controllo

bit 3 – 1: selezionano il modo di funzionamento del timer, ovvero indicano sotto quale forma deve essere generato il segnale di uscita (dal modo 0 al modo 5); in particolare il modo 3 genera segnali digitali che hanno f.d.o. quadra

Page 5: Il temporizzatore d'intervalli 8253

Sistemi a Microprocessore 8253

Sergio PORCU 5

9

Registro di controllo

bit 0: definisce il sistema di conteggio:• 0 binario• 1 BCD

10

Canale 0

Il canale 0 è utilizzato per temporizzare interruzioni di tipo 8. Occorre sottolineare che la priorità delle interruzioni dettate dal timer è superiore a qualunque altra interruzione hardware, per permettere al sistema di effettuare “in tempo” specifiche operazioni. Si deve, perciò, prevedere che il sistema non vada in stallo eseguendo codici molto brevi, ovvero che impiegano un tempo di esecuzione minimo.

Page 6: Il temporizzatore d'intervalli 8253

Sistemi a Microprocessore 8253

Sergio PORCU 6

11

Canale 0

Questo problema deriva dal fatto che il sistema operativo MS-DOS non è multitasking. Evidentemente, se si occupa una chiamata al sistema con operazioni prioritarie che comportano un notevole tempo, il sistema entra in blocco.

12

Canale 0

Il timer è basato su un oscillatore. Ad ogni battito dell’oscillatore corrisponde un operazione che decrementa il contatore associato (e contenuto all’interno dello stesso timer) sino a quando esso non è uguale a 0. In corrispondenza di questo evento viene generata una interruzione di tipo 8 e il registro viene reimpostato al suo valore iniziale per un nuovo ciclo.

Page 7: Il temporizzatore d'intervalli 8253

Sistemi a Microprocessore 8253

Sergio PORCU 7

13

Canale 0

All’avvio del calcolatore il BIOS imposta il valore del registro associato al canale 0 al valore 0000h. Cosicché il prossimo valore 0000h di questo registro avverrà dopo 216 cicli, cioè dopo circa 54,9 msec. La porta associata al canale 0 è la 40H, ma per abilitare il timer a lavorare su questa porta è necessario impostare il registro di controllo dell’8253 (o 8254) tramite la porta 43H. Per evitare errori di processo bisogna prevedere che il timer impieghi un tempo d’esecuzione corretto rispetto ai tempi della CPU, che sono molto ridotti.

14

Canale 0

Solitamente si utilizzano una sequenza di operazioni che permettono un discreto funzionamento dell’algoritmo di lettura (nel caso si voglia sfruttare l’alta frequenza di conteggio per operare una scansione temporale). Il codice che rappresenta questa operazione è il seguente:

MOV AL, 00hOUT 43h, AL

Page 8: Il temporizzatore d'intervalli 8253

Sistemi a Microprocessore 8253

Sergio PORCU 8

15

Canale 0

Per leggere sulla porta è necessario seguire delle convenzioni stabilite dal costruttore del dispositivo. In questo caso bisogna leggere un dato di due byte ma, poiché il timer dispone di un porta associata al contatore del canale 0 ad un solo byte, occorre effettuare due letture successive di un byte: prima quello meno significativo, dopo quello più significativo.

16

Canale 0

IN AL, 40h;legge il byte meno significativo dal contatore

del canale 0 MOV CL, AL;lo memorizza nel byte basso di CX IN AL, 40h;legge il byte più significativo del contatore del

canale 0 MOV CH, AL;lo memorizza nel byte alto di CX

Page 9: Il temporizzatore d'intervalli 8253

Sistemi a Microprocessore 8253

Sergio PORCU 9

17

Canale 1

La programmazione del clock di refresh per la RAM è demandata al costruttore, il quale provvederà a impostare la frequenza più appropriata per il sistema sul quale è previsto l’assemblaggio del timer. La porta associata al canale 1 è la 41H.

18

Canale 2

Esso è solitamente utilizzato per la generazioni di segnali periodici ad onda quadra. Per ottenere un segnale ad una specifica frequenza si deve impostare il rispettivo contatore tramite la relativa porta. La frequenza sarà pari al quoziente tra la frequenza d’ingresso (in genere 1,193180MHz) e il valore del contatore impostato da programma.

Page 10: Il temporizzatore d'intervalli 8253

Sistemi a Microprocessore 8253

Sergio PORCU 10

19

Canale 2

Un uso frequente del canale 2 consiste nel pilotare l’altoparlante di sistema, il quale necessita proprio di onde quadre per emettere suoni ad una frequenza pari a quella del segnale d’ingresso. L’altoparlante di sistema è indirizzabile alla porta 61H; per utilizzarlo insieme al timer è sufficiente impostare ad 1 i due bit meno significativi del valore corrente della porta.

20

Canale 2

IN AL, 61h;rilevamento valore corrente della porta

dell’altoparlante OR AL, 03h;impostazione ad uno dei due bit meno

significativiOUT 61h, AL;impostazione nuovo valore della porta

dell’altoparlante

Page 11: Il temporizzatore d'intervalli 8253

Sistemi a Microprocessore 8253

Sergio PORCU 11

21

Canale 2

Per ottenere l’effetto contrario, cioè disabilitare la connessione tra timer e altoparlante, è sufficiente porre a 0 gli stessi bit modificati in precedenza

IN AL, 61h;rilevamento valore corrente della porta

dell’altoparlante AND AL, 0FCh;impostazione a 0 dei due bit meno significativiOUT 61h, AL;impostazione nuovo valore della porta dell’altoparlante

22

Altoparlante

L’altoparlante di sistema è un dispositivo che genera suoni a seconda del segnale d’ingresso trasmessogli. Esso funziona per mezzo di segnali con f.d.o. quadra che sollecitano una membrana, la quale emette fisicamente un suono della frequenza dell’impulso elettrico che lo ha generato.

Page 12: Il temporizzatore d'intervalli 8253

Sistemi a Microprocessore 8253

Sergio PORCU 12

23

Definizione adottata dalla Carnegie-Mellon University per l’interrupt di tipo 8

INT 08 - IRQ0 - TIMER INTERRUPTGenerated 18.2 times per second, this

interrupt is used to keep the time-of-day clock updated.