Autor Tema: Problemas con el USB en modo CDC  (Leído 4899 veces)

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

Desconectado Medusa

  • PIC18
  • ****
  • Mensajes: 252
Problemas con el USB en modo CDC
« en: 29 de Enero de 2008, 21:45:54 »
Hola,

Estoy tratando de implementar una intefase usando el USB en modo CDC, este es mi codigo:

Código: [Seleccionar]
#include <18f2550.h>
#fuses HSPLL,NOWDT,NOPROTECT,NOLVP,NODEBUG,USBDIV,PLL5,CPUDIV1,VREGEN
#use delay(clock=20000000)
#use rs232(baud=19200, xmit=PIN_C6, rcv=PIN_C7)

#define SELECTOR   PIN_A0


#define LEDV       PIN_B6
#define LEDR       PIN_B7
#define LED_ON     output_high
#define LED_OFF    output_low

#include <usb_cdc.h>

char c=0x00;
char rec=0x00;

void menu (void);

////******************************************************************************************
//#build(reset=0x800)
// #build(interrupt=0x808)
// #org 0x0000,0x07ff
// void bootloader() {
// #asm
// nop
// #endasm
//} // Reserve space for the bootloader

//******************************************************************************************
void menu (void){

   printf(usb_cdc_putc,"\r\n");
   printf(usb_cdc_putc,"Menu:\r\n");
   printf(usb_cdc_putc,"  [R] Leer DATO\r\n");
   printf(usb_cdc_putc,"  [C] Configurar Canal\r\n");
   printf(usb_cdc_putc,"  [X] Salir\r\n\n");
   printf(usb_cdc_putc,"\r\n");
   printf(usb_cdc_putc,"\r\n");
   printf(usb_cdc_putc,"Comando: ");

   rec=toupper(usb_cdc_getc());
}     
//********************************************************************************************
void main() {

   LED_OFF(LEDV);                   
   LED_ON(LEDR);
   
   usb_cdc_init();
   usb_init();                         
   
   while (TRUE) {
   
   usb_task();

//   if(usb_enumerated()){               
         if (input (SELECTOR)){
       LED_ON(LEDR);                   
          LED_OFF(LEDV);
       printf(usb_cdc_putc,"Prendio el Led ROJO \r\n");
       Delay_ms(300);
      }
       else{
       LED_OFF(LEDR);                   
          LED_ON(LEDV);
       printf(usb_cdc_putc,"Prendio el Led VERDE \r\n"); 
       Delay_ms(300);
       menu();
 
     // }
      }
    }
 }


Cuando deshabilito ( //rec=toupper(usb_cdc_getc());) todo funciona OK y puedo comu7nicarme con la PC a traves del Hiperterminal, pero cuando lo habilito esto no logro comunicarme a taves del hiperterminal, alguien podria decirme cual es el problema?

Desconectado PalitroqueZ

  • Moderadores
  • DsPIC33
  • *****
  • Mensajes: 5474
    • Electrónica Didacta
Re: Problemas con el USB en modo CDC
« Respuesta #1 en: 30 de Enero de 2008, 19:46:54 »
Hola medusa

pregunta tonta:

si te funciona bien ¿para que lo quieres habilitar?



La propiedad privada es la mayor garantía de libertad.
Friedrich August von Hayek

Desconectado Medusa

  • PIC18
  • ****
  • Mensajes: 252
Re: Problemas con el USB en modo CDC
« Respuesta #2 en: 30 de Enero de 2008, 20:11:02 »
Hola PalitroqueZ,

El codigo que he colgado es solamente una parte de mi proyecto y es donde he detectado que se produce este problema.

Desconectado RedPic

  • Administrador
  • DsPIC33
  • *******
  • Mensajes: 5544
    • Picmania by Redraven
Re: Problemas con el USB en modo CDC
« Respuesta #3 en: 30 de Enero de 2008, 20:19:25 »
Si lo haces en dos pasos ¿también falla?

rec=usb_cdc_getc();
rec=toupper(rec);
Contra la estupidez los propios dioses luchan en vano. Schiller
Mi Güeb : Picmania

Desconectado Medusa

  • PIC18
  • ****
  • Mensajes: 252
Re: Problemas con el USB en modo CDC
« Respuesta #4 en: 30 de Enero de 2008, 21:46:53 »
hola RedPic, el problema persiste y es necesario que resetear la mi PC para que nuevamente el Com Virtual este habilitado.

Desconectado J1M

  • Moderadores
  • PIC24H
  • *****
  • Mensajes: 1960
Re: Problemas con el USB en modo CDC
« Respuesta #5 en: 30 de Enero de 2008, 21:51:39 »
hola medusa, posiblemente tengas algo raro dentro de la función 'toupper' y haga que se cuelgue el PIC...

saludos

Desconectado RedPic

  • Administrador
  • DsPIC33
  • *******
  • Mensajes: 5544
    • Picmania by Redraven
Re: Problemas con el USB en modo CDC
« Respuesta #6 en: 31 de Enero de 2008, 04:43:17 »
Eso mismo te iba a decir, quita el toupper() y trabaja con minúsculas a ver que pasa.
Contra la estupidez los propios dioses luchan en vano. Schiller
Mi Güeb : Picmania

Desconectado Medusa

  • PIC18
  • ****
  • Mensajes: 252
Re: Problemas con el USB en modo CDC
« Respuesta #7 en: 31 de Enero de 2008, 12:17:48 »
Hola, he quitado "toupper" y estoy trabajando solos con munusculas y el problema es el mismo.

 :-/ en el codigo que he colgado  esta sentecia //   if(usb_enumerated()){  esta comentada, pero no es asi debe de estar habilitada y aun asi sigue el problema, tienen alguna sugerencia... :?




Desconectado RedPic

  • Administrador
  • DsPIC33
  • *******
  • Mensajes: 5544
    • Picmania by Redraven
Re: Problemas con el USB en modo CDC
« Respuesta #8 en: 31 de Enero de 2008, 12:23:39 »
Medusa, te pongo la secuencia completa del main() que yo uso para el CDC y que me funciona correctamente. ¿Podrías probarla con tu código a ver si solucionamos algo?

Código: C#
  1. main(){
  2.  
  3. ...
  4.   usb_cdc_init();
  5.   usb_init();
  6.   while(!usb_cdc_connected()) {}
  7.   do{
  8.     usb_task();
  9.     if (usb_enumerated()) {
  10.        ...
  11.        Miprograma
  12.        ...
  13.     }
  14.   }while (TRUE);
Contra la estupidez los propios dioses luchan en vano. Schiller
Mi Güeb : Picmania

Desconectado Medusa

  • PIC18
  • ****
  • Mensajes: 252
Re: Problemas con el USB en modo CDC
« Respuesta #9 en: 31 de Enero de 2008, 21:32:00 »
Hola, el problema persiste...

Desconectado RedPic

  • Administrador
  • DsPIC33
  • *******
  • Mensajes: 5544
    • Picmania by Redraven
Re: Problemas con el USB en modo CDC
« Respuesta #10 en: 01 de Febrero de 2008, 04:32:32 »
Este fin de semana te voy a preparar un ejemplito mínimo que haga algo, lo programo sobre un 18F2550 y lo pruebo, te mando el .c y el .hex y lo pruebas. Si te falla vamos a empezar a sospechar del compilador o del hardware ¿Ok?

P.D.: ¿Que versión del CCS C usas? Por que a mí la 2.245 me dio problemas y tuve que bajar a 2.242 para solucionarlo.
Contra la estupidez los propios dioses luchan en vano. Schiller
Mi Güeb : Picmania

Desconectado Nocturno

  • Administrador
  • DsPIC33
  • *******
  • Mensajes: 18286
    • MicroPIC
Re: Problemas con el USB en modo CDC
« Respuesta #11 en: 01 de Febrero de 2008, 09:10:59 »
Te has confundido al teclear Diego, es la 3.242.

Desconectado c4_esp_VR

  • Colaborador
  • PIC24F
  • *****
  • Mensajes: 735
    • www.muchotrasto.com
Re: Problemas con el USB en modo CDC
« Respuesta #12 en: 01 de Febrero de 2008, 09:52:49 »
Prueba con esto:

Código: [Seleccionar]
#include <18F2550.h>
#fuses HSPLL,NOWDT,NOPROTECT,NOLVP,NODEBUG,USBDIV,PLL5,CPUDIV1,VREGEN
#use delay(clock=48000000)

#include <usb_cdc.h>
#include <usb_desc_cdc.h>

void main() {

usb_cdc_init();
usb_init(); //inicializamos el USB

while (!usb_cdc_connected()) {}
while (true)
{
usb_task();
if(usb_enumerated())
{
usb_cdc_putc(0x41);
}
}
}

Utiliza este código, deberías de estar recibiendo en el pc siempre una A mayuscula.

¿¿¿¿Por cierto de que frecuencia es tu reloj externo????

Espero que te sirva.

Un saludete.

Desconectado Medusa

  • PIC18
  • ****
  • Mensajes: 252
Re: Problemas con el USB en modo CDC
« Respuesta #13 en: 01 de Febrero de 2008, 12:03:27 »
Hola, la version que tengo es la 4.057

Desconectado Nocturno

  • Administrador
  • DsPIC33
  • *******
  • Mensajes: 18286
    • MicroPIC
Re: Problemas con el USB en modo CDC
« Respuesta #14 en: 01 de Febrero de 2008, 12:38:33 »
Yo tenía esa versión y salí huyendo de ella despavorido cuando veía que mis programas dejaban de funcionar bien. La 3.249 me va como la seda.


 

anything