реклама на сайте
подробности

 
 
> Помогите с АЦП, ацп работает только один цикл
Mad-man
сообщение Apr 1 2010, 12:28
Сообщение #1


Частый гость
**

Группа: Участник
Сообщений: 91
Регистрация: 5-11-06
Пользователь №: 21 995



запарился уже с ацп
работает только первый цикл (сразу после включения питания) - результат в ADCL - правильный
при повторных преобразованиях (после первого цикла) бит ADSC сбрасывается как и при завершении конвертации (что и ожидаемо) но в в регистре ADCL - стабильно первый результат преобразования

может помимо бита ADSC нужно еще что-то передергивать для начала конвертации???




void ADC_StartConversion() { ADCSRA = (1<<ADEN) | (1<<ADSC) | (0<<ADATE) | (0<<ADIF) | (0<<ADIE) | (1<<ADPS2) | (1<<ADPS1) | (1<<ADPS0); }

inline char ADC_CheckDone() { return !(ADCSRA & (1<<ADSC)); }

void Init_ADC()
{
ADMUX = (1<<REFS1) | (1<<REFS0) | (0<<ADLAR) | (0<<MUX4) | (0<<MUX3) | (0<<MUX2) | (0<<MUX1) | (0<<MUX0);
ADCSRA = (1<<ADEN) | (0<<ADATE) | (0<<ADIF) | (0<<ADIE) | (1<<ADPS2) | (1<<ADPS1) | (1<<ADPS0);
SFIOR=0x00;
}




int main()
{
PORTA = 0b00000000;
DDRA = 0b00000000;

Send_UART("\r\n\r\n\r\n");
Send_UART("New proba\r\n");

while (1)
{
ADC_StartConversion();

_delay_ms(100);

if (ADC_CheckDone())
{
ADC_val = ADCL;
Print_ADC();
Send_UART("\r\n");
}
else
{
Send_UART("Timeout\r\n");
}


_delay_ms(5000);
}
}

Сообщение отредактировал Mad-man - Apr 1 2010, 12:48
Go to the top of the page
 
+Quote Post



Reply to this topicStart new topic
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0

 


RSS Текстовая версия Сейчас: 18th July 2025 - 12:05
Рейтинг@Mail.ru


Страница сгенерированна за 0.0135 секунд с 7
ELECTRONIX ©2004-2016