Práctica 2. Interfaz entre la aplicación de usuario y el Driver del Hardware

(Este enunciado será explicado en la primera clase que corresponda a cada grupo)



Objetivos

 

Funcionamiento

La finalidad de la práctica es convertir la pantalla del PC en una pantalla de visualización de un analizador lógico con 8 canales. La entrada serán una serie de números de 8 bits. El valor digital de cada bit representa el valor lógico de una señal digital que se supone está conectada al puerto paralelo. Estos números de 8 bits provienen de un "driver" que, en esta segunda práctica, será entregado por el profesor. El programa a desarrollar  irá leyendo estos datos digitales de uno en uno, según los vaya entregando el conversor en función de la temporización seleccionada, y presentará en pantalla el nivel lógico de cada una de las señales en el instante correspondiente. Un ejemplo de presentación de esta práctica en la pantalla del PC se muestra en la figura siguiente:

En la pantalla anterior aparecen los siguientes elementos:


Generalidades

En esta práctica se suministra un programa fuente escrito en C (pra2.c, interf.h), que opera con un conjunto de módulos objeto (cond_in.obj, datos.obj, start.obj, stop.obj y tiempo.obj) que hace las llamadas al driver del Analizador Lógico. El driver también se suministra y se comportará como un simulador del dispositivo, es decir, los valores que devuelva no son reales, no se han tomado del exterior, sino que se los "inventa" para poder depurar el correcto funcionamiento de la librería.

En éste caso no se entrega una librería, sino una serie de módulos objeto conteniendo todas las funciones pedidas. Se recomienda al alumno que según vaya haciendo las funciones necesarias las nombre de manera idéntica a las originales, de manera que compile sustituyendo los módulos objeto: el entregado por el profesor por el realizado por el alumno. Esto permitirá ir depurando poco a poco el programa, sustituyendo la llamada a cada función en el fuente en C de manera progresiva. Al final sólo se deberá compilar usando los módulos diseñados por el alumno.

Para ver la ejecución completa se suministra también un ejecutable: prac2.exe

En esta práctica se puede utilizar la librería gráfica desarrollada en la práctica anterior y realizar un nuevo código fuente en C, modificando el que se entrega, de forma que en lugar de trabajar en modo texto lo haga en modo gráfico.

Tareas

1)  Escribir en ensamblador las funciones de la interfaz con el driver.
       a) Se proporcionan ejemplos de funciones del interfaz (cond_in.obj, datos.obj, start.obj, stop,obj, tiempo.obj e interf.h).
       b) Las funciones de los alumnos tienen que proporcionar una interfaz completo con el driver. Si es necesario, hay que cambiar/ampliar la interfaz proporcionada.
       c) Si se opta por preservar los nombres de las funciones del interfaz proporcionada y se necesita una amplificación de la interfaz, hay que ampliarla de manera  compatible.
       d) Se puede cambiar/ampliar el programa del usuario (pra2.c) si es necesario  (por ejemplo añadiendo tratamiento de errores generados por el driver).

2)  Opcional. Sustituir el programa del usuario (pra2.c) con interfaz grafica, utilizando la librería en ensamblador desarrollada durante la primera práctica.(Opcional: Cambiando la librería, se puede optar por otro modo gráfico parecido a MCGA si es necesario, por ejemplo si falta espacio en la pantalla).

Descripción del driver del Analizador Lógico y Generador de Patrones para PC


El emulador del driver se maneja a través de la interrupción 61h. Para comunicarse con este servicio se utilizan los registros de la CPU (de manera totalmente análoga ha como se ha hecho con las int 21h, int 10h etc).

Al ejecutar int 61h, en el registro AH está el grupo de la función (servicio), en AL está el detalle (subservicio) de la función y en los demás registros los parámetros de entrada.

Al volver de la int 61h el servicio cambia los registros, también llamados parámetros de salida.

Cada uno de los servicios se describe con sus parámetros de entrada, parámetros de salida y efectos colaterales.
No se permite el cambio de los registros no mencionados como salida.

 

3.1. Instalar el driver:

El driver se instala al ejecutar el programa del driver. El nombre del simulador del driver es drvsim.com.
Notar: Hay que instalar el driver antes de ejecutar la interfaz del usuario.
Efectos colaterales

3.2. Servicios de la int 61h. General


Como norma general, si no se dice otra cosa, al volver del servicio en AH está el estatus del resultado:

Registro

Entrada /salida

Valor

Descripción

AH

S

0

Operación completada con éxito

AH

S

0Feh

Error de rango de algún parámetro.

AH

S

0FDh

función no implementada

AH

S

0FCh

Función no funcional por razones de limitaciones del hardware.

3.2.1. Servicio AH=0 : Comprobación del driver

Registro

Entrada /salida

Valor

Descripción

AH

E

0

Comprobación del driver

AX

S

55Abh

Numero fijo

CL

S

X

Numero del grupo de practica (1,2,3,...)

DL

S

X

Letra del grupo a, b ó c (1 para a, 2 para b, 3 para c ...).

DH

S

X

Número de pareja

3.2.2. Servicio AH=1, Definir parámetros del driver  

     > AH=1

         > AL= 0 Dar parámetros del reloj en milisegundos

           Parámetros de entrada

                  CX = Periodo entre las muestras en milisegundos

         > AL=1 Condición de arranque (START).

             Parámetros de entrada:  a cada canal corresponde un bit en CL, BH, BL (canal 0 bit 0, canal 1 bit 1 etc.).

              Para cada canal la  condición se define de la siguiente manera:

       CL,BH,BL – condición de START.

bit en  CL,BH,BL

            0   0   0   IGNORAR Se ignora el bit al evaluar la condición

            1   0   1   Nivel ALTO

            1   0   0   Nivel BAJO

            1   1   0   Flanco de Bajada (1->0)     

            1   1   1   Flanco de Subida   (0->1)    

        > OPCIONAL -- AL=2 Condición de parada (START).

             Parámetros de entrada:  (registros -- como AH=1 AL=1.)

       CL,BH,BL – condición de STOP.

          bit in CL, BH, BL

            0   0   0   IGNORAR Se ignora el bit al evaluar la condición

            1   0   1   Nivel ALTO

            1   0   0   Nivel BAJO

            1   1   0   Flanco de Bajada (1->0)     

            1   1   1   Flanco de Subida   (0->1)    

3.2.3. AH=2 : Start/Stop del  proceso de adquisición de datos.

     > AL=0 STOP,  parar el proceso de adquisición.

           Efectos colaterales:

           Se para el proceso de adquisición y el proceso de emisión de muestras.
           Se puede también limpiar el bufer de entrada, es decir después del STOP los datos no son validos.

     > AL=1 START, arrancar el proceso de adquisición.

            >  DS:SI  – buffer cíclico del generador de muestras.
            >  CX     -- número bytes en el buffer. max 4K bytes.

            Efectos colaterales:

            Se limpia el bufer de entrada y el flag de overrun. Otros -- Ver la ultima sección.

3.2.4. AH=3 : Lectura del buffer

     Parámetros de entrada:

     > ES:DI – espacio del programa del usuario (buffer) con longitud mínima de CX reservada para los datos.

     > CX    - número máximo de muestras para devolver.

     Parámetros de salida:

     | CX    - número real de muestras devueltas

     | DX    - Número de muestras todavía en el buffer del driver.

     | AL    - 0 ok.

                1 buffer overrun -- el driver simulador no devuelve esta condición.
     | BX    - OPCIONAL número de muestras perdidas en condiciones de overrun.


     Efectos colaterales:

     Se libera tanto espacio en el buffer del driver como datos se han leído.

3.3. Funcionamiento al ejecutar el servicio START.

Con cada expiración del periodo de muestreo se emite una muestra a la salida de LPT1 y se espera la condición de START.

Si la condición de START se encuentra, la grabación de la señal se hace con la expiración de cada periodo de muestreo y termina al estar parada por el usuario (AX=0300h).  Los datos se graban en un buffer ciclico. La emisión de muestras sigue.

Si el buffer se llena (overrun) hay que indicarlo cuando el usuario pide datos, aunque se debe seguir grabando y emitiendo muestras.


Plazo de entrega : La presentación y evaluación de esta práctica será la indicada en el calendario, según el grupo (ver calendario ). El nombre del fichero o ficheros a entregar será de la forma parejap1.asm, por ejemplo 3a28p1.asm. Si hay más de un fichero, nombrarlo con números sucesivos y añadir un .bat que los ensamble y linke.(3a28p11.asm, 3a28p12.asm,... 3a28p1.bat)


Página editada y mantenida por Guillermo Glez. de Rivera
  Volver
al projecto