опора АЦП от встроенного в мк опорника 1.1В
делаю так:
__disable_interrupt();
установки АЦП:
ADMUX = (1<<REFS0)|(1<<REFS1)|(0<<MUX0)|(0<<MUX1)|(0<<MUX2)|(0<<MUX3)|(1<<ADLAR);
ADCSRA =(1<<ADEN)|(1<<ADPS0)|(0<<ADPS1)|(0<<ADPS2); //|(1<<ADATE) //2for1MHz 001
ADCSRB = (0<<ACME)&(0<<ADTS2)&(0<<ADTS1)&(0<<ADTS0);
задержка на устаканивание:
for (unsigned char z=0; z<10; z++){
__delay_cycles(350000/8/10*F_MHZ); //
WATCHDOG_RESET;}
SETBIT(DDRB, 6); // для отладки ножкой буду дрыгать
SETBIT (ADCSRA, _ADC_Start); // запускаю АЦП
ADC_CONTROL_auto(); // Жду результата
//
unsigned char ADC_CONTROL_auto(void)
{
SETBIT(PORTB, 6); // Çàïóñê ÀÖ ïðåîáðàçîâàíèÿ;
while( !TSTBIT(ADCSRA, _ADC_Flag)); // Îæèäàíèå ôëàãà ïðåðûâàíèÿ - îêîí÷àíèÿ ïðåîáðàçîâàíèÿ;
CLRBIT(PORTB, 6);
return ADCH; // ×òåíèå ðåçóëüòàòà ïðåîáðàçîâàíèÿ;
}
//
// И делаю выборку значеий
for (char j = 0; j <_NUMB_OF_MEG; j++)
{
res_of_meg[j] = ADC_CONTROL_auto(); // Ìàññèâ èçìåðåííîãî çíà÷åíèÿ êàëèáðîâêè //
}
выключаю АЦП
ADCSRA = 0<<ADEN;
переделывал на одиночные режим работы - все ок. сигнал меняю - отчеты идут нормальные, а так FF только
есть errata но она при вкл. компоратора (я его использую в др. части проги), а я перед каждым использованием АЦП конфигурю АЦП.
что у меня с "лыжами"? почему не едут?
