Moin, ich habe folgendendes kurioses Problem. Vielleicht hat jemand eine Idee. Seit mehreren Tagen mache ich Messungen mit nem ATmega32 und speichere sie auf einen Flash-Speicher SST25VF064C. Das funktioniert auch wunderbar. Über einen Befehl kann ich die Werte auslesen und aufm PC-Bildschirm schön angucken. Bisher funktionierte das auch super, da hat er ununterbrochen ca. 10 Tage aufgezeichnet und auch ausgelesen. Jetzt plötzlich hört er nach 2 Tagen der aufgezeichneten Werte auf, diese auszulesen. Vorhanden müssen sie ja sein, da sie ja das letzte Mal angezeigt wurden und gelöscht wurden sie auch nicht, da ja sonst auch die angezeigten Werte nicht mehr angezeigt werden dürften. Ich habe nichts geändert, es wurde in der Zeit (als es noch funktionierte) bis jetzt, das Gerät nicht mal angefasst. Reset habe ich schon gemacht. Er bleibt immer an der gleichen Stelle stehen. Hat jemand eine Idee, woran das liegen könnte?
Zebra schrieb: > Jetzt plötzlich hört er nach 2 Tagen der aufgezeichneten Werte auf, > diese auszulesen. Warum? Wie stellst du das fest? Gib doch mal die fehlenden Informationen, so kann ja wohl kaum einer was sinnvolles sagen.... :-/ Wieviele Daten sind abgespeichert? Wer schreibt, wer liest aus? Wer hat die Hardware gemacht? Gibt es einen Plan? Wer hat die software gemacht? Wie sieht die aus?
ja, also ich hatte erstmal keinen Quellcode mit reingeballert, weil ich wenn der Code falsch wäre, hätte es ja nie funktioniert mit dem Auslesen, oder? also der Logger ist seit ca. 2 Wochen in Betrieb und funktionierte wunderbar. Seit dem 4.10. loggt der stündlich 3x 16 Temperaturen mit. Das Auslesen über RS232 mit TeraTerm kann auch während der Messung geschehen. Habe also immer mal zwischendurch die Werte ausgelesen, als Kontrolle. Es wurden auch immer alle Werte korrekt angezeigt, vom 4.10. bis zum 14.10. Heute wollte ich die alten Werte plus die neuen vom Wochenende erneut auslesen. Nun zeigt er mir die Werte aber nur noch bis zum 06.10. an. Danach endet der Auslesevorgang, so als wären keine Daten mehr aufgezeichnet. Aber es wurden ja schon alle bis mindestens zum 14.10. aufgezeichnet. Die Frage ist also, warum hört er immer am 6.10. auf? Ja es gibt einen Schaltplan, aber an dem dürfte es ja eigentlich nicht liegen, da es ja bisher immer funktioniert hat. Kann es sein, dass der Speicher vielleicht irgendwie beschädigt ist, oder so?! Die Hardware und Software ist parallel entwickelt worden, im Rahmen einer Masterarbeit. Der Logger arbeitet immer noch korrekt weiter, misst, speichert ab und das Auslesen funktioniert ja auch, wie es soll, nur bricht er einfach irgendwann ab. Sagt mir, was ihr noch als Infos benötigt...den kompletten Schaltplan bzw. Code kann ich leider nicht zur Verfügung stellen, ihr kennt das ja...aber Ausschnitte schon, aber hilft das weiter? Ich meine isses wahrscheinlich, dass es ein Bug im Programm ist oder eher irgendwas zerschossen ist?!
Entweder ist die Schaltung schlampig aufgebaut, sprich nicht sauber genug gelötet oder in deiner Software ist ein Bug.
Zebra schrieb: > ja, also ich hatte erstmal keinen Quellcode mit reingeballert, weil ich > wenn der Code falsch wäre, hätte es ja nie funktioniert mit dem > Auslesen, oder? Kommt drauf an... Fehler beim Page-Program: zu viel (> 256 Bytes) oder zu früh (während des Löschens) oder nicht ab einer Seitengrenze und dann zuviel geschrieben, Seite nicht gelöscht oder eine defekte Seite im Flash, an einem zu tiefen Absinken der Spannung während des Schreibens/Lesens, an Störungen auf den SPI-Leitungen, an nicht mehr/richtig engestellter Block Protection oder Reset/Hold, u.U. daran das versucht wird gleichzeitig zu schreiben und zu lesen...
Zebra schrieb: > Danach endet der Auslesevorgang, so als wären keine Daten > mehr aufgezeichnet. Es gibt keinen Zustand "keine Daten". Es ist immer irgendwas im Speicher und wenns 0xFF ist. Du brauchst ein Protokoll, wie freie und belegte Bereiche als solche gekennzeichnet werden. Im Prinzip, wie es z.B. ein FAT32 oder NTFS macht. Peter
Ich hab das schonmal gesacht, aber wiederhol mich gern also du kannst mit log2(n) zugriffen feststellen wie weit deine karte mit n sektoren schon voll ist, das kannst du bei jedem boot machen oder auch staendig, es sind nur max 20 zugriffe dabei wird jeweils in der mitte eines speicherbereiches gelesen, wenn der eintrag voll ist, weisst du dass die erste haelfte voll ist, und halbierst die zweite haelfte wieder und faengst damit von vorn an wenn der mittlere eintrag jedoch leer ist, weisst du, dass die komplette zweite haelfte leer ist und suchst in der ersten haelfte, indem du die wieder halbierst und wieder in der mitte guckst, das machst du ein paar mal, bis dein bereich nur noch 1 sektor gross ist und dann hast du ihn gefunden ist das klar geworden?? musst natuerlich die beschriebenen sektoren markieren zb indem das erste bit auf 1 ist oder so
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.