Пробовал физически менять местами 6 и 7. Проблема перенеслась вместе с пином
ну так там прямо в регистры шлётся, а сейчас без патча что?
не очень понятно… Проблема осталась на том же пине или перенеслась вместе с модулем?
Значит дело не в модуле. Исправляйте схему(питание и.т.д)
Как я смог понять - осталась на том же пине. Перенеслась, значит, на другой модуль)
Прошу прощения, некорректно ответил, вместе с модулем перенеслась
Без патча все также 3 работает, один нет, только вместо 0xB2 выдает 0x90
Reader 0: Firmware Version: 0x82 = (unknown)
Reader 1: Firmware Version: 0x90 = v0.0
Reader 2: Firmware Version: 0x82 = (unknown)
Reader 3: Firmware Version: 0x82 = (unknown)
Только почему то стало работать менее стабильно все, иногда все выдают выше указанные значения версии как обычно, но никакой из них не читает метки
Ничего не помогает, вторые сутки борюсь с проблемой.
Во-первых, нужна схема.
Не словесное описание схемы, а именно схема.
Не “из Интернета”, а именно та, что собрана. С подробной разводкой питания и т.п.
Т.к. как в скетче, так и в схеме пробуются разные варианты, то нужно обязательно в одном посте публиковать как скетч, так и соответствующую ему схему.
Что-то изменилось - в следующем посте снова публиковать пару: скетч и схему. Всегда в одном посте, чтобы избежать неоднозначномсти.
Далее Вам следует локализовать проблему. Т.к. используются несколько однотипных модулей, это не должно вызвать сложностей.
Выясните, с чем именно связана проблема:
- С конкретным модулем.
- С конкретным местом положения (подключения) модуля.
- С конкретным управляющим пином.
Только почему то стало работать менее стабильно все
это потому что настройки в регистрах неправильные, тут один вариант на хорошо работающем модуле вычитать настройки регистров и добавить в библиотеку, если сделаешь первое попробуем добавить плату с кодом 0x82, а вот плата 0xB2 явно неисправна, раз то один код отдаёт то другой
тут настройки регистров моего не работающего модуля:
0x00, 0x20, 0x80, 0x00, 0x14, 0x00, 0x00, 0x21,
0x00, 0x26, 0x00, 0x08, 0x10, 0x00, 0xA0, 0x00,
0x00, 0x3F, 0x00, 0x00, 0x80, 0x00, 0x10, 0x84,
0x42, 0x5D, 0x00, 0x00, 0x62, 0x00, 0x00, 0xEB,
0x00, 0xFF, 0xFF, 0x88, 0x26, 0x87, 0x44, 0x88,
0x20, 0x20, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x80, 0x00, 0xC0, 0x40, 0x82,
0x00, 0x10, 0x26, 0x88, 0xFF, 0x00, 0x03, 0x00,
А вот с работающего, можно посмотреть как установлены параметры:
ADDR 00 01 02 03 04 05 06 07 08 09 0A 0B 0C 0D 0E 0F
0x000 0x00, 0x20, 0x80, 0x00, 0x14, 0x00, 0x00, 0x21, 0x00, 0x26, 0x00, 0x08, 0x10, 0x00, 0xA0, 0x00,
0x001 0x00, 0x3F, 0x00, 0x00, 0x80, 0x00, 0x10, 0x84, 0x84, 0x4D, 0x00, 0x00, 0x62, 0x00, 0x00, 0xEB,
0x002 0x00, 0xFF, 0xFF, 0x88, 0x26, 0x87, 0x48, 0x88, 0x20, 0x20, 0x00, 0x00, 0x00, 0x00, 0x00, 0x7D,
0x003 0x00, 0x00, 0x00, 0x80, 0x00, 0x00, 0x40, 0x92, 0x00, 0x01, 0x01, 0x88, 0xFF, 0x00, 0x03, 0x00
enum PCD_Register : byte {
// Page 0: Command and status
// 0x00 // reserved for future use
CommandReg = 0x01 << 1, // starts and stops command execution
ComIEnReg = 0x02 << 1, // enable and disable interrupt request control bits
DivIEnReg = 0x03 << 1, // enable and disable interrupt request control bits
ComIrqReg = 0x04 << 1, // interrupt request bits
DivIrqReg = 0x05 << 1, // interrupt request bits
ErrorReg = 0x06 << 1, // error bits showing the error status of the last command executed
Status1Reg = 0x07 << 1, // communication status bits
Status2Reg = 0x08 << 1, // receiver and transmitter status bits
FIFODataReg = 0x09 << 1, // input and output of 64 byte FIFO buffer
FIFOLevelReg = 0x0A << 1, // number of bytes stored in the FIFO buffer
WaterLevelReg = 0x0B << 1, // level for FIFO underflow and overflow warning
ControlReg = 0x0C << 1, // miscellaneous control registers
BitFramingReg = 0x0D << 1, // adjustments for bit-oriented frames
CollReg = 0x0E << 1, // bit position of the first bit-collision detected on the RF interface
// 0x0F // reserved for future use
// Page 1: Command
// 0x10 // reserved for future use
ModeReg = 0x11 << 1, // defines general modes for transmitting and receiving
TxModeReg = 0x12 << 1, // defines transmission data rate and framing
RxModeReg = 0x13 << 1, // defines reception data rate and framing
TxControlReg = 0x14 << 1, // controls the logical behavior of the antenna driver pins TX1 and TX2
TxASKReg = 0x15 << 1, // controls the setting of the transmission modulation
TxSelReg = 0x16 << 1, // selects the internal sources for the antenna driver
RxSelReg = 0x17 << 1, // selects internal receiver settings
RxThresholdReg = 0x18 << 1, // selects thresholds for the bit decoder
DemodReg = 0x19 << 1, // defines demodulator settings
// 0x1A // reserved for future use
// 0x1B // reserved for future use
MfTxReg = 0x1C << 1, // controls some MIFARE communication transmit parameters
MfRxReg = 0x1D << 1, // controls some MIFARE communication receive parameters
// 0x1E // reserved for future use
SerialSpeedReg = 0x1F << 1, // selects the speed of the serial UART interface
// Page 2: Configuration
// 0x20 // reserved for future use
CRCResultRegH = 0x21 << 1, // shows the MSB and LSB values of the CRC calculation
CRCResultRegL = 0x22 << 1,
// 0x23 // reserved for future use
ModWidthReg = 0x24 << 1, // controls the ModWidth setting?
// 0x25 // reserved for future use
RFCfgReg = 0x26 << 1, // configures the receiver gain
GsNReg = 0x27 << 1, // selects the conductance of the antenna driver pins TX1 and TX2 for modulation
CWGsPReg = 0x28 << 1, // defines the conductance of the p-driver output during periods of no modulation
ModGsPReg = 0x29 << 1, // defines the conductance of the p-driver output during periods of modulation
TModeReg = 0x2A << 1, // defines settings for the internal timer
TPrescalerReg = 0x2B << 1, // the lower 8 bits of the TPrescaler value. The 4 high bits are in TModeReg.
TReloadRegH = 0x2C << 1, // defines the 16-bit timer reload value
TReloadRegL = 0x2D << 1,
TCounterValueRegH = 0x2E << 1, // shows the 16-bit timer value
TCounterValueRegL = 0x2F << 1,
// Page 3: Test Registers
// 0x30 // reserved for future use
TestSel1Reg = 0x31 << 1, // general test signal configuration
TestSel2Reg = 0x32 << 1, // general test signal configuration
TestPinEnReg = 0x33 << 1, // enables pin output driver on pins D1 to D7
TestPinValueReg = 0x34 << 1, // defines the values for D1 to D7 when it is used as an I/O bus
TestBusReg = 0x35 << 1, // shows the status of the internal test bus
AutoTestReg = 0x36 << 1, // controls the digital self-test
VersionReg = 0x37 << 1, // shows the software version
AnalogTestReg = 0x38 << 1, // controls the pins AUX1 and AUX2
TestDAC1Reg = 0x39 << 1, // defines the test value for TestDAC1
TestDAC2Reg = 0x3A << 1, // defines the test value for TestDAC2
TestADCReg = 0x3B << 1 // shows the value of ADC I and Q channels
// 0x3C // reserved for production tests
// 0x3D // reserved for production tests
// 0x3E // reserved for production tests
// 0x3F // reserved for production tests
Забыл главное, я в библиотеку свой модуль добавил, но если загрузить из примеров скетч Firmware_Check то: )))
10:22:42.290 -> *****************************
10:22:42.290 -> MFRC522 Digital self test
10:22:42.354 -> *****************************
10:22:42.354 -> Firmware Version: 0x82 = (HW-126)
10:22:42.367 -> -----------------------------
10:22:42.433 -> Only known versions supported
10:22:42.433 -> -----------------------------
10:22:42.467 -> Performing test...
10:22:42.533 -> -----------------------------
10:22:42.533 -> Result: DEFECT or UNKNOWN
10:22:42.576 ->
Заказал еще один модуль, вот как раз твой, читает:
19:55:11.307 -> *****************************
19:55:11.307 -> MFRC522 Digital self test
19:55:11.380 -> *****************************
19:55:11.380 -> Firmware Version: 0xB2 = (unknown)
19:55:11.407 -> -----------------------------
19:55:11.440 -> Only known versions supported
19:55:11.473 -> -----------------------------
19:55:11.506 -> Performing test...
19:55:11.540 -> -----------------------------
19:55:11.573 -> Result: DEFECT or UNKNOWN
19:55:11.610 ->
0xB2 Вычитано из нового - Регистры
ADDR 00 01 02 03 04 05 06 07 08 09 0A 0B 0C 0D 0E 0F
0x000 0x00, 0x20, 0x80, 0x00, 0x14, 0x00, 0x00, 0x21, 0x00, 0xC7, 0x00, 0x08, 0x10, 0x00, 0xA0, 0x00,
0x001 0x00, 0x3F, 0x00, 0x00, 0x80, 0x00, 0x10, 0x84, 0x42, 0x4D, 0x00, 0x00, 0x62, 0x00, 0x00, 0xEB,
0x002 0x00, 0xFF, 0xFF, 0x88, 0x26, 0x87, 0x44, 0x88, 0x20, 0x20, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x003 0x00, 0x00, 0x00, 0x80, 0x00, 0x80, 0x40, 0xB2, 0x00, 0x18, 0x12, 0x88, 0xFF, 0x00, 0x03, 0x00