А вот это уже не есть гут, учитывая нестабильность "внешнего генератора" - сети 50 Гц в данном случае (ну или 400Гц - не суть) и отсутствие синхронизации с ним.
Синхронизацию как раз и обеспечивает внешнее прерывание. Даже если нестабильность 1Гц от 50, то плевать. на максимуме огибающей изменение напряжения по времени минимально - таковы уж свойства синусоидального сигнала.
Что означает угол -180 град.? Относительно какого "0"?
Уффф... тут надо рисовать много.
Вкратце: формула может расчитывать углы от -89 до 89 градусов, такого свойство функции арктангенса. Верхний полукруг относительно оси Х будет вычислен, если добавить 90 градусов.
Далее, по знаку коэффициента А в формуле
L=arctg(sqrt(3)*(C-B)/(2*A-B-C))
вычисляется, верхняя или нижняя полусфера высчитывается. Если нижняя, то к формуле еще добавляется число 180 градусов.
У нас получается либо от 1 до 179, либо от 181 до 355 градусов.
0 и 180 пропадают.
Как я писал выше, и видно из текста программы, для случаев 0 и 180 (полюс-минус 10градусов кажись) я беру
угол, вычисленный при условии, что А является уже напряжением с другой обмотки. Другой угол смещен относительно исходного на 120 градусов, поэтому к нему нужно добавить 240, и если получившееся значение больше 360, то эти 360 вычесть.
Уффф... Александр, ну не поленитесь, поройтесь в программе, перенесите ее на Ардуино.