Помощь - Поиск - Пользователи - Календарь
Полная версия этой страницы: Выборка результатов преобразования из SD16MEM0
Форум разработчиков электроники ELECTRONIX.ru > Микроконтроллеры (MCs) > MSP430
chainikru
Добрового всем дня. Помогите пожалуйста разобраться с результатами преобразования АЦП.
Как я понимаю результаты преобразования хранятся в регистре 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 ?
rezident
У производителя есть примеры (Code Examples), в т.ч. и с использованием модуля SD16_A. Скачайте, например, Code Examples for MSP430F42x0, MSP430FG42x0 или для любого другого кристалла, который имеет в составе означенный модуль SD16_A.
О настройке модуля и выборе оптимальной частоты нужно читать в User's Guide и Application Notes. Но поскольку вы изобретаете настолько секретный прибор, что не вправе даже намекнуть на тип конкретного кристалла, то и я не могу вам дать прямую ссылку на страничку этого продукта. Поэтому поищите сами по сайту TI.
chainikru
Цитата(rezident @ May 8 2012, 22:42) *
Но поскольку вы изобретаете настолько секретный прибор, что не вправе даже намекнуть на тип конкретного кристалла, то и я не могу вам дать прямую ссылку на страничку этого продукта. Поэтому поищите сами по сайту TI.

ни о какой секретности реч не идет. эта программа нужна для фазового регулятора мощности с цифровой индикацией. которуя я делаю на MSP430F2013
на вход ацп подается переменное напряжение которое нужно измерить, а для этого соответственно надо измерять соответственно с определенным интервалом, потом используя полученные значения получить ответ в виде действующего значения и вывести на экран. Насчет Code Examples я их скачал, но покра немере в том что я скачал для SD_16 было 3 примера - 1 для термодатчика и еще два для постоянного тока
rezident
Тогда не совсем ясно: у вас проблема в использовании SD16_A или с самим алгоритмом работы?
Чисто умозрительно считаю, что для озвученных вами функций кристалл выбран неудачно. Мниться мне, что вам не хватит размера Flash при реализации всей функциональности. Особенно, если предполагается какой-либо минимальный UI (User Interface), т.е. взаимодействие с пользователем (ввод/изменение параметров, смена режимов работы и/или индикации).
chainikru
Цитата(rezident @ May 8 2012, 23:18) *
Тогда не совсем ясно: у вас проблема в использовании SD16_A или с самим алгоритмом работы?

Скорее с использованием SD16_A т.к. я никак не могу написать код использующий несколько результатов хранящихся в SD16MEM0
rezident
Дык в примерах есть обработчик прерывания в котором считывается результат преобразования АЦП. Или вы не хотите использовать прерывания? Ваш код не работает правильно потому, что у вас в цикле нет проверки готовности результата. Каждое преобразование АЦП занимает некоторое время, поэтому нельзя считывать результат из регистра ADC16MEM0 в любой произвольный момент времени. Нужно дожидаться готовности каждого последующего результата перед его считыванием. Готовность можно определить, анализируя бит SD16IFG в регистре SD16CCTL0. Использование прерывания как раз облегчало бы эту задачу, т.к. (разрешенное) прерывание вызывается сразу же после готовности результата преобразования, без необходимости программного анализа флага готовности.
chainikru
Цитата(rezident @ May 9 2012, 22:33) *
Каждое преобразование АЦП занимает некоторое время, поэтому нельзя считывать результат из регистра ADC16MEM0 в любой произвольный момент времени. Нужно дожидаться готовности каждого последующего результата перед его считыванием.

А как тогда измерять переменное напряжение ведь за довольно короткий промежуток времени 20мС необходимо сделать минимум 40 измерений. К томуже в примерах измеряют только постоянный ток. Но если есть какой нибуть полезный пример напишите его пожалуйста.
Psych
А точность в 16 бит наобум взята??
chainikru
Цитата(Psych @ May 10 2012, 13:54) *
А точность в 16 бит наобум взята??

В смысле 16 битный АЦП?
если так то потомучто в MSP430f2013 который у меня есть именно 16 битное АЦП.
chainikru
Цитата(Psych @ May 10 2012, 13:54) *
А точность в 16 бит наобум взята??

В смысле 16 битный АЦП?
если так то потомучто в MSP430f2013 который у меня есть именно 16 битное АЦП.Да и возможнестей у него на мой взгляд побольше чем у 12 или 10 битного
Psych
Ну хорошо. Частота дексритизации будет отношение тактовой частоты SD16 к OSR. Тактовая макс 1 Мгц и то надо чтобы сигнал был буферезирован (в MSP430F2013 буфера нету). На 40 измерений необходимо преобразование с длительностью не более 500 мкс. OSR не может быть больше 256 в этом случае. Ну а выше вам сказали: сразу считывать результат после запуска нельзя.
rezident
Цитата(chainikru @ May 10 2012, 10:41) *
А как тогда измерять переменное напряжение ведь за довольно короткий промежуток времени 20мС необходимо сделать минимум 40 измерений.
Похоже мы с вами на разных языках разговариваем sad.gif Может вы уже наконец почитаете документацию? Для вас даже руководство (User's Guide) на русский язык перевели. Только еще раз предупреждаю, что в этом переводе имеются ошибки! Читайте его для лишь ознакомления с общими принципами функционирования периферийных модулей. В справочных целях (для программирования) обязательно используйте оригинальное (англоязычное) руководство (MSP430x2xx Family User's Guide (Rev. I) - slau144i.pdf).
Для просмотра полной версии этой страницы, пожалуйста, пройдите по ссылке.
Invision Power Board © 2001-2025 Invision Power Services, Inc.