Control de dispositivos a través del módulo USB del PIC18F45/2550

Hola muchachos, ahora logro enviar datos de la siguiente manera :aplauso::

Código:
private void button1_Click(object sender, EventArgs e)
        {
              
            byte[] test = new byte[EasyHID.BUFFER_OUT_SIZE];
            test[0] = 0;      // Report ID
            
            test[7] = 170;   // Dato aleatorio
            
            if (EasyHID.WriteEx(EasyHID.VENDOR_ID,EasyHID.PRODUCT_ID,test) == true)
            {
                label1.Text = "Dato enviado con boton.";
            }

He intentado enviar un ascii pero no me deja, es decir por ejemplo enviando "T" asi test[7]=Convert.ToByte("T"). De que manera puedo hacerlo?.

Tampoco puedo recibir datos, para lo cual uso el siguiente codigo :enfadado::

Código:
private void OnRead(UInt32 handle)
        {
            //int valor;
            byte[] test = new byte[EasyHID.BUFFER_IN_SIZE];
            if (EasyHID.ReadEx(EasyHID.VENDOR_ID,EasyHID.PRODUCT_ID,out test) == true)
            {
                
                label2.Text = Convert.ToString(test[1]);
                
            }

Otra mas y termino, el Buffer[0] desde el PIC lo leo en el Buffer[1] de c#?
Como puedo recibir los datos correctamente?, que hago mal?.

Gracias de antemano!;)

De nuevo yo ;), he podido recibir datos desde un evento button, este es el codigo:

Código:
private void button2_Click(object sender, EventArgs e)
        {
            byte[] test = new byte[EasyHID.BUFFER_IN_SIZE];
            if (EasyHID.ReadEx(EasyHID.VENDOR_ID, EasyHID.PRODUCT_ID, out test) == true)
            {
                label1.Text = "Dato recibido.";
                label2.Text = Convert.ToString(test[1]);
                
            }
        }

Un abrazo!:D
 
Última edición:
Interesante el aporte ByAxel, curioseare un poco en la pagina.

Hablando de otro tema pienso tambien que ya es hora de aprender .net y dejar de apoco el visual basic 6
asi que manos a la obra echare mano, de los ejemplos publicados
 
Buenas, vengo siguiendo este thread hace mucho tiempo pero este es mi primer consulta (creo).

Utilizando el 18F2550 en modo CDC y puerto COM virtual, ¿La velocidad limite es de 115200 bauds o 14 KBytes por segundo, como esta definida en los puerto serie reales?
 
Hola seaarg
Sin mucho respaldo teórico te puedo decir que asi es, Pensa que lo que ve la pc es un puerto serie ,Virtual pero puerto serie al fin y la maxima velocidad es de 115200 baudios, el protocolo esta hecho para trabajar a esas velocidades.
De todos modos espera que te contesten los que saben realmente que son Moyano o Meta
Corrijanme si me equivoco , saludos
 
Última edición:
En CDC los valores de velocidad de transmisión de datos generalmente nunca alcanzan los valores máximos debido principalmente de que se trata de una emulación .....que de por cierto hay que configurar los descriptores adecuadamente para que trabajen con dentro del rango que uno quiere....es decir..no es autobandig....otra cosa es que en CDC se pueden llegar a producir perdidas de paquetes a altas velocidades.
 
Ok, en mi proyecto tengo que transferir paquetes de 32KBytes (osciloscopio usb) lo mas rapido posible asi que CDC queda descartado. (Obtuve cerca de 1MByte por segundo por puerto paralelo en mi primera version)

Curioso que en el proyecto de hoffman utilizan CDC.
 
Hola Moyano
Tengo una cosulta, hice un datalogger que utiliza conoxion usb tipo cdc , utilizo un cristal de 20MHZ y configure el PLL = 5 para garantizar los 48Mhz para la comunicacion usb. El reloj del micro esta funcionando tambien a 48 Mhz.

El problema de usar la frecuencia del reloj del micro a 48Mhz radica en que no puedo poner al ADC a maxima velocidad de muestreo ya que tengo que hacer TOSC/64= 750000.

Estuve leyendo el data sheet del PIC 18f4550 y aparentemente se puede usar una distinta velocidad para el micro , lo ideal seria ponerlo a 40000000 (#use delay(clock=40000000) con lo cual el ADC me estaria trabajando a TOSC/32=1250000.

De hecho hice estos cambios y anda , pero la pregunta seria si es correcto lo que hice o hay que seguir algunas reglas para usar diferntes frecuencias (por ejemplo 48Mhz/2 o 48Mhz/3 etc.)

TE mando un abrazo , gracias de antemano
 
Buenas como están, necesito ayuda con algo recién estoy comenzando con el 18f4550 estoy intentado simular el primer programa que colocaron aquí en ISIS lo primero que hice fue colocar el reloj en 48 después instale el virtual USB cuando le doy inicio a la simulación me aparece un letrero en win7 de que no se encontró el controlador, cuando me voy a administración de dispositivos me aparece un hardware con el nombre "serial demo" pero no tiene controlador he leído lo que explican aquí pero la verdad no entiendo muy bien
 
Buenas como están, necesito ayuda con algo recién estoy comenzando con el 18f4550 estoy intentado simular el primer programa que colocaron aquí en ISIS lo primero que hice fue colocar el reloj en 48 después instale el virtual USB cuando le doy inicio a la simulación me aparece un letrero en win7 de que no se encontró el controlador, cuando me voy a administración de dispositivos me aparece un hardware con el nombre "serial demo" pero no tiene controlador he leído lo que explican aquí pero la verdad no entiendo muy bien

El emulador USB del proteus no se instala automáticamente, para eso vas al menú inicio y te diriges a "Todos los programas > Proteus 7 professional > Virtual USB", ahí le das clic a "Install USB Drivers"...dejas que termine de instalar y listo, con eso ya podrás simular el USB.

PD: Para casos prácticos no es muy necesario poner 48Mhz en el simulador (te va a consumir todo los recursos del CPU), basta con poner 4Mhz y verás que luego de un rato el USB virtual empezará a funcionar; claro con sus pro y contras.

Saludos.
 
El emulador USB del proteus no se instala automáticamente, para eso vas al menú inicio y te diriges a "Todos los programas > Proteus 7 professional > Virtual USB", ahí le das clic a "Install USB Drivers"...dejas que termine de instalar y listo, con eso ya podrás simular el USB.

PD: Para casos prácticos no es muy necesario poner 48Mhz en el simulador (te va a consumir todo los recursos del CPU), basta con poner 4Mhz y verás que luego de un rato el USB virtual empezará a funcionar; claro con sus pro y contras.

Saludos.

sigue sin funcionar, alguna otra idea :confused:
 
En caso de que no funcione en el proteus vas a tener que montar el circuito en el proto para desechar que sea problema del simulador. Ahora si ya no te funciona en el proto es tu programa que no funciona o algo que has conectado mal
saludos !
 
Hola meta ,
Veo que estas conectado y aprovecho para preguntarte una cosa.
en el manual que hiciste para c# 2008 (comunicación pic usb cdc), cuando configuras el com en particular pones BitsStop TWO, esto lo hiciste por alguna razon en particular por ejemplo la comunicación pic pc es mas estable o algo asi o solo por que en el driver del usb_cdc.h lo configuraste asi.

Saludos
 
Tengo un problema con mi pic 18f4550!! haga lo q haga por los pines C5 y C4 no funcionan!!! siempre se mantienen en 0v (si los configuro como entrada o salida)

el codigo es este!!

#include <18f4550.h>
#FUSES XT,NOPROTECT
#use delay(clock=4M)

#USE FAST_IO(c)

VOID MAIN(){

SET_TRIS_c(0b00000000);
DELAY_MS(100);
output_bit( PIN_C0, 1);
output_bit( PIN_C1, 1);
output_bit( PIN_C2, 1);

output_bit( PIN_C4, 1);
output_bit( PIN_C5, 1);

}

Espero su ayuda!!!
 
Tengo un problema con mi pic 18f4550!! haga lo q haga por los pines C5 y C4 no funcionan!!! siempre se mantienen en 0v (si los configuro como entrada o salida)

Los pines C4 y C5 solo funcionan como entradas digitales y no puede funcionar como salidas digitales, además estos pines no aparecen en el TRISC. Es porque estos pines son compartidos con el USB. Lee la páginas 117 y 118 (119 y 120 en el visor pdf) del datasheet donde describen las propiedades de estos pines.

Saludos.
 
Atrás
Arriba