Ви не увійшли.
Имеем следующее:
Arduino UNO к которому подключены RFID и SD карт ридеры.
При выполнении скетча инициализация SD карты проходит (сообщение Card Ready), но перестают читаться карты RFID, хотя SS_PIN согласно скетча переводится в LOW, а CS_pin (для SD card) соответственно в HIGH.
Заранее благодарен за подсказки!!!
//
// -----------------------------------------------------------------------------------
// * Pin layout should be as follows:
// * Signal Pin Pin Pin
// * Arduino Uno MFRC522 board Micro SD Card
// * ---------------------------------------------------------------------------------
// * Reset 9 RST
// * SPI SS 10 SDA
// * SPI MOSI 11 MOSI MOSI
// * SPI MISO 12 MISO MISO
// * SPI SCK 13 SCK SCK
// * SPI SS 2 4 CS
// * Power 3.3V 5V
//
#include <SPI.h>
#include <MFRC522.h>
#include <SD.h>
#define SS_PIN 10
#define RST_PIN 9
MFRC522 mfrc522(SS_PIN, RST_PIN); // Create MFRC522 instance.
int CS_pin = 4;
void setup() {
Serial.begin(9600); // Initialize serial communications with the PC
//Disable SD Card
pinMode(CS_pin, OUTPUT);
digitalWrite(CS_pin, HIGH);
// Enable RFID
pinMode(SS_PIN, OUTPUT);
digitalWrite(SS_PIN, LOW);
SPI.begin(); // Init SPI bus
mfrc522.PCD_Init(); // Init MFRC522 card
// Disable RFID and enable SD
digitalWrite(CS_pin, LOW);
digitalWrite(SS_PIN, HIGH);
Serial.println("Initializing Card");
if (!SD.begin(CS_pin)) {
Serial.println("Card Failed");
return;
}
else Serial.println("Card Ready");
// Enable RFID and disable SD
Serial.println("Waiting for RFID Card");
digitalWrite(CS_pin, HIGH);
digitalWrite(SS_PIN, LOW);
}
void loop() {
// Prepare key - all keys are set to FFFFFFFFFFFFh at chip delivery from the factory.
MFRC522::MIFARE_Key key;
for (byte i = 0; i < 6; i++) {
key.keyByte[i] = 0xFF;
}
// Look for new cards
if ( ! mfrc522.PICC_IsNewCardPresent()) {
return;
}
// Select one of the cards
if ( ! mfrc522.PICC_ReadCardSerial()) {
return;
}
// Now a card is selected. The UID and SAK is in mfrc522.uid.
String UIDString = "";
// Dump UID
Serial.print("Card UID:");
for (byte i = 0; i < mfrc522.uid.size; i++) {
Serial.print(mfrc522.uid.uidByte[i] < 0x10 ? " 0" : " ");
UIDString = UIDString + String(mfrc522.uid.uidByte[i] < 0x10 ? " 0" : " ");
Serial.print(mfrc522.uid.uidByte[i], HEX);
UIDString = UIDString + String(mfrc522.uid.uidByte[i], HEX);
}
Serial.println();
}
Неактивний
Ещё странная ситуация:
После того как отключаю MISO от SD ридера согласно скетча SS_PIN остаётся в HIGH и вроде бы как RFID ридер не должен читать карточки, но он их читает. Объяснить почему так происходит вообще не могу ...
Неактивний
http://www.nxp.com/documents/data_sheet/MFRC522.pdf
умеет общаться по UART/SPI/I2C
по телу текста догадался что вы подключили SD и MFRC522 на один порт SPI и пытаетесь развязать их по чип селекту? я правильно понял?
если так - переделайте эту либу на програмный SPI или ног свободных мало осталось?
MFRC522 mfrc522(SS_PIN, RST_PIN); // Create MFRC522 instance.
я бы не смешивал по сигналам эти устройства,
I2C, UART все занято?
NSS I SPI signal input[2]
и есть у меня подозрение что NSS это не CS, и не переводит в третье состояние интерфейсние ноги mfrc522
Остання редакція NoName (2016-03-21 14:32:29)
Неактивний
Спасибо за ответ!
Да всё правильно, хочу подружить SD и MFRC522 по одному SPI и развязать чип селектом.
со свободными ножками конечно напряг, но со временем планирую весь проект перевести на мегу, так что ножек должно добавиться.
Может есть где-то статья как для начинающего как MFRC522 перевести на программный интерфейс?
UART пока свободен.
Остання редакція panalex (2016-03-21 15:13:52)
Неактивний
https://github.com/zodier/MFRC522-UART-Arduino
гугл забанил Вас? )
я бы так не делал, все что можно вынести в отдельный "поток" я бы вынес, и конфликтов нет, и по питанию погасить можно если не используете )
у Вас так получилось, потому что были примеры реализации?
если со свободными ногами напряг - меняйте контроллер,
а если жесткое ТЗ - тогда мучайтесь )
есть у меня подозрение что MFRC522 по всем интерфейсам может работать одновременно, подключайте и работайте
хоть по UART, хоть по I2C
Остання редакція NoName (2016-03-21 16:14:06)
Неактивний
очень важно что б Вы сами разобрались ), прямой ответ ничему не научит, Вы закроете задачу и больше вспоминать не будете, но похоже что Ваша тема такова что будет только развиваться
например начальству нужно будет на телефон слать смской всех опоздавших на работу ) ( так чисто для примера ) , не делайте такого ) добра не будет )
и Вам нужно обязательно знать до последнего винтика Вашу систему )
Неактивний