Ungewollte Programmverzögerung

Hallo,
ich bin gerade dabei mir einen kleinen Sinus-Wechselrichter zu bauen und verzweifle gerade an mir nicht erklärlichen Programmunterbrechungen.

Das Programm unterbricht ständig, so dass am Ende eine Folge von Sinus-Halbwellen aber kein durchgehender Sinus erzugt wird. Die Ünterbrechungen dauern ca. 100ms (nach Augenmaß, habe keine Möglichkeit das zu messen)

Die einzelen Halbwellen werden einwandfrei erzugt, die Unterbrechung muss also irgendwo dazwischen erfolgen.

Gibt es dafür eine Erklärung ?

Gruß

void loop() {

Z = 0; // Pulszähler : 160 Pulse pro Halbwelle
while(Z < 160){

Tein = sin(0.01963 * Z) * TPuls * Korr; // pi:160 = 0.01963, Einschaltzeit je Puls im Mikrosekunden
Taus = TPuls - Tein; // … Auschaltzeit

digitalWrite(AusgangA, HIGH); // Ablauf eines Pulses
delayMicroseconds(Tein);
digitalWrite(AusgangA, LOW);
delayMicroseconds(Taus);

Z++;
}

// …und für die andere Sinushalbwelle:
Z = 0;
while(Z < 160){

Tein = sin(0.01963 * Z) * TPuls * Korr; // pi:20 = 0.157, in microSek
Taus = TPuls - Tein;

digitalWrite(AusgangB, HIGH); // Ablauf eines Pulses
delayMicroseconds(Tein);
digitalWrite(AusgangB, LOW);
delayMicroseconds(Taus);

Z++;
}

//Mess = analogRead (Eingang); // Änderung des Korrekturwertes
//Korr = Korr + (663 - Mess)*0.01; // 3,24V * 1023 = 663 0.01=Verstärkungsfaktor
//if (Korr > 1);
//{ Korr = 1; };

}

Welche Arduino Software Version? Im Zweifelsfall ist die serielle Schnittstelle schuld. Die Fliesskommaberechnungen könnten aber auch mit Grund der Ursache sein. Wenn Du allerdings nur eine vorberechnete Wellenform in die Ausgänge schieben musst, dann schau Dich mal auf meiner Webseite um. Ich habe nie solche Probleme weil meine Programme die Daten entweder in engen Schleifen oder Interruptgetrieben ausgeben. Bei den Vorgehensweisen habe ich noch nie solche Probleme bekommen.

Danke für die Antwort, wie es aussieht hatte das Netzteil Schuld.
Mit einer Batterie läuft es ohne Probleme.