Haz una pregunta
  Foros de Electrónica » Diseño digital » Microcontroladores y sistemas embebidos
Foros Registrarse ¿Olvidaste tu contraseña?

Temas similares

29/03/2010 #861


Respuesta: Control de dispositivos a través del módulo USB del PIC18F2550
hola moyano, tengo una consulta que hacerte , ademas de felicitarte por el tema.

Modifique el programa del osciloscopio que viene de ejemplo en el CCS(bulk transfer), le quite todo lo que iba de más, y puse solamente que tuviera dos leds, uno para señalar el encencido y otro para mostrar cuando haya sido numerado por la pc. La cuestión es que tuve que instalar el driver especifico para esa aplicación, pero por que no me lo reconoce con el mpusbapi?

Lo unico que se me ocurre es que en el archivo de descriptors tiene un pid diferente al de microchip(me imagino que debe ser por que este programa esta diseñado para una board de desarrollador que vende CCS).

Si quisiera acceder al pic desde el pc con un programa de visual usando la libreria mpusbapi.dll le tengo que cambiar el PID al archivo de descriptor?.

una ultima cuestion el proteus me dice que no esta enumerado, pero hasta sale como un dispositivo con controlador sin problemas en el windows 7.
01/04/2010 #862

Avatar de Moyano Jonathan

Respuesta: Control de dispositivos a través del módulo USB del PIC18F2550
Me parece que es el problema más acertado ...a mi me pasó una vez lo mismo y lo solucione de esa manera..cambiandole los PID y VID...ahora otra cosa que no sucede muy a menudo pero que puede pasar es el tema de que el polling de datos no sea el adecuado...eso también lo tenés definido en los descriptores..yo uso en comunicaciones HID 10ms de polling y con Bulk 25ms

mantenilsa: En una de esas el compilador no está reañizando las temporizaciones correctamente...probá un programa de prender y apagar un puerto del PIC y probá diferentes tiempos con un osciloscopio ...o si tenés el PICKIT2 probá los tiempos con el analizador lógico del mismo.

DAV: Veo tu problema y después te notifico...

george.manson.69: Me mataste la verdad no tengo idea...tendría que ver si el USB no lo utiliza para gestionar la comunicación ...

Adler: Hola como estás....mirá el tema no radica en configurarlos , de eso se encarga el driver USB....lo que vos tenés que hacer es declarar cuantos buffers para la comunicación vas a utilizar ....y luego vas declarando las variables usadas.. te pongo un ejemplo...

Código:
Definimos los buffers utilzados...
DEFINE USB_HID_DEVICE TRUE // Vamos a utilizar el protocolo HID.

#define USB_EP1_TX_ENABLE USB_ENABLE_INTERRUPT 
#define USB_EP1_TX_SIZE 8 // Definición del tamaño del buffer de salida.

#define USB_EP1_RX_ENABLE USB_ENABLE_INTERRUPT 
#define USB_EP1_RX_SIZE 8 // Definición del tamaño del buffer de entrada.


luego las varibles...

int8 data[8]; // Variable de 8 bytes que guardan el valor del EP1_RX.

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, 8);
                        if(data[0] == 1) { // Si el paquete contiene el dato "1"
                         output_toggle(PIN_B1); // Cambiamos el valor del PIN_B1.
                        } 
                     }                                
                  }
   }

}



01/04/2010 #863


Respuesta: Control de dispositivos a través del módulo USB del PIC18F2550
otra cuestion...

no puedo llamar a la mpusbapi.dll desde el visual basic 2010... al menos no declarandola como lo hace j1m en vb6.0, lo digo por que uso windows 7; si no tendre que aprender c#...
02/04/2010 #864


Respuesta: Control de dispositivos a través del módulo USB del PIC18F2550
Hola moyano gracias por tu respuesta, pero mi problema continua lo que me sucede es que ahunque ponga mas buffer para usar como puse en el ejemplo para ver usando en VB esto para enviarlos:
Código:
    Public Sub WriteSomeData()
        hidWriteEx(VendorID, ProductID, BufferOut(0))
    End Sub

    Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
        BufferOut(2) = 2
        Call WriteSomeData()
    End Sub

    Private Sub Button2_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button2.Click
        BufferOut(1) = 1
        Call WriteSomeData()
    End Sub

    Private Sub Button3_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button3.Click
        BufferOut(3) = 3
        Call WriteSomeData()
    End Sub

    Private Sub Button4_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button4.Click
        BufferOut(4) = 4
        Call WriteSomeData()
    End Sub
cuando envio datos iguales o diferentes por diferentes buffers, el programa del Uc me reconoce todos los datos de todos los buffers como si fueran enviados por el buffer 1 en el caso de este ejemplo me prende y apaga siempre el B0 ahunque envie datos por buffers apartes, y ahunque sean datos diferentes no me discrimina cual es un 1 o un 3
esa es mi duda que me tiene frenado para poder hacer mas cosas, de antemano 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
02/04/2010 #865

Avatar de Moyano Jonathan

Respuesta: Control de dispositivos a través del módulo USB del PIC18F2550
ya lo voy a ver y te digo ...me parece que tus problemas van de mano del código del PIC.
02/04/2010 #866

Avatar de george.manson.69

Respuesta: Control de dispositivos a través del módulo USB del PIC18F2550
Moyano paracere que al simular el timer0 como interrupcion por desbordamiento, y conectado a la compu via USB, funciona bien no interrupe la conexion...por ahora lo tengo simulado y si me da los 2 hz de parpadeo y no afecta la comunicacion usb...
solo faltaria simular el CCP1 Y 2 como generadores de frecuencia cuadrada...
02/04/2010 #867

Avatar de Moyano Jonathan

Respuesta: Control de dispositivos a través del módulo USB del PIC18F2550
haa buenisimo entonces...yo le estoy dando unas reparaciones a mi placa entrenadora por que se me quemo un regulador por malas conexiones...y despues me pongo de nuevo con los código de USB.
03/04/2010 #868


Respuesta: Control de dispositivos a través del módulo USB del PIC18F2550
Thanks all for this topic. ( I can't speak Spain , I'm vietnamese). I made and success.
03/04/2010 #869


Respuesta: Control de dispositivos a través del módulo USB del PIC18F2550
Hola amigo Moyano Jonathan!!.
Me fasinaron tus ejemplos!!!. Ya probe el de mandar una a y x jalan muy bien con un pic 18f4550.
Ya me quedo claro lo del firmware del pic. Donde me encuentro atorado es con el visual basic 6. Entiendo mas o menos el codigo fuente pero no se como implementarlo ya en el ambiente de bisual basic es decir como pongo los botones y se los asigno en el codigo fuente de programa. Ya que no estoy muy familiariazado con el visual ._.!!!

Podrias hecharme una mano con esto del visual basic??? o si alguien sabe tambien seria de gran ayuda....!

Saludos y gracias por compartir estos valiosos ejemplos de aplcacion usb pc. ;D
03/04/2010 #870


Respuesta: Control de dispositivos a través del módulo USB del PIC18F2550
Saludos.

Ando haciendo un proyecto donde un PIC18F2550 debe simular que es un raton standar y conectarse por USB. Ya utilicé los ejemplos del CCS que trae de un mouse usb generico, sin embargo la PC me detecta que el dispositivo usb tuvo un mal funcionamiento.

Puse tu código en el PIC y si funciona. le traté de modificar los descriptores del mouse utilizando estas 3 referencias:
http://www.usbmadesimple.co.uk/ums_ms_desc_conf.htm
http://www.keil.com/forum/docs/thread15398.asp
www.usb.org/developers/devclass_docs/HID1_11.pdf

Ya probé modificar los descriptores del usb_desc_cdec, también use el archivo de CCS usb_desc_mouse y no me funciona. Yu que tienes mucha mas experiencia en el campo, como puedo hacer para que mi PC detecte a mi pic como si fuera un ratón USB genérico.

Gracias y espero me puedas ayudar ya que ando bastante desesperado con esto.
Gracias... atte: Omar
03/04/2010 #871

Avatar de FRYCK

Respuesta: Control de dispositivos a través del módulo USB del PIC18F2550
hola para los que nos interesa esto de los usb y hemos tenido problemas con xp, vista o windows 7 hay un programita para Automatiza la Configuración de los datos para enumerar un PIC 18Fxx5x realizado por palitroquez y comentado en el siguiente foro http://www.todopic.com.ar/foros/index.php?topic=20047.0 dejo el linck de migsantiago en donde hay un buen ejemplo http://www.migsantiago.com/index.php...id=9&Itemid=10
03/04/2010 #872


Respuesta: Control de dispositivos a través del módulo USB del PIC18F2550
hola a todos y gracias por los manuales y las dudas resueltas, tengo una duda loq ue pasa es que necesito transmitir unos datos por usb hacia el computador, y quisiera saber por cual de deberia de hacerlo o es mejor hacerlo, simulando el puerto serial o por la que llaman bulk?.... de antemano gracias
05/04/2010 #873

Avatar de Meta

Respuesta: Control de dispositivos a través del módulo USB del PIC18F2550
Mejor esperar el gran manual del año.
06/04/2010 #874

Avatar de atricio

Respuesta: Control de dispositivos a través del módulo USB del PIC18F2550
alguien por favor me puede facilitar los manuales que todos hacen referencia por favor y el libro del amigo moyano por favor
07/04/2010 #875

Avatar de Meta

Respuesta: Control de dispositivos a través del módulo USB del PIC18F2550
No te preocupes que ya lo harán y muy completito.
08/04/2010 #876


Respuesta: Control de dispositivos a través del módulo USB del PIC18F2550
Hola, a ver si os ha pasado a alguien algo similar:
Estoy haciendo un proyecto de fin de carrera con un PIC 18f2550, con un cristal 20MHZ con PLL5. El proyecto es bastante grande, tiene dispositivos USB a los que acede con bastante frecuencia, usa el RS232 para controlar movil por comandos AT, y bueno, el problema es q cuando empieza a crecer el codigo, y conecto el USB al ordenador me sale que "no se reconoce el dispositivo USB", si quito algunos delay_ms (que necesito para que funcioene como tiene q ser los requisitos), la cosa empieza otra vez a funcionar. Lo asocio a que el USB_TASK(), o alguna de estas funciones tiene q ejecutarse con cierta frecuencia para que el ordenador sepa que sigue conectado... porque sino no entiendo donde esta el problema. Lo uso como CDC y tengo un bucle asi(resumiendo):

while(true){
usb_task(); // configura el USB
if(usb_cdc_connected()){ // Si está conectado entonces....
if (usb_enumerated()){ // aquí se enumera el dispositivo por el host y despúes sale.
if(usb_cdc_kbhit()){ //en espera de nuevo(s) caracter(es) en el buffer.
//Comprobamos si queremos hacer lectura de datos o escritura
}
}
//Aki el resto de codigo, que por lo menos tarda en ejecutarse 3 segundos(por los delays, y otras instruciones que hay)
}

Alguna idea de como solucionarlo??
Muchas gracias de antemano.

PD.: Muy grande tu trabajo moyano con este post
08/04/2010 #877

Avatar de Moyano Jonathan

Respuesta: Control de dispositivos a través del módulo USB del PIC18F2550
ahora estoy en revisión de mi manual para hacerlo un poco más completo ....pero traducir del inglés al español es algo bastante complejo.
08/04/2010 #878

Avatar de Meta

Respuesta: Control de dispositivos a través del módulo USB del PIC18F2550
Por fin leer lo que estoy leyendo.

Suerte y ánimo.
14/04/2010 #879

Avatar de FRYCK

Respuesta: Control de dispositivos a través del módulo USB del PIC18F2550
Bien por ti moyano lo estamos esperando sigue con tu entusiasmo
saludos Fran
15/04/2010 #880

Avatar de Moyano Jonathan

Respuesta: Control de dispositivos a través del módulo USB del PIC18F2550
ahora va a tener la teoría completa sobre la estructura interna del controlador USB del micro asi también como una breve pero funcional explicación sobre como hacer un programa de control por USB en ASM.
¿Tienes una mejor respuesta a este tema? ¿Quieres hacerle una pregunta a nuestra comunidad y sus expertos? Registrate

Foros de Electrónica » Diseño digital » Microcontroladores y sistemas embebidos

Powered by vBulletin® Version 3.8.4
Copyright ©2000 - 2017, Jelsoft Enterprises Ltd.
Search Engine Optimization by vBSEO ©2011, Crawlability, Inc.