3美分的Padauk应广科技单片机 PMS150C 至少可以说很有趣。首先,这个小型 MCU 有很多功能无法实现。它没有太多代码空间(1K 字),没有太多 RAM(64 字节),甚至无法进行硬件乘法。它也没有从 ROM 加载数据的指令(虽然有办法解决这个问题)
当然 - 您只能对其进行一次编程。
PMS150C U06 不适合 SOIC8 突破 那么..它能做什么?闪烁的灯光?是的,还有更多。
尽管它有其局限性,但实际上只需修改 8Mhz 微控制器就可以做很多事情。正如您在下面 IDE 的屏幕截图中看到的
它实际上可以与许多外围设备配合使用
尽管其中任何一个都没有硬件支持。
当然,论坛上有一些非常聪明的人正在努力为这些芯片创建一个开放的工具链,但我决定不再等待开始并陷入制造商
IDE、ICE 和程序员的困境。 为了充分利用触手可及的工具,IDE 似乎希望您混合使用纯 C、宏和汇编指令,
所有这些都混合在一些看起来非常有趣的代码中。我这样说可能不会受欢迎,但一旦你习惯了它,它实际上感觉非常直观。
这很奇怪,但却很“有趣”。 在我的第一次强制性“闪烁测试”之后,我决定尝试一些稍微有用的东西 - 控制 WS2812B LED。
由于协议本身依赖于时间相当紧迫的位碰撞,我认为这是一个很好的测试。
但是如何做到呢?Adafruit 的 Arduino 库为每个 LED 使用 3 个字节的 RAM,那么如何仅使用 64 个字节的 RAM 来运行 300 个 LED?
事实证明,这个问题有一个简单的解决方案:不要将每个 LED 都放在 RAM 中。 由于 WS2812B 的时序不是那么紧凑,因此在发送
每个 LED 的 24 位值之间实际上有很多备用周期的空间。基本上只是即时执行逻辑,而不是将每个 LED 存储在 RAM 中。
唯一的缺点是你不能只更改单个 LED 值而保留其余值。 一旦你理解了,控制 LED 的逻辑就非常简单了。
为每个 LED 发送 24 位,并以足够长的延迟结束以使数据锁存。
在这种情况下,将每个位保持在 1.25uS 左右,“0”是短高,后跟“长”低,“1”是长高,后跟短低。
简单来说:高点->低点 24 次。高点多头为 1,高点空头为 0。以下是数据表的片段:
那么.. 代码怎么样? 下面是我用来与 LED 串通信的最小代码。还有优化的空间,如果你习惯在 AVR 上看到纯 C 项目,我敢肯定其中很多看起来很有趣。
首先,Padauk IDE 在数据类型方面有点模糊。没有“long”这样的东西,在我看来,默认情况下所有类型都是无符号的 - 虽然我还没有彻底研究过这一点。
Padauk IDE 中唯一可用的数据类型是: 位(1 位)字节(8 位)整数(8 位(!))字(16 位) EWORD(24 位) DWORD(32 位) 但是,这些类型的便利之处在于,可以通过宏访问单个位和字节,而无需对它们进行任何移动。
例如: mybyte.4 = 0; //清除 mybyte 的第 4 位 myEWORD$1 = mybyte; //设置 24 位 EWORD 的中间字节 此外,内置宏非常方便。请参阅下面的代码。
控制 WS2812B 所需的所有代码都包含在宏“send1”、“send0”和函数 SendRGB(); SendRGB() 函数是 Padauk IDE 怪异的一个典型例子,包含汇编指令、宏和普通的 C。但我能说什么呢:它有效。
我可能可以在 while 循环中移动 rgb EWORD x(比 24 个宏 if 更有效),但我决定尝试宏,它对于此目的来说已经足够有效了。其余代码(我没有在这里包含)是对 r、g 和 b 值的基本操作,然后是 show(); 以设置正确的颜色。想看的话就留言吧,我会把完整的项目放到github上。
热帖讨论应广单片机PMS150C开发:
LCSC 是购买 Padauk 产品的非常好的来源。在 LCSC,我以每台 0.26 美元的价格购买了模拟器、编程器和一百台 PMC234-S28。我使用两个内核中的一个来接收 MIDI 数据。另一个内核管理电路板的 I/O,非常特别,但使用这个处理器非常有趣
1. -----------------------------------------
它似乎是一个双核 8 位 risc 处理器:非常不寻常
您能为我做定制工作吗?我认为这个芯片将是我们低成本玩具的完美解决方案。
2. --------------------------------------------
我同意,完美的解决方案!
恐怕我没有太多时间用于项目,但欢迎您通过电子邮件向 anders @ this website’s domain 提出建议。
3. ------------------------------------------
如何为 pms150 供电,我使用 2 个 7.4V 的锂离子电池,而不是一个 3.4V 的电池。使用电压调节器会消耗几毫安的电流?pms 芯片会在 7.4 V 下运行吗?
4. -------------------------------------
任何超过 5.5V 的电压都可能导致它过早地冒烟死亡。
5. -------------------------------------
您应该能够获得一个静态电流至少在微安范围内的调节器 - 并且 PMS150 将在 3.4V->4.2V 下运行(只是速度没有那么快)。
6. ---------------------------------------
Pingback:让 Three Cent 微控制器变得有用
嗨!您的项目很棒!您可以在 github 上公开它吗?感谢您的项目
7. ---------------------------------------
下一个?哦,也许一些简单实用的东西……莫尔斯键 USB HID 键盘……? 😛
Pingback:Padauk PMS150C“3 美分”MCU 支持 SDCC 开源工具链
8. ---------------------------
这些 3 美分微控制器有什么用?
9. -------------------------------------------
您是如何对这个芯片进行编程的?
除了 Arduino、ESPxxx 和其他一些……之外,我对这种芯片还不熟悉。
有没有简单的分步说明,让我可以在花钱购买编程器之前先试用一下?
我使用了官方 PDK 编程器。这是一个带有开源编程器的开放工具链。但不提供调试功能。
10. ---------------------------------------------------------
您能对微控制器进行编程,使其执行 0 到 255 的波形和一些全部打开的操作吗?我的一个项目是基于 ws2812b led 为急救人员、石油和天然气、建筑工人警察和任何人制作安全装备。我在帽子上贴了一条条带,我数不清有多少人对它感兴趣。只是为了晚上遛狗。
在条带上嵌入一个 OTP 芯片和按钮将使制造成本更低。
11. -------------------------------------------------------
是的,这没问题——基本上任何不占用大量内存的东西,比如不遵循特定模式的图形,都是可行的。
谢谢你的回复。抱歉耽搁了 5 个月;现在工作有点忙。我不太擅长写代码,但我看不到按钮命令。另外,你有项目的示意图吗?我在哪里可以买到芯片和编程器?
12. ---------------------------------------------------------------
感谢 Anders 的这篇文章,但我有一些疑问:
- 这款 Padauk PMS150C 可靠吗?
- 它活跃吗?因为我正在考虑在一个项目中使用它,而且从现在起至少五年内我都需要它;
-关于程序存储器,它是一个OTP(一次性可编程)存储器,这意味着我只能编程和调试一次(?!),那么我该如何解决这个问题呢?