pic18f45k20 среда mikroC проблема с большим массивом

Вопросы настройки, программирования, прошивки микроконтроллеров и микросхем программируемой логики
Закрыто
tip62
Первый раз сказал Мяу!
Сообщения: 21
Зарегистрирован: Вт янв 25, 2011 01:15:30

pic18f45k20 среда mikroC проблема с большим массивом

Сообщение tip62 »

Задача стоит следующая по I2C прошивать проц с помощью pic18f45k20.Прошивка представляет собой набор однабайтных чисел которые я храню в массиве. Загвоздка в том, что проект не компилируется, когда добавляю библиотечные функции типа I2C_init - пишет not enough RAM. Отдельно функции работают 100%!и без них проект компилируется.в вложении сишный файл. Помогите пожалуйста!!!
Да кстати, если скомпилировать проект без функций, то компилятор пишет что использовано RAM 1%, ROM 5%.
Вложения
текст программы.txt
(11.69 КБ) 211 скачиваний
Реклама
Аватара пользователя
Shapa
Встал на лапы
Сообщения: 127
Зарегистрирован: Пт июн 20, 2008 09:38:05
Откуда: Харьков
Контактная информация:

Re: pic18f45k20 среда mikroC проблема с большим массивом

Сообщение Shapa »

Простите, что мой совет не принесёт вам желанного решения, но прошу вас! Выкиньте вы к черту этот mikroC, худшего компилятора я в жизни не встречал.
tip62 писал(а):Прошивка представляет собой набор однабайтных чисел которые я храню в массиве. .

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

const unsigned short  massive[]
Наличие модификатора const, отнюдь не означает, что данные будут расположенны во флеше. По стандарту С, переменная, пусть и константная распологается в ОЗУ, а ваш массив явно больше 1.5 КБайт SRAM'a. Разместите его во флеш. Места станет больше.

ЗЫ: если вы хотите спросить "а почему когда я компилирую без вызова, то озов только 1% занято?" то сразу отвечу, оптимизатор выбрасывает ваш массив из озу, как не используемый
Реклама
tip62
Первый раз сказал Мяу!
Сообщения: 21
Зарегистрирован: Вт янв 25, 2011 01:15:30

Re: pic18f45k20 среда mikroC проблема с большим массивом

Сообщение tip62 »

Shapa, спасибо, что откликнулись, как вы уже поняли в микроконтроллерах я не особо разбираюсь, подскажите как разместить массив во флэш?я честно говоря думал, что const мне поможет, но увы...
Аватара пользователя
Shapa
Встал на лапы
Сообщения: 127
Зарегистрирован: Пт июн 20, 2008 09:38:05
Откуда: Харьков
Контактная информация:

Re: pic18f45k20 среда mikroC проблема с большим массивом

Сообщение Shapa »

tip62 писал(а):Shapa, спасибо, что откликнулись, как вы уже поняли в микроконтроллерах я не особо разбираюсь, подскажите как разместить массив во флэш?я честно говоря думал, что const мне поможет, но увы...
Все с чего-то начинали...
Пока что нашел только часть решения: в микро е есть библиотека работы с Флешем (Flash Memory Library). В ней реализованны функции чтения и записи во флеш. Это пол дела, ещё нужно сами данные разместить во флеше: выделить память и присвоить ей нужные значения. Так вот как это сдлеать я пока что не понимаю. Например в WinAVR это делается добавлением модификатора PROGMEM, который указывает компиляторы на необходимостть сохранения данных в памяти програм (флеше). По аналогии, что-то такое должно быть и в микроС
Кстати, вы не думали разместить ваш массив в EEPROM'e? может быть вам там хватит места
Реклама
Эиком - электронные компоненты и радиодетали
Аватара пользователя
urry
Сверлит текстолит когтями
Сообщения: 1262
Зарегистрирован: Пн дек 08, 2008 10:58:48
Откуда: Винница
Контактная информация:

Re: pic18f45k20 среда mikroC проблема с большим массивом

Сообщение urry »

Для мсс18 было бы const rom unsigned short massive[]
Можно доработать файл линкера (но опять же для мсс18, другого не знаю).
:)
Реклама
TripleKill
Вымогатель припоя
Сообщения: 671
Зарегистрирован: Вт июн 29, 2010 12:31:49

Re: pic18f45k20 среда mikroC проблема с большим массивом

Сообщение TripleKill »

Может попробовать оптимизировать?
Я засунул массив ТС в прогу, вот кусок этих данных, интерпретированный графически:
Изображение

Весь массив:
Изображение

Создаётся впечатление, что набор данных периодически повторяется. Если это так, то его можно урезать до одного периода, и циклически выбирать эти данные. Куча памяти сэкономится.
С другой стороны, если приведённый массив есть лишь пример, а данные могут в принципе быть любыми, то можно как вариант предложить SPI-память, типа 24LC08. Массив считывается оттуда и выплёвывается в I2C.
Реклама
tip62
Первый раз сказал Мяу!
Сообщения: 21
Зарегистрирован: Вт янв 25, 2011 01:15:30

Re: pic18f45k20 среда mikroC проблема с большим массивом

Сообщение tip62 »

массив лишь пример к сожалению(
использование внешней памяти не катит, тк изначально пошивка загружалась из 24 серии, но потом решили, раз есть контролллер на плате, который, почти ничего не делает, загружать прошивку из него!
сспасибо за ответы, сегодня буду ещё мучиться)
Закрыто

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