User login

You are here

Ардуино-BASIC недокомпьютер

  • UPDATE #4: Архив Github проекта "stm32basic с SD-картой и PS2-клавиатурой", принципиальная схема тут. Прототип на макетке:
    stn32basic_sd_ps2_#1
    stm32basic_sd_ps2_#2
  • UPDATE #3: Исходные тексты Arduno Nano BASIC с pushbutton клавиатурой и JPEG схемы клавиатуры. Тут дополнение - схема подключения пинов KBD_0...KBD_4.
  • UPDATE #2: Файлы (исходные тексты и схема в формате KiCAD) stm32BASIC c PS2 клавиатурой в зип.архиве. Схема stm32BASIC c PS2 клавиатурой в JPEG файле (наспех склеенная, так как некогда было искать stm32 bluepill KiCAD библиотеку).
    А здесь форкнут мой старый Гитхаб проект stm32BASIC с pushbutton клавиатурой.

====================================================================================

UPDATE #1: переход на платформу stm32f1.

====================================================================================
Около-калькуляторный недокомпьютерный шилд для Ардуино-Наны. Питание от одной АА батарейки через бустер, SPI SRAM память на 128 кБайт, I2C алфавитноцифровой дисплей 20x4, 8x5 матрица кнопок.
20x4

Далее идут фото со старым дисплеем 16х2:
keys
arduina
arduina2

  • Проект на гитхабе.

Как видно нормальная клавиатура самодельщикам нужна как воздух !!! Платка с MSP430 ??
Кстати, если выровнять кнопки, то можно и для этой платы напечатать корпус с толкателями :-)

Vitasam's picture

Нет, не msp430, это Ардуино-Нано с алиэкспресса, на Atmega-328 чипе

Клавиатура нужна как воздух! Я заколебался руками эту матрицу распаивать :)

Я кстати вот подумываю заставить 3D принтер печатать мне плёночки с трафаретами для намазывания пасты..хе хе. Для таких контактных площадок вроде не очень страшные допуски. А всякие TQFP можно и вручную напаять ???

Электромонтёр's picture

TQFP можно и вручную запаивать, но лучше под бинокуляром или в очках, я вполне успешно перепаивал микросхемы со 128 выводами и шагом 0,5мм, но выпаивать только воздухом.

Сайт

Vitasam's picture

Клавиатурный тест Basic-NANO работает.

kbd test

st's picture

Почти МК-85 в макете :)

Vitasam's picture

Следующий этап - портирование TinyBasicPlus. Надо переделать менеджер памяти Basic для работы с внешней SRAM. Чтобы при старте было что-то вроде:

64000 bytes free

.
Если TinyBasicPlus сюда не влезет, то переделаю этот шилд на stm32f103 - перепайка будет минимальная.

Представляю такой девайс с две визитки :-)

Vitasam's picture

Главное - софт отладить, а железо можно развести какое надо

Когда более мощное железо дешевле и проще использовать, чем слабое и низкопотребляющее.
Казалось бы прилепи Raspberry Pi Zero и вот тебе комп с любыми штуками, даже системы компьютерной алгебры вроде Максима пойдут. Всё это подрубает стимул мучиться с контроллерами и писать на голую.

Vitasam's picture

Воткнул - и тебе честный линукс, и графика, и Octave с Питоном и Матплотом.
А хочется 8-битного Бэйсика :)

А ещё на мини клон ZX Spectrum всё время тянет. Если сделать дешёвый эмулятор на контроллере, да запихать в детский ноут - была бы тема!

Vitasam's picture

Мини-клон ZX Спека я давно хочу. Есть такое вот (я даже с автором когда-то общался):
http://good-kits.ru/nabory-bloki-i-moduli/zx-spectrum/radiokonstruktor-a...

Под AVR там кажется требуется два контроллера, один занимается видео, другой ЦПУ - эмулирует Z80. По идее себестоимость должна быть смехотворная. Под STM32 ещё лучше, но F4 довольно дорогая серия, портировать бы под копеечные F1. В идеале впихнуть Спектрум во что то габаритов тетриса, только сделать порт для клавиатуры, джойстика и подключения к телевизору.
Глядя на детские игрища могу сказать, что карапузам плевать на чём рубиться, они графеном не сильно испорчены. Правда не уверен, что это утверждение верно для школоты старше начальных классов :-) Для программирования простых вещей там хорошо Барсик вписался и другие языки есть, вплоть до Форта. Для киндеров, которые ещё читать не умеют, можно подобрать игры и развивающие программы, рисование музыка и т.п. Для школьников - обучение счёту и т.п. Всё такие там потенциал в 1000 раз выше, чем в детских "ноутбуках", которые даже не являются компьютерами ! Вот вам и прямой конкурент МК-161 :-)

Для AVR это как бы не того самого чувака исходники.

STM32F429DISCO у меня такая борда есть и исходники я скопировал:
https://www.youtube.com/watch?v=_adQIfOoyS0

Такая отладочная плата стоит сейчас на Али 2500 рэ:
ИМХО перебор. Ну и неприятно, что они скоро вообще исчезнут,а хотелось бы стабильности производства :-)
Не знаю можно ли так же быстро рисовать на самый ходкий китайский Ардуино экранчик (сенсорный!), который у китайцев продаётся ~300 рублей. По идее у спека требования по быстродействию не очень, может быть можно втиснуть в такой экранчик. Тогда берём STM32 или пару AVR + 64Кb SRAM и получается портативный спектрум, клавиатура в комплект не входит :-)
В общем бюджет деталей в розницу приближался к 2500 рублей за отладку, где всё уже готово и я задумался. Уже год думаю :-)

Есть есть шанс использовать дешёвый экранчик за 300 рэ, то можно взять такой
https://ru.aliexpress.com/item/Core407V-STM32F407VET6-STM32F407-STM32-AR...
Модуль и приделать к нему экранчик, по идее переделка с STM32F429 не должна быть сильно трудоёмкой. Но и так без корпуса и клавиатуры получаем железа на 1300 рублей. Хотелось бы чтобы оно втиснулось в стоимость дешевого детского ноута, т.е. всё целиком было не дороже 2000 рэ :-) Это повод задуматься тем кто считает цену ~15 тыр за МК-161 нормальной, ведь спек куда круче МК по функционалу !

Vitasam's picture

Да, в той AVR платке, вроде, даже 3 аврки - одна отвечает за видео, вторая эмулирует Z80, а отдельно втыкается микроплатка с эмулятором аудиочипа.

Тут вот интересный проект на Распи.

И тут. :)

Не будет кустарная вещь стоить дешевле массово производящейся. Позиционировать результат в 2к₽ означает убивать его на корню. В этом плане МК-161 за 15к₽ добрее к конкурентам. :-) Хотя их всё равно нет.

Спектрум многим дорог, как память. Но это импортная разработка. В России он интересен разве что тем, у кого в детстве не было отечественных игрушек вроде ПМК — развить которые до уровня Спектрума сравнительно несложно.

http://multicore.ru/index.php?id=1353

На в России всё что "выпускается" достать очень трудно.

Электромонтёр's picture

Я в начале декабря звонил в Элвис, стоимость платки оказалась 170 (сто семьдесят) тысяч рублей. Эльбрусовский монокуб в 2015 что-то порядка сотки стоил.
Так что MB77.07 с ценником 4799.17 смотрится хотя бы досягаемо :) правда, с НДС 18% и доставкой у меня вышло 6343 рубля.

Сайт

Даже MB77.07 избыточен для ПМК. Обработку видео не имеет смысла делать, пока не отлажена и не освоена народом обработка аудио. Это следует хотя бы из того, что в видео бывает аудиодорожка.

ПМК сейчас должен быть нацелен на обработку оцифрованных сигналов до 100 КГц (аудио), и эта пустующая ниша даёт возможность для развития процессоров с отечественной системой команд.

Электромонтёр's picture

Для МВ77.07 есть только самые минимальные дебиан/распбиан прошивки. Драйвера имеющихся устройств есть, но использующих их программ почти нет. Можно использовать аппарат как линуксовый сервер, но собрать заведомо рабочий код для него мне не удалось. Хотя, народ пишет, на распберри всё собирается. Так что, сделать из него ПМК пока вряд ли возможно. Хотя, аппарат можно не выключать месяцами, народ писал что микрокомп нормально работал даже при -30°С, всё-таки кристалл для него Фуджитсу делал, а не Китай. Зеленоград, увы такой кристалл не осилил.
Для обработки звука нужно ДПФ/БПФ, а такая задача даже для 8 кГц частоты дискретизации требует ARM Cortex-M4F, автор проект вокодера на М4F сделал, но у него большая кодовая книга вышла.

Сайт

ARM не обязателен. БПФ можно запрограммировать на любом процессоре. Тем более, что обработка звука в реальном времени пока не требуется. На первом этапе достаточно оцифровки и воспроизведения, а обрабатывать можно без спешки.

Требования к памяти, конечно, есть. Особенно если хотим хранить часы 16-битного стереозвука 44/96 КГц. Даже 64-битный звук может понадобиться. Конечно, для ЦАП/АЦП даже 16 бит избыточны, но для качественной обработки хочется плавучку 32 бита минимум.

Если есть драйверы, поверх них можно запустить Каллисто (в Линуксе особой нужды нет) и начинать писать библиотеки. Но отечественная система команд интересней, чем ARM. -30°С это то, что нужно!

Электромонтёр's picture

Кроме ARM1176 СБИС К1879ХБ1Я содержит ещё ядро DSP нейропроцессора NeuroMatrix NMC3 отечественной разработки, ориентированное на цифровую обработку сигнала. Правда, я пока не разобрался толком как с ним работать. На недописи человек работавший с микрокомпьютером и мультиклетом пропал куда-то. Декстроплат тоже после 2015 новостей не публиковал. Модуль обещал в обозримом будущем новые материалы опубликовать.

Сайт

Интересно, сможет ли этот DSP работать с другим процессорным ядром? Тем, систему команд которого мы могли бы развивать без оглядки на Запад.

Отечественные разработки, если собрать их в ПМК, получат больше внимания. Им сложнее будет пропасть. Конечно же, и разработчики должны хотеть работать не в мусорную корзину, а для совершенствования и развития отечественных технологий.

Нужен отечественный процессор, на который смогут опираться те, кто приобретёт и изучит ПМК. В том числе использовать его в своих разработках.

Vitasam's picture

Нашел интересную библиотеку - можно подключать внешнюю память (SPI SRAM, SD-card и даже компьютер, подключенный через UART) и адресовать эту память естественным способом.

Проверил на своём шилде:

    char testbuf[] = "This is a test string buffer\nThis is a test string buffer\nThis is a test string buffer\nThis is a test string buffer\nThis is a test string buffer\nThis is a test string buffer\nThis is a test string buffer";

    // Allocate 128000 bytes in virtual memory and store the address to a virtual pointer
    VPtr str = valloc.alloc(128000);

    // Set first 65000 bytes to 'A'
    memset(str, 'A', 65000);
    Serial.print("Read from str[0]: "); Serial.println(str[0]);

    // Direct access to the buffer
    str[60000] = 'B';
    Serial.print("Read from str[60000]: "); Serial.println(str[60000]);

    str[126000] = 'C';
    Serial.print("Read from str[126000]: "); Serial.println(str[126000]);

    // Copy the whole buffer 
    memcpy(&str[127200], testbuf, sizeof(testbuf));
    memset(testbuf, 0, sizeof(testbuf));
    memcpy(testbuf, &str[127200], sizeof(testbuf));
    Serial.print("Read from str[127200]: "); Serial.println(testbuf);

    valloc.free(str); // Free the virtual memory

Результат:

Read from str[0]: A
Read from str[60000]: B
Read from str[126000]: C
Read from str[127200]: This is a test string buffer
This is a test string buffer
This is a test string buffer
This is a test string buffer
This is a test string buffer
This is a test string buffer
This is a test string buffer

Нативная поддержка 128КБ памяти из Бейсика становится ближе

Vitasam's picture

Нашел более полноценный Ардуино BASIC.

The BASIC supports almost all the usual features, with float and string variables, multi-dimensional arrays, FOR-NEXT, GOSUB-RETURN, etc. Saving and Loading from EEPROM is supported, as well as auto-running a program on power-up. You can also read and write from the analog and digital pins.

Заменил oled класс на I2C LCD класс, отключил PS/2 клавиатуру и внешний EEPROM - кое-как влезло в atmega368p:
arduino-basic

Теперь надо попробовать serial терминал в качестве клавиатуры, перед тем как добавить матрицу кнопок.

Имхо это уже сейчас выглядит перспективней МК! Корпусировать бы.
Экранчик большой многострочный. Красота!

Vitasam's picture

разводки полноценной печатки и изготовление ее где-нибудь у китайцев.
А там дальше как пойдет. Глядя на тот Arduino-Basic проект, захотелось второй шилд: под esp32 или stm32, с экраном 20х4 символа, они дешевые как семечки.

Мне даже формфактор нравится, для начала очень даже круто, захотелось самому творить :-)
Ждём новых фоток про ваш компьютер!

Vitasam's picture

Я, кстати, второй идеей обдумываю использовать этот же шилд, но воткнуть esp32 через плату-адаптер под другую разводку SPI, I2C и GPIO.

Корпус для текущего формфактора просит сделать удобный grip слева, где батарейка стоит. Удобно будет держать в левой руке :)

P.S. Заказал 20x4 ЖКИ, попробую заменить на этом шилде. Правда, будет некрасиво торчать из платы - экран длиннее

клавиатуры, это своего рода дизайнерская фишка будет :-)

Vitasam's picture

А можно рисунок, я не понял, как?

Электромонтёр's picture

Поздравляю, это уже ближе к МК-185 :) особенно на stm32 :)

Сайт

Vitasam's picture

Но, скорее всего, сразу на esp32 переползу :)

Идея простая, чтобы не торчало в сторону повернуть экран под углом, как на МК-161, но не целиком с корпусом, а как бы выделить его плитку отдельно, если возможно вообще сделать вращающимся в пазах внизу. Над клавиатурой корпус видится каким то изогнуто обтекаемым в духе TI 200 Voyage, с бортиком по периметру, там где кнопки фигурная утопленная зона. А ещё не забыть вашу отличную идею про держалку для руки сбоку. Хотя если в руке держать - экран нельзя слишком поворачивать (не больше угла МК-161) иначе он будет к глазам паршиво ориентирован. Да в принципе это хороший угол и для стола и для руки.

Vitasam's picture

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

Электромонтёр's picture

[quote=Vitasam]отключил PS/2 клавиатуру и внешний EEPROM - кое-как влезло в atmega368p:[/quote]
Если идея расширения ОЗУ за счёт внешней SRAM не оправдывает затрат, то может добавить сохранение программ во внешней EEPROM?

Сайт

Vitasam's picture

Я попробую SD-карточку, если влезет. А если нет - то да, внешний EEPROM

Vitasam's picture

Заменил вызовы PS/2 клавиатуры на Serial terminal и попробовал этот код:

10 a=2
20 b=3.4
30 c=a/b
40 print "c=";c
run
print "Hello world!"

Видео результата работы на шилде (Если вдруг на OneDrive нет превью в браюзере, то надо скачать видеофайл. На Ютюбе не выкладываю - неохота "загрязнять" ленту полуфабрикатными роликами)

Похоже, в коде у меня баг - текущая строка вывода забивается BACKSPACE.

Очевидно, что 2-х строчный экран не очень удобен - с нетерпением жду с алиэкспресса 4-х строчный. Тот же контроллер - никакой переделки не надо.

Vitasam's picture

тут видео работы Бейсика.

Теперь надо заменить Serial на клавиатурную матрицу

st's picture

Хорошо смотрится, но двух строк и правда мало. Лучше чем одна в МК-85, но хуже четырех :) Нумерация строк вызывает улыбку.

Vitasam's picture

смотрится забавно, уж лучше бы скроллинг в сторону, как на МК85 :)

Так что да, перехожу на 20х4 дисплей

Электромонтёр's picture

Для переноса можно сделать окончание строки по символу пробела, как в текстовом редакторе. Четырёхстрочный дисплей по габаритам как графический 128х64, но требует 1кб памяти и знакогенератор :)

Сайт

Vitasam's picture

Четырёхстрочный дисплей по габаритам как графический 128х64, но требует 1кб памяти и знакогенератор

В смысле - графический дисплей требует памяти и знакогенератор? Алфавитно-цифровому не надо

Графический экран для ардуины не хочу, может, позже, под stm32 или esp32

можно подцепить ипользуя шилд Gameduino3
https://www.youtube.com/watch?v=m-bdZPU4Es4 Здесь видео с проекта с подцеплением графики на плату Core746i

P.S. http://excamera.com/sphinx/gameduino3/ Сам проект Gameduino3 представлен здесь.

Vitasam's picture

Я думал про графический экран, но мне хочется остаться в "бюджетной алфавитно-цифровой" концепции. Сделующий апдейт: 20x4 экран вместо нынешнего 16x2

Vitasam's picture

Заработала первая версия клавиатуры 8x5 (видео).
(Иногда кнопки дребезжат, надо подзаточить обработчик клавиатуры.)

Работает сохранение программы во встроенный EEPROM. Поддержку 128 КБАйт ОЗУ пока не добавил.

Тактильные ощущения этих кнопок напоминают МК161 :(
Для готового варианта надо будет поискать какие-нибудь более эргономичные кнопки.

Поддержу сосредоточение на создании достойного девайса. Отличаться от МК-161 не самое главное.

Ненавистников ЭКВМ вам всё равно не удовлетворить и к их похвале стремиться бессмысленно. Когда проект выйдет на стадию, сравнимую с МК-161 (мелкосерийное производство) — они и у вас найдут, к чему придраться. Здесь же не что-то личное к Новосибирску, здесь застарелая международная борьба матёрых хищников за контроль над производством.

Хорошая клавиатура — хорошо, конечно. Но не главное.

UPDATE. А можно на YouTube залить? На iOS просматривать проще будет. Как разработчик алфавитной клавиатуры для калькулятора, я заинтересовался матрицей 8x5. Это на 2 кнопки больше, чем МК-161, куда было сложно впихнуть невпихуемое. 33 русские буквы + 4 стрелки + 4 пунктуация (пробел, запятая, точка, перевод строки) это уже больше 8x5=40. Для удобства ещё должны быть BS, Shift, Ctrl, переключение алфавитов и национальный префикс для ввода украинских / белорусских букв.

Vitasam's picture

На ютюб выложу обязательно, но надо видео получше сделать.
А в качестве продвинутого шилда есть смысл взять контроллер помощнее (например stm32) и добавить еще один столбец в клавиутуру, что даст 8x6 = 48 кнопок.

Я пока не буду распыляться на несколько плат - хочу эту плату довести до "производственного" состояния, чтобы можно было заказать печатные платы на заводе.

st's picture

Поддержу использование youtube, там необязательно делать видео публичными, можно оставлять скрытыми, доступными только по прямой ссылке.

Vitasam's picture

Я сделаю покачественнее видео в качестве демо для гитхаб-проекта и выложу на ютюб.

Электромонтёр's picture

Осталось ещё spi-flash повесить в качестве диска для сохранения программ и ввод команд одной клавишей, как в спектруме :) Какой объём ОЗУ микроконтроллера используется?
Для уничтожения дребезга вместо двух проверок нажатий можно сделать три.

Сайт

Vitasam's picture

Тут используется ардуино-Нано с atmega638p - 2 КБ ОЗУ и 32 КБ флеш-памяти для программ. Обе памяти уже близки к пределу, так что возможности по апгрейду малы.
В планах добавить поддержку уже установленной на плате 128 КБ SPI ОЗУ. Может, поддержка SD-карточки, если место будет.

Vitasam's picture

Хочу сказать отдельное большое спасибо уважаемому Электромонтеру за помощь в схемотехнике и софте опроса матрицы клавиатуры с помощью дополнительного дешифратора.

Электромонтёр's picture

На здоровье! Чем смог, тем помог)

Сайт

sinclefan's picture

Сломал голову в попытке понять как производится у вас опрос матричной клавиатуры. Сравнивая со схемой классического спека, сигналы нажатия должны уходить по линиям KBD0-KBD4 в контроллер, но у вас на этих линиях идет запитка или подтяжка. Объясните эту магию пожалуйста, или где выложена полная схема для nano ? Так же не вижу куда подключается дисплей

Vitasam's picture

Схема клавиатуры с дополнительной микросхемой-дешифратором на 8 линий, но как оно работает - может, HW_tests.ino поможет разобраться, я уже плохо помню? Там вся распиновка описана, включая SPI статическую память и дисплей (который через I2C расширитель подключен):

// SPI-SRAM
#define RDSR                                    5
#define WRSR                                    1
#define READ                                    3
#define WRITE                                   2
#define SPI_SS_PIN                              4
#define MAX_SIZE_23LC1024_SRAM                  131072

// Keyboard
#define KEY_ENTER                               13
#define SYMBOL_SHIFT                            1
#define COLS                                    5
#define ROWS                                    8
#define IC_74HCT138_A0                          14
#define IC_74HCT138_A1                          15
#define IC_74HCT138_A2                          16
#define KBD_0                                   4
#define KBD_1                                   5
#define KBD_2                                   6
#define KBD_3                                   7
#define KBD_4                                   8

// LCD
#define LCD_SERIAL_ADDRESS                      0x27
#define LCD_COLS                                16
#define LCD_ROWS                                2

// Misc.
#define BATTERY_ADC_INPUT                       A6

Тут читается значение с пинов KBD_0 .. KBD_4:

// Return a column value from the keypad matrix (32: button is not pressed)
uint8_t get_col_value(uint8_t row)
{
    uint8_t value;
    uint8_t col_value = 0;
    uint8_t value_KBD;

    value = PORTC;
    PORTC = ((value & 0xF8) | row);

    value_KBD =  ((PIND & 0xF0) >> 3) | (PINB & 1);

    if (value_KBD == 29)
        col_value = 0;
    else if (value_KBD == 27)
        col_value = 1;
    else if (value_KBD == 23)
        col_value = 2;
    else if (value_KBD == 15)
        col_value = 3;
    else if (value_KBD == 30)
        col_value = 4;
    else
        col_value = 32;

    return col_value;
}

А Вы хотите попробовать собрать?

sinclefan's picture

Да, хотел попробовать начать с матричной клавиатуры. Просто, на схеме не было показано куда идут сами сигналы, и куда идут линии дисплея. Рисую печатную, а полной схемы перед глазами нет. Еще не вижу упоминаний что за расширитель. Может еще плохо ориентируюсь на сайте.

Vitasam's picture

А, понял. Я добавил схему подключения пинов KBD_0..KBD_4.
Расширитель порта дисплея такой. Он подключается к стандартному I2C-порту Ардуино-NANO:

// LCD
#define LCD_SERIAL_ADDRESS                      0x27
#define LCD_COLS                                16
#define LCD_ROWS                                2
...
LiquidCrystal_I2C lcd(LCD_SERIAL_ADDRESS, LCD_COLS, LCD_ROWS);

Вы рисуете печатную схему? А можно потом увидеть результат?

sinclefan's picture

Да, можно, когда завершу. Только рисую для макетки, травить не на чем. А есть версия прошивки без расширителя ? Просто, у меня пока его нет..

Vitasam's picture

Прошивки без расширителя порта? Такой нет. Но там несложно переделать, надо только понять, влезет ли параллельный интерфейс LCD в Ардуино-Нано, я сейчас навскидку не скажу

sinclefan's picture

Ну если посчитать свободные, D2, D3, D9, D10, D11, D12, D13, A3, A4, A5, то для 8-битной передачи не хватает только 1 цифрового пина. В режиме 4х-битной передачи безусловно хватит.

Vitasam's picture

4-х битная, конечно же. В таком случает лучше выкинуть этот расширитель - он только увеличивает потребляемый ток

sinclefan's picture

А на какой стадии сейчас проект? Update3 это самый свежий?

Vitasam's picture

на стадии Update 3.

После этой стадии был переход на железяку stm32 ("синяя таблетка"), а потом - на проект MK61S, с официальным Гитлаб-репозиторием и Телеграм-каналом. Проект MK61S завершился производством примерно 10 печатных плат у китайской фирмы, на руках, если я правильно помню, примерно 4 работающих машинки (если интересно, есть около 5 пустых печатных плат по себестоимости плюс пересылка). Далее проект плавно трансформировался в МК52М - альтернативная плата для советских программируемых калькуляторов МК52, где и находится в вялотекущем состоянии.

Но если Вы оживите интерес к Arduino-BASIC, было бы здорово.

sinclefan's picture

Да я так, в темноте блуждаю куда выведет... Собственно интересно, с какой точностью вычисляет basic в данном случае? У ардуино тип float 4-байтный, точность очень унылая, 6-7 знаков. Если в этом проекте реализована точность как в спектруме, то меня обрадует. А код писали лично ?

Vitasam's picture

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

sinclefan's picture

В планах прикрутить vga-выход как в этом проекте https://habr.com/ru/post/348380/ . Его собрал, проверил, работает. Пришлось, правда, немного подкрутить код в дисплейном модуле, чтоб не очищался экран по переполнению, а циклично продолжал печатать сверху. Мне понравилось, что модуль тут универсальный, под любой проект годится, вопрос только в наименее дорогой и наиболее точно считающей (вышеразряднее) платформе... Хочется скомбинировать, мобильный и стационарный вариант, т.к, не встречал пока калькуляторов с внешними дисплеями, и из истории таких не знаю (может вы знаете?). Вдохновляет МК64 с 8 входами АЦП, ориентируюсь на него.

Vitasam's picture

Да, знакомый проект. Вроде, TinyBasic целочисленный?
Когда я делал Arduino-BASIC, то не думал про внешний дисплей - хотелось автономную железку.

Наиболее точно считающей и наименее дорогой платформой будет МК61S на stm32 "чёрной таблетке" :)

sinclefan's picture

да, только int. почти удавалось переделать его на long, а потом научил выводить float, но с точностью разочаровался... В целом, мне хотелось бы с уклоном в сторону плк, чтоб еще управлять чем-то мог. объять необъятное. )

Vitasam's picture

В целом, мне хотелось бы с уклоном в сторону плк, чтоб еще управлять чем-то мог. объять необъятное. )

Я того же самого хотел, но в Ардуино уже не втиснуть невтисуемое.
Так берите мой Stm32Basic на stm32 - там большой запас по добавлению портов, можно из Бейсика управлять чем-то.

Вот тут я SD-карточку к Stm32Bacic прикрутил.

А тут Stm32Basic дорос до такого формфактора:
stm32Basic

А если делать полноценный ПЛК на Бейсике - то надо добавить микросхему параллельного порта ввода/вывода с SPI-шиной, и добавить поддержку в Бейсик. Будет законченная вещь

sinclefan's picture

Благодарю, буду пахать этот огород, тг подписался

Vitasam's picture

Я нашел в закромах архив своего удаленного Гитхаб проекта stm32Basic + SD + PS2-keyboard, выложил UPDATE_4.
Принципиальная схема тут, в ней, кстати, добавлен порт расширения с микросхемой порта ввода/вывода:
Порт ввода-вывода

sinclefan's picture

mcp23017 штучка миниатюрная в SOIC ?. Тоже пока не имею. Зато лежат старички КР580ВВ55А, вроде не сложны в управлении (и по объёму управляющего кода наверно не сильно больше spi-команд) и для макетки удобней, только много линий занимают (забыл даже про это :)) . Есть заготовка, где через него управляю экраном 16x1 при помощи Z80 и параллельной ПЗУ по технологиям древних на малой тактовой частоте (порядка 50 гц от таймера NE555), но пока не знаю тут как картинку закрепить. Интересно, какие современные решения, микросхемы есть для мультиплексирования аналоговых сигналов для построения многовходовых АЦП ?

Vitasam's picture

Картинку можно крепить к своему Блогу, а потом оттуда ссылку давать в сообщения.

Про разные ВВ55 я даже не думал, так как устройство предполагалось с батарейный питанием.
Я даже думал всё вставить внутрь PS2 клавиатуры, вместе с экраном 20х4 и портами

sinclefan's picture

Напомнило сюбор :) А что по поводу аналоговых коммутаторов подскажете ?

Vitasam's picture

Да, типа Сюбор.

Про аналоговые коммутаторы - когда-то уважаемый Электромонтер сделал аналоговый коммутатор АЦП для МК161, может, где-то на этом сайте есть, надо поискать. Нашел, вот.

Vitasam's picture

Vitasam's picture

Vitasam's picture

Serial RAM работает (видео).

Vitasam's picture

Проект на гитхабе.

Vitasam's picture

Как и ожидалось, новый экран заработал из коробки, поменял лишь две константы: ширина и высота экрана, в символах.
Видео
ekran 20x4

вывода изображения не рассматриваллось?
Примерно, как здесь реализовано Fignition AVR "недокомпьютера"
https://sites.google.com/site/libby8dev/fignition
или других вариантов (подобных ZX-Spectrum на AVR) с выходом на VGA,
подобное http://www.jcwolfram.de/projekte/avr/chipbasic2/main.php
но это, по моему, уже перебор.

P.S. Конечно это уже не такое мобильное решение.

Vitasam's picture

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

st's picture

[quote=Vitasam]Как и ожидалось, новый экран заработал из коробки, поменял лишь две константы: ширина и высота экрана, в символах.
Видео[/quote]
Видео захватывающее, как будто на дворе 1987 год, я сижу в классе БК-шек и набираю похожий текст. Добавлять комментарий "школоте не понять" не буду, потому как вполне поймут, если любят компьютеры :)

https://www.youtube.com/watch?v=k5RZepI91fQ

P.S. Автор, в дальнейем, похоже быстро перешёл на плату с большим LCD и плату на STM32F7.

Vitasam's picture

Интересный проект. Хотя мне пока интереснее мобильный вариант - со своими кнопками