Как объявить массив в CCS PIC

Поклонники продукции Microchip Technology Inc тусуются тут.
Ответить
Аватара пользователя
ZoomerJuk
Прорезались зубы
Сообщения: 212
Зарегистрирован: Чт июн 03, 2010 16:32:02
Откуда: Донецк

Как объявить массив в CCS PIC

Сообщение ZoomerJuk »

В программе объявляю локально массив данных int8 data[], проблема в том, что объявление массива увеличивает прошивку на дохрена байт, но ведь массив хранится в RAM, и я его никак не инициализирую! но самое интересное - размер увеличения очень непонятно зависит от размера объявляемого массива.

int8 data[130]; - ROM 2632
int8 data[150]; - ROM 2864 (добавил 20 элементов, а прошивка увеличилась на 232!)
int8 data[180]; - ROM 2752 (добавил еще 30 - прошивка уменьшилась!)
Реклама
Аватара пользователя
Аlex
Модератор
Сообщения: 4614
Зарегистрирован: Чт мар 18, 2010 23:09:57
Откуда: Планета Земля
Контактная информация:

Re: Как объявить массив в CCS PIC

Сообщение Аlex »

И ?
Реклама
Аватара пользователя
AlekseyEnergo
Модератор
Сообщения: 2117
Зарегистрирован: Пт янв 11, 2013 19:19:26
Откуда: Санкт-Петербург

Re: Как объявить массив в CCS PIC

Сообщение AlekseyEnergo »

КомпилятоР? Провокатор.
=========
Правила Форума ЗДЕСЬ _____ Правила раздела БАЗАР ЗДЕСЬ _____ Если вы продаете, прочтите ЗДЕСЬ

Редко появляюсь. Если вопрос не личного характера пользуйтесь кнопкой "!".
Аватара пользователя
ZoomerJuk
Прорезались зубы
Сообщения: 212
Зарегистрирован: Чт июн 03, 2010 16:32:02
Откуда: Донецк

Re: Как объявить массив в CCS PIC

Сообщение ZoomerJuk »

Аlex писал(а):И ?
Почему простое объявление локального массива (в RAM), без инициализации, нереально увеличивает размер флеша (ROM) и самое главное - почему увеличиваемый размер непропорционален и непонятно как связан с размером объявляемого массива?
КомпилятоР?
CCS PIC C Compoliler V5.025
Реклама
Эиком - электронные компоненты и радиодетали
Аватара пользователя
dosikus
Друг Кота
Сообщения: 3604
Зарегистрирован: Пн июл 28, 2008 22:12:01

Re: Как объявить массив в CCS PIC

Сообщение dosikus »

Массив инициализирует(обнуляет) компилятор. Полезно заглядывать в листинг ...
Реклама
Аватара пользователя
ZoomerJuk
Прорезались зубы
Сообщения: 212
Зарегистрирован: Чт июн 03, 2010 16:32:02
Откуда: Донецк

Re: Как объявить массив в CCS PIC

Сообщение ZoomerJuk »

Ладно, пусть компилятор обнуляет, это я видел в листинге. Но тогда почему при увеличении размера на 20 элементов прошивка увеличивается на 232 байта, а затем, если массив увеличить еще на 30 элементов, прошивка УМЕНЬШАЕТСЯ на 132 байта? Что за фигня, где логика? Может это как-то связано с ограничениями на размер массива в памяти, но тогда какого хрена такие странные цифры?

В листинг я смотрел. Я не могу понять, зачем компилятор это делает, ведь я не просил создавать проинициализированный блок данных, просто выделить под них память, может я не так объявляю или чего-то не знаю, потому и спрашиваю. В моём понимании компилятор должен найти в ОЗУ последний занятый байт, и с него выделить место под массив - сохранив указатель на начало и конец, что б размещать последующие данные в ОЗУ. Максимум такое объявление должно занимать пару десятков строк листинга, но не пару сотен флеш-памяти!
Реклама
Аватара пользователя
dosikus
Друг Кота
Сообщения: 3604
Зарегистрирован: Пн июл 28, 2008 22:12:01

Re: Как объявить массив в CCS PIC

Сообщение dosikus »

Уйти на XC8 ?
Аватара пользователя
Аlex
Модератор
Сообщения: 4614
Зарегистрирован: Чт мар 18, 2010 23:09:57
Откуда: Планета Земля
Контактная информация:

Re: Как объявить массив в CCS PIC

Сообщение Аlex »

MCC :
Спойлер
MCC_1.png
(24.9 КБ) 164 скачивания
MCC_2.png
(24.87 КБ) 133 скачивания
MCC_3.png
(24.83 КБ) 138 скачиваний
MCC_4.png
(24.85 КБ) 132 скачивания
XC8 :
Спойлер
XC_1.png
(24.1 КБ) 145 скачиваний
XC_2.png
(24.45 КБ) 126 скачиваний
XC_3.png
(24.48 КБ) 131 скачивание
XC_4.png
(24.46 КБ) 141 скачивание
Комментарии излишни...

Не знаю, что у Вас там и чего много занимает...
HHIMERA
Друг Кота
Сообщения: 4583
Зарегистрирован: Вс дек 05, 2010 06:10:34
Откуда: ЮВ

Re: Как объявить массив в CCS PIC

Сообщение HHIMERA »

ZoomerJuk писал(а):я не просил создавать проинициализированный блок данных, просто выделить под них память, может я не так объявляю или чего-то не знаю
Ну так и грызните доку компилятора... на предмет неинициализированных данных... ключи, галочки в настройках...
"Я не даю готовых решений, я заставляю думать!"(С)
Аватара пользователя
ARV
Ум, честь и совесть. И скромность.
Сообщения: 18561
Зарегистрирован: Чт дек 28, 2006 08:19:56
Откуда: Новочеркасск
Контактная информация:

Re: Как объявить массив в CCS PIC

Сообщение ARV »

глобальные массивы инициализируются по умолчанию. локальные - нет. объявляйте локально и радуйтесь (если стека хватит) :)))
если рассматривать человека снизу, покажется, что мозг у него глубоко в жопе
при взгляде на многих сверху ничего не меняется...

Мой уютный бложик... заходите!
Аватара пользователя
dosikus
Друг Кота
Сообщения: 3604
Зарегистрирован: Пн июл 28, 2008 22:12:01

Re: Как объявить массив в CCS PIC

Сообщение dosikus »

ARV писал(а): если стека хватит
пЫк однако . :)))
HHIMERA
Друг Кота
Сообщения: 4583
Зарегистрирован: Вс дек 05, 2010 06:10:34
Откуда: ЮВ

Re: Как объявить массив в CCS PIC

Сообщение HHIMERA »

ARV писал(а):глобальные массивы инициализируются по умолчанию. локальные - нет. объявляйте локально и радуйтесь (если стека хватит) :)))
Опять про стандарты... и ни о чём??? :)))
В младших ПИКах хардварный стек...
"Я не даю готовых решений, я заставляю думать!"(С)
Аватара пользователя
ZoomerJuk
Прорезались зубы
Сообщения: 212
Зарегистрирован: Чт июн 03, 2010 16:32:02
Откуда: Донецк

Re: Как объявить массив в CCS PIC

Сообщение ZoomerJuk »

Переходить на другой проект не вариант, проект уже почти готов, но главное - я не могу разобраться с граблями используемого компилятора, который использую уже долгое время, что тогда говорить о новом?

Справку читал, но ничего толком по объявлению массив не нашел.

Массив у меня локальный.

PIC18-й.
Вложения
mas.png
(29.2 КБ) 411 скачиваний
Аватара пользователя
dosikus
Друг Кота
Сообщения: 3604
Зарегистрирован: Пн июл 28, 2008 22:12:01

Re: Как объявить массив в CCS PIC

Сообщение dosikus »

Предлагаешь и нам погадать ? :)))
Для решения этих граблей нужен сам проект а не картинко ...
Аватара пользователя
ARV
Ум, честь и совесть. И скромность.
Сообщения: 18561
Зарегистрирован: Чт дек 28, 2006 08:19:56
Откуда: Новочеркасск
Контактная информация:

Re: Как объявить массив в CCS PIC

Сообщение ARV »

HHIMERA писал(а):Опять про стандарты... и ни о чём??? :)))
В младших ПИКах хардварный стек...
90% проблем из-за того, что кто-то не соблюдает стандарты. причем все равно кто: программист или компилятор - и то и другое плохо. остальные 10% проблем заключаются в том, что кто-то чего-то не понимает: то ли программист не понимает стандарт языка, то ли помощник не понимает вопроса, либо вопрошающий не понимает, как сформулировать проблему, что бы с ней помогли разобраться.

несоответствие компилятора стандату заставляет программиста держать в голове огромное количество совершенно лишней информации об особенностях и нюансах той или иной версии того или иного компилятора... кто-то гордится этим мусором в своей памяти, я не из их числа.

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

Мой уютный бложик... заходите!
Аватара пользователя
ZoomerJuk
Прорезались зубы
Сообщения: 212
Зарегистрирован: Чт июн 03, 2010 16:32:02
Откуда: Донецк

Re: Как объявить массив в CCS PIC

Сообщение ZoomerJuk »

Пока отложил решение проблемы, доведу проект до конца, а потом, если памяти не хватит, возобновлю разборку.
Но вот что заметил, "глюк" появляется при достаточно большом объеме программы - если создать пустой проект, то всё работает как надо, а когда начинаешь увеличивать код, в какой-то момент компилятор начинает чудить.
HHIMERA
Друг Кота
Сообщения: 4583
Зарегистрирован: Вс дек 05, 2010 06:10:34
Откуда: ЮВ

Re: Как объявить массив в CCS PIC

Сообщение HHIMERA »

А может сделать глобапьным... и не маяться???
"Я не даю готовых решений, я заставляю думать!"(С)
Аватара пользователя
ZoomerJuk
Прорезались зубы
Сообщения: 212
Зарегистрирован: Чт июн 03, 2010 16:32:02
Откуда: Донецк

Re: Как объявить массив в CCS PIC

Сообщение ZoomerJuk »

Это ничего не меняет.
Ответить

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