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

technik-1017

Участник
  • Постов

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

  • Посещение

Репутация

0 Обычный

Информация о technik-1017

  • Звание
    Участник
    Участник

Контакты

  • Сайт
    Array
  1. Похоже, что для выполнения строки if (Iap(IAP_CMD_READ_DEV_SN) == IAP_RES_CMD_SUCCESS) у компилятора есть вся необходимая информация уже после выполнения строки SysTickInit(CCLK_MH / (OS_TICKS_PER_SEC * SYSTICK_DIV)); поэтому он и считает, что имеет право оптимизировать её. Он не стал выполнять переход на Iap() как на функцию и развернул её, а потом с оптимизировал и вынес наверх. Может попытаться заставить его не разворачивать, например убрать static у функции Iap (у меня в проверяем коде сработало). Можно кусок проекта с неработающим кодом, чтобы проверить, а то не получается повторить ошибку.
  2. Можно на каждую ветку поставить преобразователь RS485-Ethernet и далее в ПК создать виртуальные COM-порты, т.е. адреса в сети RS485 будут одинаковые, а порты разные. Также вы децентрализуете свою систему (отказ по общей причине). То на чём остановились вы использовать думаю можно, но это более затратно и возможны проблемы в будущем. Например, если ваш сервер снимут с производства. Конвертеры же RS485-Ethernet думаю будут всегда, а COM-порт он везде COM-порт.
  3. Добрый день, впервые начал проект в котором активно используются потоки и наткнулся на один не очень приятный момент, например: Существует главный поток (GUI) и созданный поток. Связь между потоками осуществляется с помощью сигналов и слотов. Так вот, когда основной поток (GUI) принимает данные из потока и отображает их, наводим курсор мышки на какой-нибудь виждет с установленной для него подсказкой (setToolTip), основной поток останавливает обновление GUI и активно начинает выводить подсказку. После вывода подсказки продолжает обновление GUI (при этом поток продолжал работать и данные далее отображаются корректно). Данный эффект замечен не только с подсказкой, но и при наведение на элементы меню. Данный эффект сильно проявляется в версии Qt 5.14.2 для Windows (в которой я и начал делать свой проект). В версии 5.12.10 для Windows проявляется в значительно меньшей степени. В Linux данный эффект не проявляется в обоих версиях. Также для нормализации работы потоков в версии 5.14.2 требуется чаще использовать QCoreApplication::processEvents(). Видимо какие-то проблемы с обработкой очереди событий. Я взял пример из книги Шлее Qt 5.10 и слегка модифицировал, чтобы было видно данный эффект (см.вложение). Эффект хорошо виден в версии 5.14.2, в версии 5.12.10 виден только один раз при первом появлении подсказки. Т.е. проблема оказалась не в моём коде. Может кто сталкивался с подобным? Как можно это обойти? Какая версия Qt наиболее стабильная на сегодняшний день? ThreadTimer.zip
  4. Выдернул из одного проекта (может надо что почистить), но вроде работает
  5. оптимизацию компилятора не учитываем в первом случае будет создана функция, где регистр будет задан как "константа" (новый регистр - новая функция), а значение передаётся как параметр функции, т.е. на ассемблере будет производиться запись в регистр (вывода) из другого регистра (выводимое значение) LD R2,55 LD R1,R2 во втором случае и регистр и значение будут "константами", т.е. на ассемблере будет записываться конкретное число в конкретный регистр LD R1,55 возможно данный код служил для дополнительной оптимизации
  6. если я не ошибаюсь, то каналы ШИМ в mega48 имеют разную разрядность, одни построены на 8-битном таймере, другие на 16-битном, вы же определяере все OCR как 8-битные
  7. OCR это не РЕГИСТРЫ сравнения, а ПОРТЫ, вы пытаетесь обратиться к портам по указателю? Или какая цель этого кода? Что вы хотите получить? Наверно необходимо преобразование типа OCR до типа определения портов, чтобы компилятор понял, что это не адресное пространство RAM почитайте здесь (2. Передача порта через указатель) http://easyelectronics.ru/rabota-s-portami...erov-na-si.html
  8. inline нужен, например, для функций в прерываниях, чтобы не допускать разрастания стека (о скорости выполнения уже говорили). использование inline ещё не говорит о том, что функция будет сто процентов инлайниться. Для принудительного инланинга необходимо использования директиву #pragma inline = forced
  9. IAR 8.10

    в проводнике windows установите
  10. IAR 8.10

    попробуйте так
  11. Добрый день, предлагаю свой вариант конвертера текста для индикатора на контроллере HD44780 (CP1251 -> HD44780). Преобразование производится на уровне компиляции и строится на использовании макроса LCD_TEXT_XX (файл lcd_conv.h). Данный макрос может быть использован с любым компилятором языка Си. Во вложении файл lcd_conv.h и описание. lcd_conv.zip
  12. Рынок металлодетекторов можете рассмотреть (различные рамки, пищевое производство...). Используют ПЛИС для снижения времени реакции.
  13. Cronyx использует ПЛИС, например, http://cronyx.ru/hardware/taupci-xe1.html
  14. Как альтернативу STM32 рассматриваю чипы SmartFusion2 от Microsemi (https://actel.ru/item/smartfusion2). Кто-нибудь использует, поделитесь впечатлениями. Младший, m2s005, как мне кажется, может закрыть достаточно большую нишу разрабатываемых устройств.
×
×
  • Создать...