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

Друзья Добрый день. Есть такой вопрос.

Возможно ли реализовать сигналы разной длительности с помощью ШИМ или таймера. Нужно формировать импульсы не зависимо от основного потока и желательно с минимальной задержкой. Возможно ли записать массив задержек из которого таймер просто будет брать значение самостоятельно.

Screenshot_20210615-211336~2.png

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


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

56 minutes ago, Evgeni said:

Друзья Добрый день. Есть такой вопрос.

Возможно ли реализовать сигналы разной длительности с помощью ШИМ или таймера. Нужно формировать импульсы не зависимо от основного потока и желательно с минимальной задержкой. Возможно ли записать массив задержек из которого таймер просто будет брать значение самостоятельно.

Screenshot_20210615-211336~2.png

Вы сами свой вопрос прочитали?

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


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

Если частота небольшая, то все просто. Помещаем в память таблицу и в обработчике прерывания от таймера (по переполнению) выбираем из нее нолики и единички, которые и выводим в порт.

А так, чтобы таймер делал это сам - насколько я помню, в АВР такого нет ...

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


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

Можно настроить таймер на режим "Сброс по совпадению" и ножка таймера будет переключаться сама. Останется в памяти только массив длительностей расположить и при каждом прерывании обновлять таймер. Годится не для быстрых (импульсы порядка длительностей тактов работы CPU вряд ли возможно устойчиво получить без джиттеров) последовательностей. Контроллер то какой? А то AVR-ок нынче много, может и есть чего аппаратно-интересного в новых версиях...

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


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

20 часов назад, kovigor сказал:

А так, чтобы таймер делал это сам - насколько я помню, в АВР такого нет ...

Зато есть двойная буферизация регистров OCR для PWM, как раз на этот случай.

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


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

Да через dma это понятно. Контроллер atmega168. Думал на нем есть DMA. Хотелось бы что таймер сам генерил импульсы и инкриментировал адрес массива.

7 часов назад, rx3apf сказал:

Зато есть двойная буферизация регистров OCR для PWM, как раз на этот случай.

А можете подробнее рассказать что это такое?

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


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

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

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


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

 Доброго дня Уважаемые.
Подскажите пожалуйста, я на рисунке ничего не перепутал для настроек ШИМ Atmega8?
Спасибо ___________ Юрий.

https://ibb.co/sQh49gd

 

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


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

1 - Обменник - 63.png

Доброго дня Уважаемые.
Подскажите пожалуйста, я на рисунке ничего не перепутал для настроек ШИМ Atmega8?
Спасибо ___________ Юрий.

Изменено пользователем Юрий_Нд

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


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

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

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

Гость
Ответить в этой теме...

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

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

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

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

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

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