- 12V Akku mit 280 Ah bauen         
Ergebnis 1 bis 8 von 8

Thema: Speichern im EEprom und von Zeit zu Zeit abfragen

  1. #1
    Erfahrener Benutzer Fleißiges Mitglied
    Registriert seit
    03.10.2007
    Alter
    51
    Beiträge
    128

    Speichern im EEprom und von Zeit zu Zeit abfragen

    Anzeige

    Praxistest und DIY Projekte
    Hallo zusammen,

    ich habe bisher noch nichts mit dem Speichern von Daten im EEProm gemacht.
    Nun möchte ich gerne die Laufzeit einer Pumpe je Stunde speichern.

    Ich habe noch keine richtige Idee wie man sowas macht und wollte daher mal hier nachfragen.

    Meine Idee ist, jede Stunde ein Byte vor zu sehen und dort den Minutenwert der Laufzeit zu hinterlegen. Ich werde einen Mega32 nutzen so dass da einiges reingehen wird.
    Von Zeit zu Zeit möchte ich dann seriell eine Abfrage machen und die einzelnen Bytes abfragen und anschließden löschen.

    Was meint ihr dazu. Geht das?
    Hat dazu vielleicht schon jemand ein Beispielprogramm?

  2. #2
    Erfahrener Benutzer Robotik Einstein Avatar von Jaecko
    Registriert seit
    16.10.2006
    Ort
    Lkr. Rottal/Inn
    Alter
    42
    Beiträge
    2.009
    Sowas ist kein Problem; dazu ist der EEPROM u.a. auch da.

    In nem CAN-Monitor hab ich auch die Laufzeiten der verschiedenen Systeme (Zündung, Motor, Beleuchtung, Klimaanlage) drin; hinterlegt wird das ganze Sekundengenau jeweils als 32 Bit-Wert.
    Gespeichert wird hier aber nicht immer, sondern nur dann, wenn man die Zündung abschaltet und das CAN-Sleep-Signal vom Steuergerät gesendet wird.
    Vorteil: Kein "unnötiges" Schreiben; Nachteil: Fällt das Gerät aus, bevor gespeichert wurde, sind die Daten dieser "Sitzung" halt weg.

    Je nach dem wie deine Schaltung aussieht und wie oft die Pumpe an/abgeschaltet wird, könnte man da auch sowas machen, dass nur geschrieben wird, wenn abgeschaltet wird.

    Aber auch stündlich schreiben geht (wohl auch weniger Aufwand); 100.000x Schreiben sind garantiert möglich; Bei Dauerbetrieb komm ich da auf 11,4 Jahre, die das Ding dann durchhält, wenn jeweils 1x pro Stunde geschrieben wird.
    #ifndef MfG
    #define MfG

  3. #3
    Erfahrener Benutzer Fleißiges Mitglied
    Registriert seit
    03.10.2007
    Alter
    51
    Beiträge
    128
    Na dann waren meine Gedanken gar nicht so schlecht.
    Ich werde die Daten in der Pumpensteuerung speichern und dann von Zeit zu Zeit über meinen Can Bus abfragen und an einem PC auswerten.

    Was mir jetzt noch fehlt ist die Berechnung der Stunde.
    Wenn ich einen Mega32 habe der mit 7,3728 MHz getaktet wird, muss ich bei der Berechnung des Timers doch immer noch dir Größe des des Programms berücksichtigen?

  4. #4
    Erfahrener Benutzer Robotik Einstein Avatar von Vitis
    Registriert seit
    06.01.2005
    Ort
    Südpfalz
    Alter
    50
    Beiträge
    2.253
    oder Du hängst nen Uhrenquarz mit dran, dann kann
    der AVR nen Sekundentakt mit Interrupt recht genau
    generieren.

    Wenn Du in der ISR das Zurücksetzen des Timers an den Anfang stellst
    gehts auch recht genau reproduzierbar unabhängig von der Länge der ISR.
    Diese sollte man aber generell eher kurz halten und mit Flags arbeiten.
    Vor den Erfolg haben die Götter den Schweiß gesetzt

  5. #5
    Erfahrener Benutzer Robotik Einstein Avatar von Jaecko
    Registriert seit
    16.10.2006
    Ort
    Lkr. Rottal/Inn
    Alter
    42
    Beiträge
    2.009
    Einfach den Timer im CTC-Modus (sofern vorhanden) laufen lassen; dann geht das Zurückstellen auch ohne "Zeitverlust" (macht der Timer dann selbst).
    Dabei gehen aber leider die Bascom-Befehle ("Config Timer") nicht mehr, d.h. man müsste hierbei selbst die Register von Hand passend setzen.

    Ich hab so auch nen Timer mit nem "normalen" 8MHz Quarz laufen und seit dem Ende der Sommerzeit ist die Abweichung immer noch < 1 min.
    #ifndef MfG
    #define MfG

  6. #6
    Erfahrener Benutzer Roboter Genie
    Registriert seit
    16.02.2006
    Beiträge
    1.113
    Zitat Zitat von Jaecko
    Dabei gehen aber leider die Bascom-Befehle ("Config Timer") nicht mehr, d.h. man müsste hierbei selbst die Register von Hand passend setzen.
    Hallo Jaecko,
    warum meinst du, dass die Bascom Befehle dabei nicht gehen?

    Gruß

    Rolf

  7. #7
    Erfahrener Benutzer Robotik Einstein Avatar von Jaecko
    Registriert seit
    16.10.2006
    Ort
    Lkr. Rottal/Inn
    Alter
    42
    Beiträge
    2.009
    "Damals" (Als ich Bascom zuletzt verwendet hab), kannte Bascom nur den "klassischen" Timer, d.h. TCNT wird hochgezählt und muss in der ISR immer wieder von neuem auf den gewünschten Wert gesetzt werden.

    Falls Bascom mittlerweile den CTC auch unterstützt, wärs natürlich perfekt.
    #ifndef MfG
    #define MfG

  8. #8
    Erfahrener Benutzer Roboter Genie
    Registriert seit
    16.02.2006
    Beiträge
    1.113
    Ja, das geht. Z.B. so
    Config Timer2 = Timer , Clear Timer = 1 , Compare = Toggle , Prescale = 1
    OCR2=0 für halbe Clock bis
    OCR2=255 für entsprechend geringer.
    Und natürlich auch mit größerem Prescaler.

Berechtigungen

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

LiFePO4 Speicher Test