adxl362是adi公司的加速度感測器,這個產品在小公尺手環裡被用到了。它的核心技術是超級低功耗檢測運動、加速度、靜止這些資訊。
它裡面有幾種模式:
1)預設模式
感測器剛起來時進入預設狀態,此時運動和靜止的狀態是不使能的。如果使用者使能了運動和靜止功能,靜止和運動兩種檢測皆可以被檢測,並且可以觸發中斷。處理器必須處理中斷。
實際將暫存器act_inact_ctl暫存器設定為default mode(**中是adxl362_mode_default),允許運動和靜止檢測和中斷,但實際上試了不行。
2)link模式
link模式下,運動和靜止檢測鏈結在一起。可以配合中斷檢測。如果需要連續檢測運動/靜止(可以在中斷裡檢視awake位判斷是檢測到運動還是靜止),這個方法可以。
特別要注意:在中斷處理函式處理完後,退出來之前,一定要再讀一次adxl362的status(讀取這個status可以把adxl362內部的中斷資訊清空),否則有可能出現無法再進中斷的危險。這個估計是adxl362的乙個重大bug。但是實際測試發現**存在不一致性,即有些**即使在退出中斷前再讀一次status,仍然還存在無法再進中斷的風險。
下面是讀取status清空act和inact中斷資訊的文件中的依據。
3)loop模式
loop模式和link模式很像。文件資料裡說不需要中斷服務。但實際上是可以用中斷一起配合使用的。
但是它的問題和link一樣,存在永遠無法進入中斷的問題。這個bug的現象和link一模一樣。解決辦法是退出來之前,一定要再讀一次adxl362的status(讀取這個status可以把adxl362內部的中斷資訊清空)。loop模式的好處是貌似不存在不一致性,也就是**的一致性可以。
現在解釋下這個現象產生的過程(在int1中斷引腳的處理函式裡):
void exti_irqhandler()
else
exti->pr = ((uint32_t)0x00000400);
// 下面這句必須新增,以防adxl362不工作
adxl362_getregistervalue(&adxl362_status, adxl362_reg_status, 1);//(c)
}
上面的**是用來不斷檢測運動和靜止的**。
如果adxl362檢測到靜止,然後在處理靜止的時候(b)位置(還未退出中斷)發生了運動事件(adxl362在這麼短時間內檢測到運動了),那麼如果沒有(c)**,那麼會導致無法在進中斷。同樣的,如果在檢測到運動的時候(a)發生了靜止事件(還未退出中斷),那麼同樣的,如果沒有(c)**,會導致後續無法再進中斷。
下面是比較好的連續檢測靜止和運動的初始**。
void adxl362(void)
}
time = time_act/odr.
比如上面的**time_act是3,選的odr是12.5hz,那麼檢測運動的時間是3/12.5hz。
無線加速度感測器
mms f a01無線加速度感測器說明書 1 產品介紹 mms f a01無線加速度感測器採用最先進的無線物聯網技術 lora技術,同時具有低功耗和長距離通訊的特性,通訊距離可達5km,感測器 引進歐洲專利技術的三軸加速度感測單元,具有結構固定 功耗低 穩定性好等特點,無線加速度感測器使用簡單,可用...
有線加速度感測器
mms a01型三軸有線加速度感測器使用說明書 1 產品介紹 mms a01是一款引進歐洲專利技術的三軸加速度感測器,產品具有結構固定,功耗低,偏差穩定性優異等特點,保證了傑出的 輸出可靠性。可適用於震動測試,撞擊測試等多個領域,可適應在工業惡劣環境中長期工作。2 產品特點 三軸同時測量 數字輸出 ...
Android感測器(二) 加速度感測器
android 感測器 二 加速度感測器 感測器理解 o1座標系是以手機左下角為原點,固定在手機上的座標系。xyz的值為手機加速度在o1座標系中的加速度分量,向量和為手機加速度。獲取加速度感測器的三個引數 float x event.values 0 float y event.values 1 f...