Schokohoernl
27.02.2007, 12:13
Hallo!
Ich versuche hier verzweifelt ne SD Karte zu initialisieren. Mehr will ich grad granicht, bzw. zu mehr bin ich noch nicht gekommen.
Auf der Seite von Ulrich Radig ist ja auch das PDF mit den Timings. Genau das habe ich jetzt mal nachprogrammiert, aber es geht ums verrecken nicht.
Auch das Datenblatt das ebenfalls auf der Seite von Ulrich Radig zu finden ist, hat mir nicht sonderlich weitergeholfen, außer dass ich jetzt weiss, dass es nur 6Bit Befehle sind.
Hier aber erstmal mein Code:
$crystal = 8000000
$baud = 9600
$regfile = "M8def.dat"
Dim Dout As Byte
Dim Din As Byte
Dim I As Byte
Config Pinb.2 = Output
Config Pinb.3 = Output
Config Pinb.5 = Output
Config Pinb.4 = Input
Mmc_cs Alias Portb.2
Set Mmc_cs
Sck Alias Portb.5
Mosi Alias Portb.3
Miso Alias Pinb.4
Set Sck
Set Mosi
Set Miso 'Pull Up
Do
Gosub Mmc_init
Wait 1
Print Bin(din)
Loop
Mmc_init:
For I = 1 To 10
Dout = &HFF
Shiftout Mosi , Sck , Dout , 1 , 8 , 16
Next
Reset Mmc_cs
Dout = &H00
Shiftout Mosi , Sck , Dout , 1 , 6 , 16
Dout = &H00
Shiftout Mosi , Sck , Dout , 1 , 8 , 16
Shiftout Mosi , Sck , Dout , 1 , 8 , 16
Dout = &H95
Shiftout Mosi , Sck , Dout , 1 , 8 , 16
Shiftin Miso , Sck , Din , 1 , 8 , 16
Set Mmc_cs
Return
Ich sende also erst 80 Pulse, dann geht CS auf Low, anschließend CMD0 und so weiter.
Von der Karte kommt aber kein Fatz zurück. Die bleibt einfach stumm.
Elektrisch ist alles OK, kann auch mit dem Oszi wunderbar CS, Dout, und CLK anschauen.
Karte ist auch OK, da sie in meiner Digicam tut.
MfG
Schoko
P.S.: Hier die Timings von der SD-Karte: http://www.ulrichradig.de/site/atmel/avr_mmcsd/pdf/MMCSDTimming.pdf
Ich versuche hier verzweifelt ne SD Karte zu initialisieren. Mehr will ich grad granicht, bzw. zu mehr bin ich noch nicht gekommen.
Auf der Seite von Ulrich Radig ist ja auch das PDF mit den Timings. Genau das habe ich jetzt mal nachprogrammiert, aber es geht ums verrecken nicht.
Auch das Datenblatt das ebenfalls auf der Seite von Ulrich Radig zu finden ist, hat mir nicht sonderlich weitergeholfen, außer dass ich jetzt weiss, dass es nur 6Bit Befehle sind.
Hier aber erstmal mein Code:
$crystal = 8000000
$baud = 9600
$regfile = "M8def.dat"
Dim Dout As Byte
Dim Din As Byte
Dim I As Byte
Config Pinb.2 = Output
Config Pinb.3 = Output
Config Pinb.5 = Output
Config Pinb.4 = Input
Mmc_cs Alias Portb.2
Set Mmc_cs
Sck Alias Portb.5
Mosi Alias Portb.3
Miso Alias Pinb.4
Set Sck
Set Mosi
Set Miso 'Pull Up
Do
Gosub Mmc_init
Wait 1
Print Bin(din)
Loop
Mmc_init:
For I = 1 To 10
Dout = &HFF
Shiftout Mosi , Sck , Dout , 1 , 8 , 16
Next
Reset Mmc_cs
Dout = &H00
Shiftout Mosi , Sck , Dout , 1 , 6 , 16
Dout = &H00
Shiftout Mosi , Sck , Dout , 1 , 8 , 16
Shiftout Mosi , Sck , Dout , 1 , 8 , 16
Dout = &H95
Shiftout Mosi , Sck , Dout , 1 , 8 , 16
Shiftin Miso , Sck , Din , 1 , 8 , 16
Set Mmc_cs
Return
Ich sende also erst 80 Pulse, dann geht CS auf Low, anschließend CMD0 und so weiter.
Von der Karte kommt aber kein Fatz zurück. Die bleibt einfach stumm.
Elektrisch ist alles OK, kann auch mit dem Oszi wunderbar CS, Dout, und CLK anschauen.
Karte ist auch OK, da sie in meiner Digicam tut.
MfG
Schoko
P.S.: Hier die Timings von der SD-Karte: http://www.ulrichradig.de/site/atmel/avr_mmcsd/pdf/MMCSDTimming.pdf