jueves, 10 de enero de 2019

Librerias para XC8 PIC16F877A (USART parte 2)

En esta entrada vamos a realizar un programa de prueba para verificar el correcto funcionamiento de las rutinas  para manejar el módulo USART del PIC16F877A que vimos anteriormente.
Esquema del circuito de prueba

Para realizar las pruebas se utilizará el circuito de la siguiente figura, el conector J1 se utiliza para la conexión ICSP con el grabador de PIC, mientras que el conector J2 se usa para conectar un conversor USB a UART.



Materiales

Ademas de los componentes electrónicos básicos que se muestran en el esquema se utilizará lo siguiente:
  • Protoboard o Breadboard.
  • Cables para armar el circuito y alicates.
  • Un grabador para microcontroladores PIC, yo utilizaré un clon del PICKit 2. 
  • Un  conversor USB a UART, yo tengo una placa basada en el chip CP2102.
  • Cables USB necesarios para conector el conversor y el grabador.
  • Un programa tipo terminal para la computadora, en este ejemplo utilizaré comtestserial, también puede usarse hyperterminal si se utiliza Windows XP.
Programa
El programa esta realizado usando el compilador  XC8 v1.35 en modo FREE, trabajando en el MPALB X v5.10, lo primero que se debe tomar en cuenta es incluir el archivo de cabecera PIC16F877A_plib.h, en mi caso el archivo de cabecera y el código fuente  de la librería se encuentra fuera de la carpeta del proyecto, es por este motivo se debe indicar la dirección de la carpeta donde se encuentran.

Como se utiliza un cristal de 4 MHz seleccionamos el tipo de oscilador XT, los bits de configuración que podrían generar algún problema y deben revisarse que estén en el valor correcto son:  DEBUG, LVP, PWRTE y el WDTE, tambien es util definir la frecuencia del cristal que se utilizara para poder utilizar las rutinas de retardo incorporadas en el compilador o para generar automáticamente el valor deseado del generador de baudios del USART.


También debe declararse la unión USART_Status,para poder acceder a las banderas de error de recepción o para utilizar una comunicación de 9 bits.


Dentro la función principal se realiza la configuración del USART, para esta prueba se utiliza una comunicación asíncrona 8N1 es decir, 8 bits de datos, ningún bit de paridad y 1 bit de parada. se realizara la comunicación a 9600 baudios, se debe tomar en cuenta que todos los parámetros deben ser colocados para poder formar la palabra correcta de configuración.


El programa de prueba recibe una cadena de texto, cambia las letras  minúsculas a mayúsculas y después devuelve la cadena resultante.

La cadena de caracteres se recibe utilizando la función getsUSART(), para este ejemplo se esperan 8 caracteres, esta cantidad puede ser modificada aumentando el tamaño de la variable RX_Buffer[10],el limite es el tamaño de la memoria RAM del microcontrolador.

Después de realizar  el cambio de minúsculas a mayúsculas, se aumenta el carácter NULL (0x00) para indicar el final de la cadena, esto es necesario para el uso de la función putsUSART().

Prueba en el circuito armado



Luego de armar el circuito de prueba en el protoboard, y cargar el programa en el microcontrolador, se utiliza el programa de MicroRidge COMTestSerial para enviar y recibir las cadenas de caracteres  al microcontrolador usando  un puerto COM de la computadora.

Debido a que estoy utilizando un convertidor USB a serial (la placa roja sobre el protoboard), se debe  verificar que tenemos el driver instalado y saber que número de puerto COM ha sido asignado, también se debe revisar que el COMTestSerial este configurado  a 9600 baudios y 8N1,

Conclusiones

Luego de realizar algunas pruebas las funciones del puerto serial puedo decir que esta parte de la librería está terminada y que la podré utilizar para probar las funciones para manejar los otros periféricos.

También espero poder dedicarle mas tiempo al blog para poder documentar rápidamente las librerías y poder documentar  otros proyectos que tengo pensado.

Descargar el ejemplo Test_USART.zip

1 comentario:

  1. Buena info, estoy haciendo las pruebas con xc8 desde linux, muchas gracias.

    ResponderEliminar