|
Вычисляемая константа в PCW, как? |
|
|
|
Feb 25 2009, 11:21
|

Местный
  
Группа: Свой
Сообщений: 224
Регистрация: 23-11-08
Из: Украина, Луганск
Пользователь №: 41 879

|
Возникло желание "попросить" компилятор (PCW) при компиляции рассчитать значение константы (на этапе отладки устройства приходится часто подбирать значение). Пытаюсь вставить такое: Код const unsigned int16 VoltageMax = 2.5/(4.18/1024); Ругается. Приходится вручную подставлять 612. Если не указываю, что это константа, компилятор напихивает библиотек и прошивка "раздувается". Что я не так делаю?
--------------------
«Чтобы что-то изобрести, вам потребуется хорошее воображение и куча мусора» /Томас Эдисон/
|
|
|
|
|
 |
Ответов
|
Feb 25 2009, 13:07
|

Местный
  
Группа: Свой
Сообщений: 224
Регистрация: 23-11-08
Из: Украина, Луганск
Пользователь №: 41 879

|
Цитата(MrYuran @ Feb 25 2009, 14:58)  Вообще константа отличается от дефайна тем, что она располагается в памяти (ОЗУ или во флеши) и программа по мере надобности к ней обращается. Дефайн подставляется по месту на этапе компиляции препроцессором. Сейчас пытался дефайном вставить - ругается, зараза.. Сам дефайн "съедает". А вот потом присвоить переменным не выходит. ОЗУ тратить не хочется..
--------------------
«Чтобы что-то изобрести, вам потребуется хорошее воображение и куча мусора» /Томас Эдисон/
|
|
|
|
|
Feb 25 2009, 13:28
|

Беспросветный оптимист
     
Группа: Свой
Сообщений: 4 640
Регистрация: 26-12-07
Из: Н.Новгород
Пользователь №: 33 646

|
Цитата(Eddy71 @ Feb 25 2009, 16:07)  Сейчас пытался дефайном вставить - ругается, зараза.. А ругается-то как? Error - это ругается. А Warning - это просто предупреждает, что, мол, имеете право, но возможны проблемы... Лучше выкладывайте, как ругается и на что, показательней будет
--------------------
Программирование делится на системное и бессистемное. ©Моё :) — а для кого-то БГ — это Bill Gilbert =)
|
|
|
|
|
Feb 25 2009, 14:22
|

Местный
  
Группа: Свой
Сообщений: 224
Регистрация: 23-11-08
Из: Украина, Луганск
Пользователь №: 41 879

|
Цитата(MrYuran @ Feb 25 2009, 16:28)  А ругается-то как? Лучше выкладывайте, как ругается и на что, показательней будет Вротмненоги!... Хотел показать - откомпилировалось без ошибок. Правда аномалия: Код const unsigned int16 ChargeMax = (unsigned int16)(1024 * 2.5/4.18); const unsigned int16 ChargeMin = (unsigned int16)(1024 * 2.5/4.10); после такого пишет Memory Usage: ROM38% RAM30% А после такого варианта: Код #define VoltageMax (2.5/(4.18/1024)) #define VoltageMin (2.5/(4.10/1024)) volatile unsigned int16 ChargeMax = VoltageMax; volatile unsigned int16 ChargeMin = VoltageMin; Memory Usage: ROM39% RAM36% Непонятно..
--------------------
«Чтобы что-то изобрести, вам потребуется хорошее воображение и куча мусора» /Томас Эдисон/
|
|
|
|
|
Feb 25 2009, 14:30
|
;
     
Группа: Участник
Сообщений: 5 646
Регистрация: 1-08-07
Пользователь №: 29 509

|
Цитата(Eddy71 @ Feb 25 2009, 18:22)  Непонятно.. Все просто: второй случай volatile unsigned int16 ChargeMax = VoltageMax; Подразумевает, что VoltageMax жрет флеш в виде непосредственного операнда либо двух байт в таблице инициализации, и ChargeMax жрет две ячейки памяти ОЗУ. Экономия при дефайне получается, когда например Код int16 temp;
temp = WREG; // что-то откуда-то прочли
if(temp > VoltageMax) temp = VoltageMax; типотак
|
|
|
|
Сообщений в этой теме
Eddy71 Вычисляемая константа в PCW, как? Feb 25 2009, 11:21 _Pasha Цитата(Eddy71 @ Feb 25 2009, 15:21) Что я... Feb 25 2009, 11:27 _Pasha Цитата(_Pasha @ Feb 25 2009, 15:27) #defi... Feb 25 2009, 11:37 MrYuran Цитата(Eddy71 @ Feb 25 2009, 14:21) Кодco... Feb 25 2009, 11:31 Eddy71 Цитата(MrYuran @ Feb 25 2009, 15:31) Логи... Feb 25 2009, 11:53     Eddy71 Цитата(_Pasha @ Feb 25 2009, 17:30) Эконо... Feb 25 2009, 15:00    xemul Цитата(Eddy71 @ Feb 25 2009, 17:22) ...
Н... Feb 25 2009, 15:33    demiurg_spb Привыкайте писать грамотно. Используйте препроцесс... Feb 25 2009, 22:37 Eddy71 Исчерпывающий совет. Одно не совсем понятно. Почем... Feb 26 2009, 08:33 demiurg_spb Если константа объявлена как статик, то компилятор... Feb 26 2009, 09:53  MrYuran Цитата(demiurg_spb @ Feb 26 2009, 12:53) ... Feb 26 2009, 10:01   Сергей Борщ Цитата(MrYuran @ Feb 26 2009, 12:01) А ес... Feb 26 2009, 10:05    MrYuran Цитата(Сергей Борщ @ Feb 26 2009, 13:05) ... Feb 26 2009, 10:13     Сергей Борщ Цитата(MrYuran @ Feb 26 2009, 12:13) Он ж... Feb 26 2009, 12:18      demiurg_spb Сергей прав. Я просто забыл ещё упомянуть о возмож... Feb 26 2009, 13:05 Eddy71 Попробовал разные варианты компиляции, похоже PCW ... Feb 26 2009, 14:11 Eddy71 По ходу обучения писанию на Си возник глупейший во... Feb 26 2009, 15:34
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0
|
|
|