Самоделка на микроконтроллере
Дисклеймер.
Хотя далее в легкой форме описывается процесс создания самоделки в духе Ардуино, этот текст следует воспринимать как простую инструкцию по работе с микроконтроллерами серии STC8H.
Все началось с того, что мне захотелось в некотором смысле нащупать самое дно среди микроконтроллеров и посмотреть что там такое. Если точнее, то поглядеть на что способен самый дешевый микроконтроллер из тех, что я смогу найти.
Искать я пошел как обычно к китайцам на известный сайт, где в итоге остановился на STC8H1K17
Вот такой красавчик:
Вот скрин заказа:
Видно, что по цене вышло в среднем 47,49 руб. за штуку.
Вообще были варианты всего по 24 рубля, но там доставка повышала стоимость выше 47 рублей.
Итак, чем примечателен этот МК? Это восьмибитный микроконтроллер со всеми атрибутами старших братьев. Для минимальной работы ему не требуется никакой обвязки, только напряжение питания, буквально какое будет под рукой. От 2 до 5 вольт. Рабочая частота от внутреннего генератора выбирается при прошивке от 4 до 36 МГц.
Практически все выводы кроме питания можно использовать как программируемые пины.
Все семейство очень легко прошивается просто подключением двух выделенных ножек к любому ком-порту. При подаче питания МК сначала пытается прошиться (какие-то доли секунды) и, если не видит на входе сигналов прошивки, запускает программу, которая уже есть в нем. Очень просто и удобно.
Для прошивки используется программа, которую специально написал производитель stc-isp:
Вот последняя версия на сегодня: https://drive.google.com/file/d/1hqZQVEt19RfgwgccXYQ92r2wXv5...
Программа пугает обилием кнопочек, но тут все просто. Выбрать свой чип, открыть прошивку и загрузить ее. Бонусом идет возможность установить плагин для IDE и генерировать код для разных задач. Например, подключение I2C и т.п. И еще много приятных мелочей, позволяющих упростить весь процесс.
Вообще производитель сделал очень подробное описание всего семейства МК почти на 1200 страниц. Вот версия на английском языке: https://drive.google.com/file/d/1bA5yNccgZPAAW7daTwV3jnXuPJ5aMUwk/view?usp=drive_link, если с китайским у вас не очень.
Для написания кода можно использовать бесплатные инструменты, но есть удобная IDE «Keil uVision5». В демо-версии она ограничивает размер прошивки, но для опытов достаточно. Чтобы писать код для STC, надо сначала из программы-прошивальщика добавить в Keil свою библиотеку.
Вводную часть на этом закончим. Ссылок не даю, все легко гуглится. На русском языке почти ничего нет, к сожалению.
Чтобы протестировать МК, я решил сделать простейшую игру крестики-нолики.
В электрическом смысле ничего интересного. Поле двхцветных светодиодов 3х3. Зеленые и красные.
Поле кнопок 3х3 для хода игрока и две дополнительные кнопки «Сброс» и «Пропустить ход». Вторая нужна просто для того, чтобы дать возможность МК сделать первый ход.
Как видно, тут получается заметное превышение по количеству доступных пинов. Поэтому используется динамическая индикация по строкам и столбцам.
Схема получилась такая:
Внимательный читатель заметит здесь три буфера. Они потребовались, чтобы усилить выходной ток пинов в режиме лог.1. иначе светодиоды не зажигаются. В другом случае можно было бы сделать активный 0 и перевернуть светодиод, но т.к. светодиод включен между двумя пинами, то смысла в этом нет. Да и конкретные светодиоды с общим анодом такого не позволяют.
Ну и вот что получись в итоге:
Здесь еще видно разъем для ком-порта и конденсаторы на кнопках, которые я добавил, чтобы уменьшить дребезг. Но совсем от дребезга не избавился. Изредка кнопки могут глюкануть.
Программа управления всем этим, если кому-то вдруг интересно, вот здесь: https://github.com/viktand/cross. МК после инициализации циклически выставляет единицу на одной из трех строк и зажигает зеленые, потом красные светодиоды, потом сканирует кнопки в этой строке. Потом, если его ход, прикидывает, где лучше зажечь красный светодиод.
Интересно, что в красном режиме яркость светодиодов оказалась значительно выше, чем в зеленом. Поэтому пришлось включать их не в каждом цикле, а только в каждом шестом проходе.
Логику самой игры наверно реализовали уже столько раз за историю программирования, что описывать ее смысла нет.
Еще одна фотография. МК (красные) почти выиграл, но я не сдаюсь и что-нибудь придумаю.
Играть конечно не сильно интересно, но процесс создания этого увлекательный. На мой взгляд.
И да, когда все было сделано, чуть позже, я наткнулся на младшего брата использованного микроконтроллера. Вот он:
Этот малыш почти такой же способный. STC8G1R08. У него только пинов совсем мало. Цена всего 17 рублей. Вот думаю теперь что из него смастерить.








