Programación de Sistemas Embebidos: El cerebro detrás de toda la magia.

30.09.2024

La materia de Programación de Sistemas Embebidos nos enseña a darle vida a los dispositivos que usamos a diario, como electrodomésticos o en un ámbito más profesional, robots. Un sistema embebido es una pequeña computadora dentro de estos aparatos, diseñada para controlar tareas específicas.

¡Es como programar el cerebro de una máquina!

En clase, aprendemos a programar estos sistemas usando lenguajes como C y C++, y trabajamos con microcontroladores o microprocesadores.

Es posible que creas que un microcontrolador y un microprocesador son iguales, no te preocupes, yo pensaba lo mismo y si bien se usan para tareas similares, ambas poseen ciertas diferencias. A continuación mostrare un pequeño mapa mental sobre las diferencias que existen entre un microcontrolador y un microprocesador:


Práctica con MPLAB X IDE y Proteus: Simulando y Programando un Sistema Embebido

En clase, realizamos una práctica usando dos herramientas: MPLAB X IDE y Proteus.

MPLAB X IDE es un entorno que usamos para programar microcontroladores, específicamente de la familia PIC.

Por otro lado, Proteus es un software de simulación que nos permite visualizar cómo funcionaría nuestro circuito antes de construirlo físicamente. correctamente.

En la práctica, programamos un microcontrolador PIC18F4550 para poder hacer lo siguiente:

Primero, escribimos el código en MPLAB X IDE, donde configuramos los pines y escribimos las instrucciones para controlar la barra de LED's.


CÓDIGO

Explicación del código

<xc.h>: Esta es la biblioteca estándar del compilador XC8 para microcontroladores PIC. 

  "Configuraciones_PIC.h": Aquí se incluye un archivo de cabecera propio que contiene las configuraciones específicas del PIC (como configuraciones del oscilador, WDT, etc.). 

"pic18f4550.h": Este archivo define los registros y características específicas del microcontrolador. 

ADCON1bits.PCFG = 0xFF;: Configura los pines como digitales al deshabilitar el módulo ADC (convertidor analógico-digital). Esto asegura que los pines se comporten como entradas o salidas digitales. 

LATA=0;, LATB=0;, etc.: Se inicializan todos los registros de LAT (Latch) en 0. Esto significa que los pines de salida asociados estarán inicialmente en bajo (0V). 

TRISx: Los registros TRIS configuran si un pin es de entrada o salida. Un bit en 0 significa que el pin es de salida, y un bit en 1 lo configura como entrada.

InitPort();: Llama a la función que inicializa los puertos. 

unsigned char Estado; y similares: Se declaran cuatro variables de tipo unsigned char (8 bits) para almacenar los estados de los pines RA1, RA4, RB1, y RB4. 

while(1): Bucle infinito que mantiene la ejecución del programa. 

Estado = PORTAbits.RA1;, etc.: Estas líneas leen los estados de los pines de entrada RA1, RA4, RB1 y RB4. Si el pin tiene un nivel alto (1), la variable Estado o sus equivalentes tomarán ese valor, de lo contrario, tomarán el valor 0. 

Condicionales if: Según el estado de cada pin de entrada, se controlan los pines de salida. Por ejemplo, si RA1 está en alto (1), se activa el pin RC1. De lo contrario, se apaga.

__delay_ms(1000);: Introduce una demora de 1000 ms (1 segundo) entre cada ciclo del bucle. Esto es útil para reducir la velocidad de actualización del programa.


En términos muy simples, el comportamiento básico del programa es: El programa lee constantemente el estado de los pines RA1, RA4, RB1 y RB4, y según su valor (alto o bajo), activa o desactiva los pines RC1, RC2, RD1 y RE1. Cada ciclo del bucle tiene un retardo de 1 segundo para evitar cambios muy rápidos. Es un sistema básico de control de salida basado en entradas digitales.

Y posteriormente hacemos el circuito en Proteus:

Con este tipo de práctica puedes ir empezando a familiarizarte con todo este entorno e ir progresando poco a poco en el entendimiento de los sistemas embebidos.

© 2024 BLOG DEDICADO A LA MECATRÓNICA. Todos los derechos reservados.
Creado con Webnode Cookies
¡Crea tu página web gratis! Esta página web fue creada con Webnode. Crea tu propia web gratis hoy mismo! Comenzar