Documentos de Académico
Documentos de Profesional
Documentos de Cultura
Polling,
Interrupciones,
DMA
Sistemas con
Microcontroladores y
Microprocesadores
http://www.herrera.unt.edu.ar/procesadores
Puerto S
El programa en el MC toma
accin mediante variables de
salida.
Actuadores
CD/A
Digitales
Adap. V
MCU
Analogicos
Sensores
CA/D
Puerto E
Adap. V
Analogicos
Digitales
31/10/13
Control
n
n
Requiere
n
n
31/10/13
Facilidad de Mantenimiento.
Revolucin del P.
31/10/13
Confiabilidad y Disponibilidad
n
n
n
31/10/13
Clasificacin de la Informacin
n
n
31/10/13
Sincrnico
Asincrnico.
Mtodos de E/S
n
n
31/10/13
Se ingresa un byte en
paralelo al CQY4 va
Puerto B.
Se ocupan dos lneas de
PTA para Ready y /Strobe.
Inicio: /STB=RDY=1 perif
listo para recibir.
Perif: /STB=0 Dato listo.
C: toma Dato RDY=0
C listo prx DatoRDY=1
Perif: /STB=1 Ok,
prepara prx dato.
Ms datos ir a 2
31/10/13
PTB(7-0)
DB (7-0)
mC QY4
PTA 2
PTA 0
Byte N
/STROBE
READY
Byte N+1
/STROBE
READY
Poll
Estructura de Datos
a una tabla.
Contador: n datos a tomar
READY = 1
Puntero
Aunque no haya
interrupciones, es
posible utilizar el
detector de flanco
negativo incorporado en
el modulo IRQ (PTA2).
Un flanco negativo se
registra en bit IRQF1 del
registro IRQ Status and
Control Register
31/10/13
0
IRQF1
1
READY=0
IRQF=0
Guardar Dato del
puerto B
Actualizar Puntero
y Contador
Dato final?
No
Si
Fin
10
Programa de Polling.
;Inicializar puertos
MOV 2,INTSCR
BSET 6,CONFIG2
MOV #00,PTA
MOV #01,DDRA
MOV #00,DDRB
...
Poll:
Lazo:
MOV #01,PTA
BRCLR 3,INTSCR,lazo
MOV #00,PTA
BSET 2,INTSCR
MOV PTB,X+
DBNZ Contador, Poll
11
Usando interrupciones, es
muy simple manejar una
rutina de E/S asincrnica.
El programa principal debe
ser responsable de incializar:
Habilitar
la interrupcin
Variables globales
n
n
RDY
= 1, IM = 0.
31/10/13
Int
READY = 0
PUSHH
Guardar Dato del
puerto B
Actualizar Puntero
y Contador
Dato final? Si
No
READY = 1
PULH
Return
12
Rutina de Interrupcin
;La inicializacin es identica a la inicializacin de polling
...
; en el programa principal
MOV
#DirH, Puntero
MOV #DirL, Puntero+1
MOV #n, Contador
BCLR 1, INTSCR
;habilito las interrupciones de IRQ
CLI
;habilita interrupciones a CPU08
BSET 0, PTA
;READY = 1
...
Int:
MOV #00,PTA
;READY = 0
PSHH
;Termino de guardar el estado
LDHX Puntero
;Cargo el puntero en H:X
MOV PTB,X+
;Guardo en memoria
STHX Puntero
DEC Contador
BEQ IntFin
;llen la tabla, no ponga RDY.
MOV #01,PTA
;(READY = 1)
IntFin: PULH
;Recupero el estado que no recupera RTI
RTI
13
Salida de Datos
Tarea Para hacer en la Casa:
Programa de Salida por Polling.
Salida por Interrupciones.
n
1.
2.
1.
n
1.
31/10/13
14
Conexin Asincrnica: 2 C
C-R y C-T (receptor y transmisor).
1.
2.
3.
n
Inicializacin.
C-T se interrumple.
q
q
C-R se interrumpe
31/10/13
15
31/10/13
16
Poll:
Lazo:
Si f(bus)=3,2 MHz
Td= 1 M
To= 25 M
t= 26 M.
M=312 ns.
MOV #01,PTA
BRCLR 3,INTSCR,lazo
BSET 2,INTSCR
MOV #00,PTA
MOV PTB,X+
DBNZ Contador, Poll
M
4
5
4
4
4
5
31/10/13
17
Td= 1 M
To= 46 M
t= 47 M.
A 3,2 MHzf(bus),
Con tasa mx. termina una rutina de INT y comienza otra. Por
qu?
Respuesta a IRQ: 9 ciclos.
31/10/13
;Instruccin anterior
;cargar interrupcin
Int:
MOV #00,PTA
PSHH
LDHX Puntero
MOV PTB,X+
STHX Puntero
DEC Contador
BEQ IntFin
MOV #01,PTA
IntFin: PULH
RTI
M
0
9
4
2
4
4
4
4
3
4
2
7
18
Resumen
n E/S
Polling.
Interrupciones.
Conexin
de dos MCUs.
n Tasa
Mxima.
n Eficiencia Baja.
n cmo mejorar?
31/10/13
19
Administrativia
n 10
31/10/13
de diciembre parcial.
20
Modo Bloque
n
31/10/13
21
...
Int:
Lazo:
Stb:
Fini:
31/10/13
22
A 3,2 MHz(fbus)
n
n
t= 45 M (fuera de lazo)
t=26.n M (dentro del lazo)
T(byte) = T(bloque)/n
T(byte) = 26M + t/n
Despreciamost/n
Tasa Mx= 123 KB/seg
Eficiencia = 3,85%
Similar a Polling.
31/10/13
;Instruccin anterior
;cargar interrupcin
Int:
MOV #$00,PTA
PSHH
LDHX Puntero
MOV PTB, X+
DEC cont
BEQFini
Lazo: MOV #01, PTA
Stb:
BRCLR 3,INTSCR,Stb
MOV #00,PTA
MOV PTB,X+
BSET 2,INTSCR
DBNZ Cont,Lazo
Fini: PULH
RTI
6
9
4
2
4
4
4
3
4
5
4
4
4
5
2
7
23
M
M
M
M
M
M
M
M
M
M
M
M
M
M
M
M
Limitaciones de E/S.
n Dispositivos
Rpidos:
Existe
n Dispositivos
Lentos no tienen
limitaciones?
n Provocan algn otro problema?
31/10/13
24
datos
Todos
25
Prog. Principal
D1
D2
D3
Tprog prin
...
Dn
Prog. Principal
D1
D2
D3
T=1/fdisp
31/10/13
26
KB/s, n = 20.
Tdisp=47M
T/T
La
(47 ya visto).
= 1 - n.fdisp.Tdisp =0,70
nmax
= 14,68 s
= 1/fdisp.Tdisp = 68.
31/10/13
27
En caso de Polling
n Se
28
Limitaciones de E/S
n
En conclusin:
Hay un lmite en velocidad de transferencia para
dispositivos rpidos.
Hay un lmite en cantidad de dispositivos lentos que se
pueden conectar.
En ambos casos el Programa Principal corre ms lento.
CUIDADO CON COP!
n
n
31/10/13
29
31/10/13
30
CPU
Dispositivo
Memoria
31/10/13
31
Control
DMA
Dispositivo
Memoria
CPU
31/10/13
32
3.
n
31/10/13
33
incrementable a memoria.
n Contador de cantidad de bytes a
transferir.
n Son los mismos requerimientos que
usan las rutinas de E/S por Polling o
por Interrupciones
La
34
DMA-REQ
Ck
DATA
DMA-SEND
IRQ
TSC-ACK
TSC
CPU
DMA
Puntero
Contador
Memoria
Adress Bus
Data Bus
Control Bus
31/10/13
35
10.
31/10/13
36
6.
7.
8.
31/10/13
37
n
n
31/10/13
38
KB/s, n = 20.
Tdisp=3M
= 0,937 s
(3 ya visto).
T/T
nmax
= 1/fdisp.Tdisp = 1067
n Valores
70%
31/10/13
- nmax= 68
Sistemas con Microcont. y Microproc. - UNT
39
con n grande.
Es
40
Aclaracin Interrupciones
n
la respuesta a Interrupcin.
NO SOLO EN MODULO IRQ.
n
31/10/13
41
No hay Ready.
No hay espera en STB.
A 3,2 MHz
n
n
n
n
;Instruccin anterior
;cargar interrupcin
Int:
PSHH
LDHX Puntero
MOV PTB,X+
DEC Contador
Stb:
BRCLR 3,INTSCR,Stb
MOV PTB,X+
BSET 2,INTSCR
DBNZ Contador, Stb
PULH
RTI
6
9
2
4
4
4
5
4
4
5
2
7
42
T
T
T
T
T
T
T
T
T
T
T
T
Concurso de Cerveza
n
3.
n
n
31/10/13
43
Pido 10 cervezas.
2.
3.
4.
n
n
31/10/13
PENDIENTE.
Sistemas con Microcont. y Microproc. - UNT
44
n
n
n
n
Modo Byte.
Y ms an cuando los dos procesos tienen duraciones
parecidas.
Trabajo Concurrente.
31/10/13
45
Estructura de Datos:
Configurar:
n
n
31/10/13
46
EQU
EQU
EQU
$90
$B0
20
PUNT0
PUNT1
NBL
CONT0
CONT1
PEND
ORG
DS
DS
DS
DS
DS
DS
$0080
2
2
1
1
1
1
ORG
MOV
BSET
CLR
CLR
MOV
CLR
MOV
MOV
MOV
MOV
MOV
BSET
MOV
CLI
$FF00
#0,INTSCR
6,CONFIG2
DDRB
PUNT0
#P0,PUNT0+1
PUNT1
#P1,PUNT1+1
#n,CONT0
#n,CONT1
#00, NBL
#00, PTA
0,DDRA
#01, PTA
Init:
31/10/13
47
Rutina de Interrupcin
1.
2.
3.
RUTINT: PEND=1.
Guardar H.
Case NBL
1.
2.
3.
4.
6.
7.
8.
5.
31/10/13
48
Rutina de Interrupcin
RUTINT:
MOV #1,PEND
PSHH
BCLR 0,PTA
LDA NBL
BNE con1
LDA CONT0
BEQ fini
LDHX PUNT0
MOV CONT0,CONT
JSR HANDSHAKE
MOV CONT,CONT0
STHX PUNT0
BRA sigue
con1:
CMP #1
BNE error
LDA CONT1
BEQ fini
LDHX PUNT1
MOV CONT1,CONT
JSR HANDSHAKE
MOV CONT, CONT1
STHX PUNT1
sigue:
LDA CONT
BNEQ prefini
LDA NBL
EOR #01
STA NBL
prefini: CLR PEND
fini:
PULH
RTI
31/10/13
;uso el bloque 1
;si no, error
49
Programa Principal
1.
2.
3.
4.
5.
6.
7.
8.
9.
LDA
BNE
JSR
MOV
SWI
LDA
BNE
JSR
MOV
SWI
BRA
CONT0
princ0
proc0
#n,CONT0
CONT1
princ1
proc1
#n,CONT1
princ0
50
Por qu SWI?
n
n
n
n
31/10/13
51
31/10/13
52
Rutina INT-TIM.
n
n
n
n
31/10/13
53
54
Ejemplo Numrico
Ingresan 200 bytes a razn de 1000 B/
seg, por Interrupciones, 40 s c/u
n El programa debe procesar 200 bytes, y
requiere 0,2 seg.
n Cunto demora con un buffer?
n
a.
b.
c.
d.
31/10/13
55
Ejemplo Numrico
n Cunto demora con dos buffers?
a.
Ingreso de Datos = 200 ms.
b.
Tiempo de procesamiento = 200 ms.
c.
Si es concurrente, agregar tiempo de
interrupciones = 40 s x 200 = 8000 = 8 ms.
d.
Total procesamiento 208 ms.
e.
Total Ingreso = 200 ms.
f.
Tiempo = el mayor = 208 ms.
n
31/10/13
56