Hallo, ich habe an meinem MC eine SD-Karte. Beim Start schicke ich 0=Go_Idle_State gefolgt von 1=Send_Op_Cond. Soweit klapp alles prima. Jetzt kann es aber vorkommen, dass mein MC von der Watchdog einen Reset bekommt. Dann würde die Sequenz wieder losgehen, obwohl vorher die SD-Karte NICHT von der Spannung getrennt wurde. Frage: Kann man eine SD-Karte beliegig oft mit oben angeführter Sequenz initialisieren oder muss jedesmal vorher ein Reset der SD-Karte erfolgen? Und falls ein Reset erforderlich ist, wie (abgesehen von Strom-Weg, was ich nicht kann)? Danke!
>Frage: Kann man eine SD-Karte beliegig oft mit oben angeführter Sequenz >initialisieren oder muss jedesmal vorher ein Reset der SD-Karte >erfolgen? Bei meinen Karten geht das. Wenn ich z.B. das Programm im uC update schalte ich sie nicht aus. Bissiger Watchdog und SD Karte ist aber keine gute Kombination. Gerade beim schreiben.
@Holger Die SD-Karte wird nur gelesen. Ausserdem kommt die Watchdog alle 10ms und wird von einem Timer getaktet, der beim interrupt einiges an Daten/Zuständen kontrolliert. Die SD-Karte kann man ja unterbrechen, das macht keine Probleme.
>Die SD-Karte kann man ja unterbrechen, das >macht keine Probleme. Doch, tut es. Ich hab gerade mal meinen simplen MP3 Player mit ständigen Hardwareresets unterbrochen. Nach ca. 30 Versuchen meldete sich die Karte nicht mehr. Da hab ich wohl genau den Zeitpunkt getroffen wo ein Sektor gelesen wurde. Man muss immer einen kompletten Sektor und die 2 Byte Checksumme abholen. Solange man das nicht tut reagiert die Karte nicht auf Kommandos. Nach einem erneuten Reset lief sie dann wieder. Ohne Power On/Off. CMD0 wird bei mir sehr oft gesendet. Das holte quasi den Rest des Sektors und die Checksumme ab. Scheinbar sende ich CMD0 aber noch nicht oft genug für den Fall das ein WDT das lesen eines Sektors mitten drin unterbricht. Was mir auch noch zu denken gibt ist, das CMD0 in dieser Zeit nicht als Kommando erkannt wird, in den Daten aber etwas wie eine korrekte Response stehen könnte. Da hilft wohl nur erst mal blind einige 0xFF zu senden um eventuelle Sektordaten und die Checksumme aus der Karte zu takten. Oder den WDT während eines SD Zugriffs immer wieder zu resetten.
Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.