Con esta modificación me dice "Card Init Time Out" :(
Esto es cosa de meigas...
Suky, ¿cómo conectas el SDI? ¿Lo conectas directamente al pic o mediante un buffer para igualar tensiones?
yo lo tengo puesto mediante un buffer que son dos puertas nand con las entradas unidas (queda un inversor) en serie. Así niego 2 veces por lo que la señal queda igual. Es que no tenía inversores :oops:
putrsUSART("\nenvío por el SPI");
WriteSPI(CmdPacket.cmd); //Send Command
WriteSPI(CmdPacket.addr3); //Most Significant Byte
WriteSPI(CmdPacket.addr2);
WriteSPI(CmdPacket.addr1);
WriteSPI(CmdPacket.addr0); //Least Significant Byte
WriteSPI(CmdPacket.crc); //Send CRC
putrsUSART("\nse supone que tengo respuesta:");
WriteUSART(sdmmc_cmdtable[cmd].responsetype);
putrsUSART(sdmmc_cmdtable[cmd].responsetype);
// see if we are going to get a response
if(sdmmc_cmdtable[cmd].responsetype == R1 || sdmmc_cmdtable[cmd].responsetype == R1b)
{
do
{
response.r1._byte = ReadMedia();
timeout--;
WriteUSART(response.r1._byte);
}while((response.r1._byte == 0xFF) && (timeout != 0));y no me saca nada :huh:
putrsUSART("\nse supone que tengo respuesta:");
WriteUSART(sdmmc_cmdtable[cmd].responsetype);
putrsUSART(sdmmc_cmdtable[cmd].responsetype);WriteUSART(response.r1._byte);for(timeout=0; timeout<10; timeout++)
WriteSPI(0xFF);
WriteSPI(CmdPacket.cmd); //Send Command¿Pero es otro código?
¿Entonces no sólo soy yo? :oops:
No sé si alegrarme o entristecerme
Hola! Soy nuevo con eso de los SD & MMC...
Pueden disponibilizar el schematic???
Gracias! :)
Iniciando SD Card
Se ha iniciado correctamente la memoria!!!
Lectura del CID:
Lectura del CSD:
Se realiza escritura de la memoria en 512:
Se lee el sector de la memoria 0:
Error! No se ha podido leerIniciando SD Card
--> Se inicia sincronizacion
--> Se envia CMD0 (Se desactiva SD Card)
Repeticiones para respuesta de CmdXX: 2; Respuesta recibida:1
--> Se envia CMD1 (Se activa SD Card)
Repeticiones para respuesta de CmdXX: 2; Respuesta recibida:1
Repeticiones para respuesta de CmdXX: 2; Respuesta recibida:1
Repeticiones para respuesta de CmdXX: 2; Respuesta recibida:0
--> Se envia CMD16 (Se fija largo del Bloque para escritura/lectura : 512)
Repeticiones para respuesta de CmdXX: 2; Respuesta recibida:0
--> Se envia CMD59 (Desactivación de CRC)
Repeticiones para respuesta de CmdXX: 2; Respuesta recibida:0
Se ha iniciado correctamente la memoria!!!
Lectura del CID:
--> Se envia CMD10 (Lectura de CID)
Repeticiones para respuesta de CmdXX: 2; Respuesta recibida:0
Toquen recibido: 0xFE
Manufacturer ID: 1B
OEM/Application ID: SM
Product Name: 00000
Product Revision: 10
Serial Number: B157967E
Manufacturer Date Code: 0094
CRC-7 Checksum: 47
Lectura del CSD:
--> Se envia CMD9 (Lectura de CSD)
Repeticiones para respuesta de CmdXX: 2; Respuesta recibida:0
Toquen recibido: 0xFE
CSD_STRUCTURE: 00
TAAC: 7F
NSAC: B0
TRAN_SPEED: 32
CCC: 05F5
READ_BL_LEN: 09
READ_BL_PARTIAL: 01
WRITE_BLK_MISALIGN: 00
READ_BLK_MISALIGN: 00
DSR_IMP: 00
C_SIZE: 33
VDD_R_CURR_MIN: 06
VDD_R_CURR_MAX: 06
VDD_W_CURR_MIN: 06
VDD_W_CURR_MAX: 06
C_SIZE_MULT: 06
ERASE_BLK_EN: 01
SECTOR_SIZE: 3F
WP_GRP_SIZE: 7F
WP_GRP_ENABLE: 01
R2W_FACTOR: 05
WRITE_BL_LEN: 09
WRITE_BL_PARTIAL: 00
FILE_FORMAT_GRP: 00
COPY: 00
PERM_WRITE_PROTECT: 00
TMP_WRITE_PROTECT: 00
FILE_FORMAT: 00
CRC: CB
Se realiza escritura de la memoria en 512:
--> Se envia CMD24 (Escritura de bloque)
Repeticiones para respuesta de CmdXX: 2; Respuesta recibida:0
Se envia Token (0xFE)
Se envia Bloque de datos
Respuesta de recepción del bloque: 0xE5 (***00101)
Escritura Terminada
Se lee el sector de la memoria 0:
--> Se envia CMD17 (Lectura de bloque)
Repeticiones para respuesta de CmdXX: 2; Respuesta recibida:0
Toquen recibido: 0xFE
Terminada la lectura
Valores Leidos:
EB,FE,90,66,73,69,6D,35,2E,36,30,00,02,20,01,00,02,00,02,00,00,F8,76,00,20,00,02,00,00,00,00,00,
00,B0,0E,00,00,00,29,78,56,34,12,20,20,20,20,20,20,20,20,20,20,20,46,41,54,31,36,20,20,20,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,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,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,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,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,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,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,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,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,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,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,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,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,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,55,AA,
Se lee el sector de la memoria 512:
--> Se envia CMD17 (Lectura de bloque)
Repeticiones para respuesta de CmdXX: 2; Respuesta recibida:0
Toquen recibido: 0xFE
Terminada la lectura
Valores Leidos:
4C,69,62,72,65,72,69,61,20,63,6F,6E,74,72,6F,6C,20,4D,65,6D,6F,72,69,61,20,53,44,20,62,79,20,53,
75,6B,79,2E,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,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,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,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,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,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,4D,82,30,43,BC,40,A1,10,05,E9,5A,CA,45,
07,06,00,4D,28,EA,85,54,0E,00,20,80,EA,10,0D,90,81,1A,80,03,14,11,8C,E0,A4,49,71,23,08,68,80,58,
8C,A7,0C,A1,54,02,02,41,99,2C,00,48,9C,15,CA,A8,D3,24,94,E6,F7,06,00,D3,20,2D,5F,13,E1,8B,14,72,
05,0C,40,87,10,05,0A,84,1D,50,44,20,D2,08,58,40,01,A2,20,CC,1A,40,44,95,62,A1,C8,5C,D1,A0,24,E0,
3B,50,03,93,A0,81,57,00,04,E1,60,17,50,78,0A,12,01,40,30,40,08,86,B1,15,92,91,03,48,9B,10,82,0E,
21,A4,18,AD,56,0E,09,24,91,3A,0C,54,CB,2C,83,00,2C,E8,42,6C,04,F0,C0,11,84,0A,28,35,CA,40,84,24,
19,AC,A8,B8,0D,0C,C0,CB,21,85,04,39,49,10,24,C8,4E,04,B0,C1,4A,05,20,2C,71,60,00,EC,69,1E,10,4A,
81,00,45,45,28,94,5A,70,86,00,98,DD,05,82,04,BB,46,22,20,54,4B,24,43,10,0F,0E,31,7E,84,09,E0,6C,
00,68,02,B3,00,40,04,A3,82,8E,93,1C,2C,0B,19,03,80,E0,98,20,56,C0,2C,31,54,08,40,01,42,FE,20,64,
08,81,22,92,43,30,C0,23,01,2C,00,11,08,25,88,72,42,AE,1D,42,44,19,10,28,10,49,24,00,00,00,00,00,Todo un avance!!! :-/ :-/ :-/
Ahora queda lo difícil :5]
Cómo me has alegrado el día :mrgreen: :mrgreen:
ya tengo internet en casa XD
yo he revisado el modo del spi y tiene estos:
CKP: Clock Polarity Select bit
1 = Idle state for clock is a high level
CKE: SPI Clock Select bit
0 = Transmit occurs on transition from Idle to active clock state
#define SMPMID 0x00 // Input data sample at middle of data out
Iniciando SD Card
--> Se inicia sincronizacion
--> Se envia CMD0 (Se desactiva SD Card)
Repeticiones para respuesta de CmdXX:
Iniciando SD Card
--> Se inicia sincronizacion
--> Se envia CMD0 (Se desactiva SD Card)
Repeticiones para respuesta de CmdXX: 1; Respuesta recibida:0
Repeticiones para respuesta de CmdXX: 1; Respuesta recibida:
Iniciando SD Card
--> Se inicia sincronizacion
--> Se envia CMD0 (Se desactiva SD Card)
Repeticiones para respuesta de CmdXX:
Iniciando SD Card
--> Se inicia sincronizacion
--> Se envia CMD0 (Se desactiva SD Card)
Repeticiones para respuesta de CmdXX: 1; Respuesta recibida:
Iniciando SD Card
--> Se inicia sincronizacion
--> Se envia CMD0 (Se desactiva SD Card)
Repeticiones para respuesta de CmdXX:
Iniciando SD CardIniciando SD Card
--> Se inicia sincronizacion
--> Se envia CMD0 (Se desactiva SD Card)
Repeticiones para respuesta de CmdXX: 1; Respuesta recibida:
Repeticiones para respuesta de CmdXX: 1; Respuesta recibida:
Repeticiones para respuesta de CmdXX: 1; Respuesta recibida:
Iniciando SD Card
--> Se inicia sincronizacion
--> Se envia CMD0 (Se desactiva SD Card)
Repeticiones para respuesta de CmdXX: 1; Respuesta recibida:0
Repeticiones para respuesta de CmdXX: 1; Respuesta recibida:0
Repeticiones para respuesta de CmdXX: 1; Respuesta recibida:0
Repeticiones para respuesta de CmdXX: 1; Respuesta recibida:0
Repeticiones para respuesta de CmdXX: 1; Respuesta recibida:0
Repeticiones para respuesta de CmdXX: 1; Respuesta recibida:0
Repeticiones para respuesta de CmdXX: 1; Respuesta recibida:0
Repeticiones para respuesta de CmdXX: 1; Respuesta recibida:0
Repeticiones para respuesta de CmdXX: 1; Respuesta recibida:0
Repeticiones para respuesta de CmdXX: 1; Respuesta recibida:0
--> Se envia CMD10 (Lectura de CID)
Repeticiones para respuesta de CmdXX: 1; Respuesta recibida:0
--> Se envia CMD9 (Lectura de CSD)
Repeticiones para respuesta de CmdXX: 1; Respuesta recibida:
Iniciando SD Card
--> Se inicia sincronizacion
--> Se envia CMD0 (Se desactiva SD Card)
Repeticiones para respuesta de CmdXX: 1; Respuesta recibida:0
Repeticiones para respuesta de CmdXX: 1; Respuesta recibida:0
Repeticiones para respuesta de CmdXX: 1; Respuesta recibida:0
Repeticiones para respuesta de CmdXX: 1; Respuesta recibida:
Repeticiones para respuesta de CmdXX: 1; Respuesta recibida:0
Repeticiones para respuesta de CmdXX: 1; Respuesta recibida:0
Repeticiones para respuesta de CmdXX: 1; Respuesta recibida:0
Repeticiones para respuesta de CmdXX: 1; Respuesta recibida:
Iniciando SD Card
--> Se inicia sincronizacion
--> Se envia CMD0 (Se desactiva SD Card)
Repeticiones para respuesta de CmdXX:
Iniciando SD Card
--> Se inicia sincronizacion
--> Se envia CMD0 (Se desactiva SD Card)
Repeticiones para respuesta de CmdXX: 1; Respuesta recibida:0
Repeticiones para respuesta de CmdXX: 1; Respuesta recibida:0
Repeticiones para respuesta de CmdXX: 1; Respuesta recibida:0
Repeticiones para respuesta de CmdXX: 1; Respuesta recibida:0
Repeticiones para respuesta de CmdXX: Respuesta recibida:1
Repeticiones para respuesta de CmdXX: 1; Respuesta recibida:0
Repeticiones para respuesta de CmdXX: 1; Respuesta recibida:0
Repeticiones para respuesta de CmdXX: 1; Respuesta recibida:0
Repeticiones para respuesta de CmdXX: 1; Respuesta recibida:
Iniciando SD Card
La MMC creo que si funciona :?
Hiciste el cambio en la definición del pin CS? Voy a revisar haber que puede ser :?Sí, al principio se me pasó :oops: y cuando no leía nada miré a ver que podía ser y me dí cuenta de que no lo había cambiado :mrgreen:
Saludos!
Luego, con el archivo de Proteus, puedo simular com el SDCard.c? O es el SDCarCSS.c???????
//SETUP_SPI(SPI_MASTER|SPI_CLK_DIV_16|SPI_H_TO_L|SPI_XMIT_L_TO_H ); #use spi(MASTER,CLK=PIN_A0, DO=PIN_A1, DI=PIN_A2, BITS=8, MODE=3, MSB_FIRST, stream=BUS_SPI, FORCE_SW)#use spi(MASTER,CLK=PIN_A0, DO=PIN_A1, DI=PIN_A2, BITS=8, MODE=3, MSB_FIRST, stream=SDCard, FORCE_SW)Hola chicos!Hay que dedicarse y estudiar un poco el tema, las SD Card usa comunicación SPI y necesita 5 lineas del microcontrolador, luego el DS1307 es I2C, por lo que necesita 2 lineas adicionales y ademas la interface RS232. Veras que SPI y I2C por hardware utilizan los mismos pines, y además la comunicación serial coincide en el pin RC7. Entonces queda definir que comunicación la realizaras mediante hardware y la demás deberás realizarlas por software, que en CCS es muy sencillo pero las velocidades de transmisión máximas cambian.
Soy novata con respecto a las sd card. Me parece interesante y un muy buen tema. Bueno, queria ver si me podian ayudar con el conexionado de la sd card, un ds1307 y una salida serial (o alguno de ellos XD), utilizando el pic 18f4550. Yo estoy usando el proteus (me lo recomendaron) y programo en pic c (ccs). Una imagen o un archivo .dsn me seria util. :mrgreen:
Ademas cual libreria seria la mas adecuada para usar en una sd card de 1GB (en CCS si se puede chiquillos), dado q veo muchas librerias.
Saludos! :o
La colombianita.
Hola chicos!Hay que dedicarse y estudiar un poco el tema, las SD Card usa comunicación SPI y necesita 5 lineas del microcontrolador, luego el DS1307 es I2C, por lo que necesita 2 lineas adicionales y ademas la interface RS232. Veras que SPI y I2C por hardware utilizan los mismos pines, y además la comunicación serial coincide en el pin RC7. Entonces queda definir que comunicación la realizaras mediante hardware y la demás deberás realizarlas por software, que en CCS es muy sencillo pero las velocidades de transmisión máximas cambian.
Soy novata con respecto a las sd card. Me parece interesante y un muy buen tema. Bueno, queria ver si me podian ayudar con el conexionado de la sd card, un ds1307 y una salida serial (o alguno de ellos XD), utilizando el pic 18f4550. Yo estoy usando el proteus (me lo recomendaron) y programo en pic c (ccs). Una imagen o un archivo .dsn me seria util. :mrgreen:
Ademas cual libreria seria la mas adecuada para usar en una sd card de 1GB (en CCS si se puede chiquillos), dado q veo muchas librerias.
Saludos! :o
La colombianita.
Por aquí (http://infopic-suky.blogspot.com/2009/04/buses-de-comunicacion.html)hay unos tutoriales sobre comunicaciones seriales para que veas como debes implementar el hardware.
Saludos!
Te adjunto una librería para el manejo de memorias SD a nivel hard, más un ejemplo de como se usaría, prueba si funciona con la microSD ;-)
Saludos!
primero que todo muchas gracias por sus aportes, pero tengo una duda, hay alguna diferencia al trabajar con memorias SD y micro SD?
gracias