HRP-N3 - серия источников питания с максимальной пиковой мощностью в 350% от MEAN WELL
Специалист
 
Регистрация: 26.10.2020
Адрес: Омск
Сообщений: 1,752
Репутация: 241
253 177
537 320
 
29.10.2022 08:17 #1
Здравствуйте.
Есть потребность вместить в одну программу в arduino IDE четыре разных. Условно говоря, к МК подключены 4 кнопки и при старте первом делом опрашиваются они, этот опрос и задает какая программа будет работать дальше. Все четыре программы друг от друга независимы, и возврат из любой из них не предусмотрен в принципе. Т.е. выбор программы происходит исключительно по RESET.
Проблема состоит том, что нужно менять не только пути в loop, но и содержимое и setup, и содержимое ДО setup - например настройку прерываний.
Я попытался решить эту проблему с помощью переноса всех настроек в loop с дальнейшим ветвлением с использованием в каждой ветке своего бесконечно цикла while(1), но из этого ничего не получилось.
Кто-нибудь сталкивался с такой проблемой?
Оценка
Инженеры КОМПЭЛ провели сравнительное тестирование аккумуляторов EVE и Samsung популярного для бытовых и индустриальных применений типоразмера 18650. Для теста были выбраны аккумуляторы литий-никельмарганцевой системы: по два образца одного наименования каждого производителя – и протестированы на двух значениях тока разряда: 0,5 А и 2,5 А. Испытания проводились в нормальных условиях на электронной нагрузке EBD-USB от ZKEtech, а зарядка осуществлялась от лабораторного источника питания в режиме CC+CV в соответствии с рекомендациями в даташите на определенную модель.
Новичок
 
Регистрация: 07.11.2010
Сообщений: 58
Репутация: 23
13 32
0 2
 
31.10.2022 09:26 #2
Чёта Вы замудрили... Не надо ничего делать "ДО setup", всё одноразовое делайте в setup. Включая опрос кнопок и присваивание переменной doThen числа от 1 до 4. А в loop проверяете её значение и вызываете соотв. п\программу.
Оценка
Компания Компэл, официальный дистрибьютор EVE Energy, бренда №1 по производству химических источников тока (ХИТ) в мире, предлагает продукцию EVE как со склада, так и под заказ. Компания EVE широко известна в странах Европы, Америки и Юго-Восточной Азии уже более 20 лет. Недавно EVE была объявлена поставщиком новых аккумуляторных элементов круглого формата для электрических моделей «нового класса» компании BMW. Продукция EVE предназначена для самого широкого спектра применений – от бытового до промышленного.
Специалист
 
Регистрация: 26.10.2020
Адрес: Омск
Сообщений: 1,752
Репутация: 241
253 177
537 320
 
31.10.2022 11:05 #3
abomin, попробуйте вставить в setup например AsyncWebServer server(80), а потом расскажите здесь, что из этого у Вас получилось.
Оценка
Специалист
 
Аватар для antonydublin
 
Регистрация: 22.09.2010
Адрес: г. Донецк
Сообщений: 868
Репутация: 380
371 0
3 0
 
31.10.2022 14:32 #4
Честно говоря проблема кажется надуманной. У Вас всё-равно будет где-то примерно такой код:
Цитата:
wifi_start;
while(wifi.status() != connected) {};
server_start;
Поэтому логичным кажется после старта опросить кнопки, затем ввалиться в единый основной цикл, где будет
Цитата:
switch(prog_number): { case(0){}.... case(3){}};
В каждом case при первом заходе делать настройки и поднимать флаг о том, что настройки сделаны. При повторных заходах проверять флаги setup0....setup3 и пропускать эту часть. Далее видятся всё те же switch(prog_number), внутри которых указатели на функции с кодом подпрограмм.

Или вопрос был как без флагов организовать ветвление и сэкономить? Или вообще использовать изолированные области памяти?
__________________
Atmel, STM32, ESP32, RTOS, OS-less, C, C++, C#, Visual Studio, IAR, Altium, Micro-Cap, Maple, MatLab, etc.
Оценка
Специалист
 
Регистрация: 26.10.2020
Адрес: Омск
Сообщений: 1,752
Репутация: 241
253 177
537 320
 
31.10.2022 14:42 #5
Всё это мне известно, и я это уже делаю.
Но из-за сильной ограниченности ресурсов МК постоянно сталкиваюсь с артефактами.
Например после отключения SPIFFS его запреты на прерывания оказываются не отмененными, как ожидалось. А чтобы избежать этого, надо SPIFFS не запускать, а это неприемлемо, т.к. данные для программ содержатся в файловой системе.
Вот такое заморочки...
Поэтому и хотелось бы и разделить задачи ПОЛНОСТЬЮ, т.е. чтобы они никоим образом не были связаны между собой. Типовой способ - загрузчик, который на старте загружает в память выбранную кнопками прошивку в МК. Но я представления не имею, как это сделать в ардуино IDE.
Оценка
Специалист
 
Аватар для antonydublin
 
Регистрация: 22.09.2010
Адрес: г. Донецк
Сообщений: 868
Репутация: 380
371 0
3 0
 
31.10.2022 15:19 #6
Цитата:
Например после отключения SPIFFS его запреты на прерывания оказываются не отмененными, как ожидалось. А чтобы избежать этого, надо SPIFFS не запускать, а это неприемлемо.
Да, это кажется реальной проблемой. А что там в иcходниках FS, java? Использовать не доводилось, но, видимо, это и есть плата за простоту.
__________________
Atmel, STM32, ESP32, RTOS, OS-less, C, C++, C#, Visual Studio, IAR, Altium, Micro-Cap, Maple, MatLab, etc.
Оценка
Специалист
 
Регистрация: 26.10.2020
Адрес: Омск
Сообщений: 1,752
Репутация: 241
253 177
537 320
 
31.10.2022 18:23 #7
Однако скорее всего придется перейти на более мощный МК. Он у меня есть, и для него всё есть, но мне хотелось пристроить слабенький, он у меня давно без дела валялся, и задача, как казалось, ну прямо под него. Значит не судьба...
Оценка
Новичок
 
Регистрация: 19.08.2012
Сообщений: 51
Репутация: 16
6 0
0 0
 
01.11.2022 09:41 #8
Цитата:
Сообщение от ART_HA
Значит не судьба...
4 кнопки включают каждая свой Ардуино.
Оценка
Специалист
 
Регистрация: 26.10.2020
Адрес: Омск
Сообщений: 1,752
Репутация: 241
253 177
537 320
 
01.11.2022 12:01 #9
Задача легко реализуется, если поставить на МК ОС. Но ОС требует ресурсы, а при наличии ресурсов задача становится никчемной.
Оценка
Ответ
Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск
Оценка этой теме
Оценка этой теме:
Похожие темы
Ваши права в разделе
Вы не можете создавать новые темы
Вы не можете отвечать в темах
Вы не можете прикреплять вложения
Вы не можете редактировать свои сообщения

BB коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.

Быстрый переход
Электронные компоненты. Бесплатная доставка по России
Часовой пояс GMT +3, время: 22:29.
Обратная связь РадиоЛоцман Вверх