Привет, коллеги!
Решил поделиться с общественностью своим первым самостоятельным проектом на микроконтроллере. Надеюсь, кому-то он окажется полезным.
Учитывая с одной стороны постепенное «умирание» УФППЗУ, «геморрой» со стиранием, наличие определенного программатора и т.д., а с другой стороны, популярность и легкодостоваемость флэш-памяти заставили задуматься: как использовать флэшки, размер которых, обычно, не менее 512kbit (NNx512, например, 29F512 и т.д.), «по полной программе»? Тем более, есть проект нашего форумчанина Skyther'а - «программатор Flash», который шьет именно флэши, но не УФППЗУ.
Была идея навесить «навесить» тумблерок, либо мультиплексор или триггер для «руления» старшим разрядом ПЗУ, не предмет «управления» прошивками. Например, в случае любого 48 клона «0» на этом адресе – стандартная прошивка 82 года, подали «1» - турбо прошивка 90-91 года. И т.д. В случае компов с BDI и памятью от 128к - еще ентереснее - можно иметь на одном компе те же 2-е разные прошивки 48 БЕЙСИКа, + Gluk RESET service + HE GLUK, или любые вариации, какие Вам нужны.
Не так давно на форуме DLCorp, комрад robat_e, при поддержке тамошних ГУРУ заделал "переключалку" на одной ТМ2.
Из «недостатков», на мой взгляд, руление только одним разрядом, кнопка с переключающими контактами, «достоинства» - просто, «дешево и сердито»!
Решил я немного попрактиковаться в программировании контроллеров, благо маленький опыт был(переделка и доводка чужого проекта «под себя»), и был проект, который почти полностью писался другом под PIC12F675(629) на MikroC Pro. Благо в запасах нашлось несколько «халявных» PIC12F683 в SO8 корпусе. Мои познания в Си пока весьма скромны, но результат есть, и он весьма положительный. По крайней мере, то, каким я видел этот девайс – получилось!
Краткое тех. описание:
1. ROM-Switcher является диспетчером (переключателем) прошивок ПЗУ.
2. Максимальное кол-во переключаемых страниц (прошивок) – 4 (больше – вряд ли нужно).
3. Управление одной кнопкой с Н.О. контактами, после выбора(кнопку перестали нажимать), примерно через 1,2 сек. (типа, выбор сделан) осуществляется автоматический СБРОС компа. Стартуем, соотв. с выбранной прошивкой.
4. После ~15 сек. «не нажимания» (типа, выбор закончен) номер «активной прошивки» сохраняется в EEPROM микроконтроллера, и при следующем включении компьютера он стартует именно с этой прошивки.
5. Индикация сделана «наглядной» - на семисегментник выводится номер «активной прошивки». При небольших изменениях в коде легко переделать под простые светодиоды и индикацию по принципу переключалки на ТМ2 от robat_e. В момент СБРОСа на индикатор кратковременно выводится буква "r"(rESET). Момент "записи" в EEPROM индицируется кратковременным выводом на индикатор буквы "S"(SAVE).
Регистры для семисегментника – любые из приведенных на схеме, прошивка легко адаптируется под любой 8-ногий ПИК 12-й серии, по идее, на Тини13(AVR) такое то же можно сделать! Семисегментник - любой, какой есть в наличии ОК или ОА(раскомментировать одну строку и перекомпилить прошивку).
Во вложении исходники (mikroC PRO for PIC 2009 [17.7MB]) и прошивки под ОК и ОА, для 512кбит и 2Мбит ПЗУ, файл Протеуса, схемы для разных вариантов и примеры печаток. Демо-версии этого компилятора вполне достаточно для самостоятельной компиляции под свои нужды данной разработки.
Благодаря SoftFelix'у появилась прошивка, где индикатором служит обычный 2-х цветный светодиод с ОК(можно и просто 2 светодиода поставить).
БЛАГОДАРНОСТИ! Спасибо Евгению [ewgeny7] и Алексею [dosikus], за прояснение ряда теоритических вопросов!
Спасибо SoftFelix'у, за сборку и тестирование данного "девайса" на реале, т.к. у самого - не дошли ещё руки...