使用LPC1700的IEC 60601-1-8音頻警報發(fā)生器
定時信號發(fā)生器代碼包括定時器0的初始化,以及用于處理定時器0中斷的中斷服務(wù)程序。這提供用于生成報警音調(diào)的40μs(25kHz)定時,以及軟件計(jì)數(shù)器生成的1ms定時。后者被包絡(luò)發(fā)生器和音符定序器所用。
定時器0初始化
定時器0需要進(jìn)行初始化,以每隔40μs生成一個匹配中斷,從而提供25kHz的采樣速率。下面給出了初始化代碼。
定時器0中斷服務(wù)程序
定時器0中斷服務(wù)程序是本應(yīng)用程序的心臟,因?yàn)樗鼮橐粽{(diào)生成以及音調(diào)定序提供所有計(jì)時。本代碼進(jìn)行試驗(yàn),以查看包絡(luò)是否啟用,如果是,它將輸出音調(diào)。除了清除中斷以外,軟件計(jì)數(shù)器被遞增,直到達(dá)到1ms的超時。在每一次1ms超時發(fā)生時,定序器的狀態(tài)就被遞增,而且任何需要的動作將由包絡(luò)發(fā)生器執(zhí)行(將在以后討論)。下面顯示了關(guān)于定時器0中斷服務(wù)程序的代碼列表。
包絡(luò)控制功能
包絡(luò)發(fā)生器控制音調(diào)的動態(tài)水平,因?yàn)?a class="contentlabel" href="http://www.ex-cimer.com/news/listbylabel/label/IEC">IEC60601-1-8要求上升時間和下降時間應(yīng)該處在規(guī)定的范圍內(nèi)。還有,報警順序中的第一個音符的振幅應(yīng)該低于其它音符。包絡(luò)發(fā)生器輸出是變量“包絡(luò)”。當(dāng)音調(diào)關(guān)閉時,包絡(luò)=0。當(dāng)在順序中打開一個音符時,包絡(luò)變量將每毫秒以設(shè)定的速率增大,直到它達(dá)到設(shè)定的最大水平。當(dāng)音符關(guān)閉時,音調(diào)繼續(xù),但包絡(luò)變量開始以其設(shè)定的速率減小,直到它達(dá)到“0”。包絡(luò)變量將被用作音符的動態(tài)特征的音量控制。下面給出了包絡(luò)控制功能的列表:
音符定序器功能
音符定序器為IEC60601-1-8中規(guī)定的不同報警旋律提供計(jì)時和音符定序。高級優(yōu)先權(quán)報警包括重復(fù)的5音符順序。相同報警范疇的中等優(yōu)先權(quán)形式使用其高級優(yōu)先權(quán)報警的前三個音符,但不重復(fù)。高級優(yōu)先權(quán)報警的音符間隔和持續(xù)時間比較短,因?yàn)檫@能給出緊急程度的較高感覺。以高級優(yōu)先權(quán)為例,下面顯示了實(shí)施這些功能的代碼。在定時器0中斷服務(wù)程序中討論的1ms時基增大順序計(jì)數(shù)器。作為其結(jié)果,與每個情況語句相關(guān)聯(lián)的數(shù)字均以毫秒為單位,以方便計(jì)時期間的調(diào)整。中等和低級優(yōu)先權(quán)形式使用相同的基本開關(guān)語句格式和類似的函數(shù)調(diào)用,但是,由于節(jié)拍不同,在相關(guān)的情況語句中使用了不同的計(jì)時狀態(tài)。
評論