Anonymous
Не понял к чему это.
А я не понял каким боком вы термины синхронный и асинхронный прилепили к программному обеспечению
SetPf
SetPf
Не я прилепил. =)
Anonymous
SetPf
Anonymous
Так везде. Если два обработчика связаны у вас то это 'асинхронное ' у вас
Anonymous
Или наоборот,
SetPf
Это вопрос?
SetPf
Про вот связанные обработчики, обменивающиеся данными, синхронные.
Как я понимаю это.
Anonymous
SetPf
Anonymous
Судя по коду там не 'синхронный' а последовательный вызов функций.
Anonymous
Извините. Какой-то непонятный разговор непонятно о чём. Задача ваша мне не понятна. Слов много а смысл где-то потерялся.
SetPf
И к чему программ каунтер синхронен?
Вы пытаетесь по-моему железный термин натянуть.
HandlerA синхронен с HandlerB, синхронизирует их последовательность выполнения кода, которая и задается PC
SetPf
SetPf
Я повторюсь, я допускаю, что путаю терминологи, но тогда - ваша альтернатива.
Anonymous
Если уж применять слово 'синхронный' к программному обеспечению, то скорее это когда одновременно несколько задач начинают обработку по общему сигналу синхронизации
Anonymous
Что явно не похоже на вызов функций друг за дружкой
SetPf
https://habr.com/ru/post/453192/
SetPf
Вот как вариант.
SetPf
SetPf
Вам в споре победить или истину я не понимаю?
Там же есть термины ниже, синхронные действия процесса и асинхронные действия процесса.
Anonymous
SetPf
Я с вами не спорю. Я говорю что не понимаю ваших описаний
https://stackoverflow.com/questions/748175/asynchronous-vs-synchronous-execution-what-does-it-really-mean/748235
Ну я пользовался, как я считал общеизвестными и принятыми терминами.
Сейчас я уже не уверен сам...
Там по всему интернету срачи 1 в 1.
Andy
Возможно имеет смысл обновить понимание FreeRTOS вот отсюда: http://microsin.ru/content/view/1304/44/
и обсуждать конкретный вопрос в применении к конкретному решению, т.к. на общие вопросы есть только общие ответы :)
SetPf
-=SS=-
ребят, выручайте. Имеется ESP8266 01, будет управлять реле, при этом нужно получать статусы с поплавка, использовать решил прошивку Tasmota. Все отлично, прошил настроил, поплавок к GPIO2+GND прицепил. НО! Есть косяк, если поплавок взведен, он замыкает GPIO2+GND, если в этот момент перезапустить esp, то он при загрузке запускается в режиме прошивки.
SetPf
-=SS=-
Может я что-то неправильно подключил, или есть какие-то возможности сделать так, что бы я не терял связь с esp после перезапуска при взведенном поплавке.
Andy
ребят, выручайте. Имеется ESP8266 01, будет управлять реле, при этом нужно получать статусы с поплавка, использовать решил прошивку Tasmota. Все отлично, прошил настроил, поплавок к GPIO2+GND прицепил. НО! Есть косяк, если поплавок взведен, он замыкает GPIO2+GND, если в этот момент перезапустить esp, то он при загрузке запускается в режиме прошивки.
Очевидное решение - сменить вход датчика, например перекинуть на uart rx
-=SS=-
-=SS=-
Andy
Alexey
Почитал диалог по фриртосу. Тема интересная и вопрос достаточно конкретный. Он в целом про организацию программ.
На всякий случай напомню, вопрос про то, как лучше сделать: так на каждый модуль или у модуля метод Handle и его дергать из одного таска.
Лично я использую и то и другое. Например опрос кнопок (со всякими антидребизгами, эвентами) выполняется просто через Handle.
А некоторые модули, вроде телнет консоли, дисплея или чего-то относительно большого выполняются в своих потоках.
Alexey
Но я тоже до сих пор задаюсь вопросом как делать правильно...
Alexey
https://www.beningo.com/pdf/RTOS%20Best%20Practices2.pdf вот такая штука есть по TROS
SetPf
SetPf
Почитал диалог по фриртосу. Тема интересная и вопрос достаточно конкретный. Он в целом про организацию программ.
На всякий случай напомню, вопрос про то, как лучше сделать: так на каждый модуль или у модуля метод Handle и его дергать из одного таска.
Лично я использую и то и другое. Например опрос кнопок (со всякими антидребизгами, эвентами) выполняется просто через Handle.
А некоторые модули, вроде телнет консоли, дисплея или чего-то относительно большого выполняются в своих потоках.
Вообще с инфой по архитектуре в дребедендед какой то дефицит. Я так навскидку только доисторические статьи дихальта вспомню.
Но они скорее вводные и очень общие.
Я вот себе принципы вывел какие то, нахватав из других сфер, с миру по нитке и стараюсь их придерживаться. Но блин, видя чужие решения, каждый раз WTF происходит, и увидя мои думаю тоже самое произойдет.
Alexey
Телнет консоль для себя делал, очень быстро, просто чтобы отлаживать много плат не цепляя провода. Естественно реализация страшная. Консоль скорее ардуино стайл: ввел команду, она спросила аргументы, ввел их. Ну и лог дублирует в телнет.
По причине страшности и костылей свой код пока выкладывать не буду, но выложу два примера из которых я это и сделал:
1) https://github.com/huming2207/esp-remote-log - тут типо либы, в описании пример
2) https://github.com/nkolban/esp32-snippets/tree/faf2839905c908777a7dbdefd7eb9f933b0f1716/networking/telnet
SetPf
Alexey
Сначала хотел сделать телнет драйвер для esp console компонента, но по умолчанию телнет/неткат работают со строками, то есть чтобы были всякие подсказки команд и прочее надо менять режим. Это лишние действия + на разных платформах может работать по-разному. Поэтому оставил простую консоль. Это ведь в любом случае для дебага, а там супер консоль и не нужно
romanetz
есть ещё глобальные переменные
romanetz
часто с ними можно куда проще сделать, чем плодить семафоры, мютексы, очереди и прочую фриртосню
romanetz
сокеты если спецом в неблокирующий режим не переводить - вот тут, получается, асинхронщина и нужна. это в отдельный таск, ясен пень
Alexey
Ну да, такой момент тоже есть.
А еще на esp слишком дохрена ресурсов, что порой просто не охото думать "как лучше", просто делаешь "по-тупому" и все
romanetz
ну и ещё - выделяю большие части программы в самомтоятельные таски, а разделяемые ресурсы обгораживаю семафором
Юрий
есть ещё глобальные переменные
Я тут недавно интересовался по поводу обмена данными между задачами, узнал что глобальные переменные это плохо, потом нашел причину падения моего кода, сейчас пока работает, никаких очередей пока не добавлял, жду вылезет косяк или нет😁
romanetz
АЦП - если мы это в инженерные величины переводим - то значит задача не шибко спешная
ЦОСня требует максимума производительности всё же. Колбэки и указатели наше всё в таком случае
romanetz
Alexey
romanetz
можно для примера рассмотреть потоковое радио с i2s выходом, которое мп3 играет
romanetz
вот уж где многопоточность в полный рост напрашивается
Andy
Вопрос в цене : в плюс надежность (мы же про МК! ), возможность развития кода (не универсальность!), легко читаемость кода (меньше порог вхождения), в минус - затраты на переключение задач, затраты на кодирование.
romanetz
HAL переносится на f4 серию спокойно, но нафига?...
Alexey
Alexey
ардуино либы таким страдают
Andy
Andy
SetPf
чтобы писать платформонезависимый код...
Ну оно на практике выливается скорее в то, что бы писать код легко подвергающийся рефакторингу.
Это к слову минус по отношению к использованию глобальных переменных.
romanetz
Юрий
Anonymous
Только это на f205 было
Anonymous
При чем на HAL можно было бы обновить библиотеку и пересобрать. А 'старая' это куски кода в перемешку с другим кодом. Сэкономили, ну
romanetz
Странно
romanetz
С учётом того, что размер блока на флешке 512 байт
romanetz
И MSC работает с четырёхбайтным номером блока