Sistemi a Microprocessore                                                                 8253




                      Sistemi a Microprocessore


                                     IL TEMPORIZZATORE DI
                                         INTERVALLI 8253



                                                                                  1




                                        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
                                                                                      2




Sergio PORCU                                                                                 1
Sistemi a Microprocessore                                                  8253




                                  Il timer 8253




                                                                       3




                            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.


                                                                       4




Sergio PORCU                                                                  2
Sistemi a Microprocessore                                          8253




                              Gestione degli indirizzi

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




                                                               5




                                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




                                                               6




Sergio PORCU                                                          3
Sistemi a Microprocessore                                                     8253




                              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
                                                                          7




                              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

                                                                          8




Sergio PORCU                                                                     4
Sistemi a Microprocessore                                                   8253




                              Registro di controllo

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

                      • 1 BCD




                                                                       9




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




Sergio PORCU                                                                   5
Sistemi a Microprocessore                                                       8253




                                       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.

                                                                           11




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




Sergio PORCU                                                                       6
Sistemi a Microprocessore                                                          8253




                                         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.

                                                                              13




                                         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, 00h
                                        OUT 43h, AL
                                                                              14




Sergio PORCU                                                                          7
Sistemi a Microprocessore                                                       8253




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




                                      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
                                                                           16




Sergio PORCU                                                                       8
Sistemi a Microprocessore                                                 8253




                                     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.

                                                                     17




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




Sergio PORCU                                                                 9
Sistemi a Microprocessore                                                 8253




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




                                     Canale 2
                      IN AL, 61h
                      ;rilevamento valore corrente della porta
                          dell’altoparlante
                      OR AL, 03h
                      ;impostazione ad uno dei due bit meno
                          significativi
                      OUT 61h, AL
                      ;impostazione nuovo valore della porta
                          dell’altoparlante
                                                                     20




Sergio PORCU                                                                10
Sistemi a Microprocessore                                                         8253




                                        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 significativi
                      OUT 61h, AL
                      ;impostazione nuovo valore della porta dell’altoparlante

                                                                             21




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




Sergio PORCU                                                                        11
Sistemi a Microprocessore                                                8253




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


                      INT 08 - IRQ0 - TIMER INTERRUPT
                      Generated 18.2 times per second, this
                        interrupt is used to keep the time-of-
                        day clock updated.




                                                                    23




Sergio PORCU                                                               12

Il temporizzatore d'intervalli 8253

  • 1.
    Sistemi a Microprocessore 8253 Sistemi a Microprocessore IL TEMPORIZZATORE DI INTERVALLI 8253 1 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 2 Sergio PORCU 1
  • 2.
    Sistemi a Microprocessore 8253 Il timer 8253 3 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. 4 Sergio PORCU 2
  • 3.
    Sistemi a Microprocessore 8253 Gestione degli indirizzi • porta 40h: canale 0 • porta 41h: canale 1 • porta 42h: canale 2 • porta 43h: registro di controllo 5 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 6 Sergio PORCU 3
  • 4.
    Sistemi a Microprocessore 8253 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 7 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 8 Sergio PORCU 4
  • 5.
    Sistemi a Microprocessore 8253 Registro di controllo bit 0: definisce il sistema di conteggio: • 0 binario • 1 BCD 9 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. 10 Sergio PORCU 5
  • 6.
    Sistemi a Microprocessore 8253 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. 11 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. 12 Sergio PORCU 6
  • 7.
    Sistemi a Microprocessore 8253 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. 13 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, 00h OUT 43h, AL 14 Sergio PORCU 7
  • 8.
    Sistemi a Microprocessore 8253 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. 15 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 16 Sergio PORCU 8
  • 9.
    Sistemi a Microprocessore 8253 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. 17 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. 18 Sergio PORCU 9
  • 10.
    Sistemi a Microprocessore 8253 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. 19 Canale 2 IN AL, 61h ;rilevamento valore corrente della porta dell’altoparlante OR AL, 03h ;impostazione ad uno dei due bit meno significativi OUT 61h, AL ;impostazione nuovo valore della porta dell’altoparlante 20 Sergio PORCU 10
  • 11.
    Sistemi a Microprocessore 8253 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 significativi OUT 61h, AL ;impostazione nuovo valore della porta dell’altoparlante 21 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. 22 Sergio PORCU 11
  • 12.
    Sistemi a Microprocessore 8253 Definizione adottata dalla Carnegie-Mellon University per l’interrupt di tipo 8 INT 08 - IRQ0 - TIMER INTERRUPT Generated 18.2 times per second, this interrupt is used to keep the time-of- day clock updated. 23 Sergio PORCU 12