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

 
 
> LPC2148: запуск АЦП по таймеру
grau
сообщение Jul 27 2007, 14:19
Сообщение #1


Участник
*

Группа: Участник
Сообщений: 49
Регистрация: 3-02-05
Пользователь №: 2 390



Salute!

Необходимо брать отсчет по двум каналам АЦП без джиттера. Возникла идея использовать механизм запуска измерения от таймера. Сделано примерно так:

Код
SetPwrDn(true);                                      // включить АЦП
InputOnMask(0xFF);                                // вкючить все каналы
SetIntMask(1<<1);                                  // прерывание после завершения измерения по второму из них
SetSampleClock(4500000L);                      // частота тактироания АЦП
SetResBitNum(10);                                  // разрешение в 10 бит
SetFiq();                                               // установить указатель на обработчик FIQ
StartType(CAdcDeviceBase::ENoStart);     // выставить бит BURST
SetBurst(true);
StartType(CAdcDeviceBase::EOnMatSecSec);  // запуск по каналу MAT1.1

// настраиваем таймер
Reset();
SetPreDiv(0);        
// настраиваем перезагрузку счетчика и действие
// (канал, прерывание, перезагрузка, остановка, значение, действие)
SetMatchAction(1, false, true, false, 180000L, CTimerDeviceBase::ESetHi);
ClrExtMatchOut(1);                               // сбросить выход в 0
Start();


далее в обработчике FIQ:


Код
unsigned i = 0;                             // считать все результаты
for(i=0; i<8; ++i){                        // этим, также, сбрасывается прерывание
     AdcData_t Dat = ReadCurVal(i);
}

StartType(CAdcDeviceBase::ENoStart);  // Прерываем оцифровку по BURST
SetBurst(false);
SetBurst(true);                                  // подготовились к следующему циклу
StartType(CAdcDeviceBase::EOnMatSecSec);

ClrExtMatchOut(1);                             // сбросить выход MAT1.1



Проблема заключается в том, что когда этот механизм применяется к одному каналу, без использования сканирования по BURST, то все прекрасно работает. Если использовать просто BURST, без таймера, то тоже все хорошо. А вот так не хочет.


Все ли правильно запущено и проинициализированно?
Возможен ли подобный режим вообще?



Best regards, Sergei
Go to the top of the page
 
+Quote Post

Сообщений в этой теме


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

 


RSS Текстовая версия Сейчас: 16th August 2025 - 12:27
Рейтинг@Mail.ru


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