ulisp.

2021-05-05 20:50:49

最新发布的ARM ULISP,版本3.6B,现在可以让您将整个LISP工作区的图像保存到DON' t提供单独的DataFlash芯片上的ATSAMD21板上的闪存。

这增加了对Adafruit Neo Trinkey,Adafruit Gemma M0,Adafruit M0,Arduino Zero,Arduino Mkrzero和SeeedStudio Xiao M0的支持。

Ulisp®是一个专门设计用于在带有有限数量的RAM的微控制器上运行的LISP编程语言版本,基于ATMEGA328到TEENSY 4.0 / 4.1的Arduino UNO。您可以使用完全相同的ULISP程序,而不管该平台如何。

因为Ulisp是一个解释器,您可以在键入命令,并立即查看效果,而无需编译和上传程序。这使其成为学习程序的理想环境,或用于设置简单的电子设备。

Lisp也是学习基本规划概念的理想语言。它包含字符串处理,列表处理和垃圾收集,因此也是表达复杂想法的优秀语言,例如教授机器人解决迷宫或在地图上找到最短的路线。除了支持核心集的LISP函数ulisp还包括Arduino扩展,使其成为Arduino的控制语言。

EEPROM,FLASH或FRAM内存:如果可用,则用于保存和加载ULISP工作区。

ULISP的8位和16位平台的版本支持-32768和32767之间的整数。

Arduino Uno或其他基于Atmega328的卡片。使用短符号名称,这些将为您提供足够的内存为简单的Ulisp应用程序。所有简单的例子都将在Arduino Uno上运行。

Arduino Mega 2560或其他基于Atmega2560的董事会。这些将为您提供足够复杂的应用程序的记忆;例如,看到动物,Tweetmaze,路线发现者和无限精度算术。

Atmega1284。虽然没有一个官方Arduino板,但Atmega1284易于连接在原型板上,并提供慷慨的16千字RAM。

Atmega4809董事会。 Arduino Nano每个和微芯片好奇心纳米评估板是基于Atmega4809的低成本平台。

32位平台的Ulisp版本支持2147483647和-2147483648和32位浮点数之间的整数。

arduino零。该板基于SAMD21 ARM Cortex-M0 +核心,并提供256千字的闪光灯和32千字的RAM。

Arduino Mkrzero。这与Arduino Zero类似,基于SAMD21 ARM Cortex-M0 +核心,并且具有256千字的闪光灯和32千字的RAM。它采用了一个SD卡套接字,允许您使用SD卡来保存和加载Ulisp图像。

Adafruit M0板。 Adafruit Gemma M0,Adafruit Itsybitsy M0和Adafruit羽毛M0各自基于ATSAMD21 48 MHz ARM Cortex M0 +微控制器。它们具有类似的特性和性能;主要区别是每个板的形状因子。

Adafruit M4板。 Adafruit Metro M4 Grand Central,Adafruit Metro M4,Adafruit Itsybitsy M4和Adafruit Feather M4都是基于ATSAMD51 120 MHz ARM Cortex M4微控制器。

Adafruit Pygamer和PyBadge。 Adafruit Pygamer和PyBadge是基于ATSAMD51 120 MHz ARM Cortex M4微控制器的手持式游戏平台,并包含160x128颜色TFT显示屏。

Adafruit NRF52840板。 Adafruit Clue和Adafruit ItsyBitsy NRF52840各自基于Nordic Semiconductor NRF52840 64 MHz ARM Cortex-M4微控制器,具有1 MB的闪存程序存储器和256千字的RAM。

BBC Micro:位。这是基于北欧半导体NRF51822 ARM Cortex-M0微控制器。它以16 MHz运行,提供256千字的闪存程序存储器和16千字的RAM。

maxim max32620fth。这是基于MAXIM MAX32620 ARM Cortex-M4F微控制器以96 MHz运行,具有2048千字节的闪存和256千字的RAM。

青少年4.0和4.1。这些基于NXP IMXRT1062 ARM M7处理器以600 MHz运行,以及1 MB的RAM。

ESP8266板。这些板基于32位Tensilica XTensa L106微处理器,以80 MHz运行,具有4 MB的闪光灯和80千字的RAM。它们包括集成的Wi-Fi。

ESP32板。这些板基于32位Tensilica XTensa LX6微处理器,以160或240 MHz运行,具有4 MB的闪光灯和520千字的RAM。它们包括集成的Wi-Fi和双模蓝牙。

Sibeed Maix RISC-V董事会。这些板基于KENDRYTE K210 RISC-V双核64位400 MHz处理器,并提供8 MBYTES RAM和16 MBYTES FLASH。它们的性能相似。

Arduino到期。该板基于AT91SAM3X8E ARM Cortex-M3核心,提供512千字的闪光,96千字的RAM,以及84 MHz时钟。

STM32板。 STM32 Maple Mini和Blue Pill板基于STM32F103 ARM Cortex-M3处理器,以72 MHz运行,具有128千字的闪光灯和20千字的RAM。

MSP430 F5529 Launchpad。这使用闪存来保存图像,并为相当复杂的应用提供足够的内存。

MSP430 FR5969 Launchpad。此版本使用工作区的FRAM,并保存图像,给出慷慨的内存量。

MSP430 FR5994 Launchpad。此版本使用工作区的FRAM,并保存图像,给出慷慨的内存量。

MSP430 FR6989 Launchpad。此版本使用工作空间的FRAM,以及保存图像,并支持将文本写入车载LCD显示屏。

语言通常是常见的LISP子集,ulisp程序也应该在常见的LISP下运行。但请注意,功能和变量有一个名称空间;换句话说,您无法为函数和变量使用相同的名称。

整数是一系列数字,可选地以&#34为前缀; +"或" - "在8/16位平台上,整数可以在-32768和32767之间。在32位平台上,整数可以在2147483647和-2147483648之间。您可以使用符号#x2a,#o52或#b101010在十六进制,八进制或二进制中输入整数,所有这些都表示42。

在具有超过2千字的RAM的平台上,支持任意用户定义的符号名称。任何ISN' t一个整数的序列都可以用作符号;因此,例如,12A是有效符号。在仅具有2千字节的平台上,符号名称最多可包含3个字符,包括A-Z,0-9或$,*或 - 。

Ulisp提供尾呼叫优化,因此使用递归函数编写的应用程序可以与使用迭代一样高效。

字符串可以由任意序列的ASCII字符组成。字符串可以是无限的长度,并自动收集垃圾。

ulisp包括标记和扫描垃圾收集器。垃圾收集在Arduino UNO或Arduino Mega 2560上的3毫秒或3毫秒下需要1毫秒(参见性能)。

Ulisp还包括一个简单的程序编辑器(请参阅使用程序编辑器),跟踪工具和漂亮的打印机(请参阅ULISP中的调试)。

将ULISP上传到MicroController Board后,可以通过将命令键入或粘贴到串行显示器或使用串行终端进行播放或粘贴到串行终端。有关更多信息,请参阅使用ULISP。

假设您的红色LED连接到Arduino UNO上的模拟输出引脚9。然后您可以键入lisp命令:

要保存必须在每次要设置红色LED时编写此命令,您可以定义一个名为红色的函数:

在每种情况下,LED立即更改,只要键入命令就会立即更改。

假设您' ve有一个连接电位器,可以改变模拟输入A0上的电压。您可以定义功能暗淡,使电位器调节LED的亮度:

最后,您可以将ULISP图像保存到EEPROM,并指定CUD应该在加载时运行,通过输入: 这是一个简单的示例,展示了ulisp如何允许您从更简单的组件构建复杂程序,在您携带时测试每个组件。