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

Ruslan1

Свой
  • Постов

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

  • Посещение

  • Победитель дней

    3

Ruslan1 стал победителем дня 7 июля 2023

Ruslan1 имел наиболее популярный контент!

Репутация

17 Хороший

1 Подписчик

Информация о Ruslan1

  • Звание
    Гуру
    Гуру
  • День рождения 09.01.1973

Контакты

  • Сайт
    Array
  • ICQ
    Array

Информация

  • Город
    Array

Посетители профиля

16 121 просмотр профиля
  1. Помедитировал над документацией. Да, фильтры у них разные, но меня сейчас интересует семплрейт, полоса по уровню -3dB, и SNR. Разочаровался в 32-битках. Переход на 32 бита не дает (пока что) выигрыша в SNR. Так что не вижу смысла, буду думать про 24 бита. Многоканалки лучше у Аналога (AD4134): 1.25 kSPS (BW=433 Hz): 132 dB А одноканалка бодрее выглядит у Тексаса (ADS127L11): 1kSPS (BW=442 Hz): 134.9 dB, 400 SPS (BW=105 Hz) : 140.6 dB. Ну и на борту разные фильтры, очень перспективно. Если сравнить с флагманской 32-биткой LTC2500-32 : у нее подобные 1kSPS(450Hz):133 dB, но цена раз в 6 больше.
  2. ааа.... Базар не обмануть. Но, все-таки для LTC я вижу частоты ниже 10 Гц и величины там неплохие. Нет. Сейсмика.
  3. DC не нужно, а вот 0.1 Гц интересует. Да, фликер важен и становится ключевой проблемой. Уже вступал я в это болото, но успешно всё забыл.
  4. Начал писать ответ, и вспомнил, что уже бодался именно с этим AD7768. И именно в области низких частот (единицы и доли Гц) были проблемы получить нужное. Сейчас я его использую в режиме "Low power (LP)", и имею 123 dB @ 1 ksps (как и в даташите). Но если перейти в Fast Mode (123 dB @ 8 ksps), то лучше, кажется, не получалось. Согласно картинкам из даташита, там поведение на НЧ разное, и для "Fast" оно растет быстрее в области низких частот. Но, к сожалению, ничего не пишут про частоты ниже 10 Гц. P.S. Принесли попробовать EVB LTC2508, погляжу. К сожалению, там единственный фильтр внутри, который дает BW(-3dB) = SPS/8. Но картинки в даташите явно красивее, чем AD7768, причем нарисовано от 0 Гц.
  5. Подскажите, пожалуйста: Если в даташите написано, что АЦП (AD7768) умеет выдать наружу 123 dB @ 8 kSPS (BW = 3500 Hz), то я правильно прогнозирую, что могу достичь дополнительной обработкой в процессоре: 126 dB @ 4000 SPS (BW = 1750 Hz). 129 dB @ 2000 SPS (BW = 875 Hz). 132 dB @ 1000 SPS (BW = 437 Hz). 135 dB @ 500 SPS (BW = 218 Hz) 138 dB @ 250 SPS (BW = 109 Hz) 141 dB @ 125 SPS (BW = 54 Hz) 144 dB @ 62 SPS (BW = 27 Hz) Я прав? или жестоко ошибаюсь?
  6. Очень кривое, согласен. Если захочу выпрямить- то, надеюсь, придумаю, как разное число FF забивать через макрос. Это у меня уже было и работало. Но я не пробовал память размещения кода бить на два сегмента. То есть у меня сначала один сегмент кода, а потом (в конце программного флеша)- сегмент моих данных. Бинарник получается всегда размером с флеш: в начале программа, потом пустота неиспользуемая, потом мой сегмент данных. Неоптимально для программирования: и файл большой, и стирать-записывать каждый раз всю флеш, хотя используется не всё пространство. Так что сунул просто внутрь кода и разрешил линкеру задвигать какк он хочет. Так меньше страницы пустоты в бинарнике имею. Это проще, чем от бинарника отказываться или городить что-то специфическое для программирования. дада. мне кажется, это самый простой (быстрый и предсказуемый и красивый) вариант для того что я хочу.
  7. Наверное, Вы правы. Чтобы без вычислизма то можно наверное и с union. typedef union { myFlashData_t MyData; uint8_t foo[NVMEM_SIZE]; // not used. Just for memory reservation up to full used Flash Memory }FlashMem2_t; Но там появляются вопросы как проиниализировать: мне нужно чтобы первые myFlashData_t величин были заданными мной, а далее 0xFF. Со структурой я просто задаю сначала myFlashData_t данных, а потом через запятую нужное мне количество 0xFF дописываю. А с юнионом как? Я тут "кавалерийским наскоком" попробовал несколько вариантов- не получается красиво: либо мои величины надо в uint8_t переводить и описывать в поле "foo", либо не знаю как добавить 0xFF.
  8. да, так сейчас и делаю. из "заточек" только выравнивание. #define NVMEM_SIZE CPU_INTFLASH_PAGELENGTH*2 typedef struct { myFlashData_t MyData; uint8_t foo[NVMEM_SIZE - sizeof(myFlashData_t)]; // not used. Just for memory reservation up to full used Flash Memory }FlashMem2_t; const FlashMem2_t FactoryResetConstants __ALIGNED(CPU_INTFLASH_PAGELENGTH) = { // here: data as in myFlashData_t };
  9. Большое спасибо! Уже вижу, что подходящих АЦП сильно больше, чем выборка отсортированного по SNR на сайте производителя. Так как нужно в даташите смотреть детали, кого и насколько можно даунсемлить.
  10. Похожий вопрос, но расширенный: А можно заставить размещенную константу занять больше места, чем её sizeof()? Без СМС и регистрации! Без секции в линкере! То есть хочу чтобы оно занимало, например полную страницу флеша. Как разместить в начало страницы- понятно: const MyConsts_t MyConst __ALIGNED(CPU_INTFLASH_PAGELENGTH) = {FACTORY_CONSTS}; Но вот как сказать Кейлу, чтобы он зарезервировал всю область адресов, от конца размещения MyConst до конца страницы? Или: как создать фейковый массив FOO нужного размера и положить его сразу после MyConsts ? Пробовал: static const uint8_t foo1 [FOO_LENGTH] __attribute__((at(FOO_ADDR))); // Compiler v5 Это работает только если FOO_LENGTH и FOO_ADDR константы (0x...). А вот если там вычислизм, содержащий, например, &MyConst или sizeof(MyConsts_t) - то компилятор ругается на использование не-константы в "at()": error: #60: this operator is not allowed in an integral constant expression Пока что просто докидываю этот FOO прямо внутрь MyConsts_t, так конечно работает.
  11. Спасиб! посмотрел ADS126x: вроде красиво. Поищу в том же направлении. (все-таки ног многовато из-за многоканального мультиплексора внутри). AD4030: Очень интересно. судя по графику "Dynamic Range vs. Number of Averages" (fs=2MHz), там вообще нарисовано 148 dB для 10k. А "10к" это 2e6/10e3 = 200 sps Эх блин БГА. Неудобно, но если лучше не найду, то да. Цена тож не фонтан(40 баксов), но зато 148 dB. у меня нелинейность не главное в жизни. вот динамический диапазон да.
  12. Здравствуйте! Посоветуйте, пожалуйста, что-нибудь с параметрами: - SNR 140 dB - sample rate 100 Hz - полоса пропускания (BW) по уровню -3dB близкая к 40 Гц (то есть желательно чтобы цифровой фильтр не резал сильнее чем SPS/2.5) Искал по Аналог Девайсу. У Тексаса даже близко не вижу (лучшее у Тексаса - 250 SPS, 130 dB) Отлично подходит LTC2500-32 (125 SPS, Sinc1: BW = 55 Hz, SNR = 141.4 dB). Ну и вплоть до 145.3 dB при SSINC фильтре (BW = 15.4 Hz). Но цена негуманная у него (мне три или четыре таких нужно). Дальше смотрел LTC2508-32, но у него внутри только SSINC, получается BW примерно SPS/8. ( 250 sps: BW = 30.7 Hz, SNR = 141 dB). И еще LTC2440 почти подходит (94 SPS: BW = 53 Hz, ENOB = 22.9 bit (SNR = 139.6 dB). Думаю, что-то хорошее точно пропустил. Например, какой-то скоростной качественный, который при децимации в нужные мне 100 SPS даст 140 dB ?
  13. Не знаю хороший склад или нет, но настаивать и заходить туда после таких предупреждений не хочу.
  14. "Но STATUS=1" не отменяет наличие таймаута на ожидание ответа от модема в случае любой команды. Да и подключение к сети все равно не показывает. Тогда уж лучше сигнал NETLIGHT мониторить. В-общем, в схеме STATUS, конечно, оставлю, но конкретно для SIM7022 считаю его бесполезным. Какая мне удаленно разница, почему модем в устройстве на AT команды не отвечает- всё равно устройство в ремонт.
  15. пока делаю так: 1. Подаю питание 2. Подаю импульс RESET=0 (100 ms) 3. Устанавливаю WAKEUP=0 4. Жду появления STATUS=1 5. Жду когда модем начнет отвечать на "AT" 6. начинаю работать с модемом. Совершенно непонятно, зачем проверять STATUS, но без него как-то некомфортно (и на других типах модемов он действительно полезен).
×
×
  • Создать...