Autor Tema: Comunicacion placa-pc 18f2550  (Leído 1528 veces)

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

Desconectado Ferrugio

  • PIC10
  • *
  • Mensajes: 2
Comunicacion placa-pc 18f2550
« en: 01 de Junio de 2008, 13:45:49 »
Primero saludar a todos los usuarios del foro ya que es mi primer mensaje.

Y ahora el problema: Estoy haciendo un proyecto "sencillo" de una placa por puerto USB y usando el pic 18f2550. El proposito es que con un programa de Pc pueda encender unos leds y que tocando unos interruptores en la placa el Pc lo detecte.

La parte de los leds ya la tengo controlada pero la de los interruptores se me esta resistiendo. He programado tanto el programa del pc como el pic para que pueda detectar esos interruptores pero hay algo que esta mal porque no lo detecta, a ciencia cierta no se si sera el pic o el programa... Yo creo que el problema esta en el pic pero no se como hacerlo...

Desconectado firepic

  • Colaborador
  • PIC24H
  • *****
  • Mensajes: 1130
    • JC Servicios
Re: Comunicacion placa-pc 18f2550
« Respuesta #1 en: 01 de Junio de 2008, 15:03:48 »
Saludos Ferrugio, bienvenido al foro!  :-/
Pues para empezar sería bueno que colocaras el esquemático de lo que estás haciendo y el código que tienes en el pic, de esa forma se te puede ayudar mejor. Y felicitaciones por entrar en el mundo de los microcontroladores pic!  :P
Nos leemos!  :mrgreen:
"Por la presunción solo se ocasiona una lucha, pero con los que consultan juntos hay sabiduría" (Proverbios 13:10).
Visita Mi Sitio Web

Desconectado Ferrugio

  • PIC10
  • *
  • Mensajes: 2
Re: Comunicacion placa-pc 18f2550
« Respuesta #2 en: 02 de Junio de 2008, 06:07:54 »
Pues tambien es verdad, aqui va lo del pic:

Creo que el problema está en que el código donde estan los interruptores va dentro de usb_kbhit y debería ir fuera pero no se si es tan simple o es que el codigo esta mal.

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


#define USB_HID_DEVICE     FALSE             
#define USB_EP1_TX_ENABLE  USB_ENABLE_BULK   
#define USB_EP1_RX_ENABLE  USB_ENABLE_BULK   
#define USB_EP1_TX_SIZE    2                 
#define USB_EP1_RX_SIZE    33               
 


//#define USB_CON_SENSE_PIN PIN_B2 


#include <pic18_usb.h>     
#include <PruebaUSB.h>     
#include <usb.c>           



#define LEDR0   PIN_B4
#define LEDR1   PIN_B5
#define LEDR2   PIN_B6
#define LEDR3   PIN_B7
#define LED_ON  output_high
#define LED_OFF output_low

#define  SW1      PIN_B0        //Estos son los interruptores
#define  SW2      PIN_B1         
#define  SW3      PIN_B2         
#define  SW4      PIN_B3         

#define modo      recibe[0]
#define param1    recibe[1]
#define param2    recibe[2]
#define resultado envia[0]
#define swst      envia[1]

void main(void) {

   int8 recibe[33];                 
   int8 envia[2];
   
   LED_OFF(LEDR1);                   
   LED_ON(LEDR0);
   LED_OFF(LEDR2);
   LED_OFF(LEDR3);

   usb_init();                     

   usb_task();                     
   usb_wait_for_enumeration();     

   LED_OFF(LEDR0);
   LED_ON(LEDR1);                   
   LED_OFF(LEDR2);
   LED_OFF(LEDR3);                   

   while (TRUE)
   {
      if(usb_enumerated())         
      {
         if (usb_kbhit(1))         
         {
            usb_get_packet(1, recibe, 3);

            if (!input(SW1))
            {
               swst = 1;
               usb_put_packet(1, envia, 2, USB_DTS_TOGGLE);
            }
            if (!input(SW2))
            {
               swst = 2;
               usb_put_packet(1, envia, 2, USB_DTS_TOGGLE);
            }
            if (!input(SW3))
            {
               swst = 3;
               usb_put_packet(1, envia, 2, USB_DTS_TOGGLE);
            }
            if (!input(SW4))
            {
               swst = 4;
               usb_put_packet(1, envia, 2, USB_DTS_TOGGLE);
            }

            if (modo == 0) // Modo_Led
            {
               if (param1 == 0) {LED_OFF(LEDR0); LED_OFF(LEDR1); LED_OFF(LEDR2); LED_OFF(LEDR3);}
               if (param1 == 1) {LED_ON(LEDR0); LED_OFF(LEDR1); LED_OFF(LEDR2); LED_OFF(LEDR3);}
               if (param1 == 2) {LED_OFF(LEDR0); LED_ON(LEDR1); LED_OFF(LEDR2); LED_OFF(LEDR3);}
               if (param1 == 3) {LED_ON(LEDR0); LED_ON(LEDR1); LED_OFF(LEDR2); LED_OFF(LEDR3);}
               if (param1 == 4) {LED_OFF(LEDR0); LED_OFF(LEDR1); LED_ON(LEDR2); LED_OFF(LEDR3);}
               if (param1 == 5) {LED_ON(LEDR0); LED_OFF(LEDR1); LED_ON(LEDR2); LED_OFF(LEDR3);}
               if (param1 == 6) {LED_OFF(LEDR0); LED_ON(LEDR1); LED_ON(LEDR2); LED_OFF(LEDR3);}
               if (param1 == 7) {LED_ON(LEDR0); LED_ON(LEDR1); LED_ON(LEDR2); LED_OFF(LEDR3);}
               if (param1 == 8) {LED_OFF(LEDR0); LED_OFF(LEDR1); LED_OFF(LEDR2); LED_ON(LEDR3);}
               if (param1 == 9) {LED_ON(LEDR0); LED_OFF(LEDR1); LED_OFF(LEDR2); LED_ON(LEDR3);}
            }
         }       
      }
   }
}


 

anything