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

hola amigos muchas gracias por responder la verdad ando en un mar de lios con esto xq los pruebo grabo el firmware en el micro y lo conecto al pc me lo reconoce pero de ahi no pasa no hace nada de nada que sera que esta pasando ??? a por sierto amigo moyano uso windows XP
 
Mirá para poder ayudarte un poco mejor , posteá fotos del montaje + un esquema del mismo + el código exacto que estés usando + una foto del administrador de dispositivos
Ahora si .....para brindarte ayuda tenés que ponerme el montaje real no en simulador por que si todas las pruebas las estás haciendo con simulador no sirve mis ejemplos tienen muchos problemas con el isis de proteus.
 
hola moyano, oye una pregunta, pudiste saber cual era mi error en el codigo de C para el tema de los buffers que postie hace un tiempo, ojalaa puedas responderme o acordarte :LOL: si debe ser un problema muy estupido pero no logro detectarlo, gracias
 
No pude enviar PM por la cantidad de mensajes, me faltan :LOL: y el mail nose donde esta asique te pongo el codigo de nuevo aca nomas, el problema era que no me transmiten buffers diferentes al primero, y no discriminaban los valores ahunque enviara un 3 por buffer 4 me reconocia un 1 en el buffer 1, ojalaa puedas ayudarme, solo quiero enviar valores diferentes por buffer diferentes, gracias

Código:
#include	<18F2550.h>
#fuses NOMCLR,XTPLL,NOWDT,NOPROTECT,NOLVP,NODEBUG,USBDIV,PLL1,CPUDIV1,VREGEN,NOPBADEN
#use	delay(clock=48000000)

#BYTE		PORTB=0x06

#DEFINE	USB_HID_DEVICE	TRUE

#define      USB_EP1_TX_ENABLE USB_ENABLE_INTERRUPT 
#define      USB_EP1_TX_SIZE 8

#define      USB_EP1_RX_ENABLE USB_ENABLE_INTERRUPT 
#define      USB_EP1_RX_SIZE 8

#define      USB_EP2_TX_ENABLE USB_ENABLE_INTERRUPT 
#define      USB_EP2_TX_SIZE 8

#define	USB_EP2_RX_ENABLE USB_ENABLE_INTERRUPT
#define	USB_EP2_RX_SIZE 8

#define      USB_EP3_TX_ENABLE USB_ENABLE_INTERRUPT 
#define      USB_EP3_TX_SIZE 8

#define	USB_EP3_RX_ENABLE USB_ENABLE_INTERRUPT
#define	USB_EP3_RX_SIZE 8

#define      USB_EP4_TX_ENABLE USB_ENABLE_INTERRUPT 
#define      USB_EP4_TX_SIZE 8

#define	USB_EP4_RX_ENABLE USB_ENABLE_INTERRUPT
#define	USB_EP4_RX_SIZE 8

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

int8	data_buffer1[8];
int8	data_buffer2[8];
int8	data_buffer3[8];
int8	data_buffer4[8];



void	main()
{

	set_tris_b(0x00);
	output_b(0x00);
	usb_init_cs();
	while(1)
	{
		usb_task();



////////////////////////////////////////////////////////////////

		while(!usb_enumerated())	{
			output_high(PIN_A0);
			output_low(PIN_A1);
									}
			output_high(PIN_A1);
			output_low(PIN_A0);

				if(usb_kbhit(1))
				{
				usb_get_packet(2, data_buffer2 ,8);

				usb_get_packet(1, data_buffer1 ,8);

				usb_get_packet(3, data_buffer3 ,8);

				usb_get_packet(4, data_buffer4 ,8);


			if(data_buffer1[0]==1)	{
				output_toggle(PIN_B0);
							}
			if(data_buffer2[0]==2)	{
				output_toggle(PIN_B1);
							}
			if(data_buffer3[0]==3)	{
				output_toggle(PIN_B2);
							}
			if(data_buffer4[0]==4)	{
				output_toggle(PIN_B3);
							}

				}//fin kbhit
	}//fin while
}//fin main
 
Al parecer no tenías muchos errores en el programa , pero si estábas ocupando RAM del USB al cuete....si vas a recibir 8 datos diferentes...por 8 canales diferentes...no hace falta que uses 8 endpoints..diferentes. Lo que hice es definir un arreglo de 8 bytes para obtener los 8 datos de forma independiente.
Otra cosa es que estábas poniendo mal la condición de enumeración...

Código:
while(|usb_enumerated())
ahi lo que haces es decirle....si no está enumerado....por lo tanto si el host no lo enumera es imposible que tomés datos. :cool:

Te paso en un adjunto el código compilado para que lo pruebes en tu aplicación, en caso de que no te funcione poné tus preguntas nuevamente.

PD: Lo próbé en proteus y funciona bien !
 

Adjuntos

  • Programa correjido.rar
    7 KB · Visitas: 267
Última edición:
Hola de nuevo, discuelpen las molestias pero me surgio un problema con el controlador del primer ejemplo....
Baje el programa completo. Introdusco el archivo h en el pic que se encuentra en la carpeta y funciona mey bien, pero cuando compilo los archivos existentes en la misma carpeta la maquina no reconoce el dispositivo que puedo hacer?

Gracias
 
Hola de nuevo, discuelpen las molestias pero me surgio un problema con el controlador del primer ejemplo....
Baje el programa completo. Introdusco el archivo h en el pic que se encuentra en la carpeta y funciona mey bien, pero cuando compilo los archivos existentes en la misma carpeta la maquina no reconoce el dispositivo que puedo hacer?

Gracias

Hola alaroa compile el ejemplo que dejo Moyano Jonathan en su ultimo mensaje y funciono de una el ccs lo compila sin ningún problema revisa tu compilador y revisa que de pronto sea por una versión muy antigua ¿que versión de ccs utilizas? ¿es una versión de prueba? puede ser por eso algunos de estos casos o de mas detalles de que te entrega el compilador
 
De antemano fryck_08 te agradezco por responder.

El problema fue en el primer programa colocado en este blog, si puedo compilarlo y no tengo ningún problema... el problema se genera cuando programo el pic y lo conecto en la computadora, me dice que el diver que estoy conectado no sirve...


Gracias
 
El sistema es win xp, cuando programo el pic con el h que se encuentra en el rar no tengo ningún problema, la maquina me detecta el driver... el problema se genera cuando compilo y el h creado lo coloco en el pic.

Pense que era que existía algún problema en algún parámetro, pero ya los revise todos, y cree de nuevo el driver y pasa el mismo problema

Gracias!!
 
fryck_08 Gracias por tu ayuda, ya encontré el problema era solamente que en la librería usb_cdc.h el archivo llama a la librería usb_desc_cdc.h pero no el que creas, sino el que se encuentra dentro de las librerías del programador y no me había dado cuenta...

¡¡¡Gracias!!!
 
excelete trabajo Moyano Jonathan, con el libro 18f2550 y usb!!, espero aprender mucho del tema, sera que alguien tiene informacion sobre la programacion de la pc para usar el puerto usb en basic si me la podria proporcionar les agradecere.
 
Hola a todos.

Gracias a todos, COSMICO reinstale el driver de proteus, pero nada me ocurre lo mismo.
Para centranos, el ejemplo que estoy probando es el ejercicio_n2_127.
Para documentar más mi problema os muestro la configuración del administrador de dispositivos, así como un esquema en proteus que refleja lo que estoy probando en la protoboard.

Lo estoy probando en SO. Xp.

Saludos.
 

Adjuntos

  • Dibujo1.JPG
    Dibujo1.JPG
    135.9 KB · Visitas: 83
  • Dibujo3.JPG
    Dibujo3.JPG
    30.5 KB · Visitas: 56
  • Dibujo4.JPG
    Dibujo4.JPG
    25.9 KB · Visitas: 52
  • Dibujo5.JPG
    Dibujo5.JPG
    52.4 KB · Visitas: 58
Es raro amigo pkdos.
Estas guardando en la misma carpeta donde estan todas las librerias y driver la simulacioin, si no, prueba asi; a ver que pasa
Mira..............

Revisare las posibles fallas por las cuales no funciona en tu
pc y estaremos en contacto..SIMULACION.JPG

Bueno veo que el dispositivo es detectado, pues se crea el com virtual
ahora, despues de que conectas o das a simular; te sale el asistente de instalacion de harware nuevo encontrado??:unsure:

Cuando salga el asistente de harware nuevo encontrado dale instalar automaticamente
y el buscara los drive para el dispositivoproceso instalacion.JPG
 
Última edición:
Atrás
Arriba