Práctica 22 – USB CDC

INTRODUCCIÓN

 

En esta práctica se implementa una comunicación USB configurada como CDC (Comunications Devices Class) emulando un puerto serial UART, mediante comandos se controla dos LEDs, se obtiene una lectura del ADC de un voltaje variable y el estado lógico del push button integrado llamado BOOT. 

 

 

Selecciona la plataforma y entorno de programación.

 

 

PIC
PIC
PIC C Compiler
PIC C Compiler
Bootloader PIC18FX5K50
Bootloader PIC18FX5K50

Descripción

En esta práctica se realiza la conexión con el puerto USB (Universal Serial Bus) configurado en clase CDC (Comunications Devices Class) emulando un puerto serial, el cual enviá indicaciones para el encendido y apagado de un LED, también pregunta el estado de un push button usando los módulos X-TRAINER P8 o X-TRAINER P8 DIP40 o X-TRAINER P8 DIP28 con el PIC18F45K50 o PIC18F25K50. Para encender el LED se enviá el número 1, si se desea apagar se enviá el número 0. Para recibir el estado del push button "BOOT", se envía el signo "?", si está presionado recibe el número 1, en caso contrario se recibe el número 0.

 

Materiales:

1 x Módulo X-TRAINER P8, X-TRAINER P8 DIP40 o X-TRAINERP8 DIP28.  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. 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.

2. Al final de esta práctica, en el apartado de "Descargas", puedes encontrar los archivos del código fuente. Es necesario descargar el archivo ya que dentro, se encuentran las librerías necesarias para la correcta compilación, ademas se incluyen drivers para la adecuada detección del puerto COM .

3. Ejecuta PIC C Compiler, abre el archivo descargado y compila el programa. 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á.

 

Diagrama esquemático

 

X-TRAINER P8
X-TRAINER P8 DIP 40
X-TRAINER P8 DIP 28
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 USB (CDC) 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>                                               // Para X-TRAINERp8DIP28 cambiar por: #include <<18F45K50.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

//-------------------------------------------------------------------------------

#include <usb_cdc.h>

#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(void)
  {

      set_tris_a(0b11111111);

      set_tris_b(0b11111100);                                           //Configura puerto B (1= entrada 0= salida )

      usb_cdc_init();                                                        // Configuramos al puerto virtual.

      usb_init();                                                               // Inicializamos el stack USB.

      while(!usb_cdc_connected()) {}                                 // espera a detectar una transmisión de la PC (Set_Line_Coding)

 

       do{

               usb_task();

                if(usb_enumerated())

                    {

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

                      if (Caracter == '0')

                         {

                            output_low (LED); //Apaga el LED

                            printf(usb_cdc_putc,"LED apagado\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\n"); //Envía un 0 si el botón no está presionado

                         }

 

                     else if (Caracter == '1')

                         {

                            output_HIGH (LED); //Enciende el LED

                            printf(usb_cdc_putc,"LED encendido\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\n");   //Envía un 0 si el botón no está presionado

                         }

                      else if (Caracter == '?')

 

                        {


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

                                printf(usb_cdc_putc,"1\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\n"); //Envía un 0 si el botón no está presionado

                                }

 

                          else
                                 {

                                       printf(usb_cdc_putc,"0\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\n"); //Envía un 0 si el botón no está presionado

                                 }

 

                      }

              }
       }while (TRUE); // bucle infinito.
}

 

 

 

 

Descargas

Software XIDE v1.0

Descarga el software XIDE v1.0 

Práctica 22– PIC – Bootloader – CCS

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

Fecha

agosto 13, 2019

Categoría

Prácticas XIDE

× WhatsApp