 Лагунов (26.03.2018 12:50, просмотров: 272) ответил Petrovich на Я ж и говорил вчера про селект нужен. Антиколлизия(0х93) потом селект(с тем же 0х93). Селект нужен всегда, и при 4байтовом SNR.  Если возврат норм и видишь каскадный код 0х88, то берешь 3 байта и Антиколлизия(0х95) потом селект(0х95). Если опять
 Лагунов (26.03.2018 12:50, просмотров: 272) ответил Petrovich на Я ж и говорил вчера про селект нужен. Антиколлизия(0х93) потом селект(с тем же 0х93). Селект нужен всегда, и при 4байтовом SNR.  Если возврат норм и видишь каскадный код 0х88, то берешь 3 байта и Антиколлизия(0х95) потом селект(0х95). Если опять
Вот какие странные дела. У меня были какие-то странные провалы в чтении номера карты и раньше с 4-байтными номерами. И вот я воодушевленный фразой - "Селект нужен всегда, и при 4байтовом SNR" решил его ставить ставить всегда после антиколлизии. При 7-байтовом проблем не появилось. после антиколл1 селект и после антиколл2 селект. Всё нормально. Но вот если карта 4-байтовая и ставлю селект после антиколл1, то нормально только при первом чтении карты. При повторном опросе карту не видит. Вот как выглядит стандартная ф-ия проверки карты. Закоментирован селект, которого и не было раньше. Без него всё нормально.
TM_MFRC522_Status_t TM_MFRC522_Check(uint8_t* id) 
{
	TM_MFRC522_Status_t status;
	//Find cards, return card type
	status = TM_MFRC522_Request(PICC_REQIDL, id);	
	if (status == MI_OK) 
		{
		//Card detected
		//Anti-collision, return card serial number 4 bytes
		status = TM_MFRC522_Anticoll(id);	
		memcpy(DBLID, id, 4);
		if(DBLID[0]==0x88)
			{
				TM_MFRC522_SelectTag(id);	
				status = TM_MFRC522_Anticoll2(id);	
				
			}
//				TM_MFRC522_SelectTag(id);	
		}
	TM_MFRC522_Halt();			//Command card into hibernation 
	return status;
}