Robofun 機器人論壇

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

請問有關Arduino 停止傳送脈波的問題

[複製鏈接]
1#
發表於 2017-10-6 21:19:51 | 顯示全部樓層
micros 大約 70 分鐘就會溢位
如果在溢位時,就有機率產生bug
例如 next_edge計算等於
0xffffffff(或接近也會)
但是等到真正呼叫 micros 時
已經溢位從 0 重新數
就會變成
while(micros()<0xffffffff)
可能要下次 70分才出的來
(也可能永遠卡死)
2#
發表於 2017-10-7 06:48:32 來自手機 | 顯示全部樓層
另外,這個 yield 的作用是?
如果程式有用到 scheduler
就可能會卡在另一個程式中
3#
發表於 2017-10-7 15:16:05 來自手機 | 顯示全部樓層
可以用
unsigned long d;
unsigned long p=micros();
do{
d=micros()-p;
}while(d<duration);
這樣即使溢位,也沒問題
而且其實也不必宣告到 unsigned long
只要時間來的及即可,如 unsigned int
(或更小)
速度會快一點
但注意所有變數要一致
您需要登錄後才可以回帖 登錄 | 申請會員

本版積分規則

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

GMT+8, 2024-6-8 20:23 , Processed in 0.212592 second(s), 6 queries , Apc On.

Powered by Discuz! X3.2

© 2001-2013 Comsenz Inc.

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