AVR: dimensonslosen Array in RAM anlegen

OP #1970145
Lesenswert?

Hallo zusammen,

ich habe aktuell in meinem Programm für den Atmega 32 ein Array vom Typ 
int  mit einer festen Größe definert. Dieses Nutze ich als Register um 
Daten mittels Modbus RTU auszutauschen.
Da ich jetzt weiter Datentypen austauschen möchte, habe ich mir die 
Frage gestellt, ob es nicht möglich ist ein array ohne feste Größe zu 
deklarieren und mittels Adresszuweisung direkt auf eine feste 
Speicheradresse im RAM zu legen (z.B. Adresse 0x200), damit ich es über 
einen Pointer abrufen kann. Dann ein weiteres array mit einem anderen 
Datentyp anzulegen und ihm RAM auf die Speicheradresse 0x300 zu legen. 
Das ganze würde ich dann gerne mit nur einem Pointer abfragen und je 
nach Adresse den entsprechenden Wert (Datentyp) zu speichern bzw. 
abzufragen.

Ist das irgendwie möglich??

Vielen Dank im Vorraus.

Gruss

Sebi
#1970152
Lesenswert?

Sebastian Z. schrieb:

> Da ich jetzt weiter Datentypen austauschen möchte, habe ich mir die
> Frage gestellt, ob es nicht möglich ist ein array ohne feste Größe zu
> deklarieren

nein.
Alles muss eine Größe haben.
Man könnte das Array zur Laufzeit allokieren, aber auch dann muss es 
eine Größe haben.
Allerdings: dynamisch Allokieren willst du auf kleinen µC nicht 
wirklich.

> und mittels Adresszuweisung direkt auf eine feste
> Speicheradresse im RAM zu legen (z.B. Adresse 0x200), damit ich es über
> einen Pointer abrufen kann. Dann ein weiteres array mit einem anderen
> Datentyp anzulegen und ihm RAM auf die Speicheradresse 0x300 zu legen.

Wenn das eine Array auf Adresse 0x200 und das andere auf Adresse 0x300 
liegt, dann sind da 0x100 Bytes dazwischen und bei 2 Byte pro int hast 
du daher 0x50 int angelegt. Du hast also nichts anderes getan, als die 
Größe des Arrays maximalkompliziert zu verstecken.


> Das ganze würde ich dann gerne mit nur einem Pointer abfragen und je
> nach Adresse den entsprechenden Wert (Datentyp) zu speichern bzw.
> abzufragen.
>
> Ist das irgendwie möglich??

Sieh dir in deinem C-Buch das Kapitel über struct und union an.
Insbesondere letzters dürfte das sein, wonach deine Frage klingt.

Antwort schreiben

Bitte melde dich an, um einen Beitrag zu schreiben.

oder

Mit Google-Account einloggen

Die Registrierung ist kostenlos und dauert nur eine Minute.

Jetzt registrieren