Pin change interrupt deaktivieren

Freunde der Nacht, ich komme hier einfach nicht weiter…

Ich greife über einen Pin Interrupt die Werte von vier Eingängen ab
Diese Werte werden im “Loop” entsprechend verändert und wieder ausgegeben.
Die Ausgabe erfolgt über eine Signalgenerierung, die wie folgt aussieht:

void setup()
{
...
 // only allow pin change interrupts for digital pins 10-13.
  PCMSK0 = (1 << PCINT2) | (1 << PCINT3) | (1 << PCINT4) | (1 << PCINT5);
  PCICR = (1 << PCIE0);
.....

loop()
{
....

for ( int i = 0; i < SERVOS; i = i + 1 ) {

    digitalWrite(servoPin, LOW); // Initiate pulse start
    delayMicroseconds(pulseStart); // Duration of pulse start
    digitalWrite(servoPin, HIGH); // Stop pulse start
    delayMicroseconds(g_values[i]); // Finish off pulse

  }
  digitalWrite(servoPin, LOW); // Initiate synchronisation pulse
  delayMicroseconds(pulseStart); // Duration of start of synchronisation pulse
  digitalWrite(servoPin, HIGH); // Stop synchronisation pulse start
....

Betrachte ich das generierte Signal mit dem Oscilloskop. So bekomme ich bei einem ausgelösten Interrupt immer eine leichte Ungenauigkeit in das aufgebaute Signal…
Was eigentlich klar ist, den der Interrupt verzögert die Generierung des Signalaufbaus und somit stimmt das Signal nicht mehr.

Jetzt suche ich verzweifelt nach einer Möglichkeit, den Interrupt für die oben genannte Codepassage zu deaktivieren, ohne die delayMicroseconds Methode in Mitleidenschaft zu ziehen.

Hat jemand einen Tipp für mich?

Du kannst einfach cli() und sei() nehmen, denn delayMicroseconds() hängt nicht wie delay() vom Timer-Interrupt ab. Es ist über eine einfache NOP-Schleife implementiert.