-         

Ergebnis 1 bis 3 von 3

Thema: sd karte lesen mit mega 8 oder 168

  1. #1
    Neuer Benutzer Öfters hier
    Registriert seit
    04.01.2005
    Beiträge
    5

    sd karte lesen mit mega 8 oder 168

    Anzeige

    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

  2. #2
    Erfahrener Benutzer Roboter Genie
    Registriert seit
    16.02.2006
    Beiträge
    1.112
    Schau mal da
    http://www.roboternetz.de/phpBB2/zei...ag.php?t=29274
    Sollte schon einige Antworten liefern. Findet man über die Suche

  3. #3
    Neuer Benutzer Öfters hier
    Registriert seit
    04.01.2005
    Beiträge
    5
    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
    Code:
    $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 ?

Berechtigungen

  • Neue Themen erstellen: Nein
  • Themen beantworten: Nein
  • Anhänge hochladen: Nein
  • Beiträge bearbeiten: Nein
  •