Questions tagged «microcontroller»

13
日常机器如何编程?
日常机器(不像家用电器,数字手表等那样的计算机和移动设备)如何编程?可口可乐自动售货机的编程中使用哪种代码?我的咖啡机如何接受预先设定的时间,然后在几小时后开始冲泡一壶咖啡? 这些机器内部是否装有操作系统,还是更基本的东西?它们是用Assembly,C还是其他某种语言编写的? 而且,我真的很想找到一些列出这些操作系统或基础代码系统的资源,甚至在可能的情况下甚至还带有源代码。如果有人知道这样的资源(搜索对我没有任何帮助),那就太好了。

16
在微型内存中运行的可用交互语言是什么?[关闭]
已关闭。这个问题需要更加集中。它当前不接受答案。 想改善这个问题吗?更新问题,使其仅通过编辑此帖子来关注一个问题。 2年前关闭。 改善这个问题 我正在寻找通用的编程语言, 具有交互式(实时编码)提示 单独在32 KB的RAM中工作,或者在单独的计算机上托管编译器时,工作8 KB 在总共只有8-32 KB RAM(不带MMU)的微控制器上运行。 到目前为止,这是我的清单,我想念的是什么? Python:PyMite VM需要64K闪存,8K RAM。针对LPC,SAM7和8K或更高的ATmegas。托管。 Lua:eLua常见问题解答建议使用256K闪存,64K RAM。 FORTH:amforth在ATmega上需要8K闪存,150字节RAM,30字节EEPROM。 方案:腋下方案最小的目标是具有32K闪存,4K SRAM的LPC2103。 C:Interactive C在68HC11上运行,没有闪存和32K SRAM。托管。 C:picoc一个开源,交叉编译的交互式C系统。为AVR编译时,它需要63K闪存,8K RAM。可以通过将表保持在闪存中来减少RAM。 C ++:AngelScript是一种开放源代码,基于字节码的C / C ++,类似于脚本语言,可轻松进行本地调用。 Tcl:TinyTCL在DOS上运行,二进制为60K。看起来很容易移植。 BASIC:TinyBasic:初始化为64K堆,可能是可调整的。 Lisp PostScript:(我还没有找到用于内存不足的FOSS实现) Shell:bitlash:Arduino(ATmega)的交互式命令Shell。另请参阅AVRSH。


5
按位运算会导致意外的可变大小
语境 我们正在移植最初使用PIC单片机的8位C编译器编译的C代码。为了防止无符号全局变量(例如,错误计数器)回滚到零,使用了一个常见的习惯用法: if(~counter) counter++; 此处的按位运算符将所有位取反,并且仅当counter小于最大值时该语句才为真。重要的是,无论变量大小如何,此方法均有效。 问题 我们现在的目标是使用GCC的32位ARM处理器。我们注意到,相同的代码会产生不同的结果。据我们所知,按位补码运算返回的值与我们期望的大小不同。为了重现这一点,我们在GCC中进行编译: uint8_t i = 0; int sz; sz = sizeof(i); printf("Size of variable: %d\n", sz); // Size of variable: 1 sz = sizeof(~i); printf("Size of result: %d\n", sz); // Size of result: 4 在输出的第一行中,我们得到的是:i1个字节。但是,的按位补码i实际上是四个字节,这会引起问题,因为与此进行比较现在无法给出预期的结果。例如,如果这样做(在哪里i是正确初始化的uint8_t): if(~i) i++; 我们将看到i从0xFF到0x00的“环绕”。与以前的编译器和8位PIC微控制器中预期的运行方式相比,GCC的行为有所不同。 我们知道我们可以通过如下方式解决此问题: if((uint8_t)~i) i++; 或者,通过 if(i < 0xFF) …
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.