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

Thema: Anfängerfrage zur Datenspeicherung

  1. #1
    Neuer Benutzer Öfters hier
    Registriert seit
    27.07.2006
    Ort
    Tirol
    Beiträge
    8

    Anfängerfrage zur Datenspeicherung

    Anzeige

    Powerstation Test
    hallo,
    programmiere erst seit kurzem und habe jetzt eine frage zur speicherung von 8Bit Werten. ich arbeite mit ATmega16 und dem STK500.
    ich lese über ADC Werte ein und möchte immer 3 Werte speichern, diese dann mitteln, löschen und das selbe mit den nächsten 3 Werten machen.
    Wie kann ich das am einfachsten machen?
    Wäre nett wenn mir jemand helfen könnte!
    Gruß Johannes

  2. #2
    Neuer Benutzer Öfters hier
    Registriert seit
    27.07.2006
    Ort
    Tirol
    Beiträge
    8
    jemand muss doch kurz zeit haben! Bitte!
    Gruß Johannes

  3. #3
    Erfahrener Benutzer Begeisterter Techniker
    Registriert seit
    22.11.2003
    Beiträge
    214
    hallo
    mir ist nicht klar wo du speichern möchtest.
    ansonsten eine funktion schreiben (ohne test ob alles richtig ist)
    Code:
    int mittelwert (int wert1; int wert2; int wert3)
    {
    int zwergebnis;
    zwergebnis = wert1 + wert2 + wert3;
    zwergebnis  = zwergebnis  / 3;
    return zwergebnis;
    }
    und die ergebnisse in einem array speichern?
    war es das was du wolltest?
    gruß
    stefan

  4. #4
    Neuer Benutzer Öfters hier
    Registriert seit
    27.07.2006
    Ort
    Tirol
    Beiträge
    8
    ja ok und wenn ich jetzt einen zähler habe der bis zu einem bestimmten ereignis zählt und jedes mal wenn dieses ereignis auftritt möchte ich den zählerwert speichern. bei 3 gespeicherten werte diese jedesmal mitteln und löschen. soll ich das mit array machen? wenn ja wie am einfachsten?
    Gruß Johannes

  5. #5
    Erfahrener Benutzer Roboter Genie
    Registriert seit
    02.11.2005
    Alter
    48
    Beiträge
    1.146
    Der einfachheit halber erst mal mit 8bit...

    Code:
    void GetADC (void)
    {
       static unsigned char s_aucData[3];
       static unsigned char s_ucCount;
       unsigned char ucTmp;
    
       s_ucCount++;
    
       //ADC auslesen
       ADCSR |= 0x40;
       while (ADCSR & 0x40)
       ;
       s_aucData[s_ucCount] = ADCH;
    
       if (s_ucCount == 3)
       {
       mittelwert (s_aucData); //siehe Funktion oben...
       s_ucCount = 0;
       }
    }
    Ich weiß nicht genau, was Du machen willst, aber in der Regel ist eine fließende Mittelwertbildung sinnvoller. Fließend heißt, bei jedem Auslesen des ADCs fliegt der älteste Wert aus dem Array raus und der neue kommt hinzu.

    aGruß,
    askazo

Berechtigungen

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

LiFePO4 Speicher Test