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

 
 
> Выборка результатов преобразования из SD16MEM0, ФЦП SD16_A
chainikru
сообщение May 8 2012, 13:03
Сообщение #1


Участник
*

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



Добрового всем дня. Помогите пожалуйста разобраться с результатами преобразования АЦП.
Как я понимаю результаты преобразования хранятся в регистре SD16MEM0 с периодичностью, равной частоте выборки Fs.
Как использовать эти результаты поотдельности? Я хотел создать массив размером в количество выборок к примеру Result[64] и туда поочередно записывать результаты преобразований:
for (i =0; i < 64; i++)
{
Result[i] = SD16MEM0;
}
Но сделать все это у меня пока не получается. Посоветуйте что нибудь пожалуйста.
p.s я измеряю положительную полуволну для нахождения действующего значения переменного напряжения при фазофом регулировании. Я должен измерять как минимум 40 раз за 20мС
но я измеряю 64 ради надежности т.е частота выборки Fs=64 ? по формуле Fs= Fm/OSR , где
Fm -частота модулятора, а OSR-коэфициэнт передискретизации. Правильную ли формулу я собирабсь использовать? и чему равен и как устанавливать Fm ?

Сообщение отредактировал chainikru - May 8 2012, 13:04
Go to the top of the page
 
+Quote Post
 
Start new topic
Ответов
rezident
сообщение May 9 2012, 18:33
Сообщение #2


Гуру
******

Группа: Свой
Сообщений: 10 920
Регистрация: 5-04-05
Пользователь №: 3 882



Дык в примерах есть обработчик прерывания в котором считывается результат преобразования АЦП. Или вы не хотите использовать прерывания? Ваш код не работает правильно потому, что у вас в цикле нет проверки готовности результата. Каждое преобразование АЦП занимает некоторое время, поэтому нельзя считывать результат из регистра ADC16MEM0 в любой произвольный момент времени. Нужно дожидаться готовности каждого последующего результата перед его считыванием. Готовность можно определить, анализируя бит SD16IFG в регистре SD16CCTL0. Использование прерывания как раз облегчало бы эту задачу, т.к. (разрешенное) прерывание вызывается сразу же после готовности результата преобразования, без необходимости программного анализа флага готовности.
Go to the top of the page
 
+Quote Post
chainikru
сообщение May 10 2012, 05:41
Сообщение #3


Участник
*

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



Цитата(rezident @ May 9 2012, 22:33) *
Каждое преобразование АЦП занимает некоторое время, поэтому нельзя считывать результат из регистра ADC16MEM0 в любой произвольный момент времени. Нужно дожидаться готовности каждого последующего результата перед его считыванием.

А как тогда измерять переменное напряжение ведь за довольно короткий промежуток времени 20мС необходимо сделать минимум 40 измерений. К томуже в примерах измеряют только постоянный ток. Но если есть какой нибуть полезный пример напишите его пожалуйста.

Сообщение отредактировал chainikru - May 10 2012, 05:44
Go to the top of the page
 
+Quote Post
rezident
сообщение May 11 2012, 19:22
Сообщение #4


Гуру
******

Группа: Свой
Сообщений: 10 920
Регистрация: 5-04-05
Пользователь №: 3 882



Цитата(chainikru @ May 10 2012, 10:41) *
А как тогда измерять переменное напряжение ведь за довольно короткий промежуток времени 20мС необходимо сделать минимум 40 измерений.
Похоже мы с вами на разных языках разговариваем sad.gif Может вы уже наконец почитаете документацию? Для вас даже руководство (User's Guide) на русский язык перевели. Только еще раз предупреждаю, что в этом переводе имеются ошибки! Читайте его для лишь ознакомления с общими принципами функционирования периферийных модулей. В справочных целях (для программирования) обязательно используйте оригинальное (англоязычное) руководство (MSP430x2xx Family User's Guide (Rev. I) - slau144i.pdf).
Go to the top of the page
 
+Quote Post



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

 


RSS Текстовая версия Сейчас: 31st July 2025 - 14:24
Рейтинг@Mail.ru


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