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

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

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

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

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

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


 
Опции темы
Непрочитано 22.05.2009, 13:49  
Segel06
Частый гость
 
Регистрация: 07.10.2006
Сообщений: 32
Сказал спасибо: 4
Сказали Спасибо 2 раз(а) в 2 сообщении(ях)
Segel06 на пути к лучшему
По умолчанию

Сообщение от IOPA4
Если ИОН внешний - то подали ли Вы питание на вывод AREF, если внутренний - то нужен кондер. Подключено ли питание к выводу AVCC? Легче будет если Вы выложите проект.
На выводе AREF кондер 0,1µ.
Питание к выводу AVCC подключено.

Вот кусок кода где я использую АЦП:

void main(void)
{
PORTA=0x00;
DDRA=0x00;

ADCSRA=0b10001110;
SFIOR=0b00000000;

while(1)
{
ADMUX=1;
ADCSRA|=0x40;
delay_ms(100);

ADMUX=2;
ADCSRA|=0x40;
delay_ms(100);
}
}

interrupt [ADC_INT] void adc_int(void)
{
int temp_l, temp_h;
temp_l=ADCL;
temp_h=ADCH;
}
Реклама:
Segel06 вне форума  
Непрочитано 22.05.2009, 14:06  
IOPA4
Почётный гражданин KAZUS.RU
 
Аватар для IOPA4
 
Регистрация: 07.05.2008
Адрес: Мурманск
Сообщений: 1,300
Сказал спасибо: 461
Сказали Спасибо 526 раз(а) в 273 сообщении(ях)
IOPA4 на пути к лучшему
По умолчанию

Ну я бы порекомендовал так, как это сделано в CVAVR

Код:
........
int volt1, volt2;
.......
//выбор входа
ADMUX=1;
// задержка необходима для стабилизации ADC
delay_us(10);
// старт измерения
ADCSRA|=0x40;
// ожидание пока не будет закончено измерение
while ((ADCSRA & 0x10)==0);
ADCSRA|=0x10;
volt1=ADCW;
Настройка АЦП:
Код:
// ADC initialization
// ADC Clock frequency: 1000,000 kHz
// ADC Voltage Reference: Int., cap. on AREF
ADMUX=0xc0 & 0xff;
ADCSRA=0x83;
IOPA4 вне форума  
Непрочитано 22.05.2009, 14:50  
andries5
Почётный гражданин KAZUS.RU
 
Регистрация: 19.02.2008
Сообщений: 1,808
Сказал спасибо: 124
Сказали Спасибо 604 раз(а) в 421 сообщении(ях)
andries5 на пути к лучшему
По умолчанию

Segel06, у Вас в начале каждого измерения
устанавливается режим сравнения с VREF, где должен
быть внешний потенциал.
while(1)
{
ADMUX=1; // ADMUX=0b00000001 верно ADMUX=0b01000001
ADCSRA|=0x40;
delay_ms(100);

ADMUX=2;
ADCSRA|=0x40;
delay_ms(100);
}
Если сравнение с AVCC, то ADMUX=0x40; // Инициализация ADC
При измерении ADMUX |= 0x01; //номер канала
и т.д. [/code]
andries5 вне форума  
Непрочитано 22.05.2009, 14:58  
Segel06
Частый гость
 
Регистрация: 07.10.2006
Сообщений: 32
Сказал спасибо: 4
Сказали Спасибо 2 раз(а) в 2 сообщении(ях)
Segel06 на пути к лучшему
По умолчанию

Сразу возникают вопросы

Код:
ADMUX=1; 
// задержка необходима для стабилизации ADC 
delay_us(10);
задержка необходима после каждого изменения содержимого ADMUX?

Код:
// ожидание пока не будет закончено измерение 
while ((ADCSRA & 0x10)==0);
Как я понимаю прерывание происходит только по окончании преобразования, поэтому при работе с прерыванием в этой строке отпадает необходимость.

Код:
volt1=ADCW;
В Datasheet на AtMega32 я не нашел ADCW, поэтому читаю по очереди ADCL, ADCH.

Код:
ADMUX=0xc0 & 0xff;
Почему эта строка оформлена таким образом вобще не понимаю...
Может моя ошибка в этом и заключается, данную строку при инициализации я не использую.
Segel06 вне форума  
Непрочитано 22.05.2009, 15:06  
andries5
Почётный гражданин KAZUS.RU
 
Регистрация: 19.02.2008
Сообщений: 1,808
Сказал спасибо: 124
Сказали Спасибо 604 раз(а) в 421 сообщении(ях)
andries5 на пути к лучшему
По умолчанию

Segel06.
В Datasheet на AtMega32 нет ADCW, но он описан в
заголовочном файле AtMega32, как 16 разрядный регистр.
Описан и в WINAVR-(iom32.h), и в CVAVR-(MEGA32.H).
andries5 вне форума  
Непрочитано 22.05.2009, 15:08  
Segel06
Частый гость
 
Регистрация: 07.10.2006
Сообщений: 32
Сказал спасибо: 4
Сказали Спасибо 2 раз(а) в 2 сообщении(ях)
Segel06 на пути к лучшему
По умолчанию

Сообщение от andries5
ADMUX=1; // ADMUX=0b00000001 верно ADMUX=0b01000001

Если сравнение с AVCC, то ADMUX=0x40; // Инициализация ADC
При измерении ADMUX |= 0x01; //номер канала
Благодарю.
Попробую так и сделать...
Segel06 вне форума  
Непрочитано 22.05.2009, 20:07  
ivashka_1
Частый гость
 
Регистрация: 05.05.2009
Сообщений: 29
Сказал спасибо: 3
Сказали Спасибо 0 раз(а) в 0 сообщении(ях)
ivashka_1 на пути к лучшему
По умолчанию

Сообщение от IOPA4



За три секунды можно написать "вольтметр" в CodeVisionAvr. Если есть трудности, то помогу.
Здраствуйте!
А можете подобную программку написать с выводом на 3-х значный семисегментный индикатор? (контроллер ATmega.
ivashka_1 вне форума  
Непрочитано 22.05.2009, 20:16  
IOPA4
Почётный гражданин KAZUS.RU
 
Аватар для IOPA4
 
Регистрация: 07.05.2008
Адрес: Мурманск
Сообщений: 1,300
Сказал спасибо: 461
Сказали Спасибо 526 раз(а) в 273 сообщении(ях)
IOPA4 на пути к лучшему
По умолчанию

Сообщение от ivashka_1
А можете подобную программку написать с выводом на 3-х значный семисегментный индикатор? (контроллер ATmega.
Проблем не вижу - ОК или ОА?
IOPA4 вне форума  
Непрочитано 22.05.2009, 20:23  
ivashka_1
Частый гость
 
Регистрация: 05.05.2009
Сообщений: 29
Сказал спасибо: 3
Сказали Спасибо 0 раз(а) в 0 сообщении(ях)
ivashka_1 на пути к лучшему
По умолчанию

ОА, но если что, я сам поправлю.
Да проблем и нет, просто у меня почему-то не работает вывод трехзначного числа на индикатор.
ivashka_1 вне форума  
Непрочитано 22.05.2009, 21:13  
Segel06
Частый гость
 
Регистрация: 07.10.2006
Сообщений: 32
Сказал спасибо: 4
Сказали Спасибо 2 раз(а) в 2 сообщении(ях)
Segel06 на пути к лучшему
По умолчанию

Ура! ЗАРАБОТАЛО!!!

Но все равно нужно разбираться...
Вначале сделал так как писал andries5, и подал 5В на 32ю ногу(AREF). Неработало ни в сммуляторе, ни в жизни...
Загрузил старую прошивку, но 5В с 32й не убирал...
и вот оно, работает.

Спасибо всем за помощь
Segel06 вне форума  
 

Закладки
Опции темы

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

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

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

Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Видео уроки dosikus Микроконтроллеры, АЦП, память и т.д 61 23.01.2012 21:06
Видео уроки (flash) Proteus 7.1 fmssp Proteus 5 13.08.2007 03:56
AVR уроки Рюмика chipic128 Proteus, KiCAD и другие ECAD 9 07.03.2007 21:46
уроки от LABCENTRE(PIC12F675+C) dosikus Микроконтроллеры, АЦП, память и т.д 22 09.10.2006 10:16


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


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