Цитата Сообщение от petera Посмотреть сообщение
В серьезных проектах, где время цикла больше 1мс, такие таймеры
Захват-4.png
работать будут некорректно

По этому я использую другой принцип
Захват-3.png

Здесь идет подсчет циклов выполнения программы
Для работы этих таймеров нужен макрос подсчета времени цикла, и количества циклов от включения питания ПР
Захват-5.png

Уставка (PT)задается целым числом в мс, на выходе ET время прошедшее от старта(прямой счет), выходе (PT- ET) оставшееся время, эти времена тоже в мс, дискретность равна времени цикла.

Абсолютная погрешность вычисления интервалов времени не более половины времени цикла во всем допустимом диапазоне уставки в мс от Тц до 4294967295/Tц

Таймер имеет вход паузы. Любое количество пауз не вносят дополнительных погрешностей в отсчет времени.

Работает таймер так
Переменные на входе
dT - время цикла в мс(целое)
x_Clc - номер текущего цикла.

1. Уставка в мс переводится в количество циклов PT_Clc
Захват-6.png
здесь деление выполняется с округлением, по этому погрешность вычисления интервалов времени не более половины времени цикла

2. В момент старта запоминаем номер текущего цикла в переменную Start_Clc
Захват-7.png

3. В процессе работы вычисляется сколько циклов прошло от старта ET_Clc = x_Clc - Start_Clc
Захват-8.png

4. И сравниваем уставку PT_Clc с прошедшим количеством циклов ET_Clc
Захват-9.png
Спасибо petera, все довольно подробно и ясно.