Страница 1 из 1

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

Добавлено: Чт апр 18, 2013 21:41:34
DentonUA
Добрый день. Подскажите, правда если при объявлении переменных и массивов использовать const, переменная помещается не в ОЗУ, а в память программ?
Например мне надо, чтобы мега16 выводил изображение на телек. В нем всего лишь 1кб озу. Если объявить массив для разрешения с использованием const, я экономлю место в озу? Или по любому, при инциализации произойдет загрузка массива в озу??
..
#define weight 30
#define height 35
...
const char resolution [weight] [height]

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

Добавлено: Чт апр 18, 2013 22:48:09
jordan
объявления переменной типа "const" вы сообщите компилятору что переменная не может быть изменена... для помещения переменных в память программы есть библиотека помойму от чана, называется pgmspace.h
разбирайтесь там все просто

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

Добавлено: Пт апр 19, 2013 12:07:17
DentonUA
Спасибо. Обязательно посмотрю.. Но читал в книге, что да, переменная не может быть изменена. и в этом случае для ней не резервируется память озу ,а только память программ.. В книге читал про МК PIC24...

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

Добавлено: Пт апр 19, 2013 13:18:01
ibiza11
посмотрите этот ОЧЕНЬ ПОЛЕЗНЫЙ документ http://www.gaw.ru/html.cgi/txt/app/micr ... AVR035.htm
в Вашем случае понадобится раздел "Доступ к флэш-памяти"

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

Добавлено: Пт апр 19, 2013 16:57:37
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й студии должна быть встроенная помощь по этим файликам.

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

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

Спасибо.

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

Добавлено: Пт апр 19, 2013 22:54:59
Kavka
Мешать будет. Главное, чтобы "степень мешания" была такой, которую программатор может побороть :)
Ну, отключите вы кабель от RCA разъёма...и мешать оно будет значительно меньше, чем с кабелем.

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

Добавлено: Сб апр 20, 2013 16:53:02
YS
Подскажите, правда если при объявлении переменных и массивов использовать const, переменная помещается не в ОЗУ, а в память программ?
Вообще, зависит от компилятора. В GCC надо, как уже сказали, использовать pgmspace.h и модификатор PROGMEM. IAR, ЕМНИП, использует модификатор __flash.