Documentos de Académico
Documentos de Profesional
Documentos de Cultura
Master de Computacin
Universidad de Cantabria.
Documento:
Driver AnalogIO
AnalogIO Driver
El objetivo de este trabajo es disear un driver que facilite el uso de una tarjeta de
entrada y salida analgica con 8 lneas analgicas de entrada y 4 lneas analgicas de
salida, por aplicaciones concurrentes, as como el diseo de las aplicaciones
concurrentes que hacen uso de ellas.
La tarjeta AnalogIOCard.
La tarjeta AnalogIOCard permite leer el estado de 8 lneas analgicas de entrada (se
numeran de 0 a 7), y as mismo establecer la tensin de las 4 lneas analgicas de salida
(se numeran de 0 a 3). Los conversores A/D y D/A son de 12 bits de resolucin,
bipolares y su rango de operacin es de -10V a +10 V. A la tarjeta se accede a travs de
cuatro registros de 16 bits:
16
bits
Status
bits 0-2
16
bits
16
bits
16
bits
DataIn
Control
DataOut
bits 8-9
bits 0-2
bit 15
A/D
(12 bits, -10-+10V)
bit 3
Reg 0
Reg 1
Reg 2
Reg 3
D/A
D/A
D/A
D/A
AnalogIOCard
vDA0
vDA1
vDA2
vDA3
DataIn: Registro de slo lectura, que permite leer la salida de los convertidores A/D.
Slo sus 12 bits menos significativos son relevantes. La relacin que existe entre
el valor que se lee en el registro D, y la tensin analgica de la lnea que mide
vAD, es,
v + 10
4096
D = floor AD
20
vDA = 10 +
20
D
4096
Status: Registro de slo lectura que permite conocer el estatus de los convertidores
A/D. El significado del valor que se lee est definido bit a bit:
Bit 15: Done. Cuando este nit toma el valor 1, significa que la convertsin A/D
se ha realizado, y en consecuencia el valor del registro DataIn es vlido. Cuando
se ordena realizar una conversin A/D (con el bit de Control), este bit se pone a
cero durante el tiempo de conversin. Durante ese tiempo el valor que se puede
leer en DataIn no es vlido.
Bits 0-2: Representan el cdigo binario de la lnea analgica cuya conversin se
ha realizado, y cuyo valor puede leerse en DataIn. La informacin de estos bits
solo son relevantes si el bit 15 es 1.
Control: Registro de slo escritura que permite controlar la operacin de los
conversores A/D y D/A. El significado del valor que se escribe est definido bit
a bit:
Bits 0-2 (A/D Select): Representan el cdigo binario que define la lnea de
entrada que se desea lee en la prxima conversin A/D.
Bit 3 (Star): La transicin de 0 a 1 de esta lnea representa el inicio de una
conversin A/D sobre la lnea que define el estado de los bits 0-2. Cuando se
inicia la conversin el bits 15 de Status pasa a ser 0, y cuando la conversin
finaliza vuelve a tomar el valor 1.
Bit 8-9 (D/A Select): Definen la lnea de salida que se establecerse por el D/A
cuando se escribe sobre el registro DataOut.
Los mtodos de acceso a estos registros se definen en la interfaz AnalogIOCard, que se
muestra en el siguiente diagrama de clases:
Mtodos:
readInputLine(line:int):float => Retorna el valor en voltios que est establecida en
la lnea analgica de entrada que se especifica con el parmetro line.
setOutputLine(line:int,value:float) => Establece la tensin en voltios expresada por
el parmetro value en la lnea analgica de salida especificada con el parmetro
line.
readOutputLine(line:int):float => Retorna el valor en voltios que tiene establecida
la lnea analgica de salida especificada por el parmetro line.
awaitLower(line:int,threshold:float) => Mtodo bloqueante que suspende el thread
que lo invoca hasta que la tensin en la lnea analgica de entrada que se
especifica con el parmetro line, sea inferior al valor especificado por el
parmetro threshold .
awaitHigher(line:int,threshold:float) => Mtodo bloqueante que suspende el thread
que lo invoca hasta que la tensin en la lnea analgica de entrada que se
2.0
0.0
0.5
1.0
1,5
2.0
1.0
0.0
period/N
period
Trabajo a realizar:
Fase I: Revisin de las operaciones implementadas para su uso desde una
aplicacin concurrente.
Analizar la implementacin de los mtodos readInputLine(), setOutputLine() y
readOutputLine() e introducir los elementos de sincronizacin adecuados para que
puedan ser invocados concurrentemente de forma segura.