Hola a todos, decirles que siguan adelante y que pues yo aprendi mucho en este foro,
pero ahora me tope con una deficultad, estoy trabajando en un proyecto donde necesito
enviar desde la PC 10 bytes en uno y almacenarlos en el PIC 18f4550 en variables
basandome en el ejemplo de RedPIC de EL USB DESENCADENADO : BULK USB Transferencia bidireccional masiva de información
el problema esta en el PIC que no se si recibe aca les dejo el pequeño programa
estoy trabajando con el compilador CCS_PCWHD_v4.065 y el proteus 7.2SP6
Hechenme una mano porfa que ya no se que hacer
///////////////////////////////////////////////////////////////////////////////////////////////////
#include <18F4550.h>
#fuses HSPLL,NOWDT,NOPROTECT,NOLVP,NODEBUG,USBDIV,PLL5,CPUDIV1,VREGEN
#use delay(clock=48000000)
#use rs232(baud=9600, xmit=PIN_C6, rcv=PIN_C7)
#define USB_HID_DEVICE FALSE // deshabilitamos el uso de las directivas HID
#define USB_EP1_TX_ENABLE USB_ENABLE_BULK // turn on EP1(EndPoint1) for IN bulk/interrupt transfers
#define USB_EP1_RX_ENABLE USB_ENABLE_BULK // turn on EP1(EndPoint1) for OUT bulk/interrupt transfers
#define USB_EP1_TX_SIZE 32 // size to allocate for the tx endpoint 1 buffer
#define USB_EP1_RX_SIZE 32 // size to allocate for the rx endpoint 1 buffer
///////////////////////////////////////////////////////////////////////////////////////////////////
#include <pic18_usb.h> // Microchip PIC18Fxx5x Hardware layer for CCS's PIC USB driver
#include ".\include\rr2_USB_Monitor.h" // Configuración del USB y los descriptores para este dispositivo
#include <usb.c> // handles usb setup tokens and get descriptor reports
#define RecCommand recbuf[0]
///////////////////////////////////////////////////////////////////////////////////////////////////
// Defines y otras zarandajas
#byte PORTC =0xF82
#define LED_VERDE PIN_E0
#define LED_AMARILLO PIN_E1
#define LED_ROJO PIN_E2
#define Enciende Output_High
#define Apaga Output_Low
#define Conmuta Output_Toggle
#define COMMAND_LED 1
#define COMMAND_FIRMWARE 2
#define COMMAND_STRING_RS232 3
///////////////////////////////////////////////////////////////////////////////////////////////////
// RAM, RAM, RAM
///////////////////////////////////////////////////////////////////////////////////////////////////
int V1;
int V2;
int V3;
int V4;
int V5;
int V6;
int V7;
int V8;
int V9;
int V10;
const int8 Lenbuf = 10;
char Version[] = "v.1.0";
int i;
int PM1,PM2;
int c=0;
int8 recbuf[Lenbuf];
int8 sndbuf[Lenbuf];
///////////////////////////////////////////////////////////////////////////////////////////////////
// M A I N
///////////////////////////////////////////////////////////////////////////////////////////////////
void main(void)
{
SET_TRIS_C(0x00);
delay_ms(500);
Apaga(LED_VERDE);
Apaga(LED_AMARILLO);
Enciende(LED_ROJO);
delay_ms(100);
usb_init();
usb_task();
usb_wait_for_enumeration();
enable_interrupts(global);
while (TRUE)
{
if(usb_enumerated())
{
Apaga(LED_ROJO);
Enciende(LED_VERDE);
if (usb_kbhit(1))
{
usb_get_packet(1, recbuf, Lenbuf);
/*
que o como debo agarrar los datos "recibidos"??
hasta donde yo se, es que usb_kbhit(1) retorna TRUE si recibe un byte
ahora, si usb_kbhit(10) db. retornar TRUE si recibe 10 byte osea hasta q llegue el 10 byte
recbuf,apunta al primer byte recibido?
si es asi, => es correcto lo sgte.?
V1=recbuf[0];
V2=recbuf[1];
V3=recbuf[2];
.
.
.
V10=recbuf[9];
y asi tendria los 10 bytes que envie guardados en el PIC??
*/
}
}
else{
Apaga(LED_VERDE);
Enciende(LED_ROJO);
}
}
}