TODOPIC

Microcontroladores PIC => Todo en microcontroladores PIC => Mensaje iniciado por: NANO1985 en 12 de Junio de 2007, 11:48:28

Título: LECTO-GRABADOR de tarjetas MMC , SD, MicroSD con pic 16F877A
Publicado por: NANO1985 en 12 de Junio de 2007, 11:48:28
Hola!!!! quiero hacer una aporte a toda la comunidad electronica... y de paso poder complementar con otra informacion para lograr que este circuito llegue a la plenitud de su desarrollo. el mismo consta de un microcontrolador PIC16F877A con un oscilador de 20Mhz (luego voy a explicar porque el de 20)... un par de resistencias para "ajustar" los niveles de tension que manejan las tarjetas SD,MicroSD y MMC (2.7 a 3.3 v) a los niveles de la lógica TTL de la arquitectura del PIC, las diversas memorias que existen en el mercado, desde el punto de vista técnico, pueden trabajar mediante dos protocolos serie distintos: el protocolo MultiMediaCard propiamente dicho, y el protocolo SPI. El primero de los protocolos es el más potente  ya que permite más operaciones que el segundo  :lol:, pero por otro lado, el segundo es más fácil de implementar si se dispone de una interfaz SPI   :-/ (en este caso mediante el modulo MSSP interno del pic) y es suficiente para la mayoría de aplicaciones. la tarjeta se comunica mediante Comandos del operador o Controlador, respondiendo en cada caso cada una de las peticiones del mismo. Yo por el momento logré paso a paso lo siguiente:

(1) seleccionar el modulo MSSP del pic para que funcione de modo maestro,... se utilizan para configurarlo solo 2 registros principales el SSPSTAT y el SSPCON1.
(2) mediante el 2 registro se selecciona el clock del modulo SPI, son 4 posibilidades distintas de frecuencias,... 1- Fosc/64 \\\ 2-Fosc/16 \\\ 3-Fosc/4 \\\ 4- Fosc=timer2/2
(3) en este caso tenemos que utilizar indefectiblemente un cristal de 20Mhz para que al seleccionar el divisor de frecuencia de clock a 64 (opcion1 item anterior) logremos obtener una frecuencia de clock de aproximadamente 312Khz... (frecuencia necesaria para inicializar la memoria)...
(4) luego debemos setear el tipo de polaridad del clock, momento en quese va a muestrear la entrada y ... haciendo CKP=1 CKE=0 SDI(SMP)=0 ...(son bits de los registros nombrados anteriormente)
(5) finalmente ya hemos inicializado el modulo del micro activandolo poniendo a "1" el bit SSPEN

ahora sigue la secuencia de pasos inalterables:

Los pasos muy precisos y específicos... cada comando entrega una respuesta de parte de la tarjeta.
a continuacion se detalla la cadena de cada comando a enviar y que se debe esperar de parte de la tarjeta.

CMD0--- cadena a enviar: 0x40,0x00,0x00,0x00,0x00,0x95 esperar respuesta: 0x01 (significa tarjeta en modo idle).
CMD41--- cadena a enviar: 0x41,0x00,0x00,0x00,0x00, 0xXX. Como la tarjeta ya esta en modo SPI el CRC (0xXX) puede tomar cualquier valor. se aconseja cargarle 0xFF. esperar respuesta 0x00 (significa tarjeta lista!!!! )
CMD55--- ESTE COMANDO NO ES UTILIZA PARA TARJETAS KINGSTON... SI TU TARJETA NO ES DE ESTA MARCA DEBERÁS ENVIARLE ESTE COMANDO. cadena a enviar: 0x77,0x00,0x00,0x00,0x00, 0xXX Y ESPERAR UN 0X00 DE RESPUESTA.
CMD58--- este comando es muy importante ya que se le "pregunta" a la tarjeta si está posibilitada a funcionar con una tension de alimentacion de 3.3v. cadena a enviar 0x7A,0x00,0x00,0x00,0x00, 0xXX. esperar respuesta 0x00 (significa que todo va OK!!!!)

luego de haber terminado la inicializacion, la tarjeta ya estla lista para realizar operaciones de lecto-escritura... pero lamentablemente acá se me recomplicó la cuestión.... hace una semana que estoy intentando escribirle algo y se vé que algun moco me estoy mandando o saltié algun paso,...porque no me responde nada cuando peticiono la escritura mediante el comando 24... nosé la verdad... voy a seguir intentando,.... y si hay progreso voy a seguir publicando más info...

si alguien está interesado en este proyecto no duden en intentar... por cualquier duda de hard o soft comunicate conmigo

vamos!!!! vamos!!!! pongansé las pilas e investiguen en este tema!!!!!! que está muy GROSSOOOO!!!

(tengo mucha informacion al respecto como para compartir sin problema)
Título: Re: LECTO-GRABADOR de tarjetas MMC , SD, MicroSD con pic 16F877A
Publicado por: KALLITOS en 12 de Junio de 2007, 12:16:13
Hola NANO1985 y Bienvenido...

Date una vuelta por estos sitios encontraras muchas cosas interesantes.

http://www.todopic.com.ar/foros/index.php?topic=15553.0

http://www.todopic.com.ar/foros/index.php?topic=15741.0

Esa es la gente que se necesita, gracias por tus aportes.

Saludos
Título: Re: LECTO-GRABADOR de tarjetas MMC , SD, MicroSD con pic 16F877A
Publicado por: electroximo en 12 de Junio de 2007, 12:36:01
Hola , que hay .Yo tambien estoy trabajando con las sd y he podido escribir un bloque y leerlo , lo que pasa a diferencia de ti yo utilizo un dspic y el C30 , pero supongo que os pasos son los mismos.

Para escribir :

1º enciendes la tarjeta (CS=0)
2º esperas un retardo (aprox. yo le he puesto 40 ciclos de reloj).
3º envias el comando 24 y esperas un 0.(TENIENDO ENCUENTA QUE SIEMPRE TIENES QUE ENVIAR ALGO PARA QUE EL RELOJ  NO PARE)
4º  esperas un tiempo (apx=16 ciclos)
5º  envias el byte de comienzo
6º  envias los datos(512 bytes)
7º  envias el crc que son 2 veces 0xff
8º  esperas un 0x05 que es la contestacion de la tarjeta (le ha llegado bien).ESTE PUNTO TIENE UN PROBLEMA : SOLO LO ENVIA UNA VEZ Y TARDA UN POCO ,TIENES QUE COMBINAR EL ENVIO PARA QUE NO PARE EL RELOJ Y RECOGER LA RESPUESTA.
9º   parar la tarjeta.

para la lectura:


haces los mismos pasos pero cambia en que no tienes que esperar la llegada de la respuesta del comando sino la del byte de start del bloque que te envia la tarjeta . Lo envia en seguida practicamente despues de recibir el crc del comando.


Espero que esto te ayude , por lo menos para el primer bloque , porque como he dicho antes no he podido todavia cambiar de bloque en un bucle cerrado.Ya que si se pone la direccion concreta si que me funciona pero si esta direccion(muy raro) es solo par como 0x0002 etc... Luego aprovecho para pedir ayuda yo tambien aver si alguin sabe como resolverlo.
Título: Re: LECTO-GRABADOR de tarjetas MMC , SD, MicroSD con pic 16F877A
Publicado por: NANO1985 en 12 de Junio de 2007, 20:08:23
MUCHISIMAS GRACIAS ELECTROXIMO!!!!  :-/ LA VERDAD QUE ESTOY RE CONTENTO PORQUE SOS EL PRIMERO QUE ME RESPONDE Y LE PONE PILAS A ESTE TEMA....bueno voy a seguir probando.... mirá acá tengo un manual que te puede servir demasiado.... la verdad que está muy completo.

mirá esta improvisacion rápida para probar si esto funcionaba o no... me armé el zócalo con adaptador para tarjetas micro SD ... soldándoles los cables a las terminales expuestas...

apropósito.....vos en que programás en C?.... en asemmber?.... en PBP?....
yo te comento que soy muy partidario del assembler... asi que no entiendo mucho de otro lenguaje....
Título: Re: LECTO-GRABADOR de tarjetas MMC , SD, MicroSD con pic 16F877A
Publicado por: electroximo en 13 de Junio de 2007, 06:04:44
Hola, yo programo en C con el compilador C30 para dspic. Tiene que ser un poco complicado en ASM ?¿no?
Título: Re: LECTO-GRABADOR de tarjetas MMC , SD, MicroSD con pic 16F877A
Publicado por: NANO1985 en 13 de Junio de 2007, 09:39:23
hola! electroximo! mas que complicado es muy denso en el sentido que si quiero hacer una rutina de escritura de LCD la tengo que hacer yo mismo y paso a paso, fijarme en los manuales como es el protocolo, los tiempos de las lineas de datos etc... etc....etc, en cambio en C es mucho mas sencillo y se te acortan mucho las lineas programacion (oooojo!!!... hablo de C,... porque una vez que se compila a *.HEX, debe quedar aproximadamente lo mismo) aparte ya tenés "armadas" muchas librerias de periféricos, puertos, modulos aritméticos, etc...etc.... bueno en fin.... me encantaría programar en C pero no tengo mucha idea de que se usa de soft ni nada :shock: ...

sacame de una duda  :? .... cuando hacés el programa en C, el compilador te crea tambien el archivo *.asm ???... porque si te crea este archivo, yo lo puedo entender, ... el mismo está en assembler,... como para que me compiles un par de fundiones del modulo SPI a ver si son parecidas a las que hago yo.... ok?... un abrazo.
Título: Re: LECTO-GRABADOR de tarjetas MMC , SD, MicroSD con pic 16F877A
Publicado por: electroximo en 13 de Junio de 2007, 11:32:03
Lo siento , NANO1985 por lo que parece no lo crea he estado mirando la carpeta donde se crean los archivos adicionales y no hay ninguno .Pero si has podido enviar comandos y  recibir respuestas es que el spi lo tienes bien configurado , lo mas seguro es que si no te funciona la escritura sea problema de los bucles para el tiempo.Si quieres pon un trozo de programa en asm haber si le vemos el fallo y se puede sacar. Un saludo
Título: Re: LECTO-GRABADOR de tarjetas MMC , SD, MicroSD con pic 16F877A
Publicado por: electroximo en 13 de Junio de 2007, 14:24:03
hola otra vez , tendriamos que intentar cuadrar las horas de conexion , ya que por lo que parece tendremos que ayudarnos mutuamente .
No me acordaba que por el foro esta el manual de las tarjetas SanDisk qu te puede ayudar bastante, lo que no me acuerdo muy bien por donde , creo que por "proyectos".
Adeu.
Título: Re: LECTO-GRABADOR de tarjetas MMC , SD, MicroSD con pic 16F877A
Publicado por: NANO1985 en 13 de Junio de 2007, 17:08:21
me parece perfecto que coordinemos los horarios :-/ ... decime vos a que hora te podés conectas y lo vemos....
mirá yo bajé hace un tiempo un manual de MMC y MicroSD ... es más lo tengo acá impreso por que es muy util  :mrgreen: pero el problema para postearlo es que pesa 1.76 Mb... asi que voy a tratar de conseguirte el linkpara que lo descargues...
saludos
Título: Re: LECTO-GRABADOR de tarjetas MMC , SD, MicroSD con pic 16F877A
Publicado por: electroximo en 14 de Junio de 2007, 04:57:32
Vale muchas gracias , respecto al manual, el que yo te he comentado es bastante grande.

Respecto a la hora , en el momento que te escribo tengo 9:52 de la mañana normalmente estoy conectado hasta las 13 y luego desde las 16 hasta las 20.Haber si pudieramos cuadrarlas :)
Título: Re: LECTO-GRABADOR de tarjetas MMC , SD, MicroSD con pic 16F877A
Publicado por: NANO1985 en 14 de Junio de 2007, 10:13:26
hola!!! electroximo... mirá estuve viendo los horarios y logré acomodarlos,...
segun tus horarios seria

(1) - 10hs (españa) ----> corresponde a las 5hs (argentina)...
(2) - 13hs (españa) ----> correponde a las 8hs (argentina)...

(4) - 16hs (españa) ----> corresponde a las 11hs (argentina)...
(5)- 20hs (españa)  ----> corresponde a las 15hs (argentina)...

es decir que para que no me desvele a infrahorarios lo mejor seria encontrarnos en el rango de horarios (4) a (5) es decir para vos entre las 16hs y las 20hs.  OK? ... estamos en contacto. 8)
Título: Re: LECTO-GRABADOR de tarjetas MMC , SD, MicroSD con pic 16F877A
Publicado por: electroximo en 14 de Junio de 2007, 10:46:47
Hola , ya estoy por aqui :) .
Respecto a los horarios no puedo a otras horas que te pillaran mejor , ya que estoy en el laboratorio y son estos.
Bueno vamos al tema,
Una recomendacion no borres la tarjeta!!!!! (o por lo menos muchas veces) , me explico cuando intentas  escribir , (si se logra) , la misma tarjeta borra antes y luego escribe , pero si empiezas tu a borrar aparte al final se bloquea los sectores que hayas borrado . Me ha sucedido a mi  ahora . A tener cuidado . Adeu..
Título: Re: LECTO-GRABADOR de tarjetas MMC , SD, MicroSD con pic 16F877A
Publicado por: NANO1985 en 14 de Junio de 2007, 10:56:10
hola!!!! electroximo!.... que bien!! nos encontramos!! :-/ se me bloqueó la tarjeta ayer... no se que le pasa.... y pensaba en formatearla e intentar de nuevo... solo puedo inicializarla, pero en el momento de escribirla ... no me responde al comando 24.... asi que voy a ver que hago....
AHH!!!... ya tengo el manual que vos me decias.... lo imprimí y quedó perfecto.... lo estoy mirando....
(a esta hora hasta tus 20hs ...podés verdad??? :?: )
Título: Re: LECTO-GRABADOR de tarjetas MMC , SD, MicroSD con pic 16F877A
Publicado por: electroximo en 14 de Junio de 2007, 11:02:40
sin problemas , si se te queda bloqueada echale un vistazo a la direccion que envias y ponsela "par" a ver que tal.

A otra cosa le has mandado el comando 16 que indica el tamaño del bloque? , tienes que mandarlo despues de inicializar , da igual a la velocidad en que se lo mandes.
Título: Re: LECTO-GRABADOR de tarjetas MMC , SD, MicroSD con pic 16F877A
Publicado por: NANO1985 en 14 de Junio de 2007, 11:06:59
por ahora estoy salteando el comando 16.... ya que decia en uno de los tantos manuales que leí ...que por defecto se asume un bloque a escribir o leer de 512 bytes....
asi que cuando envio el comando de esrcitura (CMD24)... mando 512bytes a esctribirle.... de todas formas YA mismo pruebo lo que me estás diciendo..... esperame un segundo....
(y vos que hacés ahora?... te puedo ayudar en algo???  :wink: )
Título: Re: LECTO-GRABADOR de tarjetas MMC , SD, MicroSD con pic 16F877A
Publicado por: electroximo en 14 de Junio de 2007, 11:12:01
pues estoy intentando mejorar la recogida del byte de inicio del bloque que me manda la tarjeta para que no se quede bloqueada y lograr escribir y leer varios bloques .....como me ha sucedido lo del bloqueo de la seccion he tenido que pasarme a otro sitio de la memoria. Estoy un poco perdido, la verdad.. :mrgreen:
Título: Re: LECTO-GRABADOR de tarjetas MMC , SD, MicroSD con pic 16F877A
Publicado por: NANO1985 en 14 de Junio de 2007, 11:35:32
viste esto??? , creo,... tambien hicieron una aplicacion de una memoria MMC a un micro.... pero la programacion la hacen a base de PBP,... incluso está publicado el código,.... pero no hay forma que yo entienda lo que dice ni profundizar demasiado en los pasos que dan.....jaja.. ese lenguaje no lo manejo.... fijate.... este es el link.

http://www.todopic.com.ar/foros/index.php?topic=15553.0
Título: Re: LECTO-GRABADOR de tarjetas MMC , SD, MicroSD con pic 16F877A
Publicado por: electroximo en 14 de Junio de 2007, 11:53:13
Si que lo habia visto , tampoco entiendo mucho , pero(como siempre hay un pero) yo he basado mi programa en la libreria a la que creo que se basa este link.
Título: Re: LECTO-GRABADOR de tarjetas MMC , SD, MicroSD con pic 16F877A
Publicado por: electroximo en 14 de Junio de 2007, 12:00:00
mandame un trozo de tu codigo de escritura y le hecho un vistazo, a ver si me acuerdo un poquillo del asm.Me comentaste que habias encontrado un link de un manual , era el mismo que el que te comente yo?


Ah!! otra cosa sabes como se puede refrescar el foro para que aparezcan los ultimos escritos , es que me toca cerrar el explorer para poder verlos. :)
Título: Re: LECTO-GRABADOR de tarjetas MMC , SD, MicroSD con pic 16F877A
Publicado por: NANO1985 en 14 de Junio de 2007, 12:03:54
MMMMMmmm tenés toda la razón.... igualmente vas más avanzado ..porque vos ya tenés las librerias de comunicacion SPI,... yo las tengo que hacer...  no me queda otra...  :?
mirá todavia sigo intentando la recepción del byte de grabacion exitosa (0x05)...
esto sería así verdad?...

(1)- despues de mandar los 512 byte encabezado por un byte de start (0xFE) mando dos CRC (0xFF)
(2)- y a continuacion espero (simpre mandando otro byte 0xFF) el byte de confirmacion de escritura (0x05)

esto es todo verdad??? porque ya intenté varias formas de capturarlo, pero como creo que la SD lo manda una sola vez se me complica un poco,... no se si tarda en mandarlo o es practicamente luego de los 2 bytes CRC,...

(yo actualizanzo el explorer simplemente se cargan los mensajes nuevos.....)
(aguantame un segundito,... ya te paso el codigo del micro... )
Título: Re: LECTO-GRABADOR de tarjetas MMC , SD, MicroSD con pic 16F877A
Publicado por: NANO1985 en 14 de Junio de 2007, 12:22:18
ACÁ VA LA FRACION DEL CÓDICO,... LA PRIMERA RUTINA ES LA QUE ENVIA EL COMANDO,... LA SEGUNDA ES LA QUE RECIBE LA RESPUESTA 0X00 DE LA TARJETA,... Y LA ULTIMA ES LA RUTINA EN SI DE ESCRITURA DE LA TARJETA... (CMD24)
Título: Re: LECTO-GRABADOR de tarjetas MMC , SD, MicroSD con pic 16F877A
Publicado por: electroximo en 14 de Junio de 2007, 12:27:48
se lo que te pasa ,si no te entido mal , es que mientras esperas tienes que mandar 0xFF por SD0 del micro para que el reloj del spi  no se pare mientras esperas contestacion .
Ya que si se para  la tarjeta no tiene reloj para contestar.
la respuesta que tiens que esperar  es un 0 antes de enviar el byte de start y el bloque  y crc despues hay que esperar un 5 ,

que es que ha llegado bien ; la respuestas posibles que te pueden llegar lo tienes en el punto --> 5.2.3.5Data response del manual que te he dicho.

Si tienes un osciloscopio podras ver perfectamente la contestacion de la tarjeta metiendo en un bucle cerrado el envio del comando.Vamos a ver es codigo.........
Título: Re: LECTO-GRABADOR de tarjetas MMC , SD, MicroSD con pic 16F877A
Publicado por: NANO1985 en 14 de Junio de 2007, 12:45:39
BIEN ...ME ENTENDISTE BIEN... LUEGO DE MANDAR LOS DOS BYTES (0XFF) DEL CRC... MANDO UNA VEZ MAS EL 0XFF PARA QUE LA TARJETA SIGA TENIENDO CLOCK...
SUPUESTAMENTE CON ESTE ULTIMO BYTE DEBERIA RECIBIR EN EL BUFFER DEL MICRO (SSPBUF)... EL REGISTRO DE CONFIRMACION DE ESCRITURA,... SIENDO EL MISMO EL 0X05,... PERO COMO LO MANDA UNA SOLA VEZ SE ME HACE PRACTICAMENTE IMPOSIBLE DE VISUALIZAR EN EL OSCILOSCOPIO.... Y NO SÉ QUE ES LO QUE ME ESTÁ LLEGANDO.... NI EN QUE MOMENTO,...

EL BUCLE CERRADO LO HAGO CON EL COMANDO 24???... ES DECIR MANDO INFINITAS VECES LA RUTINA QUE TE PASÉ "WRITE_SD"???... PORQUE YA LO INTENTÉ Y LA sd NO CONFIRMA ESCRITURA....

Título: Re: LECTO-GRABADOR de tarjetas MMC , SD, MicroSD con pic 16F877A
Publicado por: electroximo en 14 de Junio de 2007, 13:00:53
vaya tela con el asm , es bastante farragoso, yo creo que el problema es que se para el reloj ,
 bien lo que no se como se hace es en asm . si quieres te pongo el trozo de mi codigo en c ? ,
bueno si has trabajado algo en c...

He leido tu mensaje, puedes hacerlo solo con el comando 24 si enviar nada esperando siempre el 0.


lo metes en un bucle infinito para que puedas verlo en el osciloscopio , o si no no lo podras ver.De esta manera podras ver si la tarjeta te contesta bien no vaya a ser que te mande una respuesta con error , normalmente la que me ha pasado a mi es el de comando ilegal , por una direccion erronea. Intentalo a ver que tal y me cuentas



Título: Re: LECTO-GRABADOR de tarjetas MMC , SD, MicroSD con pic 16F877A
Publicado por: NANO1985 en 14 de Junio de 2007, 13:06:35
ok... voy a probar ahora y te comento....
dale...pasame algo de tu rutina en C.... asi le hecho un vistazo....
Título: Re: LECTO-GRABADOR de tarjetas MMC , SD, MicroSD con pic 16F877A
Publicado por: electroximo en 14 de Junio de 2007, 14:06:36
bueno , no lo tengo muy comentado , a ver que te parece :

         //..................escritura del bloque..................


         PORTFbits.RF0=0;         //OPERACIONES DE LA TARJETA ENCENDIDAS
         for(i=0;i<15;i++)           
            {                        //tiempo de espera para normalizacion
             WriteSPI1(0xFF);
             while(SPI1STATbits.SPITBF==1);
            }


         antes=5;
         // comando de escritura CMD24
         WriteSPI1(0x58);                //comando 24
         while(SPI1STATbits.SPITBF==1);   
         WriteSPI1(alta & 0x00FF);
         while(SPI1STATbits.SPITBF==1);                     
         WriteSPI1(media & 0x00FF);
         while(SPI1STATbits.SPITBF==1);
         WriteSPI1(baja & 0x00FF);
         while(SPI1STATbits.SPITBF==1);
         WriteSPI1(0x00);            //no varia nunca
         while(SPI1STATbits.SPITBF==1);
         WriteSPI1(0xFF);         //CRC PREESTABLECIDO
         while(SPI1STATbits.SPITBF==1);

                              //espero respuesta de la tarjeta
       do{
         WriteSPI1(0xFF);
         while(SPI1STATbits.SPITBF==1);
         while(DataRdySPI1()!=1);
         antes=ReadSPI1();
         }while(antes!=0x00);

         WriteUART2(antes);
   
         antes=8;            //para evitar problemas le pongo un numero
                           // que no puede enviar nunca

            WriteSPI1(0xFF);
            while(SPI1STATbits.SPITBF==1);
            WriteSPI1(0xFF);
            while(SPI1STATbits.SPITBF==1);

         //espero un poco antes de enviar los datos
 
            WriteSPI1(0xFE);      //BYTE DE COMIENZO
            while(SPI1STATbits.SPITBF==1);

            for(i=0;i<=511;i++){
            WriteSPI1(array);            //envio de datos
            while(SPI1STATbits.SPITBF==1);
            }

            WriteSPI1(0xFF);
            while(SPI1STATbits.SPITBF==1);
            WriteSPI1(0xFF);         //CRC PREESTABLECIDO
            while(SPI1STATbits.SPITBF==1);

               //espero la respuesta de la tarjeta
               // el and es para prevenir algun problema
               //ya que mis registros son de 16 bits


         do{

         while(DataRdySPI1()!=1){
            WriteSPI1(0xFF);
            while(SPI1STATbits.SPITBF==1);
            }
         antes=ReadSPI1();

         }while(((antes) & (0X000F))!=0x05);

         WriteUART2((antes) & (0X0F));



         PORTFbits.RF0=1;
            for(k=0;k<5;k++)
            {
               WriteSPI1(0xFF); //ciclos para que la tajeta termine
               while(SPI1STATbits.SPITBF==1);
            }


Lo siento me tengo que ir , nos vemos mañana  :mrgreen: , y me comentas como te ha ido . Adeu.
Título: Re: LECTO-GRABADOR de tarjetas MMC , SD, MicroSD con pic 16F877A
Publicado por: NANO1985 en 14 de Junio de 2007, 14:12:42
HOLA..... A VER LE HECHO UN VISTAZO A TU CÓDIGO....

aprobecho para comentarte que despues de un gran repaso por la rutina que manda el comando 24 modifiqué un par de cosillas y ahi estoy recibiendo la confirmacion de escritura!!!!! 0x05!!!  :-/ bendito 5  :5} ....
ahh... pero te comento que tube que hacer un bucle.... es decir...
(aqui comienza el bucle) --- > manda el comando 24 luego espera 00, despues manda el startbyte los 514 bytes incluyendo los ultimos 2 de CRC, y manda nuevamente 0xFF para que no pare el clock, espero la respuesta 0x05, si no responde vuelvo mandar todo el comando 24 desde el principio,... es decir intento escribir repetidas veces... ahora... si responde 0x05 listo....salgo del bucle... y a otra cosa...

LO UNICO QUE NOTÉ ES QUE NO SIEMPRE TARDA LO MISMO EN ESCRIBIR.... HAY VECES QUE EL COMANDO ENTRA MUY RÁPIDO..... Y OTRAS VECES....QUE SE CLAVA... Y NO PASA NADA Y LO TENGO QUE RESETAR MANUALMENTE Y EMPEZAR DE NUEVO
Título: Re: LECTO-GRABADOR de tarjetas MMC , SD, MicroSD con pic 16F877A
Publicado por: El_Guitre en 15 de Junio de 2007, 01:30:56
gente aca les mando el programa que uso para acceder una mamoria SD, para leer y escribir, espero les sirva de ayuda. Saludos.
Título: Re: LECTO-GRABADOR de tarjetas MMC , SD, MicroSD con pic 16F877A
Publicado por: NANO1985 en 15 de Junio de 2007, 09:52:43
muy buen aporte guitre!!! 8) pero yo no creo que lo pueda usar ya que ni idea de C  :z)  estoy programando en assembler asi que seguiré intentando,... GRACIAS NUEVAMENTE!!
Título: Re: LECTO-GRABADOR de tarjetas MMC , SD, MicroSD con pic 16F877A
Publicado por: NANO1985 en 15 de Junio de 2007, 09:54:58
Electróximo.... hoy me voy a demorar un poco en iniciar sesión.... pero voy a aparecer igual que ayer... mientras tanto hechale un ojo al codigo de el guitre... saludos
Título: Re: LECTO-GRABADOR de tarjetas MMC , SD, MicroSD con pic 16F877A
Publicado por: El_Guitre en 15 de Junio de 2007, 10:12:42
NANO, voy a ver si tengo algo en ensamblador, otra cosa, nosotros teníamos problemas cuando queríamos guardar datos en la memoria, teníamos que escribir un sector y luego leerlo desde el PIC para que nos quedaran guardados los datos y poder verlos desde windows, si silo escribíamos y luego sacabamos la memoria no nos quedaban los datos.
Título: Re: LECTO-GRABADOR de tarjetas MMC , SD, MicroSD con pic 16F877A
Publicado por: El_Guitre en 15 de Junio de 2007, 10:23:24
Acá creo que encontré algo que les puede ser de utilidad, es un código en C para el acceso a la memoria y su equivalente en ASM. Como todo en esta vida tiene un pero, los comentarios están en alemán. Pero se entiende lo que se va haciendo. Espero les sirva. Saludos.
Título: Re: LECTO-GRABADOR de tarjetas MMC , SD, MicroSD con pic 16F877A
Publicado por: electroximo en 15 de Junio de 2007, 12:38:43
gracias El_Guitre  :-/!!!!   por los programas, el primero que as mandado antes ,esta basado en el de ccs ,no?.
 un pregunta, sabes por que se direcciona de esa manera ,
la de coger la direccion del bloque y multiplicarla por un numero  y mover los bits de izquierda y a derecha? ,hasta luego y gracias por compartir tu programa.
Título: Re: LECTO-GRABADOR de tarjetas MMC , SD, MicroSD con pic 16F877A
Publicado por: electroximo en 15 de Junio de 2007, 13:01:23
Hola que hay como va,
Cuando puedas o podais a ver si encontrais algo respecto a la primera direccion utilizable para poder escribir sin cargarnos la tabla de direccionamiento. Un saludo....
Título: Re: LECTO-GRABADOR de tarjetas MMC , SD, MicroSD con pic 16F877A
Publicado por: El_Guitre en 15 de Junio de 2007, 13:24:38
Electroximo, si el primero que envié es para ccs, dejame que le de un vistazo a eso que me consultas, la verdad ese programa hace casi un año que no lo utilizamos y en un rato rindo un parcial de redes así que esta noche le doy una mirada al programa y te cuento. Voy a ver si les puedo mandar el informe del proyecto, por ahi capaz que hay alguna informacion que les sea útil.
Título: Re: LECTO-GRABADOR de tarjetas MMC , SD, MicroSD con pic 16F877A
Publicado por: El_Guitre en 15 de Junio de 2007, 13:32:03
creo que te referis a esta parte del codigo

int mmc_write_block(unsigned long block_number)
{
 unsigned long i;
 unsigned long varh,varl;

 varl=((block_number&0x003F)<<9);
 varh=((block_number&0xFFC0)>>7);

 OUTPUT_LOW(PIN_C2);                    // Chip select = 0 (on)

        SPI_WRITE(0x58);                // Comando para escritura de bloque
        SPI_WRITE(make8(varh,1));
        SPI_WRITE(make8(varh,0));
        SPI_WRITE(make8(varl,1));
        SPI_WRITE(0x00);
        SPI_WRITE(0xFF);                // El checksum no es requerido pero igual siempre le enviamos 0xFF

 if((mmc_response(0x00))==1) return 1;


lo que hace es una operación lógica para separar la dirección que le pasas como parámetro a la función en paquetes que puedan ser enviados por SPI_Write(), ya q nos e puede mandar la dirección de una sola ves.

Acá va la segunda parte del informe.  En realidad de una parte del informe, la que les puede interesar. Saludos nuevamente.  Y sigo peleando con los routers para el parcial.
Título: Re: LECTO-GRABADOR de tarjetas MMC , SD, MicroSD con pic 16F877A
Publicado por: NANO1985 en 15 de Junio de 2007, 13:41:14
hola!!!! guitre!!! y electroximo!!.... acá estoy nuevamente.... gracias guitre por compartir tus códigos,....  :) electróximo te cuento que ya puedo escribir en memoria...!!!!! ....
pero ahora estoy con el comando 17 (lectura de bloque simple)...... tengo un problema para detectar el byte start... pero los datos almacenados están en la memoria  :-/ y son fácilmente visibles en el osciloscopio..... pero no detecto bien el 0xFE
Título: Re: LECTO-GRABADOR de tarjetas MMC , SD, MicroSD con pic 16F877A
Publicado por: electroximo en 15 de Junio de 2007, 13:47:39
te quito un seg , del estudio EL_Guitre. No puedo abrir los archivos que me has mandado, si tienes un pelin de tiempo y me los reenvias , pone que necesita otro volumen .... GRacias.. :)

Eres teleco???
Título: Re: LECTO-GRABADOR de tarjetas MMC , SD, MicroSD con pic 16F877A
Publicado por: electroximo en 15 de Junio de 2007, 13:50:10
Hola que hay Nano!!!!!!!!!!!!!!!!!!!!!!!
Un saludo desde el hemisferio Norte ;;;;
 por casualidad no tendras ningun programa que pueda leer las tarjetas en modo plano , para ver el contenido de los bloques  o donde podria encontrarlo .
Título: Re: LECTO-GRABADOR de tarjetas MMC , SD, MicroSD con pic 16F877A
Publicado por: NANO1985 en 15 de Junio de 2007, 13:56:40
tengo mucha info electróximo.....pero a que te refieres con "leer las tarjetas en modo plano"?????

Título: Re: LECTO-GRABADOR de tarjetas MMC , SD, MicroSD con pic 16F877A
Publicado por: El_Guitre en 15 de Junio de 2007, 14:04:26
Nano, el archivo esta separado en dos partes, abrí la parte 1 y seguro te va a pedir el 2, si queres pasame tu dirección de mail y te lo envío por ahí sin particionar. por que por acá no puedo por al tamaño.
Título: Re: LECTO-GRABADOR de tarjetas MMC , SD, MicroSD con pic 16F877A
Publicado por: electroximo en 15 de Junio de 2007, 14:08:46
vale me he confui¡ndido  es en texto plano , es lo que estamos haciendo nosotros ,no estamos escribiendo en fat etc.... emmmm por lo menos por aqui lo llamamos asi.


El_Guitre , te lo he comentado yo ahora te la paso..
Título: Re: LECTO-GRABADOR de tarjetas MMC , SD, MicroSD con pic 16F877A
Publicado por: NANO1985 en 15 de Junio de 2007, 14:19:34
ok guitre...ahora lo abro...
ok electróximo ... por acá no lo conociamos con ese nombre.... pero si te entendí... ya busco.... si tengo algo...

les comento como me va con la lectura.... anoche pude grabar la memoria sin problema...... le grabé infinitas veces la letra 'K'
en el momento de leerla aparecieron.... pero estoy obiando el byte de start (0xFE)... ya que no lo puedo detectar....
mirá esta es la trama que recibo...

00 55 53 41 52 54 20 4C 49 53 54 41 21 21 01 00   .USART LISTA!!..  <---- "USART LISTA!!" esto lo manda el PIC cuando ya
00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00   ................                    está listo
00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00   ................
00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00   ................                         lo que está en rojo son las repuestas a
00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00   ................                         los comandos de reset inicializacion etc...ect..
00 00 00 00 00 00 00 00 00 00 00 FF 4B 4B 4B 4B   ...........ÿKKKK
4B 4B 4B 4B 4B 4B 4B 4B 4B 4B 4B 4B 4B 4B 4B 4B   KKKKKKKKKKKKKKKK        lo que está en verde son las reiteradas veces
4B 4B 4B 4B 4B 4B 4B 4B 4B 4B 4B 4B 4B 4B 4B 4B   KKKKKKKKKKKKKKKK        que intentó leer
4B 4B 4B 4B 4B 4B 4B 4B 4B 4B 4B 4B 4B 4B 4B 4B   KKKKKKKKKKKKKKKK     
FF 4B 4B 4B 4B 4B 4B 4B 4B 4B 4B 4B 4B 4B 4B 4B   ÿKKKKKKKKKKKKKKK         y finalmente los aparecen las 'K' (0x4B)
4B 4B 4B 4B 4B 4B 4B 4B 4B 4B 4B 4B 4B 4B 4B 4B   KKKKKKKKKKKKKKKK        guardadas en la operacion de escritura
4B 4B 4B 4B 4B 4B 4B 4B 4B 4B 4B 4B 4B 4B 4B 4B   KKKKKKKKKKKKKKKK
4B 4B 4B 4B 4B FF 4B 4B 4B 4B 4B 4B 4B 4B 4B 4B   KKKKKÿKKKKKKKKKK           UN DETALLE IMPORTANTE...
4B 4B 4B 4B 4B 4B 4B 4B 4B 4B 4B 4B 4B 4B 4B 4B   KKKKKKKKKKKKKKKK             LUEGO DE 52 'K' APARECE UN 0XFF
4B 4B 4B 4B 4B 4B 4B 4B 4B 4B 4B 4B 4B 4B 4B 4B   KKKKKKKKKKKKKKKK             Y NUEVAMENTE UNA TRAMA DE 52 'K'
4B 4B 4B 4B 4B 4B 4B 4B 4B 4B FF 4B 4B 4B 4B 4B   KKKKKKKKKKÿKKKKK
4B 4B 4B 4B 4B 4B 4B 4B 4B 4B 4B 4B 4B 4B 4B 4B   KKKKKKKKKKKKKKKK
4B 4B 4B 4B 4B 4B 4B 4B 4B 4B 4B 4B 4B 4B 4B 4B   KKKKKKKKKKKKKKKK
4B 4B 4B 4B 4B 4B 4B 4B 4B 4B 4B 4B 4B 4B 4B FF   KKKKKKKKKKKKKKKÿ
4B 4B 4B 4B 4B 4B 4B 4B 4B 4B 4B 4B 4B 4B 4B 4B   KKKKKKKKKKKKKKKK
4B 4B 4B 4B 4B 4B 4B 4B 4B 4B 4B 4B 4B 4B 4B 4B   KKKKKKKKKKKKKKKK
4B 4B 4B 4B 4B 4B 4B 4B 4B 4B 4B 4B 4B 4B 4B 4B   KKKKKKKKKKKKKKKK
4B 4B 4B 4B FF 4B 4B 4B 4B 4B 4B 4B 4B 4B 4B 4B   KKKKÿKKKKKKKKKKK

es muy extraño lo de las 0xFF que aparecen..... ni idea que será :shock:
Título: Re: LECTO-GRABADOR de tarjetas MMC , SD, MicroSD con pic 16F877A
Publicado por: El_Guitre en 15 de Junio de 2007, 14:24:01
Electroximo, perdón el mensaje de la direccion de correo era para vos, es que estoy medio mareado entre switch, hub, router, Gateway y que  se yo que otras cosas.

Te recomiendo que para leer el contenido de los bloques de la memoria uses un programa llamado Win Hex a mi me dio muy buenos resultados.


Título: Re: LECTO-GRABADOR de tarjetas MMC , SD, MicroSD con pic 16F877A
Publicado por: electroximo en 15 de Junio de 2007, 15:20:01
muy bueno el programa , esto es lo que yo andaba buscando , bastantes gracias El_Guitre.


Nos vemos el lunes........Adeu..
Título: Re: LECTO-GRABADOR de tarjetas MMC , SD, MicroSD con pic 16F877A
Publicado por: NANO1985 en 15 de Junio de 2007, 16:23:23
electroximo.... acá va el link del winhex en español....
http://winhex.uptodown.com/descargar-gratis  :wink:
suerte y exitos!!!.... voy a seguir... nos vemos el lunes...


che!.... guitre!.... el codigo que me pasaste que está en assembler ya lo tenia .... la lástima es que está en alemán jajaja ... pero a vos te andubo?... porque el hard está perfecto pero no me funca ese programa... si bien aparecen los mensajes que mando el pic hacia el hiperterminal pero se queda clavado en la inicializacion de la memoria... puede ser?
Título: Re: LECTO-GRABADOR de tarjetas MMC , SD, MicroSD con pic 16F877A
Publicado por: NANO1985 en 19 de Junio de 2007, 11:53:07
un consejo para todos....

les aconsejo que en la salida de la fuente regulada de 3,3v y 5 v les coloquen un buen filtro de linea (nosé como lo conocen ustedes) una bobina de choke de 24uHy, el motivo es que si te fijás en un buen osciloscopio, el pic introduce un "ruido" de 50mVpp de 20Mhz debido al resonador de cuarzo, esta componente indeseada se introduce en la alimentacion general ya que las masas están compartidas pudiendo llegar a afectar a las lineas del módulo SPI y en consecuencia a la memoria en los procesos de lectura y escritura.
simplemente fue un consejo,... esta observacion es muy especifica y puntual,... pero quizás les pueda ahorrar algun dolor de cabeza.  8)  a mi ya me los ahorró...  :mrgreen:
Título: Re: LECTO-GRABADOR de tarjetas MMC , SD, MicroSD con pic 16F877A
Publicado por: El_Guitre en 19 de Junio de 2007, 14:06:07
Como va nano, por cierto, de que parte de argentina sos? Yo de Entre Rios. En este momento estoy en el trabajo, ese codgo en ensamblador la verdad no lo usé, el codigo que use en mi proyecto es el que esta en ccs que les envie antes. Respecto al cristal yo utilizo uno de 4 megas y anda sin dramas (respecto a que lei mas arriba que tenia que ser de 20 si o si). Voy a ver en casa cuando llegue si tengo mas codigo en ensamblador ya que en su momento busque mucha info de este tema, pero ahora estoy desconectado del mismo, ando queriendo hacer un proyecto con el modulo ethernet ENC28J60. Saludos. Mas tarde me conecto
Título: Re: LECTO-GRABADOR de tarjetas MMC , SD, MicroSD con pic 16F877A
Publicado por: NANO1985 en 19 de Junio de 2007, 15:16:56
hola!!! guitre!!  8) ...soy de la provincia de tucuman.... y estudio en la UTN,... ok... muchas gracias por tus aportes... me sirven y me sirvieron... por ahora estoy en la fase de leer el bloque de datos escrito anteriormente,... pero tengo el problema que no detecto el byte de start (0xFE).... pero los datos están almacenados en la memoria....  tengo las lineas de datos y clock visibles en un osciloscopio y se ven claramente los datos... pero bue... tego esa falencia con 0xFE...
Título: Re: LECTO-GRABADOR de tarjetas MMC , SD, MicroSD con pic 16F877A
Publicado por: El_Guitre en 19 de Junio de 2007, 20:26:21
Nano, como va, yo también estudio en la UTN, si queres pasame tu dirección de hotmail u otro mail así te paso info por que por la limitación de tamaño no puedo por acá. Que es ese tema de innovar 2007?
Título: Re: LECTO-GRABADOR de tarjetas MMC , SD, MicroSD con pic 16F877A
Publicado por: NANO1985 en 19 de Junio de 2007, 22:57:23
hola guitre.... acá va mi direccion de hotmail y messenger  petiso85@hotmail.com ...  :mrgreen:

INNOVAR 2007 es un programa de desarrollo de productos innovadores argentinos,... ..
fijate entré acá....
www.innovar.gov.ar  :-)
Título: Re: LECTO-GRABADOR de tarjetas MMC , SD, MicroSD con pic 16F877A
Publicado por: electroximo en 20 de Junio de 2007, 07:17:44
Hola nano, :)............. sabes la forma de poder medir el tiempo que tarda en enviar todo el comando de escritura y la escritura de un bloque ? , ...............es que lo he probado con el Timer1 pero no sale bien ya que el tiempo que sale es inferior al que tiene que ser y no se me ocurre otra forma. UN SALUDO :-/
Título: Re: LECTO-GRABADOR de tarjetas MMC , SD, MicroSD con pic 16F877A
Publicado por: NANO1985 en 20 de Junio de 2007, 13:01:13
hola electroximo.... la verdad que está buena la idea el tiempo mediante el timer1 interno,... pero es evidente que si se pueden generar desbordes del contador y medir cualquier cosa,... lo que se me ocurre es hacer lo clásico,... nosé que tanta presicion nececites,... pero seria factible que conectes las lineas de clock, dato de salida y entrada, en un osciloscpio, y "mires" allí el inicio de la trama de comando , la respuesta de la memoria y el los 2 CRC de fin de escritura de bloque,... y determines el tiempo,... es una buena opcion,... pero nosé si te serviría.... despues contame que hiciste.
saludos  8)
Título: Re: LECTO-GRABADOR de tarjetas MMC , SD, MicroSD con pic 16F877A
Publicado por: NANO1985 en 20 de Junio de 2007, 16:22:57
LO LOGREEEEEEEEEE!!!!!!!!!!  :-/ electroximo!!!!!!!!  :-/ por fin!!!!!!!!!!!!  :-/ ......sabés cual era el problema?????.... la secuencia de envio difiere para algunos comandos... tuve que hacer 2 distintas... una de ellas sirve para el CMD0, CMD1,CM24 y la otra para CMD9, CMD10 y CMD17... fijate que curioso no?.... igual de todas formas no creo que te des cuenta ya que vos programás en C,... yo al escribir las rutinas de envio de comando lo vi más profundo y puntual al problema.... pero en fin sigo adelante..... vamos a ver que otra cosa interesante se puede hacer con la MicroSD....
que me aconsejás... cual es el proximo paso?

saludos desde argentina.
Título: Re: LECTO-GRABADOR de tarjetas MMC , SD, MicroSD con pic 16F877A
Publicado por: electroximo en 21 de Junio de 2007, 05:23:37
ENHORABUENA NANO!!! me alegro que ya lo hayas podido hacer... En que difieren los comandos????

Cosas que puedes hacer con la tarjeta una es mandar varios bloques seguidos y despues leerlos todos de golpe...
puedes utilizar el conversor analogico-digital y luego guardar el resultado de las conversiones etc....

He logrado medir el tiempo poniendo que se encienda un led y se apague despues de que termine de enviar el bloque todo ello en un bucle cerrado para  poder verlo , la escritura de un bloque ,con el envio del comando,respuesta y envio del bloque para un reloj de 3,750 MHz me tarda 1,300 ms que para mi es demasiado :( pero voy a ver si lo puedo mejorar , por que tengo un problema cuando aumento la velocidad de reloj del SPI se vuelve demasiado inestable (triangular) y la tarjeta no lo lee......Ya vere lo que hago :mrgreen:
Título: Re: LECTO-GRABADOR de tarjetas MMC , SD, MicroSD con pic 16F877A
Publicado por: NANO1985 en 21 de Junio de 2007, 12:07:47
HOLA!!!!!  8) ELECTROXIMO!!

con respecto a tu problema con la perdida de cuadratura de la señal cuando elevás la frecuencia del clock,... lo ideal seria que utilices un driver que adapte los niveles TTL a los de la lógica de la tarjeta... y no que utilices los juegos de resistencias (divisores de tension para adaptarlos)... mirá lo que te encontré... va como adjunto a este mensaje .... te puede ser util.... es un traslador de nivel,... o convertidor...

me parece muy extraño que tarde tanto en escribir... fijate,... colocá las señales en el osciloscopio y medí la trama completa,... es muy lenta,... (teniendo en cuenta de que el clock está a 400kHz??)...

bueno electróximo espero que te sirva el convertidor,... con este si vas a poder elevar la frecuencia a 4Mhz sin problema de perdida de cuadratura y demás... pero vas a tener que tener en cuenta sobre que tipo de placa impresa vas a montar los componentes,... la mala calidad de los materiales dieléctricos o pistas defectuosas podrían causarte tambien deformaciones de las señales y más a esa frecuencia.

despues contasme que tal te fue...saludos  :mrgreen:
Título: Re: LECTO-GRABADOR de tarjetas MMC , SD, MicroSD con pic 16F877A
Publicado por: PalitroqueZ en 30 de Junio de 2007, 13:56:12
Hola que tal amigos, les quería preguntar si han medido los tiempos de acceso por bloque.

según leí en la datasheet del samsung el tiempo de escritura/lectura (modo SPI) se lleva 1.5 mS

no se como será para las SD
Título: Re: LECTO-GRABADOR de tarjetas MMC , SD, MicroSD con pic 16F877A
Publicado por: NANO1985 en 02 de Julio de 2007, 10:00:38
hola! palitroque2.... todo en orden.... mirá ....yo medí el tiempo de acceso por bloque y me da un tiempo aproximado de 1.1 mSeg.... vos pará que utilizás este parámetro tiempo?.... saludos.  :mrgreen:
Título: Re: LECTO-GRABADOR de tarjetas MMC , SD, MicroSD con pic 16F877A
Publicado por: PalitroqueZ en 02 de Julio de 2007, 14:37:33
Hola NANO.

Estoy interesado en conocer ese parámetro, pués voy a manejar un muestreo muy pequeño (tipo datalogger) y tengo que estar pendiente con el tiempo que tarda en completar una transferencia para poder ajustar mi código.

aún sigo recopilando información sobre el SPI aplicado a estas tarjetas y el protocolo que maneja, aplica igual para las MMC que para las SD.

tengo ganas de montarme un código manejando el SPI por software, ya veré cual me sirve, porque también tengo libre ese módulo del PIC
Título: Re: LECTO-GRABADOR de tarjetas MMC , SD, MicroSD con pic 16F877A
Publicado por: electroximo en 02 de Julio de 2007, 15:38:55
Hola palitroque2 ...

Yo medi el tiempo del bloque y me salia aprox. = 1,2 ms por bloque mas le tienes que sumar el tiempo de el envio del comando y la respuesta de la tarjeta que dependera de la frecuencia de reloj.


Una pregunta a ver si a ti te ha pasado ...... la direccion de la memoria consta de 8 bytes 00 00 00 00 los dos del final no se tocan y los demas se van incrementando para cambiar la dirección.... Vale , pues yo puedo incrementar los dos primeros sin dificultad (00 00 0F 00 ....... --> 00 00 FA 00..... --> 00 00 FF 00) y sin problemas  pero cuando intento incrementar los siguientes no me deja (00 00 FF 00 ....... --> 00 01 00 00..... --> 00 01 FF 00..... --> 00 02 00 00),  te ha pasado a ti ???


gracias....
  :-/
Título: Re: LECTO-GRABADOR de tarjetas MMC , SD, MicroSD con pic 16F877A
Publicado por: PalitroqueZ en 02 de Julio de 2007, 15:57:03
hola electroximo.

me temo que no podré responder a tu pregunta  :cry:  aún no llego a esa fase, estoy en la etapa de investigación mientras me llega la tarjeta. lo que he hecho hasta ahora es simular en el proteus con la mmc (continúo sin dominar el mmc_spi.c que trae el ccs  :?)

en cuanto empiece a hacer los ensayos respectivos les contaré  :P



Título: Re: LECTO-GRABADOR de tarjetas MMC , SD, MicroSD con pic 16F877A
Publicado por: bily en 06 de Julio de 2007, 11:48:59
NANO1985 ]
hola nano quisieramos que compartas tu codigo. para chequearlo de la misma manera estamos sufriendo... mmc pic16f877
Título: Re: LECTO-GRABADOR de tarjetas MMC , SD, MicroSD con pic 16F877A
Publicado por: El_Guitre en 07 de Julio de 2007, 14:13:18
Les comento que acabo de probar la librería MMC/SD que trae el compilador mikroC de Mikroelectronica para trabajar con el sistema de archivos FAT 16 y la verdad tengo que resumir los resultados en 5 palabras: ES PEC TA CU LAR, les recomiendo que lo usen y vean lo fácil que es crear un archivo, borrarlo, modificarlo etc etc.

En http://www.mikroe.com/en/download/ pueden descargar estos ejemplos y los demos del compilador.
Título: Re: LECTO-GRABADOR de tarjetas MMC , SD, MicroSD con pic 16F877A
Publicado por: NANO1985 en 07 de Julio de 2007, 15:17:56
muy buen aporte guitre..... por ahora voy a seguir estudiando ...para rendir  :( ...jaja luego me voy a poner a ver el tema del compilador este.
saludos  8)
Título: Re: LECTO-GRABADOR de tarjetas MMC , SD, MicroSD con pic 16F877A
Publicado por: NANO1985 en 10 de Julio de 2007, 11:19:41
hola a todos....  8) les cuento que en internet me puse a buscar acerca de formatos de archivos en FAT 16 y encontré muy buena info que ya voy a postar,... por ahora estoy en desarrollo de las rutinas en assembler para generar un archivo convencional *.txt con el mismo micro para que la misma tarjeta pueda ser leida con cualquier pc... cuando termine y considere que el aporte sea valioso lo publicarè....  :mrgreen:
saludos a todos.
Título: Re: LECTO-GRABADOR de tarjetas MMC , SD, MicroSD con pic 16F877A
Publicado por: NANO1985 en 12 de Julio de 2007, 12:06:02
hola muchachos.... miren este espectacular manual que encontré,... la verdad no podía ser de otra persona ... es de JAN AXELSON,... mierdaaaa!!!!!  :lol:  esta vieja está en todo!!!... es una idola!...
bájenlo está demasiado interesante y les aseguro que les va a solcuionar millones de dudas.
saludos  8)

http://www.esnips.com/doc/20347d54-aaab-4183-963a-f55ade0f4386/USB-Mass-Storage-Designing-and-Programming-Devices-and-Embedded-Hosts---Lakeview-Research
Título: Re: LECTO-GRABADOR de tarjetas MMC , SD, MicroSD con pic 16F877A
Publicado por: NANO1985 en 18 de Julio de 2007, 16:43:36
hola ....  8) tenganme paciencia que estoy estudiando mucho para poder rendir la mateeria de mierda de calculo 2,... una vez que apruebe le meto pata a fuuuuullllll  :-/  :-/  con lo que dejé en suspenso.
Título: Re: LECTO-GRABADOR de tarjetas MMC , SD, MicroSD con pic 16F877A
Publicado por: NANO1985 en 06 de Agosto de 2007, 11:27:49
bueno les comento que me fue como el culo en cálculo 2  :? ..... creo que no nací para ser matemático .... asi que voy a retomar el proyecto que dejé en reposo hace un mes.....  8)
Título: Re: LECTO-GRABADOR de tarjetas MMC , SD, MicroSD con pic 16F877A
Publicado por: electroximo en 06 de Agosto de 2007, 13:03:20
Hola nano , lo siento lo del calculo 2  :(  , he logrado que funcione mas o menos lo que estaba haciendo  yo.... :mrgreen:
Título: Re: LECTO-GRABADOR de tarjetas MMC , SD, MicroSD con pic 16F877A
Publicado por: NANO1985 en 06 de Agosto de 2007, 17:19:27
felicitaciones electroximo..... muy bien por tu proyecto..... ahoravoy a retomar de nuevo..... pero quisiera que me cuentes cómo solucionaste el tema del direccionamiento?... cual era el problema?
nos vemos... saludos desde Argentina  8)
Título: Re: LECTO-GRABADOR de tarjetas MMC , SD, MicroSD con pic 16F877A
Publicado por: electroximo en 07 de Agosto de 2007, 12:09:51
Hola, era un problema de tiempos en el cierre del comando de escritura y ademas de las capacidades parasitas de la protoboard :o ; .............. Voy ahora aumentar la velocidad a ver que pasa a 7Mhz!! :mrgreen:
un saludo .
Título: Re: LECTO-GRABADOR de tarjetas MMC , SD, MicroSD con pic 16F877A
Publicado por: NANO1985 en 07 de Agosto de 2007, 18:39:56
que bueno que incrementes a esa velocidad!!!!!.... pero me parece que ya vas a tener que usar un driver entre el micro y la card.... se me hace que las señales se te pueden llegar a triangulizar o deformar un poco a esa velocidad... y te pueden generar fallas de lectura y escritura.... vah.  :? es sólo un pensamiento ... ojalá que no .... después contame.  8) SALUDOS
Título: Re: LECTO-GRABADOR de tarjetas MMC , SD, MicroSD con pic 16F877A
Publicado por: electroximo en 08 de Agosto de 2007, 08:27:14
Que grnade eres , tienes razon se trianguliza la señal , le he puesto un buffer ....... y si que funciona pero no como yo queria aunque le aumente la velocidad , la tarjeta tiene unos tiempos de terminación de la escritura , que no me vienen muy bien  :) , ese tiempo aparentemente no se puede mejorar, si tienes alguna idea ?? no me vendria mal .
Un Saludo.
Título: Re: LECTO-GRABADOR de tarjetas MMC , SD, MicroSD con pic 16F877A
Publicado por: NANO1985 en 08 de Agosto de 2007, 11:42:43
mmmmm voy a pensar cómo podés hacer para reducir los tiempos..... estamos en contacto!  8)
Título: Re: LECTO-GRABADOR de tarjetas MMC , SD, MicroSD con pic 16F877A
Publicado por: electroximo en 09 de Agosto de 2007, 12:21:08
Hola ............ Queria dejar un pequeño apunte que me ha pasado a mi. :mrgreen:

recordar que no todas las tarjetas funcionan igual , cada una tiene un tiempo por ejemplo , en mi caso la tarjeta transcend le hace falta menos tiempo despues de un envio para escritura que una secure digital , .................. :o

Esto es lo que queria dejar ........ Un saludo desde el hemisferio norte ...... :)
Título: Re: LECTO-GRABADOR de tarjetas MMC , SD, MicroSD con pic 16F877A
Publicado por: NANO1985 en 09 de Agosto de 2007, 12:40:22
ok gracias electroximo....lo voy a tener en cuenta. saludos  :-)
Título: Re: LECTO-GRABADOR de tarjetas MMC , SD, MicroSD con pic 16F877A
Publicado por: electroximo en 09 de Agosto de 2007, 12:44:28
Hombre hemos coincidido , que como va? ............... Ah una cosa no era secure digital la marca de la tarjeta era San Disk ..... :) :) :)
Título: Re: LECTO-GRABADOR de tarjetas MMC , SD, MicroSD con pic 16F877A
Publicado por: bily en 10 de Agosto de 2007, 12:40:20
hola muchachos estoy trabajando con el pi16f877a y el codigo que tiene como ejemplo microchip, y hasta el momento me encuentro trabajando con el codigo que publico nuestro amigo Elguitre.... estoy haciendo la prueba y mas o menos que quiere andar.. estuve tambien esperimentando con el WinHex y todo lo que envio a la tarjeta no lee nada.. pero eso si el espacio de mi MMC card se va llenando cuando mando alguna letra o caracter por favor si alguien me puede ayudar....
gracias saludillos a todos  :-/ :shock:
Título: Re: LECTO-GRABADOR de tarjetas MMC , SD, MicroSD con pic 16F877A
Publicado por: El_Guitre en 10 de Agosto de 2007, 19:25:00
Hola gente, yo por aca de nuevo, tocayo, que lastima lo de calculo. Bueno yo la rendi dos veces asi que no te desanimes. Les cuento q estoy medio desaparecido del foro por que entre otras cosas estoy armando el mio, los invito a sumarse a este pequeño arranque posteado ahi sus dudas y logros. Los invito a que se den una vuelta por aca  http://www.microing.com.ar/index.php?option=com_fireboard&Itemid=30 (http://www.microing.com.ar/index.php?option=com_fireboard&Itemid=30) saludos!
Título: Re: LECTO-GRABADOR de tarjetas MMC , SD, MicroSD con pic 16F877A
Publicado por: NANO1985 en 11 de Agosto de 2007, 11:17:21
hola!...capo!.... bueno.... de todas formas tengo que seguir estudiando para volver a rendirla en septiembre.... asi que mientras tanto.... voy a seguir con las memorias a full y tratar de terminar el proyecto. saludos y estamos en contacto.  :mrgreen:
Título: Re: LECTO-GRABADOR de tarjetas MMC , SD, MicroSD con pic 16F877A
Publicado por: electroximo en 16 de Agosto de 2007, 14:37:11
Hola que hay a todos ........ tengo un problemilla grave , a ver si alguien me da una idea ........ Este es mi problemilla  :( . He comprobado que no puedo escribir un bloque en la sd en menos de 50 ms  , por que cambio la frecuencia del reloj del spi y mas o menos anda por ahi para que funcione bien la tarjeta..........Como tengo que convertir señales aleatorias , entonces necesito que vaya lo mas rapido posible y a ese tiempo me hace muchos cortes y no se como evitarlos .............. gracias de ante mano... :?
Título: Re: LECTO-GRABADOR de tarjetas MMC , SD, MicroSD con pic 16F877A
Publicado por: NANO1985 en 18 de Agosto de 2007, 13:44:54
hola electroximo.... me gereraste una duda importante sobre éste tiempo.... entonces recurrí a los manuales de Sandisk... y encontré que el tiempo de acceso a la escritura de un bloque es de manera típica aproximadamente es de 0.5 mS... o lo máximo que se puede tardar es 240 mS... todo esto depende de tres parámetros:
1)- Rango de Voltaje 2.7 a 3.6v
2)- Temperatura -25 a 85 ºC
3)- independientemente del clock que se utilice en la comunicacion.
entonces surge pensar que el tiempo es totalmente aleatorio y arbitrário dentro de una estabilidad media,.. podriamos decir verdad?  :?
aparte creo que ésto tambien depende de la marca del fabricante... por ejemplo desde el simple explorador de windows se nota la diferencia en tiempo de trasferir un mismo archivo a una memoria SD Sandisk o otra memoria SD Kington ... la verdad que no se me ocurre nada por ahora....  :?

lo que si podriamos hacer es ... dame la secuencia de pasos que debo seguir para efectuar un calculo del tiempo de escritura ... lo calculo yo acá con mi circuito de aplicacion y te comento que obtuve... y nos sacamos la duda los dos. te parece?

bueno estamos en contacto . Saludos desde Argentina  :mrgreen:

Título: Re: LECTO-GRABADOR de tarjetas MMC , SD, MicroSD con pic 16F877A
Publicado por: Slalen en 19 de Agosto de 2007, 14:57:02
Buenas!!!

Estoy haciendo un robot ápodo al cual quiero conectar una MMC con un archivo txt que tenga un programa de los movimientos del robot. Para ello, he probado con el 16f877a y la librería del CCS mmc_spi.c.
Al compilar me da un error diciendo que una matriz de tamaño 512 (un sector) es demasiado grande. Creo que el error se debe a que el micro no tiene suficiente ram, pero al disminuir el tamaño de la matriz a 200 me sigue dando el mismo error. La única forma con la que he conseguido compilar es reduciendo la matriz a 1.

Después he cambiado el micro al 18f4550 y sin problemas.

¿Sabéis de que puede ser?

Un saludo y gracias!!!
Título: Re: LECTO-GRABADOR de tarjetas MMC , SD, MicroSD con pic 16F877A
Publicado por: electroximo en 20 de Agosto de 2007, 05:45:01
Hola Slalen , me parece que puede ser , lo que tu has dicho que no tengas suficiente ram , a mi me ha pasado , es por que a demas de los 512 bytes , tendras mas variables , ........... y por eso no tendras sufiente ram para el programa. Un saludo. :)
Título: Re: LECTO-GRABADOR de tarjetas MMC , SD, MicroSD con pic 16F877A
Publicado por: electroximo en 20 de Agosto de 2007, 05:54:48
Hola Nano, yo tambien mire lo del tiempo en el datasheet de la tarjeta y lo vi que no se puede hacer nada con respecto a eso..................Con respecto a la forma de mirar lo que tarda , yo lo hago de forma experimental ,pero funciona :mrgreen:, pongo que se encienda un led al principo de mandar el comando de escritura y cuando termina el envio del bloque hago que se apague , lo pongo en un bucle cerrado , y veo el tiempo en un osciloscopio...........y listo para comer :D ............... Esto tambien lo hago para poder ver los tiempos de conversion etc... Es un poco burdo pero como he dicho antes funciona.

Título: Re: LECTO-GRABADOR de tarjetas MMC , SD, MicroSD con pic 16F877A
Publicado por: NANO1985 en 22 de Agosto de 2007, 02:14:06
listo...listo... capté la idea.... me parece un método muy acertado y muy práctivo.... voy aprobar y luego te comento. saludos  :mrgreen:
Título: Re: LECTO-GRABADOR de tarjetas MMC , SD, MicroSD con pic 16F877A
Publicado por: NANO1985 en 29 de Agosto de 2007, 19:42:11
hola... un pequeño aporte pero importante... es necesario por ejemplo en una memoria de 128Mb escribir a partir de la posicion de memoria 00041000 ya que existe informacion importante almacenada en posiciones anteriores a la misma. por ejemplo la MBR, los registros que fotmato y demás...
por ejemplo miren esto... mediante el pic direciono la posicion 00041000 y escribo 1/4 de sector (512bytes) y luego leo todo desde la posicion 00000000 y cuando llegamos al terminador 55AA saltamos hasta la posicion 00041000 (inicio de datos)

||ADR ||||||||||||||||||||| HEXADECIMAL |||||||||||||||||||||||||||||||| ASCII |||||||||||
00000000   EB 3C 90 4D 53 44 4F 53  35 2E 30 00 02 04 08 00   ë<MSDOS5.0.....
00000010   02 00 02 00 00 F8 F0 00  3F 00 FF 00 00 00 00 00   .....øð.?.ÿ.....
00000020   00 C1 03 00 00 00 29 3E  FE AF 1C 4E 4F 20 4E 41   .Á....)>þ¯.NO NA
00000030   4D 45 20 20 20 20 46 41  54 31 36 20 20 20 33 C9   ME    FAT16   3É
00000040   8E D1 BC F0 7B 8E D9 B8  00 20 8E C0 FC BD 00 7C   ŽÑ¼ð{ŽÙ¸. ŽÀü½.|
00000050   38 4E 24 7D 24 8B C1 99  E8 3C 01 72 1C 83 EB 3A   8N$}$‹Á™è<.r.ƒë:
00000060   66 A1 1C 7C 26 66 3B 07  26 8A 57 FC 75 06 80 CA   f¡.|&f;.&ŠWüu.€Ê
00000070   02 88 56 02 80 C3 10 73  EB 33 C9 8A 46 10 98 F7   .ˆV.€Ã.së3ÉŠF.˜÷
00000080   66 16 03 46 1C 13 56 1E  03 46 0E 13 D1 8B 76 11   f..F..V..F..Ñ‹v.
00000090   60 89 46 FC 89 56 FE B8  20 00 F7 E6 8B 5E 0B 03   `‰Fü‰Vþ¸ .÷æ‹^..
000000A0   C3 48 F7 F3 01 46 FC 11  4E FE 61 BF 00 00 E8 E6   ÃH÷ó.Fü.Nþa¿..èæ
000000B0   00 72 39 26 38 2D 74 17  60 B1 0B BE A1 7D F3 A6   .r9&8-t.`±.¾¡}ó¦
000000C0   61 74 32 4E 74 09 83 C7  20 3B FB 72 E6 EB DC A0   at2Nt.ƒÇ ;ûræëÜ 
000000D0   FB 7D B4 7D 8B F0 AC 98  40 74 0C 48 74 13 B4 0E   û}´}‹ð¬˜@t.Ht.´.
000000E0   BB 07 00 CD 10 EB EF A0  FD 7D EB E6 A0 FC 7D EB   »..Í.ëï ý}ëæ ü}ë
000000F0   E1 CD 16 CD 19 26 8B 55  1A 52 B0 01 BB 00 00 E8   áÍ.Í.&‹U.R°.»..è
00000100   3B 00 72 E8 5B 8A 56 24  BE 0B 7C 8B FC C7 46 F0   ;.rè[ŠV$¾.|‹üÇFð
00000110   3D 7D C7 46 F4 29 7D 8C  D9 89 4E F2 89 4E F6 C6   =}ÇFô)}ŒÙ‰Nò‰NöÆ
00000120   06 96 7D CB EA 03 00 00  20 0F B6 C8 66 8B 46 F8   .–}Ëê... .¶Èf‹Fø
00000130   66 03 46 1C 66 8B D0 66  C1 EA 10 EB 5E 0F B6 C8   f.F.f‹ÐfÁê.ë^.¶È
00000140   4A 4A 8A 46 0D 32 E4 F7  E2 03 46 FC 13 56 FE EB   JJŠF.2ä÷â.Fü.Vþë
00000150   4A 52 50 06 53 6A 01 6A  10 91 8B 46 18 96 92 33   JRP.Sj.j.‘‹F.–’3
00000160   D2 F7 F6 91 F7 F6 42 87  CA F7 76 1A 8A F2 8A E8   Ò÷ö‘÷öB‡Ê÷v.ŠòŠè
00000170   C0 CC 02 0A CC B8 01 02  80 7E 02 0E 75 04 B4 42   ÀÌ..̸..€~..u.´B
00000180   8B F4 8A 56 24 CD 13 61  61 72 0B 40 75 01 42 03   ‹ôŠV$Í.aar.@u.B.
00000190   5E 0B 49 75 06 F8 C3 41  BB 00 00 60 66 6A 00 EB   ^.Iu.øÃA»..`fj.ë
000001A0   B0 4E 54 4C 44 52 20 20  20 20 20 20 0D 0A 51 75   °NTLDR      ..Qu
000001B0   69 74 61 72 20 64 69 73  63 6F 73 20 6F 20 6D 65   itar discos o me
000001C0   64 69 6F 73 2E FF 0D 0A  45 72 72 6F 72 20 64 65   dios.ÿ..Error de
000001D0   20 64 69 73 63 6F FF 0D  0A 50 72 65 73 2E 20 75    discoÿ..Pres. u
000001E0   6E 61 20 74 65 63 6C 61  0D 0A 00 00 00 00 00 00   na tecla........
000001F0   00 00 00 00 00 00 00 00  00 00 00 AC C6 D7 55 AA    ...........¬Æ×Uª   55 AA TERMINADOR DE LA MBR
00041000   46 4F 52 4F 54 4F 44 4F  50 49 43 2D 4E 41 4E 4F   FOROTODOPIC-NANO       INICIO DE LA ESCRITURA
00041010   31 39 38 35 46 4F 52 4F  54 4F 44 4F 50 49 43 2D   1985FOROTODOPIC-
00041020   4E 41 4E 4F 31 39 38 35  46 4F 52 4F 54 4F 44 4F   NANO1985FOROTODO
00041030   50 49 43 2D 4E 41 4E 4F  31 39 38 35 46 4F 52 4F   PIC-NANO1985FORO
00041040   54 4F 44 4F 50 49 43 2D  4E 41 4E 4F 31 39 38 35   TODOPIC-NANO1985
00041050   46 4F 52 4F 54 4F 44 4F  50 49 43 2D 4E 41 4E 4F   FOROTODOPIC-NANO
00041060   31 39 38 35 46 4F 52 4F  54 4F 44 4F 50 49 43 2D   1985FOROTODOPIC-
00041070   4E 41 4E 4F 31 39 38 35  46 4F 52 4F 54 4F 44 4F   NANO1985FOROTODO
00041080   50 49 43 2D 4E 41 4E 4F  31 39 38 35 46 4F 52 4F   PIC-NANO1985FORO
00041090   54 4F 44 4F 50 49 43 2D  4E 41 4E 4F 31 39 38 35   TODOPIC-NANO1985
000410A0   46 4F 52 4F 54 4F 44 4F  50 49 43 2D 4E 41 4E 4F   FOROTODOPIC-NANO
000410B0   31 39 38 35 46 4F 52 4F  54 4F 44 4F 50 49 43 2D   1985FOROTODOPIC-
000410C0   4E 41 4E 4F 31 39 38 35  46 4F 52 4F 54 4F 44 4F   NANO1985FOROTODO
000410D0   50 49 43 2D 4E 41 4E 4F  31 39 38 35 46 4F 52 4F   PIC-NANO1985FORO
000410E0   54 4F 44 4F 50 49 43 2D  4E 41 4E 4F 31 39 38 35   TODOPIC-NANO1985
000410F0   46 4F 52 4F 54 4F 44 4F  50 49 43 2D 4E 41 4E 4F   FOROTODOPIC-NANO
00041100   31 39 38 35 46 4F 52 4F  54 4F 44 4F 50 49 43 2D   1985FOROTODOPIC-
00041110   4E 41 4E 4F 31 39 38 35  46 4F 52 4F 54 4F 44 4F   NANO1985FOROTODO
00041120   50 49 43 2D 4E 41 4E 4F  31 39 38 35 46 4F 52 4F   PIC-NANO1985FORO
00041130   54 4F 44 4F 50 49 43 2D  4E 41 4E 4F 31 39 38 35   TODOPIC-NANO1985
00041140   46 4F 52 4F 54 4F 44 4F  50 49 43 2D 4E 41 4E 4F   FOROTODOPIC-NANO
00041150   31 39 38 35 46 4F 52 4F  54 4F 44 4F 50 49 43 2D   1985FOROTODOPIC-
00041160   4E 41 4E 4F 31 39 38 35  46 4F 52 4F 54 4F 44 4F   NANO1985FOROTODO
00041170   50 49 43 2D 4E 41 4E 4F  31 39 38 35 46 4F 52 4F   PIC-NANO1985FORO
00041180   54 4F 44 4F 50 49 43 2D  4E 41 4E 4F 31 39 38 35   TODOPIC-NANO1985
00041190   46 4F 52 4F 54 4F 44 4F  50 49 43 2D 4E 41 4E 4F   FOROTODOPIC-NANO
000411A0   31 39 38 35 46 4F 52 4F  54 4F 44 4F 50 49 43 2D   1985FOROTODOPIC-
000411B0   4E 41 4E 4F 31 39 38 35  46 4F 52 4F 54 4F 44 4F   NANO1985FOROTODO
000411C0   50 49 43 2D 4E 41 4E 4F  31 39 38 35 46 4F 52 4F   PIC-NANO1985FORO
000411D0   54 4F 44 4F 50 49 43 2D  4E 41 4E 4F 31 39 38 35   TODOPIC-NANO1985
000411E0   46 4F 52 4F 54 4F 44 4F  50 49 43 2D 4E 41 4E 4F   FOROTODOPIC-NANO
000411F0   31 39 38 35 46 4F 52 4F  54 4F 44 4F 50 49 43 2D   1985FOROTODOPIC-

ahora si sobreescribimos la MBR cuando leamos la card , la misma no va a tener formato  :shock: ... en el caso que no le podamos darle formato con windows y se nos clave la pc , lo que debemos hacer es mediante en un teléfono celular realizar un formato completo... de ésta forma el celular sobreescribre la info de la MBR 2 veces, una en la posicion 00000000 (sector de arranque) y la otra copia exacta de la MBR en una posicion determinada por un algoritmo dependiente del tamaño de la card.
asi que si por error o descuido la dejamos muerta a la tarjeta ya saben cómo revivirla.  :-/
Saludos
Título: Re: LECTO-GRABADOR de tarjetas MMC , SD, MicroSD con pic 16F877A
Publicado por: NANO1985 en 13 de Septiembre de 2007, 07:11:57
El Master Boot Record (MBR) es un pequeño programa que es ejecutado en cada Inicio del sistema operativo y se encuentra ubicado en el primer sector absoluto (Track 0, head 0, sector 1) de la Micro SD y que busca la Tabla de Particiones para transferirla al Sector de Arranque (Boot).  :)
El MBR está compuesto por código ejecutable y las entradas de la Tabla de Particiones. 

Estructura del Master Boot Record  :-)

(http://img255.imageshack.us/img255/9896/61286066gk3.jpg)

bueno.... ahora miren el posteo anterior y entenderán todo lo referente desde la posicion 00 00 00 00  :mrgreen: saludos.




 

 
Título: Re: LECTO-GRABADOR de tarjetas MMC , SD, MicroSD con pic 16F877A
Publicado por: PalitroqueZ en 06 de Mayo de 2008, 17:01:26
Una pregunta:

¿habrá algún problema con la tarjeta si los pines que vaya a usar para el Clock y SDO lo configure como Pull-up interno?

no se muy bien, pero el micro que estoy usando tiene el spi en el portb, casualmente usaré el pull-up y no se como lo manejará el spi por hardware...



Título: Re: LECTO-GRABADOR de tarjetas MMC , SD, MicroSD con pic 16F877A
Publicado por: NANO1985 en 06 de Mayo de 2008, 17:29:54
Hola PalitroqueZ! mira, me parece que vas a tener que inhabilitar las resistencias de pull up del puerto B de tu pic,... no te olvides que la tarjeta SD o micro sd o la que uses trabaja con 3.3v como máximo en su puerto de comunicaciones, ésto te puede generar conflictos... incluso podrías quemarla.
cómo conectas tu memoria al micro?
saludos
Título: Re: LECTO-GRABADOR de tarjetas MMC , SD, MicroSD con pic 16F877A
Publicado por: PalitroqueZ en 06 de Mayo de 2008, 17:37:44
Hola NANO1985

gracias por responder.  :P


yo usaré las conocidas resistencias divisoras de tensión. No creo que haya problemas con las tensiones, porque igual la lógica del pic trabajará con Vdd=Vcc









Título: Re: LECTO-GRABADOR de tarjetas MMC , SD, MicroSD con pic 16F877A
Publicado por: NANO1985 en 07 de Mayo de 2008, 17:48:48
tienes razón, cualquier cosa que necesites, me avisas.... saludos  8)
Título: Re: LECTO-GRABADOR de tarjetas MMC , SD, MicroSD con pic 16F877A
Publicado por: PalitroqueZ en 10 de Mayo de 2008, 14:30:23
Me volví a encontrar con la limitación de trabajar con el rango máximo de frecuencia de un chip.

¿de casualidad han visto una onda cuadrada de 48MHz en un pic trabajando a 48MHz?

corrijo: es una señal cuadrada de 12MHz, es lo máximo que se puede sacar usando el módulo SPI

horrible se ve, el nivel cae 1 Voltio y parece una especie de diente de sierra amortiguandose

Estoy a punto de hacer mi primer ensayo real con una tarjeta mmc, mientras voy haciendo los preparativos.

Cuando trabajo con pic´s hago como en una boda, tengo que checar todo individualmente para asegurarme que cuando conecte todo ese montón de cosas. me funcione, y si aún me falla, perderé menos tiempo hallando el problema.

el caso es que estoy viendo en el osciloscopio la señal SCK-SDO en SPI por hardware:

SCK a 48MHz:

(http://img375.imageshack.us/img375/2650/sck48mhzzs8.jpg)



SDO a 48MHz:

(http://img132.imageshack.us/img132/7964/sdo48mhznu8.jpg)




esto es aplicando la adaptación de 5V->3V3 es con los divisores de tensión por resistencias

(http://img132.imageshack.us/img132/7074/adaptador53v3hl9.jpg)


pero no se... no confío que esa señal sea validada por la tarjeta
leyendo en el libro de jan axelson, usan buferes. No me sirven los buferes, en este monte no se consigue los HC, y menos los LC   :x

leyendo otro documento: Registro Holter con memorias SD que generosamente subió el amigo El_Guitre, aparece estos driver:

(http://img132.imageshack.us/img132/3061/escribirsdhk3.jpg)


(http://img132.imageshack.us/img132/2230/leersdcv5.jpg)


voy a tener que montar esos circuitos. Una pregunta:

¿cuanto vale Rx?

¿le puedo poner 1K?


Título: Re: LECTO-GRABADOR de tarjetas MMC , SD, MicroSD con pic 16F877A
Publicado por: NANO1985 en 10 de Mayo de 2008, 19:36:07
hola PalitroqueZ, la verdad que es una chanchada las señales a esas frecuencias, en donde ensamblaste el ciruito? en una protoboard? te aconsejo que lo hagas en un PCB de epoxí, las señales se conformarán mejor,... no te olvides que en una protoboard TODO pero TODO es un gran "falsocontacto" además con esa señal SCK, puede generarte fallas en la comunicacion debido a no poder detectar bien los flancos de la señal de clock,.... bueno de SDO ni hablar....

te aconsejo que le coloques una resitencia de 2.2k o 3.9k (RX)al grupo de transistores para adaptar niveles.
Saludos amigo. y cualquier cosa consultame.  8)
Título: Re: LECTO-GRABADOR de tarjetas MMC , SD, MicroSD con pic 16F877A
Publicado por: PalitroqueZ en 10 de Mayo de 2008, 19:39:28
hola PalitroqueZ, la verdad que es una chanchada las señales a esas frecuencias, en donde ensamblaste el ciruito? en una protoboard? te aconsejo que lo hagas en un PCB de epoxí, las señales se conformarán mejor,... no te olvides que en una protoboard TODO pero TODO es un gran "falsocontacto" además con esa señal SCK, puede generarte fallas en la comunicacion debido a no poder detectar bien los flancos de la señal de clock,.... bueno de SDO ni hablar....

te aconsejo que le coloques una resitencia de 2.2k o 3.9k (RX)al grupo de transistores para adaptar niveles.
Saludos amigo. y cualquier cosa consultame.  8)

si en protoboard tengo montado todo. Ya recolecté varios hilos del foro donde hablan sobre adaptar niveles.

Voy a montarlo y te comento. Gracias  :P
Título: Re: LECTO-GRABADOR de tarjetas MMC , SD, MicroSD con pic 16F877A
Publicado por: NANO1985 en 10 de Mayo de 2008, 20:06:21
ok, PalitroqueZ cualquier cosa me chiflas....
saludops desde argentina.
Título: Re: LECTO-GRABADOR de tarjetas MMC , SD, MicroSD con pic 16F877A
Publicado por: Javicho en 11 de Mayo de 2008, 12:01:11
Parece que el circuito de transistores va a funcionar, Rx=4.7K es un valor coherente incluso para estabilizar se podria colocar una R=10K entre la base y tierra de ambos transistores, lo malo es que cuando el bus esté inactivo siempre habrá un transistor conduciendo y si el sistema es a pilas las mismas se acabarán rápido.

Tal vez las señales se ven así porque las sondas del osciloscopio (ionternamente poseen un filtro si no me equivoco) atenuan la señal distorsionandolas, puedes probar usando un bufer eso ayudaria mucho como el 74HC14.

Javicho.
Título: Re: LECTO-GRABADOR de tarjetas MMC , SD, MicroSD con pic 16F877A
Publicado por: PalitroqueZ en 13 de Mayo de 2008, 16:44:25
Hola que ta Javicho.

pos te comento que probé el driver con los transistores,y hay un pequeño detalle.

el tiempo de switcheo del transistor, probé con el 2N3904 y el 2N2222 y a 12MHz no funcionan...   :(

necesitaría transistores con un tiempo_switcheo <= 83 ns

es que el problema no es solo bajar los niveles de tensión, sino adaptarlo, es decir, asegurar que un "1" lógico sea ~3.3V y un "0" lógico se acerque a cero.

no pensé que esta parte me iba a complicar el circuito. Voy a tener que buscar los dichoso buffer  :?

Antes, voy a hacer una pruebas montando unos transistores mas rapidos (ej: BF494)

Título: Re: LECTO-GRABADOR de tarjetas MMC , SD, MicroSD con pic 16F877A
Publicado por: ivan braga en 14 de Mayo de 2008, 01:26:10
   Olá PalitroqueZ,

   Navegando pelo site da Mikroe achei este circuito, ainda não testei mais parece que funciona.

   Saudações.

   Ivan Braga
Título: Re: LECTO-GRABADOR de tarjetas MMC , SD, MicroSD con pic 16F877A
Publicado por: Javicho en 14 de Mayo de 2008, 02:37:39
Creo que mejor será usar un simple 7407, aquí les adjunto un gráfico para que se entienda, en general servirá cualquiera que sea de tipo colector abierto o pueden cambiarlo por otra serie de alta velocidad pero el principio es el mismo.

Javicho.
Título: Re: LECTO-GRABADOR de tarjetas MMC , SD, MicroSD con pic 16F877A
Publicado por: NANO1985 en 14 de Mayo de 2008, 11:40:00
mmm habria que probarlo, no me había ocurrido javicho, ta bueno...
yo al traslador de nivel hecho con trasnsistores no lo utilicé porque tenia el problema que menciona PalitroqueZ, por eso esque decidí dejarlo nomás a los famosos divisores entre el PIC y la tarjeta, funcionan bien (a baja velocidad)
Saludos
Título: Re: LECTO-GRABADOR de tarjetas MMC , SD, MicroSD con pic 16F877A
Publicado por: Javicho en 14 de Mayo de 2008, 12:00:10
Bueno yo lo he usado y verificado en osciloscopio y va bien aunque no lo he probado a altas velocidades, pero como dije antes el principio de funcionamiento es el mismo, para mayor velocidad busca un Driver de tipo Colector Abierto como el 7407 pero de alta velocidad y listo.

Porsiacaso la alimentación del 7407 debe ser de 5V.

Javicho.
Título: Re: LECTO-GRABADOR de tarjetas MMC , SD, MicroSD con pic 16F877A
Publicado por: PalitroqueZ en 14 de Mayo de 2008, 15:42:10
...(a baja velocidad)...

tu los ha dicho a baja velocidad.


Bueno yo lo he usado y verificado en osciloscopio y va bien aunque no lo he probado a altas velocidades, pero como dije antes el principio de funcionamiento es el mismo, para mayor velocidad busca un Driver de tipo Colector Abierto como el 7407 pero de alta velocidad y listo.

Porsiacaso la alimentación del 7407 debe ser de 5V.

Javicho.


si si yo lo probé a menos de 500KHz y todo va fino.

en el libro de Jan Axelson, es muy específico, usan un LCX y un HCT, ambos tienen retardos de propagación muy muy pequeños y se ajustan a los niveles seleccionados.

yo antes no le paraba a la nomenclatura, pero si hay que ponerle atención.

Título: Re: LECTO-GRABADOR de tarjetas MMC , SD, MicroSD con pic 16F877A
Publicado por: jmi48 en 06 de Septiembre de 2008, 19:12:09
holas gente le cuento mi problema a ver que les parece:
Tengon memoria de 2GB ThoshiBay con esa va todo bien hasta logre crear un txt y windows lo le todo genial :-/...Pero tambien tengo una  MicroSD de 128 MB Sandisk y todo mal. a inicialiso bien, luego quirero leer y nada o siempre algún de error considerando que el primer byte que recivo es R1. al escribirla mas o menos funciona. Hay algun tema entre marca y marca. agradecere cualquier tipo de ayuda.
Saludos
Título: Re: LECTO-GRABADOR de tarjetas MMC , SD, MicroSD con pic 16F877A
Publicado por: NANO1985 en 06 de Septiembre de 2008, 19:48:39
hola jmi48, bienvenido al foro. antes q nada necesitamos para ayudarte q nos comentes un poco en q estás programando?, como es tu hard?, q micro usas?, montaste todo en una protoboard? o te ensamblaste una PCB?, cual es la finalidad de tu proyecto?...en fin,... hay muchisimas variantes,... tratá de ser presiso y con gusto te ayuudaremos.-
saludos  8)
Título: Re: LECTO-GRABADOR de tarjetas MMC , SD, MicroSD con pic 16F877A
Publicado por: Ducky en 27 de Julio de 2009, 14:07:42
Hola!
buenop la verdad yo soy nuevo, y buenop hace poco empeze a trabajar con la MMC y el pic 16f876A, eh conseguido escribir y leer, pero tengo que estar asignando el bloque que quiero leer o escribir, alguien me podria decir como hacerle para escribir de manera continua, osea k no me limite a escribir o leer solo 512 bits sino k escriba por toda la memoria de manera continua. agradeceria mucho su ayuda.  :(
Título: Re: LECTO-GRABADOR de tarjetas MMC , SD, MicroSD con pic 16F877A
Publicado por: RICHI777 en 27 de Julio de 2009, 14:50:23
Hola Ducky, no podes escribir en forma continua, es decir solo podes leer/escribir de a 512 bytes.

Saludos !
Título: Re: LECTO-GRABADOR de tarjetas MMC , SD, MicroSD con pic 16F877A
Publicado por: Ducky en 27 de Julio de 2009, 20:12:21
Hola RICHI777!!!  :)
gracias por responder, ok te comento yo logre escribir bloques de 1024 o bien en 2 bloques de manera continua, pero no consegui escribir en los demas era por eso mi pregunta pero buenop, hay algun modo de saber que el bloque en el que se este trabajando esta lleno para que brinque de manera automatica al siguiente bloque a escribir???
Título: Re: LECTO-GRABADOR de tarjetas MMC , SD, MicroSD con pic 16F877A
Publicado por: Suky en 27 de Julio de 2009, 20:49:26
No se en las tarjetas MMC, pero en las SD están los comandos CMD18/CMD25 que permiten la lectura/escritura de múltiples bloques, y para terminar se envía el comando stop (CMD12).
hay algun modo de saber que el bloque en el que se este trabajando esta lleno para que brinque de manera automatica al siguiente bloque a escribir???
Esto no lo entiendo, porque tu deberías tener el control de cuantos bytes se han enviado como para saber si ya se ha llenado el sector  :mrgreen:

Saludos!
Título: Re: LECTO-GRABADOR de tarjetas MMC , SD, MicroSD con pic 16F877A
Publicado por: Ducky en 28 de Julio de 2009, 01:48:40
ummm que rayos,  :shock: nose si me puedan ayudar a implementar la escritura continua de bloques,o bien saber si termino de escribir los 512bytes para que pase a escribir al siguiente bloque, este es mi codigo de escritura para la MMC, guarda en la memroia lo que llega por RS232. la verdad ya llevo algun rato dandome de topes porque no consigo guardar en varios bloques sin tener k asignarlos manualmente, desearia que se asignaran de manera automatica en cuanto se llene el bloque actual. suky comenta que con el CMD18/CMD25 es probable que se pueda pero no tengo idea decomo implementarlos. :?

int mmc_write_block(unsigned long block_number)
{
    unsigned long varh,varl;

   varl=((block_number&0x003F)<<9);
   varh=((block_number&0xFFC0)>>7);

     OUTPUT_LOW(PIN_C2); // set SS = 0 (on)

   SPI_WRITE(0x58); // send mmc write block 58
   SPI_WRITE(make8(varh,1));
   SPI_WRITE(make8(varh,0));
   SPI_WRITE(make8(varl,1));
   SPI_WRITE(0x00); // always zero as mulitples of 512
   SPI_WRITE(0xFF); // checksum is no longer required but we always send 0xFF

   if((mmc_response(0x00))==1) return 1;
 
   SPI_WRITE(0xFE); // send data token

   printf("Listo para recibir datos\r\n");

do
{
   dato=getch();
   if(dato!=0x00)
   {
      if(dato=='Z') // si es Z sal para llamar subrutina Leer
      {
         goto next;
      }
      else
      {
        SPI_WRITE(dato); // escribiendo en memoria lo que llega por RS232
      }
   }

}while(TRUE);

Next:

   SPI_WRITE(0xFF); // dummy CRC
   SPI_WRITE(0xFF);

   if((SPI_READ(0xFF)&0x0F)!=0x05) return 1;

   OUTPUT_HIGH(PIN_C2); // set SS = 1 (off)

return 0;
}



Gracias: Saludos
Título: Re: LECTO-GRABADOR de tarjetas MMC , SD, MicroSD con pic 16F877A
Publicado por: Suky en 28 de Julio de 2009, 12:48:11
Para comenzar con la escritura debes enviar 0x59 | dirección de 32-bits | 0xFF y para enviar stop 0x4C|0x00|0x00|0x00|0x00|0xFF
Lee el siguiente pdf (http://www.cs.ucr.edu/~amitra/sdcard/ProdManualSDCardv1.9.pdf), es para sd card pero puede ayudarte a comprender que se envía y recibe según el comando.

Saludos!
Título: Re: LECTO-GRABADOR de tarjetas MMC , SD, MicroSD con pic 16F877A
Publicado por: NANO1985 en 28 de Julio de 2009, 13:10:43
Para comenzar con la escritura debes enviar 0x59 | dirección de 32-bits | 0xFF y para enviar stop 0x4C|0x00|0x00|0x00|0x00|0xFF
Lee el siguiente pdf (http://www.cs.ucr.edu/~amitra/sdcard/ProdManualSDCardv1.9.pdf), es para sd card pero puede ayudarte a comprender que se envía y recibe según el comando.

Saludos!

que buenos recuerdos me trae ese manual de sandisk... me acuerdo cuando inicializada ,escribía y leia en la SD... y todo en lenguaje ensamblador... que buen manual.- te lo recomiendo Ducky
Saludos  8)
Título: Re: LECTO-GRABADOR de tarjetas MMC , SD, MicroSD con pic 16F877A
Publicado por: RICHI777 en 28 de Julio de 2009, 13:22:49
Hola independiente de que escribas con el comando de multi bloques, el comando de escritura te deberia funconar para cualquier bloque, mirando el codigo no podrias primero recibir en un buffer los 512 bytes del RS-232 y luego cuando se complete mandar a escribir ?

Saludos !
Título: Re: LECTO-GRABADOR de tarjetas MMC , SD, MicroSD con pic 16F877A
Publicado por: Ducky en 28 de Julio de 2009, 14:36:19
Hola!! gracias a todos por echarme la mano con esto, OK hechare un vistaso al PDF muchas gracias, y RICHI777, umm io creo ke sip se podria llenar un buffer o algo pero aun toy algo chavito  :D y ps si toy batallando algo para la realizacion de este proyecto.
en si mi proyecto consiste en guardar 'X' cantidad de datos en la MMC durante un día, los datos que seran guardados son cadenas variables por ejemplo: (13.7V>41 0C 0E FB >41 0D 2A >41 05 87 > y puede ir omitiendo o agregando cosas), intente aplicar un contador pero el contador ocasiona que se pasme toda la operación ya que no consigue realizar el conteo de manera exitosa. ahora la PC no va a estar precente al momento de guardar, es por eso que quiero que automaticamente se este asignando el bloque de escritura. 

Gracias.
Saludos!!!
Título: Re: LECTO-GRABADOR de tarjetas MMC , SD, MicroSD con pic 16F877A
Publicado por: RICHI777 en 28 de Julio de 2009, 16:07:37
Hola, mucho no entiendo como escribis, si usas CCS porque no usas el sistema de archivo y asi lo que grabes lo podes leer directamente desde una PC.

Saludos !

Título: Re: LECTO-GRABADOR de tarjetas MMC , SD, MicroSD con pic 16F877A
Publicado por: fidodido18 en 29 de Julio de 2009, 13:35:28
Hola a todos, he estado buscando por todo el foro y depronto se me escapo y no he visto la libreria para CCS para lectura y escritura en una SD....
Alguien me podria ayudar a encontrarla, es para hacer pruebas con unas imagenes...

gracias...
Título: Re: LECTO-GRABADOR de tarjetas MMC , SD, MicroSD con pic 16F877A
Publicado por: Suky en 29 de Julio de 2009, 19:38:24
Hola a todos, he estado buscando por todo el foro y depronto se me escapo y no he visto la libreria para CCS para lectura y escritura en una SD....
Alguien me podria ayudar a encontrarla, es para hacer pruebas con unas imagenes...

gracias...
Esta en PICC/Drivers/mmc_spi.c  :mrgreen:

Saludos!
Título: Re: LECTO-GRABADOR de tarjetas MMC , SD, MicroSD con pic 16F877A
Publicado por: Ducky en 10 de Agosto de 2009, 22:04:02
Hola
estoy grabando los datos que transmite una bascula, espero me puedan dar opciones, lo que estoy haciendo es agregar un contador (para que sea automaticola asignacion de bloques), el cual se suma 1 para avanzar entre bloques mismo que se sumara al recibir X caracter que yo design, ahora lo que sucede es que funciona bien los primeros 3 bloques despues se queda como en un ciclo infinito y no respeta la funcion de escritura. espro que me puedan ayudar o dar opciones, gracias.

saludos! 
Título: Re: LECTO-GRABADOR de tarjetas MMC , SD, MicroSD con pic 16F877A
Publicado por: Suky en 10 de Agosto de 2009, 22:07:43
Muéstranos el código sino lo veo difícil de encontrar algún problema  :mrgreen:

Saludos!
Título: Re: LECTO-GRABADOR de tarjetas MMC , SD, MicroSD con pic 16F877A
Publicado por: Ducky en 10 de Agosto de 2009, 22:19:53
Ok!!

Aqui dejo mi programa adjunto en un .txt, lo estoy programando en CCS C

Gracias!!!
Título: Re: LECTO-GRABADOR de tarjetas MMC , SD, MicroSD con pic 16F877A
Publicado por: Suky en 10 de Agosto de 2009, 22:51:24
Fíjate que tienes habilitada la interrupción por recepción de datos RS232 y a la vez esperas datos en un bucle  :?

Saludos!
Título: Re: LECTO-GRABADOR de tarjetas MMC , SD, MicroSD con pic 16F877A
Publicado por: NANO1985 en 11 de Agosto de 2009, 15:48:30
Fíjate que tienes habilitada la interrupción por recepción de datos RS232 y a la vez esperas datos en un bucle  :?

Saludos!

cohincido con suky.... luegos nos cuentas Ducky... saludos  8)
Título: Re: LECTO-GRABADOR de tarjetas MMC , SD, MicroSD con pic 16F877A
Publicado por: richardjr en 11 de Agosto de 2009, 22:36:28
Hola a todos!! Muy bueno este hilo! Aunque tengo que decir que ando un poco mareado con tanta informacion... A ver si me pueden tirar una mano como para orientarme un poco por donde tengo que empezar. Estoy trabajando con un PIC18F4550, programando en C y compilando con HTSFT PICC18. La idea es hacer un loggeo de datos provenientes de un gps y algunos sensores, con estos datos, ir generando "vectores de informacion" e ir almacenandolos en una memoria SD para luego ser leidos en una compu cualquiera (supongo el formato que debo guardar es txt) , luego en la compu se hara algun que otro proceso de los datos que vengan en la SD.

Planteado esto... como deberia encarar el diseño?
Tendria que trabajar con formato FATXX ?
Por donde me aconsejan empezar probando? se me ocurria simular en proteus lo que vaya haciendo, alguno probo de simular?

Espero me puedan acomodar un poco las ideas, ire subiendo progresos ni bien pueda avanzar!!

Gracias!
Título: Re: LECTO-GRABADOR de tarjetas MMC , SD, MicroSD con pic 16F877A
Publicado por: Ducky en 11 de Agosto de 2009, 22:53:52
Hola!!

Bueno les comento quite la interrupcion por rs232 y la falla continuo, la verdad esque sigo sin entender bien porque me fallaba, ya que si yo ingresaba datos digamos de 15 caracteres funcionaba bien todo el tiempo pero ya cuando se empezaba a llenar el bloque era cuando no respondia correctamente ejemplo:

Error:
00 listo para escribir
01 listo para escribir     //hasta aqui todo iba bien
0202020202020202020202020202 // aqui fallo

bien ahora lo que hice para solucionar temporalmente esto en lo que consigo aclarar mis ideas de porque falla  :D, fue una especie de reset, al momento de que se empieza a ciclar reinicio la MMC y  vuelve a funcionar correctamente

gracias por su ayuda y les comento despues como salio el proyecto!!!

saludos!!
Título: Re: LECTO-GRABADOR de tarjetas MMC , SD, MicroSD con pic 16F877A
Publicado por: Suky en 11 de Agosto de 2009, 22:54:53
Hola a todos!! Muy bueno este hilo! Aunque tengo que decir que ando un poco mareado con tanta informacion... A ver si me pueden tirar una mano como para orientarme un poco por donde tengo que empezar. Estoy trabajando con un PIC18F4550, programando en C y compilando con HTSFT PICC18. La idea es hacer un loggeo de datos provenientes de un gps y algunos sensores, con estos datos, ir generando "vectores de informacion" e ir almacenandolos en una memoria SD para luego ser leidos en una compu cualquiera (supongo el formato que debo guardar es txt) , luego en la compu se hara algun que otro proceso de los datos que vengan en la SD.

Planteado esto... como deberia encarar el diseño?
Tendria que trabajar con formato FATXX ?
Por donde me aconsejan empezar probando? se me ocurria simular en proteus lo que vaya haciendo, alguno probo de simular?

Espero me puedan acomodar un poco las ideas, ire subiendo progresos ni bien pueda avanzar!!

Gracias!
Por lo que presentas lo ideal es trabajar con algún formato FAT, ya sea 16 o 32. Lo primero que debes hacer es conseguir la tarjeta que soporte el modo SPI.
Luego establecer la comunicación con la memoria, osea la inicialización, lectura/escritura de los sectores, etc. Para realizar la rutina y probar algunas cosas te sirve la simulación, pero te aconsejo que lo vayas probando en el circuito. Después de logrado esto ya podes ir a realizar las funciones que implementen el formato FAT. Lo mejor que he encontrado con respecto al protocolo SPI en memorias es el siguiente pdf  (http://www.cs.ucr.edu/~amitra/sdcard/ProdManualSDCardv1.9.pdf), otra herramienta importe es el soft WinHex que te permite ver en hexadecimal los datos de la memoria.
Con respecto a FAT podes leer el articulo de Ariel FAT al desnudo (http://www.ucontrol.com.ar/wiki/index.php/FAT_al_desnudo), esta casi todo, pero si te surgen dudas en la implementación de las entradas FAT y algunas otras cositas revisa FAT32 File System Specification (http://staff.washington.edu/dittrich/misc/fatgen103.pdf)


Saludos!
Título: Re: LECTO-GRABADOR de tarjetas MMC , SD, MicroSD con pic 16F877A
Publicado por: richardjr en 12 de Agosto de 2009, 11:06:56
OK! Gracias por la orientacion! A medida que vaya avanzando ire haciendo aportes ! Gracias!
Título: Re: LECTO-GRABADOR de tarjetas MMC , SD, MicroSD con pic 16F877A
Publicado por: richardjr en 14 de Agosto de 2009, 17:39:00
Buenas!!! Aca de nuevo, he estado peleando con esto y he salido con la cabeza en alto  :o  .Pude hacer la emulacion del SPI ,inicializar y escribir la memoria MMC!
El codigo lo tengo hecho para HTPIC PICC18 , el que necesite me pide y se lo mando. No lo subo porque son muchos archivos, pero bueno, sepan que esta disponible!

Suky, siguiendo los pasos que me decis, ahora deberia implementar FAT... despues cuento como me fue con eso... la verdad estoy cero , habra que ponerse a leer!!!!


Sds!
Título: Re: LECTO-GRABADOR de tarjetas MMC , SD, MicroSD con pic 16F877A
Publicado por: Suky en 14 de Agosto de 2009, 19:25:38
Grande! Yo la implementación de FAT la hice siguiendo el articulo de Ariel, FAT al desnudo, por ahora solo la simule y funciona, haber si este finde la pruebo con el hard  :mrgreen: Cualquier duda aquí estamos.


Saludos!
Título: Re: LECTO-GRABADOR de tarjetas MMC , SD, MicroSD con pic 16F877A
Publicado por: PHLAKO en 21 de Agosto de 2009, 13:28:31
exelente, hace mucho segui un hilo...pero ya nadie posteo, me quede con la ultima palabra y con problemas en la lectura, ya me dio ganas de retomar el tema :-/

salu2 :) y felicitaciones.
Título: Re: LECTO-GRABADOR de tarjetas MMC , SD, MicroSD con pic 16F877A
Publicado por: fidodido18 en 22 de Agosto de 2009, 16:08:23
Ok!!

Aqui dejo mi programa adjunto en un .txt, lo estoy programando en CCS C

Gracias!!!

interesante, estoy viendo tu programa una pregunta cuando guardas los datos en la MMC de esta forma y la insertas en una computadora que sale? todavia no he tenido la oportunidad de trabajar con una MMC o SD. Esto es para saber si es posible que algun posible usuario nada mas saque la MMC y vea en su portatil los datos.

es posible?? y en qe formato lo entrega?
Título: Re: LECTO-GRABADOR de tarjetas MMC , SD, MicroSD con pic 16F877A
Publicado por: Suky en 22 de Agosto de 2009, 16:12:49
Para que puedas ver en windows los datos guardados debes implementar algún formato como FAT16 o FAT32.


Saludos!
Título: Re: LECTO-GRABADOR de tarjetas MMC , SD, MicroSD con pic 16F877A
Publicado por: Ducky en 24 de Agosto de 2009, 22:29:14
Hola!!

fidodido18 me parce que necesitas utilizar el formato FAT para poder ver los datos en cualquier equipo, yo para ver los datos en la PC utilizo el WINHEX, ahora los datos yo los pido por RS-232 y ya veo con exactitud lo que guarde. :mrgreen:

Saludos!!
Título: Re: LECTO-GRABADOR de tarjetas MMC , SD, MicroSD con pic 16F877A
Publicado por: Ducky en 09 de Noviembre de 2009, 22:33:06
Hola que tal yo ya consegui escribir en un txt creado en la SD apartir del PIC18FXX2 y el compilador mikroC 2009, el problema es que solo escribo lo que yo programe previamente, ahora nose si alguien me pueda ayudar con esto, me gustaria que guarde lo que yo mande por el puerto RS232. la instrucion que utilizo es esto:

unsigned char txt[] = "Esto es lo que guardo en el TXT";
Mmc_Fat_Write(txt,sizeof(txt));

como le ago para que esto me guarde lo que llegue por el puerto serial, me imagino que deberia de llenar una array o algo por el estilo pero no se como hacerlo en mikroC.

agradeceria mucho su ayuda Gracias.

Saludos !!

NOTA:Me gustaria comentar las memorias MMC/SD, al escribir sobre sus bloquees sin usar la FAT, corren el riesgo de destruir por completo su estructura que esta puede llegar a bloquearse por completo y se vuelve inservible.
Título: Re: LECTO-GRABADOR de tarjetas MMC , SD, MicroSD con pic 16F877A
Publicado por: Ducky en 18 de Noviembre de 2009, 12:39:14
Hola que tal, solo paso a comentar que eh!! conseguido resolver mi problema y si efectivamente tenia que hacer un llenado de buffer, ya con esto consegui escribir correctamente en la MMC/SD con su FAT sin ningun problema :-/, umm eso si Tiene que ser FAT16 sino no funciona jejeje.

Saludos!! :lol:
Título: Re: LECTO-GRABADOR de tarjetas MMC , SD, MicroSD con pic 16F877A
Publicado por: NANO1985 en 19 de Noviembre de 2009, 10:46:02
Felicitaciones!!! Ducky!!!... esperamos más de tus avances!...
saludos German  8)
Título: Re: LECTO-GRABADOR de tarjetas MMC , SD, MicroSD con pic 16F877A
Publicado por: eldo en 04 de Agosto de 2011, 04:46:36
buenas, yo estoy en la misma situacion que nano, he logrado inicializar la memoria pero no he logrado que me responda al cmd24, alguna sugerencia???? los pasos que sigo son creo los mismos que siguio nano:
envio cmd24 espero que me responda con un 0x00.
envio el token oxfe.
envio los 512 bytes.
envio los dos 0xff
y a continuacion espero la respuesta 0x05
el problema es que nunca llega dicha respuesta...
Título: Re: LECTO-GRABADOR de tarjetas MMC , SD, MicroSD con pic 16F877A
Publicado por: inventor1967 en 01 de Octubre de 2014, 01:48:58
Estoy tratando de trabajar la memorias con un 18f4550 y en asembler
Tengo unas tarjetas de 4 GB micro SD HC C4, envío los 80 pulsos de relog, les envío comando 0, comando  8 y comando 1 hasta ahí parecen responder estoy tratando de enviar comando 17 para leer y me responde un  82h y luego  ffh
el comando lo envío así  51 00 A0 4C 00 FF porque quisiera leer desde ahí por ejemplo, que se supone una dirección válida según  winhex
Pueden por favor ayudarme a encontrar el error? Gracias desde ya, adjunto imagen del contenido según winhex
(http://)