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

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

Уважаемые, вот что-то опять я в ступоре:)

Отправлено Гагарин 04 июня 2008 г. 21:27


Купил новых контроллеров (Mega168v) и что-то никак с процессом аналого-цифрового преобразования у них (ну или у меня)

вот код инициализации и прерывания:


void adc_init(void)
{
ADCSRA = 0x00;
ADMUX = (1<<REFS0)|(1<<MUX3)|(1<<MUX2)|(1<<MUX1);
ACSR = 0x80;
ADCSRB = 0x00;
ADCSRA = (1<<ADEN)|(1<<ADSC)|(1<<ADIE)|(1<<ADPS2)|(1<<ADPS0);
}



#pragma interrupt_handler adc_isr:22
void adc_isr(void)
{
//conversion complete, read value (int) using...
value_ADC=ADCL;
value_ADC|=(int)ADCH << 8;
}




где-то там в глубинах моих практически гениальных изящно-ветвистых алгоритмов, когда мне необходимо узнать напряжение на акумчике, делаю так:


adc_init();
ADCSRA |= (1<<ADSC);
DelayMs(1);
f_bat=(1.1*1024/value_ADC);


как бы своми глазами видел, как все замечательно работало ИМЕННО с этим кодом, а вот с новыми мегами никак:(


В качестве опоры пользуется AVCC, а на вход «заводится» внутренний источник опорного напряжения.
ГДЕ МИМО? ЧТО НЕ ТАК? :)


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

Ответы


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

Сообщение:

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

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

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

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