<dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><s id="yhprb"><strike id="yhprb"></strike></s></dfn><small id="yhprb"></small><dfn id="yhprb"></dfn><small id="yhprb"><delect id="yhprb"></delect></small><small id="yhprb"></small><small id="yhprb"></small> <delect id="yhprb"><strike id="yhprb"></strike></delect><dfn id="yhprb"></dfn><dfn id="yhprb"></dfn><s id="yhprb"><noframes id="yhprb"><small id="yhprb"><dfn id="yhprb"></dfn></small><dfn id="yhprb"><delect id="yhprb"></delect></dfn><small id="yhprb"></small><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn> <small id="yhprb"></small><delect id="yhprb"><strike id="yhprb"></strike></delect><dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"><s id="yhprb"><strike id="yhprb"></strike></s></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn>

新聞中心

EEPW首頁(yè) > 嵌入式系統 > 設計應用 > 單片機典型案例開(kāi)發(fā)(六)

單片機典型案例開(kāi)發(fā)(六)

作者: 時(shí)間:2013-07-13 來(lái)源:網(wǎng)絡(luò ) 收藏
PACE: normal; ORPHANS: 2; LETTER-SPACING: normal; COLOR: rgb(0,0,0); WORD-SPACING: 0px; PADDING-TOP: 0px; webkit-text-size-adjust: auto; webkit-text-stroke-width: 0px">  運行在的底層軟件主要負責ADC的采集、DAC的輸出以及串口的通信,下面詳細介紹各個(gè)部分:

  1、 光柵頻率測量:測量模擬基準一個(gè)周期內的光柵個(gè)數

  在程序中,每次進(jìn)入外中斷0的處理程序void int0_isr(void)(即基準脈沖上升沿到來(lái)時(shí))調用void do_gd_opt_frq()函數測量光柵頻率。

  在do_gd_opt_frq ()函數中,先把前一次讀取計數器1的計數值保存在全局變量time1_prev中,再讀取計數器1的值并保存在time1_next中,因為兩次中斷的間隔就是模擬基準的周期,有一個(gè)光柵脈沖計數器1就加1,所以,前后兩次的差值就是一個(gè)模擬基準周期內光柵的個(gè)數。

  2、 模擬基準幅度

  在INT0的中斷處理函數中置一個(gè)全局標志refoa_gd_flag = 0xff,在一個(gè)100?s的定時(shí)器的中斷處理函數中查詢(xún)此全局標志,若置位,則對模擬基準的ADC通道連續采樣400次,采樣后清 refoa_gd_flag標志并置采樣結束的標志refoa_gd_finished = 0xff。在主程序main()函數中不斷查詢(xún)r(jià)efoa_gd_finished標志,若置位,則調用do_refoa_high()函數求出模擬基準幅度,然后清標志。在do_refoa_high()函數中求出采樣400個(gè)點(diǎn)中的最大值和最小值,兩者之差即為模擬基準幅度。

  3、 模擬基準周期:測量一個(gè)模擬基準周期的毫秒值

  在一個(gè)1ms的定時(shí)器溢出中斷處理函數中,全局的計數變量ref_gd_count加1,ref_gd_count初始化為0。在外中斷0的處理函數 int0_isr()中讀取ref_gd_count的值,即為模擬基準的周期,再把ref_gd_count清零。這樣,只有第一次測量值是無(wú)效的,以后均為有效的模擬基準周期。

  4、 模擬基準寬度

  在INT0的中斷處理函數中置全局變量refoa_width_gd_ count=0,在100?s的定時(shí)器中斷中查詢(xún)外中斷0的引腳是否為高電平,是高電平則refoa_width_gd_count加1,直至變?yōu)榈碗娖?,refoa_width_gd_ count的值就是模擬基準的寬度。

  5、 電地球波

  在do_ein()函數中處理工控機串口傳過(guò)來(lái)的電地球波信息,如果是停止電地球波命令(state=0),通過(guò)DA電地球波直接輸出高電平并清除電地球波使能標志位ein_gd_enable。如果是開(kāi)始電地球波命令(state=1),把相位、寬度、幅值、斜率等信息賦給全局變量保存,并且計算出步距和斜率上各個(gè)點(diǎn)的輸出值,置位電地球波使能標志 ein_gd_enable。

  電地球波的產(chǎn)生是以模擬基準為基準的,在INT0的中斷處理函數中設置計數器的比較中斷并使能。

  圖3中, T0與T1 之間是地球波的相位,T2與T5之間是地球波的寬度。在T1時(shí)刻進(jìn)入計數器1的比較中斷timer1_compa_isr(),全局變量 ein_count_gd初始化為0,若ein_count_gd不等于1,則設置比較中斷寄存器初值為下一步距點(diǎn),并通過(guò)DA輸出,若下一個(gè)比較中斷到來(lái)ige ein_count_gd不等于1,則繼續設置比較中斷寄存器初值為下一個(gè)步距,并輸出幅值,直到斜率上所有的幅值輸出完畢,置ein_count_gd 等于1并設置比較中斷寄存器,使T4進(jìn)入比較中斷。T4進(jìn)入比較中斷,并按照前述方法輸出斜率上所有的幅值,完畢則禁止比較中斷并置 ein_count_gd=0xff。

  

地球波的相位

  ADC采集和串口通信比較簡(jiǎn)單,這里不再贅述。



關(guān)鍵詞: 單片機 典型案例

評論


相關(guān)推薦

技術(shù)專(zhuān)區

關(guān)閉
国产精品自在自线亚洲|国产精品无圣光一区二区|国产日产欧洲无码视频|久久久一本精品99久久K精品66|欧美人与动牲交片免费播放
<dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><s id="yhprb"><strike id="yhprb"></strike></s></dfn><small id="yhprb"></small><dfn id="yhprb"></dfn><small id="yhprb"><delect id="yhprb"></delect></small><small id="yhprb"></small><small id="yhprb"></small> <delect id="yhprb"><strike id="yhprb"></strike></delect><dfn id="yhprb"></dfn><dfn id="yhprb"></dfn><s id="yhprb"><noframes id="yhprb"><small id="yhprb"><dfn id="yhprb"></dfn></small><dfn id="yhprb"><delect id="yhprb"></delect></dfn><small id="yhprb"></small><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn> <small id="yhprb"></small><delect id="yhprb"><strike id="yhprb"></strike></delect><dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"><s id="yhprb"><strike id="yhprb"></strike></s></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn>