發表文章

目前顯示的是 12月, 2024的文章

輕鬆上手:以VS Code, SDCC, Git建立新唐8051編譯環境

圖片
 這是003Clock系列的第二篇文章,第一篇還沒跟上的趕快回追一下~ (一)製作新唐N76E003白光LED電子時鐘套件 (二)以VS Code, SDCC, Git建立新唐8051編譯環境 (三)新唐N76E003白光LED電子時鐘套件韌體技巧說明 (四)免用燒錄器更新韌體:NuMicro ISP Programming Tool 2018年前後,新唐推出了這顆N76E003,主打著只要台幣7塊錢的增強型8051,與STM8S003 pin-to-pin相容,機械週期只有1個clock cycle、內建了18KB的程式記憶體、兩組UART、ADC、I2C、SPI、PWM等齊全的功能,要接什麼感測器都很方便,Arduino UNO有的它都有,於是就入手了一堆N76E003。 朋友們如果有新的設計,推薦使用今年新出的N76S003啊!因為N76E003目前已調漲到台幣10塊錢。新出的N76S003大概是用了更成熟的技術來生產,所以還能維持在台幣7塊錢(聽說是e-store Nuvoton Direct獨賣),除了更便宜之外還多了SPROM的功能。我現在還在用N76E003是因為當年買的那一堆庫存還沒用完XD 但請各位放心,這兩個型號新唐掛保證是完全pin-to-pin、code-to-code相容的,原廠提供的BSP也完全共用。 https://direct.nuvoton.com/n76s003-series 由於Keil C51、IAR之類的商用軟體,免費版本是有code size限制的,印象中Keil C51是限制在2KB,那麼N76E003的18KB豈不是用不完!因此當時就轉向使用open source、無code size limit的SDCC (Small Device C Compiler) 來開發。SDCC只是一套工具鏈(俗稱編譯器),而非整合型的開發環境(Integrated Development Environment, IDE)。 那時候自己看了一下SDCC的手冊, 就能將新唐原廠提供的BSP (Board Support Package) 修改成SDCC支援的格式 ,用Windows內建的記事本或Notepad++編輯主程式,再開一個「命令提示字元」一一敲進編譯、組譯和鏈結的指令,把執行檔編出來。後來當然學聰明了,將這些步驟寫成.b...

維修IKEA VINDRIKTNING空氣品質感應器

圖片
IKEA VINDRIKTNING空氣品質感應器是我在三年前購入的,功能就是有綠、黃、紅三個顏色的燈顯示空氣品質。最近裡面的風扇出現咖咯咖咯的聲音,時不時就亮紅燈(說空氣品質差),我實際去看環保局的空氣品質監測網,空氣品質卻是良好,推測是風扇故障或感測器本身積灰塵導致誤判,決定拆開來清潔看看。拆解到空氣品質感測器時還意外發現上面有顆新唐的8051 XD 卸下背面的四顆螺絲輕輕鬆把本體拆開,映入眼簾的是一顆空氣品質感測器,透過一顆外掛的風扇吸入環境空氣;正面則有一塊電路板負責接收空氣品質感測器的資料,轉換為三色LED告知使用者目前的空氣品質狀態: 從連接器旁的印字可以發現與空氣品質感測器之間是透過UART介面傳輸: 上頭SOP8的IC是Eastsoft (東軟載波) ES7P001FGSA 8-bit MCU: 電路板另一面則有六顆LED,以及photodiode用來偵測環境亮度,可以隨環境亮度調整LED的亮度: 好奇三個顏色為什麼會有六顆LED,於是上電試試看,原來是兩顆LED相同顏色,打在半透明的燈罩上可以呈現較均勻的光線: 再來就是今天要處理的部分,空氣品質感測器了: 有一個塑膠支架將空氣品質感測器與風扇結合在一起,可以直接從外殼上抽取出來: 翻到另一面,果然積滿了灰塵,立刻拿刷子清一清! 風扇廠牌是”WANGSHENG DA TECHMOLOGY CO., LTD”,Google一下查不太到資料 …  將風扇的兩顆螺絲卸下後,風扇是可以順利取下。但還是沒看見其它螺絲,無法將空氣品質感測器本體完整從支架卸下來: 為了檢察裡面的鏡片將鐵蓋拆下,可以看見它的電路板,上面有防潮的塗料: 可以看到空氣品質感測器的PCB上的印字PM1006,是四方光電(Wuhan Cubic Optoelectronics)所出的紅外線粉塵感測器,看規格是可以檢測空氣中大於0.3 um的顆粒: 電路板是直接mount在一塊塑膠板上的,可以從外殼上分離開來 分離開來可以看到原來塑膠板上還包含了鏡片、LED和接收器,外殼中也有一些防止反射的結構: 左上角是一顆PD (photodiode),右上角是IR LED,它們並不是直接對著照的,當紅外線照射到空氣中的一些顆粒、粉塵時,光線才會散射到PD上,所以空氣品質越糟糕,PD接收到的散射光就會越多,PD的信號就可以當成空氣品質的參數。 M...

製作新唐N76E003白光LED電子時鐘套件

圖片
回想起第一次用N76E003應該是六年前的事情了,除了想辦法將N76E003 BSP改成支援SDCC之外,也用它來做過各式各樣的專案,像是夾娃娃機、電影道具都有 … 今年接到一個專案用到它的兄弟MS51FB9AE做一個波形產生器,在建環境的過程發現新唐官方的BSP終於支援SDCC了!開發環境成功用VS Code建起來相當心得,就乾脆做一個時鐘來試試水溫XD 這回集結以往的經驗為手工焊接特別設計過,例如加大震盪器的焊點、挑選全THT包裝的USB-C連接器(我還挑Molex的),使套件焊接製作的成功率大大提升。 傳統8051則是機械週期為12T,也就是一條指令至少就花費12個clock cycle,不同指令花費的週期不一定,長的還要24個 …  新唐N76E003是什麼樣的MCU? 它是一顆改良過的8051,也就是機械週期以1個clock cycle為單位,所以速度就快上許多了。 不僅如此,還將把那些原本要外掛晶片的周邊功能也整合進去,包含兩組獨立的UART、ADC、SPI、I2C、PWM,我都說它麻雀雖小五臟俱全。 目前已計畫至少發出這幾篇教學文章,請大家拭目以待: (一)製作新唐N76E003白光LED電子時鐘套件 (二)以VS Code, SDCC, Git建立新唐8051開發環境 (三)新唐N76E003白光LED電子時鐘套件韌體技巧說明 (四)免用燒錄器更新韌體:NuMicro ISP Programming Tool 這次的電路將N76E003所有IO都拉出來了,此外LDROM已經幫大家預燒ISP程式,只要準備一條USB to UART (PL2303, FTDI232那種),就可以用新唐官方出的NuMicro ISP Programming Tool更改APROM的韌體,而不用NuLink燒錄器(ICP)。因此預設的功能雖然是時鐘,您也可以添加其它功能(例如溫溼度)或者是當開發板使用,可玩性可說是相當高的! 眼尖的朋友可能還發現,USB-C不僅只有供電的功能,我還預留了通訊的功能。 N76E003沒有USB介面怎麼做USB通訊? 實際上用軟體刻是可以跑USB 1.0的,之後會再慢慢開發~ 話說回來,為什麼專案的名稱取名為003Clock呢?因為N76E003還能pin-to-pin相容N76S003、M2003 (Cortex-M23)等003系列...