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:
REG |= (1u << n);REG &= ~(1u << n);REG ^= (1u << n);(REG & (1u << n)) != 0En 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.
1. ¿Cuál es la característica que define a un microcontrolador frente a un microprocesador de propósito general?
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?
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?
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?
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?
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?
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?
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?
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)?
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?
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?
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?
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?
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?
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?
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?
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?
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)?
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?
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?
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?
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?
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?
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?
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?
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?
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?
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?
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?
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?
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?
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?
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?
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?
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?
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)