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

 
 
> АЦП в LPC1768
Allregia
сообщение Aug 18 2011, 09:31
Сообщение #1


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

Группа: Свой
Сообщений: 1 047
Регистрация: 28-06-07
Из: Israel
Пользователь №: 28 763



возникала непонятка с burst режимом в LPC1768:
включен 1 вход, подключенный к потенциометру, данные с его регистра рещультата переписываются в ЦАП.
Кручу потенциометр и смотрю осциллографом выход ЦАПа - там все меняется о 0 до 3в, но - периодически проскакивают ипульсы, то вверх то вниз, колеблящейся амплитуды, доходящей до 0 и до питания.
Если ставлю потенциометр в 0, то на выходе ЦАПа ноль, с положительными импульсами, если ставлю потенциометр в макс - на вхыоде 3в и импульсами до нуля (не всегда. амплитуд дрожит).
Длительность импульсов около 8мкс.
Про работает на 100мгц, частота периферии вся 1/4. В программе работает только прерывание SysTick и мертвый цикл в мейне:
Код такой:
Код
//------------------------------------------------------------------------------
void ADC_Init (void) {

  LPC_PINCON->PINSEL3 &= ~(3UL<<30);               /* P1.31 is GPIO */
  LPC_PINCON->PINSEL3 |=  (3UL<<30);               /* P1.31 is AD0.5 */

  LPC_SC->PCONP       |=  (1<<12);               /* Enable power to ADC block */

  LPC_ADC->ADCR        =  (1<< 5) |              /* select AD0.5 pin */
                                    (4<< 8) |              /* ADC clock is 25MHz */
                                    (1<<16) |              // burst  mode
                                    (1<<21);               /* enable ADC */
}
//--------------------------------------------------------------------------------
void DAC_Init(void){
      LPC_PINCON->PINSEL1 |= (2UL<<20);    /* set p0.26 to DAC output */  
      LPC_DAC->DACCTRL |=(1<<1); // dowble buffer  
}
//--------------------------------------------------------------------------------
int main(void){
  if (SysTick_Config(SystemCoreClock / 1000)) { // Setup SysTick Timer for 1 msec interrupts  
    while (1);                                  // Capture error
  }
  
  halPORTS_Config(); // конфигурирование портов
  DAC_Init();
  ADC_Init();
  while(1){
    LPC_DAC->DACR = 0xFFC0 & LPC_ADC->ADDR5;
  }
}


Да, в периоде этих пичков я никакой закономерности не увидел.
Проблема точно в АЦП, т.к. если я просто постоянно пишщу в ЦАП констанку, то на выходе пичков нет.
Возможно это из-за асинхронного (по сравнению с конверсией) чтения регистра результата АЦП, но тогда я не очень понимаю как барст должен работать. Я полагал что его можно читать в произвольный момент времени.
Go to the top of the page
 
+Quote Post
 
Start new topic
Ответов
Allregia
сообщение Aug 19 2011, 10:42
Сообщение #2


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

Группа: Свой
Сообщений: 1 047
Регистрация: 28-06-07
Из: Israel
Пользователь №: 28 763



Чтобы убрать эти глитчи, написал вот такой медианнный фильтр по 3-м точкам. Но может мжно как-то проще?

Код
uint32_t Med(uint32_t D){
static uint32_t DataArray[3]={0,0,0};
uint32_t Res,Max, Min,MaxV, MinV,i;

   Res=0;
   Max=Min=0;
   DataArray[2]=D;
   MaxV=DataArray[Max];
   MinV=DataArray[Min];
   for(i=1;i<3;i++){ // search max/min
      if(DataArray[i]>MaxV){
         Max=i; MaxV=DataArray[i];
      }
      if(DataArray[i]<MinV){
       Min=i;  MinV=DataArray[i];
      }
   }

  for(i=0;i<3;i++){  // select index not equal to Min or Max
    if((i!=Min)&&(i!=Max)){
      Res=i; break;
    }
  }
  DataArray[0]=DataArray[1];
  DataArray[1]=DataArray[2];
  return DataArray[Res];
}
Go to the top of the page
 
+Quote Post

Сообщений в этой теме
- Allregia   АЦП в LPC1768   Aug 18 2011, 09:31
- - scifi   Кажется, это уже обсуждалось: треск АЦП LPC1768.   Aug 18 2011, 09:40
- - Allregia   Барст оказался не причем: когда я его убрал (не ус...   Aug 18 2011, 10:02
- - Allregia   Народ, ну помогите-же кто-нибудь! простой код...   Aug 21 2011, 11:40
- - Allregia   В итоге, решили от LPC1768 в окончательной версии ...   Aug 23 2011, 05:17
- - Porty   опыт показал что это ошибка внутреннего устройства...   Aug 23 2011, 10:51
- - Allregia   ЦитатаТак же можно было изменять режимы работы ADC...   Aug 23 2011, 11:15
- - Porty   насчёт стабильности у LPC1768 проблемы не только с...   Aug 23 2011, 12:12
- - Allregia   Да, я уже понял что этот проц какой-то недоделанны...   Aug 26 2011, 17:08
|- - HARMHARM   Цитата(Allregia @ Aug 26 2011, 20:08) Да,...   Aug 28 2011, 18:59
- - Axel   LPC1778 тоже вроде не глючит (в смысле АЦП)...   Sep 13 2011, 07:57
|- - HARMHARM   Цитата(Axel @ Sep 13 2011, 10:57) LPC1778...   Sep 18 2011, 14:51
|- - Altemir   Цитата(HARMHARM @ Sep 18 2011, 18:51) Воз...   Jan 18 2012, 21:33
- - Alechek   А где сентябрьская? на сайте вижу ЦитатаEnglish...   Sep 19 2011, 12:44
- - HARMHARM   Нашел случайно через гугль тут.   Sep 19 2011, 14:45


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

 


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


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