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

 
 
> Глюк компаратора при включенном 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



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

 


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


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