Перейти к содержанию
    

Приветствую уважаемых специалистов.

Подскажите что не так.....

Или уже пора в ду...... или не пойму, не зависимо что на ножке А0(хоть земля, хоть плюс) - получаю 0х02 85 (последний байт плавает)

Пол дня с ним бьюсь, хэлп, сос

 

ADC10CTL0 |= ADC10SHT0 | ADC10ON;

ADC10CTL1 |= INCH0;

ADC10AE0 |= BIT0;

ADC10CTL0 |= ENC;

 

while(1)

{

ADC10CTL0 |= ADC10SC;

while(ADC10CTL1 & ADC10BUSY);

 

adcValue = ADC10MEM;

uart_TX(adcValue);

}

}

Изменено пользователем phenixs

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

А какой контроллер?

Изменено пользователем controller_m30

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

А какой контроллер?

MSP430F4152

Изменено пользователем phenixs

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Если вместо входа INCH0, выбрать INCHA (температурный датчик), или INCHB ( (VCC–VSS)/2) - что-нить меняется в показаниях?

 

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Если вместо входа INCH0, выбрать INCHA (температурный датчик), или INCHB ( (VCC–VSS)/2) - что-нить меняется в показаниях?

сейчас попробую

 

сейчас попробую

 

Это надо же так обделаться))

Вместо INCH0 надо было INCH_0

 

Мда... точно в д... пора ))

 

сейчас попробую

 

 

 

Это надо же так обделаться))

Вместо INCH0 надо было INCH_0

 

Мда... точно в д... пора ))

 

Только последний бит плавает блин..., иногда два что есть очень и очень ужасно...

Питание стабильно, надо думать...

Изменено пользователем phenixs

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

В общем, как я понял, заработало ;)

 

Чтоб победить плавающие последние биты, можно вычислять среднее арифметическое нескольких семплов подряд. Сложить, например, значения 4 семплов, а потом сдвинуть эту сумму вправо на 2 бита (т.е. поделить на 4) - получится среднее значение.

Или 8 семплов сложить и сдвинуть на 3 бита вправо... и т.п.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

сейчас попробую

 

 

 

Это надо же так обделаться))

Вместо INCH0 надо было INCH_0

 

Мда... точно в д... пора ))

 

 

 

Только последний бит плавает блин..., иногда два что есть очень и очень ужасно...

Питание стабильно, надо думать...

 

Непонятно даже от внутреннего датчика Т плавают последние 2 бита.

U/2 четко стабильно 1FF без единого дрыга

Мозг уже набекрень ((

 

В общем, как я понял, заработало ;)

 

Чтоб победить плавающие последние биты, можно вычислять среднее арифметическое нескольких семплов подряд. Сложить, например, значения 4 семплов, а потом сдвинуть эту сумму вправо на 2 бита (т.е. поделить на 4) - получится среднее значение.

Или 8 семплов сложить и сдвинуть на 3 бита вправо... и т.п.

 

а это на практике применяют? в смысле это нормально?

 

В общем, как я понял, заработало ;)

 

Чтоб победить плавающие последние биты, можно вычислять среднее арифметическое нескольких семплов подряд. Сложить, например, значения 4 семплов, а потом сдвинуть эту сумму вправо на 2 бита (т.е. поделить на 4) - получится среднее значение.

Или 8 семплов сложить и сдвинуть на 3 бита вправо... и т.п.

 

Можно наверное ещё по аналогии гистограммы брать значения наиболее повторяющиеся, но это как мысль

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

При опорном напряжении 1,5В и 12 битном АЦП на 1 разряд приходится 1,5/4096=366мкВ. Неужели вы думаете, что уровень пульсаций питающего напряжения или наводок на цепи измерения (как внутренние, так и внешние) в вашем изделии меньше этого значения? Уменьшить болтанку в младшем разряде можно также отключая работу процессора и другой внутренней перифирии мк перед началом измерения АЦП. Но я обычно делаю программный фильтр по типу "скользящее среднее".

Изменено пользователем E.V.G.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

"Вместо INCH0 надо было INCH_0"

 

А как же у вас скомпилировалось то всё?

 

И название какое самодокументирующееся: ДЮЙМ0 или ДЮЙМ_0 :)

Изменено пользователем Obam

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

а это на практике применяют? в смысле это нормально?
Полагаю нормально.

Я испытывал этот метод на датчике давления BMP085, у которого разрешение АЦП достаточное, чтоб определять высоту над уровнем моря с точностью до 5 см. Но младшие биты у него "пляшут" (кажется 4 или 5 бит из 19).

После применения усреднения, высота стала отображаться стабильно, и таки с точностью до 5 см! (+/-) :rolleyes: Я перемещал датчик вверх-вниз в пределах метра - давление менялось на величину соответствующую высоте, и каких-то случайных значений при этом не проскакивало.

 

Можно сделать вывод, что "пляшущие" биты тоже содержат полезную информацию о измеряемой величине (как-то привязаны к процессу измерения), а вовсе не являются генератором случайных чисел.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

И название какое самодокументирующееся: ДЮЙМ0 или ДЮЙМ_0 :)

InChannel, ВХКАН в русской транскрипции :)

 

А скомпилировалось, потому что одно обозначает конкретный бит, а другое - комбинацию, соответствующую каналу 0.

Ни к тому, ни к другому у компилятора вопросов нет

 

Чтобы не дергались показания, можно запускать не единичное преобразование, а цепочку. А при считывании из MEM регистров просуммировать.

2 разряда на 12 битах - нормально

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Присоединяйтесь к обсуждению

Вы можете написать сейчас и зарегистрироваться позже. Если у вас есть аккаунт, авторизуйтесь, чтобы опубликовать от имени своего аккаунта.

Гость
Ответить в этой теме...

×   Вставлено с форматированием.   Вставить как обычный текст

  Разрешено использовать не более 75 эмодзи.

×   Ваша ссылка была автоматически встроена.   Отображать как обычную ссылку

×   Ваш предыдущий контент был восстановлен.   Очистить редактор

×   Вы не можете вставлять изображения напрямую. Загружайте или вставляйте изображения по ссылке.

×
×
  • Создать...