log4518 發表於 2010-8-31 17:38:03

[求救]如何使用basic stamp寫中斷副程式

如題所示
所使用的IC為BS2px
想學如何寫中斷副程式
例如:車子一直在接收更新GPS資料的同時,
      可以往前走或左轉或右轉

懇請高手解答,感謝!

g921002 發表於 2010-9-1 15:18:19

Stamp沒有中斷

log4518 發表於 2010-9-1 16:51:00

如果沒有中斷的話
那我所描述的例子可否使用其他方式取代?

playrobot 發表於 2010-9-4 09:11:54

stamp本身有中斷, 你可以參考 run , pullin, 等指令。 可以"隨時"等待某個腳位被觸發, 然後執行RUN某個事件。 範例程式相當簡單。

其次, 或者, 你可以使用兩個BS2, 一個處理GPS資料接收, 將車子移動資料送到車子上的BS2, 去控制車子方向。

log4518 發表於 2010-9-5 00:47:35

您好
可否示範簡單的例子
譬如 螢幕一直在顯示
A VAR WORD
A=A+1
DEBUG DEC A
而噪音器一直在鳴叫
FREQOUT 8, 2000, 1500
如何讓兩件事情同時運作?

g921002 發表於 2010-9-5 12:51:09

本帖最後由 g921002 於 2010-9-5 12:53 編輯

1.「同時」是不可能的。因為核心只有一個。

2.另外Stamp是沒有中斷的,即便上面的uC有中斷可用。Stamp的運作方式是在uC燒入Basic指令執行器。透過讀取IIC EEPROM執行編譯好的Stamp指令碼。<--這是公開資料,原廠網站可查。詳情見BASIC Stamp Syntax and Reference Manual

3.因為你用的是2p系列,上面有所謂的poll interrupt系列指令使用。<--很抱歉,這跟uC的ISR一點關係也沒有。這種實作的方式跟message passing很像。pollrun透過該類機制切換不同Task運作。想要執行另一Task抱歉先排隊等到當前Task做完。跟uC的ISR直接從主迴圈跳入ISR是兩馬子事情。pollout送出訊息也是要在主迴圈輪詢才能做。不然丟出來只是丟辛酸的。

4.由於FREQOUT的運作不是靠硬體,是軟體,執行時就是佔住資源。跟是不是中斷一點關係也沒有。你可以讓變數相加的執行時間很短。讓每次FREQOUT執行間隔短到人的耳朵聽不出來有間斷即可。

log4518 發表於 2010-9-5 20:20:57

感謝您細心的回答!!
所以Basic Stamp真的要執行多工的話,只有使用兩塊BS這個辦法嗎?
您說FREQOUT運作是靠硬體,是軟體,那請問有哪些程式指令的運作是靠硬體而不是軟體呢?
( PULSOUT是嗎?)
頁: [1]
查看完整版本: [求救]如何使用basic stamp寫中斷副程式