РЕШЕНО Warning: unable to set watch (ir-receiver + digital-line-sensor)

Тема в разделе "Iskra JS, Espruino, Йодо", создана пользователем Wild, 23 янв 2021.

  1. Wild

    Wild Нуб

    Если пытаюсь использовать две библиотеки:

    Код (C++):
    var lcoder = require('@amperka/digital-line-sensor').connect(P9);
    var receiver = require('@amperka/ir-receiver').connect(P3);
    получаю такое предупреждение:
    Что сделать чтобы использовать библиотеки и не ловить потом чертей из-за этого конфликта?

    Ну и отвечу сразу сам для тех, кто увидит то-же самое и испугается: надо переставить конфликтующую пару в другие порты.
    Например P7 и P3 у меня не приводят к такому сообщению.

    ...но логика моторов, которая работала на портах P9 и P10 - перестала работать на портах P7 и P10...что за жесть? Где почитать пояснения к этим особенностям?

    РЕШЕНИЕ: переставить Р9 на Р8 для левого энкодера
     
    Последнее редактирование: 23 янв 2021
  2. Wild

    Wild Нуб

    @NikitOS можете подсказать здесь? Эти две библиотеки несовместимы?
    Какие порты нужно использовать другие, чтобы они перестали конфликтовать?

    Вот функции портов, которые отдаёт искра:
    Код (C++):
    >WARNING: Unable to set watch. You may already have a watch on a pin with the same number (eg. A0 and B0),
    or this pin cannot be used with watch
    >print(P9.getInfo())
    {
      "port": "C",
      "num": 7, "in_addr": 1111556636, "out_addr": 1111556764,
      "functions": {
        "USART6": {
          "type": "RX",
          "af": 0 },
        "TIM3": {
          "type": "CH2",
          "af": 0 },
        "TIM8": {
          "type": "CH2",
          "af": 0 }
       }
    }
    =undefined
    >print(P3.getInfo())
    {
      "port": "A",
      "num": 7, "in_addr": 1111491100, "out_addr": 1111491228, "channel": 7,
      "functions": {
        "TIM14": {
          "type": "CH1",
          "af": 0 },
        "TIM8": {
          "type": "CH1N",
          "af": 0 },
        "SPI1": {
          "type": "MOSI",
          "af": 0 },
        "TIM1": {
          "type": "CH1N",
          "af": 0 },
        "TIM3": {
          "type": "CH2",
          "af": 0 }
       }
    }
    =undefined
    >print(P3.getMode())
    input_pullup
    =undefined
    >print(P9.getMode())
    input
    =undefined
     
     
  3. Wild

    Wild Нуб

    Код (C++):
        "TIM3": {
          "type": "CH2",
    ^^^ есть в обоих, похоже...
    ...так как приёмник у меня работает только на P3 пришлось переставить P9 на P8.

    И всё-же вопрос, как и откуда я мог бы это узнать? Только методом тыка? Это же самые стандартные функции, почему они несовместимы "из коробки"?
     
  4. NikitOS

    NikitOS Король шутов Администратор

    В обоих модулях используется функция setWatch для остслеживания изменений на пинах. Если посмотреть в документацию к функции на официальном сайте, можно увидеть примечание:
    Далее открываем распиновку платы:
    [​IMG]

    Видим, что P3 == A7, P9 == C7, что как раз попадает под то ограничение, о котором писалось в документации.

    Является ли это проблемой модулей? Не думаю.