Сергей Немировский 0 November 29, 2025 Posted November 29, 2025 · Report post Здравствуйте. Столкнулся с проблемой. На STM32 под FreeRTOS в потоке с низким приоритетом программирую датчик DS1820, интерфейс 1-WIRE программный. В программе порядка 10 потоков, программируемых не мной. Операции, например, чтения или записи одного бита датчика требуют выдержки нескольких пауз между действиями. Если я такую операцию окаймляю командами taskENTER_CRITICAL и taskEXIT_CRITICAL, то в более высокоприоритетном потоке перестает работать интерфейс I2C (программирую не я, в причинах не разбирался). Если же я не использую task..., то датчик показывает чушь. Есть какие-либо советы, чтобы работало и одно, и другое? Quote Share this post Link to post Share on other sites More sharing options...
kolobok0 4 November 29, 2025 Posted November 29, 2025 (edited) · Report post 1 hour ago, Сергей Немировский said: ...интерфейс 1-WIRE программный....10 потоков...чтения или записи одного бита датчика требуют выдержки нескольких пауз между действиями....Есть какие-либо советы, чтобы работало и одно, и другое? Совет один = Правильно писать софт. Или пригласить спеца для написания. Если коротко: - в зависимости от тактовой - определяете минимальный квант действий в прерываниии. например для 51 серии - это будет что то типо выдача сигнала, ноп, выдача инвертного сигнала. Для avr это уже будет немного по другому звучать: если выдаём короткий строб - то перед выходом из прерывания, если длинный - то взводим прерывание (с учётом возможного дрейфа). Для аля stm32 серий это уже всё на прерываниях - любой вывод. Сначала прорабатываете чтение одного бита, потом заводите комбинацию (статическую) для байта, потом статический набор команд. Всё это во флеше, и тупо гоняете цикл (обработчик прерывания бегает по нему). Результат выгружаете в нужные ячейки. Причём если сканируете несколько датчиков в параллель сразу - то в данной точке раскидываете по своим ячейкам. Уровень оси(типо фри-ртоса) уже получая нужные ячейки в памяти правильно расчитывает показометры, высчитывает дельты измерений, знак, обрывы, детекции включения и т.д. и т.п.. Причём между разными МК, при одном схемотозе(условно) вы переписываете только нижний уровень. удачи вам (круглый) ЗЫ По памяти реализации для разных камней. Проекты на x51, avr, stm32 = где то более 10 потоков, 8 1-Wire датчиков сканируемых постоянно, куча GPIO входов и выходов, исполнительные механизмы, несколько rs485 и т.д... Проблем нет - работает на ответственных объектах (ценности в несколько миллионов баксов) 😀 ЗЫ ЗЫ И.... Вашего непосредственного руководителя - гнать, т.к. набрал слабых разрабов и не занимается ими. Видать эффективный менагер Edited November 29, 2025 by kolobok0 1 Quote Share this post Link to post Share on other sites More sharing options...
x893 83 November 29, 2025 Posted November 29, 2025 · Report post 1 hour ago, Сергей Немировский said: Есть какие-либо советы, чтобы работало и одно, и другое? Использовать аппаратную реализацию 1-wire. 1 hour ago, kolobok0 said: Или пригласить спеца для написания. Это правильный путь решения. Quote Share this post Link to post Share on other sites More sharing options...
siargy 17 December 1, 2025 Posted December 1, 2025 · Report post On 11/29/2025 at 2:00 PM, x893 said: Использовать аппаратную реализацию 1-wire. тут гдето было - 1-wire на таймере Quote Share this post Link to post Share on other sites More sharing options...
x893 83 December 1, 2025 Posted December 1, 2025 · Report post 2 hours ago, siargy said: тут гдето было - 1-wire на таймере На DMA Quote Share this post Link to post Share on other sites More sharing options...
RabbitRabbit 1 December 1, 2025 Posted December 1, 2025 · Report post Очень удобно через UART. См. например "Using a UART to Implement a 1-Wire Bus Master" от MAXIM. Quote Share this post Link to post Share on other sites More sharing options...
siargy 17 December 2, 2025 Posted December 2, 2025 · Report post 22 hours ago, x893 said: На DMA дма это внутри а не наружу 1 1 Quote Share this post Link to post Share on other sites More sharing options...
pokos 18 December 11, 2025 Posted December 11, 2025 · Report post On 11/29/2025 at 12:10 PM, Сергей Немировский said: Есть какие-либо советы, чтобы работало и одно, и другое? Мой совет конторе: поскрести по сусекам бюджета и нанять уже архитекта. Quote Share this post Link to post Share on other sites More sharing options...