Foro no oficial de la UPCT

Versión completa: Junio 2017
Actualmente estas viendo una versión simplificada de nuestro contenido. Ver la versión completa con el formato correcto.

Mojonero

Como no dejan sacar los enunciados pongo por aqui lo que recuerdo del exámen de incógnito en plan microleaks, si alguno más que se haya presentado puede corregir/dar más info mejor que mejor.


El de TEORÍA no era difícil:
El primer ejercicio preguntaba por el concepto de interrupción, cómo se produce y cómo se resuelve.
El segundo pedía explicar el tema daisy chain (Hardware poll), y creo que preguntaba qué es un vector de interrupción (capaz fuera en el anterior).
El tercero era enumerar y explicar los distintos tipos de direccionamiento del PIC16F87X (el de prácticas y diapositivas), y también venía con una tabla que te daba algunas instrucciones y tenías que decir qué modo de direccionamiento usa y justificarlo: habían instrucciones con direcciones de memoria tal cual (ej. [MOVWF 0x30, 1]) o intrucciones con FSR como argumento (ej. [SUBWF FSR, 1]), una instruccion de salto (goto salto) y una etiqueta per se (salto).
El último eran las etapas de diseño con una FPGA.



El de VHDL, en palabras de Rafa, era la bomba :
Básicamente te pedía hacer una cuenta atrás desde N segundos y el testbench que comprobara todas las situaciones posibles.
Te daba el nombre de los puertos de entrada y de salida:
  • ENTRADA es un bus de 8 bits que determina el numero de segundos que cuentas
  • INICIO es una señal que empieza la cuenta atrás
  • LOAD como señal de carga
  • BOOM se pone a 1 cuando la cuenta llega a 0
  • SALIDA es otro bus de 8 bits que muestra los segundos que faltan para que pete el chisme
  • ROJO, 1 bit
  • AZUL, 1 bit
  • Reset
  • Reloj, de 50 KHz
Después detallaba el funcionamiento de todo: por la forma en la que estaba escrito trataba de implicar que te haría falta como poco una señal intermedia donde guardar el valor inicial de la cuenta atrás. La señal LOAD permite que la señal cuenta se cargue con el valor de ENTRADA, pero la cuenta atrás no empezará hasta que INICIO pase a 1. Una vez INICIO haya sido 1, aunque vuelva a valer 0 no se debe detener la cuenta, y si volviera a valer 1 tampoco se debería reiniciar la cuenta.
La señal SALIDA mostrará en todo momento el estado de la cuenta.

Una vez iniciada la cuenta, pueden darse los siguientes casos:
  • Se activa Reset, en cuyo caso la cuenta debe ponerse a todo unos.
  • Se activa ROJO, tras lo cual la cuenta decrementa 10 veces más rápido
  • Se activa AZUL, tras lo cual la cuenta se detiene
No recuerdo bien esta parte, pero creo que tiene sentido que una vez BOOM vale 1 ya no se puede resetear la cuenta ni volver a cargar.
Ponía algunas notas aparte, te deja completa libertad en la forma de hacerlo, pon todas las señales intermedias y procesos que te de la gana etc, para la simulación sólo tienes que definir el periodo de reloj y los valores que toman las variables (nada del tochón de cabeceras) y decía alguna cosa más, pero creo que el resto son cosas en plan cliché o muy obvias.



El examen de PIC eran 2 ejercicios, bastante enrevesados:

El primero te pedía usar interrupciones de USART y Timer0 (e implicitamente direccionamiento indirecto) para poder leer y escribir en la memoria de datos del micro desde el teclado. El programa espera recibir por conexión serie RS-232 el caracter 'R' o 'W'. Si recibe 'R' esperará recibir después una dirección de memoria, tras lo cual devolverá el dato allí hallado siguiendo el formato "R %dirección %dato". Si recibe 'W' esperará recibir primero una dirección de memoria y después un dato para escribir en esa dirección. En este caso no transmite nada. Javi clarificaba después que no hay que manipular nada para la dirección o el dato: lo que saques de RCREG lo usas tal cual.

Existe un tiempo máximo de 2 segundos de espera entre datos consecutivos, si no se recibe un dato en ese tiempo se abortará el proceso y el programa deberá volver al estado de espera inicial (esperando 'R' o 'W'). 
El enunciado me suena que era más largo, así que seguro que me estoy dejando algún detalle ahora mismo.


El segundo básicamente es usar todo lo que no has usado en el primero: conversión AD, cambio de PORTB<4:7> y RB0. Pedía hacer la conversión de dos señales analógicas conectadas a RA1 y RA3 y hacer la media o la resta (o suma?). Se tiene la variable HL que si está a 1 entonces se usan los 8 bits más significativos del resultado de la conversión, y si está a 0 los 8 menos significativos. HL tomaba valor de RB7, si vale 1 entonces HL vale 1, y si vale 0 entonces HL también vale 0. 
La conversión se realiza en cada flanco descendente de RB0.
Para determinar la operación que se realiza se tiene la variable visualizar. Esta variable se incrementa con cada flanco descendente de RB4, y cuando vale 1 se hace la media, cuando vale 2 la otra-operación-que-quizá-sea-resta-pero-no-me-acuerdo. Empieza valiendo 1, y si se incrementa valiendo 2 vuelve a ponerse a 1. El valor de visualizar se muestra a través de los bits PORTB<2:1>.

El resultado de la operación se muestra a través de PORTC. Durante la conversión se enciende un led a través de RA2, que se apaga cuando no se esté convirtiendo.


Quiero hacer notar que esta convocatoria los exámenes se hacían todos en papel, ya que no siempre se ha hecho así y quizá no lo sea en un futuro, por lo que en ese caso a lo mejor suben el nivel.
Me parece un muy buen aporte.