Администрация форума не несёт ответственности за достоверность информации и оставляет за собой право редактировать или в особых случаях даже удалять посты без предупреждения. Спасибо за понимание.

Программирование ATMEL в BASCOM.

Информация о пользователе

Привет, Гость! Войдите или зарегистрируйтесь.



USB - PWM

Сообщений 1 страница 3 из 3

1

Все началось с этой темы в которой кроме всего прочего речь шла о 16-ти канальном ШИМ контроллере. Решил сделать его аналог на STM32F103C8T6. Т. к. пока с I2C Slave еще не разбирался, то сделал USB вариант.  Может быть в дальнейшем сделаю I2C Slave.
Конечно же не обошлось без некоторых отличий от оригинала на PCA9685. Во первых ШИМ 16-ти битный, а не 12-ти битный и его частота составляет 1098 Гц, а не 1000 Гц. Кроме того получилось 15 каналов, а не 16, потому что один из ШИМ-выводов используется для USB.

Для тестирования была написана небольшая программа.

Скриншот

http://s011.radikal.ru/i317/1610/f0/9c4099b7dc3b.png

Она чем-то похожа на ту что давным-давно была написана для ATmega http://bascom.at.ua/publ/usb_pwm/1-1-0-43

Еще одно из применений этой конструкции конечно же светомузыка. Ведь у нас есть 15 каналов 16-ти битного ШИМ что позволяет формировать различные световые эффекты с очень плавным управлением яркостью.
Для теста написал плагин для Аимпа.

Соответствие выводов платы с контроллером и выводов ШИМ.

Свернутый текст

1- A8
2 - A9
3 - A10
4 - A0
5 - A1
6 - A2
7 - A3
8 - A6
9 - A7
10 - B0
11 - B1
12 - B6
13 - B7
14 - B8
15 - B9

Файлы. http://pure-basic.narod.ru/forum_files/ … WM_USB.zip

+3

2

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

Скриншот

http://s020.radikal.ru/i711/1610/63/2e28b0d37312.png

В поле "Предделитель" может быть любое положительное целое число в диапазоне 0...65535, на которое будет поделена частота счета таймера. Например при делении 0, предделитель отключается и на счетчик таймера поступает частота 72 МГц. Если выбрать деление скажем на 200, то счетчик таймера будет увеличивать значение 72000000 / 200 = 360000, т. е. 360 тысяч раз в секунду.
Поле "Считать до" (допустимое значение 2...65535) определяет досчитав до какого числа, счетчик обнулится и отсчет начнется заново.

Допустим, нужно получить 12-ти битный ШИМ с частотой 1 Гц, то нужно предделитель выбрать равным 17577 (частота инкремента таймера составит 4096 Гц) и в поле "Считать до" ввести число 4095.

Файлы. http://pure-basic.narod.ru/forum_files/ … _USB_1.zip

+2

3

Вот обзорная статья:
http://lightportal.at.ua/publ/cvetomuzy … /3-1-0-133
Вот видео:

+3