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(一次性可編程)存儲器,這意味著我只能編程和調試一次(?!),那么我該如何解決這個問題呢?