我這個測量的距離有問題,不是不準,它是以1.7cm進位的,3.4直接就跳到5.1了,我設定的是5cm以內報警,量的距離也沒問題,大概在4.6-4.8cm,可是串口助手就顯示3.4cm了,很頭痛,大佬給看一下,謝謝!
uj5u.com熱心網友回復:
兄弟,不管你想實作什么功能,你這個在中斷里面還加延時的操作,加while等待,這個操作本身就有嚴重問題啊,還是先學學怎么正確的使用中斷吧。而且你到底想描述什么,我沒有看懂你的問題。uj5u.com熱心網友回復:
這個延時是我故意加上去的,不然資料發送的太快了,看不清楚,我想問的是,比如我實際的距離是4.8cm,它顯示不出來,只給3.4,也就是說3.4過了下一個數就是5.1,中間就沒數了uj5u.com熱心網友回復:
你的傳感器是什么樣的(模擬/數字?),傳感器檢測范圍是多少,傳感器精度是多少uj5u.com熱心網友回復:
模擬傳感器,檢測范圍2-450cm,精度2mmuj5u.com熱心網友回復:
看了一下你這個傳感器,如果我來設計,我的思路是這樣的。考慮到你對精度要求比較敏感,我準備讓定時器不進行開關,只進行計數。
定時器的設定,1秒鐘reload,要注意reload時候的計數值需要過零檢測。
高電平持續時間,把外部中斷配置成上升/下降都中斷的模式,在中斷函式中,檢測是上升沿中斷還是下降沿中斷,上升沿中斷獲取一次tim計數值,下降沿獲取一次,將兩次結果相減。
主函式,將兩次相減的結果,作為你傳感器的計算引數。
這樣設計,沒有延時,實時性會好很多,中斷中不需要列印,你只需要主函式定時計算并列印就可以了
uj5u.com熱心網友回復:
你這個是模擬的??我在網上看是,高電平持續時間來計算的?uj5u.com熱心網友回復:
數字數字,說錯了
uj5u.com熱心網友回復:
哦哦,可以參考我前面給你寫的思路,修改一下,看看結果是怎么樣的,中斷中一定不能加耗時操作,會有很多未知問題,列印也不可以,列印也是耗時操作uj5u.com熱心網友回復:
好的,我試試,謝謝啦轉載請註明出處,本文鏈接:https://www.uj5u.com/qita/102855.html
標籤:單片機/工控
上一篇:新人
