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

 
 
> delay(uS), как сделать макрос?
fmdost
сообщение Jul 28 2008, 15:54
Сообщение #1


Местный
***

Группа: Свой
Сообщений: 479
Регистрация: 8-05-07
Из: г. Ставрополь. Северный Кавказ. Россия
Пользователь №: 27 606



Доброго времени суток Уважаемые!
написал так... (IAR_AVR)
Код
#define sus_frec            8000000
#define uS                  sus_frec/1000000
#define delay_uS(data1)        __delay_cycles(##data1 * uS)


На строчку
Код

main{
delay_uS(300); < - !
...
ругается, мол перебор, преобразую в знаковый.
Подскажите, как сделать правильно? Спасибо.
Go to the top of the page
 
+Quote Post
 
Start new topic
Ответов
MSprut
сообщение Jul 29 2008, 07:11
Сообщение #2


Местный
***

Группа: Свой
Сообщений: 225
Регистрация: 25-04-06
Из: Украина, Луганск
Пользователь №: 16 476



У функции __delay_cycles ограничение на аргумент 32768
Go to the top of the page
 
+Quote Post
VladimirYU
сообщение Jul 29 2008, 11:08
Сообщение #3


Местный
***

Группа: Свой
Сообщений: 426
Регистрация: 5-04-07
Из: Санкт-Петербург
Пользователь №: 26 782



Цитата(MSprut @ Jul 29 2008, 11:11) *
У функции __delay_cycles ограничение на аргумент 32768


Весьма спорное утверждение. Читаем в описании на компилятор:

__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.

ИМХО весь топик придуман на ровном месте.
Go to the top of the page
 
+Quote Post



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

 


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


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