В порядке абстрактных размышлений
Шина USB может делать прерывание даже для низкоскоростных устройств - 1 раз в мс - это если есть еще низкоскоростные девайсы на хабе - тупо ищется нужный адрес .Ну или 1 раз в 8 мс. В эти моменты ломается передача на WS2811 (методом ногодрыга).
Если синхронизировать управление от этих прерываний - то появится шанс и для софт-USB.
Для Атмега168 - можно разрешить прерывание дополнительно "по ноге": PCMSK2=(1<<PCINT16)
в обработчике разрешить основное прерывание, установить флажок старта обмена
ISR(PCINT2_vect)
{
sei();
//разумеется определить полярность перепада - если нужный -
Set_Flag_Start_WS2811;
}
В основном цикле отлавливать этот флаг и запускать обмен на линейку. Пакет ограничить ~800-900 мкс - должно хватить на ~40 светодиодов.
Терпят ли Ws2811 при обмене паузы между байтами? Тогда логично просится работа через SPI - один байт будет кодировать один бит в обмене, битовым заполнением этого байта подобрать 1/0 - для возможной скорости. При этом больше будет загружена аппаратная часть.
ЗЫ: у самого пока руки не добрались до WS2812 пощупать - лежат уже больше месяца.