Телесистемы
 Разработка, производство и продажа радиоэлектронной аппаратуры
На главную   | Карта сайта | Пишите нам | В избранное
Требуется программист в Зеленограде
- обработка данных с датчиков; ColdFire; 40 тыс.
e-mail:jobsmp@pochta.ru

Телесистемы | Электроника | Конференция «Микроконтроллеры и их применение»

Вы вчера обещали мне помочь с ADC у Меги88, так вот "прыгают" полученные значения ёли-пали:(

Отправлено Двоешник (193.200.150.152) 23 марта 2010, г. 18:13


align=Top
Разочек в секунду на 1 сотку. Вот код и плата:

...
void ADC_Init(void) {
ADMUX = (1<<REFS0);
ADCSRB = 0x00;
ADCSRA = (1<<ADPS2)|(1<<ADPS0);
}
...
float ADC_Measured_Voltage(unsigned char Channel) {

float Measured_U=0;
unsigned int temp_ADC=0;
unsigned char i=0;

switch (Channel) { /*Переключалка каналов*/
case 0:
ADMUX &= ~(1<<MUX0);
break;
case 1:
ADMUX |= (1<<MUX0);
break;
}

ADCSRA |= (1<<ADEN); /*Разрешаем работу ADC */

for (i=0;i<250;i++) {
ADCSRA |= (1<<ADSC);
while((ADCSRA&(1<<ADSC))!=0);
temp_ADC=ADC;
Measured_U += (temp_ADC/1024.0)*5.0 ;
}


ADCSRA &= ~(1<<ADEN); /*Запрещаем работу ADC*/

return (Measured_U/250);
}

...
main {
...
while(1) {
printf("\r");
printf("U = ");
printf("%.2f", ADC_Measured_Voltage(0)*4.62);
printf("(V)\n");

printf("A = ");
printf("%.2f", ADC_Measured_Voltage(1)*4.03);
printf("(A)");

Delay_mSeconds(250);
}
...
}


Опору я выбрал AVCC с кондюком на АREF, но ниче не цеплял на вывод AREF, и вообще я к нему 5 вольт подвел, когда плату разводил, может из-за этого?
Спс! :)
Картинка: http://img689.imageshack.us/img689/8806/555xd.jpg


Составить ответ | Вернуться на конференцию

Ответы


Отправка ответа
Имя*: 
Пароль: 
E-mail: 
Тема*:

Сообщение:

Ссылка на URL: 
URL изображения: 

если вы незарегистрированный на форуме пользователь, то
для успешного добавления сообщения заполните поле, как указано ниже:
умножьте 3 на единицу:

Перейти к списку ответов | Конференция | Раздел "Электроника" | Главная страница | Карта сайта

Rambler's Top100 Рейтинг@Mail.ru
 
Web telesys.ru