Большие массивы на MEGA2560
- Войдите на сайт для отправки комментариев
Пнд, 25/11/2013 - 18:28
Для анимации диодного кубика 8х8х8 пытаюсь использовать плату MEGA2560 с flash 256K. Анимация покадрово хранится в массивах, сгенерированных в любимом Delphi. При попытке превышения суммарного размера массивов 64К плата не подает признаков жизни. Почему так?
И как с этим бороться??
Код покажите.
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}; */Как проявляется "умирание"?
То-есть терминал ничего не пишет