avat 0 15 мая, 2007 Опубликовано 15 мая, 2007 · Жалоба Здравствуйте. Начал осваивать AVR, пользуюсь WinAVR и GCC. Массив данных, описанный как static unsigned char myarray[10][10] компилируется в SRAM. А как сделать так, чтобы массив лежал в коде программы, т.к. он не будет модифицироваться программой в принципе, а оперативной памяти не хватает на весь массив? Пользуюсь только #include <avr/io.h>, #include <avr/interrupt.h> - может, есть еще что-то нужное в моем случае? Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
KRS 1 15 мая, 2007 Опубликовано 15 мая, 2007 · Жалоба А вы пробовали const? static const unsigned char myarray[10][10]; Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
avat 0 15 мая, 2007 Опубликовано 15 мая, 2007 · Жалоба А вы пробовали const? static const unsigned char myarray[10][10]; Пробовал. Размещает в SRAM и все тут. Более того, если массив больше некоторого значения, он накрывает переменные в SRAM и программа, естественно, отказывается работать вообще. Компилятор не выдает даже предупреждения. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
umup 0 15 мая, 2007 Опубликовано 15 мая, 2007 · Жалоба нужно сделать так (читайте документацию на AVR-Libc) : #include <avr/pgmspace.h> prog_char myarray[10][10] = { ... или unsigned char __attribute__((__progmem__)) myarray[10][10] = { ... Чтение осуществляется функцией pgm_read_byte и т.п. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Quasar 20 15 мая, 2007 Опубликовано 15 мая, 2007 (изменено) · Жалоба Const скажет компилятору о том, что это не модифицируется, но расположение всё равно будет в sram. Я делал так: #include <avr/pgmspace.h> const uint8_t nameMas0[] PROGMEM= { ..... }; ..... //Считывание i = pgm_read_byte(&nameMas0[нумбер]); umup Опередил :) Изменено 15 мая, 2007 пользователем Quasar Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
avat 0 15 мая, 2007 Опубликовано 15 мая, 2007 · Жалоба umup, quasar - большое спасибо, сделал, как вы сказали, все заработало. Иду курить libc. :) Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться