Задание периода подсчета

Правильная и точная настройка периода

  • Каждый таймер имеет 16-битный линейный предделитель (prescaler) (1,2,3 .. .65536)
  • Регистр автоперезагрузки (auto-reload register) определяет период подсчета
  • Событие обновления (update event) (прерывание или DMA) генерируется при переполнении или опустошении
    • Запускает передачу содержимого регистра из предварительной загрузки в работу (предделитель, период, сравнение)
    • Снижение сбоев при обновлении регистров сравнения
  • Частота выдачи прерываний или обновления изменяется с помощью счетчика повторений (repetition counter).

На этой странице объясняется, как настроить период отсчета таймера. Каждый таймер включает в себя линейный предделитель, который позволяет вам делить тактовый сигнал на любое целое число от 1 до 65536.

Он позволяет точно регулировать скорость счета. Например, деление на 80 даст точную частоту счета 1 МГц, когда тактовая частота APB составляет 80 МГц.

Регистр автоперезагрузки определяет период счета: в режиме счета вниз счетчик автоматически перезагружается со значением периода, когда он опустошится. В режиме счета вверх счетчик перезагружается и сбрасывается, когда он превышает значение регистра автоперезагрузки.

Событие обновления выдается, когда счетчик опустошается или переполняется, и начинается новый период. Он запускает запрос прерывания или DMA, который используется для синхронной настройки параметров таймера с его периодом, что полезно для управления в реальном времени. Это событие обновления инициирует переход от предварительной загрузки к активным регистрам для нескольких параметров, в частности для предделителя тактовой частоты, значения автоперезагрузки, регистров сравнения и режима ШИМ.

8-битный программируемый счетчик повторений (repetition counter) позволяет вам отделить частоту выдачи прерываний от периода подсчета и иметь, например, одно прерывание через каждый отдельный, 2-й, 3-й и до 256-й период ШИМ. Это особенно полезно при работе с высокими частотами ШИМ.

Если вы нашли ошибку, пожалуйста, выделите фрагмент текста и нажмите Ctrl+Enter.