Вы купили первую плату с микроконтроллером (или микроконтроллер и программатор). На ней есть непонятные дырочки, кнопочки и светодиоды. Инструкция в интернете говорит: «Переведите в режим программирования». Сердце ёкает: а что, у него есть другой режим? И что будет, если нажать не туда?
Спокойствие. Сейчас разберемся простыми словами.
Что такое «режим программирования»?
Представьте, что микроконтроллер — это очень послушный, но глупый робот. Внутри у него есть своя крошечная «памятка» (встроенная память), где записаны команды, указывающие как ему работать.
- Обычный режим работы. Робот просыпается, читает свою «памятку» и чётко выполняет то, что там написано: помигал светодиодом, опросил датчик, покрутил мотор. Он работает сам по себе, быстро и предсказуемо.
- Режим программирования. Это момент, когда вы говорите роботу: «Забудь старые команды! Слушайся меня и записывай новые правила». В этом режиме микроконтроллер не выполняет свою обычную работу. Он замирает, открывает «дверь» (специальный вход для прошивки) и ждет, пока вы зальете туда свежую программу с компьютера.
Главный вопрос: кто главный
- В обычном режиме микроконтроллер — сам себе хозяин. Он выполняет программу бесконечно.
- В режиме программирования хозяин — внешний программатор или плата, управляемая по кабелю USB (раньше это были кабели для RS-232, а ещё раньше — LPT). Микроконтроллер временно превращается в «чистый лист» или «приемник», куда будет записана новая программа.
Что надо знать новичку самое важное (без лишних умных слов)
- Режим программирования не включается кнопкой «Пуск». Обычно вход в него происходит автоматически, когда вы даете специальный сигнал по проводам из программы-прошивальщика на компьютере. Иногда за это отвечают кнопки «Сброс» или «Загрузка» на плате — их нужно нажимать в нужном порядке, строго по инструкции. В микроконтроллерах AVR, например, включение режима программирования выполняется при помощи входа Reset (для сброса на этот вход подаётся логический ноль на короткое время, а если подать и удерживать ноль, то микроконтроллер перейдёт в режим программирования) .
- В режиме программирования прибор не работает. Светодиод не мигает, датчики не опрашиваются. Это нормально. Не пугайтесь — устройство не «зависло» (хотя и такое может быть). Вы его специально остановили, чтобы переучить (перепрошить). В этом режиме все или несколько выводов микросхемы меняют своё назначение — они принимают данные и сигналы управления от программатора.
- Разные микроконтроллеры — разные способы. У одних достаточно просто воткнуть USB-кабель, у других нужно перед подключением замкнуть две ножки перемычкой или нажать особую последовательность кнопок. Обязательно читайте руководство к вашей плате (для Ардуино) или программатору/микроконтроллеру!
Самый страшный вопрос: можно ли что-то сломать?
Это новички спрашивают чаще всего. Вот честный ответ.
Физически сломать (сжечь, расплавить, взорвать) микроконтроллер в режиме программирования почти невозможно. Почему? Потому что в этом режиме через него текут небольшие и безопасные токи — те же, что и в обычной работе. Сама по себе запись новых команд не разрушает кристалл.
НО! Есть два реальных способа «испортить жизнь» себе и устройству:
- «Закатать» неправильную программу. Вы можете залить в микроконтроллер код, который велит ему, например, замкнуть два выхода накоротко или работать на недостижимой частоте. В этом случае после выхода в обычный режим он может начать дико греться или делать глупости. Но это лечится перепрошивкой правильной версии. Сам микроконтроллер при этом живой.
- Нарушить «заводские настройки». У некоторых микроконтроллеров есть особая область памяти — «предохранители» или «защитные биты» (фьюз-биты). Если по ошибке запрограммировать их так, чтобы запретить чтение или последующую прошивку — вы получите «кирпич». То есть устройство работает по старой программе, а новую залить уже нельзя. Но! В большинстве плат для новичков (на базе Arduino, ESP8266, ESP32) случайно так сделать почти невозможно — нужны специальные действия и отдельные программаторы. А вот с отдельным микроконтроллером при желании или по невнимательности это сделать можно.
Что в итоге?
Режим программирования — ваш друг. Это тот самый шанс «объяснить» микроконтроллеру, что вы от него хотите. Он безопасен, если вы действуете по инструкции.
Сломать железо в этом режиме нельзя. Самое страшное, что грозит новичку — это залить нерабочую программу. Но и это поправимо: всегда можно вернуться в режим программирования и записать правильную.
Запрет последующей прошивки тоже не сломает микроконтроллер. Просто вы не сможете больше изменить его программу (перепрошить). Правда, если перед этим там не было программы или была какая-нибудь тестовая, то это будет равно поломке — такой микроконтроллер будет бесполезен.
Главный совет: прежде чем впервые войти в режим программирования, найдите в интернете инструкцию прошивки точно такой же платы, как ваша (или по использованию вашего программатора и прошивке микроконтроллера) и посмотрите, какие кнопки и в каком порядке надо нажимать (или какие другие действия надо делать). И всё получится.
На этом всё. Подписывайтесь на канал, чтобы ничего не пропустить…