Arduino ide сбросить все настройки
Меню вкладок
Система вкладок в Arduino IDE работает крайне необычным образом и очень отличается от понятия вкладок в других программах, подробнее – в отдельном уроке.
5. Загрузка первого скетча
Среда настроена, плата подключена. Пора прошивать платформу.
Arduino IDE содержит большой список готовых примеров, в которых можно быстро подсмотреть решение какой-либо задачи.
Откройте распространенный пример — «Blink»: Файл Примеры 01.Basics Blink .
Откроется окно с демонстрационным примером.
Полная версия кода:
Нажмите на иконку «Компиляция» для проверки кода на ошибки.
Нажмите на иконку «Загрузка» для заливки на плату.
После прошивки платформы светодиод «L» начнёт загораться и гаснуть каждые 100 миллисекунд — в 10 раз быстрее исходной версии. Это значит, что ваш тестовый код успешно загрузился и заработал. Теперь смело переходите к экспериментам на Arduino.
Вкладка “Файл”
- Новый
- Открыть
- Открыть недавние
- Папка со скетчами – список скетчей, которые сохранены туда, куда программа предлагает их сохранять по умолчанию (Документы/Arduino)
- Примеры – список установленных библиотек с подсписком примеров к каждой.
- Закрыть
- Сохранить
- Сохранить как…
- Настройки страницы (для печати)
- Печать
- Настройки
- Выход
Ресурсы
Если не указано иное, содержимое этой вики предоставляется на условиях следующей лицензии: CC Attribution-Noncommercial-Share Alike 4.0 International
Окно настроек
- Размещение папки скетчей – куда по умолчанию сохраняются скетчи
- Показать подробный вывод – показывает подробный лог при компиляции и загрузке, нужно при поиске багов и непонятных глюков/ошибок
- Использовать внешний редактор – запрещает редактирование кода из Arduino IDE, чтобы редактировать его в других редакторах, например Notepad++. Редактируем там, а загружаем через IDE.
- Дополнительные ссылки для менеджера плат – сюда вставляются ссылки на пакеты для работы с другими платами, например такими основанными на ESP8266 или ATtiny85.
Шаг 1
Выберите версию среды в зависимости от операционной системы.
Вкладка “Скетч”
- Проверить/компилировать – то же, что кнопка “галочка”.
- Загрузка – то же, что кнопка “стрелочка”.
- Загрузить через программатор – загрузить скетч напрямую в МК через программатор.
- Экспорт бинарного файла – компилирует код и сохраняет в бинарник.
- Показать папку скетча
- Подключить библиотеку – подключает в код библиотеку.
- Управлять библиотеками… – открывает менеджер библиотек, из которого можно устанавливать библиотеки.
- Добавить .zip библиотеку – установка библиотеки из zip файла, если вы его откуда-то скачали.
Вкладка “Инструменты”
4. Настройка Arduino IDE
Для работы среды Arduino IDE с конкретной платформой необходимо выбрать название модели и номер присвоенного плате COM-порта.
Для выбора модели Arduino зайдите в меню: Инструменты Плата и укажите соответствующую плату.
Для выбора номера COM-порта перейдите в меню: Инструменты Порт и укажите нужный порт.
Поздравляем, среда Arduino IDE настроена для прошивки вашей платы.
Что-то пошло не так?
Список последовательных портов пуст? Значит, платформа некорректно подключена к компьютеру или не установлен драйвер. Вернитесь к настройке соединения между платой и ПК.
Arduino IDE тормозит при навигации по меню? Отключите в диспетчере устройств все внешние устройства типа «Bluetooth Serial». Например, виртуальное устройство для соединения с мобильным телефоном по Bluetooth может вызвать такое поведение.
3. Подключение платы Arduino к компьютеру
Соедините Arduino с компьютером по USB-кабелю. На плате загорится светодиод «ON» и начнёт мигать светодиод «L». Это значит, что на плату подано питание и микроконтроллер начал выполнять прошитую на заводе программу «Blink».
Для настройки Arduino IDE под конкретную модель узнайте, какой номер COM-порта присвоил компьютер вашей плате. Зайдите в «Диспетчер устройств» Windows и раскройте вкладку «Порты (COM и LPT)».
Операционная система распознала плату Arduino как COM-порт и назначила номер 2 . Если вы подключите к компьютеру другую плату, операционная система назначит ей другой номер. Если у вас несколько платформ, очень важно не запутаться в номерах COM-портов.
Что-то пошло не так?
После подключения Arduino к компьютеру, в диспетчере устройств не появляются новые устройства? Это может быть следствием следующих причин:
Шаг 2
Нажмите на кнопку «JUST DOWNLOAD» для бесплатной загрузки программы.
2. Запуск Arduino IDE
Запустите среду программирования.
Arduino IDE не запускается?
Вероятнее всего, на компьютере некорректно установлена JRE — Java Runtime Environment. Для решения проблемы переустановите программу.
Простой способ сделать RESET из программы + один провод.
- Войдите или зарегистрируйтесь, чтобы получить возможность отправлять комментарии
Может кому пригодится.
1. Соединяем проводом любой цифровой пин с пином Reset.
2. Запускаем скетч и убеждаемся, что оно работает. Проверял на своих Arduino Nano, работает.
- Войдите или зарегистрируйтесь, чтобы получить возможность отправлять комментарии
класический способ заресетить AVR - вызвать срабатывание watchdog
вполне вероятно нужно будет перепрошить бутлоадер на тот, который не конфликтует с собакой
но зато никакие пины тратить не нужно
- Войдите или зарегистрируйтесь, чтобы получить возможность отправлять комментарии
Пин потратить, наверное, все же проще.
- Войдите или зарегистрируйтесь, чтобы получить возможность отправлять комментарии
дело вкуса, сама необходимость ресетить под вопросом - не знаю задач при которых это нужно. Точнее не знаю задач при которых ардуину нужно ресетить из состояния когда она не зависла. В вашем варианте она может себя заресетить только если не зависла
ну и ради искусства мне видится правильнее использовать по максимуму те механихмы которые заложены в МК. Использовать пин - это городить свое поверх того, что сделал атмел
не в плане критики)) для изучения МК - почему бы и нет.
- Войдите или зарегистрируйтесь, чтобы получить возможность отправлять комментарии
Watchdog + перепрошивка бутлодера, конечно же, наилучший вариант.
- Войдите или зарегистрируйтесь, чтобы получить возможность отправлять комментарии
Дело в том, что у меня периодически хитрым образом зависает связка из Ардуино, УЗ датчика, радиомодуля и проч.
Возникла мысль раз в сутки ресетить это дело и понаблюдать, поможет ли.
- Войдите или зарегистрируйтесь, чтобы получить возможность отправлять комментарии
Если виснит сама ардуина, то как она сможет себя перезагрузить?
- Войдите или зарегистрируйтесь, чтобы получить возможность отправлять комментарии
Если виснет сама Ардуина, то она не сможет себя перезагрузить, и мы, смею надеяться, оба это понимаем.
Речь идет о случае, когда [возможный] источник траблов - подключенные к Ардуине устройства и ресет несет чисто профилактическую функцию.
- Войдите или зарегистрируйтесь, чтобы получить возможность отправлять комментарии
Если виснет сама Ардуина, то она не сможет себя перезагрузить, и мы, смею надеяться, оба это понимаем.
Речь идет о случае, когда [возможный] источник траблов - подключенные к Ардуине устройства и ресет несет чисто профилактическую функцию.
если виснет переферия, то ресет ардуины врядли чем-то поможет (разве что чудным образом перехапуск портов скажется благотворно)
я потому и спрашивал про зависания, значит все-таки есть повод подумать о watchdog?
- Войдите или зарегистрируйтесь, чтобы получить возможность отправлять комментарии
Еще можно ресетить вот так:
Только resetFunc() в лупе вызывать по ифу (какое либо событие, либо по таймеру или с использованием RTC)
- Войдите или зарегистрируйтесь, чтобы получить возможность отправлять комментарии
1. Соединям проводом любой цифровой пин с пином Reset.
Это надо в FAQ, в раздел - "Как делать нельзя!".
Думаю, догадыватесь почему.
- Войдите или зарегистрируйтесь, чтобы получить возможность отправлять комментарии
Сам бы я не стал соединять выходы МК с его же ресетом, но если честно не понимаю почему это может быть запрещено
- Войдите или зарегистрируйтесь, чтобы получить возможность отправлять комментарии
"I've used this technique before just to see if it worked and it seemed useful. One comment though is that i would recommend using a resistor in there. Sending a high signal straight to the Reset pin could cause a short circuit and fry your chip. Not sure what would work better though, a pull up resistor from the reset pin to high, and allowing the "resetPin" to pull it low, or just placing a resistor between the two points."
Наверное, стоит ставить резистор.
- Войдите или зарегистрируйтесь, чтобы получить возможность отправлять комментарии
Для самого МК по барабану что у него на RESET подключен другой пин. Если не програмировать специальный режим (типа RSTDISBL или DWEN) reset работает только на вход и ни с чем не закоротит. Парень который написал английскую фразу не вникал в детали
Другое дело, что reset используется при програмировании и либо подключен к внешнему програматору через ISP либо подключен в случае ардуины к схеме согласования с USB. Вот тут как раз и может быть проблема. Например на UNO R3 reset подключен к atmega16u2 через конденсатор (http://arduino.cc/en/uploads/Main/Arduino_Uno_Rev3-schematic.pdf), значит никакого замыкания не произойдет. На какой-то другое плате может и "закоротить" - два выходы в противофазе могут привести к выходу чего-то из строя
- Войдите или зарегистрируйтесь, чтобы получить возможность отправлять комментарии
причем тут это. так делать нельзя, т.к. неопределена физика процесса. Вы ставите ноль в порт, который настроен на выход и при старте заводите туда единицу. Так вот, когда выводим ноль, при снижении до определенного уровня - МК начинает уходить в сброс. При этом этот же управляющий пин автоматически становиться ВХОДОМ без подтяжки, всё, нуля нет. и нет единицы. точнее она начинает появляться от внешнего резистора. Т.е. выход из сброса. при каких напругах там это всё происходит можно замерить, но не факт, что процедура сброса пройдет до конца. если у человека работает такой не правильный вариант, то лучше все равно так не делать, не факт что он сработает где-то далеко в тысячный раз. и вас не вспомнят тихим словом. )))
- Войдите или зарегистрируйтесь, чтобы получить возможность отправлять комментарии
причем тут это. так делать нельзя, т.к. неопределена физика процесса.
по мне все понятно - в даташите поцедура рестарта расписана, специально сейчас перечитывал. МК уходит в ресет если на ресет пин подать ноль "достаточной длительности, в противном случае перезапуск не гарантирован" - так написано в даташите.
Физика простая - МК сам себе выставляет ноль и сбросит пин выставивший ноль только если произогла процедура ресет, т.е. при такой логике МК гарантировано получает ресет импульс достаточной длительности.
нет здесь ничего неправильного. Я повторюсь - просто не вижу практического применения такому подходу
- Войдите или зарегистрируйтесь, чтобы получить возможность отправлять комментарии
так нет же. выставляя ноль на ресет, просто регистры портов обнуляются т.к. линия одна, но этодалеко не вся процедура ресета.
- Войдите или зарегистрируйтесь, чтобы получить возможность отправлять комментарии
Я не понимаю о чем вы пишите. Можете сослаться на раздел даташита в котором вы увидели проблему?
- Войдите или зарегистрируйтесь, чтобы получить возможность отправлять комментарии
какая проблема? у меня нема проблем. Вы же сами написали, что
"если на ресет пин подать ноль "достаточной длительности, в противном случае перезапуск не гарантирован" - так написано в даташите."
ну так вот сами и скажите, время после установки нуля в порт и установка портов в начальное положение достаточное?
я сколько мк мучаю, везде для таких целей применяют схему аля "формирователь импульса". думаете зря?
- Войдите или зарегистрируйтесь, чтобы получить возможность отправлять комментарии
я сколько мк мучаю, везде для таких целей применяют схему аля "формирователь импульса". думаете зря?
я понял, нет смысла продолжать. Вы так думаете только потому, что где-то что то читали. Не нужны современным МК никакие специальные схемы с формирователем импульса, по крайней мере для обычного применения.
- Войдите или зарегистрируйтесь, чтобы получить возможность отправлять комментарии
Я так понимаю это требуется тогда, когда ардуинка без присмотра годами работает.
В этом случае, чтобы например избежать переполнения таймера или перезапустить зависшие железяки желательна программная перезагрузка- Войдите или зарегистрируйтесь, чтобы получить возможность отправлять комментарии
для этих целей придуман watchdog, вот его и надо использовать
- Войдите или зарегистрируйтесь, чтобы получить возможность отправлять комментарии
В этом случае, чтобы например избежать переполнения таймера или перезапустить зависшие железяки желательна программная перезагрузка
Переполнения таймера вряд ли стоит бояться (он сбросится в нуль [?]), а вот перезапускаются ли в этом случае зависшие железяки - для меня это остается под вопросом.
У меня на релейном модуле есть одно незадействованное реле, есть мысль пустить питание через его НЗ контакты и периодически программно срабатывать реле, вызывая перезагрузку всех-всех.
- Войдите или зарегистрируйтесь, чтобы получить возможность отправлять комментарии
На таймер обычно много чего завязано в виде отсчета времени.
Т.е. либо нужно везде в коде делать контроль обнуления таймера, либо перегружать периодически
Если этого не сделать, то запросто пауза может неприлично затянуться :-)У меня на релейном модуле есть одно незадействованное реле, есть мысль пустить питание через его НЗ контакты и периодически программно срабатывать реле, вызывая перезагрузку всех-всех.
Хороший способ на первый взгляд. жестковато, зато надежно
- Войдите или зарегистрируйтесь, чтобы получить возможность отправлять комментарии
а зачем пин использовать, если можно в программе просто прыгнуть на 0 адрес, где вектор сброса?
- Войдите или зарегистрируйтесь, чтобы получить возможность отправлять комментарии
а зачем пин использовать, если можно в программе просто прыгнуть на 0 адрес, где вектор сброса?
Судя по описанию из даташита это не одно и тоже
- Войдите или зарегистрируйтесь, чтобы получить возможность отправлять комментарии
- Войдите или зарегистрируйтесь, чтобы получить возможность отправлять комментарии
к ардуино мега 2560 подключен модуль НС-05. установлен коннект с другим блютуз устройством. идет интенсивный прием данных. нужно разорвать коннект. программно не получается. из-за занятости приемом информации команда AT+DISC не отрабатывается. даже после ресета ардуино путем нажатия кнопки ресет НС-05 остается в состоянии коннекта. нужно только выключать питание ардуино.
можно ли решить эту проблему программно?
- Войдите или зарегистрируйтесь, чтобы получить возможность отправлять комментарии
Отключай питание у HC-05, зачем ардуину-то ресетить?
- Войдите или зарегистрируйтесь, чтобы получить возможность отправлять комментарии
отключение питания только у нс-05 ни к чему не приводит. модуль остается в состоянии коннекта.
- Войдите или зарегистрируйтесь, чтобы получить возможность отправлять комментарии
Невероятный случай - работа электронной схемы без питания.
- Войдите или зарегистрируйтесь, чтобы получить возможность отправлять комментарии
отключение питания только у нс-05 ни к чему не приводит. модуль остается в состоянии коннекта.
- Войдите или зарегистрируйтесь, чтобы получить возможность отправлять комментарии
отключение питания только у нс-05 ни к чему не приводит. модуль остается в состоянии коннекта.
- Войдите или зарегистрируйтесь, чтобы получить возможность отправлять комментарии
исходное состояние - миндфлекс гарнитура с блютуз модулем и ардуино мега с блютуз модулем.
светодиоды на обоих модулях часто мигают.
модуль ардуины инициирует и устанавливает коннект с модулем гарнитуры и начинает принимать данные от гарнитуры. оба светодиода мигают так - две коротких вспышки и примерно пару секунд пауза.
отключаю модуль при ардуино. модуль при гарнитуре начинает часто мигать как в свободном не связанном ни с кем состоянии.
подключаю модуль к ардуино - характер мигания светодиода такой - длительный период свечения и длительная пауза. частого мигания как при свободном не связанном состоянии нет. скетч вроде как перегрузился но экран белый. работать все начинает только после переподачи питания на ардуино.
а если отключить гарнитуру то диод при ардуине начинает мигать часто. т.е коннект потерян и модуль свободен и перезагрузка программы проходит нормально.
Сначала рассмотрим общий вид программы, т.е. как она выглядит после запуска. В самом центре – блокнот, то самое место, где пишется код. По умолчанию уже написаны два стандартных блока, setup() и loop(). К ним вернёмся в разделе уроков программирования. Всё остальное можно увидеть на скриншоте ниже.
Пробежимся по пунктам меню, которые я считаю первостепенно важными, с остальными можно познакомиться самостоятельно по ходу работы с программой. Версия моей IDE – 1.8.8, в новых что-то может отличаться
1. Установка Arduino IDE под Windows
Установите на компьютер интегрированную среду разработки Arduino IDE.
Последняя стабильная версия всегда доступна на нашем сайте.
Аналоги Arduino IDE
Всем нетерпимо относящимся к кривой официальной IDE могу посоветовать следующие аналоги, работа в которых чем-то лучше, а чем-то хуже официальной IDE:
Судя по тому, что ide заливает новый скетч прямо при работе пользовательского кода, оно как то делает ресет. Но судя по схеме (nano) такая возможность не предусмотрена. Тогда как? И главное - как это сделать самому?
ps. может там на usb просто есть возможность питание отключать через драйвер?
- Войдите или зарегистрируйтесь, чтобы получить возможность отправлять комментарии
IDE ресет не делает. Ресет делает мелкосхема USB-UART. А первым стартует загрузчик.
- Войдите или зарегистрируйтесь, чтобы получить возможность отправлять комментарии
Но судя по схеме (nano) такая возможность не предусмотрена.
По какой схеме? Разных вариаций ардуин существует множество. От оригинальной до разных китайских клонов.
Обычно предусмотрено. От ножки DTR микросхемы USB-UART преобразователя через конденсатор 0.1uf на ножку RESET микроконтроллера.- Войдите или зарегистрируйтесь, чтобы получить возможность отправлять комментарии
А вот да, нашел схему где разведен dtr. А на другой схеме он в воздухе висел. Не знал, что там все по разному бывает, попробую dtr дернуть
- Войдите или зарегистрируйтесь, чтобы получить возможность отправлять комментарии
IDE ресет не делает. Ресет делает мелкосхема USB-UART. А первым стартует загрузчик.
т.к. платформа не была конкретизирована, спрошу, а как же Леонардо делает ресет?
у меня есть предположение, но хотелось бы уточнить.
- Войдите или зарегистрируйтесь, чтобы получить возможность отправлять комментарии
т.к. платформа не была конкретизирована, спрошу, а как же Леонардо делает ресет?
у меня есть предположение, но хотелось бы уточнить.
"Но судя по схеме (nano) такая возможность не предусмотрена" - воспринял как 168/328 Atmega.
Как делает Леонардо не знаю и даже в руках не держал.))))- Войдите или зарегистрируйтесь, чтобы получить возможность отправлять комментарии
Все даже проще оказалось, каждое открытие устройства COM под виндой и так уже дергает DTR и приводит к ресету.
Это объясняет заодно почему мне не удавалось управлять прошивкой через "echo x >com5", она ресетилась каждый раз
- Войдите или зарегистрируйтесь, чтобы получить возможность отправлять комментарии
Все даже проще оказалось, каждое открытие устройства COM под виндой и так уже дергает DTR и приводит к ресету.
Это объясняет заодно почему мне не удавалось управлять прошивкой через "echo x >com5", она ресетилась каждый раз
если это не отключить в инициализации, то да
- Войдите или зарегистрируйтесь, чтобы получить возможность отправлять комментарии
Все даже проще оказалось, каждое открытие устройства COM под виндой и так уже дергает DTR и приводит к ресету.
Это объясняет заодно почему мне не удавалось управлять прошивкой через "echo x >com5", она ресетилась каждый раз
А почему тогда МК не ресетится при открытии монитора порта? Ведь тоже порт юзается так же как и при заливке скетча!
1. Заливаю скетч - идёт открытие порта - ресет - заливка - работе скетча.
2. открываю монитор порта - ( тут выходит открытия ком порта не происходит) - кидаю туда символы - ресета нет естественно. НО почему?
- Войдите или зарегистрируйтесь, чтобы получить возможность отправлять комментарии
Все даже проще оказалось, каждое открытие устройства COM под виндой и так уже дергает DTR и приводит к ресету.
Это объясняет заодно почему мне не удавалось управлять прошивкой через "echo x >com5", она ресетилась каждый раз
А почему тогда МК не ресетится при открытии монитора порта? Ведь тоже порт юзается так же как и при заливке скетча!
1. Заливаю скетч - идёт открытие порта - ресет - заливка - работе скетча.
2. открываю монитор порта - ( тут выходит открытия ком порта не происходит) - кидаю туда символы - ресета нет естественно. НО почему?
мк ресетится, а вот буфер СH340 не очищается, так как понятия не имеет, что мк ресетнулся
- Войдите или зарегистрируйтесь, чтобы получить возможность отправлять комментарии
Все даже проще оказалось, каждое открытие устройства COM под виндой и так уже дергает DTR и приводит к ресету.
Это объясняет заодно почему мне не удавалось управлять прошивкой через "echo x >com5", она ресетилась каждый раз
А почему тогда МК не ресетится при открытии монитора порта? Ведь тоже порт юзается так же как и при заливке скетча!
1. Заливаю скетч - идёт открытие порта - ресет - заливка - работе скетча.
2. открываю монитор порта - ( тут выходит открытия ком порта не происходит) - кидаю туда символы - ресета нет естественно. НО почему?
мк ресетится, а вот буфер СH340 не очищается, так как понятия не имеет, что мк ресетнулся
ничего не понял про буфер.
- Войдите или зарегистрируйтесь, чтобы получить возможность отправлять комментарии
ничего не понял про буфер.
Вам про ком порт почитатать, хардовый, со всеми сигналами TX-RX RTS-CTS DTR-DSR . и как добраться из монитора (DATA) к этим управляющим сигналам
- Войдите или зарегистрируйтесь, чтобы получить возможность отправлять комментарии
У меня ресетится nano при открытии монитора в IDE.
Прошиваем стандартный блинк, чтоб раз 5 в секунду мигал, открываем монитор - все на секунду замирает
- Войдите или зарегистрируйтесь, чтобы получить возможность отправлять комментарии
У меня ресетится nano при открытии монитора в IDE.
Прошиваем стандартный блинк, чтоб раз 5 в секунду мигал, открываем монитор - все на секунду замирает
Опа, а у меня не происходит этого ( в принципе и не надо). Что мы делаем не так?
- Войдите или зарегистрируйтесь, чтобы получить возможность отправлять комментарии
1. Заливаю скетч - идёт открытие порта - ресет - заливка - работе скетча.
2. открываю монитор порта - ( тут выходит открытия ком порта не происходит) - кидаю туда символы - ресета нет естественно. НО почему?
Точно? У меня не так.
1. Работает ардуина.
2. Закрываю монитор порта
3. Ардуина продолжает работу
4. Открываю монитор порта
5. Ардуина перезагружается.Что я не так делаю?
- Войдите или зарегистрируйтесь, чтобы получить возможность отправлять комментарии
Я правильно понимаю, что речь идёт про IDE на "микромягких окнах"? Или с линукса кто-то тоже пробовал? А то я-то на работе на убунте сижу, с ардуинкой все свои дела там делаю.
- Войдите или зарегистрируйтесь, чтобы получить возможность отправлять комментарии
2. открываю монитор порта - ( тут выходит открытия ком порта не происходит) - кидаю туда символы - ресета нет естественно. НО почему?
- Войдите или зарегистрируйтесь, чтобы получить возможность отправлять комментарии
на маке тоже перезагружается при открытии монитора
- Войдите или зарегистрируйтесь, чтобы получить возможность отправлять комментарии
На линьке так же
- Войдите или зарегистрируйтесь, чтобы получить возможность отправлять комментарии
1. Заливаю скетч - идёт открытие порта - ресет - заливка - работе скетча.
2. открываю монитор порта - ( тут выходит открытия ком порта не происходит) - кидаю туда символы - ресета нет естественно. НО почему?
Точно? У меня не так.
1. Работает ардуина.
2. Закрываю монитор порта
3. Ардуина продолжает работу
4. Открываю монитор порта
5. Ардуина перезагружается.Что я не так делаю?
вы не настроили компорт, если настроить "правильно" ресетится не будет.
к примеру к компорту подключено радиопередающее устройство, DTR или CTS линии - разрешение
на передачу и будет каждый раз при старте ОСИ самопроизвольное (неконтролируемое) включение,
в этом случае оно точно не надо, видимо ТС тоже радиопопуляризатор )))- Войдите или зарегистрируйтесь, чтобы получить возможность отправлять комментарии
Ну так это смотря какой эмулятор.) У меня на Win не перегружается.
К примеру скетч с выводом в терминал работает круглосуточно.
И что ж теперь терминал держать постоянно включенным! Непорядок.- Войдите или зарегистрируйтесь, чтобы получить возможность отправлять комментарии
Ну так это смотря какой эмулятор.) У меня на Win не перегружается.
К примеру скетч с выводом в терминал работает круглосуточно.
И что ж теперь терминал держать постоянно включенным! Непорядок.Юзаю монитор, который с IDE. Ничего специально не настраивал.
Т.е. вопрос так и не выяснили, к тому же дабавился ещё один, почему у одним монитор ресетит , а у других нет?
И что это за настройки?
- Войдите или зарегистрируйтесь, чтобы получить возможность отправлять комментарии
Юзаю монитор, который с IDE. Ничего специально не настраивал.
Т.е. вопрос так и не выяснили, к тому же дабавился ещё один, почему у одним монитор ресетит , а у других нет?
И что это за настройки?
Ресетит линией DTR. Настройки- Hardware Flow Control. Если отключить, то должна больше не ресетить.
- Войдите или зарегистрируйтесь, чтобы получить возможность отправлять комментарии
Юзаю монитор, который с IDE. Ничего специально не настраивал.
Т.е. вопрос так и не выяснили, к тому же дабавился ещё один, почему у одним монитор ресетит , а у других нет?
И что это за настройки?
Ресетит линией DTR. Настройки- Hardware Flow Control. Если отключить, то должна больше не ресетить.
Щас глянул у себя - сия настройка стоит в НЕТ. Тогда опять вопрос, почему же при заливке скетча ресет есть?
Или IDE сама временно корректирует эту вещь в "АППАРАТНОЕ", чтобы сбросить МК перед заливкой, а монитор порта настройку не меняет и открывает порт как есть. ТАК?
- Войдите или зарегистрируйтесь, чтобы получить возможность отправлять комментарии
Щас глянул у себя - сия настройка стоит в НЕТ. Тогда опять вопрос, почему же при заливке скетча ресет есть?
Или IDE сама временно корректирует эту вещь в "АППАРАТНОЕ", чтобы сбросить МК перед заливкой, а монитор порта настройку не меняет и открывает порт как есть. ТАК?
Аппаратный Flow Control это когда линия DTR дергаются автоматически при открытии порта. Но никто не запрещает программе дернуть ее "вручную".
- Войдите или зарегистрируйтесь, чтобы получить возможность отправлять комментарии
Щас глянул у себя - сия настройка стоит в НЕТ. Тогда опять вопрос, почему же при заливке скетча ресет есть?
Или IDE сама временно корректирует эту вещь в "АППАРАТНОЕ", чтобы сбросить МК перед заливкой, а монитор порта настройку не меняет и открывает порт как есть. ТАК?
Аппаратный Flow Control это когда линия DTR дергаются автоматически при открытии порта. Но никто не запрещает программе дернуть ее "вручную".
Ну тогда наверное ясно всё. IDE при открытии порта - дёргает DTR в обязательном порядке, а монитор просто открывает и тогда в зависимости от настроек потока - DTR задействуется или нет.
Вроде не сложно, но почему то до сих пор этой инфы про ардуину нигде не было!
- Войдите или зарегистрируйтесь, чтобы получить возможность отправлять комментарии
Щас глянул у себя - сия настройка стоит в НЕТ. Тогда опять вопрос, почему же при заливке скетча ресет есть?
Или IDE сама временно корректирует эту вещь в "АППАРАТНОЕ", чтобы сбросить МК перед заливкой, а монитор порта настройку не меняет и открывает порт как есть. ТАК?
Аппаратный Flow Control это когда линия DTR дергаются автоматически при открытии порта. Но никто не запрещает программе дернуть ее "вручную".
Ну тогда наверное ясно всё. IDE при открытии порта - дёргает DTR в обязательном порядке, а монитор просто открывает и тогда в зависимости от настроек потока - DTR задействуется или нет.
Вроде не сложно, но почему то до сих пор этой инфы про ардуину нигде не было!
ни под виндами ни под Линукс дёрганье IDE пином DTR при открытии монитора порта не зависит от установок настроек управления потоком!
- Войдите или зарегистрируйтесь, чтобы получить возможность отправлять комментарии
- Войдите или зарегистрируйтесь, чтобы получить возможность отправлять комментарии
ООО спасибо. Работает. Скажи пожалуйста откуда ты узнал про это? Я весь инет перерыл прежде чем написать суда! Может есть место где всё более детально описано про arduino? (кроме оф сайта)
- Войдите или зарегистрируйтесь, чтобы получить возможность отправлять комментарии
Кстати да, если не трудно - объясните эту магию :)
Для людей не испорченных глубоким знанием C, что вообще происходит в этом коде?
- Войдите или зарегистрируйтесь, чтобы получить возможность отправлять комментарии
На самом деле ето не настоящий резет а просто перевод стека в начало програмного кода (в нулевой адрес). Тоесть программа начинает исполнятся с самого начала, при етом не влияя на установки МК на момент исполнения. Например: Если у вас на момент исполнения был установлен какой то порт в "1" и в начале программы его значение не возвращается в "поумолчанию = 0" то после так званой "програмной перезагрузки" порт так и останеться с "1".
Если попроще то вот для визуальной демонстрации:
если ничего не слать в порт то результатом будет двойное мигание светодиодом после продолжытельной паузы.
если же послать чтото, то перед перезагрузкой выход 13 установится в "1" и светодиод будет гореть даже после перезагрузки и до момента его го выключения (11й ряд).
Поетому используя даную функцию необходимо быть внимательным и заведомо устанавливать нужные значения.
Ну а если нужен самый настоящий резет то (наверно, в теории, хотя сам не пробовал) програмно прижымать пин Reset к земле другим пином.
- Войдите или зарегистрируйтесь, чтобы получить возможность отправлять комментарии
весь инет перерыл прежде чем написать суда! Может есть место где всё более детально описано про arduino? (кроме оф сайта)
Кстати уже в сотый раз убедился что от правильно поставленого вопроса зависит возможность получения правильного ответа. Если погуглить "arduino reset function" то почти сразу наткнетесь на тоже и еще + несколько вариантов.
- Войдите или зарегистрируйтесь, чтобы получить возможность отправлять комментарии
avr write flash memory или
"avr flash запись" в Яндексе - и DiHalt вам популярно объяснит, как записать что-нибудь поверх существующей программы.
- Войдите или зарегистрируйтесь, чтобы получить возможность отправлять комментарии
Ну а если нужен самый настоящий резет то (наверно, в теории, хотя сам не пробовал) програмно прижымать пин Reset к земле другим пином.
ATMEL не советует делать это, поскольку метод не дает стабильных результатов.
подача сигнала на reset-ногу приводит к запуску цикла инициализации, НО - первым делом производится инициализация всех I/O-выводов в качестве входов. Низкий уровень на RESET при этом естественным образом пропадает - слишком рано для полноценной отработки процесса инициализации.
watchdog - для AVR это магическое слово (а по совместительству еще и таймер), позволяющее автоматически перезапустить МК в случае зависания программы (ну или целенаправленно - если возникает такое желание).
Однако, при "полноценном" ресете необходимо помнить, что он запустит и бутлоадер, который, в свою очередь, в определенных условиях может решить, что настал момент для перезаписи программы, и .
- Войдите или зарегистрируйтесь, чтобы получить возможность отправлять комментарии
step962, у меня возникли некоторые вопросы, разЪясните, пожалуйста:
1. Для чего сначала отключаем затем включаем watchdog?
2. По-умолчанию данный таймер отключен?
3. Играет ли какую-нибудь роль, что происходит в теле цикла? наприер:
pin в течении 15 мс меняется, произойдет сброс?
- Войдите или зарегистрируйтесь, чтобы получить возможность отправлять комментарии
1. Возможно необязательно. Без wdt_disable не проверял. Но, поскольку ватчдог имеет три режима работы, могу предположить, что для корректного переключения этих режимов требуется отключение таймера на время проведения работ.
3. Роль играет только своевременное выполнение инструкции сброса сторожевого таймера (макрос "wdt_reset()"). Если таковая не вызывается в течение времени, на которое настроен сторожевой таймер (от 15 мс до 8 с), то происходит сброс системы или генерация прерывания или прерывание+сброс системы - в зависимости от режима, в котором работает таймер. Так что
pin в течении 15 мс меняется, произойдет сброс?
pin в течении 15 мс меняется, произойдет сброс.
- Войдите или зарегистрируйтесь, чтобы получить возможность отправлять комментарии
Кто-нибудь разоборался со сторожевым таймером? Может, кто-нибудь поделится готовым скетчем?
У меня следующая проблема: есть ардуина с датчиком и беспроводным модулем (эдакий беспроводной датчик). Система работает некоторое время (случайная величина, обычно несколько часов работает нормально, но потом вешается). Нажатие на кнопку RESET - полностью нормализует работу до следующего "зависона".
Как понимаю, сторожевой таймер - это "то, что доктор прописал". Логику действий понимаю так:
1. Деактивируем сторожевой таймер (в функции setup)
2. задаем значение сторожевому таймеру (setup) - даем значение времени, несколько большее длительности основного цикла.
3. активируем сторожевой таймер (setup)
4. сбрасываем сторожевой таймер (уже в функции loop)
соответственно, если программный сброс сторожевого таймера не произошел (из-за "зависания") - сторожевой таймер ребутнет контроллер и все пойдет заново.
- Войдите или зарегистрируйтесь, чтобы получить возможность отправлять комментарии
По умолчанию он выключен. Когда мы его "активируем" (в setup) он начинает тикать, и увеличивать свой внутрений регистр. Когда он "переполнится" - происходит ресет (или вызывается указанная вами функция, как сконфигурите). Поэтому нужно его регулярно "обнолять". Где-нибудь в loop(). Говорить ему "все хорошо, скетч работает". С какой скоростью он "тикает" - зависет от тактовой частоты и пред-делителей.
Вообщем сериал Lost смотрели? Помните там мужичек сидель годами в бункере и каждые несколько часов нажимал кнопку что-бы мир не возрвался? Сбрасывал таймер. Вот у нас тоже самое. "бомба" - это сторожевой таймер, мужичек - наш скетч. Разница только в том, что кнопку "начать отсчет заново" мы можем нажать когда хотим, а он мог только в последний момент :)
Конкретно как его конфигурировать (какие порты, какие биты за что отвечают) - читать даташит.
Вообщем скетч должен выглядеть примерно так:
ОСТОРОЖНО! ОН МОЖЕТ ПОЛОМАТЬ ЗАЛИВКУ НОВЫХ СКЕТЧЕЙ. Заблокировать вашу дуину. Дочитайте до конца.
К сожалению, арудино бутлоадеры имеют "большие проблемы" с этой собакой. При ресете она не деактивируется. Поэтому ее нужно побыстрому запретить в самом начале setup(). И рекомендуют ставить "отсчет" не меньше двух секунд, что-бы бутлоадер успел отработать до "очередной сработки" и скетч начал выполнятся. Иначе мы получаем бесконечный ребут и незвозможность заливать скетчи.
С этим имели проблему старые бутлоадеры, потом это "починили", а в свежих версиях arduino mega, как говорят в комментах (и мой опыт) - опять "поломали". Он начинает тикать "очень быстро" и даже не успевает дойти до setup()
Лечится через вырубание питания и зажатия ресета, подруб питания и отпускание ресета в момент заливки.
Но, естественно толку "в таком виде" - от него нет. Использовать - нельзя (по крайней мере на моей mega1280). Вроде есть фиксы бутлоадера для этого, но пока он мне не настолько нужен что-бы лезть в перешивку бутлоадера.
Так что "используйте преведенный скетч" на свой страх и риск. Лично у меня получается выводить плату из бесконечного ребута "легко", но гарантировать что так будет и на вашей плате - я не могу. Впрочем может у вас вообще не будет этого лока.
Рассмотрим начало работы с Arduino IDE в операционной системе Windows на примере Uno. Для других плат разница минимальна — эти особенности перечислены на страницах описания конкретных плат.
Читайте также: