新聞中心

EEPW首頁 > 嵌入式系統(tǒng) > 設(shè)計應(yīng)用 > 談ARM對多傳感器的精確定時

談ARM對多傳感器的精確定時

作者: 時間:2016-12-02 來源:網(wǎng)絡(luò) 收藏




初始化定時器0時,使定時器0匹配1(TOMR1)每逢第5 s時MAT0.1輸出翻轉(zhuǎn);同時使定時器0匹配3(TOMR1)每逢第10 s時MAT0.3輸出翻轉(zhuǎn)。對定時器0設(shè)置代碼如下:



因?qū)τ贏DCR A/D轉(zhuǎn)換控制寄存器的START位選擇100~111時,MAT信號不必輸出到引腳上。對于上述代碼初始化定時器需要說明,MAT0.1的 START=4即十六進制的100,下降沿觸發(fā)啟動A/D轉(zhuǎn)換。對于MAT0.3的START=5即二進制的101,下降沿觸發(fā)啟動A/D轉(zhuǎn)換器。

怎樣精確地定時觸發(fā)呢?先設(shè)置定時器0清零復(fù)位(Fpclk=1 s),每隔5 s,定時器計數(shù)器TC的值與TOMR1設(shè)置值相等時,MAT0.1輸出信號翻轉(zhuǎn);每隔10 s時,定時器0復(fù)位。這樣在定時器0復(fù)位后的第5 s時,MAT0.1輸出再次翻轉(zhuǎn);MAT0.1每隔10 s輸出翻轉(zhuǎn)一次,它的精確匹配值是:

Fpclk×10 s(復(fù)位時間)-Fpclk×5 s(翻轉(zhuǎn)時間)+Fpclk×5(再次翻轉(zhuǎn)時間)=10 s

因為MAT0.1翻轉(zhuǎn)2次才會有1次下降沿觸發(fā)A/D轉(zhuǎn)換,采集瓦斯?jié)舛刃畔⒍〞r觸發(fā),即可精確地計算出MAT0.1每隔20 s產(chǎn)生1次下降沿,定時觸發(fā)1次,采集一次新的瓦斯?jié)舛刃畔ⅰ?br />
同理,每隔10 s定時器計數(shù)器TC的值與TOMR3設(shè)置值相等時,MAT0.3輸出翻轉(zhuǎn),并且定時器0復(fù)位。這樣在定時器0復(fù)位后的第10 s時,MAT0.3輸出再次翻轉(zhuǎn)。MAT0.3每隔10 s輸出翻轉(zhuǎn)1次,因為MAT0.3翻轉(zhuǎn)2次才會有1次采集一氧化碳濃度信息,即可精確地計算出MAT0.3,也是每隔20 s產(chǎn)生1次下降沿,定時觸發(fā)1次,產(chǎn)生1次新的一氧化碳濃度信息。這樣會給報警留有較長的時間。

上述兩段就是通過程序設(shè)置,無需CPU干預(yù)就能精確地定時觸發(fā)(是本文主要討論的問題)。這里的每隔20 s定時觸發(fā)1次,“20 s”這一數(shù)據(jù)可根據(jù)實際需求修改設(shè)定。

3 報警服務(wù)的實現(xiàn)

數(shù)字數(shù)據(jù)的提取、報警與A/D控制寄存器的設(shè)置均可通過中斷服務(wù)程序來完成。

定時器0為4號中斷源,如圖3所示,所以需要用中斷使能寄存器對4號中斷源進行使能。采用向量IRQ中斷,需要用VICIntSelect將4號中斷源選擇為向量IRQ,即第4位置1。然后將中斷服務(wù)程序地址賦給VICVectAddr0(因為向量通道0是最快的),最后用向量控制寄存器對向量通道0分配中斷源并使能。



在初始化定時器0時,將匹配控制寄存器TOMCR賦值;它的二進制賦值是 10001000001,即它的十六進制賦值是0x441,每3位設(shè)置一個匹配;設(shè)置的是當定時器0計數(shù)器的值與匹配0寄存器值相等時產(chǎn)生一個中斷,當定時器0計數(shù)器的值與匹配2寄存器值相等時又產(chǎn)生1次中斷,當定時器0計數(shù)器的值與匹配3寄存器值相等時定時器0計數(shù)器TC清零復(fù)位。

TC 每次復(fù)位后將產(chǎn)生2次中斷,產(chǎn)生第1次中斷后,中斷服務(wù)程序?qū)⒆x取A/D數(shù)據(jù)寄存器ADDR1的值,并提取10位A/D轉(zhuǎn)換的結(jié)果(即一氧化碳濃度值);再將這一數(shù)據(jù)與初告警、中度告警和強度告警值進行比較,滿足這3種告警的某一種,就立刻進行聲光報警。因A/D控制寄存器ADCR的MAT信號不必輸出到引腳上的START位設(shè)置是唯一的,中斷服務(wù)程序還需對A/D控制寄存器ADCR進行設(shè)置。設(shè)置START=4,當EDGE選擇的邊沿出現(xiàn)在MAT0.1 時啟動A/D轉(zhuǎn)換;EDGE=0,MAT0.1為下降沿觸發(fā)。通過中斷服務(wù)程序來完成對AIN0通道(即瓦斯?jié)舛刃盘柾ǖ?A/D轉(zhuǎn)換器的啟動。

產(chǎn)生第2次中斷后,中斷服務(wù)程序?qū)⒆x取A/D數(shù)據(jù)寄存器ADDR0的值,并提取10位A/D轉(zhuǎn)換的結(jié)果(即瓦斯?jié)舛戎?;再將這一數(shù)據(jù)與初度告警、中度告警和強度告警值進行比較,滿足這3種告警的某一種,就立刻進行該聲光報警。因A/D控制寄存器的MAT信號不必輸出到引腳上的START位置是唯一的,因此還需對A/D控制寄存器進行設(shè)置。設(shè)置START=5,當EDGE選擇的邊沿出現(xiàn)在MAT0.3時啟動ADC轉(zhuǎn)換;EDGE=0,MAT0.3為下降沿觸發(fā)。通過中斷服務(wù)程序來完成對AINl通道(即一氧化碳濃度信號通道)A/D轉(zhuǎn)換器的啟動。

這樣,當TC值與MR0值相等時,響應(yīng)中斷服務(wù)進行一氧化碳值判斷與告警并設(shè)置MAT0.1的啟動轉(zhuǎn)換。當TC值與MR1值相等時,設(shè)置MAT1輸出信號翻轉(zhuǎn);當TC值與MR2值相等時,響應(yīng)中斷服務(wù)進行瓦斯值判斷與告警并設(shè)置MAT0.3的啟動轉(zhuǎn)換;當TC值與MR3值相等時,設(shè)置MAT3輸出信號翻轉(zhuǎn)并同時TC復(fù)位。這樣循環(huán)往復(fù),可以無需 CPU干預(yù)就能精確地定時觸發(fā),精確地按時進行多個傳感器的觸發(fā)和多個判斷告警,即通過中斷服務(wù)程序?qū)崿F(xiàn)了有害氣體檢測告警服務(wù)。

結(jié)語

根據(jù)上述原理,使用ARM LPC2103芯片,已完成了一個可隨身攜帶的煤礦瓦斯報警器。它能及時檢測與顯示煤礦、隧道及各種地下工程等環(huán)境中的瓦斯(即甲烷)及一氧化碳濃度。當達到有害濃度值時,可進行不同級別的聲光報警。

此種報警器不僅適用于煤礦,安裝其他傳感器后也可用于其他礦山、化工重地、倉庫等具有爆炸危險的氣體環(huán)境中,提高安全監(jiān)控能力。

將煤礦瓦斯報警器CH4、C20傳感器換成可燃氣體、甲醛傳感器,就可用在廚房和居室,對有害氣體的超標情況進行報警。它的用途還可進一步擴展。

上一頁 1 2 下一頁

關(guān)鍵詞: ARM傳感器精確定

評論


技術(shù)專區(qū)

關(guān)閉