Программирование микроконтроллеров 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
- Откуда: Москва
-
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
- Откуда: Москва
-
SSG » 03 июн 2008, 12:50
RiO писал(а):А сколько времени я на этом потеряю?
АЦП преобразование выполняется 13 тактов АЦП в нормальном режиме,14 — в дифференциальном режиме и 25 — при первом запуске после включения АЦП (у атмегов
). Вот и считайте.
I live My life!
-
SSG
-
- Сообщения: 1058
- Зарегистрирован: 15 янв 2007, 19:23
- Откуда: Беларусь, Барановичи
- прог. языки: С для МК, Delphi для ПК
Вернуться в Микроконтроллеры
Кто сейчас на конференции
Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 11