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

Ruslan1

Свой
  • Постов

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

  • Посещение

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

    3

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


  1. 1 hour ago, rkit said:

    sprintf точно так же парсит строку формата. Переливать из одного в другое будет еще медленее.

    "реально долго" и "десятки ключей" как-то не стоят рядом. Реальные измерения есть?

    18.6 миллисекунды на строку. Но когда нужно сформировать тысячу-другую строк, набегает много.

     

    Время зависит от многих параметров, в основном- какой длины строка парсится и сколько ключей возможны: получается, что встретив новый ключ в строке, я его сравниваю с базой, применяя strstr(). То есть если у меня база из сейчас 120 ключей, то для каждого встреченного ключа это от одного до 120 вызовов strstr() . Можно оптимизировать сам метод, но лучше уйти от бесконечного парсинга.

     

    И меня не столько парсинг строки формата волнует во время sprintf(), сколько этот вот парсинг ключей для списка параметров, который и съедает все время.

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

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

    Дано : есть конфигурационный файл, задающий формат генерируемой строки с использованием разных 'ключей'. Во время вывода эти ключи подменяются конкретными величинами. Количество ключей в строке может быть разное.
    Например:

    конфигурация 

    String1 = "\dat \time, \SNum, V1=\Val1, V2=\Val2"

    превращается в выводимую строку

    "2021-04-01 00:22:15, 103567, V1=17.2, V2=0.4"

     

    Сейчас это делается парсингом строки конфигурации онлайн во время каждой печати строки, символ-за символом, с заменой встреченных ключей на из значения. Но это реально долго (у меня десятки ключей). Хочу ускорить и не делать парсинг каждый раз. Идеально было бы однажды пропарсить конфигурационную строку и создать что-то, что можно просто вызывать каждый раз, когда эту строку нужно напечатать. Для данного случая, например это будет:

    sprintf (txtOut, "%s_%s, %06d, V1=%.1f, V2=%.1f", date, time, SERNUM, Val1, Val2);

    но как это сделать? Нужно решить задачи:

    1) создать строку формата  (в примере это ["%s_%s, %06d, V1=%.1f, V2=%.1f"]) - это самое простое, это я понимаю.

    2) создать строку аргументов (в примере это [date, time, SERNUM, Val1, Val2]) - не представляю как это сделать.  Ну, могу создать массив указателей на нужные величины, но как это использовать?

    3) запустить это как sprintf() - подозреваю, что если будет ответ на предыдущий вопрос, то этот уже просто решается.

     

    Вроде бы подходит vsprintf() и va_list ? 

    Если я правильно понял, то для vsprintf() можно однажды создать список параметров va_list c указателями на расположение нужных мне величин в памяти, и дальше просто вызывать vsprintf() столько раз сколько нужно? Так?

  3. Никаких проблем. Смотрите на параметры шлейфа/контакта, и полученное теоретическое количество необходимых контактов умножаете на [зависит от доверия к производителю, но не менее чем на 2].

    Я для токов примерно 1 А/12V использую в параллель 4 провода для питания (ну и как минимум столько же для GND). Длина 10 см.

     

    Для долговременного использования еще очень важно покрытие, агрессивность среды и вибрация. По моему опыту: со временем может увеличиться сопротивление между ножом разъема и проткнутым шлейфом. Но видел только в слаботочке, как раз токовые нагруженные соединения работают стабильно.

  4. 26 minutes ago, Eddy_Em said:

    А научные статьи, отчеты и т.п. вы не пишете что ли?

    Вы еще скажите, что не нужно тратить время на изучение десятипальцевой слепой печати!

    Жесть, до чего люди нынче пошли глупые…

    А что, от скорости набора текста хоть как-то может зависеть скорость написания программы или скорость написания научной статьи?

     

  5. 9 minutes ago, Entomo said:

    У объектов микромира есть свойство -.....

    Как же хорошо на душе что есть еще люди, этим занимающиеся.

    Я без сарказма, только с завистью.

    Удачи вам, не утонувшие в нашем сером меркантильном потребительском бытии!!

  6. 11 hours ago, Eddy_Em said:

    Почему-то последнее время я не встречал программистов на фортране, хотя фортран намного более полезный язык, нежели паскаль (и очень много математических библиотек на нем было написано, пока их не переписали на С — те же slalib, SOFA, ATLAS/BLAS и т.п.).

    А у меня первым языком  Фортран-4 был, на ЕС ЭВМ (PL/1 еще можно было применять, но посоветовали Фортран). Но последнего программера, реально пишущего на Фортране, я лет 10 назад видел. Но это не значит  что их нет.

    Вспомнился старый анекдот, даже в сети его нашел:

    Quote

    Некий программист-коболист в поте лица трудился над пресловутой проблемой 2000 года. Он чинил программы во многих фирмах и зашибал приличные бабки. Но по мере приближения роковой даты его все больше  охватывал ужас: что будет со всеми этими программами и с ним самим? Наконец он решил заморозиться и проспать в анабиозе до февраля 2000 года, а там, глядишь, вся свистопляска и уляжется...
    ... Он проснулся в странном незнакомом помещении, вокруг ликовали люди: "Очнулся, очнулся!".
    - Сейчас с вами будет говорить президент Земного Шара.
    На огромном стереоскопическом экране возник человек, весьма похожий на Билла Гейтса.
    - Видите ли, программа вашей камеры при переходе к 2000 году сработала неправильно, и вы проспали почти 8000 лет. Но вы не волнуйтесь. Наша жизнь прекрасна. Мы достигли огромных успехов в науке и технологии. Мы покорили время и пространство. Мы...
    - Но почему вы меня разморозили?
    - Понимаете, приближается 10000 год, а в вашем досье указано, что вы знаете КОБОЛ...

     

  7. Ну так классика жанра:

    0. Отладчиком увидеть что именно приехало в микроконтроллер, на этом этапе можно спланировать что копать дальше.

    1. Убедиться что сигнал физически ушел с разъема компьютера: Подключить подслушку (терминал на прием, или логический анализатор), ну и осциллограф для тяжелых случаев.

    Если не выводится физически- может потому что хардверное управление портом включено (hardware flow control). Ну или таки порт занят и не отпущен другим софтом.

     

  8. On 12/23/2020 at 4:12 PM, Самурай said:

    Т.е. -150дБ проходят как некий "Spurious free floor", термин крайне загадочный, гуглом идентифицируемый исключительно только в контексте именно анализаторов сигналов вибраций:) Можно предположить, что это самый обычный "Noise Floor", только чуть более вычурно переиначенный:))) 

     

    Тоже подозреваю что это и есть какой-то "Noise Floor", цифры похожи на NLNM (New Low Noise Model) по Петерсону, используемые USGS.  На эту модель равняются, когда смотрят диджитайзеры для сейсмики.

    (ниже картинка с реальными шумами из одного старого доклада USGS).

    image.thumb.png.d1ed5e3ee99eb2ceef22bba0681c5d84.png

     

  9. А что, есть разница сколько центов МК стоит, 40 или 70 ???

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

    Просто нужно выбрать известный МК из дешевых, сделать и забыть (так как задача простая). И идти дальше. На простых задачах и доходы мизерные, обсуждение дороже стоит. Под "известный" я имею в виду не только среду сам камень, но и всю логистику. Часто сильно выгоднее делать на уже используемом неоптимальном, чем на новом супероптимальном, но неизвестном.

  10. Левый какой-то даташит. Разве что есть дополнительные документы (appNote, EVboard etc.) где это дополнительно описано, но я ничего не нашел для этого семейства.

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

    Так что вариантов всего два:

    1. Оставить как есть (работает по даташиту- не трогай).

    2. Спросить у производителя. Но мало ли кто и чего ответит: я бы не особо доверял, разве что в связи с Вашим вопросом они новую ревизию даташита выпустят, и вот ему уже можно доверять.

     

    Я думаю, путь (1) является самым простым, если нет особых причин что-то менять.

    Ну и 10 мкф на входе- не так уж и много, тем более если большое выходное сопротивление источника и еще провода.

  11. вдогонку, из личного опыта с 5-вольтовыми дисплеями:

    1. это напряжение очень индивидуально, и иногда меняется в следующей партии дисплеев.

    2. Может быть необходимо изменить это напряжение при изменении температуры окружающей среды.

    3. диапазон нужных напряжений очень узок и обычно близок к 0.

    4. это напряжение может быть как отрицательным, так и положительным относительно VSS,

    Так что делаю инвертор на пине микроконтроллера (выход таймера), а напряжение регулирую изменением частоты сигнала и ШИМ. что-то вроде схемы, приведенной ниже.

     

    image.thumb.png.3174b6bfc7d1ab14440f7860e16a37fa.png

  12. 25 minutes ago, gerber said:

    Можно пойти ещё дальше, в этой же структуре хранить указатель на функции, которые с ней работают.

    Ещё немного, и C++ заново изобретем.

    Кстати да, и указатели на функции обработки тоже часто храню в структурах. Получается быстро работающий код, в котором все "экраны запихивания в структуры" делаются однажды на этапе инициализации.

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

  13. 16 hours ago, Сергей Борщ said:

    Ага. Два экрана запихивания в структуру, за которыми теряется собственно вызов функции.

    А что, еще кто-то хранит много взаимосвзязанных (используемых вместе) данных не в структурах?

     

    Если данные связаны между собой (например, массив и указатели записи-чтения в нем) - то они и до вызова функции храняться всегда в структуре, а не как отдельные переменные. Компилятору все равно, работать с wrpnt и buf[] или с transmit.wrpnt и transmit.buf[].

     

    А если данные несвязаны и поэтому не собраны в структуру- то нужно подумать, почему они в одну функцию передаются, может нужно разбить функцию на несколько?  Да и не проблема передать в функцию два или пять указателей на разные используемые структуры, если уж нужно. Но если эти пять структур используются вместе более одного раза- я бы собрал указатели на них в одну новую структуру :)

  14. Если у кого-то много параметров передавать нужно- то можно и про стуктуры подумать.

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

  15. On 11/29/2020 at 3:26 AM, jcxz said:

    Хмммм.... чем-то фидошным пахнуло... если склероз не изменяет...  :wink:

    Ага. оно, родимое. :)

     

    On 11/29/2020 at 4:01 AM, MrBearManul said:

    Хайп тут не при чём) Есть программы, которые без ассемблера написать невозможно: переключатели задач в вытесняющих операционных системах, использование команд для параллельных вычислений и т.п.

     

    Это не "программы", а маленькие кусочки кода. Это не значит, что такая программа "написана на ассемблере".

     

    On 11/29/2020 at 9:36 AM, Мур said:

    Ха!.. Так этож он меня и подсадил на STM8!  С ним на связи.

    Я против Си ничего не имею против, в отличие от Шепелева.  А вот С++ ,именно о нем был разговор, тут не к месту!

    Ух ты, ну прямо живая история :)

    Извините, а может быть пора уходить от STM8, особенно если хочется большого? Все-таки время стоит гораздо больше, чем копеечная экономия в железе. Выбирайте камень, в котором желаемый Вами язык комфортно реализован- и вперед с песнями! Нужно как-то развиваться, а не тратить время жизни на  попытку героически сэкономить два доллара, памятник за это на рабочем месте не поставят.

    Если про STM8, то С++ тут все-таки чересчур, а вот стандартный Си- уж точно летать нормально будет.

  16. 4 hours ago, Мур said:

    Речь о STM8, которые имеют серьёзные ограничения по ресурсу (адресное пространство , объем ОЗУ) и там не разгуляться...

    ...

    Тут речь о производительности  программиста...

    Вы, вероятно, шутите? Я посмотрел STM8- это начиная от 1 килобайт RAM, какие там могут быть проблемы с Си? У меня на PIC18F432 с полкило RAM очень накрученные программы крутились на Си.

     

    И про производительность программиста на ассемблере- это вообще мимо. При применении ассемблера производительность программиста самая низкая из всех возможных вариантов, со скоростью написания равнозначной программы на Си невозможно сравнивать. Я уже не говорю о стоимости сопровождения и модификации кода в будущем.

     

    P.S. Я более десятка лет писал на асме, а теперь уже даже дольше пишу на Си - и все еще не вижу у ассемблера никаких плюсов (если мы говорим о ремесле, а не о выкрутасах "ради хайпа").

     

    PPS. Харьков... Вы Шепелева случайно не знаете?  вроде оттуда же, и был тож ярым адептом ассемблера, в противовес Торресу с Орловым. но было это давно.

  17. 36 minutes ago, Smoky said:

    По совету бывшего коллеги приобрёл генератор FY6800-60M для домашней "лаборатории". После опробования без колебаний избавился от генераторов советского производства Г3-111 и Г4-116. Правда среди местных желающих приобрести их не нашлось, пришлось разобрать и сдать деталями в скупку, что окупило большую часть стоимости нового генератора. Сделал перевод руководства на русский язык, выкладываю для желающих ознакомиться.

    FY6800_rus.zip 1.31 MB · 1 download

    Интересная штука. на Алиэкспрессе вижу от FY6800-20M до даже FY6800-100M. Интересно,  у них у всех одинаковый DDS, или у 100-мегагерцового что-то другое, чем у 20-мегагерцового?

    Сам давно пользуюсь чем-то подобным (дешевый DDS) , но с текстовым дисплейчиком: тынц! Очень нравится но, думаю, упомянутый тут уж точно получше будет.

    Но вот если вопрошающему с поверкой и Госреестром- то тогда другая песня.

     

    P.S.  Г4-116 вроде до 300 MHz? Я бы не выкидывал, но отложил подальше, на черный день.

  18. 15 hours ago, r2axz said:
    ...
    - поддержка нестандартных скоростей (тестировал до 921600);
    ...
    Выходные уровни совместимы с TTL 3.3 и 5 вольт. Все входы кроме UART2 RX и CTS толерантны к 5 вольтам.

    по процитированному выше:

    - И что, все три порта в полном дуплексе успевают на 921600  транслировать потоки, без использования flow control?

    - TTL уровни в многопортовке не очень интересны. Обычно много портов используется со стандартными уровнями интерфейса.

     

    А в-общем, интересно, но непонятно как использовать :)  Как учебный материал- отличная тема.

    Для себя лично вижу применение- добавить RS-232/485/422 драйвера, может даже с гальванической развязкой, и тогда будет хорошая штучка.  Коробочка такая с USB хвостом и тремя DB9 разъемами.

  19. 1 minute ago, CADiLO said:

    Это не просто пады GND. Это еще и теплоотвод чипсета.

    Не запаяв их на достаточный полигон можно нарваться на перегрев чипа со всеми вытекающими последствиями...

    Ага, уже дошло. Вот что значит невнимательно относится к версии документации и вообще.

    Конечно они должны быть в футпринте.

    Все-таки приятно иметь дело с адекватными производителями печатных плат- это он меня спросил почему футпринт странный. Иначе бы сидел я над этими собранными прототипами с неполным футпринтом и ловил непонятности в работе. Конечно, списал бы все на кривизну модема :)

  20. ----------------------------------

    Update#2

    Упс.

    Кажется я напортачил.

    Дилер мне совсем другой документ присылал: SIM7600G(-H)_SIM7600NA(-H)_Hardware Design_V1.03  , 2020-05-09

    И в нем все пады есть. 

  21. В даташите на  модуль SIM7600 я вижу это:

    image.png.d4a69d910f2e3cf30d1b33aa357b9b5b.png image.png.747aa0eae8fc3390b6e07a0032de3f35.png

     

    Если я смотрю картинку в Интернете, то я вижу  много площадок на "пузе" модуля:

    image.png.49af6b5668f46820f994782ad5fe91da.png

     

    Если я начинаю гуглить "SIM7600 footprint", то вижу много такого как ниже:

    image.png.9ab8a162c230a3aad32064e96f3257c0.png

     

    Отсюда вопросы:

    На это обращать внимание или просто закрыть глаза, так как все  равно маска, и все равно что там у меня под маской?

    Если обращать внимание, то сразу куча вопросов про пады и про разводку под модемом.

     

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

    image.png.cb1f80e456719a86ddd16476edff3329.png

    image.png

    image.png

     

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

    Update:

    в старом даташите  приведен вот такой футпринт. Получается, Симком изменил это и сейчас  (в новой редакции) уже не имеет открытых падов?

    image.png.b96532da6ef925272915049cbd00ce9b.png

     

    Старый документ (с падами): SIM7600G_SIM7600G-H_Hardware Design _V1.00 , 2019-3-29

    Новый документ (без падов): SIM7600 Series _Hardware Design _V1.05, 2019-12-03

    Исправленному верить? 

    Может кто-то, у кого  оно есть живьем, посмотреть, что там на самом деле: есть эти пады или нет? У меня есть один, но он в EVB впаян, не распаивать же ради этого...

  22. 1 hour ago, CADiLO said:

    Пятивольтовые становятся нормально туда

    https://www.infineon.com/dgdl/Infineon-ESD101_B1-DS-v01_04-EN.pdf?fileId=db3a30433e9d5d11013e9d6619a20002

    https://www.onsemi.com/pub/Collateral/ESD8472-D.PDF

     

    Или поиск по RF ESD protection.

    Ecть также у ST, Qorvo, Skyworksinc, TaiwanSemi.....

    Правда у большинства с 0.1pF это 0201 корпуса.

    Отлично, утащил себе в папку с доками по симкому.

    Опять спасибо! :)

  23. Большое спасибо за подтверждение!

    Ну, значит, оставлю 0402.

    Но опять же: рекомендованные в документации Симкома LXES15AAA1-153  (TVS 0402) уже имеют статус Obsolete, доступны для заказа  до осени 2021. Сейчас, конечно, их и поставлю, но в будущем  придется думать. Кстати, в 0402 тоже не нашел других на замену  (TVS 4V), но может плохо искал.

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