lunes, 10 de abril de 2017

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


Hola nuevamente a los tutoriales de Artes Electrónicas Pachani, continuando con el curso de programacion del microcontrolador pic 16f877A en  MikroC, aquí en adelante 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.

Comenzamos en un lenguaje de alto nivel



Bien sabemos por lo dicho antes 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. 

Cual la ventaja de aprender C, básicamente puedo decir que la mayoría de los lenguajes de programación se han basado en C debido a sus flexibilidad y métodos para interpretar los problemas, por ejemplo tenemos a Java que ha asimilado buena parte de las características de C, otro buen ejemplo es, el lenguaje de programación de Arduino que tiene muchas sentencias e interpretación que se parecen a C.
Mis proyectos en C
Ya en el anterior tutorial aprendimos a programar un proyecto. Ahora trataremos de continuar con la estructura de un programa en lenguaje C, este relativamente simple, por lo cual trataremos de respetar esta plantilla:

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 2.- Realizar un programa que controle las luces de una habitación, por medio de una serie de interruptores (Switch’s) colocados en la habitación .

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, las lamparas puede ser un bit de cualquier puerto de nuestro microcontrolador de modo que yo escogeré el puerto A, de modo que cumpla con las características de nuestro programa. Ahora los interruptores están colocados de modo que controlan solo una lampara lo cual facilita nuestro programa pues controlan solo un bit.

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:



1).- Inicializamos los puertos A y B de modo que es como ir al banco 1, para llamarlos.
2).- Debido a que el puerto A tiene dos características especiales, lo habilitaremos para que pueda trabajar como puerto de entrada y salida digital con la instrucción ADCON1, de esta manera todos los pines del puerto A se podrán utilizar como un puerto de E/S digital, de igual manera podemos trabajar con el puerto E.
3).- Habilitamos a los puertos A como entrada de datos y puerto B como salida de datos, por medio de la instrucción TRIS como lo hemos estado haciendo.
4).- Por medio de la sentencia WHILE (1) , siempre verdad, se cumple que el puerto B es igual al contenido del puerto A, de este modo siempre se mostrara los datos del puerto A en el puerto B.
Por ultimo una ves escrito el archivo en ejer01.c lo copiaremos a nuestro IDE de MikroC, lo compilaremos y luego obtendremos el archivo ejer01.hex.

Simulación en MikroC


De este modo hemos obtenido el archivo ejer01.hex . Ya que no hemos tenido problemas dentro de las instrucciones para nuestro programa ahora debemos de comprobar que nuestro código funciona de manera adecuada en el simulador proteus.

Simulación en Proteus
Una vez simulado y compilado en MikroC obtendremos los siguientes archivos:


Los archivos mas importantes son el ejer01.hex  y  ejer01.c , el primero para poder instalar en nuestro microcontrolador y simular en Proteus , el segundo es el archivo que facilita crear nuestro archivo para compilar que seria como el archivo *.asm pero para la versión en C, ya que el interprete se encargar de realizar la traducción para obtener el archivo ejer01.hex


Primero cargamos el archivo ejer01.hex para que se pueda iniciar con la simulación, para lo cual primero cargamos solamente el archivo HEX, si nuestras instrucciones son las adecuadas la mejor manera sera verla en la simulación.


Algunas observaciones que tenemos que tener en mente son las siguientes:
1).- Cuando utilizamos la instrucción ADCON1, es una instrucción que dedica al puerto A y E que tiene los pines como entrada analógico de principio, en puertos de E/S digital, ahora el pin RA4 no es un pin analógico y mas bien es un pin ST comparador Schmitt Trigger (ST) se caracteriza porque su salida estará siempre en uno de los dos niveles binarios posibles (1 o 0), sin importar el nivel de voltaje de entrada (tomando en cuenta los límites máximos), por tanto el pin RA4 trabaja como salida de drenaje abierto , es decir es un pin de entrada/salida digital.



Con todas estas observaciones se trata de aprender mas de los microntroladores, ahora en cuanto a la configuración de los microcontroladores todo dependerá de la hoja de datos que ellos poseen pues el microcontrolador 16F877A casi no varia del 18F4550 pues ambos tienen las mismas entradas salvo que a cada puerto se le an adicionado mas características, de a poco con los ejemplo iremos viendo estas características. A medida que suba otro tutorial iré subiendo mas información con otro ejemplo, espero que toda la información te sea de utilidad y os espero en otro 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 7 de Abril 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 7 de Abril 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...