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.
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.
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
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
jürgen schrieb: > Die 3,3V werden mit einem LM317 geregelt. Die Signalpegel werden mit > Spannungsteilern verwirklicht Es wurde schon des öfteren hier im Forum erwähnt, dass Spannungsteiler keine gute Wahl sind um SD-Karten stabil zu betreiben.
> 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
Ich sag ja nur, was die Erfahrung von einigen Usern hier im Forum ist. Und dort wurden die Probleme mit dem Betreib der SD-Karte durch richtige Level-Shífter gelöst. Aber eventuell waren es auch nur die "falschen" Widerstände. ;)
Ich kann mir aber irgendwie nicht vorstellen, dass falsche Widerstande für eine Pause von exakt 677ms verantwortlich sind. Aber ich werde es mal ausprobieren.
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.
>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.
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.
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.