Разработка, производство и продажа радиоэлектронной аппаратуры
|
Требуется программист в Зеленограде - обработка данных с датчиков; ColdFire; 40 тыс.
e-mail: jobsmp@pochta.ru
|
Вопрос по АЦП у меги16 , подскажите плз когда входные каналы переключаю , какая должна быть задержка после установки битов MUX
Отправлено
smartleds 04 июня 2008 г. 20:06
например,
есть процедура в зависимости от переданного ей значения считывает сигнал на АЦП с нужного входа
если "0" то с входа ADC0, если "1" то с входа ADC1
вот эта процедура
void read_adc (unsigned char number_in)
{
unsigned char a;
if(number_in==0){
clearbit(ADMUX,MUX0);
}
if(number_in==1)
{
setbit(ADMUX,MUX0);
}
delay16(10); ЗАДЕРЖКА БЕЗ нее неправильно работает !!!!!!!!!!!!!
setbit(ADCSRA,ADSC);// Start Conversion
while (checkbit(ADCSRA,ADSC)>0) a=1;
lowbyte=ADCL;
highbyte=ADCH;
valueadc=highbyte*256+lowbyte;
}
В процедуре при помощи битов MUX3..0 конфигурирую нужный вход с которого буду считывать сигнал
после конфигурирования если не ставить задержку неправильно выдает результат, а с задержкой все нормально ПОЧЕМУ?
вот как конфигурирую АЦП
//====================- Analog to digital Converter -==============
clearbit(DDRA,PA0);//input ADC0
clearbit(DDRA,PA1);//input ADC1
setbit(ADCSRA,ADEN);// ADC Enable
setbit(ADMUX,REFS0);
clearbit(ADMUX,REFS1);
clearbit(ADCSRA,ADFR);// single converting
clearbit(ADCSRA,ADPS0);
clearbit(ADCSRA,ADPS1);
clearbit(ADCSRA,ADPS2);// Division 16
clearbit(ADMUX,MUX0);
clearbit(ADMUX,MUX1);
clearbit(ADMUX,MUX2);
clearbit(ADMUX,MUX3); // pin input analog signal ADC0
clearbit(ADMUX,MUX4);
Составить ответ | Вернуться на конференцию
Ответы