View previous topic :: View next topic |
Author |
Message |
PCM programmer
Joined: 06 Sep 2003 Posts: 21708
|
|
Posted: Sun Jan 11, 2009 5:41 pm |
|
|
Quote: | char * msg;
strcpy(msg,"Written!"); |
'msg' is just an uninitialized pointer here. It needs to point to a RAM
array. Or better, declare it as an array. Example:
That's big enough to hold your sample message of "Written!". |
|
|
ShellTox
Joined: 25 Jul 2007 Posts: 16
|
|
Posted: Mon Jan 12, 2009 8:51 am |
|
|
Hello
Thank you for your answer PCM programmer
I've followed your suggestion but the EVENTS.LOG file remains unchanged.
Does anyone has any suggestion about this problem?
I'm using the 3.3V zener and 820R at the MMC card. The 100k pull-up (to 3.3V) is also there. For Vcc of the card I've used an LD29080PT33R (LDO 3.3V). I've used also a 100nF ceramic capacitor beside the vcc and gnd of the card.
As I've said, the code runs until the "END Writing" printf. I'm starting to think the problem comes from the card. Does anyone tried this code with a 512MB card? Now it's very hard to buy these kind of cards, specially with low storage capacities.
What kind of changes are needed to use a SD card instead of my MMC card? |
|
|
ShellTox
Joined: 25 Jul 2007 Posts: 16
|
|
Posted: Wed Jan 14, 2009 7:36 pm |
|
|
Is there anybody out there?
I know this is an old thread but I don't understand why the users who got the problem resolved don't share their solutions.
This is a forum, a place to share ideas. Read the entire thread and in most cases you see a user saying he has a problem. Then some more experienced users kindly try to sugest solutions. Then what happens? Posts like:
Yay I've solved the problem! Cya
This doesn't help anybody... |
|
|
PCM programmer
Joined: 06 Sep 2003 Posts: 21708
|
|
Posted: Fri Jan 16, 2009 1:55 pm |
|
|
My advice is first make it work with an MMC card, since that's what the
original project code was for. This will prove if your hardware is correct.
Then when that works, try it with an SD card. |
|
|
asmallri
Joined: 12 Aug 2004 Posts: 1634 Location: Perth, Australia
|
|
Posted: Fri Jan 16, 2009 5:15 pm |
|
|
BLL wrote: | Some routines increase the clock speed after switching the card into SPI mode. If the clock is too fast you will have problems! I need div64 on a 2620 using a 20MHz oscillator in HS mode. Any less and it doesn't work. |
This may be the case with this specific driver (I do not know) but it is not generally correct - meaning that an 18F2620 running at 40MHz will successfully work with an MMC card with div4 setting on the setup SPI.
Perhaps you have a hardware implementation problem loading the bus or not pulling up the DO from the card. _________________ Regards, Andrew
http://www.brushelectronics.com/software
Home of Ethernet, SD card and Encrypted Serial Bootloaders for PICs!! |
|
|
ShellTox
Joined: 25 Jul 2007 Posts: 16
|
|
Posted: Tue Jan 20, 2009 12:01 pm |
|
|
Thank you for the replies
I'll try to change the clock div on the SPI setup. |
|
|
manish12
Joined: 18 Jan 2009 Posts: 15
|
|
Posted: Thu Feb 26, 2009 11:39 am |
|
|
I try all of the code with all possible changes but, not success.
Will any body help me out, I think this is just chat about nothing at last !!!
Than enjoy chat ,,, until anyone get dear to say I have complete solution.
|
|
|
asmallri
Joined: 12 Aug 2004 Posts: 1634 Location: Perth, Australia
|
|
Posted: Thu Feb 26, 2009 6:38 pm |
|
|
If you give up then check out my site. I sell the source for the file system that works for FAT12, FAT16 and FAT32 that works with MMC, SD and SDHC cards. _________________ Regards, Andrew
http://www.brushelectronics.com/software
Home of Ethernet, SD card and Encrypted Serial Bootloaders for PICs!! |
|
|
manish12
Joined: 18 Jan 2009 Posts: 15
|
|
Posted: Fri Feb 27, 2009 10:34 am |
|
|
asmallri wrote: | If you give up then check out my site. I sell the source for the file system that works for FAT12, FAT16 and FAT32 that works with MMC, SD and SDHC cards. |
we need help , not a way to buy it, we want to make ourselves.
and if you not interested to help , plz dont make a comment like this ^^ |
|
|
andrewg
Joined: 17 Aug 2005 Posts: 316 Location: Perth, Western Australia
|
|
Posted: Fri Feb 27, 2009 9:48 pm |
|
|
How rude! You bought some PIC chips. You bought a compiler. Why not buy some library code too? _________________ Andrew |
|
|
CLK.Tech
Joined: 30 Apr 2009 Posts: 5
|
|
Posted: Wed May 20, 2009 6:04 am |
|
|
Hi guys!
I'm trying to port this code to a PIC24F but I've some problems: I put some 'printf' to see where the code is executing but it crashed the system and reset the PIC. So I think it doesn't work in PIC24.
Did anybody port the code to a PIC24? Can anybody help me in this?
C U L4T3R! |
|
|
SuperMesna
Joined: 06 Sep 2009 Posts: 1
|
|
Posted: Sun Sep 06, 2009 2:09 am |
|
|
hi
I'm using your code on a 18F452 but it doesn't work correctly yet.
I always get the message:
Quote: |
1st file in list was probably a dir
|
I tried a few cards, all are formated Fat32 and on each there are a
couple of files (no directories).
I tried to print out the information in initFAT().
For a 256MB SD I got:
Quote: |
Bytes Per Sector: 512
Sectors per Cluster: 4
Reserved: 32
Fatcopies: 2
Max Root Entries: 0
hSectors: 0
Descriptor: 248
hold Sectors per Fat: 0
hSectors per Track: 63
Number of Heads: 255
Number of Hidden: 107
Number of Sectors: 474645
hSectors per Fat: 924
hFlags: 0
hFat32 Version: 0
RootStartCluster: 2
|
For a 512MB SD:
Quote: |
Bytes Per Sector: 512
Sectors per Cluster: 16
Reserved: 6
Fatcopies: 2
Max Root Entries: 512
hSectors: 0
Descriptor: 248
hold Sectors per Fat: 245
hSectors per Track: 63
Number of Heads: 255
Number of Hidden: 233
Number of Sectors: 1002263
hSectors per Fat: 2116616448
hFlags: 57172
hFat32 Version: 19980
RootStartCluster: 1095639119
|
And another 512MB:
Quote: |
Bytes Per Sector: 512
Sectors per Cluster: 8
Reserved: 34
Fatcopies: 2
Max Root Entries: 0
hSectors: 0
Descriptor: 248
hold Sectors per Fat: 0
hSectors per Track: 63
Number of Heads: 255
Number of Hidden: 233
Number of Sectors: 1000215
hSectors per Fat: 975
hFlags: 0
hFat32 Version: 0
RootStartCluster: 2
|
The information is the same every time I try to read the card.
Do you have any suggestions?
Peter |
|
|
tesla80
Joined: 23 May 2007 Posts: 81
|
|
Posted: Fri Dec 16, 2011 7:28 am |
|
|
===================
Mr Moderator:
This questions is very different than my other question related to mmcsd lib of CCS! Please don't delete this.
===================
Hello.
I got problem with this code.
My program enters into infinite loop at FindDirEntry function when I call fopen function.
I put some lcd_putc lines in the function and my lcd is filled by 'b' chars. So it cannot leave the do-while loop.
I see "abbbbbbbbbbbbbbbbbbbbbbbb...." on my lcd
I have pull-up resistors on DO(7) and CS(1) pins.
SD -- PIC
DO->SDI
SCLK->SCL
DI->SDO
CS->CS
Code: | // Function: Finds a file
char FindDirEntry(char *fname,char f)
{
DIR *pDir;
int16 i;
char filename[16];
int32 nextcluster,actsector;
if (f > (MAXFILES-1))
{
return FALSE;
}
lcd_putc('a');
gFAT32Vars.gFirstEmptyDirEntry = 0xFF;
gFAT32Vars.gFirstDirEntryCluster = 0x0FFFFFFF;
do
{
pDir = (DIR*)(gFiles[f].IOpuffer);
for (i=0;i<DIRENTRYS_PER_SECTOR;i++)
{
if ((pDir->sName[0] == 0xE5 || pDir->sName[0] == 0) && gFAT32Vars.gFirstEmptyDirEntry == 0xFF) // store first free
{
gFAT32Vars.gFirstEmptyDirEntry = i;
gFAT32Vars.gFirstDirEntryCluster = gFiles[f].CurrentCluster;
}
if (pDir->sName[0] == 0)
{
return FALSE;
}
ConvertFilename(pDir,filename);
if (!strcmp(filename,fname))
{
memcpy(&(gFiles[f].DirEntry),pDir,32);
gFiles[f].dirIdx = i;
gFAT32Vars.gDirEntryIdx = i;
return TRUE;
}
pDir++;
}
lcd_putc('b');
nextcluster = GetNextCluster(gFiles[f].CurrentCluster);
if (nextcluster != 0x0FFFFFFF && nextcluster != 0)
{
actsector = nextcluster + gFAT32Vars.gFirstDataSector;
ReadSector(actsector,gFiles[f].IOpuffer);
gFAT32Vars.gDirEntrySector = actsector;
gFiles[f].dirSector = actsector;
gFiles[f].CurrentCluster = nextcluster;
}
} while (nextcluster != 0x0FFFFFFF && nextcluster != 0);
lcd_putc('c');
return FALSE;
} |
What could be the problem? |
|
|
tesla80
Joined: 23 May 2007 Posts: 81
|
|
Posted: Sun Dec 18, 2011 2:29 pm |
|
|
Hi,
I found the problem.
I made the same circuit on proteus and made a .mmc image file using WinImage program. So it doesn't enter infinite loop in that function. It has some problems but it works.
I formatted the image with these parameters:
On real hardware, it enters into infinite loop because I can not format the card as required.
Do you know a detailed formatter tool to help me?
Another important question:
If I cannot format it as required, what about if I change "512"s (for ex:IOpuffer[512];) to 16348 ? |
|
|
tesla80
Joined: 23 May 2007 Posts: 81
|
|
Posted: Tue Dec 20, 2011 1:43 pm |
|
|
Please help me about that |
|
|
|