標題: 求助單片機DS18B20程序一個簡單小問題,就是下文中這個200是根據什么來的 [打印本頁]
作者: 大家一起變好玩 時間: 2020-7-8 17:02
標題: 求助單片機DS18B20程序一個簡單小問題,就是下文中這個200是根據什么來的
u8 DS18B20_Check(void)
{
u8 retry=0;
DS18B20_IO_IN();//把IO口配置為輸入,目的是為了接收DS18B20發過來的數據
while (DS18B20_DQ_IN&&retry<200)//如果IO口是低電平,則是正常的,否則一直進while循環
{
retry++;
delay_us(1);
};
if(retry>=200)
{//通訊有誤,返回1
return 1;
}
else
{//正常
retry=0;
}
while (!DS18B20_DQ_IN&&retry<240)//繼續讀取電平,如果IO口是高電平,則是正常的
{
retry++;
delay_us(1);
};
if(retry>=240)
{//通訊有誤,返回1
return 1;
}
return 0;//通訊正常,返回0
}
作者: man1234567 時間: 2020-7-9 10:05
應該是根據手冊時序來的經驗值,時間太長會影響其他事務,時間太短難達目標。
作者: 小黑的大表舅 時間: 2020-7-9 11:55
應該是數據手冊中的一個經過測試得來的數值
作者: wulin 時間: 2020-7-9 12:49
此200是延時等待時間的經驗數據,多一點少一點無所謂,差多了就會量變轉質變。
作者: lwh999995 時間: 2020-7-9 12:52
只能說是個人測試之后的經驗值,可能你的環境也不合適,需要微調
作者: f556 時間: 2020-7-9 16:37
200是判斷正常狀態DS拉低DQ最大時間,200us多。一般幾十us就返回應答信號。
作者: wjianing 時間: 2020-7-9 16:55
等待IO口拉低的一個超時處理吧,不一定200,理論上這個值只要大于正常響應的最大延遲就好了,保險起見留一些余量。等待太長也不合適,影響效率。假如你去約會被放了鴿子,那可能你等上三天三夜也沒用,還耽誤正常的吃飯睡覺
作者: 大家一起變好玩 時間: 2020-7-9 17:48
啊哈,知道了,謝謝
| 歡迎光臨 (http://www.raoushi.com/bbs/) |
Powered by Discuz! X3.1 |