TODOPIC

Microcontroladores PIC => Lenguaje C para microcontroladores PIC => Mensaje iniciado por: scientist en 22 de Junio de 2010, 01:45:14

Título: USB con CCS y PIC18F13K50
Publicado por: scientist en 22 de Junio de 2010, 01:45:14
Hola amigos, alguien sabe si el compilador CCS logra compilar adecuadamente la pila USB?? lo que pasa es que lei que las nuevas versiones lo soportaban, pero que no era seguro que funcionaran, saludos
Título: Re: USB con CCS y PIC18F13K50
Publicado por: scientist en 29 de Junio de 2010, 01:46:42
Hola amigos, ya pude sacar una version sencilla, me compila bien, cuando lo simulo en proteus, me lo reconoce como USB cdc. pero cuando escribo la letra d, no me responde, estare haciendo algo mal?

Código: [Seleccionar]
#include <18f13k50.h>
#fuses HS,ECHIGH,NOBROWNOUT,PLLEN, USBDIV1,NOWDT,NOMCLR,NOLVP
#use delay(clock=48000000)

#include <usb_cdc.h>

char c;

void main (void){


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

   while (!usb_cdc_connected()) {}///cuando queramos que funcione, y no este conectado al USB

for(;;){
   usb_task();
    if (usb_enumerated()) {
    if (usb_cdc_kbhit())
      {
         c=usb_cdc_getc();
         if(c=='d'){
          printf(usb_cdc_putc,"hola mundo\r");
          c=0x00;
         
         }
      }
    }
 
}


}
Título: Re: USB con CCS y PIC18F13K50
Publicado por: scientist en 29 de Junio de 2010, 02:36:00
aqui hice otro ejemplo, copiandome del ejemplo que da ccs, pero aun asi, no doy con el proteus en la simulacion
Código: [Seleccionar]
#include <18f13k50.h>
#fuses HS,ECHIGH,NOBROWNOUT,PLLEN, USBDIV1,NOWDT,NOMCLR,NOLVP
#use delay(clock=48000000)
//#use rs232(UART1, baud=9600, errors)
#use rs232(baud=9600, xmit=PIN_B7,rcv=PIN_B5,PARITY=N)

#include <usb_cdc.h>
   #define LED1 PIN_C2
   #define LED2 PIN_C0
   #define LED3 PIN_C1
   #define LED_ON(x) output_low(x)
   #define LED_OFF(x) output_high(x)
 


char c;

void usb_debug_task(void)
{
   static int8 last_connected;
   static int8 last_enumerated;
   int8 new_connected;
   int8 new_enumerated;
   static int8 last_cdc;
   int8 new_cdc;

   new_connected=usb_attached();
   new_enumerated=usb_enumerated();
   new_cdc=usb_cdc_connected();

   if (new_enumerated)
      LED_ON(LED1);
   else
      LED_OFF(LED1);

   if (new_cdc)
      LED_ON(LED2);
   else
      LED_OFF(LED2);

   if (usb_cdc_carrier.dte_present)
      LED_ON(LED3);
   else
      LED_OFF(LED3);

   if (new_connected && !last_connected)
      printf("USB connected, waiting for enumaration...\r\n\n");
   if (!new_connected && last_connected)
      printf("USB disconnected, waiting for connection...\r\n\n");
   if (new_enumerated && !last_enumerated)
      printf("USB enumerated by PC/HOST\r\n\n");
   if (!new_enumerated && last_enumerated)
      printf("USB unenumerated by PC/HOST, waiting for enumeration...\r\n\n");
   if (new_cdc && !last_cdc)
      printf("Serial program initiated on USB<->UART COM Port\r\n\n");

   last_connected=new_connected;
   last_enumerated=new_enumerated;
   last_cdc=new_cdc;
}



void main (void){

   LED_OFF(LED1);
   LED_OFF(LED2);
   LED_OFF(LED3);

   printf("\r\n\nCCS CDC (Virtual RS232) Example\r\n");

   usb_init_cs();

   
for(;;){
   usb_task();
   usb_debug_task();
   
   if (kbhit())
      {
         c=getc();
         if (c=='\n') {usb_cdc_putc('\r'); usb_cdc_putc('\n');}
         else if (c=='\r') {usb_cdc_putc('\r'); usb_cdc_putc('\n');}
         else if (c=='!') {printf(usb_cdc_putc,"HELLO-WORLD-HELLO-WORLD-HELLO-WORLD-HELLO-WORLD-HELLO-WORLD-HELLO-WORLD-HELLO-WORLD-HELLO-WORLD-DONE");}
         else {usb_cdc_putc(c);}
      }
      if (usb_cdc_kbhit())
      {
         c=usb_cdc_getc();
         if (c=='\n') {putc('\r'); putc('\n');}
         else if (c=='\r') {putc('\r'); putc('\n');}
         else {putc(c);}
      }
 
}


}
Título: Re: USB con CCS y PIC18F13K50
Publicado por: MLO__ en 30 de Junio de 2010, 14:06:00
Hola.

Yo he usado el stack de USB del CCS pero para 18F2550 y si me funciona, pero para el micro que dices no lo he probado ...... recuerdo haber leido en el foro que habia un problema cuando se usaba otro 18F y era por el manejo de la RAM si mal no recuerdo ...

Saludos