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

    

Neo_Matrix

Участник
  • Публикаций

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

  • Посещение

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


  1. Подскажите каким образом можно с Орла экспортировать данные о размещении компонентов? Формат файла должен соответствовать формату EasyEDA. Пример: https://docs.easyeda.com/en/Export/Export-Coordinate/index.html Как слить центры компонентов мне в принципе ясно, но что делать с остальным? При том производитель принимает только такой формат и никак иначе.
  2. Как не странно, но приведенный выше скрин из стандартного набора "Птицы" : con-molex компонент SIM-CARD_496191611.
  3. Спасибо за подсказку. С экселем все норм. Просто не могу понять отличия полей Mid X Y и Ref X Y. Первое это центр компонента. Второе это референсный центр компонента согласно документации(чего в даташитах я не наблюдал). По идее они ведь должны совпадать? В орле часть компонентов с крестом в левом нижнем углу, а не по центру.Допустим:
  4. Спасибо. А как сама UPL называется не подскажите, не могу найти? Кроме того не ясно, как потом эту таблицу зачекать. Может есть софт по типу CAM350, где можно просмотреть расстановку компонентов после скрипта?
  5. Возникла необходимость сделать "универсальный порт", который сможет объединить в себе три порта. В микроконтроллере имеется порт UART 3.3V, с него необходимо получить RS232, UART 3.3V, UART 5V, при этом выход идет на 4х контактный(Т.е. VCC, GND, RX, TX) разъем. Есть ли готовые решения под такую задачу? Или в MAX3232 можно отключать бустеры, но что делать с инвертированным сигналом?
  6. Опять же вопрос коммутации. Ведь не инверсный rs232 тоже нужен.
  7. А что делать с ее инверсией? Логическая единица у rs232 меньше -3V. ПС: Процессор STM32F407 не имеет программной инверсии сигналов.
  8. Уже думал над таким вариантом, но он немного удорожит устройство, так как нужен корпус, плата, стоимость монтажа мелких партий. Если все разместить на общей плате, можно попробовать снизить стоимость. Кроме того мы не избавляемся от проблемы многих кабелей, под разные устройства. ПС: Забудьте про стороны :)
  9. Устройство должно работать с устройствами третьих лиц. К сожалению, я не виноват, что такие именитые производители, как Филлипс выводят наружу сигнал с логическими уровнями UART 5Вольт, при этом из защит там стоит делитель на резисторах и триггер-шмитта. А некоторые и вовсе пускают 3х вольтовую логику на внешний порт. В данной ситуации моя задача не исправлять косяки других производителей, а сделать устройство максимально гибко работающее со всеми типами интерфейсов. Блок питания разумеется общий для обеих устройств. Длина кабеля не превышает 50см. Как показала 2х годичная практика, не один порт не был сожжен. Но ранее на устройстве стоял разъем microfit на 8 контактов, и переключение интерфейсов решалось правильным обжимом кабеля, естественно это плодит кучу кабелей, документации на них.... но самое важное, на новом устройстве не хватает места под разъем более чем на 4контакта, использовать иные разъемы(не microfit) не хочется, так как они себя хорошо зарекомендовали, а с учетом криворукого обслуживающего персонала - разъемы меньшего калибра повыламывают к чертям. На моем устройстве ранее было сделано так: РС-232 порт подключался прямиком к разъему через резисторы и МАКС2323, порты ЮАРТ были выведены на соседние контакты из защиты стоял резистор за ним сапрессор(такого плана как на ЮСБ) + подтяжка, далее все было подключено к триггеру-шмитта, а после к процу.
  10. Использование #define значения в ASM KEIL

    В заголовочном СИ файле определено: #define MAGIC_NUM 0x568978 const magic_number = MAGIC_NUM; Эта переменная используется в Си коде проекта. Но еще эту переменную нужно прикрутить в конец таблицы векторов прерываний. Попробовал сделать так в стартап файле: EXTERN magic_number[DATA] ... ; Здесь находится таблица прерываний. DCD magic_number ; Добавил в конец таблицы. Так вот, после компиляции в конце таблицы прерываний размещается адрес переменной magic_number, а не само значение этой переменной. Можно ли сделать, что бы по этому адресу находилось именно значение, может значение СИшного #define можно использовать? Варинт с : DCD 0x568978 не рассматриваю, так как нужно помнить о замене 2х переменных. Среда KEIL для ARM.
  11. Использование #define значения в ASM KEIL

    Не вижу никаких грабель, в логичном желании изменять переменную лишь в одном месте, а не в разбросанных по всему проекту местах. Закончилось - нечем, по прежнему использую конструкцию: const uint32_t magic_num __attribute__((section(".ARM.__at_0x08000188"))) = MAGIC_NUM; 1) Ключ --cpreproc не поддерживается в 6-й версии компилятора. 2) GBLA не подходит, так как создает переменную инициализированную нулем.
  12. Использование #define значения в ASM KEIL

    Да, вполне неплохой вариант, затягивать переменную из ASM в С, а не на оборот. Спасибо Про EXTERN писал в первом сообщении, при таком подходе в нужную ячейку кладется не сама переменная, а адрес по которому переменная расположена. EXTERN напрямую на СИшный #define натравить не получается, при компиляции выдает ошибку.
  13. Использование #define значения в ASM KEIL

    Собственно вопрос был не по include в необходимые файлы .c .cpp. Суть вопроса в присвоении значения СИшного #define ассемблерной переменной, размещенной в конце таблицы прерываний. И да сейчас сделано так: #define MAGIC_NUM 0x568978 const uint32_t magic_num __attribute__((section(".ARM.__at_0x08000188"))) = MAGIC_NUM; У этого подхода есть большой косяк, в случае смещения прошивки по флешу(допустим версия DEBUG которая стартует с начала адреса флеша и версия PROD, которая стартует со второго сектора флеша) нужно не забывать изменять значение адреса, или писать конструкции типа: #if DEBUG ... #else ... #endif При этом таблица прерываний смещается сама, в зависимости от выбраного СКАТЕР файла, по этому хотелось более изящьного решения.
  14. Подскажите софт, в котором можно составить документацию для производства партии кабелей. Т.е необходима принципиальная схема кабеля, схема обжима контактов, используемые типы контактов и т.д. Так же интересуют нормативные документы на кабеля\жгуты. Так же, если кто то имел опыт заказа изготовления кабелей, поделится примерами документации.
  15. Необходима прошивка, размер файла которой будет кратен 128байтам, т.е необходимо после сборки проекта в Keil сформировать BIN кратный 128. Сейчас для генерации BIN использую встроенную тулзу fromelf. Попытался добавить параметры в командную строку: --bincombined --bincombined_base=0x8000000 --bincombined_padding=128,0xFF, но походу ее разработчики предусмотрели ограничение на параметр bincombined_padding в размере 4. На данный момент приходится сначала генерить BIN, а после увеличивать его размер в winhex, что со временем уже немного надоедает. Возможно кто то знает нормальное решение, желательно с командной строкой, так, как хочется напрямую в действия КЕЙЛа прописать.
  16. Сработало на 100 %, попробовал на 2х разных файлах. Srecord действительно классная прога, я даже не задумывался о ее потенциале, впервые она мне помогла привести в порядок вывод файлов моторола-срекорд, а здесь оказывается она и такое может. Огромное спасибо, что подсказали! И писать не пришлось :) Все уже придумано до нас.
  17. Не погибнет, он живучий :) у меня SWD есть на такой случай. Спасибо, сейчас попробую
  18. x893 Написать прогу, это будет следующий этап, пока смотрю готовые варианты. scifi Тулзой SRecord я пользуюсь для формирования файлов, для дальнейшей отправки по воздуху, неужто в ней есть функция по добиванию конца прошивки мусором, до значения кратного 128?
  19. Отладка и выход за пределы массивов

    Подскажите, есть ли способ под FreeRTOS понять есть ли выходы за предел массива. Хуки на недостаток хипа и стека работают нормально и очень помогают, когда нужно зажать стек задачи до минимума. Но как отладить выход за пределы массивов? Такая необходимость появилась, так как иногда устройства перезагружаются сами по себе(в обработчиках исключений стоит функция сброса, так как устройства должны максимально быть доступны). Есть подозрение на выход за пределы. Так как проект достаточно крупный около 300кб кода с оптимизацией, пересмотреть, а главное заметить ошибку очень сложно. Кто, что может порекомендовать?
  20. Отладка и выход за пределы массивов

    Использую Keil. В комплекте с FREERTOS есть демка, показывающая, как это делать. Сам не использую.
  21. Отладка и выход за пределы массивов

    Всем спасибо. Ошибка найдена. Функции strncmp при определенных стечениях обстоятельств передавался NULL вместо валидного указателя.
  22. Отладка и выход за пределы массивов

    Спасибо всем за ответы. Их действительно много и они вполне перекрывают вопрос. Думаю лучший способ настроить MPU(cortex m4) + в некоторых местах сделаю массивы на длину +1 элемент и поставлю туда брейкпоинт на запись и чтение. Вариант с перекрытием массивов очень сложен, так как кода много и проблемный массив неизвестен. Аналитически код был просмотрен уже неоднократно, был найден один ляп с приведением типов, но это не изменило ситуацию в корне. Так же интересует, в случае фриртоса и выделения памяти в хипе, если будет затерт конец массива выделенной памяти, будет ли вызван ассерт во время фрии, или в конце нет данных маллока для отслеживания окончания массива(используется heap4.c + его модификация под CCM память)? Вариант с испытательным сроком очень оригинален. Всем спасибо
  23. Tracealyzer для FreeRTOS

    А нет ли подобного решения под 4тую версию?
  24. STM32, I2C, HAL

    Цитата(Метценгерштейн @ Apr 1 2016, 09:06) Не могу понять- если я в слейве хочу принимать данные на прерываниях, то эта ф-я сама будет вызываться что-ли? Или мне ее крутить самому надо в вечном цикле? Почему тогда она к прерываниям относится? Если это просто опрос ф-ии? Просто логику не понять. Как я понял Вам нужна колбэк функция. Которая вызовется после окончания приема. Если проэкт генерился в КубеМХ. At reception end of transfer, HAL_I2C_SlaveRxCpltCallback() is executed and user can add his own code by customization of function pointer HAL_I2C_SlaveRxCpltCallback() HAL_I2C_Slave_Receive_IT должна вызываться сама, цикл не нужен.