Организация памяти AVR

Обсуждаем контроллеры компании Atmel.
Ответить
Родился
Аватара пользователя
Сообщения: 11
Зарегистрирован: Сб мар 16, 2013 15:27:07
Откуда: Украина

Сообщение DentonUA »

Добрый день. Подскажите, правда если при объявлении переменных и массивов использовать const, переменная помещается не в ОЗУ, а в память программ?
Например мне надо, чтобы мега16 выводил изображение на телек. В нем всего лишь 1кб озу. Если объявить массив для разрешения с использованием const, я экономлю место в озу? Или по любому, при инциализации произойдет загрузка массива в озу??
..
#define weight 30
#define height 35
...
const char resolution [weight] [height]
Реклама
Грызет канифоль
Аватара пользователя
Сообщения: 271
Зарегистрирован: Чт апр 01, 2010 14:14:55

Сообщение jordan »

объявления переменной типа "const" вы сообщите компилятору что переменная не может быть изменена... для помещения переменных в память программы есть библиотека помойму от чана, называется pgmspace.h
разбирайтесь там все просто
Реклама
Родился
Аватара пользователя
Сообщения: 11
Зарегистрирован: Сб мар 16, 2013 15:27:07
Откуда: Украина

Сообщение DentonUA »

Спасибо. Обязательно посмотрю.. Но читал в книге, что да, переменная не может быть изменена. и в этом случае для ней не резервируется память озу ,а только память программ.. В книге читал про МК PIC24...
Поставщик валерьянки для Кота
Аватара пользователя
Сообщения: 1900
Зарегистрирован: Сб фев 21, 2009 13:11:40
Откуда: Москва

Сообщение ibiza11 »

посмотрите этот ОЧЕНЬ ПОЛЕЗНЫЙ документ http://www.gaw.ru/html.cgi/txt/app/micr ... AVR035.htm
в Вашем случае понадобится раздел "Доступ к флэш-памяти"
Ставим плюсы: )
Реклама
Эиком - электронные компоненты и радиодетали
Мудрый кот
Аватара пользователя
Сообщения: 1810
Зарегистрирован: Чт июн 10, 2010 08:55:35
Откуда: Сибирские Афины

Сообщение Kavka »

jordan писал(а):для помещения переменных в память программы есть библиотека помойму от чана, называется pgmspace.h
Это не у Чана. Это avr-libc который с GNU компилятором (avr-gcc) и прочими утилитами в комплекте нужен для написания программ на Си под AVR.

Дока на официальном сайте avr-libc
http://www.nongnu.org/avr-libc/user-man ... space.html

Русский перевод (на версию 1.6.1)
http://avr-libc.narod.ru/group__avr__pgmspace.html

Думаю, что в 5й и 6й студии должна быть встроенная помощь по этим файликам.
Когда уже ничего не помогает - прочтите, наконец, инструкцию.
Лучший оптимизатор находится у вас между ушей. (Майкл Абраш, программист Quake и QuakeII)
Избыток информации ведёт к оскудению души - Леонтьев А. (сказано в 1965 г.)
Реклама
Родился
Аватара пользователя
Сообщения: 11
Зарегистрирован: Сб мар 16, 2013 15:27:07
Откуда: Украина

Сообщение DentonUA »

Спасибо. за советы!! Я нашёл инфу. Действительно, чтобы поместить переменную/массивы в флэш ром, необходимо использовать эту библиотеку, а потом перед объявлением ставить PROGMEM. ...
Скажите, а такой вопрос, не по теме этого раздела, но всё таки. АВР можно прошивать через ISP. Допустим я поставлю к мк мега разъём для ISP программирования. можно, например один из пинов MOSI использовать потом для других целей, например, для генерации видеосигнала... Я имею в виду, что помимо разъёма ISP к этому выводу будет подключён ещё RCA разъём.... это не будет мешать????

Спасибо.
Реклама
Мудрый кот
Аватара пользователя
Сообщения: 1810
Зарегистрирован: Чт июн 10, 2010 08:55:35
Откуда: Сибирские Афины

Сообщение Kavka »

Мешать будет. Главное, чтобы "степень мешания" была такой, которую программатор может побороть :)
Ну, отключите вы кабель от RCA разъёма...и мешать оно будет значительно меньше, чем с кабелем.
Когда уже ничего не помогает - прочтите, наконец, инструкцию.
Лучший оптимизатор находится у вас между ушей. (Майкл Абраш, программист Quake и QuakeII)
Избыток информации ведёт к оскудению души - Леонтьев А. (сказано в 1965 г.)
YS
Друг Кота
Аватара пользователя
Сообщения: 7518
Зарегистрирован: Вс мар 29, 2009 22:09:05

Сообщение YS »

Подскажите, правда если при объявлении переменных и массивов использовать const, переменная помещается не в ОЗУ, а в память программ?
Вообще, зависит от компилятора. В GCC надо, как уже сказали, использовать pgmspace.h и модификатор PROGMEM. IAR, ЕМНИП, использует модификатор __flash.
Разница между теорией и практикой на практике гораздо больше, чем в теории.
Контактная информация:
Ответить

Вернуться в «AVR»