lunes, 29 de marzo de 2021

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, continuando en este curso vamos a conocer las capacidades del microcontrolador PIC 18F4550, vamos realizar programas en el entorno MikroC ,esta serie de tutoriales esta dirigido para lectores novatos, aficionados (hobbistas) y estudiantes.

Evaluemos el estado de un bit


Capitulo 02.
Bifurcaciones y bucles
Antes de iniciar este proyecto, sabemos que los puertos del PIC se configuran de modo que funcionen tanto de entrada como de salida y posteriormente el programa principal se encierra en un bucle
infinito. Para configurar los puertos como salida o como entrada se manipula el registro TRIS. Cada puerto cuenta con su respectivo registro TRIS, esto hace alusión a los tres estádos posibles, alto, bajo, y alta impedancia.
Los registros TRIS cuentan con el mismo número de bits del puerto, por ejemplo el puerto B o PORTB del PIC18F4550 cuenta con 8 bits, por lo tanto el TRISB también tiene 8 bits. Los bits de los registros TRIS, son correspondientes al puerto, y definen bit a bit el estádo del puerto.
Si un bit en el TRIS es 0 el mismo bit en el puerto es de salida, y si el bit del TRIS es 1 el mismo bit del puerto es de entrada o está en alta impedancia. Para entender este concepto con mayor claridad observe y analice el siguiente laboratorio.


Problema 01.- Realizar un programa que analice el estado del bit RB0 y que cuando RB0=1 muestre por el bit RA0 una señal conmutada de 0,5 seg .

Antes de empezar la estructura de un programa en lenguaje C, nosotros seguiremos la siguiente plantilla y la secuencia de pasos para tener una mejor idea para programar y resolver nuestra necesidad:

1er Paso.- Es indispensable declarar las variables globales que consideres 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 y la función main.
2do paso.- El paso a seguir es hacer las declaraciones de funciones diseñadas para las tareas específicas en tu 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 base a la anterior estructura para un programa, resolvamos el problema:


Solución.- Hagamos uso de un diagrama de flujo trataremos de explicar lo mejor posible nuestro código de manera secuencial es decir 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.

Ahora que tenemos nuestro diagrama de flujo podemos empezar a escribir nuestro codigo en C ,escribamos el siguiente código según nuestra receta anterior, para facilitar las instrucciones del programa, yo lo muestro primero en un editor de texto (esto es alternativo pues podemos ir directo al IDE MikroC ), luego lo copiaremos y compilar:

na breve explicación de como sigue la secuencia del anterior programa:

1).- Primero habilitamos los puertos como entrada / salida digital con ADCON1 ← 0x0Fh , ademas deshabilitamos tanto el comparador análogo CMCON← 0x07h y las interrupciones Globales INTCON ← 0x00h.
2).- Limpiamos el puerto B para que trabaje como puerto de salida.
3).- Habilitamos a los puertos A como salida de datos por medio de la instrucción TRIS como lo hemos estado haciendo.
4).- Ahora cargamos al resgistro LATA ← 0x00h.
5).- Luego que una vez se ha cargado el registro LATA=0x00h , vamos a verificar el estado del bit RB0.
6).- Por ultimo se muestra el contenido de LATB hacia el exterior, con lo cual para poder visualizar vamos hacer uso del Delay_ms(500) , pues sino lo hacemos así no podremos visualizar el cambio, sin olvidar que vamos a realizar el bucle dentro el programa.

Por ultimo una ves escrito el archivo en lab06.txt lo copiaremos a nuestro IDE de MikroC, lo compilaremos y luego obtendremos el archivo lab06.hex.

Simulación en MikroC
 Una vez tenemos nuestro código copiamos dentro del entorno de MikroC , de modo que luego compilamos:


 Una vez obtenido el archivo lab06.hex ahora debemos de comprobar que nuestro código funciona de manera adecuada para ello vamos a usar el simulador proteus.


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

Los archivos mas importantes son el lab06.hex y lab06.asm, 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.

 Aquí cargo el lab06.hex a mi proteus 7.5



 Ahora cargamos el lab06.asm, para la simulacion.



 Al momento de simular vemos que cumple con nuestro código que hemos diseñado ,
  


 Veamos el cambio


Algunas observaciones
Tenemos que tener en mente lo siguientes:
1).- Al tener el control del estado de un bit ( RB0 en nuestro caso) podemos trabajar de modo que se convierta en la base de una condición de control para el inicio de una secuencia de programas o también para el inicio de dicho evento como el arranque de un motor, el paro de un sistema de maquinas , etc ..
2).- Otra facilidad que tenemos a nuestro favor es el uso de librerías que posee IDE de MikroC como el Delay_ms() , han hecho que sea mas sencillo y por ende el numero de lineas de código han sido mas cortos.


 Veamos el video resumen de como se configura el microcontrolador para resolver el problema:

Al final
Con todo lo aprendido de los microcontroladores, vemos que podemos aprovechar las capacidades de los mismos para resolver necesidades del dia a dia en nuestras vidas. Para concluir, 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 los espero en el próximo 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 en pdf 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 19 de mayo de 2020].
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 19 de mayo de 2020].
3.- Eduardo Garcia Breijio; Compilador_C_CCS_y_simulador_PROTEUS_para_microcontroladores_PIC; Publicado el año 2008; [Fecha de consulta 19 de mayo de 2020].

Software utilizados:
1.- MikroC_PRO_PIC_2016_Build.6.6.3 descargado de la pagina oficial de Microchip.
2.- Proteus v 7.5 , simulado en linuxMint 19,4 por medio del programa Wine.
3.- Editor de texto libre, se puede descargar de Internet, es un editor GNU Linux.
4.- OpenProg , programador de microcontroladores PIC-AVR.

Hardware utilizados:
1.- Placa de Programación basado en los esquemas de OpenProg.
2.- Placa entrenadora desarrollado en base al microcontrolador Pic 18F4550.

3.- Placas modulo de leds , botoneras e interruptores.

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...