Реклама на сайте English version  DatasheetsDatasheets

KAZUS.RU - Электронный портал. Принципиальные схемы, Datasheets, Форум по электронике

Новости электроники Новости Литература, электронные книги Литература Документация, даташиты Документация Поиск даташитов (datasheets)Поиск PDF
  От производителей
Новости поставщиков
В мире электроники

  Сборник статей
Электронные книги
FAQ по электронике

  Datasheets
Поиск SMD
Он-лайн справочник

Принципиальные схемы Схемы Каталоги программ, сайтов Каталоги Общение, форум Общение Ваш аккаунтАккаунт
  Каталог схем
Избранные схемы
FAQ по электронике
  Программы
Каталог сайтов
Производители электроники
  Форумы по электронике
Помощь проекту

Микроконтроллеры, АЦП, память и т.д Темы касающиеся микроконтроллеров разных производителей, памяти, АЦП/ЦАП, периферийных модулей...

 
Опции темы
Непрочитано 01.11.2011, 13:25  
alberio
Гражданин KAZUS.RU
 
Аватар для alberio
 
Регистрация: 08.07.2006
Сообщений: 583
Сказал спасибо: 76
Сказали Спасибо 90 раз(а) в 66 сообщении(ях)
alberio на пути к лучшему
Вопрос Глюк АЦП ATmega128

Столкнулся с непонятным глюком.
АЦП считывает чепуху. Опора - внутреняя, AVCC = 5В.
Источник сигнала - повторитель.

Еще веселей стало, когда я настроил входной канал "0В(GND)", и получил тоже чепуху вместо 0. Значит - код. Но он-то должен работать

PHP код:
#define ADC_REF_AREF    ((0‹‹REFS1)|(0‹‹REFS0))
#define ADC_REF_AVCC    ((0‹‹REFS1)|(1‹‹REFS0))
#define ADC_REF_UNDEF   ((1‹‹REFS1)|(0‹‹REFS0))
#define ADC_REF_INT     ((1‹‹REFS1)|(1‹‹REFS0))

#define ADC_CH_MAIN        (0)
#define ADC_CH_BGR        (0x1E)
#define ADC_CH_GND        (0x1F) 
PHP код:
void tADC::Init (unsigned char cfg)    
{
 
ADMUX  cfg;
}
signed int tADC::Read(unsigned char ch)
{
  
Word adc_val;
  
  
ADMUX &= ~0x1F;
  
ADMUX |= ch;
  
ADCSRA| =(1‹‹ADSC);
  while (
ADCSRA&(1‹‹ADSC));
  
  
adc_val.Bytes.Low.uchar  ADCL;
  
adc_val.Bytes.High.uchar ADCH;
 
  return 
adc_val.sint;

PHP код:
ADconverter.Init(ADC_REF_INT);
/*-------------------*/
adresult ADconverter.Read (ADC_CH_GND); 
Реклама:
__________________
Sex, Druggs, Rock&Roll
alberio вне форума  
Сказали "Спасибо" alberio
warel (28.06.2019)
Непрочитано 01.11.2011, 14:10  
nonamedov
Почётный гражданин KAZUS.RU
 
Регистрация: 06.06.2008
Сообщений: 1,530
Сказал спасибо: 78
Сказали Спасибо 427 раз(а) в 365 сообщении(ях)
nonamedov на пути к лучшему
По умолчанию Re: Глюк АЦП ATmega128

Скорее всего, проблема с переменной Word adc_val, это же структура, надо ее объявить как глобальную переменную и работать по ссылке или отметить как static, так как после выхода из функции временная переменная теряется.

Последний раз редактировалось nonamedov; 01.11.2011 в 14:27.
nonamedov вне форума  
Сказали "Спасибо" nonamedov
warel (28.06.2019)
Непрочитано 01.11.2011, 14:32  
alberio
Гражданин KAZUS.RU
 
Аватар для alberio
 
Регистрация: 08.07.2006
Сообщений: 583
Сказал спасибо: 76
Сказали Спасибо 90 раз(а) в 66 сообщении(ях)
alberio на пути к лучшему
По умолчанию Re: Глюк АЦП ATmega128

она не должна быть глобальной, используется чтоб "слепить вкучу" ADCL и ADCH.
После
PHP код:
return adc_val.sint
она мне не нужна.
Да и в этом проблема - отладчиком смотрел - в регистрах ADCL/ADCH чепуха....
__________________
Sex, Druggs, Rock&Roll
alberio вне форума  
Сказали "Спасибо" alberio
warel (28.06.2019)
Непрочитано 01.11.2011, 15:15  
nonamedov
Почётный гражданин KAZUS.RU
 
Регистрация: 06.06.2008
Сообщений: 1,530
Сказал спасибо: 78
Сказали Спасибо 427 раз(а) в 365 сообщении(ях)
nonamedov на пути к лучшему
По умолчанию Re: Глюк АЦП ATmega128

А чему равны ADMUX и ADCSRA и как меняется ch?
nonamedov вне форума  
Сказали "Спасибо" nonamedov
warel (28.06.2019)
Непрочитано 01.11.2011, 15:21  
alberio
Гражданин KAZUS.RU
 
Аватар для alberio
 
Регистрация: 08.07.2006
Сообщений: 583
Сказал спасибо: 76
Сказали Спасибо 90 раз(а) в 66 сообщении(ях)
alberio на пути к лучшему
По умолчанию Re: Глюк АЦП ATmega128

ADMUX = 0xDF
ADCSRA = 0x80

ch не меняется - постоянно 0x1F
__________________
Sex, Druggs, Rock&Roll
alberio вне форума  
Сказали "Спасибо" alberio
warel (28.06.2019)
Непрочитано 01.11.2011, 15:34  
nonamedov
Почётный гражданин KAZUS.RU
 
Регистрация: 06.06.2008
Сообщений: 1,530
Сказал спасибо: 78
Сказали Спасибо 427 раз(а) в 365 сообщении(ях)
nonamedov на пути к лучшему
По умолчанию Re: Глюк АЦП ATmega128

Думаю, при каждом запуске стоит сбрасывать и бит ADIF.
nonamedov вне форума  
Сказали "Спасибо" nonamedov
warel (28.06.2019)
Непрочитано 01.11.2011, 15:42  
nonamedov
Почётный гражданин KAZUS.RU
 
Регистрация: 06.06.2008
Сообщений: 1,530
Сказал спасибо: 78
Сказали Спасибо 427 раз(а) в 365 сообщении(ях)
nonamedov на пути к лучшему
По умолчанию Re: Глюк АЦП ATmega128

Его надо сбрасывать при изменение канала (ADMUX), видимо, выборка происходит по каналу ADC0 (после ADMUX &= ~0x1F, который болтается.
nonamedov вне форума  
Сказали "Спасибо" nonamedov
warel (28.06.2019)
Непрочитано 01.11.2011, 15:44  
alberio
Гражданин KAZUS.RU
 
Аватар для alberio
 
Регистрация: 08.07.2006
Сообщений: 583
Сказал спасибо: 76
Сказали Спасибо 90 раз(а) в 66 сообщении(ях)
alberio на пути к лучшему
По умолчанию Re: Глюк АЦП ATmega128

Абсолютно никакой разницы. И еще в шпротеусе работает как надо, что наталкивает на мысль о железе. Но там нечему быть неправильным. +5 через катушку 1,2 мкГн на AVCC и AREF, емкость 0,1мкФ об землю, +5В есть. Опора - внутренняя. Сигнал - внутренний. Контроллер - новый...
__________________
Sex, Druggs, Rock&Roll
alberio вне форума  
Сказали "Спасибо" alberio
warel (28.06.2019)
Непрочитано 01.11.2011, 15:50  
nonamedov
Почётный гражданин KAZUS.RU
 
Регистрация: 06.06.2008
Сообщений: 1,530
Сказал спасибо: 78
Сказали Спасибо 427 раз(а) в 365 сообщении(ях)
nonamedov на пути к лучшему
По умолчанию Re: Глюк АЦП ATmega128

А по какому каналу происходит выборка?
nonamedov вне форума  
Сказали "Спасибо" nonamedov
warel (28.06.2019)
Непрочитано 01.11.2011, 15:54  
alberio
Гражданин KAZUS.RU
 
Аватар для alberio
 
Регистрация: 08.07.2006
Сообщений: 583
Сказал спасибо: 76
Сказали Спасибо 90 раз(а) в 66 сообщении(ях)
alberio на пути к лучшему
По умолчанию Re: Глюк АЦП ATmega128

канал ADC0
__________________
Sex, Druggs, Rock&Roll
alberio вне форума  
Сказали "Спасибо" alberio
warel (28.06.2019)
 

Закладки

Метки
atmega128, ацп, глюк
Опции темы

Ваши права в разделе
Вы не можете создавать новые темы
Вы не можете отвечать в темах
Вы не можете прикреплять вложения
Вы не можете редактировать свои сообщения

BB коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.

Быстрый переход

Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
АЦП в ATMega128 CMP_SYS Микроконтроллеры, АЦП, память и т.д 5 18.02.2011 23:01
АЦП на Atmega128 Fan79 Микроконтроллеры, АЦП, память и т.д 15 16.09.2010 20:40
ATmega128 АЦП alberio Микроконтроллеры, АЦП, память и т.д 4 05.06.2010 08:07
АЦП atmega128 и DTMF 4ubaika Микроконтроллеры, АЦП, память и т.д 7 23.07.2007 10:11
АЦП Atmega128 4ubaika Микроконтроллеры, АЦП, память и т.д 0 18.03.2007 14:50


Часовой пояс GMT +4, время: 14:13.


Powered by vBulletin® Version 3.8.4
Copyright ©2000 - 2024, Jelsoft Enterprises Ltd. Перевод: zCarot