Детекция ноля (на контроллер идет 5 вольт):

Подключение:

Только использую МОС 3052 и светодиод зажигаю 1 (единицей), а не нулем (как на схеме).
У нас в сети 50 Гц. Т.е. период равен 20 мс. Половина мощности будет если выключить напряжение через 5 мс после прохождения нуля.


Нижняя осциллограмма это детектор нуля. Верхняя это выход контроллера который управляет MOC.
Видно что МОС открывается раньше т.к. при 1,7 В МК думает что уже ноль. Т.е. разница примерно 0,8 - 1 мс. При этом лампа горит в полный накал.
Дальше уменьшаю интервал до 2 мс:

Т.е. лампа должна еле светиться. При этом лампа горит в полный накал.
Увеличиваю интервал до 9 мс:

При этом лампа горит в полный накал.
Дальше. Одноканальный режим. Один щуп к выводу 4 МОС, другой щуп к выводу 6 .

Где я ошибся?
P.S. С прошивкой всё просто:
Код: Выделить всё
// External Interrupt 0 service routine
interrupt [EXT_INT0] void ext_int0_isr(void)
{
PORTC.5 = 1; // установили 1
TCNT1 = 0; // сбросили таймер
}
// Timer 1 output compare A interrupt service routine
interrupt [TIM1_COMPA] void timer1_compa_isr(void)
{
PORTC.5 = 0; // установили 0
}

