Autor Tema: Memorias SD/MMC .... ¿algo simple y que funcione?  (Leído 17601 veces)

0 Usuarios y 1 Visitante están viendo este tema.

Desconectado JCAK

  • PIC18
  • ****
  • Mensajes: 325
Memorias SD/MMC .... ¿algo simple y que funcione?
« en: 11 de Octubre de 2010, 21:55:58 »
Amigos ...

Me he pasado el fin de seman largo mirando el sol por la ventana, envidiando a quienes lo ha podido disfrutar mientras yo, de puro capricho por querer verlo funcionar, hacia pruebas con mi memoria SD/MMC
El resultado no es del todo lo que esperaba ... pude hacer andar bien estos dos ejemplos, especialmente el segundo me parece menos pretencioso pero mas interesante.

http://www.dharmanitech.com/
http://www.roland-riegel.de/sd-reader/index.html

Ocurre que yo no necesito TODO ese despliegue de funciones y chiches, yo solo quiero leer el contenido de un archivo TXT, tomar caracter por caracter, compararlo contra una tabla y mandarlo a un display. Es decir, el display escribe lo que contiene el TXT

Con estas pruebas pude leer el contenido, pero la pregunta es si alguien tiene los pasos basicos, los minimos que hacen falta para lograr esto sin tener que ponerme a recortar el codigo que les he mencionado. Estoy usando un Atmega32

Agradecido como siempre

Julio
Julio - Argentina

Desconectado jonathanPIC888

  • Colaborador
  • PIC18
  • *****
  • Mensajes: 326
Re: Memorias SD/MMC .... ¿algo simple y que funcione?
« Respuesta #1 en: 12 de Octubre de 2010, 00:53:53 »
La verdad que esos ejemplos son de lo mejor que hay en la red ...lo mejor va ser que adaptes los códigos a tus necesidades...algo que no veo demasiado complejo con algo de paciencia  :-/

Desconectado cristian_elect

  • PIC18
  • ****
  • Mensajes: 453
Re: Memorias SD/MMC .... ¿algo simple y que funcione?
« Respuesta #2 en: 12 de Octubre de 2010, 20:03:32 »
yo ya probe un atmega32 leyendo SD fat32/16 pero lo ise con las librerias de "chan" con iar avr.
Con bascom es mas facil pero un atmega32 le queda corto en memoria  ("2KB") pero en flash solo consume 6KB. 

Desconectado JCAK

  • PIC18
  • ****
  • Mensajes: 325
Re: Memorias SD/MMC .... ¿algo simple y que funcione?
« Respuesta #3 en: 13 de Octubre de 2010, 19:39:12 »
jonathanPIC888

Hoy me dipongo con paciencia a ver si recorto estos codigos, pero antes quiero ver si puedo hacer andar el PetitFAT que es una maravilla china super compacto, pero bue ... parece escrito en chino por lo complicado de entender.

Si alguien quiere acercar una mano con alguna otra sugerencia siempre es bienvenido.

Saludos y gracias
Julio - Argentina

Desconectado jonathanPIC888

  • Colaborador
  • PIC18
  • *****
  • Mensajes: 326
Re: Memorias SD/MMC .... ¿algo simple y que funcione?
« Respuesta #4 en: 14 de Octubre de 2010, 15:59:51 »
Hola mirá el usuario Suky de este foro escribió una librería para el manejo de FAT16 muy optimizada para consumir lo menos posible de RAM y ROM. La librería está hecha para CCS...pero con un poco de maña la podés portar a GCC o el compilador de C para AVR que sepás usar.
Saludos !

Desconectado ma4826

  • PIC16
  • ***
  • Mensajes: 130
Re: Memorias SD/MMC .... ¿algo simple y que funcione?
« Respuesta #5 en: 14 de Octubre de 2010, 18:30:57 »
jonathanPIC888

Hoy me dipongo con paciencia a ver si recorto estos codigos, pero antes quiero ver si puedo hacer andar el PetitFAT que es una maravilla china super compacto, pero bue ... parece escrito en chino por lo complicado de entender.

Si alguien quiere acercar una mano con alguna otra sugerencia siempre es bienvenido.

Saludos y gracias

¿Es la Petit Fat de elm-chan?
Si es así para probar la librería hice un pequeño reproductor de wav con un mega16, espero que te sirva de referencia.
http://www.4shared.com/file/inWA1-uN/MEGA16_PB_AUDIO_sb_tdp20101014.html

Saludos,

ma4826
万人の友は誰の友でもない。

Desconectado cristian_elect

  • PIC18
  • ****
  • Mensajes: 453
Re: Memorias SD/MMC .... ¿algo simple y que funcione?
« Respuesta #6 en: 15 de Octubre de 2010, 02:02:46 »
Las librerias de Suky tiene errores de  en C. El CCS es muy tolerante no da error pero en iar, winavr, icc  sale una lista larga errores y eso que una libreria para C. No se si mejoro ultimamente pero ya que lo deje de usar.

Desconectado Suky

  • Moderadores
  • DsPIC33
  • *****
  • Mensajes: 6758
Re: Memorias SD/MMC .... ¿algo simple y que funcione?
« Respuesta #7 en: 15 de Octubre de 2010, 09:17:21 »
Las librerias de Suky tiene errores de  en C. El CCS es muy tolerante no da error pero en iar, winavr, icc  sale una lista larga errores y eso que una libreria para C. No se si mejoro ultimamente pero ya que lo deje de usar.

Buenas!  :mrgreen: La compile en CSS, C18 y C32. En avr no la he probado  ;-) Yo le voy a echar un ojo a las Petit FAT para ver que consumo de recursos tiene.  :)
No contesto mensajes privados, las consultas en el foro

Desconectado RICHI777

  • Colaborador
  • PIC24H
  • *****
  • Mensajes: 1498
Re: Memorias SD/MMC .... ¿algo simple y que funcione?
« Respuesta #8 en: 15 de Octubre de 2010, 10:42:01 »
Hola,
Citar
Las librerias de Suky tiene errores de  en C. El CCS es muy tolerante no da error pero en iar, winavr, icc  sale una lista larga errores y eso que una libreria para C. No se si mejoro ultimamente pero ya que lo deje de usar.

También cabria la posibilidad de que mejoren IAR, WINAVR e ICC, muchos compiladores dicen ser ANSI C pero no lo son. Valoro el esfuerzo de Suky que desarrollo algo que no es trivial y lo publico para que todo el mundo lo pueda usar. Hubiese sido muy interesante que publiques los errores, de esta manera se podría llegar a corregir para que sea mas universal y compilador independiente.

Saludos !

Desconectado JCAK

  • PIC18
  • ****
  • Mensajes: 325
Re: Memorias SD/MMC .... ¿algo simple y que funcione?
« Respuesta #9 en: 15 de Octubre de 2010, 16:22:09 »
HOLA y GRACIAS por todo lo que aportan ...

Estoy probando y recortando una mezcla de cosas, lo utlimo es agarrar algo hecho con lo de CHAN, debaguearlo por RS232, entenderlo, arreglarlo y creo que para este fin de semana lo tengo.

Pero encontré algo que quiero compartir con ustedes, que si bien esta basado en PIC, todo lo que tiene que ver con el C para leer las SD/MMC es exactametne lo mismo. Usa la libreria de CHAN y está bastante clarito.

El foro con todo el paso a paso es el siguiente
http://www.electronicslab.ph/forum/index.php/topic,17055

El link para bajar el Source es:
http://www.4shared.com/file/4yzVDyrd/PIC18_Petit_FAT_File_System.html


Saludos

Julio
Julio - Argentina

Desconectado RICHI777

  • Colaborador
  • PIC24H
  • *****
  • Mensajes: 1498
Re: Memorias SD/MMC .... ¿algo simple y que funcione?
« Respuesta #10 en: 15 de Octubre de 2010, 16:37:47 »
Hola, también tenes esta ( que hice yo :P ) te paso el link, si el AVR es little endian tendrias que ajustar una macro.

https://sourceforge.net/projects/microfs/

Saludos !

Desconectado cristian_elect

  • PIC18
  • ****
  • Mensajes: 453
Re: Memorias SD/MMC .... ¿algo simple y que funcione?
« Respuesta #11 en: 15 de Octubre de 2010, 23:43:56 »
Buen enlace ese ejemplo esta bien "Chan", se le agregaría una pequeña modificación para leer archivos txt mas grandes.
Ya lo probe en un atmega8 con proteus.
« Última modificación: 16 de Octubre de 2010, 00:14:22 por cristian_elect »

Desconectado JCAK

  • PIC18
  • ****
  • Mensajes: 325
Re: Memorias SD/MMC .... ¿algo simple y que funcione?
« Respuesta #12 en: 16 de Octubre de 2010, 18:40:01 »
No logro hacer andar este ni otro codigo similar .... ¿quien me ayuda?

Ya probé varios códigos, pero vengo mal ... un par de ellos he logrado que lean la memoria, por lo que supongo que está bien conectada.
Estoy trabajando con un Atmegha32 a 16MHz, no se si la velocidad influye en mi problema, pero por las dudas les comento.
Las memorias que pruebo son de 512Mb y de 4Gb. Para conectarla uso los pines 5,6,7,8 del Atemga
Y estoy tratando de utilizar la libreria de CHAN porque pareceria ser la mas optimizada y desarrollada. En mi caso con la Petit FAT es suficiente.

Adapté todo al siguiente codigo para hacer un debug por el RS232, pero cuando llego a pf_opendir da error FR_NOT_ENABLED, aparentemente no encuentra nada y me manda el mensaje por el RS232 avisando que se quedó en ese paso ¿que es lo que esta mal, si es igual a los pasos que supuestamente funciona en otros ejemplos?

Alguien me ayuda a destrabarme ... ????

Código: [Seleccionar]
#include <avr/io.h>
#include <avr/pgmspace.h>
#include <avr/interrupt.h>
#include <string.h>
#include <stdlib.h>
#include <util/delay.h>

#include "diskio.h"
#include "pff.h"
#include "UART_routines.h"

FATFS Fs; /* File system object */
DIR Dir; /* Directory object */
FILINFO Fno; /* File information */
WORD rb; /* Return value. */
BYTE buff[100];

void PORTS_Init(void)
{
// Set MOSI y SCK output
DDRB |= (1<<7)|(1<<5)|(1<<3)|(1<<2)|(1<<1)|(1<<0);
DDRD |= (1<<5)|(1<<4);
PORTB = 0x00;
SPCR = (1<<6)|(1<<4)|(1<<0);
//Inicializa Ports para la UART
PORTD = 0x00;
DDRD  = 0xFE;
}


int main (void)
{
BYTE i;

PORTS_Init();

//Inicializa UART para comunicación via RS232
uart0_init();


TX_NEWLINE;
TX_NEWLINE;

while(1){

_delay_ms(10);
TX_NEWLINE; //JK
transmitString_F(PSTR("Inserte Tarjeta"));
if (pf_mount(&Fs) ) continue; /* Initialize FS */
TX_NEWLINE; //JK
transmitString_F(PSTR("Inicializado"));
while(1){
if (pf_opendir(&Dir, ""))
TX_NEWLINE;
transmitString_F(PSTR("Error Opendir"));
break;
while (!pf_readdir(&Dir, &Fno) && Fno.fname[0]) {
_delay_ms(100);
if( strstr(Fno.fname, ".txt") ){ // TXT file
TX_NEWLINE; //JK
transmitString_F(PSTR("listando archivos ..."));

//TX_NEWLINE;
//transmitString_F(PSTR(Fno.fname));

if(pf_open(Fno.fname)) continue; // open file

if( strstr(Fno.fname, "BLANK") ){
codigo .....
}
else{
codigo .....
}
_delay_ms(5000);
}
}
}

}
}
« Última modificación: 16 de Octubre de 2010, 19:00:49 por JCAK »
Julio - Argentina

Desconectado cristian_elect

  • PIC18
  • ****
  • Mensajes: 453
Re: Memorias SD/MMC .... ¿algo simple y que funcione?
« Respuesta #13 en: 16 de Octubre de 2010, 22:44:40 »
Primero tiene que funcionar la iniciacion de SD. Una prueba solamente disk_initialize() par ver si la configuracion del spi esta bien o el cableado falta algo.
Dependiendo del compilador FATFS, DIR se le declara como static.

Desconectado JCAK

  • PIC18
  • ****
  • Mensajes: 325
Re: Memorias SD/MMC .... ¿algo simple y que funcione?
« Respuesta #14 en: 16 de Octubre de 2010, 23:24:04 »
Hola Cristian_elect

Acabo de encontrar en la libreria, una parte en donde se definen los pines del SPI, me he pasado horas de horas buscando un error en el código porque nunca vi estas lineas. Cuanto más miro el codigo mas me sorprende los disperso que estan los settings de algunas cosas. Que chino loco ... pero bue, lo quiero igual.
Ya por la hora que es voy a probar las modificaciones recién mañana, y obviamente luego les cuento.

Saludos
« Última modificación: 17 de Octubre de 2010, 02:31:57 por JCAK »
Julio - Argentina