Práctica 7 – Comunicación Serial

 

INTRODUCCIÓN

 

En esta práctica se implementa una comunicación serial UART (Universal Asynchronous Receiver-Transmitter) enviando comandos a través de una terminal serial que nos proporciona el software XIDE v1.0 para el control de encendido o apagado de un LED y revisar el estado de un push button.

 

Selecciona la plataforma y entorno de programación.

 

 

PIC
AVR
PIC
PIC C Compiler
PIC C Compiler
Bootloader X-TRAINER
Bootloader X-TRAINER

Descripción

En esta práctica se implementa una comunicación serial UART a 9600 baudios, usando los módulos X-TRAINER P8 o X-TRAINER P8 DIP40 o X-TRAINER P8 DIP28, con el PIC18F45K50 o con el PIC18F25K50. Desde una terminal serial que proporciona el software XIDE, se envían y reciben datos por medio del módulo XCU. Para encender el LED incluido en el módulo X-TRAINER se enviá el número 1, si se desea apagar se enviá el número 0. Para recibir el estado del botón BOOT, se envía el signo "?", si el botón está presionado recibe el número 1, en caso contrario se recibe el número 0.

 

Materiales:

1 x Módulo X-TRAINER P8 o X-TRAINER P8 DIP40 o X-TRAINER P8 DIP28. Comprar

1 x Módulo Programador XCU. Comprar

1 x Protoboard de 830 puntos. Comprar

1 x Juego de cables Dupont. Comprar

1 x Cable micro USB.

 

Software:

Windows 7 o posterior.

PIC C Compiler v5.069 o posterior. Descarga

XIDE v1.0 Descarga

 

Procedimiento

1. Realiza las conexiones que se muestran en la siguiente imagen para X-TRAINER P8 o X-TRAINER P8 DIP40  o X-TRAINER P8 DIP28 y conéctalo a la computadora.

2. Al final de esta práctica, en el apartado de "Descargas", puedes encontrar los archivos del código fuente, o bien copiarlo del apartado de "Código" que se encuentra más abajo.

3. Si descargaste el archivo del paso 2, omite este paso. Si copiaste el código, abre el compilador, pega el código en un nuevo proyecto, En el siguiente link encontrarás un manual para compilar en PIC C Compiler.

4. Abre el Software XIDE v1.0 y programa el código que descargaste o compilaste, en el módulo. En el siguiente link encontrarás el manual de usuario para el Software XIDE v1.0.

5. Al terminar de programar, el módulo se reiniciará y el programa de esta práctica se ejecutará.

6. En el apartado de "Diagrama esquemático", que se encuentra a continuación, selecciona tu módulo, realiza las conexiones que se muestran en la imagen y conéctalo a la computadora.

7. En el Software XIDE, abre la herramienta de Terminal Serial para lograr la comunicación con el módulo y enviar los caracteres de esta práctica. En el siguiente link encontrarás el manual de usuario para el Software XIDE v1.0.

 

Diagrama esquemático

 

X-TRAINER P8 LITE
X-TRAINER P8
X-TRAINER P8 DIP 40
X-TRAINER P8 DIP 28
X-TRAINER P8 LITE

X-TRAINER P8

X-TRAINER P8 DIP 40

X-TRAINER P8 DIP 28

 

Código

Código

/*

 AUTOR: MICROSIDE TECHNOLOGY S.A. DE C.V.

 FECHA: JUNIO 2019

*/

/**************************************************************************

 Implementar comunicación serial para enviar un comando simple para prender y

 apagar un LED incluido en la tarjeta X-TRAINER, y un segundo comando para

 preguntar el estado de un botón.

**************************************************************************/

#include <18F45K50.h>                                          // Incluye la librería para el PIC ( para X-TRAINERp8DIP28: #include <18F25K50.h> )

#use delay(internal=48MHz)                                   // Configura frecuencia del oscilador interno

#build(reset=0x02000,interrupt=0x02008)              // Asigna los vectores de reset e interrupción para la versión con bootloader

#org 0x0000,0x1FFF {}                                           // Reserva espacio en memoria para el bootloader

#use rs232(baud=9600, xmit=PIN_C6, rcv=PIN_C7,STREAM=UART ) //Configuración del puerto UART

#define LED PIN_A1                                              //Pin donde está conectado el LED de X-TRAINER

#define Boton PIN_A2                                            //Pin donde está conectado el LED de X-TRAINER

void main ()

  {

   while (1)

  {

   char Caracter = getc ();                                       //Guarda el caracter

   if (Caracter == ‘0’)

    {

      output_low (LED);                                             //Apaga el LED

    }

     else if (Caracter == ‘1’)

    {

     output_HIGH (LED);                                         //Enciende el LED

    }

     else if (Caracter == ‘?’)

    {

        if (1 == input (Boton))                                    //Pregunta el estado del botón

          {                                                                   

            Printf (“1”);                                                //Envía un 0 si el botón no está presionado

          }

          else

         {

           Printf (“0”);                                                //Envía un 1 si el botón está presionado

         }

      }

   }

}

 

Descargas


Software XIDE v1.0

Descarga el software XIDE v1.0 

Práctica 7 – PIC – Bootloader – CCS

Descargar código en PIC C Compiler de la práctica 7.

AVR
Atmel Studio 7
Atmel Studio 7
Programador XCU
Programador XCU

Descripción

En esta práctica se implementa una comunicación serial UART a 9600 baudios, usando los módulos X-UNO o X-NANO. Desde una terminal serial que proporciona el software XIDE, se envían y reciben datos por medio del módulo XCU. Para encender el LED incluido en los módulos X-UNO o X-NANO se enviá el número 1, si se desea apagar se enviá el número 0. Para recibir el estado del botón BOOT, se envía el signo "?", si el botón está presionado recibe el número 1, en caso contrario se recibe el número 0.


Materiales:

1 x Módulo X-UNOX-NANO. Comprar

1 x Módulo Programador XCU.  Comprar

1 x Módulo X-AVR. Comprar

1 x Push Button. Comprar

1 x Juego de cables Dupont. Comprar

1 x Protoboard de 830 puntos. Comprar

1 x Cable micro USB.

 

Software:

Windows 7 o posterior.

Atmel Studio 7. Descarga

XIDE v1.0 Descarga

 

Procedimiento

1. Realiza las conexiones que se muestran en la siguiente imagen para X-UNO o X-NANO y conéctalo a la computadora.

2. Al final de esta práctica, en el apartado de "Descargas", puedes encontrar los archivos del código fuente, o bien copiarlo del apartado de "Código" que se encuentra más abajo.

3. Si descargaste el archivo del paso 2, omite este paso. Si copiaste el código, ejecuta Atmel Studio 7, pega el código en un nuevo proyecto y realiza la compilación. 

4. Programa el código que descargaste o compilaste en el módulo. En el siguiente link encontrarás un manual para compilar tu proyecto en Atmel Studio 7. En el siguiente link encontrarás un manual de Atmel Studio para programador XCU.

5. Al terminar de programar, el módulo se reiniciará y el programa de esta práctica se ejecutará.

6. En el apartado de "Diagrama esquemático", que se encuentra a continuación, selecciona tu módulo, realiza las conexiones que se muestran en la imagen y conéctalo a la computadora.

7. Abre el Software XIDE v1.0, selecciona la herramienta de Terminal Serial para lograr la comunicación con el módulo y enviar los caracteres de esta práctica. En el siguiente link encontrarás el manual de usuario para el Software XIDE v1.0.

 

Diagrama esquemático

 

X-UNO
X-NANO
X-UNO

X-NANO

 

Código 

Código

/**

AUTOR: MICROSIDE TECHNOLOGY S.A. DE C.V.

FECHA: JUNIO 2019

*/

/**************************************************************************

Implementar comunicación serial para enviar un comando simple para encender y

apagar un LED incluido en la tarjeta X-NANO, y un segundo comando para

preguntar el estado de un botón.

**************************************************************************/

/**************************************************************************

Fuses:

HIGH.BOOTRST : desmarcar

LOW.SUT_CKSEL : deleccionar> Ex.Crystal Osc.8.0- Mhz;Start-up time PWRDWN/RESET: 1K CK/14 CK + 65 ms

EXTXOSC_8MHZ_XX_1KCK_14CK_65MS

**************************************************************************/

#include <stdio.h>

#include <avr/io.h>

#define F_CPU 16000000

#include <util/delay.h>

#define USART_BAUDRATE 9600

#define UBRR_VALUE (((F_CPU / (USART_BAUDRATE *16UL))) – 1)

#define BOTON (PINB & (1<<PB0))

#define LED_HIGH (PORTB |=(1<<PORTB5))

#define LED_LOW (PORTB &= ~(1<<PORTB5))

char CaracterT,CaracterR;

void SisInit(void)

{                                                                                                                                         

    DDRB| = (1<<DDB5);                                                                                                       // DDB5 = salida

    DDRB& = ~ (1<<DDB0);                                                                                                  // DDB0 = entrada

    PORTB| = (1<<PORTB0);                                                                                                // pull – up activa para PB0

    MCUCR& = ~ (1<<PUD);                                                                                                  // se habilita el pullup

}

void USART0Init(void)

{

    UBRR0H = (uint8_t) (UBRR_VALUE>>8);                                                                      // baudios de retardo altos

    UBRR0L = (uint8_t) UBRR_VALUE;                                                                                // baudios de retardo bajos

    UCSR0C| = (1<<UCSZ01)| (1<<UCSZ00);                                                                    // establese un marco de 8 bits, no paridad

    UCSR0B| = (1<<RXEN0)| (1<<TXEN0);                                                                        //habilita la trasnmision y recepción

}

int USART_Trasmit(char u8Data)

{

    while ( ! (UCSR0A& (1<<UDRE0)));

    UDR0 = u8Data;                                                                                                              // transmite el dato

    return 0;

}

unsigned char UART_Receive(void)

{

    while ( ! (UCSR0A& (1<<RXC0)));                                                                                    //recibe el dato

    return UDR0;                                                                                                                      //retorna el dato

}

int main(void)

{

    USART0Init ();                                                                                                                         //inicializa USART0

    SisInit ();                                                                                                                                //inicializa SisInit

    while (1)

    {

        CaracterR = UART_Receive ();

        USART_Trasmit (CaracterT) ;

        if (CaracterR == ‘1’)

        {

                LED_HIGH;                                                                                                                    //enciende el LED

        }

        else if (CaracterR == ‘0’)

        {

              LED_LOW;                                                                                                                         //apaga el LED

        }

        else if (CaracterR == ‘?’)

        {

                if (BOTON)

                {

                USART_Trasmit (‘0’);                                                                                                        //envía el dato “0”

                }

                else

                {

                        USART_Trasmit (‘1’);                                                                                                 //envía el dato “1”

                }

           }

      }

}

 

Descargas

Software XIDE v1.0

Descarga el software XIDE v1.0 

Práctica 7-AVR-XCU

Descargar código en Atmel Studio 7 de la práctica 7.

 

Fecha

julio 15, 2019

Categoría

Prácticas CCS-AS7

EnglishSpanish