Forum: Mikrocontroller und Digitale Elektronik Arduino: Variable Daten von SD Karte einlesen


von Patrick N. (thanekrios)


Lesenswert?

Hallo zusammen,

folgendes fiktives Projekt soll programmiert und abgegeben werden.

Eine Kuchenteigmaschine soll mit einem Arduino angesteuert werden. Die 
Verschiedenen Zutaten sollen zusammengemixt und weiterverarbeitet 
werden.
Dabei sind die Anzahl der Zutaten, einzelne Zutaten und Mengenangaben 
der verschiedenen Kuchen in einem Textdokument auf der SD-Karte 
gespeichert. Die SD-Karte ist dem Anwender zugänglich. Er kann die 
Textdatei also ändern und neue Kuchen hinzufügen oder Alte löschen.

Da verschiedene Kuchen ausgewählt werden können, kenne ich die Anzahl 
der Zutaten und Mengenangaben erst beim Einlesen der Daten.
Ist es sinnvoller Speicher für einen Array dynamisch zu allokieren und 
die einzelnen Zutaten/Mengen darin zu speichern oder einfach einen Array 
zu erstellen, der groß genug ist damit alles reinpasst?

Konnte in der SuFu nichts finden und bin verunsichert weil ich im Netz 
gesehen hab, dass von dynamischer Speicherverwaltung auf einem 
Microkontroller eher abgeraten wird. Hoffe ihr könnt mir helfen.

Grüße
thanekrios

von Dr. Sommer (Gast)


Lesenswert?

Patrick N. schrieb:
> Ist es sinnvoller Speicher für einen Array dynamisch zu allokieren
Dynamisch allokieren ist nur dann sinnvoll, falls bei einer kleinen 
Allokierung der verbleibende Speicher durch irgendetwas anderes (z.B. 
eine weitere dynamische Allokierung) genutzt werden kann. Da man auf 
Mikrocontrollern eher selten ein OS mit mehreren Programmen nutzt, 
welche den freibleibenden Speicher nutzen können, braucht man diese 
nicht zu beachten. Falls der ungenutzte Speicher aber durch nichts 
anderes verwendet werden kann, ist die dynamische Allokierung nutzlos - 
dann kannst du gleich ein Array machen, das so groß ist wie der Speicher 
erlaubt, und das so voll machen wie nötig. So gilt zwar der ganze 
Speicher als "belegt" auch wenn das Array tatsächlich halb leer ist, 
aber das stört ja nicht (für unbelegten Speicher gibts kein Geld 
zurück).

Patrick N. schrieb:
> dass von dynamischer Speicherverwaltung auf einem
> Microkontroller eher abgeraten wird.
Richtig, denn die Allokierung bedeutet einen gewissen Overhead 
(Rechenzeit+Speicher) der nicht gut vorherberechnet werden kann, und es 
werden Fehlerbehandlungen nötig für wenn kein Speicher mehr frei ist. 
Insbesondere für sicherheitskritische Funktionen wäre es blöde, wenn sie 
nicht ausgeführt werden können, weil nicht mehr genug Speicher da ist. 
Daher verzichtet man oft darauf.

von Patrick N. (thanekrios)


Lesenswert?

Alles Klar verstehe.
Vielen Dank!

Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.