CH582捕獲模式下的問(wèn)題

使用定時(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)生中斷了?


可以先用GPIO輸出一個(gè)特定波形,然后捕獲查看是否每次都可以正常獲取。

其次用邏輯分析儀查看脈沖波,注意在60個(gè)的時(shí)候是否有明顯的變化。

cap的功能實(shí)現(xiàn)和計(jì)算可以參考:

CH579_TMR定時(shí)器邊沿捕獲 - SweetTea_lllpc - 博客園 (cnblogs.com)


問(wèn)題似乎是FIFO中可以保存8個(gè)數(shù)據(jù),而TMR0_3_IT_DATA_ACT不能對(duì)FIFO中的8個(gè)數(shù)據(jù)每個(gè)都產(chǎn)生中斷。

只要在中斷函數(shù)中嘗試一次性讀取FIFO中的全部數(shù)據(jù),問(wèn)題就解決了。


只有登錄才能回復(fù),可以選擇微信賬號(hào)登錄

国产91精品新入口,国产成人综合网在线播放,九热这里只有精品,本道在线观看,美女视频a美女视频,韩国美女激情视频,日本美女pvp视频