Привет! Нет, не путаю. Прескалер - это не коэффициент деления, а счетчик с этим коэффициентом. Аппаратный счетчик, а не виртуальный. И, как я понимаю, он "крутится" и считает независимо от того, включен в данный момент таймер, или нет. Предположим, что Fкамня = 4000000 Гц, и Кпрескалера = 64. Это значит, что таймер будет "тикать" каждые 16 мкс, по переполнению прескалера. Если таймер активировать в тот момент, когда в крескалере УЖЕ будет b#00111111, то таймер начнет считать уже на следующий машинный такт (через 0,25 мск), а если таймер включить, когда в прескалере будет всего b#00000001, то первый "тик" таймера произойдет аж через 16 мкс! То есть, в зависимости от того, в какой момент будет активирован таймер, возникает не нормируемая задержка в пределах от 250 нс до 16 мкс. Отсюда и возникает вопрос о том, как обнулять счетчик прескалера перед запуском таймера, чтобы исключить или минимизировать эту аппаратную, но не предсказуемую, ошибку при точном измерении отрезков времени. Кажется, в старой книжке Евстифеева такой режим описан (когда-то читал, не могу сейчас найти), но на практике реализовать его тогда не удалось, а сейчас снова возникла эта проблема. Вот и поинтересовался у сообщества, мо-быть кто-то знает, как это делается. Требуется считать время с точностью не хуже 1 мкс Мегой 328 с 16 МГц кварцем.
|