Forum: Compiler & IDEs 8x8 Array initialisieren Attiny 2313


von Frederic F. (fredel007)


Angehängte Dateien:

Lesenswert?

Hallo zusammen,

ich habe folgendes Problem:

Ich möchte ein 8x8 Array direkt mit Werten initialisieren:
1
int main (void)
2
{
3
  
4
  uint8_t test[8][8] = {   
5
        {24,60,126,219,255,255,66,36},           
6
        {12,30,63,109,127,127,33,64},
7
        {6,15,31,182,191,191,16,9},
8
        {3,7,143,219,223,223,136,80},
9
        {1,131,199,109,239,239,68,130},
10
        {128,193,227,182,247,247,34,20},
11
        {192,224,241,219,251,251,17,32},
12
        {96,240,248,109,253,253,8,4}};

Wenn ich nach der Initialisierung nun meinen Speicherbereich überprüfe, 
stelle ich fest, dass ab Zeile 5, Spalte 6, alle Werte falsch 
gespeichert werden. Siehe Speicherüberwachung im Anhang.

Füge ich hinter der Initialisierung nochmal eine erneute Definition der 
fehlerhaften Werte an, wie hier dargestellt:
1
test[5][0]=128;
2
test[5][1]=193;
3
test[5][2]=227;
4
test[5][3]=182;
5
test[5][4]=247;
6
test[5][5]=247;
7
test[5][6]=34;
8
test[5][7]=20;
9
test[6][0]=192;
10
test[6][1]=224;
11
test[6][2]=241;
12
test[6][3]=219;
13
test[6][4]=251;
14
test[6][5]=251;
15
test[6][6]=17;
16
test[6][7]=32;
17
test[7][0]=96;
18
test[7][1]=240;
19
test[7][2]=248;
20
test[7][3]=109;
21
test[7][4]=253;
22
test[7][5]=253;
23
test[7][6]=8;
24
test[7][7]=4;

so stimmen die Werte dann alle.

Wo liegt das Problem der ursprünglichen Initialisierung?

Viele Grüße
fredel007

von Johann L. (gjlayde) Benutzerseite


Lesenswert?

Die Daten werden im RAM abgelegt.

Dieser µC hat davon 128 Bytes, wenn ich mich net irre.

Wenn du's im Flash haben willst

static const uint8_t test[8][8] PROGMEM = {...

und schau dir die zugehörigen pgm_* Makros aus der avr-libc an.

von Johann L. (gjlayde) Benutzerseite


Lesenswert?

Johann L. schrieb:
> Die Daten werden im RAM abgelegt.
>
> Dieser µC hat davon 128 Bytes, wenn ich mich net irre.

Ich sollte so spät nichts mehr schreiben, meine ALU dachte, 8*8 sei 256 
;-)

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.