Программирование микроконтроллеров AVR, PIC, ARM. Разработка и изготовление печатных плат для модулей.
Ruslan » 03 июн 2008, 09:45
У меня почему-то не всегда правильно осуществляется конвертация АЦП, если делатьее по нескольким ногам подряд. Приходится повторять или дублировать вызов функции. Внизу кусок кода - посоветуйте, если что не так. Проц - Мега8L.
Код: Выделить всё • Развернуть //Инициализация: ADCSR |= (( 1 << ADEN ) | ( 1 << ADSC ) | ( 1 << ADPS2 ) | ( 1 << ADPS1 )); while ( ADCSR & ( 1 << ADSC ) ); /* wait for complete conversion */ uint16_t ADCIN( uint8_t channel ) { ADMUX = ( 1 << ADLAR ) | ( 1 << REFS0 ) | channel; ADCSRA = ( 1 << ADEN ) | ( 1 << ADSC ); DELAY_US( 64 ); // 64 microseconds delay while ( ADCSR & ( 1 << ADSC ) ); return ADCH; }
Ruslan
Сообщения: 603Зарегистрирован: 03 июн 2007, 22:32Откуда: Москва
ФИО: Руслан
avr123.nm.ru » 03 июн 2008, 10:00
После переключения входа АЦП рекомендую сделать холостое АЦП.
avr123.nm.ru
отсылающий читать курс
Сообщения: 14195Зарегистрирован: 06 ноя 2005, 04:18Откуда: МоскваПредупреждения: -8
Ruslan » 03 июн 2008, 10:07
А сколько времени я на этом потеряю? Вопрос важен в применении к датчикам линии в сумо.
Ruslan
Сообщения: 603Зарегистрирован: 03 июн 2007, 22:32Откуда: Москва
ФИО: Руслан
avr123.nm.ru » 03 июн 2008, 10:22
RiO писал(а): А сколько времени я на этом потеряю ?
Подумайте !!!
avr123.nm.ru
отсылающий читать курс
Сообщения: 14195Зарегистрирован: 06 ноя 2005, 04:18Откуда: МоскваПредупреждения: -8
SSG » 03 июн 2008, 12:50
RiO писал(а): А сколько времени я на этом потеряю?
АЦП преобразование выполняется 13 тактов АЦП в нормальном режиме,14 — в дифференциальном режиме и 25 — при первом запуске после включения АЦП (у атмегов
). Вот и считайте.
I live My life!
SSG
Сообщения: 1058Зарегистрирован: 15 янв 2007, 19:23Откуда: Беларусь, Барановичи
прог. языки: С для МК, Delphi для ПК
Вернуться в Микроконтроллеры
Кто сейчас на конференции
Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 11