Ламерский вопрос: нужно ли стирать старый скетч?

mims
Offline
Зарегистрирован: 09.01.2017

Привет честной компании от очередного чайника!

Вопрос, собственно, вот в чем: я собрал схему, написал для нее скетч, загрузил - все нормально. Отключаю USB-кабель, собираю новую схему, пишу скетч, подсоединяю USB... и сразу начинает работать предыдущая программа. 

Я, конечно, чайник, но кажется мне, что это неправильно. Может существуют какие-то азы, о которых все знают, а я прошляпил? 

И вдогонку еще один вопрос из этой же серии: просто выдергивать шнур USB при работающем скетче - это правильно?

kisoft
kisoft аватар
Offline
Зарегистрирован: 13.11.2012

Стирать и еще раз стирать! С мылом! Шутка :)

При каждой прошивке старый стирается, поскольку пишется поверх существующего. Это простой ответ на простой вопрос без философских мыслей и т.п.

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

А если без философии, то да, можно.

 

ЕвгенийП
ЕвгенийП аватар
Offline
Зарегистрирован: 25.05.2015

Старый скетч лучше стирать загружая на его место пустой скетч

setup(){} loop(){}

(хотя, сам я грешен).

Представьте себе, что Вы в скетче ставите некий порт на вывод и пихаете в него HIHG, а в новой схеме этот порт заведён на землю напрямую. Если Ваш старый скетч начнёт работать с новой схемой, порт сгорит задолго до того, как Вы поймёте что там задымилось и выдерните питание.

mims пишет:

просто выдергивать шнур USB при работающем скетче - это правильно?

Если он Вам не нужен, то почти нормально. Но именно "почти". Всё зависит от множества нюансов. Например, от чего питается Ваша ардуина в данный момент. Короче, при выдёргивании, при некоторых условиях, может глюкнуть.

Клапауций 234
Offline
Зарегистрирован: 24.10.2016

прошей в мк

int main() {}

 

kisoft
kisoft аватар
Offline
Зарегистрирован: 13.11.2012

Уж тогда Blink проще всего прошить, сразу видно, что моргает, значит стерлось прошилось.

Клапауций 234
Offline
Зарегистрирован: 24.10.2016

ЕвгенийП пишет:

Старый скетч лучше стирать загружая на его место пустой скетч

т.е. отключать старое, прошивать, подключать новое - это не?

сначала стирать, затем разбирать, подключать новое, прошивать...

*может, в консерватории что-то подправить?

Клапауций 234
Offline
Зарегистрирован: 24.10.2016

kisoft пишет:

Уж тогда Blink проще всего прошить, сразу видно, что моргает, значит стерлось прошилось.

блинком мигать первым пином, что бы наверняка.

mims
Offline
Зарегистрирован: 09.01.2017

Ага, спасибо за ответы.

Получается, что правилом хорошего тона являлась бы загрузка пустого скетча перед тем как отсоединить USB-кабель от платы. Все равно ведь в следующий раз мы его подключим именно для загрузки нового скетча. Ну, если только мы не хотим испытать автономную работу схемы от другого источника питания (не USB). 

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

Клапауций 234
Offline
Зарегистрирован: 24.10.2016

mims пишет:

Получается, что правилом хорошего тона являлась бы загрузка пустого скетча перед тем как отсоединить USB-кабель от платы. Все равно ведь в следующий раз мы его подключим именно для загрузки нового скетча. Ну, если только мы не хотим испытать автономную работу схемы от другого источника питания (не USB). 

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

... объясни ..у, как нужно - ..й стеклянный согнёт.

Arhat109-2
Offline
Зарегистрирован: 24.09.2015

Кстати, вопрос не совсем уж и ламерский. Года 2 назад тоже им задавался .. ибо, если в машинку залита прога, то она как-то юзает выходы и если надо пересобрать в другое устройство (например вариант детского конструктора а-ля Лего как у нас), то возникает дилеема что делать поперед: или перезалить прогу и потом разобрать старое устройство или собрать новое и перезалить новую прогу или разобрать, перезалить, собрать .. особливо занятно, когда выходы 0,1 в железяке заняты не так как предполагается при перезаливках..

Для себя уже давно решил, что 0,1 выходы не используются и вовсе, а для Нано так и вообще сделал расширительные шилды, у которых этих выводов и нет вовсе, от соблазну подальше (играется то ребенок жеж!). По завершению использования конструкции и её программы, железка разбирается в обязательном порядке (сложи все детальки конструктора на места) и в неё заливается Blink.ino. Сборка нового - как обычно: достал, собрал и залил что надо.

mims
Offline
Зарегистрирован: 09.01.2017

А в чём особенность 0 и 1 выхода? 

Arhat109-2
Offline
Зарегистрирован: 24.09.2015

0,1 выводы у ардуин это UART0 (если их больше 1шт) и он задействован как правило аппаратно для связи с компом по USB порту. Если они заняты как-то ещё в скетче, то потом перепрошить иной скетч может оказаться проблематично. Особенно если ещё занять SPI и JTAG чем-нибудь.. :)

Клапауций 234
Offline
Зарегистрирован: 24.10.2016

Arhat109-2 пишет:

Если они заняты как-то ещё в скетче, то потом перепрошить иной скетч может оказаться проблематично. Особенно если ещё занять SPI и JTAG чем-нибудь.. :)

бррр...

что в каком скетче занято, если при прошивке по UART работает не скетч, а загрузчик?

при прошивке по SPI пины аппаратно конфигурируются - ни о каком запуске микрокода речи быть не может.

Arhat109-2
Offline
Зарегистрирован: 24.09.2015

Может Вы и правы .. спорить не буду. Но, по мне так лучше разобрать железку и прошить отдельно Blink.ino, чем потом смотреть "как кузяво оно дымит". :)

Клапауций 234
Offline
Зарегистрирован: 24.10.2016

Arhat109-2 пишет:

Может Вы и правы .. спорить не буду. Но, по мне так лучше разобрать железку и прошить отдельно Blink.ino, чем потом смотреть "как кузяво оно дымит". :)

почему блинк, а не полностью стереть флеш?

почему не отключить старое, прошить новое затем подключить новое?

к чему эти танцы с бубном лишнего цикла прошивки/стирания?

Arhat109-2
Offline
Зарегистрирован: 24.09.2015

Ну .. когда железка разбирается (у на жеж конструктор) то далеко не факт, что прямо сейчас оно будет использовано в новой конструкции .. ребенок может увлечься чем-то иным, как было: сел танк клеить вместо подготовки к соревнованиям (я и так успею) и т.д. .. а когда берешь МК для новой поделки уже фиг его знает что там прошито .. так что blink - как-бы сигнал, что МК "готов" к работе.

mims
Offline
Зарегистрирован: 09.01.2017

Понятно. Спасибо.

Клапауций 234
Offline
Зарегистрирован: 24.10.2016

Arhat109-2 пишет:

blink - как-бы сигнал, что МК "готов" к работе.

кому сигнал? - ребёнку?

если так уж сложилось, что ползатель твоей дуино нечто гиперактивное с короткой памятью как у золотой рыбки, то просто впаяй на все пины резисторы 470 Ом.

Arhat109-2
Offline
Зарегистрирован: 24.09.2015

:) Я и сам через пару недель не помню что туда заливал .. хорошо, когда машинка стоит неразобранная, как сейчас наш "робот-паук" .. а так крутишь-вертишь плату и не знаешь толи залить в неё что пустое прежде чем собирать, то ли сразу собрать (а как правило, в момент сборки скетча как такового ещё и нет вовсе) .. склероз - наше фсё! .. заставь меня сейчас рассказать чего я писал в коде полгода назад - да проще застрелить. Каждый день пишется по 500-1000 строк да на нескольких языках.. :)

А вот за резисторы - пасибки. Приедет камень Меги2560, буду паять мегу с памятью .. пригодится.

GreenLight
Offline
Зарегистрирован: 25.12.2016

mims пишет:
...подсоединяю USB... и сразу начинает работать предыдущая программа.

на самом деле сначала всегда bootloader запускается и "смотрит", не загружается ли в плату новая программа! 

Интересно, можно ли как-то изменить время ожидания бутлоадера?