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

 
 
> АЦП в ATMega8: 8 бит или 10 бит?, Загадка в АЦП ATMega8 (ADC5)
Sminder
сообщение Mar 18 2007, 19:35
Сообщение #1


Участник
*

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



При использовании АЦП в микроконтроллере ATMega8 была замечена одна интересная особенность. По официальным справочным данным в корпусе DIP микроконтроллер имеет два канала АЦП с разрешением 8 бит (ADC4 и ADC5) и четыре канала с разрешением 10 бит (ADC0...ADC3). Использовался канал ADC5. При считываении данных из регистра ADC в выбранном канале значение менялось от 0 до 1023(!!!), что эквивалентно разрешению 10 бит. Возник вопрос: как это обьяснить?
Go to the top of the page
 
+Quote Post
 
Start new topic
Ответов
Lepeksiy
сообщение Apr 26 2007, 13:08
Сообщение #2


Участник
*

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



В общем виде фильтрация выглядит примерно так (для чайников):

Код
// Размер массива - должен быть степенью двойки!!
#define ARRAY_SIZE 16

// Функция берет текущее значение и возвращает отфильтрованное
int GetMovingAverage(int current_value)
{
    static int filter_array[ARRAY_SIZE];
    static unsigned int index = 0;
    static int sum = 0;

    // Вычитаем удаляемое значение из суммы и прибавляем текущее
    sum += current_value - filter_array[index];
    // Вставляем текущее значение в массив
    filter_array[index] = current_value;
    // Изменяем индекс. Не забывать, что ARRAY_SIZE должен быть степенью двойки!!
    index = (index + 1) & (ARRAY_SIZE - 1);
    // Возвращаем отфильтрованное значение.
    return sum / ARRAY_SIZE;
}

Реальные типы переменных должны быть согласованы с размерностью данных. Данные считаются недостоверными, пока функция не будет вызвана ARRAY_SIZE раз.
Go to the top of the page
 
+Quote Post
VladimirYU
сообщение Apr 26 2007, 13:57
Сообщение #3


Местный
***

Группа: Свой
Сообщений: 426
Регистрация: 5-04-07
Из: Санкт-Петербург
Пользователь №: 26 782



Можно испоьзовать алгоритм апериодического звена. Строится он по принципу интегратора ( сумматора накопителя) охваченного отрицательной обратной связью. Это позволяет уйти от скользящего массива, правда требуется сумматор (интегратор) двойной длины по сравнению с длиной результатов измерений и переменная для хранения предыдущего фильтрованного результата.
Go to the top of the page
 
+Quote Post

Сообщений в этой теме
- Sminder   АЦП в ATMega8: 8 бит или 10 бит?   Mar 18 2007, 19:35
- - SasaVitebsk   Цитата(Sminder @ Mar 18 2007, 20:35) При ...   Mar 18 2007, 19:42
- - Сергей Борщ   Цитата(Sminder @ Mar 18 2007, 18:35) При ...   Mar 18 2007, 19:44
- - singlskv   Цитата(Sminder @ Mar 18 2007, 19:35) При ...   Mar 18 2007, 20:52
- - =GM=   Цитата(Sminder @ Mar 18 2007, 16:35) При ...   Mar 18 2007, 22:21
|- - Sminder   Цитата(=GM= @ Mar 18 2007, 21:21) Объясне...   Mar 19 2007, 23:28
||- - defunct   Цитата(Sminder @ Mar 19 2007, 22:28) кана...   Apr 23 2007, 13:51
||- - kv_addr   Цитата(defunct @ Apr 23 2007, 13:51) Если...   Apr 23 2007, 15:59
||- - defunct   Цитата(kv_addr @ Apr 23 2007, 14:59) Вот ...   Apr 23 2007, 16:04
||- - kv_addr   Цитата(defunct @ Apr 23 2007, 16:04) Изви...   Apr 23 2007, 16:09
|- - arttab   Верить надо даташитам на ту версию мк на которую х...   Mar 20 2007, 05:43
- - Sminder   Извиняюсь, я был неправ. Действительно, просмотрев...   Mar 20 2007, 22:22
|- - =GM=   Цитата(Sminder @ Mar 20 2007, 19:22) Изви...   Mar 21 2007, 01:09
- - arttab   а если документ с историей изменений? что то не по...   Mar 21 2007, 10:31
|- - =GM=   Цитата(arttab @ Mar 21 2007, 07:31) а ест...   Mar 21 2007, 20:06
- - umup   Цитатаво всех моделях ATMega8x два канала (ADC4 и ...   Apr 23 2007, 12:34
- - NVade   немного не по теме, но сталкивался с ситуацией с т...   Apr 23 2007, 16:30
- - arttab   В старых ревизиях было 8 бит. Потом в новой ревизи...   Apr 24 2007, 04:30
- - Anjey_N   Я новичок, поэтому наверное сейчас задам глупый во...   Apr 24 2007, 19:50
|- - Сергей Борщ   Цитата(Anjey_N @ Apr 24 2007, 18:50) Мне ...   Apr 24 2007, 20:57
|- - IgorKossak   Цитата(Anjey_N @ Apr 24 2007, 19:50) Я но...   Apr 25 2007, 11:19
|- - defunct   Цитата(Anjey_N @ Apr 24 2007, 18:50) Мне ...   Apr 26 2007, 00:52
|- - Snaky   Цитата(defunct @ Apr 26 2007, 03:52) Прим...   Apr 26 2007, 06:56
|- - defunct   Цитата(Snaky @ Apr 26 2007, 05:56) нерабо...   Apr 26 2007, 13:07
|- - ReAl   Цитата(defunct @ Apr 26 2007, 12:07) Прим...   Apr 26 2007, 23:17
|- - Snaky   Цитата(defunct @ Apr 26 2007, 16:07) Прим...   Apr 27 2007, 05:30
|- - defunct   Цитата(Snaky @ Apr 27 2007, 04:30) Тогда ...   Apr 27 2007, 11:24
|- - ReAl   Цитата(Snaky @ Apr 27 2007, 04:30) Иначе ...   Apr 27 2007, 18:49
|- - singlskv   Цитата(ReAl @ Apr 27 2007, 19:49) Да, реа...   Apr 28 2007, 02:31
|- - Snaky   Цитата(ReAl @ Apr 27 2007, 21:49) Да, реа...   Apr 28 2007, 05:59
- - arttab   я делал простое усреднение так: Xi = (Xi + Xi+1) /...   Apr 25 2007, 05:27
|- - Anjey_N   Цитата(Lepeksiy @ Apr 26 2007, 13:08) В о...   Apr 26 2007, 21:35
- - Lepeksiy   VladimirYU А как это выражается формулами?   Apr 26 2007, 17:21
|- - VladimirYU   Цитата(Lepeksiy @ Apr 26 2007, 18:21) Vla...   Apr 28 2007, 08:04
- - defunct   Snaky Ради интереса попробуйте вот это (по 4м точ...   Apr 27 2007, 01:39
- - Anjey_N   Спасибо всем! Благодаря вашим советам мне удал...   Apr 27 2007, 22:05
|- - Сергей Борщ   Цитата(Anjey_N @ Apr 27 2007, 21:05) Как ...   Apr 28 2007, 00:50
|- - Anjey_N   Цитата(Сергей Борщ @ Apr 28 2007, 00:50) ...   Apr 29 2007, 09:13
|- - Сергей Борщ   Цитата(Anjey_N @ Apr 29 2007, 09:13) На н...   Apr 29 2007, 18:29
- - yod   Вот такой вот рабочий код приведен в документе sl...   Apr 28 2007, 19:12


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

 


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


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