Страница 13 из 13
Re: АЦП. Разбор полётов
Добавлено: Сб авг 25, 2012 13:32:04
siamds
pokk ! Высылаю Вам программу с получением отрицательного результата разности ADC0 – ADC1. Программа промоделирована в Proteus’e. Для наглядности взят 4-х строчный LCD дисплей. Вы можете использовать 2-х строчный.
P.S. Для любителей поспорить: посмотрите, сколько дискрет на дисплее при 5-ти вольтах.
И прошу Вас коллеги, не пишите что Protes это всего-навсего симулятор. Не заставляйте меня проверять результат на макетке – результат будет тот же.
Re: АЦП. Разбор полётов
Добавлено: Сб авг 25, 2012 13:37:39
КРАМ
siamds писал(а):
И прошу Вас коллеги, не пишите что Protes это всего-навсего симулятор. Не заставляйте меня проверять результат на макетке – результат будет тот же.
Нет, мы не будем писать про протеус-симулятор. Мы будем писать,что это ниспосланное свыше озарение, кое нам принес божественный гений Лабс Электроник и его тайный посланник на Казусе - ТЕНЬ
http://kazus.ru/forums/member.php?u=30285 ...
Трепещите неверные!!!!
АКУЕТЬ!

Re: АЦП. Разбор полётов
Добавлено: Сб авг 25, 2012 15:20:22
pokk
siamds,Благодарю за проект. Но вы тут просто делаете считывание одного канала потом другого и вычитание ,а я же хотел использовать дифференциальный вход при котором сразу в ADCW считается отрицательное значение в коде двоичного дополнения.
Код: Выделить всё
ad_0=adc_data[0]; //Запись в ad_0 данных ADC0
ad_1=adc_data[1]; //Запись в ad_1 данных ADC1
sum_ad=ad_0-ad_1; //Запись в sum_ad разности ADC0-ADC1
Кстати CodeVisionAVR ругается на
Код: Выделить всё
register static unsigned char input_index=0;
"can't specify more than one storage class"
Си только начал изучать.Но я так понял что ему не понятно такой тип данных, но как сделать так что бы он понял не знаю.
Re: АЦП. Разбор полётов
Добавлено: Сб авг 25, 2012 17:02:01
siamds
pokk ! Так как Вы хотите у Вас, вероятно, не получиться и вот почему. В грубой форме это выглядит так: предположим, у нас подключен ADC0. Сигнал с этого PIN’a поступает на УВХ (Устройство Выборки-Хранения) и далее в ADCW. По окончанию цикла преобразования селектор подключает ADC1, и новые данные вновь поступают в ADCW, и так циклически подключая тот или иной канал ADC данные записываются и читаются ADCW последовательно, но не параллельно. Я не претендую на истину в последней инстанции, но, то, что я изучал, выглядит именно так.
У меня был компилятор, который тоже ругался на эту строку:
register static unsigned char input_index=0;
я вышел из положения следующим образом:
unsigned char input_index=0; записываем в область глобальных переменных
// register static unsigned char input_index=0; просто закомментируем эту строку
Re: АЦП. Разбор полётов
Добавлено: Сб авг 25, 2012 17:13:12
avreal
Любой компилятор C должен ругаться на применение в одной строке двух разных storage class (в данном случае static и register)
register static это такая же мура как и unsigned signed или long short
Re: АЦП. Разбор полётов
Добавлено: Сб авг 25, 2012 17:45:32
pokk
Я взял всё из даташита извините сразу не написал что использую atmeg128.

Re: АЦП. Разбор полётов
Добавлено: Пн авг 27, 2012 14:28:22
siamds
Уважаемый pokk! К сожалению, я не знаком с atmega128, а изучать этот МК, у меня просто нет времени. Так что извините, что не смог помочь Вам.
Re: АЦП. Разбор полётов
Добавлено: Пн авг 27, 2012 15:14:33
pokk
siamds, нечего страшного оказалось мне не надо отрицательный значения т.к сигнал поднят на какую-то постоянную составляющую =)