使用定時(shí)器捕獲輸入脈沖(來(lái)自于紅外遙控器)時(shí)長(zhǎng),初始設(shè)置如下:
? ? TMR0_CapInit(Edge_To_Edge);
? ? TMR0_CAPTimeoutCfg(1000 * (g_sys_clock_hz/1000));?
? ? TMR0_ITCfg(ENABLE, TMR0_3_IT_DATA_ACT); // 開(kāi)啟中斷
? ? ?PFIC_EnableIRQ(TMR0_IRQn);
在中斷函數(shù)中先TMR0_ClearITFlag( TMR0_3_IT_DATA_ACT ),然后使用TMR0_CAPGetData()讀取數(shù)據(jù)。
經(jīng)過(guò)多次測(cè)試,按下一次遙控按鍵后,前60個(gè)左右的Edge_To_Edge邊沿變化可以正常捕獲(包括NEC紅外引導(dǎo)碼在內(nèi)的數(shù)據(jù)都正確),但到60個(gè)(或62個(gè),64個(gè),似乎與脈沖所代表的數(shù)據(jù)有關(guān))時(shí),不再產(chǎn)生中斷。間隔任意時(shí)長(zhǎng)后,再次按下遙控按鍵時(shí),中斷再次產(chǎn)生,前一次按鍵未接收完的數(shù)據(jù)會(huì)首先被接收到(完整的紅外數(shù)據(jù)幀應(yīng)該產(chǎn)生差不多67個(gè)中斷),之后才是第二次按鍵自己的數(shù)據(jù)。但前一次按鍵的第60個(gè)Edge_To_Edge邊沿變化的捕獲時(shí)長(zhǎng)是一個(gè)非常大的值,明顯超出了紅外脈沖編碼的范圍。
請(qǐng)幫忙看一下以上捕獲代碼是否有問(wèn)題,為什么在接收到60個(gè)左右的邊沿變化后就不再產(chǎn)生中斷了?