|
АЦП в ATMega8: 8 бит или 10 бит?, Загадка в АЦП ATMega8 (ADC5) |
|
|
|
Mar 18 2007, 19:35
|
Участник

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

|
При использовании АЦП в микроконтроллере ATMega8 была замечена одна интересная особенность. По официальным справочным данным в корпусе DIP микроконтроллер имеет два канала АЦП с разрешением 8 бит (ADC4 и ADC5) и четыре канала с разрешением 10 бит (ADC0...ADC3). Использовался канал ADC5. При считываении данных из регистра ADC в выбранном канале значение менялось от 0 до 1023(!!!), что эквивалентно разрешению 10 бит. Возник вопрос: как это обьяснить?
|
|
|
|
|
 |
Ответов
|
Apr 26 2007, 00:52
|

кекс
     
Группа: Свой
Сообщений: 3 825
Регистрация: 17-12-05
Из: Киев
Пользователь №: 12 326

|
Цитата(Anjey_N @ Apr 24 2007, 18:50)  Мне сказали, что теперь нужно применить вычисление скользящего среднего. А как это сделать, я не знаю! Пример скользящего усреднения по 16-ти точкам (без использования массивов) Код int UpdateAverage( int CurrVal ) { static int Sum = 0; int tmp = (Sum + (16 >> 1)) >> 4; // среднее = (Sum + n/2) / n, где n = 16 Sum += CurrVal - tmp; return tmp; } <Усредненное значение АЦП> = UpdateAverage( <Текущее значение АЦП> );
|
|
|
|
|
Apr 26 2007, 06:56
|

Mute Beholder
  
Группа: Свой
Сообщений: 260
Регистрация: 4-04-07
Из: Третья планета от Солнца
Пользователь №: 26 754

|
Цитата(defunct @ Apr 26 2007, 03:52)  Пример скользящего усреднения по 16-ти точкам (без использования массивов) Код int UpdateAverage( int CurrVal ) { static int Sum = 0; int tmp = (Sum + (16 >> 1)) >> 4; // среднее = (Sum + n/2) / n, где n = 16 Sum += CurrVal - tmp; return tmp; } <Усредненное значение АЦП> = UpdateAverage( <Текущее значение АЦП> ); нерабочий примерчик-то. вызвал 16 раз функцию с аргументом CurrVal = 10, в результате получил 6. через 20 итераций получил 7. и вообще странный какой-то алгоритм - возвращать результат целочисленного деления (накопленной суммы + константа) на константу. PS я всегда пользуюсь методом с кольцевым массивом, как описал IgorKossak
--------------------
Common sense is not so common.
|
|
|
|
|
Apr 26 2007, 13:07
|

кекс
     
Группа: Свой
Сообщений: 3 825
Регистрация: 17-12-05
Из: Киев
Пользователь №: 12 326

|
Цитата(Snaky @ Apr 26 2007, 05:56)  нерабочий примерчик-то. вызвал 16 раз функцию с аргументом CurrVal = 10, в результате получил 6. через 20 итераций получил 7.  Пример рабочий. Вы дальше повызывайте. Хотите чтоб быстрее получался рез-тат усредняйте по 8-ми или по 4-м точкам. Цитата и вообще странный какой-то алгоритм - возвращать результат целочисленного деления (накопленной суммы + константа) Почитайте какую-нить книжку по усреднению прежде чем выступать. Константа эта для устранения абсолютной погрешности в 0.5LSB при накоплении суммы. Цитата PS я всегда пользуюсь методом с кольцевым массивом У вас видать памяти в МК всегда много..
|
|
|
|
|
Apr 27 2007, 05:30
|

Mute Beholder
  
Группа: Свой
Сообщений: 260
Регистрация: 4-04-07
Из: Третья планета от Солнца
Пользователь №: 26 754

|
Цитата(defunct @ Apr 26 2007, 16:07)  Пример рабочий. Вы дальше повызывайте. Хотите чтоб быстрее получался рез-тат усредняйте по 8-ми или по 4-м точкам. Почитайте какую-нить книжку по усреднению прежде чем выступать. Константа эта для устранения абсолютной погрешности в 0.5LSB при накоплении суммы. У вас видать памяти в МК всегда много.. Тогда называйте вещи своими именами сразу. А то человек спросил про скользящее среднее, а вы ему совсем другое под этим названием подсовываете. Метод скользящего среднего - это то,что описал IgorKossak и Lepeksiy. Иначе захочется кому-нибудь сэкономить на памяти под массив, и будет потом долго удивляться, что результат поменялся. PS Да, памяти у меня в МК всегда много - не жалуюсь.
--------------------
Common sense is not so common.
|
|
|
|
Сообщений в этой теме
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, 18:50) Мне ... Apr 24 2007, 20:57 IgorKossak Цитата(Anjey_N @ Apr 24 2007, 19:50) Я но... Apr 25 2007, 11:19    ReAl Цитата(defunct @ Apr 26 2007, 12:07) Прим... Apr 26 2007, 23:17     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 Lepeksiy В общем виде фильтрация выглядит примерно так (для... Apr 26 2007, 13:08 VladimirYU Можно испоьзовать алгоритм апериодического звена. ... Apr 26 2007, 13:57 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
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0
|
|
|