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

 
 
> Несколько вопросов по модулю АЦП в TMS320F2810
Mokena
сообщение Jun 5 2007, 09:35
Сообщение #1


Участник
*

Группа: Участник
Сообщений: 23
Регистрация: 4-06-07
Пользователь №: 28 174



Помогите разобраться новичку с работой модуля АЦП в микроконтроллере TMS320F2810:

1. Как узнать, что АЦП закончил текущее преобразование, без использования прерываний? Бит 2 (SEQ1 BSY) регистра ADCST почему-то не срабатывает (всегда равен 0).

2. Нужно сделать подряд много преобразований (намного больше 16). Я настроил АЦП на одно преобразование и в цикле запускаю его и сохраняю результаты в памяти. Нужно ли делать сброс Sequencer'а между преобразованиями с помощью установки бита 14 (RST SEQ1) регистра ADCTRL2?

3. На что влияет "Acquisition window size", задаваемый битами 11-8 (ACQ_PS3-ACQ_PS0) регистра ADCTRL1? И какое значение лучше выставлять?
Go to the top of the page
 
+Quote Post
 
Start new topic
Ответов
=GM=
сообщение Jun 5 2007, 12:23
Сообщение #2


Ambidexter
*****

Группа: Свой
Сообщений: 1 589
Регистрация: 22-06-06
Из: Oxford, UK
Пользователь №: 18 282



Цитата(Mokena @ Jun 5 2007, 08:35) *
1. Как узнать, что АЦП закончил текущее преобразование, без использования прерываний? Бит 2 (SEQ1 BSY) регистра ADCST почему-то не срабатывает (всегда равен 0).

Надо установить CONTRUN=1 для непрерывной работы и запустить АЦП с помощью SOCSEQ1=1. Но удобнее проверять по флагу INTSEQ1.
Цитата(Mokena @ Jun 5 2007, 08:35) *
2. Нужно сделать подряд много преобразований (намного больше 16). Я настроил АЦП на одно преобразование и в цикле запускаю его и сохраняю результаты в памяти. Нужно ли делать сброс Sequencer'а между преобразованиями с помощью установки бита 14 (RST SEQ1) регистра ADCTRL2?

В самом начале можно, потом не надо, секвенсер будет крутитсья по кругу, который вы зададите. Можно настроить секвенсер на чтение 16 значений из одного канала, потом читать сразу пачку, времени на обработку больше останется.
Цитата(Mokena @ Jun 5 2007, 08:35) *
3. На что влияет "Acquisition window size", задаваемый битами 11-8 (ACQ_PS3-ACQ_PS0) регистра ADCTRL1? И какое значение лучше выставлять?

Зависит от требуемого количества выборок в единицу времени, 0000 - максимальное время выборки, 12.5 Мвыборок/с. Собственно "Acquisition window size" влияет на частоту выборок и, в меньшей степени, на входной импеданс канала.


--------------------
Делай сразу хорошо, плохо само получится
Go to the top of the page
 
+Quote Post
Mokena
сообщение Jun 6 2007, 17:49
Сообщение #3


Участник
*

Группа: Участник
Сообщений: 23
Регистрация: 4-06-07
Пользователь №: 28 174



Цитата(=GM= @ Jun 5 2007, 16:23) *
Надо установить CONTRUN=1 для непрерывной работы и запустить АЦП с помощью SOCSEQ1=1. Но удобнее проверять по флагу INTSEQ1.
Если не ошибаюсь, перед следующим преобразованием этот флаг (INTSEQ1) нужно сбрасывать вручную, так?

Цитата(=GM= @ Jun 5 2007, 16:23) *
Можно настроить секвенсер на чтение 16 значений из одного канала, потом читать сразу пачку, времени на обработку больше останется.
К сожалению так не получится - процесс, который нужно "схватить", очень быстрый. А в таком варианте получатся задержки: 16_измерений - задержка_на_сохранение_в_память - 16_измерений и т.д. Или существует код более быстрый, чем стандартный цикл + косвенная адресация?
Go to the top of the page
 
+Quote Post
=GM=
сообщение Jun 9 2007, 22:21
Сообщение #4


Ambidexter
*****

Группа: Свой
Сообщений: 1 589
Регистрация: 22-06-06
Из: Oxford, UK
Пользователь №: 18 282



Цитата(Mokena @ Jun 6 2007, 17:49) *
Если не ошибаюсь, перед следующим преобразованием этот флаг (INTSEQ1) нужно сбрасывать вручную, так?

Можно и так, хотя лучше сбрасывать INTSEQ1 сразу после чтения. А можно и обойтись без проверки флага.
Цитата(Mokena @ Jun 6 2007, 17:49) *
К сожалению так не получится - процесс, который нужно "схватить", очень быстрый. А в таком варианте получатся задержки: 16_измерений - задержка_на_сохранение_в_память - 16_измерений и т.д. Или существует код более быстрый, чем стандартный цикл + косвенная адресация?

1) На самом деле не всё так просто. Для 100 МГц на максимальной скорости 12.5Мвыборок/с секвенсер тратит 8 МС на одну выборку, т.е. 8*16=128 МС, а вы можете читать за один МС, т.е. всего 16 МС, значит у вас в запасе 128-16=114 МС (или около того) на каждые 16 выборок.

2) Не знаю, что вы имеете в виду под "стандартный цикл+ косвенная адресация", но одно слово читается из АЦП и сохраняется в ОЗУ за один МС.


--------------------
Делай сразу хорошо, плохо само получится
Go to the top of the page
 
+Quote Post



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

 


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


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