Gast
#861633
Hallo! Ich benutze die EFSL, um Daten auf einer SD-Karte zu speichern. Genauer gesagt, es sollen kontinuierlich (1kHz) Daten geschrieben werden. Ich verwende die "alte" Konfiguration (0.2.8) von Martin Thomas. Die neueren funktionieren leider mit meiner SD-Karte nicht... Der eingesetzte Mikrocontroller ist ein LPC2148. Als IDE setze ich das Yagarto-Paket ein. Es hat sich inzwischen folgendes Problem eingestellt: Ich schreibe brav alle 1ms meine Daten. Leider passiert es ungefähr alle 26ms, dass dieser Schreibvorgang etwas mehr als 3ms dauert und so ein doch recht enormer Zeitverzug stattfindet. Ich gehe davon aus, dass es sich dabei um den Zeitpunkt handelt, wenn der Puffer voll ist? Habe wie in der ursprünglichen Konfiguration 3kB. Um nun dennoch eine konstante Datenrate zu erreichen, habe ich versucht den Puffer kleiner zu wählen, damit häufiger und kleinere Pakete geschrieben werden. Leider klappt dies überhaupt nicht. Sobald ich die Puffer-Größe ändere, werden keine Daten mehr geschrieben, bzw. nicht mal mehr Dateien angelegt. Wenn ich die Größe auf 1 x 512 byte einstelle wird sogar die SD-Karte nicht mehr erkannt. Als alternative Notlösung habe ich versucht, wenigstens die Zeit weiterlaufen zu lassen. Leider ist dies daran gescheitert, dass eine Unterbrechung der Schreibroutine (nested interrupts) generell mit einem Absturz belohnt wird. Ich habe nun die folgende Fragen: Wie kann ich die Größe des Puffers ändern und bringt dies überhaupt etwas in meinem Fall? Falls ich nicht richtig liege mit der "Puffer-ist-voll-Theorie", woran liegt es dann? Warum ist es nicht möglich verschachtelte Interrupts zu ermöglichen, wenn EFSL-Funktionen genutzt werden? Würde mich sehr freuen, wenn der Ein oder Andere ein paar Tipps, Denkanstöße oder Ratschläge für mich übrig hat! Grüße Jansus