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

Комментарии: 9

  1. Yuriy

    В чём конкретная проблема обслужить одновременно эти достаточно медленные интерфейсы?

    • Sexst

      Для авр они не то чтобы медленные, особенно 1-wire, требующий буквально побитово работать с ним и успевать. Это ж не arm, тут DMA с UART не впряжешь

      • Nikita

        У него транслятор по ходу Из одной шины в другую

        • Ogurezzz

          а там у МК 1wire термометр подключен, и сам МК является слейвом у другого I2C мастера. Вопрос в том, что во время отправки пл 1Wire может прилететь запрос от мастера. И надо это разрулить. 1Wire софтовый, а I2C аппаратный с прерыванием по началу приема

          • Yuriy

            Как определить окончание приема? Какой обмен по i2c нужно поддержать? Есть возможность задерживать i2c?

          • Sexst

            Хрен с ней с отправкой по 1-wire. Во время приёма прилететь может, а тебе биты по микросекундам считать нужно, некогда в прерывание валить. Не, разрулить то можно. На начало бита exti реагирует по смене уровня и заводит таймер отдельный, через 30-40мкс по прерыванию таймера смотрим однократно что сейчас за уровень и делаем вывод какой бит шлют. Но это всё прямо настолько per rectum ad astra, плюс 1-wire требует конкретную ножку с exti.

            • Yuriy

              Ещё раз. Пусть ТС объяснит задачу Может он 1w опрашивает по запросу от i2c И нет там ничего одновременно Да даже если бы и было...

      • Yuriy

        Куда успевать? Какая там частота и требование к джиттеру? 200 тактов на бит есть или нет?

Не нашли ответ?

Вам также может быть интересно