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

Temas similares

03/03/2011 #1501


Esquema Entrenadora Usb
Adjunto esquema en proteus para simular el codigo de los ejemplos.
Realizado con la version 7.4 sp3.
03/03/2011 #1502

Avatar de Moyano Jonathan

Buenisimo, en cuanto tenga tiempo reviso el esquema y subo las fotos del montaje terminado.

Muchas gracias por la colaboración mantenilsa !
03/03/2011 #1503


hola a todos

muchas gracias Moyano, efectivamente los cable de d+ y d- estaban invertidos, me di cuenta del error y ahora lo tengo andando a perfección gracias!!!
03/03/2011 #1504

Avatar de albermillan69

Como esta todo por alla MOYANO??? he estado un poco alejado del foro por razones universitarias! escribo en esta oportunidad solo para saber si si puede pasar un FLOAT via USB-CDC?? como lo haria?? es decir como hago para enviar datos REALES y mayores a 8 bit?? MIl Gracias...
03/03/2011 #1505

Avatar de Moyano Jonathan

Hola albermillan , como estás ?.

Mirá las funciones dentro del modo CDC son muy similares a las RS232 standar...por lo tanto tendrías que usar la función Printf() en conjunto con la función cdc_putc()....printf(cdc_putc, "valor float: %f", x) o algo similar...tendrías que investigar en los foros de CCS.

natouio menos mal que te funcionó !
09/03/2011 #1506


Alguien puede decirme en este LARGO tema donde puedo ubicar un ejemplo completo (codigo vb.net + codigo pic) sobre comunicacion usb para el 18f2550, ya que el unico codigo que consigo para pic es el que esta en la pagina 1 y los ejemplos que veo para descargar hechos en vb.net estan solos, sin el codigo para el micro... por favor cualqueir informacion la agradeceria...
14/03/2011 #1507


Hola a todos, ando un poco perdido desde el primer ejemplo jejeje, quisiera saber si me pueden colaborar para lograr poner a funcionar el ejemplo de los 8 leds controlados desde usb... o sea realizo el esquema que aparece en el dibujo, pongo a correr el programa??? cuando es llamado el programa vb, se que ando muy perdido, pero la verdad necesito como salir de esas dudas para seguir adelante en este tema tan interesante.
de antemano les agradezco su atencion
16/03/2011 #1508

Avatar de albermillan69

Gracias MOYANO!!

Ahora necesito una ayuda para modificar unas cosas en los driver del usb_cdc! aqui te mando una imagen de lo q necesito!!

necesito q diga algo personalizado y colocarle un icono!!

Gracias por tu gran ayuda!

OK ya solucione lo de la descripcion!!
Cambie el VID!! No usé el de Microchip
Ahora solo me falta colocarle el icono!! como hago??

Gracias...
Imágenes Adjuntas
Tipo de Archivo: gif Ayuda.gif (49,2 KB (Kilobytes), 29 visitas)
Tipo de Archivo: gif Ayuda2.gif (47,1 KB (Kilobytes), 26 visitas)
16/03/2011 #1509

Avatar de Moyano Jonathan

Lo de la solución que me decís la tenés modificando los descriptores USB del proyecto. En hojas más atras se muestra como.

PD: Para todos los que me pedían el manual de aplicaciones mediante USB, lo tendré en unos días más pero no será a gran detalle sino una explicación de como pueden crear sus propias aplicaciones. Lo mejor de todo es que termine de hacer las pruebas con el firmware - software por lo que ya está en funcionamiento la 1° aplicación ejemplo.

El proyecto consta de las siguientes especificaciones:

- Escrito en CCS para el PIC y Visual C# 2008 para la PC.
- Interfaz intuitiva.
- Control mediante HID e interrupciones.

- Los controles incluidos (probados):
- PWM.
- entradas digitales.
- entradas analógicas.
- salidas digitales.

Proximamente añadiré más controles pero será más adelante asi como también el pasaje a otros lenguajes de programación.

17/03/2011 #1510

Avatar de Meta

Que bien.

Por fin algo de USB, ejejjeje.

Esperando el manual honorable Moyano.
17/03/2011 #1511

Avatar de albermillan69

Moyano Jonathan dijo: Ver Mensaje
Lo de la solución que me decís la tenés modificando los descriptores USB del proyecto. En hojas más atras se muestra como.
Gracias!!! pero sin mentira alguna revise hoja por hoja y no lo encontre!!! solo necesito agregar un icono para q aparezca en la ventana de instalacion del driver y tratar de cambiar el q trea por defector para el puerto com virtual!!

Dame una manito plis!!!
17/03/2011 #1512

Avatar de albermillan69

UNA PREGUNTA ADICIONAL: El metodo usb Bulk tiene interrupciones?? es q ya de tanta informacion confundo los metodos!
Osea q el micro sepa cuando se le esta enviando un dato, sin necesidad de estar siempre leyendo el buffer!!

Bueno ya investigue!!! y en CDC no se puede cambiar el icono!! :(
17/03/2011 #1513

Avatar de EINNER C

hola a todos,,, muy bueno este post,,,

he tenido inconvenientes con una comunicacion cdc con lcd, no funciona si dejo la lcd, es decir si no inicio y muestro nada en la lcd funciona perfecto, cuando conecto reconoce y todo, y muestra en la interfaz, vb.net,, y realiza todo muy bn, pero si no mas pongo lcd_init(); ya se traba, esto en funcionamiento real, por que en simulacion funciona perfecto,,, la verdad no se uqe sera y he trabajado todo el dia en eso pero nada que encuentro el error,,, utilizo cristal d 4mhz,, los fuses los tengo asi

#fuses XTPLL,MCLR,NOWDT,NOPROTECT,NOLVP,NODEBUG,USBDIV,PL L1,CPUDIV1,VREGEN,NOPBADEN

y cambie la lcd al portb ,,,, pero nada la verdad no se que sera,,, yo recuerdo haber hecho hace un tiempo una comunicacion col lcd de tipo cdc y me funciono, pero la verdad es que el disco se dano y no logre recuperar nada, y la verdad no recuerdo que estare haciendo mal,, le agradesco de antemano su ayuda
18/03/2011 #1514

Avatar de albermillan69

EINNER C dijo: Ver Mensaje
hola a todos,,, muy bueno este post,,,

he tenido inconvenientes con una comunicacion cdc con lcd, no funciona si dejo la lcd, es decir si no inicio y muestro nada en la lcd funciona perfecto, cuando conecto reconoce y todo, y muestra en la interfaz, vb.net,, y realiza todo muy bn, pero si no mas pongo lcd_init(); ya se traba, esto en funcionamiento real, por que en simulacion funciona perfecto,,, la verdad no se uqe sera y he trabajado todo el dia en eso pero nada que encuentro el error,,, utilizo cristal d 4mhz,, los fuses los tengo asi

#fuses XTPLL,MCLR,NOWDT,NOPROTECT,NOLVP,NODEBUG,USBDIV,PL L1,CPUDIV1,VREGEN,NOPBADEN

y cambie la lcd al portb ,,,, pero nada la verdad no se que sera,,, yo recuerdo haber hecho hace un tiempo una comunicacion col lcd de tipo cdc y me funciono, pero la verdad es que el disco se dano y no logre recuperar nada, y la verdad no recuerdo que estare haciendo mal,, le agradesco de antemano su ayuda
Coloca tu codigo!! asi te podremos ayudar mejor!!
18/03/2011 #1515

Avatar de EINNER C

hola Gracias por responder, este es el codigo, esta comentado lo de la lcd y trabaja perfecto, pero si dejo lo de la lcd en simulacion sirve pero en real no,,,,,


#include <18F2550.h>
#DEVICE ADC=10
#fuses XTPLL,MCLR,NOWDT,NOPROTECT,NOLVP,NODEBUG,USBDIV,PL L1,CPUDIV1,VREGEN,NOPBADEN
#use delay(clock=48000000)

#define use_portb_lcd TRUE
//#define USB_CON_SENSE_PIN PIN_A4

#include <lcd.c>
#include "usb_cdc.h"

float luxsd;
long temper,luxs;
unsigned int temp,lux[2],recib,modo=0,hini=0,hini1=0,warning=0x0f;
signed int enc=0xff;

void usb_com()
{
if(usb_cdc_connected())
{
output_high(pin_c6);
output_low(pin_c7);
if (usb_enumerated())
{ warning=0;
if(usb_cdc_kbhit())
{
recib=usb_cdc_getc();
if(recib==0x31)
{
usb_cdc_putc(temp);
usb_cdc_putc(lux[0]);
usb_cdc_putc(lux[1]);
}
if(recib==0x32)
{
output_HIGH(pin_A3);
//lcd_putc("\fInt Luz");
//lcd_putc("\n Temp: C lux");
enc=1;
}
if(recib==0x33)
{
output_low(pin_A3);
lcd_putc("\f");
enc=0xff;
}
if(recib==0x34)
{
usb_cdc_putc(0x0f);
usb_cdc_putc(0x0f);
usb_cdc_putc(0x0f);
}
if(recib==0x35)
{
output_high(pin_c7);
output_low(pin_c6);
}
if(recib==0x36)
{
/*lcd_putc("\f Inicio de Insp");
lcd_putc("\nen Base de Datos");
delay_ms(200);
lcd_putc("\fInt Luz");
lcd_putc("\n Temp: C lux");*/
}
if(recib==0x37)
{
/*lcd_putc("\f Termino Insp");
lcd_putc("\nen Base de Datos");
delay_ms(2000);
lcd_putc("\fInt Luz");
lcd_putc("\n Temp: C lux");*/
}
}
}
}
}

void adquisicion()
{
set_adc_channel(0);
delay_us(10);
luxs = read_adc();
delay_us(60);
set_adc_channel(1);
delay_us(10);
temper = read_adc();
delay_us(60);

luxsd = (((0.00000000000006) * (luxs ^ 6)) - ((0.0000000002) * (luxs ^ 5)) + ((0.0000004) * (luxs ^ 4)) - ((0.0003) * (luxs ^ 3)) + ((0.119) * (luxs ^ 2)) - (26.409 * luxs) + 2632);
temp= temper*0.48828125;

lux[0]=make8(luxs,0);
lux[1]=make8(luxs,1);
/*
if (temp>=100)
{
lcd_gotoxy(7,2);
printf(lcd_putc,"%d",temp);
}

if (temp>=10)
{
lcd_gotoxy(7,2);
printf(lcd_putc," %d ",temp);
}
else
{
lcd_gotoxy(7,2);
printf(lcd_putc," %d ",temp);
}

//if (luxs>=100000)
// {lcd_gotoxy(9,1);
//printf(lcd_putc,"%ld",luxs);}

if (luxs>=10000)
{
lcd_gotoxy(9,1);
printf(lcd_putc," %f",luxsd);
}

if (luxs>=1000)
{
lcd_gotoxy(9,1);
printf(lcd_putc," %f ",luxsd);
}

if (luxs>=100)
{
lcd_gotoxy(9,1);
printf(lcd_putc," %f ",luxsd);
}

if (luxs>=10)
{
lcd_gotoxy(9,1);
printf(lcd_putc," %f ",luxsd);
}
else
{
lcd_gotoxy(9,1);
printf(lcd_putc," %f ",luxsd);
} */
}

void main()
{
set_tris_a(0x03);
setup_adc_ports(AN0_TO_AN1);
setup_adc(ADC_CLOCK_INTERNAL );

output_high(pin_c7);
output_low(pin_c6);
output_low(pin_A3);

/*lcd_init();//inicializamos el USB
lcd_putc("\fLuxometroDigital");
lcd_putc("\n Mesalud Ltda");*/

while(true)
{
if (input(pin_c0) == 1)
{

if (input(pin_c1) == 1)
{
if(warning==0 && hini1==1)
{
usb_cdc_putc(0xff);
usb_cdc_putc(0x36);
usb_cdc_putc(0x36);
warning=1;
}
/*lcd_putc("\f Desconecte USB");
lcd_putc("\n o La Bateria");*/
delay_ms(2000);
/*lcd_putc("\fEl Equipo Puede");
lcd_putc("\n Sufrir Danos");*/
delay_ms(2000);
hini=0;
enc=0xff;
}
else
{
warning=0;
if(hini==0)
{
//lcd_putc("\fLuxometroDigital");
//lcd_putc("\n Mesalud Ltda");
}
hini=1;
modo=0x0f;
}
}
else
{
modo=0xf0;
warning=0;
output_low(pin_a2);
if(hini==0)
{
//lcd_putc("\fLuxometroDigital");
//lcd_putc("\n Mesalud Ltda");
}
hini=1;
if(hini1==0)
{
usb_cdc_init();
usb_init_cs();
hini1=1;

}
}

if (hini==1)
{
if(input(pin_c2))
{
delay_ms(200);
enc=enc*-1;
if(enc==1)
{
output_HIGH(pin_A3);
//lcd_putc("\fInt Luz");
//lcd_putc("\n Temp: C lux");

usb_cdc_putc(0xff);
usb_cdc_putc(0x32);
usb_cdc_putc(11);

}
else
{output_LOW(pin_A3);

usb_cdc_putc(0xff);
usb_cdc_putc(0x33);
usb_cdc_putc(11);

//lcd_putc("\f");
}
}
}

if(enc==1)
{
if (modo==0x0f)
{
output_high(pin_a2);
adquisicion();
}
if(modo==0xf0)
{
usb_task();
adquisicion();
usb_com();
}
}
else
{
output_low(pin_a2);
if(modo==0xf0)
{
usb_task();
usb_com();
}
}
}
}


con solo lcd_init() ya se bloquea....

gracias y espero su ayuda............
18/03/2011 #1516

Avatar de EINNER C

hola a todos,,,

problema solucionado,,, era la lcd, estaba danada, no habia probado con otra por que no tenia a la mano, ya la cambia y funciona perfecto,,,,,,,,,,,
19/03/2011 #1517

Avatar de Moyano Jonathan

UNA PREGUNTA ADICIONAL: El metodo usb Bulk tiene interrupciones?? es q ya de tanta informacion confundo los metodos!
Osea q el micro sepa cuando se le esta enviando un dato, sin necesidad de estar siempre leyendo el buffer!!

Bueno ya investigue!!! y en CDC no se puede cambiar el icono!! :(
Si el USB tiene interrupciones ....pero no están disponibles para el usuario a no ser que armes tus propias funciones de control para obtener los datos...
Lo mejor es usar la función Usb_Kbhit()....con eso vos te fijas en un momento determinado si hay o no datos...

Ahora con el tema del ícono de CDC no se puede personalizar por que windows lo reconoce como un puerto serie y le pone el icono correspondiente a ese puerto.

Un saludo !
20/03/2011 #1518

Avatar de albermillan69

Moyano Jonathan dijo: Ver Mensaje
Si el USB tiene interrupciones ....pero no están disponibles para el usuario a no ser que armes tus propias funciones de control para obtener los datos...
Lo mejor es usar la función Usb_Kbhit()....con eso vos te fijas en un momento determinado si hay o no datos...

Ahora con el tema del ícono de CDC no se puede personalizar por que windows lo reconoce como un puerto serie y le pone el icono correspondiente a ese puerto.

Un saludo !
Ok Gracias Moyano!!! Cualquier cosa estamos en contaco!!
20/03/2011 #1519

Avatar de albermillan69

Otra vez yo!!! Jejejejeje como puedo hacer para aumentar la velocidad de transferencia de datos en USB_CDC?? osea superior a 9600 Baudios!!! que o donde debo modificar??? Gracias!!!
20/03/2011 #1520

Avatar de Moyano Jonathan

FIjate en las primeras páginas del hilo creo que aparece...sino en mi manual ...en la última version tambien aparece.
¿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.