Реклама на сайте English version  DatasheetsDatasheets

KAZUS.RU - Электронный портал. Принципиальные схемы, Datasheets, Форум по электронике

Новости электроники Новости Литература, электронные книги Литература Документация, даташиты Документация Поиск даташитов (datasheets)Поиск PDF
  От производителей
Новости поставщиков
В мире электроники

  Сборник статей
Электронные книги
FAQ по электронике

  Datasheets
Поиск SMD
Он-лайн справочник

Принципиальные схемы Схемы Каталоги программ, сайтов Каталоги Общение, форум Общение Ваш аккаунтАккаунт
  Каталог схем
Избранные схемы
FAQ по электронике
  Программы
Каталог сайтов
Производители электроники
  Форумы по электронике
Помощь проекту

Микроконтроллеры, АЦП, память и т.д Темы касающиеся микроконтроллеров разных производителей, памяти, АЦП/ЦАП, периферийных модулей...

Закрытая тема
Опции темы
Непрочитано 02.09.2007, 18:51   #1
zelen536
Заблокирован
 
Регистрация: 31.03.2007
Сообщений: 129
Сказал спасибо: 6
Сказали Спасибо 3 раз(а) в 3 сообщении(ях)
zelen536 на пути к лучшему
По умолчанию Задание массива во Flash AVR на Си в AVRStudio + WinAVR

Написал проект на Си в среде AVRStudio + WinAVR ~10Кбайт для ATmega64-128, все нормально работает, но в проекте есть кусок - неизменяемый массив ~2Кбайт, который как видно на симуляторе загружается в ОЗУ и оттуда прога выбирает по индексу необходимые элементы - все как обычно, как у всех. Но хочется сэкономить ОЗУ, ведь его относительно мало (задача в последующем может потребовать еще ОЗУ) а размера Flash более чем достаточно (64-128Кбайт, занято только 10) и не знаю как в WinAVR задать этот массив размещенным во Flash, чтоб оттуда только по индексу, находящемуся в ОЗУ прога выбирала элементы. Файл pgmspase.h к проекту подключен, массив объявлен как "uint8_t". Как его объявить средствами WinAVR, чтоб он не грузился в ОЗУ при запуске проги и с помощью каких средств WinAVR обращаться к элементам массива, находящихся во Flash?
Реклама:
zelen536 вне форума  
Непрочитано 02.09.2007, 19:11   #2
lsa
Почётный гражданин KAZUS.RU
 
Аватар для lsa
 
Регистрация: 22.06.2004
Адрес: Харьков
Сообщений: 1,488
Сказал спасибо: 3,207
Сказали Спасибо 3,010 раз(а) в 686 сообщении(ях)
lsa на пути к лучшему
По умолчанию Re: Задание массива во Flash AVR на Си в AVRStudio + WinAVR

Это есть в справке
Код:
include ‹avr/pgmspace.h›

const char foo[] PROGMEM = "Foo";
const char bar[] PROGMEM = "Bar";

PGM_P array[2] PROGMEM = {
    foo,
    bar
};

int main (void)
{
    char buf[32]; 
    strcpy_P (buf, array[1]);
    return 0;
}
lsa вне форума  
Непрочитано 02.09.2007, 19:16   #3
lsa
Почётный гражданин KAZUS.RU
 
Аватар для lsa
 
Регистрация: 22.06.2004
Адрес: Харьков
Сообщений: 1,488
Сказал спасибо: 3,207
Сказали Спасибо 3,010 раз(а) в 686 сообщении(ях)
lsa на пути к лучшему
По умолчанию

А вот рабочий кусочек
Код:
#include ‹inttypes.h›
#include ‹avr/io.h›
#include ‹avr/pgmspace.h›
const char text1[] PROGMEM = "Test1"; во Флеш
const char text2[] PROGMEM = "Test2"; во Флеш
const char text3[] PROGMEM = "Test3"; во Флеш
const char text4[] PROGMEM = "Test4"; во Флеш

PGM_P menu[4] PROGMEM = { text1, text2, text3, text4 }; массив строк во флеше
int main(void)
{
    DDRB  = 0xff;
    char buffer[10]; символьны йбуфер в ОЗУ
    strcpy_P( buffer, menu[1] ); заполнение буфера из флеша
    PORTB=~buffer[4];  выводит 5 символ в порт из строки Test2 - это 2
    for(;;);
}
lsa вне форума  
Непрочитано 03.09.2007, 15:01   #4
zelen536
Заблокирован
 
Регистрация: 31.03.2007
Сообщений: 129
Сказал спасибо: 6
Сказали Спасибо 3 раз(а) в 3 сообщении(ях)
zelen536 на пути к лучшему
По умолчанию

ник Isa спасибо. Уточни, где в справке можно посмотреть примеры задания во Flash ROM.
zelen536 вне форума  
Непрочитано 03.09.2007, 16:59   #5
Hoksmur
Частый гость
 
Регистрация: 16.05.2005
Сообщений: 21
Сказал спасибо: 0
Сказали Спасибо 0 раз(а) в 0 сообщении(ях)
Hoksmur на пути к лучшему
По умолчанию

WinAVRdocavr-libcavr-libc-user-manualFAQ.html
Сам вот только с этим разобрался. На 2313 массив в ram не похранишь.
Hoksmur вне форума  
Непрочитано 03.09.2007, 17:51   #6
urry
Почётный гражданин KAZUS.RU
 
Аватар для urry
 
Регистрация: 06.02.2007
Сообщений: 1,340
Сказал спасибо: 3
Сказали Спасибо 106 раз(а) в 66 сообщении(ях)
urry на пути к лучшему
По умолчанию

Сообщение от Hoksmur
На 2313 массив в ram не похранишь.
Я не по авр выступаю - но, простите, не верю.
urry вне форума  
Непрочитано 03.09.2007, 23:18   #7
zelen536
Заблокирован
 
Регистрация: 31.03.2007
Сообщений: 129
Сказал спасибо: 6
Сказали Спасибо 3 раз(а) в 3 сообщении(ях)
zelen536 на пути к лучшему
По умолчанию

ник. Hoksmur - "WinAVRdocavr-libcavr-libc-user-manualFAQ.html " - не отвечает, скинь полную ссылку.
zelen536 вне форума  
Непрочитано 04.09.2007, 01:20   #8
kison
Почётный гражданин KAZUS.RU
 
Регистрация: 13.12.2004
Сообщений: 3,172
Сказал спасибо: 11
Сказали Спасибо 692 раз(а) в 504 сообщении(ях)
kison на пути к лучшему
По умолчанию

Сообщение от zelen536
ник. Hoksmur - "WinAVRdocavr-libcavr-libc-user-manualFAQ.html " - не отвечает, скинь полную ссылку.
В директории куда установлен WinAvr есть папочка Doc, в ней... Дальше разберетесь
kison вне форума  
Непрочитано 04.09.2007, 17:35   #9
Hoksmur
Частый гость
 
Регистрация: 16.05.2005
Сообщений: 21
Сказал спасибо: 0
Сказали Спасибо 0 раз(а) в 0 сообщении(ях)
Hoksmur на пути к лучшему
По умолчанию

Сообщение от urry
Сообщение от Hoksmur
На 2313 массив в ram не похранишь.
Я не по авр выступаю - но, простите, не верю.
Технически - можно, неспорю. Строки там, еще. Мне надо минимум пару массивов по 512 байт. Даже для хранения в ROM пришлось простейшую компрессию делать.
Hoksmur вне форума  
Непрочитано 05.09.2007, 10:54   #10
zelen536
Заблокирован
 
Регистрация: 31.03.2007
Сообщений: 129
Сказал спасибо: 6
Сказали Спасибо 3 раз(а) в 3 сообщении(ях)
zelen536 на пути к лучшему
По умолчанию

Т. е. если я пишу как на рис. то массивы располагаются в ОЗУ.

-- Прилагается рисунок: --

zelen536 вне форума  
Закрытая тема

Закладки


Ваши права в разделе
Вы не можете создавать новые темы
Вы не можете отвечать в темах
Вы не можете прикреплять вложения
Вы не можете редактировать свои сообщения

BB коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.

Быстрый переход

Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
WinAVR+avrLibc+AVR Studio помогите разобраться di_halt Микроконтроллеры, АЦП, память и т.д 17 14.01.2009 23:04
Требуется помошь в Eclipse + AVR(plugin) + GDB(winavr)! alekseyb Микроконтроллеры, АЦП, память и т.д 2 03.06.2008 14:33
Программаторы PIC, AVR и FLASH памяти ST_Senya Микроконтроллеры, АЦП, память и т.д 12 22.11.2007 19:23
AVR Studio & WinAVR chipman Proteus, KiCAD и другие ECAD 1 15.05.2007 12:17
Запись данных AVR микроконтроллера на Flash-USB без ПК Arsenal Микроконтроллеры, АЦП, память и т.д 8 31.10.2006 21:12


Часовой пояс GMT +4, время: 16:32.


Powered by vBulletin® Version 3.8.4
Copyright ©2000 - 2024, Jelsoft Enterprises Ltd. Перевод: zCarot