If the break time between DMX frames is not long enough to complete all I2C output, we can switch to interrupt driven input. The effect of this is that the DMX input and I2C output will happen concurrently, with the DMX input taking higher priority.
This would allow for more graceful degradation in communication. If the I2C communication takes more time than is available between DMX bytes, only some I2C channels will not be updated every frame, instead of the entire frame being dropped.
If the break time between DMX frames is not long enough to complete all I2C output, we can switch to interrupt driven input. The effect of this is that the DMX input and I2C output will happen concurrently, with the DMX input taking higher priority.
This would allow for more graceful degradation in communication. If the I2C communication takes more time than is available between DMX bytes, only some I2C channels will not be updated every frame, instead of the entire frame being dropped.