Cman schrieb:
> Jetzt möchte ich zum einen wissen, wie man das als "Programmierer"
> vorgeben kann, ob ich nun ein definiertes Array oder sonst eine Variable
> in den ROM oder in den RAM schreiben möchte. Gibt es da einen Befehl
> dafür?
Das hängt von der eingesetzten Architektur ab. Auf der
Von-Neumann-Architektur basierende µCs haben naturgemäß nur einen
Adressraum für ROM und RAM; damit muss man dem Compiler/Linker explizit,
wie auch immer, mitteilen, welcher Speicherbereich was ist. Demgegenüber
gibt es bei der Harvard-Architektur getrennte Adressräume für Programm
und Daten, was in unterschiedlichen Maschinenbefehlen für den
Speicherzugriff resultiert. Da C nun aber historisch bedingt nur einen
Adressraum "kennt", bietet z. B. auf AVRs die AVR-libc entsprechende
Mechanismen, um auf den Programmspeicher zugreifen zu können bzw. mit
dort hinterlegten "Variablen" zu arbeiten:
https://www.nongnu.org/avr-libc/user-manual/group__avr__pgmspace.html
Cman schrieb:
> Jetzt möchte ich mit einem Potentiometer zB ein Band durchfahren, bei
> dem sich unterschiedliche Diffs ergeben. Diese möchte ich mit einer
> Grafik in Matlab oder Ähnliches auswerten und vergleichen.
> Wie macht man das nun mit einem undefiniert grossen Array und wie kann
> man es bewerkstelligen die Werte anschliessend in einem Textfile
> auszugeben?
"Undefiniert/beliebig gross" ist speziell auf µCs schwierig, da,
physikalisch bedingt, irgendwann der (Arbeits-) Speicher voll ist.
Warum müssen die Daten zuerst im RAM in einem Array gepuffert werden;
kann man diese nicht sequentiell berechnen und direkt ausgeben/in die
Textdatei schreiben?
Anderenfalls: Verkettete Listen wurden schon genannt; besitzen gerade
auf µCs wieder den Nachteil, dass man für die Pointer zusätzlichen
(ohnehin schon knappen) Speicherplatz reservieren muss.
Und dynamische Speicherreservierung á la malloc/realloc/new geht
natürlich auch nur so lange gut, wie entsprechender freier Speicherplatz
zum Reservieren vorhanden ist.
=> Genügend großen zusammenhängenden Speicherbereich von vorne herein
reservieren; falls notwendig, einen Ringpuffer o. ä. implementieren.