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 ?
Nachtrag: Irgendwie muss ich dem Compiler ja mitteilen wie groß das Bild Array ist, damit ich über wert=Bild[y][x]; darauf zugreifen kann.
Da wirst du die Indizierung selbst machen müssen: wert = Bild + y * DimensionX + x; Die Berechnung in ein Makro oder eine Funktion verpacken.
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
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.