viernes, 19 de marzo de 2021

Microcontroladores PIC – Curso Programación en MikroC ( *.asm) (Parte 2)

Hola nuevamente a los tutoriales de Artes Electrónicas Pachani, continuando con este curso de programacion del microcontrolador PIC 18F4550 en ensamblador en el entorno MikroC ,esta serie de tutoriales esta dirigido para lectores novatos, aficionados (hobbistas), estudiantes, que deseen implementar programas para microcontroladores en MikroC.
Un lenguaje de alto nivel


Continuando con lo aprendido en el anterior tutorial aprendimos que en lenguaje C podemos hacer uso de estructuras de programación que optimiza las operaciones con bits y los procesos que ello nos
puede ayudar a comprender en mejor manera el manejo de los puertos del microcontrolador.

Registros de control de puerto
Resumiendo cada puerto de E/S dentro de los microcontroladores tiene asociado 3 registros:
Registro TRIS : mediante este registro se configuran cada una de las líneas de E/S del puerto como:
ENTRADA (bit correspondiente a '1')
SALIDA (bit correspondiente a '0').
Registro PORT : mediante este registro se puede LEER el nivel en el pin de E/S (Entrada de Datos)
Registro LAT : mediante este registro se ESCRIBIR el valor de del pin de E/S (Salida de Datos)
Ahora continuemos con la estructura de un programa en lenguaje C, este relativamente simple, por lo cual trataremos de respetar esta plantilla (que lo veremos un par de tutoriales mas y luego lo dejaremos de lado):

La estructura de un programa en lenguaje C, es relativamente simple, por lo cual vamos a respetar la plantilla y la secuencia de pasos para tener una mejor idea del programa:

1er Paso.- 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 ( principal ).
2do paso.- Hacer las declaraciones de funciones diseñadas por el desarrollador para las tareas específicas en su programa si es necesario para el programa.
3er paso.- 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 aplica la estructura del programa:

Problema 02.- Realizar un programa que muestre el valor decimal 5 y 8 por el puerto B con una rutina de tiempo (retardo) .
Solución.- De la misma manera como iniciamos en nuestros anteriores proyectos primero vamos a etiquetar nuestro proyecto para las instrucciones. 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 escribamos el siguiente código según nuestra receta anterior, para facilitar las instrucciones del programa, yo lo muestro primer en un editor de texto llamado Pluma, luego lo copiare en MicroC:
El problema 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 B como entrada de datos, 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. En este caso las lamparas de colores lo pondré en la salida del puerto C.

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 el puerto B y limpiamos su contenido, para llamarlo.
2).- Habilitamos el puertos B como salida de datos, por medio de la instrucción TRIS como lo hemos estado haciendo.
3).- El registro de sentido de datos es TRISB. Al programar un bit de TRISB con un valor de 1 se consigue que el pin correspondiente del puerto B trabaje como entrada es decir, coloca el driver de salida en alta impedancia. Al programar un bit de TRISB con 0 se logra que el pin correspondiente del puerto B opere como salida es decir, coloca el contenido del LAT de salida en el pin seleccionado. Cada pin de este puerto tiene un pull up interno (resistencia conectada a V DD ). Cuando el puerto se configura como salida las pull-ups se desactivan automáticamente y también cada vez que se enciende el PIC (Power On Reset POR).
4).- Ahora que terminamos de escribir el código es momento de copiar dentro del IDE de MikroC .

Por ultimo compilaremos y luego obtendremos el archivo lab02.hex.

Simulación en MikroC


Una vez obtenido el archivo lab02.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:

Primero cargamos el archivo lab02.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.
 Vemos la diferencia de tiempo de encendido de los LED


 Vemos ahora el cambio de los LEDs


Algunas observaciones
Que tenemos que tener en mente son las siguientes:
1).- El manejo de los tiempos de retardo pueden ser muy útiles para el manejo de los bits , como hemos aprendido estos pueden hacer la diferencia para saber si un sistema o modulo se encuentran funcionando de manera correcta , por ejemplo recordemos que en Arduino existe un programa llamado BLINK, el cual hace referencia al uso de un bit que indica que el Arduino carga de manera exitosa los programas que diseñamos.

En resumen podemos ver en el siguiente video como va la configuración asi como los programas y hardware utilizados para el presente proyecto.


Con todas estas observaciones se trata de aprender mas de los microcontroladores, ahora en cuanto a la configuración del microcontrolador todo dependerá de la hoja de datos que posee el microcontrolador, en el caso de 18F4550 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 los 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 10 de abril de 2020].
2.-Datasheet pic2550-4550; pic2550-4550; Publicado el año 2009; [Fecha de consulta 12 de abril 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...