PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : sd karte lesen mit mega 8 oder 168



Halod
11.04.2007, 13:15
ich hab hier und im rest vom netz nur sachen mit fat gefunden, und die brauchen ja recht viel speicher.

da ich hier noch nen haufen mega8 rumliegen habe würd ich gerne mit diesen, und deswegen mit möglichst wenig code, ca 10 byte von einer sd karte lesen

also vom prinzip her dachte ich mir
bytes auslesen
den dadurch definierten befehl ausführen
nächsten 10 byte lesen
...

ist sowas möglich ?
ich hab keine ahnung wie ich überhaupt anfangen soll

for_ro
11.04.2007, 14:34
Schau mal da
https://www.roboternetz.de/phpBB2/zeigebeitrag.php?t=29274
Sollte schon einige Antworten liefern. Findet man über die Suche ;-)

Halod
20.04.2007, 18:22
huhu nochmal

ich hab nu wirklich alles aufgesaugt was ich gefunden habe aber :( leider bleibt mir der zugriff auf meine sd karten immer noch verwehrt

mittlerweile hab ich eine platine gebaut mit den level shiftern von ulrich radig

cs = portb.2
di = portb.3
do = portb.4
sck = portb.5


und mir folgenden code zusammenkopiert



$regfile = "m8def.dat"

$crystal = 16000000

$baud = 19200

Initlcd
Config Lcd = 16 * 2
Config Lcdpin = Pin , Db4 = Portd.5 , Db5 = Portd.6 , Db6 = Portd.7 , Db7 = Portb.0 , E = Portc.2 , Rs = Portd.4
Config Lcdbus = 4
Cls
Cursor Off Noblink

Config Pinb.1 = Output
Led Alias Portb.1

Enable Interrupts

Config Clock = Soft

Config Date = Dmy , Separator = .

Config Pinb.2 = Output
Mmc_cs Alias Portb.2
Set Mmc_cs

Config Pinb.2 = Output
Spi_ss Alias Portb.2
Set Spi_ss

Config Spi = Hard , Interrupt = Off , Data Order = Msb , Master = Yes , Polarity = High , Phase = 1 , Clockrate = 4 , Noss = 1

Config Serialin = Buffered , Size = 80 , Bytematch = 13

Spiinit

Const Cperrdrivereset = 225 ' Error response Byte at Reset command
Const Cperrdriveinit = 226 ' Error response Byte at Init Command
Const Cperrdrivereadcommand = 227 ' Error response Byte at Read Command
Const Cperrdrivewritecommand = 228 ' Error response Byte at Write Command
Const Cperrdrivereadresponse = 229 ' No Data response Byte from MMC at Read
Const Cperrdrivewriteresponse = 230 ' No Data response Byte from MMC at Write
Const Cperrdrive = 231
Const Cperrdrivenotsupported = 232 ' return code for DriveGetIdentity, not supported yet
Const Cmmc_soft = 0

Waitms 1 ' Wait some time before initialising MMC/SD

Dim Gbdriveerror As Byte ' General Driver Error register
Dim Gbdriveerrorreg As Byte ' Driver load Error-Register of HD in case of error
Dim Gbdrivestatusreg As Byte ' Driver load Status-Register of HD on case of error
Dim Gbdrivedebug As Byte

Dim CR_Received as Byte
Dim Empfangsstring As String * 20
Dim Mmc_error As Byte

$lib "MMC.LIB"
$external _mmc



Gbdriveerror = Driveinit()
Print "los gehts :)"

DO
Locate 1 , 1 : Lcd "gbde"
Locate 2 , 1 : Lcd Gbdriveerror
Locate 1 , 6 : Lcd "mmc"
Locate 2 , 6 : Lcd Mmc_error
Locate 1 , 10 : Lcd "str"

Disable Interrupts

If Cr_received = 1 Then

Cr_received = 0
Enable Interrupts
Input Empfangsstring
Locate 2 , 10 : Lcd " "
Locate 2 , 10 : Lcd Empfangsstring

Else
Enable Interrupts
End If

LOOP

End


Serial0charmatch:
CR_Received = 1
Return




und als antwort kommt immer 225 egal ob ne karte drin is oder nich

kann von euch sdkartenlesenden einer den fehler erkennen den ich da mache ?