Publicado el 14 de Enero del 2017
915 visualizaciones desde el 14 de Enero del 2017
501,5 KB
23 paginas
Creado hace 19a (06/04/2006)
Instrumentación de Tiempo Real
UNIVERSIDAD DE CANTABRIA
Tema 1. Introducción
Tema 2. Recursos de acceso al hardware
Tema 3. Interrupciones
Tema 4. Puertas básicas de entrada/salida (I)
Tema 5. Recursos de temporización de bajo nivel
Tema 6. Multitarea en Ada
Tema 7. Puertas básicas de entrada/salida (II)
GRUPO DE COMPUTADORES Y TIEMPO REAL
DPTO. DE ELECTRÓNICA Y COMPUTADORES
© Mario Aldea Rivas
2/Mar/06
1
Puerta de entrada/salida genérica
UNIVERSIDAD DE CANTABRIA
Las puertas de E/S ponen al computador en contacto con su
entorno:
• convertidores A/D y D/A, entradas y salidas digitales,
puertos serie y paralelo, tarjetas de red, etc.
Estructura de una puerta de E/S genérica:
µΡ
C
P
I
A
9
5
2
8
Puerta de E/S genérica
Registro de Control
Registro de Estado
Registro de Salida
Registro de Entrada
GRUPO DE COMPUTADORES Y TIEMPO REAL
DPTO. DE ELECTRÓNICA Y COMPUTADORES
Requerimiento de
Interrupción
© Mario Aldea Rivas
2/Mar/06
2
Puerta de entrada/salida genérica:
Direcciones en el mapa de E/S
UNIVERSIDAD DE CANTABRIA
Cada registro ocupa una posición en el mapa de E/S
$3FF
$400
$401
$402
$403
$404
Reg. Control
Reg. Estado
Reg. Salida
Reg. Entrada
$3FE
$3FF
$400
$401
$402
$403
Reg. Control/Estado
Reg. Salida/Entrada
Dos registros pueden compartir una misma dirección en el
mapa de E/S
• uno de ellos será de sólo lectura y otro de sólo escritura
A los registros se accede con las operaciones Inb (lectura) y
Outb (escritura)
GRUPO DE COMPUTADORES Y TIEMPO REAL
DPTO. DE ELECTRÓNICA Y COMPUTADORES
© Mario Aldea Rivas
2/Mar/06
3
Puerta de entrada/salida genérica:
Registro de datos
UNIVERSIDAD DE CANTABRIA
Registro a través del que el computador envía y/o recibe la
información
Si la puerta es de salida, este registro es de sólo escritura
• el programa debe escribir en él el dato que quiere transferir
Si la puerta es de entrada, el registro es de sólo lectura
• el programa lee el registro de datos para obtener el último
dato recibido
Si la puerta es de entrada/salida, los registros de datos de
entrada y salida suelen ocupar la misma dirección de E/S
• las operaciones de escritura son relativas al registro de
salida y las de lectura al de entrada
GRUPO DE COMPUTADORES Y TIEMPO REAL
DPTO. DE ELECTRÓNICA Y COMPUTADORES
© Mario Aldea Rivas
2/Mar/06
4
Puerta de entrada/salida genérica:
Registro de control
UNIVERSIDAD DE CANTABRIA
Permite establecer el modo y parámetros de operación de la
puerta
Ejemplo de registro de control genérico:
IE
0
Modo
0
1
Canal
Start
0
1
0
1
1
• Start: comienzo de una operación de la puerta (p.e. captura
de dato)
• Canal: selecciona entre las diferentes fuentes o destinos
• Modo: modo de operación
• Habilita/inhibe interrupción (IE): controla si debe generarse
una interrupción cuando ha finalizado una operación
GRUPO DE COMPUTADORES Y TIEMPO REAL
DPTO. DE ELECTRÓNICA Y COMPUTADORES
© Mario Aldea Rivas
2/Mar/06
5
Puerta de entrada/salida genérica:
Registro de estado
UNIVERSIDAD DE CANTABRIA
Registro de sólo lectura que permite conocer el estado en que
se encuentra la puerta
Ejemplo de registro de estado genérico:
IP
0
Canal
1
0
0
1
Error
1
0
Done
1
• Done: indica si la puerta ha finalizado la última operación
• Error: permite conocer si se ha producido un error (y de que
tipo) en la última operación de la puerta
• Canal: último canal seleccionado
• Interrupción Pendiente (IP): se ha generado una
interrupción que aún no ha sido atendida
GRUPO DE COMPUTADORES Y TIEMPO REAL
DPTO. DE ELECTRÓNICA Y COMPUTADORES
© Mario Aldea Rivas
2/Mar/06
6
Puerta de entrada/salida paralelo
UNIVERSIDAD DE CANTABRIA
Permite trasferir información en grupos de 8 bits (un byte)
Dispone de los siguientes grupos de líneas:
• 8 líneas de datos bidireccionales:
- pueden utilizarse para enviar o recibir bytes
• 9 líneas auxiliares
- originalmente pensadas para implementar el protocolo
"Centronics" para comunicación computador/impresora
- 5 de ellas son líneas de entrada (ACK, BUSY, PE, ONLINE y
ERROR)
- 4 son líneas de salida (STROBE, AUTO, INIT y SELECT)
GRUPO DE COMPUTADORES Y TIEMPO REAL
DPTO. DE ELECTRÓNICA Y COMPUTADORES
© Mario Aldea Rivas
2/Mar/06
7
Puerta de entrada/salida paralelo:
Conector de 25 pines
UNIVERSIDAD DE CANTABRIA
GRUPO DE COMPUTADORES Y TIEMPO REAL
DPTO. DE ELECTRÓNICA Y COMPUTADORES
© Mario Aldea Rivas
2/Mar/06
8
Puerta de entrada/salida paralelo:
Registros del puerto paralelo
Dirección de E/S
puerto1/puerto2
Registro
Modo
$378/$278
$378/$278
$379/$279
$37A/$27A
$37A/$27A
Entrada de Datos
Salida de Datos
Lee valor líneas
auxiliares de entrada
Lee valor líneas
auxiliares de salida
Establece valor
líneas auxiliares de
salida
Lect.
Esc.
Lect.
Lect.
Esc.
2
o
e
l
l
a
r
a
p
o
t
r
e
u
P
1
o
e
l
l
a
r
a
p
o
t
r
e
u
P
$276
$277
$278
$279
$27A
$27B
$27C
$27D
$376
$377
$378
$379
$37A
$37B
$37C
$37D
UNIVERSIDAD DE CANTABRIA
Mapa de E/S
Entrada/Salida
Lee líneas entrada
Lee/escribe líneas salida
Entrada/Salida
Lee líneas entrada
Lee/escribe líneas salida
GRUPO DE COMPUTADORES Y TIEMPO REAL
DPTO. DE ELECTRÓNICA Y COMPUTADORES
© Mario Aldea Rivas
2/Mar/06
9
Registro de entrada/salida de datos
Este registro permite leer el estado de las 8 líneas de datos o
establecer su valor en el caso de que la puerta actúe como
salida
UNIVERSIDAD DE CANTABRIA
D7
D6
D5
D4
D3
D2
D1
D0
pin9 pin8 pin7 pin6 pin5 pin4 pin3 pin2
• La puerta actúa como salida o entrada dependiendo del
valor asignado al bit Output del registro de control
GRUPO DE COMPUTADORES Y TIEMPO REAL
DPTO. DE ELECTRÓNICA Y COMPUTADORES
© Mario Aldea Rivas
2/Mar/06
10
Registro de lectura de las líneas
auxiliares de entrada
UNIVERSIDAD DE CANTABRIA
Permite leer el estado de las 5 líneas auxiliares de entrada
Busy
Ack
PE
OnLine
Error
X
X
X
pin11
pin10
pin12
pin13
pin15
• En el caso de la línea Ack el valor leido es el complementario
al existente en el pin 10
GRUPO DE COMPUTADORES Y TIEMPO REAL
DPTO. DE ELECTRÓNICA Y COMPUTADORES
© Mario Aldea Rivas
2/Mar/06
11
Registro de control
UNIVERSIDAD DE CANTABRIA
Permite leer y escribir el estado de las 4 líneas auxiliares de
salida
También permite configurar el funcionamiento de la puerta:
• puerta de salida (Output=>0) o de entrada (Output=>1)
• interrupción habilitada (IRQ enable=>1): se produce una
interrupción con cada flanco de bajada en el pin 10 (Ack)
X
X
Output
IRQ
enable
Select
Init
Auto Strobe
0
0
pin17
1
pin16
0
pin14
1
pin1
1
valor tras el reset
• El valor de los bits Select, Auto y Strobe es el
complementario del establecido en los pines 17, 14 y 1
GRUPO DE COMPUTADORES Y TIEMPO REAL
DPTO. DE ELECTRÓNICA Y COMPUTADORES
© Mario Aldea Rivas
2/Mar/06
12
Ejemplo de uso puerta paralelo
UNIVERSIDAD DE CANTABRIA
with MaRTE_OS;
with MaRTE_Hardware_Interrupts;
use MaRTE_Hardware_Interrupts;
with IO_Interface; use IO_Interface;
with Basic_Integer_Types; use Basic_Integer_Types;
with System;
with Basic_Console_IO, Text_IO, Ada.Integer_Text_IO;
use Text_IO, Ada.Integer_Text_IO;
procedure Printer_Port_Test is
-- Registros del puerto paralelo
PP_BASE : constant IO_Port := 16#378#; -- Puerto 1
PP_DATA_REG : constant IO_Port := PP_BASE + 0;
PP_STATUS_REG : constant IO_Port := PP_BASE + 1;
PP_CONTROL_REG : constant IO_Port := PP_BASE + 2;
GRUPO DE COMPUTADORES Y TIEMPO REAL
DPTO. DE ELECTRÓNICA Y COMPUTADORES
© Mario Aldea Rivas
2/Mar/06
13
Ejemplo de uso puerta paralelo
(cont.)
UNIVERSIDAD DE CANTABRIA
-- Byte leido del puerto
Data_Read : Unsigned_8;
pragma Volatile (Data_Read);
New_Data : Boolean := False;
pragma Volatile (New_Data);
-- Manejador de interrupción del puerto paralelo
function PP_Handler (Area : in System.Address;
Intr : in Hardware_Interrupt)
return Handler_Return_Code is
begin
Basic_Console_IO.Put (" In PP_Handler ");
Basic_Console_IO.New_Line;
Data_Read := IO_Interface.Inb (PP_DATA_REG);
New_Data := True;
return POSIX_INTR_HANDLED_NOTIFY;
end PP_Handler;
GRUPO DE COMPUTADORES Y TIEMPO REAL
DPTO. DE ELECTRÓNICA Y COMPUTADORES
© Mario Aldea Rivas
2/Mar/06
14
Ejemplo de uso puerta paralelo
(cont.)
UNIVERSIDAD DE CANTABRIA
begin
-- Instala manejador de interrupción
if Associate (PARALLEL1_INTERRUPT,
PP_Handler'Unrestricted_Access,
System.Null_Address, 0) /= 0 then
Put_Line ("Error: Associate");
end if;
-- Configura como puerto de entrada y habilita las
-- interrupciones del puerto paralelo
IO_Interface.Outb (PP_CONTROL_REG, 2#00_1_1_0000#);
-- Habilita la interrupción en el PIC
if Unlock (PARALLEL1_INTERRUPT) /= 0 then
Put_Line ("Error: Unlock");
end if;
GRUPO DE COMPUTADORES Y TIEMPO REAL
DPTO. DE ELECTRÓNICA Y COMPUTADORES
© Mario Aldea Rivas
2/Mar/06
15
Ejemplo de uso puerta paralelo
(cont.)
UNIVERSIDAD DE CANTABRIA
-- Espera a que ocurra la interrupción y muestra
-- el valor leido
loop
if New_Data then
New_Data := False;
Put ("Byte leido:");
Put (Integer (Data_Read), Base => 16);
New_Line;
end if;
end loop;
end Printer_Port_Test;
GRUPO DE COMPUTADORES Y TIEMPO REAL
DPTO. DE ELECTRÓNICA Y COMPUTADORES
© Mario Aldea Rivas
2/Mar/06
16
Tarjeta de entrada/salida AX5411:
funcionamiento básico
UNIVERSIDAD DE CANTABRIA
Tarjeta de entrada/salida de propósito general
Compuesta por tres subsistemas independientes:
• Salida analógica
- dos convertidores D/A de 12 bits
• Entrada analógica
- 16 líneas de entrada encaminadas a un único convertidor
A/D mediante un multiplexor de 16 a 1
- máxima frecuencia de muestreo de 60 Kmuestras/seg
- ganancia configurable
• Entrada/Salida digital
- 24 canales de entrada y 24 de salida
GRUPO DE COMPUTADORES Y TIEMPO REAL
DPTO. DE ELECTRÓNICA Y COMPUTADORES
© Mario Aldea Rivas
2/Mar/06
17
Configura
Comentarios de: Instrumentación de Tiempo Real - Tema 4. Puertas básicas de entrada/salida (I) (0)
No hay comentarios