- 12V Akku mit 280 Ah bauen         
Seite 3 von 3 ErsteErste 123
Ergebnis 21 bis 25 von 25

Thema: Abspeichern von Messdaten ist bestimmten Zeitabständen

  1. #21
    Neuer Benutzer Öfters hier
    Registriert seit
    30.07.2009
    Ort
    Eschweiler
    Alter
    33
    Beiträge
    15
    Anzeige

    E-Bike
    wichtig ist vielmehr, wann die Daten gemesser werden, und das genau die Richtige Zahl an Daten geschreiben wird, also nichts ausgelassen wird.
    Wenn der Messzeitpunkt mal ein bisschen ungenau ist, ist das kein Problem! Ausgelassen werden sollten natuerlich keine Daten.

  2. #22
    Erfahrener Benutzer Robotik Visionär
    Registriert seit
    26.11.2005
    Ort
    bei Uelzen (Niedersachsen)
    Beiträge
    7.942
    Das Schreiben auf die SD karte in der ISR ist ein echtes Problem. Gelegentlich muß intern relativ viel passieren. Da kann es schon mal zusammenkommn, dass ein DatenSektor geschrieben werden muß (in der Karte), dazu noch einen Sektor der FAT schreiben und einen anderen Lesen. Das kann also im ungünstigen Fall wirklich relativ lange dauern, auch wenn es meistens relativ flott geht.
    Deshalb sollte man das schreiben wirklich besser so machen, das es auch unterbrochen werden kann, also ins Hauptprogramm.

  3. #23
    Neuer Benutzer Öfters hier
    Registriert seit
    30.07.2009
    Ort
    Eschweiler
    Alter
    33
    Beiträge
    15
    Daher wollte ich es ja so machen wie von Felix G vorgeschlagen. Also im ISR nur ein Flag setzten und dann in der Hauptschleife abarbeiten lassen.

  4. #24
    Erfahrener Benutzer Robotik Einstein Avatar von Felix G
    Registriert seit
    29.06.2004
    Ort
    49°32'N 8°40'E
    Alter
    41
    Beiträge
    1.780
    Das bedeutet die Messung erfolgt in main() nebenher, ebenso das Speichern auf der SD-Karte, und bei jedem Interrupt werden die aktuellen Daten in einen Puffer geschrieben (das geht sehr schnell, kann also auch direkt in der ISR erfolgen)

    Ich wage jetzt mal eine Prophezeiung wie das Ergebnis aussehen könnte:
    (falls der Puffer in der ISR gefüllt wird)
    - Du wirst keine Interrupts verpassen
    - Du wirst am Ende genau so viele Daten auf der SD-Karte haben wie du möchtest
    - Die Daten werden "ruckeln"

    Das Problem ist nämlich, daß während dem Speichern keine Messungen durchgeführt werden können, da main() "blockiert" ist (durch die Speicherfunktion). Lösen kann man dieses Problem auf mehrere Arten:

    - Messen und im Puffer ablegen erfolgt direkt in der ISR, das Speichern auf der SD-Karte asynchron in main(). Problem: lange Interrupts, und selbst wenn keiner verpasst wird, bleibt in main() kaum noch Rechenzeit übrig um die Daten zu speichern

    - Interruptbasierte Messung (möglich, falls es nur eine PWM ist, oder die steigenden Flanken aller PWMs synchron sind). In diesem Fall braucht man die PWM an einem Interrupt-fähigen Pin. Bei einer steigenden Flanke wird ein Timer gestartet, bei einer fallenden Flanke wird der Timer wieder ausgelesen. Das ganze erfolgt komplett unabhängig von main(). Dann könnte man in der 25Hz ISR den jeweils aktuellen Messwert im Puffer ablegen, und den ganzen Kram asynchron aus main() heraus abspeichern.
    So viele Treppen und so wenig Zeit!

  5. #25
    Neuer Benutzer Öfters hier
    Registriert seit
    30.07.2009
    Ort
    Eschweiler
    Alter
    33
    Beiträge
    15
    Das bedeutet die Messung erfolgt in main() nebenher, ebenso das Speichern auf der SD-Karte, und bei jedem Interrupt werden die aktuellen Daten in einen Puffer geschrieben (das geht sehr schnell, kann also auch direkt in der ISR erfolgen)
    Werde es so mal umsetzen, kommt mir als beste Lösung vor! Danke für die Ratschläge.
    Ich denke das Ruckeln ist zu vertreten, da sich die Messwerte auch nicht so schnell ändern.

Seite 3 von 3 ErsteErste 123

Berechtigungen

  • Neue Themen erstellen: Nein
  • Themen beantworten: Nein
  • Anhänge hochladen: Nein
  • Beiträge bearbeiten: Nein
  •  

Solar Speicher und Akkus Tests