Kommentar: Einfügen von HTML im Kommentar: Link einfügen: <a href="LINKURL" target="_blank">LINKTITEL</a> Bild einfügen: <img src="BILDURL"> Text formatieren: <b>fetter Text</b> <i>kursiver Text</i> <u>unterstrichener Text</u> Kombinationen sind auch möglich z.B.: <b><i>fetter & kursiver Text</i></b> C Quellcode formatieren: <code>Quellcode</code> BASIC Quellcode formatieren: <basic>Quellcode</basic> (Innerhalb eines Quellcodeabschnitts ist kein html möglich.) Wichtig: Bitte mache Zeilenumbrüche, bevor Du am rechten Rand des Eingabefeldes ankommst ! -> I > > 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 > > Ich habe folgendes vergessen.. > > Dim Pfad(15) As Char > Sub SD_Karte_Dateiordner_erstellen() > ' Neuen Dateiordner erstellen > > 'SD_Card_Status = SDC_MkDir("0:/CC-PRO") > > Pfad = "0:/log" > SD_Card_Status = SDC_MkDir(Pfad) > > '1. Unterordner anlegen > Str_Copy(Pfad,"/",STR_APPEND) > Str_WriteWord(Clock_Jahr,10,Pfad,STR_APPEND,2) > SD_Card_Status = SDC_MkDir(Pfad) > > '2. Unterordner anlegen > Str_Copy(Pfad,"/",STR_APPEND) > Str_WriteWord(Clock_Monat,10,Pfad,STR_APPEND,2) > SD_Card_Status = SDC_MkDir(Pfad) > End Sub > > Dim Datei(50) As Char > Sub SD_Karte_Datei_oeffnen() > ' Ist die Datei bereits vorhanden? > ' Wenn nicht dann wird die Datei angelegt > > Str_Copy(Datei,Pfad,0) > Str_Copy(Datei,"/",STR_APPEND) > Str_WriteWord(Clock_Tag,10,Datei,STR_APPEND,2) > Str_Copy(Datei,".txt",STR_APPEND) > > SD_Card_Status=SDC_FOpen(fil,Datei, FA_WRITE Or FA_OPEN_EXISTING) > > If SD_Card_Status<>0 Then > SD_Card_Status=SDC_FOpen(fil,Datei, FA_WRITE Or FA_OPEN_ALWAYS) > > If SD_Card_Status<>0 Then > SDC_FOpen(fil, Datei, FA_WRITE Or FA_CREATE_ALWAYS) > End If > End If > SD_Card_Oeffnen_OK = SD_Card_Status > SD_Karte_Status_Rueckgabe_Oeffnen(SD_Card_Status) > > 'Erstellungsdatum setzen > SD_Card_Status = SDC_FSetDateTime(Datei, Clock_Tag, Clock_Monat, Clock_Jahr + 2000, > Clock_Minute, Clock_Stunde, Clock_Sekunde) > > SD_Card_Status = SDC_FStat(Datei, SD_Card_fileinfo) > > ' Schreibposition suchen > SD_Card_pos = SD_Card_fileinfo(0) > SD_Card_Status = SDC_FSeek(fil,SD_Card_pos) > End Sub > > Gruss Christian