miskatino start - el-pths/w GitHub Wiki
Miskatino - знакомство с контроллером
Программа Miskatino превращает микроконтроллер (Arduino или другой) в систему под управлением интерпретатора BASIC. Благодаря этому можно выполнять разные действия с контроллером просто вводя нужные команды, или записать программу из таких команд в память для дальнейшего выполнения.
Для работы с Miskatino, в зависимости от типа контроллера, можно использовать подключение к компьютеру через USB (напрямую или через преобразователь), смартфон или отдельный UART-терминал.
Первые команды
После того как микроконтроллер подключен и связь установлена, легче всего убедиться в правильности настроек, нажав кнопку RESET на контроллере, если она имеется. Микроконтроллер перезапустится и выдаст сообщение в терминал:
Miskatino v1.1
После этого он готов к приему команд. Однако если в микроконтроллере уже сохранена программа, сообщение может выглядеть так:
Miskatino v1.1
Autorun in 1 sec
Это означает, что найденная программа будет запущена через 1 секунду, если не нажать любую клавишу (тогда появится сообщение Canceled!
). Если программа все-таки запустилась (при этом в терминал могут постоянно сыпаться какие-нибудь сообщения или значения от этой программы - или наоборот может не приходить ничего), можно остановить ее нажатием Ctrl-C
(на компьютерной клавиатуре) или отправкой символа с кодом 0x03
(break) любым другим способом. В мобильном приложении это осуществляется нажатием клавиши с молнией (она появляется справа вверху если нажать шифт - стрелку вверх). При останове появится сообщение BREAK
.
Для того, чтобы проверить, что контроллер принимает команды, введите, например команду INFO
и нажмите ввод. Контроллер может ответить в духе:
code: 2
vars: 0
next: 1
Это данные о состоянии (занятости) памяти и т.п...
Управление выводами
Основная команда для управления напряжением на выводах контроллера - PIN
. На многих платах выводы пронумерованы. Если к заданному выводу подключить светодиод, через резистор на GND (на некоторых платах есть встроенный светодиод на одном из выводов), то его можно включить и выключить:
PIN 13;1 - подать логическую 1 (напряжение питания) на вывод 13
PIN 13;0 - подать логический 0 (напряжение 0) на вывод 13
Как видим, нужно через точку-с-запятой указать номер вывода и 0 или 1 - какой уровень подать. Другие положительные значения интерпретируются идентично единице. Иногда можно также встретить выдачу отрицательных значений:
PIN 13;-1 - включить этот вывод на вход (не подавать никакого напряжения изнутри)
PIN 13;-2 - включить вывод на вход с внутренней слабой подтяжкой к плюсу
Эти команды также имеют смысл "подачи 1" если рассматривать вывод как выход с открытым коллектором.
Можно вводить эти команды (нажимая ввод после каждой), чтобы убедиться, что они сразу вызывают реакцию (например, переключение светодиода).
Ввод и запуск программы
Если перед вводимыми командами указывать число (номер строки), то команды не будут сразу исполняться, а вместо этого запоминаются как строки программы. Можно ввести программу из нескольких строк и потом запустить ее на выполнение командой RUN
, например:
10 PIN 13;1
20 DELAY 300
30 PIN 13;0
40 DELAY 600
50 GOTO 10
RUN
Здесь мы вводим программу из 5 строк. Как видно, номера могут идти с пропусками, но выполняются по порядку. Строки 10 и 30 нам знакомы - они включают и выключают светодиод. Строки 20 и 40 содержат команду DELAY
которая создает паузу в выполнении, на величину, заданную в миллисекундах (т.е. 0.3 и 0.6 секунды соответственно). Команда GOTO в строке 50 осуществляет переход на указанную строку (в данном случае 10 - в начало программы).
После ввода команды RUN
такая программа запишется в память и запустится. Она будет бесконечно (пока не остановят) мигать светодиодом, причем проблеск будет 0.3 секунды, а пауза 0.6 секунды. Если контроллер перезапустить (и/или отключить от терминала/телефона), он все равно загрузит эту программу и будет ее выполнять - благодаря чему его можно встроить в какое-либо самостоятельное электронное устройство. О том, как остановить программу, см выше.
Другие полезные команды
Команда LIST
распечатывает введенную программу. По умолчанию она печатает по 3 строки за раз (каждый раз продвигаясь дальше, пока не достигнет конца). Если экран вмещает больше строк, можно задать бОльший размер страницы, а также с какой строки печатать: LIST 1 10
- печатать 10 строк начиная с 1-й. В дальнейшем повторный вызов команды будет печатать уже по 10 строк каждый раз.
Команда LOAD
позволяет загрузить программу (сохраненную раньше) из энергонезависимой памяти. Например это актуально если при включении контроллера автозапуск был отменен. Или если хочется забыть сделанные изменения и вернуться к последней выполнявшейся версии.
Команда SAVE
наоборот сохраняет программу. Кроме того это случается автоматически при выполнении RUN
.
Команда RESET
очищает память от текущей набранной программы (но не сохраняет "чистую" версию сама, нужно ввести еще и SAVE
чтобы очистить и энергонезависимую память).
Команда STEP
позволяет выполнить одну строку программы. Номер очередной строки виден как next
при выполнении команды INFO
. Это позволяет отлаживать программу по шагам. Можно также указать необходимость выполнения нескольких шагов, например STEP 5
.