Está en la página 1de 2

ET1032 Informática Industrial

7 de julio de 2020

La duración del examen es de 4h incluida la entrega por correo electrónico


Está permitido el uso de libros o apuntes

Pregunta 1. (2 puntos) – La imagen inferior muestra las variables y el estado de la memoria en un momento dado
de la ejecución de un programa. Responde a las preguntas que aparecen más abajo, justificando todas las
respuestas. Ten en cuenta que se trata de una arquitectura little endian de 32 bits.
Variables del programa
======================
int i, *pi;
char cad[10], *pcad = "ET1032";

Estado de la memoria
====================
Direccion +0 +1 +2 +3 +4 +5 +6 +7 Variables

0060FBC0 |C4 04 9F 00 68 40 40 00| ─.ƒ. h@@. | pcad(+4)


0060FBC8 |CC FB 60 00 CA 67 B5 04| ╠¹`. ╩gÁ. | pi(+0) i(+4)
0060FBD0 |45 54 31 30 33 32 00 00| ET10 32.. | cad[10](+0)
0060FBD8 |7F 00 ?? ?? ?? ?? ?? ??| •. |

La imagen de memoria contiene a la izquierda de cada línea de datos la dirección de comienzo de esos datos,
luego los bytes en hexadecimal, los caracteres ASCII correspondientes a los bytes y las variables cuyos
contenidos están en la línea. La dirección de cada byte se obtiene sumando a la dirección inicial de cada línea el
valor que aparece sobre él en el encabezado, tras la palabra Direccion. Tras el nombre de cada variable, entre
paréntesis, aparece el valor que hay que sumar a la dirección inicial de la línea para obtener la dirección en
memoria de la variable.

Preguntas (1 punto cada una):

 Indica los valores que aparecerían en pantalla al ejecutar printf ("pi = %08X - *pi = %08X - &pi = %08X\n",
(int)pi, *pi, (int)&pi);. El modificador de formato %08X imprime un entero en hexadecimal, con 8 caracteres
–es decir rellenando con 0 a la izquierda si es necesario- y usando letras mayúsculas para símbolos
mayores a 9.
 En un momento previo al estado de la memoria que se presenta, se ha copiado la cadena “ET1032” en la
variable cad. En la memoria mostrada sólo aparece una vez dicha cadena. Indica por qué sólo está una
vez y si refleja el contenido de cad o de pcad. No olvides justificarlo.

Pregunta 2. (1 punto) – Indica las corrientes máxima y mínima que podrían circular a través del diodo LED de
la figura cuando está encendido, sabiendo que Vd es de 1,2V, la resistencia de 330Ω y los parámetros eléctricos
del microcontrolador son los que aparecen en la tabla.

Par. Valor
Vohmin 4,2V
Volmax 0,8V
Iohmax -20mA
Iolmax 20mA
Pregunta 3. (3 puntos) – Realiza una función int *mezcla(int *v1, int t1, int *v2, int t2, int n) que genere un nuevo
vector alternando n elementos de cada uno de dos vectores dados, comenzando por v1. Como el tamaño de los
vectores puede ser cualquiera, cuando se completen los elementos de uno de ellos se copiarán en el vector
resultado los elementos restantes del otro. Además el tamaño del último grupo de elementos copiados del vector
menor puede ser inferior a n.

Por ejemplo si v1 es 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, v2 es 21, 22, 23, 24, 25, 26, 27 y n vale 3, la salida sería 1, 2, 3, 21, 22, 23,
4, 5, 6, 24, 25, 26, 7, 8, 9, 27, 10, 11.

Pregunta 4. (2 puntos) – Cierto sistema de seguridad trabaja con enteros de 32 bits codificados de la siguiente
forma: los 2 bits más significativos no forman parte del valor, sino que indican la codificación del resto. El msb
(bit 31) indica si el valor de los 30 bits restantes se mantiene en su posición (cuando vale 0) o se ajustan a la
izquierda (desplazándolo dos posiciones en esta dirección.). El siguiente, bit 30, indica si una vez realizado el
ajuste de los 30 bits, el valor final del entero ya está calculado (cuando vale 1) o hay que cambiar los 1 por 0 y
viceversa. Realiza una función int decodifica(uint entrada) con uint dado por typedef unsigned int uint que obtenga
el valor entero codificado de esta manera en el parámetro de entrada.

La tabla siguiente presenta un ejemplo de decodificación de un valor con los 30 bits menos significativos
constantes y las 4 posibilidades para los bits 30 y 31.

Entrada Bits Salida


30B7426C 00 CF48BD93
70B7426C 01 30B7426C
B0B7426C 10 3D22F64F
F0B7426C 11 C2DD09B0

Pregunta 5. (2 puntos) – Desarrolla un programa para un sistema con un microcontrolador (PIC o Arduino) que
disponga de dos canales de conversión AD, 2 diodos LED y un pulsador. Los canales se consideran como una
única entrada diferencial, siendo un canal el positivo y el otro el negativo. El sistema realizará una conversión de
ambos canales al pulsar y calculará el resultado diferencial restando al valor de conversión del canal positivo el
del negativo. Cuando este resultado esté por encima de cierto umbral máximo encenderá uno de los LED y cuando
esté por debajo de otro umbral mínimo, el otro. Los umbrales son constantes en el sistema. Además, tras cada
pulsación, mostrará por pantalla o el monitor serie el resultado de conversión de ambos canales y el valor
diferencial.

No es necesario indicar nada acerca del circuito electrónico, basta con que se identifiquen correctamente los pines
que se utilizan para las entradas y salidas.

También podría gustarte