реклама на сайте
подробности

 
 
> Не отрабатывает #define, глюки работы директивы define
aspID
сообщение Jan 6 2008, 10:27
Сообщение #1


Местный
***

Группа: Свой
Сообщений: 343
Регистрация: 24-01-07
Из: Новосибирск
Пользователь №: 24 714



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

Код
#ifdef DEBUG
//Генерация импульса синхронизации
DDRD |= 1 << PD1;
PORTD |= 1 << PD1;
_delay_ms( 1 );
PORTD &= ~(1 << PD1);
#endif //DEBUG


Пока явно в опциях не поставишь DEBUG, в любом из файлов хоть заставься. Точно также не отрабатывает

Код
#ifndef F_CPU
  #define F_CPU 3686400UL
#endif


В используемом далее контексте ругается, что не определено F_CPU
Код
#ifndef F_CPU
# warning "F_CPU not defined for <aspID/delay.h> using 1MHz"
# warning "To define F_CPU go Proj->Opt->C/C++->Defined symbols"
# define F_CPU 1000000UL
#endif

Но и этот # define очень похоже, что не отрабатывает.
help.gif
Заранее спасибо и всех с наступающим Рождеством! santa2.gif


ЗЫ: до сих пор не могу победить проблему, если пишу с использованием классов и НЕ использую конструктор по умолчанию - кричит "дай!" sad.gif
Go to the top of the page
 
+Quote Post
 
Start new topic
Ответов
Baser
сообщение Jan 9 2008, 12:05
Сообщение #2


Просто Che
*****

Группа: Свой
Сообщений: 1 567
Регистрация: 22-05-07
Из: ExUSSR
Пользователь №: 27 881



Цитата(zltigo @ Jan 8 2008, 22:20) *
А что нужно - либо точность, либо скорость - думайте.

Цитата(aspID @ Jan 9 2008, 06:13) *
Про точность понима, а вот про скорость не понима... Что будет работать быстрее и почему?

А вот действительно, наконец-то задумался smile.gif и тоже не понял, что значит в данном примере СКОРОСТЬ.
Макрос то использует встроенную функцию ИАРа:
Цитата
__delay_cycles(unsigned long int);
Makes the compiler generate code that takes the given amount of cycles to perform, that is it inserts a time delay that lasts the specified number of cycles.
Note: The specified value must be a constant integer expression and not an expression that is evaluated at runtime.

И если он будет генерить для одной и той-же или для близких по величине констант код, работающий сильно различное время, то это будет явный ляп ИАРа. А его не наблюдается smile.gif
Так что может коллега zltigo имел в виду не скорость, а размер кода?
Go to the top of the page
 
+Quote Post
zltigo
сообщение Jan 9 2008, 13:32
Сообщение #3


Гуру
******

Группа: Свой
Сообщений: 13 372
Регистрация: 27-11-04
Из: Riga, Latvia
Пользователь №: 1 244



Цитата(Baser @ Jan 9 2008, 14:05) *
Так что может коллега zltigo имел в виду не скорость, а размер кода?

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



Цитата(aspID @ Jan 9 2008, 13:57) *
Видимо, именно потому, что не подумал о возможности подстановки вместо x "неконстанты"...

Ну теперь знаете smile.gif а то, что называется "сюрприз!" может случиться с задержкой.


--------------------
Feci, quod potui, faciant meliora potentes
Go to the top of the page
 
+Quote Post
Сергей Борщ
сообщение Jan 9 2008, 13:42
Сообщение #4


Гуру
******

Группа: Модераторы
Сообщений: 8 455
Регистрация: 15-05-06
Из: Рига, Латвия
Пользователь №: 17 095



Цитата(zltigo @ Jan 9 2008, 15:32) *
а то, что называется "сюрприз!" может случиться с задержкой.
На этапе компиляции. Baser правильно заметил - аргументом __delay_cycles() может быть только константа, ибо компилятор для каждой конкретной задержки генерит подогнанный по тактам код. Для задержек в 2-4 такта вообще без цикла. Если использовать в качестве аргумента переменную - выдает ошибку на этапе компиляции. Исходя из этого можно посоветовать aspIDу поменять макросы назад - чтобы сначала выполнялось умножение и при прочих равных иметь бОльшую точность. А F_CPU объявить с индексом ULL - чтобы вычисления выполнялись в 64 битах и (при разумных задержках) не происходило переполнения.


--------------------
На любой вопрос даю любой ответ
"Write code that is guaranteed to work, not code that doesn’t seem to break" (C++ FAQ)
Go to the top of the page
 
+Quote Post

Сообщений в этой теме
- aspID   Не отрабатывает #define   Jan 6 2008, 10:27
- - Baser   А как вы определяете, что не отрабатывает? Примеры...   Jan 6 2008, 11:02
- - zltigo   Цитата(aspID @ Jan 6 2008, 12:27) Столкну...   Jan 6 2008, 12:08
- - aspID   ЦитатаА как вы определяете, что не отрабатывает? Н...   Jan 6 2008, 12:38
|- - zltigo   Цитата(aspID @ Jan 6 2008, 14:38) Или по ...   Jan 6 2008, 13:01
||- - aspID   Цитата(zltigo @ Jan 6 2008, 19:01) Макрос...   Jan 8 2008, 13:33
||- - Сергей Борщ   Цитата(aspID @ Jan 8 2008, 15:33) понЯл, ...   Jan 8 2008, 14:05
||- - zltigo   Цитата(aspID @ Jan 8 2008, 15:33) Я сдаюс...   Jan 8 2008, 20:20
|- - Baser   Цитата(aspID @ Jan 6 2008, 14:38) Ну, хот...   Jan 6 2008, 15:14
- - aspID   называется "почувствуй себя..." завтра(с...   Jan 7 2008, 20:51
|- - zltigo   Цитата(aspID @ Jan 7 2008, 22:51) Правда,...   Jan 7 2008, 21:22
- - aspID   ЦитатаКанает, но исключительно для одного файла ma...   Jan 8 2008, 03:57
|- - zltigo   Цитата(aspID @ Jan 8 2008, 05:57) Я почем...   Jan 8 2008, 07:12
|- - Baser   Практическая рекомендация к теоретическим объяснен...   Jan 8 2008, 08:34
|- - Сергей Борщ   Цитата(zltigo @ Jan 8 2008, 09:12) в пред...   Jan 8 2008, 08:38
|- - Николай Z   zltigo сказал: Цитата(zltigo @ Jan 8 2008, 10...   Jan 8 2008, 08:59
|- - Dog Pawlowa   Цитата(Николай Z @ Jan 8 2008, 12:59) А я...   Jan 8 2008, 10:14
|- - Николай Z   Цитата(Dog Pawlowa @ Jan 8 2008, 13:14) А...   Jan 8 2008, 15:07
- - aspID   ЦитатаЕсли это обида Сергей, Вовсе даже нет! П...   Jan 8 2008, 15:05
- - aspID   ЦитатаЕще придется думать о переполнении Макрос. С...   Jan 9 2008, 04:13
|- - Baser   Цитата(aspID @ Jan 9 2008, 06:13) Макрос....   Jan 9 2008, 08:03
|- - Николай Z   Цитата(aspID @ Jan 9 2008, 07:13) Макрос....   Jan 9 2008, 08:16
|- - Сергей Борщ   Цитата(Baser @ Jan 9 2008, 10:03) А вот н...   Jan 9 2008, 11:05
|- - aspID   Цитата(Сергей Борщ @ Jan 9 2008, 17:05) О...   Jan 9 2008, 11:57
- - zltigo   Цитата(Сергей Борщ @ Jan 9 2008, 15:42) ....   Jan 9 2008, 16:10
- - Николай Z   __delay_cycles() - это тяжелое наследие 8-ми разря...   Jan 9 2008, 20:42
- - zltigo   Цитата(Николай Z @ Jan 9 2008, 22:42) __d...   Jan 9 2008, 20:54
|- - dxp   Цитата(zltigo @ Jan 10 2008, 02:54) Естес...   Jan 10 2008, 03:49
|- - Сергей Борщ   Цитата(dxp @ Jan 10 2008, 05:49) Вообще, ...   Jan 10 2008, 08:16
|- - Николай Z   Цитата(Сергей Борщ @ Jan 10 2008, 11:16) ...   Jan 10 2008, 09:05
|- - Непомнящий Евгений   Цитата(Николай Z @ Jan 10 2008, 12:05) А ...   Jan 10 2008, 09:35
|- - Николай Z   Цитата(Непомнящий Евгений @ Jan 10 2008, 12...   Jan 10 2008, 09:47
|- - Baser   Цитата(Николай Z @ Jan 10 2008, 11:47) По...   Jan 10 2008, 11:42
|- - Николай Z   Цитата(Baser @ Jan 10 2008, 14:42) Чесно ...   Jan 11 2008, 21:40
|- - Baser   Цитата(Николай Z @ Jan 11 2008, 23:40) То...   Jan 11 2008, 23:01
|- - zltigo   Цитата(Baser @ Jan 12 2008, 01:01) ...где...   Jan 11 2008, 23:13
|- - Baser   Цитата(zltigo @ Jan 12 2008, 01:13) Гаран...   Jan 12 2008, 11:34
|- - Николай Z   Цитата(Baser @ Jan 12 2008, 14:34) Интере...   Jan 12 2008, 11:54
|- - Baser   Цитата(Николай Z @ Jan 12 2008, 13:54) .....   Jan 12 2008, 11:58
|- - Николай Z   Цитата(Baser @ Jan 12 2008, 14:58) Соглас...   Jan 12 2008, 12:08
- - IgorKossak   Цитата(Николай Z @ Jan 9 2008, 22:42) __d...   Jan 9 2008, 21:41
- - Baser   Цитата(Николай Z @ Jan 9 2008, 22:42) __d...   Jan 9 2008, 22:11


Reply to this topicStart new topic
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0

 


RSS Текстовая версия Сейчас: 20th July 2025 - 21:40
Рейтинг@Mail.ru


Страница сгенерированна за 0.01444 секунд с 7
ELECTRONIX ©2004-2016