Continue to Site

Welcome to EDAboard.com

Welcome to our site! EDAboard.com is an international Electronics Discussion Forum focused on EDA software, circuits, schematics, books, theory, papers, asic, pld, 8051, DSP, Network, RF, Analog Design, PCB, Service Manuals... and a whole lot more! To participate you need to register. Registration is free. Click here to register now.

Interfacing mmc to PIC 16f72 using PICBasic

Status
Not open for further replies.

ankit-max

Junior Member level 1
Joined
Dec 20, 2012
Messages
17
Helped
0
Reputation
0
Reaction score
0
Trophy points
1,281
Activity points
1,402
Hello,

I have a micro sd card which I put in to the mmc adapter. I have connected mmc to the PIC using this configuration:-
circuit.jpg

I'm using PIC 16f72 which has a SSP module in-built. The code I've written in PICBasic is shown below:-


Code:
Device 16F72
Xtal 4

'For RS-232 Communication
Declare Serial_Baud 9600
Declare Rsout_Mode true
Declare Rsin_Mode true
Declare Rsout_Pin PORTB.6
Declare Rsin_Pin PORTB.7

Output PORTB
Output PORTC.2  'CS
Output PORTC.3  'SCK of micro 
Output PORTC.5  'SDO of micro
Input PORTC.4   'SDI of micro 

Symbol SSPEN = SSPCON.5
Symbol CS = PORTC.2
Symbol SMP = SSPSTAT.7
Symbol CKE = SSPSTAT.6
Symbol CKP = SSPCON.4
Symbol BF = SSPSTAT.0
'Using clock = f/16 for 4 MHz (Crystal Frequency)
SSPCON.0=1
SSPCON.1=0
SSPCON.2=0
SSPCON.3=0
Dim kk As Byte    'for data
Dim cnt As Byte
Dim rd As Byte
GoTo main

'To send data to the Memory Card
spi_write:
SSPBUF=kk
While BF = 0
Wend
Return
'To read data from the memory card
spi_read:
SSPBUF=kk
While BF = 0 
Wend
rd = SSPBUF
Return
'Initilization of memory card
mmc_init:
kk=$FF
'Sending 0xFF for the clock
For cnt = 1 To 50
GoSub spi_write
Next cnt
CS = 0 'Chip select low and now send command
DelayMS 50
GoSub spi_write
kk=$40   'For command 0-> 0x40
GoSub spi_write
kk=$0    'Sending 00 00 00 00
GoSub spi_write
GoSub spi_write
GoSub spi_write
GoSub spi_write
kk=$95   'sending CRC value ->  0x95
GoSub spi_write
Return

main:
cnt=0
CS = 1
SSPEN = 1
SMP = 1
CKE = 1
CKP = 0
RSOut "for command o",13,10
GoSub mmc_init
cnt=0
kk=$FF 'Sending last byte and reading the response. 0x01 -> success
GoSub spi_read
Hmm:
If rd = 1 Then
RSOut "Command 0 executed",13,10
ElseIf cnt<1000 Then
GoSub spi_read
cnt=cnt+1
GoTo Hmm
EndIf
RSOut "Failed!!",13,10
End

The problem is I'm not getting a required response for Command 0 :- 0x01. I get 'Failed!!'

P.S. I've used LM317 to give 2.6-3.3 v to the mmc. Right now the voltage at mmc Voltage pin is 2.9V
 

Oh, thanks mate. Someone replied after such a long time.

Well I will check the link thoroughly. Thank you!
 

Status
Not open for further replies.

Part and Inventory Search

Welcome to EDABoard.com

Sponsor

Back
Top