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

Ардуинщики всех стран - объединяйтесь! В этом форуме, конечно.
Аватара пользователя
ART_ME
Друг Кота
Сообщения: 3011
Зарегистрирован: Вс окт 02, 2016 07:34:45

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

Сообщение ART_ME »

[uquote="MLX90640",url="/forum/viewtopic.php?p=4337955#p4337955"]По-моему, это господин ART_ME тут насылает волны флуда, всунувшись со своей RTOS в тему, не поняв её (темы) смысла..[/uquote]
А по моему, у некоторых участников форума возникает когнитивный диссонанс на слова RTOS и Arduino, услышав которые, они тут же начинают изобличать все и вся, что по сути и является флудом, т.к. вместо обсуждения проблем ТС, все свои силы бросают на осуждение виновника своих нездоровых реакций, причем, как правило, в стиле "сам дурак".
Что ж с Вами будет, если ТС вдруг и вправду заинтересуется RTOS, а? :)))
Реклама
Аватара пользователя
MLX90640
Опытный кот
Сообщения: 848
Зарегистрирован: Ср авг 03, 2022 05:22:56

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

Сообщение MLX90640 »

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

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

Сообщение ART_ME »

[uquote="MLX90640",url="/forum/viewtopic.php?p=4338055#p4338055"]Топикстартер пусть и заинтересуется RTOS. Но если у него голова зазвенела от синтаксиса языка Си, то что ж станет с ним от вникания в принципы RTOS :)))[/uquote]А Вам, извините, какое до этого дело? Вас кто-то назначил опекуном ТС? Или Вы и вправду полагаете, что ТС - 15-летний пацан, который нуждается в Вашем покровительстве? Манией величия от своего кумира заразились?

[uquote="MLX90640",url="/forum/viewtopic.php?p=4338055#p4338055"]Конкретно в задаче топикстартера я не вижу острой необходимости RTOS. Достаточно и прерываний для быстрой обработки неотложных задач. Это в данном случае аналог RTOS, только без оверхеда.[/uquote]И что же Вам помешало ограничиться вот этой точкой зрения, избежав флуда в виде обсуждения моей скромной персоны?

[uquote="MLX90640",url="/forum/viewtopic.php?p=4338055#p4338055"]А что будет с вами, когда поймете, как в действительности устроена и работает RTOS и как можно обходиться без нее? :))) Вы пошли по пути наименьшего знания, увидев типовую, соппсна, задачу, и тут же спасовали, кинувшись за спасением к RTOS.[/uquote]
https://www.youtube.com/watch?v=8S0aF-gtWSM
Аватара пользователя
MLX90640
Опытный кот
Сообщения: 848
Зарегистрирован: Ср авг 03, 2022 05:22:56

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

Сообщение MLX90640 »

А вам какое дело? Чего вы тут зафлудили со своей RTOS то, кем вы себя возомнили то? Религиозный фанатизм с верой во всерешающую RTOS до добра не доводит и отнимает последние остатки мозгов.
Какое отношение ваш слепой фанатизъмъ имеет к теме оптимизации и ускорения работы Ардуино-скетчей? Лучше разберитесь, как работает эта ваша FreeRTOS, сколько чего и каких "побочек" в ней понатолкано. Когда научитесь разбираться в том, что спрятано внутри, а не выпячено маркетологами на поверхность, тогда осознаете что есть что и откудава ноги растут.
[uquote="ART_ME",url="/forum/viewtopic.php?p=4338056#p4338056"]ограничиться вот этой точкой зрения[/uquote]
Я её и ограничился, сказав, что "навряд ли будет тут уместно, ибо RTOS отнимает на себя процессорное время и никоим образом не способствует скорости работы. Название "real-time" не означает, что всё будет делаться прям мгновенно "здесь и сейчас". Скорее наоборот."
А остальной флуд развели именно вы, ART_ME, начав спорить за непременную нужность всерешающей RTOS. Так что во всём теперь вините в первую очередь себя самого.
Последний раз редактировалось MLX90640 Сб дек 17, 2022 08:39:32, всего редактировалось 2 раза.
Реклама
Эиком - электронные компоненты и радиодетали
Аватара пользователя
КРАМ
Друг Кота
Сообщения: 25385
Зарегистрирован: Чт янв 10, 2008 22:01:02
Откуда: Московская область, Фрязино

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

Сообщение КРАМ »

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

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

Сообщение С.Н. »

Вторую пачку попкорна догрызаю.....
Теоретики безумных технологий, встаньте ногами на землю. С чего Вы все решили, что у меня проблема с реализацией устройства (проекта)? Всё есть и всё работает как надо на копеечной платформе - платки от "Алика" с контроллером atmega168/328.
Конечно можно и RTOS прикрутить, но тогда платформа будет уже другая, и применительно к исходной задаче будет ни кому не нужна. Вообще, у меня иногда складывается мнение, что все подобные вещи (RTOS и т.д.) специально вводят для "запихивания" в массы более сложных и дорогих контроллеров и оправдания существования многочисленных разработчиков ПО на их основе. Все хотят на хлеб масло мазать! Ну это всего лишь ИМХО.
Возвращаясь с моей задаче. Кстати, одну из идей RTOS из системы зажигания в свое время "слябздил" в свою программу, но её пришлось гибридизировать из-за особенности применяемого контроллера. Необходимость реализации на Arduino IDE была продиктована лишь интересом моих подписчиков и собственным "а мне слабо?". Не страшно, что переход с ассемблера на Arduino IDE добавил мне лишних 3-5 мкс. Код, сотворенный Arduino IDE, конечно отстает от кода на ассемблере, но не так фатально как ожидалось. Я задавал конкретный вопрос в рамках типичной ловушки разработчика - "лучшее враг хорошего". Нет решения в рамках Arduino IDE тоже ответ. Может достаточно меня упоминать и мои проблемы - проехали уже.
И.., не прошу остановиться "мериться пипис.ами" - попкорн еще есть и читатели (я не исключение в мои дофига лет) может что новое узнают.
ФУОЗ на платформе Ардуино: https://radiokot.ru/forum/viewtopic.php ... 6#p4366626
ВК - "ФУОЗ на микроконтроллере Atmega328P (МПСЗ)"
Реклама
Аватара пользователя
КРАМ
Друг Кота
Сообщения: 25385
Зарегистрирован: Чт янв 10, 2008 22:01:02
Откуда: Московская область, Фрязино

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

Сообщение КРАМ »

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

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

Сообщение ART_ME »

[uquote="С.Н.",url="/forum/viewtopic.php?p=4338066#p4338066"]Теоретики безумных технологий, встаньте ногами на землю.[/uquote]
Ба! Вы всё еще надеетесь здесь на что-то? :shock: :shock: :shock:

[uquote="MLX90640",url="/forum/viewtopic.php?p=4338060#p4338060"]А вам какое дело? Чего вы тут зафлудили со своей RTOS то, кем вы себя возомнили то?[/uquote]
Я зафлудил? Я всего лишь однажды в очень мягкой форме упомянул этот термин, и этого оказалось достаточно, чтобы ардуиноненавистники загадили тему, которая им очень не нравится.
Аватара пользователя
КРАМ
Друг Кота
Сообщения: 25385
Зарегистрирован: Чт янв 10, 2008 22:01:02
Откуда: Московская область, Фрязино

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

Сообщение КРАМ »

[uquote="ART_ME",url="/forum/viewtopic.php?p=4338072#p4338072"]ардуиноненавистники загадили тему, которая им очень не нравится[/uquote]
Быть вечно нелепым - ваше генетическое кредо.
Может стоит угомониться?
Универсальным противником Ардуины тут отметился только Эдик Емельянов. Но он в крайней беседе был незаметен.
Такшта с этим у вас очередная нелепость вышла. Задача автора темы плохо решается на программной платформе Ардуино.
Да и нет в ней (в платформе) никакой необходимости. Пишется код на Си (и/или АСМе) в любой доступной для АВР среде. И все.
Если написать красиво и с комментами, то код будет универсально доступен к правкам пользователями.
Аватара пользователя
MLX90640
Опытный кот
Сообщения: 848
Зарегистрирован: Ср авг 03, 2022 05:22:56

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

Сообщение MLX90640 »

[uquote="ART_ME",url="/forum/viewtopic.php?p=4338072#p4338072"]Я зафлудил? Я всего лишь однажды в очень мягкой форме упомянул этот термин,[/uquote]
И вам ответили, что "навряд ли оное предложение здесь подойдет". Ну а дальше началось ваше ЧСВ непомерное и тонны флуда именно от вас, из-за нежелания понимать другую позицию. Вы даже уже отошли от темы RTOS и просто срете под себя просто из-за того, что кто-то не согласен с вашим мнением.
Ну как бы да, отличительная черта многих ардуинщиков - непонимание внутрянки процессов и накручивание оверхэда, а проблемы производительности ими решаются исключительно за счет выбора более "жырного" микроконтроллера. И это не какие-то домыслы, это просто наблюдение за реальными особями в естественной их среде, так сказать.
veso74
Поставщик валерьянки для Кота
Сообщения: 1915
Зарегистрирован: Сб май 05, 2012 20:24:52
Откуда: KN34PC, Болгария
Контактная информация:

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

Сообщение veso74 »

С.Н, в 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);
}
Аватара пользователя
ART_ME
Друг Кота
Сообщения: 3011
Зарегистрирован: Вс окт 02, 2016 07:34:45

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

Сообщение ART_ME »

[uquote="MLX90640",url="/forum/viewtopic.php?p=4338088#p4338088"][uquote="ART_ME",url="/forum/viewtopic.php?p=4338072#p4338072"]Я зафлудил? Я всего лишь однажды в очень мягкой форме упомянул этот термин,[/uquote]И вам ответили, что "навряд ли оное предложение здесь подойдет".[/uquote]
Упоминание аббревиатуры не является предложением её значения, а посему не нуждается в мнениях о её пригодности.

[uquote="MLX90640",url="/forum/viewtopic.php?p=4338088#p4338088"]Ну как бы да, отличительная черта многих ардуинщиков - непонимание внутрянки процессов и накручивание оверхэда, а проблемы производительности ими решаются исключительно за счет выбора более "жырного" микроконтроллера. И это не какие-то домыслы, это просто наблюдение за реальными особями в естественной их среде, так сказать.[/uquote]
В названии темы прямо указано Arduino.
Если Вы ненавидите это слово, то какого рожна Вы в этой теме вообще делаете? :facepalm:
Аватара пользователя
MLX90640
Опытный кот
Сообщения: 848
Зарегистрирован: Ср авг 03, 2022 05:22:56

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

Сообщение MLX90640 »

Хренасе у вас ЧСВ расперло, того и гляди пукан подгорит :))) Вот что святая Ардуиноматерь делает с неокрепшими неофитами. Уже похрен на RTOS, уже ваше собственное ЧСВ расчесалось.
С.Н.
Потрогал лапой паяльник
Сообщения: 307
Зарегистрирован: Пн окт 26, 2020 08:37:51
Откуда: г.Волгоград

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

Сообщение С.Н. »

[uquote="veso74",url="/forum/viewtopic.php?p=4338108#p4338108"][/uquote]
Фактически к этому и идет. Функции ввода-вывода ардуиновские уже заменены. Delay и функции времени и так скорее всего не работают в связи с полной занятостью таймеров другими задачами. Сейчас еще откину ардуиновские loop и setup и всё будет как у Вас.

Однако, за это приходится платить - переход на другие микроконтроллеры мне уже не доступен. Слишком сильная привязка с архитектуре именно камушка atmega 48/88/168/328. С другой стороны, он как будто сделан под мою задачу. Не использованы лишь компаратор, spi и i2С, хотя к spi иногда индикатор на MAX7219 вешаю для отладки. При создании скетча догадался как и без Watchdog обойтись.
Собственно поэтому и говорю, что уже не надо ничего ускорять. Так сойдет :)))
ФУОЗ на платформе Ардуино: https://radiokot.ru/forum/viewtopic.php ... 6#p4366626
ВК - "ФУОЗ на микроконтроллере Atmega328P (МПСЗ)"
veso74
Поставщик валерьянки для Кота
Сообщения: 1915
Зарегистрирован: Сб май 05, 2012 20:24:52
Откуда: KN34PC, Болгария
Контактная информация:

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

Сообщение veso74 »

[uquote="С.Н.",url="/forum/viewtopic.php?p=4338189#p4338189"]... Однако, за это приходится платить - переход на другие микроконтроллеры мне уже не доступен. Слишком сильная привязка с архитектуре именно камушка atmega 48/88/168/328....[/uquote]
Ничего не тратится, добавление каждого МК от 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
...
[uquote="С.Н.",url="/forum/viewtopic.php?p=4338189#p4338189"]При создании скетча догадался как и без Watchdog обойтись.[/uquote]
Программа в примере была случайной. Watchdog есть только в конкретного примера.
Последний раз редактировалось veso74 Сб дек 17, 2022 14:07:45, всего редактировалось 3 раза.
С.Н.
Потрогал лапой паяльник
Сообщения: 307
Зарегистрирован: Пн окт 26, 2020 08:37:51
Откуда: г.Волгоград

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

Сообщение С.Н. »

[uquote="veso74",url="/forum/viewtopic.php?p=4338196#p4338196"][/uquote]
Я про ресурсы контроллера. Просто они так функционально завязаны между собой программой, что не "соскочить с этой иглы", по крайней мере сразу.
ФУОЗ на платформе Ардуино: https://radiokot.ru/forum/viewtopic.php ... 6#p4366626
ВК - "ФУОЗ на микроконтроллере Atmega328P (МПСЗ)"
Martian
Друг Кота
Сообщения: 12867
Зарегистрирован: Сб дек 18, 2021 19:25:32
Контактная информация:

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

Сообщение Martian »

на практике этот красивый переход с одного мк на другой не такой уж красивый
veso74
Поставщик валерьянки для Кота
Сообщения: 1915
Зарегистрирован: Сб май 05, 2012 20:24:52
Откуда: KN34PC, Болгария
Контактная информация:

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

Сообщение veso74 »

С.Н., не цитируйте меня пустым сообщением, пожалуйста. Есть другая кнопка для ответа.
---
[uquote="С.Н.",url="/forum/viewtopic.php?p=4338199#p4338199"]... Я про ресурсы контроллера. ...[/uquote]
Если разрабатываете устройство сейчас, приобретите другой контроллер из списька. Цены почти одинаковые. Даже новые типы дешевле, с бесконечными функциями внутри. (Примерные цены : ATTINY13A-SSU - 1: $0.79, ATTINY402-SSN - 1: $0.54)

А, вероятно, с ATtiny13A можно было бы спроектировать и управление космическим кораблем ... :))
(вероятно с программой, написанной только на машинном коде :) ).
---
[uquote="Martian",url="/forum/viewtopic.php?p=4338200#p4338200"]на практике этот красивый переход с одного мк на другой не такой уж красивый[/uquote]
Да, но дело 30 сек ... час ... день ... Несмотря на это, в большинстве случаев (конструкции) МК пуст 90%, или "заполнен наполовину". Очень немногие приложения (TFT, OLED, шрифты, анимация ...) заполняют, но ето в серьезный проект. Но ето редко. (Пишу как любителя. Здесь могут быть профессионалы - с другим подходом. А там вероятно решающую роль играет уже не цена МК, а время для проектирования).
С.Н.
Потрогал лапой паяльник
Сообщения: 307
Зарегистрирован: Пн окт 26, 2020 08:37:51
Откуда: г.Волгоград

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

Сообщение С.Н. »

[uquote="veso74",url="/forum/viewtopic.php?p=4338201#p4338201"]С.Н., не цитируйте меня пустым сообщением, пожалуйста. Есть другая кнопка для ответа[/uquote] Хотел место поэкономить.
Ну вот так сложилась кривая линия проекта устройства, что мне позарез надо было один 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%
Однако от темы то мы ушли....
ФУОЗ на платформе Ардуино: https://radiokot.ru/forum/viewtopic.php ... 6#p4366626
ВК - "ФУОЗ на микроконтроллере Atmega328P (МПСЗ)"
Аватара пользователя
Eddy_Em
Собутыльник Кота
Сообщения: 2516
Зарегистрирован: Пт июл 12, 2019 22:52:01
Контактная информация:

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

Сообщение Eddy_Em »

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

Вернуться в «Arduino»