Выбор архитектуры и возможно ли это на Ардуине.

Тема в разделе "Arduino & Shields", создана пользователем Alex19, 20 сен 2014.

  1. Alex19

    Alex19 Гуру

    Пришла от знакомого моя Due, при всей моей не любви к ней. По производительности она лучше.

    Mega дала analogRead около 32 микросекунд в FAST ADC. Due справилась за 8, правда толком и не понял в каком режиме:), первую попавшую ссылку из гуга взял, о ускорении ADC Due. Показания приблизительные смотрел с помощью micros().

    Плюс у Due 12-битный ADC и много плюшек. Минусы другая архитектура процессора, раньше полное отсутствие библиотек, надеюсь сейчас, что-то изменилось к лучшему.

    Архитектура получилось разумная. 1-ая Due получает данные по Serial на первом этапе в дальнейшем UDP (если нужно управление несколькими станками из 1 компа). Она проверяет целость данных и принимает оправляет на 2 Due. Она же делает вторичные действия не связанные на прямую с общим циклом. Вторая Due, выполняет цикл. Может еще одна, для тестирования целостности линий.

    Чую, намучаюсь я с библиотеками:(. Но пройти надо, станочек для меня очень важный.

    Через 10 ножек. По Вашему примеру.
    Каждая команда у меня это 10 байт, что в принципе не много.

    Не сразу увидел, дополнение
    По блокировку понятно. А вот 24 битная шина, наверно не получится. Что у Mega, что у Due и так мало ножек для этого проекта. Хотя можно подумать о сдвиговых регистрах и т.д, все равно их придется использовать на менее ответственных моментах.

    Еще раз, огромное спасибо!
     
    Последнее редактирование: 21 сен 2014
  2. Unixon

    Unixon Оракул Модератор

    К сожалению, у Due порты сильно раскиданы по выводам ардуины, на этой плате сложнее организовать достаточно широкую шину без потери производительности - запись в один или несколько портов с побитовыми сдвигами и наложением масок съедает все преимущество в скорости процессора. Впрочем, 4-8 битную шину можно сделать без особых проблем.

    Кстати, предложенный протокол можно еще доработать для уменьшения суммарного количества линий.
    Изначальный вариант предлагает полнодуплексный режим передачи с раздельными линиями управления и данных для обоих направлений передачи данных.
    Полудуплексный вариант можно реализовать сделав линии данных двунаправленными, количество управляющих линий при этом останется тем же - две на каждое направление передачи.
    После этого можно попробовать сделать еще один шаг - переработать логику автомата так, чтобы не приходилось дублировать управляющие линии. Однако здесь могут возникнуть сложности из-за появления принципиальной возможности возникновения коллизий, когда обе стороны одновременно хотят начать передачу данных в противоположных направлениях.
     
    Alex19 нравится это.
  3. Unixon

    Unixon Оракул Модератор

  4. Alex19

    Alex19 Гуру

    Был на работе, поэтому отвечаю, только сейчас.

    Использовать Meg-у для меня, это лучший вариант. Но проблема в 2 аспектах.
    1. ТЗ растет.
    2. Скорость обработки аналогового сигнала, может есть смысл попробовать АЦП на SPI, в Meg-е если не ошибаюсь SPI может работать на 8Mhz, что должно хватить.

    Так же можно подумать о ЦАП и сделать схему на прерываниях. Но их у Meg-и всего 6, а мне еще нужно 3 для своих нужд. Можно все линейки объединить в одну линию прерывания, тогда должно хватить. Но тут вопрос в переключении линий SPI не когда не пробовал, надо проверить. Но эту схему с ЦАП и АЦП попробую сделать позже.

    А с Due могут быть проблемы, библиотеки. ПИД регулирование, могу вынести на отдельную плату, может быть и Mega. Матричные клавиатуры по I2C, часы, те же библиотеки АЦП, ЦАП и т.д.

    Да так и планировал когда изучал Вашу схему.

    Определенно возникнут, они уже есть на Serial.

    Мне понравилась 1 байтная шина. 10 проводов, у меня должно найтись.

    На основной аруине у меня осталось 12 цифровых, после шины останется 2. Это оптимистический вариант, если ни чего не добавится. Все остальное на I2C. Пробовать, что-нибудь на SPI сделать, чтобы уменьшить количество входов, выходов ни когда не изучал скорость работы SPI.

    Одним словом, надо набрать электроники на все варианты и тестировать, по возможности оставив Meg-у. Нет мучатся с Due.

    Пока получается так.
    Одна лучше Mega для коммуникации (с компьютером общается через Serial 2 канала или UDP) + матричная клавиатура она посылает данные на компьютер, логично ее оставить там.

    Вторая Due или Mega.

    То, что не связано с циклом или засунуть в первую, там ПИД регулирование и так, по мелочи. И покинуть 2 провода на основную. Или вынести в 3-тию.
     
  5. Alex19

    Alex19 Гуру