Тригонометрия починилась

Уважаемый digitalinvitro помог найти проблему с неработающим переключателем меры углов, и вот в прошивке 0.6.18b все заработало. Нажатие на кнопку Р-ГРД-Г переключает меру углов циклически, внизу фото команд 27 F SIN с разными мерами углов рядом с прародителем:
Рад
Грд
Г

Метки публикаций: 

Комментарии

Экран МК61S мне больше нравится. Цифры лучше читаются, есть индикатор заряда батареек. Градусная мера тоже приятно, что отображена.

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

Индикатор батареи - весьма нужная вещь, однако, он занимает сейчас непропорционально много места. Я бы предложил использовать одно знакоместо и 4 переменных символа в нем:

 1    2    3    4
□□□  □□□  □□□  ■■■
□□□  □□□  ■■■  ■■■
□□□  ■■■  ■■■  ■■■
■■■  ■■■  ■■■  ■■■

Такая возможность есть по умолчанию на айфоне, но я всегда меняю её на проценты. Мне так удобней. Да и не особо много для чего ещё требуется место в строке статуса.

К сожалению, для такого индикатора не хватит пользовательских символов экрана. Драйвер позволяет определить 8 символов, которые могут отображаться одновременно. Поэтому при старте калькулятора загружены 8 глифов, из которых рисуется заставка, а после этого загружается "кодовая таблица ПМК":

const uint8_t customCharPmk[CUSTOM_CHARS][CUSTOM_CHAR_BUF_SIZE] = {
    { 0x1F, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x00 },       // П #0
    { 0x1F, 0x10, 0x10, 0x10, 0x10, 0x10, 0x10, 0x00 },       // Г #1
    { 0x11, 0x11, 0x13, 0x15, 0x19, 0x11, 0x11, 0x00 },       // И #2
    { 0x11, 0x11, 0x11, 0x0F, 0x01, 0x01, 0x01, 0x00 },       // Ч #3
    { 0x1F, 0x10, 0x10, 0x1E, 0x11, 0x11, 0x1E, 0x00 },       // Б #4
    { 0x15, 0x15, 0x15, 0x15, 0x15, 0x15, 0x1F, 0x00 },       // Ш #5
    { 0x06, 0x0A, 0x0A, 0x0A, 0x0A, 0x1F, 0x11, 0x00 },       // Д #6
    { 0x00, 0x18, 0x04, 0x1C, 0x10, 0x0C, 0x00, 0x00 }        // ^2 #7
};

Как-то жертвовать 4-мя символами отсюда ради индикатора батареи жалко. И, как сказал уважаемый AtH, многим нравятся проценты, я тоже в компе всегда ставлю проценты.

Опять же, статус-строка сейчас большая, 640 килобайт 20 символов хватит всем :) В левой части строки появляются "F" и "К" при нажатии на соответствующие клавиши, примерно как в Андроид-эмуляторе.

А нельзя ли генерировать символы на лету? С точки зрения эргономики занимать треть строки статуса второстепенным сообщением о состоянии батарейки очень не рекомендуется. Крайний вариант: один символ индикации уровня и две цифры рядом.

Символы на лету можно перегружать - в память контроллера дисплея эта табличка залетает почти мгновенно. Тут проблема в другом. Допустим, на экране написано:

    ГРД    БАТ:61%

Как только мы загрузим другие символы, старые символы, которые уже на экране, тоже заменятся. А поскольку значок батарейки всегда нужен, получится, что только один вариант - пожертвовать чем-то из нынешней "кодовой таблицы". Я не помню, зачем "Ч" в таблице, может, это заменить значком батарейки?

P.S. Кстати, Сергей не зря задумался о месте в статус-строке. В МК61S есть часы реального времени с батарейкой, в принципе, можно дату и время выводить, как в DM42

Да, выводить время было бы неплохо, как и секундомер, стартующий автоматически при запуске программы. Предлагаю такую компоновку в режимах АВТ/ПРГ и счета:

ГРД 12:05 АВТ 00:10 Б80
ГРД 12:05 ПРГ       Б80
ГРД 12:05     00:10 Б80

где "Б" - символ-значок батареи
в режиме АВТ секундомер показывает результат последнего запуска

не влезает в 20 символов строки экрана:

01234567890123456789
ГРД 12:05 АВТ 00:10 Б80

«Ч» используется в команде К СЧ.

Дополнительный символ батарейки не нужен. Когда место действительно понадобится для другого, можно убрать «БАТ:» и оставить просто «61%».

Для режима АВТ и счёта по программе есть символы ⏸ и ▶ (19 и 16 в кодировке ЭКВМ). В режиме программирования строки экрана дефицит — чем больше шагов получится декомпилировать и отобразить, тем лучше.

К СЧ. И не заменить цифрой "4", так как она именно так и выглядит на экране LCD.
Короче, оставлю просто проценты батареи.

Для режима АВТ и счёта по программе есть символы ⏸ и ▶ (19 и 16 в кодировке ЭКВМ)

Вся проблема в знакогенераторе ЖКИ, там ограниченный набор символов. Надо поизучать внимательно, что там есть.

Пока варианты статус строки без часов реального времени (ибо это неизвестно когда добавится). F и K появляются после нажатия и стираются следующей нажатой клавишей:

01234567890123456789
F ГРД АВТ        61%
К  Р  АВТ        61%
К  Г  ПРГ        61%
   Г  АВТ        61%

P.S. Вспомнил, что уже постил сюда знакогенератор. У меня "японская" кодовая таблица А00.

Вот этот символ, интересно, потянет на "Ч"? Если да, то значок батарейки можно нарисовать:
Ч

Мне не по нраву уродовать русскую букву, одно из главных преимуществ архитектуры, ради сомнительно нужной иконки батарейки. И так часть русских букв будет заменена похожими латинскими. Японская псевдо-«Ч» ситуацию в лучшую сторону не исправит.

Неужели у индикатора нет граф. режима? Странные люди его разрабатывали…

Ага,поганенько выглядит, не буду менять.
У индикатора нет графического режима, потому что это алфавитно-цифровой индикатор.

Алфавитно-цифровые дисплеи — зло. С другой стороны, с Википедии:

Two versions of the ROM have been developed:

▪️ HD44780UA00, the standard (Japanese) version, which includes katakana characters and some Greek letters and mathematical symbols
▪️ HD44780UA02, a European version, which includes the complete set of Greek, Cyrillic and Western European characters (with diacritics)

Почему бы не заказать версию с полноценной «кириллицей»? Там 8 символов можно потратить на что-нибудь полезное, вроде логических операций и преобразования форматов.

Зло, согласен, зато большие и дешевые. А цена всего было не последним фактором.

Дисплеи с кириллицей на алиэкспрессе навскидку не нашлись, так что будем выкручиваться латинской частью знакогенератора и динамической подменой пользовательского знакогенератора (почувствуй себя немного в демосцене :)

В следующей MK61 (если дело дойдет), конечно, должен быть графический экран

Динамические игры, скорее всего, не получатся, так как в МК61S движение переключателя всегда "по часовой стрелке"

какой получился по используемым ресурсам памяти, флеш?
Может, имеет смысл, в прошивку добавить ещё какой нибудь Форт и возможность на него переключаться. :)

Еще полно места в микроконтроллере:

Mk61sApp/Debug
	Size    Free       Used     Usage (%)
RAM     128KB   121,5KB    6,5KB    5.08%
FLASH   512KB   445,16KB   66,84KB  13,05%
Mk61sApp/Release
	Size    Free       Used     Usage (%)
RAM     128KB   121,5KB    6,5KB    5.08%
FLASH   512KB   463,77KB   48,23KB  9,42%