0 / 0 / 0
Регистрация: 10.05.2012
Сообщений: 91
|
|
1 | |
Не работает АЦП Attiny461a31.10.2012, 21:16. Показов 4792. Ответов 5
Метки нет (Все метки)
АЦП в реальной выдает постоянно одно и тоже значение (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
|
31.10.2012, 21:16 | |
Ответы с готовыми решениями:
5
ATtiny461A не видит логическую единицу на входе ноги Не работает АЦП Не работает АЦП меги48 atmega128a не правильно работает АЦП Не работает АЦП |
0 / 0 / 0
Регистрация: 01.09.2012
Сообщений: 125
|
|
01.11.2012, 14:22 | 2 |
вместо
Код
while (!(ADCSRA &(1<<ADIF))) //Дождатся окончания преобразования Код
while (ADCSRA&(1<<ADSC)) continue; //ждем пока ADSC не сбросится
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 | |
07.11.2012, 22:17 | |
Помогаю со студенческими работами здесь
6
Не работает АЦП, HELP!!! Не работает АЦП STM32F407 АЦП работает только в отладке. PinBoard II и attiny461A АЦП работает в протеусе не работает в реале!(решена) не работает АЦП Искать еще темы с ответами Или воспользуйтесь поиском по форуму: |