Задержки в исполнении кода тетра (leonardo)

Тема в разделе "Arduino & Shields", создана пользователем Замир, 25 июн 2020.

  1. Замир

    Замир Нуб

    Здравствуйте,

    Купили комплект ТЕТРА от Амперки. Начали изучать и вот с чем столкнулись.
    Среда:
    ОС: Linux Elementary OS
    Установлены: последний Arduino Studio 1.8.4, S4A 1.6
    Плата ТЕТРА (Arduino Leonardo)
    Порт платы (USB 2.0) /dev/ttyACM0
    Скорость порта менял от 9600 baud до 500000 baud

    В s4a создаем простые две программы:
    1. В бесконечном цикле включить цифровой 13, подождать секунду, выключить цифровой 13, подождать секунду
    2. При нажатии клавиши вверх включить цифровой 13, при нажатии клавиши вниз выключить цифровой 13

    Проблема: переключения по таймеру из программы 1 происходят с рандомными задержками 1-8 секунд. Реакция на нажатия кнопки из программы 2 тоже с рандомной задержкой в 1-5 секунд.

    Что пробовал:
    – Подключал свою Arduino UNO, там такой проблемы нет. Там все отрабатывает четко
    – Подключал ТЕТРУ к Windows в виртуалке, запущеной под macOS, тоже никаких проблем, все отрабатывает без задержек.

    Подскажите пожалуйста в какую сторону копать.
     
  2. ИгорьК

    ИгорьК Оракул Модератор

    Два пути.

    Первый. Забить на s4а, читать книжки по языку Си, документацию к Ардуино и МК что стоит на этой плате, и писать код в среде Ардуино.

    Второй. Идти на бредборд, в надежде что кто-то знает решение. Решив эту проблему, вскоре натолкнуться на аналогичную.

    Первый путь короче, потому что второй приводит а конце концов, к первому.
     
    parovoZZ и issaom нравится это.
  3. Замир

    Замир Нуб

    Спасибо, но плата куплена для дочки 9 лет от роду. Вариант с Си не подходит. Сам я уже давно пишу код на этом прекрасном языке и на нескольких других.

    Схожу на бредборд.

    Может здесь еще кто что посоветует.
     
  4. ZAZ-965

    ZAZ-965 Гуру

    Речь о Arduino IDE с сайта arduino.cc или Elementary OS сами собирают deb пакет?
    Если о ArduinoIDE - после распаковки из tar.xz архива выполняли от рута "arduino_linux_setup.sh username"? Этот скрипт добавляет пользователя в нужные группы, udev правила и удаляет ModemManager с которым конфликтует Leonardo ("замечательный" подход - Arduino главнейшая программа).
    Рекомендую перед запуском скрипта закомментировать удаление ModemManager и всего лишь останавливать службу
    Код (Bash):
    sudo systemctl stop ModemManager.service
    sudo systemctl disable ModemManager.service
     
  5. Замир

    Замир Нуб

    IDE скачивал с arduino.cc, но скрипт не запускал, добавлял в группы вручную. Может чего забыл. Спасибо, попробую.
    ModemManager остановил и отключил автозапуск. Без этого вообще плату не видела система