8051 中斷一問 interrupt

本帖最後由 CMS 於 2012-2-3 15:03 編輯

近年才開始玩返 8051 core MCU (早前玩samsung 8 bit MCU)

問 8051 只有一個中斷interrupt ,如果set得太密
在interrupt 中運行中(未完成) 發生相同中斷信號
那想問MCU 怎樣處理
1) 完成現有 interrupt後,再次進入interrupt
2) 進入新一次interrupt 完成後,再次做前一次iinterrupt
3) missing 左一次 interrupt 過程

因為相同 priority ,我都唔記得晒,所以才問各位師兄

印象5個中斷有不同priority,同時有interrupt時會跟該次序做,interrupt時會set了flag故不會missing...至於priority要查翻書

TOP

Interrupt handling 是 MCU一大課題. 無搞51一段時間, 都唔多記得interrupt behavior. 不過PIC16, PIC24, AVR, Cortex-M3都不同, 甚至有些低端既MCU (e.g. Freescale R08)連interrupt 都沒有, 純靠polling代替.

不過, MCU的interrupt大原則是 interrupt service routine(ISR)裡面不應做很多工作, 盡量縮短ISR的運行時間. 避免nested interrupt發生

TOP

提示: 作者被禁止或刪除 內容自動屏蔽

TOP

在interrupt 中運行中(未完成) 發生相同中斷信號
8051會進入新一次interrupt 完成後,再次做前一次interrupt
但個情況通常係不停堆上去,直到爆SP,之後粒U就會亂來
以上講的野通常0.5秒都唔洗就會發生,so,
1)避免過多interrupt
2)interrupt要簡而精,可以唔做就唔做,可以用8bit就唔唔用16bit,可以shift就唔好用乘除
3)interrupt期間馬上停止所有/部份interrupt

8051印象中只有2級interrupt,低級的唔可以interrupt高級
這情況下會missing 左一次 interrupt 過程
同級/高級interrupt 8051會進入新一次interrupt ,如果你有停到interrupt就唔會堆到上去。如果無就好有機會堆上去爆SP後亂走

TOP

本帖最後由 CMS 於 2012-2-4 01:01 編輯

多謝各位師兄
我的ISR 係非常短, 要每次interrupt time 都好快
我用assembly 寫,ISR total cycle 去計算 最快 interrupt time  (越快效果越好)
所以想了解返 8051 core interrupt

用緊 : internal clock 去到16.6MHz , 指令cycle 係1T ,package : SOP20
用於工桯關係,不會選用external clock ,另外問 STC 有沒有更快 internal clock MCU
package 要SOP20 (本人沒用過STC series 8051 core MCU )

TOP

回復 6# CMS

關於STC既8051,你問OFFER師兄啦!他經常用比較熟悉!

TOP

回復  CMS

關於STC既8051,你問OFFER師兄啦!他經常用比較熟悉!
edwardfcy 發表於 2012-2-5 13:43


邊個call 我?今晚坐定定同你地研究下!

TOP

邊個call 我?今晚坐定定同你地研究下!
Offer 發表於 2012-2-5 17:28


多謝Offer ,我想問STC MCU 香港有冇代理商
本人正在使用SH79F083 (google一下就可以找到)
同8051 core , 基本上 STC 某類MCU相當接近
但STC 比較多開發板,sample program 等等
所以都想一同研究一下,所以先向你請教一下

TOP

本帖最後由 Offer 於 2012-2-5 19:02 編輯
多謝Offer ,我想問STC MCU 香港有冇代理商
本人正在使用SH79F083 (google一下就可以找到)
同8051 core ,  ...
CMS 發表於 2012-2-5 18:22


選擇有好多 http://stcmcu.com

據我所知係無,如你數量多(以管計)又係特別型號及封裝而TB也沒有我可以幫你取貨,數量少就TB啦!

TOP