Показать сообщение отдельно
Старый 16.04.2017, 18:37   #6
march cat Меню Пользователя
Член клуба
 
Аватар для march cat
 
Регистрация: 05.08.2014
Сообщений: 123
По умолчанию Re: Arduino+rc522+Mifare 1k

Код:
void MFRC522::PCD_Reset() {
	PCD_WriteRegister(CommandReg, PCD_SoftReset);	// Issue the SoftReset command.
	// The datasheet does not mention how long the SoftRest command takes to complete.
	// But the MFRC522 might have been in soft power-down mode (triggered by bit 4 of CommandReg) 
	// Section 8.8.2 in the datasheet says the oscillator start-up time is the start up time of the crystal + 37,74μs. Let us be generous: 50ms.
	delay(50);
	// Wait for the PowerDown bit in CommandReg to be cleared
	while (PCD_ReadRegister(CommandReg) & (1<<4)) {
		// PCD still restarting - unlikely after waiting 50ms, but better safe than sorry.
	}
}
Помогите адаптировать для интеграции в коде ардуины , а не использования через библиотеку
PCD_WriteRegister перевел в
Код:
void WriteRegister(byte reg, byte value) {
  SPI.beginTransaction(SPISettings(SPI_CLOCK_DIV4, MSBFIRST, SPI_MODE0));
  digitalWrite(SS_PIN, LOW);
  SPI.transfer(reg);
  SPI.transfer(value);
  digitalWrite(SS_PIN, HIGH);
  SPI.endTransaction();
}
PCD_ReadRegister перевел в
Код:
void ReadRegister(byte reg ) {
  byte value;
  SPI.beginTransaction(SPISettings(MFRC522_SPICLOCK, MSBFIRST, SPI_MODE0));
  digitalWrite(SS_PIN, LOW);
  SPI.transfer(0x80 | reg);
  value = SPI.transfer(0);
  digitalWrite(SS_PIN, HIGH);
  SPI.endTransaction();
  return value;
}
А вот Функция ресета не работает
Код:
void Reset() {
  WriteRegister(0x01, 0x0F);
  delay(50);
  while (ReadRegister(0x01) & (1<<4)) {
  }
}
march cat вне форума   Ответить с цитированием