Autor Tema: Ayuda con USB y PIC18F  (Leído 1544 veces)

0 Usuarios y 1 Visitante están viendo este tema.

Desconectado electroipod

  • PIC16
  • ***
  • Mensajes: 166
Ayuda con USB y PIC18F
« en: 18 de Octubre de 2015, 21:44:26 »
Llevo un mes buscando un proyecto funcional sobre como comunicar un pic18f a la pc mediante usb, alguno de ustedes habrá hecho un proyecto sencillo sobre mplabx y xc8 para la comunicación usb?, ya me baje las librerías MLA de microchip, necesito un empujon para saber como usarlas, alguien por ahí que tenga algún ejemplito, muchas gracias.

Desconectado KILLERJC

  • Colaborador
  • DsPIC33
  • *****
  • Mensajes: 8242
Re:Ayuda con USB y PIC18F
« Respuesta #1 en: 19 de Octubre de 2015, 00:03:34 »
Y no tenes ningun ejemplo ?, deberias comenzar por ahi, buscando uno. Microchip seguro que te trae alguno o hizo alguno para alguna placa.

Desconectado electroipod

  • PIC16
  • ***
  • Mensajes: 166
Re:Ayuda con USB y PIC18F
« Respuesta #2 en: 19 de Octubre de 2015, 10:27:39 »
Y no tenes ningun ejemplo ?, deberias comenzar por ahi, buscando uno. Microchip seguro que te trae alguno o hizo alguno para alguna placa.
De que me sirve poner ejemplos si ninguno funciona.

Desconectado KILLERJC

  • Colaborador
  • DsPIC33
  • *****
  • Mensajes: 8242
Re:Ayuda con USB y PIC18F
« Respuesta #3 en: 19 de Octubre de 2015, 18:36:53 »
Si funcionan los ejemplos, para algo son los ejemplos.
Solo tenes que adaptarlos a tu PIC, estudiarlos. Ver que funciones usan para hacerlos funcionar, etc.


Desconectado electroipod

  • PIC16
  • ***
  • Mensajes: 166
Re:Ayuda con USB y PIC18F
« Respuesta #4 en: 19 de Octubre de 2015, 20:29:51 »
Saludos, sigo peleando con la comunicación usb, dentro de la librería de michochip encontré una carpeta que decía cdc basic, compila bien, además usa el pic16f1459 pero no tengo la menor idea de que es lo que hace, dejo el proyecto completo para que alguien lo vea.

https://mega.nz/#!1l9GWIyb!HiGV00Mo-SX6liscNCrepNdIQhXIypP537q92IejOro

la ruta del proyecto es:

\USB Device - CDC - Basic\v2015_08_10\apps\usb\device\cdc_basic\firmware

« Última modificación: 19 de Octubre de 2015, 20:41:51 por electroipod »

Desconectado KILLERJC

  • Colaborador
  • DsPIC33
  • *****
  • Mensajes: 8242
Re:Ayuda con USB y PIC18F
« Respuesta #5 en: 20 de Octubre de 2015, 00:54:53 »
Para vos el CDC es como una UART. Podes ver como selecciona los valores en el codigo:

Código: C
  1. void APP_DeviceCDCBasicDemoInitialize()
  2. {
  3.     CDCInitEP();
  4.  
  5.    
  6.     line_coding.bCharFormat = 0;        // ???
  7.     line_coding.bDataBits = 8;        // bits de datos
  8.     line_coding.bParityType = 0;      //paridad
  9.     line_coding.dwDTERate = 9600;  //baudios
  10.  
  11.     buttonPressed = false;       // Un "antirebote" para el boton de hardware
  12. }

En tu PC deberias tener un archivo que le diga a windows que si se conecta cree el COM virtual justamente ese dispositivo ( que tenga su ID etc ), y luego te comunicas tal cual es un RS232 a tu dispositivo. Esto es el CDC

Lo que hace el main es inicalizar el stack, una ves full configurado el USB y conectado comienza a ejecutar la funcion del ejemplo, en el ejemplo se usa la interrupcion (definido en un .h de cada pic), pero tambien esta el caso por polling, Luego la interrupcion (manejada por el stack) llama a la funcion callback (USER_USB_CALLBACK_EVENT_HANDLER), que lo que hace es crear una maquina de estado, que a medida que se va conectando/ennumerando o segun el estado en que este el dispositivo va pasando a ocurrir lo que sea necesario. Una ves que esta enumerado procede a ejecutar el programa del USB que es la funcion: APP_DeviceCDCBasicDemoTasks() llamada desde el main y que no llega a ejecutarse a no ser que este correctamente conectado el USB.

El programa en si cuando se presiona un boton, que no se exactamente cual es por que no lo encontre en los .h (io_mapping.h estan definidos y dice algo de S2 ), que esta en el hardware se envia a la PC el mensaje "Button Pressed" , sino creo que cualquier otra comunicacion que se envie desde la PC hacia el PIC, el PIC procede a enviar el caracter ASCII + 1 de lo recibido. Asi, si envias "abcde" recibis "bcdef". Es todo lo que hace el ejemplo.

Ademas esta todo explicado en los comentarios.
« Última modificación: 20 de Octubre de 2015, 07:09:00 por KILLERJC »


 

anything