Помогите разобраться с программой

Вопросы настройки, программирования, прошивки микроконтроллеров и микросхем программируемой логики
Аватара пользователя
ARV
Ум, честь и совесть. И скромность.
Сообщения: 18544
Зарегистрирован: Чт дек 28, 2006 08:19:56
Откуда: Новочеркасск
Контактная информация:

Сообщение ARV »

АЦП измеряет мгновенное значение напряжения, которое тестером не измеришь никак. только осциллограф поможет. и тестер, кстати, измеряет не действующее, а средневыпрямленное значение (если тестер, конечно, не true-RMS, а обычный). да и зависимость между амплитудным и действующим напряжениями далеко не всегда просто коэффициент 0,7...
если рассматривать человека снизу, покажется, что мозг у него глубоко в жопе
при взгляде на многих сверху ничего не меняется...

Мой уютный бложик... заходите!
Ежик в тумане
Встал на лапы
Сообщения: 80
Зарегистрирован: Ср ноя 28, 2007 09:42:28

Сообщение Ежик в тумане »

ARV писал(а):АЦП измеряет мгновенное значение напряжения, которое тестером не измеришь никак. только осциллограф поможет. и тестер, кстати, измеряет не действующее, а средневыпрямленное значение (если тестер, конечно, не true-RMS, а обычный). да и зависимость между амплитудным и действующим напряжениями далеко не всегда просто коэффициент 0,7...


а можно здесь немного по подробнее, а то я думаю что ацп одно измеряет, а на самом деле совсем другое напряжение... Буду очень признательна :)
Аватара пользователя
ARV
Ум, честь и совесть. И скромность.
Сообщения: 18544
Зарегистрирован: Чт дек 28, 2006 08:19:56
Откуда: Новочеркасск
Контактная информация:

Сообщение ARV »

а чего ж тут поподробнее сказать? тестер меряет долго, грубо говоря несколько периодов... и это нечто усредненное и показывает... а АЦП делает "вырезку" из кривой напряжения, т.е. снимает мгновенную амплитуду в момент измерения... чтобы "показания" АЦП как-то совпали с тестеровыми - надо эти "нарезки" делать долго (и часто-часто) и точно так же "усрединить" (или как-то иначе обработать по алгоритму тестера)...
если рассматривать человека снизу, покажется, что мозг у него глубоко в жопе
при взгляде на многих сверху ничего не меняется...

Мой уютный бложик... заходите!
MetEl
Вымогатель припоя
Сообщения: 543
Зарегистрирован: Чт окт 18, 2007 16:45:30
Откуда: из Питера

Сообщение MetEl »

хочется посоветовать метод - "на оборот".
Тоесть, подайте на вход ацп МК то напряжение которое надо и нажмите кнопку запомнить(напишите так).
И не парьтесь вообще с вычислениями (не хорошё конечно...).

Ещё интересно , а откуда вы 4,09В берёте???
Что схема специально такая...???
простое чмо, выдумщик
MetEl
Вымогатель припоя
Сообщения: 543
Зарегистрирован: Чт окт 18, 2007 16:45:30
Откуда: из Питера

Сообщение MetEl »

На самом деле, без осцила, тут и делать не чего. При такой ситуации. Вы просто не знаете что у вас на входе мк. Фиг его знает что там после этой микрухи. А пичков или помех тестер не покажет! Усреднит, отфильтрует, не успеет, али ещё как.

Если у вас там частота а вы мериете(тестором) в режиме постоянного замера, то результат на экране, не сказать что бредовый. Но и близко не лежит к правильному. Что то правда похожее от 0,7*U действ.

Ели есть осцил, обязательно посмотрите!!
Ещё раз прошу схему. Т.к. всё новые и новые интересные горизонты в этом тумане...

ЗЫ: Как ребятам не надоело, просто, диву даюсь...
простое чмо, выдумщик
Ежик в тумане
Встал на лапы
Сообщения: 80
Зарегистрирован: Ср ноя 28, 2007 09:42:28

Сообщение Ежик в тумане »

ЭЭЭЭ, ну на счет схемы пока не могу выложить... Тестером я измеряю в режиме переменного напряжения... Конечно же и осциллографом я смотрела сигналы и на входе у-ва и на фильтрах и на их выходе/входе ацп и двумя лучами сразу и значения напряжений измеряла с помощью осциллографа и в ручную и автоматом... осциллограф цифровой тектроникс называется... а без вычислений не получится... к сожалению - это к методу "на оборот"..........
MetEl
Вымогатель припоя
Сообщения: 543
Зарегистрирован: Чт окт 18, 2007 16:45:30
Откуда: из Питера

Сообщение MetEl »

Ежик в тумане писал(а):***
ацп, то в программе используются данные только одного регистра ADCH, при этом стоит выравнивание результата по левой границе...

Я не смотрел описалово на мегу8.
Но там точно АЦП 8-м бит?
Или точно, прописаны регистры, чтоб он так работал?
И переменная unsigned char, тогда должна быть.
Вроде 10-ть.
Тогда unsigned int.


Подключите восемь светодиодов и выводите на них значения полученное АЦП. Увидите реально, что "видит" ацп. И сразу поймёте ошибку в программе, или вообще что то новое узнаете(что не редкость). Если есть такая возможность.
Последний раз редактировалось MetEl Ср июн 25, 2008 21:56:42, всего редактировалось 1 раз.
простое чмо, выдумщик
Ежик в тумане
Встал на лапы
Сообщения: 80
Зарегистрирован: Ср ноя 28, 2007 09:42:28

Сообщение Ежик в тумане »

Во первых у меня мега 16..
во вторых ацп там 10-ти разрядное. но я использую только 8 разрядов... и переменная у меня unsigned char...
MetEl
Вымогатель припоя
Сообщения: 543
Зарегистрирован: Чт окт 18, 2007 16:45:30
Откуда: из Питера

Сообщение MetEl »

изини, попутал.
если ADLAR = 1
то
регистр ADCH ; ADCL
порядок бит 76543210 ; 76543210
разряд 98765432 ;10хххххх

т.е. 0 и 1 биты будут в ADCL. А ты их теряешь!!!
Может я не понятно написал, смотри сдесь -http://www.gaw.ru/html.cgi/txt/doc/micros/avr/arh128/12.htm
Это для атмеги 128, но уверен атмега 16 тоже самое. Проверь если хочешь.
ВНИМАТЕЛЬНО!
простое чмо, выдумщик
Ежик в тумане
Встал на лапы
Сообщения: 80
Зарегистрирован: Ср ноя 28, 2007 09:42:28

Сообщение Ежик в тумане »

Да, правильно я эти 2 бита теряю...
в Вашей ссылке, к стати спасибо за нее огромное, написано в самом конце:
"Левосторонний формат представления результата удобно использовать, если достаточно 8 разрядов. В этом случае 8-разрядный результат хранится в регистре ADCH и, следовательно, чтение регистра ADCL можно не выполнять. При правостороннем формате необходимо сначала считать ADCL, а затем ADCH."
Что я собственно и делаю...
MetEl
Вымогатель припоя
Сообщения: 543
Зарегистрирован: Чт окт 18, 2007 16:45:30
Откуда: из Питера

Сообщение MetEl »

тоесть, роботаешь с битами с 7-2 ?
98765432 10
хх765432 10
ххdddddd xx
хх76543210
Я так это понинаю, то что там написано, и в этих долбанных датаШИТах!
Последний раз редактировалось MetEl Ср июн 25, 2008 23:25:37, всего редактировалось 1 раз.
простое чмо, выдумщик
Ежик в тумане
Встал на лапы
Сообщения: 80
Зарегистрирован: Ср ноя 28, 2007 09:42:28

Сообщение Ежик в тумане »

Все таки хочу разобраться с напряженем, мой фильтр работает как однополупериодный выпрямитель, т.е. на его выходе только одна положительная полуволна синуса ... Рисовать не охота. попробую на словах объяснить... Если смотреть сигнал осцил. то на входе видим синус ,который относительно оси измерения на осцил. делится на положительную полуволну и отрицательную ровно по полам. Далее на выходе этого фильтра= входе ацп наблюдаем отнсительно земли одну полуволну. но она равна не 1/2 от синуса, а равна 1/2 от синуса+0,7В, эти 0,7В это вроде как кусочек отрицательной полуволны, которая создается за счет падения напряжения на диодах в фильтре ну как то так примерно, т.е. эти 0,7В опущены вниз относительно оси измерения. Не знаю как бы это все по понятней объяснить... Вопрос в том, что измеряет АЦП? Только положительную полуволну или её же но еще +0,7В? я совсем запуталась....
Ежик в тумане
Встал на лапы
Сообщения: 80
Зарегистрирован: Ср ноя 28, 2007 09:42:28

Сообщение Ежик в тумане »

MetEl писал(а):тоесть, роботаешь с битами с 7-2 ?
98765432 10
dddddddd xx

И что ты получаешь?
Вместо числа 4-е , число 1-н?
00000001 00
00000001


ЗЫ: Я так это понинаю, то что там написано, и в этих долбанных датаШИТах!


Если посмотреть в ссылке на таблицу в самом конце текста где написано ADLAR=1, то нетрудно увидеть что я работаю с битам ADC9-ADC2...или я чего то не так понимаю?
MetEl
Вымогатель припоя
Сообщения: 543
Зарегистрирован: Чт окт 18, 2007 16:45:30
Откуда: из Питера

Сообщение MetEl »

да , но начинается слово с ADС0 а это 7-й(по порядку) бит ADCL.
Ну смотри.

ADCH ; ADCL
11111111; 11xxxxxx = 1023
11111111 =255.
Но АЦП оцифровал как 1023 а ты думаешь что это 255.
Пнимаешь?

Он работает на 10ть бит! Ты гденить видела какойнить регистр чтоб переводить его работу на 8-м бит.
Нет , я тоже.

Считаю что он всегда выдает 10бит!
А то что там внизу чегото то... это для сверх умов, которые и не такое писали, и процев запрогили больше чем я морковок съел.
простое чмо, выдумщик
Ежик в тумане
Встал на лапы
Сообщения: 80
Зарегистрирован: Ср ноя 28, 2007 09:42:28

Сообщение Ежик в тумане »

Я тоже согласна , что ацп всегда выдает 10бит... но эти 10 бит можно по разному записать и считать... по умолчанию результат сохраняется как при ADLAR=0, т.е. старшие 9 и 8 биты сохраняются в регистре ADCL а биты 7-0 в регистре ADCH. В этом случае первым необходимо считать регистр ADCL , т.к. если начать чтение с ADCH тогда старшие разряды будут потеряны.
Если настроить ацп так ADLAR=1, результат будет выравниваться по левому краю, т.е. старшие разряды 9-2 (наиболее значимые) будут сохраняться в регистре ADCH, а два младших в регистре ADCL... Если для точности преобразования достаточно 8 разрядов. то регистр ADCL можно совсем не считывать... Вот примерно так я понимаю...
MetEl
Вымогатель припоя
Сообщения: 543
Зарегистрирован: Чт окт 18, 2007 16:45:30
Откуда: из Питера

Сообщение MetEl »

Может так?

если ADLAR = 0
то
регистр ADCH ; ADCL
порядок бит 76543210 ; 76543210
разряд хххххх98 ; 76543210 //результат АЦП

если ADLAR = 1
то
регистр ADCH ; ADCL
порядок бит 76543210 ; 76543210
разряд 98765432 ; 10хххххх //результат АЦП
Последний раз редактировалось MetEl Ср июн 25, 2008 23:35:13, всего редактировалось 1 раз.
простое чмо, выдумщик
MetEl
Вымогатель припоя
Сообщения: 543
Зарегистрирован: Чт окт 18, 2007 16:45:30
Откуда: из Питера

Сообщение MetEl »

т.е если нормально(а не левосторонний, как там это называется)
Ститывай только ADCL
76543210
11111111 = 255
Если зачем то не нормально(такой режим назван - левосторонним, зачем то)
То считывай ADCH. и сдвигай(необходимо) его на два бита вправо.
98765432
00111111 то что осталось от 255, но иеет значение = 63
<<2 // сдвигай на два разряда вправо
11111100 = 252 //как ты и хотела, с округлением(потерей) младших двух бит.

Терь можно(нужно) проверить ошибку.
Какие показания и на сколько у тебя отличались.
К примеру 3и В должны были = 187
А программа (не ты, а МК делает то и как ты написала(!)) понимает как 46.
46*0,016=0,8В.
Хотя это не правильный поиск ошибки по результату...

Главное сейчас не забудь, что у тебя 10ть бит и надо 4В/1024 = 0,004
Значит обратно 3В/0,004 = 750 // 0х02 ЕЕ
Т.е всё таки прийдётся использовать два регистра.
unsigned int a;
a=0;
а=ADCL+ADCH; // или а=ADCL|ADCH;

Ну или как там это у тебя выглядывается...)))
простое чмо, выдумщик
MetEl
Вымогатель припоя
Сообщения: 543
Зарегистрирован: Чт окт 18, 2007 16:45:30
Откуда: из Питера

Сообщение MetEl »

Вот как это нормально, должно было, написано, быть.
Вложения
Результат-АЦП-атмега.jpg
лмчно мне, вот так понятно...
(46.41 КБ) 444 скачивания
простое чмо, выдумщик
Ежик в тумане
Встал на лапы
Сообщения: 80
Зарегистрирован: Ср ноя 28, 2007 09:42:28

Сообщение Ежик в тумане »

Вы хотите сказать, что даташит на правильно написан?... Вы меня в конец запутали...
Аватара пользователя
ARV
Ум, честь и совесть. И скромность.
Сообщения: 18544
Зарегистрирован: Чт дек 28, 2006 08:19:56
Откуда: Новочеркасск
Контактная информация:

Сообщение ARV »

MetEl писал(а):
Ежик в тумане писал(а):*** Если для точности преобразования достаточно 8 разрядов. то регистр ADCL можно совсем не считывать... Вот примерно так я понимаю...

Это ты, ошиблась и навыдумывала, вследствии не правильного изложения и потери смысловой цепочки в этих долбаных датаШИТах!!!
И в том числе не грамотных(не для нашего менталитета(не штампованного сознания)) переводов!!!
И притом, не ты одна!!

1. Ежик в тумане: заблуждаетесь в одном: ADCL и ADCH всегда надо считывать оба, это использовать ненужное необязательно, а вот считывать - только оба.
2. MetE: ошибаетесь. уменьшение разрядности АЦП по желанию разработчика вегда было, есть и будет. И Ежик в тумане абсолютно правильно поступает (если это, конечно, действительно необходимо). Не надо резких высказываний, ибо они в первую очередь применимы к вам.
если рассматривать человека снизу, покажется, что мозг у него глубоко в жопе
при взгляде на многих сверху ничего не меняется...

Мой уютный бложик... заходите!
Закрыто

Вернуться в «Микроконтроллеры и ПЛИС»