не хватает памяти данных в авр... что делать?

Вопросы настройки, программирования, прошивки микроконтроллеров и микросхем программируемой логики
Закрыто
Мучитель микросхем
Аватара пользователя
Сообщения: 413
Зарегистрирован: Пт мар 10, 2006 12:23:05
Откуда: Moscow

Сообщение Mozart »

ситуёвина такая... "изучаю" графический цветной дисплей (может потом пришлю статью)... на процесоре seps525 на каждый пиксел по 2 байта, т.е. чтобы вывести картинку хотя бы 60х66 нужно 7920 байт а память данных в at90can128 всего навсего 4кБайта при компиляции в WinAVR пишет что... хреново в общем памяти не хватает...
можно ли данные хранить в памяти программы? и как это сделать в си?

eeprom и внешняя памяти не подходят...
если после прочитанной книги что-то в голове осталось, радуйся. Голова работает на тебя!!!
Контактная информация:
Реклама
Открыл глаза
Аватара пользователя
Сообщения: 68
Зарегистрирован: Вт июл 24, 2007 23:34:23

Сообщение Mr.Moss »

если тебе нужно хранить изначально заданные данные то
можно в программной памяти создать массив и читать его побайтно.
Реклама
Открыл глаза
Аватара пользователя
Сообщения: 68
Зарегистрирован: Вт июл 24, 2007 23:34:23

Сообщение Mr.Moss »

а вобщем можно темже способом и изменять данные в массиве.
Мучитель микросхем
Аватара пользователя
Сообщения: 413
Зарегистрирован: Пт мар 10, 2006 12:23:05
Откуда: Moscow

Сообщение Mozart »

хорошо что могу... вопрос как??? если гнушный компилятор... весь массив, созданный мною или не мною, относит к памяти данных... как сказать ему - компилятору? или как скомпилировать так чтобы этот массив был записан в память программы?
если после прочитанной книги что-то в голове осталось, радуйся. Голова работает на тебя!!!
Контактная информация:
Реклама
Эиком - электронные компоненты и радиодетали
Открыл глаза
Аватара пользователя
Сообщения: 68
Зарегистрирован: Вт июл 24, 2007 23:34:23

Сообщение Mr.Moss »

не знаю как это зделать СИ, в ассемблере это так.
есть такая деректива DW которая резервирует в EEPROM или в програмноя памяти неоходимое количество байт.
Реклама
Встал на лапы
Аватара пользователя
Сообщения: 117
Зарегистрирован: Чт янв 11, 2007 12:14:33

Сообщение Пожиратель AVR »

У меня тоже проблема нехватает всего навсего 380 байт памети незнаю откуда их взять ладно можно было невывисти 190 пикселей изображения но оперы тоже нехватает 121 байт
Контактная информация:
Реклама
Модератор
Аватара пользователя
Сообщения: 4517
Зарегистрирован: Пн апр 03, 2006 11:43:25
Откуда: Санкт - Петербург

Сообщение Aheir »

вроде как достаточно перед обявлением переменной добавить слово __flash, вот так, например:

Код: Выделить всё

__flash unsigned char RusFont5n4 [6][4] =
        {
	{0x3E,0x04,0x08,0x3E}, // -> И
	{0x20,0x3E,0x0A,0x06}, // -> Ъ
	{0x3E,0x02,0x3E,0x03},  // -> Ц
	{0x3E,0x08,0x04,0x3E},  // -> N
	{0x1C,0x22,0x2A,0x0C},  // -> G
	{0x3C,0x02,0x02,0x3C}  // -> U
        };
Оптимизм х (Опыт + Знания) = const
Контактная информация:
Мучитель микросхем
Аватара пользователя
Сообщения: 413
Зарегистрирован: Пт мар 10, 2006 12:23:05
Откуда: Moscow

Сообщение Mozart »

Код: Выделить всё

_flash unsigned char RusFont5n4 [6][4] = 
        { 
   {0x3E,0x04,0x08,0x3E}, // -> И 
   {0x20,0x3E,0x0A,0x06}, // -> Ъ 
   {0x3E,0x02,0x3E,0x03},  // -> Ц 
   {0x3E,0x08,0x04,0x3E},  // -> N 
   {0x1C,0x22,0x2A,0x0C},  // -> G 
   {0x3C,0x02,0x02,0x3C}  // -> U 
        };
а так пишут в каком компиляторе?? WinAVR это не съел
если после прочитанной книги что-то в голове осталось, радуйся. Голова работает на тебя!!!
Контактная информация:
Модератор
Аватара пользователя
Сообщения: 4517
Зарегистрирован: Пн апр 03, 2006 11:43:25
Откуда: Санкт - Петербург

Сообщение Aheir »

Там перед flash два подчеркивания: __flash
СVAVR кушает
Или попробуйте просто flash, без подчеркиваний.
Вообще, в хелпе к компилятору д.б. написано, проверьте меня на всякий случай..

Если в WinAVR есть функция выделения цветом служебных слов С - включите, сразу будет видно, нравится оно ему или не очень..
Да и код почитабельней смотрится.
Оптимизм х (Опыт + Знания) = const
Контактная информация:
Мучитель микросхем
Аватара пользователя
Сообщения: 413
Зарегистрирован: Пт мар 10, 2006 12:23:05
Откуда: Moscow

Сообщение Mozart »

не, есму слово флэш не нравится... ему нравится PROGMEM
unsigned char a[] PROGMEM = {...};
но всё равно что-то не очень-то и работает.... статья есть на http://www.avrfreaks.net/index.php?name ... ic&t=38003
если после прочитанной книги что-то в голове осталось, радуйся. Голова работает на тебя!!!
Контактная информация:
Модератор
Аватара пользователя
Сообщения: 4517
Зарегистрирован: Пн апр 03, 2006 11:43:25
Откуда: Санкт - Петербург

Сообщение Aheir »

а в чем "не работа" проявляется?
Оптимизм х (Опыт + Знания) = const
Контактная информация:
Мучитель микросхем
Аватара пользователя
Сообщения: 413
Зарегистрирован: Пт мар 10, 2006 12:23:05
Откуда: Moscow

Сообщение Mozart »

авр студио говорит что данные размещаются в SRAM, при обращении к массиву данных, извлекается не то что надо...

Код: Выделить всё

unsigned char a[] PROGMEM = {очень много чисел};

void DrawPicture(...unsigned char *Pixels){
	
   SetDDRAM();   
   for (uint16_t i = 0; i < SizeFram; i += 2) {

      WriteData(*(Pixels + i), *(Pixels + i + 1));
   }
   
}
вот кусок кода, но не весь... просто оставил то что передаю...
если после прочитанной книги что-то в голове осталось, радуйся. Голова работает на тебя!!!
Контактная информация:
Мучитель микросхем
Аватара пользователя
Сообщения: 413
Зарегистрирован: Пт мар 10, 2006 12:23:05
Откуда: Moscow

Сообщение Mozart »

в общем есть функции

Код: Выделить всё

pgm_read_byte_far(addr)
вот при помощи неё и надо читать из флэша...
если после прочитанной книги что-то в голове осталось, радуйся. Голова работает на тебя!!!
Контактная информация:
Мучитель микросхем
Аватара пользователя
Сообщения: 413
Зарегистрирован: Пт мар 10, 2006 12:23:05
Откуда: Moscow

Сообщение Mozart »

оказывается всё не просто так... нарисовал уточку размером 66х60 красиво получилось... но нужно картинку выводить 160х128 картинка получается около 37,5 кбайт.... просто так массив такого размера оказывается не просто так разместить... скоро будут первые картинки... я обещаю...
Последний раз редактировалось Mozart Вт авг 28, 2007 20:17:30, всего редактировалось 1 раз.
если после прочитанной книги что-то в голове осталось, радуйся. Голова работает на тебя!!!
Контактная информация:
Мучитель микросхем
Аватара пользователя
Сообщения: 413
Зарегистрирован: Пт мар 10, 2006 12:23:05
Откуда: Moscow

Сообщение Mozart »

как и обещал картинки я выкладываю...
Вложения
IMG_6800n.jpg
картинка
(35.9 КБ) 778 скачиваний
IMG_6799n.jpg
сама плата...
(48.63 КБ) 775 скачиваний
IMG_6802n.jpg
заслуживат отдельного внимания сам МК
(65.63 КБ) 802 скачивания
IMG_6801n.jpg
жёлтая утка...
(47.82 КБ) 572 скачивания
если после прочитанной книги что-то в голове осталось, радуйся. Голова работает на тебя!!!
Контактная информация:
Грызет канифоль
Аватара пользователя
Сообщения: 257
Зарегистрирован: Сб сен 09, 2006 19:00:18
Откуда: СССР

Сообщение Tohey »

Не в тему:
А что за LCD? Где такой используют? Сколько стоит? Где почитать про него можно?
Мучитель микросхем
Аватара пользователя
Сообщения: 413
Зарегистрирован: Пт мар 10, 2006 12:23:05
Откуда: Moscow

Сообщение Mozart »

на процике seps525 а называется... UG-6028... стоит рублей 600 700 есть кажется в ктц-мк...
если после прочитанной книги что-то в голове осталось, радуйся. Голова работает на тебя!!!
Контактная информация:
Вымогатель припоя
Аватара пользователя
Сообщения: 534
Зарегистрирован: Пн янв 16, 2006 08:00:17
Откуда: Иркутск

Сообщение Mamonth »

Я совсем забыл... но видел в интернете проект по использованию внешней памяти (ОЗУ) на основе модулей от оперативки компьютера... Может подойдет проект называется Monster Memory
Today fine night...
Открыл глаза
Сообщения: 54
Зарегистрирован: Ср авг 29, 2007 01:37:56

Сообщение Romanich »

Mozart писал(а):ситуёвина такая... "изучаю" графический цветной дисплей (может потом пришлю статью)... на процесоре seps525 на каждый пиксел по 2 байта, т.е. чтобы вывести картинку хотя бы 60х66 нужно 7920 байт а память данных в at90can128 всего навсего 4кБайта при компиляции в WinAVR пишет что... хреново в общем памяти не хватает...
можно ли данные хранить в памяти программы? и как это сделать в си?

eeprom и внешняя памяти не подходят...
для видеобуфера нужна внешняя SRAM (62256 например - 32кб)
далее настроить контроллер внешней памяти и пользовать!
а в менеджере проекта указать что использ. внешняя память
Закрыто

Вернуться в «Микроконтроллеры и ПЛИС»