Реклама на сайте DatasheetsDatasheets

KAZUS.RUN - Электронный портал. Принципиальные схемы, Datasheets, Форум по электронике

Новости электроники Новости Литература, электронные книги Литература Документация, даташиты Документация Поиск даташитов (datasheets)Поиск PDF
  От производителей
Новости поставщиков
В мире электроники

  Сборник статей
Книги и журналы
FAQ по электронике

  Datasheets
Поиск SMD
Онлайн справочник

Принципиальные схемы Схемы Каталоги программ, сайтов Каталоги Общение, форум Общение Ваш аккаунтАккаунт
  Каталог схем
Схемы и проекты
Принципиальные схемы
  Программы
Каталог сайтов
Калькуляторы
  Форумы по электронике
Помощь проекту

Микроконтроллеры, АЦП, память и т.д Темы касающиеся микроконтроллеров разных производителей, памяти, АЦП/ЦАП, периферийных модулей...

 
Опции темы

Вопрос с delay

Непрочитано 18.03.2010, 23:30  
begun
Гражданин KAZUS.RUN
 
Регистрация: 18.07.2006
Сообщений: 894
Сказал спасибо: 244
Сказали Спасибо 31 раз(а) в 28 сообщении(ях)
begun на пути к лучшему
По умолчанию Вопрос с delay

дорогие друзья!
Наверно программируя микроконтроллеры часто используете функцию
задержки "delay"
Вродебы какие тут проблемы но увы оказывается и тут есть вопросительные знаки
Вобщем формируя разные задержки использую функцию
delay_ms(a); где а объявлена как переменная int a;
в программе меняется а и соотвественно безпроблем меняется и величина задержки в миллисекундах.
Стоит мне вместо миллисекунды "ms" ,указать микросекунды
delay_us(a); как
компилятор указывает на ошибку типа :
"must be constant expression" Все попытки выити из положения напрасны.
Вроде все тоже самое, просто перешол в микросекунды ,что могло произайти не понятно.
надеюсь и на этот раз протяните руку помощи, ведь благодаря этому отличнейшему форуму ,с участие мастеров своего дело, я смог преодолеть не мало для меня проблем.
заранее благодарен.
Реклама:
begun вне форума  
Непрочитано 19.03.2010, 00:12  
mind
Гражданин KAZUS.RUN
 
Аватар для mind
 
Регистрация: 21.08.2006
Адрес: РА г.Майкоп
Сообщений: 864
Сказал спасибо: 32
Сказали Спасибо 221 раз(а) в 122 сообщении(ях)
mind на пути к лучшему
По умолчанию Re: вопрос с delay

Поподробней....У меня на CV 1.25.8 нормально формирует задержки, в смысле не ругается. Может с такт маленький?
mind вне форума  
Непрочитано 19.03.2010, 00:26  
Wustrik
Прохожий
 
Регистрация: 25.02.2007
Сообщений: 3
Сказал спасибо: 0
Сказали Спасибо 0 раз(а) в 0 сообщении(ях)
Wustrik на пути к лучшему
По умолчанию Re: вопрос с delay

Цитата из help CvAVR 2.04:

The functions are:
void delay_us(unsigned int n) generates a delay of n mseconds. n must be a constant expression

delay_us требует переменную объявленную как const а значит гибко менять ее в течении выполнения программы не получиться

Выходы:
- реализовывать задержку пустыми циклами
- подумать о использовании таймеров
- использовать старый компилятор - CV 1.25.8 (пост выше)
Wustrik вне форума  
Непрочитано 19.03.2010, 00:28  
MisterDi
Почётный гражданин KAZUS.RUN
 
Аватар для MisterDi
 
Регистрация: 13.02.2008
Адрес: Днепр. Украина
Сообщений: 3,284
Сказал спасибо: 441
Сказали Спасибо 1,040 раз(а) в 701 сообщении(ях)
MisterDi на пути к лучшему
По умолчанию Re: вопрос с delay

микро секндные интервалы соизмеримы с тактовой частотой контроллера, поэтому в некоторых случаях они формируются компилятором как набор пустых комманд, и если к примеру Вы захотите сделать переменную задержку в диапазоне 1-200 мкС у крнтроллера с достаточно низкой тактовой, то может получится так, что компилятор на сможет дать универсальный набор комманд. Вероятнее всего так и получается в Вашем случае.
MisterDi вне форума  
Непрочитано 19.03.2010, 00:33  
Easyrider83
Гуру портала
 
Аватар для Easyrider83
 
Регистрация: 27.10.2008
Адрес: ЕС
Сообщений: 10,821
Сказал спасибо: 919
Сказали Спасибо 4,289 раз(а) в 2,570 сообщении(ях)
Easyrider83 на пути к лучшему
По умолчанию Re: вопрос с delay

Вообще говоря, это плохая команда. Если параллельно использовать прерывания, а без них жизнь не возможна, то цикл delay может вытянуться. Лучше использовать таймер.
Не знаю, какой компилятор вы используете, но в MikroE есть команда vdelay_ms и vdelay_us для паузы переменной длительности.
Easyrider83 вне форума  
Непрочитано 19.03.2010, 00:59  
begun
Гражданин KAZUS.RUN
 
Регистрация: 18.07.2006
Сообщений: 894
Сказал спасибо: 244
Сказали Спасибо 31 раз(а) в 28 сообщении(ях)
begun на пути к лучшему
По умолчанию Re: вопрос с delay

друзья1
Я глубоко тронут вашим вниманием. Большое спасибо за оперативный отзыв. Столько дельных советов ,что сразу все переварить трудно.
Использую cvavr 1.25.9.
задержка меняется в пределах (1-10)ms,шагом 1ms, но нужен шаг 0,5ms,
поэтому перешел на микросекунды, ибо не знаю как сделать дробный шаг и вобще возможно ли это? Использую Atmega 8 кварц 4 Мгц.все происходит в прерывании по INT1.
Если не трудно ,поделитесь пожалуйсто вопросом по поводу дробного шага ,возможно ли его применение?
Спасибо.
begun вне форума  
Непрочитано 19.03.2010, 07:14  
mrKirill
Вид на жительство
 
Аватар для mrKirill
 
Регистрация: 12.04.2007
Сообщений: 339
Сказал спасибо: 2
Сказали Спасибо 34 раз(а) в 30 сообщении(ях)
mrKirill на пути к лучшему
По умолчанию Re: вопрос с delay

Сообщение от begun Посмотреть сообщение
все происходит в прерывании по INT1.
Вы в прерывании используете delay???
Если так, то категорически советую изменить Ваш стиль программирования!
delay в прерываниях недопустимы!
Сообщение от begun Посмотреть сообщение
... по поводу дробного шага ,возможно ли его применение?
Если надо сделать например 1.5мс, то делаете 2 задержки, на 1мс и на 500мкс.
Других вариантов, используя стандартную функцию delay в CVAVR нет.

Последний раз редактировалось mrKirill; 19.03.2010 в 07:18.
mrKirill вне форума  
Непрочитано 19.03.2010, 08:49  
delay
Гражданин KAZUS.RUN
 
Регистрация: 24.06.2005
Сообщений: 530
Сказал спасибо: 262
Сказали Спасибо 216 раз(а) в 118 сообщении(ях)
delay на пути к лучшему
По умолчанию Re: вопрос с delay

Насколько я помню, в CodeVision переменную (менять значение) можно использовать при ms, но не в us. При мкс - только константа.

Последний раз редактировалось delay; 19.03.2010 в 08:54.
delay вне форума  
Непрочитано 19.03.2010, 08:57  
niXto
Почётный гражданин KAZUS.RUN
 
Аватар для niXto
 
Регистрация: 13.10.2007
Адрес: Беларусь
Сообщений: 8,026
Сказал спасибо: 60
Сказали Спасибо 3,941 раз(а) в 2,302 сообщении(ях)
niXto на пути к лучшему
По умолчанию Re: вопрос с delay

Сообщение от begun Посмотреть сообщение
задержка меняется в пределах (1-10)ms,шагом 1ms, но нужен шаг 0,5ms
Ну так укажите в свойствах проекта что частота кварца 2 МГц, установите в программе задержку 1 мс, потом подключите кварц 4 МГц - и в реале будет задержка 0,5 мс...
niXto вне форума  
Непрочитано 19.03.2010, 10:12  
begun
Гражданин KAZUS.RUN
 
Регистрация: 18.07.2006
Сообщений: 894
Сказал спасибо: 244
Сказали Спасибо 31 раз(а) в 28 сообщении(ях)
begun на пути к лучшему
По умолчанию Re: вопрос с delay

друзья !
Спосибо за ценейшие для меня советы!
niXto
Нетерпится попробовать Ваше предложение на счет 2 мгц
Wustrik
Я кже пробовал пусрой цикл Вроде есть надежда.
Попробую и старую версию cvavr
Яmrkirill
если не трудно хоть чуточку поясните пожалуйсто причину категорического запрета использования delay в прерываниях .Это я слышу впервы и хочется удостоверится глубже.
друзья !
проработаю все предложения и представлю "отчет".
Большое спасибо.
begun вне форума  
 
Опции темы

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

BB коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.

Быстрый переход

Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Интересный вопрос - два усилителя к одной нагрузке eCAH Аудиотехника 45 14.10.2010 01:23
Вопрос по nec микроконтролеру densl Микроконтроллеры, АЦП, память и т.д 2 28.12.2009 14:00
Вопрос по блоку питания... El-Shang Источники питания и свет 13 19.11.2009 17:35
Вопрос По Tas5414a (Входной модуль) C-r-o-w Аудиотехника 0 08.11.2009 18:11


Часовой пояс GMT +4, время: 15:21.


Powered by vBulletin® Version 3.8.4
Copyright ©2000 - 2026, Jelsoft Enterprises Ltd.