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

正文內(nèi)容

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

2025-08-03 13:41 本頁面
 

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