Помощь - Поиск - Пользователи - Календарь
Полная версия этой страницы: Помогите запустить компаратор у ATMega8
Форум разработчиков электроники ELECTRONIX.ru > Микроконтроллеры (MCs) > AVR
IEC
Помогите, пожалуйста, разобраться, вроде все сделал, а ничего не выходит.

На вход “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
;==================================
GDI
А на AVCC напряжение подано? Напрямую от VCC или через фильтр...
Отсутствие внутреннего AREF настораживает как то...
IEC
Цитата(GDI @ May 4 2007, 16:31) *
А на AVCC напряжение подано? Напрямую от VCC или через фильтр...
Отсутствие внутреннего AREF настораживает как то...


Да в том и дело, что настораживает. По Vcc и AVcc стоят танталы по 10мк и блок. керамика по 0.1, правда индуктивных фильтров нет. Но дело в том, что была у меня еще схема перед этим с Mega8 где между ветками питания еще и дроссель был но проблему я так тогда и не решил, тогда ее я обошел. Но, столкнувшись вновь мне, стало это уже интересно о первопричине ее возникновения.

Мне приходилось немного возится с ATTiny15, там все как часики, а здесь я что-то не догоняю ....
DS
В Мегах был до некоторого времени глюк, связанный с блокировкой прерываний АЦП и компаратора разрешенным и обслуженным прерыванием UDRE. После обслуживания оно не вызывало нового прерывания (сейчас вызывает непрерывное прерывание, если не запретить), а блокировала часть других прерываний.
IEC
У меня обмен по UART активизирован, но прирыванием по UDRE я не пользуюсь и не активизирую ... мне хватает RXCIE и TXCIE .
DS
Компаратор работает не от опоры, а от внутреннего bandgap. Поэтому, если AVCC подано, остальное не влияет. Попробуйте в циклу переносить ACO на какую-либо ногу и посмотрите, рабоатет ли сам компаратор. Если есть соменеия - переключите с внутренней опоры на AIN0 и тупа подайте 1.5 вольта.
Внутренний bandgap примерно дает 1.23 В.
IEC
Дело в том, что после того как я не запустил внутринюю опору (а я думал, что она около 2.5в), я поставил делитель на вход AIN0 (около 2.5в) и переконфигурил ноги, и всеравно не помогло...
Преравния от ACD не наблюдалось (на вход AIN1 подается лог. "0" или лог."1").
DS
Убедидесь сначала, что компаратор работеает. До разрешения прерываний по состоянию бита ACO переключайте какую-нибудь ногу Меги в бесконечном цикле, чтобы понять срабатывает ли компаратор. Если срабатывает, можно будет уже глядеть на прерывания.
jeka7
AVRStudio не поддерживает симуляцию компаратора,сам с этим столкнулся.
Для просмотра полной версии этой страницы, пожалуйста, пройдите по ссылке.
Invision Power Board © 2001-2025 Invision Power Services, Inc.