Problem mit Schreiben von Daten auf eine SD-Karte

Gast #1767336
Lesenswert?

Hallo, ich habe einen Datenlogger gebaut, der z.B. AD-Werte, die alle 
20ms abgetastet werden, chronologisch in eine Textdatei speichert. 
Soweit funktioniert das auch, aber an eingen Stellen der Textdatei 
befinden sich Pausen von genau immer 677ms. Diese Pausen treten 
sporadisch auf, manachmal 10sek nach Messungsstart, manchmal 2 Minuten 
nach Messungsstart. Mal folgen direkt 3 von diesen Pausen im Abstand von 
6 Sekunden hintereinander.

Ein paar Daten zum Logger: AT90CAN128, 16Mhz,
Ich nutze die SD-Schreibfunktion von Holger Klabunde

Ich habe schon probiert die Abtastzeit zu ändern -> gleiches Ergebnis
Ich habe leider sonst überhaupt keine Idee, woran es noch liegen könnte.
Vermutungen: irgendeine Funktion die Fehlerhaft abläuft, jedoch ist es 
hierbei sehr schwer heraus zu finden welche es sein könnte, da der 
Fehler ja sporadisch auftritt.
Oder könnte es Prinzipiell ein Problem mit der SD-Karte sein, dass zum 
Beispiel die Daten nicht schnell genug übertragen werden oder die 
SD-Karte irgend eine Funktion aufruft, die solange den SPI Bus 
blockiert.
Ich bin für Tipps und Anregungen sehr dankbar.
Gast #1767451
Lesenswert?

677ms ist schon lang.
Aber kann es sein, dass der Controller durch die Karte in den Reset 
gebracht wird?
Wie sieht Deine Schaltung aus?
Die meisten Lösungen die ich bisher gesehen haben waren freundlich 
ausgedrückt ein wenig gewagt.

Genauso wie die Anpassung von 5V auf 3,3V die Du ja haben musst, sonst 
würde Dein 90CAN128 nicht auf 16 MHz laufen.
#1767464
Lesenswert?

Ich habe keine Ahnung, wodran dein Problem liegen könnte.
Aber als Tip wie du selber das Problem finden kannst, würde ich dir 
raten debug Ausgaben per RS232 einzubauen. Somit weißt du immer genau, 
an welcher Stelle das Programm sich gerade befindet und ob das so 
korrekt ist oder nicht. Insofern du die Debug Ausgaben mit einem 
Zeitstempel versiehst siehst du auch, an welcher Stelle der Controller 
wie lange hängt.
Solche debug Ausgaben haben mir schon des öfteren geholfen dem Fehler 
auf die Spur zu kommen. ;)

Ciao,
     Rainer
Gast #1767499
Lesenswert?

danke für die Tips. Falls der Controller sich Reseten würde, würde eine 
neue Log-Datei erstellt. Das würde ich schon merken.
Die 3,3V werden mit einem LM317 geregelt. Die Signalpegel werden mit 
Spannungsteilern verwirklicht
Gast #1767695
Lesenswert?

> dass Spannungsteiler
> keine gute Wahl sind um SD-Karten stabil zu betreiben.

Für die Wandlung von 5V auf 3,3V Pegel spricht nichts gegen 
Spannungsteiler. Sinnvoll konstruiert mit kurzen Leitungen und 
induktivitätsarmen (ungewendelten) Widerständen funktioniert das leicht 
bis in den zweisteligen MHz Bereich.

Randy
#1767832
Lesenswert?

Ich meine damit ja auch nur, dass die Signalqualität nicht unbedingt die 
beste ist bei einem Spannungsteiler im Vergleich zu einem Level-Shifter. 
Somit könnte mancher Befehl nicht korrekt übertragen werden. Aber das 
ist ja auch nur ein Hinweis und muss nicht die Ursache des Problems 
sein.

Wie ich vorher schon sagte, mach RS232 debug Ausgaben an sinnvollen 
Stellen in deinem Code und versuche so die Stelle zu finden, wo er 
hängt.
Gast #1767983
Lesenswert?

>Oder könnte es Prinzipiell ein Problem mit der SD-Karte sein, dass zum
>Beispiel die Daten nicht schnell genug übertragen werden oder die
>SD-Karte irgend eine Funktion aufruft, die solange den SPI Bus
>blockiert.

Wenn sonst alles läuft wird es das WearLevelling sein.
300ms habe ich da auch schon gesehen. 677ms ist aber schon
ganz schön deftig.
Gast #1775788
Lesenswert?

Vielen Dank für die vielen Tipps. Ich werde mal das RS232 Debugging 
ausprobieren. Was ich bis jetzt gemessen habe waren unteranderem die 
Interrupt Routine, welche die Daten empfängt, und die Funktion, welche 
die Daten auf die SD-Karte schreibt. Dort gab es bis jeztzt keine 
Verzögerung.

Antwort schreiben

Bitte melde dich an, um einen Beitrag zu schreiben.

oder

Mit Google-Account einloggen

Die Registrierung ist kostenlos und dauert nur eine Minute.

Jetzt registrieren