GP1 не ругайся , я же тебе писал я давно не писал мне и так пришлось привести с дачи все книги по atmel , восстанавливаю потихоньку знания!!!
в INT0 загружаем изначальную мощность power что дает нам в процессе менять ее
Код: Выделить всё
int_0:
in tmp,sreg
push tmp
blt volna, 0 ; пред установка для второго прохода
; запускаем Т1
ldi tmp,0xff
ldi tmp1,power ; загрузка разных значения мощности
out TCNT1H,tmp
out TCNT1L,tmp1
ldi tmp,0x82 ; разрешение прерывания по переп.
out TIMSK, tmp
pop tmp
out sreg,tmp
reti
сработало INT0 запустили T1 , volna это для второго прохода таймера
T1, значит записали volna 0 , загрузили нужное нам значение мощности,разрешили (запустили таймер ) прерывание,
сработал T1 первый раз
выключили симистор
cbi OutPort,(1<<OutPin)
далее неб. задержку перед включением ,включаем
sbi OutPort,(1<<OutPin)
дальше переписываем значения для таймера TCNT1H, TCNT1L под 10 мс , проверяем если первый раз volna 0 , то записываем volna 1,
ждем очередного срабатывания таймера все тоже самое проверяем
если volna 1 то запрещаем прерывание T1 , далее все с начала INT0,
я вот только не знаю можно ли менять значения TCNT1H, TCNT1L прямо в прерывании но я раза два встречал ?????
Код: Выделить всё
in tmp,sreg
push tmp
cbi OutPort,(1<<OutPin)
; здесь я думаю надо сделать небольшую задержку!!!!
sbi OutPort,(1<<OutPin)
ldi r16,0xFF
out TCNT1H, r16
ldi r16,0x64
out TCNT1L, r16
SBRS volna, 0
RJMP ext
ldi tmp,0x02 ; запрет прерывания по совпадению
out TIMSK,tmp
ext:
blt volna, 1 ; второй проход
pop tmp
out sreg,tmp
reti
blt volna, 1 //запись значения equ volna = 1 могу ошибится с оператором