-=az=- 0 24 сентября, 2015 Опубликовано 24 сентября, 2015 (изменено) · Жалоба Приветствую уважаемых специалистов. Подскажите что не так..... Или уже пора в ду...... или не пойму, не зависимо что на ножке А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); } } Изменено 24 сентября, 2015 пользователем phenixs Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
_pv 52 24 сентября, 2015 Опубликовано 24 сентября, 2015 · Жалоба . Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
-=az=- 0 24 сентября, 2015 Опубликовано 24 сентября, 2015 · Жалоба . все плохо? Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
controller_m30 1 24 сентября, 2015 Опубликовано 24 сентября, 2015 (изменено) · Жалоба А какой контроллер? Изменено 24 сентября, 2015 пользователем controller_m30 Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
-=az=- 0 24 сентября, 2015 Опубликовано 24 сентября, 2015 (изменено) · Жалоба А какой контроллер? MSP430F4152 Изменено 24 сентября, 2015 пользователем phenixs Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
controller_m30 1 24 сентября, 2015 Опубликовано 24 сентября, 2015 · Жалоба Если вместо входа INCH0, выбрать INCHA (температурный датчик), или INCHB ( (VCC–VSS)/2) - что-нить меняется в показаниях? Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
-=az=- 0 24 сентября, 2015 Опубликовано 24 сентября, 2015 (изменено) · Жалоба Если вместо входа INCH0, выбрать INCHA (температурный датчик), или INCHB ( (VCC–VSS)/2) - что-нить меняется в показаниях? сейчас попробую сейчас попробую Это надо же так обделаться)) Вместо INCH0 надо было INCH_0 Мда... точно в д... пора )) сейчас попробую Это надо же так обделаться)) Вместо INCH0 надо было INCH_0 Мда... точно в д... пора )) Только последний бит плавает блин..., иногда два что есть очень и очень ужасно... Питание стабильно, надо думать... Изменено 24 сентября, 2015 пользователем phenixs Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
controller_m30 1 24 сентября, 2015 Опубликовано 24 сентября, 2015 · Жалоба В общем, как я понял, заработало ;) Чтоб победить плавающие последние биты, можно вычислять среднее арифметическое нескольких семплов подряд. Сложить, например, значения 4 семплов, а потом сдвинуть эту сумму вправо на 2 бита (т.е. поделить на 4) - получится среднее значение. Или 8 семплов сложить и сдвинуть на 3 бита вправо... и т.п. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
-=az=- 0 24 сентября, 2015 Опубликовано 24 сентября, 2015 · Жалоба сейчас попробую Это надо же так обделаться)) Вместо INCH0 надо было INCH_0 Мда... точно в д... пора )) Только последний бит плавает блин..., иногда два что есть очень и очень ужасно... Питание стабильно, надо думать... Непонятно даже от внутреннего датчика Т плавают последние 2 бита. U/2 четко стабильно 1FF без единого дрыга Мозг уже набекрень (( В общем, как я понял, заработало ;) Чтоб победить плавающие последние биты, можно вычислять среднее арифметическое нескольких семплов подряд. Сложить, например, значения 4 семплов, а потом сдвинуть эту сумму вправо на 2 бита (т.е. поделить на 4) - получится среднее значение. Или 8 семплов сложить и сдвинуть на 3 бита вправо... и т.п. а это на практике применяют? в смысле это нормально? В общем, как я понял, заработало ;) Чтоб победить плавающие последние биты, можно вычислять среднее арифметическое нескольких семплов подряд. Сложить, например, значения 4 семплов, а потом сдвинуть эту сумму вправо на 2 бита (т.е. поделить на 4) - получится среднее значение. Или 8 семплов сложить и сдвинуть на 3 бита вправо... и т.п. Можно наверное ещё по аналогии гистограммы брать значения наиболее повторяющиеся, но это как мысль Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
E.V.G. 0 25 сентября, 2015 Опубликовано 25 сентября, 2015 (изменено) · Жалоба При опорном напряжении 1,5В и 12 битном АЦП на 1 разряд приходится 1,5/4096=366мкВ. Неужели вы думаете, что уровень пульсаций питающего напряжения или наводок на цепи измерения (как внутренние, так и внешние) в вашем изделии меньше этого значения? Уменьшить болтанку в младшем разряде можно также отключая работу процессора и другой внутренней перифирии мк перед началом измерения АЦП. Но я обычно делаю программный фильтр по типу "скользящее среднее". Изменено 25 сентября, 2015 пользователем E.V.G. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Obam 30 25 сентября, 2015 Опубликовано 25 сентября, 2015 (изменено) · Жалоба "Вместо INCH0 надо было INCH_0" А как же у вас скомпилировалось то всё? И название какое самодокументирующееся: ДЮЙМ0 или ДЮЙМ_0 :) Изменено 25 сентября, 2015 пользователем Obam Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
controller_m30 1 25 сентября, 2015 Опубликовано 25 сентября, 2015 · Жалоба а это на практике применяют? в смысле это нормально?Полагаю нормально. Я испытывал этот метод на датчике давления BMP085, у которого разрешение АЦП достаточное, чтоб определять высоту над уровнем моря с точностью до 5 см. Но младшие биты у него "пляшут" (кажется 4 или 5 бит из 19). После применения усреднения, высота стала отображаться стабильно, и таки с точностью до 5 см! (+/-) :rolleyes: Я перемещал датчик вверх-вниз в пределах метра - давление менялось на величину соответствующую высоте, и каких-то случайных значений при этом не проскакивало. Можно сделать вывод, что "пляшущие" биты тоже содержат полезную информацию о измеряемой величине (как-то привязаны к процессу измерения), а вовсе не являются генератором случайных чисел. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
MrYuran 16 25 сентября, 2015 Опубликовано 25 сентября, 2015 · Жалоба И название какое самодокументирующееся: ДЮЙМ0 или ДЮЙМ_0 :) InChannel, ВХКАН в русской транскрипции :) А скомпилировалось, потому что одно обозначает конкретный бит, а другое - комбинацию, соответствующую каналу 0. Ни к тому, ни к другому у компилятора вопросов нет Чтобы не дергались показания, можно запускать не единичное преобразование, а цепочку. А при считывании из MEM регистров просуммировать. 2 разряда на 12 битах - нормально Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Obam 30 25 сентября, 2015 Опубликовано 25 сентября, 2015 · Жалоба 10-разрядов АЦП, десять :) Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться