Butterfly BASIC for the MSP430

Butterfly BASIC for the MSP430

Battеerfly BASIC есть BASIC интерпретатор, который написан специально для работы на семействе Texas Instruments MSP430. Он разработан так, чтобы быть маленьким, эффективным,простым в использовании, но достаточно гибким для прототипирования или простого использования в производстве. Butterfly BASIC берет начало от множества разных реализаций BASIC, но в нем добавлена поддержка специальных функций для MSP430, он дает большие возможности, чтобы начать работать с процессором MSP430. Это руководство - небольшой учебник и справочник по Butterfly BASIC.


О BASIC MSP430


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

Хотя программы на интерпретаторе являются более сложными, они имеют преимущества перед компилятором. Программа, написанная и работающая на интерпретаторе, будет медленнее, чем аналогичная программа, составленная компилятором. Если вам нужна максимально возможная скорость исполнения с использованием языка высокого уровня, выбирайте компилятор. Если вам нужна простая среда разработки, чтобы экспериментировать с MSP430 и быстро создавать работающие программы, выбирайте интерпретатор.



Создание и перенос Batterfly Basic



Battеerfly BASIC написан на ассемблере для скорости и компактности. Он использует обширные особенности MSP430 и предлагает быструю разработку приложений и быстрое выполнение программы. Полный исходный код Butterfly BASIC выпущен в соответствии с лицензией GNU Public версии 2. Это означает, что вы можете изменять и использовать Battеerfly BASIC самостоятельно.

Battеerfly BASIC доступен для SoftBaugh ES449 и HPA449 плат. Если вы хотели бы портировать Battеerfly BASIC на ваш MSP430, вы всегда можете связаться с разработчиком , чтобы посмотреть , что можно сделать. Если вы портируете интерпретатор на какой - либо другой микроконтроллер самостоятельно, пожалуйста , напишите разработчику , чтобы можно было добавить ссылку на ваш порт.

Исправление ошибок и улучшения всегда приветствуются. Разработчик пишет исходный код для Butterfly BASIC в свое свободное время, и будет обновлять код интерпретатора через неравные промежутки времени. Не отчаивайтесь, если ваши изменения не работают в BASIC эталонном коде Battеerfly BASIC, вы всегда можете повторно интегрировать ваши изменения, когда разработчик выпустит новую версию Butterfly BASIC.




Использование Butterfly BASIC



Старт

Этот раздел поможет вам начать работу с интерпретатором Battеerfly BASIC для MSP430. Даже если вы знакомы с BASIC, это хорошая идея, чтобы пройти через этот раздел, потому что есть ряд отличий между Butterfly BASIC и другими диалектами, которые стоит отметить. Мы будем использовать стандартное распределение для SoftBaugh ES449; если у вас есть какой-то другой вариант, вы должны быть в состоянии приспособиться достаточно быстро, но те части, которые являются специфическими для ES449, очевидно, будет неуместным , но развлекательным, чтением.



Подключение ES449



Вы должны сначала создать и прошить Battеerfly BASIC в ES449 . После того, как вы сделали это, подключите последовательный кабель от ES449 к компьютеру и запустите программу HyperTerminal. Установите подключение 38400 бод, без каких-либо стоп-бит, без контроля потока.

Сбросить ES449 и вы увидите стандартное Battеerfly BASIC входноев сообщение:

Battеerfly BASIC Интерпретатор v1.0 для SoftBaugh ES449
Copyright (C) Paul Curtis 2003, 2004. Все права защищены. 1892 RAM байт свободно, 48124 FLASH байт свободно > _

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



Диалоговый режим BASIC



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

> PRINT 1 + 2 * 3
7
> _

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



С помощью жидкокристаллического дисплея



ES449 оснащен усовершенствованным жидкокристаллическим дисплеем (LCD) способным отображать широкий диапазон символов. Вывод сообщений на ЖК-дисплее с помощью Butterfly BASIC очень простой :



> PRINT # 3, "BASIC"
>



Это указывает интерпретатору напечатать строку "BASIC" (без кавычек) на канал # 3, который является основной частью дисплея. Есть и другие каналы, доступные, такие как канал # 1, который является каналом для UART, который используется для обмена данными с ES449.



Экономия при использовании сокращений



Вы обнаружите, что с помощью некоторых команд можно ускорить ввод программы. Хорошая новость заключается в том, что Battеerfly BASIC позволяет сократить зарезервированные слова, а не только команды.

Например, PRINT команда может быть сокращено до " P. ", " PR. ", " PRI. ", Или " PRIN. " И NEXT к " N. ", " NE. ", Или " NEX. ".

Вам необходимо ввести достаточное количество символов , чтобы команда была однозначна. Например, " P. " это аббревиатура PRINT , тогда как " PO. " Это аббревиатура POKE .

Некоторые команды не могут быть сокращены , поскольку они имеют стебли вместе с другими командами. К примеру, как " N. " и " NE. " Являются сокращениями для NEXT , что означает , что NEW не может быть сокращено до " N. " или "NE. ".

Возвращаясь к программе, которая считает на ЖК-дисплее, мы могли бы ввести это с помощью сокращений и без интервала следующим образом:


> 10F.I = 1TO50 
.> 20P # 3, "I ="; I 
> 25F.J = 1TO100:. N 
.> 30N 
> 40END 
> _


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


> LIST 
10 FOR I = 1 TO 50 
20 PRINT # 3, "I ="; I 
25 FOR J = 1 до 100: NEXT
30 NEXT
40 END 
> _


Использование аббревиатуры при вводе программы не экономит память и ввод команд в их полном виде и с дополнительным интервалом не использует дополнительную память. Программа хранится в токенизированной форме, готовой к исполнению и сокращения используются только в качестве помощи для быстрого ввода программы.

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



Цикл FOR

Одна из вещей, которые делают компьютер полезным- это его способность неустанно обрабатывать повторяющиеся задачи, снова и снова. Есть целый ряд циклов и условных операторов в Butterfly BASIC и мы рассмотрим их в этом разделе.

Самый простой способ повторить последовательность команд снова и снова является использование FOR цикла. Вы уже встретили FOR цикл в первой программе, вы напечатали число от 1 до 100 на ЖК - дисплее. Цикл вводится с помощью оператора FOR и закрывается оператором NEXT ; операторы между FOR и NEXT , выполняются в пределах цикла.


Переменные и Массивы


Butterfly BASIC имеет 26 переменных с именами от А до Z , и каждый из них может содержать 32-разрядное значение. Все переменные сбрасываются в нуль при запуске программы. Вы можете присвоить значение переменной с помощью оператора LET


> LET А = 123 
> PRINT A
123 
> LET A = A + 1 
> PRINT A
124 
> 

Внутри Butterfly BASIC



Эта часть руководства описывает внутреннюю структуру BASIC интерпретатора Butterfly и его настройку. Мы предполагаем, что вы использовали Butterfly BASIC или какой-либо другой BASIC интерпретатор и уверены в написании базовых программ.

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

  • Портирование интерпретатор относится к установке интерпретатора и работы его на вашем оборудовании, без добавления каких-либо дополнительных функций или команд для интерпретатора, таких как, операторы или функции.Например, пример порта будет перемещать интерпретатор от платы ES449 к плате DIr169.
  • Настройка интерпретатора относится к добавлению прикладных функций к переводчику, написав дополнительные дополнительные команды или функции для поддержки пользовательского оборудования. Например, пример настройки будет управлять датчиком температуры I 2 C на D169 плате с помощью новой команды I2COUT и новую функцию I2CIN.

Построение Butterfly BASIC


Butterfly BASIC запрограммирован в MSP430 ассемблере с использованием Rowley Associates, Crossworks инструментов. Для построения Butterfly BASIC вы загрузите решение "basic.hzp" в CrossStudio и построить его. При поставке, интерпретатор работает на плате SoftBaugh ES449, но может быть настроен для работы на большинстве устройств MSP430.

Как программы сохраняются

Программы хранятся во флэш-памяти MSP430 в. Сам интерпретатор меньше кода, поэтому Flash зарезервировано для использования интерпретатора. Остальная часть Flash свободна для хранения основных программ.

Каждая BASIC строка кода хранится в Flash с помощью односвязанного списка каждой строки , хранящейся в строке по порядку номеров. Корень этого списка является символом program_start в оперативной памяти. Если этот символ равен нулю, нет никакой программы , хранящейся во флэш; если он не равен нулю, он указывает на первую строку программы, т.е. строку с наименьшим номером строки. Перечень линий завершается нулевым указателем.

Когда новая строка будет введена, она хранится в памяти на первом месте в неиспользованной Flash. Символ flashtop содержит указатель на первое неиспользованное место флэш . Связанный список Flash обновляется , чтобы отразить новую строку введенную без изменения содержания существующих строки. Таким образом , при вводе замены строки для той , которая уже существует, или удаления строки из программы, пространство для этой старой строки не изменяется для использования в будущем. Единственный способ уплотнить программу является использование оператора NEW , чтобы стереть Flash и снова войти в программу.

Интерпретатор, как правило , находится в нижней части флэш - памяти , так что , на F149, F449, F169 или других контроллерах интерпретатор начинается в 0x1100 и занимает 6К. Постоянное хранилище для пользовательских программ установлено в 0x4000 и управляется приравненным символом user_flash_begin , который должен быть определен при настройке интерпретатора.


Портирование интерпретатора на новое оборудование

При портировании интерпретатора на новое оборудование вам нужно сделать следующее:

  • Создайте для начала свою собственную подпрограмму hw_init, что инициализирует ваше оборудование для готовности к интерпретатору.
  • Создайте свои собственные функции ввода и вывода для канала # 1, по умолчанию I /O канал.
  • Создайте дополнительные входные и выходные функции дополнительных каналов, например, канал # 3 на ES449 управляет ЖК.
  • Определите, где хранятся пользовательские программы .

Подпрограмма hw_init должна инициализировать аппаратные средства для готовности к работе. Она не инициализируем BASIC интерпретатор, только аппаратное обеспечение. Ее функции:

  • Настроить FCTL2, чтобы генерировать правильный выбор времени для записи флэш.
  • Установить стандартный канал # 1 для ввода / вывода.

Пример подпрограммы для ES449 делает это:

  • Устанавливает параметры ФАПЧ для работы 4MHz
  • Инициализирует UART от 0 до 38400 бод, 8 бит, без контроля четности
  • Устанавливает частоту обновления LCD для SBLCDA2 и очищает дисплей.
  • Установка FCTL2 для правильного времени при записи на флэш-памяти.

Последовательность портирования

В этом разделе вы узнаете о том, как портировать BASIC интерпретатор на другой процессор. В данном случае это ELEC226 плату от Rice University, которая базируется на MSP430F169.

Во-первых, мы создаем новый проект Crossworks .

  • Запустите Crossworks и загрузите решение BASIC Interpreter, basic.hzp .
  • Из проекта меню выберите Add New Project ...
  • В поле Имя , введите Rice University ELEC226 board
  • В поле Location введите новое имя каталога elec226 ; это должен быть новый подкаталог под SRC каталогом.
  • Выберите Мастер проектов из Termplates
  • Нажмите кнопку ОК .
  • Из выпадающего списка процессоров , выберите MSP430F169 .
  • Нажмите на кнопку код проекта Ассамблер .
  • Нажмите Далее затем Закончено ..

Теперь у нас есть пустое решение и нужно заполнить его. Мы начинаем с файлами шаблона:

  • В окне Project Explorer, сделать Rice University ELEC226 board текущим проектом, дважды щелкнув по нему.
  • Найдите Startup Files папку и откройте ее.
  • Щелкните правой кнопкой мыши на section_placement.xml файл и выберите Import . Это делает локальную копию файла размещения секции таким образом , чтобы не изменять систему по умолчанию.
  • Щелкните правой кнопкой мыши на Source Files папку и выберите Add Files ... из контекстного меню.
  • Найдите interpeter.inc файл из Butterfly Basic SRC каталога и нажмите OK .
  • Найдите tokens.inc файл из Butterfly Basic SRC каталога и нажмите OK .

Мы имеем шаблон для main.asm файла и два файла , которые содержат ядро интерпретатора.



Подпрограммы в BASIC интерпретатор



  • flash_erase_page - стирает страницы размером по 512 байт , на который указывает R10.
  • is_digit - проверяет R4 , чтобы увидеть , является ли это цифрой или нет. По возвращении, C = 1 , если R4 является цифрой, в противном случае C = 0.
  • is_letter - проверяет R4 , чтобы увидеть , является ли это буква 'А' до 'Z' или нет. По возвращении, C = 1 , если R4 является буквой, в противном случае C = 0.
  • uppercase - проверяет, если R4 является строчной буквой, R4 изменяется на соответствующую заглавную букву. R4 не изменится , если он не является буквой в нижнем регистре.
  • select_channel - выбирает номер канала в R15 как текущего канала и сохранит его в current_channel . Если R15 не содержит действительный номер канала, интерпретатор останавливается с ошибкой bad channel error.
  • validate_channel - проверяет номер канала в R15. Если R15 не содержит действительный номер канала, интерпретатор останавливается с ошибкой bad channel error.


Настройка интерпретатора



В этом разделе рассматривается, как добавить свою собственную команду или функцию для интерпретатора. Обычно можно было бы написать команду или функцию в MSP430 коде сборки, но вы можете одинаково писать код на C. Если вы пишете код в C, вы должны быть осведомлены о требованиях системы исполнения интерпретатора и C.

Написать:
18:06
2624
AVK
No comments yet. Be the first to add a comment!