Показать сообщение отдельно
Старый 26.03.2015, 10:02   #6
Arsie
Сотрудник Segnetics
 
Аватара для Arsie
 
Регистрация: Jan 2006
Адрес: Russia, SPb
Сообщения: 18 098
Благодарил(а): 15 раз(а)
Поблагодарили: 660 раз(а) в 604 сообщениях
По умолчанию Ответ: Время выполнения программы

Цитата:
Сообщение от Norton Посмотреть сообщение
Точность выдержки временнЫх интервалов как раз-таки важна, иначе вопросов не было бы.

Отладка программы происходит на контроллере с версией ядра 236, он не поддерживает блок "TimeToTick". Обновить ядро нечем.

Потому приходится использовать макрос пересчёта секунд в тики, выложенный здесь же на форуме ещё до появления блока "TimeToTick". И у этого древнего макроса есть вход "тик системы", от которого, собственно, и зависит точность пересчёта секунд в тики. Что тогда заводить на этот вход, если не установленный цикл работы системы и не реальное время цикла?
Device(kernel), выход SetTick. При этом обязательно выполнить условие: RealTick<=SetTick.

Блок TimeToTick был создан специально для тех ленивых людей, которым было влом соединять связью макрос и блок и они лили крокодиловы слёзы на форуме о том, что "невозможно задать время". Содержимое блока TimeToTick и есть банальное объединение блока Device(kernel) и макроса TimeToTick.


PS. Для использования реального цикла системы вам нужно создать счётчик, динамически отсчитывающий временные отрезки. Существующие счётчики считают циклы, чему бы они не были равны. Поэтому задавать им количество циклов исходя из времени выполнения одного единственного цикла на момент начала счёта - прямой путь к ошибкам расчётов.


__________________
Программа делает то что написал программист, а не то что он хотел.

Добро всегда побеждает зло. Кто победил - тот и добрый.
Arsie вне форума   Ответить с цитированием