Jump to content

    

Nixon

Админы
  • Posts

    2,801
  • Joined

Everything posted by Nixon


  1. Я иногда в нем рисую заготовки с большим количеством разнообразных пинов (например какие-нибудь мезонинные разъемы), ибо родной cell editor в плане юзабилити ОЧЕНЬ далек от идеала.
  2. Падает при переключении на Designer. А, сорри, падал как раз 2021.01. Попробую новый отпишусь. Upd. Да, в 2021.02 починили дизайнер. Не то чтобы он сильно был нужен, но иногда очень полезен.
  3. Это не апдейты. Это скорее всего та самая телеметрия с которой вы соглашаетесь при первом запуске PCB редактора
  4. В общем расследовали мы с philipov проблему падения PADS PRO x64. Судя по всему виноваты драйвера ODBC x64 для MS ACCESS версии 16. С драйверами версий 14 и 15 падения прекратились. Те кто не использует databook или база не в access могут не волноваться вообще.
  5. Сегодня-завтра мы проверим на второй машине. Возможно это только у меня
  6. Отослал. Кроме торжественного падения (с созданием дампа и перезапуском) DxDesigner'а падает еще и библиотекарь 2.7 когда я пытаюсь пользоваться его фишками для dxdatabook'а. Но тут просто ап, и нет программы. Без дампа и остального. Я пока работаею только один, сейчас поставим на вторую машину разработчика новую версию - сравним поведение, может действительно проблема только у меня
  7. Фишка в том что у меня падает и падала только x64 версия. x32 работает отлично. Короче, напишу сейчас тикет в саппорт, добавлю все минидампы, может что-то посоветуют
  8. ОС чистая Win10 Enterprise, корпоративная, 2 месяца от роду. Вполне допускаю что внутренний софт безопасности шалит, но на x32 таких проблем не было вообще.
  9. Через полдня работы с 2.7 делаю вывод : МОЖНО РАБОТАТЬ НЕ РЕКОМЕНДУЕТСЯ ДЛЯ РАБОТЫ (см P.S. Пишу в техподдержку
  10. x32 и пользовался. По другому работать нельзя было.
  11. Точно, в английском варианте сайта закачка есть. Но к загрузке предлогается только x64 версия теперь. 2.6 x64 падала у меня по сто раз на день. Надеюсь теперь такого не будет
  12. В личном кабинете пишет что версия 2.7 недоступна для загрузки. Зато в моих продуктах появился просто падс, экспедишен и даже боардстейшн (тоже недоступные для скачивания, хотя ). Сбой какой-то видать
  13. Вряд ли. Вам нужно будет вычислить тот же объем работы для создания маски сколько и для прямой записи битбандингом плюс еще сохранение этой маски плюс запись этой маски в нужный регистр. Единственно что может ускорить вывод в порт произвольного значения - это формирование таблицы перекодировки "Значение данных - Маска Set - Маска Reset" на этапе компиляции. Но как вы понимаете кушать память оно будет огого.
  14. Я возможно неправильно вас понимаю, но имея порт шириной 4 на пинах, допустим, <1,3,5,7> и желая установить на него произвольное значение типа 0bxxxx вы не сможете предварительно создать маску этого самого произвольного значения для записи этого значения на нужные пины.
  15. А это все равно быстрее будет чем формировать нужную маску
  16. Цикл не нужен. Посмотрите как реализован SetDout и как определяются DOUTx_ADDR // CLASS PORTPINS TEMPLATE template < char port, uint8_t... pins > class PortPins; template < char port, uint8_t pin0, uint8_t... pins> class PortPins<port, pin0, pins...> { private: enum { PIN_COUNT = sizeof...(pins) + 1 }; static constexpr uint8_t pinlist[16] = { pin0, pins... }; static constexpr bool NO_DOUBLED_PIN ( void ) { for (int i = 0; i < PIN_COUNT; i++) for (int j = i + 1; j < PIN_COUNT; j++) if (pinlist[i] == pinlist[j]) return false; return true; } static_assert((port >= 'A') && (port <= 'F'), "Error!!! Illegal GPIO port name!!!"); static_assert((sizeof...(pins) < 16), "Error!!! Illegal pins count!!!"); static_assert((pin0 < 16), "Error!!! Illegal pin number!!!"); static_assert(NO_DOUBLED_PIN(), "Error!!! Doubled pins found!!!"); enum { GPIOx_BASE = port_base_t<port>::GPIOx_BASE }; enum { DOUTBB_BASE = 0x42000000UL + (GPIOx_BASE + offsetof(GPIOxTypeDef, DOUT) - 0x40000000UL) * 32 }; enum { DOUT0_ADDR = (DOUTBB_BASE + pinlist[0] * 4) * ((0 < PIN_COUNT) ? 1 : 0) }; ... enum { DOUT15_ADDR = (DOUTBB_BASE + pinlist[15] * 4) * ((15 < PIN_COUNT) ? 1 : 0) }; ... private: INLINE static void SetDout ( int value ) { if constexpr (DOUT0_ADDR) { *(volatile uint32_t*)DOUT0_ADDR = value; value >>= 1; } ... if constexpr (DOUT15_ADDR) { *(volatile uint32_t*)DOUT15_ADDR = value; value >>= 1; } } ... }
  17. У вас тормозит "индусский" код? Тогда мы идем к вам!
  18. Не выдумывайте - это работа максимум на один день для программиста средней квалификации. Например для IAR: 1) oткрыть текстовый файл *.map 2) найти в нем блок "ENTRY LIST" 3) распарсить в массив "файл-функция-адрес-длина-тип" 4) найти свой адрес в этом массиве 5) вывести "файл-имя" Все. Строчек 100 кода на C#. Даже пример кода бросать не буду, чтоб интерес не убивать на корню.
  19. Можно. В настройках проекта, в категории Debugger увидите поле "Setup macro". Включите галочку и выберите/создайте макро файл с командами Язык этого файла С-подобен, пример execUserFlashInit() { // unlock flash __writeMemory32(0x45670123, 0x40023C04, "Memory"); // FLASH->FKEYR = FLASH_KEY1; __writeMemory32(0xCDEF89AB, 0x40023C04, "Memory"); // FLASH->FKEYR = FLASH_KEY2; } Более подробно читайте в help раздел "C-Spy Macro". По сути вы можете со своей целевой платформой творить все что захотите не загружая компилированную программу
  20. Мой бездумный копипаст :) . Спасибо за указание на ошибку. Исправил.