Haz una pregunta
  Foros de Electrónica » Diseño digital » Microcontroladores y sistemas embebidos
Foros Registrarse ¿Olvidaste tu contraseña?

Temas similares

19/10/2009 #1


interrupciones con pic18f4550 y USB-CDC
hola que tal mi problema parece ser sencillo pero yo simplemente no logro hallar el problema, soy nuevo en esto del C para pics, entonces estoy usando el compilador C CCS y lo que he hecho es generar un CDC por medio del USB del PIC 18f4550 y asi crear un COM ( puerto serial ) esta parte me ha funcionado sin ningun problema, cuando conecto mi dispositivo este funciona correctamente, pero el problema es: mi programa debe ir adquiriendo datos por el usb, y por medio de de las interrupciones externas del pic, INT, INT1 INT2 (RB0, RB1, RB2) hacer cierto manejo con mis variables pero cuando agrego el codigo de las interrupciones al programa la computadora ya no reconoce el dispositivo, lo quito y de nuevo funciona sin problemas, mi codigo es este: si alguien tubiera una idea de que estoy haciendo mal se los agradeceria!!!!!!!!!!!

Código:
con interrupciones:                   ( no reconoce windows el dispositivo)

         #include <18F4550.h>
         #fuses HSPLL,NOWDT,NOPROTECT,NOLVP,NODEBUG,USBDIV,PLL2,CPUDIV1,VREGEN
         #use delay(clock=48000000)
         #include <usb_cdc.h>
         #include <usb_desc_cdc.h>
         
                         int a = 0;
                          int b = 0;
                          int cont1 = 0;
                          char datausb;
         
         #int_EXT
         void  EXT_isr(void) 
         {
         // Codigo de interrupcion 0
         }
         
         #int_EXT1
         void  EXT1_isr(void) 
         {
          // Codigo de interrupcion 1         
         }
         
         #int_EXT2
         void  EXT2_isr(void) 
         {
         // Codigo de interrupcion 2         
         }
                        
         void main() {
            usb_cdc_init();
            usb_init();                      
            set_tris_B(0x0F);                        
            Output_B(0x00); 
     
                        ext_int_edge(0,L_TO_H);
                        ext_int_edge(1,L_TO_H);
                        ext_int_edge(2,L_TO_H);
         
            while (!usb_cdc_connected()) {}
            while (true)
            {
                        enable_interrupts(INT_EXT);
                        enable_interrupts(INT_EXT1);
                        enable_interrupts(INT_EXT2);
                        enable_interrupts(GLOBAL);
                        
               usb_task();
               if(usb_enumerated())         
               {
                  if (usb_cdc_kbhit())          
                  { 
                     datausb = usb_cdc_getc();
            
                    //       Codigo de Manejo de Variables      
                    
                  }
               }
            }
         }


sin interrupciones:                             (si reconoce windows el dispositivo)

         #include <18F4550.h>
         #fuses HSPLL,NOWDT,NOPROTECT,NOLVP,NODEBUG,USBDIV,PLL2,CPUDIV1,VREGEN
         #use delay(clock=48000000)
         #include <usb_cdc.h>
         #include <usb_desc_cdc.h>
         
                          int a = 0;
                          int b = 0;
                          int cont1 = 0;
                          char datausb;

         void main() {
            usb_cdc_init();
            usb_init();                     
         
            set_tris_B(0x0F);                       
            Output_B(0x00); 
          
            while (!usb_cdc_connected()) {}
            while (true)
            {
                       
               usb_task();
               if(usb_enumerated())         
               {
                  if (usb_cdc_kbhit())          
                  { 
                      datausb = usb_cdc_getc();
                     
                      //     Codigo de programa      
                    
                  }
               }
            }
         }
gracias
29/09/2010 #2

Avatar de thamaphyr

Respuesta: interrupciones con pic18f4550 y USB-CDC
Mariomarst, como lograste que te reconociera el pc tu micro?, he intentado bajarme muchos drivers y ninguno me funciona, no se si sea porque toca programar el pic configurandole algo en especial pero no he logrado ni pasar esa parte.
Saludos.
A la solucion a tu problema, aqui hay un post que tiene muchos ejemplos no se si lo has mirado.
Control de dispositivos a través del módulo USB del PIC18F2550
Respuesta
¿Tienes una mejor respuesta a este tema? ¿Quieres hacerle una pregunta a nuestra comunidad y sus expertos? Registrate

Foros de Electrónica » Diseño digital » Microcontroladores y sistemas embebidos

Powered by vBulletin® Version 3.8.4
Copyright ©2000 - 2014, Jelsoft Enterprises Ltd.
Search Engine Optimization by vBSEO ©2011, Crawlability, Inc.