有可能喚醒由外圍傳感器產生的外部中斷上的傳感器節點。以下說明了Contiki OS如何處理外部中斷。在ATmega128RFA1
的情況下,外部中斷INT0
到INT4
能夠喚醒MCU甚至從深度睡眠。Contiki OS如何處理外部中斷?
0
A
回答
2
勝過過程的概述,並interupts在半自助旅遊旅行社是在這裏:
https://github.com/contiki-os/contiki/wiki/Processes
http://de.slideshare.net/DingxinXu/contiki-introduction-iifrom-what-to-how
http://senstools.gforge.inria.fr/doku.php?id=os:contiki
半自助旅遊旅行社利用MCU的ISR矢量
此示例是用於ATmega128RFA1。 PD0(引腳25)上的外部中斷爲INT0
在ISR中唯一的動作是對輪詢一個關聯的contiki進程。在內部,這向進程發送輪詢請求。該進程捕獲輪詢請求,然後執行與外部中斷相關的計算。該程序可防止ISR中的長期計算。
ISR:
ISR(INT0_vect)
{
process_poll(&extern_interupt_process);
PRINTF("interrupt was triggered on INT0... \n");
}
以啓用INT0外部interupts:
EIMSK = 0xb00000000; //disable interrupts before changing EICRA EICRA |= 0xb00000011; //EICRA 0000|0011 rising edge triggers interrupt int0 EIMSK |= 0xb00000001; // enable INT0
(數據表第219頁及其後)
過程:
PROCESS(extern_interupt_process, "external_interrupt_process");
PROCESS_THREAD(extern_interupt_process, ev, data)
{
PROCESS_BEGIN();
while(1) {
PROCESS_YIELD_UNTIL(ev == PROCESS_EVENT_POLL);
// process data here
}
PROCESS_END();
}
使用autostart_process()來啓動extern_interrupt_process或者如果傳感器具有集電極開路輸出激活內部上拉電阻手動啓動它在半自助旅遊旅行社-main.c中
並設定中斷控制寄存器以觸發中斷對低級別(詳見:wiring a sensor with open collector output)
DDRD &= 0xb00000000; // PD0 as input
PORTD |= 0xb00000001; // enable internal pull-up on PD0
EIMSK &= 0xb00000000; //disable interrupts before changing EICRA
EICRA &= 0xb00000000; //EICRA 0000|0000 low-level triggers interrupt on int0
EIMSK |= 0xb00000001; // enable INT0` (datasheet p. 219 ff)
相關問題
- 1. 使用Contiki-OS處理TelosB的GIO引腳中斷
- 2. Contiki os MQTT
- 3. 關於客戶在kvm中處理外部中斷和外部中斷
- 4. 如何在powerpc處理器上引導外部中斷?
- 5. 從contiki-os的本地驅動器處理文件
- 6. 用Contiki-OS接收來自終端的數據通過Contiki-OS
- 7. 處理器如何處理中斷
- 8. SMP如何處理中斷?
- 9. KVM如何處理中斷
- 10. 如何處理中斷?
- 11. 如何處理外部類型?
- 12. 如何執行外部處理函數?
- 13. KVM如何處理物理中斷?
- 14. sha256在contiki os中出錯的散列
- 15. CPU x86 - 外部中斷調用異常處理程序
- 16. 處理中斷:
- 17. 如何處理源代碼管理中的外部庫?
- 18. 你如何處理bootloader中的中斷?
- 19. 8051外部中斷
- 20. VxWorks如何優先處理中斷下半部分?
- 21. JDK8 CompletableFuture.supplyAsync如何處理中斷異常
- 22. 如何正確處理GKSession的中斷?
- 23. c#如何處理互聯網中斷
- 24. 如何處理中斷的AndroidHttpClient操作
- 25. 8051μCU - 如何處理併發中斷?
- 26. 如何測試中斷的POST處理
- 27. AVPlayer:如何處理網絡中斷
- 28. 如何處理Mongoose DB連接中斷
- 29. 如何在處理中斷while語句?
- 30. 如何正確處理音頻中斷?
在某些平臺上還需要明確一些狀態寄存器位,以避免執行中斷處理程序後回到睡眠模式。 – kfx