0 / 0 / 0
Регистрация: 10.05.2012
Сообщений: 91
1

Не работает АЦП Attiny461a

31.10.2012, 21:16. Показов 4792. Ответов 5
Метки нет (Все метки)

Author24 — интернет-сервис помощи студентам
АЦП в реальной выдает постоянно одно и тоже значение (0xFF) при любом напряжении на выводе ADC1.
В Протеусе все работает, а в реальной схеме нет.

Конфигурация вывода ADC1:
DDRA=0x00
PORTA=0x00

Инициализация АЦП:
Код
ADCSRA |=(0<< ADATE); // Режим одиночного преобразования АЦП
ADCSRA |=(1<<ADPS2) | (1<<ADPS1) | (1<<ADPS0); // Коэфф. деления предделителя АЦП =64
// частота преобраз.=62,5 кГц.
ADMUX |=(0<<REFS1) | (1<<REFS0)|(1<<ADLAR);    // Внешний ИОН (1,23 В), подкл. к выводу
//AREF
DIDR0 |=(1<<ADC1D) |(1<<ADC2D)|(1<<AREFD); // Отключаем цифровые буферы на выводах
//считывания аналоговых сигналов (для уменьш. токопотребления)
Функция считывания данных с АЦП:
Код
// Настройка входа для измерения напряжения
ADMUX &=~((1<<MUX5) | (1<<MUX4) | (1<<MUX3) | (1<<MUX2) | (1<<MUX1) | (1<<MUX0)); // Обнуляем предыдущие настройки
ADMUX |=((0<<MUX5) | (0<<MUX4) | (0<<MUX3) | (0<<MUX2) | (0<<MUX1) | (1<<MUX0)); // подкл. вход ADC1
ADCSRA|=(1<<ADIM);   //Вкл. АЦП
ADCSRA|=(1<<ADSC);   //Начать преобразование
while (!(ADCSRA &(1<<ADIF))) //Дождатся окончания преобразования
{
}
_delay_ms(100);
v=ADCL;
v=ADCH;
ADCSRA &=~(1<<ADIM);   //Выкл. АЦП
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
31.10.2012, 21:16
Ответы с готовыми решениями:

ATtiny461A не видит логическую единицу на входе ноги
Здравствуйте! Подскажите пожалуйста, может кто сталкивался с проблемой аналогичной! Задача состоит...

Не работает АЦП
Вечер добрый. Понадобилось мне АЦП сделать на меге8й, да вот испытания в Протеусе ничего хорошего...

Не работает АЦП меги48
Добрый день. Не могу никак запустить, не пойму, что я делаю не так. Нужно просто вывести значение...

atmega128a не правильно работает АЦП
Доброго дня Подскажите пожалуйста в чем может быть проблема Мне нужно по очерёдно опрашивать 4...

Не работает АЦП
Здравствуйте, столкнулся с проблемой работы АЦП в связки с ili9341 дисплеем. Такой же проект...

5
0 / 0 / 0
Регистрация: 01.09.2012
Сообщений: 125
01.11.2012, 14:22 2
вместо

Код
while (!(ADCSRA &(1<<ADIF))) //Дождатся окончания преобразования
попробуйте проверять конец преобразования так:

Код
while (ADCSRA&(1<<ADSC)) continue; //ждем пока ADSC не сбросится
есть мнение, что ADIF вы можете никогда не увидеть в этом цикле.
0
0 / 0 / 0
Регистрация: 10.05.2012
Сообщений: 91
02.11.2012, 15:07 3
Не помогло. Все также.
0
0 / 0 / 0
Регистрация: 08.02.2012
Сообщений: 648
02.11.2012, 20:43 4
Когда я в протеусе тестировал все было хорошо, но когда в реальности на atmega168v попытался использовать АЦП наткнулся на грабли, которые 3 недели пытался сломать, и в итоге сломал, но конечно не особо красиво, приведу немного свой код он на асме но думаю поймешь:

1) _OUT ADMUX,(0<<REFS1)|(0<<REFS0)|(1<<ADLAR)|(0<<MUX3)|(0<<MUX2)|(0<<MUX1)|(1<<MUX0) //Для АЦП источник сигнала пин ADC1
2) //пауза в ходе экспериментов подошла в 0,000025 секунд
3) _OUT ADCSRA,(1<<ADIM)|(1<<ADSC)|(0<<ADATE)|(0<<ADIF)|(0<<ADIE)|(1<<ADPS2)|(0<<ADPS1)| (1<<ADPS0) разовое получение данных
4) цикл пока в регистре ADIF (4-й бит ADCSRA) равен нулю, как только значение получено я перехожу к пункту 2, и так 3 раза.
5) LDS TROLLE,ADCH //результат измерений запишем в переменную TROLLE (Это на 4 раз измерений)
В процессе разбора оказалось что после настройки с какого пина брать информацию, необходини пауза, так в даташите было написано, т.к. необходимо время на переключение.
А остальные паузы это лишь экспериментально подобрал, при которых я смог стабильно и точно получать 8-ми бытный результат.
0
0 / 0 / 0
Регистрация: 01.09.2012
Сообщений: 125
07.11.2012, 11:06 5
а по другим каналам так же?
0
pomd1982
07.11.2012, 22:17 6
Если у вас АЦП выдает постоянно одно и тоже значение (0xFF). Возможно схемный дефект. Померьте на плате какой величины приходит реально сигнал не превышает ли он опору, также посмотрите напряжение опоры на AREF. Из программного, посмотрите не в единице ли бит 0 в регистре PRR, тоесть не отключено ли тактирование АЦП.
07.11.2012, 22:17
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
07.11.2012, 22:17
Помогаю со студенческими работами здесь

Не работает АЦП, HELP!!!
Никак не хочет работать АЦП, точнее не генерируется флаг окончания преобразования EOC. Выставляю...

Не работает АЦП STM32F407
Добрый вечер. Имеется следующий код: #include &quot;stm32f4xx.h&quot; // Device header ...

АЦП работает только в отладке.
Подскажите. Во время дебага АЦП работает хорошо. Но как только заливаю код в процессор, то ничего...

PinBoard II и attiny461A
День добрый. Подскажите, как залить программу на attiny461A с помощью pinboardII. Хотел попробовать...

АЦП работает в протеусе не работает в реале!(решена)
Подскажите кому не лень разобраться в чем трабла! Эленентарная прога проверки работы ацп. В...

не работает АЦП
Добрый день. Программа должна делать следующее: отправлять пакет инструкций на серву, и в момент,...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
6
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2024, CyberForum.ru