roboforum.ru

Технический форум по робототехнике.
Текущее время: 23 июн 2025, 06:11

Часовой пояс: UTC + 4 часа




Начать новую тему Ответить на тему  [ Сообщений: 26 ]  На страницу 1, 2  След.
Автор Сообщение
 Заголовок сообщения: помогите разобраться с delay
СообщениеДобавлено: 13 фев 2009, 15:30 
Не в сети

Зарегистрирован: 19 дек 2008, 12:44
Сообщения: 16
хочу сделать задержку от 1с и более
в курсе для начинающих нашел такой пример. Прошу помогите разобраться в нём. Меня мучает более всеговопрос откуда взялась цифра 185 и что делать если к примеру я хочу использовать кварц 4 MГц. Заранее благодарен.

unsigned short i, j, k, ms; // объявляем переменные
ms = 1500;
for (i = 0; i < ms; i++) // главный цикл формирования задержки
{
for (j = 0; j < 185; j++) // вложенный цикл формирования задержки
{
k++; // произвольное действие
}
}

Данный пример реализует задержку длительностью в полторы секунды (для кварца 8 МГц), которая определяется значением переменной ms.


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: помогите разобраться с delay
СообщениеДобавлено: 13 фев 2009, 15:34 
Не в сети
отсылающий читать курс
Аватара пользователя

Зарегистрирован: 06 ноя 2005, 04:18
Сообщения: 14195
Откуда: Москва
Паузы удобно делать специальными функциями

delay_ms(пауза в мили сек); // примерно до 65 сек за 1 вызоав

delay_us(пауза в микро сек);

в CVAVR, есть аналоги и в IAR WinAVR ICC - http://avr123.nm.ru/05.htm

=====

185 это число для задания определенной паузы, которая отсчитывается несколько раз во внешнем цикле.

Недостатки вашего способа делать паузы - оптимизатор может выкинуть это из кода и WDT не сбрасывается.

=====

На форуме есть специальный раздел - Микроконтроллеры !


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: помогите разобраться с delay
СообщениеДобавлено: 13 фев 2009, 17:12 
Не в сети

Зарегистрирован: 19 дек 2008, 12:44
Сообщения: 16
То есть если я всё правильно понял в курсе, то для того чтоб сделать задержку в 1,5 секунды надо написать delay_ms(1500), а для задержки в 2 секунды delay_ms(2000) так?. PS прогу я пишу на CVAVR


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: помогите разобраться с delay
СообщениеДобавлено: 13 фев 2009, 17:17 
Не в сети
отсылающий читать курс
Аватара пользователя

Зарегистрирован: 06 ноя 2005, 04:18
Сообщения: 14195
Откуда: Москва
st354 писал(а):
То есть если я всё правильно понял в курсе, то для того чтоб сделать задержку в 1,5 секунды надо написать delay_ms(1500), а для задержки в 2 секунды delay_ms(2000) так?. PS прогу я пишу на CVAVR


Да. но в начале проги надо подключить библу-хидер delay.h
Там же в курсе написано.

А пример из какго курса вы в начале привели ? Кто так делать учит ? интересно ...


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: помогите разобраться с delay
СообщениеДобавлено: 13 фев 2009, 17:58 
Не в сети

Зарегистрирован: 19 дек 2008, 12:44
Сообщения: 16
ну библу-хидер само сабой) а нужно ли после #define <delay.h> писать #define F_CPU 4000000? всё это вычитал на сайте myrobot.ru и еще где то встречалось. AVR123 спасибо огромное!!!!


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: помогите разобраться с delay
СообщениеДобавлено: 13 фев 2009, 18:04 
Не в сети
отсылающий читать курс
Аватара пользователя

Зарегистрирован: 06 ноя 2005, 04:18
Сообщения: 14195
Откуда: Москва
st354 писал(а):
ну библу-хидер само сабой) а нужно ли после #define <delay.h> писать #define F_CPU 4000000 ?

в CVAVR это в свойствах проекта задается.
st354 писал(а):
всё это вычитал на сайте myrobot ру

Хорошее оформление, молодцы.
st354 писал(а):
AVR123 спасибо огромное!!!!
Пожалуйста.


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: помогите разобраться с delay
СообщениеДобавлено: 13 фев 2009, 18:11 
Не в сети

Зарегистрирован: 19 дек 2008, 12:44
Сообщения: 16
вопро не савсем по теме AVR123 а собственно курс написан вами?


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: помогите разобраться с delay
СообщениеДобавлено: 13 фев 2009, 19:00 
Не в сети
отсылающий читать курс
Аватара пользователя

Зарегистрирован: 06 ноя 2005, 04:18
Сообщения: 14195
Откуда: Москва
st354 писал(а):
вопро не савсем по теме AVR123 а собственно курс написан вами?

Ага.


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: помогите разобраться с delay
СообщениеДобавлено: 13 фев 2009, 20:01 
Не в сети

Зарегистрирован: 19 дек 2008, 12:44
Сообщения: 16
ну тада низкий поклон! респект и уважуха!


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: помогите разобраться с delay
СообщениеДобавлено: 13 фев 2009, 20:19 
Не в сети
отсылающий читать курс
Аватара пользователя

Зарегистрирован: 06 ноя 2005, 04:18
Сообщения: 14195
Откуда: Москва
st354 писал(а):
ну тада низкий поклон!
Это лишнее.
st354 писал(а):
респект и уважуха!
Это всамый раз :roll:


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: помогите разобраться с delay
СообщениеДобавлено: 19 фев 2009, 04:07 
Не в сети

Зарегистрирован: 19 фев 2009, 02:27
Сообщения: 7
Откуда: Краснодар
Не могу скомпилировать проект моего первого робота помогите...
Выводит ошибки
undefined symbol 'delay_ms'
undefined symbol 'autp'

Код:
/***************** Функция задержки ****************/
void delay(unsigned short ms) // Минимальная задержка с кварцем 8 МГц - 1 мс
{
unsigned short i, j, k; // объявляем переменные
      
              for (i=0; i<ms; i++) // главный цикл формирования задержки
                     for (j=0; j<185; j++) // вложенный цикл формирования задержки
                              k++; // произвольное действие
}

-----------------------------------------------------------------------------
// Обработка прерывания от переднего бампера (INT0 = PD2)
//------------------------------------------------------------------------------
interrupt [EXT_INT0] void ext_int0_isr(void)
{
   if(this_move==R) go(L);
   if(this_move==L) go(R);
   else go(B);
   [b]Delay_ms(250);    // отъезд в течение 2.5 х 2 сек[/b]
   Delay_ms(250);
   this_move=B;
}
и еще вот здесь
// разрешаем прерывания по входам int0, int1
[b]outp((1<)|(1<), GIMSK);[/b]
// запрос на прерывание по спадающим фронтам на входах int0 и int1
outp((0<)|(1<)|(0<)|(1<), MCUCR);

  // разрешаем прерывания
  #asm("sei")


заранее благодарен

Добавлено спустя 3 минуты 17 секунд:
#define <delay.h> вписал хотя взял её из WinAVR-20080610


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: помогите разобраться с delay
СообщениеДобавлено: 19 фев 2009, 04:19 
Не в сети
Site Admin
Аватара пользователя

Зарегистрирован: 09 фев 2006, 15:36
Сообщения: 3339
Откуда: Москва
Skype: vooon341
прог. языки: Python, C, Bash, JavaScript, C++, PHP
ФИО: Владимир Ермаков
Для какого компилятора?
Тут вижу характерные для старого GCC и для CVAVR конструкции.
И определения того, на что ругается компилятор не вижу (он тоже, вот и ругается)

Добавлено спустя 9 минут 49 секунд:
outp(); это устаревший макрос, он помогал старому AVR GCC компилировать более оптимальный код.
Используйте простое присвоение вместо него.

В delay.h нет delay_ms() и т.д., есть _delay_ms() и прочие.
Внимательно прочтите, какие ограничения имеет функция _delay_ms(); (прямо в заголовочнике, в комментарии к функции)

_________________
Linux user | Firefox user


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: помогите разобраться с delay
СообщениеДобавлено: 19 фев 2009, 11:29 
Не в сети
отсылающий читать курс
Аватара пользователя

Зарегистрирован: 06 ноя 2005, 04:18
Сообщения: 14195
Откуда: Москва
Vooon писал(а):
какие ограничения имеет функция _delay_ms();

Какие ЗВЕРСКИЕ ограничения ! в CVAVR таких ограничений нет - там до 65 сек почти за один вызов delay_ms(); независимо от частоты такта МК.


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: помогите разобраться с delay
СообщениеДобавлено: 19 фев 2009, 11:36 
Не в сети
Аватара пользователя

Зарегистрирован: 29 апр 2008, 21:15
Сообщения: 4130
Откуда: Хабаровск
прог. языки: C,C++,Assembler,PHP,Javascript,Ruby, SPIN,Java(?)
ФИО: Андрей Юрьевич
Сомнительное преимущество - наличие способа заставлять процессор ничего не делать 65 секунд.

_________________
Проект [[Open Robotics]] - универсальные модули для построения роботов
Модули Open Robotics можно приобрести в магазине shop.roboforum.ru

Day OFF? You must be pulling my leg! Stop making humor before someone sees you, fool!



Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: помогите разобраться с delay
СообщениеДобавлено: 19 фев 2009, 12:10 
Не в сети
отсылающий читать курс
Аватара пользователя

Зарегистрирован: 06 ноя 2005, 04:18
Сообщения: 14195
Откуда: Москва
Ну он там считает, не спит, "собаку" убивает. Преимущество в том что дает возможность программисту который сам решает использовать ее или нет.

Судя по нашему даже форуму многим возможность делать ддлинные паузы нужна.


Вернуться к началу
 Профиль  
 
Показать сообщения за:  Поле сортировки  
Начать новую тему Ответить на тему  [ Сообщений: 26 ]  На страницу 1, 2  След.

Часовой пояс: UTC + 4 часа


Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 1


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

Найти:
Перейти:  
cron
Powered by phpBB © 2000, 2002, 2005, 2007 phpBB Group
Русская поддержка phpBB
phpBB SEO