Нажмите для просмотра прикрепленного файла
На PA0 подается напряжение с 5-ти вольтового адаптера от мобилы(с помощью этого адаптера определяется появилась ли фаза). Питает микроконтроллер другой адаптер от мобилы, на этот адаптер постоянно напряжение подается 220В. PA1 - висит в воздухе. Выводы PB0-PB7 и PD0-PD6 зажигают светодиоды, отображают счетчик появления фазы в двоичном виде. Все бы хорошо, но почему-то иногда при очередном появлении фазы, счетчик например должен показать "5", а вместо этого микроконтроллер похоже сбрасывается, и счетчик показывает "1". Редко это случается, ловил такую ситуацию только вначале, где то после того как микроконтроллер проработал минуту, но возможно и потом сбрасывается, не знаю точно. Код для мк тоже приведу, я в этой области любитель, поэтому код возможно покажется уродским

CODE
.device ATtiny2313A
.include "tn2313Adef.inc"
.def SlopReg=R16
.def mask=R17
;clock = 1 MHz
;=======================================================================
Start: rjmp Init;
Init:
ldi SlopReg,0b00000000;
out DDRA,SlopReg;
ldi SlopReg,0b11111111;
out DDRB,SlopReg
ldi SlopReg,0b01111111;
out DDRD,SlopReg;
ldi SlopReg,0b11111110;
out PortA,SlopReg ;
ldi SlopReg,0b00000000; Led0 - Led7
out PortB,SlopReg
ldi SlopReg,0b10000000; Led8 - Led14
out PortD,SlopReg ;
Begin: ldi mask,0b00000001; маска для работы
ldi Yh,0x00 ; счетчик
ldi Yl,0x00
; Ищем состояние 0
State0:
in SlopReg,PinA
and SlopReg,mask
brne State0
; Задержка
ldi Xh,0x7f
ldi Xl,0xff
Delay1: sbiw Xh:Xl,1
brne delay1
; Еще раз проверяем нолик ли, если нет то все сначало
State1: in SlopReg,PinA
and SlopReg,mask
brne State0
; Ищем состояние 1
State2: in SlopReg,PinA
and SlopReg,mask
breq State2
; Задержка
ldi Xh,0x7f
ldi Xl,0xff
Delay2: sbiw Xh:Xl,1
brne delay2
; Еще раз проверяем единичка ли, если нет то все сначало
State3: in SlopReg,PinA
and SlopReg,mask
breq State0
adiw Yh:Yl,1
;Вывод результата
out PortB,Yl
ldi SlopReg,0b10000000
or SlopReg,Yh
out PortD,SlopReg;out Led8 - Led14
rjmp State0
End:
;======================================================================
.include "tn2313Adef.inc"
.def SlopReg=R16
.def mask=R17
;clock = 1 MHz
;=======================================================================
Start: rjmp Init;
Init:
ldi SlopReg,0b00000000;
out DDRA,SlopReg;
ldi SlopReg,0b11111111;
out DDRB,SlopReg
ldi SlopReg,0b01111111;
out DDRD,SlopReg;
ldi SlopReg,0b11111110;
out PortA,SlopReg ;
ldi SlopReg,0b00000000; Led0 - Led7
out PortB,SlopReg
ldi SlopReg,0b10000000; Led8 - Led14
out PortD,SlopReg ;
Begin: ldi mask,0b00000001; маска для работы
ldi Yh,0x00 ; счетчик
ldi Yl,0x00
; Ищем состояние 0
State0:
in SlopReg,PinA
and SlopReg,mask
brne State0
; Задержка
ldi Xh,0x7f
ldi Xl,0xff
Delay1: sbiw Xh:Xl,1
brne delay1
; Еще раз проверяем нолик ли, если нет то все сначало
State1: in SlopReg,PinA
and SlopReg,mask
brne State0
; Ищем состояние 1
State2: in SlopReg,PinA
and SlopReg,mask
breq State2
; Задержка
ldi Xh,0x7f
ldi Xl,0xff
Delay2: sbiw Xh:Xl,1
brne delay2
; Еще раз проверяем единичка ли, если нет то все сначало
State3: in SlopReg,PinA
and SlopReg,mask
breq State0
adiw Yh:Yl,1
;Вывод результата
out PortB,Yl
ldi SlopReg,0b10000000
or SlopReg,Yh
out PortD,SlopReg;out Led8 - Led14
rjmp State0
End:
;======================================================================
В чем может быть проблема?