lunes, 3 de abril de 2017

Microcontroladores PIC – Curso de Programación en MikroC (Parte 1)



Hola nuevamente a los tutoriales de Artes Electrónicas Pachani, de aquí en adelante vamos a iniciar un nuevo viaje en la programacion de microcontroladores PIC16F877A en MikroC, En este curso iremos aprendiendo sobre las características de C por ello este tutorial está dirigido a lectores novatos, aficionados (hobbistas), estudiantes, que deseen implementar programas para microcontroladores en lenguaje C.

Comencemos en un lenguaje de alto nivel

 


Para empezar diremos que el compilador de alto nivel en lenguaje C utiliza estructuras que facilitan la programación, optimiza las operaciones matemáticas y los procesos, por medio del uso de funciones predefinidas y las no predefinidas que nosotros mismos podemos crear, así como el uso de un conjunto de variables, de tipo carácter, entero, y punto decimal.

Básicamente el compilador crea automáticamente el código ensamblador y a su vez un código similar consignado en un archivo con extensión *.hex, este archivo es el resultado del compilador dado que este servirá para programar eléctricamente el microcontrolador y también con el mismo se puede realizar la simulación en Proteus.

Mi primer proyecto en C
Ya en el anterior tutorial aprendimos como crear un proyecto, de aquí en adelante nos ocuparemos de la programación. La estructura de un programa en lenguaje C, este relativamente simple.

1er Paso.- Es indispensable declarar las variables globales que el desarrollador considere necesarias para el funcionamiento del programa, estás variables globales son reconocidas por todos los puntos de código del programa incluidas las funciones propias del desarrollador y la función main.

2do paso.- El paso a seguir es hacer las declaraciones de funciones diseñadas por el desarrollador para las tareas específicas en su programa.

3er paso.- Posteriormente se declara la función main y al comienzo de está se deben declarar las variables que se requieran dentro de la misma. El código que sigue debe configurar e inicializar los puertos y módulos del microcontrolador que sean indispensables en la aplicación.

4to paso.- Por último se edita el código que contiene el aplicativo concreto del programa. En el siguiente ejemplo se puede ver cómo hacer una estructura para un programa:

Problema 1.- Realizar un programa que encienda una lampara en lo alto de una baliza de telecomunicaciones.

Solución.- De la misma manera como iniciamos en nuestros anteriores proyectos primero vamos a etiquetar nuestro proyecto de manera similar a los programas realizados en Ensamblador. Esto nos ayudara para tener información de nuestro programa tanto para poder hacer modificaciones nuestras o bien para que otra persona, tenga información sobre como funciona nuestro código.
Según el programa debemos de interpretarlo a nivel del microcontrolador, de modo que esa lampara puede ser un bit de cualquier puerto de nuestro microcontrolador de modo que yo escogeré el puerto A el bit RA0, de modo que cumpla con las características de nuestro programa.
Ahora escribamos el siguiente código según nuestra receta anterior, para facilitar las instrucciones del programa yo lo muestro primer en un editor de programas llamado Pluma, luego lo copiare en MicroC:



Habrán notado que la parte de la declaración de las variable globales como las funciones propias no están escritas con alguna instrucción, esto es porque de momento no lo necesitamos pues solo nos basta con realizar la programación en la función principal.

Bien en la función principal tenemos la configuración del puerto A, primero llamamos al puerto donde trabajaremos , luego dado la características del puerto A lo habilitamos de modo que pueda trabajar como un puerto de entrada y salida digital, y luego lo habilitamos como un puerto de salida.

Luego tenemos un ciclo iterativo while repite o ejecuta un fragmento de programa siempre y cuando la condición contenida en el while sea verdadera. De modo que en este caso por while(1), colocara un SET(1) al bit RA0 por un tiempo según la instrucción Delay_ms(500), de igual manera se repite para CLEAR (0) con el mismo tiempo.

Simulación
Primero compilemos nuestro programa en MicroC, abrimos y escribimos nuestro código en la hoja de programación de MicroC:


Una vez escrito las instrucciones vamos a la pestaña de Build, según la imagen siguiente:


Una vez compilado el programa en la parte inferior de nuestro IDE veremos lo siguiente:


  Primero vemos la ubicación del programa compilado , luego los archivos generados para nuestro proyecto, ademas de las características del programa generado pues nos indica el tamaño como memoria ram que utiliza para ser ejecutado dentro del microcontrolador como tamaño del mismo.
Dentro de nuestro proyecto veremos los siguientes archivos generados:



De este grupo de archivos utilizaremos el archivo ejer01.hex , que lo utilizaremos para su simulación en programas de circuitos como Proteus.

Simulación en Proteus
Una vez se ha generado el archivo ejer01.hex , podemos utiliza este archivo para simulación y para grabarlo de manera directa hacia nuestro microcontrolador por medio de un grabador Pickit2 de modo que ya funcione como debe:




Primer cargamos al microcontrolador el archivo ejer01.hex para que pueda realizar la emulación, luego veremos si la simulación responde a nuestras expectativas.

Primero:


Como vemos en la imagen el programa enciende el led de salida de modo que cumple con la primera parte de nuestro programa.

Segundo:

Aquí el led de salida esta apagado aproximadamente a los 500m[s] según nuestro programa y luego vuelve a encender el LED de manera indefinida tal cual lo haría una lampara de Baliza de Telecomunicaciones.

Para finalizar el tutorial como habrán notado el programa responde a nuestros expectativas, con todo lo aprendido hoy se puede decir que programación en C no es nada difícil, pero hay algo que ronda por mi cabeza, como sera el programa en ensamblador, haber dentro de la carpeta del proyecto esta también un archivo ejer01.asm el cual tiene las instrucciones para esas pocas lineas veamos :



Al ver las instrucciones en ensamblador de nuestro programa escrito en C, veo que es la diferencia es grande, ademas del numero de instrucciones en ensamblador, la manera como el interprete C, realiza el Delay en ensamblador es un tanto interesante, lo bueno de C es lo amigable de programación , pero cuando tengamos limitaciones mi consejo es realizar ciertas rutinas en ensamblador para reducir el numero de instrucciones de el compilador C, eso lo veremos mas adelante con los ejercicios .

Bueno de aquí en adelante nos olvidaremos de esto siempre y cuando la memoria de nuestro microcontrolador no este comprometida, pero ademas de momento como estamos aprendiendo a programar ya cuando tengamos mas experiencia veremos que algunas instrucciones pueden interpretar de mejor manera con la ayuda de nuestro Diagrama de flujos, el cual utilizaremos en los siguientes ejercicios. Nos vemos hasta el siguiente Tutorial.


Todo el material que aquí se encuentra es de mi autoría, ademas de una recopilación de información de Internet de recursos que se pueden descargar como libros los cuales son usados como referencia para los ejercicios y los ejemplos. Cualquier consulta la puedes realizar en la parte de comentarios.

Bibliografia:
1.- Juan Ricardo Clavijo Mendoza, Diseño y simulación de sistemas microcontrolados en lenguaje C; Publicado el año 2011;[Fecha de consulta 27 de Marzo de 2017].
2.-Juan Ricardo Penagos Plazas; Cómo programar en lenguaje C los microcontroladores PIC16F88, 16F628A y 16F877A; Publicado el año 2010; [Fecha de consulta 27 de Marzo de 2017].

Software utilizados:
1.- MikroC_PRO_PIC_2016_Build.6.6.3 descargado de la pagina oficial de Microchip;
2.- Pluma. Editor de texto libre, se puede descargar de Internet, es un editor GNU Linux;

Microcontroladores PIC – Curso de Programación en MikroC (Parte 6 )

Microcontroladores PIC – Curso de Programación en MikroC Bienvenido nuevamente a los tutoriales de Artes Electrónicas Pachani , con...