Simulador EGEL Ingeniería Computacional

🔌 Sistemas embebidos y microcontroladores

Sistemas embebidos y microcontroladores

Un microcontrolador integra CPU, memoria y perifericos para control determinista por firmware; un PLC es un controlador industrial robusto programado por logica ciclica; y una FPGA o dispositivo logico programable implementa hardware digital reconfigurable en paralelo. La distincion se ancla en el concepto, no en el chip del dia. En la arquitectura Harvard los buses y memorias de instrucciones y datos estan separados y se acceden en simultaneo; en la von Neumann instrucciones y datos comparten un solo bus y espacio. La E/S mapeada en memoria ubica los registros de los perifericos en el mismo espacio de direcciones que la memoria, accedidos con las mismas instrucciones load/store.

Al interpretar codigo C, recuerda que volatile obliga a leer/escribir el valor realmente en memoria sin optimizarlo: es obligatorio para registros mapeados y variables modificadas dentro de una ISR (ISO/IEC 9899, 6.7.3). Los tipos de ancho fijo (uint8_t, uint32_t) de <stdint.h> (C99) hacen portable el acceso. La manipulacion de bits sobre un registro es clave:

En GPIO, una resistencia pull-up fija nivel alto (a Vcc) y una pull-down nivel bajo (a GND), evitando entradas flotantes indeterminadas. Las interrupciones desvian el flujo a una ISR ante un evento; el watchdog timer (WDT) reinicia el MCU si el firmware no lo refresca a tiempo. Los timers generan bases de tiempo y PWM, cuyo ciclo de trabajo D = t_on / T fija el valor promedio de salida.

En ADC/DAC, un convertidor de n bits ofrece 2^n niveles (10 bits = 1024, 12 bits = 4096); el escalon vale Q = Vref / 2^n, y por Nyquist-Shannon fs > 2·fmax evita aliasing. Los buses difieren por funcion: I2C (dos hilos, multiples esclavos direccionables), SPI (full-duplex, alta velocidad) y UART asincrono, cuya trama 8N1 suma 10 bits/byte (1 inicio + 8 datos + 1 parada). Cuida el endianness (little/big-endian) y el complemento a dos (n bits: de -2^(n-1) a 2^(n-1)-1) al interpretar registros.

Practica el banco completo y haz simulacros gratis

Preguntas de muestra (35)

1. ¿Cuál es la característica que define a un microcontrolador frente a un microprocesador de propósito general?

  1. Integra en un mismo circuito integrado la CPU, memoria y periféricos de entrada/salida.
  2. Ejecuta instrucciones únicamente mediante lógica combinacional sin reloj.
  3. Requiere un sistema operativo completo para inicializar sus registros.
  4. Se programa exclusivamente mediante diagramas de contactos (ladder logic).

Un microcontrolador es un sistema en un solo chip que integra CPU, memoria y periféricos, a diferencia del microprocesador que requiere estos componentes externos; el diagrama de contactos es propio de los PLC, no de los microcontroladores. (Concepto de sistemas embebidos: microcontrolador (sistema en un chip) frente a microprocesador de propósito general.)

2. ¿Qué caracteriza principalmente a un FPGA (Field-Programmable Gate Array) frente a un microcontrolador?

  1. Ejecuta secuencialmente instrucciones almacenadas en una memoria de programa mediante una CPU fija.
  2. Implementa la función en un circuito de compuertas lógicas reconfigurables que operan en paralelo.
  3. Emplea un ciclo de escaneo periódico para leer las entradas y actualizar las salidas.
  4. Incluye de fábrica un núcleo de procesador con juego de instrucciones predefinido que no puede modificarse.

Un FPGA no ejecuta instrucciones de un programa como una CPU; el diseñador configura directamente compuertas lógicas interconectadas que pueden operar en paralelo, a diferencia del microcontrolador (ejecución secuencial) y del PLC (ciclo de escaneo). (Concepto de dispositivos lógicos programables (FPGA) frente a arquitecturas basadas en CPU.)

3. En el contexto de los controladores lógicos programables (PLC) usados en automatización industrial, ¿cuál es el modelo de ejecución típico de su programa?

  1. Una compilación del programa en un arreglo de compuertas que se reconfigura en cada ciclo de reloj.
  2. Una interrupción por cada instrucción de máquina ejecutada por el núcleo del procesador.
  3. Un ciclo de escaneo repetitivo que lee las entradas, ejecuta la lógica en diagrama de contactos y actualiza las salidas.
  4. Una máquina de estados descrita en un lenguaje de descripción de hardware sintetizado en silicio.

El PLC opera mediante un ciclo de escaneo (entradas -> lógica -> salidas) que se repite continuamente, típicamente programado en diagrama de contactos; esto lo distingue del FPGA, que se configura como hardware. (Concepto de controladores lógicos programables: ciclo de escaneo del PLC.)

4. Muchos microcontroladores modernos usan una arquitectura en la que la memoria de instrucciones y la memoria de datos están físicamente separadas, cada una con su propio bus, lo que permite leer una instrucción y acceder a un dato en el mismo ciclo de reloj. ¿Cómo se denomina esta arquitectura?

  1. Arquitectura von Neumann
  2. Arquitectura CISC
  3. Arquitectura RISC
  4. Arquitectura Harvard

La arquitectura Harvard separa físicamente los buses y memorias de instrucciones y datos, permitiendo accesos simultáneos; en la arquitectura von Neumann ambos comparten un único bus y espacio de memoria. (Arquitectura de computadoras: modelos Harvard y von Neumann.)

5. Un equipo de diseño necesita procesar en tiempo real varias señales de video de alta velocidad, aplicando a cada una un filtro digital simultáneamente, con una latencia determinística de unos cuantos ciclos de reloj. El presupuesto permite un desarrollo más largo y el volumen de producción es bajo. ¿Cuál plataforma es la más adecuada para este requerimiento?

  1. Un FPGA, porque permite implementar los filtros como bloques de hardware que operan en paralelo.
  2. Un microcontrolador de un solo núcleo, porque ejecuta las instrucciones de los filtros de manera secuencial y ordenada.
  3. Un PLC, porque su ciclo de escaneo garantiza tiempos de respuesta constantes para señales de video.
  4. Un microcontrolador con sistema operativo de tiempo real, porque las tareas se atienden por prioridad de interrupción.

El procesamiento paralelo y determinístico de múltiples señales a alta velocidad requiere implementar la lógica directamente en hardware, ventaja distintiva del FPGA; un microcontrolador, aun con RTOS, ejecuta instrucciones de forma esencialmente secuencial, y un PLC está pensado para ciclos de control industrial mucho más lentos. (Concepto de FPGA frente a arquitecturas basadas en CPU: procesamiento paralelo en hardware.)

6. Una planta necesita controlar motores, válvulas y sensores de una línea de ensamblaje en un ambiente con vibración, ruido eléctrico y temperaturas variables. El personal de mantenimiento debe poder modificar la lógica de control sin ser programador experto en C, usando diagramas gráficos estándar en la industria. ¿Qué tipo de controlador conviene usar?

  1. Un FPGA, por su capacidad de reconfigurar compuertas lógicas en campo.
  2. Un PLC, por su robustez industrial y su programación mediante diagrama de contactos.
  3. Un microcontrolador desnudo (sin tarjeta de desarrollo), por su bajo costo unitario.
  4. Un microprocesador de propósito general con sistema operativo de escritorio.

El PLC está diseñado para entornos industriales adversos y se programa típicamente con diagrama de contactos, accesible para personal de mantenimiento sin conocimientos profundos de programación; el FPGA requiere diseño en HDL y el microcontrolador desnudo requiere firmware especializado. (Concepto de controladores lógicos programables (PLC) en automatización industrial.)

7. Un equipo evalúa reemplazar un microcontrolador por un FPGA en un producto de bajo volumen de producción que requiere agregar nuevas funciones mediante actualizaciones de firmware después de su lanzamiento. ¿Cuál es la consideración correcta sobre esta decisión?

  1. Cambiar a FPGA simplificaría las actualizaciones, pues su lógica se modifica igual que el firmware de un microcontrolador.
  2. El FPGA conviene en todos los casos de bajo volumen porque su costo unitario siempre es menor que el de un microcontrolador.
  3. Cambiar a FPGA complicaría las actualizaciones, pues la lógica requiere resintetizarse y recargarse como hardware, no solo actualizar un binario.
  4. El microcontrolador no admite ningún tipo de actualización de firmware después de haber sido fabricado y distribuido.

Actualizar la lógica de un FPGA implica generar y cargar un nuevo bitstream de configuración de hardware, un proceso distinto y más complejo que actualizar el binario de firmware de un microcontrolador; el microcontrolador sí admite actualizaciones de firmware y el menor costo del FPGA no es una regla universal. (Concepto de reconfiguración de FPGA (bitstream) frente a actualización de firmware en microcontroladores.)

8. ¿Cuál de las siguientes afirmaciones sobre los microcontroladores NO es correcta?

  1. Integran en un solo circuito integrado la CPU, memoria y periféricos de entrada/salida.
  2. Acceden a los registros de sus periféricos mediante direcciones dentro de su espacio de memoria (E/S mapeada en memoria).
  3. Ejecutan su programa de forma secuencial, instrucción por instrucción, siguiendo el reloj del sistema.
  4. Se programan típicamente mediante diagramas de contactos (ladder logic) en lugar de un lenguaje como C.

Los microcontroladores se programan comúnmente en C o ensamblador, no en diagrama de contactos, que es característico de los PLC; sí integran CPU, memoria y periféricos, y acceden a sus registros mediante E/S mapeada en memoria. (Concepto de microcontrolador vs. PLC; principio de E/S mapeada en memoria (memory-mapped I/O).)

9. En un módulo de temporización (timer/counter) de un microcontrolador, ¿cuál es la diferencia entre operar en modo temporizador (timer) y en modo contador (counter)?

  1. En modo temporizador el registro se incrementa con el reloj interno a frecuencia conocida; en modo contador, con eventos que llegan por un pin externo.
  2. En modo temporizador el registro se incrementa con eventos externos; en modo contador se incrementa con el reloj interno del sistema.
  3. Ambos modos incrementan el registro exclusivamente con el reloj interno, pero a frecuencias distintas predefinidas por el fabricante.
  4. El modo temporizador solo existe en los PLC, mientras que el modo contador solo existe en los microcontroladores.

En modo temporizador el conteo se basa en el reloj interno para medir intervalos de tiempo, mientras que en modo contador el incremento ocurre ante eventos externos en un pin, aunque ambos modos suelen compartir el mismo registro de hardware. (Concepto de módulos timer/counter en microcontroladores.)

10. ¿Cuál es la función del temporizador de vigilancia (watchdog timer, WDT) en un sistema embebido?

  1. Medir con alta precisión el tiempo transcurrido entre dos interrupciones externas consecutivas.
  2. Reiniciar el microcontrolador si el software no lo refresca a tiempo, para recuperarse de un bloqueo del firmware.
  3. Generar la señal de reloj principal que sincroniza a la CPU y a todos sus periféricos.
  4. Contar los pulsos que llegan a un pin de entrada para totalizar eventos externos.

El watchdog timer reinicia el microcontrolador si el firmware no lo 'patea' a tiempo, permitiendo recuperarse de cuelgues o bloqueos; no genera el reloj principal del sistema ni mide primariamente intervalos entre interrupciones. (Principio de diseño de sistemas embebidos confiables: temporizador de vigilancia (watchdog timer).)

11. El firmware de un dispositivo embebido queda atrapado en un ciclo infinito debido a un error de programación y deja de refrescar el temporizador de vigilancia (watchdog). ¿Qué ocurre a continuación, suponiendo que el watchdog está habilitado y configurado correctamente?

  1. El watchdog detecta el ciclo infinito y salta automáticamente la instrucción que lo provoca.
  2. El watchdog reduce la frecuencia del reloj principal para permitir que el ciclo infinito termine.
  3. Al vencer el intervalo configurado sin ser refrescado, el watchdog provoca un reinicio del microcontrolador.
  4. El watchdog queda inactivo permanentemente porque el firmware ya no puede escribir ningún registro.

Si el firmware no refresca el watchdog dentro del intervalo definido, este provoca un reinicio del microcontrolador; el watchdog no analiza ni corrige el código en ejecución. (Principio de diseño de sistemas embebidos confiables: temporizador de vigilancia (watchdog timer).)

12. Una señal PWM tiene un tiempo en nivel alto (t_on) de 3 ms dentro de un periodo total (T) de 12 ms. ¿Cuál es el ciclo de trabajo (duty cycle) de esta señal?

  1. 75%
  2. 33%
  3. 20%
  4. 25%

El ciclo de trabajo se calcula como D = t_on / T = 3 ms / 12 ms = 25%; usar t_off/T (9 ms / 12 ms) da 75% por invertir la razón, y confundir el periodo con t_off (T = 3 + 12 = 15) da 20%. (Definición de modulación por ancho de pulso (PWM), D = t_on / T.)

13. En código C para un microcontrolador, el bit 3 del registro TCCR (registro de control del temporizador) habilita el conteo cuando está en 1, sin que deba alterarse ningún otro bit del registro. ¿Cuál instrucción realiza esto correctamente?

  1. TCCR |= (1u << 3);
  2. TCCR &= (1u << 3);
  3. TCCR = (1u << 3);
  4. TCCR &= ~(1u << 3);

Para poner en 1 un bit sin alterar los demás se usa OR con una máscara desplazada (TCCR |= (1u << 3)); la asignación directa borraría el resto de los bits, y &= ~(1u << 3) limpia el bit en lugar de activarlo. (ISO/IEC 9899, operadores | (OR bit a bit) y << (desplazamiento), para poner a 1 un bit de un registro.)

14. Un registro de conteo de 8 bits de un temporizador se interpreta como un entero con signo en complemento a dos. ¿Cuál es el rango de valores que puede representar?

  1. De -127 a 127
  2. De -128 a 127
  3. De 0 a 255
  4. De -256 a 255

Con complemento a dos, un entero con signo de n bits representa de -2^(n-1) a 2^(n-1)-1; para 8 bits esto es de -128 a 127, ya que el cero ocupa uno de los códigos y el rango no es simétrico. (Representación binaria en complemento a dos: rango con signo de n bits.)

15. El firmware debe deshabilitar una función poniendo en 0 el bit 4 del registro de control CTRL de un temporizador, sin modificar los demás bits del registro. ¿Cuál instrucción en C logra esto?

  1. CTRL |= (1u << 4);
  2. CTRL ^= (1u << 4);
  3. CTRL &= ~(1u << 4);
  4. CTRL = (1u << 4);

Para poner en 0 un bit sin afectar los demás se aplica AND con el complemento de la máscara (CTRL &= ~(1u << 4)); OR lo activaría, XOR lo invertiría y la asignación directa sobrescribiría todos los demás bits del registro. (ISO/IEC 9899, operadores & (AND bit a bit) y ~ (complemento a uno), para poner a 0 un bit de un registro.)

16. ¿En cuál de los siguientes casos NO es necesario declarar como volatile la variable relacionada con un temporizador?

  1. Una bandera que se pone en 1 dentro de la rutina de interrupción (ISR) del temporizador y se consulta en el bucle principal del programa.
  2. El apuntador que referencia directamente el registro de conteo del temporizador mapeado en memoria.
  3. Una variable global que el firmware actualiza dentro de la ISR y que también lee otra función fuera de la interrupción.
  4. Una variable local que acumula una suma dentro de un bucle for, sin relación con registros de hardware ni con una rutina de interrupción.

volatile es necesario cuando el valor puede cambiar por causas externas al flujo normal del compilador (hardware o una ISR); una variable puramente local a un bucle, sin relación con hardware ni interrupciones, no lo requiere. (ISO/IEC 9899, clausula 6.7.3 'Type qualifiers' (volatile).)

17. Un sensor analógico se digitaliza mediante un ADC (convertidor analógico-digital) de n bits. ¿Qué efecto tiene aumentar el número de bits n del convertidor sobre la lectura del sensor?

  1. Aumenta el número de niveles discretos disponibles (2^n), mejorando la resolución de la medición.
  2. Reduce el número de niveles discretos, pues cada bit adicional divide el rango en menos partes.
  3. No afecta la resolución, solo cambia la velocidad de conversión del ADC.
  4. Duplica el voltaje de referencia necesario para operar el convertidor.

Un ADC de n bits divide el rango de entrada en 2^n códigos discretos; a mayor n, mayor cantidad de niveles y por lo tanto mayor resolución, sin que esto implique cambiar el voltaje de referencia. (Teoría de conversión analógica-digital (cuantización): 2^n niveles.)

18. Un ADC unipolar de 10 bits usa un voltaje de referencia de 5.12 V. ¿Cuál es aproximadamente el tamaño del escalón de cuantización (1 LSB)?

  1. 50 mV
  2. 5 mV
  3. 500 mV
  4. 0.5 mV

El paso de cuantización es Q = Vref / 2^n = 5.12 V / 1024 = 5 mV; los distractores surgen de correr el punto decimal (50 mV, 500 mV, 0.5 mV) al equivocar el número de niveles. (Teoría de cuantización ADC: Q = Vref / 2^n.)

19. Un sensor de vibración genera una señal cuya componente de frecuencia más alta de interés es de 2 kHz. Según el teorema de muestreo de Nyquist-Shannon, ¿cuál es la frecuencia de muestreo mínima teórica que evita el aliasing?

  1. Un valor mayor a 2 kHz
  2. Un valor mayor a 1 kHz
  3. Un valor mayor a 4 kHz
  4. Un valor mayor a 8 kHz

El teorema de Nyquist-Shannon exige que fs sea mayor que el doble de la frecuencia máxima de la señal (fs > 2·fmax); para fmax = 2 kHz, la frecuencia mínima teórica es mayor a 4 kHz. (Teorema de muestreo de Nyquist-Shannon, fs > 2·fmax.)

20. Un pin de entrada digital del microcontrolador se conecta a un sensor tipo interruptor que, al no estar activado, deja la línea flotante (sin conexión definida a Vcc ni a GND). ¿Qué función cumple una resistencia de pull-up conectada a esa línea?

  1. Fija la línea en un nivel lógico bajo por defecto cuando el sensor no está activado.
  2. Amplifica la señal del sensor para que alcance el nivel lógico requerido por el microcontrolador.
  3. Filtra el ruido de alta frecuencia de la señal del sensor antes de llegar al pin.
  4. Fija la línea en un nivel lógico alto por defecto cuando el sensor no está activado.

Una resistencia de pull-up conecta la línea a Vcc, fijando un nivel alto por defecto y evitando que la entrada quede flotante; fijar un nivel bajo por defecto es función de una resistencia de pull-down, no de pull-up. (Diseño de circuitos digitales / configuración de GPIO: pull-up hacia Vcc, pull-down hacia GND.)

21. Un botón conecta el pin de entrada a Vcc cuando se presiona, y el diseño requiere que la entrada se lea en nivel bajo de forma confiable mientras el botón esté sin presionar. ¿Qué configuración de resistencia debe usarse en ese pin?

  1. Una resistencia de pull-down hacia GND, para fijar nivel bajo en reposo.
  2. Una resistencia de pull-up hacia Vcc, para fijar nivel alto en reposo.
  3. Ninguna resistencia, dejando el pin flotante para ahorrar energía.
  4. Una resistencia en serie entre el botón y Vcc, sin conexión a GND.

Como el botón conecta a Vcc al presionarse, se necesita una resistencia de pull-down hacia GND para garantizar un nivel bajo confiable en reposo; dejar el pin flotante produce lecturas indeterminadas. (Diseño de circuitos digitales / configuración de GPIO: pull-down hacia GND.)

22. Se requiere controlar la velocidad de un motor de corriente directa conectado como actuador a un microcontrolador, variando la potencia promedio entregada sin cambiar el voltaje de alimentación. ¿Qué técnica generada por el módulo de temporización del microcontrolador es adecuada para esto?

  1. Conversión analógica-digital (ADC), variando el número de bits de resolución de la lectura.
  2. Modulación por ancho de pulso (PWM), variando el ciclo de trabajo de la señal aplicada al motor.
  3. Comunicación UART, variando la velocidad de transmisión (baud rate) hacia el motor.
  4. Modo contador externo, variando el número de pulsos que llegan por un pin de entrada.

El PWM permite controlar la potencia promedio entregada a un actuador variando el ciclo de trabajo de una señal digital, sin cambiar el voltaje de alimentación; el ADC sirve para leer señales analógicas y UART es un protocolo de comunicación de datos, no de control de potencia. (Definición de modulación por ancho de pulso (PWM), aplicada al control de actuadores.)

23. Antes de leer el resultado de una conversión de un ADC conectado a un sensor, el firmware debe esperar a que el bit de bandera 'conversión lista' (EOC) del registro de estado se ponga en 1. ¿Cuál expresión en C evalúa correctamente si el bit 7 (EOC) del registro ADSTATUS está en 1, sin alterar el registro?

  1. (ADSTATUS | (1u << 7)) != 0
  2. ADSTATUS &= (1u << 7);
  3. (ADSTATUS & (1u << 7)) != 0
  4. (ADSTATUS ^ (1u << 7)) == 0

Para probar un bit sin alterar el registro se aplica AND con la máscara y se evalúa distinto de cero; usar OR no aísla el bit, la comparación con XOR e igualdad a cero corresponde a la condición contraria, y la opción con &= modifica el registro en lugar de solo probarlo. (ISO/IEC 9899, operador & (AND bit a bit): prueba de un bit de un registro.)

24. Un sensor externo se comunica con el microcontrolador mediante una trama serial asíncrona UART en formato 8N1 (sin bit de paridad). ¿Cuántos bits en total se transmiten físicamente por cada byte de datos del sensor, incluyendo los bits de inicio y parada?

  1. 8 bits
  2. 9 bits
  3. 11 bits
  4. 10 bits

El formato 8N1 se compone de 1 bit de inicio + 8 bits de datos + 0 bits de paridad + 1 bit de parada, sumando 10 bits transmitidos por cada byte; contar solo los datos (8) o solo un bit extra (9) son errores comunes de conteo de trama. (Comunicación serial asíncrona UART: formato de trama 8N1.)

25. En la arquitectura de un microcontrolador, los registros de los perifericos (como el puerto GPIO) se ubican en direcciones dentro del mismo espacio de direcciones que la memoria RAM, de modo que el CPU los accede con las mismas instrucciones de carga y almacenamiento que usa para cualquier variable. ¿Como se denomina este esquema de acceso a perifericos?

  1. E/S mapeada en memoria (memory-mapped I/O)
  2. E/S aislada (port-mapped I/O)
  3. Acceso directo a memoria (DMA)
  4. Multiplexacion por division de tiempo

En memory-mapped I/O los registros de los perifericos comparten el espacio de direcciones con la memoria y se leen o escriben con instrucciones ordinarias de load/store; la E/S aislada usa un espacio de direcciones e instrucciones dedicadas separadas. (Principio de arquitectura de computadoras (Patterson & Hennessy, memory-mapped I/O))

26. Una entrada digital de un microcontrolador se conecta a un boton que, cuando no esta presionado, deja el pin sin conexion definida a Vcc ni a GND (pin flotante), lo que puede producir lecturas erraticas. ¿Que elemento se agrega a la configuracion del GPIO para garantizar un nivel logico alto estable en reposo?

  1. Resistencia pull-down a GND
  2. Resistencia pull-up a Vcc
  3. Capacitor de desacoplo en el pin
  4. Diodo de proteccion en serie

La resistencia pull-up conecta la linea a Vcc y fija un nivel alto por defecto cuando la entrada esta flotante; la pull-down produciria el efecto contrario, un nivel bajo por defecto. (Diseno de circuitos digitales / configuracion de GPIO (pull-up -> Vcc))

27. En el diseno de una entrada digital, un boton conecta el pin directamente a Vcc cuando se presiona y lo deja sin conexion definida cuando esta en reposo. Para que el pin tenga un nivel logico bajo estable y confiable mientras el boton no esta presionado, ¿que resistencia interna del GPIO debe habilitarse?

  1. Resistencia pull-up hacia Vcc
  2. Salida en colector abierto (open-drain)
  3. Resistencia pull-down hacia GND
  4. Deshabilitar la resistencia interna

La resistencia pull-down fija el pin a GND (bajo) por defecto y solo cambia a alto cuando el boton conecta a Vcc; una pull-up generaria el nivel de reposo opuesto al deseado. (Diseno de circuitos digitales / configuracion de GPIO (pull-down -> GND))

28. El firmware de un sistema embebido queda atrapado en un ciclo infinito por un error de logica y deja de ejecutar el resto del programa, incluida la tarea que atiende al usuario. El sistema debe recuperarse automaticamente sin intervencion humana. ¿Que mecanismo de hardware, si estaba habilitado y no fue 'alimentado' a tiempo por el software atrapado, provoca el reinicio automatico del microcontrolador?

  1. Temporizador de captura de entrada del pin
  2. Contador de eventos externos del sistema
  3. Generador de PWM del temporizador principal
  4. Temporizador de vigilancia (watchdog timer)

El watchdog timer reinicia el microcontrolador si el software no lo refresca dentro del intervalo predefinido, justo el caso de un firmware bloqueado en un ciclo infinito; los otros modulos de temporizador listados no cumplen esa funcion de recuperacion. (Principio de diseno de sistemas embebidos confiables (watchdog timer, WDT))

29. Un manual de referencia describe varias caracteristicas de los registros de E/S mapeados en memoria de un microcontrolador. ¿Cual de las siguientes afirmaciones NO es correcta?

  1. Ocupan direcciones dentro del mismo espacio de direcciones que la memoria RAM
  2. Se acceden mediante instrucciones de carga y almacenamiento ordinarias
  3. Su valor solo puede cambiar cuando el propio programa escribe en ellos
  4. Deben declararse como volatile si el hardware puede modificar su contenido de forma asincrona

En E/S mapeada en memoria el hardware puede modificar el contenido de un registro de forma asincrona (por ejemplo al llegar un dato), por lo que afirmar que 'solo cambia por escritura del programa' es falso; esa es precisamente la razon de usar volatile. (ISO/IEC 9899, clausula 6.7.3; principio de memory-mapped I/O)

30. Un ciclo de espera activa (busy-wait) 'while (!(STATUS_REG & FLAG)) { }' consulta repetidamente un registro de estado que el hardware puede modificar en cualquier momento. Si el apuntador a STATUS_REG no se declara volatile, el compilador puede optimizar el ciclo asumiendo que su valor no cambia entre iteraciones, dejando el programa atrapado aunque el hardware si actualice el bit. ¿Por que es necesario declarar el registro como volatile en este caso?

  1. Porque reduce el tamano del codigo binario generado por el compilador
  2. Porque permite que el compilador reordene libremente las lecturas del registro
  3. Porque evita que el enlazador (linker) reubique la direccion del registro
  4. Porque impide que el compilador reutilice un valor de registro ya leido y cacheado

volatile obliga a que cada acceso se lea realmente de memoria en cada iteracion, impidiendo que el compilador reutilice un valor cacheado; volatile no afecta el tamano del binario ni la reubicacion de direcciones que realiza el enlazador. (ISO/IEC 9899, clausula 6.7.3 'Type qualifiers')

31. Un microcontrolador integra un convertidor analogico-digital (ADC) de 10 bits para leer el voltaje de un sensor. ¿Cuantos codigos digitales distintos (niveles de cuantizacion) puede producir este convertidor?

  1. 1024
  2. 512
  3. 2048
  4. 1000

Un ADC de n bits genera 2^n codigos discretos; con n=10, 2^10 = 1024 niveles, no 1000 (confusion con base decimal) ni 2048 (que corresponde a 11 bits). (Teoria de conversion analogica-digital (cuantizacion), 2^n niveles)

32. Un ADC de 12 bits tiene un voltaje de referencia (Vref) de 3.3 V. ¿Cual es aproximadamente el voltaje que representa 1 bit menos significativo (1 LSB), es decir, el tamano del escalon de cuantizacion?

  1. 0.0033 V
  2. 0.00081 V
  3. 0.0016 V
  4. 0.0100 V

Q = Vref / 2^n = 3.3 / 4096 ≈ 0.00081 V; usar 2048 (n=11) en vez de 4096 da por error 0.0016 V, y usar 1000 en vez de 4096 lleva a 0.0033 V. (Teoria de cuantizacion ADC, Q = Vref / 2^n)

33. Un sensor de vibracion genera una senal con componentes de frecuencia de hasta 5 kHz que debe digitalizarse sin que aparezca aliasing en el espectro reconstruido. Segun el teorema de muestreo, ¿cual es la frecuencia minima de muestreo que debe usar el ADC?

  1. Mayor a 2.5 kHz
  2. Mayor a 5 kHz
  3. Mayor a 10 kHz
  4. Mayor a 20 kHz

El teorema de Nyquist-Shannon exige fs > 2·fmax, es decir mayor a 10 kHz para una componente maxima de 5 kHz; muestrear apenas por encima de 5 kHz o de 2.5 kHz produce aliasing. (Teorema de muestreo de Nyquist-Shannon, fs > 2·fmax)

34. Para controlar la velocidad de un motor de CD desde un microcontrolador sin un DAC dedicado, el firmware genera una senal cuadrada de frecuencia fija y varia la proporcion de tiempo en nivel alto dentro de cada periodo, de modo que el valor promedio filtrado por la inercia del motor determina su velocidad. ¿Que parametro de esta senal se esta modificando?

  1. La frecuencia de conmutacion
  2. La amplitud de voltaje pico
  3. La fase respecto a una referencia
  4. El ciclo de trabajo (duty cycle)

El ciclo de trabajo D = t_on / T define la fraccion del periodo en alto y por tanto el valor promedio entregado, tal como se usa en PWM para emular una salida analogica; la frecuencia de conmutacion se mantiene fija en este esquema. (Definicion de modulacion por ancho de pulso (PWM), D = t_on / T)

35. Una senal PWM tiene un periodo total de 20 ms, de los cuales la salida permanece en nivel alto durante 5 ms. ¿Cual es el ciclo de trabajo de esta senal?

  1. 25%
  2. 20%
  3. 15%
  4. 40%

D = t_on / T = 5 ms / 20 ms = 0.25 = 25%; 20% resultaria de un error de division y 15% de restar en vez de dividir los tiempos. (Definicion de PWM, D = t_on / T)

Comienza gratis