Помогите, пожалуйста, разобраться, вроде все сделал, а ничего не выходит.
На вход “AIN1” подается сигнал со схемы формирователя либо лог.”0”, либо лог.”1” без дребезга и с хорошими фронтами. На “AIN0” пытался подать опору от внутреннего источника, потом от внешнего делителя 2.5v, но в прерывание не хочет входить программа ни в отладчике AVRStudio 4.07, не в жизни на макете.
Для активизации компаратора в SFIOR (ACME<-0),
в ACSR (ACD<-0, ACBG<-1, ACO<-0, ACI<-0, ACIE<-1, ACIC<-0, ACIS1<-1, ACIS0<-0).
Пытался запустить внутреннюю опору, меняя биты в резисторе ADMUX (REFS1,REFS0). Режим подключения AVCC к AREF (0,1) – работает, опору при (1,1) в 2,56v на ножке AREF я не увидел (Caref=4.7мкф). Делителем поставил внешнюю 2,55v и перевел опору на внешнюю. А компаратор все равно отказывается работать.
Ниже привожу код неработающей программы (перебрал три процессора – эффект стабильный).
.include "m8def.inc"
.CSEG ; Start code segment
;===============================
.ORG 0x0000
rjmp Reset
…
.ORG ACIaddr
rjmp Ain_IRQ
…
;===============================
.ORG 0x0014
…
.include "AnComp.asm"
…
;===============================
Reset:
ldi r16, high(RAMEND) ; Задание адреса начала стека
out SPH, r16
ldi r16, low(RAMEND)
out SPl, r16
sbi DDRC, 5 ;инициализация 5го бита порта "PORC" на передачу
sbi PortC, 5
ldi R16, $3F ;00111111=$3F
out DDRD, R16
out PORTD, R16
RCall Ain_Init ;Инициализация ACD
sei ;Разрешение прерываний
m0:
sbi PortC, 5
….
….
rjmp m0
;********** AnComp.asm *********
.CSEG ; Start code segment
;===============================================================
Ain_Init:
ldi r16, $4A #01001010 => $4A
out ACSR, r16
ldi r16, $00
out SFIOR, r16 ;Выключение мультипл. ACME<-0
out ADMUX, r16 ;Выключение ADC,
ret
;=====================================================================
Ain_IRQ:
cbi PortC, 5
push r16
push r17
push r18
push r19
in r16, SREG
push r16
;------------
pop r16
out SREG, r16
pop r19
pop r18
pop r17
pop r16
reti
;==================================