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

 
 
> LPC2138: АЦП в режиме прерываний.
e-not
сообщение Feb 25 2006, 00:06
Сообщение #1





Группа: Новичок
Сообщений: 8
Регистрация: 29-10-05
Пользователь №: 10 252



Если в функции обработки прерывания по завершению преобразования АЦП0 я после чтения результата вставлю запуск
очередного преобразования (AD0CR_bit.START = 1), то контроллер виснет. Но если в функции обработки прерывания
я устанавливаю флаг завершения преобразования, а следующее преобразование запускаю в main, то все работает.

// так работает
void ADC0Init()
{
PINSEL0_bit.P0_5 = 0x03;
AD0CR_bit.SEL = 0x80;
AD0CR_bit.CLKDIV = 5;
AD0CR_bit.BURST = 0;
AD0CR_bit.CLKS = 0;
AD0CR_bit.PDN = 1;
AD0CR_bit.START = 0;
}

void ADC0_int()
{
AdcResult = AD0DR_bit.VVDDA; //AdcResult и AdcReady - глобальные
AdcReady = 1;
}

void main()
{
AD0CR_bit.START = 1;
while (1)
{
if (AdcReady )
{
AdcReady = 0;
AD0CR_bit.START = 1;
}
}
}

// так виснет
void ADC0_int()
{
AdcResult = AD0DR_bit.VVDDA;
AD0CR_bit.START = 1;
}

void main()
{
AD0CR_bit.START = 1;
while (1)
{
}
}
Может, кто подскажет?
Go to the top of the page
 
+Quote Post
 
Start new topic
Ответов
zltigo
сообщение Feb 25 2006, 13:42
Сообщение #2


Гуру
******

Группа: Свой
Сообщений: 13 372
Регистрация: 27-11-04
Из: Riga, Latvia
Пользователь №: 1 244



Цитата(e-not @ Feb 25 2006, 02:06) *
AD0CR_bit.CLKDIV = 5;

Для такой частоты тактировки ADC у Вас просто захлебывается контроллер - за 66 тактов
он даже из обработчика перывания (если у Вас после START и возврата в обертку еще команды есть, то наверняка) может не успеть выйти. При тактировки "разумными" частотами проблем не будет.
Естественно, что и для "рабочего" варианта Вы не получите полного потока отсчетов - они
просто массово теряются. Подумайте над необходимой Вам частотой отсчетов.
Вообще в START из обработчика абсолютно ничего противоестественного нет. Хотя может Вам просто BURST mode нужен?


--------------------
Feci, quod potui, faciant meliora potentes
Go to the top of the page
 
+Quote Post
TanT
сообщение Mar 27 2009, 12:57
Сообщение #3


Участник
*

Группа: Участник
Сообщений: 61
Регистрация: 22-11-05
Из: Россия->Омск
Пользователь №: 11 210



В LPC2378 может быть выбран только один канал АЦП или данные можно получать с нескольких каналов? Мне одновременно требуется обрабатывать два канала АЦП, крутил, вертел и ничего - тока по одному получается. Прерывание может быть от любого канала, но в этот момент хотелось бы принять данные с обоих каналов. Реально такое осуществить? Как?


--------------------
Если вы не можете объяснить что-то шестилетнему ребенку, значит, вы сами этого не понимаете.
Альберт Эйнштейн
Go to the top of the page
 
+Quote Post
etoja
сообщение Mar 27 2009, 13:11
Сообщение #4


Профессионал
*****

Группа: Свой
Сообщений: 1 121
Регистрация: 14-01-05
Из: Москва
Пользователь №: 1 952



Цитата(TanT @ Mar 27 2009, 15:57) *
В LPC2378 может быть выбран только один канал АЦП или данные можно получать с нескольких каналов? Мне одновременно требуется обрабатывать два канала АЦП, крутил, вертел и ничего - тока по одному получается. Прерывание может быть от любого канала, но в этот момент хотелось бы принять данные с обоих каналов. Реально такое осуществить? Как?


Изначально вопрос был о LPC2138. В нём можно запускать синхронно два АЦП. Проверено на частотах квантования до 450КГц.
При этом устанавливал PCLK = CCLK, то есть частота периферии равна частоте ядра. Внуртенняя частота АЦП должна быть не выше 4.5МГц (требование даташита).
Go to the top of the page
 
+Quote Post
TanT
сообщение Mar 27 2009, 13:26
Сообщение #5


Участник
*

Группа: Участник
Сообщений: 61
Регистрация: 22-11-05
Из: Россия->Омск
Пользователь №: 11 210



Цитата(etoja @ Mar 27 2009, 16:11) *
Изначально вопрос был о LPC2138. В нём можно запускать синхронно два АЦП. Проверено на частотах квантования до 450КГц.
При этом устанавливал PCLK = CCLK, то есть частота периферии равна частоте ядра. Внуртенняя частота АЦП должна быть не выше 4.5МГц (требование даташита).

В LPC2378 я не обнаружил два регистра управления. А 2138 в наличии увы не имею. То есть хоть расшибись одновременно два канала АЦП на 2378 не обработать?


--------------------
Если вы не можете объяснить что-то шестилетнему ребенку, значит, вы сами этого не понимаете.
Альберт Эйнштейн
Go to the top of the page
 
+Quote Post
HARMHARM
сообщение Mar 27 2009, 14:20
Сообщение #6


читатель даташитов
****

Группа: Свой
Сообщений: 853
Регистрация: 5-11-06
Из: Днепропетровск
Пользователь №: 21 999



Цитата(TanT @ Mar 27 2009, 15:26) *
В LPC2378 я не обнаружил два регистра управления. А 2138 в наличии увы не имею. То есть хоть расшибись одновременно два канала АЦП на 2378 не обработать?

Обрабатывать можно, измеряться будут последовательно - BURST mode.
Go to the top of the page
 
+Quote Post



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

 


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


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