Comunicación y Sistemas Empotrados

Comunicación Síncrona vs. Asíncrona

C1. ¿Cuál es la diferencia entre la comunicación síncrona y la comunicación asíncrona? Explica cuál es la más utilizada en los sistemas empotrados y por qué.

Comunicación Asíncrona: Se insertan marcas para señalizar el comienzo de la transmisión.

Comunicación Síncrona: La señal de temporización de bit se envía aparte. En la comunicación síncrona se envía una señal de reloj en la transmisión que marca las pautas de la comunicación. Esta señal se puede proporcionar a través de una línea adicional entre los sistemas que se quiere comunicar, o bien, se puede extraer de alguna forma específica de codificación. En la comunicación asíncrona tanto el transmisor como el receptor deben secuenciar la comunicación de acuerdo con una base de tiempos, pues la transmisión o la recepción pueden ocurrir en cualquier momento.

En sistemas empotrados, la comunicación asíncrona es más común debido a su simplicidad y menor costo de implementación. No requiere una línea de reloj dedicada, lo que reduce el número de pines necesarios en el microcontrolador.

Comunicación RS-232

C2. Enumera los bits que se transmiten en un sistema asíncrono RS-232 y la finalidad de cada uno.

  • Bit de inicio (Start bit): Un bit ‘0’ lógico que indica el comienzo de la transmisión.
  • Bits de datos: Contienen la información a transmitir, comenzando por el bit menos significativo.
  • Bit(s) de parada (Stop bit): Uno o dos bits ‘1’ lógico que indican el final de la transmisión.

C3. Explica qué es el generador de baudios y qué relación tiene con las velocidades de transmisión en la interfaz RS-232.

El generador de baudios es un circuito que genera una señal de reloj con una frecuencia específica, la cual determina la velocidad de transmisión en baudios. En la interfaz RS-232, la velocidad de transmisión se refiere a la cantidad de bits por segundo que se transmiten. El generador de baudios asegura que el transmisor y el receptor estén sincronizados a la misma velocidad para una comunicación efectiva.

En microcontroladores AVR, el registro TWBR y el preescalador en el registro TWSR controlan la frecuencia del generador de baudios. La velocidad de transmisión se configura cargando el registro SPBRG con el valor apropiado. El bit BRGH selecciona entre alta y baja velocidad, y el bit BRG16 permite usar el registro SPBRG como un registro de 8 o 16 bits.

Programación de la UART en AVR

C4. Enumera los pasos necesarios para transmitir un texto por el puerto serie mediante programación en C de la UART del AVR.

El código proporcionado describe la configuración de una interrupción ADC, no la transmisión de texto por UART. Para transmitir texto por el puerto serie, se deben seguir estos pasos:

  1. Configurar la UART: Establecer la velocidad de transmisión, el número de bits de datos, los bits de parada y la paridad.
  2. Habilitar la interrupción de transmisión (opcional): Permite enviar datos en segundo plano.
  3. Escribir datos en el registro de transmisión de la UART: Los datos se enviarán automáticamente por el puerto serie.

Gestión del puerto serie por interrupciones

C5. Indica el proceso para gestionar el puerto serie por interrupciones. Explica los sucesos que ocurren al llegar un carácter a la USART del AVR.

La gestión del puerto serie por interrupciones utiliza un búfer circular (FIFO) para almacenar los datos recibidos o a transmitir. Al llegar un carácter a la USART:

  1. Se genera una interrupción de recepción.
  2. El controlador de interrupción lee el dato del registro de recepción de la USART.
  3. El dato se almacena en el búfer circular de recepción.
  4. Se comprueba si hay más datos disponibles en la USART.
  5. Se sale de la interrupción.

El programa principal puede entonces leer los datos del búfer circular a su propio ritmo. El proceso de transmisión es similar, pero en lugar de leer datos de la USART, el controlador de interrupción escribe datos en el registro de transmisión.

Bus I2C

C1. Indica las características más importantes del bus I2C y explica brevemente cada una.

  • Dos líneas: Utiliza solo dos líneas, SDA (datos) y SCL (reloj).
  • Direcciones únicas: Cada dispositivo tiene una dirección única seleccionable por software.
  • Maestro/Esclavo: Comunicación maestro-esclavo, donde el maestro inicia la comunicación.
  • Múltiples maestros: Permite la conexión de varios maestros con detección de colisiones.
  • Comunicación flexible: El protocolo permite diseñar sistemas flexibles definidos por software.
  • Transferencia de 8 bits: Los datos y direcciones se transmiten en palabras de 8 bits.

C2. Indica la diferencia entre la gestión del bus I2C mediante el método de”bitban” y empleando la controladora del bus TWI del AVR.

Bitbang: Implica el uso de software para generar las señales SDA y SCL manualmente, lo que consume tiempo de CPU y es propenso a errores.

Controladora TWI: Hardware dedicado que maneja la comunicación I2C, liberando la CPU y proporcionando una comunicación más rápida y confiable.

C3. Explica cómo se implementa el acuse de recibo o acknowledge en el bus I2C.

Después de cada byte transmitido, el receptor envía un bit de reconocimiento (ACK) al transmisor. Si el receptor recibe el byte correctamente, envía un ACK (nivel bajo en SDA). Si el receptor no puede recibir el byte, envía un NACK (nivel alto en SDA). El ACK/NACK permite al maestro verificar si la transmisión fue exitosa.

Bus SPI

C4. Indica la diferencia entre la gestión del bus SPI mediante el método de”bitban” y empleando la controladora del bus TWI del AVR.

La pregunta hace referencia a la controladora TWI, que es para I2C, no SPI. La diferencia entre bitbang y la controladora SPI es similar a la de I2C:

Bitbang: Generación manual de señales SPI mediante software, lo que consume tiempo de CPU.

Controladora SPI: Hardware dedicado que maneja la comunicación SPI, liberando la CPU y proporcionando una comunicación más rápida.

C5. Explica para qué se usa y qué significa la conexión de dispositivos SPI en”daisy chai”.

La conexión en cadena margarita “daisy chai”) en SPI permite conectar múltiples dispositivos en serie utilizando solo tres líneas del maestro: MOSI (salida maestra, entrada esclava), MISO (entrada maestra, salida esclava) y SCK (reloj). Los datos se envían en serie a través de los dispositivos, y cada dispositivo puede leer los datos destinados a él. Esta configuración es útil para controlar múltiples dispositivos con un solo maestro, como cadenas de LED o sensores.

Generación de señales analógicas con PWM

C1. Indica cómo se puede generar una señal analógica mediante el empleo de PWM y qué ventajas tiene.

Se puede generar una señal analógica a partir de una señal PWM mediante un filtro paso bajo. El filtro suaviza los pulsos de la señal PWM, produciendo una señal analógica proporcional al ciclo de trabajo de la PWM. Las ventajas de este método son:

  • Simplicidad: Fácil de implementar con un microcontrolador.
  • Bajo costo: No requiere componentes analógicos costosos.
  • Control preciso: El ciclo de trabajo de la PWM se puede controlar con precisión.

Convertidor A/D

C2. Explica por qué hay que configurar las patillas de E/S del AVR de forma especial para emplear el convertidor A/D integrado.

Las patillas de E/S del AVR se deben configurar como entradas analógicas para utilizar el convertidor A/D. Esto desactiva las funciones digitales de las patillas, permitiendo que el convertidor A/D mida el voltaje analógico presente en las patillas.

C3. Indica cómo se realiza la comunicación multibyte con el convertidor A/D por bus I2C.

La pregunta no proporciona suficiente información sobre el convertidor A/D específico. Algunos convertidores A/D con interfaz I2C pueden requerir múltiples bytes para transferir datos de alta resolución. En estos casos, el maestro envía comandos específicos al convertidor A/D para iniciar la conversión y leer los bytes de datos altos y bajos.

Generación de PWM con AVR

C4. ¿Puede generar de forma automática el AVR una señal PWM? Enumera y detalla los registros que hay que programar.

Sí, los AVR pueden generar señales PWM automáticamente utilizando los módulos Timer/Counter. Los registros a configurar varían según el modo de operación del Timer/Counter, pero generalmente incluyen:

  • TCCRnA/B: Configura el modo de operación del Timer/Counter, incluyendo el modo PWM.
  • OCRnA/B: Define el ciclo de trabajo de la señal PWM.
  • TIMSKn: Habilita las interrupciones del Timer/Counter.

El código proporcionado en la pregunta no muestra la configuración correcta para generar PWM con AVR.

Potenciómetros digitales

C5. ¿Cómo funcionan los potenciómetros digitales? Enumera algunas de las aplicaciones en las que se emplean.

Los potenciómetros digitales son dispositivos electrónicos que simulan el comportamiento de un potenciómetro analógico. Internamente, utilizan un divisor de voltaje con múltiples resistencias conectadas a un multiplexor analógico. El multiplexor selecciona una de las resistencias, ajustando así la resistencia total del divisor y, por lo tanto, el voltaje de salida.

Aplicaciones:

  • Control de volumen
  • Ajuste de brillo de pantalla
  • Control de ganancia de amplificadores
  • Calibración de sensores

Sistemas de tiempo real

C1. Indica las diferencias entre sistemas de tiempo real de tipo”har” y de tipo”sof”.

Sistemas de tiempo real duros “har”):

  • Tiempos límites estrictos: Las tareas deben completarse dentro de un plazo definido, de lo contrario, se considera un fallo del sistema.
  • Consecuencias graves en caso de fallo: Un fallo en cumplir los plazos puede tener consecuencias catastróficas.
  • Ejemplos: Sistemas de control de vuelo, marcapasos cardíacos.

Sistemas de tiempo real blandos “sof”):

  • Tiempos límites flexibles: Se permiten pequeñas variaciones en los plazos de las tareas.
  • Consecuencias menos graves en caso de fallo: Un fallo ocasional no es crítico para el sistema.
  • Ejemplos: Reproductores multimedia, sistemas de adquisición de datos.

C2. ¿Cuál es la definición de sistema en tipo real? Explícala.

Un sistema en tiempo real es aquel que debe responder a eventos externos dentro de un período de tiempo determinado y predecible. La corrección del sistema no solo depende de la respuesta lógica, sino también del tiempo en que se produce la respuesta.

Programación de sistemas de tiempo real

C3. Indica cómo se organizan las tareas en un programa mediante la técnica de primer plano/trasfondo. Pon un ejemplo.

En la técnica de primer plano/trasfondo:

  • Primer plano: Tareas de alta prioridad que se ejecutan como interrupciones. Responden a eventos críticos en tiempo real.
  • Trasfondo: Tareas de menor prioridad que se ejecutan en un bucle principal cuando no hay interrupciones. Realizan tareas menos urgentes.

Ejemplo: Un sistema de control de motor. La tarea de control de velocidad del motor se ejecuta en primer plano como una interrupción, mientras que la tarea de lectura de la temperatura del motor se ejecuta en segundo plano.

C4. Indica cómo se estructura un programa basado en un RTOS. Pon algún ejemplo.

Un RTOS (Sistema Operativo de Tiempo Real) proporciona funciones para administrar tareas, recursos y tiempo en sistemas de tiempo real. Un programa basado en RTOS se estructura en tareas independientes que se ejecutan concurrentemente. El RTOS se encarga de la planificación y el cambio de contexto entre las tareas.

Ejemplo: Un sistema de control de semáforos. Cada semáforo se gestiona mediante una tarea independiente. El RTOS asegura que las tareas se ejecuten en el orden correcto y que los semáforos cambien de estado en los momentos adecuados.

Planificación de tareas en RTOS

C5. Explica en qué consiste la planificación Round-Robin y cuáles son sus carencias.

La planificación Round-Robin asigna a cada tarea un intervalo de tiempo (cuanto) para ejecutarse. Las tareas se ejecutan en orden cíclico, y si una tarea no finaliza dentro de su cuanto, se suspende y se le da el turno a la siguiente tarea.

Carencias:

  • No tiene en cuenta la prioridad de las tareas.
  • Puede ser ineficiente si hay grandes diferencias en los tiempos de ejecución de las tareas.

C6. Explica en qué consiste la planificación preemptiva con prioridades y sus ventajas.

La planificación preemptiva con prioridades asigna a cada tarea una prioridad. Las tareas de mayor prioridad se ejecutan primero, y una tarea en ejecución puede ser interrumpida por una tarea de mayor prioridad.

Ventajas:

  • Permite que las tareas críticas se ejecuten con mayor rapidez.
  • Mejora la capacidad de respuesta del sistema.

Programación de tareas en RTOS

C7. Indica cómo se programan las tareas en un RTOS y qué proceso se sigue para estructurar el programa.

Las tareas en un RTOS se programan como funciones independientes que se ejecutan”infinitament”. El RTOS proporciona funciones para crear, iniciar, suspender y finalizar tareas. La estructura del programa generalmente incluye:

  1. Inicialización del RTOS.
  2. Creación de las tareas.
  3. Inicio del RTOS.

Las tareas se comunican entre sí mediante mecanismos de sincronización proporcionados por el RTOS, como semáforos, mutexes y colas de mensajes.

Inversión de prioridades

C8. Explica el concepto de inversión de prioridades en un RTOS y cuándo se produce.

La inversión de prioridades ocurre cuando una tarea de baja prioridad bloquea un recurso (por ejemplo, un semáforo) que necesita una tarea de alta prioridad. Esto puede provocar que la tarea de alta prioridad se bloquee indefinidamente, incluso si su prioridad es mayor.

Ejemplo: Una tarea de baja prioridad adquiere un semáforo para acceder a un recurso compartido. Una tarea de alta prioridad intenta adquirir el mismo semáforo, pero se bloquea porque la tarea de baja prioridad lo está utilizando. Si la tarea de baja prioridad se retrasa por alguna razón, la tarea de alta prioridad también se retrasará, aunque tenga mayor prioridad.

Sistema operativo Linux

C1. ¿Qué es el kernel de un sistema operativo Linux? Explica qué funcionalidad básica contiene.

El kernel es el núcleo del sistema operativo Linux. Es responsable de la gestión de recursos del sistema, como la memoria, el procesador y los dispositivos de E/S. También proporciona una interfaz para que los programas de usuario interactúen con el hardware.

Funcionalidad básica:

  • Gestión de memoria
  • Planificación de procesos
  • Gestión de dispositivos
  • Sistema de archivos
  • Comunicación entre procesos

C2. ¿Qué es el directorio personal en Linux? Indica dónde se encuentra en el sistema de archivos y para qué se emplea.

El directorio personal es un directorio privado para cada usuario en un sistema Linux. Se encuentra generalmente en /home/nombredeusuario y se utiliza para almacenar archivos y configuraciones del usuario.

Comandos Linux

C3. Indica el comando para cambiar de directorio en el sistema de archivos. ¿Cómo se sabe en qué directorio me encuentro actualmente?

  • cd: Comando para cambiar de directorio (por ejemplo, cd /home/usuario).
  • pwd: Comando para mostrar el directorio actual.

C4. Indica qué tipo de ficheros mostraría por pantalla el comando ‘ls -l fi?l*’.

El comando ls -l fi?l* mostraría información detallada (opción -l) sobre los archivos que comienzan con”f”, seguidos de un solo carácter cualquiera (?), luego”” y cualquier cantidad de caracteres (*).