неверная разрядность АЦП у ATmega8535 в корпусе TQFP

Вопросы настройки, программирования, прошивки микроконтроллеров и микросхем программируемой логики
Закрыто
Родился
Сообщения: 8
Зарегистрирован: Ср авг 27, 2008 14:29:31

Сообщение GrigaN »

Добрый день! Есть мк ATmega8535. В даташите написано, что если стоит коэффициент усиления 10, то разрядность АЦП уже не 10, а 8. Делаю выравнивание по левому краю, читаю только старший регист ADCH. результат неверный (сравнивал напряжение с обычным вольтметром). Если же считываю виртуальный регистр ADCW (в CV, выравнивание уже стандартное - по правому краю), то результат преобразования устраивает, но на фоне измерений пробегают шумы, причем фиг бы с ними, смушает только то что мелькают числа 1023, 1022, а значит разрядность АЦП при применение встроенного операционного усилителя с коэффициентом на 10х все таки также 10 бит, а не 8.. кто нибудь сталкивался с подобной проблемой?
Реклама
Вымогатель припоя
Аватара пользователя
Сообщения: 683
Зарегистрирован: Пт апр 11, 2008 11:24:53
Откуда: Владимир

Сообщение SergeBS »

GrigaN писал(а):Добрый день! Есть мк ATmega8535. В даташите написано, что если стоит коэффициент усиления 10, то разрядность АЦП уже не 10, а 8.
Проблема - с английским. 8-bit resolution - это 8-битное РАЗРЕШЕНИЕ, а не разрядность. Показывать будет цифирку - как обычно, но в 10 или 200 раз больше (от выбранного Ку зависит), чем при Ку=1, и 2 младших разряда из 10 будут плясать как хотят. Т.е. разрядность - 10 бит, а разрешение - 8 бит.
Реклама
ARV
Ум, честь и совесть. И скромность.
Аватара пользователя
Сообщения: 18785
Зарегистрирован: Чт дек 28, 2006 08:19:56
Откуда: Новочеркасск

Сообщение ARV »

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

Мой уютный бложик... заходите!
Контактная информация:
Родился
Сообщения: 8
Зарегистрирован: Ср авг 27, 2008 14:29:31

Сообщение GrigaN »

ARV писал(а):и второе: при выравнивании влево считывать все рано надо оба регистра, причем в правильном порядке: сначала ADCL, потом ADCH. значение ADCL можно игнорировать, если хватает 8-бит.
Блокировка младшего регистра происходит до того момента пока не будет считан старший.. нету смысла читать младший регист если требуется всего 8 бит. Просто читаю старший. я тоже поначалу так думал, но когда прошил двумя способами, рузультат тот же.
Реклама
Эиком - электронные компоненты и радиодетали
Вымогатель припоя
Аватара пользователя
Сообщения: 683
Зарегистрирован: Пт апр 11, 2008 11:24:53
Откуда: Владимир

Сообщение SergeBS »

стр.208: 2 и начало 3 абз.:
The ADC generates a 10-bit result which is presented in the ADC Data Registers, ADCH and ADCL. By default, the result is presented right adjusted, but can optionally be presented left adjusted by setting the ADLAR bit in ADMUX.
If the result is left adjusted and no more than 8-bit precision is required, it is sufficient to read ADCH.
Реклама
Э...
Аватара пользователя
Сообщения: 2792
Зарегистрирован: Ср апр 04, 2007 08:39:14
Откуда: Москва

Сообщение tych »

SergeBS писал(а): it is sufficient to read ADCH.
AVR, даташит надо ЧТИТЬ !
Думайте сами, решайте сами ... а вот он-лайн перевод на корявый русский http://translate.ru
Контактная информация:
Реклама
Родился
Сообщения: 8
Зарегистрирован: Ср авг 27, 2008 14:29:31

Сообщение GrigaN »

SergeBS писал(а):стр.208: 2 и начало 3 абз.:
The ADC generates a 10-bit result which is presented in the ADC Data Registers, ADCH and ADCL. By default, the result is presented right adjusted, but can optionally be presented left adjusted by setting the ADLAR bit in ADMUX.
If the result is left adjusted and no more than 8-bit precision is required, it is sufficient to read ADCH.
Согласен, читал. Там и написано что погрешность 2 младших разряда.
Родился
Сообщения: 8
Зарегистрирован: Ср авг 27, 2008 14:29:31

Сообщение GrigaN »

tych писал(а):
SergeBS писал(а): it is sufficient to read ADCH.
AVR, даташит надо ЧТИТЬ !
заливал прошивку, где считываю только старший регистр ADCH, в гипертерминале получаю число единиц АЦП меньшее.. например: напряжение на термопаре 40мВ, читаю виртуальный регистр ADCW, получаю 80, умножаю на 0,5(вывод Vinпо даташиту для диф входа) получаю нужные 40мв.. а если считываю только регистр ADCH, получаю вместо 80 единиц АЦП, всего 20 единиц
Последний раз редактировалось GrigaN Пн окт 20, 2008 14:04:57, всего редактировалось 1 раз.
Родился
Сообщения: 8
Зарегистрирован: Ср авг 27, 2008 14:29:31

Сообщение GrigaN »

ADC=512(Vпол-Vнег)K/Vоп

отсюда если Vнег=0:

Vпол=Vвх=ADC*Vоп/K*512 кстати кто знает почему 512 а не 256?

тогда Vвх(мв)=ADC*2560/10*512=0,5ADC

значит одна единица АЦП - это 0,5 мв..
Родился
Сообщения: 8
Зарегистрирован: Ср авг 27, 2008 14:29:31

Сообщение GrigaN »

SergeBS писал(а): Проблема - с английским. 8-bit resolution - это 8-битное РАЗРЕШЕНИЕ, а не разрядность. Показывать будет цифирку - как обычно, но в 10 или 200 раз больше (от выбранного Ку зависит), чем при Ку=1, и 2 младших разряда из 10 будут плясать как хотят. Т.е. разрядность - 10 бит, а разрешение - 8 бит.
Все, спасибо, до меня дошло! Просто если читать только 8 бит, то дискретность измерений будет низкая, всего 2мв
Закрыто

Вернуться в «Микроконтроллеры и ПЛИС»