36

Самоделка на микроконтроллере

Дисклеймер.

Хотя далее в легкой форме описывается процесс создания самоделки в духе Ардуино, этот текст следует воспринимать как простую инструкцию по работе с микроконтроллерами серии 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 рублей. Вот думаю теперь что из него смастерить.

0
Автор поста оценил этот комментарий

Ого нашел на пикабу случайно поделку на stc. Я думал это совсем антиквариат. Заказал на пробу пару stc8h и stc32g есть некоторые мысли. Главное наличие знаний по X51, а тут мк на стероидах. Для логических схем весьма подойдет. но у меня нет программатора отдельно или с переходниками. я выбрал dip40 корпуса, буду шить на T48 программаторе.

раскрыть ветку (1)
1
Автор поста оценил этот комментарий

Там программатор особо и не нужен. Только переходник с USB на UART. эти четыре провода, два из которых питание, подключаются к STC через примитивную схему и все. Для заливки прошивки надо подать питание или сделать сброс.


Вот еще одна моя самоделка с этим MCU https://habr.com/ru/articles/886776/

показать ответы
0
Автор поста оценил этот комментарий

То есть все же ВГ75 успевает формировать сигналы для 640*480 VGA режима ?

У вас в статье ТЗ вывод на VGA. Я еще раз пересмотрю схему. Но ВГ75 я думаю не сможет выставлять синхроимпульсы в формате VGA. Если только в своем формате Радио РК, а далее мы дублируем пиксели по высоте и ширине как обычно делают.

зы почему бы не отказаться было от ВГ75 и все переложить на STC8 ?

upd я вижу у вас все же получилось и ВГ75 смог. Чудеса какие то. Недопонимание было лишь в чудо возможностях контроллера ЭЛТ ВГ75.

раскрыть ветку (1)
0
Автор поста оценил этот комментарий

По факту ВГ75 успевает работать в формате 640х480. Про другие режимы не уверен и даже сомневаюсь.

показать ответы
0
Автор поста оценил этот комментарий

Прикольно, но вы не ответили что с VGA выходом, что там ноги дрыгает ?

И да, TQFP-48 выглядит эффективнее чем мой вариант dip40 но может потом переползу. Пока по ногам в притык, все пристроены. надеюсь сюрпризов не вылезет.

раскрыть ветку (1)
0
Автор поста оценил этот комментарий

может мы не понимает друг-друга? ВГ75 формирует частоты синхронизации строк и кадров и выставляет на своих ногах LC0..3 CC0..6 адрес, который состоит из номера строки символов, номера символа в строке и номера строки пикселей в матрице символа. По этому адресу из ПЗУ знакогенератора извлекается строка пикселей (8 бит) для текущего символа, которая записывается в регистр и потом выталкивается из него по одному биту, они и идут на вга через согласующий резистор. Там еще если курсор, то ВГ75 дает сигнал, который засвечиват строку не зависимо от того, что ПЗУ скажет.

показать ответы
0
Автор поста оценил этот комментарий

Ого, прочитал статью. Шикарно. Это почти то, что я и хотел, но я замахнулся на 800*600 разрешение, поэтому были некоторые сомнения и я взял еще stc32g.
С плис я не дружу, институтов не заканчивал, но так же буду на макетке пробовать.
Насколько востребовано поставить ва86 на шину все же? Неужели мк так плох в этом отношении (((((((

По схеме не совсем понятно куда идет videoout. Это все же выход на телевизор или vga ?

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

раскрыть ветку (1)
0
Автор поста оценил этот комментарий

Если интересно, то вот еще самоделка. Не помню уже, рассказывал где-то или нет.

Иллюстрация к комментарию
Иллюстрация к комментарию
Иллюстрация к комментарию
показать ответы
0
Автор поста оценил этот комментарий

Ого, прочитал статью. Шикарно. Это почти то, что я и хотел, но я замахнулся на 800*600 разрешение, поэтому были некоторые сомнения и я взял еще stc32g.
С плис я не дружу, институтов не заканчивал, но так же буду на макетке пробовать.
Насколько востребовано поставить ва86 на шину все же? Неужели мк так плох в этом отношении (((((((

По схеме не совсем понятно куда идет videoout. Это все же выход на телевизор или vga ?

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

раскрыть ветку (1)
0
Автор поста оценил этот комментарий

Буфер на шину обязательно. Хотя если нагрузка на один потребитель, то можно и без буфера, но если на один пин вешается много входов, то без буфера работать будет нестабильно. Но ВА86 лучше не брать. У них только один плюс - низкая цена. Они греются как неисправные, но это нормально для них. Т.е. жрут много мощности. Возможно это не проблема для вас. Но лучше использовать 74ALS245. По ногам это тоже самое. Есть наш аналог КР1533АП6.


Видеосигнал снимается с выхода сдвигового регистра 74166D IC3 по схеме. Он потом смешивается сигналом "нарисовать курсор". И идет на обычный монитор. Кажется на этой схеме я забыл нарисовать аналоговую часть, но там все просто.

показать ответы
0
Автор поста оценил этот комментарий

Да нет, там 150 строк )))

STC то довольно борзый камень, я почитал по диагонали даташит. Ядро то уже новое, инструкция за такт. Вполне себе что то серьезное можно сделать.

раскрыть ветку (1)
0
Автор поста оценил этот комментарий

Я вообще-то хотел сделать несколько постов. У меня уже есть готовый тетрис на STC. и кое-что другое в проектах. Но вижу, что тема мало кого интересует. Время жалко тратить на описание.

показать ответы
0
Автор поста оценил этот комментарий

Там шесть свободных ног. Пять если использовать низковольтный программатор. Я сделал контроллер лазера для станка ЧПУ.

раскрыть ветку (1)
0
Автор поста оценил этот комментарий

Вы крутой.

показать ответы
0
Автор поста оценил этот комментарий

Ну ATTiny13 по 20р я брал

Только хардкор!!!!

раскрыть ветку (1)
0
Автор поста оценил этот комментарий

Там так мало пинов. Даже трудно придумать интересную задачу для него. Вот еще не решил что с тем 17-тирублевым делать.

показать ответы
1
Автор поста оценил этот комментарий

А чо дно то? Я так понимаю там 51е ядро? Их до сих пор в полный рост используют.

раскрыть ветку (1)
0
Автор поста оценил этот комментарий

Дно не в смысле самый отстрой, а в смысле проще по доступности уже не бывает.

показать ответы
0
Автор поста оценил этот комментарий

От дребезга надо по 100нф конденсаторы ставить. Ваши 100пФ тут такое себе. Еще и глина - говёненькие. Не применяйте такие!

раскрыть ветку (1)
0
Автор поста оценил этот комментарий

Да, наверно. В продакшин такое не годится. Для развлечения только.

Темы

Политика

Теги

Популярные авторы

Сообщества

18+

Теги

Популярные авторы

Сообщества

Игры

Теги

Популярные авторы

Сообщества

Юмор

Теги

Популярные авторы

Сообщества

Отношения

Теги

Популярные авторы

Сообщества

Здоровье

Теги

Популярные авторы

Сообщества

Путешествия

Теги

Популярные авторы

Сообщества

Спорт

Теги

Популярные авторы

Сообщества

Хобби

Теги

Популярные авторы

Сообщества

Сервис

Теги

Популярные авторы

Сообщества

Природа

Теги

Популярные авторы

Сообщества

Бизнес

Теги

Популярные авторы

Сообщества

Транспорт

Теги

Популярные авторы

Сообщества

Общение

Теги

Популярные авторы

Сообщества

Юриспруденция

Теги

Популярные авторы

Сообщества

Наука

Теги

Популярные авторы

Сообщества

IT

Теги

Популярные авторы

Сообщества

Животные

Теги

Популярные авторы

Сообщества

Кино и сериалы

Теги

Популярные авторы

Сообщества

Экономика

Теги

Популярные авторы

Сообщества

Кулинария

Теги

Популярные авторы

Сообщества

История

Теги

Популярные авторы

Сообщества

Недвижимость и ремонт

Теги

Популярные авторы

Сообщества