Arduino DMX-512 troubleshoot (RS-485)

I found the major problem: the arduino delayMicroseconds() is imprecise as noticed by Tomek Ness but some DMX equipement are more tolerant to imprecise timing than others. So i had to modify Tomek Ness's code:

...
int theDelay = 1;
// DMX starts with a start-bit that must always be zero
_SFR_BYTE(_SFR_IO8(portNumber)) &= ~_BV(pinNumber);
//we need a delay of 4us (then one bit is transfered)
// at the arduino just the delay for 1us is precise every thing between 2 and 12 is imprecise
// to get excatly 4us we have do delay 1us 4 times
delayMicroseconds(theDelay);
delayMicroseconds(theDelay);
delayMicroseconds(theDelay);
delayMicroseconds(theDelay);

to:
int theDelay = 1;
// DMX starts with a start-bit that must always be zero
_SFR_BYTE(_SFR_IO8(portNumber)) &= ~_BV(pinNumber);
//we need a delay of 4us (then one bit is transfert)
// at the arduino just the delay for 1us is precise every thing between 2 and 12 is imprecise
// to get excatly 4us we have do delay 1us 4 times
delayMicroseconds(theDelay);
delayMicroseconds(theDelay);
delayMicroseconds(theDelay);

for (wasteTime =0; wasteTime <2; wasteTime++) {
}

so that the start bit is even more exactly 4us.

Now it works almost perfectly, altough one strange problem remains: when I send low values it's perfect but high values (near 255) makes the light flicker. Another timing issue?