CCS C Software and Maintenance Offers
FAQFAQ   FAQForum Help   FAQOfficial CCS Support   SearchSearch  RegisterRegister 

ProfileProfile   Log in to check your private messagesLog in to check your private messages   Log inLog in 

CCS does not monitor this forum on a regular basis.

Please do not post bug reports on this forum. Send them to CCS Technical Support

PIC 18F458 WITH SD CARD

 
Post new topic   Reply to topic    CCS Forum Index -> General CCS C Discussion
View previous topic :: View next topic  
Author Message
BATACO
Guest







PIC 18F458 WITH SD CARD
PostPosted: Tue Jul 25, 2006 3:42 pm     Reply with quote

Hi � :)

I�m using a PIC18F458 with a SD CARD 512MB, the problem is:

I don�t see where is my code HEX ����. I loaded a 512 block into the the pic�S RAM, then I wrote the block into de SD, then i read it.... by USART.
But when i read the SD CARD with DISKEDIT, I don�t found nothing......

Why????


Anybody, have idea?
rberek



Joined: 10 Jan 2005
Posts: 207
Location: Ottawa, Canada

View user's profile Send private message

PostPosted: Tue Jul 25, 2006 7:02 pm     Reply with quote

I assume DISKEDIT expects to see some sort of file system (i.e. FAT or NTFS) on the card. Did you create a file system on the card?
dmendesf



Joined: 31 Dec 2005
Posts: 32

View user's profile Send private message

PostPosted: Tue Jul 25, 2006 8:19 pm     Reply with quote

Can you show the code you used to talk with the SD card?
Guest








Re: PIC 18F458 WITH SD CARD
PostPosted: Wed Aug 02, 2006 10:08 am     Reply with quote

BATACO wrote:
Hi � Smile

I�m using a PIC18F458 with a SD CARD 512MB, the problem is:

I don�t see where is my code HEX ����. I loaded a 512 block into the the pic�S RAM, then I wrote the block into de SD, then i read it.... by USART.
But when i read the SD CARD with DISKEDIT, I don�t found nothing......

Why????


Anybody, have idea?


Code:

#include <18F458>
#fuses   HS,NOWDT,NOPROTECT,NOLVP
#use delay(clock = 20000000)
#use rs232(baud=19200, xmit=PIN_C6, rcv=PIN_C7, ERRORS)
#include <stdio.h>
#include <input.c>
#define BUFFSIZE 512


#use fast_io(C)
#byte SSPBUF = 0xFC9
#byte SSPCON = 0xFC6
#byte SSPSTAT = 0xFC7
#bit  BF = SSPSTAT.0
#bit SMP = SSPSTAT.7
#bit CKE = SSPSTAT.6
#bit CKP = SSPCON.4
#bit SSPM1 = SSPCON.1
#bit SSPEN = SSPCON.5

#byte PORTC = 0xF82
#bit CS = PORTC.2




//****************************************//
//            Store in RAM


byte buffer1[BUFFSIZE];
//  buffer ( array element)
//  memory locations
// one large array.


void write_buffer( int16 index, char value) {
     if(index<BUFFSIZE)
     buffer1[index]=value;

     }
char read_buffer( int16  index) {
     if(index<BUFFSIZE)
     return(buffer1[index]);

     }



//****************************************//
//     To Store in 512 array RAM

int16  i;              //initialize the variable
char   a;

char BLOCK_SD()
{
for(i=0; i <499>> 8);
SPI(AdrH);
SPI(AdrL >> 8);
SPI(AdrL);
SPI(befH);
SPI(0xFF);
return SPI(0xFF);      // Return with the response
}
//********************************************

char MMC_Init()
{
char i;

// Init SPI
SMP=0;
CKE=0;
CKP=1;
SSPM1=1;
//SSPM0=1;
SSPEN=1;

CS=1;      // MMC-Disabled

// MMC in SPI Mode -- start and Reset.
for(i=0; i < 10; i++) SPI(0xFF);             // 10*8=80 clocks
CS=0;                                             // MMC-Enabled

// CMD0
if (Command(0x40,0,0,0x95) !=1) goto Error;    // Reset

st:
// CMD1
if (Command(0x41,0,0,0xFF) !=0) goto st ;   // CMD1

return 1;

Error:
return 0;
}
//*********************************************

void main(void)
{


int16 i;



printf("\n             **STARTING**\n\n\n");

putc(0xD);

if(BLOCK_SD())
printf("\n\n         ***CONNECT THE SD-CARD***\n\r");

setup_port_a(NO_ANALOGS);
set_tris_c(0b11010011);    // sck rc3-0, sdo rc5-0, CS rc2-0.

puts("  ***PROGRAMA QUE MANDA 512 DATOS A LA SD Y LOS MUESTRA POR USART***\n\r");
puts("  ***INICIALIZACION DE PUERTOS DEL PIC***\n\r");
if(MMC_Init())
   puts("  ***EN ESTE MOMENTO SE INICIALIZA LA SD***\n\r");       // MMC Init OK

//*****************************************

//Write in 512 Byte-Mode
if (Command(0x58,0,512,0xFF) !=0)   puts("Write error ");
SPI(0xFF);
SPI(0xFF);
SPI(0xFE);

SPI("Inicio\n\r");   // 8 characters

for(i=0; i < 499; i++)   // Was 512, but used 13 for text
{
SPI(read_buffer(i));
}
SPI("\n\rFin");   // 5 characters


SPI(255);       // Send two bytes of 0xFF at the end
 SPI(255);
i=SPI(0xFF);
i &=0b00011111;
if (i != 0b00000101) puts("Write Error ");
while(SPI(0xFF) !=0xFF); // Wait for end of Busy condition

//*************************************

// Read in 512 Byte-Mode
if (Command(0x51,0,512,0xFF) !=0)  puts("Read Error ");

while(SPI(0xFF) != 0xFE);

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

    putc(SPI(0xFF));      // Send data
   }
SPI(0xFF);     // Send two bytes of 0xFF at the end
SPI(0xFF);



//**********************************************
while(1);       // The program stops here.
}
dmendesf



Joined: 31 Dec 2005
Posts: 32

View user's profile Send private message

PostPosted: Wed Aug 02, 2006 10:22 am     Reply with quote

Probably you are not writing to the same address that you are reading in your PC program. This happened to me too. Do the follwing: white a routine to put a number in ascending order in each page of the SD card (page 0 -> 0, page 1-> 1, etc...) Then read them in the PC. Probably i�ll see them in another order. This happened to me when i was playing with an MMC card.
ckielstra



Joined: 18 Mar 2004
Posts: 3680
Location: The Netherlands

View user's profile Send private message

PostPosted: Wed Aug 02, 2006 10:41 am     Reply with quote

I have no experience with Diskedit, but as Rberek already suggested it might be that Diskedit expects some kind of file system on the disk (bootblock, partition table, etc). This would cause Diskedit to start reading data with an address offset, when you tell it to read from address 0 it actually reads from something like 0x1234.
I've experienced similar behaviour with another disk editing tool and was able to find my data when I tried another tool: http://hexplorer.sourceforge.net

Suggestion: use the search function of Hexplorer.
Display posts from previous:   
Post new topic   Reply to topic    CCS Forum Index -> General CCS C Discussion All times are GMT - 6 Hours
Page 1 of 1

 
Jump to:  
You cannot post new topics in this forum
You cannot reply to topics in this forum
You cannot edit your posts in this forum
You cannot delete your posts in this forum
You cannot vote in polls in this forum


Powered by phpBB © 2001, 2005 phpBB Group