Показаны сообщения с ярлыком MK-90. Показать все сообщения
Показаны сообщения с ярлыком MK-90. Показать все сообщения

29.10.2010

SMPReaderUSB - frontend?

Очередной экземпляр SMPReaderUSB благополучно завелся у нового владельца со штатными СМП от МК-90, так что теперь уже точно понятно, что он 100%-но работоспособен не только с моими СМП. 

Снова возник вопрос написания графического UI, хотя бы даже и в виде frontend-а к CLI-утилите, которая сейчас выполняет чтение, запись и замер напряжения батареи. Размышляю про Java - чтобы получилось кроссплатформенно. Все-таки опыт работы с ArduinoIDE и PDE оказал существенное влияние на мое неокрепшее сознание ;) 

Также зреет идея по превращению этого устройства в имитатор СМП, то бишь интерфейс между МК-90 и "большим братом". Страшно подумать, сколько может образов влезть на HDD ;) Впрочем, это самый туманный вопрос - неясно, будет ли успевать low-speed bulk transfer и libusb за тактовой МК-90 - протокол обмена построен так, что картридж в принципе не может попросить притормозить обмен :(  

27.11.2009

SMPReaderUSB - финальная версия

Финальная версия устройства чтения / записи модулей памяти Электроника МК-90. От начальной идеи, оно неспешно эволюционировало в законченный девайс:



Файлы:

  • Для тех, кто в море под Windows: скачайте программу-инсталлятор, она установит драйвер, необходимые dll-ки и саму программу чтения/записи;
  • Полный архив с исходниками firmware и software, схемой и разводкой односторонней печатной платы в Eagle (последние под лицензией Creative Commons Attribution-Share Alike 3.0 Unported);
  • Для тех, кто хочет изготовить печатную плату: файл eps (extended postscript). Загрузите его с разрешением 720 dpi в Photoshop или Gimp, что гарантированно даст качественный отпечаток.
Поддерживается также и Linux (он теперь всегда поддерживается, живу я теперь в нём ;)  В архиве бинарники, собранные под Ubuntu 9.10. Искренне прошу прощения, что не сделал полноценный пакет .deb, но компиляция элементарна: надо поставить libusb-dev и g++, а потом запустить make.sh.

Использование:
  • Чтение образа СМП: 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 в прежнее положение, отключить питание.
При следующем включении заработает новая прошивка.

Предупреждаю, что схема несовершенна, поэтому при подключении модуля начинает слегка расходоваться его батарея. Посчитав усложнение схемы неоправданным, предлагаю взять за правило: попользовался - отключи! Тем более, что модуль в большинстве случаев используется именно для хранения данных или их переноса между PC и МК-90.

Как всегда, буду рад конструктивной критике и глупым, но грамотно сформулированным  вопросам ;)

Кстати, уважаемый smallkaa в комментах уверял меня, что low speed bulk-transfer mode под Linux неработоспособен. Мне кажется, что это мнение все-таки устарело ;)

25.10.2009

Печатная плата для SMPReaderUSB

Меж тем кард-ридер, GIMP и Picasa в строю, уже могу постить фото:



После нескольких неудачных итераций, родилась печатная плата для SMPReaderUSB. Кроме технологии ЛУТ, освоил также работу со сплавом Розе, залуживание происходит быстро и красиво.

15.10.2009

Продается МК-92

Продается Электроника МК-92. Это - один из считанных экземпляров, изготовленных в качестве опытных образцов, но так и не запущенных в опытное производство:









Как видите, в состав входит Электроника МК-90, являющаяся неотъемлемой составной частью комплекса. Основные отличия:


  • Бейсик 2.0
  • возможность записи на кассетный магнитофон
  • четырехцветный плоттер
  • вывод на бытовой телевизор (не реализовано до конца - все-таки опытный экземпляр, но телевизор можно переделать, есть схемы ;)






Продавец - Роман Широков, знаю лично и готов поручиться.

[[Ссылка]] на аукцион (заканчивается 29.10.2009 в 14:35).

UPD: продано...

30.09.2009

SMPReaderUSB в корпусе

Наконец-то руки дошли до дрели и этикеточного принтера, убрал smpreaderusb в корпус:



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

Подумываю о печатной плате, а вдруг все-таки кому-то понадобится?

25.09.2009

Продается МК-90

Продается Электроника МК-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

Итак, представляю устройство чтения-записи картриджей сменной памяти СМП/МПО для микроэвм Электроника МК-90.

Ключевые особенности разработанного устройства:
  • совместимо с шиной USB 1.0;
  • читает и записывает образы картриджа СМП;
  • измеряет напряжение внутренней батареи;
  • легко повторяется самостоятельно.
Основу устройства составляет МК ATmega8-16PU, для программной поддержки USB использована реализация V-USB от Objective Development. Для управления с PC используется хост-программа smpusb, которая позволяет:
  • читать содержимое СМП в файл
  • записывать образ из файла в СМП с проверкой
  • показывать напряжение батареи и предупреждать о разряде
  • работать через интерфейс командной строки
  • выводить сообщения на stdout (описаны все коды завершения)
  • работать с с Windows XP, Vista, потенциально переносима на Linux
Для Linux требуется установка libusb, для Windows - libusb-win32,

Предупреждение: на Vista ставить в режиме совместимости с Windows XP, иначе сразу "лишитесь" всех USB-устройств.

Как всегда, начинаю с результата: 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


Пояснения к схеме

Если под рукой нет ATmega8-16PU, без изменений в схеме можно использовать ATmega48-16PU, ATmega168-20PU, ATmega328P-PU (однако, потребуется перекомпиляция firmware и другие значения фьюз-битов). Важная особенность тактирования: подходит только кварц, заменять его на калиброванные RC-цепочки и керамические резонаторы нельзя. Если нет кварца на 12 МГц, можно использовать 16, 18 и 20, но в этом случае надо исправить значение константы F_CPU в файле make_config.h и перекомпилировать firmware.

Потенциально возможно использование ATtiny2313-20PU, если пожертвовать функцией измерения напряжения батареи (в этом МК нет АЦП, да и памяти у него всего 2К).

МК питается от напряжения +5В, при этом согласование с сигнальной шиной обеспечивают стабилитроны D1, D2, которые должны быть 3V6 и не более 0,5Вт. Перенебрежение этими условиями может сделать обнаружение и обмен по шине нестабильными, более подробно можно почитать здесь и еще рекомендую обратиться к стандарту USB.

Мощность всех резисторов – 0,25 Вт, допустима погрешность ±5%. Резисторы R3, R4 и R5 – токоограничительные, для обычных светодиодов подойдут 330, 470, 1К. Конденсатор C4 фильтрует помеху по питанию, при использовании внутреннего супервизора питания ATmega, его емкость может колебаться в пределах 10...100 мкФ, устанавливайте максимально близко к разъему USB.

Для формирования напряжения 1,235 В с точностью ±1% используется элемент D3, LM385-1.2. Будьте бдительны: микросхема выполнена в корпусе TO-92, использованы два вывода из трех. Тем не менее, в некоторых даташитах дано неверное расположение выводов, например нарисованы 1 и 2, а на самом деле надо брать 2 и 3 (можно легко определить при помощи вольтметра). Поскольку этот элемент способен работать при токах до 10 мкА, номинал R9 может быть 10..47К.

Разъем программирования ICSP стоит устанавливать исключительно по желанию: не исключаю, что будут обновления firmware. Поэтому, если паяете МК без панельки – настоятлельно рекомендую ;)

После прошивки МК не забудьте установить фьюзы согласно документации.

Пояснения к работе с host-программой

Если все собрано правильно, то после подключения к шине USB Windows радостно сообщит об обнаружении нового устройства. Самое время установить драйвер libusb-win32, который существует в двух вариантах (выбирайте один из двух!):

1. Фильтр. Скачиваете установочный файл libusb-win32-filter-bin-x.x.x.x.exe и запускаете его на выполнение – для Vista надо сначала открыть его свойства и выбрать "Режим совместимости с Windows XP SP2" и "запуск от имени Администратора". Если вы из тех, кто читает мануалы, когда что-то не получается, то сейчас должны наблюдать печальную картину: все устройства USB, как один, перестали работать. К счастью, это не смертельно: через меню программ можно сделать uninstall и повторить установку согласно описанию выше.

2. Драйвер. Скачиваете архив с драйвером libusb-win32-device-bin-x.x.x.x.tar.gz, распаковываете. Подключите готовое устройство к шине и запустите inf-wizard.exe, который выкинет список устройств, ищите в нем VendorId= 0x16c0 и ProductId=0x5dc. Пройдите все шаги до конца, сохранив необходимый inf-файл под каким-нибудь именем. Теперь зайдите в Device Manager, удалите устройства, которые обозначены вопросиком и вновь отсканируйте шину (или просто переподключите устройство). Вот тут-то на риторический вопрос Windows "Что делать?" по поводу нового устройства, предложите ему сделанный на предыдущих шагах inf-файл.

Совсем подробные инструкции расписаны в секции Installation, в будущем постараюсь включить драйвер в один архив с проектом.

Запустите команду чтения напряжения:

smpusb voltage

в ответ вы должны получить текущее значение, положительное число от 0 до 3 В. Далее, чтобы прочитать образ картриджа:

smpusb read –f mk90.bin

Соответственно, чтобы записать:

smpusb write –f mk90.bin

При записи и чтении горят соответствующие светодиоды RX и TX.

Возможные неприятности:

USB error – проверьте, установлено ли у вас libusb-win32 и насколько корректно это сделано.

Could not find USB device "SMPreader" with vid= 0x16c0 pid=0x5dc – проверьте еще раз корректность сборки устройства и надежность его подключения к шине USB.

Поскольку я лицензировал поддержку USB у Objective Development по бесплатной схеме, то используется общее для всех устройств VID и PID, хост-программа пытается выбрать то, у которого строка названия продукта возвращается как "SMPReader". Кстати, из этого вытекает, что два SMPReader-а нельзя использовать одновременно, но кому такое может понадобиться?..

Остальные ошибки связаны с файловым вводом-выводом и относительно понятны, длинные имена файлов, особенно с пробелами, надо заключать в двойные кавычки.

В случае необходимости, можно попробовать добавить ключ –d, выводящий дополнительные отладочные сообщения.

Производитель СМП указывает, что минимальное напряжение, которое гарантированно обеспечивает хранение информации в СМП составляет 2.6 В, поэтому программа будет выдавать предупреждение о том, что оно ниже 2.7 и 2.6 В. Но по практике у меня случалось, что оно опускалось и до 1.8 В с сохранением информации, поэтому можно выключить это предупреждение ключом –p.

Поскольку я являюсь поклонником командной строки, то предоставляю возможность написать GUI желающим, все коды выхода описаны исходнике программы.

Пользуясь случаем, хочу поблагодарить Piotr Piatek-а за хак и публикование алгоритма обмена с картриджем СПМ МК-90. Если вы находите мой вариант устройства сложноватым, можете попробовать более простой вариант, который подключается к LPT-порту. Более подробно можно почитать здесь и здесь.

В заключение пара слов про минусы проекта:
  • отсутствие GUI
  • нет печатной платы
  • драйвер надо ставить отдельно
  • недостаточная проработка вопроса совместимости c Linux
  • не помешал бы консольный Makefile для сборки через nmake.
Постараюсь постепенно добавить все это в будущем, но буду признателен за любую помощь от энтузиастов ;)

28.07.2009

Анонс

Приношу извинения своим постоянным читателям за вынужденную паузу в подготовке материалов. А всё из-за нового устройства:



Девайс подключается к шине USB 1.1 и способен не только читать и писать образ картриджа СМП Электроника МК-90, но еще и показывать напряжение на внутренней батарейке модуля. Почти готово, в настоящий момент дорабатываю вопрос о том, сколько и какого цвета будет светодиодов и как они должны мигать ;)

Само собой, схема, sources и firmware будут опубликованы под cc-sa, в скором времени ;)

14.11.2008

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

Изначально калькулятор достался мне с неработающим звуком. Твердо решив докопаться до причины, я полез за отверткой. Калькулятор разобрался на две аккуратных половинки:



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



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

Колесико регулировки контрастности крупным планом:



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



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



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




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



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

Напоследок, крупным планом кусочек платы от разъема питания. Вверху - контроллер , отвечающий за клавиатуру.

12.11.2008

У страха глаза велики

Обратил внимание, что один из модулей СМП работает как-то нестабильно (ошибки записи/чтения в программаторе СМП на Arduino). Выяснилось, что напряжение на батарейке упало до 0,7В.

Пошел покупать новую батарейку, но элементов 2016 не было, взял от отчаяния 2025 и 2032. Они несколько толще, но я постарался и запихнул 2025. Тут выяснилось, что СМП вообще не работает - кажет все единицы. Причем, и в МК-90, и в программаторе.

"Подох", - подумал я и полез искать элементную базу (КА1835ВГ2, КА537РУ10Б) в интернет-магазинах. Что самое поразительное - нашел! Но прежде, чем нажимать на кнопку "отправить заявку", решил проверить последний раз - не установил ли я батарейку как-то криво.

Модуль великолепно заработал в калькуляторе со снятой батареей. Мораль: у страха глаза велики ;) Сижу, думаю - оформлять мне заказ на антикварные микросхемы завода "Интеграл" или нет... А вдруг придется ремонтировать, не дай Бог?

07.11.2008

Читалка СМП на Arduino

Мне удалось заполучить LilyPad Arduino Main Board (полную историю про это читайте здесь), с микроконтроллером ATMega168V и способ быстро подключить его к СМП МПО-10. В итоге получилась читалка/писалка СМП через USB. Ингредиенты этого рецепта:
  • Arduino Board
  • Свободный USB-порт
  • Вилка PLS-6R и 5 проводков для подключения СМП
  • ПО: Arduino IDE, FTDI drivers, Perl с модулем Win32::API, модули Win32::SerialPort, Win32::CommPort
  • Результаты моей работы - программа-sketch для Arduino Board + скрипт на Perl
Теперь разберем последовательно (по шагам):

1. Надо достать Arduino. Плата LilyPad Arduino Main Board попалась мне почти случайно, в основном я купился на возможность приехать с наличными и тут же получить товар. К ней необходим USB Serial Converter, который надо правильно соединить с Arduino 4-х пиновым кабелем минимальной длины. Если вам повезло, и в вашем распоряжении полноценная Arduino-совместимая плата, то к ней ничего не надо - там USB есть прямо на плате.

В моем случае, это выглядит так:


2. Подключите СМП к цифровым входам Arduino (номера pin-ов на СМП согласно картинке, а на Arduino они подписаны):



СМПНазначениеArduino
2Vcc +5V"+5V"
3CLOCKPin 7
4DATAPin 6
5SELECTPin 5
6Gnd"-"

Замечание: батарею (1-ый пин СМП) никуда не подключаем, пины Arduino - цифровые (не путать с аналоговыми).

3. Скачайте и установите Arduino IDE. Попутно установятся драйвера USB-чипа и в системе появится виртуальный COM-порт, его номер надо запомнить.

4. Запустите Arduino IDE. При первом запуске надо установить номер COM-порта из п.3, а также тип платы. Теперь можно открыть исходник (или sketch, "набросок") с моей программой чтения/записи СМП (sketch_081102b.pde в отдельном подкаталоге). Откомпилируйте (клавиша со стрелкой) и загрузите результат в Arduino (нажать кнопку сброса на плате, не позже 5-ти секунд после этого - датйте Arduino IDE команду Upload). Если все в порядке, микропрограмма стартует и зажжет на Ardino тестовый светодиод (подключен к 13-му цифровому выходу).

5. Установите Perl. Для Windows можно воспользоваться дистрибутивом ActiveState Perl. Установить модуль Win32::API через ppm. Далее скачать со CPAN Win32::SerialPort, распаковать в текущий каталог (на всякий случай, я включил его в архив с моей программой).

6. Впишите номер COM-порта (см. п.3) в мой скрипт (в самом начале, переменная $com_number). Например, если у вас FTDI-драйвера "уселись" на COM13, пишите $com_number = 13;

7. Подключите СМП к Arduino, затем Arduino к USB.

8. Запускайте скрипт:

arduino_smp.pl read MK90.BIN

Если все нормально, то через несколько секунд вы получите файл с бинарным имиджем СМП, который можно подключать к эмулятору МК90. Если вместо read написать write, то файл будет записан и прочитан для проверки. Запускать ее до готовности Ardino не имеет смысла, а если прервали по Ctrl-C - не забудьте сбросить Arduino, все-таки sketch крайне примитивный.

Я экспериментировал на скорости 38400, это можно изменить. Меняйте константы в скрипте и в sketch-е одновременно (устанавливайте одинаковые скорости!). При написании sketch-а использованы исходники программы чтения/записи by Piotr Piatek (правда в одном месте пришлось поправить), за что ему отдельное спасибо, потому что, на самом деле, я просто адаптировал его работу для Arduino.

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

05.11.2008

Подмосковные вечера на МК90

Добавил в подборку программ из руководства программу PLAY.BAS, которая приводится на 55-ой странице и проигрывает "Подмосковные вечера". Заодно обновил образы СМП для Бейсика 1.0 и 2.0.

25.10.2008

Другой программатор СМП

Презентую более аккуратно собранный вариант читалки СМП:



Как нетрудно догадаться, использованы бескорпусные СМД-резисторы и транзисторы:



Выглядит очень компактно, можно убрать в корпус или (что гораздо проще) в термоусадночную трубку.



21.10.2008

Процессор

Процессор МК-90 состоит из трех основных компонент:
  • КА588ВС2 - 16-разрядное арифметическое устройство
  • КА588ВУ2 - Память микрокоманд
  • КА588ВГ1 - Системный контроллер
Серия 588 основана на энергоэкономичной КМОП-технологии, уровнями сигналов ТТЛ, может работать в диапазоне от -10 до +70 C, питается от 4,75 ... 5,25 В. Практически в каждом втором справочнике упоминается, что серия совместима по набору команд с "Электроника-60".

АУ 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)

Будем использовать готовый вариант от Piotr Piatek. На всякий случай, если оригинал станет недоступен, дублирую его здесь:


Комментарии к схеме от автора Piotr Piatek:

Картридж МПО можно читать и записывать с помощью простой схемы, подключаемой через LPT-порт. Требуется внешний источник питания +5В, можно взять с клавиатуры, PS/2 порта, USB.

Подойдут любые NPN-транзисторы общего назначения, например 2N3904, BC547.

Фотография макета автора Piotr Piatek:


Как мы видим, схема действительно несложная: четыре ключа на транзисторах. Кусок самой простой макетной платы, на нем размещено четыре каскада, разъемы LPT-порта, модуля СМП и питания. Также на схему не попал конденсатор (для поглощения помех по питанию).

Составим приблизительный список деталей для устройства.

Основные элементы:
  1. С1-4 0.25 Вт, 5% 22 кОм - 8 штук
  2. С1-4 0.25 Вт, 5% 2.2 кОм - 4 штуки
  3. 2N3904 (КТ6137А) TO92 - 4 штуки
Я использовал "советские" резисторы 0,125 Вт, которые мне удалось раздобыть на рынке Юнона, а в качестве транзисторов - BC547С TO92.

Разъемы:
  1. DRB-25MA вилка на плату 25pin - 1 штука
  2. PLS-6R вилка штыревая 2.54мм 1х6 угловая - 1 штука
  3. USBB-1J розетка на плату, тип B - 1 штука

Как называется разъем на макете автора, я не выяснял, а просто взял коннектор типа PLS. Если нет угловой вилки PLS-6R, можно откусить нужное количество от "большой" вилки или даже взять несколько с меньшим количеством ножек:


Разъемы для крепления на плату чуть меньше распространены, чем такие же, но на кабель, поэтому можно взять и DB-25M, но тогда надо позаботиться и о небольшом кабеле на 5 проводов. Лучше всего будет смотреться ленточный провод, наверняка у вас завалялся ненужный шлейф от дисковода ;)

Если разъем USBB-1J оказался недоступен, можно порезать первый попавшийся под руку ненужный кабель USB от КПК ;)


Если смотреть на транзистор как на этой фотографии - эмиттер будет справа, база по середине, слева - коллектор. Кстати, тут нашел неплохое описание, как выяснить цоколевку NPN-транзистора в отсутствии документации. Получается, что так:

  1. Включить мультиметр в режим измерения сопротивления на предел шкалы 1 кОм, или в специальный режим, отмеченный значком диода.
  2. Сначала надо определить базу. Если проводимость транзистора n-p-n, то базой будет тот вывод, который "звонится" на два других при подключении к нему щупа с положительной ("+" то есть) полярностью испытательного напряжения (для транзистора p-n-p-типа - полярность обратная). Численные значения прямого напряжения на переходах будут равны: 400 – 800 мВ для кремниевых транзисторов; 100 – 300 мВ для германиевых транзисторов.
  3. При определении выводов коллектора и эмиттера можно придерживаться простой закономерности: прямое напряжение на переходе база-эмиттер (Б-Э) всегда на несколько милливольт выше прямого напряжения на переходе база-коллектор (Б-К).
(прямое напряжение показывает современный мультиметр в режиме "диод").