roboforum.ru

Технический форум по робототехнике.
Текущее время: 18 фев 2025, 20:14

Часовой пояс: UTC + 4 часа




Начать новую тему Ответить на тему  [ Сообщений: 26 ]  На страницу 1, 2  След.
Автор Сообщение
 Заголовок сообщения: Проблема с АЦП Меги8
СообщениеДобавлено: 09 янв 2007, 18:27 
Не в сети

Зарегистрирован: 30 сен 2005, 14:04
Сообщения: 45
Откуда: Красноярск
прог. языки: C, C++
ФИО: Макаров Иван
Суть проблемы в том, что на выходе со всех задействованых каналов АЦП получаю 0x03FF, то есть максмальные 1023 10 разрядного АЦП...
Мерил напряжения на ножках, оно находиться в пределах соотносимого напряжения  (внутренние 2,56В) В VMLAB всё работает корректно. В чём может заключаться этот баг? Быть может дух АЦП покину грешное тело контроллера ? предпосылки к этому вероятны :))


Вернуться к началу
 Профиль  
 
 Заголовок сообщения:
СообщениеДобавлено: 09 янв 2007, 19:28 
Не в сети

Зарегистрирован: 22 окт 2005, 11:15
Сообщения: 345
Откуда: Красноярск
Какое напряжение на вход АЦП подаешь?


Вернуться к началу
 Профиль  
 
 Заголовок сообщения:
СообщениеДобавлено: 09 янв 2007, 20:48 
Не в сети

Зарегистрирован: 30 сен 2005, 14:04
Сообщения: 45
Откуда: Красноярск
прог. языки: C, C++
ФИО: Макаров Иван
KiCom писал(а):
Какое напряжение на вход АЦП подаешь?


На входе в момент тестов напряжение в пределах 0,5В, вольтметром проверено.


Вернуться к началу
 Профиль  
 
 Заголовок сообщения:
СообщениеДобавлено: 09 янв 2007, 20:57 
Не в сети
Мастер Самоделкин
Аватара пользователя

Зарегистрирован: 11 окт 2004, 19:20
Сообщения: 3678
Откуда: Россия, СПб
прог. языки: C/C++, Python, asm
ФИО: Курмис Александр Андреевич
Какое устанавливаешь ADMUX для каждого из каналов и к чему припаяны AVCC и AREF? Какая на них обвязка?


Вернуться к началу
 Профиль  
 
 Заголовок сообщения:
СообщениеДобавлено: 09 янв 2007, 21:46 
Не в сети

Зарегистрирован: 30 сен 2005, 14:04
Сообщения: 45
Откуда: Красноярск
прог. языки: C, C++
ФИО: Макаров Иван
-= Александр =- писал(а):
Какое устанавливаешь ADMUX для каждого из каналов и к чему припаяны AVCC и AREF? Какая на них обвязка?

ADMUX в соответствие внутреннему соотносимому 2,56 В и биты в соответсвие каналу, говорю же в эмуляторе работает.
AVCC тоже что и Vcc AREF не подключён. AVCC через индуктивность,  с конденсатором на землю. AREF оставлен без кондёра, вроде как не "по уставу", но работало на меге128.


код не совсем наглядный, тк преобразование начинается с ADC6, а потом последовательно от ADC3 к ADC0

Код:
// запускаем последовательность  так
      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 09 янв 2007, 21:59, всего редактировалось 2 раз(а).

Вернуться к началу
 Профиль  
 
 Заголовок сообщения:
СообщениеДобавлено: 09 янв 2007, 21:52 
Не в сети
Аватара пользователя

Зарегистрирован: 28 мар 2006, 17:28
Сообщения: 486
Откуда: Пенза
Goofy писал(а):
AVCC тоже что и Vcc AREF не подключён. AVCC через индуктивность,  с конденсатором на землю. AREF оставлен без кондёра.

:shock:  :shock:  :shock:
вы не чего непутаете?
AVCC через индуктивность к +5 обычно
и какже без опорного напряжения
или я что-то не так понял


Вернуться к началу
 Профиль  
 
 Заголовок сообщения:
СообщениеДобавлено: 09 янв 2007, 22:27 
Не в сети

Зарегистрирован: 30 сен 2005, 14:04
Сообщения: 45
Откуда: Красноярск
прог. языки: C, C++
ФИО: Макаров Иван
D-M писал(а):
Goofy писал(а):
AVCC тоже что и Vcc AREF не подключён. AVCC через индуктивность,  с конденсатором на землю. AREF оставлен без кондёра.

:shock:  :shock:  :shock:
вы не чего непутаете?
AVCC через индуктивность к +5 обычно
и какже без опорного напряжения
или я что-то не так понял

всё правильно к +5 но через индуктивность. Устав твердит что так будет меньше шуму. Опорное напряжения подключается внутреннее, то есть 2,56В


Вернуться к началу
 Профиль  
 
 Заголовок сообщения:
СообщениеДобавлено: 09 янв 2007, 23:06 
Не в сети
Мастер Самоделкин
Аватара пользователя

Зарегистрирован: 11 окт 2004, 19:20
Сообщения: 3678
Откуда: Россия, СПб
прог. языки: C/C++, Python, asm
ФИО: Курмис Александр Андреевич
При внутреннем опорном требуется заземлить AREF кондером, желательно даже электролитом...

Читай даташит про ADCSRA - точно где-то в нем ошибка. Или прерывание не разрешил или вообще АЦП не включил...

Кстати могло и сгореть АЦП - у меня уже было такое, что один из каналов сгорел...


Вернуться к началу
 Профиль  
 
 Заголовок сообщения:
СообщениеДобавлено: 10 янв 2007, 01:52 
Не в сети
Аватара пользователя

Зарегистрирован: 28 мар 2006, 17:28
Сообщения: 486
Откуда: Пенза
Goofy писал(а):
D-M писал(а):
Goofy писал(а):
AVCC тоже что и Vcc AREF не подключён. AVCC через индуктивность,  с конденсатором на землю. AREF оставлен без кондёра.

:shock:  :shock:  :shock:
вы не чего непутаете?
AVCC через индуктивность к +5 обычно
и какже без опорного напряжения
или я что-то не так понял

всё правильно к +5 но через индуктивность. Устав твердит что так будет меньше шуму. Опорное напряжения подключается внутреннее, то есть 2,56В


я так и не понял вы AREF куда присоединили к земле или +5 ?  :oops:


Вернуться к началу
 Профиль  
 
 Заголовок сообщения:
СообщениеДобавлено: 10 янв 2007, 07:28 
Не в сети

Зарегистрирован: 30 сен 2005, 14:04
Сообщения: 45
Откуда: Красноярск
прог. языки: C, C++
ФИО: Макаров Иван
D-M писал(а):
я так и не понял вы AREF куда присоединили к земле или +5 ?  :oops:


Никуда! Для того чтобы воспользоваться опорным напряжением внутри микрухи в 2.56, AREF не подключается или подключается к кер. конденсатору который висит на "земле" для лучшей помехозащиты.


Вернуться к началу
 Профиль  
 
 Заголовок сообщения:
СообщениеДобавлено: 10 янв 2007, 07:38 
Не в сети

Зарегистрирован: 30 сен 2005, 14:04
Сообщения: 45
Откуда: Красноярск
прог. языки: C, C++
ФИО: Макаров Иван
-= Александр =- писал(а):
При внутреннем опорном требуется заземлить AREF кондером, желательно даже электролитом...

Читай даташит про ADCSRA - точно где-то в нем ошибка. Или прерывание не разрешил или вообще АЦП не включил...

Кстати могло и сгореть АЦП - у меня уже было такое, что один из каналов сгорел...


Говорю же в ЭМУЛЯТОРОЕ РАБОТАЕТ, причём как нада (движками в ВМЛАБ меняется напряжение на каналах).  К тому же в пустом инициализированном массиве откуда взятся 0x03FF с моим алгоритмом. Уж работают прерыватья чтобы записать то 0x03FF с регистров на выходе с АЦП. А это уже резуальтат в реале, который лезет в мир через терминалку!

Код:
void InitADC ()
{
sbi(ADCSRA,ADEN); // ADC Enable
sbi(ADCSRA,ADIE); // Interrupt Enable
sbi(ADCSRA,ADPS2); // 4 vmlab
sbi(ADCSRA,ADPS1);
sbi(ADCSRA,ADPS0);
}


А все каналы сразу то почему отказали  ? :) по всем идёт 1023


Вернуться к началу
 Профиль  
 
 Заголовок сообщения:
СообщениеДобавлено: 10 янв 2007, 10:17 
Не в сети
отсылающий читать курс
Аватара пользователя

Зарегистрирован: 06 ноя 2005, 04:18
Сообщения: 14195
Откуда: Москва
пока уберите переключение каналов и разберитесь с одним - так проще.


Вернуться к началу
 Профиль  
 
 Заголовок сообщения:
СообщениеДобавлено: 10 янв 2007, 19:37 
Не в сети

Зарегистрирован: 30 сен 2005, 14:04
Сообщения: 45
Откуда: Красноярск
прог. языки: C, C++
ФИО: Макаров Иван
Суть косяка была в том, что сначала должно читаться ADCL, а потом тока ADCH.

То есть теперь запись в массив выглядит так:
Код:
ADCData[i]=ADCL + (ADCH<<8);


Две строчки в датащите и столько гимора без ведения о них :) Хоть восклицания поставили бы...


Вернуться к началу
 Профиль  
 
 Заголовок сообщения:
СообщениеДобавлено: 13 янв 2007, 11:59 
Не в сети
отсылающий читать курс
Аватара пользователя

Зарегистрирован: 06 ноя 2005, 04:18
Сообщения: 14195
Откуда: Москва
Goofy писал(а):
Суть косяка была в том, что сначала должно читаться ADCL, а потом тока ADCH.


а ... понятно ...   т.е. задачу 11 курса  

avr123.nm.ru/06.htm    не читали.

И примеры  C:\CVAVR\examples   не смотрели.

А тобы читали бы результат из ADCW
и CVAVR автоматически прочитал
регистры в правильном порядке.

Рекомендую прочитать все же курс на будущее.


Вернуться к началу
 Профиль  
 
 Заголовок сообщения:
СообщениеДобавлено: 13 янв 2007, 17:37 
Не в сети

Зарегистрирован: 30 сен 2005, 14:04
Сообщения: 45
Откуда: Красноярск
прог. языки: C, C++
ФИО: Макаров Иван
avr123.nm.ru писал(а):
Goofy писал(а):
Суть косяка была в том, что сначала должно читаться ADCL, а потом тока ADCH.


а ... понятно ...   т.е. задачу 11 курса  

avr123.nm.ru/06.htm    не читали.

И примеры  C:\CVAVR\examples   не смотрели.

А тобы читали бы результат из ADCW
и CVAVR автоматически прочитал
регистры в правильном порядке.

Рекомендую прочитать все же курс на будущее.


Предела у Вашей навязчивости, пожалуй, не существует :)))
Я работаю с ВинАВР


Вернуться к началу
 Профиль  
 
Показать сообщения за:  Поле сортировки  
Начать новую тему Ответить на тему  [ Сообщений: 26 ]  На страницу 1, 2  След.

Часовой пояс: UTC + 4 часа


Кто сейчас на конференции

Сейчас этот форум просматривают: Yandex [Bot] и гости: 0


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

Найти:
Перейти:  
cron
Powered by phpBB © 2000, 2002, 2005, 2007 phpBB Group
Русская поддержка phpBB
phpBB SEO