хочу сделать регулятор мощности, управлять симистором вобщем
использую внешнее прерывание 0 чтобы получить момент перехода сетевого напряжения через ноль
подключил две кнопки она на увеличение угла открытия симистора другая на уменьшение
но не получается плавно регулировать может кто подскажет как сделать?
подпрограмма обработки внешнего прерывания выгляди так в CVAVR:
interrupt [EXT_INT0] void ext_int0_isr(void)
{
#asm("cli")
PORTB.4=1;
for (i=0; i<=k; i++)
{
delay_us(1); //регулировка мощности
}
PORTB.4=0;
delay_us(100);
PORTB.4=1;
#asm("sei")
}
основная программа бесконечный цикл
while (1)
{
k1=PIND.3;
if (k1==0) {
#asm("cli")
delay_us(30);
// #asm("sei")
k=k+1;
if (k>=3500) k=3500;
#asm("sei")
};
k2=PIND.1;
if (k2==0) { #asm("cli")
delay_us(30);
// #asm("sei")
k=k-1;
if (k<=30) k=30;
#asm("sei")
};
// Place your code here
}