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

 
 
> треск АЦП LPC1768
Scuby
сообщение May 27 2011, 13:36
Сообщение #1


Частый гость
**

Группа: Участник
Сообщений: 98
Регистрация: 11-11-08
Пользователь №: 41 528



Здравствуйте
имеется плата LPCXpresso в количестве 2 шт.
Проблема с АЦП. периодически меряет неверные значения(одиночная неверная выборка).
причем на обоих платах, купленных в разное время у разных фирм.
Опытным путем выяснилось что это как то связанно с наводками, например выводим на один из выводов процессора 2-3МГц сигнал, имеем ошибки.
либо рядом на столе лежит совершенно другая плата с генератором на 2 МГц, запитанная от другого источника и потребляющая мизерные токи-имеем ошибки.

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

помогите кто знаком с такими проблемами

Сообщение отредактировал Scuby - May 27 2011, 13:39
Go to the top of the page
 
+Quote Post
4 страниц V   1 2 3 > »   
Start new topic
Ответов (1 - 46)
yashok
сообщение May 27 2011, 16:34
Сообщение #2


Участник
*

Группа: Участник
Сообщений: 60
Регистрация: 31-08-10
Из: Минск-Витебск
Пользователь №: 59 203



Посмотреть бы ваш код работы с АЦП.

Сообщение отредактировал yashok - May 27 2011, 16:35
Go to the top of the page
 
+Quote Post
scifi
сообщение May 27 2011, 17:49
Сообщение #3


Гуру
******

Группа: Свой
Сообщений: 3 020
Регистрация: 7-02-07
Пользователь №: 25 136



Цитата(yashok @ May 27 2011, 20:34) *
Посмотреть бы ваш код работы с АЦП.

Гораздо интереснее посмотреть способ электрического подключения источника сигнала к АЦП. Может быть, там используются ржавые стальные спицы или метровые провода. Кто знает?
Go to the top of the page
 
+Quote Post
ViKo
сообщение May 27 2011, 19:50
Сообщение #4


Универсальный солдатик
******

Группа: Модераторы
Сообщений: 8 634
Регистрация: 1-11-05
Из: Минск
Пользователь №: 10 362



Важно, какое сопротивление у той цепи, напряжение в которой меряется.
Go to the top of the page
 
+Quote Post
sysel
сообщение May 28 2011, 10:19
Сообщение #5


Знающий
****

Группа: Свой
Сообщений: 601
Регистрация: 3-07-07
Пользователь №: 28 852



Тут обсуждалось
Go to the top of the page
 
+Quote Post
yashok
сообщение May 30 2011, 05:08
Сообщение #6


Участник
*

Группа: Участник
Сообщений: 60
Регистрация: 31-08-10
Из: Минск-Витебск
Пользователь №: 59 203



Была недавно похожая ситуация. При измерении АЦП иногда выдовал 0. Измерения проводились сразу на нескольких каналах и на всех этих каналах проскакивал ноль. Удалось определить, что АЦП начинает глючить, когда происходит передача данных через GSM модем, установденный на плате.
Последовательность измерений была такая.
1. По прерыванию от таймера запускался на измерение первый нужный канал.
2. По прерыванию от АЦП выяснялось, какой канал преобразовался, бралось его значение, этот канал выключался и включался на преобразование следующий нужный канал.
3. Когда преобразовались все каналы, опять ждалось прерывание от таймера.

Помагло следующая вещь.
Когда случается прерывание от АЦП, записываю в управляющий регистр ADCR в биты 24:26 три нуля, указывая что измерения не производятся.
Аномалия с нулями исчезла.
Go to the top of the page
 
+Quote Post
Scuby
сообщение May 30 2011, 05:45
Сообщение #7


Частый гость
**

Группа: Участник
Сообщений: 98
Регистрация: 11-11-08
Пользователь №: 41 528



Цитата(yashok @ May 27 2011, 20:34) *
Посмотреть бы ваш код работы с АЦП.

CODE
void main()
{
NVIC_DisableIRQ(PWM1_IRQn);

//Настраиваем Шим, исключительно для имитации работы процессора с внешней переферией

LPC_SC->PCONP|=1<<6; //PWM power/clock control bit.
LPC_SC->PCLKSEL0&=~(3<<12); //13:12 Peripheral clock selection for PWM1.
LPC_SC->PCLKSEL0|= 1<<12; //PCLK_peripheral = CCLK

LPC_PINCON->PINSEL3&=~(3<<4); //PWM1.1
LPC_PINCON->PINSEL3|= 2<<4; //Pin function PWM1.1 //

LPC_PINCON->PINMODE3&=~(3<<4); //PWM1
LPC_PINCON->PINMODE3|= 2<<4; //Disable pullup & pulldown resistors

LPC_PINCON->PINMODE3&=~(3<<10); //PWM2
LPC_PINCON->PINMODE3|= 2<<10; //Disable pullup & pulldown resistors

// LPC_PINCON->PINSEL3&=~(3<<10); //PWM1.3
// LPC_PINCON->PINSEL3|= 2<<10; //Pin function PWM1.3 //

LPC_PWM1->TCR = (1<<0) | (1<<3); //Counter Enable | PWM Enable
LPC_PWM1->CTCR = 0; //Timer Mode: the TC is incremented when the Prescale Counter matches the Prescale Register.
LPC_PWM1->MCR = (1<<1); //Reset on PWMMR1
LPC_PWM1->PCR = (1<<3) | (1<<9) | (1<<11); // double edge for the PWM3 | The PWM1 output enabled. | The PWM3 output enabled.

LPC_PWM1->MR0 = 26;
LPC_PWM1->MR1 = 25;

LPC_PWM1->MR2 = param_pwm_1_a;
LPC_PWM1->MR3 = param_pwm_1_b;
LPC_PWM1->PR = 0;
LPC_PWM1->LER = 0x000F;
LPC_PWM1->TC = 0;

//настраиваем АЦП

LPC_SC->PCONP|= 1<<12; //ADC ON // A/D converter (ADC) power/clock control bit.
LPC_SC->PCLKSEL0&=~(3<<24); //
LPC_SC->PCLKSEL0|= 3<<24; //ADC clock pclk/8 //PCLK_peripheral = CCLK/8

LPC_PINCON->PINSEL1&=~(3<<14);
LPC_PINCON->PINSEL1|= 1<<14; //Pin function ADC0 //

LPC_PINCON->PINMODE1&=~(3<<14); //ADC0
LPC_PINCON->PINMODE1|= 2<<14; //Disable pullup & pulldown resistors

LPC_ADC->ADCR=(1<<21);
LPC_ADC->ADINTEN=0x0000;
NVIC_DisableIRQ(ADC_IRQn);

//настраиваем цап для вывода результата АЦП во вне

//Power: The DAC is always connected to VDDA. Register access is determined by PINSEL and PINMODE settings (see below).
LPC_SC->PCLKSEL0&=~(3<<22); //
LPC_SC->PCLKSEL0|= 3<<22; //Peripheral clock selection for DAC. pclk/8 //PCLK_peripheral = CCLK/8

LPC_PINCON->PINSEL1&=~(3<<20);
LPC_PINCON->PINSEL1|=2<<20; //Pin function AOUT

LPC_DAC->DACCTRL=0x00;/**/

LPC_ADC->ADCR=(1) | (2<<8) | (1<<24) | (1<<21) | (0<<27);

while (1)
{
if (LPC_ADC->ADSTAT&1)
{
adc_raw=LPC_ADC->ADDR0;
LPC_ADC->ADCR=(1) | (1<<8) | (1<<24) | (1<<21) | (0<<27);
LPC_DAC->DACR=adc_raw&0xFF00;
};
};
}



Цитата(scifi @ May 27 2011, 21:49) *
Гораздо интереснее посмотреть способ электрического подключения источника сигнала к АЦП. Может быть, там используются ржавые стальные спицы или метровые провода. Кто знает?


http://www.embeddedartists.com/products/lp...LPC1769revA.pdf
при этом подключается нога внешнего разъёма P0[23] "J6-15" на землю GNDX "J6-1", c выхода ЦАП P0[26] "J6-18" снимали осциллографом сигнал, там шли помехи, тоже самое делали в полной версии при передаче выборок по езернет в режиме запуска от таймера. Сейчас мы выложили самый простой вариант без обвесов и на отладочной плате, упрощённый до самого минимума.

Цитата(sysel @ May 28 2011, 14:19) *
Тут обсуждалось

К сожалению отладчик не влияет никак. мы подключали только питание и землю (на плате есть перемычки для этого), всё равно повторялась проблема, даже если выключить и включить без отладчика.
Go to the top of the page
 
+Quote Post
VslavX
сообщение May 30 2011, 07:20
Сообщение #8


embarrassed systems engineer
*****

Группа: Свой
Сообщений: 1 083
Регистрация: 24-10-05
Из: Осокорки
Пользователь №: 10 038



Цитата(yashok @ May 30 2011, 08:08) *
Была недавно похожая ситуация. При измерении АЦП иногда выдовал 0. Измерения проводились сразу на нескольких каналах и на всех этих каналах проскакивал ноль. Удалось определить, что АЦП начинает глючить, когда происходит передача данных через GSM модем, установденный на плате.
...
Аномалия с нулями исчезла.

Ого, а я думал что мои лыжи не едут.
У меня есть несколько каналов АЦП, которые непрерывно измеряются, результаты пишуться в прерывании в кольцевой буфер и потом при необходимости вычисляется среднее за определенный промежуток времени.
Обратил я внимание что при обмене по USB на LPC17 периодически девайс стал отваливаться. Виноват оказался АЦП имеряющий VBUS - там иногда в регистре данных АЦП проскакивали нули, и среднее падало ниже порога и драйвер снимал 1k5 pullup и считал что кабель вынут. Осциллограф никаких помех не показал, допфильтры/ферриты никак не помогли, записать 0 в регистр данных программа никак не может - так что спорадический 0 как результат преобразования - это внутреннее порождение АЦП.
В-общем прикол - есть обмен по USB - эпизодически выскакивает 0 на канале VBUS, нету обмена - все хорошо.
Дальше такой эксперимент - взяли и соединили выводы двух каналов АЦП - VBUS и еще соседний. Оп - и теперь еще и соседний канал начал генерить нулевые результаты. Нет обмена - все хорошо, есть обмен - глюки. Скоп никаких помех не показывает, фильтр и конденсатор 1000пФ прямо возле ножек процессора есть. Причем наблюдается это все на LPC17, та же самая программа перекомпилированная для LPC23 и запаянного в ту же плату - никаких проблем.
Go to the top of the page
 
+Quote Post
Пришелец
сообщение May 30 2011, 07:24
Сообщение #9


Частый гость
**

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



это видимо сильно зависит от разводки платы
от разводки цифровой и аналоговой земли

может помочь программный фильтр

Go to the top of the page
 
+Quote Post
scifi
сообщение May 30 2011, 07:28
Сообщение #10


Гуру
******

Группа: Свой
Сообщений: 3 020
Регистрация: 7-02-07
Пользователь №: 25 136



Цитата(Scuby @ May 30 2011, 09:45) *
http://www.embeddedartists.com/products/lp...LPC1769revA.pdf
при этом подключается нога внешнего разъёма P0[23] "J6-15" на землю GNDX "J6-1", c выхода ЦАП P0[26] "J6-18" снимали осциллографом сигнал, там шли помехи, тоже самое делали в полной версии при передаче выборок по езернет в режиме запуска от таймера. Сейчас мы выложили самый простой вариант без обвесов и на отладочной плате, упрощённый до самого минимума.

Если честно, ничего не понял.
Я всего лишь хотел напомнить, что помехи могут реально присутствовать на входе АЦП. Не забудьте правильно согласовать выход источника сигнала с входом АЦП. Как уже упоминалось, источник должен быть достаточно низкоомным, чтобы заряжать входную ёмкость АЦП при выборке. Если измеряемый сигнал меняется медленно, то помогают RC-фильтры.
Go to the top of the page
 
+Quote Post
Scuby
сообщение May 30 2011, 08:33
Сообщение #11


Частый гость
**

Группа: Участник
Сообщений: 98
Регистрация: 11-11-08
Пользователь №: 41 528



Цитата(scifi @ May 30 2011, 11:28) *
Если честно, ничего не понял.
Я всего лишь хотел напомнить, что помехи могут реально присутствовать на входе АЦП. Не забудьте правильно согласовать выход источника сигнала с входом АЦП. Как уже упоминалось, источник должен быть достаточно низкоомным, чтобы заряжать входную ёмкость АЦП при выборке. Если измеряемый сигнал меняется медленно, то помогают RC-фильтры.

выход низкоомный-провод напрямую на землю. фильтры понятное дело не нужны т.к. нечего фильтровать.
глюки в полный размах. на осциллографе ничего нет. Оно и понятно-много на земле не намеряешь. глюк явно происходит внутри процессора.

только у меня не 0 проскакивает, а значения от 0 до max

Цитата(Пришелец @ May 30 2011, 11:24) *
это видимо сильно зависит от разводки платы
от разводки цифровой и аналоговой земли

может помочь программный фильтр

на других платах с совершенно другой разводкой аналогично
программный фильтр не поможет от помех в полный размах. если усреднять 2 выборки то помеха будет всего лишь в 2 раза меньше.
мне нужно записывать звук. не могу же я по 4000 выборок усреднять в одну чтоб помеха размахом в 12 бит полностью исчезла
Go to the top of the page
 
+Quote Post
Porty
сообщение May 31 2011, 05:31
Сообщение #12


Местный
***

Группа: Свой
Сообщений: 246
Регистрация: 28-05-08
Из: г. Ижевск
Пользователь №: 37 893



Такой же глюк, но значения АЦП норовят уйти в максимум и часто его достигают. У меня повторяемость вообще 100%, идёт наводка на ацп чётко с частотой в 2кгц. 1 в 1 как у автора статьи, т.е. при любой внешней активности проца, даже если ножки по которым идёт обмен не припаяны. Либо по включению внутренних блоков таких как motor control PWM. Проверял - глючат даже стандартные примеры из комплекта поставки LPC expresso.
Go to the top of the page
 
+Quote Post
ZiB
сообщение May 31 2011, 09:39
Сообщение #13


Частый гость
**

Группа: Свой
Сообщений: 122
Регистрация: 26-07-05
Из: Россия, Томск
Пользователь №: 7 109



случайно зашел на страницу, и опаньки у меня были аналогичные глюки при работе с АЦП.
обработка непрерывно, данные собрал через дма.
"но значения АЦП норовят уйти в максимум и часто его достигают." sad.gif пришлось заменить на стм32, сейчас всё нормально sm.gif
Go to the top of the page
 
+Quote Post
ViKo
сообщение May 31 2011, 11:27
Сообщение #14


Универсальный солдатик
******

Группа: Модераторы
Сообщений: 8 634
Регистрация: 1-11-05
Из: Минск
Пользователь №: 10 362



Так у вас ножка опорного напряжения АЦП как запитана? Если ее нет, то как фильтруется напряжение питания? Может, там ВЧ наводки? Конденсаторов на питание, разных, и побольше. sm.gif
Go to the top of the page
 
+Quote Post
Scuby
сообщение May 31 2011, 11:56
Сообщение #15


Частый гость
**

Группа: Участник
Сообщений: 98
Регистрация: 11-11-08
Пользователь №: 41 528



Цитата(ViKo @ May 31 2011, 15:27) *
Так у вас ножка опорного напряжения АЦП как запитана? Если ее нет, то как фильтруется напряжение питания? Может, там ВЧ наводки? Конденсаторов на питание, разных, и побольше. sm.gif

про наводки уже который раз говорю-нет наводок. глючит явно внутри процессора.
Все включено согласно даташиту как на моей плате, так и на покупной отладочной. LC фильтры присутствуют.
наводки которые могут измерится АЦП как 2-3 вольта я бы заметил 200мгц осциллографом.
питание, землю, референсное, входа, все измерял-все идеально. вход на землю замкнут.
в измерениях АЦП якобы помехи в 2-3 вольта показывает

Сообщение отредактировал Scuby - May 31 2011, 12:24
Go to the top of the page
 
+Quote Post
ViKo
сообщение May 31 2011, 12:28
Сообщение #16


Универсальный солдатик
******

Группа: Модераторы
Сообщений: 8 634
Регистрация: 1-11-05
Из: Минск
Пользователь №: 10 362



Цитата(Scuby @ May 31 2011, 14:56) *
про наводки уже который раз говорю-нет наводок. глючит явно внутри процессора.
Все включено согласно даташиту как на моей плате, так и на покупной отладочной. LC фильтры присутствуют.
наводки которые могут измерится АЦП как 2-3 вольта я бы заметил 200мгц осциллографом.
питание, землю, референсное, входа, все измерял-все идеально. вход на землю замкнут.
в измерениях АЦП якобы помехи в 2-3 вольта показывает

Осталось только накрыть микроконтроллер экраном (заземленным), и с другой стороны платы тоже.
А если у вас от мобильника наводится? sm.gif
Если ничего не помогает, то, похоже, NXP лоханулись в дизайне.
Go to the top of the page
 
+Quote Post
Porty
сообщение May 31 2011, 12:59
Сообщение #17


Местный
***

Группа: Свой
Сообщений: 246
Регистрация: 28-05-08
Из: г. Ижевск
Пользователь №: 37 893



а у меня даже экран не помогает, достаточно включить внутренний блок работающий с высокой частотой, например Motor Control на пару мегагерц, даже если к чипу ничего кроме питания не подключено а питание сделано грамотно с минимальным расстоянием и сопротивлением полигонами и стоять ESR кондёры минимального форм фактора с минимальным растоянием до ножек

Сообщение отредактировал Porty - May 31 2011, 12:59
Go to the top of the page
 
+Quote Post
Scuby
сообщение May 31 2011, 13:15
Сообщение #18


Частый гость
**

Группа: Участник
Сообщений: 98
Регистрация: 11-11-08
Пользователь №: 41 528



Цитата(ViKo @ May 31 2011, 16:28) *
Осталось только накрыть микроконтроллер экраном (заземленным), и с другой стороны платы тоже.
А если у вас от мобильника наводится? sm.gif
Если ничего не помогает, то, похоже, NXP лоханулись в дизайне.

экранировать от самого себя не получится. глюки наводятся даже при процессах ввода вывода если ничего не подключено
похоже придется делать внешний АЦП. неохота лепить костыли из-за которых у клиентов могут глюки всплыть
кстати при определенных низких значениях частот оцифровки глюков вроде бы нет, но для моей задачи такие частоты не подходят
порылся на западных форумах-глюки присутствуют у многих на разных отладках. похоже действительно NXP косячнулись с железом или библиотеками

на мегах ничего похожего не было. жаль что мега не подходит под нашу задачу

Сообщение отредактировал Scuby - May 31 2011, 13:18
Go to the top of the page
 
+Quote Post
ViKo
сообщение May 31 2011, 13:23
Сообщение #19


Универсальный солдатик
******

Группа: Модераторы
Сообщений: 8 634
Регистрация: 1-11-05
Из: Минск
Пользователь №: 10 362



Цитата(Scuby @ May 31 2011, 16:15) *
похоже придется делать внешний АЦП

Глушить в микроконтроллере все, что можно, на время измерения встроенным АЦП. 01.gif
Go to the top of the page
 
+Quote Post
Qwertty
сообщение May 31 2011, 13:27
Сообщение #20


Местный
***

Группа: Свой
Сообщений: 408
Регистрация: 21-10-06
Из: Санкт-Петербург
Пользователь №: 21 527



Ну попробуйте 2368, они вроде по ногам совместимы с 1768. Я при беглом просмотре особых отличий не увидел, разве что минус опоры у 2368 это общий питания.
Go to the top of the page
 
+Quote Post
Porty
сообщение May 31 2011, 16:29
Сообщение #21


Местный
***

Группа: Свой
Сообщений: 246
Регистрация: 28-05-08
Из: г. Ижевск
Пользователь №: 37 893



Цитата(ViKo @ May 31 2011, 17:23) *
Глушить в микроконтроллере все, что можно, на время измерения встроенным АЦП. 01.gif

а ничего что ацп портит выборки так что они изменяются от GND до AVCC и в среднем имеют размах в половину аналогового питания? Даже когда контроллер заэкранирован, введён в слип, вся остальная переферия выключена и все каналы ацп к земле припаяны через НУЛЬ ОМ, другого обвеса вообще нет, питание берётся от батарейки которая тоже экранированна и косячят даже все примеры из комплекта поставки?

Подобная проблема была у многих
например
http://gvworks.blogspot.com/2011/03/lpc176...y-glitches.html

Сообщение отредактировал Porty - May 31 2011, 16:37
Go to the top of the page
 
+Quote Post
Qwertty
сообщение May 31 2011, 16:53
Сообщение #22


Местный
***

Группа: Свой
Сообщений: 408
Регистрация: 21-10-06
Из: Санкт-Петербург
Пользователь №: 21 527



Если есть возможность поднять дискретизацию в 2-4 раза, то с этим можно справится чисто программными методами. Хотя косяк неприятный.
Go to the top of the page
 
+Quote Post
Porty
сообщение May 31 2011, 19:37
Сообщение #23


Местный
***

Группа: Свой
Сообщений: 246
Регистрация: 28-05-08
Из: г. Ижевск
Пользователь №: 37 893



Цитата(Qwertty @ May 31 2011, 20:53) *
Если есть возможность поднять дискретизацию в 2-4 раза, то с этим можно справится чисто программными методами. Хотя косяк неприятный.

ниже 88.2кГц делать нереал - ибо сейчас идёт доработка уже существуещего устройства, желательно все 200к получить и не потерять ниодной выборки иначе будет шило на мыло и доработку, не станут брать и соответственно бонусы не пойдут нам.
Клиенты вообще просят 300кГц + 16 бит АЦП и выше =)
Go to the top of the page
 
+Quote Post
Porty
сообщение May 31 2011, 19:37
Сообщение #24


Местный
***

Группа: Свой
Сообщений: 246
Регистрация: 28-05-08
Из: г. Ижевск
Пользователь №: 37 893



double post, plz delete this

Сообщение отредактировал Porty - May 31 2011, 19:38
Go to the top of the page
 
+Quote Post
ViKo
сообщение May 31 2011, 19:47
Сообщение #25


Универсальный солдатик
******

Группа: Модераторы
Сообщений: 8 634
Регистрация: 1-11-05
Из: Минск
Пользователь №: 10 362



Может, там есть что-то полезное.
http://www.ru.nxp.com/documents/applicatio..._guidelines.zip
И еще - медианный фильтр.
Go to the top of the page
 
+Quote Post
Porty
сообщение Jun 1 2011, 06:01
Сообщение #26


Местный
***

Группа: Свой
Сообщений: 246
Регистрация: 28-05-08
Из: г. Ижевск
Пользователь №: 37 893



удалось заставить работать ацп без треска но с ощутимыми помехами (так будто ацп стал 5-6 битным) путём повышения частоты АЦП до 50Мгц:
Код
    LPC_SC->PCLKSEL0&=~(1<<24);     //
    LPC_SC->PCLKSEL0|=  1<<24;      //ADC clock pclk/1; pclk=100Mhz ADC clock = 100Mhz
...
#define ADC_START_TIMER(V)  {LPC_ADC->ADCR=(V) | (1<<8) | (7<<24) | (1<<21) | (0<<27);}  //ADC clock div=2. 50Mhz


Сообщение отредактировал IgorKossak - Jun 1 2011, 06:38
Причина редактирования: [code]
Go to the top of the page
 
+Quote Post
andrewlekar
сообщение Jun 1 2011, 06:48
Сообщение #27


Знающий
****

Группа: Участник
Сообщений: 837
Регистрация: 8-02-07
Пользователь №: 25 163



Какая-то у вас скорость АЦП нереальная. Есть ещё такая мысль: если помеха идет по всем каналам, то на один канал завести постоянный уровень и если там изменение - отбрасывать показания. Если помеха идет по одному каналу, то завести источник на несколько каналов и сравнивать показания. Если есть разница, то отбрасывать.
Go to the top of the page
 
+Quote Post
ViKo
сообщение Jun 1 2011, 06:57
Сообщение #28


Универсальный солдатик
******

Группа: Модераторы
Сообщений: 8 634
Регистрация: 1-11-05
Из: Минск
Пользователь №: 10 362



Цитата(andrewlekar @ Jun 1 2011, 09:48) *
Есть ещё такая мысль: если помеха идет по всем каналам, то на один канал завести постоянный уровень и если там изменение - отбрасывать показания. Если помеха идет по одному каналу, то завести источник на несколько каналов и сравнивать показания. Если есть разница, то отбрасывать.

Так ведь каналы преобразуются не одновременно, а последовательно. Я понимаю так, что там выскакивают одиночные ошибочные измерения.
Go to the top of the page
 
+Quote Post
Scuby
сообщение Jun 1 2011, 07:07
Сообщение #29


Частый гость
**

Группа: Участник
Сообщений: 98
Регистрация: 11-11-08
Пользователь №: 41 528



Цитата(ViKo @ Jun 1 2011, 10:57) *
Так ведь каналы преобразуются не одновременно, а последовательно. Я понимаю так, что там выскакивают одиночные ошибочные измерения.

да вы правы. последовательно можно и на одном канале намерять ничего не припаивая
Go to the top of the page
 
+Quote Post
Porty
сообщение Jun 1 2011, 08:00
Сообщение #30


Местный
***

Группа: Свой
Сообщений: 246
Регистрация: 28-05-08
Из: г. Ижевск
Пользователь №: 37 893



Цитата(ViKo @ May 31 2011, 23:47) *
Может, там есть что-то полезное.
http://www.ru.nxp.com/documents/applicatio..._guidelines.zip
И еще - медианный фильтр.

в этом документе описывается процедура минимизации шума, и мало сказано про глитч только про его возможность при подключенном программаторе.
Медианный фильтр не помогает. да он почти полностью удаляет все иголки, но приводит к сильному фазовому биению (джиттинг в плюс минус несколько семплов) и уменьшает частотку и изменяет звук значительно (становиться жутко глухим будто звук играют динамики сотика заглушоного подушкой). Фильтры ренджирования, гауса и прочие тоже не особо помогают. Битые выборки АЦП это фактически потерянные данные и не один фильтр их не додумает даже приблизительно правильно.

Цитата(andrewlekar @ Jun 1 2011, 10:48) *
Какая-то у вас скорость АЦП нереальная. Есть ещё такая мысль: если помеха идет по всем каналам, то на один канал завести постоянный уровень и если там изменение - отбрасывать показания. Если помеха идет по одному каналу, то завести источник на несколько каналов и сравнивать показания. Если есть разница, то отбрасывать.

Нужны все восемь каналов на максимальной скорости АЦП по даташиту, т.е. 190кило семплов в сек.


Цитата(ViKo @ Jun 1 2011, 10:57) *
Так ведь каналы преобразуются не одновременно, а последовательно. Я понимаю так, что там выскакивают одиночные ошибочные измерения.


да одиночные, в лучшем случае одна выборка раз 1000 выборок во всём диапазоне АЦП, в худшем каждая десятая выборка рандомом
Go to the top of the page
 
+Quote Post
sysel
сообщение Jun 1 2011, 08:20
Сообщение #31


Знающий
****

Группа: Свой
Сообщений: 601
Регистрация: 3-07-07
Пользователь №: 28 852



Это ?
http://mbed.org/forum/mbed/topic/2003/
Go to the top of the page
 
+Quote Post
Porty
сообщение Jun 2 2011, 05:14
Сообщение #32


Местный
***

Группа: Свой
Сообщений: 246
Регистрация: 28-05-08
Из: г. Ижевск
Пользователь №: 37 893



нет, я не использую ДМА, я не использую ADGDR, я не использую Burst mode
Go to the top of the page
 
+Quote Post
ViKo
сообщение Jun 2 2011, 06:57
Сообщение #33


Универсальный солдатик
******

Группа: Модераторы
Сообщений: 8 634
Регистрация: 1-11-05
Из: Минск
Пользователь №: 10 362



Предлагаю следующее решение.
Передискретизация (oversampling) -> медианный фильтр -> фильтр НЧ + децимация.
Go to the top of the page
 
+Quote Post
Porty
сообщение Jun 2 2011, 11:05
Сообщение #34


Местный
***

Группа: Свой
Сообщений: 246
Регистрация: 28-05-08
Из: г. Ижевск
Пользователь №: 37 893



Цитата(ViKo @ Jun 2 2011, 10:57) *
Предлагаю следующее решение.
Передискретизация (oversampling) -> медианный фильтр -> фильтр НЧ + децимация.

отлично, просто велликолепно удаляются шумы и устраняются проблемы фазового дребезга, для варианта в 32кГц очень даже норм, но не для 100+кГц, там уже некуда оверсемплинг разгонять, а если разгонять АЦП сверх рекомендаций то вылазят такие помехи и шумы что ничем не поможеш

Сообщение отредактировал Porty - Jun 2 2011, 11:11
Go to the top of the page
 
+Quote Post
ViKo
сообщение Jun 2 2011, 12:27
Сообщение #35


Универсальный солдатик
******

Группа: Модераторы
Сообщений: 8 634
Регистрация: 1-11-05
Из: Минск
Пользователь №: 10 362



Цитата(Porty @ Jun 2 2011, 14:05) *
отлично...

Это вы экспериментально проверили? Раньше делали, или сейчас?
Да, если АЦП на пределе быстродействия, такой метод уже не пройдет.
Go to the top of the page
 
+Quote Post
Porty
сообщение Jun 2 2011, 15:41
Сообщение #36


Местный
***

Группа: Свой
Сообщений: 246
Регистрация: 28-05-08
Из: г. Ижевск
Пользователь №: 37 893



в том то и дело что нужно на пределе, или делать для одного-двух голосовых каналов одну архитектуру а для 8 каналов другую что не интересно.

Пробовал в делфи, реально треск после медианного и оверсемплинга уменьшается раза в 2-3 на слух по сравнению когда нет оверсемплинга и даунсемплинга , но частотка не портится т.к. оверсемплинг, но появляется мелкий джитинг (на ффт выглядит как амплитудная модуляция - рядом с палкой частоты вылазит ещё две на -40 ... -50дб), и то только на FFT в 128-256тыщь точек виден, но на слух не слышен так что на него пофиг.

Сообщение отредактировал Porty - Jun 2 2011, 15:45
Go to the top of the page
 
+Quote Post
Petka
сообщение Jun 2 2011, 18:50
Сообщение #37


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

Группа: Свой
Сообщений: 1 453
Регистрация: 23-08-05
Пользователь №: 7 886



Цитата(Porty @ Jun 2 2011, 19:41) *
... но появляется мелкий джитинг (на ффт выглядит как амплитудная модуляция - рядом с палкой частоты вылазит ещё две на -40 ... -50дб), и то только на FFT в 128-256тыщь точек виден...

Это медианка вылазит так.
Go to the top of the page
 
+Quote Post
MrAlex
сообщение Jun 3 2011, 05:49
Сообщение #38


Частый гость
**

Группа: Свой
Сообщений: 197
Регистрация: 15-10-10
Из: г. Москва
Пользователь №: 60 179



ADC characteristics (full resolution)
fclk(ADC) ADC clock frequency - - 13 MHz(max)

ADC characteristics (lower resolution)
fclk(ADC) ADC clock frequency 3.0 V ≤ VDDA ≤ 3.6 V - - 33 MHz(max)
Go to the top of the page
 
+Quote Post
bug_fixed
сообщение Jul 7 2011, 10:53
Сообщение #39





Группа: Новичок
Сообщений: 1
Регистрация: 6-03-11
Пользователь №: 63 433



а какая версия чипа "-" или "А"?
Go to the top of the page
 
+Quote Post
stepper88
сообщение Jan 31 2012, 06:20
Сообщение #40


Участник
*

Группа: Участник
Сообщений: 43
Регистрация: 20-02-09
Пользователь №: 45 138



Здравствуйте!
Интересует сегодняшнее положение дел с АЦП. Его исправили? Прошу прощения, если вопрос дурацкий, но собираемся заложить на пробу LPC1768 или что-нибудь из STM32. Устройство - GPS-треккер - будет использован для выносных датчиков, как АЦП, так и I2C (схемотехника частично наследуется от предыдущей модели на LPC2368). Поэтому интересует, стоит ли использовать именно LPC?
Go to the top of the page
 
+Quote Post
Altemir
сообщение Jan 31 2012, 23:46
Сообщение #41


Местный
***

Группа: Свой
Сообщений: 249
Регистрация: 2-05-06
Из: Россия, Поволжье
Пользователь №: 16 686



Цитата(stepper88 @ Jan 31 2012, 10:20) *
Здравствуйте!
Интересует сегодняшнее положение дел с АЦП. Его исправили?

Насчёт исправления - не в курсе. Однако используем в серийных изделиях. О потенциальном баге предупреждены, спасибо коллегам wink.gif У самих пока не проявлялся (LPC1763). На ответственных измерениях программно добавлен медианный фильтр, так что не страшно. Заложен LPC1766 в другую серию изделий, где требуется большое кол-во аналоговых входов (расширение аналоговым мультиплексором) и относительно шустрая обработка без ЦОС. Скорее всего применю тоже программный фильтр и счётчик-ловушку, чтобы проанализировать наличие бага в проце. У знакомых ребят стоит LPC1768, пока не споткнулись на АЦП, но им в данный момент не до него было, если честно.
Go to the top of the page
 
+Quote Post
Altemir
сообщение Feb 6 2012, 19:55
Сообщение #42


Местный
***

Группа: Свой
Сообщений: 249
Регистрация: 2-05-06
Из: Россия, Поволжье
Пользователь №: 16 686



Может кому будет полезно, но обновилась еррата на LPC176x и LPC177x/8x. Описан баг по АЦП, в частности - с кривым A/D Global Data Register Цитирую:
Цитата
ADC.2: A/D Global Data register should not be used with burst mode
or hardware triggering

Introduction:
On the LPC176x, the START field and the BURST bit in the A/D control register specify
whether A/D conversions are initiated via software command, in response to some
hardware trigger, or continuously in burst ("hardware-scan") mode. Results of the ADC
conversions can be read in one of two ways. One is to use the A/D Global Data Register
to read all data from the ADC. Another is to use the individual A/D Channel Data
Registers.

Problem:
If the burst mode is enabled (BURST bit set to ‘1’) or if hardware triggering is specified,
the A/D conversion results read from the A/D Global Data register could be incorrect. If
conversions are only launched directly by software command (BURST bit = '0' and START
= ‘001’), the results read from the A/D Global Data register will be correct provided the
previous result is read prior to launching a new conversion.

Work-around:
When using either burst mode or hardware triggering, the individual A/D Channel Data
registers should be used instead of the A/D Global Data register to read the A/D
conversion results.
Go to the top of the page
 
+Quote Post
Porty
сообщение Feb 8 2012, 05:51
Сообщение #43


Местный
***

Группа: Свой
Сообщений: 246
Регистрация: 28-05-08
Из: г. Ижевск
Пользователь №: 37 893



без всяких A/D Global Data Register щёлкали результаты или вообще случайные шли даже читая из регистров конкретных каналов.

Да и смысл в burst mode пользоваться глобальным регистром? Всё равно нужны конкретные каналы после окончания выборок пачки и прерывание настраивается на последний канал пачки или общее окончание работы ацп или просто опрос с заведомо большим интервалом чем обработка пачки.
Go to the top of the page
 
+Quote Post
Altemir
сообщение Feb 8 2012, 18:15
Сообщение #44


Местный
***

Группа: Свой
Сообщений: 249
Регистрация: 2-05-06
Из: Россия, Поволжье
Пользователь №: 16 686



Цитата(Porty @ Feb 8 2012, 09:51) *
Да и смысл в burst mode пользоваться глобальным регистром?

Да в курсе я, сам пользуюсь burst-ом и вычитываю из канальных регистров. Просто привёл цитату, чтобы ещё и на эти грабли народ не наступал.
Go to the top of the page
 
+Quote Post
Altemir
сообщение Jul 21 2012, 18:37
Сообщение #45


Местный
***

Группа: Свой
Сообщений: 249
Регистрация: 2-05-06
Из: Россия, Поволжье
Пользователь №: 16 686



Ребят, есть ли новости с фронта АЦП в LPC176x? Сейчас поднял проект, где активно работаю с АЦП без фильтрации медианным фильтром. И - о ужас! LPC1763 rev.'A', LPC1768 rev.'-' обе имеют одинаковые проблемы, мусор может быть хаотическим на любом канале. Использую режим burst и канальные регистры результатов. Плохо то, что надо измерять среднеквадратичные значения, а медианный фильтр, если его использовать, повлияет на точность измерений. АЦП настроено на ~8000Sps, частота шины - 100МГц.

Удалось ли как-то победить этот капризный АЦП и есть ли инфа от NXP? Неужели за год компания так и не признала проблем с АЦП?
Go to the top of the page
 
+Quote Post
Porty
сообщение Jul 23 2012, 05:17
Сообщение #46


Местный
***

Группа: Свой
Сообщений: 246
Регистрация: 28-05-08
Из: г. Ижевск
Пользователь №: 37 893



используй STM32Fxxx и Coocox
как показала практика, на перенос очень больших исходников потребовалось чуть менее месяца при почти полном использовании периферии LPC1768. да и STM32F куда лучше семейство мне показалось тем что можно сменять кристаллы не меняя исходников, всё унифицировано и более - менее работает, хоть и с ограничениями (например ЦАП не на полный размах а -100мВ сверху и снизу).
а то так можно и 10 лет прождать у моря погоды wink.gif
Go to the top of the page
 
+Quote Post
Slonofil
сообщение Mar 2 2015, 14:43
Сообщение #47


Местный
***

Группа: Участник
Сообщений: 327
Регистрация: 6-10-09
Из: РФ :: Ленинград
Пользователь №: 52 781



Товарищи!

Поскольку в этой теме отметились многие понимающие в АЦП LPC, позволю себе задать вопрос на уточнение. К сожалению, из ДШ на LPC1313 вытянуть ответ не получается - лапидарность явно в чертах составителей оного =(

Вопрос, собственно, в следующем. Если я правильно понял, установка бита BURST запускает непрерывное преобразование по всем заданным каналам. Как мне поступить, если я хочу произвести оцифровку всех каналов единожды? Сейчас делаю так: настроил прерывание от 7-го канала, устанавливаю BURST, затем при входе в прерывание обнуляю BURST, чтобы остановить преобразование. Только вот в ДШ написано: "Repeated conversions can be terminated by clearing this bit, but the conversion in progress when this bit is cleared will be completed." Фактически это означает, что при такой схеме поведения я получу запуск по 0-му каналу ещё раз (поверх уже выполненного), а в это время стану обрабатывать ранее полученные значения в прерывании, после чего преобразование по 0-му каналу завершится уже без моего участия. И там будет ещё один результат. А вскоре, когда мне понадобится сделать ещё один прогон, я внось оцифрую все каналы... и в регистре результата 0-го канала я найду установленным бит OVERRUN. Он как-то скажется на дальнейшем поведении модуля? Можно ли его игнорировать? И для чего он тогда нужен, если его установка возможна в столь двусмысленной ситуации?

Генерация по прерыванию от 6-го канала мне не видится выходом из ситуации - моя обработка, вероятно, случится ещё до того, как завершится оцифровка 7-го канала.
Go to the top of the page
 
+Quote Post

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

 


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


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