總體來說還行,做一般的產品可以。但我認為是不夠穩定的,我做過一個產品,用STC15F2K08S2。是從上位機接收串列埠命令然後執行相關動作,並把裝置一些狀態透過串列埠發給上位機。因為我比較注重效率,所以串列埠的傳送和接收都採用中斷方式進行,這樣有串列埠命令時才去處理,沒有時微控制器做其它任務或休眠。但客戶反映了不穩定的情況,有時從上位機發命令會導致外設宕機。我當時花了很長時間找不到問題,因為我在燒錄是就已啟動了看門狗,如果宕機應該會導致微控制器復位才對。但沒有,裝置只是靜悄悄的什麼反應也沒有,既不發資料也不接收命令。而且這種狀況是隨機的,很難重現,有時好幾天都不出現一次,很難透過重現現象來查詢問題。我懷疑是程式的BUG,但反覆查詢推理都沒有找到哪有錯。
我一直是相信硬體的,因為我之前無數次在程式調不通時懷疑硬體,但後來都證明是自己的程式錯了。但這次實在找不到自己的問題,終於又懷疑是微控制器的問題來。但懷疑就得有根據,於是我另外寫了一個測試程式。在串列埠助手不停向單片機發資料,並讓微控制器不停地進串列埠中斷重發接收到的資料,透過串列埠助手觀察。終於串列埠死掉了,不接受資料也不傳送資料。而程式還在控制著幾個燈在反覆迴圈,並沒有死掉。
我後來改由程式來接收和傳送資料,不進串列埠中斷。沒有發現任何問題,哪怕接收及傳送速率都很高,程式最多迴圈的燈變慢或閃爍。
透過實驗我知道,STC15F2K這系列的微控制器中斷系統硬體是有缺陷的。我後來修改了產品的程式,客戶沒有再反饋有什麼”宕機“的問題。
總體來說還行,做一般的產品可以。但我認為是不夠穩定的,我做過一個產品,用STC15F2K08S2。是從上位機接收串列埠命令然後執行相關動作,並把裝置一些狀態透過串列埠發給上位機。因為我比較注重效率,所以串列埠的傳送和接收都採用中斷方式進行,這樣有串列埠命令時才去處理,沒有時微控制器做其它任務或休眠。但客戶反映了不穩定的情況,有時從上位機發命令會導致外設宕機。我當時花了很長時間找不到問題,因為我在燒錄是就已啟動了看門狗,如果宕機應該會導致微控制器復位才對。但沒有,裝置只是靜悄悄的什麼反應也沒有,既不發資料也不接收命令。而且這種狀況是隨機的,很難重現,有時好幾天都不出現一次,很難透過重現現象來查詢問題。我懷疑是程式的BUG,但反覆查詢推理都沒有找到哪有錯。
我一直是相信硬體的,因為我之前無數次在程式調不通時懷疑硬體,但後來都證明是自己的程式錯了。但這次實在找不到自己的問題,終於又懷疑是微控制器的問題來。但懷疑就得有根據,於是我另外寫了一個測試程式。在串列埠助手不停向單片機發資料,並讓微控制器不停地進串列埠中斷重發接收到的資料,透過串列埠助手觀察。終於串列埠死掉了,不接受資料也不傳送資料。而程式還在控制著幾個燈在反覆迴圈,並沒有死掉。
我後來改由程式來接收和傳送資料,不進串列埠中斷。沒有發現任何問題,哪怕接收及傳送速率都很高,程式最多迴圈的燈變慢或閃爍。
透過實驗我知道,STC15F2K這系列的微控制器中斷系統硬體是有缺陷的。我後來修改了產品的程式,客戶沒有再反饋有什麼”宕機“的問題。