Microcontroladores: Lenguajes de Programación (Lenguaje C)

in StemSocial2 months ago

Podríamos decir que ahora estamos más en un campo informático que electrónico pero si lo miramos con lupa notaremos que esto no es del todo cierto ya que como veremos a continuación solo se toma un fragmento necesario y suficiente para programar nuestros microcontroladores y se pueden descartar muchas librerias e instrucciones del lenguaje que son innecesarias para nuestro propósito, de esta forma la programación se vuelve más simple.


Parte de un código de programa escrito en lenguaje C para un microcontrolador, fuente: Quien escribe

Cuando realizamos la programación con un lenguaje de alto nivel como C se exige un mayor consumo de recursos, esto es así porque el programa en C debe ser compilado y luego existe un proceso de transformación en el que una sola instrucción escrita en C puede llegar a traducirse en un programa completo en un lenguaje de bajo nivel para que pueda ser interpretado por el chip.

Visto a nivel de recursos puedo crear una aplicación en un lenguaje de bajo nivel usando un programa lo cual da velocidad al proceso y usa menos memoria lo que me permite añadir mas códigos y prestaciones a la aplicación, el precio a pagar es que se necesita un conocimiento profundo sobre la estructura interna del microcontrolador, registros, bits de registros y el código mismo del programa.

Cuando creamos una aplicación en un lenguaje de alto nivel no se necesitan muchos conocimientos sobre estructura interna y registros del microcontrolador, el código escrito puede ser más corto y fácil, se pueden escribir operaciones más potentes y por lo tanto aplicaciones más potentes, el precio a pagar es un alto consumo de recursos siendo la memoria uno de los más afectados, así, es posible que la misma aplicación creada en lenguaje de bajo nivel para un chip no podría grabarse en este si la escribimos en un lenguaje de alto nivel ya que puede ocupar hasta el doble o más espacio en la memoria.

Pero programar en un lenguaje de alto nivel además de ser más fácil y potente nos permite ahorrar tiempo porque debemos escribir menos códigos para una operación de los que tendríamos que escribir en lenguaje ensamblador para la misma operación.

A continuación mustro un contraste presentando un programa escrito en ambos lenguajes para que podamos notar la diferencia de líneas usadas entre cada lenguaje.


Contraste entre lenguaje ensamblador y lenguaje C para microcontroladores, fuente: quien escribe

En este punto y a manera de ilustración se nos hace necesario mencionar a Parallax que es una empresa dedicada al desarrollo y programación de microcontroladores.

La necesidad surge porque ellos crearon un microcontrolador llamado BASIC Stamp que es capaz de leer, interpretar programas creados en PBASIC (Una versión de C dedicada para microcontroladores creada por la misma empresa).

Esto no quiere decir que para programar microcontroladores en C debemos estar atados a Parallax, el microcontrolador BASIC Stamp sirve para convertir los programas en C en programas de bajo nivel y grabarlos en otros microcontrolador, así que no es un consumible sino una herramienta y se menciona en este artículo con fines ilustrativos como una forma de programar microcontroladores en C.

Pero ¿Qué hago si quiero escribir un programa en C para un microcontrolador PIC?

Necesitamos un compilador que nos lo permita, para ello recomiendo el software PIC C compiler. La diferencia entre un compilador informático y un compilador para microcontroladores radica en que el segundo posee "librerías" dedicadas exclusivamente para trabajar con microcontroladores.

Cada integrado soportado presentará su propia librería la cual tiene su nombre asociado y debe ser incluída al inicio del programa. Por ejemplo si vamos a trabajar con el PIC16F877A debemos escribir:

#include PIC16F877A.h

Con lo cual estamos llamando al archivo que contiene los datos detallados de este microcontrolador en particular (incluyendo las instrucciones que éste dispositivo puede manejar).

El software presenta además una serie de herramientas muy útiles para los programadores de microcontroladores aportando datos importantes de cada dispositivo soportado.

Nos permite ver los fusibles o "protecciones" internas que dispone cada dispositivo y a la vez activar o no estas protecciones. Pero expliquemos esto usando algunas ilustraciones.

Vamos a ver las "pestañas" más importantes y más usadas que nos ofrece el software CCS PIC C Compiler para programar microcontroladores en lenguaje C


Pestaña de proyecto, fuente: el autor de este artículo

La pestaña projec es la que utilizamos para desarrollar nuestro proyecto, es decir, nos presenta todas las opciones para el manejo de archivos (crear, importar, exportar, entre otras).


Pestaña de Busqueda, fuente: el autor de este artículo

La pestaña de busqueda nos da herramientas para buscar contenido en nuestro código, existen programas que se convierten en un enorme mar de isntrucciones, es ahí cuando esta pestaña es útil permitiendonos buscar palabras específicas o ir a una línea de código determinada.


Pestaña de Compilar, fuente: el autor de este artículo

Es donde podemos probar, depurar y compilar nuestro programa.


Pestaña de Ver, fuente: el autor de este artículo

La pestaña ver nos ofrecera una serie de opciones con información muy importante, al precionar los botones se abrirá una ventana con la información correspondiente:


Ventana Selection tool, fuente: el autor

  • Selection Tool o Herramienta de selección: Contiene una lista de microcontroladores con datos sobre estos que incluyen capacidad de Memoria Rom, capacidad de memoria ram, tipo de datos que maneja, cantidad de pines entrada/salida, cantidad de temporizadores y otras características que nos ayudan a determinar cual es el chip que más se adapte a nuestro proyecto.

Ventana Interrupciones validas, fuente: el autor

  • Valid Interrupts: Nos presenta las interrupciones disponibles para un chip seleccionado.

Las interrupciones son eventos que una vez ocurren desvian el programa a una sub rutina para ejecutar una tarea específica y son muy utiles a la hora de crear un programa, por lo cual es de suma utilidad que esté disponible esta consulta en el software de programación.


Ventana Fuse Review, fuente: el autor

  • Fuse review: Nos da acceso a ver los "fusibles" disponibles para un microcontrolador seleccionado.

Estos "fusibles" no son físicos sino que forman parate del programa y permiten activarlos o desactivarlos para moldear las carácteristicas de operación que tendrá el microcontrolador durante el programa, esta son; tipo de "reloj" a utilizar, activar modo reposo, protección contra bajo voltaje, protección del programa para que no pueda ser extraído y copiado por alguien sin autorización entre otros.



Ventana Registros, fuente: el autor.

  • Registros Especiales: Los vimos en un artículo anterior y desde entonces hemos mencionado en muchas ocasiones la importancia de estos, tenerlos a la mano es de mucha utilidad y esta ventana nos permite seleccionar un chip y ver el banco de registros, la dirección correspondiente a cada registro especial y el contenido de sus bits.


Pestaña herramientas, fuente: el autor

Y por último pero no menos importante encontramos una pestaña llamada Tools, o herramientas en la cual tenemos un conversor de datos numericos, herramientas de monitoreo en el puerto serial y otras muy útiles.

Como podemos notar los compiladores para microcontroladores son un poco diferente a los usados en informática pues estos tienen funciones e instrucciones especiales dedicadas a los microcontroladores.

Hasta ahora solo estamos mirando los lenguajes de programación de forma superficial, solo con la intención de conocerlos ya que para crear programas aún nos falta mucha información, los siguientes lenguajes que veremos serán más fáciles de comprender y para último presentaré un software con el que cualquiera puede programar un microcontrolador sin muchos conocimientos sobre estos, pero a la vez con herramientas tan potentes que hasta los profesionales más avanzados serán felices usandolo.

Por ahora me toca despedirme esperando que esta información haya podido ser útil para tí y quedando atento a tus comentarios.

Artículos relacionados.

Lecturas recomendadas

  • José M. Angulo Usategui, Ignacio Angulo Martínez, Microcontroladores PIC: Diseño práctico de aplicaciones (primera parte)
  • Ronald J. Tocci, Neal S. Widmer, Sistemas digitales: principios y aplicaciones
  • Albert Paul Malvino, Principios de electrónica, Sexta edición.
  • Robert L. Boylestad, Electrónica: Teoría de Circuitos.
  • Timothy J. Maloney, Electrónica Industrial, dispositivos y sistemas.
Sort:  

Yay! 🤗
Your content has been boosted with Ecency Points, by @electronico.
Use Ecency daily to boost your growth on platform!

Support Ecency
Vote for new Proposal
Delegate HP and earn more

Thanks for your contribution to the STEMsocial community. Feel free to join us on discord to get to know the rest of us!

Please consider delegating to the @stemsocial account (85% of the curation rewards are returned).

Thanks for including @stemsocial as a beneficiary, which gives you stronger support. 
 

Gracias, es un placer poder compartir en esta fabulosa comunidad. Esperando crecer más para poder aportar en otras formas que beneficien a todos.🤗

¡Enhorabuena!


Has recibido el voto de PROYECTO CHESS BROTHERS

✅ Has hecho un trabajo de calidad, por lo cual tu publicación ha sido valorada y ha recibido el apoyo de parte de CHESS BROTHERS ♔ 💪


♟ Te invitamos a usar nuestra etiqueta #chessbrothers y a que aprendas más sobre nosotros.

♟♟ También puedes contactarnos en nuestro servidor de Discord y promocionar allí tus publicaciones.

♟♟♟ Considera unirte a nuestro trail de curación para que trabajemos en equipo y recibas recompensas automáticamente.

♞♟ Echa un vistazo a nuestra cuenta @chessbrotherspro para que te informes sobre el proceso de curación llevado a diario por nuestro equipo.


Cordialmente

El equipo de CHESS BROTHERS

Mucha gracias, es maravilloso contar con su apoyo!!!