標題:
調(diào)試卡模擬程序時碰到的問題及解決方法
[打印本頁]
作者:
51黑黑黑
時間:
2016-2-21 15:51
標題:
調(diào)試卡模擬程序時碰到的問題及解決方法
運行程序時,采用儀器截獲RFID讀卡器和卡之間的數(shù)據(jù),發(fā)現(xiàn)卡片沒有回復(fù)讀卡器數(shù)據(jù),問題需要進一步細化,是卡片沒有收到數(shù)據(jù)還是卡片收到數(shù)據(jù)沒有回復(fù)。采用的方法是,讀卡器發(fā)送數(shù)據(jù)時,其中一個數(shù)據(jù)每次加一,而卡片收到讀卡器的數(shù)據(jù)時,從串口輸出接收的數(shù)據(jù)和發(fā)送的數(shù)據(jù),觀察到的現(xiàn)象是:讀卡器發(fā)出數(shù)據(jù)等待回復(fù),而卡片沒有回復(fù)。卡片這邊觀察到的現(xiàn)象時,卡片沒有收到數(shù)據(jù)因為接收標志寄存器沒有置位。增加一條讀卡片F(xiàn)IFO的測試指令,一旦報錯,馬上讀取FIFO的數(shù)據(jù)和標志,檢查一下FIFO的空標志位是否為1,為1則說明確實沒收到數(shù)據(jù),反之則表明有數(shù)據(jù)并讀出數(shù)據(jù)和卡片數(shù)據(jù)對比,讀取的結(jié)果是卡片收到了數(shù)據(jù)。
問題就出現(xiàn)在下面的語句
iqflag=TypeA_Flag;讀取中斷寄存器標志
TypeA_Flag = 0;//清中斷標志
卡片在輪詢該中斷寄存器時,會出現(xiàn)一種情況,寄存器的值讀出來了,然后清寄存器,在這期間又來了中斷,該中斷就會被清掉。
改為如下語句后問題解決:
iqflag =TypeA_Flag;
TypeA_Flag &=(~iqflag);
編寫代碼時還是要嚴謹嚴謹再嚴謹呀!
歡迎光臨 (http://www.torrancerestoration.com/bbs/)
Powered by Discuz! X3.1