#101 Re: Програмування Arduino » Чи варто змінювати digitalRead/digitalWrite на пряме звернення до регі » 2026-04-23 13:11:40

filat18 пише:

Прошу тих, хто у темі, дати пояснення: які плюси має такий підхід?

Плюси: одночасний доступ до декількох бітів у межах однієї GPIO банки; на деяких контролерах можливіть атомарного toggle; зазвичай трохи швидше, трохи менше розмір коду.
Мінуси: не кросплатформно.

filat18 пише:

На скільки швидше виконується операція?

На якому контроллері, з яким фреймворком?
Реалізуйте обидва варіанти, заміряйте швидкість або проаналізуйте асемблерний код.

filat18 пише:

І чи варто взагалі використати такий підхід?

Іноді варто, іноді ні. Залежить від задачі.

#102 Re: Програмування Arduino » як нівелювати всі можливі заряди на виведенні плати? » 2026-04-23 12:57:51

filat18 пише:

Який є простий спосіб "скидання" всіляких зарядів до заданого виводу (виводам), щоб вимірювана величина ємності відповідала дійсності?

Щоб вимірювана величина відповідала дійсності, проводять калібровку, і враховують паразитні ємності при обчисленні актуального значення з виміряних величин.
Є декілька методів вимірювання ємності. Ви який збираєтесь використовувати?

#103 Re: Програмування Arduino » скетч » 2026-04-21 12:10:32

romanter пише:

https://forum.arduino.ua/img/members/4196/123.rar скетч

Це код, згенерований FLProg. Він не призначений для читання та редагування людиною. Змінювати потрібно в оригінальному .flp файлі, а не в генерованому проміжному коді.
А враховуючи географію розташування видавця того FLProg, сто раз подумайте, чи варто ним користуватись.

Звісно, якщо у когось багато вільного часу та натхнення, можна реверс-інженерити і розібратись, які змінні там за що відповідають. Але куди простіше написати таку ж функціональність з нуля.

#104 Re: Програмування Arduino » скетч » 2026-04-20 18:11:37

romanter пише:

посилання та скетч прикріпив

Це посилання на відео. Покажіть сам скетч, щоб не доводилось колупатись в якихось незрозумілих архівах на гугл драйв з корявим кодуванням імен файлів.

#105 Re: Різне » ошибка компиляции » 2026-04-13 01:55:11

val1 пише:

Несколько библиотек найдено для "Control_Surface.h"
Используется: C:UsersSDadminDocumentsArduinolibrariesControl_Surface
Не используется: C:UsersSDadminDocumentsArduinolibrariesControl-Surface-main

Як сказано вище, у вас чомусь дві бібліотеки, що надають Control_Surface.h. Що таке Control-Surface-main?
Як ви встановлювали Control_Surface? Яку версію?

val1 пише:

Этот отчёт будет иметь больше информации с
включенной опцией Файл -> Настройки ->
"Показать подробный вывод во время компиляции"

Увімкніть цю опцію. Покажіть повний лог збірки, з командами, які виконуються. Бажано збережіть у файл та завантажте сюди чи на який-небудь pastebin, бо форум вирізає бекслеші у повідомленнях і робить логи погано читабельними.

jokeer пише:

Помилка можливо пов"язана з тим що компілятор С++ старий. Візьміть свіжу Arduino IDE.

Та наче і Legacy IDE, і 2.x IDE використовують один і той же тулчейн з gcc 7.3.0.

Щойно перевірив: в Arduino IDE 1.8.19 приклад "3. MIDI Interfaces/USBMIDI-Adapter" з Control_Surface версії 2.1.0 компілюється успішно для UNO, якщо замінити "midi_ser {Serial1}" на "midi_ser {Serial}". Але це ніяк не повʼязано з помилкою, що вилазить у автора.

Припускаю, що автор багато років не оновлював тулчейн, і там ще якийсь 5.x. Але це не точно. Потрібно бачити лог компіляції.

#106 Re: Програмування Arduino » Розмір прошивки » 2026-04-12 12:20:13

jokeer пише:

До речі, в кожному радіокерованому дроні є esp8265/esp8266/esp32. Таке життя..

Ну, не прям в кожному, різні бувають. А там де є - то не від хорошого життя, а за принципом "краще так, ніж ніяк".

#107 Re: Програмування Arduino » Розмір прошивки » 2026-04-12 11:23:48

Kino пише:

Причем пишут, что эта часть работает на ядре 0, то если свою прошивку запустить на втором ядре, всё равно когда никогда может тормозок проскочить.

Ну, блоби фірмварі зараз багато де завантажуються: на GPU, на аудіочіпах, на мережевих адаптерах. Але що в ESP32 воно прямо на одному з ядер виконується, не знав. Не розумію таких рішень.

Kino пише:

Так что, для управления ядерным реактором, я больше бы доверился стм, а не этой китайской фигне.

100%

#108 Re: Програмування Arduino » Розмір прошивки » 2026-04-12 04:20:41

Kino пише:

Вот мне и стало интересно, каким образом нынче можно проверить безотказность действия электронной приблуды, если даже программист не знает как работает та ОС, если исходники закрыты и хрен его знает что она там вытворит.

В теорії, має бути специфікація інтерфейсів такої ОС. Якщо програма користується інтерфейсами коректно, згідно специфікації, то все ок. Для того такі мови як C та C++ стандартизовані по ISO. А наскільки довіряти самій такій закритій ОС - нехай уже менеджмент вирішує і бере на себе відповідальність, а не програміст.
Те ж саме і з залізом.

Kino пише:

когда появились есп (а там без freertos никак) ... видимо та ос что-то себе там придумала поработать...

Хіба там якась закрита ОС? Я глибоко не копав, але наскільки знаю, там похідна від FreeRTOS чи щось подібне, і збирається з ісходніків. То сама архітектура Xtensa наче б то пропрієтарна. А останні сімейства ESP32 на ядрі Risc-V взагалі.

#109 Re: Програмування Arduino » Розмір прошивки » 2026-04-12 03:23:24

Kino пише:

Случайно, не Вы ли мне ТАУ в КПИ преподавали? )))

Ні, не памʼятаю такого в своїй біографії)

Kino пише:

Помница на ютубе видел передачку, где аппарат лучевой терапии, из-за глюка в программе убил несколько пациентов. А ведь наверняка такой аппарат проходил все проверки.

Therac-25? Якраз після того інциденту вимоги до сертифікації в мед.індустрії були переглянуті та суттєво посилені.

#110 Re: Програмування Arduino » Розмір прошивки » 2026-04-12 03:08:53

Kino пише:

Представляю как сейчас такое можно показать, например, на есп32 со встроенной закрытой операционкой.

Із теорії надійності, система може вважатись надійною лише коли доведена коректність взаємодії між її складовими компонентами, і кожний компонент системи є також надійним (рекурсивно).
Проприєтарні технології - то взагалі окрема тема.

Kino пише:

я не про бытовые безделушки, а там, где глюк в программе может стоить человеку здоровья или жизни.

Такі проекти мають проходити незалежний аудит і сертифікацію.

#111 Re: Програмування Arduino » Розмір прошивки » 2026-04-12 02:43:32

Kino пише:

Чет у автора через полдня нифига не запрацювало... или это другое?

Яка там у автора мотивація використовувати STM32 і RTOS для цієї задачі - то не моя справа) Я про загальну тенденцію в індустрії, де "не влазить в STM32F103 - візми STM32F411", бо так виходить дешевше.

#112 Re: Програмування Arduino » Розмір прошивки » 2026-04-12 02:13:05

Kino пише:

лет двадцать назад такие проекты умудрялись в тини13 впихивать, а нынче стм с 32кб не хватает.

Зараз теж ніхто не заважає впихнути. Але критерії змінились. Зараз цінується, щоб без занурення в тему і через півдня якось запрацювало. Ресурси на розробку (час × кваліфікація) дорожчі за елементну базу.

#113 Re: Програмування Arduino » Розмір прошивки » 2026-04-11 22:46:28

jokeR пише:

Походу тут дилема.

В розробці так завжди wink За виграш в одному доводиться платити чимось іншим.

jokeR пише:

І лібу знайти можна під що завгодно.

Можна відмовитись від ардуіно фреймворка і збирати прямо з FreeRTOS. Звісно, бібліотеки, що використовують ардуіно-специфічні API, доведеться або адаптувати, або замінити, або реалізувати самому.

Але жирне.

Жирне воно буде в будь-якому разі. 32 кілобайта на 32-бітній архітектурі - це не ті ж 32 кілобайта на 8-бітній.   

jokeR пише:

Як мінімум для дисплея з i2c ліба під cmsis існує

Доречі, хіба у 1602 дисплея рідний інтерфейс - I2C? Там же мабуть HD44780 і екстендер типу PCF8574. Якщо підключити через рідний інтерфейс, то не потрібно ні Wire, ні I2C HAL. Датчик MAX6675 на SPI же наче б то.

#114 Re: Програмування Arduino » Розмір прошивки » 2026-04-11 10:02:16

jokeR пише:

Зручніше ніж ардуїнівський суперцикл - окремі ізольовані таски. ... Але розмір не радує.

А ще окремий стек в RAM для кожної задачі. Та й цикл воно, наскільки бачу, все одно крутить, тільки пустий.
Логіку ізолювати можна і без RTOS. То якщо задачам пріорітети потрібні, тоді має сенс. Ну то таке.

jokeR пише:

Правда цілочисленний PID регулятор може спрацювати не так як хочеться

Fixed point? Для вашої задачі, думаю, точності має вистачити.

jokeR пише:

Походу так. І походу притягнув її дисплей з i2c.

Якщо в самому HAL так інтерфейс до I2C реалізовано, то воно і напряму, без Wire, буде здорове. Я би пошукав альтернативні імплементації, щоб без slave mode. Якщо нема, то можна й HAL'івську імплементацію трохи порізати. Але там окрім I2C іншого болота теж вистачає.

Також можна спробувати зібрати з LTO (build_flags = -flto). Але не факт, що успішно злінкується без танців з бубном.

#115 Re: Програмування Arduino » Розмір прошивки » 2026-04-10 23:29:32

Що у вас за конфігурація platformio?
Які саме ліби використовуєте?

Для термостата що там потрібно? Регулятор та примітивний UI. Не дуже розумію, навіщо там RTOS.

jokeR пише:

взяв тулзовину puncover, дивлюсь куди ділось 32к флешки.

А objdump що показує? Окрім .text є ще секції .data та .rodata.

Наприклад, дисплей хоч і символьний, але бібліотека може тягнути кастомні бітмапи для завантаження в CGRAM. 

jokeR пише:

Я так розумію, дуже багато місця зайняла float математика, яку притягнула з собою ліба термометра (_adddf3, __aeabi_dmul і тому подібне).

Їх може і який-небудь snprintf() притягнути.

jokeR пише:

Але абсолютний рекордсмен - HAL (HAL_I2C_EV_IRQHandler, HAL_RCC_OscConfig,HAL_UART_IRQHandler).

Так це мабуть ардуінівська Wire. Вона дурна.
UPD: сама по собі HAL_I2C_EV_IRQHandler() в stm32f1xx_hal_i2c.c монструозна. Не розумію, навіщо імплементувати і master, і slave mode в одному місці одночасно.

#116 Re: Апаратні питання » Нужна помощь в настройке нано, под наливатор » 2026-04-01 17:56:54

Alex15951 пише:

Теж не працює на arduino nano, на іншій платі процює

На якій іншій? Подивіться, чим ті плати відрізняються. Може це підкаже де проблема.

Яка версія прошивки, 1.5, чи 1.4, чи ще якась?

Alex15951 пише:

DEBUG_UART ставив в 1, нічого не змінилось

Навіть "start" на UART не зʼявляється після ресету?

Alex15951 пише:

При включенні помпа одразу працює, sw енкодера як інвертовано працює.

Там в якості вимикача живлення навіщось цілий драйвер двигунів використовується. У вас такий же драйвер? Що на D3 при включенні?

#117 Re: Апаратні питання » Esp32 в промисловому середовищі » 2026-03-31 20:24:07

Kino пише:

Вот это самый главный неиследованный вопрос. Почему должно что-то не то записаться? Если, например, подключить к выводу XTAL генератор импульсов и подавать по одному импульсу хоть раз в день, от этого программа не будет выполняться?

З даташита Atmega328P:

When applying an external clock, it is required to avoid sudden changes in the applied clock frequency to ensure stable operation of the MCU. A variation in frequency of more than 2% from one clock cycle to the next can lead to unpredictable behavior. If changes of more than 2% is required, ensure that the MCU is kept in reset during the changes.

Це якщо сконфігуровано для External Clock. Якщо сконфігуровано для кварца, то таке взагалі не передбачається.

Чисто теоретично, в повністю статичному МК (без DRAM, такому як AVR), якщо імпульси з правильними фронтами (з одного боку достатній slew rate, з іншого вищі гармоніки на допустимому рівні), то має працювати (ще питання по роботі АЦП та записі в EEPROM).
Але які там будуть імпульси, коли генерація ще не стабілізувалась? От перевищить амплітуда поріг на декілька наносекунд, один блок МК сприйме це за тактовий імпульс, а інший його пропустить, і все.
В деяких схемах ставлять D-тригер для поділу частоти кварца навпіл, це дещо підвищує стабільність, але не у всіх випадках.

#118 Re: Апаратні питання » Esp32 в промисловому середовищі » 2026-03-31 19:28:11

Kino пише:

Согласен, в авр для этого даже фьюзы специальные есть. (65 мс максимум, если память не подводит). Только речь же была, что программа "херовила", т.е. тактирование, какое-никакое, но всё же было. Или я не понял вопрос.

Ну ось іде нормальне тактування, програма виконується. Тут приходить імпульс, який зриває генерацію, кварц починає "розкачуватись" заново. Ядро замість стабільних 16 МГц отримує хто зна шо в якому спектрі. При цьому відбувається читання/запис регістрів чи SRAM. Прочитатись чи записатись може зовсім не те, що мало би при нормальній роботі.   

Kino пише:

зы. Да и то, что выручил внешний генератор тоже такое...

Автор же про внутрішній RC писав. Релаксаційний осцилятор сам по собі набагато стабільніший, тим більше на кристалі самого МК.

#119 Re: Апаратні питання » Esp32 в промисловому середовищі » 2026-03-31 18:17:59

Kino пише:

Что-то странно. Кварц может "плыть" только от перепадов температуры

Мова не про стабільність частоти, а про зрив генерації. Кварцу потрібен деякий час, щоб коливання стабілізувались та вийшли на потрібну амплітуду. А якщо в МК використовується PLL, то ще й час на захоплення фази.
Ще коли по живленню йде дзвін, близький до однієї з гармонік, кварц може намагатись заводитись не на тій гармоніці, на якій потрібно.

#120 Re: Апаратні питання » Esp32 в промисловому середовищі » 2026-03-31 00:48:53

khalimon пише:

В мене були проблеми на avr, пов'язані з кварцем. При зовніх завадах чіп починав поводити себе хаотично. Це було не часто, але було. Точного вимірювання часу було не потрібно, тому проблема повністю була вирішена шляхом переходу на внутрішній генератор. Я більш всього не хочу щоб таке трапилось з esp32, тоб то не ребут або резет по вачдогу а саме раптова хаотична поведінка

Отож. Внутрішній RC-осцилятор надійніше, але чи буде на ESP32 з ним працювати вайфай? В цю тему не заглиблювався, припускаю, що тільки з зовнішнім кварцем. Треба дивитись в документацію, як там підсистема тактування реалізована, але мені зараз лінь шукати.
Може спеціалісти по ESP32 підкажуть, чи можна у ESP32 тактувати ядро внутрішнім осцилятором, а вайфай зовнішнім кварцем.
Там же ще низькочастотний RTC осцилятор є.

Якщо збираєтесь використовувати екранований модуль, то і кварц буде під екраном, так що з точки зору електромагнітних перешкод має бути ок. Якщо по живленню чи з периферії нічого не пролізе.

З кварцем проблеми в основному через механіку, температуру, або плату погано помили. Але у разі збою ядро з Clock Failure Detector автоматично перемкнеться на внутрішній осцилятор, і як мінімум дасть можливість сигналізувати про збій.

Також не зашкодить увімкнути бортовий ватчдог, або навіть поставити зовнішній.

#121 Re: Апаратні питання » Esp32 в промисловому середовищі » 2026-03-30 21:29:32

Щодо можливостей самих контролерів по забезпеченню надійності, то потрібно дивитись, які можливості вам потрібні. Звісно, абсолютну надійнісь забезпечити неможливо, але потрібно намагатись, щоб у разі збою поведінка системи була принаймні детермінованою.

Наприклад, у STM32 та деяких AVR є апаратний механізм Clock Failure Detection. У ESP32 такого не зустрічав. Може тому що розробники вирішили, що збій осциляції не є проблемою у сценаріях застосування ESP32, а може тому що стабільність забезпечуєься якимись іншими внутрішніми механізмами.
Brownout Detector наче б то є у всіх.

#122 Re: Апаратні питання » Esp32 в промисловому середовищі » 2026-03-30 16:52:12

Електромагнітна сумісність визначається для пристроя в цілому, а не для окремого компонента, такого як МК.
Результат залежить від реалізації схеми живлення, способу підключення датчиків та виконавчих пристроїв, розводки плати, екранування і т.д.
"Шумне" середовище - теж розпливчате поняття, у шума є певний спектр, інтенсивність.
Навряд чи на ваше питання "чи можна так зробити" можна відповісти без практичних випробовувань конкретного пристроя в конкретних умовах.

#124 Re: Програмування Arduino » глюк пам'яті » 2026-03-20 00:52:17

Kino пише:

причем младший нибл, интересненько.

А саме 3-й біт, 0x08.

#125 Re: Програмування Arduino » глюк пам'яті » 2026-03-19 23:53:12

Флеш посипалась, усьо.
Воно-то може полежати і після стирання ще почати програмуватись, але я б на це не розраховував і цьому чіпу не довіряв.

Підвал форуму