Ви не увійшли.
Сторінки 1
Оце заходився зробити нагрівач з текрмостабілізацією. Нічого складного: термопара з датчиком MAX6675, LCD дисплей 1602, енкодер, симистор. Замість контроллера взяв stm32f103 - китайську blue pill. Всередину - freertos (красиво ж
). Готові ардуїнівські ліби зручно.. Х%%к-х%%к і в production
І воно все разом - упсь, не влізло
Штош, взяв тулзовину puncover, дивлюсь куди ділось 32к флешки. 
Я так розумію, дуже багато місця зайняла float математика, яку притягнула з собою ліба термометра (_adddf3, __aeabi_dmul і тому подібне). Але абсолютний рекордсмен - HAL (HAL_I2C_EV_IRQHandler, HAL_RCC_OscConfig,HAL_UART_IRQHandler). Без HAL мабуть буде незручно. freertos - помітно. Страшні ардуїнівські функції десь в кінці.
Можна, звичайно, трохи побайто%%битись, переписати лібу без float. Або без freertos обійтись. Чи взяти інший фреймворк спробувати. Що порадите?
Неактивний
Що у вас за конфігурація platformio?
Які саме ліби використовуєте?
Для термостата що там потрібно? Регулятор та примітивний UI. Не дуже розумію, навіщо там RTOS.
взяв тулзовину puncover, дивлюсь куди ділось 32к флешки.
А objdump що показує? Окрім .text є ще секції .data та .rodata.
Наприклад, дисплей хоч і символьний, але бібліотека може тягнути кастомні бітмапи для завантаження в CGRAM.
Я так розумію, дуже багато місця зайняла float математика, яку притягнула з собою ліба термометра (_adddf3, __aeabi_dmul і тому подібне).
Їх може і який-небудь snprintf() притягнути.
Але абсолютний рекордсмен - HAL (HAL_I2C_EV_IRQHandler, HAL_RCC_OscConfig,HAL_UART_IRQHandler).
Так це мабуть ардуінівська Wire. Вона дурна.
UPD: сама по собі HAL_I2C_EV_IRQHandler() в stm32f1xx_hal_i2c.c монструозна. Не розумію, навіщо імплементувати і master, і slave mode в одному місці одночасно.
Остання редакція dimich (2026-04-10 23:40:33)
Неактивний
Концепція rtos сподобалась, вирішив спробувати на чомусь простому
Зручніше ніж ардуїнівський суперцикл - окремі ізольовані таски. Управління симістором по Брезенхейму окремо, регулятор окремо, дисплей окремо. Але розмір не радує.
Так то без float все помістилось. Правда цілочисленний PID регулятор може спрацювати не так як хочеться, спаяю, подивлюсь.
Що у вас за конфігурація platformio?
Які саме ліби використовуєте?
[env:bluepill_f103c6]
platform = ststm32
board = bluepill_f103c6
framework = arduino
lib_deps =
stm32duino/STM32duino FreeRTOS@^10.3.3
locple/LiquidCrystal I2C Multilingual@^2.0.2Максимально безхитрістно.
Так це мабуть ардуінівська Wire. Вона дурна.
Походу так. І походу притягнув її дисплей з i2c.
Неактивний
Зручніше ніж ардуїнівський суперцикл - окремі ізольовані таски. ... Але розмір не радує.
А ще окремий стек в RAM для кожної задачі. Та й цикл воно, наскільки бачу, все одно крутить, тільки пустий.
Логіку ізолювати можна і без RTOS. То якщо задачам пріорітети потрібні, тоді має сенс. Ну то таке.
Правда цілочисленний PID регулятор може спрацювати не так як хочеться
Fixed point? Для вашої задачі, думаю, точності має вистачити.
Походу так. І походу притягнув її дисплей з i2c.
Якщо в самому HAL так інтерфейс до I2C реалізовано, то воно і напряму, без Wire, буде здорове. Я би пошукав альтернативні імплементації, щоб без slave mode. Якщо нема, то можна й HAL'івську імплементацію трохи порізати. Але там окрім I2C іншого болота теж вистачає.
Також можна спробувати зібрати з LTO (build_flags = -flto). Але не факт, що успішно злінкується без танців з бубном.
Неактивний
Якщо в самому HAL так інтерфейс до I2C реалізовано
Схоже на те. Жодного ifdef я не побачив.
Походу тут дилема. Або крос-платформне Arduino - більш-менш однаково працює будь де. І лібу знайти можна під що завгодно. Зручно. Але жирне. Або закопуватись в stm32-специфічні фреймворки. Як мінімум для дисплея з i2c ліба під cmsis існує ![]()
Неактивний
Походу тут дилема.
В розробці так завжди
За виграш в одному доводиться платити чимось іншим.
І лібу знайти можна під що завгодно.
Можна відмовитись від ардуіно фреймворка і збирати прямо з FreeRTOS. Звісно, бібліотеки, що використовують ардуіно-специфічні API, доведеться або адаптувати, або замінити, або реалізувати самому.
Але жирне.
Жирне воно буде в будь-якому разі. 32 кілобайта на 32-бітній архітектурі - це не ті ж 32 кілобайта на 8-бітній.
Як мінімум для дисплея з i2c ліба під cmsis існує
Доречі, хіба у 1602 дисплея рідний інтерфейс - I2C? Там же мабуть HD44780 і екстендер типу PCF8574. Якщо підключити через рідний інтерфейс, то не потрібно ні Wire, ні I2C HAL. Датчик MAX6675 на SPI же наче б то.
Неактивний
лет двадцать назад такие проекты умудрялись в тини13 впихивать, а нынче стм с 32кб не хватает.
Зараз теж ніхто не заважає впихнути. Але критерії змінились. Зараз цінується, щоб без занурення в тему і через півдня якось запрацювало. Ресурси на розробку (час × кваліфікація) дорожчі за елементну базу.
Неактивний
Чет у автора через полдня нифига не запрацювало... или это другое?
Яка там у автора мотивація використовувати STM32 і RTOS для цієї задачі - то не моя справа) Я про загальну тенденцію в індустрії, де "не влазить в STM32F103 - візми STM32F411", бо так виходить дешевше.
Неактивний
Я про загальну тенденцію в індустрії, де "не влазить в STM32F103 - візми STM32F411", бо так виходить дешевше.
Ну тоже такое... помнится, в проекте для индустрии, меня просили пошагово в отладчике показывать как будет работать программа, чтобы нигде никаких глюков, иначе за "пр%еб" в программе, компании накладывались штрафные санкции. Представляю как сейчас такое можно показать, например, на есп32 со встроенной закрытой операционкой.
зы. я не про бытовые безделушки, а там, где глюк в программе может стоить человеку здоровья или жизни.
Остання редакція Kino (Вчора 02:54:20)
Неактивний
Представляю как сейчас такое можно показать, например, на есп32 со встроенной закрытой операционкой.
Із теорії надійності, система може вважатись надійною лише коли доведена коректність взаємодії між її складовими компонентами, і кожний компонент системи є також надійним (рекурсивно).
Проприєтарні технології - то взагалі окрема тема.
я не про бытовые безделушки, а там, где глюк в программе может стоить человеку здоровья или жизни.
Такі проекти мають проходити незалежний аудит і сертифікацію.
Неактивний
Із теорії надійності, система може вважатись надійною лише коли доведена коректність взаємодії між її складовими компонентами, і кожний компонент системи є також надійним (рекурсивно).
Случайно, не Вы ли мне ТАУ в КПИ преподавали? )))
Такі проекти мають проходити незалежний аудит і сертифікацію.
Так отож. Помница на ютубе видел передачку, где аппарат лучевой терапии, из-за глюка в программе убил несколько пациентов. А ведь наверняка такой аппарат проходил все проверки.
Неактивний
Случайно, не Вы ли мне ТАУ в КПИ преподавали? )))
Ні, не памʼятаю такого в своїй біографії)
Помница на ютубе видел передачку, где аппарат лучевой терапии, из-за глюка в программе убил несколько пациентов. А ведь наверняка такой аппарат проходил все проверки.
Therac-25? Якраз після того інциденту вимоги до сертифікації в мед.індустрії були переглянуті та суттєво посилені.
Неактивний
Therac-25? Як раз після того інциденту вимоги до сертифікації в мед.індустрії були переглянуті та суттєво посилені.
ага. Вот мне и стало интересно, каким образом нынче можно проверить безотказность действия электронной приблуды, если даже программист не знает как работает та ОС, если исходники закрыты и хрен его знает что она там вытворит.
да что далеко ходить, когда появились есп (а там без freertos никак) думаю дай проверю, действительно ли они так хороши. Записал на сд большой wav файл и поставил на проигрыш. И что? Когда никогда, да подвисон в проигрыше случался, видимо та ос что-то себе там придумала поработать... так что мое мнение, где нужны точные времянки - нафиг ту ос и пишем ручками.
Остання редакція Kino (Вчора 03:39:50)
Неактивний
Вот мне и стало интересно, каким образом нынче можно проверить безотказность действия электронной приблуды, если даже программист не знает как работает та ОС, если исходники закрыты и хрен его знает что она там вытворит.
В теорії, має бути специфікація інтерфейсів такої ОС. Якщо програма користується інтерфейсами коректно, згідно специфікації, то все ок. Для того такі мови як C та C++ стандартизовані по ISO. А наскільки довіряти самій такій закритій ОС - нехай уже менеджмент вирішує і бере на себе відповідальність, а не програміст.
Те ж саме і з залізом.
когда появились есп (а там без freertos никак) ... видимо та ос что-то себе там придумала поработать...
Хіба там якась закрита ОС? Я глибоко не копав, але наскільки знаю, там похідна від FreeRTOS чи щось подібне, і збирається з ісходніків. То сама архітектура Xtensa наче б то пропрієтарна. А останні сімейства ESP32 на ядрі Risc-V взагалі.
Неактивний
Хіба там якась закрита ОС? Я глибоко не копав, але наскільки знаю, там похідна від FreeRTOS чи щось подібне
RF часть (wifi и BT) точно закрыта, поставляется уже скомпилированными бинарниками, а так да, там freertos.
Причем пишут, что эта часть работает на ядре 0, то если свою прошивку запустить на втором ядре, всё равно когда никогда может тормозок проскочить. Так что, для управления ядерным реактором, я больше бы доверился стм, а не этой китайской фигне.
Остання редакція Kino (Вчора 10:57:15)
Неактивний
Причем пишут, что эта часть работает на ядре 0, то если свою прошивку запустить на втором ядре, всё равно когда никогда может тормозок проскочить.
Ну, блоби фірмварі зараз багато де завантажуються: на GPU, на аудіочіпах, на мережевих адаптерах. Але що в ESP32 воно прямо на одному з ядер виконується, не знав. Не розумію таких рішень.
Так что, для управления ядерным реактором, я больше бы доверился стм, а не этой китайской фигне.
100%
Неактивний
>> Хм. Чет у автора через полдня нифига не запрацювало... или это другое?
У автора все запрацювало (в теоріі. Індикатор блимає, цифри показує. Припаяє симістор - буде видно і на практиці. Техніка безпеки вимагає не спішити).
Він не бачить особливого смислу упарюватись в attiny, якщо stm32 дешевше.
Питання було в методиці зменшити розмір прошивки без особливого байтоложества ![]()
>> Якщо підключити через рідний інтерфейс
Була така ідея
але це жмут проводів і можливо конвертор логічних рівнів з 3.3 на 5 В..
>> я не про бытовые безделушки, а там, где глюк в программе может стоить человеку здоровья или жизни.
До речі, в кожному радіокерованому дроні є esp8265/esp8266/esp32. Таке життя..
До речі, в кожному радіокерованому дроні є esp8265/esp8266/esp32. Таке життя..
Ну, не прям в кожному, різні бувають. А там де є - то не від хорошого життя, а за принципом "краще так, ніж ніяк".
Неактивний
В elrs/lora трансівері.
Сторінки 1