Мерил напряжения на ножках, оно находиться в пределах соотносимого напряжения (внутренние 2,56В) В VMLAB всё работает корректно. В чём может заключаться этот баг? Быть может дух АЦП покину грешное тело контроллера ? предпосылки к этому вероятны

![]() |
roboforum.ruТехнический форум по робототехнике. |
|
KiCom писал(а):Какое напряжение на вход АЦП подаешь?
-= Александр =- писал(а):Какое устанавливаешь ADMUX для каждого из каналов и к чему припаяны AVCC и AREF? Какая на них обвязка?
// запускаем последовательность так
ADCdone=0;
i=0;
ADMUX=_BV(REFS1)|_BV(REFS0)|0x06; // starting from battary voltage
sbi(ADCSRA,ADSC);
далльше анализируем по прерыванию
SIGNAL(SIG_ADC)
{
if (i==0)
{ADCData[0]=(ADCH<<8) + ADCL;
ADMUX=_BV(REFS1)|_BV(REFS0)|0x03; // next will be ADC3
sbi(ADCSRA,ADSC);
i++;
} else
{
ADCData[i]=(ADCH<<8) + ADCL;
i++;
if (i>4) {ADCdone=1;} else {ADMUX=_BV(REFS1)|_BV(REFS0)|(0x04 - i);sbi(ADCSRA,ADSC); }
}
}
Goofy писал(а):AVCC тоже что и Vcc AREF не подключён. AVCC через индуктивность, с конденсатором на землю. AREF оставлен без кондёра.
D-M писал(а):Goofy писал(а):AVCC тоже что и Vcc AREF не подключён. AVCC через индуктивность, с конденсатором на землю. AREF оставлен без кондёра.
:shock: :shock:
вы не чего непутаете?
AVCC через индуктивность к +5 обычно
и какже без опорного напряжения
или я что-то не так понял
Goofy писал(а):D-M писал(а):Goofy писал(а):AVCC тоже что и Vcc AREF не подключён. AVCC через индуктивность, с конденсатором на землю. AREF оставлен без кондёра.
:shock: :shock:
вы не чего непутаете?
AVCC через индуктивность к +5 обычно
и какже без опорного напряжения
или я что-то не так понял
всё правильно к +5 но через индуктивность. Устав твердит что так будет меньше шуму. Опорное напряжения подключается внутреннее, то есть 2,56В
D-M писал(а):я так и не понял вы AREF куда присоединили к земле или +5 ? :oops:
-= Александр =- писал(а):При внутреннем опорном требуется заземлить AREF кондером, желательно даже электролитом...
Читай даташит про ADCSRA - точно где-то в нем ошибка. Или прерывание не разрешил или вообще АЦП не включил...
Кстати могло и сгореть АЦП - у меня уже было такое, что один из каналов сгорел...
void InitADC ()
{
sbi(ADCSRA,ADEN); // ADC Enable
sbi(ADCSRA,ADIE); // Interrupt Enable
sbi(ADCSRA,ADPS2); // 4 vmlab
sbi(ADCSRA,ADPS1);
sbi(ADCSRA,ADPS0);
}
ADCData[i]=ADCL + (ADCH<<8);
Goofy писал(а):Суть косяка была в том, что сначала должно читаться ADCL, а потом тока ADCH.
avr123.nm.ru писал(а):Goofy писал(а):Суть косяка была в том, что сначала должно читаться ADCL, а потом тока ADCH.
а ... понятно ... т.е. задачу 11 курса
avr123.nm.ru/06.htm не читали.
И примеры C:\CVAVR\examples не смотрели.
А тобы читали бы результат из ADCW
и CVAVR автоматически прочитал
регистры в правильном порядке.
Рекомендую прочитать все же курс на будущее.
Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 0