我正在使用一個硬件設計組來處理中斷處理程序,並且我們試圖找出錯誤在哪裏。我正在以5khz讀SPI總線上的芯片。芯片加載4個字節並觸發數據準備好引腳。在Linux中斷處理程序中創建一個小延遲
我的中斷處理程序喚醒並從SPI總線讀取4個字節並將數據存儲在緩衝區中。奇怪的是,每第17次讀取都會給出所有0的4個字節,這是不對的。我們正在探索的其中一個選擇是芯片在發送數據就緒信號時並不總是準備好。所以,我知道我不能睡在中斷處理程序中,但我想嘗試引入10或20微秒的延遲。現在我有一個for循環計數到100,000然後處理中斷。我還沒有看到任何變化,所以我想我可能會看到是否有人有更好的技術來忙等待。或者至少有一個更好的方法來計算我應該經歷多少循環迭代,因爲我不知道這需要多長時間,或者編譯器是否只是優化整個事情。
將數字分析儀連接到SPI線。查看數據準備好後是否真的返回了錯誤的數據。除非你更好地找出問題的根本原因,否則你可能會因爲延遲等原因而喋喋不休。 –