Большие массивы на MEGA2560

RADI472
Offline
Зарегистрирован: 25.11.2013

  Для анимации диодного кубика 8х8х8 пытаюсь использовать плату MEGA2560 с flash 256K.  Анимация покадрово хранится в массивах, сгенерированных в любимом Delphi. При попытке превышения суммарного размера массивов 64К плата не подает признаков жизни. Почему так?

RADI472
Offline
Зарегистрирован: 25.11.2013

 И как с этим бороться??

maksim
Offline
Зарегистрирован: 12.02.2012

Код покажите.

RADI472
Offline
Зарегистрирован: 25.11.2013
void setup() {
  Serial.begin(9600);
  Serial.flush();
}

void loop() {
 static int I;

 Serial.println(I++);
 if ((I*3)==(I+I)) {proc();}
}

unsigned long M00 [1600] PROGMEM = {
0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0,  0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0,
.
.
.
0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0,  0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0,
0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0,  0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0};

// таких массивов еще десяток

void proc (void) { // пустышка - никогда  не вызывается
unsigned long A;
int i;

 A=0;
 for (i=0; i<1600; i++) {
   A+=pgm_read_dword_far(&M00[i]);  
 }
 Serial.println(A);
 
}

// при компиляции в терминал исправно выдаются возрастающие числа
// если подключить еще один массив, плата умирает ((!!

 /*
unsigned long MXYZ [160] PROGMEM = {
0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0,  0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0,
0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0,  0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0,
0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0,  0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0,
0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0,  0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0,
0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0,  0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0};
  */

 

 

maksim
Offline
Зарегистрирован: 12.02.2012

Как проявляется "умирание"?

RADI472
Offline
Зарегистрирован: 25.11.2013

То-есть терминал ничего не пишет