Модераторы: PILOT, ManiaK, Mazzi
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> MicroLAN, временные задержки 
:(
    Опции темы
AndreyKO
Дата 2.2.2007, 17:14 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 43
Регистрация: 21.8.2006

Репутация: нет
Всего: нет



Приветствую всех программистов железа!!!
У меня возник вопрос, т. к. я новичек в программировании МК:
Имеется контроллер, который организован под сеть MicroLAN (ну там датчики разные). Хотелось бы узнать как делать временные задержки? Ведь время задержки каким-то образом зависит от частоты кварца, насколько я понимаю!
Пожалуйста приведите пример на Си!!!
 smile 
Заранее спасибо!!!
PM MAIL   Вверх
Кристиан
Дата 3.2.2007, 11:16 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 9
Регистрация: 2.2.2007
Где: АР Крым. Севастоп оль.

Репутация: нет
Всего: нет



AndreyKO
Если я тебя правильно понял, то в Си в заголовочном файле delay.h есть функция delay_ms. В параметре задается задержка в миллисекундах.
PM MAIL ICQ   Вверх
AndreyKO
Дата 3.2.2007, 16:45 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 43
Регистрация: 21.8.2006

Репутация: нет
Всего: нет



Вот в Application Note 162:
Код

// DELAY - with an 11.059MHz crystal.
// Calling the routine takes about 24us, and then
// each count takes another 16us.
//
void delay(int useconds)
{
int s;
for (s=0; s<useconds;s++);
}


Что такое 24 и 16?
Вот это сброс и обнаружение на линии:

Код

// OW_RESET - performs a reset on the one-wire bus and
// returns the presence detect. Reset is 480us, so delay
// value is (480-24)/16 = 28.5 - we use 29. Presence checked
// another 70us later, so delay is (70-24)/16 = 2.875 - we use 3.
//
unsigned char ow_reset(void)
{
unsigned char presence;
DQ = 0; //pull DQ line low
delay(29); // leave it low for 480us
DQ = 1; // allow line to return high
delay(3); // wait for presence
presence = DQ; // get presence signal
delay(25); // wait for end of timeslot
return(presence); // presence signal returned
} // 0=presence, 1 = no part



Задержка рассчитывается в микросекундах. А откуда взялось 24 и 16?

PM MAIL   Вверх
Кристиан
Дата 3.2.2007, 19:27 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 9
Регистрация: 2.2.2007
Где: АР Крым. Севастоп оль.

Репутация: нет
Всего: нет



Из даташита? Полагаю, что эти числа - спецификация конкретного МК.
PM MAIL ICQ   Вверх
AndreyKO
Дата 3.2.2007, 20:09 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 43
Регистрация: 21.8.2006

Репутация: нет
Всего: нет



Интересно, а что они означают?
PM MAIL   Вверх
Кристиан
Дата 3.2.2007, 20:45 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 9
Регистрация: 2.2.2007
Где: АР Крым. Севастоп оль.

Репутация: нет
Всего: нет



Там же написано в комментариях:
Calling the routine takes about 24us, and then each count takes another 16us.
Что переводится примерно так:
Вызов функции занимает около 24us(квант времени) и после этого каждый ход цикла отнимает еще по 16.
PM MAIL ICQ   Вверх
AndreyKO
Дата 3.2.2007, 20:49 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 43
Регистрация: 21.8.2006

Репутация: нет
Всего: нет



Не кричите! smile  Я просто слабоват в английском!!! Теперь понятно!
PM MAIL   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "Микроконтроллеры (MCU) и микропроцессоры (MPU)"
PILOT ManiaK
UniBomb Mazzi

На данный раздел помимо Правил форума распространяются текже следующие правила:


  • Прежде чем создать тему воспользуйтесь поиском или посмотрите в faq. Возможно на форуме уже есть ответ на ваш или близкий к вашему вопрос.
  • В заголовке темы в квадратных скобках обозначьте используемое семейство микроконтроллера: [avr],[pic],[arm].
  • При создании темы с вопросом указывайте участок кода с ошибкой, версию компилятора, схемы подключения, fuse биты и прочие данные, которые помогут найти правильный ответ. Для форматирования текста программ используйте кнопку код.
  • Новое сообщение должно иметь прямое отношение к тематике этого раздела. Для флуда, просьб выполнить задание, поиска партнёров или исполнителей существуют свои разделы.
  • Если вы заметили несовместимое с правилами сообщение, то можете уведомить об этом модератора раздела нажав кнопку Репорт у соответствующего сообщения.

Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, PILOT, ManiaK, UniBomb, Mazzi.

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | Микроконтроллеры (MCU) и микропроцессоры (MPU) | Следующая тема »


 




[ Время генерации скрипта: 0.0889 ]   [ Использовано запросов: 21 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.