Zur Übersicht - INFO - Neueste 50 Beiträge - Neuer Beitrag - Suchen - Zum C-Control-I-Forum - Zum C-Control-II-Forum

2.12.06 Bug bei der SD-Karte Kategorie: IDE (von Christian - 26.12.2010 18:54)
Ich nutze:
C-Control Pro Mega128
Hallo,
ich habe folgendes Problem bei der SD-Karte.
Wenn ich die C-Control mit dem Powerschalter einschalte oder Reset Taster drücke,
dann bekomme ich immer beim öffnen der Datei die Rückmeldung "WRITE_PROTECTED"
und dadruch beim schreiben den Fehler "INVALID_OBJECT".
Starte ich mein Programm aber jetzt aus der IDE mit dem "Blitz-Button / Programm starten), gibt
es keine Fehler. Das passiert aber nur, wenn die Datei schon vorhanden.
Mit der vorgelagerten Funktion SDC_GetFree gibt es aber keine Probleme.

Den SS (Slave-Select) habe ich auf B4 gelegt, da ich später noch ein SPI-Gerät ansteuern möchte.
nocht nicht eingebunden)


Main
...
 SPI_Disable()

 Port_DataDirBit(13,1)   'PortB.5 = 13 als Ausgang = CS - SD Card
 Port_DataDirBit(14,1)   'PortB.6 = 14 als Ausgang = CS - 2. SPI

 SPI_Init_Byte = 80  '3,6 Mhz
 SPI_Enable(SPI_Init_Byte)

 Port_WriteBit(13,1)   'PortB.5 = CS - SD Card  - 0 = selected Slave
 Port_WriteBit(14,1)   'PortB.6 = CS - 2. SPI   - 0 = selected Slave

   Do While True   'Endlosschleife

    If Timer1_cont = 0 Then

        'Timer1_cont wird in der 10ms Interruptrotine herruntergezählt Timer2
        Timer1_cont = 1000 '1000 * 10 ms  = 10 sek

        'SPI select Slave
        Port_WriteBit(13,0)   'PortB.5 = CS - SD Card  - 0 = selected Slave
        Port_WriteBit(14,1)   'PortB.6 = CS - 2.SPI    - 0 = selected Slave

        SD_Karte_schreiben_Vorbereitung()

        If Port_ReadBit(13) <> 0 Then
            Thread_Delay(1)
        End If

        SD_Karte_Freigabe = 1

        SD_Karte_Init()

        If SD_Karte_vorhanden = 1 Then
               SD_Karte_getfree()
               If SD_Karte_vorhanden = 1 Then
                    SD_Karte_Schreibvorgang = 1
                    SD_Karte_Dateiordner_erstellen()
                    SD_Karte_Datei_oeffnen()
                    SD_Karte_schreiben()
                    SD_Karte_FSync()
                    SD_Karte_schliessen()
               End If
        End If


        'SPI select Slave
        Port_WriteBit(13,1)   'PortB.5 = CS - SD Card  - 0 = selected Slave
        Port_WriteBit(14,1)   'PortB.6 = CS -   2.SPI  - 0 = selected Slave

    End While


Gruss Christian


    Antwort schreiben


Antworten:

Re: 2.12.06 Bug bei der SD-Karte (von Christian - 28.12.2010 14:52)
Re: 2.12.06 Bug bei der SD-Karte (von Christian - 26.12.2010 19:13)
Re: 2.12.06 Bug bei der SD-Karte (von Christian - 26.12.2010 19:02)