Модуль вычислителя MCU32-1.2

Сначала небольшое лирическое отступление.
Когда-то давным-давно, когда я был еще маленьким и учился в институте, у нас были занятия по вычислительной технике, которые проводились на малой ЭВМ «Наири-2».
Она была сделана в виде огромного стола, на котором была установлена электрическая пишущая машинка Консул-254. Рядом со столом стояла тумба, на которой крепились устройства ввода и вывода на перфоленту.
Быстродействие машины было примерно 2000 операций в секунду.
Память на ферритовых кольцах имела размер 1024 или 2048 слов (сейчас уже не помню точно).
Программирование велось на языке АП (Автоматического программирования).
Данные вводились с помощью оператора “ввести”, формулы записывались в операторе “вычислить”, безусловный переход – команда “идти”.
Программа выполнялась по команде “выполнить”.
Набираешь первые две буквы оператора – и пишущая машинка допечатывает его. Дальше печатаешь переменные, формулы. Когда набивали программу, давали команду “выполнить” – и пишущая машинка, подумав, печатала ответ.
Так я познакомился с тем, что потом стали называть языком программирования BASIC.
Потом были FORTRAN, PL/1, Pascal, программируемый калькулятор Б3-34, разнообразные Ассемблеры, Turbo-Pascal, Visual Basic, C. Но BASIC всегда присутствовал – в ДВК-2, Радио-86РК, Sinclair ZX Spectrum, в IBM PC – в виде GW-BASIC и Quick-BASIC. Как простой и интуитивно понятный язык, доступный для освоения любому человеку без специальной подготовки. Его использование позволяет писать программы на языке, максимально приближенном к естественному человеческому языку.

Но это была лирика. А теперь по делу.
ООО «Фрактал» www.fractal.com.ru/ выпускает большую номенклатуру модулей и узлов для автоматизации систем управления. В их состав входит несколько устройств со встроенным интерпретатором языка BASIC.
В настоящее время доступны16-разрядные вычислители MCU16-3.2 www.fractal.com.ru/index.php?p=device&sp=mcu16-1&ssp=MCU16-3.2 на базе микроконтроллера PIC24FJ64GA004 и 32-разрядные логические контроллеры MCX53-32 www.fractal.com.ru/index.php?p=device&sp=mcx53-32&ssp=MCX53-32.1%20DIN,
контроллеры с модулем индикации MCX53-20 www.fractal.com.ru/index.php?p=device&sp=mcx53-20&ssp=MCX53-20.1 и вычислители MCU32-1.2 и MCU32-1.12 www.fractal.com.ru/index.php?p=device&sp=mcu32-1&ssp=MCU32-1.2
на базе микроконтроллера STM32F103RET6.
Кроме того, как я понимаю, 16-разрядные модули продаются под маркой «Мастер Кит» ВМ9300 www.masterkit.ru/main/set.php?code_id=540212 и ВМ9300L www.masterkit.ru/main/set.php?code_id=559119.
Описания модулей, схемы, чертежи печатных плат и подробное описания языков программирования Fractal-BASIC-PIC и Fractal-BASIC-Cortex с примерами можно прочитать и скачать по проведенным выше ссылкам.
Расскажу о своем впечатлении о модуле вычислителя MCU32-1.2R. который приобрел для экспериментов пару недель назад по цене 1368 рублей. (Кстати, на сайте компании некоторая путаница – по документам и по цене на сайте я приобрел MCU32-1.2, а по схеме на сайте и по описанию – MCU32-1.12. Но это непринципиально — я получил, что хотел.).
Модуль имеет небольшой размер, и может быть установлен в разрабатываемое устройство как мезонинная плата.

На фотографии слева — MCU32-1.2, в центре — Arduino Nano, справа — аналогичный модуль MCU42-3 на AT89S53 (в настоящее время не выпускается).


Фото с сайта Fractal — вычислитель со снятым держателем батареи (под ним — контроллер)

Вычислитель может взаимодействовать с другими устройствами как непосредственно, через выводы STM32 (всего на разъемы выведено 24 линии ввода-вывода), так и при помощи интерфейсов SPI, I2C, MicroLan (1-Wire). Есть интерфейс RS485 с поддержкой Modbus. Вычислитель подключается к персональному компьютеру по USB для программирования, отладки или обмена данными. При этом он определяется как виртуальный COM порт, с которым может работать любая терминальная программа, например, HyperTerminal. Никаких промежуточных программ – компиляторов, преобразователей кодов, отладчиков для этого не требуется.

Аналоговый ввод возможен по 16 линиям ввода-вывода. Для аналогового вывода используются два 12-разрядных DAC. Формирование сигнала ШИМ не поддерживается – при необходимости его можно попробовать запрограммировать самостоятельно или использовать дополнительные интерфейсные модули.
Из аппаратных ресурсов доступны одно внешнее прерывание, три таймера для подсчета импульсов и работы с энкодерами, таймер для отсчета временных интервалов с точностью 1 мс и часы реального времени с резервной литиевой батареей.
Так же вычислитель позволяет осуществлять вывод информации на символьные (HD44780) и графические (PCF8531) ЖКИ. Их подключение максимально простое – используются любые шесть выводов для символьных и шина I2C – для графических.
Работа со всеми интерфейсами и большинством аппаратных ресурсов микроконтроллера, таких как вывод информации на ЖКИ, часы реального времени, таймеры, ЦАП, АЦП и прочие, поддерживается операторами и функциями языка Fractal-BASIC-Cortex.

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

1. Проверка вывода информации на символьный ЖКИ WH0802-YGK-CT.
ЖКИ был подключен к 6 линиям модуля вычислителя и выведена надпись «HELLO WORLD» — по слову в строке.

10 LCD(100)=0AFH, 0ADH, 0AEH, 0B5H, 0B4H, 0B3H
20 CSR=0: PRINT#16, “ HELLO “: CSR=40: PRINT#16, “ WORLD “


В строке 10 указывается список подключенных выводов и производится инициализация контроллера, в строке 20 – собственно вывод текста (CSR – позиция, PRINT#16 – печать на ЖКИ).
Фотографий не делал, но поверьте на слово – надпись появилась.
Тут же обнаружилось неудобство – больше нет никаких команд управления отображением информации. Например, нет возможности очистить экран. Пришлось, выводить пробелы. Вполне возможно, что команды и есть, но они нигде не описаны.
И проблема — мне не удалось увидеть на ЖКИ русских букв.

10 FOR I=0 to 255
20 CSR=0: PRINT#16,I
30 CSR=40: PRINT#16,CHR(I)
40 DELAY 0.5
50 NEXT I


Программа выводит на ЖКИ номера символов и сами символы. Честно смотрел 2,5 минуты. Несколько раз. С первой половиной кодовой таблицы было все нормально, а вторая выводилась абсолютно не в соответствии с описанием на ЖКИ. Может быть, ошибка в операторе PRINT#16? Буду разбираться.

2. Оценка скорости выполнения программы.
Оценка была проведена путем вывода на контакт B0 микроконтроллера последовательно 0 и 1 и измерения длительности получившегося импульса.

Программа, в которой импульсы выдаются до момента нажатия любой клавиши на компьютере:

10 DO: PIN(0B0H)=0: PIN(0B0H)=1:WHILE KEY=0

Или, что то же самое:

10 DO
20 PIN(0B0H)=0
30 PIN(0B0H)=1
40 WHILE KEY=0


Длительность импульсов оказалась равной 280 мкс — раз в 40 медленнее, чем Arduino и раз в 200 медленнее, чем Maple we.easyelectronics.ru/Arduino/olimexino-stm32--i-maple.html
Для сравнения решил проверить длительность формируемого импульса у аналогичного по функциям старого модуля MCU42-3 на контроллере AT89S53. У старого вычислителя длительность импульса составила 1300 мкс – всего в 4,5 раза больше, чем у нового на STM32.- и это при огромной разнице в быстродействии контроллеров.

3. Я бы объяснил несуразно малую разницу в быстродействии вычислителей тем, что интерпретатор для AT89S53 (8051) был написан на ассемблере на основе какого-нибудь Tiny-Basic, вылизанного за десятилетия использования, а интерпретатор для STM32 – еще «сырой», написан на С (в описании есть ссылка, что для математики использовались стандартные библиотеки ST Microelectronics), а что туда напихал компилятор – одному богу известно.
«Сырость» интерпретатора подтверждается тем, что вычислитель при работе с терминалом периодически по непонятным причинам перестает выполнять некоторые консольные команды. Например, вдруг ни с того ни с сего, перестает работать команда очистки памяти программ NEW. Просмотреть текст программы по команде LIST можно, а очистить память программ командой NEW не получается – программа остается в памяти. И приходится отключать модуль, запускать его BOOT-Loader и специальной командой «K» очищать память.
Так же в терминальном режиме, при работе через Hyper Terminal, при неправильном написании операторов (исправить ошибку в Hyper Terminal невозможно – вычислитель не поддерживает BackSpace) нередко, вместо информации об ошибке, интерпретатор вступает в ступор и вывести его из этого режима можно тоже только через BOOT-Loader.
(Кстати, со старым вычислителем на AT89S53 таких проблем не было). Поэтому настоятельно советую использовать для программирования терминальную программу, поддерживающую редактирование, например, Basic-Terminal, которую можно скачать с сайта Fractal.

Хочу подвести предварительные итоги.
Вычислитель MCU32-1.2 мне понравился. Большое количество интерфейсов, мощная система команд простейшего языка программирования. Включил – сразу вспомнил молодость. И получил огромное удовольствие.
Это очень интересное изделие, которое можно посоветовать, в первую очередь, двум категориям пользователей:
— в качестве игрушки — любителям что-нибудь сделать своими руками, и при этом еще немного попрограммировать, не вникая в тонкости процесса – может получиться неплохое устройство. В частности — всем бывшим любителям Синклеров и программируемых калькуляторов.
— разработчикам разнообразных систем управления, желающим получить простое и мощное управляющее устройство, и при этом тоже не желающим вникать в тонкости программирования (боюсь, что это та же самая категория пользователей, только уже не дома, а на работе. Много ли таких осталось?). Правда, хотелось бы, чтобы разработчики довести интерпретатор до ума. Чтобы им было еще удобнее пользоваться и не было мешающих работе мелочей.

Кстати, я купил еще вычислитель MSX53-20.1 – тоже с интерпретатором BASIC и с графическим индикатором 128 х 32 точки TIC-32. Доберусь до него – напишу.

Описание модуля MCU32-1.2 narod.ru/disk/25417926001/mcu32-xv1-07.pdf.html
Описание языка Fractal-BASIC-Cortex narod.ru/disk/25418055001/basic-cortex_2-01.pdf.html
  • +1
  • 17 сентября 2011, 18:14
  • mzw

Комментарии (21)

RSS свернуть / развернуть
Так в чем смысл вычислителя? В контроллер встроен интерпретатор языка Бэйсик? Мне кажется, это не самое оптимальное использование мк.
0
Whom how (хум хау) — кому как
0
  • avatar
  • mzw
  • 17 сентября 2011, 19:17
Расскажу о своем впечатлении о модуле вычислителя MCU32-1.2R. который приобрел для экспериментов пару недель назад по цене 1368 рублей.
Ну нихренасебе! За такие деньги лучше выучить С/С++ и купить discovery.
0
  • avatar
  • a9d
  • 17 сентября 2011, 18:45
А я и не спорю
0
  • avatar
  • mzw
  • 17 сентября 2011, 19:12
Прикольная штука, цена только расстраивает. Модуль + материнка с LCD по цене дороже mini2440 :(
0
Плат с камнями stm и lpc у многих хватает, покопался в гугле на предмет интерпретатора байсика. С ходу на stm ничего не нашел, а вот на lpc есть. jumentum.sourceforge.net/
Есть исходники и скомпиленные HEX-ы. Подключение компа через ком или сеть.
Немножко картинок: jumentum.sourceforge.net/screenshots.html
jumentum.sourceforge.net/mbed.html.
Себе залил, светодиодиком уже помигал :)
+1
Вы видимо не так увлечены Бейсиком как старожилы этого сайта, вот на вскидку www.mikroe.com/mikrobasic/arm/

Хотите ARM, хотите AVR и т.д.
0
Пардон, перечитал понял про что вы, а я про компилятор. Сорри )
0
раз в 40 медленнее, чем Arduino и раз в 200 медленнее, чем Maple

Интерпретатор — это так оптимально… xDDD

Покажите эту статью товарищу, который хотел делать умный дом на осонове интерпретирующей платформы. ;)
0
  • avatar
  • _YS_
  • 17 сентября 2011, 21:19
я давно говорил что basic для систем управления зло :)
0
Кхм кхм, простите за наглость, но куда такое, простите за выражение, чудо техники можно всунуть? Есть практическое применение???
0
Такие модули выпускаются уже больше 10 лет (MCU42-3 у меня появился в 2000). Значит кто-то покупает.
0
  • avatar
  • mzw
  • 17 сентября 2011, 22:27
и такое чудо покупают ;)
0
шшет… промазал снайпер
0
Знакомые детальки, внутри немудреная плата, с десятком транзисторов, конденсаторов и резисторов, щедро залитая эпоксидной смолой ( наверное на случай ядерного взрыва :))
0
на радиокоте собирались делать плк для умных домов
вот готовый модуль для этого с бейсиком как раз пойдет
0
У меня есть мокрая мечта сделать Лисп для армов.

А пока из электронных штучек с интерпретатором приколен только BusPirate.
0
  • avatar
  • Dzhus
  • 19 сентября 2011, 23:12
Есть ещё проект, к сожалению заброшенный, делали двое радиолюбителей: www.cqham.ru/tbcgroup/
Делал, нормально работает, выложены исходники.
0
Это да, но тут гораздо более мощный язык
0
  • avatar
  • mzw
  • 20 сентября 2011, 19:08
БАСИК как интерпретируемый язык — полное УГ. Посмотрите например на PostScript. Он гораздо проще для интерпретации.
0
БАСИК… — полное УГ
Меньше всего хочется устраивать срач о языках программирования, контроллерах, операционках, IDE и прочем…
0
Только зарегистрированные и авторизованные пользователи могут оставлять комментарии.