- 12V Akku mit 280 Ah bauen         
Seite 1 von 3 123 LetzteLetzte
Ergebnis 1 bis 10 von 22

Thema: Sehr viele Daten speichern - wie am günstigsten?

  1. #1
    Erfahrener Benutzer Roboter Experte
    Registriert seit
    06.02.2005
    Beiträge
    663

    Sehr viele Daten speichern - wie am günstigsten?

    Anzeige

    Praxistest und DIY Projekte
    Moin!

    Ich möchte mit einem AVR (am liebsten ATmega jede Sekunde einen Wert speichern. Es genügt wenn dies eine Ganzzahl ist und diese liegt zwischen 0-200. Es soll ca. 15 Minuten aufgezeichnet werden.
    Also 15 * 60 = 900 Werte.
    Fragen: Welcher Zahltyp? - Welcher Speicherort (oder einfach im Flash)?
    Es ist nicht unbedingt notwendig dass die Daten auch nach Strom aus noch abrufbar sind, wäre aber gut (dann müssten sie in den EEPROM, damit habe ich aber noch nicht gearbeitet).

    Gruß, Björn
    Nur tote Fische schwimmen mit dem Strom...

  2. #2
    Erfahrener Benutzer Robotik Einstein
    Registriert seit
    06.02.2005
    Ort
    Hamburg
    Alter
    37
    Beiträge
    4.255
    zahlentyp am besten als byte, das vereinfacht auch den speicherzugriff...

    das interne flash hält nur 10000 zyklen aus, ist also wohl nciht die beste wahl. das interne eeprom hat nur 512 bye, reicht also nicht.

    du könnest zb ein externes eeprom per I2C anschließen. nen kilobyte für 27 cent...

  3. #3
    Erfahrener Benutzer Roboter Experte
    Registriert seit
    06.02.2005
    Beiträge
    663
    Hi,

    ist das kompliziert die Daten dort reinzuschreiben und wieder auszulesen?

    Gruß, Björn
    Nur tote Fische schwimmen mit dem Strom...

  4. #4
    Erfahrener Benutzer Roboter Experte
    Registriert seit
    06.02.2005
    Beiträge
    663
    Meinst du sowas?

    Klick mich

    Gruß, Björn
    Nur tote Fische schwimmen mit dem Strom...

  5. #5
    Erfahrener Benutzer Roboter-Spezialist
    Registriert seit
    22.12.2004
    Alter
    70
    Beiträge
    277
    Zitat Zitat von Björn
    Meinst du sowas?
    in der Richtung. gebräuchlicher sind die 24c64/256/512 Typen.

    Mit Bascom ist das auch recht einfach zu handhaben. Ein Beispielprogramm alá "Klein Erna" hänge ich mal dran, in der Praxis geht das eleganter, so wird aber das Prinzip IMHO am deutlichsten:

    Code:
    '----------------- EEPROM Test für Mega168-Experimenter -----------------------
    'Juli 2005 - HR
    '------------------------------------------------------------------------------
    
    $regfile = "m168def.dat"                     'bzw "m8def.dat"
    $crystal = 7372800
    
    Enable Interrupts
    
    Declare Sub Read_eeprom()
    Declare Sub Write_eeprom()
    
    Dim Address As Word At &H112
    Dim Address_low As Byte At &H112 Overlay
    Dim Address_high As Byte At &H113 Overlay
    
    Dim I As Word
    Dim Temp As Byte
    Dim Dev As Byte
    
    Dim Wert As Byte
    
    Const Ext_eeprom = 162                       'I2C Geräteadresse ggf. anpassen
    
    '------------------------------------------------------------------------------
    
    Cursor Off
    
    Cls
    Lcd "EEPROM TEST"
    Locate 2 , 1
    Lcd "SCHREIBE"
    '------------------------------------------
    Dev = Ext_eeprom
    
    For Address = 0 To 49
     Wert = Address                              'schreibt die Adresse als Wert
     Call Write_eeprom()                         'ins EEprom
    Next
    
    Wait 2
    Cls
    Lcd " LESE"
    
    For Address = 0 To 49
      Call Read_eeprom()
      Locate 2 , 1
      Lcd "ADR: " ; Address ; " " ; "Wert: " ; Wert
      Wait 1                                     ' Pause , damit man was sieht
    Next
    
    Wait 2
    
    Cls
    Lcd "FERTIG"
    
    End
    '------------------------------------------------------
    '- Byte (wert) auf EEprom Adresse (address) speichern -
    '------------------------------------------------------
    Sub Write_eeprom()
    
    I2cstart
    I2cwbyte Dev
    I2cwbyte Address_high
    I2cwbyte Address_low
    I2cwbyte Wert
    I2cstop
    
    Waitms 2
    
    End Sub
    '-----------------------------------------------------------------
    '---  Byte (wert) von EEprom Adresse (address) lesen           ---
    '-----------------------------------------------------------------
    Sub Read_eeprom()
    Dim Devread As Byte
    
    Devread = Dev + 1
    
    I2cstart
    I2cwbyte Dev
    I2cwbyte Address_high
    I2cwbyte Address_low
    I2cstop
    I2cstart
    I2cwbyte Devread
    I2crbyte Wert , Nack
    I2cstop
    
    End Sub
    '------------------------------------------------------------------------------
    Grüße
    Henrik

  6. #6
    Erfahrener Benutzer Roboter-Spezialist
    Registriert seit
    17.01.2004
    Ort
    Erlangen, Bayern
    Alter
    42
    Beiträge
    253

    Re: Sehr viele Daten speichern - wie am günstigsten?

    Zitat Zitat von Björn
    Moin!
    Es ist nicht unbedingt notwendig dass die Daten auch nach Strom aus noch abrufbar sind, ...
    Gruß, Björn
    Ich würds im RAM speichern... somit hast du keine Probleme mit I2C, Anzahl der Speicherzugriffe und obendrein bekommst du schnelle Zugriffszeiten.

    Gruss
    Michael

  7. #7
    Erfahrener Benutzer Roboter-Spezialist
    Registriert seit
    22.12.2004
    Alter
    70
    Beiträge
    277

    Re: Sehr viele Daten speichern - wie am günstigsten?

    Zitat Zitat von FoCus
    Ich würds im RAM speichern... somit hast du keine Probleme mit I2C, Anzahl der Speicherzugriffe und obendrein bekommst du schnelle Zugriffszeiten.
    Na ja, 1 KB Ram ist ja nun so üppig auch wieder nicht. Was die begrenzte Speicherlebensdauer anbelangt: durchschnittlich 1.000.000 Zyklen im High Endurence Block der Eeproms sind ein Haufen Zeug und im normalen Bereich sind auch die 100.000 nicht sooo schnell erreicht. Für kritische Scherze (und aus Bequemlickkeit, weil auch direkt am PC auszuwerten) nutze ich zur Messdatenerfassung gerne Chipkarten (genau das selbe wie die 8-pol DIP-Käferchen, nur schneller rein und rausgesteckt).

    Grüße
    Henrik

  8. #8
    Erfahrener Benutzer Roboter Experte
    Registriert seit
    06.02.2005
    Beiträge
    663
    Oh danke!

    Gruß, Björn
    Nur tote Fische schwimmen mit dem Strom...

  9. #9
    Erfahrener Benutzer Robotik Einstein Avatar von SprinterSB
    Registriert seit
    09.06.2005
    Ort
    An der Saar
    Beiträge
    2.802
    Das interne Ram eines Mega8 sollte dicke reichen, wenn der restliche Programmcode es nicht aufisst. Es bleiben immerhin 124 Bytes Ram übrig, so viel wie zB ein 90S2313 überhaupt an Ram hat!

    Unter dem Aspekt "günstig", ist also die Ram-Variante der Gewinner. Sowohl was Aufwand in Hardware (gar keiner) als auch in Software (praktisch keiner) betrifft.

  10. #10
    Erfahrener Benutzer Robotik Einstein
    Registriert seit
    06.02.2005
    Ort
    Hamburg
    Alter
    37
    Beiträge
    4.255
    man sollte aber vorher abklären, was der mega8 sonst noch so zu rechnen hat, um die messwerte zu erfassen und ggf auszugeben (mit fließkommazahlen zwischendrin kann mans wohl knicken)... ich weiß nicht wie gut man Bascom beibrigen kann dass es sich mit 124 byte ram zufrieden gibt... asm wär vielleicht die bessere wahl, wenn sich der aufwand im rest des programms in grenzen hält...

Seite 1 von 3 123 LetzteLetzte

Berechtigungen

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

LiFePO4 Speicher Test