Здр, помогите советом, не срабатывает компарат при переходе напряжений, при чем постоянно выдает ноль...
Код:
RESET:
;(-|-|-|-|DDB3|DDB2|DDB1|DDB0)
outi DDRB,0b00000100
cbi PortB,2 ; подтяжка "0"
;(-|-|-|-|PUEB3|PUEB2|PUEB1|PUEB0)
outi PUEB,0b00001000 ; настройка pull-up
;(-|-|-|-|PCINT3|PCINT2|PCINT1|PCINT0)
;outi PCMSK,0b00000111
;(-|-|-|-|-|-|-|PCIE0)
;outi PCICR,0b00000001
;(-|-|-|-|-|-|-|INT0)
;outi EIMSK,0b00000000
;(-|-|-|-|ADC3D|ADC2D|ADC1D|ADC0D)
outi DIDR0,0b00001100
;(-|-|-|-|-|-|MUX1|MUX0)
;outi ADMUX,0b00000000
;(-|-|-|-|-|ADTS2|ADTS1|ADTS0)
;outi ADCSRB,0b00000000
;(ADEN|ADSC|ADATE|ADIF|ADIE|ADPS2|ADPS1|ADPS0)
;outi ADCSRA,0b00000000
;(ACD|-|ACO|ACI|ACIE|ACIC|ACIS1|ACIS0)
;outi ACSR,0b00001000
sbi ACSR,ACD ; Отключение компоратора
;(-|-|OCIE0|-|-|OCIE0B|OCIE0A|TOIE0)
outi TIMSK0,0b00000001
;(FOC0A|FOC0B|-|-|-|-|-|-)
;outi TCCR0C,0b00000000
;(ICNC0|ICES0|-|WGM03|WGM02|CS02|CS01|CS01)
outi TCCR0B,0b00000010 ; CK/8,16bit
;(COM0A1|COM0A0|COM0B1|COM0B0|-|-|WGM01|WGM00)
;outi TCCR0A,0b00000000
;outi CCP,0xD8 ; разблокировка защищенного регистра WDTCSR
;(WDIF|WDIE|WDP3|-|WDE|WDP2|WDP1|WDP0)
;outi WDTCSR,0b01000000
;(-|-|-|-|-|-|PRADC|PRTIM0)
outi PRR,0b00000010
;outi CCP,0xD8 ; разблокировка защищенного регистра CLKPSR
;(-|-|-|-|CLKPS3|CLKPS2|CLKPS1|CLKPS0)
;outi CLKPSR,0b00000011 ; 8(default),делитель частоты МК
;outi CCP,0xD8 ; разблокировка защищенного регистра CLKMSR
;(-|-|-|-|-|-|CLKMS1|CLKMS0)
;outi CLKMSR,0b00000000 ; 8MHz(default),выбор источника частоты МК
outi SPH,high(RAMEND)
outi SPL,low(RAMEND)
;Начальные условия работы
;----------
start:
clr Temp2
ldi Temp3,1 ; корректировка работы компаратора при первом вкл
sei
;Основное тело программы
;----------
cycle:;бесконечный цикл
nop
rjmp cycle
;Вектор прерывания TIM0_OVF
;----------
TIM0_OVF:
cbi ACSR,ACD ; вкл компаратора
nop ; задержка на синхронизацию
nop
in Temp0,ACSR
sbrs Temp0,5 ; если бит в регистре установлен, пропускаем строку
rjmp status_ON
;in Temp0,ACSR & 32 ; получение состояния регистра + применение маски ИЛИ
;cpi Temp0,32
;brne status_ON
cpi Temp2,1 ; проверка на наличие перехода "вкл-выкл"
brne status_EXIT
dec Temp1
cpi Temp1,0 ; сравнение счетчика задержки
brne status_OUT
cbi PortB,2 ; выкл LED
clr Temp2 ; сброс проверки на наличие перехода "вкл-выкл"
rjmp status_OUT
status_EXIT:
clr Temp3 ; выкл корректировки компаратора
status_OUT:
sbi ACSR,ACD ; откл компаратора
reti
status_ON:
cpi Temp3,0 ; корректировка работы компаратора
brne status_OUT
sbi PortB,2 ; вкл LED
ldi Temp1,20 ; установка времени задержки
ldi Temp2,1 ; вкл задержки при переходе "вкл-выкл"
rjmp status_OUT
В протеусе, на attiny85, работает, а в железе пришлось делать корректировку, т.к. при первом включение компаратор постоянно сидит в нуле и только потом переходит в рабочий режим...
Всех с Праздниками, Спасибо.