Ардуинщики всех стран - объединяйтесь! В этом форуме, конечно.
Ответить

Re: Попытка ускорить код Arduino

Сб дек 17, 2022 05:17:34

По-моему, это господин ART_ME тут насылает волны флуда, всунувшись со своей RTOS в тему, не поняв её (темы) смысла..

А по моему, у некоторых участников форума возникает когнитивный диссонанс на слова RTOS и Arduino, услышав которые, они тут же начинают изобличать все и вся, что по сути и является флудом, т.к. вместо обсуждения проблем ТС, все свои силы бросают на осуждение виновника своих нездоровых реакций, причем, как правило, в стиле "сам дурак".
Что ж с Вами будет, если ТС вдруг и вправду заинтересуется RTOS, а? :)))

Re: Попытка ускорить код Arduino

Сб дек 17, 2022 07:22:49

А что будет с вами, когда поймете, как в действительности устроена и работает RTOS и как можно обходиться без нее? :))) Вы пошли по пути наименьшего знания, увидев типовую, соппсна, задачу, и тут же спасовали, кинувшись за спасением к RTOS.
Топикстартер пусть и заинтересуется RTOS. Но если у него голова зазвенела от синтаксиса языка Си, то что ж станет с ним от вникания в принципы RTOS :)))
Конкретно в задаче топикстартера я не вижу острой необходимости RTOS. Достаточно и прерываний для быстрой обработки неотложных задач. Это в данном случае аналог RTOS, только без оверхеда.

Re: Попытка ускорить код Arduino

Сб дек 17, 2022 07:45:45

Топикстартер пусть и заинтересуется RTOS. Но если у него голова зазвенела от синтаксиса языка Си, то что ж станет с ним от вникания в принципы RTOS :)))
А Вам, извините, какое до этого дело? Вас кто-то назначил опекуном ТС? Или Вы и вправду полагаете, что ТС - 15-летний пацан, который нуждается в Вашем покровительстве? Манией величия от своего кумира заразились?

Конкретно в задаче топикстартера я не вижу острой необходимости RTOS. Достаточно и прерываний для быстрой обработки неотложных задач. Это в данном случае аналог RTOS, только без оверхеда.
И что же Вам помешало ограничиться вот этой точкой зрения, избежав флуда в виде обсуждения моей скромной персоны?

А что будет с вами, когда поймете, как в действительности устроена и работает RTOS и как можно обходиться без нее? :))) Вы пошли по пути наименьшего знания, увидев типовую, соппсна, задачу, и тут же спасовали, кинувшись за спасением к RTOS.

https://www.youtube.com/watch?v=8S0aF-gtWSM

Re: Попытка ускорить код Arduino

Сб дек 17, 2022 08:06:45

А вам какое дело? Чего вы тут зафлудили со своей RTOS то, кем вы себя возомнили то? Религиозный фанатизм с верой во всерешающую RTOS до добра не доводит и отнимает последние остатки мозгов.
Какое отношение ваш слепой фанатизъмъ имеет к теме оптимизации и ускорения работы Ардуино-скетчей? Лучше разберитесь, как работает эта ваша FreeRTOS, сколько чего и каких "побочек" в ней понатолкано. Когда научитесь разбираться в том, что спрятано внутри, а не выпячено маркетологами на поверхность, тогда осознаете что есть что и откудава ноги растут.
ограничиться вот этой точкой зрения

Я её и ограничился, сказав, что "навряд ли будет тут уместно, ибо RTOS отнимает на себя процессорное время и никоим образом не способствует скорости работы. Название "real-time" не означает, что всё будет делаться прям мгновенно "здесь и сейчас". Скорее наоборот."
А остальной флуд развели именно вы, ART_ME, начав спорить за непременную нужность всерешающей RTOS. Так что во всём теперь вините в первую очередь себя самого.
Последний раз редактировалось MLX90640 Сб дек 17, 2022 08:39:32, всего редактировалось 2 раз(а).

Re: Попытка ускорить код Arduino

Сб дек 17, 2022 08:26:46

Тут проблема с АRT_ME вовсе не в РТОС, а в его привычке влезать в темы, где он ни бельмеса не понимает с целью почесать свое ЧСВ. Ну и когда ему указывают, что он влез с глупым предложением, он немедленно начинает защищать свое лицо, вместо того, чтобы промолчать или признать ошибку.
Поэтому у него такой характерный рейтинг сообщений и не менее характерная репутация.
Политические пассионарии - они такие... :))) :tea:

Re: Попытка ускорить код Arduino

Сб дек 17, 2022 08:38:25

Вторую пачку попкорна догрызаю.....
Теоретики безумных технологий, встаньте ногами на землю. С чего Вы все решили, что у меня проблема с реализацией устройства (проекта)? Всё есть и всё работает как надо на копеечной платформе - платки от "Алика" с контроллером atmega168/328.
Конечно можно и RTOS прикрутить, но тогда платформа будет уже другая, и применительно к исходной задаче будет ни кому не нужна. Вообще, у меня иногда складывается мнение, что все подобные вещи (RTOS и т.д.) специально вводят для "запихивания" в массы более сложных и дорогих контроллеров и оправдания существования многочисленных разработчиков ПО на их основе. Все хотят на хлеб масло мазать! Ну это всего лишь ИМХО.
Возвращаясь с моей задаче. Кстати, одну из идей RTOS из системы зажигания в свое время "слябздил" в свою программу, но её пришлось гибридизировать из-за особенности применяемого контроллера. Необходимость реализации на Arduino IDE была продиктована лишь интересом моих подписчиков и собственным "а мне слабо?". Не страшно, что переход с ассемблера на Arduino IDE добавил мне лишних 3-5 мкс. Код, сотворенный Arduino IDE, конечно отстает от кода на ассемблере, но не так фатально как ожидалось. Я задавал конкретный вопрос в рамках типичной ловушки разработчика - "лучшее враг хорошего". Нет решения в рамках Arduino IDE тоже ответ. Может достаточно меня упоминать и мои проблемы - проехали уже.
И.., не прошу остановиться "мериться пипис.ами" - попкорн еще есть и читатели (я не исключение в мои дофига лет) может что новое узнают.

Re: Попытка ускорить код Arduino

Сб дек 17, 2022 08:56:57

Вы путаете железо и программную платформу. По крайней мере в своей риторике. Полагаю, что намеренно. Платы c AVR под Ардуино могут быть прошиты и без Ардуино. И вы об этом неоднократно упоминали в своих эпистолиях к публике.
Кооперативная РТОС под АВР имеется и не требует отказа от плат на Али.
Только это никак не решает задачу уменьшения латентности кода на события. А даже совсем наоборот.
Причины были выше многократно изложены.
Ваша реакция на мой первый комментарий в теме была очевидно неадекватной.
Возможно причина была в вашем синдроме возраста. Спешу вас расстроить. Я на 13 лет старше вас.
Если конечно возраст в вашем профиле истинный. Впрочем, крайне маловероятно, что это не так.
:tea:

Re: Попытка ускорить код Arduino

Сб дек 17, 2022 09:11:22

Теоретики безумных технологий, встаньте ногами на землю.

Ба! Вы всё еще надеетесь здесь на что-то? :shock: :shock: :shock:

А вам какое дело? Чего вы тут зафлудили со своей RTOS то, кем вы себя возомнили то?

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

Re: Попытка ускорить код Arduino

Сб дек 17, 2022 09:20:37

ардуиноненавистники загадили тему, которая им очень не нравится

Быть вечно нелепым - ваше генетическое кредо.
Может стоит угомониться?
Универсальным противником Ардуины тут отметился только Эдик Емельянов. Но он в крайней беседе был незаметен.
Такшта с этим у вас очередная нелепость вышла. Задача автора темы плохо решается на программной платформе Ардуино.
Да и нет в ней (в платформе) никакой необходимости. Пишется код на Си (и/или АСМе) в любой доступной для АВР среде. И все.
Если написать красиво и с комментами, то код будет универсально доступен к правкам пользователями.

Re: Попытка ускорить код Arduino

Сб дек 17, 2022 09:37:41

Я зафлудил? Я всего лишь однажды в очень мягкой форме упомянул этот термин,

И вам ответили, что "навряд ли оное предложение здесь подойдет". Ну а дальше началось ваше ЧСВ непомерное и тонны флуда именно от вас, из-за нежелания понимать другую позицию. Вы даже уже отошли от темы RTOS и просто срете под себя просто из-за того, что кто-то не согласен с вашим мнением.
Ну как бы да, отличительная черта многих ардуинщиков - непонимание внутрянки процессов и накручивание оверхэда, а проблемы производительности ими решаются исключительно за счет выбора более "жырного" микроконтроллера. И это не какие-то домыслы, это просто наблюдение за реальными особями в естественной их среде, так сказать.

Re: Попытка ускорить код Arduino

Сб дек 17, 2022 10:42:59

С.Н, в Arduino IDE пишите для AVR. Без команд Arduino, без "язык Arduino" и его функции, "порядка слов'. IDE "понимает" код, компилирует, выполняет.

Давно пользуюсь, первое: IDE может быть без установки (пример: в работе: использоватье без прав администратора). Во-вторых: IDE нравится, особенно автоформатирование кода. Третье: компилирование, загрузки в МК: на старый, на новый компьютер, с старый, с новый программатор ... - все просто, просто нажав одну кнопку.

Ниже: блинк
Код:
#include <avr/io.h>
#include <avr/wdt.h>
#include <avr/interrupt.h>
#include <avr/sleep.h>

#define LED_PIN PB0

ISR(WDT_vect) {
  PORTB ^= _BV(LED_PIN);   // toggle LED pin
}

int main(void) {
  DDRB = 0b00000001;       // set LED pin as OUTPUT
  PORTB = 0b00000000;      // set all pins to LOW
  wdt_enable(WDTO_500MS);  // set prescaler to 0.5s and enable Watchdog Timer
  WDTCR |= _BV(WDTIE);     // enable Watchdog Timer interrupt
  sei();                   // enable global interrupts
  while (1);
}

Re: Попытка ускорить код Arduino

Сб дек 17, 2022 11:13:01

Я зафлудил? Я всего лишь однажды в очень мягкой форме упомянул этот термин,
И вам ответили, что "навряд ли оное предложение здесь подойдет".

Упоминание аббревиатуры не является предложением её значения, а посему не нуждается в мнениях о её пригодности.

Ну как бы да, отличительная черта многих ардуинщиков - непонимание внутрянки процессов и накручивание оверхэда, а проблемы производительности ими решаются исключительно за счет выбора более "жырного" микроконтроллера. И это не какие-то домыслы, это просто наблюдение за реальными особями в естественной их среде, так сказать.

В названии темы прямо указано Arduino.
Если Вы ненавидите это слово, то какого рожна Вы в этой теме вообще делаете? :facepalm:

Re: Попытка ускорить код Arduino

Сб дек 17, 2022 11:32:14

Хренасе у вас ЧСВ расперло, того и гляди пукан подгорит :))) Вот что святая Ардуиноматерь делает с неокрепшими неофитами. Уже похрен на RTOS, уже ваше собственное ЧСВ расчесалось.

Re: Попытка ускорить код Arduino

Сб дек 17, 2022 12:57:04


Фактически к этому и идет. Функции ввода-вывода ардуиновские уже заменены. Delay и функции времени и так скорее всего не работают в связи с полной занятостью таймеров другими задачами. Сейчас еще откину ардуиновские loop и setup и всё будет как у Вас.

Однако, за это приходится платить - переход на другие микроконтроллеры мне уже не доступен. Слишком сильная привязка с архитектуре именно камушка atmega 48/88/168/328. С другой стороны, он как будто сделан под мою задачу. Не использованы лишь компаратор, spi и i2С, хотя к spi иногда индикатор на MAX7219 вешаю для отладки. При создании скетча догадался как и без Watchdog обойтись.
Собственно поэтому и говорю, что уже не надо ничего ускорять. Так сойдет :)))

Re: Попытка ускорить код Arduino

Сб дек 17, 2022 13:12:17

... Однако, за это приходится платить - переход на другие микроконтроллеры мне уже не доступен. Слишком сильная привязка с архитектуре именно камушка atmega 48/88/168/328....

Ничего не тратится, добавление каждого МК от AVR дело 20 секунд. Практически для всех семейств AVR МК. Даже новых AVR добавили. Лучше всего то, что пишете код и используете его практически везде (с соответствующими функциями). Это хорошее свойство языка "высокого уровня" - универсальность. И обращаете внимание в коде (и тратите свое время) только на алгоритмы устройства, и не имеете дело с регистрами, с байтами ... до бесконечности ... конкретного МК (только - при необходимости).

MicroCore - ATtiny13
MiniCore - ATmega8, ATmega328 ...
MightyCore - ATmega16, ATmega1284 ...
MegaCore - ATmega64, ATmega6490 ...
MegaCoreX - Mega4809, Mega808 ...
ATTinyCore - ATtiny441, 841, ...
megaTinyCore - ATtiny3227,1627,827,427, ATtiny402,202 ...
DxCore - AVR128DA28, AVR128DB64 ...
Arduino_Core_STM32
...
При создании скетча догадался как и без Watchdog обойтись.

Программа в примере была случайной. Watchdog есть только в конкретного примера.
Последний раз редактировалось veso74 Сб дек 17, 2022 14:07:45, всего редактировалось 3 раз(а).

Re: Попытка ускорить код Arduino

Сб дек 17, 2022 13:27:19


Я про ресурсы контроллера. Просто они так функционально завязаны между собой программой, что не "соскочить с этой иглы", по крайней мере сразу.

Re: Попытка ускорить код Arduino

Сб дек 17, 2022 13:30:05

на практике этот красивый переход с одного мк на другой не такой уж красивый

Re: Попытка ускорить код Arduino

Сб дек 17, 2022 13:30:24

С.Н., не цитируйте меня пустым сообщением, пожалуйста. Есть другая кнопка для ответа.
---
... Я про ресурсы контроллера. ...

Если разрабатываете устройство сейчас, приобретите другой контроллер из списька. Цены почти одинаковые. Даже новые типы дешевле, с бесконечными функциями внутри. (Примерные цены : ATTINY13A-SSU - 1: $0.79, ATTINY402-SSN - 1: $0.54)

А, вероятно, с ATtiny13A можно было бы спроектировать и управление космическим кораблем ... :))
(вероятно с программой, написанной только на машинном коде :) ).
---
на практике этот красивый переход с одного мк на другой не такой уж красивый

Да, но дело 30 сек ... час ... день ... Несмотря на это, в большинстве случаев (конструкции) МК пуст 90%, или "заполнен наполовину". Очень немногие приложения (TFT, OLED, шрифты, анимация ...) заполняют, но ето в серьезный проект. Но ето редко. (Пишу как любителя. Здесь могут быть профессионалы - с другим подходом. А там вероятно решающую роль играет уже не цена МК, а время для проектирования).

Re: Попытка ускорить код Arduino

Сб дек 17, 2022 14:35:06

С.Н., не цитируйте меня пустым сообщением, пожалуйста. Есть другая кнопка для ответа
Хотел место поэкономить.
Ну вот так сложилась кривая линия проекта устройства, что мне позарез надо было один 16 разрядный таймер (Т1), из которого программно делаю 24 разрядный. Плюс один восьмиразрядный с режимом CТС его выход приходиться со входом 16 разрядного соединять (Т0). Плюс еще один 8 разрядный (Т2) как источник управляемой эквидистантной выборки уровня входных сигналов (ТТЛ) для последующей обработки - получение пачки импульсов. Постоянно работает только Т0. Т1 и Т2 управляются алгоритмом. Понятно, что можно варианты предложить, и упаковаться как-то можно, ну пока так и Тинька этого не даст. Не даст она и некоторых команд ассемблера - в частности умножения. Плюс - готовая плата с контроллером. Зачем от неё бежать в сторону и химичить что-то?

Даже в самом жутком случае (включения всех опций) прошивка (из асм) занимает Flash - 20% . ОЗУ ~80%. EEPROM - 100%
В самом легком наборе опций (они через define подключаются) - Flash - 7% ОЗУ ~1%. EEPROM - 0%

На Arduino IDE писанная занимает (самая легкая) Flash - 14% ОЗУ ~17% EEPROM - 0%
Однако от темы то мы ушли....

Re: Попытка ускорить код Arduino

Сб дек 17, 2022 16:07:53

С.Н., все-таки, стоит изучить язык С. И перейти уже с убогих восьмибиток на современные 32-битные ARMы. Тот же STM32F103C6T6 на али по 40-45 рубликов за штучку продается. А возможностей там вполне себе предостаточно. Правда, 103-я серия - самая старая и самая забагованная (errata там вполне жирная), лучше для простых задач F0 использовать, а если без флоатов не обойтись, то всякие F3/F4.
Если же прямо-таки хочется восьмибиток, есть STM8 и всякие еще более дешевые китайские аналоги. AVR и PIC — пережиток прошлого.
Ответить