ШИИМ 10 БИТ пользовательский блока на Си
Добавлено: 07 июл 2016, 21:07
Попалась мне на глаза интересная библиотека TimerOne, одна из функций возможность генерировать 10 Битный ШИМ с настраиваемым периодом.
Решил сделать блок:
Название :Блок ШИМ 10Бит
Разрядностью 10Бит (0-1023)
Период можно настраивать
Получилось два блока.
Описание:
PWM_CONST_(CODE)
[spoiler=Спойлер]Блок ШИМ
Разрядностью 10Бит (0-1023)
Период можно настраивать
!!!!Возможны конфликты с блоками где используется Timer1 (из известных мне Rremote, Servo)
Входа
PWM_1, PWM_2, PWM_3 - задается скважность ШИМ в виде значений 0-1023
Параметры
period – Период ШИМ в микросекундах
меньше 100 лучше не ставить
Верхний предел 8388480 (8,4секунды)
pin_1, pin_2, pin_3 - номер пина соответствующего входам PWM_1, PWM_2, PWM_3
Если вход не используется, то надо выставлять 0.
Возможно использовать для следующих пинов
Arduino Uno 9, 10
Arduino Leonardo 9, 10, 11
Arduino Mega 11, 12, 13
encoder - Совместно сблоком Энкодер_С
Сделал для возможности использовать ШИМ, при примении блока Энкодер_С, в этом режиме параметр period неиспользуется
Период ШИМ будет равен значению period из блока Энкодер_С
! Блок Энкодер_С должен размещятся в проекте раньше Блок ШИМ[/spoiler]
PWM_REG_(CODE)
[spoiler=Спойлер]Блок ШИМ
Разрядностью 10Бит (0-1023)
Период можно настраивать
!!!!Возможны конфликты с блоками где используется Timer1 (из известных мне Rremote, Servo)
Входа
PWM_1, PWM_2, PWM_3 - задается скважность ШИМ в виде значений 0-1023
period – Период ШИМ в микросекундах (если оставить пустым будет период 2000мкс)
Меньше 100 лучше не ставить (хотя это надо тестировать)
Верхний предел 8388480 (8,4секунды)
Параметры
pin_1, pin_2, pin_3 - номер пина соответствующего входам PWM_1, PWM_2, PWM_3
Если вход не используется, то надо выставлять 0.
Возможно использовать для следующих пинов
Arduino Uno 9, 10
Arduino Leonardo 9, 10, 11
Arduino Mega 11, 12, 13[/spoiler]
Возможно использовать для следующих пинов
Arduino Uno 9, 10
ArduinoLeonardo 9, 10, 11
ArduinoMega 11, 12, 13
!!!!Возможны конфликты с блоками где используется Timer1 (из известных мне Rremote, Servo)
Еще два блока полный аналог предыдущих, только используется Timer3 (есть только в ArduinoLeonardo ArduinoMega)
PWM_CONST_T3
PWM_REG_T3-CODE
Возможно использовать для следующих пинов
Arduino Leonardo 5
Arduino Mega 2, 3, 5
Если у кого есть осциллограф (и не лень), проверти правильность работы и минимальной возможный период.
Обновление
Добавил второй вариант с заданием Периода через вход блока, т.е можно регулировать Период ШИМ по ходу выполнения программы.
Актуальные версии блоков находятся ШИМ 10 БИТ с изменяемым периодом
Все вопросы и предложения в эту тему.
Решил сделать блок:
Название :Блок ШИМ 10Бит
Разрядностью 10Бит (0-1023)
Период можно настраивать
Получилось два блока.
Описание:
PWM_CONST_(CODE)
[spoiler=Спойлер]Блок ШИМ
Разрядностью 10Бит (0-1023)
Период можно настраивать
!!!!Возможны конфликты с блоками где используется Timer1 (из известных мне Rremote, Servo)
Входа
PWM_1, PWM_2, PWM_3 - задается скважность ШИМ в виде значений 0-1023
Параметры
period – Период ШИМ в микросекундах
меньше 100 лучше не ставить
Верхний предел 8388480 (8,4секунды)
pin_1, pin_2, pin_3 - номер пина соответствующего входам PWM_1, PWM_2, PWM_3
Если вход не используется, то надо выставлять 0.
Возможно использовать для следующих пинов
Arduino Uno 9, 10
Arduino Leonardo 9, 10, 11
Arduino Mega 11, 12, 13
encoder - Совместно сблоком Энкодер_С
Сделал для возможности использовать ШИМ, при примении блока Энкодер_С, в этом режиме параметр period неиспользуется
Период ШИМ будет равен значению period из блока Энкодер_С
! Блок Энкодер_С должен размещятся в проекте раньше Блок ШИМ[/spoiler]
PWM_REG_(CODE)
[spoiler=Спойлер]Блок ШИМ
Разрядностью 10Бит (0-1023)
Период можно настраивать
!!!!Возможны конфликты с блоками где используется Timer1 (из известных мне Rremote, Servo)
Входа
PWM_1, PWM_2, PWM_3 - задается скважность ШИМ в виде значений 0-1023
period – Период ШИМ в микросекундах (если оставить пустым будет период 2000мкс)
Меньше 100 лучше не ставить (хотя это надо тестировать)
Верхний предел 8388480 (8,4секунды)
Параметры
pin_1, pin_2, pin_3 - номер пина соответствующего входам PWM_1, PWM_2, PWM_3
Если вход не используется, то надо выставлять 0.
Возможно использовать для следующих пинов
Arduino Uno 9, 10
Arduino Leonardo 9, 10, 11
Arduino Mega 11, 12, 13[/spoiler]
Возможно использовать для следующих пинов
Arduino Uno 9, 10
ArduinoLeonardo 9, 10, 11
ArduinoMega 11, 12, 13
!!!!Возможны конфликты с блоками где используется Timer1 (из известных мне Rremote, Servo)
Еще два блока полный аналог предыдущих, только используется Timer3 (есть только в ArduinoLeonardo ArduinoMega)
PWM_CONST_T3
PWM_REG_T3-CODE
Возможно использовать для следующих пинов
Arduino Leonardo 5
Arduino Mega 2, 3, 5
Если у кого есть осциллограф (и не лень), проверти правильность работы и минимальной возможный период.
Обновление
Добавил второй вариант с заданием Периода через вход блока, т.е можно регулировать Период ШИМ по ходу выполнения программы.
Актуальные версии блоков находятся ШИМ 10 БИТ с изменяемым периодом
Все вопросы и предложения в эту тему.