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

Temas similares

30/04/2011 #1641


En el documento adjunto es lo he hecho hasta el momento deseo realizar algo parecido a esto:


Pero he tenido problemas con la comunicación Pc a pic en velocidad muy lento
30/04/2011 #1642

Avatar de Moyano Jonathan

Entiendo, pero te pregunto de nuevo...cuál es tu problema ? de programación para la PC, de programación del microcontrolador ?
30/04/2011 #1643


de recepcion del pic puesto que el programa de control de pc esta en visual C++ te dejo el codigo del pic:
#include <18F4550.h>
#device ADC=10
#fuses HSPLL,USBDIV,PLL5,PUT,CPUDIV1,VREGEN,NOWDT,NOPROTE CT,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;
}
}

}

}
}
perdón ya encontré la falla en los descriptores del include <USB_Konfigurasyon.h>, lo había configurado mal.
30/04/2011 #1644


Ayuda
Moyano Jonathan dijo: Ver Mensaje
Mostrá 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
01/05/2011 #1645


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..
01/05/2011 #1646

Avatar de Moyano Jonathan

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
Te podrías guiar de mi manual para hacer tu aplicación. Lo descargas de la primera página del hilo.

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..
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 !
09/05/2011 #1647


Hola, bueno les planteo mi problema...resulta que estaba haciendo el 2do ejemplo de la primera pagina, pero me aparece dispositivo desconocido...No se si es problema circuital o que puede ser...por un momento pense que tenia los cables d+ y d- cambiados, pero no era asi...

les dejo una foto de la Protoboard con el circuito armado.

http://imageshack.us/f/851/dsc00800m.jpg/

PD:Tengo una duda tambien, si el cristal externo es de 20MHZ el firmware tambien debe tener 20MHZ?
Archivos Adjuntos
Tipo de Archivo: rar DSC00800.rar (420,8 KB (Kilobytes), 113 visitas)
09/05/2011 #1648

Avatar de Moyano Jonathan

El problema puede estar en los fuses, por favor revisá tu configuración.

Un saludo !
09/05/2011 #1649


Gracias por tu pronta respuesta!

Mira te cuento, uso el quemador ART2003 (anda bien) y winpic800 .... Como tendria que configurarlo para poder el 2do ejemplo.

desde ya muchas gracias.
17/05/2011 #1650


hola amigo
Moyano Jonathan dijo: Ver Mensaje
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.

este programa tambien se puedo ocupar para el pic 18f4550 y 16f877A,,espero tu repuesta gracias1!!
17/05/2011 #1651

Avatar de Moyano Jonathan

Para el PIC18F4550 si (TIENE USB). Pero para el PIC16F877 No....NO tiene hardware USB incorporado.

Un saludo !
17/05/2011 #1652

Avatar de Meta

Moyano Jonathan dijo: Ver Mensaje
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 !
Moyano:

Mejor centrarse en una cosa y completar el manual con HID cargado de detalles, que hacer dos manuales con falta de información y no bien explicado.

Por cierto, sobre el manual que hiciste de C#, muy impresionante.

El otro:

Caballero, ya se pasará a VB .net, por ahora no lo he hecho porque me queda menos de un mes de clase con JAVA y redes. Es sólo intentar adaptar de un lenguaje a otro, se hace poco a poco, ten paciencia.

Saludo.
17/05/2011 #1653


Hola de nuevo...Ya logre hacer andar todo..pero ahora tengo otro problemita, no se si es por problema de masa o algun capacitor de filtro, pero se me conecta y desconecta solo a cada rato. (2do ejercicio cdc)
18/05/2011 #1654


Moyano Jonathan dijo: Ver Mensaje
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.

Hola antes que nada quiero agradecerles ya que este foro y los temas me han sido de gran ayuda se que estoy regresando mucho pero me he quedado con una duda muy grande y es por la cual no he podido avanzar.

Porque el 1 que se envía desde el pc al pic se compara con la posición 0 del array data???

Si quisiera encender mas leds como lo haria?? Saludos.

Estoy trabajando con el pic 18f4550 y la interfaz del pc en java.
18/05/2011 #1655

Avatar de Moyano Jonathan

Hola como estás.

Porque el 1 que se envía desde el pc al pic se compara con la posición 0 del array data???
Por que es el primer byte de datos....el host usa el byte 0 como byte de control y comienza la trama de datos a partir del byte 1. En el pic....el arreglo comienza en 0....por lo tanto recibe el byte y lo guarda allí....

Si quisiera encender mas leds como lo haria?? Saludos.
Lee el manual que está en la primera página...el capítulo del firmware para el PIC...y te vas a dar cuenta.
18/05/2011 #1656


Acabo de leer tu respuesta mientras me encontraba analizando ejemplos de aqui y por alla y he hallado una solucion tal vez no lo suficiente buena para un programador pero lo he solucionado y les quiero dar las gracias porque gracias a este foro se aclararon muchas dudas. Seguire leyendo y descargando los manuales para continuar en este mundo de los pic´s que en lo personal me interesa mucho. Saludos moyano jhonatan por tomarte la molestia de contestar y sigan asi que ayudan bastante. Saludos
19/05/2011 #1657

Avatar de Moyano Jonathan

Estamos para ayudarte, en las vacaciones de invierno pienso que voy a terminar con el manual de HID...y seguiré con Bulk....entre otras cosas interesante que tengo para mostrar.

Un saludo !
19/05/2011 #1658


Moyano Jonathan dijo: Ver Mensaje
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.

buenos dias, jonattan, si yo cambio el pic18f2550 por el pic18f4550 es si no cambiarle el include #include <18F2550.h> a #include <18F4550.h>
19/05/2011 #1659

Avatar de Moyano Jonathan

Necesariamente en el software no cambia nada. Solo los pines usados para la comunicación.
19/05/2011 #1660


Muchas gracias, tengo otra pregunta estoy haciendo el trabajo en pcwh v4.088, a la hora de compilar lo hace todo bien pero al generar los archivos de salida, el .hex lo pone como ICD, y a la hora de programar en el pickit2 me muestra este mensaje "Warning: No configuration words in hex file in MPLAB use File-Export to save hex with config", y el pic no quema bien, que podra ser??, De antemano muchas gracias
¿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.