technik-1017
Участник-
Постов
16 -
Зарегистрирован
-
Посещение
Репутация
0 ОбычныйИнформация о technik-1017
-
Звание
Участник
Контакты
-
Сайт
Array
-
Похоже, что для выполнения строки if (Iap(IAP_CMD_READ_DEV_SN) == IAP_RES_CMD_SUCCESS) у компилятора есть вся необходимая информация уже после выполнения строки SysTickInit(CCLK_MH / (OS_TICKS_PER_SEC * SYSTICK_DIV)); поэтому он и считает, что имеет право оптимизировать её. Он не стал выполнять переход на Iap() как на функцию и развернул её, а потом с оптимизировал и вынес наверх. Может попытаться заставить его не разворачивать, например убрать static у функции Iap (у меня в проверяем коде сработало). Можно кусок проекта с неработающим кодом, чтобы проверить, а то не получается повторить ошибку.
-
Можно на каждую ветку поставить преобразователь RS485-Ethernet и далее в ПК создать виртуальные COM-порты, т.е. адреса в сети RS485 будут одинаковые, а порты разные. Также вы децентрализуете свою систему (отказ по общей причине). То на чём остановились вы использовать думаю можно, но это более затратно и возможны проблемы в будущем. Например, если ваш сервер снимут с производства. Конвертеры же RS485-Ethernet думаю будут всегда, а COM-порт он везде COM-порт.
-
Работа с потоками в разных версиях Qt
technik-1017 опубликовал тема в Программирование
Добрый день, впервые начал проект в котором активно используются потоки и наткнулся на один не очень приятный момент, например: Существует главный поток (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 -
Qt - прокрутка части окна
technik-1017 ответил Harvester тема в Программирование
Выдернул из одного проекта (может надо что почистить), но вроде работает -
выложил здесь https://yadi.sk/d/CQRJyHd0pb_c0w
-
оптимизацию компилятора не учитываем в первом случае будет создана функция, где регистр будет задан как "константа" (новый регистр - новая функция), а значение передаётся как параметр функции, т.е. на ассемблере будет производиться запись в регистр (вывода) из другого регистра (выводимое значение) LD R2,55 LD R1,R2 во втором случае и регистр и значение будут "константами", т.е. на ассемблере будет записываться конкретное число в конкретный регистр LD R1,55 возможно данный код служил для дополнительной оптимизации
-
Регистры сравнения через указатель
technik-1017 ответил s_gary тема в IAR
если я не ошибаюсь, то каналы ШИМ в mega48 имеют разную разрядность, одни построены на 8-битном таймере, другие на 16-битном, вы же определяере все OCR как 8-битные -
Регистры сравнения через указатель
technik-1017 ответил s_gary тема в IAR
OCR это не РЕГИСТРЫ сравнения, а ПОРТЫ, вы пытаетесь обратиться к портам по указателю? Или какая цель этого кода? Что вы хотите получить? Наверно необходимо преобразование типа OCR до типа определения портов, чтобы компилятор понял, что это не адресное пространство RAM почитайте здесь (2. Передача порта через указатель) http://easyelectronics.ru/rabota-s-portami...erov-na-si.html -
Инлайновая функция
technik-1017 ответил jenya7 тема в IAR
inline нужен, например, для функций в прерываниях, чтобы не допускать разрастания стека (о скорости выполнения уже говорили). использование inline ещё не говорит о том, что функция будет сто процентов инлайниться. Для принудительного инланинга необходимо использования директиву #pragma inline = forced -
Исходники программ и библиотек
technik-1017 ответил Waso тема в AVR
Добрый день, предлагаю свой вариант конвертера текста для индикатора на контроллере HD44780 (CP1251 -> HD44780). Преобразование производится на уровне компиляции и строится на использовании макроса LCD_TEXT_XX (файл lcd_conv.h). Данный макрос может быть использован с любым компилятором языка Си. Во вложении файл lcd_conv.h и описание. lcd_conv.zip -
Рынок металлодетекторов можете рассмотреть (различные рамки, пищевое производство...). Используют ПЛИС для снижения времени реакции.
-
Cronyx использует ПЛИС, например, http://cronyx.ru/hardware/taupci-xe1.html
-
На что бы перейти...
technik-1017 ответил Arlleex тема в ARM, 32bit
Как альтернативу STM32 рассматриваю чипы SmartFusion2 от Microsemi (https://actel.ru/item/smartfusion2). Кто-нибудь использует, поделитесь впечатлениями. Младший, m2s005, как мне кажется, может закрыть достаточно большую нишу разрабатываемых устройств.