Переезд с Mega 2560 на Due

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

  1. Alex19

    Alex19 Гуру

    Здравствуйте.
    Интересует следующий вопрос.

    Работаю с
    http://amperka.ru/collection/boards/product/arduino-mega-2560
    вынужден переехать на
    http://amperka.ru/collection/boards/product/arduino-due

    Какие проблемы меня ждут после переезда?
    Слышал о необходимости подправлять сторонние библиотеки.

    На сколько это сложно?
    Может, что-то еще?

    Слышал, что к Mega-е можно подключить 2 Mega-у между собой, можно ли подключать Due + Mega и Due + Due?
     
  2. nailxx

    nailxx Официальный Нерд Администратор

    Добрый!

    На самом деле вся разница — мелочи жизни за исключением одного большого «но». Для Due — родное напряжение — 3.3 В, поэтому периферию нужно выбирать с этим учётом. Подача сигнала в 5 В на вход Due ничем хорошим не закончится. Поэтому, Due + Due можно подружить проводками, а вот для коммуникации Due + Mega придётся изобретать нечто, выравнивающее уровни. Например, если хотите между ними I²C нужно будет делать посредник на базе Si8400.

    Ну и да, Due — 32 битная система. Если для сторонней библиотеки битность критична и не была учтена (вполне вероятный сценарий), её придётся дорабатывать, избавляя от глюков. С встроенными библиотеками AFAIK на настоящий момент всё в порядке.
     
  3. Alex19

    Alex19 Гуру

    Спасибо, за ответ.
    Да я читал, для меня это не проблема

    А вот по коду пока не понятно
    Download Arduino 1.5 BETA (with support for Arduino Due Board)
    http://arduino.cc/en/Main/Software

    Вот это сильно смущает, BETA это значит они еще отлаживают.
    А в стабильных нет поддержки Due.
    Это как я понимаю, надо будет освоить C++?
     
  4. nailxx

    nailxx Официальный Нерд Администратор

    Про C++ — верно. Про beta вспомнилось:

    — Why do you call this horrible piece of sh*t beta, it's not even pre-alpha!!
    — We call it beta, 'cause it's beta than nothing!

    А на самом деле, да, оно менее стабильно, активно отлаживается и т.п. Я почти уверен, что именно с опасением большого количества глюков было связано то, что Arduino Due не отдавали больше 10 штук за раз одному дистрибьютору. Неделю назад лимит сняли. Думаю это косвенное свидетельство того, что с мажорными проблемами разобрались. И в конце концов, Google Mail в статусе Beta был когда им уже полпланеты пользовалось. Так что всё относительно.
     
  5. Alex19

    Alex19 Гуру

    Спасибо, за развернутый ответ.

    Печально, C++ ни когда не использовал, в основном С# от Dot.net.
    А это очень разные вещи.

    Beta, просто в программах, всегда обхожу. За редким исключением, если хочется поиграться, а вариантов нет.

    Вот думаю, смогу, ли я осилить или нет. Посмотрю еще по форумам, может не так страшен, черт как его малюют.
     
  6. Alex19

    Alex19 Гуру

    Возможно кому-то она будет она тоже будет интересна.

    Официальный форум
    http://arduino.cc/forum/index.php?PHPSESSID=667289e25255a3ca40990c78d713995a&board=87.0

    Да со многими библиотеками, есть проблемы. Но ребята стараются.

    Как они сами пишут в 99% процентах проблема в размере int.
    Но судя по форуму, хватает и других моментов.

    Как уже сказал nailxx.
    Почти в каждом втором, топике, как я понял если не быть внимательным, можно просто спалить плату.

    То есть не все шилды, на нем заработают.
    Вроде последние Ethernet и Wi-fi совместимы, но судя по данному топику, библиотеки под Wi-fi нет.
    http://arduino.cc/forum/index.php?PHPSESSID=157814aa8226ac7171786c40c8216bae&topic=134560.0

    Пока, я немного огорчен:( .
     
  7. roggedhorse

    roggedhorse Гик

  8. Alex19

    Alex19 Гуру

    Все достаточно просто.

    С Uno не довелось работать, а Mega имеет только 6 прерываний, в отличии от Due.
    У Due как я понял есть возможность, объявить прерывание на любой цифровой ножке.

    + Due быстрее, а мне вероятно придется, по таймеру смотреть на состояние аналоговых входов.
    Вот и все различия для меня.

    + Через неделю, другую моя Mega, уйдет на станок и я останусь без платы.
    Думал взять что-то поновее, для тестов + если удастся восстановить для лаборатории литиевую машину Arburg, делать на этой плате(платах).

    К примеру дверка открывается, машина останавливается, не важна в каком шаге она находится и т.д. и т.п., и там таких защит около 10-15. Вообщем проект большой и медленный, так как человек который может рассказать о машине почти всегда занят.

    Начал рыть, есть прерывания по таймеру, но не уверен, что мне они подойдут.
    Вообщем буду изучать, пока с Due, я решил повременить
     
  9. roggedhorse

    roggedhorse Гик

    В этой таблице http://arduino.cc/en/Hacking/PinMapping2560 в колонке Pin name указаны Alternate functions для пинов. У некоторых из них вы встретите PCINTnn, что означает, что пин может служить источником прерывания. Таким образом 24 внешних источника прерываний
    А обработчик Pin Change Interrupts достаточно прост

    ADC меги затрачивает какое-то время на преобразование уровня напряжения на аналоговой ноге (или на двух в диффрежиме) в цифровое значение. Время "оцифровки" колеблется от 13 до 260 микросек и зависит от настроек ADC.

    ADC Due "успевает" выполнить преобразование за 1 микросек. Что, конечно, гораздо быстрее.

    Но мой собственный опыт подсказывает, что для большинства задач Mega вполне применима.
     
    Alex19 нравится это.
  10. Alex19

    Alex19 Гуру

    Огромное спасибо, буду разбираться.

    Для меня пока только Mega:), у Uno мало выходов, Due пока боюсь, но очень хочется:) .
     
  11. roggedhorse

    roggedhorse Гик

    Кстати, вы можете использовать ADC Conversion Complete Interrupt
    Прерывание сообщит вам о завершении преобразования. Соответственно, от начала преобразования и до ADC CCInterrupt вы (МК) можете заниматься другими делами.

    Правда, в таком случае вам придется отказаться от использования стандартной analogRead

    Но это способ как делать на "медленной" Мега больше и быстрее :)
     
    Alex19 нравится это.
  12. Alex19

    Alex19 Гуру

    Я уже почти отказался от Due.
    Как для тестового стенда, мне не нужна такая скорость, поэтому Mega.

    А вот для станка, нужно получить реакцию на прерывание и выполнение простого кода не более 0,1-0,05 сек. Если не получится уложиться или несколько Meg или куплю отдельно под него Due, когда соберется силовая электроника, проверю, а там буду смотреть.

    Еще раз, спасибо. Буду разбираться.
     
  13. Alex19

    Alex19 Гуру

    Буду в курсе, пока мне такое не надо.

    Пока наоборот пытаюсь, сделать.
    Вою с loop, чтобы он останавливался в нем и ждал следующей команды, при этом не начиная новый loop.

    Их куча, поэтому не могу
     
  14. roggedhorse

    roggedhorse Гик

    Скорость реакции на прерывание менее 400 наносек (0. 000 000 4 сек)
    Другой вопрос, что вероятно вам потребуется выполнять некоторые вычисления чтобы отреагировать на изменение внешних факторов согласно вашей задаче/цели.
    Но, вот например, вычисление расстояния между двумя географическими точками на земном шаре на Меге выполняются за сотню микросекунд (0.000 1 сек).
    То есть у вас огромный запас вычислительных мощностей.
    Однако, только при условии его разумного использования

    P.S. переход с Mega на Due гораздо проще когда вы хорошо знакомы с Mega :)
     
    Alex19 нравится это.
  15. Alex19

    Alex19 Гуру

    Буду грызть гранит науки, надеюсь удастся.

    Нет, просто подать сигнал на 1 порт, и установить значение переменой, чтобы все, остановить.

    Моно пишется в интернете, что они медленные. Поэтому не ставил серьезных решений, по сути все мои рабочие задачи, простые автоматы. С большим кол-вом выходов и ветвлением.
    И соединением с компьютером.

    Но вы заставили меня по новому взглянуть на Ardunio.

    Я его вчера хотел заказать в Амперке, но как начал разбирается, то понял, что библиотек многих нет.
    Затем выяснилось, что 3,3 это вовсе не ерунда, как мне тогда казалось:) (я пока, практически не знаком с электроникой).

    Поэтому для стенда она не очень, клавиатуры, мониторы и т.д. надо подбирать учитывая это напряжение.
     
  16. Megakoteyka

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

    Вам нужен конечный автомат:
    Код (Text):
    typedef enum {
      STATE1,
      STATE2,
      STATE3 } ESTATE;
     
    ESTATE _state = STATE1;
     
    void setup() {}
     
    void loop() {
      switch(_state)
      {
        case STATE1:
          if(произошло_событие)
            _state = STATE2;
          break;
        case STATE2:
          if(произошло_событие)
            _state = STATE3;
          break;
        case STATE3:
          if(произошло_событие)
            _state = STATE1;
          break;
      }
    }
    Когда наступает интересующее событие, меняете значение _state на следующий шаг.
     
    Alex19 нравится это.
  17. Alex19

    Alex19 Гуру

    Спасибо, я решил, способом куда суровее:).

    Воспользуюсь вашей добротой, а в принципе, как остановить выполнение loop, чтобы он остался в том же месте, и потом продолжил свое выполнение с заданной точки.

    Пример из жизни, человек нажал кнопку и держит ее, цилиндр идет к концевику, сработала защита, открыл дверцу и т.д.

    По сути я зная последнее состояние, можно повторить, последнее действие заново, и иметь переменную завершения процесса. Если процесс не завершен.

    Хотел спросить, но сам ответил:) .

    Еще раз спасибо.
    По сути не надо воевать с loop, нужно просто писать правильные решения.

     
  18. Alex19

    Alex19 Гуру

    Огромное спасибо nailxx, roggedhorse и Megakoteyka.
    На все вопросы, ответы получил, даже больше.

    Тему можно закрывать или оставить о нюансах Due, кто знает может кому-то будет полезна.
    Если решусь переехать, продолжу список нюансов Due.
     
  19. 1. если на ардуино дуе подать кратковременно на пин 5 вольт она сгорит?
    2, слышал что загрузчик шьют в пзу что делать если неправельно прошил?
    3. неимел дела с платами мощнее мега , мега не заполнял дже на 40 % , стоит покупать дуе?
    простите за ошибки в школе с 1 класс в корекционном теперь н домашнем
    но с ардуино на ты. а русский язык до лампочки.
    мама придурком шитает в психушку клодет в шестой раз из психушки збежал на автобус сел к бабушке приехал вечером мама нашла
    а заведующаю испугалась и выписала меня

    простите что не потеме просто угарно

    если что таблетки бросил