card1: 8C C2 C6 08 ATQA:0x0400
if(i_reg == 0x02) // if collision occured go into anticollision
{
coll_poss++; // reader returns coll_poss - 1
for(i = 1; i < 5; i++)
{
new_uid[i - 1] = buf[i]; // Copy new UID from local buffer and
} // assign number of valid bits to nvb
McuCounterSet();
COUNT_VALUE = COUNT_1ms * 1.2; // 1.2ms for TIMEOUT
START_COUNTER; // start timer up mode
i_reg = 0x01;
while(i_reg == 0x01);
Iso14443aLoop(select, coll_poss, new_uid); // recursive call for anticollision procedure
}
TEST_coll = 0xAA55;
if(more == 1)
{
// perform anticollison command for 7 or 10 - byte UID - recursive call for cascade levels
Iso14443aLoop(select, nvb, uid); // only the select field is different, everything else is the same
if(stand_alone_flag == 1)
{
found = 1;
}
}
if(rx_error_flag == 0x02)
{
i_reg = 0x02;
}
_NOP(); //-------------Set breakpoint.
if(i_reg == 0xff) // if data received
{
switch(select)
{
case 0x93:
......
case 0x95:
.......
case 0x97:
}
}
5) Add i_reg and TEST_coll to watch window. You'll find i_reg=0xFF , TEST_coll = 0 very ofen.
That means TRF7970A doesn't detect the bit collision this time.
if i_reg = 0x02 ,TEST_coll=0 . Cool! This is I need relsult.
if TEST_coll =0xAA55 , it means Iso14443aLoop run its second time for recursive purpose , discarding this invalid result.
If you want run the code again, reset the code and run again.
Test procedure over!~