Jump to content

    
Sign in to follow this  
Darius_

Настройка АЦП

Recommended Posts

Добрый день, дорогие Форумчане!

Пришел к вам с вопросом касательно настройки каналов АЦП. У меня задание читать сразу с 3 каналов и, как понимаю, последовательно. Понимание, как настроить эти каналы у меня есть, но вот как читать их последовательно - с этим большие проблемы. 

Пытался через подпрограммы rcall, что б контроллер перескакивал между ними для чтения, но препод сказал,  что бред полный и нужно как-то по другому. Или же загвостка в том, что у меня еще и счётчики стоят и они как влияют на все это. 

Надеюсь, кто-нибудь сможет подсказать.

P.S. Код пишу на ассемблере.

Share this post


Link to post
Share on other sites
18 minutes ago, Darius_ said:

. . . У меня задание читать сразу с 3 каналов и, как понимаю, последовательно. . . . .

Ваше "последовательно" противоречит "сразу". Если это, конечно, существенно.

 

Share this post


Link to post
Share on other sites
16 минут назад, k155la3 сказал:

Ваше "последовательно" противоречит "сразу". Если это, конечно, существенно.

 

Вообще, нужно вроде как одновременно считывать с 3 каналов, но я столько облазил разных форумов по этому вопросу и везде написано, что если у ацп несколько каналов, то их можно читать только последовательно.

Share this post


Link to post
Share on other sites
23 minutes ago, Darius_ said:

Вообще, нужно вроде как одновременно считывать с 3 каналов, но я столько облазил разных форумов по этому вопросу и везде написано, что если у ацп несколько каналов, то их можно читать только последовательно.

я поэтому и уточняю, насколько принципиально "сразу". В неспециализированных контроллерах один АЦП, одно УВХ и возможно только последовательно оцифровывать входные каналы, переключая АЦП на требуемый канал. Чтобы обеспечить "одновременность", используют на каждом входе УВХ, в вашем случае 3 шт., управляемые одним сигналом. Это аналоговая память для входной величины. Делаем одновременно 3 "фотографии", а затем последовательно-не торопясь, рассматриваем (АЦП). https://en.wikipedia.org/wiki/Sample_and_hold  Эконом-решение, с недостатками.

Share this post


Link to post
Share on other sites

Настраиваем режим измерения в бесконечном цикле, и в прерывании по окончанию измерения переключаем каналы. Как это всё сделать есть в даташите.

Share this post


Link to post
Share on other sites

"Шина AHB"? Раздел про AVR. Промазали вы. )

Но мультиплексоры конечно же нужно переключать. Как это сделать уже написали. Но т.к. ТС студен - видимо как обычно надеется на готовое решение. )

 

Share this post


Link to post
Share on other sites

Как-то так

 

запуск одного преобразования, вначале вызвать для 1-го канала  start_ADC(0);
start_ADC(int channel)
{
  ADMUX = channel&0x07;
  ADCSR|=ADEN|ADSC|ADIE;
}


функция обработки прерывания АЦП
void ih_ADC()
{
 BYTE channel_ADC=reg_ADMUX&0x7;
 uniWORD value;

 value.B.L      = ADCL; // обязательно первым
 value.B.H      = ADCH;
 ValuesADC[channel_ADC]= value.W;
 channel_ADC++;
 if(channel_ADC>=3) channel_ADC=0;
 start_ADC(channel_ADC);
}    

 

Share this post


Link to post
Share on other sites

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.

Guest
Reply to this topic...

×   Pasted as rich text.   Paste as plain text instead

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.

Sign in to follow this