Foros de Electrónica

Comunidad de discusión sobre Automatización, Electrónica industrial, Microcontroladores y electrónica digital, Robótica, Domótica, Telemática, Tecnologías móviles, y muchos temas más.




Lecto-grabador de tarjetas MMC, SD, MicroSD con PIC16F877A


       



#21  
marcosbrusa

Registrado: 06 Ago 2007
Mensajes: 10
Ubicación: Argentina
citar
Hola. En realidad si tu tarjeta es de64Mbytes y podes direccionar65535 sectores entonces del cociente sacas la cantidad de sectores. ESO ENTIENDO??? pero recien arranco con esto del FAT16 y en verdad esta groso el tema. AGRADECER"IA CUALQUIER AYUDA QUE ME PUEDAN DAR.

#22  
Kim_of_the_river

Registrado: 07 Mar 2007
Mensajes: 7
Ubicación: Barcelona
citar
Yo tb estoy intentando dar formato de texto al asunto, como se puede crear un .txt a partir de valores haxadecimales guardados en sectores? (!?) no se si la SD funciona como un disco duro pero este guarda los datos de forma aleatoria ( no se si estor en lo cierto) .Agradezco vuestra ayuda de antemano y deciros que me motiva muchisimo ver a personas que estan intentando lo mismo que yo.

#23  
Paloky

Registrado: 21 Abr 2006
Mensajes: 147
Ubicación: Mataró, Barcelona
citar
Hola.

Alguien sabe algo sobre las nuevas especificaciones de las tarjetas SD HC (version 2.0).

Tengo entendido que no hay compatibilidad con las actuales SD Standard y por tanto, con el bus SPI, solo podremos trabajar con tarjetas de hasta 2Gb.

Teneis información sobre como funciona el nuevo host ?
Se puede programar las nuevas especificacione con los PIC?

Gracias.

#24  
enriquito8

Registrado: 02 Oct 2007
Mensajes: 3
Ubicación: Colombia
citar
Hola, Estoy trabajando para lograr la comunicacion de la tarjeta SD con un PIC18F2550 pero hasta ahora me estoy iniciando en la programacion en C, Aunno logro que la tarjeta me de respuesta alguna.aca dejo mi codigo no se que pueda ser el problema.
void main (void)
{


TRISA = 0X20;
TRISB = 0X01;
TRISC= 0X00;
SSPSTAT = 0X00;
SSPCON1 = 0X32;


PORTC=0X00;
PORTB=0X00;

// TRISBbits.TRISB1 = 0; //SE CONF. PIN7 PORTB COMO SALIDA .
// TRISAbits.TRISA5 = 1;
// TRISCbits.TRISC7 = 0;


//Enviando ciclos de reloj para sincronismo
for(i=0;i<10;i++)
{
SPI_WRITE(0xFF);
}

PORTAbits.RA4 = 0;

//CMD0

while(RXDATO!=1){
SPI_WRITE(0x40);
SPI_WRITE(0x00);
SPI_WRITE(0x00);
SPI_WRITE(0x00);
SPI_WRITE(0x00);
SPI_WRITE(0x95);

for(i=0;i<64;i++)
{
SPI_WRITE(0xFF);

if(SSPSTATbits.BF==1){
RXDATO=SSPBUF;

if(RXDATO==0x01)
{
PORTBbits.RB7=1;
Delay10KTCYx (250);
PORTBbits.RB7=0;
Delay10KTCYx (250);
PORTBbits.RB7=1;
Delay10KTCYx (250);
PORTBbits.RB7=0;
Delay10KTCYx (250);
RXDATO=1;
break;
}
}

}

}



PORTAbits.RA4 = 1;
SPI_WRITE(0XFF);
Delay10KTCYx (250);

//CMD1
PORTAbits.RA4 = 0;
while(RXDATO!=0x02){
SPI_WRITE(0x41);
SPI_WRITE(0x00);
SPI_WRITE(0x00);
SPI_WRITE(0x00);
SPI_WRITE(0x00);
SPI_WRITE(0xFF);

for(i=0;i<64;i++)
{
SPI_WRITE(0xFF);
if(SSPSTATbits.BF==1){
RXDATO=SSPBUF;

if(RXDATO==0x00)
{
PORTBbits.RB7=1;
Delay10KTCYx (250);
PORTBbits.RB7=0;
Delay10KTCYx (250);
PORTBbits.RB7=1;
Delay10KTCYx (250);
PORTBbits.RB7=0;
Delay10KTCYx (250);
RXDATO=0x02;
break;
}
}
}
}


PORTAbits.RA4 = 1;
SPI_WRITE(0XFF);
Delay10KTCYx (250);

#25  
Kim_of_the_river

Registrado: 07 Mar 2007
Mensajes: 7
Ubicación: Barcelona
citar
Que compilador usas?

#26  
enriquito8

Registrado: 02 Oct 2007
Mensajes: 3
Ubicación: Colombia
citar
La version Estudiantil del C18 de Microchip junto al Mplab, porque lo dices?.En el momento de compilar no tengo problemas, tengo sospechas en el manejo de los voltajes de las señales que salen y entran al micro.con respecto a las señales que salen del micro hacia la tarjeta(SCK,SDO,CS), usando divisores de voltajes hecho con resistencias bajo de 5v a 3v (el voltaje de trabajo de la tarjeta).pero no se si la señal que viene de la tarjeta al Micro(al SDI)debo aumentarla de 3V a 5V, para que el PIC la reconozca.Muchachos Muchas Gracias por Su Atencion

#27  
hawpic

Registrado: 15 Oct 2007
Mensajes: 4
Ubicación: Zaragoza
citar
Hola a todos. Me alegra ver que no soy el unico que tiene esta faena por delante. Lo que yo necesito es comunicar mi µ (en principio un pic 16F890) primero con una eeprom externa y despues con una tarjeta multimedia. Aun estoy pensando como hacerlo, mirando protocolos y esas cosas. En principio iba a programar el µ en ensamblador porque es como he estado trabajando hasta ahora, pero veo que vosotros lo haceis en C. Supongo que es mas sencillo hacerlo en C pero, creeis que es una locura intentarlo en ensamblador? Alguien me puede decir que es mejor para este caso en concreto? Gracias!

#28  
marcosbrusa

Registrado: 06 Ago 2007
Mensajes: 10
Ubicación: Argentina
citar
Hola a todos. Es la primera vez que voy a programar pics 16c711. Tengo el ic prog en el cual esta este pic como opcion de programacion. Pero no se cuales pines se usan en la grabacion, ya que mi idea es hacerlo in circuit. thanks

#29  
marcosbrusa

Registrado: 06 Ago 2007
Mensajes: 10
Ubicación: Argentina
citar
Se que se usan los pines vdd, vss, pgc, pgd y vpp. Pero cuando lo conecto en el socalo para el pic 18f876, respetando la disposicion de los pines no me funciona.
Alguien sabe en que fallo?

#30  
enriquito8

Registrado: 02 Oct 2007
Mensajes: 3
Ubicación: Colombia
citar
Hola Muchachos he conseguido comunicarme con la tarjeta pero aun no logro escribirla y pasa algo bastante particular, cuando termino de enviar el bloque no me llega un byte de confirmacion si no nuevamente un byte en cero (0x00), miro en el hexplorer y efectivamente no aparece mi escritura.aqui parte del codigo.Gracias Por La Atencion
//CMD 16

//PORTAbits.RA4 = 0;
// while(RXDATO!=0x00){
// SPI_WRITE(0x50);
// SPI_WRITE(0x00);
SPI_WRITE(0x00);
SPI_WRITE(0x02);
SPI_WRITE(0x00);
SPI_WRITE(0xFF);

for(i=0;i<64;i++)
{

if(SSPSTATbits.BF==1){
RXDATO=SSPBUF;
if(RXDATO==0x00)
{
break;
}
}
SPI_WRITE(0xFF);
}
}


PORTAbits.RA4 = 1;
SPI_WRITE(0XFF);
Delay10KTCYx (250);


//CMD24
PORTAbits.RA4 = 0;

while(RXDATO!=0x05){

while(RXDATO!=0X03){
SPI_WRITE(0x58);
SPI_WRITE(0x00);
SPI_WRITE(0x00);
SPI_WRITE(0x00);
SPI_WRITE(0x01);
SPI_WRITE(0xFF);

for(i=0;i<64;i++)
{
if(SSPSTATbits.BF==1){
RXDATO=SSPBUF;
// RXDATO=0x00;
if(RXDATO==0x00)
{

break;
}
}
SPI_WRITE(0xFF);
}

for(i=0;i<64;i++)
{

if(SSPSTATbits.BF==1){
RXDATO=SSPBUF;
// RXDATO=0x00;
if(RXDATO==0x00)
{
break;
}
}
SPI_WRITE(0xFF);
}


for(i=0;i<64;i++)
{
if(SSPSTATbits.BF==1){
RXDATO=SSPBUF;
// RXDATO=0x00;
if(RXDATO==0x00)
{
break;
}
}
SPI_WRITE(0xFF);
}

}

SPI_WRITE(0xFF);
SPI_WRITE(0xFF);
SPI_WRITE(0xFE);

for(i=0;i<512;i++)
{
SPI_WRITE(0x68); //Datos a Escribir
}
SPI_WRITE(0xFF);
SPI_WRITE(0xFF);


for(i=0;i<64;i++)
{

if(SSPSTATbits.BF==1){
RXDATO=SSPBUF;
RXDATO=RXDATO&0X0F;

if(RXDATO==0x05)
{
PORTBbits.RB4=1;
Delay10KTCYx (250);
PORTBbits.RB4=0;
Delay10KTCYx (250);
PORTBbits.RB4=1;
Delay10KTCYx (250);
PORTBbits.RB4=0;
Delay10KTCYx (250);
break;
}
}
SPI_WRITE(0xFF);
}

}

while(RXDATO!=0xFF)
{
if(SSPSTATbits.BF==1){
RXDATO=SSPBUF;
}
SPI_WRITE(0xFF);
}


PORTAbits.RA4 = 1;
SPI_WRITE(0XFF);
Delay10KTCYx (250);

 Responder



Google
 


 Temas de interés 
No hay mensajes nuevos enviar mensajes de texto sin usar el teclado del celular.
No hay mensajes nuevos Enviar video en vivo por internet
No hay mensajes nuevos Enviar comandos por RS232 en visual basic
No hay mensajes nuevos Enviar comunicacion via RS232 a servidor
No hay mensajes nuevos Contador de pulsos unido al microcontrolador DLP-245PB

Foros de Electronica
|| Cuestiones Elementales de Electrónica || Fuentes de alimentacion || Circuitos de radio || Diseño de circuitos en general ||
|| Sistemas de Audio: Preamplificadores, Ecualizadores || Amplificadores || Reparación || Discusión ||
|| Microcontroladores y sistemas embebidos || Circuitos logicos combinacionales y secuenciales || Interfaces y Programacion || Dudas en general || Sistemas de Video || PC Hardware || Telematica y comunicaciones || Tecnologias moviles || Software Electronico || Robotica, Domotica y Mecatronica || Autotrónica || Automatizacion, Electronica industrial y de Potencia || Documentacion, circuitos y esquemas || Donde Las Ideas Convergen... || Tutoriales y Manuales || Proyectos Prácticos ||