domingo, 14 de junio de 2020

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

Microcontroladores PIC – Curso de Programación en MikroC

Hola 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 (Parte 3)



Capitulo 02.

Bifurcaciones y bucles

Continuando con la serie de tutoriales 0 , 1 y 2 , ya en los anterior tutoriales aprendimos como evaluar un bit de modo que cuando este se encuentre en alto (1) se inicie una serie de eventos. Ahora vamos a

avanzar un poco mas conociendo otra instrucción de decisión, dicha instrucción nos serán de mucha utilidad para tomar una decisión a partir de un evento. Entonces empecemos a conocer la siguiente instrucción de decisión.


Instrucción de decisión while (mientras)

Al igual que las otras esta instrucción tiene unas características únicas como ser: Permite ejecutar un grupo de instrucciones de manera repetitiva, mientras una condición sea verdadera ( sea igual a 1 ).

                                                        while (condición) {

                                                                        instrucciones;

                                                             }

Primero revisa la condición para determinar su valor de verdad (verdadero o falso) y luego se ejecutan las instrucciones.

Ejemplo : Las instrucciones encerradas entre { } se ejecutarán indefinidamente mientras el

valor del bit RB5 sea igual a 1 (Verdadero).

                                                    while (PORTB.F5) {

                                                                        Delay_ms(200);

                                                                        RA1_bit=1;

                                                                        RA2_bit=1;

                                                                        Delay_ms(500);

                                                                        RA0_bit=1;

                                                                        RA3_bit=1;

                                                             }

Veamos la aplicación de la anterior instrucción en el siguiente ejemplo:


Problema 01.- Realizar un programa que analice el estado del bit RB5 del puerto B de tal modo que cuando sea verdadero RB1==1 por el puerto A se muestre por el bit RA1 y RA2 un pulso con un periodo de 0,2 segundos y RA0 y RA3 un pulso con un periodo de 0,5 segundos , cuando sea distinto muestre todo el puerto A un pulso con un periodo de 1 segundos.


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 donde trataremos de explicar lo mejor posible nuestro código de manera secuencial para tener información de nuestro programa tanto para poder hacer modificaciones nuestras o bien para que otra persona entienda como funciona nuestro código. 



Ahora que tenemos nuestro diagrama de flujo podemos empezar a escribir nuestro código en C ,escribamos nuestro 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 compilaremos:




 Una 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 entrada de datos.

3).- Habilitamos a los puertos A como salida de datos por medio de la instrucción TRIS como lo hemos estado haciendo.

4).- Ya en el código principal lo que tenemos es verificar el estado del RB1, Mientras según la condición RB==1 por verdad se ejecutara un tipo de secuencia que analizamos en la primera parte de este tutorial con lo cual para mejorar su visualización agregaremos otra secuencia adicional la cual aparte de solo encender los bits del puerto A ademas los apagara como vemos en el programa principal.

5).- Ahora cuando no se cumpla la condición de RB==1 se ejecutara otra secuencia la cual cargaremos al registro LATA ← 0xFFh y LATA ← 0x00h con un periodo de 1seg.

6).- Por ultimo tendremos el salto inicio el cual creara ese bucle que hace que nuestro programa tenga esa utilidad .


Simulación en MikroC

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




Ya una vez obtenido el archivo lab09.hex ahora debemos de comprobar que nuestro código funciona de manera adecuada para ello vamos a usar el simulador Proteus para verificar que sigue la instrucciones que que nosotros le programamos , ademas nos ayudara a entender y planear algún cambio de nuestro código para poder volver al IDE de MikroC.


Simulación en Proteus

Una vez simulado y compilado en MikroC obtendremos los siguientes archivos:




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


Para empezar carguemos el archivo lab09.hex a Proteus 8,2.




 Ahora que cargamos nuestro firmware a nuestro microcontrolador lo que continua es verificar el adecuado funcionamiento de nuestro programa en el simulador , de ahí la utilidad de los simuladores computarizados.


Según nuestro programa la condición While define que cualquier valor que tengamos dentro de la condición debe de ser igual a unos ‘1’ o estado alto , en pocas palabras siempre y cuando RB1==1 recién se ejecutara una secuencia dentro de esta condición.


Veamos algunas imágenes de la simulación en Proteus:

Según nuestro programa principal cuando RB==0 , es decir no cumpla la condición inicial se tendrá un pulso de 1 segundo de la siguiente manera :




 Ahora sabemos que funciona continuemos cuando RB1==1 veremos como la secuencia de encendido de led inicia:




 Vemos el cambio que existe al momento de la simulación según la condición inicial para nuestro programa.




Algunas observaciones

Tenemos que tener en mente lo siguientes:

1).- Ya aprendimos en el anterior tutorial como manejar un bit de modo que cuando esta en nivel alto este dará lugar a serie de programas escritos dentro de ellos.

2).- La facilidad con que podemos recuperar dichos datos del exterior hacia el microcontrolador depende de la capacidad para elaborar programas acordes a las capacidades de nuestro microcontrolador , por lo que a medida que aprendamos mas de las capacidades de estos microcontroladores podremos resolver varias necesidades y facilitar la vida del ser humano.


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 día a día 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 13 de junio 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 9 de junio de 2020].

3.- Eduardo Garcia Breijio; Compilador_C_CCS_y_simulador_PROTEUS_para_microcontroladores_PIC; Publicado el año 2008; [Fecha de consulta 9 de junio 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.















No hay comentarios.:

Publicar un comentario

Hola, con tu comentario puedes aportar para mejorar la calidad de mi trabajo

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