archivo de encabezado y configuración de registro para la implementación de MSD usb usando pic18f4550

0

Quiero implementar la clase de dispositivo de almacenamiento masivo USB así como la clase de dispositivo de interfaz humana, el controlador que estoy usando es el PIC18F4550.

ya que soy muy nuevo en microcontroladores, ¿alguien puede guiarme para esto?

Estos son algunos de los detalles de mi tarea, he usado el código dado, lo modifiqué un poco y ejecuté la simulación, solo pude detectar mi dispositivo USB conectado con el controlador. Estoy utilizando Proteus 8.0 y MicroC 6.0 para fines de simulación.

Todavía no he incluido ningún archivo de encabezado (.h), tengo conocimiento de cómo incluir USBdsc.c, es decir, el archivo de descriptores, no sé todavía, qué más incluir.

//---------------------------------------------------------------------------------------------------
unsigned char readbuff[64] absolute 0x500;   // Buffers should be in USB RAM, please consult datasheet
unsigned char writebuff[64] absolute 0x540;
//---------------------------------------------------------------------------------------------------
void interrupt()
{
   USB_Interrupt_Proc();                   // USB servicing is done inside the interrupt
}


void lcd(char d[64])
{
 char l[63];
 int a=0;
 for(a=0;a<63;a++)
 {
  l[a]=d[a+1];
 }
 lcd_cmd(_lcd_clear);
 lcd_out_cp(l);
}
//////////-------------------------------------------------------------------
int strToInt(char *string)
{
 int output = 0, i = 1, stringLength = strlen(string), temp = 0, numberLength = 0,j;
 char tempCh;

 for(j=0;j<stringLength;j++)
 {
  tempCh = string[j];
  temp = tempCh - 48;
  if (temp >= 0 && temp <= 9)
  {
   numberLength++;
  }
 }

 for(j=0;j<stringLength;j++)
 {
  tempCh = string[j];
  temp = tempCh - 48;
  if (temp >= 0 && temp <= 9)
  {
   output += temp * pow(10, (numberLength-i));
   i++;
  }
 }

 return output;
}
 // pwm function////---------------------
void pwm(char d[64])
{
 char l[3];
 int a=0;
 for(a=0;a<3;a++)
 {
  l[a]=d[a+1];
  }
 for(a=0;a<5;a++)
 {
  portc=~portc;
  vdelay_ms(strtoint(l)*10);
 }
  //pwm1_set_duty(l);
//  pwm1_start();
}
 //---------------------------------------------------------------------------------------------------


void main(void)
{
 int a;
 //-----------------------------------------------variable area--------------------------------------
 trisb=0; // port as output
 portb=0xff;
 trisc=0;
 portc=0xff;
 ADCON1 |= 0x0F;                         // Configure all ports with analog function as digital
 CMCON  |= 7;
 lcd_init();
 lcd_cmd(_lcd_cursor_off);
HID_Enable(readbuff,writebuff);      // Enable HID communication
pwm1_init(5000);// start pwn module and  set on 5 KHz

while(1)
 {
  if(!(hid_read()==0))
  {
    /*usb_read_filter(readbuff);*/
    /*lcd_cmd(_lcd_clear);
    lcd_out_cp(readbuff);*/
    if(readbuff[0]=='0')
    {
     lcd(readbuff);
    }
    else if(readbuff[0]=='1')
    {
         pwm(readbuff);
    }

    while(!hid_write(readbuff,64));
  }// if Data read  endz

 }  // while endz
}
    
pregunta student8661

1 respuesta

2

Microchip tiene disponibles sus Bibliotecas de Microchip para Aplicaciones (MLA) , que incluye código de ejemplo para PIC16, PIC18, PIC24 y dsPIC33 (el MLA solía incluir también el PIC32, pero ahora tiene una biblioteca diferente llamada MPLAB Harmony). La biblioteca MLA incluye código para gráficos, criptografía, archivos de E / S y USB.

Tengo una versión anterior en mi escritorio, pero al revisar los directorios veo que incluye varias versiones de USB HID: personalizado, digitalizador, joystick, teclado, mouse y UPS. Existe un código para, entre otros, los modelos PIC18F46J50, PIC18F47J53 y PIC18F87J50. Si la última versión no incluye el PIC18F4550, probablemente pueda adaptar uno de los otros. Para la aplicación HID personalizada, la biblioteca también incluye código Visual C ++ (edición 2005 Express) para el lado de Windows.

Por lo tanto, obtendrá mucho más que solo los archivos de encabezado, etc., tendrá un código fuente para aplicaciones completas y ejecutables que puede adaptar para su propio uso.

El MLA también incluye un código de dispositivo de almacenamiento masivo para flash interno, registrador de datos de tarjeta SD y aplicaciones de lector de tarjeta SD. Se incluye el código para los mismos tres PIC18s.

Tengo una placa Explorer 16 junto con los accesorios de la tarjeta USB y SD, y las versiones PIC24 / PIC32 del firmware de almacenamiento masivo compilado y ejecutado "de inmediato" sin ninguna modificación. Entonces pude fusionar su código en el código que ya se ejecuta en mi PCB personalizado con muy poco esfuerzo.

    
respondido por el tcrosley

Lea otras preguntas en las etiquetas