Программирование Arduino, оживление микроэвм Электроника МК-90, аппаратный хакинг.
29.10.2010
SMPReaderUSB - frontend?
27.11.2009
SMPReaderUSB - финальная версия
Файлы:
- Для тех, кто
в морепод Windows: скачайте программу-инсталлятор, она установит драйвер, необходимые dll-ки и саму программу чтения/записи; - Полный архив с исходниками firmware и software, схемой и разводкой односторонней печатной платы в Eagle (последние под лицензией Creative Commons Attribution-Share Alike 3.0 Unported);
- Для тех, кто хочет изготовить печатную плату: файл eps (extended postscript). Загрузите его с разрешением 720 dpi в Photoshop или Gimp, что гарантированно даст качественный отпечаток.
- Чтение образа СМП: smpusb read -f filename.bin
- Запись образа СМП: smpusb write -f filename.bin
- Проверка батареи: smpusb voltage
- Скачать новое firmware с http://mk90.blogspot.com
- Отключить питание (отключить и от компьютера, и от СМП)
- Поставить джампер JP1 в положение PGM
- Подключить к компьютеру
- Запустить программу обновления:
smpreader_updater smpreaderusb_atmega8.hex - Вернуть JP1 в прежнее положение, отключить питание.
Как всегда, буду рад конструктивной критике и глупым, но грамотно сформулированным вопросам ;)

25.10.2009
Печатная плата для SMPReaderUSB
15.10.2009
Продается МК-92




Как видите, в состав входит Электроника МК-90, являющаяся неотъемлемой составной частью комплекса. Основные отличия:
- Бейсик 2.0
- возможность записи на кассетный магнитофон
- четырехцветный плоттер
- вывод на бытовой телевизор (не реализовано до конца - все-таки опытный экземпляр, но телевизор можно переделать, есть схемы ;)


Продавец - Роман Широков, знаю лично и готов поручиться.
[[Ссылка]] на аукцион (заканчивается 29.10.2009 в 14:35).
UPD: продано...
30.09.2009
SMPReaderUSB в корпусе

Светодиод чтения записи - двухцветный, т.е. в одном корпусе сразу два кристалла, три вывода, общий катод. Очень удобно - не надо сверлить лишнюю дырку. А по смыслу - либо чтение, либо запись - одновременно не бывает ;)
Подумываю о печатной плате, а вдруг все-таки кому-то понадобится?
25.09.2009
Продается МК-90

Если мой блог читают все те, кто меня мучительно выспрашивал о том, у кого можно купить - вот ваш шанс ;)
[[Ссылка на аукцион]] (заканчивается 07.10.2009 в 9 часов утра).
UPD: аукцион закончен, калькулятор уходит за 22100 рублей
25.08.2009
Доступ к СМП по USB (2)
Вторая версия USB-устройства чтения-записи СМП/МПО Электроника МК-90.
В схему добавлен резистор 22К, притягивающий вход измерения батарейки к GND. Он позволяет избежать чтения "ерунды", когда пин висит в воздухе – теперь будет стабильный ноль.
Также я задался риторическим вопросом о том, стоит ли тащить в схему ICSP-разъем, если и так уже есть USB. Все, что требуется - это bootloader, который будет принимать новую прошивку через USB и прошивать ее во flash-память. С одной стороны - пустяк, может и не пригодиться, с другой - доступный способ обновления, не требующий программатора.
Итак, теперь управление всегда передается bootloader-у, который опрашивает джампер JP1. Пользователь аккуратно разбирает корпус устройства (при наличии такового ;), устанавливает джампер, подключает кабель USB. По установленному джамперу bootloader понимает, что грядет обновление прошивки и ждет данных для записи. Пользователь должен запустить отдельную программу smpreader_updater.exe с единственноым аргументом - именем hex-файла с новой прошивкой. После успешного завершения программы, надо отключить устройство от USB, снять джампер и завинтить обратно.

Бутлоадер был создан на основе релиза V-USB 20090415, а также проектов AVRUSBBoot и USBaspLoader.
AVRUSBBoot мне понравился экстремальной простотой и укомплектованностью host-программой – ну просто бери и пользуйся! Не тут-то было: с момента первого (и последнего ;) релиза прошло довольно много времени, поэтому пришлось обработать напильником: учесть особенности последнего стандарта C++, обновить морально устаревшее ядро V-USB, немного подкорректировать алгоритм проверки условия активизации и корректность выхода (позаимствовал идеи из USBaspLoader).
Увы, размер необходимой памяти программ с учетом bootloader-а вырос на 2К и составил более 4К. В таком варианте ATTiny2313 использовать уже не получится, ATmega48 – только если выкинуть код измерения напряжения батарейки. Поэтому, практически безальтернативно проект собирается на ATmega8-16PU.
Схема, исходники и бинарники: smpreaderusb_2.0.zip.
Файлов с прошивками теперь стало два: сначала надо прошить программатором smpreaderboot.hex, а уже потом через USB можно заливать smpreaderusb.hex. Подробные инструкции на английском языке в виде README-файлов заботливо разложены мной по подкатагам ;)
Кстати, собрал прототип на макетной плате под пайку, выглядит так:
Вместо двух отдельных светодиодов Rx и Tx я использовал один двухвыводной, токоограничительные резисторы R3, R4 и R5 имеют номинал 330 Ом.
К моему огорчению, по-прежнему отсутствуют:
- GUI, печатная плата
- инсталлятор (или хотя бы inf-файлы для драйверов)
- Makefile для консольной сборки
- поддержка Linux (пока – только потенциальная)
07.08.2009
Доступ к СМП по USB
Ключевые особенности разработанного устройства:
- совместимо с шиной USB 1.0;
- читает и записывает образы картриджа СМП;
- измеряет напряжение внутренней батареи;
- легко повторяется самостоятельно.
- читать содержимое СМП в файл
- записывать образ из файла в СМП с проверкой
- показывать напряжение батареи и предупреждать о разряде
- работать через интерфейс командной строки
- выводить сообщения на stdout (описаны все коды завершения)
- работать с с Windows XP, Vista, потенциально переносима на Linux
Как всегда, начинаю с результата: smpreaderusb_1.0.zip (исходники и бинарники firmware и software).
Схема:

Список деталей:
Part Value Device Package Library
C1 22 pF C5/2.5 C5B2.5 capacitor-wima
C2 22 pF C5/2.5 C5B2.5 capacitor-wima
C3 100 nF C5/2.5 C5B2.5 capacitor-wima
C4 47 uF CPOL-EUTT2D5 TT2D5 rcl
C5 100 nF C5/2.5 C5B2.5 capacitor-wima
D1 3V6 BZX55 DO35Z10 diode
D2 3V6 BZX55 DO35Z10 diode
D3 LM385-1.2 LM385-1.2 TO-92 lm385
IC1 MEGA8-P MEGA8-P DIL28-3 atmel
JP2 PINHD-1X6 1X06 pinhead
LED1 PWR LED3MM LED3MM led
LED2 RX LED3MM LED3MM led
LED3 TX LED3MM LED3MM led
Q1 12 MHz CRYSTALHC49U-V HC49U-V crystal
R1 10K R-EU_0204/7 0204/7 resistor
R2 68 R-EU_0204/7 0204/7 resistor
R3 1K R-EU_0204/7 0204/7 resistor
R4 1K R-EU_0204/7 0204/7 resistor
R5 1K R-EU_0204/7 0204/7 resistor
R6 68 R-EU_0204/7 0204/7 resistor
R7 1K5 R-EU_0204/7 0204/7 resistor
R8 1M R-EU_0204/7 0204/7 resistor
R9 22K R-EU_0204/7 0204/7 resistor
X1 PN61729 PN61729 con-berg
X3 PINHD-2X3 2X03 pinhead
Пояснения к схеме
Пояснения к работе с host-программой
Запустите команду чтения напряжения:
smpusb voltage
smpusb read –f mk90.bin
Соответственно, чтобы записать:
smpusb write –f mk90.bin
При записи и чтении горят соответствующие светодиоды RX и TX.
Возможные неприятности:
- отсутствие GUI
- нет печатной платы
- драйвер надо ставить отдельно
- недостаточная проработка вопроса совместимости c Linux
- не помешал бы консольный Makefile для сборки через nmake.
28.07.2009
Анонс

14.11.2008
Вид МК-90 изнутри

Вверху слева - плата ЖКИ, вверху справа - плата клавиатуры. Снизу - видна плата процессора, она же чуть крупнее:

Как видите, это те самые ПЗУ микропрограмм КА588ВУ2А, с номерами 001-004. Слева вверху в белом корпусе - по-моему, резисторная сборка.
Колесико регулировки контрастности крупным планом:

Если откинуть плату процессора "на себя", под ней скрывается плата устройств:

В блестящих корпусах элементы процессора - АЛУ КА588ВС2, контроллер ВГ1 и последняя ПЗУ с микрокомандами контроллера - за номером 005. Справа в однорядном корпусе ПЗУ с BASIC-ом - КА1835РЕ1. Где тут перемычки, которые надо перерезать для программирования (а потом восстанавливать) - понятия не имею, если честно. Видно только пустое посадочное место для "бутербродного" монтажа (как в модуле СМП).

Плата устройств немного не в резкости, но достаточно ясно видно, что сверху к ней подключен единственный наружный разъем, справа - два для модулей СМП.

Красный и белые проводки не случайно такие длинные. Это позволяет без потери контакта откинуть "на себя" и плату устройств тоже:

Динамик - пьезоэлектрический, он виден только наполовину. Как я понимаю, такие вещи не ломаются в принципе. Зато два лепестка, которые припаяны на плату (видите, по центру два контакта один над другим?) за последние лет 15 немного потеряли пружинистость. Я немного отогнул их, и.... после сборки звук снова заработал!
Напоследок, крупным планом кусочек платы от разъема питания. Вверху - контроллер , отвечающий за клавиатуру.

12.11.2008
У страха глаза велики
Пошел покупать новую батарейку, но элементов 2016 не было, взял от отчаяния 2025 и 2032. Они несколько толще, но я постарался и запихнул 2025. Тут выяснилось, что СМП вообще не работает - кажет все единицы. Причем, и в МК-90, и в программаторе.
"Подох", - подумал я и полез искать элементную базу (КА1835ВГ2, КА537РУ10Б) в интернет-магазинах. Что самое поразительное - нашел! Но прежде, чем нажимать на кнопку "отправить заявку", решил проверить последний раз - не установил ли я батарейку как-то криво.
Модуль великолепно заработал в калькуляторе со снятой батареей. Мораль: у страха глаза велики ;) Сижу, думаю - оформлять мне заказ на антикварные микросхемы завода "Интеграл" или нет... А вдруг придется ремонтировать, не дай Бог?
07.11.2008
Читалка СМП на Arduino
- Arduino Board
- Свободный USB-порт
- Вилка PLS-6R и 5 проводков для подключения СМП
- ПО: Arduino IDE, FTDI drivers, Perl с модулем Win32::API, модули Win32::SerialPort, Win32::CommPort
- Результаты моей работы - программа-sketch для Arduino Board + скрипт на Perl
СМП | Назначение | Arduino | |
---|---|---|---|
2 | Vcc +5V | "+5V" | |
3 | CLOCK | Pin 7 | |
4 | DATA | Pin 6 | |
5 | SELECT | Pin 5 | |
6 | Gnd | "-" |
Замечание: батарею (1-ый пин СМП) никуда не подключаем, пины Arduino - цифровые (не путать с аналоговыми).
05.11.2008
Подмосковные вечера на МК90
25.10.2008
21.10.2008
Процессор
- КА588ВС2 - 16-разрядное арифметическое устройство
- КА588ВУ2 - Память микрокоманд
- КА588ВГ1 - Системный контроллер
АУ 588ВС2 иногда называют микропроцессорной секцией: действительно, там есть блоки расширения и синхронизации, позволяющие при необходимости объединяться для увеличения разрядности свыше 16 бит. На борту имеется 16 шт. РОН-ов, аккумулятор (все 16-разрядные), регистр состояний.
ВС2 исполняет микрокоманды, поступающие в виде 12-битных слов из ПЗУ К588ВУ2 по шине микрокоманд (а она на самом деле 13-разрядная: старший разряд используется для стробирования данных), а результат выставляет на 4-битную шину состояний и 16-битную магистраль данных (или забирает оттуда операнд, если надо). Таблицы кодов микрокоманд известны, однако полностью бесполезны для прикладного программирования: во-первых, ПЗУ микрокоманд нельзя перепрограммировать, во-вторых, нет описания соответствия команд процессора МК90 и последовательности микрокоманд для ВС2 (подразумевается косвенно, см. процессоры PDP-11 и 1806ВМ2).
Кстати, В МК90, похоже, линии адреса и данных физически разделяют одну магистраль данных, чем и объясняется такое относительно компактное исполнение на трехслойной плате. Рискну предположить, что это т.н. "Q-шина".
Бис 588ВУ2 имели дополнительный номер, выпускалось семь разных вариантов: К588ВУ2-001 ... К588ВУ2-007. Микросхемы содержат последовательность микрокоманд, запрограммированную на заводе-изготовителе масочным способом. Предполагалось, что набор команд может быть произвольным, но лично мне известно только про реализацию "Электроника-60". В моем МК90 использован минимальный набор 0001-0004, а также 0005. Последняя содержит инструкции управления ВГ1 через разряды 7..12 (0-6 запрограммированы для управления прерываниями, но в МК90 это не использовано).
СК 588ВГ1 предназначена для связи внутренних шин серии 588 с внешней Q-шиной. Его задача состоит в организации ввода-вывода, обслуживания внешних и внутренних прерываний, обеспечения прямого доступа к памяти и двунаправленным магистральными приемо-передатчиками. МПП в МК90 отсутствуют; четыре линии запроса внешних прерываний прерываний дружно притянуты к Vcc. Остальное, вроде бы, используется.
20.10.2008
Прикладные программы
131. Мужчина и семья. Программа предназначена для помощи мужчине в оценке своего положения в семье
132. Женщина и жизнь. Программа предназначена для психологической поддержки и эмоциональной разгрузки женщины.
159. Колоритность. Программа предназначена для ознакомления пользователя с таблицей энергетической ценности продуктов питания.
18.10.2008
Программы из приложения 4
Внутри исходники и образы СМП для Бейсика 1.0 и 2.0.
17.10.2008
Стандартный набор программ
Во-первых, без ошибок в исходных текстах не обошлось, во-вторых - позабавился с оператором PRINT. Долго не мог понять, почему интерпретатор на него ругается, а оказалось, что операторы формата надо записывать в "угловых скобках", т.е. в виде знаков меньше и больше - '<>', а не в круглых скобках, как мне приглючилось с самого начала в тексте руководства.
15.10.2008
Собираем программатор СМП (2)


Теперь надо выбрать программу чтения-записи.
1. Для DOS: автор Piotr Patek, скачать исходник и программу
2. Для Linux: автор Tim N. Taspulatov, скачать исходник
Для работы надо выставить в BIOS параллельный порт в режим SPP ( иногда можно встретить вариант Bi-directional ), адрес 378h.
Откуда брать Linux, думаю знаю все ;) Симпатичный аналог MS-DOS под названием FreeOS можно скачать с http://www.freedos.org. Например, можно записать имидж загрузочного CD на болванку, а программы для калькулятора - на дискету (не надо ничего ставить на винчестер и править .iso-файл с образом).
Алгоритм проверки выглядит приблизительно так:
1. Отключаем от LPT-порта все устройства, загружаемся, запускаем READ.COM. Результат чтения всегда записывается в файл MK90.BIN. Обнаруживаем там сплошные нули.
2. Соединяем проводком 11 и 25 контакты разъема DB25, снова запускаем READ.COM. Теперь в MK90.BIN должны быть единицы (FF). Если мы дошли до этого места - LPT-порт сконфигурирован правильно, иначе надо вернуться назад и проверить настройки BIOS.
3. Подключаем программатор к LPT, запитываем схему от USB, картридж СМП пока не подключаем. Если машина при этом не ушла перезагрузку - значит шина питания не закорочена на общий, и это - уже хорошо ;) Снова читаем содержимое - там должны быть единицы (FF). В противном случае, ищите ошибку в монтаже.
13.10.2008
Собираем программатор СМП (1)
- С1-4 0.25 Вт, 5% 22 кОм - 8 штук
- С1-4 0.25 Вт, 5% 2.2 кОм - 4 штуки
- 2N3904 (КТ6137А) TO92 - 4 штуки
- DRB-25MA вилка на плату 25pin - 1 штука
- PLS-6R вилка штыревая 2.54мм 1х6 угловая - 1 штука
- USBB-1J розетка на плату, тип B - 1 штука
- Включить мультиметр в режим измерения сопротивления на предел шкалы 1 кОм, или в специальный режим, отмеченный значком диода.
- Сначала надо определить базу. Если проводимость транзистора n-p-n, то базой будет тот вывод, который "звонится" на два других при подключении к нему щупа с положительной ("+" то есть) полярностью испытательного напряжения (для транзистора p-n-p-типа - полярность обратная). Численные значения прямого напряжения на переходах будут равны: 400 – 800 мВ для кремниевых транзисторов; 100 – 300 мВ для германиевых транзисторов.
- При определении выводов коллектора и эмиттера можно придерживаться простой закономерности: прямое напряжение на переходе база-эмиттер (Б-Э) всегда на несколько милливольт выше прямого напряжения на переходе база-коллектор (Б-К).