Here is my circuit: [![enter image description here][1]][1] When I start on phase 1 by PWMing LIN & HIN of U2 and send a HIGH signal to LIN of U1, then the circuit works perfectly and only one LED lights up. When I try to switch to phase 0 (after starting on phase 1) by PWMing LIN & HIN of U1, and send a HIGH signal to LIN of U2, then the MOSFET bridge suddenly shorts and breaks both of my [IR2110][2] ICs. BUT if I turn my DC power supply down to 0 V, reset the Arduino to start on phase 1, and turn the DC power supply back up to 13 V then the other LED lights up without a problem. For some reason my MOSFETs are only shorting when I try to switch phases; if I start on either phase 1 or phase 0 then it works perfectly. Does anyone know why this would happen? I am implementing 10 μs of dead time between switching phases so I don't think shoot-through would be the problem. Here is the code I am running: byte preg = 2; byte sec = 0; byte pres = 0; void setup() { pinMode(D7, OUTPUT); pinMode(D6, OUTPUT); pinMode(D12, OUTPUT); pinMode(D11, OUTPUT); digitalWrite(D7, LOW); digitalWrite(D6, LOW); digitalWrite(D12, LOW); digitalWrite(D11, LOW); // A5 is connect to a button so I can switch phases when // pressing the button pinMode(A5, INPUT); // I have an LED attached to A0 to help me keep track of // button presses pinMode(A0, OUTPUT); digitalWrite(A0, LOW); } void loop() { // This code is to debounce a button press when for switching // phases sec = digitalRead(A5); if (sec == 0) { // Wait 1 second to check if button is still pressed delay(1000); sec = digitalRead(A5); if (sec == 0) { pres = digitalRead(A0); if (pres == 1) { // Set phase 0 preg = 0; } else if (pres == 0) { // Set phase 1 preg = 1; } } } // Switch to the new phase when button is pressed switch(preg) { // Phase 0 case 0: digitalWrite(D7, LOW); digitalWrite(D6, LOW); digitalWrite(D12, LOW); digitalWrite(D11, LOW); digitalWrite(A0, LOW); delayMicroseconds(10); analogWrite(6, 100); for (int i = 0; i < 10000; i++) { phase0(); } break; // Phase 1 case 1: digitalWrite(D7, LOW); digitalWrite(D6, LOW); digitalWrite(D12, LOW); digitalWrite(D11, LOW); digitalWrite(A0, HIGH); delayMicroseconds(10); analogWrite(11, 100); for (int x = 0; x < 10000; x++) { phase1(); } break; } } // PWM U1 LIN & HIN alternatively to charge C4 & C5 void phase0() { digitalWrite(11, HIGH); digitalWrite(12, LOW); delayMicroseconds(10); digitalWrite(11, LOW); digitalWrite(12, LOW); delayMicroseconds(1); digitalWrite(11, LOW); digitalWrite(12, HIGH); delayMicroseconds(150); digitalWrite(11, LOW); digitalWrite(12, LOW); delayMicroseconds(1); } // PWM U2 LIN & HIN alternatively to charge C2 & C3 void phase1() { digitalWrite(6, HIGH); digitalWrite(7, LOW); delayMicroseconds(10); digitalWrite(6, LOW); digitalWrite(7, LOW); delayMicroseconds(1); digitalWrite(6, LOW); digitalWrite(7, HIGH); delayMicroseconds(150); digitalWrite(6, LOW); digitalWrite(7, LOW); delayMicroseconds(1); } [1]: https://i.sstatic.net/krD5k.png [2]: https://www.infineon.com/dgdl/Infineon-IR2110-DataSheet-v01_00-EN.pdf?fileId=5546d462533600a4015355c80333167e