|
 |
Procedure Seriali |
ServInt0C - Servizio effettivo 2/3
[202 di 403] |
- Gestione degli eventi seriali con la Tecnica dell'Interruzione |
|
5.4
Procedura ServInt0C:
verifica della necessità di servizio [2 di 3] |
 |
Dopo le dovute premesse non rimane che analizzare la ServInt0C in dettaglio: per
prima cosa è necessario stabilire se l'esecuzione
del servizio è effettivamente necessario; il contenuto del
Registro
di Identificazione delle Interruzioni
[port_A]
è in grado di aiutarci a risolverlo: |
| bit2 |
bit1 |
bit0 |
Interrupt Identification Register
[port_A]
|
| |
|
0 |
0
= interruzione pendente: un evento
ha richiesto servizio d'interruzione
1 = nessuna interruzione pendente |
|
x |
x |
|
Indica (Interrupt
ID) quale degli eventi interrompenti
è attualmente in attesa di servizio:
11
= Receiver Line Status
Interrupt, priorità
1, massima,
errore in linea o break
10
=
Received Data Available
Interrupt,
priorità 2, dato ricevuto pronto
01
=
Transmit Holding Register Empty
Interrupt,
priorità 3, dato trasmesso
00
= Modem Status
Interrupt,
priorità 4, minima, variazione segnali CD, RI, DSR
o CTS |
 | Se il suo
bit0 è 0
significa che c'è un'interruzione
è pendente, cioè uno o più
eventi hanno indotto l'UART ha generare una
richiesta che non è stata ancora servita (o
servita del tutto) dal processore; le operazioni necessarie
in questo caso sono sviluppate a livello Chk_Int
(JZ Chk_Int,
guarda il codice...) e descritte nel prossimo paragrafo. |
 | Qui vediamo che succede se il
bit0 è trovato a
1: poichè non ci
sono più richieste pendenti il servizio richiesto dalla porta
seriale non è più necessario. |
 | Prima di terminare (comunque con l'istruzione
IRET) viene attivata la strategia tipica
della parte finale di ogni servizio di Interrupt
Hardware:
 | bisogna segnalare la sua fine spedendo il controller delle interruzioni
(PIC 8259A) il codice
EOI (End Of
Interrupt) per azzerarlo, in vista delle prossime interruzioni |
 | si deve riabilitare anche a livello
software la possibilità di interrompere la CPU in modo
mascherabile da parte delle periferiche
autorizzate, con l'istruzione STI |
|
 | Il codice necessario
per queste operazioni è mostrato qui di seguito: |
©
2001-2010 - Studio Tecnico
ing. Giorgio OBER
Tutti i diritti sono riservati
|