Как создать инвертированный ШИМ на Due с помощью программного обеспечения
Здравствуйте, мне нужен фрагмент кода, который позволяет мне инвертировать сигнал ШИМ двух контактов ШИМ на должном уровне. Пример D1 будет 101010, а D2 будет 010101. Возможно ли это?
Я довольно ограничен в своих возможностях, потому что делать это извне не вариант, потому что будет время, когда потребуется изменение режима, и оба контакта будут отправлять сигнал независимо. Ручное вытягивание контактов High и Low также не подходит для меня, потому что это заставит код блокировать другие коды.
@Jack, 👍1
Обсуждение1 ответ
Не используя Arduino API, нет. Но вы можете напрямую манипулировать регистрами SAM3X8E.
Вам следует изучить раздел 38 техническое описание, где упоминается в списке объектов:
- Независимые дополнительные выходы с 12-битным генератором мертвого времени (также называемого мертвой зоной или неперекрывающимся временем) для каждого канала
Манипуляции с регистрами мне не по плечу, надеюсь, есть примеры., @Jack
@ Джек Вероятно, есть, но, вероятно, не здесь. Хотя форумы Atmel могут быть хорошими., @Majenko
- Проблема с настройкой частоты ШИМ для Arduino Due
- Преобразование случайных двоичных данных в сигнал ШИМ
- Генерация комплементарного ШИМ с внешним триггером с помощью Arduino Due
- Установите частоту ШИМ на 25 кГц.
- Какова частота PWM-выхода на Arduino
- Управление скоростью вентилятора с помощью библиотеки Arduino PID
- Как устранить шум от вентилятора 12 В с ШИМ-управлением на низкой скорости
- Arduino Due vs Mega 2560
инвертированные 75% такие же, как неинвертированные 25%, @jsotola
@jsotola Мне трудно представить, что, хотя они будут противодействовать, но частота не будет совпадать, 25% пропустят один цикл из 75%. Я что-то пропустил?, @Jack
возьмите лист бумаги и карандаш... нарисуйте 10 циклов 25% сигнала ШИМ... переверните бумагу вверх ногами... может я что-то упускаю, @jsotola
[Изображение](https://ibb.co/mbfz7Sf). Вышеупомянутый сигнал на изображении составляет 75%, а нижний — 25%. 25% отсутствует один цикл из 75%, @Jack
это ШИМ... https://www.nightsea.com/wp-content/uploads/2017/12/PWM-diagram.jpg, @jsotola
Да, у меня неправильное понимание PWM, извините. [Новое изображение](https://ibb.co/JrWhh7X) хотя и перевернуто, но мне нужно немного уменьшить его. Теперь это был бы другой подход, я думаю, что проще сделать, оба, я думаю, будут включать прямые манипуляции с регистрами., @Jack
Давайте [продолжим это обсуждение в чате](https://chat.stackexchange.com/rooms/103672/discussion-between-jsotola-and-jack)., @jsotola
вы можете использовать вентиль xor для инвертирования сигнала ШИМ. это позволяет вам легко отменить инвертирование сигнала с помощью другого контакта GPIO, питающего другой вход затвора., @dandavis
@dandavis хорошо, это подход, который я могу использовать, если не могу найти способ сделать это с помощью программного обеспечения. со всем, что я прочитал до сих пор, я считаю, что это можно сделать с помощью программного обеспечения, получить его немного сложно, @Jack