应广单片机芯片(MCU)的PMS150C-U06 进行编程, 应广科技(Padauk)的真实且仅有3分钱的开发的控制器,PMS150C 与 PFS154 高度兼容,但只能编程一次(OTP,一次性可编程)
这是关于 Padauk 的真实且仅有 3 分钱的控制器。 PMS150C 与 PFS154 高度兼容,但只能编程一次(OTP,一次性可编程)。小型的 SOT23 封装使事情变得有点困难。我将它焊接到面包板上,然后连接所有六条腿以模拟 PMS150C-S08。由于 IC 是焊接的,我可以轻松地将其拆焊并安装到目标系统中。
但Padauk刻录机却提示端口未连接的错误信息。没错,两条腿没有连接,因为六针控制器没有它们。而且它们也不需要用于编程。但是现在,我在焊接方面已经遇到了太多的困难,我不能放弃。那么,如果只有高阻抗 CMOS 输入,程序员实际上可以检查什么呢?唯一想到的是 VCC 和 GND 之后的内部保护二极管。我有时也使用欧姆表这种方法来检查端子及其连接。并且可能只检查两个保护二极管中的一个就足够了,即 VCC 之后的二极管。因此我在两个空闲引脚上的 VCC 后面放置了两个二极管。果然,显示屏上出现了期待已久的消息“IC ready”。
OTP 意味着一次编程即可。您必须仔细考虑要在其中烧掉什么。一个永恒的程序,这就是我第一次想到永恒的闪光灯的时候。最初为 PFS154 开发的程序也可以轻松地转换为 PMS150。确实,它闪烁了。为了进行比较,我将另一个指示器放在了面包板上。两者的闪烁频率几乎相同。使用 1000 µF 电容器进行的测试表明,控制器运行了近一分钟。
void FPPA0 (void) { // .ADJUST_IC SYSCLK=IHRC/2 // SYSCLK=IHRC/2 .ADJUST_IC SYSCLK=ILRC //ca. 50 kHz, 50 µA @ 3V // Insert Initial Code PAC = 255; PBC = 255; while (1) { PA = 255; .delay(500); //ca. 10 ms PA = 0; .delay(50000); //ca. 1 s } }
在第二次尝试中我使用了适配板。焊接线弹簧用于将 IC 固定到位。如果可行,则您拥有一个适用于 SOT32 IC 的插座。但IC不能直接放入烧录器中。必须对舵柄重新进行编码。应该有另一个适配器用于此。
正如人们所担心的,由于 IC 连接松散,最初存在接触问题。小弹簧的压力足以将 IC 固定在适当位置,但不足以确保六条腿之间可靠接触。自持镊子为我们提供了帮助。所以现在它起作用了。没有什么能够阻挡大规模生产的实现。
有微闪
永恒闪光灯有一个转折:六针控制器 PMS150C 直接焊接在带有内部电阻的 LED 下方。将 LED 的阳极线切断并焊接至输出端。陶瓷电容器不仅能阻断工作电压,还能保证连接线的机械稳定性。现在已经用完了两节总电压为2.4V的旧电池。我希望剩余任期为一年。
安装在 Haxko Owl 中
Hacker & Makerspace Koblenz https://haxko.space/ 开发了用于推挽闪光器的 SMD 套件,并将其用作“2019 年科技之夜”的一部分。它是一个带有两个 NPN 晶体管的经典多谐振荡器。 haxko SMD LED 实践套件在 Github 上也有详细记录。这只小猫头鹰已经眨眼好几个月了。
当我为控制器项目寻找一块好的主板时,它引起了我的注意。但我不想删除任何东西,以便以后可以将一切恢复到原来的状态。因此,我短路了晶体管的基极和发射极,并使它们处于睡眠状态。您的工作将暂时由 PMS150C 接管。我所需要的只是从控制器到收集器的两根电线和连接到电池正极的一根电线。
我对这个程序做了一些调整。猫头鹰现在像往常一样眨眼五次。但随后就出现了一个突破。感兴趣的观察者会想:现在怎么办?坏了吗?但随后猫头鹰的右眼眨了两次。然后一切照常。
// Haxco-Eule blinkt und zwinkert #include "extern.h" void FPPA0 (void) { .ADJUST_IC SYSCLK=ILRC //ca. 50 kHz, 50 µA @ 3V PAC = 0x48; //A.6=64 + A.3=8, andere sind Eingänge CLKMD = 0x4C; //ILRC/16 // Clock / 16, noch langsamer R BIT PA.3; //Links und Rechts definieren L BIT PA.6; while (1) { Byte n; n = 5; do { R=1; L=0; .delay(2500); //ca. 0,75 s R=0; L=1; .delay(2500); //ca. 0,75 s } while (--n); R=1; L=1; .delay(5000); //ca. 1,5 s L=0; .delay(500); //ca. 0,15 s L=1; .delay(500); //ca. 0,15 s L=0; .delay(500); //ca. 0,15 s L=1; .delay(5000); //ca. 1,5 s } }