Mastar, ты лезешь туда, где с кодом Arduino и его средой становится тесновато.

ШИМ на AVR микроконтроллерах можно создавать двумя способами:
1. аппаратный ШИМ. Создается только на определенных выводах и с некоторыми ограничениями. Читай мануал на atmega168/328 чтобы узнать какие ограничения существуют и как ШИМ программируется.

2. Софтверный ШИМ. В этом случае используется прерывание таймера и по таймеру выполняется нужная работа. Там тоже позникают ограничения, и на частоты и на то, что другой код не должен надолго блокировать работу прерываний.

С какой точностью в микросекундах тебе нужны импульсы? Точность в 1 мкс для нескольких каналов недостижима для софтверного ШИМ.
Думаю, максимум, во что можно уложиться будет примерно 1мкс+
1мкс*количество каналов. Это если забыть про среду arduino и считать такты в отладчике.