Escolar Documentos
Profissional Documentos
Cultura Documentos
1.Generalitati.
Intreruperile in procesarea datelor
Majoritatea componentelor unui calculator necesită schimburi de
informaţii cu microprocesorul şi aşteaptă atenţia acestuia când se doreşte un
transfer de date. Microprocesorul are de monitorizat transferurile de date ale
diferitelor componente astfel încât să nu apară pierderi de date. Uzual sunt
două moduri prin care microprocesorul poate face acest lucru, prin:
• Polling (interogare)
Microprocesorul testează pe rând toate dispozitivele care pot
necesita un serviciu şi il serveşte pe cel care a cerut ”atenţie”.
Acest mod este folosit uneori in anumite aparate sau instalaţii cu
microprocesor,dar nu şi in PC din cauză că este prea lent.Se pierd
mulţi cicli procesor din motivul că de ce le mai multe ori răspunsul
interogării este “nu”.De asemenea diferitele dispozitive necesită
transferuri sau “atenţie”cu frecvenţe mult diferite,spre exemplu un
“mouse” necesită de departe mult mai rar “atenţie”decat un hard-
disk când este activate pentru un transfer de date.
• Întrerupere
Este un alt mod de abordare a transferului de date care constă în
a lăsa dispozitivele să ceară când au nevoie,în rest
microprocesorul poate realiza alte sarcini şi nu mai risipeşte
timpul ca in cazul interogării.Când apare o intrerupere
microprocesorul abandonează programul aflat în derulare şi
serveşte corespunzător dispozitivul care l-a întrerupt .
1
- multiplexarea întreruperilor de la diferitele surse la pinul
corespunzător al microprocesorului
- rezolvarea prioritătilor în cazul aparitiei întreruperilor simultane
- generarea unui vector (adresă) care să indice adresa programului
(rutinei) de tratare al respectivei întreruperi
La unele procesoare (cum ar fi Z80) sarcinile de sus sunt soluţionate într-
un alt mod.Sistemul de întreruperi generate de diversele surse sunt date de
poziţia pe care o ocupă respectivul circuit într-un lanţ de priorităţi numite
“daisy-chain”.Respectivele circuite furnizează şi vectorul de întrerupere
corespunzător.În figura de mai jos se poate observa că circuitul PIO Z80 are
prioritatea maximă,fiind situat primul în lanţul de priorităţi format prin
conectarea circuitelor prin semnalele IEI (Interrupt Enable Input) si IEO
(Interrupt Enable Output).În cazul PC-urilor se utilizeză circuitul PIC
(Programmable Interrupt Controller) I8259A.
2
cicluri maşină de tip /INTA(două în mod I8088 /I8086 şi trei în mod I8080)
pentru recunoaşterea întreruperii.Pe durata acestor cicluri,controllerul
”pune” pe magistralade date informaţiile necesare microprocesorului pentru
determinarea şi execuţia unei rutine asociate nivelului de întrerupere
acceptat.
• Registrul de măşti
(IMR- Interrupt Mask Register)
3
Figura 2.Schema bloc a circuitului I8259A
Logica de cascare
4
/INTA, datele pentru determinarea şi execuţia rutinei de deservire a cererii
de întrerupere acceptate.
Logica de citire/scriere
Logica de comandă
5
Registrul IRR(Interrupt Request Register): (in al,20H)
7 6 5 4 3 2 1 0
IRQ7 IRQ6 IRQ5 IRQ4 IRQ3 IRQ2 IRQ1 IRQ0
6
Fig.3.Pinii circuitului I8259A
7
Nume I/0 PIN Funcţia
Nebufferat SP=1 pentru MASTER şi SP=0 pentru
SLAVE
INT 0 17 INTerrupt-ieşire conectată la intrarea INT a
procesorului , prin intermediul căreia se transmit
cererile de întrerupere
IR0- I 18-25 (Interrupt Request)- intrări asincrone care sunt
IR7 conectate la perifericele care pot genera întreruperi
la procesor prin intermediul PIC I8259A
/INTA I 26 (Interrupt Acknowledge) – utilizat pentru achitarea
cererii de întrerupere şi de citire a vectorului de
întrerupere
3.Programarea PIC
Circuitul având doar două adrese de port pentru programare sau citire
stare va trebui respectată o anumită ordine la trimiterea cuvintelor de
comandă spre PIC.Există două tipuri de cuvinte pentru lucrul cu I8259A:
8
ICW3(OUT 21 H,AL):pentru master
7 6 5 4 3 2 1 0
S7 S6 S5 S4 S3 S2 S1 S0
7 6 5 4 3 2 1 0
0 0 0 SFIM BUF M/S AEOI PROC
9
1 1 Mod cu buffer date extern.PIC este master
10
Fig.4.Secvenţa de iniţializare a controller-ului
R SL EOI Semnificaţie
0 0 0 Roteşte în modul AEOI- Clear
0 0 1 EOI nespecific
0 1 0 Fără efect
0 1 1 EOI specific
1 0 0 Roteşte în modul AEOI-Set
1 0 1 Roteşte la AEOI nespecific
1 1 0 Setează prioritate
1 1 1 Roteşte la AEOI specific
11
ESMM(Enable Special Mask Mode) =1:validare mod de mascare
special
SMM(Special Mask Mode)=1:mod de mascare special
ESMM SMM Semnificaţie
0 X -
1 0 Reset mască special
1 1 Setează mască specială
RR RIS Semnificaţie
0 X Selecţie IMR
1 0 Selecţie IRR
1 1 Selecţie ISR
Modul EOI
12
Bitul din ISR corespunzător întreruperii în servire poate fi resetat automat în
modul AEOI(fără o comandă anume ) sau printr-un cuvânt de comandă dat
înaintea revenirii din rutina de deservire a întreruperii ,în modul EOI.În
cazul în care se lucrează în mod cascadat, ştergerea bitului corespunzător
întreruperii în servire trebuie să se facă atât la nivelul master-ului, cât şi la
nivelul slave-ului.
Modul AEOI
Automatic End of Interrupt- se instalează la iniţializare prin bitul
AEOI=”1” din ICW4 şi este echivalentcu o comandă EOI nespecifică care s-
ar da la sfârsitul ciclului de recunoaştere a întreruperii (al 3-lea în I8080 şi al
2-lea în mod I8086).
• Rotirea automată ( nespecifică) a priorităţilor
Există cazuri în care un dispozitiv periferic după ce a fost servit
poate să fie tercut ultimul în lista de priorităţi şi nu va mai intra în
servire decât după ce şi celelalte 7 dispozitive periferice cu care
este legat în lista de priorităţi au fost servite în acelaşi mod ca şi el.
• Rotirea specifică a priorităţilor
Utilizatorul poate schimba ordinea priorităţilor din program în mod
dinamic.Se poate fixa nivelul inferior de prioritate şi astfel se vor
modifica priorităţile în concordanţă cu acest nivel inferior.
Mascarea întreruperilor
Fiecare intrare de cerere de întrerupere poate fi mascată prin registrul de
măşti IMR programabil prin OCW
13
din secvenţa de acceptare a întreruperii.În ISR se va înscrie bitul
corespunzător cererii mai prioritare.
Modul bufferat
În cazul în care controller-ul I8259A este cascadat, iar modul nu este
bufferat, semnalul /SP//EN se foloseşte ca şi semnal de intrare şi controlează
tipul circuitului (master sau slave).Există configuraţii de sistem care necesită
neapărat o comunicaţie a controller-ului I8259A cu magistrala prin
intermediul unui amplificator (buffer) bidirecţional.În acest caz semnal
/SP//EN se foloseşte ca şi semnalul de ieşire având rolul de a stabili sensul
de transfer al amplificatoarelor bidirecţionale.
14
Figura 5.Cascadarea controller-elor în PC-AT
Modul cascadat
Un controller I8259A funcţionând în mod master , poate fi interconectat
cu până la 8 controllere slave pentru a implementa un sistem de întreruperi
cu 64 de nivele de prioritate.Masterul controlează slave-urile prin
intermediul celor 3 linii de cascadare CASO......CAS2.Într-o configuraţie
cascadată ieşirile INT ale slave-urilor se leagă la intrările Iri ale master-
ului.Dacă există o cerere activă a unui slave şi dacă această cerere este mai
prioritară,masterul va valida slave-ul corespunzător prin liniile de cascadare
pentru ca aceasta să pună adresa rutinei de întrerupere sau tipul întreruperii
pe magistrala de date.
15
întreruperi: de la un întrerupător deparazitat (1) de la unul fără deparazitare
(2) şi de la canalul 2 al unui circuit I8253 (3), cu adresa de bază 100h
( fig.6).
Selectia sursei de intrerupere se face cu un comutator.
Fig.6.Schema aplicaţiei
16