mikrocontroller.net

Forum: Mikrocontroller und Digitale Elektronik Array befüllen


Autor: Newbie (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hallo zusammen,

bei meinem aktuellen Projekt muss ich den Mittelwert einer sehr sehr 
langsamen (0,2 Hz bis 1 Hz) harmonischen Schwingung ermitteln.

Ich lese einen Neigungssensor über den AD-Wandler ein und möchte nun wie 
folgt vorgehen:

- Maximum der Schwingung ermitteln,
- wenn Maximum gefunden Befüllen eines Arrays starten,
- Array so lange befüllen, bis Minimum ermittelt,
- Mittelwert ausrechnen.

Dieser Alorithmus dürfte funktionieren. Jedoch mein Problem dabei ist, 
dass ich die Abtastrate des AD-Wandlers immer gleich lassen möchte und 
somit bei unterschiedlicher Schwingungsdauer immer unterschiedlich viele 
Werte zwischen Maximum und Minimum habe.

Kann mir jemand von Anfang an erklären, wie ich ein Array deklariere und 
befülle, bzw. wieder auslese ohne dass ich weiß wie groß er ist/wird?

Danke und Gruß

Autor: Timmo H. (masterfx)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Zwei möglichkeiten.
1. Array übergroß deklarieren. Also das Array fest auf die maximal 
mögliche Größe festlegen.
2. Malloc, realloc, free. Damit kannst du dynamisch neuen Speicher 
anfordern. Malloc gibt dir einen Speicherbereich einer gewünschten 
größe. Realloc erweitert schon vorhandenen Speicher und free gibt diesen 
wieder frei.

Allerdings ist die Lösung mit malloc etc. sehr langsam und sollte nur 
verwendet werden, wenn der Speicher knapp ist.

Autor: Johannes M. (johnny-m)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Wozu brauchst Du überhaupt ein Array? Maximum und Minimum finden geht 
auch einfach mit zwei Variablen, wobei in eine Variable immer dann der 
aktuelle Wert übernommen wird, wenn er größer bzw. kleiner ist als der 
Wert, der schon drin steht. Und für den Mittelwert brauchste auch nur 
zwei Variablen, eine zum Aufaddieren aller Werte und eine Zählvariable, 
die mitzählt, wie viele Werte aufsummiert wurden. Das Addieren der Werte 
kann dann jeweils direkt nach der Erfassung gemacht werden...

Autor: Timmo H. (masterfx)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Vielleicht will er ja auch dir Kurve noch im Speicher behalten oder so?

Autor: Johannes M. (johnny-m)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Timmo H. wrote:
> Vielleicht will er ja auch dir Kurve noch im Speicher behalten oder so?
Hat er zumindest nix von gesagt...

Autor: Til Stork (Firma: Segger) (til)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
"2. Malloc, realloc, free...."

Naja, prinzipiel nicht verkehrt, aber dann muss ich mir ja auch 
überlegen, wie groß mein Heap ist, damit das passt ;-). Und wenn ich mir 
schon diese Überlegung gemacht habe, kann ich das ganze doch auch lieber 
statisch machen.

Ich denke aber auch eher, das eine mathematische Mittelwertbildung 
einfacher ist, wie Johannes schon sagte brauchst du für eine 
arithmetische Mittelwertbildung die Werte nur aufsummieren und dann 
durch die Anzahl der Werte dividieren.

Autor: Timmo H. (masterfx)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
>> Vielleicht will er ja auch dir Kurve noch im Speicher behalten oder so?
>Hat er zumindest nix von gesagt...
Stimmt, hatte ich jedoch angenommen, da er schon mit nem Array anfing. 
Wahrscheinlich hat er daran gar nicht gedacht, dass man die 
Mittelwertbildung auch währenddessen machen kann. Wie dem auch sei

Antwort schreiben

Die Angabe einer E-Mail-Adresse ist freiwillig. Wenn Sie automatisch per E-Mail über Antworten auf Ihren Beitrag informiert werden möchten, melden Sie sich bitte an.

Wichtige Regeln - erst lesen, dann posten!

  • Groß- und Kleinschreibung verwenden
  • Längeren Sourcecode nicht im Text einfügen, sondern als Dateianhang

Formatierung (mehr Informationen...)

  • [c]C-Code[/c]
  • [avrasm]AVR-Assembler-Code[/avrasm]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] - Link zu Artikel
  • Verweis auf anderen Beitrag einfügen: Rechtsklick auf Beitragstitel,
    "Adresse kopieren", und in den Text einfügen




Bild automatisch verkleinern, falls nötig
Bitte das JPG-Format nur für Fotos und Scans verwenden!
Zeichnungen und Screenshots im PNG- oder
GIF-Format hochladen. Siehe Bildformate.
Hinweis: der ursprüngliche Beitrag ist mehr als 6 Monate alt.
Bitte hier nur auf die ursprüngliche Frage antworten,
für neue Fragen einen neuen Beitrag erstellen.

Mit dem Abschicken bestätigst du, die Nutzungsbedingungen anzuerkennen.