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

 
 
> 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
Ответов
defunct
сообщение Feb 25 2006, 03:05
Сообщение #2


кекс
******

Группа: Свой
Сообщений: 3 825
Регистрация: 17-12-05
Из: Киев
Пользователь №: 12 326



Цитата(e-not @ Feb 25 2006, 02:06) *
я устанавливаю флаг завершения преобразования, а следующее преобразование запускаю в main, то все работает.
....
Может, кто подскажет?


Что же вам еще подсказать, если и так все работает?

ps: не вижу смысла в запуске АЦП в прерывании от АЦП. Вы насильно вводите систему с состояние коллапса. Другое дело запускать AЦП по прерыванию таймера с заданной частотой дискретизации, а по прерыванию от АЦП считывать рез-тат АЦП.
Go to the top of the page
 
+Quote Post



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

 


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


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