Здравствуйте. Интересует следующий вопрос. Работаю с http://amperka.ru/collection/boards/product/arduino-mega-2560 вынужден переехать на http://amperka.ru/collection/boards/product/arduino-due Какие проблемы меня ждут после переезда? Слышал о необходимости подправлять сторонние библиотеки. На сколько это сложно? Может, что-то еще? Слышал, что к Mega-е можно подключить 2 Mega-у между собой, можно ли подключать Due + Mega и Due + Due?
Добрый! На самом деле вся разница — мелочи жизни за исключением одного большого «но». Для Due — родное напряжение — 3.3 В, поэтому периферию нужно выбирать с этим учётом. Подача сигнала в 5 В на вход Due ничем хорошим не закончится. Поэтому, Due + Due можно подружить проводками, а вот для коммуникации Due + Mega придётся изобретать нечто, выравнивающее уровни. Например, если хотите между ними I²C нужно будет делать посредник на базе Si8400. Ну и да, Due — 32 битная система. Если для сторонней библиотеки битность критична и не была учтена (вполне вероятный сценарий), её придётся дорабатывать, избавляя от глюков. С встроенными библиотеками AFAIK на настоящий момент всё в порядке.
Спасибо, за ответ. Да я читал, для меня это не проблема А вот по коду пока не понятно Download Arduino 1.5 BETA (with support for Arduino Due Board) http://arduino.cc/en/Main/Software Вот это сильно смущает, BETA это значит они еще отлаживают. А в стабильных нет поддержки Due. Это как я понимаю, надо будет освоить C++?
Про 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 был когда им уже полпланеты пользовалось. Так что всё относительно.
Спасибо, за развернутый ответ. Печально, C++ ни когда не использовал, в основном С# от Dot.net. А это очень разные вещи. Beta, просто в программах, всегда обхожу. За редким исключением, если хочется поиграться, а вариантов нет. Вот думаю, смогу, ли я осилить или нет. Посмотрю еще по форумам, может не так страшен, черт как его малюют.
Возможно кому-то она будет она тоже будет интересна. Официальный форум 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 Пока, я немного огорчен .
Все достаточно просто. С Uno не довелось работать, а Mega имеет только 6 прерываний, в отличии от Due. У Due как я понял есть возможность, объявить прерывание на любой цифровой ножке. + Due быстрее, а мне вероятно придется, по таймеру смотреть на состояние аналоговых входов. Вот и все различия для меня. + Через неделю, другую моя Mega, уйдет на станок и я останусь без платы. Думал взять что-то поновее, для тестов + если удастся восстановить для лаборатории литиевую машину Arburg, делать на этой плате(платах). К примеру дверка открывается, машина останавливается, не важна в каком шаге она находится и т.д. и т.п., и там таких защит около 10-15. Вообщем проект большой и медленный, так как человек который может рассказать о машине почти всегда занят. Начал рыть, есть прерывания по таймеру, но не уверен, что мне они подойдут. Вообщем буду изучать, пока с Due, я решил повременить
В этой таблице http://arduino.cc/en/Hacking/PinMapping2560 в колонке Pin name указаны Alternate functions для пинов. У некоторых из них вы встретите PCINTnn, что означает, что пин может служить источником прерывания. Таким образом 24 внешних источника прерываний А обработчик Pin Change Interrupts достаточно прост ADC меги затрачивает какое-то время на преобразование уровня напряжения на аналоговой ноге (или на двух в диффрежиме) в цифровое значение. Время "оцифровки" колеблется от 13 до 260 микросек и зависит от настроек ADC. ADC Due "успевает" выполнить преобразование за 1 микросек. Что, конечно, гораздо быстрее. Но мой собственный опыт подсказывает, что для большинства задач Mega вполне применима.
Огромное спасибо, буду разбираться. Для меня пока только Mega, у Uno мало выходов, Due пока боюсь, но очень хочется .
Кстати, вы можете использовать ADC Conversion Complete Interrupt Прерывание сообщит вам о завершении преобразования. Соответственно, от начала преобразования и до ADC CCInterrupt вы (МК) можете заниматься другими делами. Правда, в таком случае вам придется отказаться от использования стандартной analogRead Но это способ как делать на "медленной" Мега больше и быстрее
Я уже почти отказался от Due. Как для тестового стенда, мне не нужна такая скорость, поэтому Mega. А вот для станка, нужно получить реакцию на прерывание и выполнение простого кода не более 0,1-0,05 сек. Если не получится уложиться или несколько Meg или куплю отдельно под него Due, когда соберется силовая электроника, проверю, а там буду смотреть. Еще раз, спасибо. Буду разбираться.
Буду в курсе, пока мне такое не надо. Пока наоборот пытаюсь, сделать. Вою с loop, чтобы он останавливался в нем и ждал следующей команды, при этом не начиная новый loop. Их куча, поэтому не могу
Скорость реакции на прерывание менее 400 наносек (0. 000 000 4 сек) Другой вопрос, что вероятно вам потребуется выполнять некоторые вычисления чтобы отреагировать на изменение внешних факторов согласно вашей задаче/цели. Но, вот например, вычисление расстояния между двумя географическими точками на земном шаре на Меге выполняются за сотню микросекунд (0.000 1 сек). То есть у вас огромный запас вычислительных мощностей. Однако, только при условии его разумного использования P.S. переход с Mega на Due гораздо проще когда вы хорошо знакомы с Mega
Буду грызть гранит науки, надеюсь удастся. Нет, просто подать сигнал на 1 порт, и установить значение переменой, чтобы все, остановить. Моно пишется в интернете, что они медленные. Поэтому не ставил серьезных решений, по сути все мои рабочие задачи, простые автоматы. С большим кол-вом выходов и ветвлением. И соединением с компьютером. Но вы заставили меня по новому взглянуть на Ardunio. Я его вчера хотел заказать в Амперке, но как начал разбирается, то понял, что библиотек многих нет. Затем выяснилось, что 3,3 это вовсе не ерунда, как мне тогда казалось (я пока, практически не знаком с электроникой). Поэтому для стенда она не очень, клавиатуры, мониторы и т.д. надо подбирать учитывая это напряжение.
Вам нужен конечный автомат: Код (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 на следующий шаг.
Спасибо, я решил, способом куда суровее. Воспользуюсь вашей добротой, а в принципе, как остановить выполнение loop, чтобы он остался в том же месте, и потом продолжил свое выполнение с заданной точки. Пример из жизни, человек нажал кнопку и держит ее, цилиндр идет к концевику, сработала защита, открыл дверцу и т.д. По сути я зная последнее состояние, можно повторить, последнее действие заново, и иметь переменную завершения процесса. Если процесс не завершен. Хотел спросить, но сам ответил . Еще раз спасибо. По сути не надо воевать с loop, нужно просто писать правильные решения.
Огромное спасибо nailxx, roggedhorse и Megakoteyka. На все вопросы, ответы получил, даже больше. Тему можно закрывать или оставить о нюансах Due, кто знает может кому-то будет полезна. Если решусь переехать, продолжу список нюансов Due.
1. если на ардуино дуе подать кратковременно на пин 5 вольт она сгорит? 2, слышал что загрузчик шьют в пзу что делать если неправельно прошил? 3. неимел дела с платами мощнее мега , мега не заполнял дже на 40 % , стоит покупать дуе? простите за ошибки в школе с 1 класс в корекционном теперь н домашнем но с ардуино на ты. а русский язык до лампочки. мама придурком шитает в психушку клодет в шестой раз из психушки збежал на автобус сел к бабушке приехал вечером мама нашла а заведующаю испугалась и выписала меня простите что не потеме просто угарно если что таблетки бросил