Перейти к содержанию

parovoZZ

Members
  • Постов

    169
  • Зарегистрирован

  • Посещение

Весь контент parovoZZ

  1. Десять единиц никак не могут дать напряжение иона, т.к. это минус один в дополнительном коде и один по модулю. Напряжение иона выдаёт код 1FF для положительного и 200 для отрицательного (в 16 ой системе). Далее. По формуле из даташита вычисляем, что при синфазном входном сигнале АЦП выдаст 0. Откуда пол-иона?
  2. parovoZZ

    АЦП - биполярный режим

    AREF - внутренний ИОН 1.1в Вот такой код снятия результатов: temp = ADC; if (ADCH & (1<<ADCH1)) // Если значение отрицательное { temp |= 0xFC00; temp = (~temp) + 1; } Value_current_lsb = (uint8_t)(temp >> 2); Никак не пойму - на выбранные дифф. входы надо подать 85 мВ, чтобы АЦП выдал 0. Но это могу списать на внутренний ОУ в виде УГ. Если подаю -1,1 в - то получаю 127. Здесь все верно. Но при подаче положительного смещения те же 127 получаю уже при 0,72в. Что за ерунда? Неужели ОУ на столько УГ? Либо же где-то теряется разряд?
  3. Что-то я тупанул. Это же речь про UART/ А тема вроде про SPI. Ну раз такие дела, то придется UART в качестве SPI погонять)
  4. Я вообще не к этому вел, а к тому, что по выходу ровно половина питания! Впрочем, просмотрел несколько даташитов InvenSense (не в пример пустым даташитам от STM) - offset указан. Но совсем не Vcc/2 (( А у какого-то микрофона на дифф выходе уже присутствует смещение в 10 мВ. Вот кому он такой нужен? Наверное, не так выразился. В свете того, что опопрное напряжение АЦП у меня меняется, то в униполярном режиме поиск виртуального нуля отнимает лишние такты. В биполярном режиме этот ноль вычислять не надо. Не понял, про какой сигнал речь? Самый маст хэв для моего случая - двухполупериодный выпрямитель. И я даже опробовал его. Но! Даже на диодах Шоттки он перестаёт работать на малых амплитудах. Хоть экспоненциальный усилитель ставь для компенсации)). Ну и обратная сторона - шумов нет вообще. Пороговый детектор можно выставлять хоть с самого младшего бита. У меня и между, и в процессе преобразования. Младший бит у меня уходит (а то и два), поэтому шумы от МК не сильно парят. АЦП тактируется 1 МГц. Ежели проц останавливать, то частота дискретизации падает до 24 кГц.
  5. В том-то вся и прелесть биполярного режима, что никаких программных нулевых точек не надо - АЦП её сам сформирует, если по входу постоянку скомпенсировать. Разве что смещение внутреннего ОУ скомпенсировать. Но мне оно особо не нужно. Это не сложно - это долго. Я сейчас вышел на частоту дискретизации порядка 30 кГц при 8 МГц тактовой. Ниже этой величины падать не хочу. А хочу подтянуться ещё выше. Но ведь датчики Холла существуют. Не подходит по диапазону напряжения. Я лучше малошумящий OPA поставлю, если таких немае.
  6. Мне надо на дифф каскады АЦП подать сигнал с целью последующей обработки в биполярном режиме.
  7. Так вот и скажи мне, что это за микрофон такой? Обычные электретные таким свойством не обладают. Мне не впадлу перебрать 150 даташитов, но вдруг кому известно что? Мне без разницы. Большинство мемсов - цифровые. Мне нужен аналоговый. Мои три экземпляра стабильны по величине напряжения, но кто знает, что будет в следующей партии? К тому же компенсировать такое кривое напряжение (478 мВ) я так с ходу и не знаю чем. А вот для половинки питания решения есть. По большому счету без разницы. Лишь бы оно было стабильно как от температуры, так и от гуляющего напряжения питания. Здесь и проблема - два одинаковых резистора будут жрать слишком много тока. Мне же надо столько тока, сколько просит входная цепь. Разумеется, здесь только интегральный делитель. Ни про какие резисторы даже слышать не хочу. Ну так ап)) том и речь.
  8. На32u4 на этой проверке все и застряло почему-то. Пока разбираться некогда.
  9. На выходе какого усилителя??? Не подлежит обсуждению. А мне нужен не обычный. Например, MP23AB02BTR - на выходе 478 мВ. Но это мало, даташитом не оговорено и не ясна стабильность.
  10. Ну, собственно, сабж. Питание - от 2.4 и до 3.6. На сигнальном выводе необходима половина напряжения питания (по постоянке, разумеется).
  11. Вот здесь косячокс - если в регистре ничего нет, то и работать не будет.
  12. Есть у меня структура. Допустим, 5 байт. Я создаю массив с элементами этой структуры. Скажем, мне надо 6 таких элементов. Разумеется, что я такой массив через указатель передаю.
  13. Завидую тем, кто на асме как рыба в воде, но у меня иммунитет на него. А через указатель? Правда, передача не возвращаемых параметров через указатель - перебор, не? -O3. Другие что-то не признаю) LD - косвенная адресация через X/Y/Z, LDS - прямая из SRAM. Из стека можно вытянуть командой LDS?
  14. проЕкт. Мы же на русском форуме? нет, не убирается. Но ради производительности готов пожертвовать всем, даже читабельностью. Даже ради инлайна готов отказаться от *.с файлов)) AN говорит об обратном. Ну и дизасм тоже. Правда, мне авторитетно заявили, что дизасм в симуляторе и дизасм готового бинарника несколько отличаются.
  15. Не секрет, что адресация глобальных переменных прямая, а переменных в стеке - косвенная. Стек в AVR программный, то бишь откусывается от ОЗУ. Так вот вопрос - при передаче в функцию (и обратно) больших объемов данных (которые невозможно передать через РОН) все же что будет производительнее - через глобальные переменные или через параметры? Понятно, что в функцию вида uint8_t My_super_function (uint8_t data); переменные уйдут через РОН, а вот в такую void My_super_function (uint8_t *data, uint8_t *ret); через стек? Так может ну его нафик, стек этот?
  16. Вот эта? http://we.easyelectronics.ru/Shematech/preparirovanie-sensornogo-vyklyuchatelya-livolo.html Схему можно и доработать, чтоб МК не использовать.
  17. Если вачдог, то ближайшее значение - 125 мс. Но если есть внешний наноамперный таймер - лучше им. Встроенный вачдог кушает 3-4 микроампера. В общем случае - нет. Кварц внешний кушает чуть больше, особенно в режиме full swing. Это однозначно нет. Ну, 2.5 года или 5 лет - оно того стоит, не правда ли? Как по мне, если мы с 5 лет доживем до 6 - уже все вопросы сняты.
  18. Output Compare Units, как гласит даташит для младших AVR. Зачем десять? Достаточно одного. Я так с вачдогом забавляюсь, когда надо выдерживать разные периоды времени.
  19. У счетчика же есть цифровые компараторы? Или есть МК, в которых их нет? К черту такой МК. Выставляем значение, которое нам нужно и всё. А дальше хоть флаг компаратора опрашивай, хоть в прерывание уходи. Зачем усложнять себе жизнь? Вот у меня работает АЦП, а также есть PCINT прерывание. Когда я ничего не делаю, я либо в IDLE, либо ADC_NOISE. Вот тут мне без доп флагов никак, т.к. обработчики прерываний совершенно пустые. А без них никак - тупо по флангам МК не просыпается. Для флага я использую регистр GPIOR.
  20. Я где-то писал, что это надо делать без прерываний? Вопрос был про флаги.
  21. А как узнать, что свой взвелся? Правильно - опросить его. Что мешает точно также опросить аппаратный флаг?
  22. Сбрасывается при входе в обработчик прерывания. Любого доступного события. Например, мы запускаем аппаратный счетчик и в его обработчике прерывания взводим некий флаг. Это имеет смысл только в одном случае - если МК в каком либо режиме сна и где-то в коде нам необходимо проверить из-за чего мы проснулись. В любом другом случае эффективнее самим опрашивать аппаратный флаг счетчика и самим же его сбрасывать. Если UART настолько быстр, что мы не успеваем обработать данные, то надо использовать кольцевой буфер и надеяться на паузы в общении, либо же менять МК. Опять-таки не вижу смысла в использовании флагов, дублирующих аппаратные.
  23. Я не про сами прерывания, а про дублирование аппаратных флагов своими.
×
×
  • Создать...