Documentos de Académico
Documentos de Profesional
Documentos de Cultura
MICROCONTROLADORES
ACTIVIDAD N° 3
Investigación
FECHA: 14/02/2024
Al hablar de microcontroladores, no solo hablamos de lo que los componen y como se pueden
realizar sus conexiones, también es muy importante el poder programarlos y para ello existen
varios programas de los cuales hablaré un poco; hablando de lo que se realiza antes de utilizar
un microcontrolador, el realizar los esquemáticos es demasiado importante para reducir errores
como también nos funciona para plasmar lo que tenemos en mente y de ahí partir al circuito en
físico. Así que es muy importante la información de esta actividad.
1. C C
2. C++
3. Python Python
4. ARM Assembly
1. C
C es uno de los lenguajes de programación más
populares en el mundo de los microcontroladores. Es
un lenguaje de bajo nivel que permite un control
preciso sobre los recursos del microcontrolador, lo que
lo hace ideal para aplicaciones en tiempo real y de
baja potencia.
La sintaxis
La unidad más pequeña de programación en C se conoce como token C. Los tokens son palabras
clave, identificadores, constantes, variables o cualquier otro símbolo que tenga algún significado en el
lenguaje C.
Cada bloque de código se encierra en corchetes. La base de cada bloque es la función principal main().
Un programa puede contener varias funciones, cada una con su juego de parámetros. Recuerda que
para C, main y MAIN son dos cosas diferentes.
Al final de cada operador se pone un punto y coma. Si se te olvidó ponerlo, el compilador te mostrará el
mensaje de error “Semicolon is expected”.
Los espacios se usan para separar partes de operador.
Usa comentarios para hacer tu código más legible. Los comentarios consisten en texto sin formato que
no se compila. Puedes aprovechar los comentarios para explicar algunas partes del programa y hacerlo
más fácil de entender para los demás.
2. C++
C++ es una extensión del lenguaje C que permite una programación
orientada a objetos. Es un lenguaje muy utilizado en la
programación de microcontroladores debido a su eficiencia y
flexibilidad.
✓ C++ es un lenguaje compilado, lo que significa que el código es traducido a código máquina por
un compilador antes de poder ser ejecutado. También es un lenguaje estáticamente tipado, lo
que significa que las variables deben ser declaradas con un tipo de datos específico antes de
que puedan ser utilizadas.
✓ Otra característica clave de C++ es su compatibilidad con el acceso a memoria de bajo nivel.
C++ permite a los programadores trabajar directamente con direcciones de memoria y gestionar
la asignación y desasignación de memoria. Esto lo convierte en una opción popular para la
programación de sistemas y otras aplicaciones de rendimiento crítico.
✓ C++ también incluye una amplia gama de funciones de biblioteca y tipos de datos, incluido el
soporte para contenedores estándar (como vectores y matrices), cadenas y operaciones de
entrada/salida. La biblioteca estándar también incluye soporte para multihilos, redes y otras
funciones avanzadas.
Aplicaciones de C++ en diversos campos
C++ se utiliza en una amplia gama de aplicaciones, desde la informática de alto rendimiento hasta el
desarrollo de juegos o sistemas operativos. Algunas de las aplicaciones más comunes de C++ incluyen:
include iostream>
Este programa utiliza la librería iostream para mostrar el texto «¡Hola, mundo!» en la consola. La
función main() es el punto de entrada del programa y se ejecuta cuando el programa se ejecuta.
C++ incluye una amplia gama de tipos de datos, incluyendo enteros, números en coma flotante,
caracteres y valores booleanos. Las variables deben ser declaradas con un tipo de datos específico
antes de que puedan ser utilizadas.
C++ también incluye una amplia gama de operadores, como operadores aritméticos (+, -, *, /),
operadores de comparación (==, !=, , >) y operadores lógicos (&&, ||, !). Los operadores pueden
utilizarse para realizar operaciones con variables y valores.
Bibliotecas y frameworks en C++
Hay muchas librerías y frameworks disponibles para C++ que pueden simplificar y acelerar el
desarrollo. Algunas librerías y frameworks populares incluyen:
➢ Boost: Una colección de bibliotecas que proporcionan soporte para multihilo, redes, estructuras
de datos y otras características avanzadas.
➢ Qt: Un marco de aplicaciones multiplataforma que ofrece soporte para el desarrollo de interfaces
gráficas de usuario, redes y otras funciones.
➢ OpenCV: biblioteca de algoritmos y herramientas de visión por ordenador para el procesamiento
de imágenes y vídeo.
➢ TensorFlow: biblioteca para aplicaciones de aprendizaje automático y aprendizaje profundo.
3. Python
Python es un lenguaje de programación de alto nivel que ha
ganado mucha popularidad en la programación de
microcontroladores en los últimos años. Es un lenguaje fácil
de aprender y de utilizar, lo que lo hace ideal para
principiantes en la programación de microcontroladores.
➢ Creando variables
Anteriormente ya hemos visto como crear una variable y asignarle un valor con el uso de =. Existen
también otras formas de hacerlo de una manera un poco más sofisticada.
Podemos por ejemplo asignar el mismo valor a diferentes variables con el siguiente código.
x = y = z = 10
➢ Nombrando variables
Puedes nombrar a tus variables como quieras, pero es importante saber que las mayúsculas y
minúsculas son importantes. Las variables x y X son distintas.
# No válido
2variable = 10
var-iable = 10
var iable = 10
➢ Uso de paréntesis
Python soporta todos los operadores matemáticos más comunes, conocidos como operadores
aritméticos. Por lo tanto podemos realizar sumas, restas, multiplicaciones, exponentes (usando **) y
otros que no vamos a explicar por ahora. En el siguiente ejemplo realizamos varias operaciones en la
misma línea, y almacenamos su resultado en y.
x = 10
y = x*3-3**10-2+3
Pero el comportamiento del código anterior y el siguiente es distinto, ya que el uso de paréntesis () da
prioridad a unas operaciones sobre otras.
x = 10
y = (x*3-3)**(10-2)+3
Variables y alcance
Un concepto muy importante cuando definimos una variable, es saber el alcance o scope que tiene. En
el siguiente ejemplo la variable con valor 10 tiene un alcance global y la que tiene el valor 5 dentro de la
función, tiene un alcance local. Esto significa que cuando hacemos print(x), estamos accediendo a la
variable global x y no a la x definida dentro de la función.
x = 10
def funcion():
x = 5
funcion()
print(x)
Para comprender cómo programar en ARM, es importante familiarizarse con sus registros. Los registros
son ubicaciones de almacenamiento especiales dentro del procesador que pueden contener valores
temporales y direcciones de memoria. Los registros son de tamaño fijo y están numerados del 0 al 15
en la arquitectura ARM de 32 bits.
➢ Registros
• Los registros son ubicaciones de almacenamiento dentro del procesador que se utilizan para
realizar operaciones.
• En ARM, los registros se denominan x0, x1, x2, etc.
En ARM, existen varios tipos de registros. Los registros generales son los más comunes y se utilizan
para almacenar datos y direcciones en el programa. Hay un total de 16 registros generales, cada uno
con una capacidad de 32 bits. Estos registros se denominan R0, R1, R2, … R15.
Además de los registros generales, también hay otros registros especializados que se utilizan para
propósitos específicos. Por ejemplo, el registro del contador de programa (PC) se utiliza para almacenar
la dirección de la siguiente instrucción que se ejecutará. El registro de enlace (LR) se utiliza para
almacenar la dirección de retorno de una llamada a una función.
Los registros también se pueden utilizar para el paso de argumentos entre funciones y para almacenar
valores temporales durante el proceso de ejecución. Al usar los registros de manera eficiente, se puede
minimizar la necesidad de acceder a la memoria principal, lo que a su vez mejora considerablemente la
velocidad y eficiencia del programa.
A continuación se muestra un ejemplo de cómo se puede utilizar un registro en un programa en
assembly ARM:
MOV R0, #10 ; Mueve el valor 10 al registro R0
En este caso, se utiliza la instrucción MOV para mover el valor 10 al registro R0. Esto significa que
ahora el registro R0 contiene el valor 10 y se puede acceder a él en cualquier lugar del programa.
➢ Aplicaciones prácticas
✓ Una de las principales aplicaciones prácticas de la programación en lenguaje Assembly con ARM
es el desarrollo de firmware para dispositivos embebidos. Los dispositivos embebidos son
aquellos que tienen un propósito específico y suelen tener recursos limitados como memoria y
procesamiento. Al programar en lenguaje Assembly, podemos maximizar el rendimiento de estos
dispositivos y aprovechar al máximo sus capacidades.
✓ Por último, otra aplicación práctica de la programación en lenguaje Assembly con ARM es la
investigación y desarrollo en el campo de la seguridad informática. Muchas vulnerabilidades y
exploits se aprovechan de debilidades en el código de los programas. Al analizar y comprender
mejor el funcionamiento interno de los programas a nivel de Assembly, podemos identificar y
corregir estas vulnerabilidades, fortaleciendo así la seguridad de nuestros sistemas.
Se sabe que hay demasiados software para plasmar nuestros diseños de algún circuito, pero no todos
nos ofrecen lo mismo en cuestión de lo práctico, por lo que aquí mencionaré los mejores:
EveryCircuit
Características:
❖ Disponible para Android, iOS y Google Chrome.
❖ Sincronización con la nube.
❖ Visualización de animaciones dinámicas de voltajes, corriente y cargas.
❖ Respuesta en tiempo real al ajustar parámetros en las simulaciones de tus diseños de circuitos
electrónicos.
❖ Creación de prototipos y depuración increíblemente rápidas.
❖ Simulación interactiva en tiempo real.
❖ Cuenta con una de las mayores bibliotecas comunitarias de circuitos electrónicos diseñados.
Altium
Continuamos con Altium, uno de los
programas más relevantes para diseñar
circuitos electrónicos. Destaca por el enfoque
colaborativo de sus funcionalidades.
Mirando hacia las herramientas para diseñar circuitos electrónicos desde un navegador web tenemos a
EasyEDA.
SI te decides por este software tendrás en tus manos un conjunto de herramientas que integran un
diseñador de esquemas, un simulador de circuitos de señal mixtas y un diseño de circuito impreso.
Ideal para ingenieros electrónicos, educadores, estudiantes y aficionados.
Características:
Características:
❖ Código abierto.
❖ Compatible con Windows, Linux y macOS.
❖ Editor de esquemas compatible que permite adaptarse a la complejidad del diseño.
❖ Cuenta con un potente enrutador interactivo y herramientas mejoradas de visualización.
❖ Diseño de PCB.
❖ Visor 3D.
❖ Comprobación de reglas eléctricas para detectar si hay conflictos de pines de salida,
controladores faltantes y pines desconectados.
❖ Funcionalidades escalables mediante repositorio de librerías mantenidas por la comunidad.
❖ Permite la importación o migración de datos de otras herramientas como Eagle, Altium y
CadStar.
OrCAD
Características:
❖ Bloques de diseño modular listos para arrastrar y soltar que fomentan la reutilización de
componentes.
❖ Modelado 3D.
❖ Validación de esquemas con reglas electrónicas.
❖ Sincronización en tiempo real entre el esquema y el diseño.
❖ Herramientas de alineación precisas e intuitivas.
❖ Cuenta con herramientas para para la eliminación de bucles, las esquinas y la colocación de
vías durante el enrutamiento.
❖ Comprobación de reglas de diseño.
❖ Permite encontrar piezas vinculadas dinámicamente desde un extenso catálogo.
❖ Permite a la comunidad extender funcionalidades mediante scripts.
DesignSpark PCB
Proteus
Proteus también tiene una interfaz muy bien organizada que tiene todas las herramientas y
comandos necesarios para crear placas de circuito.
Tabla de comparaciones de los softwares mencionados anteriormente.
CONCLUSIÓN
En conclusión, el conocer sobre los distintos software siempre es de mucha utilidad, ya que nos
pueden salvar en dependiendo de lo que queramos hacer o diseñar; con esto podemos tener un poco
más de conocimiento sobre lo que cada software y lenguaje de programación nos pueden aportar y si
están a nuestro alcance, ya que la mayoría cobran por su uso.
En sí podemos ver que no solo está el conocer acerca del microcontrolador o el saber realizar las
conexiones, ya que antes debemos saber programar mediante los lenguajes como también, siempre
realizar nuestros diseños esquemáticos para poder realizar simulaciones y reducir errores antes de
hacerlo en físico.
BIBLIOGRAFÍA
❖ Elbloddeldev. (2024, 14 febrero). Aprende Programación en Lenguaje Assembly con ARM: Práctica y
lenguaje-assembly-con-arm-practica-y-ejemplos/#gsc.tab=0
❖ Moraguez, E. R. (2023, 27 marzo). ¿Qué es C++: Cómo funciona y para qué sirve? LovTechnology.
https://lovtechnology.com/que-es-c-como-funciona-y-para-que-sirve/
❖ Saavedra, J. A. (2023, 1 junio). Qué es lenguaje C: las ventajas, las características y la sintaxis. Ebac.
https://ebac.mx/blog/que-es-lenguaje-c
utilizar/#:~:text=A%20continuaci%C3%B3n%2C%20te%20presentamos%20algunos%20de%20los%20me
jores,los%20%C3%BAltimos%20a%C3%B1os.%20. . .%204%204.%20ARM%20Assembly
❖ Staff, C. (2023, 29 noviembre). ¿Qué es Python y para qué se usa? Guía para principiantes. Coursera.
https://www.coursera.org/mx/articles/what-is-python-used-for-a-beginners-guide-to-using-python
❖ Tápanes, Y., & Tápanes, Y. (2022, 23 octubre). Los mejores 7 software para diseñar circuitos electrónicos.
Saasradar. https://saasradar.net/disenar-circuitos-electronicos/