Gast
#1426836
Grüß Gott zusammmen! An einen Microcontroller (MSP430) ist ein Sensor angeschlossen. Beim auslesen des Sensors bekomme ich 20x20 16bit Daten. Um diese Daten auch bei aufwändigeren Rechenoperationen zeitlich unkritisch verarbeiten zu können, schwebt mir folgende Lösung vor: Anlegen eines Arrays mit 3 "Seiten" mit jeweils einer 20x20 Matrize (insgesamt also 2400 Bytes). Diese 3 Seiten dienen mir als Ringbuffer: Mit jedem Datum vom Sensor wird ein Interrupt ausgelöst, die Matrix wird gefüllt. Ist eine Seite voll, werden diese ausgewertet. Dafür habe ich zwei weitere Seiten lang Zeit. Ich habe 4kB RAM. Darin ist der Stack und der Heap untergebracht, die sich jeweils entgegenwachsen. Standardmäßig ist der Stack 80 Bytes groß, in der Entwicklungsumgebung erweiterbar (vermutlich bis zur Maximalgröße des RAMs). Lege ich die Variable global an, kommt das Array in den Teil des RAMs, in dem NICHT der Stack steht (ist das gleichzeitig der Heap?!). Lege ich es lokal an, würde es in den Stack kommen. Mit malloc (C) oder new (C++) kommts auf den Heap. Da ich das Array immer benötige, wird der Speicher nicht mehr freigegeben, so kommt es auch nicht zu einer nervigen Segmentierung im RAM. Ich würde es jetzt global anlegen und über (ebenfalls globale) Zähler die jeweiligen Indizes ansprechen. Sonderlich elegant ist das nicht, zumal globale Variablen kein guter Stil sind. Die Sache mit dem Stack (vergrößern und dort ablegen) schließe ich von vornherein aus. Wie würdet ihr das lösen? Vielen dank für's lesen und für eure Tipps und Ratschläge. Daniel