Autor Tema: comunicacion USB bulk java - pic18F4550  (Leído 1680 veces)

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

Desconectado rodolfoandres

  • PIC10
  • *
  • Mensajes: 1
comunicacion USB bulk java - pic18F4550
« en: 18 de Abril de 2015, 23:24:45 »
tengo un problema al conectar el pic a la pc este sale como "No se reconoce el dispositivo USB" y no me deja instalar los driver.

probe el circuito en una laptop y esta reconoce el pic en los puertos USB 3.0 pero en los otros no, pero en la pc de escritorio no reconoce en ningun puerto.

cual puede ser el problema?

en ambas PCs tengo win 7 x64

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

#include<1wire.c>
#include<ds1820.c>

#define USB_HID_DEVICE     FALSE           //Desactiva el modo de transferencia HID
#define USB_EP1_TX_ENABLE  USB_ENABLE_BULK //transmision de datos en modo Bulk
#define USB_EP1_RX_ENABLE  USB_ENABLE_BULK //recepcion de datos en modo Bulk
#define USB_EP1_TX_SIZE    16              //Bytes a enviados
#define USB_EP1_RX_SIZE    16              //Bytes a recibidos

#include <pic18_usb.h>     //Microchip PIC18Fxx5x Hardware layer for CCS's PIC USB driver

//#include <header.h>
#include <PicUSB.h>
//#include "header.h"
#include <usb.c>           //handles usb setup tokens and get descriptor reports

//#include <flex_lcd.c>      //libreria para el manejo del display lcd por el puerto D

#define LED_ON   output_high // Función para encender el LED.
#define LED_OFF  output_low  // Función para apagar el LED.
#define ledV pin_c0
//#define ledR pin_c1
#define ventilador pin_a4
#define rele       pin_a5

//Asignacion de variables
const int8 Lenbuf = 16;
int8 recbuf[Lenbuf];

int cont = 0;

int16 Salida[8]={1,2,3,4,5,6,7,8};

signed int envio[16];

void Ejecutar_ADC (void)
{
         set_adc_channel(0);
         salida[0]=read_adc();
         set_adc_channel(1);
         salida[1]=read_adc();
         set_adc_channel(2);
         salida[2]=read_adc();
         set_adc_channel(3);
         salida[3]=read_adc(); 
}

void ejecutar_PWM (void){
   Switch(recbuf[1]){
      case 0:
      //225= 100% de ciclo de trabajo
      set_pwm1_duty(0);     
      break;
      .....
      .....
      case 10:
      //225= 100% de ciclo de trabajo
      set_pwm1_duty(225);
      break;
   }
   Switch(recbuf[2]){
      case 0:
      //225= 100% de ciclo de trabajo
      set_pwm2_duty(0);     
      break;
      .....
      .....
      case 10:
      //225= 100% de ciclo de trabajo
      set_pwm2_duty(225);
      break;
   } 
 
}

void main(void)
{

   setup_adc_ports(AN0_TO_AN3);
   setup_adc(ADC_CLOCK_INTERNAL);
   
   LED_OFF(LEDV);
   
   usb_init();                  //inicia la libreria para
   usb_task();                  //Monitorea el estado de la coneccion conectandose y desconectandose automaticamente
   usb_wait_for_enumeration();  //espera infinitamente hasta que el dispositivo fue enumerado

   LED_ON(LEDV);
 
   delay_ms(2000);
   LED_OFF(LEDV);
   
   //-- CONFIGURACION PARA EL PWM --\\
   setup_timer_2(T2_DIV_BY_1,224,1);
   setup_ccp1(CCP_PWM);
   setup_ccp2(CCP_PWM);
   //-----------------------------------------\\
     
  while (TRUE){
    if(usb_enumerated()){
      if (usb_kbhit(1)){
        usb_get_packet(1, recbuf, Lenbuf);
       
        if(recbuf[0]==50){
          output_high(PIN_B0);
          output_high(PIN_B1);
          output_high(PIN_B2);
          output_high(PIN_B3);
        }
        else if (recbuf[0]==51) {
          output_low(PIN_B0);
          output_low(PIN_B1);
          output_low(PIN_B2);
          output_low(PIN_B3);
        } 
        if(recbuf[0]==10){ output_high(PIN_B0); }
        else if (recbuf[0]==11){ output_low(PIN_B0); }
       
        if(recbuf[0]==20){ output_high(PIN_B1); }
        else if (recbuf[0]==21){ output_low(PIN_B1); }
       
        if(recbuf[0]==30){ output_high(PIN_B2); }
        else if (recbuf[0]==31){ output_low(PIN_B2); }
       
        if(recbuf[0]==40){ output_high(PIN_B3); }
        else if (recbuf[0]==41){ output_low(PIN_B3); }
       
        if(recbuf[0]==50){ output_high(PIN_B4); }
        else if (recbuf[0]==51){ output_low(PIN_B4); }
       
        if(recbuf[0]==60){ output_high(PIN_B5); }
        else if (recbuf[0]==61){ output_low(PIN_B5); }
       
        if(recbuf[0]==70){ output_high(PIN_B6); }
        else if (recbuf[0]==71){ output_low(PIN_B6); }
       
        if(recbuf[0]==80){ output_high(PIN_B7); }
        else if (recbuf[0]==81){ output_low(PIN_B7); }
       
        if(recbuf[3]==10){ output_high(PIN_a5); }
        else if (recbuf[3]==20){ output_low(PIN_A5); }
        if(recbuf[4]==10){ output_high(PIN_a4); }
        else if (recbuf[4]==20){ output_low(PIN_A4); }
       
         Ejecutar_ADC();
         ejecutar_PWM();
                 
         envio[0]= salida[0]/515;
         envio[1]= salida[1]/515;
         envio[2]= salida[2]/515;
         envio[3]= salida[3]/515;
         
         envio[4]= -125;
         envio[5]= 125;
         envio[6]=0;
         
         usb_put_packet(1,envio,Lenbuf,USB_DTS_TOGGLE);
         
      }    }     }
}



 

anything