pwm rgb светодиоды ws2811 ws2812

Дисплеи, датчики и прочие функциональные узлы, управляемые МК.
Ответить
Друг Кота
Сообщения: 13796
Зарегистрирован: Чт сен 20, 2007 14:08:00

Сообщение kalobyte »

прикупил ленту с 2811 и посмотрел протокол управления и библотеки
одни делают на вставке асм с нопами, вторые используют клок от модуля спи

хотел спросить, а что такой сигнал нельзя разве сформировать таймером в режиме компаратора?
вот тут диаграмма https://learn.sparkfun.com/tutorials/ws ... 2-overview
тематические ответы только в форуме, в приват не пишите
Реклама
Модератор
Аватара пользователя
Сообщения: 4614
Зарегистрирован: Чт мар 18, 2010 23:09:57
Откуда: Планета Земля

Сообщение Аlex »

kalobyte писал(а):вставке асм с нопами
Да уж... миллисекунду НОПов :facepalm:
Конечно, таймером будет правильнее.
Реклама
Друг Кота
Аватара пользователя
Сообщения: 3872
Зарегистрирован: Пт янв 29, 2010 10:27:40
Откуда: Москва

Сообщение Engineer_Keen »

Вообще-то по ссылке на диаграмме интервалы порядка долей микросекунд, самый мелкий - 0.35мкс, что например для распространенного в AVR внутреннего RC-генератора на 8МГц всего пара-тройка тактов, так что ИМХО тут как раз NOPы, а не таймеры...
Неправильно собранная из неисправных деталей схема нуждается в отладке и сразу не работает... (С)
Модератор
Аватара пользователя
Сообщения: 4614
Зарегистрирован: Чт мар 18, 2010 23:09:57
Откуда: Планета Земля

Сообщение Аlex »

Упс... точно, это микросекунды. Видимо, глаз на ночь замылился :oops:
Тогда конечно НОПы - самое то.
Реклама
Эиком - электронные компоненты и радиодетали
Друг Кота
Сообщения: 4583
Зарегистрирован: Вс дек 05, 2010 06:10:34
Откуда: ЮВ

Сообщение HHIMERA »

Аlex писал(а): Тогда конечно НОПы - самое то.
Та брось... кадриль ещё вытанцовывать...
Для ПИКа есть апнота AN1606 "Using the Configurable Logic Cell (CLC) to Interface a PIC16F1509 and WS2811 LED Driver"...
Для STM - TIM+DMA... SPI... GPIO+DMA...
"Я не даю готовых решений, я заставляю думать!"(С)
Реклама
Друг Кота
Сообщения: 13796
Зарегистрирован: Чт сен 20, 2007 14:08:00

Сообщение kalobyte »

но ведь сумма полупериодов это 1.15мкс, что будет 860кгц
разве таймер не потянет?
вот 20мгц взять :)))

Изображение
Вложения
timer.gif
(18.63 КБ) 1943 скачивания
тематические ответы только в форуме, в приват не пишите
Реклама
Друг Кота
Аватара пользователя
Сообщения: 3872
Зарегистрирован: Пт янв 29, 2010 10:27:40
Откуда: Москва

Сообщение Engineer_Keen »

Ну на 20МГц наверняка потянет. Там между битами дофига тактов получается, можно даже в прерывание запихнуть.
Неправильно собранная из неисправных деталей схема нуждается в отладке и сразу не работает... (С)
Поставщик валерьянки для Кота
Аватара пользователя
Сообщения: 1900
Зарегистрирован: Сб фев 21, 2009 13:11:40
Откуда: Москва

Сообщение ibiza11 »

тайминги из даташита:
T0_H: 0.35+-0.15 = 0.20-0.50
T0_L: 0.80+-0.15 = 0.65-0.95
T1_H: 0.70+-0.15 = 0.55-0.85
T1_L: 0.60+-0.15 = 0.45-0.75
получается можно взять для нуля: H-0,5мкс, L-0.95мкс, Для единицы: H-0,85мкс, L-0,75мкс
возьмем минимальный период из двух, чтобы привести к одинаковому периоду. 0,5+0,95 = 1,45мкс
тогда для единицы поправим: H-0,85мкс, L-0,6мкс : 0,85+0,55 = 1,45мкс
все в допустимых пределах по даташиту.
(все далее для AVR)
20МГц -> период = 50нс = 0,05мкс
1,45/0,05 = 29 тактов
возьмем таймер1 в режиме ШИМ, TOP = OCR1A = 29, OCR1B = 10(для 0) или 17(для 1)
в прерывании сравнения B изменяем значение OCR1B.
поскольку в режиме ШИМ регистры OCRx работают в режиме двойной буферизации, обновление регистра из буфера происходит в момент достижения TOP или BOTTOM
а это 19 и 12 тактов для прерывания сравнения соответственно для 0 и 1.
если предположить, что мы управились, к примеру за (rjmp - 2, outH - 1, outL - 1, reti - 4) = 8 тактов, то считаем, что 8/29*100 ~ 28% процессорного времени будем находиться в прерывании.
Ставим плюсы: )
Друг Кота
Сообщения: 13796
Зарегистрирован: Чт сен 20, 2007 14:08:00

Сообщение kalobyte »

ibiza11 писал(а): 28% процессорного времени будем находиться в прерывании.
и какой вывод из этого можно сделать?
в твоем предложении вывод сам будет переключаться или надо в прерывании дописывать код?

выходит, что лучше нопами сделать что ли? вчера посмотрел исходник одной штуки, которая с софтовым усб работает, так там нопы стоят
тематические ответы только в форуме, в приват не пишите
Друг Кота
Аватара пользователя
Сообщения: 3872
Зарегистрирован: Пт янв 29, 2010 10:27:40
Откуда: Москва

Сообщение Engineer_Keen »

Нецелесообразно тут использовать таймеры и прерывания. Я выше сказал что тактов дофига, но попробовал реализовать этот протокол даже на 20МГц и понял что нифига их не дофига... Чтобы соблюсти временные интервалы приходится каждый такт считать. Так что что-то делать можно будет только в перерывах между передачей данных (который RESET>50мкс). В софтовом USB такая же проблема, потому там тоже NOPы ставят.
Неправильно собранная из неисправных деталей схема нуждается в отладке и сразу не работает... (С)
Поставщик валерьянки для Кота
Аватара пользователя
Сообщения: 1900
Зарегистрирован: Сб фев 21, 2009 13:11:40
Откуда: Москва

Сообщение ibiza11 »

kalobyte писал(а):и какой вывод из этого можно сделать?
ах, да, вывод то забыл написать! ... теперь понимаю, что зря распинался. :facepalm:
сами подумайте: период таймера 29 - тактовых импульсов задающего генератора.
в примере прерывания, что я приводил, тратится 8 тактов, между двумя прерываниями минимально (29 - (17-10)) = 22 такта. за остальные оставшиеся (22 - 8 ) = 14 тактов микроконтроллер должен как минимум успеть:
1) сформировать новое значение OCR1B для следующего бита
2) проверить признак окончания передачи и остановить в этом случае таймер
если вы уложитесь, без проблем. Микроконтроллер будет только передавать данные. Но я думаю уложиться нереально.
kalobyte писал(а):в твоем предложении вывод сам будет переключаться или надо в прерывании дописывать код?
ШИМ... вам знаком этот режим?
kalobyte писал(а):выходит, что лучше нопами сделать что ли?
попробуйте на таймере.
Ставим плюсы: )
Друг Кота
Аватара пользователя
Сообщения: 3832
Зарегистрирован: Сб сен 10, 2011 17:46:25

Сообщение oleg110592 »

HHIMERA писал(а):Для STM - TIM+DMA... SPI... GPIO+DMA...
таки сделали уже: http://eliaselectronics.com/driving-a-w ... -an-stm32/
Друг Кота
Сообщения: 4583
Зарегистрирован: Вс дек 05, 2010 06:10:34
Откуда: ЮВ

Сообщение HHIMERA »

Я знаю... это так... по памяти озвучил... варианты имеются...
Алексей где-то озвучивал 16 каналов одновременно... GPIO+TIM+DMA... если не ошибаюсь...
"Я не даю готовых решений, я заставляю думать!"(С)
Ответить

Вернуться в «Периферия»