Получить определенную ШИМ волну на 2-х пинах
- Войдите на сайт для отправки комментариев
Пнд, 29/10/2018 - 09:52
Добрый день. Возможно ли получить такой ШИМ (см. фото) на двух пинах Arduino Uno?
Фото взято отсюда.
Добрый день. Возможно ли получить такой ШИМ (см. фото) на двух пинах Arduino Uno?
Фото взято отсюда.
Думаю, тебя спасет простой инвертор.
И так можно будет?
с инвертором нижний сигнал будет точной зеркальной копией верхнего, со сдвигом в нескольно микро/нано секунд (от серии инвертора зависит)
Дак это... Можно сразу подавать на инвертирующий элемент и прямопропускающий. Тогда задержка нивелируется.
Дак это... Можно сразу подавать на инвертирующий элемент и прямопропускающий. Тогда задержка нивелируется.
Можно подробнее?
Добрый день. Возможно ли получить такой ШИМ (см. фото) на двух пинах Arduino Uno?
Фото взято отсюда.
Ребята, какие инвероторы, нафига? У нас же есть МК. Берем любой таймер с двумя каналами, например Timer1, один канал настраиваем на HIGH до совпадения, другой на LOW - получаем ровно то, что хочет ТС. Картинка из даташита на Амегу328 -
Каналы можно настроить и на разные счетчики ... получим картинку из сообщения #2
DetSimen, sadman41, никак не пойму, -вы что-то увидели на картинке особенное? Почему просто COM-битами не сделать инверсию PWM? Судя по второй картинке это должен быть обычный FAST-PWM
PS. вот и b707 Тем же вопросом озадачился
Я только по первому варианту мнение имею: первый луч получить с "И"/"ИЛИ", второй с "НЕ". В принципе переключаться они за равное время должны, так что если запустить на них один и тот же ШИМ - должно быть зеркальное отражение. А дальше уж там куда надо запускать оба канала.
P.S. я не против таймеров, за Семёном тему продолжил ))
тут и мне, начитавшемуся про таймера понятно что можно )))
DetSimen, sadman41, никак не пойму, -вы что-то увидели на картинке особенное? Почему просто COM-битами не сделать инверсию PWM? Судя по второй картинке это должен быть обычный FAST-PWM
Я - по причине благоприобретенного скудоумия даже не подумал про СОМ-биты. Я даже не знаю чо это.
В ArduinoIDE такое можно реализовать? Обычным analogWrite(), я так понимаю, дело не обойдется.
ffa, можно , неоднократно обсуждали. Вот например.
dimax, спасибо за ссылку на обсуждение. ШИМ в примере работает на стандартной частоте Arduino?
UPD. Отвечу сам за себя: 488,28 Гц
Погуглил еще немного... Чтобы получить ШИМ 15 ГЦ на 5 и 6 пине (таймер 0) надо выполнить:
Далее инвертируем сигнал на одном из пинов и получаем код:
Я все правильно сделал? Таймер 0 можно изменять?
Если не пользуетесь "временем Ардуино", то можно. Иначе всякие millis(), delay() поедут "в лес" да "по ягодицы".
Arhat109-2, не успел написать :( Только что прочитал:
Tаймер 0 (Системное время, ШИМ 5 and 6)
Используется для хранения счетчика времени работы программы. Функция millis() возвращает число миллисекунд с момента запуска программы, используя ISR глобального приращения таймера 0. Таймер 0 также используется для реализации ШИМ на выводах 5 и 6.
Для организации низкочастотных ШИМов значительно удобней 16-и битные таймеры.