Guía Paso a Paso para la Programación de Microcontroladores

Esta es una guía paso a paso para aquellos que desean comenzar con la Programación de Microcontroladores. El artículo comienza con la introducción de algunos términos básicos que se utilizarán en la guía, una lista de herramientas, lenguajes de programación y, al final, un ejemplo de código descargable con una guía paso a paso que podría usar para practicar la programación de microcontroladores.

Pero antes de sumergirse en la Programación de Microcontroladores. Definamos los dos primeros términos básicos: Hardware y Software.

El hardware consiste en los componentes físicos del sistema, como chips, teclado, ratón, monitor, memorias, dispositivos de E/S. El hardware es más difícil de desarrollar en comparación con el software, debe diseñarse para aplicaciones muy específicas y es una solución muy eficiente y perfecta en sistemas de alta velocidad.

El software es los componentes no físicos o las aplicaciones que se ejecutan en el hardware, como sistemas operativos, juegos de computadora y aplicaciones de red. El software es altamente configurable, fácil y rápido de desarrollar, también muy barato en comparación con el hardware.

Qué es un Microcontrolador

Para entender qué es un microcontrolador, necesitamos entender primero qué es un microprocesador o una CPU (Unidad Central de Procesamiento). Una CPU es el corazón de cualquier sistema informático, es como el cerebro humano al realizar una tarea. Básicamente podemos dividirlo en dos partes esenciales:

Unidad de control: Esta unidad se utiliza para obtener los datos de la memoria.

Unidad de ejecución: Esta unidad se utiliza para ejecutar o ejecutar los datos.

Tipos de procesadores

Hay muchas categorías de procesadores, como procesadores de uso general, procesadores de sistema específicos de aplicación y sistemas de múltiples procesadores. El procesador de propósito general tiene muchos tipos:

▪ Microprocesador

▪ Microcontrolador

▪ Procesador integrado

▪ Procesador de señal digital

El microprocesador es un dispositivo semiconductor o una computadora en un chip, pero no una computadora completamente funcional. Su unidad de procesador central contiene

▪ ALU

▪ Contadores de programas

▪ Registros

▪ Otros circuitos (tiempo de reloj, interrupción)

Un microcontrolador es un IC que contiene un microprocesador y algunos periféricos para ser una computadora funcional completa, periféricos, por ejemplo, ADC, RAM, ROM, DAC.

Historia del Microcontrolador

Originalmente, Intel Corporation fue la primera fabricación de microcontroladores. El primer microcontrolador se produjo en 1971 en los Estados Unidos. Era un microcontrolador de 4 bits con el nombre i4004. Más tarde, Intel produjo modelos más sofisticados en ese tiempo con un microcontrolador de 8 bits y después de eso un microcontrolador de 12 bits fue desarrollado por Toshiba.

Aplicaciones de microcontroladores

Los microcontroladores tienen muchas aplicaciones en muchas industrias, por ejemplo, automotriz, médica, automatización industrial, aeroespacial, robótica.

En la industria automotriz, por ejemplo, los automóviles modernos hoy en día tienen más de 100 microprocesadores para sistemas como aire acondicionado, ABS, EBD y también ADAS o sistemas avanzados de asistencia a la conducción como el controlador curies adaptativo y el asistente de carril, la siguiente es una imagen de una ECU o unidad de control electrónico.

En el ámbito médico, hay dispositivos médicos que incluyen microcontroladores, como una resonancia magnética, un equipo de prueba de glucosa, un electrocardiograma portátil. La siguiente imagen es un dispositivo de prueba de glucosa.

En el sector aeroespacial, la mayoría de los aviones han sido diseñados con nuevos sistemas de aviónica que utilizan microcontroladores. Además, hay un sistema de control de vuelo, un sistema de control de tráfico aéreo, sistemas de navegación y meteorología que se basan en microcontroladores.

Microcontroladores populares

Hay muchos tipos y plataformas de microcontroladores, pero la selección de un microcontrolador depende de muchos factores:

▪ Aplicación

▪ Presupuesto

▪ Rendimiento

▪ Número de pines GPIO

▪ Tamaño de memoria

▪ Temperatura del entorno operativo

▪ Consumo de energía

Microcontrolador AVR

La siguiente imagen contiene un diagrama de bloques de AVE12DA, una de las familias de microcontroladores más populares: el microcontrolador AVR:

Los microcontroladores AVR son producidos por Atmel corporation (hoy: Microchip), Atmel tiene 6 familias de microcontroladores AVR, 4 familias como microcontroladores de propósito general y 2 como microcontroladores de propósito específico. Propósito General microcontroladores son:

▪ 8 bits mega AVR

▪ 8 bits EN la Pequeña

▪ 8 & 16 bit – AVR Xmega

▪ 32 bits – AVR

propósito Específico microcontroladores son:

▪ Automotriz AVR

▪ Gestión de la Batería

Automoción AVR, a partir de su nombre, ha sido desarrollado para aplicaciones de automoción. Puede funcionar a temperaturas muy altas de hasta 150 grados centígrados e incluye sistemas de protección para problemas de cortocircuito.

El microcontrolador de gestión de baterías está desarrollado para que los sistemas de gestión de baterías aseguren las operaciones de carga y descarga.

Ejemplos de plataformas AVR

▪ Arduino UNO

▪ Adafruit Blue fruit Micro

▪ Raspduino

▪ Digispark Pro

Microprocesador/microcontrolador ARM

El microprocesador ARM es el procesador más popular en el mundo, especialmente, en las aplicaciones de consumo. Es posible que tenga un dispositivo basado en un procesador ARM, ¡pero no lo sabe! ARM es principalmente un componente clave de cualquier sistema embebido de 32 bits exitoso. El primer BRAZO se desarrolló en 1985.

Tecnología RISC

ARM se utiliza la tecnología RISC, RISC significa computadora con conjunto de instrucciones reducido, es una filosofía de diseño para entregar instrucciones simples en un solo ciclo. Se basa más en el software. Por otro lado, la tecnología CISC se basa más en el hardware.

La tecnología RISC se centra en reducir el conjunto de instrucciones del procesador. Por otro lado, el procesador CISC tiene un número no fijo del conjunto de instrucciones.Características de

ARM

Arm tiene muchas características para cada diseñador de sistemas integrados que esté buscando, por ejemplo, bajo consumo de energía debido a su tamaño compacto, también la alta densidad de código es otra característica ya que estamos desarrollando sistemas integrados, tendremos recursos limitados en la mayoría de los casos.

Estructura interna del microcontrolador basado en ARM

Esta figura muestra la estructura interna de la mayoría de los dispositivos basados en ARM:

Las cajas representan funciones, las líneas representan buses. Hablemos más sobre cada componente en detalles:

▪ El procesador ARM es el componente principal que es responsable de las operaciones de procesamiento

▪ Los controladores se utilizan para coordinar las funciones del sistema como controladores de memoria e interrupción

▪ Los periféricos se utilizan para proporcionar las entradas y salidas del sistema

▪ Se utiliza un bus para intercambiar datos entre los diferentes componentes del sistema

Ejemplos de plataformas ARM

Hay muchos dispositivos y plataformas integradas que tienen microprocesador arm, p. ej.

▪ Arduino Due

▪ Raspberry Pi

▪ STM32F103C8T6

▪ NXP LPC1768

Otros microcontroladores y plataformas

Como dijimos antes de seleccionar un microcontrolador o una plataforma depende de muchos factores (presupuesto, número de pines, etc.…). Hay también otro de los microcontroladores y plataformas, por ejemplo,

▪ Microcontroladores PIC

▪ 8051

▪ ESP32

▪ Microcontroladores Motorola

Herramientas de software y hardware para microcontroladores

Desde la creación del microcontrolador, ha habido muchos tipos de herramientas de desarrollo de software y hardware. Por supuesto, algunas de las herramientas se pueden usar en varios tipos de microcontroladores, pero algunas son muy específicas por microcontrolador. Antes de comenzar con la programación de microcontroladores, es posible que desee familiarizarse con las herramientas de programación de microcontroladores y, por último, pero no menos importante, el proceso de desarrollo.

Usando herramientas de desarrollo integradas, es posible que necesitemos las siguientes herramientas:

Ensamblador

Es una herramienta de software que convierte su código fuente en ensamblador en código máquina, por ejemplo (ensamblador GNU).

Compilador

Es un programa de software que cubre su código fuente en un lenguaje de programación de alto nivel en lenguaje ensamblador o código máquina. La compilación puede ser:

▪ Nativo: esto significa que ejecuta el compilador y el código generado en la misma máquina

▪ Cruz: Esto significa que ejecuta el compilador en una máquina y el código generado se ejecuta en una máquina diferente (arquitectura de procesador).

Enlazador y Localizador

Un enlazador es un programa que recopila y vincula las compilaciones y ensambla las operaciones y produce un solo exe.

Un localizador es una herramienta de programa que se puede utilizar para cambiar el mapa de memoria de la salida del enlazador.

Simulador

Es un programa que imita el escenario real, produce una aproximación de los sistemas en tiempo real. Se utiliza un simulador:

▪ si el hardware real no está disponible

▪ en entornos y escenarios de prueba peligrosos

Depurador

Es un programa de software y un dispositivo de hardware que se puede interconectar con mi PC a mi destino incrustado. Se utiliza un depurador:

▪ para establecer puntos de interrupción

▪ para rastrear la ejecución

▪ para volcar la memoria

El depurador de hardware puede ser

▪ depurador en circuito

▪ software de agente de depuración a bordo

Cargador de flash

Es un programa y dispositivo de hardware que se puede utilizar para:

▪ ROM/Flash de programa

▪ Ver variables

▪ Borrar ROM/Flash

Profiler

Profiler es una herramienta para monitorear el rendimiento del código de software

Entorno de desarrollo integrado

Es un programa de software que tiene la mayoría de las herramientas uno. Se pueden incluir

▪ editores de Texto

▪ Compiladores

▪ Depuradores

▪ Perfiladores

▪ Simuladores

▪ Enlazadores

Microcontrolador Idiomas del Software

podemos clasificarlos en dos tipos:

De alto nivel

▪ C/C++

▪ Java

▪ Ada

El uso de este tipo proporcionará una abstracción del nivel de hardware

De bajo nivel

Código de máquina

0’s y 1s y difícil de escribir por humanos, pero fácil de entender para las computadoras

Ensamblado

Es un código mnemotécnico y seudo instrucciones para mejorar la legibilidad

Ejemplos:

Una instrucción consiste en mnemotécnico ( opcode) + operandos

El Opcode es una operación tomada por un procesador de máquina

Los operandos son el objetivo final; el opcode tiene que tomar una operación para.

El lenguaje ensamblador es más legible y comprensible que el código máquina, pero necesita usarlo en un procesador específico y tener conocimiento de su arquitectura.

Lenguajes de programación C/C++

Los lenguajes de alto nivel tienen las siguientes características

▪ Fácil de escribir

▪ Flexible

▪ Independiente del procesador

▪ De alta productividad

Ejemplo de programación de microcontroladores Utilizando AVR ATMEGA16

ATmega 16 tiene las siguientes características:

▪ 16 Kb de memoria flash auto programable en el sistema

▪ 512 Bytes EEPROM

▪ 1 Kbyte de Memoria interna SRAM

▪ Bloqueo de programación para seguridad

Características Periféricas

▪ Contador en tiempo Real con Oscilador Separado

▪ USART en serie programable

▪ Cuatro canales PWM

▪ ADC de 8 canales y 10 bits

▪ Oscilador en chip

▪ Reposo de encendido y Detección de apagón

▪ Oscilador RC Interno y Fuentes de interrupción

▪ Voltajes (de 2,7 v a 5.5v)

Ejemplo de programa de parpadeo LED usando ATmeg16 y Proteus

Programa de parpadeo LED en sistemas embebidos como el programa «hola mundo» en desarrollo de aplicaciones. En el siguiente ejemplo, aprenderá y utilizará el simulador Proteus para ejecutar su primer programa. Para descargar los archivos de origen, vaya a esta carpeta.

Escriba su programa usando Atmel studio

Después de descargar su IDE,

programación de microcontroladores AVR

ábralo y elija un nuevo proyecto y elija la ubicación del archivo hexadecimal como en la siguiente imagen

programación de microcontroladores AVR

El siguiente paso es elegir la familia de microcontroladores

programación de microcontroladores AVR

Después de eso, obtendrá la siguiente ventana con código de inicio

programación de microcontroladores AVR

Y ahora escriba siguiente código

programación de microcontroladores AVR

El siguiente paso es crear su programa presionando F7

programación de microcontroladores AVR

Después de eso encontrará el archivo hexadecimal en la ubicación elegida

programación de microcontroladores AVR

El siguiente paso es usar el simulador Proteus

Y ahora cree un esquema a partir de la plantilla a seleccionada

 programación de microcontroladores AVR

Y elija No crear un diseño de PCB

programación de microcontroladores AVR

Finalmente, hemos terminado, pero necesitamos agregar el archivo hexadecimal como en la siguiente imagen

programación de microcontroladores AVR

Ahora edite fusibles CKSEL

programación de microcontroladores AVR

Guardar y hacer clic en reproducir

Y puede ver que el LED está apagado para 500 ms (lado izquierdo) y encendido para 500 ms (lado derecho)

Explicación del programa línea por línea

Para descargar los archivos fuente, vaya a esta carpeta.

#define f_CPU 100000UL // para crear una constante y elegir la velocidad del procesador

#include <avr/io.h> / / para recuperar algunos archivos de entradas y salidas

# incluye < avr / delay.h> // recuperar este archivo para usar las funciones de retardo

int main(void){ // la función de inicio y el programa principal

DDRA = 0b0000001; // para configurar el pin a como salida / dirección

Mientras(1){ // para bucle para siempre

PORTA = 0b00000001; // para hacer el PA0 = 1 y la salida 5v (el LED está encendido)

_delay_ms(500); // retardo de medio segundo

PORTA = 0b0000000; / / para hacer el PA0 = 0 y la salida 0v (el LED está apagado)

_delay_ms (500); / / retardo de medio segundo

}

retorno 0;

} //fin del programa

Conclusión

Hoy en día, los sistemas integrados se utilizan en productos vitales y se pueden usar para proteger y salvar a muchas personas, como en el dominio médico y otras aplicaciones. Debe seguir aprendiendo después de obtener una descripción general e introducción sobre la programación de microcontroladores. El siguiente paso debe ser aprender diseño de software integrado y sistemas activados en tiempo real.

https://www.faa.gov/regulations_policies/handbooks_manuals/aviation/phak/

Microcontrolador AVR y Sistemas Embebidos: Nueva Edición Internacional de Pearson: Uso de Ensamblado y C, Muhammad Ali Mazidi, Universidad de DeVry

Guía para Desarrolladores de Sistemas ARM Diseño y Optimización de Software de Sistema Un volumen de la Serie Morgan Kaufmann en Arquitectura y Diseño de Computadoras * 2004

Leave a Reply

Tu dirección de correo electrónico no será publicada.