Перейти к содержанию
    

Реализация импульсной модуляции на таймере AVR

Проектирую устройство на 128 атмеге, где надо генерировать последовательность импульсов. Импульсы должны быть определенной длительности и с переменным расстоянием между импульсами. По сути надо сгенерировать кодовую посылку. Можно ли это сделать на выходе таймера через режим PWM?. Режим CDC очевидно не подходит. Там можно регулировать длительность выходного импульса, но период фиксирован - 0xFFFF. Режим FastPWM имеет переменный период следования импульсов. Но можно ли с ним регулировать ширину импульса?

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Clear Timer on Compare Match (CTC) + toggle on compare позволяет задавать длительность и положительного и отрицательного импульсов отдельно. менять их только надо каждый раз в прерывании.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

2 hours ago, _pv said:

Clear Timer on Compare Match (CTC) + toggle on compare

Переключение это плохой вариант. Не дай бог случится рассинхронизация, короткие импульсы превратятся в длинные, и всё сгорит (импульсы идут на излучатель который работает только в импульсном режиме). Кроме того импульсы очень короткие, несколько тактов, прерывание не отработает такое короткое время. Нужно чтоб одно прерывание было на весь период, а не на часть.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

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

 

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

А период следования как точно выдержать? Надо бы чтоб аппаратно период формировался.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

9 часов назад, paskal сказал:

Переключение это плохой вариант

Вам его и не предлагают. У таймера два компаратора, первый задаёт период, второй — длительность импульса. Соответственно, если второй не меняется, будет ЧИМ, а если первый — ШИМ.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

15 hours ago, Plain said:

У таймера два компаратора, первый задаёт период, второй — длительность импульса. Соответственно, если второй не меняется, будет ЧИМ, а если первый — ШИМ.

Похоже это мне подходит. А какой это режим таймера? Там их 16.

 

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Присоединяйтесь к обсуждению

Вы можете написать сейчас и зарегистрироваться позже. Если у вас есть аккаунт, авторизуйтесь, чтобы опубликовать от имени своего аккаунта.

Гость
К сожалению, ваш контент содержит запрещённые слова. Пожалуйста, отредактируйте контент, чтобы удалить выделенные ниже слова.
Ответить в этой теме...

×   Вставлено с форматированием.   Вставить как обычный текст

  Разрешено использовать не более 75 эмодзи.

×   Ваша ссылка была автоматически встроена.   Отображать как обычную ссылку

×   Ваш предыдущий контент был восстановлен.   Очистить редактор

×   Вы не можете вставлять изображения напрямую. Загружайте или вставляйте изображения по ссылке.

×
×
  • Создать...