Follow along with the video below to see how to install our site as a web app on your home screen.
Nota: This feature currently requires accessing the site using the built-in Safari browser.
#include <18F4550.h>
#device ADC=10
#fuses HSPLL,USBDIV,PLL5,PUT,CPUDIV1,VREGEN,NOWDT,NOPROTECT,NOLVP,NODEBUG,NOMCLR
#use delay(clock=48000000)
#define use_portb_lcd True
#define USB_HID_DEVICE TRUE
#define USB_EP1_TX_ENABLE USB_ENABLE_INTERRUPT //
#define USB_EP1_RX_ENABLE USB_ENABLE_INTERRUPT
#define USB_EP1_TX_SIZE 64 //
#define USB_EP1_RX_SIZE 64 //
#include <lcd.c>
#include <pic18_usb.h>
#include <USB_Konfigurasyon.h> //
#include <usb.c>
#define UcNokta1 1
#define Komut gelen_paket[0]
//
#define surum_no1 0x00 //
#define surum_no2 0x01
//Komutlar
#define LED_Kontrol 0x04
#define LCD_Yaz 0x05
void user_init(void)
{
set_tris_a(0xFF);
set_tris_b(0x00);
set_tris_d(0x00);
output_d(0);
setup_adc_ports(NO_ANALOGS );
lcd_init();
}
void LCD_MetinYaz(char yazi[])
{
unsigned char i;
unsigned char k=0;
char harf;
printf(lcd_putc,"\f");
++yazi;
i=*yazi++;
harf=*yazi++;
for(;i!=0;i--)
{
printf(lcd_putc,"%c",harf);
delay_us(5);
if(k==15)
printf(lcd_putc,"\n");
harf=*yazi++;
k++;
}
}
void main(void)
{
byte sayac=0;
byte gelen_paket[65]; //
byte gond_paket[65]; //
//Sistemi baþlat
user_init();
usb_init();
usb_task();
usb_wait_for_enumeration(); //
if(usb_enumerated())
printf(lcd_putc,"\USB HID \n VISUAL C++");//
for (;
{
while(usb_enumerated())
{
if (usb_kbhit(1)) //
{
usb_get_packet(UcNokta1, gelen_paket, 65); //
switch(Komut) //
{
case LED_Kontrol:
gond_paket[0]=0;
output_d(gelen_paket[1]);
printf(lcd_putc,"\f 0x%X",gelen_paket[1]);
sayac = 0x01;
Komut = 0;
break;
case LCD_Yaz:
LCD_MetinYaz(gelen_paket);
sayac = 0x00;
break;
default: ; break;
}
}
if(sayac!=0)
{
if(usb_put_packet(UcNokta1, gond_paket, 65, USB_DTS_TOGGLE))
{
sayac = 0;
Komut = 0;
}
}
}
}
}
saludos, me gustaria que me ayudaras a lograr funcionar un programa hecho en visual basic para puerto paralelo con el puerto usb con el pic 18f4550 .Es un proyecto ya viejito pero bueno de unos estudiantesMostrá tu problema para que te podamos ayudar.
Un saludo !
saludos, me gustaria que me ayudaras a lograr funcionar un programa hecho en visual basic para puerto paralelo con el puerto usb con el pic 18f4550 .Es un proyecto ya viejito pero bueno de unos estudiantes
hola moyano que tal, espero q me puedas ayudar, he revisado todo el contenido de usb en el foro, quisiera saber si tal ves tiene un programa hecho en visualbasi 6.0 para la comunicacion usb bulk usando api, tengo hecho uno en C# pero me baso desde ahi para poder hacer los modulos en basic 6.0 pero me salen errores a la final no encuentro nada jejeje... espero q me puedas ayudar, de ante mano agradesco la ayuda..
Muchisimas gracias meta voy a revisar tu código. A ver como es la nueva forma de programar de vb.net ya que nunca lo he utilizado al igual que visual c (sharp).
pd: Estoy preparando una explicación más detallada de lo que hacen las librerías de CDC (comunication device class) para que se le saque más provecho y ahora que estoy de vacaciones , le voy a meter mano a esto del USB. Tambíen estoy terminando con los toques finales al clon del pickit2 y a la placa de desarrollo para micros de 28 pines , que me parece que al final va estar enfocada más al PIC18F2550 que a otra cosa.
Te podrías guiar de mi manual para hacer tu aplicación. Lo descargas de la primera página del hilo.
Todavía no me pongo a experimentar con el puerto USB usando Bulk , además todas las pruebas las he hecho con C#. Más adelante quizás haga ejemplos en VB.net y C# con el protocolo Bulk, pero será luego de que termine el manual con HID.
Un saludo !
Hola a todos
Despues de una torticolis que me hizo desmayar del dolor , me puse las pilas para terminar un pequeño pero funcional ejemplo de comunicación bajo el protocolo HID.
El lenguaje que utilizé para la programación del PIC es el C de CCS. Este el código fuente.
Código:// Programa de prueba del protocolo HID (Human interface device). // Programa: Prende o apaga un led según reciba una señal desde el software del host. // Programador: Moyano Jonathan. // Fecha: 13/02/09 #include <18F2550.h> // Definición de registros internos del PIC18F2550. #fuses NOMCLR,XTPLL,NOWDT,NOPROTECT,NOLVP,NODEBUG,USBDIV,PLL1,CPUDIV1,VREGEN,NOPBADEN // NOMCLR: No vamos ha usar el PIN MCLR, el reset se hará por soft. // XTPLL: Vamos a usar un cristal de 4.00Mhz. // NOWDT: No vamos a usar el perro guardian. // NOPROTECT: Memoria no protejida contra lecturas. // NODEBUG: No utilizamos código para debugear. // NOLVP: No utilizamos el modo de programación con bajo voltaje. // USBDIV: signfica que el clock del usb se tomará del PLL/2 = 96Mhz/2 = 48Mhz. // PLL1: significa que el PLL prescaler no dividirá la frecuencia del cristal. para XT = 4Mhz. // CPUDIV1: El PLL postscaler decide la división en 2 de la frecuencia de salida del PLL de 96MHZ, si queremos 48MHZ, lo dejamos como está. // VREGEN: habilita el regulador de 3.3 volts que usa el módulo USB. // NOPBADEN: Deshabilitamos el módulo conversor ADC del puerto B. #use delay(clock=48000000) #DEFINE USB_HID_DEVICE TRUE // Vamos a utilizar el protocolo HID. #define USB_EP1_TX_ENABLE USB_ENABLE_INTERRUPT // Definición del tamaño del buffer de salida. #define USB_EP1_TX_SIZE 64 #define USB_EP1_RX_ENABLE USB_ENABLE_INTERRUPT // Definición del tamaño del buffer de entrada. #define USB_EP1_RX_SIZE 64 /*********************************************************************************************************/ // Definición de las librerías utilizadas. #include <pic18_usb.h> // Drivers's USB del PIC18F2550. #include <usb_desc_hid.h> // Descriptores USB. #include <usb.c> // Funciones del USB. /*********************************************************************************************************/ int8 data[64]; void main() { usb_init_cs(); // Iniciamos el puerto USB y salimos. while(1) { usb_task(); // Configuramos el puerto USB. if (usb_enumerated()) // Si el puerto es enumerado y configurado por el host.. { if (usb_kbhit(1)) // Si hay un paquete de datos en el buffer lo tomamos y guardamos en la variable data. { usb_get_packet(1, data, 64); if(data[0] == 1) { output_toggle(PIN_B0); } } } } }
El estudio del código fuente como de las librerías que son necesarias serán objeto de estudio más adelante cuando termine con el protocolo bulk transfer.
El programa del host fue escrito en Visual Basic 2005, ya que Visual C# lo tengo como objeto de estudio al igual que visual Basic 2008.
Cabe mencionar que la comunicación con HID es muy útil y rápida. Este tipo de comunicación no precisa driver ya que el driver en si es nativo de windows desde la versión Win 98se.
Porque el 1 que se envía desde el pc al pic se compara con la posición 0 del array data???
Lee el manual que está en la primera página...el capítulo del firmware para el PIC...y te vas a dar cuenta.Si quisiera encender mas leds como lo haria?? Saludos.
ya me voy a descargar el vb 2008 .net y te pregunto dudas.
pd: estoy haciendo un programa de control de 8 relés por puerto usb utilizando lo aprendido en los 3 ejemplos anteriores.