Hi,

You mentioned that your circuit works for most of the time. Give me some idea how you have used your zero-cross routine. Have you taken all precautions to prevent a rollover triggering ?? Best practice is to limit the maximum firing angle (minimum output) to 150 degrees. Anyway down to the last 30 degrees you would be getting average power that is probably unsusable for your design. This prevents that you are not triggering the thyristors close to a zero cross. Due to the phase lag and current lag your thyristors may experience the current zero cross a little late after the voltage zero cross (your pic). I use an asm interrupt to turn-off the outputs and do not fire (in case of full firing) before a certain delay to make sure that the thyristors turned off at the zero cross. For firing I use a timer interrupt.

Also from your schematic I understood that you are using a PIC for Phase health check and measuring the shunt-current. Why not use a single PIC that has three external interrupt sources? You can then do away with the DAC part. I would suggest that at each zero-cross you turn off the outputs and do the AD to find out the next firing angle.

Seems it is time to look at your code.