Forum: Compiler & IDEs Array an feste Adresse legen


von Benedikt (Gast)


Lesenswert?

Wenn ich ein externes RAM an einem AVR in C verwende, nutze ich dieses
meist für große Tabellen die ich z.B. mit
unsigned char * const tabelle=(unsigned char* 0x8000)
festlege.
Auf diesen kann ich dann mit wert=tabelle[i]; zugreifen.

Wie mache ich das ganze jetzt mit mehrdimensionalen Arrays ?
Ich möchte also z.B. das Array Bild ab Adresse 0x8000 beginnen lassen ?

von Benedikt (Gast)


Lesenswert?

Nachtrag:

Irgendwie muss ich dem Compiler ja mitteilen wie groß das Bild Array
ist, damit ich über wert=Bild[y][x]; darauf zugreifen kann.

von Karl H. (kbuchegg)


Lesenswert?

Da wirst du die Indizierung selbst machen müssen:

   wert = Bild + y * DimensionX + x;

Die Berechnung in ein Makro oder eine Funktion verpacken.

von A.K. (Gast)


Lesenswert?

Beispielsweise 80 chars/Zeile:
  typedef unsigned char (*screen_ptr)[80];
  screen_ptr p = (screen_ptr)0x8000;
und dann wie üblich
  p[row][col];

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.