USART AVR ejemplos


Compartir: Share on Facebook0Tweet about this on TwitterShare on Google+0Share on Tumblr0Share on LinkedIn0

Anterior: USART AVR Comunicación Serial.

USART AVR ejemplos, en esta sección se realizarán algunos ejemplos sencillos realizados con el ATMEL STUDIO sobre la utilización del módulo USART AVR en modo asíncrono, esta es la parte práctica de lo que se vio aquí, por lo que se recomienda antes de continuar visitar el enlace indicado. Se utilizará el archivo de cabecera usart.h que se obtuvo para la transmisión y recepción de datos con el módulo USART AVR, el microcontrolador AVR para realizar el USART AVR ejemplos será el ATMEGA88 en un inicio, luego se complementará con otros AVR.

El archivo de cabecera usart.h que se obtuvo para ser utilizado con el ATMEGA88 en el que la Fosc=8Mhz y la velocidad de comunicación será a 9600 baudios es el siguiente, con algunas pequeñas modificaciones se puede utilizar en cualquier otro AVR, si se utiliza otra Fosc y/o otra velocidad de comunicación hay que hacer los cálculos con UBRR0=(Fosc/(16*baudios))-1 para el nuevo valor a cargar en UBRR0.

USART AVR EJEMPLOS

USART AVR ejemplos 1 En este primer ejemplo se  realizará la comunicación serial entre 2 microcontroladores ATMEGA88, mediante dos pulsadores conectados en los pines PB0 y PB1 de uno de los AVR del que se utilizarán sus resistecias internas pull up, se podrá encender o apagar un led conectado en el pin PC5 del otro AVR.

El ejemplo es sencillo para no complicar el código, pero  se puede hacer lo que se quiera mediante la comunicación serial, la idea será la misma si se quiere hacer cualquier tipo de control de un microcontrolador con otro microcontrolador.

En este ejemplo lo que se busca es que se vea como utilizar el archivo de cabecera usart.h ya que será el utilizado en los siguientes USART AVR ejemplos.

En la siguiente imagen se ha creado un proyecto llamado usart1, con el archivo fuente llamado usart_avr_ejemplos1.c, el la parte resaltada usart1 se hace click derecho y en Add se selecciona New Item…, en la ventana que aparece se selecciona Include File y en name se le da el nombre de usart.h, y se pulsa sobre Add así se creará el archivo llamado usart.h, luego se hace doble  click sobre el archivo usart.h creado para que abrir el editor usart.h, se borra todo lo que el programa genere, que quede limpio, se copia el contenido mostrado lineas arriba para el archivo de cabecera y se pega dentro de usart.h, el resultado debe ser similar al que se ve en la siguiente imagen.

avr USART AVR ejemplos usart.h

A partir de este momento ya se puede utilizar el archivo de cabecera usart.h para realizar la comunicación serial con el módulo USART AVR

El circuito utilizado para el USART AVR ejemplos 1 es el siguiente:

Usart avr ejemplos 1 circuito

Con el pulsador del pin PB0 del AVR1 se encenderá el led del pin PC5 del AVR2, con el pulsador del pin PB1 del AVR1 se apagará el led del pin PC5 del AVR2.

En el código para el AVR1 se tiene que hacer que al presionar el pulsador para encender el led se transmitirá el caracter ‘e’ al AVR2, al presionar el pulsador para apagar el led se transmitirá el caracter ‘a’ al AVR2, el siguiente será el código para el AVR1.

En el código para el AVR2 se tiene que hacer que cuando reciba el  caracter ‘e’ el led se encienda y cuando reciba el caracter ‘a’ el led se apague. El siguiente será el código para el AVR2

USART AVR ejemplos 2 En este segundo ejemplo se  realizará la comunicación serial entre 2 microcontroladores PIC, uno de ellos será el ATMEGA328P y el otro será el ATMEGA88, en el ATMEGA88 se creará una variable cuyo valor aumentará en una unidad cada medio segundo, el tiempo estará controlado por la interrupción por desborde del timer1 del ATMEGA88, cada 2 segundos se transmitirá un caracter desde el ATMEGA88 que puede ser ‘1’, ‘2’, ‘3’ o ‘4’ al ATMEGA328P, de acuerdo al caracter recibido por el ATMEGA328P se encenderá un led en el puerto C de este, ambos AVR trabajarán a 8Mhz y a una velocidad de comunicación de 9600 baudios.

Para el ATMEGA328P no será necesario modificar en el archivo de cabecera usart.h dentro de la función iniciar_usart() ya que la ubicación de los pines TXD y RXD son los mismos que para el ATMEGA88.

El circuito utilizado para el USART AVR ejemplos 2 es el siguiente:

Usart avr ejemplos 2 circuito

En el código para el ATMEGA88 se creará la variable que aumentará en una unidad cada medio segundo, cuando aumente en cuatro unidades se transmitirá un caracter al ATMEGA328P, el código es el siguiente:

En el código para el ATMEGA328P se encenderá un led en el puerto C dependiendo del caracter recibido del ATMEGA88, el código para el  ATMEGA328P es el siguiente:

USART AVR ejemplos 3 En este tercer ejemplo se  realizará la comunicación serial entre el microcontrolador ATMEGA88 y el ordenador utilizando el archivo de cabecera usart.h, en este caso solo se enviará un mensaje para ser visto en el ordenador.

Se necesitará una ventana conocida como terminal donde se podrá ver lo que se transmite del microcontrolador al ordenador, y también para ver los datos que se transmiten del ordenador al microcontrolador.

Si se esta programando en Windows XP se utilizará el hyper terminal, si se esta programando en el Windows 7 u 8 no se tendrá el hyper terminal, y habrá que buscarse algún programa que cumpla la función del hyper terminal, en nuestro caso se está programando en Windows 8 y este no tiene el hyper terminal, por lo que se utilizará el TERA TERM el que se puede descargar desde aquí, en la siguiente imagen se puede ver el tera term.

Usart pic ejemplos 3 tera term

Se utilizará el conversor serial-usb para la comunicación entre el ATMEGA88 y el ordenador; en el  tera term se irá a setup luego a serial port para configurar el puerto serial donde se ubica el conversor serial-usb, normalmente lo detecta solo, también se puede establecer la comunicación serial utilizando el visual basic, el java, el matlab y muchos mas, pero para empezar se usará el tera term.

El circuito a utilizar será el siguiente, hay que ser muy  cuidadoso en cuanto a las conexiones a realizar entre el ordenador, el conversor serial-usb, la compuerta inversora, las resistencias y el microcontrolador.

Usart pic ejemplos 3 circuito

En el código realizado en el ATMEGA88 para este ejemplo se enviará un mensaje al ordenador mediante la función enviar_cadena_usart() que se encuentra dentro del archivo de cabecera usart.h, el código es el siguiente:

La siguiente es la imagen del  mensaje visto en pantalla en el tera term

Usart pic ejemplos 3 en el tera term

USART AVR ejemplos 4 En este cuarto ejemplo se  realizará la comunicación serial entre el microcontrolador ATMEGA88 y el ordenador utilizando el archivo de cabecera usart.h, se encenderá y apagará un led conectado en el microcontrolador, al presionar la tecla + del ordenador se encenderá el led, al presionar la tecla – del ordenador se apagará el led, se utilizará el TERA TERM para realizar la comunicación.

El circuito a utilizar será el siguiente, hay que ser muy  cuidadoso en cuanto a las conexiones a realizar entre el ordenador, el conversor serial-usb, la compuerta inversora, las resistencias y el microcontrolador.

Usart avr ejemplos 4 circuito

En el código realizado en el ATMEL STUDIO se utilizará la función recibe_caracter_usart() que está dentro de la función de cabecera usart.h para recibir el caracter transmitido por el ordenador, cuando el caracter sea ‘+’ se encenderá el led conectado al pin PB0, cuando el caracter sea ‘-‘ se apagará el led. El código es el siguiente:

La siguiente es la imagen del caracter enviado por el ordenador y del mensaje visto en pantalla en el tera term, para poder ver el caracter enviado, en el tera term hay que ir a setup -> terminal y habilitar Local echo.

Usart pic ejemplos 4 en el tera term

El módulo USART AVR también puede ser utilizado mediante interrupciones, la forma de proceder en este caso se puede ver aquí.

Si he podido ayudarte con USART AVR ejemplos, comparte este enlace para poder ayudar a muchas personas mas. Muchas Gracias.

Atte: MrElberni.

Compartir: Share on Facebook0Tweet about this on TwitterShare on Google+0Share on Tumblr0Share on LinkedIn0