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