реклама на сайте
подробности

 
 
> Глюк компаратора при включенном ADC, tiny13a
fmdost
сообщение Apr 7 2013, 21:50
Сообщение #1


Местный
***

Группа: Свой
Сообщений: 479
Регистрация: 8-05-07
Из: г. Ставрополь. Северный Кавказ. Россия
Пользователь №: 27 606



На компараторе собран узел детектора перехода через 0. При включенном ADC на выходе компаратора начинают проскакивать "лишние" импульсы с явно выраженной периодичностью. При выключенном ADC, работает без помех.

Где накосячил? Спсб.


CODE
void config_sys(void){

//установить направление
DDRB=((0<<DDB0) | (0<<DDB1) | (1<<DDB2) | (0<<DDB3) | (0<<DDB4) | (0<<DDB5));

//установить подкладку
PORTB=((0<<PB0) | (0<<PB1) | (1<<PB2) | (0<<PB3) | (0<<PB4) | (0<<PB5));

//отключить лишнее IO
DIDR0=((1<<ADC0D) | (0<<ADC1D) | (1<<ADC2D) | (1<<ADC3D) | (1<<AIN0D) | (1<<AIN1D));

//отключить WDT!
__watchdog_reset();
MCUSR=0;
WDTCR=((0<<WDTIE)|(0<<WDP3)|(1<<WDCE)|(1<<WDE)|(0<<WDP2)|(0<<WDP1)|(0<<WDP0)); //16ms
WDTCR=((0<<WDTIE)|(0<<WDP3)|(0<<WDCE)|(0<<WDE)|(0<<WDP2)|(0<<WDP1)|(0<<WDP0)); //16ms

GTCCR= ( (1<<TSM) | (1<<PSR10)); //
TCCR0A= ( (0<<COM0A1) | (0<<COM0A0) | (0<<COM0B1) | (0<<COM0B0) | (1<<WGM01) | (0<<WGM00)); //CTC
TCCR0B= ( (0<<FOC0A) | (0<<FOC0B) | (0<<WGM02) | (1<<CS02) | (0<<CS01) | (1<<CS00)); // 1/1024
TIMSK0= ( (0<<OCIE0B) | (1<<OCIE0A) | (0<<TOIE0)); //

OCR0B=OCR0A=93; //100Гц

ADCSRA= ( (1<<ADEN) | (0<<ADSC) | (0<<ADATE) | (1<<ADIF) | (0<<ADIE) | (1<<ADPS2) | (1<<ADPS1) | (1<<ADPS0) ); //
ADCSRB= ( (0<<ACME) | (0<<ADTS2) | (0<<ADTS1) | (0<<ADTS0) ); //запускать конверсию вручную
#define ADJS_IN ((0<<REFS0) | (0<<ADLAR) | (1<<MUX1) | (1<<MUX0)) //температуро
ADMUX = ADJS_IN ;
ACSR = ( (0<<ACD) | (0<<ACBG) | (0<<ACO) | (1<<ACI) | (1<<ACIE) | (0<<ACIS1) | (0<<ACIS0) ); //запускать конверсию от TC0compare

GTCCR= ( (1<<TSM) | (0<<PSR10)); // Фперёд!

MCUCR= _sleep_type_idle();

CLKPR =(1<<CLKPCE);
CLKPR =((0<<CLKPS0)|(0<<CLKPS1)|(0<<CLKPS2)|(0<<CLKPS3)|(0<<CLKPCE));//1
}

void main(void){

config_sys();

while(1){

if ( ! (ADCSRA & (1<<ADSC)) ){
data_TEMPRADJS =ADC;
}
}
}

#pragma vector=ANA_COMP_vect
__interrupt void anarout(void){ // !!!!!!!!!!!!!!! для прповерки вот тут включает OUT

if (dbg ++ & 0x01)
TRIAC_ON(); // тут включает OUT
else
TRIAC_OFF();

}

Эскизы прикрепленных изображений
Прикрепленное изображение
 
Go to the top of the page
 
+Quote Post
 
Start new topic
Ответов (1 - 4)
Сергей Борщ
сообщение Apr 8 2013, 08:29
Сообщение #2


Гуру
******

Группа: Модераторы
Сообщений: 8 455
Регистрация: 15-05-06
Из: Рига, Латвия
Пользователь №: 17 095



А не может по окончании преобразования АЦП по какой-то причине происходить сброс? Например, у вас разрешено прерывание АЦП а обработчика не видно и в программе вы проверяете флаг преобразования - обычно это взаимоисключающие действия... Попробуйте при старте выводить на свободную ногу импульс сразу после инициализации.


--------------------
На любой вопрос даю любой ответ
"Write code that is guaranteed to work, not code that doesn’t seem to break" (C++ FAQ)
Go to the top of the page
 
+Quote Post
fmdost
сообщение Apr 8 2013, 12:00
Сообщение #3


Местный
***

Группа: Свой
Сообщений: 479
Регистрация: 8-05-07
Из: г. Ставрополь. Северный Кавказ. Россия
Пользователь №: 27 606



Это не сброс. Импульсы помехи очень короткие, а в векторах стоят reti. Помеха появляется после записи в ADMUX, даже при выключенном ADC!
Go to the top of the page
 
+Quote Post
domowoj
сообщение Apr 9 2013, 15:21
Сообщение #4


Профессионал
*****

Группа: Участник
Сообщений: 1 548
Регистрация: 20-12-07
Из: г.Новосибирск
Пользователь №: 33 486



А чем вам не нравятся рекомендации Атмел - AVR182?


--------------------
И на камнях растут деревья!
Go to the top of the page
 
+Quote Post
rx3apf
сообщение Apr 11 2013, 09:55
Сообщение #5


Гуру
******

Группа: Участник
Сообщений: 3 834
Регистрация: 14-06-06
Из: Moscow, Russia
Пользователь №: 18 047



Лениво разбираться с инициализацией, но ... А вход ADC и компаратора настроены на одну ногу ? Тогда ничего удивительного, схема выборки-хранения просто обязана доавть помеху.
Go to the top of the page
 
+Quote Post

Reply to this topicStart new topic
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0

 


RSS Текстовая версия Сейчас: 19th July 2025 - 18:24
Рейтинг@Mail.ru


Страница сгенерированна за 0.01396 секунд с 7
ELECTRONIX ©2004-2016