Raspberry PI 3 + OpenCV + Arduino UNO + ......(поледнее решение и вопрос в последнем сообщении)

Тема в разделе "Флудилка", создана пользователем Igor68, 21 ноя 2016.

  1. Igor68

    Igor68 Гуру

    Доброго времени суток!
    Моет кто-нибудь ответит на это (в шилде ComMotion):
    Код (C++):
    ...
    /* --- запуск I2C --- */
        digitalWrite(18, 1);                                // enable pullup on SDA pin
        digitalWrite(19, 1);                                // enable pullup on SCL pin
    ...
     
    В то время как они подтянуты к плюсу уже при монтаже на плате шилда 3.3 кОм самим производителем. Шилд расчитан быть ведомым. И что происходит если он (шилд) выполняет это:
    Код (C++):
    Wire.beginTransmission(returnaddress);
    Wire.write(sendpack,spsize);
    Wire.endTransmission();
    ЗЫ: предположительно конечно, что ведущий тоже должен при приёме подтягивал SDA и SCL к плюсу. Это так?

    ЗЫ: тут мне задавали вопрос, который ни к селу ни к городу, о том почему запись на CD происходит быстрее чем чтение... я же ответил: "Запись происходит из буфера сформированным с привлечением кода контроля и восстановления и биты условного байта располагаются не последовательно, а с разносом чтобы этот условный байт не располагался в одном месте. Соответственно при чтении надо читать этот условный байт не с одного места, а с большого участка диска для контроля и восстановления данных". Я ответил, а на мой вопрос никто не обратил внимания. Мне надо, очень надо!
     
    Последнее редактирование: 6 ноя 2021
  2. Un_ka

    Un_ka Гуру

    @parovoZZ ещё не советовал взять логический анализатор? Тогда я посоветую.
     
  3. Igor68

    Igor68 Гуру

    Понятно и так... туда влезть нет возможности. Буду раскидывать по частям и помалкивать, коли ни у кого не на слуху. Но уточнения:
    - ведомый от ведущего принимает и исполняет
    - ведущий от ведомого не может получить данные
    Есть возможность всё поменять к такой-то матери как на ведущем, так и на ведомом... но будет ли всё это совместимо ещё и с другим ведомым, к которому претензий нет (Multiservo) Ведь цель:
    - управлять моторами - работает исправно.
    - читать значения напряжения, тока и энкодеров от ведомого
    - управлять сервомашинами - работает исправно (в мультисерво послал значения и забыл)
    Всё это по I2C который нестандартный, потому как в стандартном всё делается в один запрос - ведущий тактирует, а ведомый только меняет уровни впрочем как и по SPI, а не так когда ведущий вдруг становится ведомым, а ведомый начинает передачу.
    Вот это в исходнике ведомого:
    Код (C++):
    Wire.beginTransmission(returnaddress);
    Wire.write(sendpack,spsize);
    Wire.endTransmission();
    А должен отвечать в том же запросе от ведомого
    Это сериал какой-то, мать его так, ну уж точно не I2C. По коду я понял так... и даже реализовано в разных функциях и соответственно исполняются не за один запрос...
    Вот ещё посмотрю на Wire.onReceive и Wire.onRequest и наверное откажусь от псевдостандартного I2C... только вот придётся еще и код Multiservo ковырять дабы были совместимыми на одной шине.

    А вообще-то, спасибо!!!
     
    Последнее редактирование: 8 ноя 2021
  4. Un_ka

    Un_ka Гуру

    Это правильно.
     
    DetSimen нравится это.