vak: (Улыбка)
Serge Vakulenko ([personal profile] vak) wrote2014-01-18 10:35 pm

Калькулятор вполне работает

Самодельный калькулятор МК-54 с наклейками на клавиши.

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

(1) Прошивка переделана на МК-61. Это ее немного замедлило, так как приходится моделировать три микросхемы ИК13 вместо двух. Впрочем можно собрать и МК-54, добавив флаг -DMK_54 в Makefile.

(2) Программа сохраняется в flash-памяти микроконтроллера, так что отключение питания ее не стирает.

(3) Наступила определенность с выбором микроконтроллера: PIC32MX220F032B. На microchipdirect такой стоит $2.74. Flash-память команд размером 32 кбайт используется на 91%. Память данных 8 кбайт вообще с избытком. Старшие модели MX230F064B и MX250F128B тоже годятся. Готовую прошивку можно взять здесь: mk61-mx220-12mhz.hex.

(3) Наклейки на кнопки несколько улучшили внешний вид. Наклейки печатались посредством цветного принтера на самоклеящейся бумаге 3M и обрезались ножницами. Поверх наклеивался дополнительный защитный квадратик скотча. Выглядит неидеально, но вполне надежно.

(4) Добавлен протокол общения с компьютером через USB. Тип устройства USB HID не требует установки драйвера под Windows. Идентификаторы устройства VID/PID = ca1c/0061 для МК-61 и ca1c/0054 для МК-54. Протокол очень простой: шлем устройству пакет в 64 байта, ожидаем 64 байта в ответ.

(5) Сделана утилита pmktool, которая умеет показывать текущий стек, регистры, программу, и загружать новую программу по USB. Содержит простой ассемблер и дизассемблер. Утилита в стиле command line, работает под Linux, Windows и Mac OS X. Готовый бинарник для Windows есть здесь: pmktool.exe. Исходники открытые: желающие могут добавить GUI.

(6) В качестве пробы ассемблера была адаптирована самая первая из известных игр для МК-61: "Колхоз", позднее известная как "Остров". Оригинал можно посмотреть на сайте Евгения Кузниченко, адаптированный текст здесь.

(7) Для оценки скорости вычислений был запущен классический тест "8 ферзей", взятый с сайта Сергея Тарасова [livejournal.com profile] arbinada. Адаптированный текст здесь. Время выполнения составило 1 час 19 минут 30 секунд. Известно, что на оригинальном МК-56 потребовалось три часа девять минут, то есть реплика в 2.4 раза быстрее.

(8) Написан тест, демонстрирующий забавную недокументированную особенность калькуляторов этого семейства: главные и побочные ветви выполнения. Поведение в точности соответствует ожидаемому. Спасибо [livejournal.com profile] 1500py470 за подсказку.

(9) Измерен ток потребления: от 29 до 35 мА, в зависимости от количества светящихся разрядов на индикаторе. При емкости батареек 2000мАч получится порядка 60 часов работы. Оригинальный МК-61 кушает 90 мА.

(10) Проект перенесен на отдельный сайт: https://github.com/sergev/mk-61. Там сложены все исходники и документация, а также принципиальная схема (PDF) и чертежи разведенной платы, готовые к производству (replica61.zip).

Предыдущие сообщения:
http://ramlamyammambam.livejournal.com/266692.html
http://ramlamyammambam.livejournal.com/266277.html

Post a comment in response:

This account has disabled anonymous posting.
If you don't have an account you can create one now.
HTML doesn't work in the subject.
More info about formatting

If you are unable to use this captcha for any reason, please contact us by email at support@dreamwidth.org