|
Макросы в IAR EWAVR, v5.40.1 |
|
|
|
 |
Ответов
|
Feb 8 2010, 21:21
|
;
     
Группа: Участник
Сообщений: 5 646
Регистрация: 1-08-07
Пользователь №: 29 509

|
Пример, заменяющий первую половину использованной Вами ахинеи, место которой вот здесь Код #define ADC_REF_VCC 1 #define ADC_REF_EXT 0 #define ADC_REF_1V1 3 #define ADC_REF_2V56 2 #define SET_ADC_CHANNEL(refn, chsel) ADMUX = (refn << REFS0) | (chsel) Вопрос, а нафига оно нужно, плодить новояз, добавляющий еще один уровень понятий между терминами, определенными производителем микросхем и человеком, читающим текст программы, задавать не буду. Лучше о хорошем поговорим. Например Код #define ADPS_DIV2 1 ни о чем не говорит, а вот с привязкой к F_CPU Код #define ADPS_dv(val) ((val >= (F_CPU / 250000)) && (val <= (F_CPU / 50000))) #if ADPS_dv(2) #define STD_ADPS 1 #elif ADPS_dv(4) #define STD_ADPS 2 #elif ADPS_dv(8) #define STD_ADPS 3 #endif получаем некоторую свободу от пересчета делителя. Такие дела.
|
|
|
|
|
Feb 9 2010, 15:23
|

Профессионал
    
Группа: Свой
Сообщений: 1 175
Регистрация: 5-01-05
Пользователь №: 1 807

|
Цитата(_Pasha @ Feb 9 2010, 01:14)  Потому что перед отмеченной красным строкой символ "\" не является последним в строке. Извините, но не поленился сделать простой проект в IAR. Могу я покорнейше узнать, почему эта ошибка все еще присутствует? У вас компилируется нормально или с той же ошибкой? Цитата ...выискивая несуществующую разницу. Про pragma inline=forced Вы слышали? У Вас SETBIT() - это макрос, а у меня SetPin() - это функция, а компилируются они одинаково... Хорошо. Спрошу проще: вы оформили SetPin() как функцию сознательно по каким-либо существенным мотивам или "просто так сложилось"? Т. е. для вас есть существенная разница как написать данную функцию для девайса со всего лишь 4к флеша? Вот что в хелпе нашел: Цитата The compiler is capable of inlining functions. This means that instead of calling a function, the compiler inserts the content of the function at the location where the function was called. The result is a faster, but often larger, application. Also, inlining may enable further optimizations. The compiler often inlines small functions declared static. The use of the #pragma inline directive and the C++ keyword inline gives you fine-grained control, and it is the preferred method compared to the traditional way of using preprocessor macros. This feature can be disabled using the --no_inline command line option. Но инлайнить нужно не всегда. И, тем более, когда "...это компилер решает...". Т.е. управлять этой прагмой все равно должен пользователь и встает вопрос - не проще ли макрос написать? Почему "gives you fine-grained control" пока не догоняю... Я не спец по С, прошу уж сильно то не пинать )))), учитывая название раздела для данной темы....
Прикрепленные файлы
proj.rar ( 6.38 килобайт )
Кол-во скачиваний: 14
|
|
|
|
|
Feb 9 2010, 15:38
|

фанат дивана
     
Группа: Свой
Сообщений: 3 387
Регистрация: 9-08-07
Из: Уфа
Пользователь №: 29 684

|
Цитата(ivainc1789 @ Feb 9 2010, 20:23)  Извините, но не поленился сделать простой проект в IAR. Могу я покорнейше узнать, почему эта ошибка все еще присутствует? Потому что Цитата(_Pasha @ Feb 9 2010, 03:14)  Потому что перед отмеченной красным строкой символ "\" не является последним в строке. Уберите пробел в конце строки Код if (Value == 4) ADCSRA &= 0x07;else\
--------------------
Если бы я знал, что такое электричество...
|
|
|
|
Сообщений в этой теме
ivainc1789 Макросы в IAR EWAVR Feb 8 2010, 06:54 Палыч Цитата(ivainc1789 @ Feb 8 2010, 09:54) По... Feb 8 2010, 07:05 SasaVitebsk Цитата(ivainc1789 @ Feb 8 2010, 10:54) В ... Feb 8 2010, 08:19 ivainc1789 ЦитатаНепонятно, как именно вообще макросы могут с... Feb 8 2010, 20:03 Dog Pawlowa Цитата(ivainc1789 @ Feb 8 2010, 23:03) А ... Feb 8 2010, 20:26  ivainc1789 Цитата(Dog Pawlowa @ Feb 8 2010, 23:26) 1... Feb 8 2010, 21:21   Dog Pawlowa Цитата(ivainc1789 @ Feb 9 2010, 01:21) То... Feb 9 2010, 09:33     ivainc1789 Цитата(AHTOXA @ Feb 9 2010, 18:38) Уберит... Feb 9 2010, 16:32    Dog Pawlowa Цитата(ivainc1789 @ Feb 9 2010, 19:23) вы... Feb 9 2010, 20:54  SasaVitebsk Цитата(ivainc1789 @ Feb 9 2010, 01:44) То... Feb 9 2010, 01:54 SasaVitebsk +1.
Не считаю себя профессионалом в данном вопросе... Feb 9 2010, 10:27 rezident На последнем скриншоте из сообщения #13 в макросах... Feb 9 2010, 17:26 ivainc1789 Цитата(rezident @ Feb 9 2010, 20:26) На п... Feb 9 2010, 19:09  rezident Цитата(ivainc1789 @ Feb 10 2010, 00:09) И... Feb 9 2010, 20:50
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0
|
|
|