икроконтроллер MSP430. Модуль таймера микроконтроллера. Режимы счёта.

икроконтроллер MSP430. Модуль таймера микроконтроллера. Архитектура.

Таймер А – это 16-разрядный таймер/счетчик с тремя регистрами захвата/сравнения. Таймер А может обеспечить множество захватов/сравнений, выходов ШИМ и выдержку временных интервалов. Таймер А также имеет обширные возможности прерывания. Прерывания могут быть сгенерированы от счетчика при переполнении и от каждого из регистров захвата/сравнения.

  • Таймер А обладает следующими возможностями:
  • Асинхронный 16-разрядный таймер/счетчик с четырьмя режимами работы;
  • Выбираемый и конфигурируемый источник тактирования;
  • Три конфигурируемых регистра захвата/сравнения;
  • Конфигурируемые выходы с возможностью ШИМ;
  • Асинхронная фиксация (защелка) входа и выхода;
  • Регистр вектора прерываний для быстрого декодирования всех прерываний таймера А.

 

 

 

икроконтроллер MSP430. Модуль таймера микроконтроллера. Режимы счёта.

Таймер имеет четыре режима работы, описанных в таблице 11-1: «стоп», «вверх», «непрерывный» и «вверх/вниз». Режимы работы выбираются с помощью битов MCx.

 

 

Режим «Вверх»

Режим «вверх» используется, если период таймера должен отличаться от количества отсчетов 0FFFFh. Таймер многократно считает вверх до значения, содержащегося в регистре сравнения TACCR0, который задает период, как по- казано на рис. Количество отсчетов таймера в периоде равно TACCR0+1.

Когда значение таймера становится равно содержимому TACCR0, таймер перезапускается, начиная счет от нуля. Если режим «вверх» выбран, когда значение таймера больше содержимого TACCR0, таймер немедленно перезапускается, начиная считать от нуля.

 

 

Флаг прерывания TACCR0 CCIFG устанавливается, когда значение таймера равно содержимому TACCR0. Флаг прерывания TAIFG устанавливается, когда таймер считает от TACCR0 к нулю. На рис. показан цикл установки флагов.

 

 

Непрерывный режим

В непрерывном режиме таймер многократно считает вверх до 0FFFFh и перезапускается от нуля, как показано на рис. Регистр захвата/сравнения TACCR0 работает подобно другим регистрам захвата/сравнения.

 

Флаг прерывания TAIFG устанавливается, когда таймер считает от 0FFFFh к нулю. На рис. показан цикл установки флага.

Непрерывный режим может использоваться для генерации независимых временных интервалов и выходных частот. Каждый раз по завершении интервала генерируется прерывание. Следующий временной интервал добавляется к регистру TACCRx в процедуре обработки прерывания. На рис. Показаны два раздельных временных интервала t0 и t1, добавляемые к регистрам захвата/сравнения. При таком использовании временные интервалы управляются аппаратно, без программного обеспечения, без влияния времени задержки прерывания. При использовании всех трех регистров захвата/сравнения можно сгенерировать до трех независимых временных интервалов или выходных частот. Временные интервалы можно реализовать также в других режимах, где TACCR0 используется как регистр периода. Их обработка более комплексна, поскольку сумма старого значения TACCRx и нового периода может быть выше значения TACCR0. Когда предыдущее значение TACCRx плюс tx больше величины TACCR0, значение TACCR0 должно быть вычтено для получения правильного временного интервала.

 

Режим «вверх/вниз»

Режим «вверх/вниз» используется, если период таймера должен отличаться от значения 0FFFFh и необходима генерация симметричных импульсов.Таймер непрерывно считает вверх до значения, находящегося в регистре сравнения TACCR0 и назад к нулю, как показано на рис. Период составляет

удвоенную величину значения в TACCR0.

Использование режима вверх/вниз

Режим «вверх/вниз» поддерживает приложения, требующие наличия «мертвого» времени между выходными сигналами (см. раздел «Модуль вывода Таймера А»). К примеру, чтобы избежать перегрузки, два выхода, управляющие H-мостом никогда не должны одновременно иметь высокий уровень. В примере, показанном на рис. величина времени простоя tdead составляет: tdead = ttimer (TACCR1 – TACCR2), где:

tdead – интервал времени, в течение которого оба выхода должны быть неактивны ttimer – время цикла тактирования таймера