Robofun 機器人論壇

 找回密碼
 申請會員
搜索
熱搜: 活動 交友 discuz
查看: 8612|回復: 6
打印 上一主題 下一主題

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

[複製鏈接]
跳轉到指定樓層
1#
發表於 2010-8-31 17:38:03 | 只看該作者 回帖獎勵 |倒序瀏覽 |閱讀模式
如題所示
所使用的IC為BS2px
想學如何寫中斷副程式
例如:車子一直在接收更新GPS資料的同時,
        可以往前走或左轉或右轉

懇請高手解答,感謝!
2#
發表於 2010-9-1 15:18:19 | 只看該作者
Stamp沒有中斷
3#
 樓主| 發表於 2010-9-1 16:51:00 | 只看該作者
如果沒有中斷的話
那我所描述的例子可否使用其他方式取代?
playrobot 該用戶已被刪除
4#
發表於 2010-9-4 09:11:54 | 只看該作者
stamp本身有中斷, 你可以參考 run , pullin, 等指令。 可以"隨時"等待某個腳位被觸發, 然後執行RUN某個事件。 範例程式相當簡單。

其次, 或者, 你可以使用兩個BS2, 一個處理GPS資料接收, 將車子移動資料送到車子上的BS2, 去控制車子方向。
5#
 樓主| 發表於 2010-9-5 00:47:35 | 只看該作者
您好
可否示範簡單的例子
譬如 螢幕一直在顯示
A VAR WORD
A=A+1
DEBUG DEC A
而噪音器一直在鳴叫
FREQOUT 8, 2000, 1500
如何讓兩件事情同時運作?
6#
發表於 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執行間隔短到人的耳朵聽不出來有間斷即可。
7#
 樓主| 發表於 2010-9-5 20:20:57 | 只看該作者
感謝您細心的回答!!
所以Basic Stamp真的要執行多工的話,只有使用兩塊BS這個辦法嗎?
您說FREQOUT運作是靠硬體,是軟體,那請問有哪些程式指令的運作是靠硬體而不是軟體呢?
( PULSOUT是嗎?)
您需要登錄後才可以回帖 登錄 | 申請會員

本版積分規則

小黑屋|手機版|Archiver|機器人論壇 from 2005.07

GMT+8, 2024-11-21 19:38 , Processed in 0.166065 second(s), 8 queries , Apc On.

Powered by Discuz! X3.2

© 2001-2013 Comsenz Inc.

快速回復 返回頂部 返回列表