Подскажите пожалуйста! В Jtag программа останавливается на этом коде
unsigned int adc_rezult(unsigned char kanal){ unsigned char i; unsigned int rez=0; ADMUX=(ADMUX&(~0x1F))|kanal; for( i=0 ; i<8 ; i++){ ADCSRA|=BIT(ADSC); while ( !(ADCSRA & BIT(ADIF)) );// <- здесь rez+=ADC; } return rez/8; } Причем не всегда. Может работать несколько минут. Мк - mega16 частота 16мег. АЦП настроен так: ADMUX=BIT(REFS1)|BIT(REFS0);//Internal 2.56V Voltage Reference with external capacitor at AREF pin ADCSRA=BIT(ADEN)|BIT(ADPS2)|BIT(ADPS1)|BIT(ADPS0);
Ставил внутренний RC ген. На 8 мег. Работает без проблем. Но хотелось частоту повыше в устройстве есть dc/dc преобразователь. Подскажите, это из за частоты, или где-то все таки ошибся?
Сильных помех вроде нет, если измерять постоянную велечину то результат всегда одинаков. Еще вопрос, может быть отладка останавливается при возникновении прерывания ADC?
Сообщение отредактировал _Diman_ - Sep 20 2006, 20:25
|