Jump to content

    

Sergey_Aleksandrovi4

Свой
  • Content Count

    169
  • Joined

  • Last visited

Everything posted by Sergey_Aleksandrovi4


  1. измерение тока шунтом.

    Я не знаток силовой техники, но в своё время попалась статья по планарным трансформаторам из печатных плат. Решение показалось довольно дешёвым и технологичным. Возможно, окажется Вам полезным. https://habr.com/ru/post/358174/
  2. В сети уйма статей с описанием максимально-допустимого размера раздела в файловых системах FAT16 и FAT32, а вот про минимальный размер ни слова. Начал разбираться с драйвером FAT от ELM Chan'a. В функции создания раздела f_mkfs() // b_vol - Базовый LBA раздела // sz_vol - Общее число секторов в составе раздела /* Create a single-partition in this function */ if (disk_ioctl(pdrv, GET_SECTOR_COUNT, &sz_vol) != RES_OK) LEAVE_MKFS(FR_DISK_ERR); b_vol = (opt & FM_SFD) ? 0 : 63; /* Volume start sector */ if (sz_vol < b_vol) LEAVE_MKFS(FR_MKFS_ABORTED); sz_vol -= b_vol; /* Volume size */ if (sz_vol < 128) LEAVE_MKFS(FR_MKFS_ABORTED); /* Check if volume size is >=128s */ Т.е. начальный сектор раздела начинается с #63 (либо #0 в случае использования SFD-тома). Но дальнейшая проверка (не менее 128 секторов) не даёт создать том. Выходит, что при минимальном размере сектора 512 байт минимальный размер диска должен быть 512*128=64 кБайт. Для чего мне это надо? Требуется создать FAT-раздел внутри встроенной в МК Flash (свободно 20 кБайт, т.е. 40 LBA). Библиотека всё-таки рассчитана на носители большого размера (SD-карты) и число 128 секторов могло появиться для ускорения/оптимизации работы алгоритма. Поэтому, если это субъективная реализация автора библиотеки, то попробую исправить руками хардкод. Если требования стандарта - откажусь от реализации FAT. Полного и понятного описания структуры FAT (для нубов с картинками) пока не нашёл. Первый личный опыт работы с файловой системой ) PS На отладочной плате stmF0-Discovery установлен stm32F103C8 с 64 кБайтами Flash и при этом как-то FAT на нём реализован: при подключении по USB определяется как съёмный диск.
  3. Всегда в проектах (пишу на асме в AVRstudio) создаю подобную конструкцию Код.org (FLASHEND - 64)     .db "  Encoder&Keyboard  v1.4  25.10.2009" Т.е. в конец флеша записываю строку с названием проекта, версией прошивки и датой билда, что порой очень выручает. На днях узнал про "предопределённые макросы" __DATE__ __TIME__, был приятно удивлён. Но не очень устраивает формат вывода даты макросом __DATE__ . Он выдаёт "Oct 25 2009", а хочется именно "25.10.2009". В хэлпе по AVRasm2 приводят: Код-FDformat -FTformat Specify the format of the __DATE__ and __TIME__ predefined macros, respectively. The format string is passed directly to the strftime(3) C library function. The __DATE__ and __TIME__ preprocessor macros will always be string tokens, i.e., their values will appear in double quotes. The default formats are "%b %d %Y" and "%H:%M:%S", respectively. Example: To specify ISO format for __DATE__, specify  -FD"%Y-%m-%d"  See note below These formats may only be specified at the command line, there are no corresponding #pragma directives. Important note: The Windows command interpreter (cmd.exe or command.com) may interpret a character sequence starting and ending with a '%' character as an environment variable to be expanded even when it is quoted. This may cause the date/time format strings to be changed by the command interpreter and not work as expected. A workaround that will work in many cases is to use double '%' characters to specify the format directives, e.g., -FD"%%Y-%%m-%%d" for the example above. The exact behaviour of the command interpreter seems to be inconsistent and vary depending on a number of circumstances, for one, it is different in batch and interactive mode. The effect of the format directives should be tested. It is recommended to put the following line in the source file for testing this: #message "__DATE__ =" __DATE__ "__TIME__ =" __TIME__ This will print the value of the date and time macros when the program is assembled, making verification easy (see #message directive documentation). An alternative syntax for the format specification may be considered in future AVRASM2 versions to avoid this problem. Some relevant strftime() format specifiers (see strftime(3) manual page for full details): %Y - Year, 4 digits %y - Year, 2 digits %m - Month number (01-12) %b - Abbreviated month name %B - Full month name %d - Day number in month (01-31) %a - Abbreviated weekday name %A - Full weekday name %H - Hour, 24-hour clock (00-23) %I - Hour, 12-hour clock (01-12) %p - "AM" or "PM" for 12-hour clock %M - Minute (00-59) %S - Second (00-59) Куда писать эти спецификаторы - ума не приложу :-[ Имею подозрения, что поле "Additional Parameters" окна "Project->Assembler Options" для этих целей используется. Также вопрос вдогонку. При присваивании константам текстовых имён хочу делать проверку на допустимость значения Код.equ defineParam1 = 1 ...... ...... #if (defineParam1 < 3) #error "defineParam1 must be more then 3" #endif Но вот как в тексте ошибки вернуть значение этой константы? Чтобы при неверно заданном параметре был виден не только текст констатирующий ошибку, но и первопричину этой ошибки, что-то вроде #error "defineParam1 must be more then 3. Param1=", (????). Спасибо всем откликнувшимся.
  4. Цитатано SPI1_DR пуст!!! Там 0xFFFF после предыдущей транзакции, верно? Попробуйте извлекать данные из SPI_DR после каждой передачи, даже если они Вам не нужны. Если этого не делать, вновьпринятые данные не будут перезаписывать старые: ошибка Overrun с установкой соответствующего флага в SPI_SR. Т.е. при начале приёма буфер приёмника всегда должен быть готов (очищен). PS пишу по памяти, с STM довольно давно не работал, лень документацию перечитывать. Хм... посмотрел на дату сообщение и понял, что "слегка" опоздал с ответом. И не удалить теперь.
  5. IAR ARM ассемблер

    Здравствуйте. В проекте функция реализована как ассемблерная процедура. Состоит из одной инструкции и хотелось бы преобразовать её в макрос, чтобы не тратить такты на вход и выход. Реализована в *.s файле в виде Код    SECTION .text:CODE:NOROOT(2)     PUBLIC MULSHIFT32     THUMB MULSHIFT32     smull    r2, r0, r1, r0     BX lr Далее используется в *.c файлах как обычная функция b2 = MULSHIFT32(*cptr++, a1 - a2) << (s1); Не зная тонкостей синтаксиса ассемблера IAR попробовал "в лоб" реализовать таким образом КодMULSHIFT32 MACRO     smull    r2, r0, r1, r0     ENDM Линкер ругается на неизвестное имя MULSHIFT32. Ключевые слова PUBLIC и EXTERN вызывают ошибку. Кто подскажет, как этот макрос правильно оформить, чтобы можно было использовать его вне *.s-файла?
  6. IAR ARM ассемблер

    Цитата(scifi @ Aug 29 2017, 13:29) Это макросы ассемблера, фактически текстовая подстановка в пределах ассемблерного файла. Вот оно что. Спасибо. С ARM-ассемблером пару раз в жизни сталкивался, не знал про эти тонкости. jcxz, в двух словах - интерактивная игрушка для детей, ничего серьёзного. Кодек этот давно ещё портировал на cortex M3 (не без помощи здешних форумчан). Теперь перевожу на cortex M4, ну и решил по-максимуму из него выжать и закрыть тему навсегда.
  7. IAR ARM ассемблер

    jcxz, всё верно, чужие библиотеки. Портирую mp3-декодер Helix. В очередной раз) Цитата(jcxz @ Aug 28 2017, 18:49) Если Вам нужны только старшие 32 бита (как следует из этого макроса), то всё просто: #define MULSHIFT32(x, y) __SMMUL(x, y) Спасибо. Даже забыл, что в IAR есть intrinsic-ассемблер, как всё просто оказывается. Цитата(VladislavS @ Aug 28 2017, 19:14) Дарю Код#define MULSHIFT32(arg1, arg2)    (((int64_t)(int32_t)(arg1)*(int32_t)(arg2))>>32) Спасибо за подарок. Прогнал оба варианта на разных уровнях оптимизации. По оси ординат разница выполнения алгоритма в мс. Time( __SMMUL(x, y)) - Time((((int64_t)(int32_t)(arg1)*(int32_t)(arg2))>>32)). Без оптимизации паритет, на умеренной оптимизации использование интринсик-функции __SMMUL(x, y) оказывается более быстрым, в случае максимальной оптимизации по скорости выигрывает решение от VladislavS. Разница не существенная, в районе 1%. [attachment=108540:________...________.png] Дизассемблер для каждой из реализаций. Алгоритм раскладывается в одни и те же инструкции, но с использованием разных РОН. Код        b0 = a0 + a7;       b7 = MULSHIFT32(*cptr++, a0 - a7) << 1;       0x59830: 0x1979         ADDS      R1, R7, R5         b0 = a0 + a7;       b7 = MULSHIFT32(*cptr++, a0 - a7) << 1;       0x59832: 0x1bed         SUBS      R5, R5, R7       0x59834: 0xf852 0x7b04  LDR.W     R7, [R2], #0x4       0x59838: 0xfb57 0xfc05  SMMUL     R12, R7, R5       0x5983c: 0xea4f 0x0c4c  LSL.W     R12, R12, #1 Код        b0 = a0 + a7;       b7 = MULSHIFT32(*cptr++, a0 - a7) << 1;       0x59906: 0x1978         ADDS      R0, R7, R5         b0 = a0 + a7;       b7 = MULSHIFT32(*cptr++, a0 - a7) << 1;       0x59908: 0xf853 0xcb04  LDR.W     R12, [R3], #0x4       0x5990c: 0x1bed         SUBS      R5, R5, R7       0x5990e: 0xfb5c 0xfc05  SMMUL     R12, R12, R5       0x59912: 0xea4f 0x0c4c  LSL.W     R12, R12, #1 И хотя первоначальный вопрос про синтаксис макросов остался открытым, но задача решена другими средствами. Спасибо за помощь!
  8. IAR ARM ассемблер

    VladislavS, спасибо за идею. Это не совсем то, что нужно, но получилось слегка ускорить алгоритм. Создал обычный макрос Код#define MULSHIFT32(arg1, arg2)    ((((long long)arg1)*((long long)arg2))>>32) Всё-равно получается избыточно, если верить листингу. Было до Код        b0 = a0 + a7;       b7 = MULSHIFT32(*cptr++, a0 - a7) << 1;       0x59ac0: 0xf8d4 0xa010  LDR.W     R10, [R4, #0x10]         b0 = a0 + a7;       b7 = MULSHIFT32(*cptr++, a0 - a7) << 1;       0x59ac4: 0x1846         ADDS      R6, R0, R1         b0 = a0 + a7;       b7 = MULSHIFT32(*cptr++, a0 - a7) << 1;       0x59ac6: 0x1a09         SUBS      R1, R1, R0       0x59ac8: 0xf855 0x0b04  LDR.W     R0, [R5], #0x4       0x59acc: 0xf7fd 0xf9ea  BL        MULSHIFT32             ; 0x56ea4         MULSHIFT32:               0x56ea4: 0xfb81 0x2000  SMULL     R2, R0, R1, R0               0x56ea8: 0x4770         BX        LR       0x59ad0: 0x4680         MOV       R8, R0       0x59ad2: 0xea4f 0x0848  LSL.W     R8, R8, #1 Стало после Код        b0 = a0 + a7;       b7 = MULSHIFT32(*cptr++, a0 - a7) << 1;       0x58dee: 0xf851 0x6b04  LDR.W     R6, [R1], #0x4       0x58df2: 0x17f7         ASRS      R7, R6, #31       0x58df4: 0x17e5         ASRS      R5, R4, #31       0x58df6: 0x17d3         ASRS      R3, R2, #31       0x58df8: 0x1aa2         SUBS      R2, R4, R2       0x58dfa: 0xeb65 0x0303  SBC.W     R3, R5, R3       0x58dfe: 0x4634         MOV       R4, R6       0x58e00: 0x463d         MOV       R5, R7       0x58e02: 0xfba2 0x6704  UMULL     R6, R7, R2, R4       0x58e06: 0xfb02 0x7705  MLA       R7, R2, R5, R7       0x58e0a: 0xfb03 0x7704  MLA       R7, R3, R4, R7       0x58e0e: 0x46b8         MOV       R8, R7       0x58e10: 0xea4f 0x0848  LSL.W     R8, R8, #1 В моём случае объявить, как в Вашем примере 64-битную переменную и положить в неё результат 32х32 не получится.
  9. программист ЦОС, Смоленск

    У Вас, насколько помню, были вечерние курсы для студентов МЭИ, где молодые резервы готовили себе. Прикрыли "кузницу кадров"?
  10. Bluetooth HC05

    У модуля HC-05 есть вывод под названием KEY (34 контактная площадка), который должен быть подтянут к Vcc для входа в режим AT-команд. В модуле HC-06 аналогичный, только на другой контактной площадке, у них распиновка отличалась. Ещё, вспоминаю, не работала смена режимов "на лету", т.е. приходилось устанавливать нужный уровень на Key, потом осуществлять сброс модуля.
  11. Coilcraft в России

    С недавнего времени часть поставщиков стали отказываться поставлять нам продукцию Coilcraft, ссылаясь на санкции. При этом часть поставщиков эту информацию опровергают, мол "Мы про такое не слышали". Мы покупаем обычные дроссели и трансформаторы для потребительской аппаратуры. Не СВЧ, не продукция двойного назначения. Наша фирма не занимается оборонкой, космосом. При этом в сети нигде нет информации подтверждающей или опровергающей запрет на ввоз Coilcraft в Россию. Может кто-либо пролить свет на складывающуюся ситуацию? Возможно есть какой-либо реестр производителей электронных компонентов, чья продукция попала под запрет ввоза в Россию.
  12. Попробовали лазером выжечь. "Чёрный квадрат" получается, но маркировка немного, но читается. В отличие от фрезы, которая сгрызает абсолютную толщину, лазер испаряет относительный по толщине слой. Т.е. там где была канавка, там она и остаётся. Но с лазером проще, он не так критичен к вариациям микросхем по высоте. На днях попробуем гравировать ортогональной сеткой, а не сплошной "заливкой". Ещё предстоит решить вопрос надёжности: как отнесутся чипы к перегреву. Механическая обработка в этом плане выглядит более щадящей. Пассивку защищать бессмысленно, это и не требуется. Я хочу засекретить специализированные чипы, для которых потратили много ресурсов на поиск по цене/функционалу, тестирование, внедрение. Поскольку у конкурентов аналогичные узлы на платах, не хочу отдавать им технологии в руки. А прошивки само-собой - закрыты и зашифрованы)
  13. Добрый день! В текущем проекте потребовался блутуз (2.1 EDR), способный в режиме мастера поддерживать связь с несколькими слэйвами одновременно. Брать голый чип и самостоятельно реализовывать стэк нет опыта и времени. Хочу использовать готовый модуль. Массовые китайские HC-05, HC-06 на CSR чипах не умеют работать в режиме мультислэйва. Модули от Bluegiga WT12 по описанию имеют такую возможность, но стоят дороговато. Есть ли ещё на рынке блютуз модули приемлемого качества с поддержкой функции мультислэйва. PS в принципе подойдёт и модуль стандарта BT 4.0, но желательно всё таки 2.1.
  14. Bluetooth модуль "точка-мультиточка"

    Цитата(Bass @ Sep 5 2014, 09:48) Посмотрите в сторону lmx9838. Интересный модуль. Корпус относительно "паябельный". Довольно старый, правда, ещё разработка почившего National Semicond. Радует, что есть информация по использованию, в т.ч. и на форуме. UPD Но цена у lmx9838 просто чудовищная. Стал сомневаться на счёт "Dual-Mode". Означает ли это, что контроллер может одновременно производить обмен как с BT 2.1 (EDR), так и с BT 4.0 (LE). Или только один из двух режимов.
  15. Life, у Вас "личка" не работает: "ящик отключён или переполнен". Предложение интересно по крайней мере тем, что нет других альтернатив. Отправьте мне свои координаты, не хочу свою почту в общем доступе оставлять.
  16. По поводу краски, компаунда тоже думал. Но не устраивает то, что ремонтопригодность устремится к нулю. Да и контролировать качество сборки сложно. Кроме того краску при желании можно удалить, сошлифомать. На худой конец, если не получится шлифовать, тогда да, будем заливать верхушки чипов непрозрачной эпоксидкой. По поводу серьёзности нашей аппаратуры и необходимости защиты не буду в полемику вдаваться. Просто есть задача, прошу совета по её решению.
  17. Bluetooth модуль "точка-мультиточка"

    Спасибо! Очень интересный модуль. Dual-mode тоже очень кстати. Внешний МК есть, мощностей хватит. Только вот возиться со стеком не очень хочется. Одно НО: корпус очень неудобный. В условиях нашего производства "не паябельный".
  18. Приветствую! Тоже встал вопрос защиты устройства от копирования. Шлифовать думаю не всё, а только те узлы, которые представляют некоторое ноу-хау в среде конкурентов. Травление кислотой неприемлемо, ручная шлифовка тоже по ряду причин. Вижу процесс так: мультиплексированная заготовка после автомонтажа поступает в ЧПУ фрезер, который проходит фрезой по заданным координатам - крышкам указанных микросхем. В сети находятся подобные вопросы по защите от копирования, но ответы сводятся либо к "не заморачивайся", либо "шлифуй бормашиной вручную". Желательно делать это на том же самом предприятии, которое осуществляет автомонтаж, всё так сказать в едином технологическом цикле. Я связывался с "Резонитом", ответили отказом. Вопрос: кто-нибудь занимался такими вещами, имеет опыт?
  19. Буквально на днях читал статью о стробировании напряжений ячеек составной батареи. Схема и алгоритм измерения относительно сложные. На каждую ячейку нужен трансформатор: не дешёвое удовольствие. AN112 от Linear http://cds.linear.com/docs/en/application-note/an112f.pdf Перевод http://embedders.org/node/168 [attachment=86791:________.PNG]
  20. Приветствую! Уже довольно давно пользуюсь P-CAD 2006. Пакет более-менее освоен, куча своих библиотек. Но хочется бОльшего удобства. Поглядываю в сторону Altium. Хочу выяснить несколько вопросов. 1. В AD этап проектирования сковозной? Т.е. изменения в схеме сразу же отражаются и на плате и в обратном направлении. В P-CAD механизм ECO мне, честно, не нравится. 2. Есть ли в AD интерактивная "ручная" трассировка на подобие P-CAD? Т.е. при прокладке трассы система не даёт наложить одну дорогу на другую. В P-CAD этот режим очень нравится. Пробовал Eagle CAD, там такого нет, даже не стал дальше экспериментировать. 2а. Режим "расталкивания" трасс при ручной трассировке. Опять же в P-CAD этот режим меня устраивает, хочется аналога. 3. Есть ли в AD возможность задать параметры зазоров/толщин только для выбранной области ПП? Скажем возле BGA-чипа сделать по-тоньше, в остальных свободных местах по-толще. В P-CAD этой возможности нет, очень не хватает. По этому вопросу также хочу узнать, какие из САПР в принципе на такое способны. Буду рад услышать ответы. Только, пожалуйста, без холливара X лучше Y.
  21. Хочу перейти с P-CAD 2006 на...

    Спасибо за оперативность! Теперь есть стимул изучить. Правда, печатки у меня периодическое занятие (в основном программирование), буду наскоками изучать-плеваться)
  22. Приветствую Встала задача разработать радиотракт с дальностью приёма 5 км на открытой местности. Также предполагается применение в условиях леса (деревья) и города (стены зданий, переотражения и т.п.), но естественно с меньшим радиусом действия. Антенна с круговой диаграммой направленности по горизонту, т.е. один абонент перемещается в пространстве относительно другого. По моим соображениям для достижения максимальной дальности надо брать частоту пониже. Популярная 433 МГц зашумлена (атвосигнализация и т.п.). Смотрю на частоту 315 МГц. Можно ли её использовать в России? Какая максимальная выходная мощность, те же 10 дБм? Наткнулся на трансиверы CC1120 и CC1121. Заявляют дальность 10 км (по всей видимости узконаправленная антенна, но тем не менее), неплохая чувствительность приёмника в -125 дБм. Можно ли будет из них выжать дальность в 5 км в диапазоне 315 МГц с мощностью 10 дБм на открытом пространстве с ненаправленной антенной? Пугает несколько моментов. Во первых сам радиотракт, который я со своим уровнем владения вопросом не посчитаю. С хода никаких апликейшинов от Ti не нашёл. Та же беда с антенной. Может быть кто ткён носом в нужные документы. Во-вторых в примерах для 169 МГц Ti сплошь и рядом используют компоненты типоразмером 0402, наши монтажники такое не потянут. Возможно ли на таких частотах использовать SMD 0603 или даже 0805? В-третьих опять таки не уверен, можно ли использовать 315 МГц в России без получения лицензии. Подводя итог и учитывая, что опыта в ВЧ, радиопередаче и т.п. нет и то, что производство не готово паять такую мелочь спрошу, может быть кто находил уже готовые модули для радиопередачи на большие расстояния? Или есть аналогичные решения других производителей с примерами расчёта радиотракта на 315 МГц. Буду благодарен любой информации.
  23. Тоже решил реанимировать китайского старичка. Флешка очистилась, но SAM-BA не хочет к плате подключаться. Ни по USB (устройство не опознаётся), ни по DBGU. Генерация на кварце есть (18.429 МГц). SAM-BA v2.12, система Win7x86. Есть ли какие варианты кроме смены процессора? Дешевле будет его выбросить, чем проц покупать. UPD Победил! Припаял дубовую подтяжку на USB-линию D+. Ну и драйвера для "неизвестного устройства" поставил из комплекта самбы. Прошился на "ура". Единственное, что не понял, почему SAMBA не хотела по DBGU подключаться.
  24. Добрый день. Как-то отстал от современных тенденций в электронике. Есть небольшое переносимое устройство. Пытаюсь подобрать микросхему последовательной Flash-памяти для хранения звуков, изображений, логов. Требуется объём 1 Гбит, скорость обмена в районе 20 Мбит/с. Есть соблазн поставить SD-карту, подкупает цена и минимализм (малое число выводов, лёгкость монтажа). Но всё-таки область применения карт памяти несколько иная: перенос информации между устройством и ПК. В моём случае память (карта) не будет доступна пользователю и никогда не будет извлекаться. Кроме того не уверен, что контакт с картой будет надёжным при эксплуатации устройства: вибрации и повышенная влажность. Плата будет заливаться компаундом. Неужели нет аналога (по цене и по интерфейсу) SD-карт но в корпусах под пайку на плату? Или чипы аналогичные AT45DBxxx, 24LCxxx с бОльшим объёмом? PS Давным-давно применял последовательную DataFlash от Atmel AT45DBxxx. На сайте так и не нашёл её в разделе продуктов. Atmel отказался от производства своей DataFlash?
  25. Огромное спасибо! Точно micron, я его с micrel перепутал Просмотрел N25Q00AA. Чип подходит, только дороговат, дороже тех же SD-карточек сопоставимого объёма. Нравится, что он в SOIC доступен, т.к. к BGA наше производство не готово. Поэтому eMMC пока только возьму на заметку. А кому Atmel своё направление слили? Я по сайту efo.ru посмотрел, они ещё в 2012 году память на новые тех-нормы переводили, обновляли линейку. И на тебе( 2 Tarbal. А третьи возможно "Хёндай"? http://www.skhynix.com/