Помогите, пожалуйста, разобраться, вроде все сделал, а ничего не выходит.
На вход “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 ;==================================
|