👥 Autores

Jesús D. Garza Camarena

Tabla de contenido

🔶 Introducción


Los lenguajes de programación para microcontroladores son un conjunto de herramientas de programación diseñadas específicamente para programar microcontroladores, que son pequeños microprocesadores utilizados en sistemas embebidos y dispositivos electrónicos.

Estos lenguajes son similares a otros lenguajes de programación, pero tienen características especializadas que los hacen adecuados para programar microcontroladores con limitaciones en términos de memoria y recursos de hardware.

📘 Fundamento Teórico


Los microcontroladores pueden ser programados con una amplia gama de lenguajes de programación, incluyendo tanto lenguajes de bajo nivel como lenguajes de alto nivel. Los lenguajes de bajo nivel están más cerca del lenguaje de máquina y se escriben en código binario (0 y 1), mientras que los lenguajes de alto nivel permiten una representación gráfica del programa, como un diagrama de flujo, sin la necesidad de escribir líneas de código.

  1. C
  2. Assembly
  3. MicroPython
  4. BASIC
  5. C++
  6. Arduino

🎚️Nivel de los lenguajes de programación

Untitled

📖 Características de Lenguaje C vs ASM vs Arduino


El lenguaje C, C++y el ensamblador (ASM) son dos lenguajes diferentes utilizados para programar microcontroladores. Algunas de las características que los diferencian son las siguientes:

📄 Lenguaje Arduino (basado en C/C++):

Untitled

📄 Lenguaje C:

📄 Lenguaje ensamblador (ASM):

Untitled

Untitled

<aside> 💡 La más gran diferencia es que en ensamblador cuenta con un diferente set de instrucciones para cada microcontrolador mientras que el C se puede utilizar el mismo código para diferentes microcontroladores solo cambiando algunos parámetros (portabilidad).

</aside>

<aside> 💡 El lenguaje C acepta instrucciones de ensamblador para hacer tareas que son difíciles de realizar o acceder donde los tiempos de ejecución son críticos.

</aside>

📖 Lenguajes de descripción de hardware (HDL)


Los lenguajes de descripción de hardware (HDL, por sus siglas en inglés) son lenguajes de programación especializados utilizados para describir y modelar circuitos digitales y sistemas electrónicos a nivel de hardware. A diferencia de los lenguajes de programación convencionales, que se centran en la programación de software, los HDL permiten a los ingenieros describir el comportamiento y la estructura de circuitos electrónicos de una manera que se asemeja más a cómo operan en el mundo físico.

📄 Aplicaciones


  1. Diseño de Circuitos Personalizados
  2. Modelado del Comportamiento
  3. Verificación y Simulación
  4. Síntesis Lógica
  5. Descripción de PLD, FPGA y ASIC
  6. Diseño en Paralelo

📄 Ejemplos de lenguajes HDL


  1. VHDL (VHSIC Hardware Description Language) (1983)
  2. ABEL - HDL (Advanced Boolean Expression Language) (1983)
  3. Verilog (1984)
  4. CHDL (C Hardware Description Language) (1992)
  5. JHDL (Java Hardware Description Language) (1996)
  6. AHDL (Altera Hardware Description Language) (1997)
  7. SpecC (1999)
  8. Handel-C (2001)
  9. SystemVerilog (2002)
  10. Bluespec SystemVerilog (2003)
  11. MyHDL (2004)

📖 Lenguajes de programación vs HDL

Aspecto Lenguajes de Programación Lenguajes de Descripción de Hardware (HDL)
Propósito Utilizados para crear aplicaciones y algoritmos que se ejecutan en los microcontroladores o procesadores. Utilizados para describir la estructura y comportamiento del hardware digital.
Nivel de Abstracción Alto nivel, enfocado en instrucciones, funciones y algoritmos que implementan lógica o tareas específicas. Bajo nivel, describiendo componentes electrónicos a nivel de puertas lógicas y conexiones.
Utilización Control de sistemas, procesamiento de señales, interacción con periféricos, cálculos matemáticos, etc. Diseño de circuitos digitales, lógica combinacional, circuitos secuenciales, componentes personalizados, etc.
Ejemplos de Lenguajes C, C++, Python, Rust, Ada, entre otros. VHDL, Verilog, ABEL, AHDL, XHDL
Sintaxis Se enfoca en la secuencia de instrucciones y operaciones. Se enfoca en la conexión de componentes y la lógica del circuito.
Diseño de Hardware No está destinado al diseño de circuitos, sino a la programación de comportamientos y algoritmos. Permite diseñar y simular circuitos digitales antes de su implementación física.
Compilación/Síntesis Se compilan en instrucciones de máquina o bytecode ejecutable. Se compilan/sintetizan en circuitos electrónicos reales.
Paralelismo Puede aprovechar paralelismo mediante hilos o procesos concurrentes, pero es más limitado que el hardware. Puede describir componentes y operaciones en paralelo, reflejando la arquitectura del hardware.

❗Véase también


C In an Embedded Environment - Developer Help

✔️ Referencias


👁️‍🗨️ Otros temas


📚 Tabla de contenido

🗓️ Semana 1 - 📕 Conceptos Básicos de Electrónica y Electrónica Digital

Introducción a la clase de Microcontroladores

Sistemas Numéricos

Circuitos integrados Digitales

Protección contra ESD y EMI para circuitos integrados

Diagramas de bloques para expresar sistemas

🗓️ Semana 2 - 📕 Introducción a los Microprocesadores y Microcontroladores

Arquitectura de Microprocesadores

Diferencias entre microcontroladores y microprocesadores

Aplicaciones en sistemas embebidos

Introducción a los Microcontroladores

Práctica N.º00 - Introducción al laboratorio..

Software Electronic Design Automation (EDA)

Entorno de desarrollo (IDE) para microcontroladores AVR

Actividad Fundamental N.º01 - Conceptos de la clase

🗓️ Semana 3 - 📕 Herramientas de desarrollo y diseño

Lectura de una hoja de datos

Microcontrolador AVR ATmega328p

Placas de desarrollo para microcontroladores

¿Qué es Arduino?

Lenguajes de programación para microcontroladores

Diferencias entre la Tarjeta de desarrollo Arduino y la familia AVR de microchip

Definición y configuración de Puertos y registros de entrada/salida

Práctica N.º01 - Configuración de puertos de salida