Доброго времени суток. Прошу помощи в изгнании диавола из кода!!1
Пытаюсь соорудить диммер на MOC3021 + BT136, детектор нуля повесил на обработчик внешнего прерывания. Суть проблемы в чем: Схема ведет себя так, будто оптосимистор с zero-cross: если подать сигнал на оптопару точно в момент перехода нуля - лампа загорается. Если сигнал подать чуть с задержкой относительно перехода - симистор не открывается. Собственно, почему?
Код
void EXTI4_15_IRQHandler(void)
{
HAL_Delay(2); // c этой задержкой лампочка не горит
HAL_GPIO_WritePin(GPIOA, GPIO_PIN_14, GPIO_PIN_SET);
HAL_Delay(1);
HAL_GPIO_WritePin(GPIOA, GPIO_PIN_14, GPIO_PIN_RESET);
HAL_NVIC_ClearPendingIRQ(EXTI4_15_IRQn);
HAL_GPIO_EXTI_IRQHandler(GPIO_PIN_13);
}