TODOPIC
Microcontroladores PIC => Todo en microcontroladores PIC => Mensaje iniciado por: Ferrugio 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...
-
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:
-
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.
#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);}
}
}
}
}
}