13.09.2014, 18:36
|
|
Временная регистрация
Регистрация: 12.09.2008
Сообщений: 61
Сказал спасибо: 20
Сказали Спасибо 7 раз(а) в 5 сообщении(ях)
|
Re: Изучение PIC C Compiler(CCS C)
Обьясните, как правильно создавать массивы в CCS.
В программе объявляю локально массив данных, проблема в том, что объявление массива увеличивает прошивку на дохрена байт, но ведб массив хранится в RAM, и я его не никак не инициализирую! но самое интересное - размер увеличения очень непонятно зависит от размера объявляемого массива.
int8 data[130]; - ROM 2632
int8 data[150]; - ROM 2864 (добавил 20 элементов, а прошивка увеличилась на 232!)
int8 data[180]; - ROM 2752 (добавил еще 30 - прошивка уменьшилась!)
|
|
|
|
22.09.2014, 23:08
|
|
Прописка
Регистрация: 07.05.2008
Адрес: Москва
Сообщений: 231
Сказал спасибо: 26
Сказали Спасибо 54 раз(а) в 19 сообщении(ях)
|
Re: Изучение PIC C Compiler(CCS C)
Сообщение от ZoomerJuk
|
и я его не никак не инициализирую!
|
Объявляя его (массив) уже даёшь команду компилятору на выделение для него участка памяти размером в длинну(130-180) и глубинойх8bit (8bit кажется это объём одной адресуемой ячейки памяти).
То что получается разный объём занимаемой памяти - то это может быть уловки самого компилятора. Попробуй поставить перед определением типа - спецификатор Pragma, и посмотри чего получиться, но не поручусь за успех, надо пробовать...
|
|
|
Сказали "Спасибо" Prototup
|
|
|
22.09.2014, 23:18
|
|
Прописка
Регистрация: 07.05.2008
Адрес: Москва
Сообщений: 231
Сказал спасибо: 26
Сказали Спасибо 54 раз(а) в 19 сообщении(ях)
|
Re: Изучение PIC C Compiler(CCS C)
Сообщение от vlad_ru
|
ожет кто знает где взять 5.027 ???
|
Это похоже тупиковая ветка книги Шпака!
Ситуация если не улучшится, в ближайшее время, буду присматриваться к IARовскому компилятору.
У кого есть более оптимистичные взгляды на этот облом?
|
|
|
|
23.09.2014, 08:45
|
|
Прописка
Регистрация: 14.10.2006
Адрес: Ростов-на-Дону
Сообщений: 113
Сказал спасибо: 14
Сказали Спасибо 32 раз(а) в 21 сообщении(ях)
|
Re: Изучение PIC C Compiler(CCS C)
Я иногда по старой памяти заглядываю в эту ветку, и за несколько лет почти ничего не поменялось. CCS + Шпак о-о-очень хорош для начинающих, но как только ты хочешь сделать шаг влево, шаг вправо от стандартных операций, наступает "Гитлер капут". Я сам 3-4 года назад через великую ломку сменил одновременно и процессор (PIC18 --› PIC24), и компилятор (CCS --› MPLAB C30). Теперь я решаю чисто технические вопросы, а не танцую с бубном ![Улыбка](images/smilies/icon_smile.gif) . Так что рекомендую поскорее расстаться с детскими ходунками... Кому это не понравится, прошу не кидать в меня трупиками 16-х ПИКов
|
|
|
Сказали "Спасибо" varostov
|
|
|
25.09.2014, 13:46
|
|
Частый гость
Регистрация: 10.06.2005
Сообщений: 30
Сказал спасибо: 13
Сказали Спасибо 22 раз(а) в 9 сообщении(ях)
|
Re: Изучение PIC C Compiler(CCS C)
Нелинейная зависимость размерности массива и обьема выделяемой памяти ИМХО связана с сегментированием RAM. Массив может помещаться в один банк (и тогда его размерность совпадет с выделяемой памятью), или в 2 банка или даже в три. В этих случаях компилер добавляет какую-то служебную инфу к массиву. ПРИ ЭТОМ обращение к элементам массива ПО ИНДЕКСУ работает корректно, а по указателям - МОЖЕТ и плющить. Сильно зависит от версии компилера и типа ПИКа. Как-то так...
|
|
|
|
25.09.2014, 14:03
|
|
Гуру портала
Регистрация: 20.11.2004
Сообщений: 10,015
Сказал спасибо: 936
Сказали Спасибо 2,269 раз(а) в 1,563 сообщении(ях)
|
Re: Изучение PIC C Compiler(CCS C)
Сообщение от Prototup
|
буду присматриваться к IARовскому компилятору.
|
Опоздал и намного ...
__________________
Осторожно , злой кот
|
|
|
|
27.09.2014, 22:41
|
|
Прописка
Регистрация: 07.05.2008
Адрес: Москва
Сообщений: 231
Сказал спасибо: 26
Сказали Спасибо 54 раз(а) в 19 сообщении(ях)
|
Re: Изучение PIC C Compiler(CCS C)
Сообщение от dosikus
|
Опоздал и намного ...
|
Я догадывался что скоро конец света, но не подозревал что так быстро
|
|
|
|
29.09.2014, 13:01
|
|
Вид на жительство
Регистрация: 09.12.2006
Сообщений: 337
Сказал спасибо: 422
Сказали Спасибо 34 раз(а) в 26 сообщении(ях)
|
Re: Изучение PIC C Compiler(CCS C)
Помогите , как правильно пишется Left Shift operator (побитовый сдвиг).
Нужно изменить (написано для компилятора SDCC)
DS = (c ›› i) & 1;
для PIC CCS
оригинал
http://rxlab.org/knowledgebase/?doc=17
Последний раз редактировалось vlad_ru; 29.09.2014 в 13:19.
|
|
|
|
29.09.2014, 13:01
|
|
Почётный гражданин KAZUS.RU
Регистрация: 22.02.2008
Адрес: Ukraine, рядом с Полтавой
Сообщений: 9,702
Сказал спасибо: 5,498
Сказали Спасибо 25,129 раз(а) в 5,644 сообщении(ях)
|
Re: Изучение PIC C Compiler(CCS C)
Опять слюнки текут:
5.027 has fairly serious issues when using the CCS ICD debugger.....5.028 is supposed to fix these undeserved issues
Recent changes
5.028 Include file search rules have been tightened up to only look in specified directories
5.028 An optimization error initializing some large arrays on a PIC18 is fixed
5.028 sprintf optimization has been improved
5.028 A undeserved debugger error reporting a bad device ID is fixed
__________________
«Совершенство — это не тогда, когда уже нечего больше добавить, а тогда, когда уже нечего отнять.»
/Эйнштейн/
моя домашняя страничка: http://www.eddy.com.ua/
|
|
|
|
29.09.2014, 23:30
|
|
Почётный гражданин KAZUS.RU
Регистрация: 10.05.2003
Адрес: Москва
Сообщений: 2,530
Сказал спасибо: 737
Сказали Спасибо 1,927 раз(а) в 799 сообщении(ях)
|
Re: Изучение PIC C Compiler(CCS C)
Какой-то странный глюк. Первый раз такое.
Старенький 18F258, прикручиваю к нему дисплейчик 12864. В Протеусе работает. Паяю железку. Обломс... Два старших бита порта данных не дергаются. Засада. Думаю, спалил. Ан нет. Через них же программирование идет. Короткая тестовая прога - простой ногодрыг. Как часы работает. Заливаю заново рабочую прошивку - не работает... Создал новый проект, начал кусками текст передирать. Работает нормально. ПОЛНОСТЬЮ скопировал весь текст в новый файл, скомпилировал - работает. Жесть. А дальше я решил поюзать АЦП... Один канал - полет нормальный. Три канала - полный бред.Причем, если напряжение подавать только на одну ногу - работает, но при этом остальные каналы выдают похожие результаты. Плату помыл. Один х. Если посадить любой из каналов на землю, на других выше 0x2BC при 5в на входе не выдает. В общем, поразвлекавшись день, плюнул, оставил один канал (работает отлично). Не судьба.
И вот, объясните тупому, почему
PHP код:
|
((y ›› 3) & 0xBF) | 0xB8
|
работает раз в 8 быстрее, чем
PHP код:
|
(y/8 & 0xBF) | 0xB8
|
? Правда, это не CCS (в нем как раз нормально), а XC8.
Кстати, а нет ли у кого работающего драйвера под 12864 для XC8? Предыдущий абзац из попытки передрать драйвер из CCS. Неудачной попытки. Вроде как все похоже, но дисплей не реагирует.
__________________
Опыт - это школа, в которой человек узнает, каким дураком он был раньше.
|
|
|
|
Ваши права в разделе
|
Вы не можете создавать новые темы
Вы не можете отвечать в темах
Вы не можете прикреплять вложения
Вы не можете редактировать свои сообщения
HTML код Выкл.
|
|
|
Часовой пояс GMT +4, время: 16:24.
|
|