Модераторы: bsa
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Таймер, Таймер 
V
    Опции темы
ConverterDU
Дата 13.4.2011, 16:32 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


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

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



Здравствуйте! Где можно почитать как работает таймер на физическом уровне и как он реализуется.....гуглил, но ничего толкового не нашел! Может ссылка есть на нормальный источник!
Спасибо!
PM MAIL   Вверх
bsa
Дата 13.4.2011, 16:43 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Модератор
Сообщений: 9185
Регистрация: 6.4.2006
Где: Москва, Россия

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



ConverterDU, есть такая штука, называется кварцевый резонатор. Он имеется на каждой микропроцессорной плате. Необходим для поддержания заданной тактовой частоты. Затем есть такая хрень, которая зовется "делитель". Это такой счетчик, который считает такты, а после того, как будет насчитано некое заданное их число, он сам генерирует такт и сбрасывается в 0. В итоге, ты можешь из 1 МГц, получить 1 кГц. Далее, этот 1 кГц заводится на определенную ножку процессора, которая называется в общем случае Interrupt Request (IRQ).  Когда возникает на ней такт, процессор прерывается и выполняет некую задачу - обработчик прерывания. Этот обработчик увеличивает некий счетчик. Твой программа его считывает и считает его таймером.

На самом деле, реализаций может быть куча. И в каждой платформе и ОС делается по-разному. Но общий смысл именно такой. Где-то есть постоянный генератор импульсов, а где-то есть счетчик, который система предоставляет программе в виде таймера. 

Это сообщение отредактировал(а) bsa - 13.4.2011, 16:46
PM   Вверх
ConverterDU
Дата 14.4.2011, 00:03 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


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

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



bsa, спасибо. Я там просто сначала запутался где кварцевый резонатор, а где кварцевый генератор, а сейчас еще почитал про это и, в принципе, все понятно. А как это в С++ можно сделать? Я на cplusplus.com смотрел, но так и не понял при помощи какой из них я могу просто сделать задержку выполнения какой-либо функции на заданное время! Может перевел неверно.

Это сообщение отредактировал(а) ConverterDU - 14.4.2011, 00:05
PM MAIL   Вверх
ller
Дата 14.4.2011, 10:03 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 325
Регистрация: 4.8.2008
Где: г. Таганрог

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



sleep() usleep()
Читай в этом направлении. Это работает на *nix платформах. В Винде не уверен.
PM MAIL   Вверх
ConverterDU
Дата 14.4.2011, 10:08 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


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

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



Цитата

Это работает на *nix платформах. В Винде не уверен. 
 Мне как раз ее и надо, спасибо, буду читать.
PM MAIL   Вверх
ConverterDU
Дата 14.4.2011, 12:13 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


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

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



а какой заголовочный надо для Sleep? Я вот здесь нашел http://forum.vingrad.ru/forum/topic-133184.html  такой вопрос, но там <windows.h>...

Это сообщение отредактировал(а) ConverterDU - 14.4.2011, 12:14
PM MAIL   Вверх
ConverterDU
Дата 14.4.2011, 12:30 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


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

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



кажется, нашел..

Добавлено через 10 минут и 9 секунд
нашел, что использовать так:

Usage: sleep NUMBER[SUFFIX]...
      or:  sleep OPTION
но не работает. вроде, подключать ничего не надо...
пишу 

Код

sleep 5 [s];


отвечает: test3.cpp:184: error: expected ‘;’ before numeric constant....
PM MAIL   Вверх
ller
Дата 14.4.2011, 13:32 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 325
Регистрация: 4.8.2008
Где: г. Таганрог

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



Цитата(ConverterDU @  14.4.2011,  12:30 Найти цитируемый пост)
кажется, нашел..

Это для командной строки
#include <time.h>

int nanosleep(const struct timespec *req, struct timespec *rem); 

On Windows NT/2000/XP/2003/Vista/7/2008, waitable timers with 100-nanosecond resolution are available, so nanosleep() has 100-nanosecond accuracy. 

ps google рулит!
PM MAIL   Вверх
ConverterDU
Дата 14.4.2011, 14:05 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


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

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



блин, как вы в нем находете....я ж тоже искал, как так то.....видимо коряво искал...
PM MAIL   Вверх
ConverterDU
Дата 14.4.2011, 14:24 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


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

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



вобщем сделал так:

#include <unistd.h> , а потом sleep (5);. Единственно, что вот не знаю, как в мсек. указать...

Добавлено через 10 минут и 57 секунд
просто дробное указал..
PM MAIL   Вверх
ller
Дата 14.4.2011, 15:57 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 325
Регистрация: 4.8.2008
Где: г. Таганрог

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



sleep() работает в секундах
usleep() в милисекундах
nanosleep() соответственно наносекунды
PM MAIL   Вверх
ConverterDU
Дата 14.4.2011, 16:03 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


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

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



Цитата

sleep() работает в секундах
usleep() в милисекундах
nanosleep() соответственно наносекунды 



ller, спасибо огромное!
PM MAIL   Вверх
bsa
Дата 14.4.2011, 21:57 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Модератор
Сообщений: 9185
Регистрация: 6.4.2006
Где: Москва, Россия

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



Цитата(ller @  14.4.2011,  13:32 Найти цитируемый пост)
On Windows NT/2000/XP/2003/Vista/7/2008, waitable timers with 100-nanosecond resolution are available, so nanosleep() has 100-nanosecond accuracy. 

Относится к какой-то левой библиотеке. Под Windows можно получить точность ожидания выше, чем с кратностью ~20 мс, то необходимо использовать Performance Counters.
PM   Вверх
ConverterDU
Дата 15.4.2011, 13:20 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


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

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



Цитата

Относится к какой-то левой библиотеке. Под Windows можно получить точность ожидания выше, чем с кратностью ~20 мс, то необходимо использовать Performance Counters. 


bsa, что относится к левой библиотеке? Эта функция?
PM MAIL   Вверх
bsa
Дата 15.4.2011, 13:32 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Модератор
Сообщений: 9185
Регистрация: 6.4.2006
Где: Москва, Россия

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



Цитата(ConverterDU @  15.4.2011,  13:20 Найти цитируемый пост)
bsa, что относится к левой библиотеке? Эта функция? 

Речь про Windows. В Linux, nanosleep штатная.
PM   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "C/C++: Для новичков"
JackYF
bsa

Запрещается!

1. Публиковать ссылки на вскрытые компоненты

2. Обсуждать взлом компонентов и делиться вскрытыми компонентами

  • Действия модераторов можно обсудить здесь
  • С просьбами о написании курсовой, реферата и т.п. обращаться сюда
  • Вопросы по реализации алгоритмов рассматриваются здесь


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

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | C/C++: Для новичков | Следующая тема »


 




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


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

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