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

Temas similares

09/02/2009 #101

Avatar de Moyano Jonathan

Estoy aprendiendo Visual C# , cuando más o menos lo maneje voy a postear todos los ejemplos en ese lenguaje.
10/02/2009 #102

Avatar de Meta

Mejor, porque el Visual C++ es más complicado, cuando lo compares te darás cuenta, es pesado, no se puede comprar con el C de PIC que es muy limitado y fácil.

Me falta por hacer el Visual C# que me detecte los led desde el PC.
10/02/2009 #103

Avatar de Moyano Jonathan

A que te refieres con que te detecte los led's desde la PC.

Ahora otra cosa, no sabras como puedo hacer las llamadas al mpusbapi.dll desde el visual C#?
10/02/2009 #104

Avatar de Meta

No me he metido en ese mundo porque estoy a fondo con el RS232 o puerto serie. Aquí he encontrado alguna información.

Información.

Saludos.
11/02/2009 #105

Avatar de microtronic

hola amigos por hay eh leido que trabajan bastante el delphi y supuestamente es como que mejor para aquellos que trabajamos con electronica yo me inicio en el...mi intensión no es decir cual es el mejor si no cual se adapta mejor segun la profesion que ejerzamos...

saludos gracuias yonathan por la información sobre usb es muy extensa
11/02/2009 #106

Avatar de Meta

Delphi lo dejé por Visual Studio, el cambio tardé en adaptarme, si me diera cuenta de lo bueno que es, no tardaría tanto.

Me da pena de Delphi porque fue el primero en aprender, no por ello el mejor, claro.

http://www.microsoft.com/express/download/

Aún sigo con el RS232 y me estoy peleando hasta para conseguir manejar el CASIO (calculadora con el 16F84)

Saludos.
11/02/2009 #107

Avatar de Moyano Jonathan

Lo de la calculadora por RS232 + PIC16F84A, está muy buena aunque tambien puede hacerse con el PIC18F2550 y emulación CDC.

Yo nunca he programado en delphi porque sale de mi estructura (Programación en C), ya que tiene una estructura de programación basada en pascal.

Hasta ahora solamente he programado en Visual C# y Visual Basic 2005.
12/02/2009 #108

Avatar de Moyano Jonathan

¿bulk/interrup transfers?

aca les aclaro eso:

· transferencias de control:
usado para comandos (y respuestas) cortos y simples. Es el tipo de transferencia usada por el pipe 0

· transferencias isócronas:
proveen un ancho de banda asegurado pero con posibles pérdidas de datos. Usado típicamente para audio y video en tiempo real

· transferencias interruptivas:
para dispositivos que necesitan una respuesta rápida (poca latencia), por ejemplo, mouse y otros dispositivos de interacción humana.

· transferencias masivas (BULK):
para transferencias grandes y esporádicas utilizando todo el ancho de banda disponible, pero sin garantías de velocidad o latencia. Por ejemplo, transferencias de archivos.

entonces nosotros debemos definir que tipo de transferencia vamos a realizar.
en el ejemplo de Jaime se están declarando 2 endpoints (1 bidirecionales) como transferencia masiva o BULK.



#define USB_EP1_TX_SIZE 1 //size to allocate for the tx endpoint 1 buffer
podemos definir el tamaño del buffer en bytes, el límite lo tendremos que buscar en el driver correspondiente (con FS hasta 64 bytes por transacción).

nota: no confundir FS con HS, con High Speed se llega hasta 480Mbps, el módulo USB del pic soporta Full Speed = 12Mbps
usb_wait_for_enumeration()
según el concepto que dan en el driver, hace lo mismo que usb_enumerated(). La diferencia está en que el primero se queda en un bucle indefinido hasta que el HOST le dé la orden de habilitación.

para propósitos donde queramos hacer otras actividades en el PIC, usaremos el segundo.
13/02/2009 #109


hola que post tan interesante me h a servido para aclarar un monton de dudas, pero ahora quisiera saber si alguno de ustedes ha tratado de enviar señales analogicas atraves del 18f2550 hacia el labview, por que yo lo he intentado pero miren el resultado.
Imágenes Adjuntas
Tipo de Archivo: jpg seal_896.jpg (18,5 KB (Kilobytes), 918 visitas)
13/02/2009 #110

Avatar de Moyano Jonathan

Que señal estás midiendo? Si es tensión de red electrica esta bien porque viene con mucho ruido.
13/02/2009 #111

Avatar de Moyano Jonathan

Estoy tratando de traducir los documentos que siguen para poder postearlos, ya que la mayoría de la información sobre el puerto USB está en inglés técnico.

Cualquier proyecto por más sencillo que sea usando la librería mpusbapi.dll , posteenlo porque sirve como objeto de estudio para desarrollos más complejos.
13/02/2009 #112


pues yo lo que estoy tratando de medir es una señal de 60Hz, pero proveniente de un generador de señales, luego de que sale del generador lo paso por un filtro de corte a 120Hz para asi despues montarla en una componente dc para que pueda ser enviada al pic. gracias por la ayuda bye
14/02/2009 #113

Avatar de Moyano Jonathan

El tema es que tendrias q ver como obtener la función seno para poder representarla sobre labview
14/02/2009 #114

Avatar de Moyano Jonathan

He podido gracias a varios dolores de cabeza hacer mi primera aplicación HID para pic pero aún tiene muchos errores cuando tenga algo sólido posteo.
14/02/2009 #115

Avatar de jokelnice

jenn_t dijo:
pues yo lo que estoy tratando de medir es una señal de 60Hz, pero proveniente de un generador de señales, luego de que sale del generador lo paso por un filtro de corte a 120Hz para asi despues montarla en una componente dc para que pueda ser enviada al pic. gracias por la ayuda bye
cuentanos de que forma estan ingresando la señal haber si depronto podemos ayudarte
15/02/2009 #116

Avatar de Moyano Jonathan

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.
Archivos Adjuntos
Tipo de Archivo: rar programa_ejemplo_176.rar (16,1 KB (Kilobytes), 1179 visitas)
15/02/2009 #117

Avatar de Moyano Jonathan

Acá les dejo el esquema en formato .dsn para proteus y JPG para los que no dispongan del software.

PD: La torticolis en serio es un dolor insoportable no se deseo ni a mi peor enemigo.
Archivos Adjuntos
Tipo de Archivo: rar esquema_138.rar (127,9 KB (Kilobytes), 1053 visitas)
16/02/2009 #118

Avatar de Moyano Jonathan

8-) Hola a todos de nuevo

Acá les traigo un nuevo ejemplo. Esta véz se trata de algo concreto, un control de 8 relés por puerto USB utilizando la clase HID C de CCS y Visual Basic 2005.

A diferencia del ejemplo que había posteado sobre el control de 8 relés , este funciona a la perfección y mucho más rápido. No necesita drivers por lo que es plug and play.

Espero les sirva , ahora me voy a dedicar a terminar lo de mpusbapi que es bastante y luego seguiremos si dios quiere con HID y MSDC (mass storage device class) , pero eso será para más adelante.
Archivos Adjuntos
Tipo de Archivo: rar ejercicio_n2_614.rar (51,1 KB (Kilobytes), 1191 visitas)
16/02/2009 #119

Avatar de aguevara

Estimado Moyano:
He leido con interes todas tus aportaciones que has hecho con el USB, estoy iniciando justo ese tema tambien pues me interesa transferir datos desde y hacia una pc con un PIC18F4550, mis preguntas son:
El archivo dll de microchip MPUSBAPI deberia ser instalado en la pc ? o este es el firmware que se carga al pic ? si no es asi donde rayos va el archivo dll y cual es el firmware? mientras contestas mis dudas voy a leer toda la información que he bajado de este foro.

Gracias de antemano y saludos
16/02/2009 #120

Avatar de Moyano Jonathan

Hola como andas aguevara, las respuestas a tus dudas son las siguientes:

- El archivo mpusbapi.dll es el archivo encargado , junto con el driver correspondiente que viene incluido con el de gestionar la comunicación PC - PIC . Ahora bien este archivo no se carga al pic sino que un programa escrito por ejemplo en Visual Basic 6.0 llama a las funciones de esa librería y establece comunicacion con el PIC.

- El firmware es el programa que se le carga al pic , donde hay librerías específicas para gestionar la comunicación usb.

Espero tus dudas hayan sido disipadas , en caso contrario peregunta.

Mañana voy a seguir con el tutorial del protocolo bulk transfer donde voy a hacer incapie nuevamente en esto que has preguntado.
¿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.