问题标签 [microcontroller]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
11 回答
10661 浏览

c++ - 8051微控制器的C++?

有人可以告诉我是否可以用 C++ 程序烧录 8051 微控制器?我试过在网上搜索它,但似乎无法确定它是否可能。Keil 使用 C,但我需要编写的程序是字符串密集型的,与我习惯使用的 C# 相比,C 对字符串非常不友好。目前,我正在尝试用 C 编写代码,但它变得非常混乱,所以如果我可以用 C++ 编写它,我会非常放心。

我需要一个 C++ 编译器来创建一个十六进制输出文件,然后可以将其刻录到微控制器上。有人听说过我可以使用的东西吗?而且,C 使用了一个头文件,可以让你引用端口,但是当我试图找出这个头文件是否也在 C++ 中使用时,我找不到任何关于它的信息。

另外:我使用的微控制器是带有 4K 字节可重编程闪存和 128 x 8 位内部 RAM 的 Atmel AT89C51。这实际上是针对大学项目的机器人,编码实际上不需要 OOP。它只是有很多二维字符串数组格式的查找表。我想考虑 C++ 的唯一原因是因为操作字符串似乎变得非常混乱(由于我缺乏 C 专业知识)。

有人知道头文件吗?C 使用 #include reg51.h 但我试图找出这是否适用于 C++ 并且找不到任何内容。

0 投票
7 回答
1084 浏览

embedded - 你认为你需要一些关于微控制器编程的简单教程吗?

这不是 100% 与编程相关的。但我认为这有点用处,因为它针对的是 SO 社区中的少数群体。

微控制器编程是编程中有趣的领域之一。我在这里看到了一些主题,请求资源用于开始/学习/讨论 PIC。

示例主题

由于我在该领域拥有丰富的知识和经验,因此我正在考虑发布一些资源,以帮助新手从基础知识中学习它们。它将不仅仅是一份理论出版物,而且将基于示例项目。我希望从一个新的博客+论坛开始,这样用户就可以动态地相互交互。我之所以做出这个决定,是因为我发现新手可以开始学习和协作工作的站点数量很少。

对此你们怎么看?你有没有遇到过这样的困难?你认为你可以使用它吗?您希望在网站上看到哪些内容?

如果您不打算将其作为 NPR 关闭,我将不胜感激。我只是想为其他微控制器爱好者做一些服务:)

0 投票
6 回答
3688 浏览

assembly - 是否有汇编代码约定(主要是 PIC)?

是否有汇编代码约定(主要是 PIC)?

0 投票
7 回答
6845 浏览

networking - 使用 HTTP 服务器和 SNMP 代理构建 AVR?

我需要使用 AVR 微控制器为简单的数据收集设备构建原型。

该设备将主要收集传感器数据并通过 SNMP 和 HTTP 响应提供这些数据。

对于已经内置 HTTP 服务器和 SNMP 代理的 AVR 软件,我有哪些选择?

0 投票
4 回答
7897 浏览

c - 微控制器 C 代码的单元测试模式

尽管有很多支持 C 的单元测试框架,但我对如何为微控制器代码编写单元测试感到有些困惑(在我的例子中是 PIC,但我认为这个问题比这更笼统)。

为微控制器编写的大部分代码都围绕着将配置和数据值写入寄存器、从寄存器读取传入数据以及响应中断事件。我想知道是否有人可以就最有效的方法提供一些指示。

0 投票
12 回答
9478 浏览

c - 嵌入式软件的调用树

有谁知道一些工具可以为将在微控制器(Cortex-M3)上运行的 C 应用程序创建调用树?它可以从源代码(不理想)、目标代码(首选解决方案)或运行时(可接受)生成。我看过 gprof,但仍然缺少很多东西要让它在嵌入式系统上工作。

一个额外的好处是该工具还提供了最大的堆栈深度。

更新:解决方案最好是免费的。

0 投票
16 回答
18825 浏览

programming-languages - 在小内存中运行的可用交互式语言有哪些?

我正在寻找通用编程语言

  • 有一个交互式(实时编码)提示
  • 单独使用 32 KB RAM 或编译器托管在单独机器上时使用 8 KB
  • 在总共只有 8-32 KB RAM(没有 MMU)的微控制器上运行。

以下是我到目前为止的清单,我错过了什么?

  • PythonPyMite VM需要 64K 闪存、8K RAM。以 8K 或更多分辨率为目标的 LPC、SAM7 和 ATmegas。托管。
  • LuaeLua FAQ 推荐 256K 闪存,64K RAM。
  • FORTH : amforth在 ATmega 上需要 8K 闪存、150 字节 RAM、30 字节 EEPROM。
  • Scheme : armpit Scheme最小的目标是带有32K Flash、4K SRAM的LPC2103。
  • C : Interactive C在 68HC11 上运行,没有闪存和 32K SRAM。托管。
  • C : picoc一个开源的、交叉编译的、交互式的 C 系统。为 AVR 编译时,需要 63K 闪存、8K RAM。可以通过努力将表保存在闪存中来减少 RAM。
  • C++AngelScript是一种开源的、基于字节码的、类似 C/C++ 的脚本语言,具有简单的本地调用。
  • TclTinyTCL在 DOS 上运行,60K 二进制文件。看起来很容易移植。
  • BASIC : TinyBasic : 用 64K 堆初始化,可能是可调的。
  • 语言
  • PostScript:(我还没有找到低内存的 FOSS 实现)
  • Shell : bitlash : Arduino (ATmega) 的交互式命令外壳。另请参见AVRSH
0 投票
2 回答
1589 浏览

c# - 用于二进制数据的类似 FileHelpers 的数据导入/导出实用程序?

当我处理文本数据时,我使用了出色的 FileHelpers 库。它允许我非常轻松地将文本字段从文件或内存中的字符串转储到代表数据的类中。

在使用基于大端微控制器的系统时,我需要读取串行数据流。为了在非常有限的微控制器平台上节省空间,我需要编写原始二进制数据,其中包含各种多字节类型的字段(本质上只是将结构变量转储出串行端口)。

我喜欢 FileHelpers 的架构。我创建了一个代表数据的类,并用属性标记它,告诉引擎如何将数据放入类中。我可以为引擎提供一个表示单个记录的字符串,并获得数据的反序列化表示。但是,这与对象序列化的不同之处在于原始数据没有以任何方式分隔,它是一种简单的二进制固定记录格式。

FileHelpers 可能不适合读取此类二进制数据,因为它无法处理出现的空值并且* 我怀疑可能存在 unicode 问题(引擎将输入作为字符串,所以我必须从串行端口读取字节并翻译在它们进入我的数据转换器类之前将它们转换为 unicode 字符串)。作为一个实验,我已经将它设置为读取二进制流,只要我小心不发送空值,到目前为止它工作得很好。很容易设置新的转换器来读取原始数据并解决字节序格式化问题等。它目前在 null 上失败并且无法处理多个记录(它期望记录之间有 CRLF)。

我想知道的是,是否有人知道与 FileHelpers 类似但旨在处理二进制数据的开源库。

我正在考虑从 FileHelpers 派生一些东西来处理这个任务,但似乎应该已经有一些东西可以做到这一点。

*事实证明,它不会抱怨输入流中的空值。我的测试程序中有一个不相关的错误,我预计空值会出现问题。应该先深入调查一下!

0 投票
2 回答
2291 浏览

usb - 集成USB功能的单片机+USB主控制器

我发现这个微控制器 AT83C5134/35/36 有一个内置的 USB 功能,如果我对这个控制器进行编程,我可以直接将它连接到调制解调器(PC 和电话“互联网世界”之间的接口)进行数据传输,或者我需要别的东西吗??请在http://www.alldatasheet.com/datasheet-pdf/pdf/181593/ATMEL/AT83C5134.html 查看相同的数据表

什么是 USB 主机控制器……我在网上阅读了一些页面,但无法得到确切的想法……可以用一个例子来解释吗?

0 投票
4 回答
9857 浏览

c - 如何仅从 8051 串行发送字符串一次?

我正在制作一个 8051 微控制器与计算机进行无线通信。微控制器将向其串行端口 (DB9) 发送一个字符串,计算机将接收该字符串并对其进行操作。

我的问题是我不知道如何让 8051 只传输一次字符串。由于我需要在 PC 端操作字符串,因此只能接收一次。目前,即使在 C 代码中我发送了一次字符串,但在我的计算机上我连续接收到相同的字符串。我认为这是因为 SBUF 中的任何内容都是连续传输的。有什么方法可以让我的字符串只发送一次吗?有没有办法清空 SBUF?

我尝试使用 DB9 上的 RTS(请求发送)引脚(第 7 个引脚),因为我在某处读到,如果我否定该引脚上的电压,它将停止数据流向串行端口。所以我所做的是对我的微控制器进行编程以发送字符串,然后将逻辑电平 0 发送到连接到我的 DB9 RTS 引脚的输出引脚。然而,这并没有奏效。

有没有人有什么建议?我真的很感激他们。

编辑

我在 PC 上使用的软件是用于 Xbee 模块的 X-CTU。这是我的微控制器上的代码:

有人可以验证它实际上只发送一次字符串吗?

编辑

看起来史蒂夫、布鲁克斯莫斯和尼尔一针见血,他们说这是在我的主要功能之后发生的事情导致了问题。我刚刚尝试了史蒂夫提出的建议代码(更具体地说是 for(;;); 并在 main 之外定义 serTX),它运行良好。控制器可能已重新启动,因此相同的代码不断重复。

非常感谢你的帮忙!:)