roboforum.ru

Технический форум по робототехнике.

 

помогите разобраться с delay

Раздел создан специально для людей которым интересна робототехника, но в силу разных причин они не знают с чего начать.
Задавайте ваши вопросы, какими бы простыми они не казались, постоянные посетители форума постараются ответить на них по мере своих сил.
Робот своими руками. Самодельный робот.

помогите разобраться с delay

Сообщение st354 » 13 фев 2009, 15:30

хочу сделать задержку от 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.
st354
 
Сообщения: 16
Зарегистрирован: 19 дек 2008, 12:44

Re: помогите разобраться с delay

Сообщение avr123.nm.ru » 13 фев 2009, 15:34

Паузы удобно делать специальными функциями

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

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

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

=====

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

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

=====

На форуме есть специальный раздел - Микроконтроллеры !
Аватара пользователя
avr123.nm.ru
отсылающий читать курс
 
Сообщения: 14200
Зарегистрирован: 06 ноя 2005, 04:18
Откуда: Москва
Предупреждения: -8

Re: помогите разобраться с delay

Сообщение st354 » 13 фев 2009, 17:12

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

Re: помогите разобраться с delay

Сообщение avr123.nm.ru » 13 фев 2009, 17:17

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


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

А пример из какго курса вы в начале привели ? Кто так делать учит ? интересно ...
Аватара пользователя
avr123.nm.ru
отсылающий читать курс
 
Сообщения: 14200
Зарегистрирован: 06 ноя 2005, 04:18
Откуда: Москва
Предупреждения: -8

Re: помогите разобраться с delay

Сообщение st354 » 13 фев 2009, 17:58

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

Re: помогите разобраться с delay

Сообщение avr123.nm.ru » 13 фев 2009, 18:04

st354 писал(а):ну библу-хидер само сабой) а нужно ли после #define <delay.h> писать #define F_CPU 4000000 ?

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

Хорошее оформление, молодцы.
st354 писал(а):AVR123 спасибо огромное!!!!
Пожалуйста.
Аватара пользователя
avr123.nm.ru
отсылающий читать курс
 
Сообщения: 14200
Зарегистрирован: 06 ноя 2005, 04:18
Откуда: Москва
Предупреждения: -8

Re: помогите разобраться с delay

Сообщение st354 » 13 фев 2009, 18:11

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

Re: помогите разобраться с delay

Сообщение avr123.nm.ru » 13 фев 2009, 19:00

st354 писал(а):вопро не савсем по теме AVR123 а собственно курс написан вами?

Ага.
Аватара пользователя
avr123.nm.ru
отсылающий читать курс
 
Сообщения: 14200
Зарегистрирован: 06 ноя 2005, 04:18
Откуда: Москва
Предупреждения: -8

Re: помогите разобраться с delay

Сообщение st354 » 13 фев 2009, 20:01

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

Re: помогите разобраться с delay

Сообщение avr123.nm.ru » 13 фев 2009, 20:19

st354 писал(а):ну тада низкий поклон!
Это лишнее.
st354 писал(а): респект и уважуха!
Это всамый раз :roll:
Аватара пользователя
avr123.nm.ru
отсылающий читать курс
 
Сообщения: 14200
Зарегистрирован: 06 ноя 2005, 04:18
Откуда: Москва
Предупреждения: -8

Re: помогите разобраться с delay

Сообщение Xamulion » 19 фев 2009, 04:07

Не могу скомпилировать проект моего первого робота помогите...
Выводит ошибки
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
Xamulion
 
Сообщения: 7
Зарегистрирован: 19 фев 2009, 02:27
Откуда: Краснодар

Re: помогите разобраться с delay

Сообщение Vooon » 19 фев 2009, 04:19

Для какого компилятора?
Тут вижу характерные для старого GCC и для CVAVR конструкции.
И определения того, на что ругается компилятор не вижу (он тоже, вот и ругается)

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

В delay.h нет delay_ms() и т.д., есть _delay_ms() и прочие.
Внимательно прочтите, какие ограничения имеет функция _delay_ms(); (прямо в заголовочнике, в комментарии к функции)
Linux user | Firefox user
Аватара пользователя
Vooon
Site Admin
 
Сообщения: 3326
Зарегистрирован: 09 фев 2006, 15:36
Откуда: Москва
Skype: vooon341
прог. языки: Python, C, Bash, JavaScript, C++, PHP
ФИО: Владимир Ермаков

Re: помогите разобраться с delay

Сообщение avr123.nm.ru » 19 фев 2009, 11:29

Vooon писал(а):какие ограничения имеет функция _delay_ms();

Какие ЗВЕРСКИЕ ограничения ! в CVAVR таких ограничений нет - там до 65 сек почти за один вызов delay_ms(); независимо от частоты такта МК.
Аватара пользователя
avr123.nm.ru
отсылающий читать курс
 
Сообщения: 14200
Зарегистрирован: 06 ноя 2005, 04:18
Откуда: Москва
Предупреждения: -8

Re: помогите разобраться с delay

Сообщение blindman » 19 фев 2009, 11:36

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

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

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

Re: помогите разобраться с delay

Сообщение avr123.nm.ru » 19 фев 2009, 12:10

Ну он там считает, не спит, "собаку" убивает. Преимущество в том что дает возможность программисту который сам решает использовать ее или нет.

Судя по нашему даже форуму многим возможность делать ддлинные паузы нужна.
Аватара пользователя
avr123.nm.ru
отсылающий читать курс
 
Сообщения: 14200
Зарегистрирован: 06 ноя 2005, 04:18
Откуда: Москва
Предупреждения: -8

След.

Вернуться в Новичкам или основы основ роботостроения.

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

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

Mail.ru counter