freepeople性欧美熟妇, 色戒完整版无删减158分钟hd, 无码精品国产vα在线观看DVD, 丰满少妇伦精品无码专区在线观看,艾栗栗与纹身男宾馆3p50分钟,国产AV片在线观看,黑人与美女高潮,18岁女RAPPERDISSSUBS,国产手机在机看影片

正文內(nèi)容

多傳感器障礙物檢測系統(tǒng)的軟件設計(編輯修改稿)

2025-08-03 13:41 本頁面
 

【文章內(nèi)容簡介】 一個clkT2實現(xiàn)清零、加一或減一操作。clkT2可以由內(nèi)部時鐘源或外部時鐘源產(chǎn)生,具體由時鐘選擇位CS22:0確定。沒有選擇時鐘源時(CS22:0=0)定時器停止。但是不管有沒有clkT2,CPU都可以訪問TCNT2。CPU寫操作比計數(shù)器其他操作(清零、加減操作)的優(yōu)先級高。計數(shù)序列由T/C控制寄存器(TCCR2)的WGM21和WGM20決定。計數(shù)器計數(shù)行為與輸出比較OC2的波形有緊密的關系。T/C溢出中斷標志TOV2根據(jù)WGM21:0設定的工作模式來設置。TOV2以用于產(chǎn)生CPU中斷8位比較器持續(xù)對TCNT2和輸出比較匹配寄存器OCR2進行比較。一旦TCNT2等于OCR2,比較器就給出匹配信號。在匹配發(fā)生的下一個定時器時鐘周期里輸出比較標志OCF2置位。若OCIE2=1還將引發(fā)輸出比較中斷。執(zhí)行中斷服務程序時OCF2將自動清零,也可以通過軟件寫”1”的方式進行清零。根據(jù)WGM21:0和COM21:0設定的不同工作模式,波形發(fā)生器可以利用匹配信號產(chǎn)生不同的波形(2) 定時器工作模式的選擇本系統(tǒng)設計中使用CTC(比較匹配時清除定時器)模式。在CTC模式(WGM21:0=2)里OCR2寄存器用于調(diào)節(jié)計數(shù)器的分辨率。當計數(shù)器的數(shù)值TCNT2等于OCR2時計數(shù)器清零。OCR2定義了計數(shù)器的TOP值,亦即計數(shù)器的分辨率。這個模式使得用戶可以很容易地控制比較匹配輸出的頻率,也簡化了外部事件計數(shù)的操作。CTC模式的時序圖為圖34。計數(shù)器數(shù)值TCNT2一直累加到TCNT2與OCR2匹配,然后TCNT2清零。圖34 CTC 模式的時序圖利用OCF2標志可以在計數(shù)器數(shù)值達到TOP即產(chǎn)生中斷。在中斷服務程序里可以更新TOP的數(shù)值。由于CTC模式?jīng)]有雙緩沖功能,在計數(shù)器以無預分頻器或很低的預分頻器工作的時候?qū)OP更改為接近BOTTOM的數(shù)值時要小心。如果寫入OCR2的數(shù)值小于當前TCNT2的數(shù)值,計數(shù)器將丟失一次比較匹配。在下一次比較匹配發(fā)生之前,計數(shù)器不得不先計數(shù)到最大值0xFF,然后再從0x00開始計數(shù)到OCR2。為了在CTC模式下得到波形輸出,可以設置OC2在每次比較匹配發(fā)生時改變邏輯電平。這可以通過設置COM21:0=1來完成。在期望獲得OC2輸出之前,首先要將其端口設置為輸出。波形發(fā)生器能夠產(chǎn)生的最大頻率為fOC2=fclk_I/O/2(OCR2=0x00)。頻率由如下公式確定:變量N代表預分頻因子(3612256或1024)。而在本系統(tǒng)中,系統(tǒng)時鐘為8MHz,要產(chǎn)生的波形為40KHz,代入上式,選N為1,所以得出OCR2=99。模式下OCF2置位和TCNT2清除的情況如圖35所示:圖35 T/C 時序圖,CTC模式,預分頻器為fclkI/O/8(3) T/C2寄存器的配置? Bit 7 – FOC2: 強制輸出比較表33 T/C控制寄存器-TCCR2Bit76543210TCCR2FOC2WGM20COM21COM20WGM21CS22CS21CS20讀/寫RR/WR/WR/WR/WR/WR/WR/W初值00000000FOC2僅在WGM指明非PWM模式時才有效。但是,為了保證與未來器件的兼容性,使用PWM時,寫TCCR2要對其清零。寫1后,波形發(fā)生器將立即進行比較操作。比較匹配輸出引腳OC2將按照COM21:0的設置輸出相應的電平。要注意FOC2類似一個鎖存信號,真正對強制輸出比較起作用的是COM21:0的設置。FOC2不會引發(fā)任何中斷,也不會在使用OCR2作為TOP的CTC模式下對定時器進行清零。讀FOC2的返回值永遠為0。? Bit 6,3 – WGM21:0: 波形產(chǎn)生模式這幾位控制計數(shù)器的計數(shù)序列,計數(shù)器最大值TOP的來源,以及產(chǎn)生何種波形。表34 波形產(chǎn)生模式的位定義模式WGM21(CTC2)WGM20(PWM2)T/C的工作模式TOPOCR2的更新時間TOV2的置位時刻000普通0xFF立即更新MAX101相位修正PWM0xFFTOPBOTTOM210CTCOCR2立即更新MAX311快速PWM0xFFTOPMAX ? Bit 5:4 – COM21:0: 比較匹配輸出模式這些位決定了比較匹配發(fā)生時輸出引腳OC2的電平。如果COM21:0中的一位或全部都置位,OC2以比較匹配輸出的方式進行工作。同時其方向控制位要設置為1以使能輸出驅(qū)動。當OC2連接到物理引腳上時,COM21:0的功能依賴于WGM21:0的設置。表34給出了當WGM21:0設置為普通模式或CTC模式時COM21:0的功能。表35 比較輸出模式,非PWM模式COM21COM20說明00正常的端口操作,OC2未連接01比較匹配發(fā)生時OC2取反10比較匹配發(fā)生時OC2清零11比較匹配發(fā)生時OC2置位? Bit 2:0 – CS22:0: 時鐘選擇這三位時鐘選擇位用于選擇T/C的時鐘源,見表36。表36 時鐘選擇位說明CS22CS21CS20說明000無時鐘,T/C不工作001clkT2S/(沒有預分頻)010clkT2S/8(來自預分頻器)011clkT2S/32(來自預分頻器)100clkT2S/64(來自預分頻器)101clkT2S/128(來自預分頻器)110clkT2S/256(來自預分頻器)111clkT2S/1024(來自預分頻器)在本系統(tǒng)中,要產(chǎn)生的是40KHz的波形,所以對寄存器的設定為:工作在CTC模式,所以WGM21=1,WGM20=0。輸出時OC2取反,所以COM21=0,COM20=1。時鐘選擇為沒有預分頻的狀態(tài),所以CS22=0CS21=0CS20=1所以,TCCR2=0b11010001初始化TCNT2+1NYOC2取反輸出開始TCNT2=OCR2?圖36 T/C2工作流程圖注意:通過T/C寄存器可以直接對計數(shù)器的8位數(shù)據(jù)進行讀寫訪問。對TCNT2寄存器的寫訪問將在下一個時鐘阻止比較匹配。在計數(shù)器運行的過程中修改TCNT2的數(shù)值有可能丟失一次TCNT2和OCR2的比較匹配。輸出比較寄存器包含一個8位的數(shù)據(jù),不間斷地與計數(shù)器數(shù)值TCNT2進行比較。匹配事件用來在OC2引腳上產(chǎn)生波形。超聲波檢測周期系統(tǒng)在進行超聲波檢測的時候,有一個測距周期(即完成一次測距工作的時間)30ms。這個周期由以下幾個時間段組成:發(fā)送6個40KHz的波形脈沖,占用150us;等待300us后開啟輸入捕捉使能(盲區(qū)隔離);等待回波信號而這個工作周期用單片機上所剩的T/C0來完成。T/C0是一個通用的單通道8位定時器/計數(shù)器模塊。T/C可以通過預分頻器由內(nèi)部時鐘源驅(qū)動,計數(shù)方向始終向上(增加),且沒有計數(shù)器清除操作。當計數(shù)器值超過最大8位值(MAX=0xFF)時,重新由0x00開始計數(shù)。在正常工作時,當TCNT0變?yōu)椤?”時,T/C溢出標志(TOV0)置位。當中斷使能時,將開始執(zhí)行中斷服務程序。在應用T/C0時,得先給TCNT0賦初值。初始化T/C1開始計數(shù)超聲波發(fā)射盲區(qū)隔離開啟T/C1輸入捕捉使能有回波?T/C1輸入捕捉Y(jié)NT/C1溢出?執(zhí)行中斷服務程序NY顯示報錯字符圖37 T/C0的中斷服務程序流程圖在本系統(tǒng)中,使用T/C0最為簡單定時功能。當T/C中斷屏蔽寄存器TIMSK中的TOIE0和狀態(tài)寄存器的全局中斷使能位I都為“0”時,T/C0的溢出中斷使能。當T/C0發(fā)生溢出,即TIFR中的TOV0位置位時,中斷服務程序得以執(zhí)行(如圖37所示)。當計數(shù)器T/C溢出而執(zhí)行中斷服務程序后,可以重新給這個TCNT0賦初值。 超聲波接收本系統(tǒng)所使用的單片機ATmega8L有一個16位的定時器/計數(shù)器。系統(tǒng)使用它來完成距離測量過程中的精確計時功能。當接收到回波信號后,通過對定時器/計數(shù)器值作相應的計算處理就可以得到一個準確的距離數(shù)值。T/C1相關知識16位的T/C可以實現(xiàn)精確的程序定時(事件管理)、波形產(chǎn)生和信號測量。其主要特點如下:? 真正的16位設計(即允許16位的PWM)? 2個獨立的輸出比較單元? 雙緩沖的輸出比較寄存器? 一個輸入捕捉單元? 輸入捕捉噪聲抑制器? 比較匹配發(fā)生時清除寄存器(自動重載)? 無干擾脈沖,相位正確的PWM? 可變的PWM周期? 頻率發(fā)生器? 外部事件計數(shù)器? 4個獨立的中斷源(TOVOCF1A、OCF1B與ICF1)定時器/計數(shù)器TCNT輸出比較寄存器OCR1A/B與輸入捕捉寄存器ICR1均為16位寄存器。16位計數(shù)器映射到兩個8位I/O存儲器位置:TCNT1H為高8位,TCNT1L為低8位。CPU只能間接訪問TCNT1H寄存器。CPU訪問TCNT1H時,實際訪問的是臨時寄存器(TEMP)。讀取TCNT1L時,臨時寄存器的內(nèi)容更新為TCNT1H的數(shù)值;而對TCNT1L執(zhí)行寫操作時,TCNT1H被臨時寄存器的內(nèi)容所更新。訪問16位寄存器必須通過特殊的步驟:TCNTOCR1A/B與ICR1是AVR CPU通過8位數(shù)據(jù)總線可以訪問的16位寄存器。讀寫16位寄存器需要兩次操作。每個16位計時器都有一個8位臨時寄存器用來存放其高8位數(shù)據(jù)。每個16位定時器所屬的16位寄存器共用相同的臨時寄存器。訪問低字節(jié)會觸發(fā)16位讀或?qū)懖僮?。當CPU寫入數(shù)據(jù)到16位寄存器的低字節(jié)時,寫入的8位數(shù)據(jù)與存放在臨時寄存器中的高8位數(shù)據(jù)組成一個16位數(shù)據(jù),同步寫入到16位寄存器中。當CPU讀取16位寄存器的低字節(jié)時,高字節(jié)內(nèi)容在讀低字節(jié)操作的同時被放置于臨時輔助寄存器中。并非所有的16位訪問都涉及臨時寄存器。對OCR1A/B寄存器的讀操作就不涉及臨時寄存器。寫16位寄存器時,應先寫入該寄存器的高位字節(jié)。而讀16位寄存器時應先讀取該寄存器的低位字節(jié)。在對16位寄存器操作時,最好首先屏蔽中斷響應,防止在主程序讀寫16位寄存器的兩條指令之間發(fā)生這樣的中斷:它也訪問同樣的寄存器或其他的16位寄存器,從而更改了臨時寄存器。如果這種情況發(fā)生,那么中斷返回后臨時寄存器中的內(nèi)容已經(jīng)改變,造成主程序?qū)?6位寄存器的讀寫錯誤。下面是讀取ICR1寄存器的函數(shù):unsigned int Tim16_Read(void){unsigned char sreg。unsigned int i。sreg = SREG?!        ? /* 保存全局中斷標志 */CLI( )?!          ?  /* 禁用中斷 */i=ICR1。             /* 設置ICR1到i */SREG=sreg?!        ?  /* 恢復全局中斷標志*/ return i。}T/C控制寄存器TCCR1A/B為8位寄存器,沒有CPU訪問的限制。中斷請求信號在中斷標志寄存器TIFR都有反映。所有中斷都可以由中斷屏蔽寄存器TIMSK單獨控制。雙緩沖輸出比較寄存器OCR1A/B一直與T/C的值做比較。波形發(fā)生器用比較結(jié)果產(chǎn)生PWM或在輸出比較引腳OC1A/B輸出可變頻率的信號。比較匹配結(jié)果還可置位比較匹配標志OCF1A/B,用來產(chǎn)生輸出比較中斷請求。在某些操作模式下,TOP值或T/C的最大值可由OCR1A寄存器、ICR1寄存器,或一些固定數(shù)據(jù)來定義。在PWM模式下用OCR1A作為TOP值時,OCR1A寄存器不能用作PWM輸出。但此時OCR1A是雙向緩沖的,TOP值可在運行過程中得到改變。當需要一個固定的TOP值時可以使用ICR1寄存器,從而釋放OCR1A來用作PWM的輸出。輸入捕捉16位T/C的主要部分是可編程的16位雙向計數(shù)器單元。T/C的輸入捕捉單元可用來捕獲外部事件,并為其賦予時間標記以說明此事件的發(fā)生時刻。外部事件發(fā)生的觸發(fā)信號由引腳ICP1輸入。當引腳ICP1上的邏輯電平(事件)發(fā)生了變化,并且這個電平變化為邊沿檢測器所證實,輸入捕捉即被激發(fā):16位的TCNT1數(shù)據(jù)被拷貝到輸入捕捉寄存器ICR1,同時輸入捕捉標志位ICF1置位。如果此時ICIE1=1,輸入捕捉標志將產(chǎn)生輸入捕捉中斷。中斷執(zhí)行時ICF1自動清零,或者也可通過軟件在其對應的I/O位置寫入邏輯“1”清零。輸入捕捉單元的主要觸發(fā)源ICP1使用邊沿檢測器。當使能噪聲抑制器后,在邊沿檢測器前會加入額外的邏輯電路并引入4個系統(tǒng)時鐘周期的延遲。噪聲抑制器通過一個簡單的數(shù)字濾波方案提高系統(tǒng)抗噪性。它對輸入觸發(fā)信號進行4次采樣。只有當4次采樣值相等時其輸出才會送入邊沿檢測器。噪聲抑制器使用的是系統(tǒng)時鐘,因而不受預分頻器的影響。使用輸入捕捉單元的最大問題就是分配足夠的處理器資源來處理輸入事件。事件的時間間隔是關鍵。如果處理器在下一次事件出現(xiàn)之前沒有讀取ICR1的數(shù)據(jù),ICR1就會被新值覆蓋,從而無法得到正確的捕捉結(jié)果。使用輸入捕捉中斷時,中斷程序應盡可能早的讀取ICR1寄存器。盡管輸入捕捉中斷優(yōu)先級相對較高,但最大中斷響應時間與其它正在運行的中斷程序所需的時間相關。T/C1寄存器的配置表37 T/C1 控制寄存器A-TCCR1ABit76543210TCCR1ACOM1A1COM1A0COM1B1COM1B0FOC1AFOC1BWGM11WGM10讀/寫R/WR/WR/W
點擊復制文檔內(nèi)容
環(huán)評公示相關推薦
文庫吧 www.dybbs8.com
備案圖片鄂ICP備17016276號-1