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

Ruslan1

Свой
  • Постов

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

  • Посещение

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

    3

Сообщения, опубликованные Ruslan1


  1. 1 час назад, jcxz сказал:

    Т.е. - сперва вычисляете: 

    NVMEM_SIZE - sizeof(myFlashData_t)

    а потом для конфликта с этим же - делаете заполнение фиксированным, прибитым гвоздями количеством 0xFF??? :wacko2:

    Какой тогда смысл делать вычисление NVMEM_SIZE - sizeof(myFlashData_t) вместо того чтобы просто указать фиксированное количество байт константой? Вам всё равно, при любом изменении структуры myFlashData_t, придётся переписывать вашу инициализацию FF.

    Весьма кривое решение.

    Очень кривое, согласен. Если захочу выпрямить- то, надеюсь, придумаю, как разное число FF забивать через макрос.

     

    1 час назад, jcxz сказал:

    В таком случае лучше уж задать размер foo[] числовой константой. И сделать доп.проверку на равенство FlashMem2_t размеру сектора при помощи ASSERT_STATIC().

    Подходите не с того конца. Имхо - надо действовать через командный файл компоновщика. В нём определить регион СЕКТОР_ФЛЕШЬ (с заполнителем == 0xFF) и в него делать компоновку секции, содержащей myFlashData_t. Компоновку с прижатием её к началу сектора СЕКТОР_ФЛЕШЬ. Как это сделать в Кейл - не знаю, так как не пользуюсь им, но способ должен быть.

    Это у меня уже было и работало. Но я не пробовал память размещения кода бить на два сегмента. То есть у меня сначала один сегмент кода, а потом (в конце программного флеша)- сегмент моих данных. Бинарник получается всегда размером с флеш: в начале программа, потом пустота неиспользуемая, потом мой сегмент данных. Неоптимально для программирования: и файл большой, и стирать-записывать каждый раз всю флеш, хотя используется не всё пространство.

    Так что сунул просто внутрь кода и разрешил линкеру задвигать какк он хочет. Так меньше страницы пустоты в бинарнике имею. Это проще, чем от бинарника отказываться или городить что-то специфическое для программирования.

     

     

    1 час назад, jcxz сказал:

    PS: А ещё наверное можно попробовать задать нужное кол-во 0xFF в инициализаторе при помощи макроса.

    дада. мне кажется, это самый простой (быстрый и предсказуемый и красивый) вариант для того что я хочу.

     

  2. 25 минут назад, jcxz сказал:

    Вроде как все изучали си, но почему-то про union как будто никто не слышал.... :unknw:

     

    Наверное, Вы правы. Чтобы без вычислизма то можно наверное и с 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.

  3. В 30.08.2024 в 08:01, MrYuran сказал:

    Самое простое вставить в конце вашей структуры массив нужного размера.

    Или некий хедер хранилища данных и зарезервированное место под нужное количество записей.

    И лучше всего средствами strict ANSI, без узкозаточенных примочек кейла, иара и т.д.

     

    да, так сейчас и делаю. из "заточек" только выравнивание.

     

    #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
    };

     

  4. Большое спасибо!

    Уже вижу, что подходящих АЦП сильно больше, чем выборка отсортированного по SNR на сайте производителя. Так как нужно в даташите смотреть детали, кого и насколько можно даунсемлить.

  5. Похожий вопрос, но расширенный: 

    А можно заставить размещенную константу занять больше места, чем её 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, так конечно работает.

  6. 1 час назад, _pv сказал:

    ads1263, 400sps, 23.3 ENOB = 140.3dB, при sinc4 = 91Hz BW -3db

     

    ad4030

    Oversampled Dynamic Range

    Averaging = 2 112 dB

    Averaging = 256 133 dB

    Averaging = 65536 155.5 dB

    65536 от 2МГц это 30sps, соответствеенно при меньшем в 4/8 раз усреднении 140дБ вроде ещё остаётся.

    Спасиб! 

    посмотрел ADS126x: вроде красиво. Поищу в том же направлении. (все-таки ног многовато из-за многоканального мультиплексора внутри).

     

    AD4030:

    Очень интересно. судя по графику "Dynamic Range vs. Number of Averages" (fs=2MHz), там вообще нарисовано 148 dB для 10k. А "10к" это 2e6/10e3 = 200 sps

    Эх блин БГА. Неудобно, но если лучше не найду, то да. Цена тож не фонтан(40 баксов), но зато 148 dB.

     

    1 час назад, _pv сказал:

    правда толку от этих 140дБ при нелинейности в несколько ppm, как-то не особо много.

    у меня нелинейность не главное в жизни. вот динамический диапазон да.

  7. Здравствуйте!

    Посоветуйте, пожалуйста, что-нибудь с параметрами:

    - 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 ?

  8. 2 часа назад, lorise сказал:

    У xecor также есть более 6000 на складе здесь
    https://www.xecor.com/product/st1s14phr

    Не знаю хороший склад или нет, но настаивать и заходить туда после таких предупреждений не хочу.

    image.thumb.png.cc68343b6d6210d4711b21a9b8a75376.png

  9. 13 часов назад, artemkad сказал:

    Важнее проверять не появление Status, а его пропадание  - ловить когда модем перегрузился, а ты от него  все еще чего-то ждешь. 

    "Но STATUS=1" не отменяет наличие таймаута на ожидание ответа от модема в случае любой команды. Да и подключение к сети все равно не показывает. Тогда уж лучше сигнал NETLIGHT мониторить.

    В-общем, в схеме STATUS, конечно, оставлю, но конкретно для SIM7022 считаю его бесполезным. Какая мне удаленно разница, почему модем в устройстве на AT команды не отвечает- всё равно устройство в ремонт.

  10. пока делаю так:

    1. Подаю питание

    2. Подаю импульс RESET=0 (100 ms)

    3. Устанавливаю WAKEUP=0

    4. Жду появления STATUS=1

    5. Жду когда модем начнет отвечать на "AT"

    6. начинаю работать с модемом.

    Совершенно непонятно, зачем проверять STATUS, но без него как-то некомфортно (и на других типах модемов он действительно полезен).

     

  11. Здравствуйте!

    Даташит читал. Да, читал. Да, несколько раз. вопросы остались.

    модем SIM7022 (2110B07SIM7022)

     

    0. когда появляется сигнал STATUS? после подачи питания (VBAT) или нужно еще WAKEUP импульс организовать?  Что означает STATUS=1 ? 

    1. импульс RESET сбрасывает STATUS в 0?

    2. У меня STATUS=1 появляется через 120 ms после подачи питания. (через 35 ms после установки WAKEUP =0). Это нормально? 

    3. Но на АТ команды он не реагирует до передачи сообщения "*ATREADY: 1" через примерно 250 ms после WAKEUP =0

    Получается, что я должен не STATUS=1 ждать, а передаваемое сильно позже "ATREADY" сообщение, или гонять AT и ждать OK. 

    Это никак не похоже на описание из документации.

     

    Ну и просто уточнить:

    4. Нагрузочная способность вывода STATUS какая (какое выходное сопротивление)? У меня получилось что выходное сопротивление 100 кOhm: ненагруженный пин- 1.5 V (вполне норма при питании 1.8), а если подключаю 37k между пином и GND- вижу 400 mV. 

  12. Дошли слухи, что в продаже останутся только однопользовательские (но может это от места покупки зависит). Так что мой вопрос о выборе Flex или Single-user решился естественным образом- Flex просто не будет...

  13. 38 минут назад, Forger сказал:

    по очереди

    Вы с этой Flex работали?

    Получается что Локальная версия нужна только в специфических случаях (упоротый компайлинг нон-стоп или без связи с сервером лицензий).

    И Flex хватает, если не компилирование не самоцель а только одна из операций в течении дня.  Но да, интернет нужен (или где там эта лицензия хранится).

    Где же засада с этой флекс? почему получается сильно дешевле уже для двух пользователей? Или может я неправильно цены сравниваю.

  14. Интересует лицензия уровня "MDK-Essential" (для Arm Cortex-M).

    Количество пользователей: 2-3, причем MDK используется периодически (это одно из направлений, а не фулл-тайм для работников).

    Вижу, что есть отдельные лицензии (Locked) на одну персону (можно поставить на двух машинах). И есть Flex.

    Flex на 20% дороже. Но Flex вроде бы официально позволяет работать нескольким пользователям на одной лицензии.

     

    Кто-то использовал эту MDK Flex?  Получается. что при неактивном использовании может быть выгодной альтернативой по сравнению с локальной. Очевидный минус- требуется связь с сервером, на котором лицензия висит, но в наше время постоянное соединение с интернетом не проблема.

     

    Ниже скопировал текст из разных ресурсов относительно этой Flex. Как я понимаю, эта сетевая лицензия используется как зашаренный ресурс: она занята пользователем только во время компилирования проекта, потом она "освобождается" и может быть "занята" другим пользователем.

    -------------

    https://www2.keil.com/docs/default-source/default-document-library/mdk5-getting-started.pdf

    :

    Floating-user license or FlexNet license grants the right to use the product on several computers by a number of developers at the same time.

    -------------

    https://www.wg.com.pl/pliki/instrukcja/License_Management_User's_Guide_3.pdf

    :

    FlexLM License – allows to use the software by the multiple users in parallel (owner, his employees or subcontractors) on multiple LAN workstations only on rights owner benefit. 

    The number of current users is limited to the number of bought seats and is controlled by LAN server administrator. The license can be “borrow” from the server for defined period of time and used outside without LAN access. 

    FlexLM License is a new recommended solution of the net installation. It is available for any number of users.  

    -------------

    https://developer.arm.com/documentation/ka003176/latest/

    :

    13. Worst case scenario involves a high-traffic, high-latency network with many other server processes running and many requests for licenses. 

    Setup could also include unique characteristics, like virtualization or a wide area network; the last two characteristics are not officially supported. 

    In such extreme situations, users have reported, FLF build times are shorter than Flex build times. You may request trial licenses from our sales team to test out network performance, the required number of seats, build times, etc. 

    The compiler guide contains a section on how to improve build times, in general. Sections 2.18.1 and 2.18.6 include improvements specific to a floating license.

    14. The end-user license agreement allows employees, but not contractors, to use licenses off-site on portable computers. 

    Global travel is allowed by both floating license types, through the "Check-Out" feature. However, when a client requests a license directly from the server, FLF-based floating licenses check timing information, and different timezones prevent all clients from operating successfully. 

    Flex floating licenses can use a global server. 

    Ask our sales team about this option. WANs are not officially supported, and in general, users should expect longer build times, when compared to a local server.

  15. 30 минут назад, EdgeAligned сказал:

    Да че молчать - в жопе она была, в жопе 🙂 Чего тут скрывать то, это уже давно не секрет. Хотя по телику нас нынче убеждают в обратном.

    Приезжайте к нам! у нас нет жопы. потому что нету тела-нету дела. Обсуждать просто нечего.....

  16. 3 минуты назад, EdgeAligned сказал:

    гостовский стиль, кстати говоря, вообще довольно странный, как будто застрявший в 60-70-х годах прошлого тысячелетия. Огроменные, по современным меркам, размеры некоторых УГО, огромная двухстолбцовая крупная таблица, обозначающая электрический разъем, чертежный гостовский шрифт, громоздкие таблицы спецификаций. Но что есть, то есть, это ГОСТ. И этому правилу надо следовать - обозначить по всем правилам DD1, да и не забыть заполнить таблицу спецификации.

    Я к нормоконтролю в институте приходил с действующими ГОСТами в руках (там обычно было завизированных вклеек больше, чем сам ГОСТ, но не знаю как сейчас). Благо доступ был к такому.

    И там в ГОСте на УГО еще в начале 90х была сноска, что УГО и шрифты могут быть другие, если применяется система машинного черчения. Так что три раза Ха. Я в Оркаде рисовал и печатал на принтере, никаких претензий ко мне не было ни к курсовикам ни к диплому. 🙂

  17. 5 часов назад, варп сказал:

    Коммутация секций аккумулятора, особенно на такие большие, токи НЕПРИЕМЛЕМО  в принципе. Забудьте  эту затею как страшный сон. При  неисправности элементов коммутации аккумулятор превратиться в бомбу, которая зазнесёт всё в дребезги пополам - там энергии всего в пять раз меньше, чем в тротиле  того же веса.

    разве что использовать конструкцию, которая защищена от опасных ситуаций. Например, контактная группа реле, в которой центральный контакт при любых обстоятельствах точно не может быть соединен сразу с двумя крайними контактами, а только с одним из них. Тот самый механический переключатель (именно переключатель!).

    Хотя я бы не стал. Действительно как-то стрёмно, нужна веская причина так коммутировать.

  18. Резисторы это серьезно. Ноунеймы могут создавать проблемы.

    Вот на этой неделе боролся. Тестировал свою измериловку тензодатчиков, взял резистор и подцепил в качестве 1/4 моста. Два канала- два разных резистора. Условия: на столе, без резких скачков температуры. Результаты сильно удивили: ноунейм китайский (из купленного на алиэкспрессе набора) дал изменение сопротивления где-то 20-25 ppm, а второй резистор 2 ppm. (MF0204FRE52-120R: YAGEO, 1%, 50 ppm/C, 120R).

    Вот картинка (в микрострейнах). Сначала подумал на проблему в софте или в железе в первом канале, но повторяемость полная, именно резистор такое дает. Замена ноунеймов на известный тип дает ровную линию вместо кривой.

    (мелкий шум на графике- это изменение сопротивления разъема на примерно 0.1 mOhm от вибрации на столе,  думаю от запускаемого винчестера или вентилятора компа или еще какого-то оборудования в здании- но это отдельная тема)

    image.thumb.png.e42f8984e3965b2bde0670b6dd8e452d.png

     

    Представьте, как такие ноунейм-резисторы могут себя проявить, если их в критические к номиналам схемы впаивать.... Скачки сопротивления в десятки ppm просто на ровном месте...

  19. Раз уж тут защиту принтеров упомянули- сам неделю назад столкнулся:

    Купил для моего HP LaserJet картридж (не оригинал, но совместимый c нужным HP59A/CF259A, по словам продавца) - мой HP принтер сказал, что работать не будет, некошерный картридж. (что бы я ему в сетапе не выставлял). Первый раз такое видел, пришлось интернет читать, жалко было картридж возвращать и за оригинал переплачивать. Выдрал со старого картриджа чип (там платка просто приклееная) и вставил вместо нового, и вуаля- всё работает.

    И даже есть куча предложений в магазинах, где нужный картридж заведомо без чипа продают, и называют это "тонер". Естественно еще дешевле, чем с неподходящим чипом. Так что прошареных экономных покупателей много, раз предложение такого товара есть.

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

  20. 1 час назад, Vlad_G сказал:

    На приём всё работает как нормуль, претензий нет. А вот на передачу.... - один раз срабатывает (самый первый раз, после сброса МК), а далее затыкается.

    Вот это самое "затыкается" хорошо бы расшифровать. Данные не доходят до буфера DMA, или DMA не запускается, или еще дальше по цепи...

    Если один раз срабатывает- это значит что-то в инициализации DMA, или в самом USART что-то происходит- посмотрите флаги ошибок.

    Конечно, все это дебаггером и пошагово внутрь функций, насколько возможно.

    P.S. А зачем себя так истязать? Если "на регистрах" уже все работало... 🙂

  21. 2 часа назад, TOG сказал:

    Эта часть задачи для меня как раз знакома и понятна. 

    Я собственно хотел узнать на чем будет легче мне это сделать: под web, под android, или телеграмм-бот и т.д.

    Например если я решу сделать окошечко получения "кода аренды" на нашем сайте, то какими инструментами разработки мне воспользоваться, чтобы замутить AES, Кузнечик, SHA256 и прочие популярные алгоритмы ?

    Сайт у нас сделан на арендованном хостинге. Будет ли это накладывать какие-то ограничения на выбор средств разработки ?

    А, ну тогда тут уже ответили- на чем сможете, на том и делайте .  То есть просто используйте знакомый инструмент, задача-то простая. Уверен, библиотеки на любом языке найти можно.

  22. Стандартная процедура, похожая на SSL (TLS)- в результате на прибор доставляется сообщение, которое только он и может расшифровать. Ну и в этом сообщении содержится то что нужно.

    Софт на компьютере состоит из окошка задания номера прибора и окна указания периода времени (или другой информации, доставляемой на прибор), файлов открытых ключей приборов, и окошка результирующего сообщения. сгенерированного программой на базе этого ключа и библиотек SSL.

     

    Ну а прибор имеет свой ключ для расшифровки.

     

    Upd: ну или просто посмотрите AES128...AES256, зависит от нужной прочности защиты.

  23. Здравствуйте.

    Использую SIM7022. есть вопрос по энергосбережению.

     

    Просыпаюсь иногда (раз в пару минут, или в час, или в сутки). Измеряю, обмениваюсь данными с сетью, засыпаю.

    То есть важно потребление в режиме сна.

    Я не нашел как SIM7022 просто выключить AT-командой. зато нашел PSM (power saving mode), с ним и играюсь.

    Вхожу так:

    AT+QCPMUCFG=1,4
    
    AT+CPSMS=1
    

    Сам по себе SIM7022 потребляет мало. Если без SIM карты использовать- то у меня на столе единицы микроампер (2.5 uA)

    А вот с SIM картой ожидаемо просыпается иногда, так как это не выключение а PSM:

    Цитата

    Power Saving Mode (PSM) will start after data connection terminates or periodic TAU completes.
    Data connection terminates, module will go to idle mode firstly, and then move to DRX (Discontinuous
    Reception) status. Once timer T3324 is expired, module will enter into PSM mode.
    In PSM mode, module will be in a kind of deep sleep mode, in extremely low power mode, the current
    of SIM7022 is about 0.8 μA. After timer T3412 get expired, the terminal wakes up itself. The terminal can
    also be woken up by pulling the wake-up pin down.

    То есть все зависит от T3324 (в течении этого времени модем еще не спит, хотя я ему сказал спать), ну и проснеться через T3412.

    Вроде не проблема, поставил эти таймеры в заведомо большое число (скажем, 24 часа), и сплю спокойно. Но!

    Цитата

    The actual value of T3324 and T3412 is issued by the operator, the value manually configured by
    AT+CPSMS can only take effect after they are accepted and issued by the operator. The actual value
    could be queried through AT+CEREG? command.

    То есть это не под моим контролем. Соответственно, если оператор скажет "24 часа не принимаю", то так и буду просыпаться каждые 5 минут?

    Я правильно понимаю политику партии?

    Если правильно, то вопрос: Можно ли вообще не просыпаться? хочу просто OFF.  

    Непонятно почему в SIM7080 оно можно было (AT+CPOWD=1), а в SIM7022 уже нет аналогичной команды.

    Или нужно заложить ключ и выключать питание модему железячно?

  24. Попробовал PPK2 от Нордик.

    Однозначно стоит своих денег. Меня абсолютно устраивает, для моих нужд (оценка малых токов) вполне годится.

    Использовал как источник напряжения. То есть от него же и питаю подопытного.

    Проверил шум, измерял ток на резисторе 1 MOhm (Upd: омметр показал 991 kOhm), 4000 mV. На картинках ниже окно длиной 10 секунд

    100 kSPS: шум 0.8 uA

    image.thumb.png.c117c4c5b87a4c3c46f4367ffbf26b50.png

    10 kSPS: шум 0.2 uA

    image.thumb.png.136a1a7880e6ca07566655ccebf8af0e.png

    1 kSPS: шум 0.1 uA

    image.thumb.png.dd6706fb13cc673ed695a9016bb14dcf.png

    100 SPS: шум 0.05 uA (картинку не вставил, она похожая, просто шум меньше)

     

    Попробовал с напряжением 1000 mV: данные очень похожие, шум не меняется.

     

    Ниже пример реальных измерений (длина окна 1 минута)

    image.thumb.png.123e42d99c9838cc54247c6deb636adc.png

     

    В 01.04.2024 в 13:56, MegaVolt сказал:

    Nordiс Power Profiler Kit II

    Большое спасибо за подсказку!

    Я бы сказал, что этот PPK2 из категории "маст хэв": соотношение цена/возможности очень хорошее, и цена небольшая.

    (А вот эта картинка ниже непонятно как второй раз вставилась. И удалить не могу...)

    image.png

    • Upvote 1
×
×
  • Создать...