uControl
Mayo 22, 2013, 04:07:08 *
Bienvenido(a), Visitante. Por favor, ingresa o regístrate.
¿Perdiste tu email de activación?

Ingresar con nombre de usuario, contraseña y duración de la sesión
 
   Inicio   Ayuda Buscar Ingresar Registrarse  
Páginas: [1]   Ir Abajo
  Imprimir  
Autor Tema: DATALOGGER CON PIC18F4550  (Leído 1832 veces)
0 Usuarios y 1 Visitante están viendo este tema.
EMIF
PIC10F
*
Desconectado Desconectado

Mensajes: 3


« : Mayo 10, 2012, 02:00:12 »

Hola amigos del foro, estoy en un proyecto de un datalogger con memoria SD y comunicacion USB con la PC.
Con respecto a la memoria, lo unico que me falta es la parte de leer el archivo y enviar la informacion a traves del PIC a la PC, ya que almacena la informacion en forma correcta y puedo extraerla y leerla con la PC . Utilizo las librerias de Suky, pero la funcion OpenFile no se bien como utilizarla ni que me tiene que entregar.

Con respecto a la otra parte del proyecto (la comunicacion USB) queria saber si es mas facil usar un conversor RS232 a USB, o realizar la conexion USB.
Si utilizo el conversor, en el programa del PIC envio los datos con printf directamente como si la comunicacion fuese RS232 pura??
En línea
вoяяe
.::. µPraxis .::.
Amigo de uControl
PIC18F
******
Desconectado Desconectado

Sexo: Masculino
Mensajes: 1239


Pяobando C30


WWW
« Respuesta #1 : Mayo 10, 2012, 02:19:02 »

Hola amigos del foro, estoy en un proyecto de un datalogger con memoria SD y comunicacion USB con la PC.
Con respecto a la memoria, lo unico que me falta es la parte de leer el archivo y enviar la informacion a traves del PIC a la PC, ya que almacena la informacion en forma correcta y puedo extraerla y leerla con la PC . Utilizo las librerias de Suky, pero la funcion OpenFile no se bien como utilizarla ni que me tiene que entregar.

Con respecto a la otra parte del proyecto (la comunicacion USB) queria saber si es mas facil usar un conversor RS232 a USB, o realizar la conexion USB.
Si utilizo el conversor, en el programa del PIC envio los datos con printf directamente como si la comunicacion fuese RS232 pura??

Hola, bienvenido al foro EMIF.

Respecto a la comunicación RS232, si utilizas algún conversor comercial si, no te preocupas de nada, envías los datos como tu dices, como si fuera RS232 pura, el conversor se encarga del resto.

Es mas fácil usar RS232 que USB, pero veo que ya utilizas memoria SD, entonces supongo que la comunicación USB HID no se te complicaría mucho. En que lenguaje programas, ya que el stack de microchip te ayudara bastante.

Saludos!  bang
En línea

La electrónica es simple, puedes aprenderla en 100 simples lecciones, una lección cada año.
Suky
**----- ^^ ------**
Moderador
dsPIC
*****
Desconectado Desconectado

Sexo: Masculino
Mensajes: 5345


Con Qt...


WWW
« Respuesta #2 : Mayo 10, 2012, 02:36:16 »

Hola! Creo que desde la versión 1.8 está disponible la función:

UINT8 FAT_OpenFileAndRead(UINT8 *NameShort,UINT16 NClusP, UINT8 Type, UINT8 *Buffer)

Donde: NameShort, sería el nombre corto del archivo; NClusP, donde está ubicado el archivo (DIRECTORIO_RAIZ u otra carpeta); Type, modo de acceso ('o' Abrir y leer, 'r' continuar lectura de archivo) y Buffer, puntero al buffer donde guardar los 512 valores leídos. Tener en cuenta eso, va leyendo sectores. La función retorna, FAT_ERROR si ocurre cualquier problema, FAT_OK si leyó el sector correctamente y FAT_READ_COMPLETE si ya se termino de leer todo el archivo. Esta función la cree para leer archivos de audio, solo pensando en eso, pero puede modificarse si necesitan que la misma devuelva otros datos, como tamaño del archivo, etc.

Entonces se podría implementar:

Código:
UINT8 Status;
Status=FAT_OpenFileAndRead(Nombre,DirectorioRaiz,'o',&Buffer[0]);
// Envia El contenido de buffer
if(Status!=FAT_READ_COMPLETE){
   do{
       Status=FAT_OpenFileAndRead(Nombre,DirectorioRaiz,'r',&Buffer[0]);
       // Envia El contenido de buffer
   }while(Status!=FAT_READ_COMPLETE);
}

Después está la función:

BOOL FAT_OpenFile(UINT8 *NameShort,UINT16 NClusP)

Esa función utiliza BOOL FAT_GetFile(UINT16 NClus,UINT32 SizeFile,UINT32 *SizeRead ) para enviar todo el archivo, podes ver que hay un while:

Código:
do{
         //#WARNNING **** En FAT_GetFile se envian datos leidos por RS232 ***
         //printf("%c",BufferFAT[i]);
         i++;
         *SizeRead++;
      }while((i<512)&&(*SizeRead!=SizeFile));

Respecto a USB vs RS232, sin dudas que utilizar RS232 es más sencillo.


Saludos!
En línea

EMIF
PIC10F
*
Desconectado Desconectado

Mensajes: 3


« Respuesta #3 : Mayo 11, 2012, 10:15:38 »

Muchas gracias por las respuestas!!
Utilizo CCS.
Como ya consegui el conversor (posee un FT232BL) me voy a inclinar por usar RS232.
La funcion que estoy intentando usar es
BOOL FAT_OpenFile(UINT8 *NameShort,UINT16 NClusP), por ahora estoy usando RS232 pura y recibo varios caracteres NULL y sale del while como si terminara de leer, pero nada de los datos.
En línea
Suky
**----- ^^ ------**
Moderador
dsPIC
*****
Desconectado Desconectado

Sexo: Masculino
Mensajes: 5345


Con Qt...


WWW
« Respuesta #4 : Mayo 11, 2012, 12:51:52 »

Y donde termina por caracteres nulos?  shocked

Código:
      do{
         //#WARNNING **** En FAT_GetFile se envian datos leidos por RS232 ***
         //printf("%c",BufferFAT[i]);
         i++;
         *SizeRead++;
      }while((i<512)&&(*SizeRead!=SizeFile));
En línea

dejuninmza
PIC10F
*
Desconectado Desconectado

Sexo: Masculino
Mensajes: 5


« Respuesta #5 : Mayo 11, 2012, 02:01:44 »

hola Suky...te cuento que estoy trabajando con EMIF en la realización del datalogger...si bien ya conseguimos el integrado para la conversión de rs232 a usb yo estaba trabajando en la modificación del firmware para utilizar usb del pic como puerto com virtual..todo bien hasta acá..mi problema surge debido a que estamos alimentando todo con 3.3V...preguntas:

-Se puede utilizar USB alimentando al pic con 3.3V..mi duda se desprende luego de inspeccionar el datasheet del 18f4550 pag364 fig28.2 Tension vs frecuencia...Huh??..como analizo esta gráfica??

-De ser afirmativa la pregunta anterior.. Tendría que colocar algún tipo de conversión de nivel en las pines D- y D+??
Desde ya muchas gracias y felicitaciones x todos los buenos aportes que realizas en los foros..saludos desde Mendoza
En línea
dejuninmza
PIC10F
*
Desconectado Desconectado

Sexo: Masculino
Mensajes: 5


« Respuesta #6 : Mayo 18, 2012, 02:02:53 »

hola muchachos..les cuento que ya estamos recibiendo bien los datos desde la memoria sd..todo a través de rs232 monitoreando todo mediante hyperteminal... también logramos utilizar usb cdc..la misma funciona bien al enviar y recibir comandos..el problema surge cuando descargamos los datos de la memoria por puerto com virtual..recibimos datos erróneos y algunas veces no recibimos nada..alguien sabe a que puede deberse??..he leido en un post googleando que no es seguro utilizar usb alimentando el pic con 3.3V para los 18f4550.. así que me inclino q esta sea la causa..alguna idea??
Aclaración:Estamos alimentando a 3.3 V debido a que tuvimos problemas con el circuito conversor de nivel mediante divisor de tension de la sd alimentando con 5V.
Saludos
En línea
Suky
**----- ^^ ------**
Moderador
dsPIC
*****
Desconectado Desconectado

Sexo: Masculino
Mensajes: 5345


Con Qt...


WWW
« Respuesta #7 : Mayo 18, 2012, 10:37:25 »

Si podes conseguir un PIC18LF4550 puede que se solucione el problema. No tengo experiencia usando USB con 3.3V en esos micros.


Saludos!
En línea

el_vpi
Moderador
PIC18F
*****
Desconectado Desconectado

Mensajes: 1122



« Respuesta #8 : Mayo 18, 2012, 12:16:01 »

Yo estoy usando un 18F14K50 alimentado con 3v3 sin problemas y comunicando al USB de una portable
Lo unico es que no uso la alimentacion que me viene por el USB, sino que uso alimentacion externa. Quiza regulaneo a 3v3 salga de una.

Saludos, Daniel.
En línea
Suky
**----- ^^ ------**
Moderador
dsPIC
*****
Desconectado Desconectado

Sexo: Masculino
Mensajes: 5345


Con Qt...


WWW
« Respuesta #9 : Mayo 18, 2012, 05:23:41 »

Yo estoy usando un 18F14K50 alimentado con 3v3 sin problemas y comunicando al USB de una portable
Lo unico es que no uso la alimentacion que me viene por el USB, sino que uso alimentacion externa. Quiza regulaneo a 3v3 salga de una.

Saludos, Daniel.


El PIC18F14K50 tiene un perfil tensión de alimentación vs frecuencia muy distinto a PIC18F4550  Wink
En línea

el_vpi
Moderador
PIC18F
*****
Desconectado Desconectado

Mensajes: 1122



« Respuesta #10 : Mayo 18, 2012, 07:17:02 »

 Idiota perdon, simplemente recorde que lo usaba en 3v3 y no verifique el tema velocidad del f4550 y el lf4550.
En línea
dejuninmza
PIC10F
*
Desconectado Desconectado

Sexo: Masculino
Mensajes: 5


« Respuesta #11 : Mayo 18, 2012, 07:22:50 »

Gracias x las respuestas..ya veré que hago..esta tarde probé nuevamente con el divisor resistivo con resistencias 3.3k y 2.2k para alimentar todo con 5v..pero sigo teniendo problemas..la ultima prueba q me queda es poner un buffer..se que el problema es de hardware porque utilizo la FAT 1.8 y continua el problema..saludos
En línea
Páginas: [1]   Ir Arriba
  Imprimir  
 
Ir a:  

Impulsado por MySQL Impulsado por PHP Powered by SMF 1.1.18 | SMF © 2011, Simple Machines
SMFAds for Free Forums
XHTML 1.0 válido! CSS válido!
Página creada en 0.096 segundos con 29 consultas. (Pretty URLs adds 0.011s, 3q)
loggkey