Помощь - Поиск - Пользователи - Календарь
Полная версия этой страницы: LPC2103 и АЦП
Форум разработчиков электроники ELECTRONIX.ru > Микроконтроллеры (MCs) > ARM
XWoo
У меня есть плата, как описано тут: http://electronix.ru/forum/index.php?showt...&hl=lpc2103

Настройки АЦП такие же. Частота процессора = 14,7456 МГц. CLKDIV = 146. Частота АЦП = 100,31 КГц. SEL = 0x1F (AD0,1,2,3,4 - 5 входов). Режим работы - burst.

Вопрс в следующем. В прерывании АЦП из регистра ADGDR я извлекаю номер входа (0,1,2,3,4) и 10-битный код. Этот код далее записывается в массив, зная номер входа. Если предположить, что у меня задействован только один вход АЦП (а не 5), то как мне рассчитать теоретически время одного преобразования? И соответственно, сколько времени займёт преобразование всех 5 входов?

Под временем преобразования я имею ввиду время, через которое АЦП выдаст 10-битный код
(т.е. один отсчёт).

1. Я полагаю, что коль известна частота АЦП, то время преобразования одного входа будет равно 1/100 КГц = 10 мкс (частоту я округлил до 100 КГц). Тогда на 5 входов затратися 50 мкс.

2. Но есть и сомнения. Может быть эти 10 мкс - время на получение одного бита. А их всего 10. Тогда на преобразование одного входа затратится 100 мкс (0,1 мс). А для 5 входов получаем 500 мкс (0,5 мс).

Какой из 2-х моих доводов правильный? А может они оба неправильны? smile.gif

Может быть вопрос надо было поставить так: как часто будет срабатывать прервывание АЦП?
rezident
Цитата(XWoo @ Oct 9 2010, 03:10) *
Настройки АЦП такие же. Частота процессора = 14,7456 МГц. CLKDIV = 146. Частота АЦП = 100,31 КГц.
А PLL не используется?
Цитата(XWoo @ Oct 9 2010, 03:10) *
как мне рассчитать теоретически время одного преобразования? И соответственно, сколько времени займёт преобразование всех 5 входов?
Раз режим BURST, то в зависимости от состояние битов CLKS.
Цитата(XWoo @ Oct 9 2010, 03:10) *
Может быть вопрос надо было поставить так: как часто будет срабатывать прервывание АЦП?
Вопрос неверный. Точнее ответ на него зависит в т.ч. от настроек регистра AD0STAT. Прерывание от АЦП может вообще не сработать, если AD0STAT не проинициализирован как требуется laughing.gif
XWoo
PLL у меня отключён.

Вот теперь мне понятно для чего нужны 3 бита CLKS. smile.gif

У меня CLKS = 000 (11 клоков / 10 бит).
Значит 11 клоков - это 1/100 КГц = 10 мкс * 11 = 0,11 мс. Так?


Т.е. за 0,11 мс АЦП выполняет преобразование одного входа. Верно?
А 5 входов АЦП преобразует за 5,5 мс. Для моей задачи это очень много.
Надо повышать эту частоту.

В мануале сказано, что частота ацп не должна быть больше 4,5 МГЦ.
Я, когда настраивал ацп, поднимал частоту до 2 МГц и выше - ацп не работал:
процессор то ли тормозил, то ли вообще не запускался.
А вот на чатотах 60 КГц, 100 КГц и 1 МГц - он работал без изменений.
Почему такое происходило?
rezident
Цитата(XWoo @ Oct 9 2010, 21:45) *
Значит 11 клоков - это 1/100 КГц = 10 мкс * 11 = 0,11 мс. Так?
Да.
Цитата(XWoo @ Oct 9 2010, 21:45) *
Почему такое происходило?
Потому, что 11/2МГц*14,7456МГц=81. Этого количества тактов видимо слишком мало, чтобы и обслужить прерывание АЦП и выполнять вашу программу. Используйте PLL, чтобы ускорить работу ядра процессора.
XWoo
rezident, спасибо за помощь.
Сегодня-завтра буду править код.
XWoo
rezident, ваши рекомендации помогли.
Ещё раз спасибо.
Для просмотра полной версии этой страницы, пожалуйста, пройдите по ссылке.
Invision Power Board © 2001-2025 Invision Power Services, Inc.