Das man den Controller bei der PWM Erzeugung nicht blockieren sollte hat nietzsche schon geschrieben.
Die eigentliche PWM Routine sollte möglichst schnell abgearbeitet werden.

Eine Hochsprache für das Hauptprogramm mit Inline Assembler für die PWM Erzeugung ( Im Interrupt ?! ) dürften hier genau der richtige Mix sein.

Zu DMX 512:
Guck mal hier:
http://www.soundlight.de/ unter der Rubrik Technik.
Da ist das Protokoll ziemlich gut dokumentiert.
Der USART eines ATMEGA kann das DMX Signal 250kBit/s 8,N,2, mit 8MHz oder noch schnellerem Quarz verarbeiten.
Das Reset ( 88µs ) wird dabei als "Frame Error" erkannt und als Start einer neuen Sequenz ausgewertet.