问题标签 [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 投票
6 回答
2799 浏览

c - 如何从ARM 32位端口的第15个引脚获取值?

我正在使用 IC DS1620 读取单行上的 1 位串行数据。我需要使用 ARM 微控制器 (LPC2378) 的端口之一读取这些数据。ARM 端口是 32 位的。如何将此值转换为 1 位变量?

编辑:换句话说,我需要直接引用端口引脚。

0 投票
1 回答
1784 浏览

c - 从 ARM 微控制器端口读取数据的步骤

我无法从 ARM LPC2378 微控制器读取串行数据。我必须使用 UART 还是可以使用任何 GPIO 端口?有人有c代码吗?

0 投票
3 回答
1799 浏览

network-programming - 创建 802.11 发射器并从 WiFi 路由器读取数据

这个问题有两个部分。也可以随意给我文章的 URL 或推荐书籍,因为答案可能有点深入,以便快速论坛回复。

1) 我需要感应流过一对电线的功率并通过 802.11 传输有关它的数据。我想涉及到一个微控制器,但我不知道从哪里开始。不需要安全。我只希望发射器定期广播数据(例如,每秒 1 帧)。

2) 我需要从我的 802.11 路由器中获取步骤 1 中的数据广播。我希望能够在第 1 步中对任意数量的发射器执行此操作。第 1 步中的每个发射器是否具有可以从我的 802.11 路由器中查找的特殊 ID?我什至不知道如何在我的路由器上获得一个“句柄”来查看它正在接收什么数据。所以,首先,我如何获得我的路由器,然后我如何在步骤 1 中看到来自我的发射器的这些可能的多个数据流。

谢谢,杰

0 投票
2 回答
1119 浏览

pointers - 循环缓冲区指针异常

这是对这个问题的跟进:显示以前收到的 UART 值

在微控制器上实现循环缓冲区后,指针似乎有问题。

在 RS-232 上发送:ADE1234
接收(缓冲区 = 8):E24AE2 / E2AE24(在两者之间翻转) 接收(缓冲区 = 16):D234E1(跳过 A,因为它是一个同步字节)
接收(RX_BufSize = 32):DE1223 / DEE123 / DE1234 / DE12E1(随机翻转)
预期接收:DE1234

初始化

LCD 上显示的调试值

接收中断

来自源的函数

Detect_Cmd_RXD 每 1/256 秒调用一次。在此期间,UART 接收缓冲区中将至少发送 7 个值。

写入过程是否可能如此之快以至于它赶上了读取指针?除了更频繁地调用 Detect_Cmd_RXD 之外,我还能做些什么来解决这个问题?

0 投票
9 回答
727 浏览

linux - 我想继续进行 µC 编程,但我完全不知道从哪里开始

我一直在考虑“继续”进行 MCU 编程,但问题是我从未使用过任何微控制器或类似产品。有人告诉我,AVR 和 PIC 是业余爱好者中最常见的微控制器,显然大多数人建议像我这样的新手使用 AVR,因为它的“C 友好架构”(不管这意味着什么)、它的 C 编译器和它的大型爱好者社区。AVR 或 PIC 或其他任何东西,对我来说并不重要,我只想能够在 Linux 上用一个好的编译器编写 C 代码,并最终能够在我的 MCU 上添加一个 LCD 屏幕(只是为了输出基本的 ASCII 字符,也许在这里和那里画几个像素,单色,没什么大不了的)。我不需要任何复杂或极快甚至大量的内存,因为我喜欢有限(但不是太有限)的东西,你需要一点创造力来实现目标。我在互联网上四处查看,但我发现的大多数页面都有几十年的历史和/或没有建议我可以购买任何好的“包装”(这将支持上面提到的东西)。这就是我问你的原因,希望你能帮助我一点。:)

谢谢,霍法。

0 投票
11 回答
717 浏览

c - 这个 C 函数写得不好吗?

此函数的目的是获取一个 0 到 99 的无符号字符值,并在它为 0-9 的情况下返回它的 ascii 等效值,或者操作一个小的全局字符数组,该数组可以在函数完成后从调用代码中引用。

我问这个问题是因为来自同一供应商的两个编译器以不同的方式解释此代码。

编写此代码是为了将通过 RS485 发送的地址字节解析为可以轻松传递给 send-lcd-string 函数的字符串。

此代码是为 PIC18 架构(8 位 uC)编写的。

问题是特定编译器的免费/评估版本会生成完美的汇编代码,虽然会受到性能影响,但付费且据称更出色的编译器会更有效地生成代码,但代价是能够引用我所有字节数组的地址用于驱动我的液晶显示器上的图形。

我知道通过使用专有编译器来构建不那么典型的架构,我在水中投入了大量的泥浆,但我希望有人能提出一些建议。

谢谢。

0 投票
2 回答
445 浏览

embedded - 将 45DB161 数据闪存与 89LP4052 控制器连接

我正在尝试将数据闪存与 89lp 4052 控制器连接。水晶使用 11.0592 兆赫。该控制器内置 spi 总线。我尝试了 CPHA 和 CPOL 的所有组合。尝试了模式 0 和模式 3。无法读取状态寄存器。有时它会读取寄存器,但有时它只是从闪存中取出代码。

我的代码如下。

;;================================================== ===============================

WRITE_FLASH: MOV 20H,#0D7H ;COMMAND LCALL SEND_CLOCK_ONE LCALL READ_FLASH CLR SCON.1 MOV A,21H MOV SBUF,A JNB SCON.1,$ CLR SCON.1 ;;============= ==================================================== ======== SETB CS CLR SCLK LCALL DELAY2 CLR CS ; 再次选择 MOV 20H,#84H LCALL SEND_CLOCK MOV 20H,#00H LCALL SEND_CLOCK
MOV 20H,#00H LCALL SEND_CLOCK
MOV 20H,#00H LCALL SEND_CLOCK
MOV 20H,#33H LCALL SEND_CLOCK LCALL DELAY2 SETB CS LCALL DELAY2 CLR SCLK CLR CS ;再次选择 MOV 20H,#0D4H LCALL SEND_CLOCK
MOV 20H,#00H LCALL SEND_CLOCK
MOV 20H,#00H LCALL SEND_CLOCK
MOV 20H,#00H LCALL
SEND_C ,#00H LCALL SEND_CLOCK_ONE

;;================================================== ======================= SEND_CLOCK_ONE: MOV C,07H ;MSB MOV DOUT,C LCALL PULSE_SEND MOV C,06H MOV DOUT,C LCALL PULSE_SEND MOV C, 05H MOV DOUT,C LCALL PULSE_SEND MOV C,04H MOV DOUT,C LCALL PULSE_SEND MOV C,03H MOV DOUT,C LCALL PULSE_SEND MOV C,02H MOV DOUT,C LCALL PULSE_SEND MOV C,01H MOV DOUT,C LCALL PULSE_SEND
MOV C,00H MOV DOUT,C LCALL PULSE_SEND_LAST RET ;;===================================== ======================================= READ_FLASH: LCALL PULSE_SEND MOV C,DIN MOV 0FH,C LCALL PULSE_SEND MOV C,DIN MOV 0EH,C LCALL PULSE_SEND MOV C,DIN MOV 0DH,C LCALL PULSE_SEND MOV C,DIN MOV 0CH,C LCALL PULSE_SEND MOV C,DIN MOV 0BH,C LCALL PULSE_SEND MOV C,DIN MOV 0AH,C LCALL PULSE_SEND MOV C,DIN MOV 09H,C LCALL PULSE_SEND MOV C,DIN MOV 08H,C LCALL PULSE_SEND RET ;;================================== ====================================== SEND_CLOCK: MOV C,07H ;MSB MOV DOUT,C LCALL PULSE_SEND MOV C,06H MOV DOUT,C LCALL PULSE_SEND MOV C,05H MOV DOUT,C LCALL PULSE_SEND MOV C,04H MOV DOUT,C LCALL PULSE_SEND MOV C,03H MOV DOUT,C LCALL PULSE_SEND MOV C,02H MOV DOUT,C LCALL PULSE_SEND MOV C,01H MOV DOUT,C LCALL PULSE_SENDDIN MOV 08H,C LCALL PULSE_SEND RET ;;======================================== ================================ SEND_CLOCK: MOV C,07H ;MSB MOV DOUT,C LCALL PULSE_SEND MOV C,06H MOV DOUT,C LCALL PULSE_SEND MOV C,05H MOV DOUT,C LCALL PULSE_SEND MOV C,04H MOV DOUT,C LCALL PULSE_SEND MOV C,03H MOV DOUT,C LCALL PULSE_SEND MOV C,02H MOV DOUT,C LCALL PULSE_SEND MOV C,01H MOV DOUT,C LCALL PULSE_SENDDIN MOV 08H,C LCALL PULSE_SEND RET ;;======================================== ================================ SEND_CLOCK: MOV C,07H ;MSB MOV DOUT,C LCALL PULSE_SEND MOV C,06H MOV DOUT,C LCALL PULSE_SEND MOV C,05H MOV DOUT,C LCALL PULSE_SEND MOV C,04H MOV DOUT,C LCALL PULSE_SEND MOV C,03H MOV DOUT,C LCALL PULSE_SEND MOV C,02H MOV DOUT,C LCALL PULSE_SEND MOV C,01H MOV DOUT,C LCALL PULSE_SENDC LCALL PULSE_SEND RET ;;============================================= =========================== SEND_CLOCK: MOV C,07H ;MSB MOV DOUT,C LCALL PULSE_SEND MOV C,06H MOV DOUT,C LCALL PULSE_SEND MOV C,05H MOV DOUT,C LCALL PULSE_SEND MOV C,04H MOV DOUT,C LCALL PULSE_SEND MOV C,03H MOV DOUT,C LCALL PULSE_SEND MOV C,02H MOV DOUT,C LCALL PULSE_SEND MOV C,01H MOV DOUT,C LCALL PULSE_SENDC LCALL PULSE_SEND RET ;;============================================= =========================== SEND_CLOCK: MOV C,07H ;MSB MOV DOUT,C LCALL PULSE_SEND MOV C,06H MOV DOUT,C LCALL PULSE_SEND MOV C,05H MOV DOUT,C LCALL PULSE_SEND MOV C,04H MOV DOUT,C LCALL PULSE_SEND MOV C,03H MOV DOUT,C LCALL PULSE_SEND MOV C,02H MOV DOUT,C LCALL PULSE_SEND MOV C,01H MOV DOUT,C LCALL PULSE_SENDMOV C,07H ;MSB MOV DOUT,C LCALL PULSE_SEND MOV C,06H MOV DOUT,C LCALL PULSE_SEND MOV C,05H MOV DOUT,C LCALL PULSE_SEND MOV C,04H MOV DOUT,C LCALL PULSE_SEND MOV C,03H MOV DOUT,C LCALL PULSE_SEND MOV C,02H MOV DOUT,C LCALL PULSE_SEND MOV C,01H MOV DOUT,C LCALL PULSE_SENDMOV C,07H ;MSB MOV DOUT,C LCALL PULSE_SEND MOV C,06H MOV DOUT,C LCALL PULSE_SEND MOV C,05H MOV DOUT,C LCALL PULSE_SEND MOV C,04H MOV DOUT,C LCALL PULSE_SEND MOV C,03H MOV DOUT,C LCALL PULSE_SEND MOV C,02H MOV DOUT,C LCALL PULSE_SEND MOV C,01H MOV DOUT,C LCALL PULSE_SENDC LCALL PULSE_SEND MOV C,04H MOV DOUT,C LCALL PULSE_SEND MOV C,03H MOV DOUT,C LCALL PULSE_SEND MOV C,02H MOV DOUT,C LCALL PULSE_SEND MOV C,01H MOV DOUT,C LCALL PULSE_SENDC LCALL PULSE_SEND MOV C,04H MOV DOUT,C LCALL PULSE_SEND MOV C,03H MOV DOUT,C LCALL PULSE_SEND MOV C,02H MOV DOUT,C LCALL PULSE_SEND MOV C,01H MOV DOUT,C LCALL PULSE_SEND
MOV C,00H MOV DOUT,C LCALL PULSE_SEND RET

;;================================================== =========================== DELAY2: mov 56H,#0FFH DJNZ 56H,$ mov 56H,#0FFH DJNZ 56H,$ RET ;; ==================================================== ================= PULSE_SEND: SETB SCLK LCALL DELAY2 CLR SCLK LCALL DELAY2 RET ;;==================== ================================ PULSE_SEND_LAST: SETB SCLK LCALL DELAY2 RET ;;========== ============================================ PULSE_READ_FIRST:CLR SCLK LCALL DELAY2 SETB SCLK LCALL DELAY2 RET ;;============================================= ================

结尾

0 投票
1 回答
924 浏览

c - 在 C 中解析 Twitter 提要

我试图弄清楚如何获取 Twitter 用户的最新纬度和经度(从新的 Geo API 数据,即标签,您可以在我的 twitter 用户时间轴 xml 提要<geo:point>中看到它们的样子)。我还需要从标签中检索该数据的年龄(以秒为单位) 。<created_at>

我正在尝试用 C 语言编写它以与mbed 微控制器一起使用,因此我不能使用任何大型库(理想情况下我不会使用任何库,但这可能是个坏主意)。mbed 站点建议了一些轻量级库- YAJL和 FastXML 似乎很有用 - 但我的 C 知识非常基础,我不确定如何继续。

假设我有将 twitter 用户时间线作为字符串检索到内存和/或磁盘(作为 JSON 或 XML)的代码,我应该如何继续?

目前我正在通过 PHP 在我的网络服务器上进行这种抓取,但我宁愿在 C 中完成它,因为我希望在完成后发布代码(而且我不希望我可怜的服务器被撞! ) PHP 看起来像这样:

这工作得很好,但我不知道如何把它变成 C!有任何想法吗?

这是我期望处理的 XML 片段:

(顺便说一句,mbed 很棒,尽管我缺乏 C 或电子学方面的高级知识,但我玩得很开心,它们在 Farnell 的库存价格为 32 英镑,绝对物有所值!)

0 投票
7 回答
8094 浏览

microcontroller - Verilog 学习资源

我是 Verilog 的新手。有人可以推荐一个学习资源、书籍、视频、博客或任何他们有很好的个人经验并帮助他们更快学习的东西吗?

如果有帮助,我有几种高级语言的编程经验,但没有 C 编程经验。

谢谢

0 投票
10 回答
33115 浏览

c - 微控制器编程要学什么语言?

我正在进入微控制器编程并且一直在听到不同的观点。业界最常使用哪种语言进行微控制器编程?这是你在自己的工作中使用的吗?如果不是,为什么不呢?

PS:我希望答案不是汇编语言。