超聲波的移動機(jī)器人導(dǎo)航的設(shè)計原理
利用數(shù)字示波器精確設(shè)計一個軟件計時函數(shù)usdelay (),具體實現(xiàn)如下。
則usdelay(1)既為10us,該函數(shù)用于在給出激發(fā)高脈沖后延續(xù)10us 然后關(guān)脈沖。
還要設(shè)計一個msdelay()用于控制整個測距周期的時間值。
msdelay(1000)在主函數(shù)數(shù)中用于延遲1s,這樣定時器可以完全有足夠的回波檢測時間同時也不會對其它三路超聲波信號造成干擾。
如下所示。
3.3 超聲波回波檢測的實現(xiàn)
回波檢測計算脈寬的時間需要用到定時器和外部中斷,外部中斷接超聲波的echo 并設(shè)置為下降沿觸發(fā)。定時器的初始化如下。
rTCFG0=0x9595; //預(yù)分頻值為95
rTCFG1=0x00000; //分割值1/2
rTCNTB0=10000; /
根據(jù)T=[TCNTB0*(TCFG0+1)*(1/TCFG1)]/50MHZ 得出定時器的周期為60ms 在這個時間段里足以計算回波時間。
外部中斷1 初始化如下
rGPFCON=0xaa; //GPF1 設(shè)置為EINT1
rINTMOD=0x0; //設(shè)置為普通中斷
rGPFUP=0xf; //禁止GPF0 上拉電阻
pISR_EINT1=(unsigned)Eint1Handler; //建立中斷向量
EnableIrq(BIT_EINT1); //使能中斷
rEXTINT0 =0x492; // EINT1 下降沿觸發(fā)
根據(jù)T=[TCNTB0*(TCFG0+1)*(1/TCFG1)]/50MHZ 得出定時器的周期為60ms 在這個時間段里足以計算回波時間。
評論